{"version":3,"sources":["webpack://ecoverso.org/./src/rows/HeroBlog.tsx","webpack://ecoverso.org/./src/rows/Sidebar.tsx","webpack://ecoverso.org/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js","webpack://ecoverso.org/./src/rows/WPComments.tsx","webpack://ecoverso.org/./src/templates/wpPost.tsx"],"names":["image","category","title","className","file","type","dangerouslySetInnerHTML","__html","relatedPosts","allPosts","categories","tags","t","useI18next","map","post","i","key","style","marginBottom","to","details","uid","decodeHTMLEntities","slug","language","posts","nodes","length","name","tag","visible","_taggedTemplateLiteralLoose","strings","raw","slice","adminGravatarMD5","isAdminGravatar","gravatarURL","indexOf","WPCommentsQuery","gql","WPCommentMutation","postId","comments","dispatch","useDispatch","useState","replyOn","setReplyOn","createCommentOnTop","setCreateCommentOnTop","setCreateCommentOnBottom","WPClient","useContext","WPContext","useQuery","variables","id","client","loading","error","data","WPCommentCreate","refetch","databaseId","onCancel","isLoggedIn","useSelector","state","auth","identityId","payload","userData","firstName","displayName","lastName","userEmail","email","useMutation","createComment","mutationError","content","fieldType","required","fieldProperties","autoSize","minRows","maxRows","commentForm","row1","properties","author","nominativo","authorEmail","FormGenerator","onSubmit","values","setSubmitting","url","awsconfig","valuesToSubmit","authorUrl","commentOn","parent","then","actions","message","variant","catch","console","log","hideCancelButton","undefined","commentsCount","totalComments","setTotalComments","updatedComments","setUpdatedComments","useEffect","src","height","marginLeft","onClick","size","strokeWidth","renderComments","level","rendering","comment","parentId","replies","alt","node","Avatar","date","format","parseFormat","props","path","pageUrl","site","siteMetadata","siteUrl","wordPress","recentPosts","structuredData","headline","datePublished","dateModified","modified","featuredImage","imageFile","publicURL","publisher","sdEcoversoPublisher","mainEntityOfPage","authors","shareLinks","facebook","twitter","seo","description","metaDesc","isArticle","label","siteMap","photo","zIndex","aria-label","target","rows","row","graphQLData","articlesType","exceptPostUid"],"mappings":"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","file":"component---src-templates-wp-post-tsx-aaf3191e2cd75e83cca0.js","sourcesContent":["import React, { useState } from \"react\"\nimport Tabs from \"../Layout/Components/Tabs\"\nimport { ColumnData } from \"./DynamicRow\"\nimport { Image, Button, ImageData } from \"../Layout/Components\"\n\ntype Props = {\n image: ImageData\n category: string\n title: string\n}\n\nconst HeroBlog: React.FC = ({ image, category, title }) => {\n return (\n
\n
\n \n
\n
\n
\n
\n

\n
\n
\n )\n}\n\nexport default HeroBlog\n","import React from \"react\"\nimport { graphql } from \"gatsby\"\nimport { FormatDate, useI18next, Link } from \"../i18n\"\nimport { decodeHTMLEntities } from \"../Layout/utils/utils\"\nimport { CategoryData, PostData, TagData } from \"./Blog\"\n\ntype Props = {\n relatedPosts?: PostData[]\n allPosts: PostData[]\n categories: CategoryData[]\n tags: TagData[]\n}\n\nexport const Sidebar: React.FC = ({ relatedPosts, allPosts, categories, tags }) => {\n const { t } = useI18next()\n\n return (\n
\n

{t(\"Articoli recenti\")}

\n {allPosts.map((post, i) => (\n
\n {decodeHTMLEntities(post.title)}\n
\n ))}\n

{t(\"Categorie\")}

\n {categories.map((category, i) => {\n if (category.slug == category.language.slug) return null\n if (category.posts.nodes.length == 0) return null\n return (\n
\n \n {category.name} [{category.posts.nodes.length}]\n \n
\n )\n })}\n

{t(\"Tag\")}

\n {tags.map((tag, i) => {\n if (!tag.details.visible) return null\n if (tag.posts.nodes.length == 0) return null\n return (\n
\n \n {tag.name} [{tag.posts.nodes.length}]\n \n
\n )\n })}\n
\n )\n}\n\nexport default Sidebar\n\n// Query fragment to include in graphql\nexport const query = graphql`\n fragment sidebarData on Wordpress {\n categories(where: { language: $languageCode }, first: 1000) {\n nodes {\n slug\n name\n details {\n uid\n }\n language {\n slug\n }\n posts(where: { orderby: { field: DATE, order: DESC } }, first: 1000) {\n nodes {\n title\n slug\n date\n }\n }\n }\n }\n tags(where: { language: $languageCode }, first: 1000) {\n nodes {\n slug\n name\n details {\n uid\n visible\n }\n posts(where: { orderby: { field: DATE, order: DESC } }, first: 1000) {\n nodes {\n title\n slug\n date\n }\n }\n }\n }\n }\n`\n","export default function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}","import React, { useContext, useEffect, useState } from \"react\"\nimport { useSelector, useDispatch } from \"react-redux\"\nimport * as actions from \"../store/actions\"\n\nimport { WPContext } from \"../ApolloWrapper\"\nimport { useQuery, useMutation } from \"@apollo/client\"\nimport gql from \"graphql-tag\"\nimport { graphql } from \"gatsby\"\n\nimport { Link, FormatDate, useI18next } from \"../i18n\"\nimport { Icon, Loading } from \"../Layout/Components\"\n\nimport { nominativo, email } from \"../forms/fields/user\"\nimport FormGenerator from \"../Layout/Forms/FormGenerator\"\nimport Avatar from \"../Layout/Components/Avatar\"\n\nimport awsconfig from \"../aws-exports\"\n\nexport interface CommentData extends CommentFields {}\n\n//-----------------------------------------------------------------------------\n// Admin Gravatars\nconst adminGravatarMD5 = [\n \"accd4a7f43ced26bd4beb2b25919a02b\", // daniele@ecoverso.org\n \"1b10750f2ad148f8d5df10204e9ce965\", // flavia@ecoverso.org\n \"1247a86ea092f6b74fdd286da7d60f03\", // luca@ecoverso.org\n \"9457a948d286dad68d647d68caebfaa6\", // alfredo@ecoverso.org\n \"085b40cc227e236e2c5e588db8d9f2c8\", // lorenzo@ecoverso.org\n \"08079c81ffcc8b567bda0ac3b584acb6\", // manuel@ecoverso.org\n \"3e20503da0f21de272debf41e925cfcb\", // alfredo@gruppoacquistoibrido.it\n \"27c741df4641edfd3536916a54fcf2de\", // luca@gruppoacquistoibrido.it\n \"d22c9cbdd790ad9f0d885218ae73bcf7\", // lorenzo@gruppoacquistoibrido.it\n]\n\nconst isAdminGravatar = (gravatarURL: string) => {\n for (let i = 0; i < adminGravatarMD5.length; i++) {\n if (gravatarURL.indexOf(adminGravatarMD5[i]) != -1) return true\n }\n return false\n}\n//-----------------------------------------------------------------------------\n\ntype CommentFields = {\n id: string\n databaseId: number\n date: string\n dateGmt: string\n approved: boolean\n content: string\n gravatarURL: string\n parentId: string | null\n author: {\n node: {\n id: string\n name: string\n url: string\n }\n }\n replies: {\n nodes: T[]\n }\n}\n\ntype Props = {\n className?: string\n postId: number\n comments: CommentData[]\n}\n\nexport const WPComments: React.FC = ({ className, postId, comments }) => {\n const { t } = useI18next()\n const dispatch = useDispatch()\n\n const [replyOn, setReplyOn] = useState(null)\n const [createCommentOnTop, setCreateCommentOnTop] = useState(false)\n const [createCommentOnBottom, setCreateCommentOnBottom] = useState(true)\n\n //--------------------------------------------------------------------------------------------\n // Dynamic access to WP Comments\n const WPClient = useContext(WPContext)\n\n const { loading, error, data, refetch } = useQuery(WPCommentsQuery, {\n variables: { id: postId },\n client: WPClient,\n // fetchPolicy: \"no-cache\",\n })\n\n //--------------------------------------------------------------------------------------------\n // Reply\n\n const WPCommentCreate: React.FC<{ className?: string; postId: number; databaseId?: number; onCancel?: Function }> = ({\n className,\n postId,\n databaseId,\n onCancel,\n }) => {\n const isLoggedIn = useSelector((state) => state.auth.isLoggedIn)\n const identityId = useSelector((state) => (state.auth.payload.userData ? state.auth.payload.userData[\"custom:identityId\"] : null))\n const displayName = useSelector((state) => state.auth.payload.userData?.displayName)\n const firstName = useSelector((state) => state.auth.payload.userData?.firstName)\n const lastName = useSelector((state) => state.auth.payload.userData?.lastName)\n const userEmail = useSelector((state) => state.auth.payload.userData?.email)\n const [createComment, { error: mutationError }] = useMutation(WPCommentMutation, {\n client: WPClient,\n })\n\n const onSubmit = (values, setSubmitting) => {\n const url = `https://${awsconfig.aws_user_files_s3_bucket}.s3-${awsconfig.aws_user_files_s3_bucket_region}.amazonaws.com/protected/${identityId}/avatar.small.jpg`\n const valuesToSubmit = isLoggedIn ? { ...values, author: firstName + \" \" + lastName[0] + \".\", authorEmail: userEmail, authorUrl: url } : { ...values }\n valuesToSubmit.commentOn = postId\n\n if (databaseId) valuesToSubmit.parent = databaseId\n\n //console.log(\"Values: \", valuesToSubmit)\n createComment({ variables: valuesToSubmit })\n .then(() => {\n setSubmitting(false)\n setReplyOn(null)\n setCreateCommentOnTop(false)\n setCreateCommentOnBottom(false)\n dispatch(actions.notificationAdd({ message: t(\"Commento inviato con successo\"), variant: \"SuccessIcon\" }))\n })\n .catch((error) => {\n dispatch(actions.notificationAdd({ message: t(\"API Error\"), variant: \"DangerIcon\" }))\n console.log(\"API Error\", error, mutationError)\n })\n }\n\n const content = {\n title: \"Commento\",\n type: \"string\",\n fieldType: \"textarea\",\n required: true,\n fieldProperties: {\n //placeholder: \"Scrivi qui il tuo commento\",\n autoSize: { minRows: 5, maxRows: 10 },\n },\n }\n\n const commentForm = isLoggedIn\n ? { content }\n : {\n row1: {\n type: \"row\",\n properties: {\n author: { ...nominativo /*title: null, fieldProperties: { placeholder: \"Nome\" }*/ },\n authorEmail: { ...email /*title: null, fieldProperties: { placeholder: \"Email\" }*/ },\n },\n },\n content,\n }\n\n return \n }\n\n //--------------------------------------------------------------------------------------------\n // Comments Rendering\n\n let commentsCount = 0\n\n const [totalComments, setTotalComments] = useState(commentsCount)\n\n const renderComments = (comments: CommentData[], level = 1) => {\n if (level == 1) commentsCount = 0\n if (comments == null) return null\n const rendering = comments.map((comment, i) => {\n if (level == 1 && comment.parentId != null) return\n const replies = renderComments(comment.replies?.nodes, level + 1)\n commentsCount++\n return (\n
\n
\n \n {`Avatar\n \n
\n
\n
{comment.author.node.name}
\n
\n
\n
\n {level <= 2 && replyOn != comment.databaseId ? (\n
setReplyOn(comment.databaseId)}>\n {t(\"Rispondi\")}\n
\n ) : null}\n
\n \n
\n {replyOn == comment.databaseId ? setReplyOn(null)} /> : null}\n
{replies}
\n
\n
\n )\n })\n if (level == 1 && totalComments != commentsCount) setTotalComments(commentsCount)\n return rendering\n }\n\n //--------------------------------------------------------------------------------------------\n\n const [updatedComments, setUpdatedComments] = useState(comments)\n\n useEffect(() => {\n // Update comments with the ones from wordpress ;-)\n if (!loading && !error) {\n setUpdatedComments(data.comments.nodes)\n //console.log(data.comments.nodes)\n }\n }, [data, error, loading])\n\n return (\n
\n {/*
\n
\n
{JSON.stringify(loading, null, 2)}
\n
{JSON.stringify(error, null, 2)}
\n
{JSON.stringify(data, null, 2)}
\n
\n
*/}\n
\n
\n
\n {totalComments + \" \" + t(\"Commenti\")}\n {loading ? : null}\n
\n {!createCommentOnTop ? (\n
setCreateCommentOnTop(true)}>\n Aggiungi un commento \n
\n ) : null}\n
\n {createCommentOnTop ? setCreateCommentOnTop(false)} /> : null}\n {/* {renderedComments} */}\n {renderComments(updatedComments)}\n {setCreateCommentOnBottom ? (\n <>\n
{t(\"Commenta\")}
\n \n \n ) : null}\n
\n
\n )\n}\n\nconst WPCommentsQuery = gql`\n query GetWPComments($id: ID!) {\n comments(where: { contentId: $id, contentStatus: PUBLISH }, first: 1000) {\n nodes {\n ...recoursiveComment\n }\n }\n }\n\n fragment commentFields on Comment {\n id\n databaseId\n date\n dateGmt\n approved\n content\n gravatarURL\n parentId\n author {\n node {\n id\n name\n url\n }\n }\n }\n\n fragment recoursiveComment on Comment {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n }\n }\n }\n }\n }\n }\n }\n }\n }\n`\nconst WPCommentMutation = gql`\n mutation MyMutation($author: String!, $authorEmail: String!, $authorUrl: String, $commentOn: Int!, $parent: ID, $content: String!) {\n createComment(\n input: {\n author: $author\n authorEmail: $authorEmail\n authorUrl: $authorUrl\n commentOn: $commentOn\n content: $content\n parent: $parent\n clientMutationId: \"CreateComment\"\n }\n ) {\n success\n comment {\n databaseId\n approved\n }\n }\n }\n`\n\n// Query fragment to include in graphql\nexport const query = graphql`\n fragment commentFields on Wordpress_Comment {\n id\n databaseId\n date\n dateGmt\n approved\n content\n gravatarURL\n parentId\n author {\n node {\n id\n name\n url\n }\n }\n }\n fragment recoursiveComment on Wordpress_Comment {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n replies(first: 1000) {\n nodes {\n ...commentFields\n }\n }\n }\n }\n }\n }\n }\n }\n }\n fragment postComments on Wordpress_Post {\n comments(where: { orderby: COMMENT_DATE }, first: 1000) {\n nodes {\n ...recoursiveComment\n }\n }\n }\n fragment buyingGroupComments on Wordpress_BuyingGroup {\n comments(where: { orderby: COMMENT_DATE }, first: 1000) {\n nodes {\n ...recoursiveComment\n }\n }\n }\n`\n\nexport default WPComments\n","import React from \"react\"\nimport { graphql } from \"gatsby\"\nimport GridLayout from \"../Layout/GridLayout\"\nimport { FormatDate, useI18next, Link } from \"../i18n\"\n\nimport { ImageData, Image, Icon, Breadcrumbs } from \"../Layout/Components\"\nimport { DynamicRow, RowData } from \"../rows/DynamicRow\"\nimport HeroBlog from \"../rows/HeroBlog\"\nimport WPComments, { CommentData } from \"../rows/WPComments\"\nimport CommunityArticles from \"../rows/CommunityArticles\"\n\nimport { Seo, StructuredData, sdEcoversoPublisher } from \"../seo\"\nimport { BlogPosting, WithContext } from \"schema-dts\"\n\nimport { PostData, CategoryData, TagData } from \"../rows/Blog\"\n\nimport siteMap from \"../sitemap\"\nimport { decodeHTMLEntities } from \"../Layout/utils/utils\"\nimport Sidebar from \"../rows/Sidebar\"\n\nexport default (props) => {\n const { t, path } = useI18next()\n\n const pageUrl = props.data.site.siteMetadata.siteUrl + path\n\n const post = props.data.wordPress.post as PostData\n //console.log(\"Post data: \", props.data.wordPress)\n\n const relatedPosts: PostData[] = props.data.wordPress.relatedPosts.nodes\n const recentPosts: PostData[] = props.data.wordPress.recentPosts.nodes\n const categories: CategoryData[] = props.data.wordPress.categories.nodes\n const tags: TagData[] = props.data.wordPress.tags.nodes\n\n //console.log(\"Props: \", props)\n //console.log(\"Context: \", props.pageContext)\n\n const structuredData: WithContext = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"BlogPosting\",\n headline: post.title,\n datePublished: post.date,\n dateModified: post.modified,\n image: [\"{siteUrl}\" + post.details.featuredImage.imageFile.publicURL],\n publisher: sdEcoversoPublisher,\n mainEntityOfPage: { \"@type\": \"WebPage\", \"@id\": \"{pageUrl}\" },\n author: post.details.authors.map((author) => {\n return { \"@type\": \"Person\", name: author.title }\n }),\n }\n\n const category = post.categories.nodes[0]\n const shareLinks = {\n facebook: `http://www.facebook.com/sharer.php?u=${pageUrl}&t=${post.title}`,\n twitter: `https://twitter.com/share?url=${pageUrl}&text=${post.title}`,\n }\n\n return (\n \n \n \n \n \n\n
\n
\n
\n
\n
\n
\n {post.details.authors.map((author, i) => (\n \n ))}\n
\n
\n {post.details.authors.map((author, i: number) => (\n \n {/* */}\n {author.title}\n {i < post.details.authors.length - 2 ? t(\",\") : \"\"}\n {i == post.details.authors.length - 2 ? t(\" e\") : \"\"}{\" \"}\n \n ))}\n
\n \n
\n
\n
\n
    \n
  • \n \n \n \n
  • \n {/*
  • \n \n \n \n
  • \n
  • \n \n \n \n
  • */}\n
  • \n \n \n \n
  • \n
\n
\n
\n
\n
\n\n {post.details.rows?.map((row, i) => (\n \n ))}\n
\n
\n
    \n
  • {t(\"Condividi l'articolo\")}:
  • \n
  • \n \n \n \n
  • \n {/*
  • \n \n \n \n
  • \n
  • \n \n \n \n
  • */}\n
  • \n \n \n \n
  • \n
\n
\n
\n
\n \n
\n \n
\n \n
\n )\n}\n\n//query($id: ID!, $tags: [String!]) {\nexport const query = graphql`\n query ($id: ID!, $tags: [String!], $buyingGroupsWpIds: [ID!], $languageCode: Wordpress_LanguageCodeFilterEnum!, $relatedPostsLimit: Int) {\n site {\n siteMetadata {\n siteUrl\n }\n }\n appsync {\n ...dbBuyingGroupsData\n }\n wordPress {\n post(id: $id) {\n title\n id\n databaseId\n date\n modified\n slug\n language {\n slug\n }\n translations {\n slug\n language {\n slug\n }\n }\n seo {\n title\n metaDesc\n }\n categories {\n nodes {\n name\n slug\n details {\n uid\n }\n }\n }\n tags {\n nodes {\n name\n slug\n }\n }\n details {\n uid\n authors {\n ... on Wordpress_Person {\n id\n title\n details {\n ownedCars\n bio\n titolo\n photo {\n ...imageData\n }\n }\n }\n }\n excerpt\n rows {\n ...postRow\n }\n featuredImage {\n ...imageData\n }\n }\n commentCount\n commentStatus\n ...postComments\n }\n ...sidebarData\n ...pageAccessoryData\n }\n }\n`\n"],"sourceRoot":""}