Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing: ==> cardData.urlNews [in template "20099#20135#10700480" at line 4680, column 67] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${cardData.urlNews} [in template "20099#20135#10700480" in macro "renderCard" at line 4680, column 65] - Reached through: @renderCard cardData [in template "20099#20135#10700480" at line 4965, column 25] ----
1<#-- Conteúdo Web -> Templates: Site de Crise - Include de templates-->
2<#-- include "${templatesPath}/1975602" -->
3
4<#-- Conteúdo Web -> Templates: Site de Crise - Funções gerais-->
5<#include "${templatesPath}/1975398" />
6
7<#-- Conteúdo Web -> Templates: Busca pelas imagens do tipo de noticia -->
8<#include "${templatesPath}/18598756" />
9
10<#assign POST_TYPES_CATEGORIES = getPostTypeImages()!default([]) />
11
12<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Extrair dados de Notícias -->
13<#--include "${templatesPath}/7762031" -->
14
15<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Título -->
16<#-- include "${templatesPath}/7761976" -->
17
18<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação -->
19<#--include "${templatesPath}/7762069" -->
20
21<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia -->
22<#-- include "${templatesPath}/7761972" -->
23<#function getNodesByLabel fieldList parentNode label>
24 <#assign result = []/>
25 <#attempt>
26 <#assign groupId = getIdFromFieldName(fieldList, label) />
27 <#assign xSeletorCaminho = saxReaderUtil.createXPath("dynamic-element[@name='${groupId}' ]") />
28 <#assign result = xSeletorCaminho.selectNodes(parentNode) />
29 <#return result />
30 <#recover>
31 <#return result />
32 </#attempt>
33</#function>
34
35<#function findVocabulary vocabularyName vocabularies>
36 <#assign vocabularyNameLowerCase = vocabularyName?lower_case>
37 <#list vocabularies as vocabulary>
38 <#if vocabulary.name?lower_case == vocabularyNameLowerCase>
39 <#return vocabulary>
40 </#if>
41 </#list>
42 <#return {}>
43</#function>
44
45<#-- ############# Conteúdo Web -> Templates: Site de Crise - Include de templates #################################### -->
46<#function getSiteUrl>
47 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
48 <#if layout?? && layout?has_content>
49 <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?replace(layout.getFriendlyURL(), "")>
50 </#if>
51 <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)>
52</#function>
53
54<#function getSiteName>
55 <#return layout.getGroup().getDescriptiveName(locale)>
56</#function>
57
58<#function mountUrlToPage targetPage>
59 <#assign baseUrl = getSiteUrl()>
60 <#assign trimmedUrl = baseUrl?replace("/w/", "/")>
61 <#assign trimmedUrl = trimmedUrl?substring(0, trimmedUrl?last_index_of("/"))>
62 <#return trimmedUrl + "/" + targetPage>
63</#function>
64<#-- ################################################################################################################## -->
65
66
67<#assign
68 journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
69 assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
70 assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
71 vocabularies = assetVocabularyService.getGroupVocabularies(groupId)
72 tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")
73 tagVocabulary = findVocabulary("Tag", vocabularies)
74 flagVocabulary = findVocabulary("Flag", vocabularies)
75 tagCategoryTitles = extractVocabularyTitles(tagVocabulary)
76 flagCategoryTitles = extractVocabularyTitles(flagVocabulary)
77 assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
78 fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"]
79 layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
80 PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]
81 AssetEntryQueryService = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil").getService()
82 AssetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')
83/>
84
85<#-- Nome das midias adaptativas de imagem para desktop e mobile -->
86<#assign adaptativeMediaDesktopResolutionName = "Preview-1000x0" />
87<#assign adaptativeMediaMobileResolutionName = "Thumbnail-300x300" />
88
89<#assign typeOfNewsVocabulary = findVocabulary("Tipo de Notícia", vocabularies)/>
90<#assign ourEnergyVocabulary = findVocabulary("Nossa Energia", vocabularies)/>
91
92<#assign newsJournalArticle = "">
93<#assign assetEntry = getAssetEntryFromRequest(assetEntryLocalService)>
94<#if assetEntry?? && assetEntry?has_content>
95 <#assign newsJournalArticle = journalArticleLocalService.fetchLatestArticle(assetEntry.classPK)/>
96</#if>
97
98<#function getSingleNode name root>
99 <#attempt>
100 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']/dynamic-content[@language-id='${locale}']") />
101 <#return xPathSelector.selectSingleNode( root ) />
102 <#recover>
103 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']") />
104 <#return xPathSelector.selectSingleNode( root ) />
105 </#attempt>
106</#function>
107
108<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article -->
109<#function getFirstCategoryOfVocabulary journalArticle vocabulary >
110 <#attempt>
111 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
112 <#list categories as category>
113 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
114 <#return category.getName()>
115 </#if>
116 </#list>
117 <#return "">
118
119 <#recover>
120 <#return "" />
121 </#attempt>
122</#function>
123
124<#function getFirstCategoryObjectOfVocabulary journalArticle vocabulary >
125 <#attempt>
126 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
127 <#list categories as category>
128 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
129 <#return category>
130 </#if>
131 </#list>
132 <#return "">
133
134 <#recover>
135 <#return "" />
136 </#attempt>
137</#function>
138
139<#-- Função para obter todas os ids das categorias associonadas a um Vocabulário o qual está associado a um Jornal Article -->
140<#function getAllCategoryIdOfVocabulary journalArticle vocabulary >
141 <#attempt>
142 <#assign categoriesIds = [] />
143 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
144 <#list categories as category>
145 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
146 <#assign categoriesIds = categoriesIds + [category.getCategoryId()] />
147 </#if>
148 </#list>
149 <#return categoriesIds>
150
151 <#recover>
152 <#return [] />
153 </#attempt>
154</#function>
155
156<#if newsJournalArticle?? && newsJournalArticle?has_content>
157
158 <div class="breadcrumb-breakpoint breakpoint">
159 <div class="breadcrumb-col col-2-11 md-col-1-8 sm-col-1-4">
160 <#assign homeURL = "/" />
161
162 <#if currentURL?contains('webserver')>
163 <#assign homeURL = "/web/nossa-energia" />
164 </#if>
165
166 <a href="${homeURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">
167 <span class="breadcrumb-text-truncate" original-text="Home">Home</span>
168 <div class="icon"></div>
169 </a>
170
171 <#assign currentUrl = getSiteUrl()>
172
173 <#assign lastIndex = currentUrl?last_index_of("/")>
174 <#assign urlWithoutLastSegment = currentUrl?substring(0, lastIndex+1)>
175 <#assign urlWithoutW = urlWithoutLastSegment?replace("/w/", "/")>
176
177 <#assign breadcrumbOurEnergyCategory = getFirstCategoryObjectOfVocabulary(assetEntry, ourEnergyVocabulary) />
178 <#assign categoryURL = urlWithoutW/>
179 <a href="${categoryURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">
180 <span class="breadcrumb-text-truncate" original-text="${breadcrumbOurEnergyCategory.getTitle(locale)}">${breadcrumbOurEnergyCategory.getTitle(locale)}</span>
181 <div class="icon"></div>
182 </a>
183
184 <span original-text="${newsJournalArticle.getTitle(locale)}" class="breadcrumb-page text active-page active paragraph-micro-bold">${newsJournalArticle.getTitle(locale)}</span>
185 </div>
186 </div>
187
188 <div class="ptb-news__read-news">
189 <div class="ptb-news__read-news-post ">
190 <div class="ptb-news__read-content">
191
192 <#assign
193 ddmStructure = newsJournalArticle.getDDMStructure()
194 fieldList = getFieldListByStructure(ddmStructure)
195 xmlArticle = newsJournalArticle.getDocument().getRootElement()
196 >
197
198 <#assign
199 <#-- Título principal da notícia -->
200 mainHeadlineOfTheNews = newsJournalArticle.getTitle(locale, true)
201 <#-- Título de destaque da notícia -->
202 featuredNewsHeadline = extractFeaturedNewsHeadline(fieldList, xmlArticle)
203 <#-- Sumário da notícia -->
204 newsSummary = extractNewsSummary(fieldList, xmlArticle)
205 <#-- Data de publicação da notícia -->
206 lastPublishDate = extractPublishDate(newsJournalArticle)
207 <#-- Data de criação da notícia -->
208 createDate = newsJournalArticle.getCreateDate()
209 >
210
211 <#-- Flag da notícia ---------------------------------------------------------------------------------->
212 <#assign flag = getFirstCategoryTitle(newsJournalArticle, flagCategoryTitles, assetCategoryLocalService)>
213
214 <#-- Url amigável da notícia para visualização em DisplayPage ----------------------------------------->
215 <#assign newsJournalArticleFriendlyUrl = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + newsJournalArticle.getUrlTitle()>
216
217 <#-- Conteúdo da notícia ------------------------------------------------------------------------------>
218 <#assign newsContent = getFieldValue(fieldList, xmlArticle, "Corpo da notícia")>
219
220 <#assign WEB_STORIES_FIELD_SET_FIELD_REF = "Fieldset91054335" />
221 <#assign WEB_STORIES_IDENTIFICATION_FIELD_LABEL = "Identificador do Carousel" />
222 <#assign WEB_STORIES_TITLE_FIELD_LABEL = "Título do carrossel" />
223
224 <#assign webStoriesCarouselsIds = [] />
225 <#assign webStoriesCarouselsTitles = [] />
226 <#assign webStoriesCarouselsIdsFieldSetList = getNodes(WEB_STORIES_FIELD_SET_FIELD_REF, xmlArticle) />
227
228 <#list webStoriesCarouselsIdsFieldSetList as webStoriesFieldSet>
229 <#assign webStoriesCarouselsIds = webStoriesCarouselsIds + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_IDENTIFICATION_FIELD_LABEL) ] />
230 <#assign webStoriesCarouselsTitles = webStoriesCarouselsTitles + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_TITLE_FIELD_LABEL) ] />
231 </#list>
232
233 <#assign wsCarouselContent = '
234 <div id="[CAROUSEL_ID]" class="ws-carousel">
235 <div class="ws-carousel-header">
236 <h1 class="h2">
237 [CAROUSEL_TITLE]
238 </h1>
239 <div class="nav-buttons">
240 <svg class="nav-arrow left-arrow inactive" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
241 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#bababa"/>
242 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#bababa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
243 </svg>
244 <svg class="nav-arrow right-arrow active" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
245 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#008542"/>
246 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
247 </svg>
248 </div>
249 </div>
250 <div class="ws-carousel-body">
251 <div class="ws-container">
252 </div>
253 </div>
254 </div>' />
255
256 <#list webStoriesCarouselsIds as item >
257 <#assign carouselDiv = wsCarouselContent?replace("[CAROUSEL_ID]", item)?replace("[CAROUSEL_TITLE]", webStoriesCarouselsTitles[item?index]) />
258 <#assign newsContent = newsContent?replace("<p>#[${item}]</p>", carouselDiv) />
259 </#list>
260
261
262 <#assign WEB_STORIES_FIELD_SET_FIELD_REF = "Fieldset91054335" />
263 <#assign WEB_STORIES_IDENTIFICATION_FIELD_LABEL = "Identificador do Carousel" />
264 <#assign WEB_STORIES_TITLE_FIELD_LABEL = "Título do carrossel" />
265
266 <#assign webStoriesCarouselsIds = [] />
267 <#assign webStoriesCarouselsTitles = [] />
268 <#assign webStoriesCarouselsIdsFieldSetList = getNodes(WEB_STORIES_FIELD_SET_FIELD_REF, xmlArticle) />
269
270 <#list webStoriesCarouselsIdsFieldSetList as webStoriesFieldSet>
271 <#assign webStoriesCarouselsIds = webStoriesCarouselsIds + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_IDENTIFICATION_FIELD_LABEL) ] />
272 <#assign webStoriesCarouselsTitles = webStoriesCarouselsTitles + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_TITLE_FIELD_LABEL) ] />
273 </#list>
274
275 <#assign wsCarouselContent = '
276 <div id="[CAROUSEL_ID]" class="ws-carousel">
277 <div class="ws-carousel-header">
278 <h1 class="h2">
279 [CAROUSEL_TITLE]
280 </h1>
281 <div class="nav-buttons">
282 <svg class="nav-arrow left-arrow inactive" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
283 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#bababa"/>
284 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#bababa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
285 </svg>
286 <svg class="nav-arrow right-arrow active" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
287 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#008542"/>
288 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
289 </svg>
290 </div>
291 </div>
292 <div class="ws-carousel-body">
293 <div class="ws-container">
294 </div>
295 </div>
296 </div>' />
297
298 <#list webStoriesCarouselsIds as item >
299 <#assign carouselDiv = wsCarouselContent?replace("[CAROUSEL_ID]", item)?replace("[CAROUSEL_TITLE]", webStoriesCarouselsTitles[item?index]) />
300 <#assign newsContent = newsContent?replace("<p>#[${item}]</p>", carouselDiv) />
301 </#list>
302
303
304 <#-- Seção do áudio para o conteúdo da notícia -------------------------------------------------------->
305 <#assign audios = []
306 audioIdentifierFieldSetList = getNodes("Fieldset65862311", xmlArticle)
307 >
308 <#list audioIdentifierFieldSetList as audioIdentifierFieldSet>
309 <#assign
310 <#-- Grupo com as informações de url e legenda do áudio -->
311 audioInfoFieldSet = getGroupNode("Fieldset24035689",audioIdentifierFieldSet)>
312 <#assign
313 externalAudioUrl = getFieldValue(fieldList, audioInfoFieldSet, "URL externa do áudio")
314 internalAudioUrl = getFileFromXML("DocumentLibrary24170668", audioInfoFieldSet, fileEntryService)
315 audioLegend = getFieldValue(fieldList, audioInfoFieldSet, "Legenda do áudio")>
316
317 <#if externalAudioUrl?has_content || internalAudioUrl.url?has_content >
318 <#assign audios += [{
319 "id": getFieldValue(fieldList, audioIdentifierFieldSet, "Identificador de Áudio"),
320 "externalUrl" : externalAudioUrl,
321 "internalUrl" : internalAudioUrl,
322 "legend" : audioLegend
323 }]>
324 </#if>
325 </#list>
326
327
328 <#-- Seção de vídeo para o conteúdo da notícia -------------------------------------------------------->
329 <#assign videos = []
330 videoIdentifierFieldSetList = getNodes("Fieldset24460782", xmlArticle)
331 >
332 <#list videoIdentifierFieldSetList as videoIdentifierFieldSet>
333 <#assign
334 <#-- Grupo com as informações de url e legenda do áudio -->
335 videoInfoFieldSet = getGroupNode("Fieldset51040010",videoIdentifierFieldSet)
336
337 videos += [{
338 "id": getFieldValue(fieldList,videoIdentifierFieldSet, "Identificador de Vídeo"),
339 "youtubeID" : getFieldValue(fieldList, videoInfoFieldSet, "ID do vídeo do YouTube"),
340 "internalUrl" : getFileFromXML("DocumentLibrary15265409", videoInfoFieldSet, fileEntryService),
341 "legend" : getFieldValue(fieldList, videoInfoFieldSet, "Legenda do vídeo")
342 }]
343 >
344 </#list>
345
346
347 <#-- Seção de links para o conteúdo da notícia -------------------------------------------------------->
348 <#assign
349 links = []
350 linksFieldSetList = getNodes("Fieldset37770113", xmlArticle)
351 >
352 <#list linksFieldSetList as linksFieldSet>
353 <#assign linkFieldSetList = getNodes("Fieldset10524367", linksFieldSet)>
354
355 <#list linkFieldSetList as linkFieldSet>
356 <#assign
357 linkId = getFieldValue(fieldList, linkFieldSet, "Identificador do link")
358
359 <#-- Grupo com as informações de url e legenda do áudio -->
360 linkInfoFieldSeet = getGroupNode("Fieldset86037074", linkFieldSet)
361
362 iconType = getFieldValue(fieldList, linkInfoFieldSeet, "Ícone do link")
363 links += [{
364 "id": linkId,
365 "externalLink" : getFieldValue(fieldList, linkInfoFieldSeet, "Link externo"),
366 "pageLink" : getPageLayoutLinkFromXML("LinkToLayout77941175", linkInfoFieldSeet, layoutLocalService),
367 "file" : getFileFromXML("DocumentLibrary34820760", linkInfoFieldSeet, fileEntryService),
368 "title" : getFieldValue(fieldList, linkInfoFieldSeet, "Título do link"),
369 "iconType" : iconType
370 }]
371 >
372 </#list>
373 </#list>
374
375
376
377 <#assign galleryItems = []/>
378
379 <#assign mediaGroupList = getNodes(getIdFromFieldName(fieldList, "Galeria de multimídia"), xmlArticle) />
380
381 <#list mediaGroupList as mediaGroup >
382 <#assign nodes = getNodes(getIdFromFieldName(fieldList, "Imagem da Galeria") , mediaGroup) />
383 <#list nodes as node>
384 <#assign image = getMediaInfo(fieldList, node, "Imagem", fileEntryService) />
385 <#if image?? && image?has_content && image.url?has_content>
386 <#assign galleryItems += [{"image": image}] />
387 </#if>
388 </#list>
389 </#list>
390
391 <#-- Seção de Quotes para o conteúdo da notícia -------------------------------------------------------->
392 <#-- Seção de Quotes para o conteúdo da notícia -------------------------------------------------------->
393 <#assign quotes = [] />
394 <#assign quotesRootFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quotes da notícia"), xmlArticle) />
395 <#list quotesRootFieldSetList as quotesFieldSetList>
396 <#assign quoteFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quote"), quotesFieldSetList) />
397 <#list quoteFieldSetList as quoteFieldSet>
398 <#assign imageJsonString = getSingleNodeString("Image94530628", quoteFieldSet) />
399 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
400 <#attempt>
401 <#if imageJsonString ?? && imageJsonString?has_content>
402 <#assign imageJson = jsonFactoryUtil.createJSONObject(imageJsonString) />
403 </#if>
404
405 <#if !imageJson.url?? || !imageJson.url?has_content>
406 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
407 </#if>
408 <#recover>
409 </#attempt>
410
411 <#if !imageJson.url?? || !imageJson.url?has_content>
412 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
413 </#if>
414
415 <#assign quotes += [{
416 "id": getFieldValue(fieldList, quoteFieldSet, "Identificador do Quote"),
417 "content" : getFieldValue(fieldList, quoteFieldSet, "Texto do Quote"),
418 "author" : getFieldValue(fieldList, quoteFieldSet, "Nome do autor"),
419 "image" : {"url": imageJson.url, "alt": imageJson.alt, "fileEntryId" : imageJson.fileEntryId, "title" : imageJson.title}
420 }] />
421 </#list>
422 </#list>
423
424 <#assign newsInfo = {
425 "mainHeadlineOfTheNews": mainHeadlineOfTheNews,
426 "featuredNewsHeadline" : featuredNewsHeadline,
427 "displayDate" : formatDate(createDate),
428 "createDate": createDate,
429 "newsSummary" : newsSummary,
430 "newsMedia": extractNewsMedia(fieldList, xmlArticle, fileEntryService),
431 "lastPublishDate": lastPublishDate,
432 "flag": flag,
433 "url": newsJournalArticleFriendlyUrl,
434 "newsContent": newsContent,
435 "audios": audios,
436 "videos": videos,
437 "galleryItems": galleryItems,
438 "links": links,
439 "quotes": quotes
440 }/>
441
442 <#-- Renderizar o título principal da notícia -->
443 <#-- Conteúdo-> Conteúdo Web -> Templates: Site de Crise - Notícia - Título -->
444 <@renderHeadLine newsInfo/>
445
446 <#-- Renderizar o resumo da notícia -->
447 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Resumo -->
448 <@renderReview newsInfo/>
449
450 <#-- Renderizar a data de publicação/edição da notícia e redes sociais -->
451 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação -->
452 <@renderPublishAndSocialMediasInfos newsJournalArticle newsInfo/>
453
454 <#-- Renderizar as tags da notícia -->
455 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render Tags -->
456 <#assign categoriesAsssetEntryResponse = restClient.get("/headless-delivery/v1.0/structured-contents/${assetEntry.getClassPK()}?nestedFields=embeddedTaxonomyCategory&fields=taxonomyCategoryBriefs") />
457
458 <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??>
459 <#assign tagCategoryList = getCategoriesNamesAndIds("Tags", categoriesAsssetEntryResponse.taxonomyCategoryBriefs) />
460 <#assign removeStartParameterWhenTagIsClicked = true />
461 <#assign includeRequestParams = false />
462 <#assign NEWS_PAGE_NAME= "categorias"/>
463 </#if>
464
465
466 <#-- Renderizar a imagem de destaque da notícia -->
467 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Imagem de destaque -->
468 <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) />
469
470 <#if !typeOfNews?? || !typeOfNews?has_content || typeOfNews != "Infográfico" >
471 <@renderNewsFeaturedMedia newsInfo />
472 </#if>
473
474 <#-- Renderizar o conteúdo da notícia -->
475 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
476 <@renderNewsContent newsInfo/>
477
478 <#-- Renderizar o conteúdo da notícia-->
479 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
480
481 <#-- Renderizar o conteúdo da notícia-->
482 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
483
484 <#-- Renderiza botoes de compartilhamento na versao mobile -->
485 <div class="render-share-news-container publish_and_social_medias_infos_desk mobile">
486 <@renderShareAndCopyNews/>
487 </div>
488
489 <#-- Renderizar links da notícia -->
490 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Links do conteúdo da notícia -->
491 <@renderLinks newsInfo />
492
493 <@renderCite />
494
495 <#-- Renderizar áudios da notícia -->
496 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia -->
497
498 <#-- Renderizar galeria de imagens notícia -->
499 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render galeria -->
500 <@renderGallery newsInfo />
501
502 <#-- Renderizar quotes da notícia -->
503 <@renderQuotes newsInfo />
504 </div>
505 </div>
506 </div>
507<#else >
508 <div class="ptb-news__read-news paragraph-sm-regular">
509 <p> <#if locale == "pt_BR"> Nenhuma notícia <#else> There are no news </#if></p>
510 </div>
511
512 <style>
513 .ptb-news__read-news p {
514 color: #515867;
515 }
516
517 body.high-contrast-active .ptb-news__read-news p {
518 color: var(--color-neutral-100);
519 }
520 </style>
521</#if>
522
523<style>
524 .breadcrumb-breakpoint {
525 padding-top: var(--space-xxl);
526 padding-bottom: var(--space-xl);
527 }
528
529 body.high-contrast-active .breadcrumb-breakpoint {
530 background: var(--background-surface-level-01, #010101);
531 }
532
533 .breadcrumb-breakpoint .breadcrumb-col {
534 display: flex;
535 width: max-content;
536 gap: var(--space-xxs);
537 height: fit-content;
538 overflow-x: hidden;
539 }
540
541 .breadcrumb-breakpoint #liferay-breadcrumb {
542 display: none;
543 }
544
545 .breadcrumb-breakpoint .breadcrumb-page {
546 display: flex;
547 gap: var(--space-micro);
548 height: var(--size-md);
549 size: var(--size-md);
550 border: 1px solid rgba(0, 0, 0, 0);
551 box-sizing: border-box;
552 border-radius: var(--border-radius-sm);
553 }
554
555 .breadcrumb-breakpoint a.breadcrumb-page.text span,
556 .breadcrumb-breakpoint span.breadcrumb-page.text {
557 white-space: nowrap;
558 }
559
560 .breadcrumb-breakpoint .breadcrumb-page a:focus {
561 outline: none;
562 }
563
564 .breadcrumb-breakpoint .breadcrumb-page.active-page {
565 color: var(--color-text-primary-default);
566 background-color: var(--color-background-default-level-02);
567 border-radius: var(--border-radius-sm);
568 }
569
570 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.active-page {
571 background: var(--background-surface-level-02, #373737);
572 color: var(--text-primary-default, #FFF);
573 }
574
575 .breadcrumb-breakpoint .breadcrumb-page.previous-page {
576 transition: 300ms ease-in-out;
577 }
578
579 .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
580 text-decoration: var(--text-decoration-none);
581 color: var(--color-text-primary-default);
582 text-transform: capitalize;
583 padding-left: var(--space-xxs);
584 padding-right: var(--space-xxs);
585 }
586
587 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
588 color: var(--text-primary-default, #FFF);
589 }
590
591 .breadcrumb-breakpoint .breadcrumb-page.active-page.text {
592 color: var(--color-text-primary-default);
593 text-decoration: var(--text-decoration-none);
594 background-color: var(--color-background-default-level-02);
595 text-transform: capitalize;
596 padding-left: var(--space-xxs);
597 padding-right: var(--space-xxs);
598 }
599
600 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
601 color: var(--text-primary-default, #FFF);
602 }
603
604 .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
605 background-color: var(--color-background-default-level-01);
606 border-color: var(--border-color-dark);
607 border-radius: var(--border-radius-sm);
608 border: 1px solid;
609 transition: all 300ms ease-in-out;
610 }
611
612 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
613 background-color: transparent;
614 }
615
616 .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
617 margin: var(--space-micro);
618 border-radius: var(--space-micro);
619 outline: none;
620 border: 1px solid var(--color-primary-medium);
621 box-sizing: border-box;
622 transition: 300ms ease-in-out;
623 }
624
625 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
626 border: 1px solid rgba(228, 247, 232, 1);
627 }
628
629 .breadcrumb-breakpoint .breadcrumb-page .icon {
630 width: var(--size-xxs);
631 height: var(--size-xxs);
632 border-color: var(--border-color-darkest);
633 background-image: url('data:image/svg+xml,%3Csvg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M4.5 2.25L8.25 6L4.5 9.75" stroke="%23525252" stroke-linecap="round" stroke-linejoin="round"%3E%3C/path%3E%3C/svg%3E');
634 background-size: cover;
635 margin-top: auto;
636 margin-bottom: auto;
637 }
638
639 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page .icon {
640 background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 2.25L8.25 6L4.5 9.75" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg>');
641 }
642
643 .ptb-news__read-news {
644 overflow: hidden;
645 }
646
647 body.high-contrast-active .ptb-news__read-news {
648 background: var(--background-surface-level-01, #010101);
649 }
650</style>
651
652
653<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
654<#--
655Add elements from the sidebar to define your template. Type "${" to use the
656autocomplete feature.
657-->
658
659<#macro renderHeadLine newsInfo>
660
661 <div class="main-headline-container breakpoint">
662 <div class="main-headline-container-col col-2-11 md-col-1-8 sm-col-1-4">
663 <h1 class="main-headline display-sm">${newsInfo.featuredNewsHeadline}</h1>
664 <div class="bar"></div>
665 </div>
666 </div>
667
668 <style>
669 .ptb-news__read-news .main-headline-container .main-headline-container-col {
670 display: flex;
671 flex-direction: column;
672 gap: var(--space-sm);
673 padding-bottom: var(--space-lg);
674 }
675
676 .ptb-news__read-news .main-headline-container .main-headline-container-col * {
677 margin: 0;
678 padding: 0;
679 }
680
681 .ptb-news__read-news .main-headline-container .main-headline {
682 font-family: var(--font-family-base);
683 color: var(--color-neutral-800);
684 }
685
686 body.high-contrast-active .ptb-news__read-news .main-headline-container .main-headline {
687 color: var(--text-primary-default, var(--color-neutral-100));
688 }
689
690 .ptb-news__read-news .main-headline-container .bar {
691 width: 32px;
692 height: var(--size-micro);
693 background: var(--color-secondary-medium);
694 }
695
696 body.high-contrast-active .ptb-news__read-news .main-headline-container .bar{
697 background: var(--text-secondary-accent, #FFEEB3);
698 }
699
700 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
701 .ptb-news__read-news .main-headline-container .main-headline-container-col {
702 gap: var(--space-xs, 12px);
703 }
704 }
705 </style>
706</#macro>
707<#-- ################################################################################################################## -->
708
709<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
710<#macro renderReview newsInfo>
711 <#assign summaryCssRoot = "summary-container" />
712
713 <div class="${summaryCssRoot}-breakpoint breakpoint">
714 <div class="${summaryCssRoot} col-2-11 md-col-1-8 sm-col-1-4">
715 <p class="summary paragraph-lg-regular">
716 ${newsInfo.newsSummary}
717 </p>
718 </div>
719
720 </div>
721
722 <style>
723 .${summaryCssRoot} .summary {
724 padding-bottom: var(--space-lg);
725 }
726
727 .${summaryCssRoot} .summary,
728 .${summaryCssRoot} .summary * {
729 color: var(--color-neutral-800, #373737);
730 font-family: var(--font-family-base);
731 font-style: var(--font-style-italic);
732 margin: var(--space-none);
733 }
734
735 body.high-contrast-active .summary,
736 body.high-contrast-active .summary * {
737 color: var(--text-secondary-default, #F8F8F8);
738 }
739 </style>
740</#macro>
741<#-- ################################################################################################################## -->
742
743<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
744<#macro renderPublishAndSocialMediasInfos journalArticle newsInfo>
745
746 <div class="publish_and_social_medias_infos_desk-breakpoint breakpoint">
747 <div class="publish_and_social_medias_infos_desk col-2-11 md-col-1-8 sm-col-1-4">
748 <div class="publish_and_update_date">
749 <#assign lastPublishDate = journalArticle.getModifiedDate()>
750 <#assign createDate = journalArticle.getCreateDate()>
751 <#if journalArticle.getLastPublishDate()??>
752 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
753 </#if>
754
755 <#if locale == "pt_BR">
756 <p class="updated">Atualizado em ${formatDate(lastPublishDate)}</p>
757 <p class="published">Postado em ${formatDate(createDate)}</p>
758 <#else >
759 <p class="updated">Updated on ${formatDate(lastPublishDate)}</p>
760 <p class="published">Posted on ${formatDate(createDate)}</p>
761 </#if>
762 </div>
763 <div class="render-share-news-container desktop">
764 <@renderShareAndCopyNews/>
765 </div>
766 </div>
767 </div>
768
769 <style>
770 .ptb-news__read-news .hidden {
771 display: none;
772 }
773 /*Data de publicação e redes sociais */
774
775 /* Desktop */
776 .ptb-news__read-news .publish_and_social_medias_infos_desk {
777 position: relative;
778 display: grid;
779 grid-template-columns: auto 1fr auto;
780 }
781
782 .ptb-news__read-news .render-share-news-container.mobile {
783 display: none;
784 }
785
786 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
787 padding: var(--space-none, 0);
788 margin: var(--space-none, 0);
789 font-family: var(--font-family-base);
790 font-style: var(--font-style-normal, normal);
791 font-weight: var(--font-weight-regular, 400);
792 font-size: var(--font-size-xxs, 16px);
793 line-height: var(--line-height-xl, 160%);
794 color: var(--color-neutral-800, #373737);
795 }
796
797 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk * {
798 color: var(--text-secondary-default, #F8F8F8);
799 }
800
801 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg path,
802 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg path {
803 stroke: var(--color-neutral-500, #D7D7D7);
804 fill: rgba(255, 255, 255, 0.32);
805 }
806
807 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg circle,
808 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg circle {
809 fill: rgba(255, 255, 255, 0.32);
810 }
811
812 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
813 display: flex;
814 align-items: center;
815 gap: var(--space-sm, 16px);
816 }
817
818 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
819 font-weight: var(--font-weight-bold, 700);
820 font-size: var(--font-size-xxxs, 14px);
821 }
822
823 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
824 color: var(--text-primary-default, var(--color-neutral-100));
825 }
826
827 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
828 font-weight: var(--font-weight-normal, 400);
829 font-size: var(--font-size-xxxs, 14px);
830 }
831
832 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
833 display: flex;
834 width: 100%;
835 justify-content: flex-end;
836 align-items: center;
837 gap: var(--space-sm, 16px);
838 }
839
840 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share {
841 position: relative;
842 }
843
844 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share span {
845 position: absolute;
846 width: 100%;
847 height: 100%;
848 opacity: 0;
849 overflow: hidden;
850 pointer-events: none;
851 }
852
853 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
854 display: none;
855 }
856
857 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
858 background: var(--color-neutral-100);
859 border: var(--border-width-hairline, 1px) solid #CCCCCC;
860 border-radius: 32px;
861 display: flex;
862 align-items: center;
863 gap: var(--space-sm, 16px);
864 padding: 6px var(--space-xxs, 8px);
865 height: 36px;
866 margin: 0;
867 cursor: pointer;
868 }
869
870 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
871 background: rgba(255, 255, 255, 0.32);
872 border: var(--border-width-hairline, 1px) solid rgba(255, 255, 255, 0.32);
873 }
874
875 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container svg {
876 width: 18px;
877 }
878
879 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk svg path {
880 stroke: var(--color-neutral-500, #D7D7D7);
881 }
882
883 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
884 font-family: var(--font-family-base);
885 font-style: normal;
886 margin: 0;
887 height: 100%;
888 display: flex;
889 align-items: center;
890 color: var(--color-primary-medium, #008542);
891 font-size: var(--font-size-micro, 12px);
892 font-weight: var(--font-weight-bold, 700);
893 line-height: var(--line-height-lg, 144%);
894 pointer-events: none;
895 }
896
897 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text .copy-text-title-news {
898 position: absolute;
899 width: 100%;
900 height: 100%;
901 opacity: 0;
902 overflow: hidden;
903 }
904
905 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
906 color: var(--text-primary-accent, #E4F7E8);
907 }
908
909 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
910 display: none;
911 position: absolute;
912 bottom: -43px;
913 right: -15px;
914 padding: var(--space-xxxs, 4px) 15px;
915 margin: var(--space-micro, 2px) 10px;
916 width: 110px;
917 font-family: var(--font-family-base);
918 font-size: var(--font-size-micro, 12px);
919
920 color: #008542;
921 background: var(--color-neutral-100);
922 border-radius: var(--border-radius-md, 8px);
923
924 filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.16));
925
926 cursor: pointer;
927 }
928
929 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
930 background: rgba(255, 255, 255, 0.32);
931 color: var(--text-primary-accent, #E4F7E8);
932 }
933
934 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message-active {
935 display: block;
936 }
937
938 /* Mobile */
939
940 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
941 display: flex;
942 flex-direction: column;
943 gap: 19px;
944 }
945
946 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
947 display: none;
948 }
949
950 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text {
951 display: flex;
952 justify-content: space-between;
953 align-items: center;
954 margin-bottom: var(--space-lg, 32px);
955 }
956
957 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
958 padding: 0;
959 margin: 0;
960 font-family: var(--font-family-base);
961 font-style: var(--font-style-normal, normal);
962 font-size: var(--font-size-micro, 12px);
963 line-height: 136%;
964 color: var(--color-neutral-800, #373737);
965 }
966
967 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
968 color: var(--text-primary-accent, #E4F7E8);
969 }
970
971 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date {
972 display: flex;
973 flex-direction: column;
974 gap: 0;
975 }
976
977 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .updated {
978 font-weight: var(--font-weight-bold, 700);
979 }
980
981 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .published {
982 font-weight: var(--font-weight-regular, 400);
983 }
984
985 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
986 background: var(--color-neutral-100);
987 border: var(--border-width-hairline, 1px) solid #CCCCCC;
988 border-radius: 32px;
989 display: flex;
990 align-items: center;
991 gap: var(--space-sm, 16px);
992 padding: 6px var(--space-xxs, 8px);
993 width: 112px;
994 height: 36px;
995 }
996
997 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
998 background: rgba(255, 255, 255, 0.32);
999 color: var(--text-primary-accent, #E4F7E8);
1000 }
1001
1002 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container p.text {
1003 margin: 0;
1004 }
1005
1006 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
1007 font-family: var(--font-family-base);
1008 font-style: var(--font-style-normal, normal);
1009 font-weight: var(--font-weight-regular, 400);
1010 font-size: 13px;
1011 line-height: 14px;
1012 color: #008542;
1013 }
1014
1015 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
1016 background: rgba(255, 255, 255, 0.32);
1017 color: var(--text-primary-accent, #E4F7E8);
1018 }
1019
1020 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1021
1022 .ptb-news__read-news .publish_and_social_medias_infos_desk .render-share-news-container.desktop {
1023 display: none;
1024 }
1025
1026 .ptb-news__read-news .render-share-news-container.mobile {
1027 display: block;
1028 margin: var(--space-xl) var(--space-lg) 0 var(--space-lg);
1029 }
1030
1031 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
1032 font-size: var(--font-size-micro, 12px);
1033 }
1034
1035 .ptb-news__read-news .publish_and_social_medias_infos_desk {
1036 display: grid;
1037 grid-template-columns: 100%;
1038 grid-template-rows: 1fr 100%;
1039 }
1040
1041 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
1042 grid-column-start: 1;
1043 grid-column-end: 1;
1044 grid-row-start: 1;
1045 grid-row-end: 1;
1046 gap: var(--space-xxs, 8px);
1047 }
1048
1049 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1050 padding: 0;
1051 margin: 0;
1052 font-family: var(--font-family-base);
1053 font-style: var(--font-style-normal);
1054 color: var(--color-neutral-800, #373737);
1055 font-weight: var(--font-weight-bold);
1056 font-size: var(--font-size-xxxs, 14px);
1057 line-height: var(--line-height-md, 132%);
1058 }
1059
1060 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1061 color: var(--text-primary-accent, #E4F7E8);
1062 }
1063
1064 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
1065 font-weight: var(--font-weight-regular, 400);
1066 }
1067
1068 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1069 grid-column-start: 1;
1070 grid-column-end: 2;
1071 grid-row-start: 2;
1072 grid-row-end: 2;
1073 justify-content: center;
1074 gap: var(--space-xs, 12px);
1075 height: 36px;
1076 }
1077
1078 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1079 grid-column-start: 1;
1080 grid-column-end: 2;
1081 grid-row-start: 2;
1082 grid-row-end: 2;
1083 max-width: 112px;
1084 place-self: end;
1085 }
1086
1087 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
1088 display: none;
1089 }
1090
1091 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
1092 bottom: 0;
1093 right: -9px;
1094 }
1095
1096 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
1097 display: initial;
1098 }
1099 }
1100
1101 @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) {
1102 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1103 padding-right: 0;
1104 }
1105 }
1106
1107
1108 </style>
1109
1110 <script>
1111 AUI().ready(function () {
1112
1113 function copyOnClick(text) {
1114
1115 const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, "");
1116 const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, "");
1117 const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous Next/g, "");
1118 const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, "");
1119 const strWithoutBlankLines = strWithoutBlankEnters.replace(/ /g, '');
1120 const tempInput = document.createElement("textarea");
1121 tempInput.value = strWithoutBlankLines;
1122
1123 document.body.appendChild(tempInput);
1124 tempInput.select();
1125 document.execCommand("copy");
1126
1127 if (tempInput.value.length > 0) {
1128 copyMessages.forEach(copyMessage => copyMessage.classList.add('copy-message-active'));
1129
1130 timerToMessage()
1131 }
1132
1133 document.body.removeChild(tempInput);
1134 }
1135
1136 const copyTextContainers = document.querySelectorAll(".publish_and_social_medias_infos_desk .copy-text-container");
1137 copyTextContainers.forEach(copyTextContainer => {
1138 copyTextContainer.addEventListener("click", (event) => {
1139 event.preventDefault();
1140 const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML;
1141 const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML;
1142 const tagsText = document.querySelector(".tags").innerHTML;
1143 const newsContentText = document.querySelector(".news-content").innerHTML;
1144 const text = titleText + publishSocialMediaText + tagsText + newsContentText;
1145 copyOnClick(text)
1146 });
1147 });
1148
1149 const mobileShare = async () => {
1150 try {
1151 const shareData = {
1152 title: '${newsInfo.mainHeadlineOfTheNews}',
1153 text: '',
1154 url: '${newsInfo.url}'
1155 };
1156 await navigator.share(shareData);
1157 } catch (err) {
1158
1159 }
1160 };
1161
1162 const mobileShareButtons = document.querySelectorAll(".publish_and_social_medias_infos_desk .mobile-share");
1163 mobileShareButtons.forEach(mobileShareButton => {
1164 mobileShareButton.addEventListener("click", (event) => {
1165 event.preventDefault();
1166 mobileShare();
1167 });
1168 });
1169
1170 const copyMessages = document.querySelectorAll('.copy-message');
1171 const timerToMessage = () => {
1172 setTimeout(() => {
1173 removeMessage();
1174 }, 2500);
1175
1176 }
1177
1178 const removeMessage = () => {
1179 copyMessages.forEach(copyMessage => copyMessage.classList.remove('copy-message-active'));
1180 }
1181
1182 });
1183 </script>
1184
1185</#macro>
1186
1187<#-- ################################################################################################################## -->
1188
1189<#-- ############# Site de Crise - Notícia - Render Tags ############################################################## -->
1190
1191<#function getCategoriesNamesAndIds vocabularyName categoriesList>
1192 <#assign tagCategoryList = [] />
1193
1194 <#assign tagsVocabulary = assetVocabularyService.fetchGroupVocabulary(groupId, vocabularyName) />
1195 <#list categoriesList as cat>
1196 <#if tagsVocabulary.getVocabularyId() == cat.embeddedTaxonomyCategory.taxonomyVocabularyId >
1197 <#assign tagCategoryList += [[cat.taxonomyCategoryName, cat.taxonomyCategoryId]] />
1198 </#if>
1199 </#list>
1200 <#return tagCategoryList>
1201</#function>
1202
1203<#assign
1204flagVocabulary = findVocabulary("Flag", vocabularies)
1205assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")
1206/>
1207
1208<#macro renderNewsTags categoryList targetPageWhenClickTag removeStartParameterWhenTagIsClicked updateTagParamsWhenClicked>
1209 <#assign tagPrefix = "tags-" + randomNumber(groupId?number)>
1210 <div class="${tagPrefix}-breakpoint breakpoint">
1211 <div class="${tagPrefix} col-2-11 md-col-1-8 sm-col-1-4">
1212
1213 <div class="tags">
1214 <#list categoryList as cat>
1215 <#assign tagLink = mountUrlToPage("") />
1216 <#assign urlWithoutTrailingSlash = tagLink?substring(0, tagLink?length - 1)>
1217 <#assign lastSlashIndex = urlWithoutTrailingSlash?last_index_of("/")>
1218 <#assign newUrl = urlWithoutTrailingSlash?substring(0, lastSlashIndex + 1)>
1219 <#assign tagLink = newUrl + "categorias?category=" + cat[1] />
1220 <a href="${tagLink}"
1221 class="category" cetegoryid="${cat[1]}"># ${cat[0]}</a>
1222 </#list>
1223 </div>
1224 </div>
1225 </div>
1226
1227 <style>
1228 .${tagPrefix} {
1229 display: flex;
1230 flex-direction: column;
1231 padding: 0;
1232 gap: var(--space-sm);
1233 }
1234
1235 .${tagPrefix} * {
1236 margin: 0;
1237 padding: 0;
1238 }
1239
1240 .${tagPrefix} .tags {
1241 display: flex;
1242 flex-wrap: wrap;
1243 gap: var(--space-xxs, 8px);
1244 padding: var(--space-lg) 0 0;
1245 }
1246
1247 .${tagPrefix} .tags .category {
1248 padding: var(--space-xxxs) var(--space-xxs);
1249 background: var(--color-neutral-100);
1250 border: var(--border-width-hairline, 1px) solid var(--color-neutral-500);
1251 border-radius: var(--border-radius-xl);
1252
1253 font-family: var(--font-family-base);
1254 font-style: var(--font-style-normal);
1255 font-weight: var(--font-weight-regular);
1256 font-size: var(--font-size-xxxs);
1257 line-height: var(--line-height-xl);
1258 color: var(--color-neutral-800, #373737);
1259 cursor: pointer;
1260 }
1261
1262 body.high-contrast-active .${tagPrefix} .tags .category {
1263 background: rgba(255, 255, 255, 0.32);
1264 border: 1px solid rgba(255, 255, 255, 0.32);
1265 color: var(--text-secondary-default, #F8F8F8);
1266 }
1267
1268 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1269 .${tagPrefix} .tags {
1270 display: flex;
1271 flex-wrap: wrap;
1272 gap: 8px;
1273 padding: var(--space-sm) 0 var(--space-lg);
1274 }
1275
1276 .${tagPrefix} {
1277 margin-top: var(--space-sm);
1278 }
1279 }
1280 </style>
1281
1282 <script>
1283 AUI().ready(function () {
1284
1285 const urlParams = new URLSearchParams(window.location.search);
1286 const categories = urlParams.getAll("category").sort();
1287
1288 const root = document.querySelector(".${tagPrefix}");
1289 const tags = root.querySelectorAll(".category");
1290 tags.forEach((tag, index) => {
1291
1292 const categoryId = tag.getAttribute("cetegoryid");
1293 if (categories.indexOf(categoryId) != -1) {
1294 tag.classList.add("active");
1295 }
1296
1297 <#if updateTagParamsWhenClicked>
1298 tag.addEventListener("click", (e) => {
1299 e.preventDefault();
1300 const clickedTag = e.target;
1301 const urlParams = new URLSearchParams(window.location.search);
1302 urlParams.delete("tag");
1303 urlParams.delete("category");
1304
1305 const categoryId = clickedTag.getAttribute("cetegoryid");
1306 urlParams.append("category", categoryId);
1307
1308 <#if removeStartParameterWhenTagIsClicked>
1309 urlParams.delete("start");
1310 </#if>
1311
1312 const href = "${themeDisplay.getPortalURL() + mountUrlToPage(targetPageWhenClickTag)}?" + urlParams.toString();
1313 window.location.href = href;
1314 });
1315 </#if>
1316 });
1317 });
1318 </script>
1319
1320</#macro>
1321
1322<#-- ################################################################################################################## -->
1323
1324<#-- ############# Site de Crise - Notícia - Imagem de destaque ####################################################### -->
1325<#macro renderNewsFeaturedMedia newsInfo>
1326 <#if (newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content) || (newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content) || (newsInfo.newsMedia.internalVideo?? && newsInfo.newsMedia.internalVideo.url?has_content)>
1327 <div class="news-featured-media">
1328
1329 <div class="media-breakpoint breakpoint">
1330 <div class="media-col col-2-11 md-col-1-8 sm-col-1-4">
1331 <#if newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content>
1332 <#-- Midias adaptativas de imagem para desktop e mobile -->
1333 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${newsInfo.newsMedia.fileEntryId}") />
1334 <#assign urlAdaptativeMediaMobile = newsInfo.newsMedia.imageSrc/>
1335 <#assign urlAdaptativeMediaDesktop = newsInfo.newsMedia.imageSrc/>
1336
1337 <#if fileDataRequest?? && fileDataRequest.adaptedImages?? >
1338 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
1339 <#list dataAdaptativeMedia as data>
1340 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
1341 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
1342 </#if>
1343 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
1344 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
1345 </#if>
1346 </#list>
1347 </#if>
1348
1349 <picture >
1350 <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}">
1351 <img src="${urlAdaptativeMediaDesktop}" loading="lazy" alt="${newsInfo.newsMedia.imageAlt}"/>
1352 </picture>
1353 <@liferay_util["html-top"]>
1354 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1355 <meta name="description" content="${newsInfo.newsSummary}">
1356
1357 <meta property="og:url" content="${currentURL}">
1358 <meta property="og:type" content="website">
1359 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1360 <meta property="og:description" content="${newsInfo.newsSummary}" />
1361 <meta property="og:image" content="${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image">
1362 <meta property="og:image:alt" content="${newsInfo.newsMedia.imageAlt}">
1363
1364 <meta name="twitter:card" content="summary_large_image">
1365 <meta name="twitter:url" content="${currentURL}" />
1366 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1367 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1368 <meta name="twitter:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image" >
1369 <meta name="twitter:image:alt" content="${newsInfo.newsMedia.imageAlt}">
1370 </@>
1371 <#else>
1372 <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content>
1373 <iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/${newsInfo.newsMedia.videoYotubeID}?si=PDNu4EIwtCuSHC1S&controls=0&enablejsapi=1&rel=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
1374 <@liferay_util["html-top"]>
1375 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1376 <meta name="description" content="${newsInfo.newsSummary}">
1377
1378 <meta property="og:url" content="${currentURL}">
1379 <meta property="og:type" content="website">
1380 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1381 <meta property="og:description" content="${newsInfo.newsSummary}" />
1382 <meta property="og:image" content="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg">
1383 <meta property="og:image:alt" content="Youtube Video Thumbnail">
1384
1385 <meta name="twitter:card" content="summary_large_image">
1386 <meta name="twitter:url" content="${currentURL}" />
1387 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1388 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1389 <meta name="twitter:image" content= "https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" >
1390 <meta name="twitter:image:alt" content="Youtube Video Thumbnail">
1391 </@>
1392 <#else>
1393 <video loading="lazy">
1394 <source src="${newsInfo.newsMedia.internalVideo.url}">
1395 Your browser does not support the video tag.
1396 </video>
1397 </#if>
1398
1399 <div class="banner-video-icons">
1400 <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content>
1401 <picture >
1402 <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/mqdefault.jpg">
1403 <img class="banner-video-thumb-iframe" loading="lazy" src="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" alt="YouTube Thumbnail"/>
1404 </picture>
1405 </#if>
1406 <svg class="banner-video-icon-play" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
1407 <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z" fill="white" fill-opacity="0.8"/>
1408 <path d="M22.2563 15.5744L13.2625 10.0744C13.1868 10.0277 13.1 10.0021 13.0111 10.0001C12.9221 9.99816 12.8343 10.02 12.7566 10.0633C12.6789 10.1066 12.6141 10.1698 12.569 10.2465C12.5239 10.3232 12.5001 10.4105 12.5 10.4994V21.4994C12.5001 21.5884 12.5239 21.6757 12.569 21.7524C12.6141 21.8291 12.6789 21.8923 12.7566 21.9356C12.8343 21.9789 12.9221 22.0007 13.0111 21.9988C13.1 21.9968 13.1868 21.9712 13.2625 21.9244L22.2563 16.4244C22.3301 16.3808 22.3913 16.3186 22.4338 16.2441C22.4763 16.1696 22.4987 16.0852 22.4987 15.9994C22.4987 15.9137 22.4763 15.8293 22.4338 15.7548C22.3913 15.6803 22.3301 15.6181 22.2563 15.5744Z" fill="#008542"/>
1409 </svg>
1410 </div>
1411 </#if>
1412 </div>
1413 </div>
1414
1415 <div class="credit-legend breakpoint">
1416
1417 <div class="credit-legend-container col-2-11 md-col-1-8 sm-col-1-4">
1418 <#if newsInfo.newsMedia.legend != "">
1419 <div class="legend paragraph-micro-regular">
1420 <p>${newsInfo.newsMedia.legend}</p>
1421 </div>
1422 </#if>
1423 <#if newsInfo.newsMedia.credits != "">
1424 <p class="credits paragraph-micro-regular">
1425 ${newsInfo.newsMedia.credits}
1426 </p>
1427 </#if>
1428
1429 </div>
1430 </div>
1431 </div>
1432 </#if>
1433 <style>
1434 .ptb-news__read-news .news-featured-media {
1435 padding: var(--space-xl) 0 var(--space-xl) 0;
1436 }
1437
1438 .ptb-news__read-news .news-featured-media .media-col {
1439 position: relative;
1440 }
1441
1442 .ptb-news__read-news .news-featured-media img,
1443 .ptb-news__read-news .news-featured-media video,
1444 .ptb-news__read-news .news-featured-media iframe {
1445 width: 100%;
1446 max-height: 567px;
1447 aspect-ratio: 16/9;
1448 object-fit: cover;
1449 border-radius: var(--border-radius-lg, 16px);
1450 }
1451
1452 .ptb-news__read-news .news-featured-media .banner-video-icons {
1453 width: 100%;
1454 height: 100%;
1455 position: absolute;
1456 top: 50%;
1457 left: 50%;
1458 transform: translate(-50%,-50%);
1459 cursor: pointer;
1460 }
1461
1462 .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-thumb-iframe {
1463 position: absolute;
1464 width: 100%;
1465 height: 100%;
1466 object-fit: cover;
1467 }
1468
1469 .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play {
1470 position: absolute;
1471 top: 50%;
1472 left: 50%;
1473 transform: translate(-50%,-50%);
1474 }
1475
1476 body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(1) {
1477 fill: black;
1478 }
1479
1480 body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(2) {
1481 fill: white;
1482 }
1483
1484 .ptb-news__read-news .news-featured-media *:not(.breakpoint) {
1485 margin: 0;
1486 }
1487 .ptb-news__read-news .news-featured-media * {
1488 padding: 0;
1489 font-family: var(--font-family-base);
1490 line-height: var(--line-height-xl);
1491 }
1492
1493 .ptb-news__read-news .news-featured-media .credits {
1494 text-align: right;
1495 color: var(--collor-neutral-dark-to-bright-200, #525252);
1496 margin-bottom: var(--space-xxxs, 4px);
1497 font-style: var(--font-style-italic, italic);
1498 margin-top: var(--space-xxs, 8px);
1499 margin-bottom: 0;
1500 }
1501
1502 body.high-contrast-active .ptb-news__read-news .news-featured-media .credits {
1503 color: var(--text-secondary-default, #F8F8F8);
1504 }
1505
1506 .ptb-news__read-news .news-featured-media .legend {
1507 margin-top: var(--space-xxs, 8px);
1508 display: flex;
1509 justify-content: space-between;
1510 }
1511
1512 .ptb-news__read-news .news-featured-media .legend,
1513 .ptb-news__read-news .news-featured-media .legend * {
1514 font-style: var(--font-style-italic, italic);
1515 color: var(--collor-neutral-dark-to-bright-200, #525252);
1516 }
1517
1518 .ptb-news__read-news .credit-legend .credit-legend-container {
1519 display: flex;
1520 justify-content: space-between;
1521 flex-wrap: wrap;
1522 gap: 8px;
1523 }
1524
1525 body.high-contrast-active .ptb-news__read-news .news-featured-media .legend,
1526 body.high-contrast-active .ptb-news__read-news .news-featured-media .legend * {
1527 color: var(--text-secondary-default, #F8F8F8);
1528 }
1529
1530 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1531 .ptb-news__read-news .news-featured-media .credits {
1532 text-align: left;
1533 }
1534 }
1535 </style>
1536
1537 <script>
1538 /* Manipulation video*/
1539 let videoIsPlaying = false;
1540
1541 const modalForClick = document.querySelector(".ptb-news__read-news .news-featured-media .banner-video-icons");
1542 const video = document.querySelector(".ptb-news__read-news .news-featured-media .media-col > :first-child");
1543
1544 const playIcon = modalForClick && modalForClick.querySelector(".banner-video-icon-play");
1545 modalForClick && modalForClick.addEventListener("click", ()=>{
1546 if(video.tagName === "VIDEO") {
1547 if(videoIsPlaying) {
1548 video.pause();
1549 playIcon.style.display = "";
1550 videoIsPlaying = false;
1551 }
1552 else {
1553 video.play();
1554 playIcon.style.display = "none";
1555 videoIsPlaying = true;
1556 }
1557 }
1558 else if(video.tagName === "IFRAME") {
1559 const thumbYoutube = modalForClick.querySelector(".banner-video-thumb-iframe");
1560 if(videoIsPlaying) {
1561 video.contentWindow.postMessage('{"event":"command","func":"pauseVideo"}', '*');
1562 playIcon.style.display = "";
1563 videoIsPlaying = false;
1564 }
1565 else {
1566 thumbYoutube && (thumbYoutube.style.display = "none");
1567 video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*');
1568 playIcon.style.display = "none";
1569 videoIsPlaying = true;
1570 }
1571 }
1572 });
1573 </script>
1574<#--/#if -->
1575</#macro>
1576<#-- ################################################################################################################## -->
1577
1578<#-- ############# Site de Crise - Notícia - Conteúdo da notícia ###################################################### -->
1579
1580<#macro renderNewsContent newsInfo>
1581
1582 <#assign targetStr = "<div class='paragraph_separator'><span class='dot'></span><span class='dot'></span><span class='dot'></span><span class='dot'></span></div>">
1583 <#assign content = newsInfo.newsContent?replace("<p></p>", targetStr, 'r')>
1584 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
1585 <#assign content = content?replace("<p></p>", targetStr, 'r')>
1586 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
1587
1588
1589 <div class="news-content breakpoint">
1590 <div class="col-1-12 md-col-1-8 sm-col-1-4">
1591 ${content}
1592 </div>
1593 <div class="audio-template audio-pause audio-unmuted" style="display:none">
1594 <div class="audio-button-play">
1595 <svg class="audio-play-icon" width="100%" height="100%" viewBox="0 0 91 90" fill="#008542" xmlns="http://www.w3.org/2000/svg"><circle cx="45.2903" cy="45" r="44.5" stroke="#008542"></circle> <path d="M58.9759 43.2545C60.3409 44.0179 60.3409 45.9821 58.9759 46.7455L38.7505 58.0578C37.4173 58.8034 35.7742 57.8397 35.7742 56.3122L35.7742 33.6878C35.7742 32.1603 37.4173 31.1966 38.7505 31.9422L58.9759 43.2545Z" fill="white"></path>
1596 </svg>
1597
1598 <svg class="audio-pause-icon" width="100%" height="100%" viewBox="0 0 91 90" fill="#008542" xmlns="http://www.w3.org/2000/svg"><circle cx="45.2903" cy="45" r="44.5" stroke="#008542"></circle> <path d="M42.3736 30.4167H33.6236V59.5834H42.3736V30.4167Z" fill="white"></path> <path d="M48.2069 59.5834H56.9569V30.4167H48.2069V59.5834Z" fill="white"></path>
1599 </svg>
1600 </div>
1601 <div class="audio-sondwave">
1602 <svg class="audio-sondwave-desktop" width="100%" height="100%" viewBox="0 0 590 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1603 <g clip-path="url(#clip0_2625_8152)">
1604 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1605 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1606 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1607 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1608 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1609 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1610 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1611 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1612 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1613 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1614 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1615 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1616 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1617 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1618 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1619 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1620 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1621 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1622 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1623 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1624 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1625 <line x1="107.072" y1="8.75" x2="107.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1626 <line x1="112.234" y1="0.75" x2="112.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1627 <line x1="117.395" y1="7.75" x2="117.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1628 <line x1="122.557" y1="5.75" x2="122.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1629 <line x1="127.717" y1="11.75" x2="127.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1630 <line x1="132.879" y1="9.75" x2="132.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1631 <line x1="138.041" y1="9.75" x2="138.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1632 <line x1="142.17" y1="1.75" x2="142.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1633 <line x1="147.33" y1="12.75" x2="147.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1634 <line x1="151.75" y1="0.75" x2="151.75" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1635 <line x1="156.91" y1="7.75" x2="156.91" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1636 <line x1="162.072" y1="5.75" x2="162.072" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1637 <line x1="167.234" y1="11.75" x2="167.234" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1638 <line x1="172.395" y1="9.75" x2="172.395" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1639 <line x1="177.557" y1="9.75" x2="177.557" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1640 <line x1="181.686" y1="1.75" x2="181.686" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1641 <line x1="186.848" y1="12.75" x2="186.848" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1642 <line x1="192.008" y1="13.75" x2="192.008" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1643 <line x1="197.17" y1="10.75" x2="197.17" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1644 <line x1="202.33" y1="8.75" x2="202.33" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1645 <line x1="207.492" y1="0.75" x2="207.492" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1646 <line x1="212.652" y1="7.75" x2="212.652" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1647 <line x1="217.814" y1="5.75" x2="217.814" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1648 <line x1="222.977" y1="11.75" x2="222.977" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1649 <line x1="228.137" y1="9.75" x2="228.137" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1650 <line x1="233.299" y1="9.75" x2="233.299" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1651 <line x1="237.428" y1="1.75" x2="237.428" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1652 <line x1="242.588" y1="12.75" x2="242.588" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1653 <line x1="247.75" y1="13.75" x2="247.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1654 <line x1="252.91" y1="10.75" x2="252.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1655 <line x1="258.072" y1="8.75" x2="258.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1656 <line x1="263.234" y1="0.75" x2="263.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1657 <line x1="268.395" y1="7.75" x2="268.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1658 <line x1="273.557" y1="5.75" x2="273.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1659 <line x1="278.717" y1="11.75" x2="278.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1660 <line x1="283.879" y1="9.75" x2="283.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1661 <line x1="289.041" y1="9.75" x2="289.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1662 <line x1="293.17" y1="1.75" x2="293.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1663 <line x1="298.33" y1="12.75" x2="298.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1664 <line x1="302.75" y1="10.75" x2="302.75" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1665 <line x1="307.912" y1="8.75" x2="307.912" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1666 <line x1="313.072" y1="0.75" x2="313.072" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1667 <line x1="318.234" y1="7.75" x2="318.234" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1668 <line x1="323.395" y1="5.75" x2="323.395" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1669 <line x1="328.557" y1="11.75" x2="328.557" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1670 <line x1="333.719" y1="9.75" x2="333.719" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1671 <line x1="338.879" y1="9.75" x2="338.879" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1672 <line x1="343.008" y1="1.75" x2="343.008" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1673 <line x1="348.17" y1="12.75" x2="348.17" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1674 <line x1="353.33" y1="13.75" x2="353.33" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1675 <line x1="358.492" y1="10.75" x2="358.492" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1676 <line x1="363.652" y1="8.75" x2="363.652" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1677 <line x1="368.814" y1="0.75" x2="368.814" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1678 <line x1="373.977" y1="7.75" x2="373.977" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1679 <line x1="379.137" y1="5.75" x2="379.137" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1680 <line x1="384.299" y1="11.75" x2="384.299" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1681 <line x1="389.459" y1="9.75" x2="389.459" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1682 <line x1="394.621" y1="9.75" x2="394.621" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1683 <line x1="398.75" y1="1.75" x2="398.75" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1684 <line x1="403.912" y1="12.75" x2="403.912" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1685 <line x1="408.33" y1="10.75" x2="408.33" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1686 <line x1="413.492" y1="8.75" x2="413.492" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1687 <line x1="418.654" y1="0.75" x2="418.654" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1688 <line x1="423.814" y1="7.75" x2="423.814" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1689 <line x1="428.977" y1="5.75" x2="428.977" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1690 <line x1="434.137" y1="11.75" x2="434.137" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1691 <line x1="439.299" y1="9.75" x2="439.299" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1692 <line x1="444.461" y1="9.75" x2="444.461" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1693 <line x1="448.59" y1="1.75" x2="448.59" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1694 <line x1="453.75" y1="12.75" x2="453.75" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1695 <line x1="458.912" y1="13.75" x2="458.912" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1696 <line x1="464.072" y1="10.75" x2="464.072" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1697 <line x1="469.234" y1="8.75" x2="469.234" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1698 <line x1="474.395" y1="0.75" x2="474.395" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1699 <line x1="479.557" y1="7.75" x2="479.557" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1700 <line x1="484.719" y1="5.75" x2="484.719" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1701 <line x1="489.879" y1="11.75" x2="489.879" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1702 <line x1="495.041" y1="9.75" x2="495.041" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1703 <line x1="500.201" y1="9.75" x2="500.201" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1704 <line x1="504.33" y1="1.75" x2="504.33" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1705 <line x1="509.492" y1="12.75" x2="509.492" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1706 <line x1="513.912" y1="10.75" x2="513.912" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1707 <line x1="519.072" y1="8.75" x2="519.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1708 <line x1="524.234" y1="0.75" x2="524.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1709 <line x1="529.395" y1="7.75" x2="529.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1710 <line x1="534.557" y1="5.75" x2="534.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1711 <line x1="539.719" y1="11.75" x2="539.719" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1712 <line x1="544.879" y1="9.75" x2="544.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1713 <line x1="550.041" y1="9.75" x2="550.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1714 <line x1="554.17" y1="1.75" x2="554.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1715 <line x1="559.332" y1="12.75" x2="559.332" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1716 <line x1="564.492" y1="13.75" x2="564.492" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1717 <line x1="569.654" y1="10.75" x2="569.654" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1718 <line x1="574.814" y1="8.75" x2="574.814" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1719 <line x1="579.977" y1="0.75" x2="579.977" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1720 <line x1="585.137" y1="7.75" x2="585.137" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1721 <line x1="590.299" y1="5.75" x2="590.299" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1722 </g>
1723 <defs>
1724 <clipPath id="clip0_2625_8152">
1725 <rect width="590" height="30" fill="white"/>
1726 </clipPath>
1727 </defs>
1728 </svg>
1729 <svg class="audio-sondwave-mobile" width="100%" height="100%" viewBox="0 0 102 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1730 <g clip-path="url(#clip0_2625_8922)">
1731 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1732 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1733 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1734 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1735 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1736 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1737 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1738 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1739 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1740 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1741 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1742 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1743 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1744 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1745 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1746 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1747 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1748 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1749 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1750 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1751 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1752 </g>
1753 <defs>
1754 <clipPath id="clip0_2625_8922">
1755 <rect width="102" height="30" fill="white"/>
1756 </clipPath>
1757 </defs>
1758 </svg>
1759 </div>
1760 <div class="audio-time paragraph-micro-bold"> </div>
1761 <div class="audio-button-mute">
1762 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
1763 <path d="M27.3625 9.6375C28.1993 10.4723 28.8632 11.464 29.3161 12.5558C29.7691 13.6476 30.0023 14.818 30.0023 16C30.0023 17.182 29.7691 18.3524 29.3161 19.4442C28.8632 20.536 28.1993 21.5277 27.3625 22.3625M10 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V12C3 11.7348 3.10536 11.4804 3.29289 11.2929C3.48043 11.1054 3.73478 11 4 11H10M10 21L19 28V4L10 11M10 21V11M23.825 13.175C24.1969 13.5455 24.492 13.9857 24.6933 14.4705C24.8947 14.9553 24.9983 15.4751 24.9983 16C24.9983 16.5249 24.8947 17.0447 24.6933 17.5295C24.492 18.0143 24.1969 18.4545 23.825 18.825" stroke="#525252" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1764 </svg>
1765 </div>
1766 </div>
1767 </div>
1768
1769 <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??>
1770 <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams />
1771 </#if>
1772 <style>
1773
1774 .ptb-news__read-news .news-content p {
1775 margin-bottom: var(--space-md, 24px);
1776 }
1777
1778 .ptb-news__read-news .news-content strong {
1779 font-weight: var(--font-weight-bold);
1780 }
1781
1782 .ptb-news__read-news .news-content em {
1783 font-style: var(--font-style-italic);
1784 }
1785
1786 .ptb-news__read-news .news-content a {
1787 font-family: var(--font-family-base);
1788 font-style: var(--font-style-normal, normal);
1789 font-weight: var(--font-weight-bold, 700);
1790 font-size: var(--font-size-xs, 18px);
1791 line-height: var(--line-height-xl, 160%);
1792
1793 color: #008542;
1794 }
1795
1796 body.high-contrast-active .ptb-news__read-news .news-content a {
1797 color: #E4F7E8;
1798 }
1799
1800 .ptb-news__read-news .news-content ul {
1801 padding-left: 27px;
1802 margin-top: -16px;
1803 }
1804
1805 .ptb-news__read-news .news-content ul li::marker {
1806 content: "■" !important;
1807 color: var(--color-secondary-medium) !important;
1808 font-size: var(--size-xxs);
1809 }
1810
1811 .ptb-news__read-news .news-content ul li {
1812 color: var(--color-text-primary-default);
1813 padding: 8px 0;
1814
1815 /*paragraph-sm-regular*/
1816 font-size: var(--font-size-xxs);
1817 line-height: var(--line-height-xl);
1818 font-weight: var(--font-weight-regular);
1819 font-style: var(--font-style-normal);
1820 text-decoration: var(--text-decoration-none);
1821
1822 margin-left: calc(-1* var(--space-sm));
1823 padding-left: var(--space-sm);
1824 }
1825
1826 .ptb-news__read-news .news-content ul li * {
1827 color: var(--color-text-primary-default);
1828 padding: 8px 0;
1829
1830 /*paragraph-sm-regular*/
1831 font-size: var(--font-size-xxs);
1832 line-height: var(--line-height-xl);
1833 font-weight: var(--font-weight-regular);
1834 font-style: var(--font-style-normal);
1835 text-decoration: var(--text-decoration-none);
1836 }
1837
1838 @media screen and (min-width: 1024px) {
1839 .ptb-news__read-news .news-content > * {
1840 grid-column-start: 3;
1841 grid-column-end: 11;
1842 }
1843
1844 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
1845 .ptb-news__read-news .news-content > *:has(img) {
1846 grid-column-start: 2;
1847 grid-column-end: 12;
1848 }
1849 }
1850
1851 </#if>
1852 }
1853
1854 .ptb-news__read-news .news-content figure {
1855 margin-bottom: var(--space-sm, 16px);
1856 }
1857
1858 .ptb-news__read-news .news-content figure figcaption {
1859 display: flex;
1860 justify-content: space-between;
1861 align-items: flex-start;
1862 align-self: stretch;
1863 margin-top: var(--space-xxs, 8px);
1864 text-align: justify;
1865 }
1866
1867 .ptb-news__read-news .news-content figure figcaption,
1868 .ptb-news__read-news .news-content figure figcaption * {
1869 color: var(--color-neutral-700, #525252);
1870 font-family: var(--font-family-base);
1871 font-size: var(--font-size-xxxs, 14px);
1872 font-style: var(--font-style-italic, italic);
1873 font-weight: var(--font-weight-regular, 400);
1874 line-height: var(--line-height-xl, 160%);
1875 }
1876
1877 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption,
1878 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption * {
1879 color: var(--text-secondary-default, #F8F8F8);
1880 }
1881
1882 .ptb-news__read-news .news-content figure figcaption br {
1883 display: none;
1884 }
1885
1886 .ptb-news__read-news .news-content .embed-responsive {
1887 width: 100% !important;
1888 border-radius: var(--border-radius-md, 16px);
1889 margin-bottom: var(--space-md, 16px);
1890 }
1891
1892 .ptb-news__read-news .news-content img {
1893 width: 100%;
1894 height: auto;
1895 object-fit: cover;
1896 border-radius: var(--border-radius-md, 16px);
1897 }
1898
1899 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Artigo" >
1900 .ptb-news__read-news .news-content img {
1901 aspect-ratio: 16/9;
1902 }
1903 </#if>
1904
1905 .ptb-news__read-news .news-content .paragraph_separator {
1906 display: flex;
1907 width: 100%;
1908 height: fit-content;
1909 justify-content: center;
1910 gap: 6px;
1911 }
1912
1913 .ptb-news__read-news .news-content .paragraph_separator .dot {
1914 height: var(--size-micro, 4px);
1915 width: var(--size-micro, 4px);
1916 background-color: #959595;
1917 border-radius: 100%;
1918 display: inline-block;
1919 }
1920
1921 .ptb-news__read-news .news-content * {
1922 font-family: var(--font-family-base);
1923 font-style: var(--font-style-normal, normal);
1924 font-weight: var(--font-weight-regular, 400);
1925 font-size: var(--font-size-xs, 18px);
1926 line-height: var(--line-height-xl, 160%);
1927 color: var(--color-neutral-800, #373737);
1928 }
1929
1930 body.high-contrast-active .ptb-news__read-news .news-content * {
1931 color: var(--text-primary-default, var(--color-neutral-100));
1932 }
1933
1934 .ptb-news__read-news .news-content h1,
1935 .ptb-news__read-news .news-content h1 *,
1936 .ptb-news__read-news .news-content h2,
1937 .ptb-news__read-news .news-content h2 *,
1938 .ptb-news__read-news .news-content h3,
1939 .ptb-news__read-news .news-content h3 *,
1940 .ptb-news__read-news .news-content h4,
1941 .ptb-news__read-news .news-content h4 *,
1942 .ptb-news__read-news .news-content h5,
1943 .ptb-news__read-news .news-content h5 *,
1944 .ptb-news__read-news .news-content h6,
1945 .ptb-news__read-news .news-content h6 * {
1946 color: var(--color-neutral-800, #373737) !important;
1947 }
1948
1949 body.high-contrast-active .ptb-news__read-news .news-content h1,
1950 body.high-contrast-active .ptb-news__read-news .news-content h1 *,
1951 body.high-contrast-active .ptb-news__read-news .news-content h2,
1952 body.high-contrast-active .ptb-news__read-news .news-content h2 *,
1953 body.high-contrast-active .ptb-news__read-news .news-content h3,
1954 body.high-contrast-active .ptb-news__read-news .news-content h3 *,
1955 body.high-contrast-active .ptb-news__read-news .news-content h4,
1956 body.high-contrast-active .ptb-news__read-news .news-content h4 *,
1957 body.high-contrast-active .ptb-news__read-news .news-content h5,
1958 body.high-contrast-active .ptb-news__read-news .news-content h5 *,
1959 body.high-contrast-active .ptb-news__read-news .news-content h6,
1960 body.high-contrast-active .ptb-news__read-news .news-content h6 * {
1961 color: var(--text-primary-default, var(--color-neutral-100)) !important;
1962 }
1963
1964 .ptb-news__read-news .news-content h1:last-child,
1965 .ptb-news__read-news .news-content h2:last-child,
1966 .ptb-news__read-news .news-content h3:last-child,
1967 .ptb-news__read-news .news-content h4:last-child,
1968 .ptb-news__read-news .news-content h5:last-child,
1969 .ptb-news__read-news .news-content h5:last-child,
1970 .ptb-news__read-news .news-content h6:last-child,
1971 .ptb-news__read-news .news-content p:last-child {
1972 padding-bottom: 0 !important;
1973 }
1974
1975 .ptb-news__read-news .news-content h1,
1976 .ptb-news__read-news .news-content h1 * {
1977 font-size: var(--font-size-xxl) !important;
1978 line-height: var(--line-height-sm) !important;
1979 font-weight: var(--font-weight-bold) !important;
1980 font-style: var(--font-style-normal) !important;
1981 text-decoration: var(--text-decoration-none) !important;
1982 }
1983
1984 .ptb-news__read-news .news-content h2,
1985 .ptb-news__read-news .news-content h2 * {
1986
1987 font-size: var(--font-size-xl) !important;
1988 line-height: var(--line-height-sm) !important;
1989 font-weight: var(--font-weight-bold) !important;
1990 font-style: var(--font-style-normal) !important;
1991 text-decoration: var(--text-decoration-none) !important;
1992
1993 }
1994
1995 .ptb-news__read-news .news-content h2 {
1996 margin-top: 48px !important;
1997 margin-bottom: var(--space-xl, 40px) !important;
1998
1999 }
2000
2001 .ptb-news__read-news .news-content h3,
2002 .ptb-news__read-news .news-content h3 * {
2003 font-size: var(--font-size-lg) !important;
2004 line-height: var(--line-height-sm) !important;
2005 font-weight: var(--font-weight-bold) !important;
2006 font-style: var(--font-style-normal) !important;
2007 text-decoration: var(--text-decoration-none) !important;
2008 }
2009
2010 .ptb-news__read-news .news-content h3 {
2011 margin-bottom: var(--space-sm, 16px) !important;
2012 margin-top: 48px !important;
2013 }
2014
2015 .ptb-news__read-news .news-content h4,
2016 .ptb-news__read-news .news-content h4 * {
2017 font-size: var(--font-size-md) !important;
2018 line-height: var(--line-height-md) !important;
2019 font-weight: var(--font-weight-bold) !important;
2020 font-style: var(--font-style-normal) !important;
2021 text-decoration: var(--text-decoration-none) !important;
2022 }
2023
2024 .ptb-news__read-news .news-content h4 {
2025 margin-top: 48px !important;
2026 margin-bottom: var(--space-sm, 16px) !important;
2027 }
2028
2029 .ptb-news__read-news .news-content h5,
2030 .ptb-news__read-news .news-content h5 * {
2031 font-size: var(--font-size-sm) !important;
2032 line-height: var(--line-height-md) !important;
2033 font-weight: var(--font-weight-bold) !important;
2034 font-style: var(--font-style-normal) !important;
2035 text-decoration: var(--text-decoration-none) !important;
2036 }
2037
2038 .ptb-news__read-news .news-content h5 {
2039 margin-top: 48px !important;
2040 margin-bottom: var(--space-sm, 16px) !important;
2041 }
2042
2043 .ptb-news__read-news .news-content table {
2044 border-collapse: collapse;
2045 border: none;
2046 width: 100% !important;
2047 margin: var(--space-md, 24px) 0;
2048 }
2049
2050 .ptb-news__read-news .news-content table * {
2051 font-size: var(--font-size-xxs, 16px);
2052 font-style: var(--font-style-normal, normal);
2053 font-weight: var(--font-weight-regular, 400);
2054 line-height: var(--line-height-xl, 160%);
2055 color: var(--color-neutral-800, #373737);
2056 border: 0;
2057 }
2058
2059 body.high-contrast-active .ptb-news__read-news .news-content table * {
2060 color: var(--text-primary-default, var(--color-neutral-100));
2061 }
2062
2063 .ptb-news__read-news .news-content table tbody > :first-child,
2064 .ptb-news__read-news .news-content table tbody > :first-child * {
2065 font-weight: var(--font-weight-bold, 700);
2066 flex: 1 0 0;
2067 background: var(--background-Surface-level-02, #F8F8F8);
2068 }
2069
2070 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child,
2071 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * {
2072 background: #373737;
2073 }
2074
2075 .ptb-news__read-news .news-content table tbody {
2076 display: flex;
2077 flex-direction: column;
2078 }
2079
2080 .ptb-news__read-news .news-content table tbody * {
2081 display: flex;
2082 height: 100%;
2083 align-items: center;
2084 flex: 1 0 0;
2085 }
2086
2087 .ptb-news__read-news .news-content table tbody tr * {
2088 padding: 23px var(--space-lg, 32px);
2089 }
2090
2091
2092 .ptb-news__read-news .news-content table tbody tr {
2093 border-radius: var(--border-radius-md);
2094 border: var(--border-width-hairline, 1px) solid #EEEEEE;
2095 }
2096
2097 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr {
2098 border: var(--border-width-hairline, 1px) solid #525252;
2099 }
2100
2101 .ptb-news__read-news .news-content table tbody tr:not(:last-child) {
2102 border-bottom-left-radius: 0;
2103 border-bottom-right-radius: 0;
2104 }
2105
2106 .ptb-news__read-news .news-content table tbody tr:not(:first-child) {
2107 border-top-left-radius: 0;
2108 border-top-right-radius: 0;
2109 border-top: none;
2110 }
2111
2112 .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2113 border-right: var(--border-width-hairline, 1px) solid #EEEEEE;
2114 }
2115
2116 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2117 border-right: var(--border-width-hairline, 1px) solid #525252;
2118 }
2119
2120 .ptb-news__read-news .news-content table tbody tr:first-child td {
2121 border-top: var(--border-width-hairline, 1px) solid #EEEEEE;
2122 border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE;
2123 }
2124
2125 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td {
2126 border-top: var(--border-width-hairline, 1px) solid #525252;
2127 border-bottom: var(--border-width-hairline, 1px) solid #525252;
2128 }
2129
2130 .ptb-news__read-news .news-content table tbody tr td:first-child {
2131 padding-left: 0;
2132 }
2133
2134 .ptb-news__read-news .news-content table tbody tr td:last-child{
2135 padding-right: 0;
2136 }
2137
2138 .ptb-news__read-news .news-content audio {
2139 display: none;
2140 }
2141
2142 .ptb-news__read-news .news-content .audio-template {
2143 display: flex;
2144 padding: var(--space-sm, 16px);
2145 align-items: center;
2146 gap: var(--space-md, 24px);
2147 align-self: stretch;
2148 border-radius: var(--border-radius-lg, 16px);
2149 border: var(--border-width-hairline, 1px) solid var(--border-color-mid);
2150 background: var(--background-card-default, #FFF);
2151 max-height: var(--size-giant, 72px);
2152 margin: 48px 0;
2153 }
2154
2155 body.high-contrast-active .ptb-news__read-news .news-content .audio-template {
2156 background: var(--background-card-default, #010101);
2157 border: var(--border-width-hairline, 1px) solid #525252;
2158 }
2159
2160 .ptb-news__read-news .news-content .audio-template .audio-button-play {
2161 display: flex;
2162 width: var(--size-xl, 40px);
2163 height: var(--size-xl, 40px);
2164 justify-content: center;
2165 align-items: center;
2166 flex-grow: 0;
2167 flex-shrink: 0;
2168 cursor: pointer;
2169 }
2170
2171 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon,
2172 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon {
2173 fill: #FFFFFF;
2174 }
2175
2176 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path,
2177 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path {
2178 fill: #010101;
2179 }
2180
2181 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon {
2182 display: block;
2183 }
2184
2185 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon {
2186 display: none;
2187 }
2188
2189 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon {
2190 display: none;
2191 }
2192
2193 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon {
2194 display: block;
2195 }
2196
2197 .ptb-news__read-news .news-content .audio-template .audio-sondwave {
2198 display: flex;
2199 flex-direction: column;
2200 align-items: flex-start;
2201 gap: var(--space-xxs, 8px);
2202 flex: 1 0 0;
2203 height: 100%;
2204 flex-grow: 1;
2205 flex-shrink: 1;
2206 }
2207
2208 .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2209 stroke: #008542;
2210 }
2211
2212 .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2213 stroke: #90EE90;
2214 }
2215
2216 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2217 stroke: #E4F7E8;
2218 }
2219
2220 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2221 stroke: #666666;
2222 }
2223
2224 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2225 display: none;
2226 }
2227
2228 .ptb-news__read-news .news-content .audio-template .audio-time {
2229 display: flex;
2230 flex-direction: column;
2231 align-items: flex-start;
2232 gap: var(--space-xxs, 8px);
2233 flex: 1 0 0;
2234 color: var(--text-primary-accent, #008542);
2235 text-align: center;
2236 font-family: var(--font-family-base);
2237 line-height: 124% !important;
2238 flex-grow: 0;
2239 flex-shrink: 0;
2240 }
2241
2242 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {
2243 color: var(--text-primary-accent, #E4F7E8);
2244 }
2245
2246 .ptb-news__read-news .news-content .audio-template .audio-button-mute {
2247 width: var(--size-lg, 32px);
2248 height: var(--size-lg, 32px);
2249 flex-grow: 0;
2250 flex-shrink: 0;
2251 cursor: pointer;
2252 }
2253
2254 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path {
2255 stroke: white;
2256 fill: none;
2257 }
2258
2259 .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute {
2260 opacity: 0.6;
2261 }
2262
2263
2264 @media screen and (max-width: 1023px) and (min-width: ${MAX_MOBILE_WIDTH}px) {
2265 .ptb-news__read-news .news-content > * {
2266 grid-column-start: 1;
2267 grid-column-end: 9;
2268 }
2269 }
2270
2271
2272 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
2273
2274 .ptb-news__read-news .news-content * {
2275 font-size: var(--font-size-xxs, 16px);
2276 }
2277
2278
2279 .ptb-news__read-news .news-content > * {
2280 grid-column-start: 1;
2281 grid-column-end: 5;
2282 }
2283
2284
2285 .ptb-news__read-news .news-content h1,
2286 .ptb-news__read-news .news-content h1 * {
2287 font-size: var(--font-size-xl) !important;
2288 line-height: var(--line-height-sm) !important;
2289 font-weight: var(--font-weight-bold) !important;
2290 font-style: var(--font-style-normal) !important;
2291 text-decoration: var(--text-decoration-none) !important;
2292
2293 }
2294
2295 .ptb-news__read-news .news-content h2,
2296 .ptb-news__read-news .news-content h2 * {
2297 font-size: var(--font-size-lg) !important;
2298 line-height: var(--line-height-sm) !important;
2299 font-weight: var(--font-weight-bold) !important;
2300 font-style: var(--font-style-normal) !important;
2301 text-decoration: var(--text-decoration-none) !important;
2302 }
2303
2304 .ptb-news__read-news .news-content h2 {
2305 margin-bottom: var(--space-md, 24px) !important;
2306 }
2307
2308 .ptb-news__read-news .news-content h3,
2309 .ptb-news__read-news .news-content h3 * {
2310 font-size: var(--font-size-md) !important;
2311 line-height: var(--line-height-sm) !important;
2312 font-weight: var(--font-weight-bold) !important;
2313 font-style: var(--font-style-normal) !important;
2314 text-decoration: var(--text-decoration-none) !important;
2315 }
2316
2317 .ptb-news__read-news .news-content h3 {
2318 margin-top: var(--space-xxs, 8px) !important;
2319 }
2320
2321 .ptb-news__read-news .news-content h4,
2322 .ptb-news__read-news .news-content h4 * {
2323 font-size: var(--font-size-sm) !important;
2324 line-height: var(--line-height-md) !important;
2325 font-weight: var(--font-weight-bold) !important;
2326 font-style: var(--font-style-normal) !important;
2327 text-decoration: var(--text-decoration-none) !important;
2328 }
2329
2330 .ptb-news__read-news .news-content h5,
2331 .ptb-news__read-news .news-content h5 * {
2332 font-size: var(--font-size-xs) !important;
2333 line-height: var(--line-height-md) !important;
2334 font-weight: var(--font-weight-bold) !important;
2335 font-style: var(--font-style-normal) !important;
2336 text-decoration: var(--text-decoration-none) !important;
2337 }
2338
2339 .ptb-news__read-news .news-content figure figcaption {
2340 flex-direction: column;
2341 gap: var(--space-xxs, 8px);
2342 }
2343
2344 .ptb-news__read-news .news-content figure figcaption,
2345 .ptb-news__read-news .news-content figure figcaption * {
2346 font-size: var(--font-size-micro, 12px);
2347 }
2348
2349 .ptb-news__read-news .news-content table {
2350 margin-top: var(--space-xxs, 8px);
2351 margin-bottom: var(--space-lg, 32px);
2352 }
2353
2354 .ptb-news__read-news .news-content table * {
2355 font-size: var(--font-size-micro, 12px);
2356 line-height: 19.2%;
2357 }
2358
2359 .ptb-news__read-news .news-content table tbody * {
2360 height: 43px;
2361 padding: var(--space-xs, 12px);
2362 }
2363
2364 .ptb-news__read-news .news-content .audio-template {
2365 margin-top: var(--space-xxs, 8px);
2366 margin-bottom: var(--space-lg, 32px);
2367 }
2368 }
2369
2370 @media screen and (max-width: 500px) {
2371 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop {
2372 display: none;
2373 }
2374
2375 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2376 display: block;
2377 }
2378 }
2379 </style>
2380
2381 <style>
2382.ws-carousel p {
2383 margin: var(--space-none, 0) !important;
2384}
2385
2386.ws-carousel {
2387 display: flex;
2388 flex-direction: column;
2389 gap: var(--space-lg, 32px);
2390 margin: var(--space-big, 72px) auto;
2391}
2392
2393.ws-carousel .ws-carousel-header {
2394 display: flex;
2395 justify-content: space-between;
2396}
2397
2398.ws-carousel .ws-carousel-header .h2 {
2399 color: var(--color-neutral-800, #373737) !important;
2400 font-family: var(--font-family-base), "Petrobras Sans" !important;
2401 line-height: 100% !important;
2402 margin: var(--space-none, 0) ! important;
2403}
2404
2405.ws-carousel .ws-carousel-header .nav-buttons {
2406 display: flex;
2407 justify-content: space-between;
2408 gap: var(--space-xxs, 8px);
2409}
2410
2411.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.left-arrow {
2412 transform: scaleX(-1);
2413}
2414
2415.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow {
2416 cursor: pointer;
2417}
2418
2419.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive {
2420 cursor: not-allowed;
2421}
2422
2423
2424.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow path {
2425 transition: stroke 0.3s ease;
2426}
2427
2428.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive path {
2429 stroke: #bababa;
2430}
2431
2432.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.active path {
2433 stroke: #008542;
2434}
2435
2436
2437.ws-carousel .ws-carousel-body {
2438 overflow-x: scroll;
2439 -ms-overflow-style: none;
2440 -scrollbar-width: none;
2441}
2442
2443.ws-carousel .ws-carousel-body::-webkit-scrollbar {
2444 display: none;
2445}
2446
2447.ws-carousel .ws-carousel-body .ws-container {
2448 display: flex;
2449 gap: var(--space-lg, 32px);
2450}
2451
2452.ws-carousel .ws-carousel-body .ws-container .ws-item {
2453 min-width: 300px;
2454 max-width: 300px;
2455 min-height: 400px;
2456 max-height: 400px;
2457 position: relative;
2458 overflow: hidden;
2459 border-radius: var(--border-radius-lg);
2460 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
2461}
2462
2463.ws-carousel .ws-carousel-body .ws-container .ws-item:hover {
2464 cursor: pointer;
2465}
2466
2467.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-image {
2468 position: absolute;
2469 top: 50%;
2470 left: 50%;
2471 transform: translate(-50%, -50%);
2472 height: 100%;
2473}
2474
2475.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-overlay {
2476 position: absolute;
2477 background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%);
2478 width: 100%;
2479 height: 100%;
2480}
2481
2482.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label {
2483 position: absolute;
2484 margin: var(--space-md, 24px) 0 0 var(--space-md, 24px);
2485 border-radius: var(--border-radius-pill, 100%);
2486 background: linear-gradient(0deg, var(--Background-Surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 0%, var(--Background-Surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 100%), var(--Default-sup-green-water, #006B65);
2487 box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10);
2488 padding: var(--space-micro, 2px) var(--space-xs, 12px);
2489
2490 color: var(--Default-sup-green-water, #006B65);
2491 font-family: var(--font-family-base), "Petrobras Sans";
2492 font-size: var(--font-size-xxxs, 12px);
2493 font-style: normal;
2494 font-weight: var(--font-weight-regular, 400);
2495 line-height: var(--line-height-sm, 120%);
2496 color: #006B65;
2497}
2498
2499.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content {
2500 position: relative;
2501 z-index: 1;
2502 height: 100%;
2503
2504 display: flex;
2505 padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px);
2506 flex-direction: column;
2507 justify-content: flex-end;
2508 align-items: flex-start;
2509 gap: var(--space-md, 24px);
2510}
2511
2512.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content .h5 {
2513 overflow: hidden;
2514 color: #FFF !important;
2515 text-overflow: ellipsis;
2516 margin: 0 !important;
2517 font-family: var(--font-family-base), "Petrobras Sans" !important;
2518}
2519
2520@media (max-width: 768px) {
2521
2522 .ws-carousel .ws-carousel-header .nav-buttons {
2523 gap: var(--space-micro, 12px);
2524 }
2525
2526 .ws-carousel .ws-carousel-header .nav-buttons .nav-arrow {
2527 width: 44px;
2528 height: 44px;
2529 }
2530
2531 .ws-carousel .ws-carousel-header {
2532 flex-direction: column;
2533 align-items: flex-start;
2534 gap: var(--space-lg, 32px);
2535 }
2536
2537 .ws-carousel .ws-carousel-header .h2 {
2538 font-size: var(--font-size-lg, 24px) !important;
2539 }
2540
2541 .ws-carousel .ws-carousel-body .ws-container {
2542 gap: var(--space-lg, 32px);
2543 }
2544
2545 .ws-carousel .ws-carousel-body .ws-container .ws-item {
2546 min-width: 225px;
2547 max-width: 225px;
2548 background: linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, rgba(0, 0, 0, 0.80) 100%), url(<path-to-image>) lightgray 50% / cover no-repeat;
2549 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
2550 }
2551}
2552 </style>
2553
2554 <script>
2555/* CONSTANTS */
2556const PUBLISHER_LOGO_INDEX = 0;
2557const POSTER_PORTRAIT_INDEX = 1;
2558const PUBLISHER_INDEX = 2;
2559const COVER_INDEX = 3;
2560const STORIES_INDEX = 4;
2561
2562const COVER_HAS_COVER_INDEX = 0;
2563const COVER_TITLE_INDEX = 1;
2564const COVER_TEXT_INDEX = 2;
2565const COVER_IMAGE_INDEX = 3;
2566
2567const STORY_TITLE_INDEX = 0;
2568const STORY_TEXT_INDEX = 1;
2569const STORY_COLOR_THEME_INDEX = 2;
2570const STORY_IMAGE_INDEX = 3;
2571
2572const DETAILS_SVG = `<svg width="91" height="21" viewBox="0 0 91 21" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12.5 3.625H7.5C7.15482 3.625 6.875 3.90482 6.875 4.25V16.75C6.875 17.0952 7.15482 17.375 7.5 17.375H12.5C12.8452 17.375 13.125 17.0952 13.125 16.75V4.25C13.125 3.90482 12.8452 3.625 12.5 3.625Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/> <path d="M17.5 14.25V6.75C17.5 6.40482 17.2202 6.125 16.875 6.125H13.75C13.4048 6.125 13.125 6.40482 13.125 6.75V14.25C13.125 14.5952 13.4048 14.875 13.75 14.875H16.875C17.2202 14.875 17.5 14.5952 17.5 14.25Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/> <path d="M6.875 14.25L6.875 6.75C6.875 6.40482 6.59518 6.125 6.25 6.125H3.125C2.77982 6.125 2.5 6.40482 2.5 6.75L2.5 14.25C2.5 14.5952 2.77982 14.875 3.125 14.875H6.25C6.59518 14.875 6.875 14.5952 6.875 14.25Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.376 15.5L28.36 6.74H29.56L31.06 14.132L32.704 7.196H33.784L35.428 14.132L36.928 6.74H38.08L36.064 15.5H34.828L33.208 8.672L31.588 15.5H30.376ZM39.6543 12.836C39.6783 13.252 39.7343 13.588 39.8223 13.844C39.9183 14.092 40.0503 14.284 40.2183 14.42C40.3863 14.548 40.5863 14.636 40.8183 14.684C41.0583 14.724 41.3303 14.744 41.6343 14.744C41.9143 14.744 42.1743 14.732 42.4143 14.708C42.6543 14.684 42.8863 14.656 43.1103 14.624V15.344C42.8703 15.44 42.5943 15.512 42.2823 15.56C41.9783 15.616 41.6623 15.644 41.3343 15.644C40.3343 15.644 39.6183 15.388 39.1863 14.876C38.7623 14.356 38.5503 13.584 38.5503 12.56C38.5503 11.456 38.7663 10.652 39.1983 10.148C39.6383 9.636 40.2703 9.38 41.0943 9.38C41.5183 9.38 41.8783 9.448 42.1743 9.584C42.4703 9.712 42.7103 9.908 42.8943 10.172C43.0783 10.428 43.2103 10.744 43.2903 11.12C43.3703 11.496 43.4103 11.928 43.4103 12.416V12.836H39.6543ZM42.3543 12.056C42.3543 11.424 42.2583 10.968 42.0663 10.688C41.8823 10.4 41.5543 10.256 41.0823 10.256C40.5703 10.256 40.2103 10.412 40.0023 10.724C39.7943 11.028 39.6743 11.472 39.6423 12.056H42.3543ZM44.9427 15.5V6.74H46.0467V10.1C46.2147 9.916 46.4347 9.752 46.7067 9.608C46.9867 9.456 47.3667 9.38 47.8467 9.38C48.6467 9.38 49.2387 9.652 49.6227 10.196C50.0067 10.74 50.1987 11.496 50.1987 12.464C50.1987 13.512 49.9827 14.304 49.5507 14.84C49.1267 15.376 48.5067 15.644 47.6907 15.644C47.2347 15.644 46.8707 15.572 46.5987 15.428C46.3347 15.284 46.1107 15.096 45.9267 14.864L45.8427 15.5H44.9427ZM46.0227 12.944C46.0227 13.28 46.0627 13.56 46.1427 13.784C46.2227 14.008 46.3307 14.192 46.4667 14.336C46.6107 14.472 46.7747 14.572 46.9587 14.636C47.1507 14.692 47.3547 14.72 47.5707 14.72C48.0587 14.72 48.4267 14.556 48.6747 14.228C48.9307 13.9 49.0587 13.332 49.0587 12.524C49.0587 12.092 49.0227 11.736 48.9507 11.456C48.8867 11.168 48.7907 10.94 48.6627 10.772C48.5347 10.604 48.3747 10.484 48.1827 10.412C47.9987 10.34 47.7907 10.304 47.5587 10.304C47.3347 10.304 47.1267 10.332 46.9347 10.388C46.7507 10.444 46.5907 10.54 46.4547 10.676C46.3187 10.804 46.2107 10.98 46.1307 11.204C46.0587 11.42 46.0227 11.692 46.0227 12.02V12.944ZM54.1271 14.36C54.4711 14.424 54.8431 14.48 55.2431 14.528C55.6431 14.576 56.0231 14.6 56.3831 14.6C56.6791 14.6 56.9431 14.584 57.1751 14.552C57.4071 14.512 57.6031 14.436 57.7631 14.324C57.9231 14.212 58.0431 14.056 58.1231 13.856C58.2111 13.648 58.2551 13.38 58.2551 13.052C58.2551 12.796 58.2271 12.588 58.1711 12.428C58.1151 12.26 58.0191 12.124 57.8831 12.02C57.7551 11.916 57.5831 11.832 57.3671 11.768C57.1511 11.696 56.8871 11.624 56.5751 11.552L56.2151 11.468C55.8951 11.396 55.5991 11.308 55.3271 11.204C55.0631 11.092 54.8351 10.948 54.6431 10.772C54.4511 10.588 54.2991 10.364 54.1871 10.1C54.0831 9.836 54.0311 9.508 54.0311 9.116C54.0311 8.292 54.2711 7.668 54.7511 7.244C55.2391 6.82 55.9551 6.608 56.8991 6.608C57.3391 6.608 57.7471 6.648 58.1231 6.728C58.5071 6.808 58.8431 6.904 59.1311 7.016V7.82C58.8351 7.78 58.4951 7.736 58.1111 7.688C57.7351 7.64 57.3671 7.616 57.0071 7.616C56.7351 7.616 56.4871 7.632 56.2631 7.664C56.0391 7.696 55.8431 7.764 55.6751 7.868C55.5151 7.964 55.3911 8.104 55.3031 8.288C55.2151 8.472 55.1711 8.712 55.1711 9.008C55.1711 9.264 55.2031 9.476 55.2671 9.644C55.3391 9.804 55.4431 9.936 55.5791 10.04C55.7231 10.144 55.8951 10.232 56.0951 10.304C56.3031 10.368 56.5471 10.428 56.8271 10.484L57.2111 10.568C57.5791 10.648 57.8991 10.748 58.1711 10.868C58.4511 10.98 58.6831 11.128 58.8671 11.312C59.0511 11.496 59.1871 11.724 59.2751 11.996C59.3711 12.268 59.4191 12.6 59.4191 12.992C59.4191 13.464 59.3511 13.868 59.2151 14.204C59.0871 14.54 58.8991 14.816 58.6511 15.032C58.4031 15.24 58.0991 15.392 57.7391 15.488C57.3791 15.584 56.9711 15.632 56.5151 15.632C56.0031 15.632 55.5471 15.584 55.1471 15.488C54.7471 15.384 54.4071 15.276 54.1271 15.164V14.36ZM62.3096 13.52C62.3096 14.016 62.4056 14.348 62.5976 14.516C62.7896 14.676 63.0776 14.756 63.4616 14.756C63.7496 14.756 64.0096 14.744 64.2416 14.72V15.44C64.0736 15.488 63.8896 15.528 63.6896 15.56C63.4896 15.6 63.2776 15.62 63.0536 15.62C62.4056 15.62 61.9336 15.46 61.6376 15.14C61.3496 14.82 61.2056 14.296 61.2056 13.568V10.376H60.1376V9.74L61.2056 9.536V7.7H62.3096V9.524H64.1336V10.376H62.3096V13.52ZM66.6991 14.24C66.8351 14.416 66.9951 14.54 67.1791 14.612C67.3711 14.684 67.5951 14.72 67.8511 14.72C68.0991 14.72 68.3151 14.684 68.4991 14.612C68.6911 14.54 68.8471 14.42 68.9671 14.252C69.0951 14.076 69.1911 13.848 69.2551 13.568C69.3191 13.288 69.3511 12.936 69.3511 12.512C69.3511 12.096 69.3191 11.748 69.2551 11.468C69.1911 11.18 69.0911 10.952 68.9551 10.784C68.8271 10.608 68.6671 10.484 68.4751 10.412C68.2831 10.34 68.0631 10.304 67.8151 10.304C67.5671 10.304 67.3471 10.34 67.1551 10.412C66.9711 10.484 66.8151 10.604 66.6871 10.772C66.5671 10.94 66.4751 11.168 66.4111 11.456C66.3471 11.736 66.3151 12.084 66.3151 12.5C66.3151 12.924 66.3471 13.276 66.4111 13.556C66.4751 13.836 66.5711 14.064 66.6991 14.24ZM67.8271 15.644C66.9311 15.644 66.2671 15.384 65.8351 14.864C65.4031 14.344 65.1871 13.564 65.1871 12.524C65.1871 11.476 65.4031 10.692 65.8351 10.172C66.2751 9.644 66.9471 9.38 67.8511 9.38C68.7471 9.38 69.4111 9.64 69.8431 10.16C70.2751 10.68 70.4911 11.46 70.4911 12.5C70.4911 13.548 70.2711 14.336 69.8311 14.864C69.3991 15.384 68.7311 15.644 67.8271 15.644ZM72.0247 15.5V9.524H72.9127L73.0327 10.28C73.4407 9.712 74.0447 9.428 74.8447 9.428C74.9727 9.428 75.1047 9.44 75.2407 9.464V10.376C75.1767 10.368 75.1167 10.364 75.0607 10.364C75.0047 10.364 74.9487 10.364 74.8927 10.364C74.3007 10.364 73.8567 10.504 73.5607 10.784C73.2727 11.064 73.1287 11.516 73.1287 12.14V15.5H72.0247ZM76.431 15.5V9.524H77.535V15.5H76.431ZM76.995 8.3C76.763 8.3 76.591 8.24 76.479 8.12C76.367 8 76.311 7.832 76.311 7.616C76.311 7.144 76.539 6.908 76.995 6.908C77.227 6.908 77.395 6.968 77.499 7.088C77.611 7.208 77.667 7.376 77.667 7.592C77.667 8.064 77.443 8.3 76.995 8.3ZM80.1778 12.836C80.2018 13.252 80.2578 13.588 80.3458 13.844C80.4418 14.092 80.5738 14.284 80.7418 14.42C80.9098 14.548 81.1098 14.636 81.3418 14.684C81.5818 14.724 81.8538 14.744 82.1578 14.744C82.4378 14.744 82.6978 14.732 82.9378 14.708C83.1778 14.684 83.4098 14.656 83.6338 14.624V15.344C83.3938 15.44 83.1178 15.512 82.8058 15.56C82.5018 15.616 82.1858 15.644 81.8578 15.644C80.8578 15.644 80.1418 15.388 79.7098 14.876C79.2858 14.356 79.0738 13.584 79.0738 12.56C79.0738 11.456 79.2898 10.652 79.7218 10.148C80.1618 9.636 80.7938 9.38 81.6178 9.38C82.0418 9.38 82.4018 9.448 82.6978 9.584C82.9938 9.712 83.2338 9.908 83.4178 10.172C83.6018 10.428 83.7338 10.744 83.8138 11.12C83.8938 11.496 83.9338 11.928 83.9338 12.416V12.836H80.1778ZM82.8778 12.056C82.8778 11.424 82.7818 10.968 82.5898 10.688C82.4058 10.4 82.0778 10.256 81.6058 10.256C81.0938 10.256 80.7338 10.412 80.5258 10.724C80.3178 11.028 80.1978 11.472 80.1658 12.056H82.8778ZM85.2741 14.612C85.5141 14.644 85.7901 14.672 86.1021 14.696C86.4221 14.72 86.7341 14.732 87.0381 14.732C87.2781 14.732 87.4861 14.724 87.6621 14.708C87.8461 14.684 87.9941 14.64 88.1061 14.576C88.2181 14.504 88.3021 14.408 88.3581 14.288C88.4141 14.168 88.4421 14.012 88.4421 13.82C88.4421 13.66 88.4221 13.532 88.3821 13.436C88.3421 13.332 88.2741 13.248 88.1781 13.184C88.0901 13.12 87.9661 13.072 87.8061 13.04C87.6541 13 87.4621 12.964 87.2301 12.932L86.8341 12.872C86.6181 12.84 86.4101 12.792 86.2101 12.728C86.0101 12.656 85.8341 12.56 85.6821 12.44C85.5381 12.312 85.4181 12.148 85.3221 11.948C85.2341 11.74 85.1901 11.48 85.1901 11.168C85.1901 10.848 85.2421 10.576 85.3461 10.352C85.4501 10.128 85.5981 9.944 85.7901 9.8C85.9821 9.656 86.2101 9.552 86.4741 9.488C86.7461 9.424 87.0461 9.392 87.3741 9.392C87.7341 9.392 88.0621 9.42 88.3581 9.476C88.6621 9.524 88.9501 9.592 89.2221 9.68V10.388C88.9901 10.364 88.7301 10.34 88.4421 10.316C88.1621 10.292 87.8701 10.28 87.5661 10.28C87.3581 10.28 87.1701 10.288 87.0021 10.304C86.8341 10.32 86.6901 10.36 86.5701 10.424C86.4501 10.48 86.3541 10.564 86.2821 10.676C86.2181 10.78 86.1861 10.928 86.1861 11.12C86.1861 11.272 86.2061 11.396 86.2461 11.492C86.2941 11.58 86.3621 11.656 86.4501 11.72C86.5461 11.776 86.6661 11.82 86.8101 11.852C86.9541 11.884 87.1301 11.916 87.3381 11.948L87.6621 11.996C87.9421 12.036 88.1941 12.092 88.4181 12.164C88.6421 12.236 88.8301 12.34 88.9821 12.476C89.1421 12.604 89.2621 12.772 89.3421 12.98C89.4301 13.188 89.4741 13.452 89.4741 13.772C89.4741 14.436 89.2861 14.912 88.9101 15.2C88.5341 15.488 88.0141 15.632 87.3501 15.632C87.1501 15.632 86.9501 15.62 86.7501 15.596C86.5501 15.58 86.3581 15.556 86.1741 15.524C85.9901 15.492 85.8181 15.46 85.6581 15.428C85.5061 15.388 85.3781 15.352 85.2741 15.32V14.612Z" fill="white"/> </svg`;
2573
2574/* Função para criar formatar object*/
2575const createStoryObject = (objectContent) => {
2576 const hasCover = Boolean(
2577 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2578 COVER_HAS_COVER_INDEX
2579 ].contentFieldValue.data
2580 );
2581 return {
2582 category: objectContent.taxonomyCategoryBriefs[0].taxonomyCategoryName,
2583 publisherLogoSrc:
2584 objectContent.contentFields[PUBLISHER_LOGO_INDEX].contentFieldValue.data,
2585 posterPortraitSrc:
2586 objectContent.contentFields[POSTER_PORTRAIT_INDEX].contentFieldValue.data,
2587 publisher:
2588 objectContent.contentFields[PUBLISHER_INDEX].contentFieldValue.data,
2589 cover: {
2590 image: Boolean(
2591 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2592 COVER_HAS_COVER_INDEX
2593 ].contentFieldValue.data
2594 ),
2595 title:
2596 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2597 COVER_TITLE_INDEX
2598 ].contentFieldValue.data,
2599 description:
2600 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2601 COVER_TEXT_INDEX
2602 ].contentFieldValue.data,
2603 imageUrl:
2604 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2605 COVER_IMAGE_INDEX
2606 ].contentFieldValue.image?.contentUrl || null,
2607 imageAlt:
2608 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2609 COVER_IMAGE_INDEX
2610 ].contentFieldValue.image?.description || null,
2611 },
2612 stories: objectContent.contentFields
2613 .slice(STORIES_INDEX)
2614 .map((contentField) => {
2615 return {
2616 title:
2617 contentField.nestedContentFields[STORY_TITLE_INDEX]
2618 .contentFieldValue.data,
2619 description:
2620 contentField.nestedContentFields[STORY_TEXT_INDEX].contentFieldValue
2621 .data,
2622 colorTheme:
2623 contentField.nestedContentFields[STORY_COLOR_THEME_INDEX]
2624 .contentFieldValue.value,
2625 imageUrl:
2626 contentField.nestedContentFields[STORY_IMAGE_INDEX]
2627 .contentFieldValue.image.contentUrl,
2628 imageAlt:
2629 contentField.nestedContentFields[STORY_IMAGE_INDEX]
2630 .contentFieldValue.image.description,
2631 };
2632 }),
2633 };
2634};
2635
2636/* Renderiza os cards */
2637const storyCardFrom = (storyData) => {
2638 const storyCard = document.createElement("div");
2639 storyCard.classList.add("ws-item");
2640
2641 storyCard.addEventListener("click", (e) => {
2642 const storyCardElement = e.target.closest(".ws-item");
2643 Liferay.fire("web-stories-modal-open", { webStoryItem: storyData });
2644 });
2645
2646 const image = document.createElement("img");
2647 image.classList.add("ws-image");
2648 image.src = storyData.cover.imageUrl
2649 ? storyData.cover.imageUrl
2650 : storyData.stories[0].imageUrl;
2651 image.alt = storyData.cover.imageAlt
2652 ? storyData.cover.imageAlt
2653 : storyData.stories[0].imageAlt;
2654
2655 storyCard.appendChild(image);
2656
2657 const overlay = document.createElement("div");
2658 overlay.classList.add("ws-overlay");
2659 storyCard.appendChild(overlay);
2660
2661 const label = document.createElement("span");
2662 label.classList.add("ws-label");
2663 label.dataset.category = storyData.category;
2664 label.classList.add((storyData.category || "Categoria").toLowerCase().replace(" ", '-'));
2665 label.textContent = storyData.category || "Categoria";
2666 storyCard.appendChild(label);
2667
2668 const content = document.createElement("div");
2669 content.classList.add("ws-content");
2670
2671 const title = document.createElement("h5");
2672 title.classList.add("h5")
2673 title.textContent = storyData.cover.title || "Título do Card";
2674 content.appendChild(title);
2675
2676 const details = document.createElement("div");
2677 details.classList.add("ws-details");
2678
2679 details.innerHTML = DETAILS_SVG || `<svg>...</svg>`;
2680 content.appendChild(details);
2681
2682 storyCard.appendChild(content);
2683
2684 return storyCard;
2685};
2686
2687/* Renderiza cores */
2688
2689const getCategoriesColorsStyles = async () => {
2690 //
2691 const urlToFetchToGetWebStoriesCategoriesColor = `/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/31841266/taxonomy-categories?fields=name%2CtaxonomyCategoryProperties`;
2692
2693 return fetch(urlToFetchToGetWebStoriesCategoriesColor, {
2694 method: "GET",
2695 headers: {
2696 accept: "application/json",
2697 "x-csrf-token": Liferay.authToken,
2698 },
2699 })
2700 .then((response) => {
2701 if (response.status === 200) {
2702 return response.json();
2703 } else {
2704 throw new Error("Erro interno. Por favor tente mais tarde.");
2705 }
2706 })
2707 .then((data) => {
2708 const styleTag = document.createElement('style');
2709 styleTag.id= 'webstories-carousel-labels';
2710
2711 let styleContent = ``;
2712
2713 data.items.forEach(item => {
2714 let textColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto")?.value;
2715 let textHighContrastColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto em Alto Contraste")?.value;
2716
2717 if (textColor != undefined) {
2718 styleContent = styleContent + `
2719 .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] {
2720 color: #` + textColor + `;
2721 }
2722 `
2723 }
2724
2725 if (textHighContrastColor != undefined) {
2726 styleContent = styleContent + `
2727 body.high-contrast .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] {
2728 color: #` + textHighContrastColor + `;
2729 }
2730 `
2731 }
2732 });
2733
2734 styleTag.textContent = styleContent;
2735
2736 document.head.appendChild(styleTag);
2737 });
2738};
2739
2740getCategoriesColorsStyles();
2741
2742/* Renderiza os itens */
2743const renderItems = (carouselId, webStoriesObjects) => {
2744 const carouselElement = document.querySelector(`#` + carouselId);
2745 const carouselContainer = carouselElement.querySelector(`.ws-container`);
2746 const carouselBody = carouselElement.querySelector(".ws-carousel-body");
2747 const navButtons = carouselElement.querySelector(".nav-buttons");
2748 const leftArrow = navButtons.querySelector(".left-arrow");
2749 const rightArrow = navButtons.querySelector(".right-arrow");
2750
2751 // Adiciona Cards
2752 webStoriesObjects.forEach((storyObject, index) => {
2753 const storyCard = storyCardFrom(storyObject);
2754 storyCard.dataset.index = index;
2755 carouselContainer.appendChild(storyCard);
2756 });
2757
2758 // Altera o Layout
2759 function updateLayout() {
2760 if (webStoriesObjects.length < 3) {
2761 if (window.matchMedia("(min-width: 769px)").matches) {
2762 carouselContainer.style.justifyContent = "center";
2763 navButtons.style.display = "none";
2764 } else {
2765 carouselContainer.style.justifyContent = "flex-start";
2766 navButtons.style.display = "flex";
2767 }
2768 } else {
2769 carouselContainer.style.justifyContent = "";
2770 carouselContainer.style.gap = window.matchMedia("(max-width: 768px)")
2771 .matches
2772 ? "32px"
2773 : "16px";
2774 navButtons.style.display = "";
2775 }
2776 }
2777 updateLayout();
2778 window.addEventListener("resize", updateLayout);
2779
2780 // Configura Scroll das setas
2781 leftArrow.addEventListener("click", () => {
2782 const items = carouselBody.querySelectorAll(".ws-item");
2783 const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16;
2784 const pageSize = items[0].offsetWidth + gap;
2785 const currentScroll = carouselBody.scrollLeft;
2786 const currentPageReal = carouselBody.scrollLeft / pageSize;
2787 const currentPage = parseInt(currentPageReal);
2788 const rest = currentPage - currentPageReal;
2789 const nextPage = rest !== 0 ? currentPage : currentPage - 1;
2790 carouselBody.scrollLeft = nextPage * pageSize;
2791 });
2792
2793 rightArrow.addEventListener("click", () => {
2794 const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16;
2795 const items = carouselBody.querySelectorAll(".ws-item");
2796 carouselBody.scrollLeft += items[0].offsetWidth + gap;
2797 });
2798
2799 const updateArrows = () => {
2800 const scrollLeft = carouselBody.scrollLeft;
2801 const maxScrollLeft = carouselBody.scrollWidth - carouselBody.clientWidth;
2802
2803 // Regra 1: A seta esquerda fica cinza se scrollLeft for 0
2804 if (scrollLeft === 0) {
2805 leftArrow.classList.remove("active");
2806 leftArrow.classList.add("inactive");
2807 } else {
2808 leftArrow.classList.remove("inactive");
2809 leftArrow.classList.add("active");
2810 }
2811
2812 // Regra 2: A seta direita fica cinza se o scroll for máximo
2813 if (scrollLeft >= maxScrollLeft) {
2814 rightArrow.classList.remove("active");
2815 rightArrow.classList.add("inactive");
2816 } else {
2817 rightArrow.classList.remove("inactive");
2818 rightArrow.classList.add("active");
2819 }
2820 };
2821
2822 carouselBody.addEventListener("scroll", updateArrows);
2823};
2824
2825/* Fetch Things */
2826async function getWebStoriesDataSectionFromNews(webContentId) {
2827 const ID_INDEX = 0;
2828 const WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT = 2;
2829 const urlToFetchToGetWebStoriesGroup =
2830 `/o/headless-delivery/v1.0/structured-contents/` +
2831 webContentId +
2832 `?fields=contentFields`;
2833
2834 return fetch(urlToFetchToGetWebStoriesGroup, {
2835 method: "GET",
2836 headers: {
2837 accept: "application/json",
2838 "x-csrf-token": Liferay.authToken,
2839 },
2840 })
2841 .then((response) => {
2842 if (response.status === 200) {
2843 return response.json();
2844 } else {
2845 throw new Error("Erro interno. Por favor tente mais tarde.");
2846 }
2847 })
2848 .then((data) => {
2849 const webStoriesGroups = Array.from(data.contentFields).filter(
2850 (contentField) => contentField.label === "Web Stories"
2851 );
2852
2853 const webStoriesDataMapped = webStoriesGroups.map((webStoryGroup) => {
2854 const webStoryGroupId =
2855 webStoryGroup.nestedContentFields[ID_INDEX].contentFieldValue.data;
2856 const webStoriesStrucutredContentNodes =
2857 webStoryGroup.nestedContentFields.slice(
2858 WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT
2859 );
2860 const webStoriesIds = Array.from(webStoriesStrucutredContentNodes).map(
2861 (webStoryNode) => {
2862 const webStoryId =
2863 webStoryNode.contentFieldValue.structuredContentLink.id;
2864 return {
2865 webStoryId: webStoryId,
2866 };
2867 }
2868 );
2869 return {
2870 webStoryGroupId: webStoryGroupId,
2871 webStoriesIds: webStoriesIds,
2872 };
2873 });
2874
2875 return webStoriesDataMapped;
2876 })
2877 .then((webStoriesDataMapped) => {
2878 // Mapeia os dados recebidos
2879 return Promise.all(
2880 webStoriesDataMapped.map(async (group) => {
2881 const updatedWebStoriesIds = await Promise.all(
2882 group.webStoriesIds.map(async (story) => {
2883 // Faz o fetch para obter os dados do webStoryId
2884 const response = await fetch(
2885 `/o/headless-delivery/v1.0/structured-contents/` +
2886 story.webStoryId,
2887 {
2888 method: "GET",
2889 headers: {
2890 accept: "application/json",
2891 "x-csrf-token": Liferay.authToken,
2892 },
2893 }
2894 );
2895 if (!response.ok) {
2896 throw new Error(
2897 `Erro ao buscar dados para webStoryId` + story.webStoryId
2898 );
2899 }
2900 const webStoryData = await response.json();
2901 return { webStoryData: webStoryData };
2902 })
2903 );
2904
2905 // Retorna o objeto transformado
2906 return {
2907 webStoryGroupId: group.webStoryGroupId,
2908 webStoriesData: updatedWebStoriesIds,
2909 };
2910 })
2911 );
2912 })
2913 .then((webStoriesDataFetched) => {
2914 return webStoriesDataFetched.map((data) => {
2915 return {
2916 webStoryGroupId: data.webStoryGroupId,
2917 webStoryObjects: data.webStoriesData.map((data) =>
2918 createStoryObject(data.webStoryData)
2919 ),
2920 };
2921 });
2922 })
2923 .catch((error) => {
2924 console.error("Erro ao buscar coleção: ", error);
2925 });
2926}
2927
2928async function getWebStoriesData(webStoriesIds) {
2929 // Mapeia os IDs para criar um array de promessas
2930 const fetchPromises = webStoriesIds.map((webStoryId) => {
2931 //const urlToFetch = `/o/headless-delivery/v1.0/structured-contents/` + webStoryId + `?fields=contentFields`;
2932 const urlToFetch =
2933 `/o/headless-delivery/v1.0/structured-contents/` +
2934 webStoryId +
2935 `?fields=contentFields%2CtaxonomyCategoryBriefs`;
2936 return fetch(urlToFetch, {
2937 method: "GET",
2938 headers: {
2939 accept: "application/json",
2940 "x-csrf-token": Liferay.authToken,
2941 },
2942 }).then((response) => {
2943 if (!response.ok) {
2944 throw new Error(`Erro ao buscar ID`);
2945 }
2946 return response.json(); // Transforma a resposta em JSON
2947 });
2948 });
2949
2950 // Aguarda todas as promessas e preserva a ordem
2951 try {
2952 const results = await Promise.all(fetchPromises);
2953 return results; // Retorna os resultados em ordem
2954 } catch (error) {
2955 console.error("Erro ao buscar Web Stories:", error);
2956 throw error; // Relança o erro para tratamento posterior
2957 }
2958}
2959
2960async function fetchAndLogWebStories() {
2961 const webStoriesCarouselDataList = await getWebStoriesDataSectionFromNews(
2962 "${newsJournalArticle.getResourcePrimKey()}"
2963 );
2964
2965 webStoriesCarouselDataList.forEach((webStoriesCarouselData) => {
2966 renderItems(
2967 webStoriesCarouselData.webStoryGroupId,
2968 webStoriesCarouselData.webStoryObjects
2969 );
2970 });
2971}
2972
2973fetchAndLogWebStories();
2974
2975</script>
2976
2977 <script>
2978 <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)>
2979
2980 function ${configureLinkTab}() {
2981 const root = document.querySelector(".ptb-news__read-news");
2982 const newsContentElement = root.querySelector(".news-content div:first-child");
2983 const pList = newsContentElement.querySelectorAll("p");
2984 pList.forEach((pElement) => {
2985 const cont = pElement.innerHTML.trim();
2986 if (cont == "" || cont == " ") {
2987 newsContentElement?.removeChild(pElement);
2988 }
2989 });
2990 }
2991
2992 ${configureLinkTab}();
2993
2994 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
2995
2996 function resizeMediaInfographic() {
2997 if (window.innerWidth > 1024) {
2998 const contents = document.querySelectorAll(".ptb-news__read-news .news-content p");
2999 contents.forEach((content) => {
3000 content.querySelector("img") && (content.style.gridColumn = "2 / 12");
3001 });
3002 }
3003 else {
3004 const contents = document.querySelectorAll(".ptb-news__read-news .news-content p");
3005 contents.forEach((content) => {
3006 content.querySelector("img") && (content.style.gridColumn = "");
3007 });
3008
3009 }
3010 }
3011 resizeMediaInfographic();
3012 </#if>
3013
3014
3015
3016 document.addEventListener("DOMContentLoaded", () => {
3017 const headers = document.querySelectorAll(".ptb-news__read-news .news-content h1, .ptb-news__read-news .news-content h2, .ptb-news__read-news .news-content h3, .ptb-news__read-news .news-content h4");
3018
3019 headers.forEach((header) => {
3020
3021 const currentLevel = parseInt(header.tagName.charAt(1));
3022
3023 if (currentLevel >= 1 && currentLevel <= 5) {
3024
3025 const newLevel = currentLevel + 1;
3026 const newTagName = "h" + newLevel;
3027
3028 // Criar a nova tag e transferir o conteúdo
3029 const newHeader = document.createElement(newTagName);
3030 newHeader.innerHTML = header.innerHTML;
3031
3032 // Substituir a tag antiga pela nova
3033 header.parentNode.replaceChild(newHeader, header);
3034 }
3035 });
3036
3037 <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) />
3038
3039 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
3040 resizeMediaInfographic();
3041 window.addEventListener("resize", resizeMediaInfographic);
3042 </#if>
3043 });
3044
3045 AUI().ready(()=>{
3046 const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content");
3047 const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template");
3048
3049 audiosContainer.forEach((audioContainer)=>{
3050
3051 const audio = audioContainer.querySelector("audio");
3052 const audioInterface = audioTemplate.cloneNode(true);
3053
3054 const sondwave = audioInterface.querySelector(".audio-sondwave");
3055 const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line");
3056 const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line");
3057
3058 const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play");
3059
3060 playPauseButtonAudioInterface.addEventListener("click", ()=>{
3061 if(audioInterface.classList.contains("audio-play")) {
3062 audioInterface.classList.replace("audio-play", "audio-pause");
3063 audio.pause();
3064 }
3065 else {
3066
3067 audiosContainer.forEach((audioContainer)=>{
3068 const otherAudio = audioContainer.querySelector("audio");
3069 const otherAudioInterface = audioContainer.querySelector(".audio-button-play");
3070 !otherAudio.paused && otherAudioInterface.click();
3071 });
3072
3073 audioInterface.classList.replace("audio-pause", "audio-play");
3074 audio.play();
3075 }
3076 });
3077
3078 const audioMuteButton = audioInterface.querySelector(".audio-button-mute");
3079
3080 audioMuteButton.addEventListener("click", ()=>{
3081 if(audioInterface.classList.contains("audio-unmuted")) {
3082 audioInterface.classList.replace("audio-unmuted", "audio-muted");
3083 audio.muted = true;
3084 }
3085 else {
3086 audioInterface.classList.replace("audio-muted", "audio-unmuted");
3087 audio.muted = false;
3088 }
3089 });
3090
3091 const audioTime = audioInterface.querySelector(".audio-time");
3092 audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60);
3093
3094
3095 audio.addEventListener("timeupdate", ()=>{
3096 let minutes = Math.floor((audio.duration - audio.currentTime) / 60);
3097 let seconds = Math.floor((audio.duration - audio.currentTime) % 60);
3098
3099 minutes = minutes < 10? "0" + minutes : minutes;
3100 seconds = seconds < 10? "0" + seconds : seconds;
3101
3102 audioTime.textContent = minutes + ":" + seconds;
3103
3104 const progress = (audio.currentTime / audio.duration) * 100;
3105
3106 linesDesktop.forEach(function(line, index) {
3107 const lineProgress = (index / linesDesktop.length) * 100;
3108 if (progress >= lineProgress) {
3109 !line.classList.contains("line-active") && line.classList.add("line-active");
3110 } else {
3111 line.classList.contains("line-active") && line.classList.remove("line-active");
3112 }
3113 });
3114
3115 linesMobile.forEach(function(line, index) {
3116 const lineProgress = (index / linesMobile.length) * 100;
3117 if (progress >= lineProgress) {
3118 !line.classList.contains("line-active") && line.classList.add("line-active");
3119 } else {
3120 line.classList.contains("line-active") && line.classList.remove("line-active");
3121 }
3122 });
3123 });
3124
3125
3126 sondwave.addEventListener("click", (event)=>{
3127 const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left)/sondwave.offsetWidth;
3128 audio.currentTime = audio.duration * distanceLeft;
3129 });
3130
3131 audioInterface.style.display = "";
3132 audioContainer.appendChild(audioInterface);
3133 });
3134
3135 });
3136 </script>
3137</#macro>
3138
3139<#macro renderShareAndCopyNews>
3140 <#-- <div class="share_news_container">-->
3141 <div class="social-media-container">
3142
3143 <#assign emailMsg = "Veja o conteúdo do post no link ">
3144 <#if locale == "en_US">
3145 <#assign emailMsg = "See the content of the post in the link ">
3146 </#if>
3147 <a class="social-media-share" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&body=${emailMsg}${newsInfo.url}"
3148 target="_blank">
3149 <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none"
3150 xmlns="http://www.w3.org/2000/svg">
3151 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3152 <path d="M24.9231 12H11.0769C10.9239 12 10.7772 12.0579 10.669 12.1611C10.5608 12.2642 10.5 12.4041 10.5 12.55V21.9C10.5 22.1917 10.6216 22.4715 10.838 22.6778C11.0543 22.8841 11.3478 23 11.6538 23H24.3462C24.6522 23 24.9457 22.8841 25.162 22.6778C25.3784 22.4715 25.5 22.1917 25.5 21.9V12.55C25.5 12.4041 25.4392 12.2642 25.331 12.1611C25.2228 12.0579 25.0761 12 24.9231 12ZM24.3462 21.9H11.6538V13.8012L17.6106 19.0056C17.7169 19.0984 17.8559 19.1498 18 19.1498C18.1441 19.1498 18.2831 19.0984 18.3894 19.0056L24.3462 13.8012V21.9Z"
3153 fill="#008542"/>
3154 </svg>
3155 <span >send e-mail</span>
3156 </a>
3157
3158 <a class="social-media-share" href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank">
3159 <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none"
3160 xmlns="http://www.w3.org/2000/svg">
3161 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3162 <path d="M17.5417 24H20.0341V18.1855H21.9697L22.2879 15.875H20.0341V14.2754C20.0341 13.9199 20.0871 13.6406 20.2462 13.4629C20.4053 13.2598 20.75 13.1582 21.2273 13.1582H22.5V11.1016C22.0227 11.0508 21.3864 11 20.6439 11C19.6894 11 18.947 11.2793 18.3902 11.8125C17.8068 12.3457 17.5417 13.082 17.5417 14.0469V15.875H15.5V18.1855H17.5417V24Z"
3163 fill="#008542"/>
3164 </svg>
3165 <span >Facebook</span>
3166 </a>
3167
3168 <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)>
3169 <div class="mobile-share" id="${mobileShareButtonId}">
3170 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
3171 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3172 <path d="M13.8923 20.5914C15.2136 20.5914 16.2847 19.5151 16.2847 18.1875C16.2847 16.8599 15.2136 15.7837 13.8923 15.7837C12.5711 15.7837 11.5 16.8599 11.5 18.1875C11.5 19.5151 12.5711 20.5914 13.8923 20.5914Z"
3173 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3174 <path d="M22.2654 26.0001C23.5866 26.0001 24.6577 24.9238 24.6577 23.5962C24.6577 22.2686 23.5866 21.1924 22.2654 21.1924C20.9441 21.1924 19.873 22.2686 19.873 23.5962C19.873 24.9238 20.9441 26.0001 22.2654 26.0001Z"
3175 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3176 <path d="M22.2654 15.1827C23.5866 15.1827 24.6577 14.1064 24.6577 12.7788C24.6577 11.4512 23.5866 10.375 22.2654 10.375C20.9441 10.375 19.873 11.4512 19.873 12.7788C19.873 14.1064 20.9441 15.1827 22.2654 15.1827Z"
3177 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3178 <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round"
3179 stroke-linejoin="round"/>
3180 <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round"
3181 stroke-linejoin="round"/>
3182 </svg>
3183 </div>
3184
3185 <a class="social-media-share" href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large">
3186 <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none"
3187 xmlns="http://www.w3.org/2000/svg">
3188 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3189 <path d="M22.7542 12H24.7809L20.3542 17.0933 25.5809 24H21.4742L18.2741 19.8133 14.5941 24H12.5674L17.3141 18.56 12.3008 12H16.5141L19.4208 15.84 22.7542 12ZM22.0342 22.7733H23.1542L15.9008 13.1467H14.6741L22.0342 22.7733Z" fill="#008542"/>
3190 </svg>
3191 <span >twitter</span>
3192 </a>
3193
3194 <a class="social-media-share" href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp/share"
3195 target="_blank">
3196 <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none"
3197 xmlns="http://www.w3.org/2000/svg">
3198 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3199 <path d="M12.5482 21.3241C11.6166 19.7525 11.2908 17.8949 11.6318 16.1C11.9729 14.3052 12.9573 12.6965 14.4003 11.5761C15.8434 10.4556 17.6457 9.90042 19.4691 10.0147C21.2925 10.129 23.0114 10.9049 24.3033 12.1967C25.5951 13.4886 26.371 15.2075 26.4853 17.0309C26.5996 18.8543 26.0444 20.6566 24.9239 22.0997C23.8035 23.5427 22.1948 24.5271 20.4 24.8682C18.6051 25.2092 16.7475 24.8834 15.1759 23.9518L12.5795 24.687C12.4731 24.7181 12.3603 24.72 12.2529 24.6925C12.1455 24.6651 12.0475 24.6092 11.9692 24.5308C11.8908 24.4525 11.8349 24.3545 11.8075 24.2471C11.78 24.1397 11.7819 24.0269 11.813 23.9205L12.5482 21.3241Z"
3200 fill="#008542"/>
3201 <path d="M20.6917 21C20.0094 21.0017 19.3335 20.8686 18.7029 20.6083C18.0722 20.348 17.4992 19.9656 17.0168 19.4832C16.5344 19.0008 16.152 18.4278 15.8917 17.7971C15.6314 17.1665 15.4983 16.4906 15.5 15.8083C15.5017 15.3281 15.6937 14.8682 16.0338 14.5293C16.374 14.1903 16.8346 14 17.3148 14C17.394 13.9994 17.472 14.0201 17.5404 14.06C17.6089 14.1 17.6653 14.1576 17.7037 14.2269L18.462 15.5491C18.5071 15.6295 18.5303 15.7203 18.5291 15.8124C18.528 15.9046 18.5026 15.9948 18.4556 16.0741L17.8463 17.0917C18.1584 17.7859 18.7141 18.3416 19.4083 18.6537L20.4259 18.0444C20.5052 17.9974 20.5954 17.972 20.6876 17.9709C20.7797 17.9697 20.8705 17.9929 20.9509 18.038L22.2731 18.7963C22.3424 18.8347 22.4 18.8911 22.44 18.9596C22.4799 19.028 22.5006 19.106 22.5 19.1852C22.4983 19.6649 22.3074 20.1245 21.9689 20.4643C21.6303 20.8041 21.1713 20.9966 20.6917 21Z"
3202 fill="white"/>
3203 </svg>
3204 <span >Share to WhatsApp </span>
3205 </a>
3206
3207 <div class="copy-text-container">
3208 <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3209 <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round"
3210 stroke-linejoin="round"/>
3211 <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round"
3212 stroke-linejoin="round"/>
3213 </svg>
3214
3215 <#if locale == "pt_BR">
3216 <p class="text">Copiar texto <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p>
3217 <#else >
3218 <p class="text">Copy text <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p>
3219 </#if>
3220 </div>
3221
3222 </div>
3223
3224 <#if locale == "pt_BR">
3225 <span class="copy-message">Texto copiado!</span>
3226 <#else >
3227 <span class="copy-message">Text copied!</span>
3228 </#if>
3229 <#-- </div>-->
3230</#macro>
3231
3232<#-- ################################################################################################################## -->
3233
3234<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
3235<#macro renderLinks newsInfo>
3236 <#if newsInfo.links?size != 0>
3237 <#--videos "escondidos" que serão unidos a .ptb-news__read-content -->
3238
3239 <div class="ptb-news__links-container d-none ">
3240 <div id="ptb-news__links-identifiers">
3241 <#assign separator = "">
3242 <#list newsInfo.links as link>
3243 ${link.id};
3244 <#assign separator = ";">
3245 </#list>
3246 </div>
3247 <#list newsInfo.links as link>
3248 <#assign link_index = link?index>
3249 <#assign linkUrl = "#">
3250 <#assign target = "_blank">
3251 <#assign linkClass = "">
3252
3253 <div id="ptb-news__link-container-${link_index}">
3254 <#if link.externalLink?has_content>
3255 <#assign linkUrl = link.externalLink>
3256 <#assign target = "_blank">
3257 <#assign linkClass = "external-link">
3258 <#elseif link.pageLink?has_content>
3259 <#assign linkUrl = link.pageLink>
3260 <#assign target = "_self">
3261 <#assign linkClass = "internal-page-link">
3262 <#elseif link.file.mimeType?has_content>
3263 <#assign linkUrl = link.file.url>
3264 <#assign target = "_blank">
3265 <#assign linkClass = "file-link">
3266 </#if>
3267
3268 <#-- PDF icon -->
3269 <#if link.iconType == "Opção78730408" >
3270 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3271 xmlns="http://www.w3.org/2000/svg">
3272 <path d="M3.752 15.974H4.664C4.912 15.974 5.124 15.954 5.3 15.914C5.476 15.874 5.62 15.806 5.732 15.71C5.852 15.606 5.94 15.466 5.996 15.29C6.052 15.114 6.08 14.894 6.08 14.63C6.08 14.11 5.968 13.758 5.744 13.574C5.528 13.39 5.168 13.298 4.664 13.298H3.752V15.974ZM2 20.654V11.894H4.784C5.856 11.894 6.632 12.122 7.112 12.578C7.6 13.026 7.844 13.698 7.844 14.594C7.844 15.474 7.604 16.158 7.124 16.646C6.652 17.134 5.872 17.378 4.784 17.378H3.752V20.654H2Z"
3273 fill="#008542"/>
3274 <path d="M10.8402 19.142H11.9442C12.2962 19.142 12.6042 19.102 12.8682 19.022C13.1322 18.942 13.3482 18.798 13.5162 18.59C13.6922 18.374 13.8242 18.082 13.9122 17.714C14.0002 17.338 14.0442 16.854 14.0442 16.262C14.0442 15.678 14.0002 15.202 13.9122 14.834C13.8322 14.458 13.7042 14.166 13.5282 13.958C13.3602 13.75 13.1442 13.606 12.8802 13.526C12.6242 13.446 12.3202 13.406 11.9682 13.406H10.8402V19.142ZM9.16016 20.654V11.894H12.1002C12.7642 11.894 13.3322 11.982 13.8042 12.158C14.2762 12.326 14.6602 12.59 14.9562 12.95C15.2602 13.302 15.4802 13.75 15.6162 14.294C15.7602 14.83 15.8322 15.47 15.8322 16.214C15.8322 17.726 15.5362 18.846 14.9442 19.574C14.3522 20.294 13.3882 20.654 12.0522 20.654H9.16016Z"
3275 fill="#008542"/>
3276 <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z"
3277 fill="#008542"/>
3278 <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516"
3279 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3280 stroke-linejoin="round"/>
3281 </svg>
3282
3283 <#-- JPG icon -->
3284 <#elseif link.iconType == "Opção89889679" >
3285 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3286 xmlns="http://www.w3.org/2000/svg">
3287 <path d="M2 19.1657C2.248 19.1977 2.504 19.2257 2.768 19.2497C3.032 19.2657 3.284 19.2737 3.524 19.2737C3.844 19.2737 4.112 19.2497 4.328 19.2017C4.544 19.1537 4.72 19.0657 4.856 18.9377C4.992 18.8017 5.088 18.6257 5.144 18.4097C5.208 18.1857 5.24 17.8977 5.24 17.5457V11.8937H6.992V17.5457C6.992 18.6817 6.756 19.5057 6.284 20.0177C5.82 20.5297 5.128 20.7857 4.208 20.7857C3.984 20.7857 3.764 20.7737 3.548 20.7497C3.34 20.7257 3.14 20.6937 2.948 20.6537C2.756 20.6137 2.58 20.5697 2.42 20.5217C2.26 20.4737 2.12 20.4257 2 20.3777V19.1657Z"
3288 fill="#008542"/>
3289 <path d="M10.4203 15.9737H11.3323C11.5803 15.9737 11.7923 15.9537 11.9683 15.9137C12.1443 15.8737 12.2883 15.8057 12.4003 15.7097C12.5203 15.6057 12.6083 15.4657 12.6643 15.2897C12.7203 15.1137 12.7483 14.8937 12.7483 14.6297C12.7483 14.1097 12.6363 13.7577 12.4123 13.5737C12.1963 13.3897 11.8363 13.2977 11.3323 13.2977H10.4203V15.9737ZM8.66834 20.6537V11.8937H11.4523C12.5243 11.8937 13.3003 12.1217 13.7803 12.5777C14.2683 13.0257 14.5123 13.6977 14.5123 14.5937C14.5123 15.4737 14.2723 16.1577 13.7923 16.6457C13.3203 17.1337 12.5403 17.3777 11.4523 17.3777H10.4203V20.6537H8.66834Z"
3290 fill="#008542"/>
3291 <path d="M22.0085 20.2697C21.6405 20.4057 21.2085 20.5257 20.7125 20.6297C20.2245 20.7337 19.7165 20.7857 19.1885 20.7857C18.5005 20.7857 17.9245 20.6897 17.4605 20.4977C17.0045 20.2977 16.6365 20.0097 16.3565 19.6337C16.0845 19.2577 15.8885 18.7977 15.7685 18.2537C15.6485 17.7017 15.5885 17.0777 15.5885 16.3817C15.5885 15.6217 15.6565 14.9537 15.7925 14.3777C15.9285 13.8017 16.1445 13.3217 16.4405 12.9377C16.7365 12.5457 17.1205 12.2537 17.5925 12.0617C18.0645 11.8617 18.6405 11.7617 19.3205 11.7617C19.7845 11.7617 20.2125 11.8017 20.6045 11.8817C21.0045 11.9617 21.3605 12.0577 21.6725 12.1697V13.3937C21.5525 13.3857 21.4125 13.3737 21.2525 13.3577C21.0925 13.3337 20.9205 13.3137 20.7365 13.2977C20.5605 13.2817 20.3765 13.2697 20.1845 13.2617C20.0005 13.2457 19.8205 13.2377 19.6445 13.2377C19.2205 13.2377 18.8605 13.2857 18.5645 13.3817C18.2765 13.4697 18.0405 13.6297 17.8565 13.8617C17.6805 14.0857 17.5485 14.3937 17.4605 14.7857C17.3805 15.1777 17.3405 15.6737 17.3405 16.2737C17.3405 16.8417 17.3765 17.3217 17.4485 17.7137C17.5285 18.0977 17.6485 18.4097 17.8085 18.6497C17.9685 18.8897 18.1765 19.0617 18.4325 19.1657C18.6965 19.2697 19.0125 19.3217 19.3805 19.3217C19.6765 19.3217 20.0245 19.2857 20.4245 19.2137V17.1977H19.1045V15.8897H22.0085V20.2697Z"
3292 fill="#008542"/>
3293 <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516"
3294 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3295 stroke-linejoin="round"/>
3296 </svg>
3297 <#-- DOC icon -->
3298 <#elseif link.iconType == "Opção15480314" >
3299 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3300 xmlns="http://www.w3.org/2000/svg">
3301 <path d="M2.68 19.1417H3.784C4.136 19.1417 4.444 19.1017 4.708 19.0217C4.972 18.9417 5.188 18.7977 5.356 18.5897C5.532 18.3737 5.664 18.0817 5.752 17.7137C5.84 17.3377 5.884 16.8537 5.884 16.2617C5.884 15.6777 5.84 15.2017 5.752 14.8337C5.672 14.4577 5.544 14.1657 5.368 13.9577C5.2 13.7497 4.984 13.6057 4.72 13.5257C4.464 13.4457 4.16 13.4057 3.808 13.4057H2.68V19.1417ZM1 20.6537V11.8937H3.94C4.604 11.8937 5.172 11.9817 5.644 12.1577C6.116 12.3257 6.5 12.5897 6.796 12.9497C7.1 13.3017 7.32 13.7497 7.456 14.2937C7.6 14.8297 7.672 15.4697 7.672 16.2137C7.672 17.7257 7.376 18.8457 6.784 19.5737C6.192 20.2937 5.228 20.6537 3.892 20.6537H1Z"
3302 fill="#008542"/>
3303 <path d="M10.7894 20.4977C10.3334 20.3057 9.96138 20.0217 9.67338 19.6457C9.39338 19.2697 9.18937 18.8057 9.06137 18.2537C8.93337 17.6937 8.86938 17.0457 8.86938 16.3097C8.86938 15.5657 8.93337 14.9097 9.06137 14.3417C9.19737 13.7737 9.40938 13.2977 9.69738 12.9137C9.99338 12.5297 10.3694 12.2417 10.8254 12.0497C11.2894 11.8577 11.8494 11.7617 12.5054 11.7617C13.1694 11.7617 13.7294 11.8577 14.1854 12.0497C14.6414 12.2417 15.0094 12.5257 15.2894 12.9017C15.5774 13.2777 15.7854 13.7457 15.9134 14.3057C16.0414 14.8577 16.1054 15.5017 16.1054 16.2377C16.1054 16.9817 16.0374 17.6377 15.9014 18.2057C15.7734 18.7737 15.5614 19.2497 15.2654 19.6337C14.9774 20.0177 14.6014 20.3057 14.1374 20.4977C13.6814 20.6897 13.1254 20.7857 12.4694 20.7857C11.8054 20.7857 11.2454 20.6897 10.7894 20.4977ZM11.0894 18.6737C11.2414 18.9057 11.4334 19.0737 11.6654 19.1777C11.8974 19.2737 12.1694 19.3217 12.4814 19.3217C12.7934 19.3217 13.0654 19.2737 13.2974 19.1777C13.5294 19.0737 13.7214 18.9057 13.8734 18.6737C14.0254 18.4337 14.1374 18.1217 14.2094 17.7377C14.2814 17.3457 14.3174 16.8577 14.3174 16.2737C14.3174 15.6897 14.2814 15.2057 14.2094 14.8217C14.1374 14.4297 14.0254 14.1177 13.8734 13.8857C13.7294 13.6457 13.5414 13.4777 13.3094 13.3817C13.0774 13.2777 12.8054 13.2257 12.4934 13.2257C12.1814 13.2257 11.9094 13.2777 11.6774 13.3817C11.4454 13.4777 11.2534 13.6457 11.1014 13.8857C10.9494 14.1177 10.8374 14.4297 10.7654 14.8217C10.6934 15.2057 10.6574 15.6897 10.6574 16.2737C10.6574 16.8577 10.6934 17.3457 10.7654 17.7377C10.8374 18.1217 10.9454 18.4337 11.0894 18.6737Z"
3304 fill="#008542"/>
3305 <path d="M23.1389 20.3897C22.8349 20.5017 22.4989 20.5937 22.1309 20.6657C21.7709 20.7457 21.3629 20.7857 20.9069 20.7857C20.2189 20.7857 19.6429 20.6897 19.1789 20.4977C18.7229 20.3057 18.3549 20.0257 18.0749 19.6577C17.7949 19.2817 17.5949 18.8177 17.4749 18.2657C17.3629 17.7137 17.3069 17.0777 17.3069 16.3577C17.3069 15.5977 17.3709 14.9297 17.4989 14.3537C17.6269 13.7777 17.8309 13.2977 18.1109 12.9137C18.3909 12.5297 18.7589 12.2417 19.2149 12.0497C19.6709 11.8577 20.2229 11.7617 20.8709 11.7617C21.3029 11.7617 21.6989 11.8017 22.0589 11.8817C22.4269 11.9537 22.7629 12.0457 23.0669 12.1577V13.3817C22.8029 13.3497 22.4949 13.3177 22.1429 13.2857C21.7989 13.2537 21.4829 13.2377 21.1949 13.2377C20.8029 13.2377 20.4709 13.2857 20.1989 13.3817C19.9349 13.4697 19.7189 13.6297 19.5509 13.8617C19.3829 14.0857 19.2629 14.3937 19.1909 14.7857C19.1189 15.1697 19.0829 15.6617 19.0829 16.2617C19.0829 16.8617 19.1189 17.3617 19.1909 17.7617C19.2709 18.1537 19.3949 18.4657 19.5629 18.6977C19.7389 18.9217 19.9669 19.0817 20.2469 19.1777C20.5269 19.2657 20.8709 19.3097 21.2789 19.3097C21.5989 19.3097 21.9309 19.2937 22.2749 19.2617C22.6189 19.2217 22.9069 19.1897 23.1389 19.1657V20.3897Z"
3306 fill="#008542"/>
3307 <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516"
3308 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3309 stroke-linejoin="round"/>
3310 </svg>
3311 <#-- External link icon -->
3312 <#elseif link.iconType == "Opção43823553" >
3313 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
3314 xmlns="http://www.w3.org/2000/svg">
3315 <path opacity="0.98"
3316 d="M25.5 15.5001V26.5001C25.5 26.7653 25.3946 27.0197 25.2071 27.2072C25.0196 27.3947 24.7652 27.5001 24.5 27.5001L5.5 27.5001C5.23479 27.5001 4.98043 27.3947 4.79289 27.2072C4.60536 27.0197 4.5 26.7653 4.5 26.5001L4.5 7.50009C4.5 7.23488 4.60536 6.98052 4.79289 6.79299C4.98043 6.60545 5.23478 6.50009 5.5 6.50009L17 6.50009M20.4742 4.7124H27.8988M27.8988 4.7124V12.137M27.8988 4.7124L14.5 18.0001"
3317 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3318 </svg>
3319 <#-- Internal page link icon -->
3320 <#elseif link.iconType == "Opção64212757" >
3321 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542" viewBox="0 0 256 256">
3322 <path d="M137.54,186.36a8,8,0,0,1,0,11.31l-9.94,10A56,56,0,0,1,48.38,128.4L72.5,104.28A56,56,0,0,1,149.31,102a8,8,0,1,1-10.64,12,40,40,0,0,0-54.85,1.63L59.7,139.72a40,40,0,0,0,56.58,56.58l9.94-9.94A8,8,0,0,1,137.54,186.36Zm70.08-138a56.08,56.08,0,0,0-79.22,0l-9.94,9.95a8,8,0,0,0,11.32,11.31l9.94-9.94a40,40,0,0,1,56.58,56.58L172.18,140.4A40,40,0,0,1,117.33,142,8,8,0,1,0,106.69,154a56,56,0,0,0,76.81-2.26l24.12-24.12A56.08,56.08,0,0,0,207.62,48.38Z">
3323 </path>
3324 </svg>
3325 <#-- Download link icon -->
3326 <#elseif link.iconType == "Opção20766606" >
3327 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
3328 xmlns="http://www.w3.org/2000/svg">
3329 <path d="M10.75 13.75L16 19M16 19L21.25 13.75M16 19V5M27 19V26C27 26.2652 26.8946 26.5196 26.7071 26.7071C26.5196 26.8946 26.2652 27 26 27H6C5.73478 27 5.48043 26.8946 5.29289 26.7071C5.10536 26.5196 5 26.2652 5 26V19"
3330 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3331 </svg>
3332 </#if>
3333<#if link.title?? && link.title?has_content>
3334 <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a>
3335 </#if>
3336 </div>
3337 </#list>
3338 </div>
3339
3340 <script>
3341 var newsContent_code = document.querySelector(".news-content").innerHTML;
3342
3343 var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";");
3344 linksIdentifiers.forEach((linkIdentifier, index) => {
3345 const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index);
3346 if (linkIdentifierContent) {
3347 const tag = "#[" + linkIdentifier.trim() + "]";
3348 const splitContent = newsContent_code.split(tag);
3349 newsContent_code = splitContent.join(linkIdentifierContent.innerHTML);
3350 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
3351 }
3352 });
3353
3354
3355 var ptb_news__read_content = document.querySelector(".news-content");
3356 ptb_news__read_content.innerHTML = newsContent_code;
3357
3358 const links_ptb_news = document.querySelectorAll(".news-content a");
3359 links_ptb_news.forEach((link) => {
3360 link.classList.add("link-ptb-news");
3361 });
3362
3363 </script>
3364
3365 <style>
3366 .ptb-news__read-news .ptb-news__link a {
3367 font-family: var(--font-family-base);
3368 font-style: var(--font-style-normal, normal);
3369 font-weight: var(--font-weight-bold, 700);
3370 font-size: var(--font-size-xxs, 16px);
3371 line-height: var(--line-height-xl, 160%);
3372 text-decoration-line: var(--text-decoration-underline, underline);
3373 color: #008542;
3374 }
3375
3376 body.high-contrast-active .ptb-news__read-news .ptb-news__link a {
3377 color: #E4F7E8;
3378 }
3379
3380 .ptb-news__read-news .news-content .link {
3381 font-family: var(--font-family-base);
3382 font-style: var(--font-style-normal, normal);
3383 font-weight: var(--font-weight-bold, 700);
3384 font-size: var(--font-size-xs, 18px);
3385 line-height: var(--line-height-xl, 160%);
3386
3387 text-decoration-line: var(--text-decoration-underline, underline);
3388 color: #008542;
3389 }
3390
3391 body.high-contrast-active .ptb-news__read-news .news-content .link {
3392 color: #E4F7E8;
3393 }
3394
3395 body.high-contrast-active .ptb-news__read-news .news-content svg path {
3396 stroke: var(--color-neutral-500, #D7D7D7);
3397 fill: rgba(255, 255, 255, 0.32);
3398 }
3399
3400 .ptb-news__read-news .news-content .ptb-link__wrapper {
3401 display: flex;
3402 flex-direction: column;
3403 gap: 0;
3404 margin-top: -24px;
3405 }
3406
3407 .ptb-news__read-news .news-content .ptb-link__wrapper svg {
3408 margin-right: var(--space-sm, 16px);
3409 }
3410
3411 .ptb-news__read-news .news-content .ptb-link__wrapper .first {
3412 gap: 0 !important;
3413 }
3414
3415 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
3416 .ptb-news__read-news .news-content .link {
3417 font-size: var(--font-size-xxs, 16px);
3418 }
3419 }
3420 </style>
3421 </#if>
3422</#macro>
3423
3424<#-- ################################################################################################################## -->
3425
3426<#-- ################################################################################################################## -->
3427
3428<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
3429<#macro renderCite>
3430 <div class="ptb-news__cite-container">
3431 <div class="ptb-news__cite-container-breakpoint breakpoint">
3432 <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4">
3433 <div class="ptb-news__cite-title">
3434 <#if locale?lower_case == "pt_br">
3435 Notas
3436 <#else>
3437 Notes
3438 </#if>
3439 </div>
3440
3441 <div class="ptb-news__cites-elements">
3442 </div>
3443 </div>
3444 </div>
3445 </div>
3446
3447 <script>
3448 function positionCitesText(parentNodeCitesText) {
3449
3450 parentNodeCitesText.forEach((parentNodeCiteText)=>{
3451 if(window.innerWidth > 1024) {
3452 parentNodeCiteText.style.display="";
3453 parentNodeCiteText.style.gridColumnStart = "11";
3454 parentNodeCiteText.style.gridColumnEnd = "13";
3455 }
3456 else {
3457 parentNodeCiteText.style.display="none";
3458 parentNodeCiteText.style.gridColumnStart = "";
3459 parentNodeCiteText.style.gridColumnEnd = "";
3460 }
3461 });
3462 }
3463
3464 function addCitesTextMobile(citesText) {
3465 const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements");
3466
3467 if(citesContainer.children.length === 0) {
3468 citesContainer && citesText.forEach((citeText)=>{
3469 citesContainer.appendChild(citeText.cloneNode(true));
3470 });
3471 }
3472 }
3473
3474 const citesText = document.querySelectorAll(".news-content cite");
3475
3476 if (citesText.length > 0) {
3477 const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);
3478 positionCitesText(parentNodeCitesText);
3479 addCitesTextMobile(citesText);
3480 }
3481 else {
3482 const citesContainer = document.querySelector(".ptb-news__cite-container");
3483 citesContainer && (citesContainer.style.display="none");
3484 }
3485
3486 document.addEventListener('DOMContentLoaded', ()=>{
3487
3488 const citesText = document.querySelectorAll(".news-content cite");
3489
3490 if (citesText.length > 0) {
3491 const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);
3492
3493 positionCitesText(parentNodeCitesText);
3494 addCitesTextMobile(citesText);
3495
3496 window.addEventListener('resize', ()=>{positionCitesText(parentNodeCitesText)});
3497 }
3498 else {
3499 const citesContainer = document.querySelector(".ptb-news__cite-container");
3500 citesContainer && (citesContainer.style.display="none");
3501 }
3502 });
3503
3504 </script>
3505
3506 <style>
3507
3508 .ptb-news__read-news-post cite {
3509 color: var(--color-neutral-800, #373737);
3510 font-family: var(--font-family-base);
3511 font-size: var(--font-size-xxxs, 14px) !important;
3512 font-style: var(--font-style-normal, normal);
3513 font-weight: var(--font-weight-regular, 400);
3514 line-height: var(--line-height-xl, 160%);
3515 }
3516
3517 .ptb-news__read-news-post cite a{
3518 font-size: var(--font-size-xxxs, 14px) !important;
3519 }
3520
3521 body.high-contrast-active .ptb-news__read-news-post cite {
3522 color: var(--text-primary-default, var(--color-neutral-100));
3523 }
3524
3525 .ptb-news__read-news-post .news-content cite,
3526 .ptb-news__read-news-post .ptb-news__cite-container cite {
3527 display: block;
3528 padding-left: var(--space-md);
3529 border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7);
3530 }
3531
3532 @media screen and (min-width: 1025px) {
3533 .ptb-news__read-news-post .ptb-news__cite-container {
3534 display: none;
3535 }
3536 }
3537
3538 @media screen and (max-width: 1025px) {
3539 .ptb-news__read-news .ptb-news__cite-container .link {
3540 text-decoration-line: var(--text-decoration-underline, underline);
3541 color: #008542;
3542 }
3543
3544 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link {
3545 color: #E4F7E8;
3546 }
3547
3548 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path {
3549 stroke: var(--color-neutral-500, #D7D7D7);
3550 fill: rgba(255, 255, 255, 0.32);
3551 }
3552
3553 .ptb-news__read-news-post .ptb-news__cite-container {
3554 display: grid;
3555 background: var(--background-surface-level-03, #EEE);
3556 }
3557
3558 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container {
3559 background: var(--background-surface-level-03, #525252);
3560 }
3561
3562 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col {
3563 padding: var(--space-xxl) 0;
3564 display: flex;
3565 flex-direction: column;
3566 gap: var(--space-lg, 32px);
3567 }
3568
3569 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements {
3570 display: flex;
3571 flex-direction: column;
3572 gap: var(--space-lg, 32px);
3573 }
3574
3575 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
3576 color: var(--color-neutral-800, #373737);
3577 font-size: var(--font-size-sm, 20px);
3578 font-style: var(--font-style-normal, normal);
3579 font-weight: var(--font-weight-bold, 700);
3580 line-height: var(--line-height-xl, 160%);
3581 }
3582
3583 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
3584 color: var(--text-primary-default, var(--color-neutral-100));
3585 }
3586 }
3587 </style>
3588
3589</#macro>
3590
3591<#-- ################################################################################################################## -->
3592
3593
3594<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
3595<#macro renderGallery newsInfo>
3596 <#if newsInfo.galleryItems?size == 0>
3597 <#return />
3598 </#if>
3599
3600 <div class="gallery-breakpoint breakpoint">
3601 <div class="gallery col-3-11 md-col-1-8 sm-col-1-4">
3602
3603 <div class="title-container">
3604 <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg">
3605 <path d="M23 22H3C2.46957 22 1.96086 21.7893 1.58579 21.4142C1.21071 21.0391 1 20.5304 1 20V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H17L19 4H23C23.5304 4 24.0391 4.21071 24.4142 4.58579C24.7893 4.96086 25 5.46957 25 6V20C25 20.5304 24.7893 21.0391 24.4142 21.4142C24.0391 21.7893 23.5304 22 23 22Z"
3606 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3607 <path d="M13 17C15.4853 17 17.5 14.9853 17.5 12.5C17.5 10.0147 15.4853 8 13 8C10.5147 8 8.5 10.0147 8.5 12.5C8.5 14.9853 10.5147 17 13 17Z"
3608 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3609 </svg>
3610 <p class="title">
3611 <#if locale == "pt_BR"> Galeria de Imagens <#else > Image gallery </#if>
3612 </p>
3613 </div>
3614
3615 <div class="image-container">
3616 <#assign index = 0 />
3617 <#assign index = 0 />
3618 <#list newsInfo.galleryItems as gItem>
3619 <div class="modal-image-fragment" index="${index}">
3620 <div class="modal-image-container" index="${index}">
3621 <div class="modal-image-fragment" index="${index}">
3622 <div class="modal-image-container" index="${index}">
3623 <span class="click-image" ></span>
3624
3625 <div class="image-player-container">
3626 <span class="close-image">
3627 <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
3628 <path d="M22 -9.61651e-07C34.1503 -4.30546e-07 44 9.84974 44 22C44 34.1503 34.1503 44 22 44C9.84973 44 -1.49276e-06 34.1503 -9.61651e-07 22C-4.30546e-07 9.84973 9.84974 -1.49276e-06 22 -9.61651e-07Z" fill="white"/>
3629 <path d="M26.5 26.5L17.5 17.5M17.5 26.5L26.5 17.5" stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3630 </svg>
3631 </span>
3632 <div class="image-player-session">
3633 <#-- Midias adaptativas de imagem para desktop e mobile -->
3634 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${gItem.image.fileEntryId}") />
3635 <#assign urlAdaptativeMediaMobile = gItem.image.url/>
3636 <#assign urlAdaptativeMediaDesktop = gItem.image.url/>
3637
3638 <#if fileDataRequest?? && fileDataRequest.adaptedImages?? >
3639 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
3640 <#list dataAdaptativeMedia as data>
3641 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
3642 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
3643 </#if>
3644 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
3645 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
3646 </#if>
3647 </#list>
3648 </#if>
3649
3650 <picture >
3651 <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}" >
3652 <img width="274px" height="152px" loading="lazy" src="${urlAdaptativeMediaDesktop}" alt="${gItem.image.alt}"/>
3653 </picture>
3654 </div>
3655 </div>
3656 </div>
3657 </div>
3658 <#assign index = index + 1 />
3659 <#assign index = index + 1 />
3660 </#list>
3661 <div class="control-arrow left-arrow">
3662 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3663 <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3664 </svg>
3665 </div>
3666 <div class="control-arrow right-arrow">
3667 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3668 <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3669 </svg>
3670 </div>
3671 <div class="image-bullets">
3672 <#list 0..(newsInfo.galleryItems?size-1) as index>
3673 <div index="${index}" class="bullet"></div>
3674 </#list>
3675 </div>
3676 </div>
3677 <div class="control-arrow left-arrow">
3678 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3679 <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3680 </svg>
3681 </div>
3682 <div class="control-arrow right-arrow">
3683 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3684 <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3685 </svg>
3686 </div>
3687 <div class="image-bullets">
3688 <#list 0..(newsInfo.galleryItems?size-1) as index>
3689 <div index="${index}" class="bullet"></div>
3690 </#list>
3691 </div>
3692 </div>
3693 </div>
3694 </div>
3695
3696 <style>
3697
3698 .ptb-news__read-news .gallery {
3699 padding-top: 42px;
3700 }
3701
3702 .ptb-news__read-news .gallery * {
3703 margin: 0;
3704 padding: 0;
3705 }
3706
3707 .ptb-news__read-news .gallery {
3708 display: flex;
3709 gap: var(--space-xl, 40px);
3710 flex-direction: column;
3711 }
3712
3713 .ptb-news__read-news .gallery .control-arrow {
3714 position: fixed;
3715 height: 100%;
3716 align-items: center;
3717 display: flex;
3718 justify-content: center;
3719 display: none;
3720 z-index: 9999;
3721 }
3722
3723 .ptb-news__read-news .gallery .left-arrow {
3724 top: 0;
3725 left: 5vw;
3726 }
3727
3728 .ptb-news__read-news .gallery .right-arrow {
3729 top: 0;
3730 right: 5vw;
3731 }
3732
3733 .ptb-news__read-news .gallery .lefg-arrow svg {
3734 margin-left: 16px !important;
3735 }
3736
3737 .ptb-news__read-news .gallery .right-arrow svg {
3738 margin-right: 16px !important;
3739 }
3740
3741 .ptb-news__read-news .gallery .image-bullets {
3742 display: none;
3743 gap: var(--space-sm, 16px);
3744 position: fixed;
3745 left: 0;
3746 bottom: calc(10vh + 24px);
3747 width: 100vw;
3748 z-index: 9999;
3749 justify-content: center;
3750 }
3751
3752 .ptb-news__read-news .gallery .image-bullets .bullet {
3753 width: var(--size-xs, 16px);
3754 height: var(--size-xs, 16px);
3755 border-radius: 50%;
3756 border: 1px solid var(--color-neutral-100, #FFFFFF);
3757 z-index: 9999;
3758 }
3759
3760 .ptb-news__read-news .gallery .image-bullets .bullet.current-item {
3761 background: var(--color-neutral-100, #FFFFFF);
3762 }
3763
3764 .ptb-news__read-news .gallery .control-arrow {
3765 position: fixed;
3766 height: 100%;
3767 align-items: center;
3768 display: flex;
3769 justify-content: center;
3770 display: none;
3771 z-index: 9999;
3772 }
3773
3774 .ptb-news__read-news .gallery .left-arrow {
3775 top: 0;
3776 left: 5vw;
3777 }
3778
3779 .ptb-news__read-news .gallery .right-arrow {
3780 top: 0;
3781 right: 5vw;
3782 }
3783
3784 .ptb-news__read-news .gallery .lefg-arrow svg {
3785 margin-left: 16px !important;
3786 }
3787
3788 .ptb-news__read-news .gallery .right-arrow svg {
3789 margin-right: 16px !important;
3790 }
3791
3792 .ptb-news__read-news .gallery .image-bullets {
3793 display: none;
3794 gap: var(--space-sm, 16px);
3795 position: fixed;
3796 left: 0;
3797 bottom: calc(10vh + 24px);
3798 width: 100vw;
3799 z-index: 9999;
3800 justify-content: center;
3801 }
3802
3803 .ptb-news__read-news .gallery .image-bullets .bullet {
3804 width: var(--size-xs, 16px);
3805 height: var(--size-xs, 16px);
3806 border-radius: 50%;
3807 border: 1px solid var(--color-neutral-100, #FFFFFF);
3808 z-index: 9999;
3809 }
3810
3811 .ptb-news__read-news .gallery .image-bullets .bullet.current-item {
3812 background: var(--color-neutral-100, #FFFFFF);
3813 }
3814
3815 .ptb-news__read-news .gallery .title-container {
3816 display: flex;
3817 align-items: center;
3818 gap: var(--space-sm, 16px);
3819 }
3820
3821 .ptb-news__read-news .gallery .title-container svg {
3822 width: var(--size-md, 24px);
3823 height: 21px;
3824 }
3825
3826 .ptb-news__read-news .gallery .title-container .title {
3827 color: var(--color-neutral-800, #373737);
3828 font-family: var(--font-family-base);
3829 font-size: var(--font-size-lg);
3830 font-style: var(--font-style-normal);
3831 font-weight: var(--font-weight-bold);
3832 line-height: var(--line-height-md);
3833 }
3834
3835 body.high-contrast-active .ptb-news__read-news .gallery .title-container .title {
3836 color: var(--color-neutral-100);
3837 }
3838
3839 .ptb-news__read-news .gallery .image-container {
3840 display: flex;
3841 gap: var(--space-sm, 16px);
3842 flex-wrap: wrap;
3843 }
3844
3845 .ptb-news__read-news .gallery .image-container .modal-image-fragment {
3846 width: inherit;
3847 height: inherit;
3848 max-height: calc(100vw/2);
3849 padding: 0;
3850 margin: 0;
3851 overflow: hidden;
3852 }
3853
3854 .ptb-news__read-news .gallery .image-container .modal-image-fragment * {
3855 box-sizing: border-box;
3856 margin: 0;
3857 padding: 0;
3858 }
3859
3860 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container {
3861 width: 100%;
3862 height: inherit;
3863 display: flex;
3864 justify-content: center;
3865 align-items: center;
3866 cursor: pointer;
3867 position: relative;
3868 }
3869
3870 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing {
3871 position: fixed;
3872 top: 0;
3873 left: 0;
3874 width: 100vw !important;
3875 height: 100vh !important;
3876 z-index: 9999 !important;
3877 background-color: rgba(0, 0, 0, 0.75);
3878 max-height: 100vh;
3879 }
3880
3881 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .click-image {
3882 height: 100%;
3883 width: 100%;
3884 position: absolute;
3885 z-index: 3;
3886 }
3887
3888 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container {
3889 width: 100%;
3890 height: 100%;
3891 }
3892
3893 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing {
3894 position: relative;
3895 width: 90vw !important;
3896 height: 80vh !important;
3897 z-index: 9999 !important;
3898 background-color: rgba(0, 0, 0, 0.75);
3899 border-radius: var(--border-radius-card);
3900 }
3901
3902 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image {
3903 display: none;
3904 position: absolute;
3905 top: 0;
3906 right: 0;
3907 transform: translate(100%, -100%);
3908 z-index: 99999;
3909 }
3910
3911 body.high-contrast-active .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image path:nth-child(1) {
3912 fill: var(--background-Surface-level-01, #010101);
3913 }
3914
3915 body.high-contrast-active .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image path:nth-child(2) {
3916 stroke: #E4F7E8;
3917 }
3918
3919 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image.image-active {
3920 display: block;
3921 }
3922
3923 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session {
3924 width: 100%;
3925 height: 100%;
3926 }
3927
3928 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session {
3929 width: 90vw !important;
3930 height: 80vh !important;
3931 z-index: 9999 !important;
3932 background-color: rgba(0, 0, 0, 0.75);
3933 border-radius: var(--border-radius-card);
3934 overflow: hidden;
3935 }
3936
3937 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session img {
3938 object-fit: cover;
3939 }
3940
3941 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session img {
3942 width: 100%;
3943 height: 100%;
3944 margin-left: 0 !important;
3945 max-height: 100vh;
3946 }
3947
3948 .ptb-news__read-news .gallery .image-container img {
3949 width: 274px;
3950 height: 152px;
3951 border-radius: var(--border-radius-md, 8px);
3952 cursor: pointer;
3953 }
3954
3955 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
3956
3957 .ptb-news__read-news .gallery {
3958 padding-top: var(--space-xl, 40px);
3959 }
3960
3961 .ptb-news__read-news .gallery .image-container {
3962 gap: var(--space-xxs, 8px);
3963 }
3964
3965 .ptb-news__read-news .gallery .image-container img {
3966 width: 296px;
3967 height: 180px;
3968 }
3969
3970 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing {
3971 transform: rotate(90deg);
3972 transform-origin: center;
3973 width: 80vh !important;
3974 height: 90vw !important;
3975 }
3976
3977 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing img{
3978 cursor: pointer;
3979 }
3980
3981 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session {
3982 width: 80vh !important;
3983 height: 90vw !important;
3984 }
3985
3986 .ptb-news__read-news .gallery .lefg-arrow svg {
3987 margin-left: 4px !important;
3988 }
3989
3990 .ptb-news__read-news .gallery .right-arrow svg {
3991 margin-right: 4px !important;
3992 }
3993
3994 .ptb-news__read-news .gallery .image-bullets {
3995 gap: 14px;
3996 }
3997
3998 .ptb-news__read-news .gallery .image-bullets .bullet {
3999 width: var(--size-xxs, 12px);
4000 height: var(--size-xxs, 12px);
4001 }
4002
4003 .ptb-news__read-news .gallery .lefg-arrow svg {
4004 margin-left: 4px !important;
4005 }
4006
4007 .ptb-news__read-news .gallery .right-arrow svg {
4008 margin-right: 4px !important;
4009 }
4010
4011 .ptb-news__read-news .gallery .image-bullets {
4012 gap: 14px;
4013 }
4014
4015 .ptb-news__read-news .gallery .image-bullets .bullet {
4016 width: var(--size-xxs, 12px);
4017 height: var(--size-xxs, 12px);
4018 }
4019 }
4020
4021 </style>
4022
4023 <script>
4024
4025
4026 const allModalImagesFragment = document.querySelectorAll(".ptb-news__read-news .gallery .modal-image-fragment");
4027 const totalItems = allModalImagesFragment.length;
4028 const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets");
4029 const bullets = bulletsContainer.querySelectorAll(".bullet");
4030 let currentItem = 0;
4031 const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow");
4032 const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow");
4033
4034 const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4035 getImageClick.classList.remove('image-playing');
4036 imagePlayerContainer.classList.remove('image-playing');
4037 imageContainer.classList.remove('image-playing');
4038
4039 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4040 currentBullet && currentBullet.classList.remove('current-item');
4041
4042 closeImage.classList.remove('image-active');
4043
4044 document.querySelector("body").style.overflow = 'initial';
4045 [nextImage, previousImage].forEach(item => {
4046 item.style.display = "none";
4047 });
4048 bulletsContainer.style.display = "none";
4049 }
4050
4051 const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4052 getImageClick.classList.add('image-playing');
4053 imagePlayerContainer.classList.add('image-playing');
4054 imageContainer.classList.add('image-playing');
4055 closeImage.classList.add('image-active');
4056
4057
4058 document.querySelector("body").style.overflow = 'hidden';
4059 [nextImage, previousImage].forEach(item => {
4060 item.style.display = "flex";
4061 });
4062 bulletsContainer.style.display = "flex";
4063 bullets[index].classList.add('current-item');
4064 }
4065
4066 const changeImage = (next) => {
4067 if(next == currentItem || next < 0 || next >= totalItems) return;
4068
4069 const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image');
4070 const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container');
4071 const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container');
4072 const image = imagePlayerContainer.querySelector('img');
4073 const closeImage = imagePlayerContainer.querySelector('.close-image');
4074
4075 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4076 currentBullet.classList.remove('current-item');
4077
4078 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
4079 allModalImagesFragment[next].querySelector('.click-image')?.click();
4080
4081 const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next + '"]')
4082 nextBullet.classList.add('current-item');
4083 currentItem = next;
4084 }
4085
4086 nextImage.addEventListener('click', () => {
4087 changeImage(currentItem + 1);
4088 });
4089
4090 previousImage.addEventListener('click', () => {
4091 changeImage(currentItem - 1);
4092 });
4093
4094 bullets.forEach((bullet, bulletIndex) => {
4095 bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ;
4096 });
4097
4098 allModalImagesFragment.forEach((modalImageFragment, index)=>{
4099 const totalItems = allModalImagesFragment.length;
4100 const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets");
4101 const bullets = bulletsContainer.querySelectorAll(".bullet");
4102 let currentItem = 0;
4103 const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow");
4104 const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow");
4105
4106 const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4107 getImageClick.classList.remove('image-playing');
4108 imagePlayerContainer.classList.remove('image-playing');
4109 imageContainer.classList.remove('image-playing');
4110
4111 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4112 currentBullet && currentBullet.classList.remove('current-item');
4113
4114 closeImage.classList.remove('image-active');
4115
4116 document.querySelector("body").style.overflow = 'initial';
4117 [nextImage, previousImage].forEach(item => {
4118 item.style.display = "none";
4119 });
4120 bulletsContainer.style.display = "none";
4121 }
4122
4123 const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4124 getImageClick.classList.add('image-playing');
4125 imagePlayerContainer.classList.add('image-playing');
4126 imageContainer.classList.add('image-playing');
4127 closeImage.classList.add('image-active');
4128
4129
4130 document.querySelector("body").style.overflow = 'hidden';
4131 [nextImage, previousImage].forEach(item => {
4132 item.style.display = "flex";
4133 });
4134 bulletsContainer.style.display = "flex";
4135 bullets[index].classList.add('current-item');
4136 }
4137
4138 const changeImage = (next) => {
4139 if(next == currentItem || next < 0 || next >= totalItems) return;
4140
4141 const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image');
4142 const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container');
4143 const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container');
4144 const image = imagePlayerContainer.querySelector('img');
4145 const closeImage = imagePlayerContainer.querySelector('.close-image');
4146
4147 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4148 currentBullet.classList.remove('current-item');
4149
4150 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
4151 allModalImagesFragment[next].querySelector('.click-image')?.click();
4152
4153 const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next + '"]')
4154 nextBullet.classList.add('current-item');
4155 currentItem = next;
4156 }
4157
4158 nextImage.addEventListener('click', () => {
4159 changeImage(currentItem + 1);
4160 });
4161
4162 previousImage.addEventListener('click', () => {
4163 changeImage(currentItem - 1);
4164 });
4165
4166 bullets.forEach((bullet, bulletIndex) => {
4167 bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ;
4168 });
4169
4170 allModalImagesFragment.forEach((modalImageFragment, index)=>{
4171 const getImageClick = modalImageFragment.querySelector('.click-image');
4172 const imageContainer = modalImageFragment.querySelector('.modal-image-container');
4173 const imagePlayerContainer = modalImageFragment.querySelector('.image-player-container');
4174
4175 const image = imagePlayerContainer.querySelector('img');
4176 const closeImage = imagePlayerContainer.querySelector('.close-image');
4177 const body = document.body;
4178
4179 const toTopButton = document.querySelector(".fragment_88038 .petro-button");
4180
4181 getImageClick.addEventListener('click', () => {
4182 if (document.body.classList.contains('has-edit-mode-menu')) {
4183 return;
4184 }
4185 currentItem = index;
4186 currentItem = index;
4187 if (imagePlayerContainer.classList.contains('image-playing')) {
4188 toTopButton && (toTopButton.style.zIndex = "");
4189 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImagegetImageClick, imagePlayerContainer, imageContainer, closeImage);
4190 } else {
4191 playImage(index, getImageClick, imagePlayerContainer, imageContainer, closeImageindex, getImageClick, imagePlayerContainer, imageContainer, closeImage);
4192 toTopButton && (toTopButton.style.zIndex = "1");
4193 }
4194 })
4195
4196 closeImage.addEventListener('click', () => {
4197 if (imagePlayerContainer.classList.contains('image-playing')) {
4198 toTopButton && (toTopButton.style.zIndex = "");
4199 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
4200 const bulletToClose = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + index + '"]')
4201 bulletToClose?.classList.remove('current-item');
4202 }
4203 })
4204 });
4205 </script>
4206
4207</#macro>
4208
4209
4210<#-- ################################################################################################################## -->
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224 <#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
4225<#macro renderQuotes newsInfo>
4226 <#if newsInfo.quotes?size != 0>
4227 <#--quotes "escondidas" que serão unidas a .ptb-news__read-content -->
4228
4229 <div class="ptb-news__quotes-container d-none ">
4230 <div id="ptb-news__quotes-identifiers">
4231 <#assign separator = "">
4232 <#list newsInfo.quotes as quote>
4233 ${quote.id};
4234 <#assign separator = ";">
4235 </#list>
4236 </div>
4237 <#list newsInfo.quotes as quote>
4238 <#assign quotes_index = quote?index>
4239 <div id="ptb-news__quotes-container-${quote_index}">
4240 <#assign noAuthorWrapper = !((quote.image.url?? && quote.image.url?has_content) || (quote.author?has_content)) />
4241 <div class="quote <#if noAuthorWrapper>no-author-wrapper</#if>">
4242 <div class="text-wrapper">
4243 <blockquote class="text">${quote.content}</blockquote >
4244 </div>
4245 <#if !noAuthorWrapper>
4246 <div class="author-wrapper">
4247 <#if quote.image.url?? && quote.image.url?has_content>
4248 <#assign imageUrl = "/o/adaptive-media/image/" + quote.image.fileEntryId +"/Thumbnail-300x300/image"/>
4249 <img src="${imageUrl}" loading="lazy" alt="${quote.image.alt}">
4250 </#if>
4251 <#if quote.author?? && quote?has_content>
4252 <p class="author">${quote.author}</p>
4253 </#if>
4254 </div>
4255 </#if>
4256 </div>
4257 </div>
4258 </#list>
4259 </div>
4260
4261 <script>
4262 var newsContent_code = document.querySelector(".news-content").innerHTML;
4263
4264 var quotesIdentifiers = document.querySelector("#ptb-news__quotes-identifiers").innerHTML.trim().split(";");
4265 quotesIdentifiers.forEach((quoteIdentifier, index) => {
4266 const quoteIdentifierContent = document.querySelector("#ptb-news__quotes-container-" + index);
4267 if (quoteIdentifierContent) {
4268 const tag = "#[" + quoteIdentifier.trim() + "]";
4269 const splitContent = newsContent_code.split(tag);
4270 newsContent_code = splitContent.join(quoteIdentifierContent.innerHTML);
4271 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
4272 }
4273 });
4274
4275
4276 var ptb_news__read_content = document.querySelector(".news-content");
4277 ptb_news__read_content.innerHTML = newsContent_code;
4278
4279 </script>
4280
4281 <style>
4282
4283 .ptb-news__read-news .quote {
4284 display: flex;
4285 flex-direction: column;
4286 gap: var(--space-md, 24px);
4287 }
4288
4289 .ptb-news__read-news .quote.no-author-wrapper{
4290 gap: 0;
4291 }
4292
4293 .ptb-news__read-news .quote .text-wrapper {
4294 padding-left: var(--space-xl, 40px);
4295 }
4296
4297 .ptb-news__read-news .quote .text-wrapper .text {
4298 font-style: var(--font-style-italic) !important;
4299 padding-left: var(--space-md, 24px);
4300 margin-bottom: 0;
4301 border-left: 1px solid var(--border-color-mid, #d7d7d7);
4302 font-size: var(--font-size-xxs, 16px);
4303 }
4304
4305 .ptb-news__read-news .quote .author-wrapper {
4306 display: flex;
4307 flex-direction: row;
4308 gap: var(--space-md, 24px);
4309 }
4310
4311 .ptb-news__read-news .news-content .quote .author-wrapper img {
4312 height: var(--size-xxxl, 56px);
4313 width: var(--size-xxxl, 56px);
4314 border-radius: 100px;
4315 border: var(--size-nano, 2px) solid var(--border-color-mid) !important;
4316 }
4317
4318 .ptb-news__read-news .news-content .quote .author-wrapper p {
4319 margin: 0;
4320 align-self: center;
4321 font-size: var(--font-size-xs, 18px);
4322 font-style: var(--font-style-normal, normal);
4323 font-weight: var(--font-weight-bold, 700);
4324 line-height: var(--line-height-xs, 100%);
4325 }
4326
4327 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4328 .ptb-news__read-news .quote .text-wrapper {
4329 padding-left: 0;
4330 }
4331
4332 .ptb-news__read-news .quote .text-wrapper .text {
4333 font-size: var(--font-size-xxxs, 14px);
4334 }
4335
4336 .ptb-news__read-news .news-content .quote .author-wrapper p {
4337 font-size: var(--font-size-xxs, 16px);
4338 }
4339 }
4340 </style>
4341 </#if>
4342</#macro>
4343
4344
4345
4346
4347<#-- ################################################################################################################## -->
4348
4349
4350
4351
4352
4353
4354
4355
4356<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ -->
4357<#--
4358Add elements from the sidebar to define your template. Type "${" to use the
4359autocomplete feature.
4360-->
4361<#function extractFeaturedNewsHeadline fieldList xmlArticle>
4362 <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")>
4363</#function>
4364
4365<#function extractNewsSummary fieldList xmlArticle>
4366 <#return getFieldValue(fieldList, xmlArticle, "Resumo da notícia")>
4367</#function>
4368
4369<#function extractPublishDate journalArticle>
4370 <#assign lastPublishDate = journalArticle.getModifiedDate()>
4371 <#if journalArticle.getLastPublishDate()??>
4372 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
4373 <#else>
4374 <#assign lastPublishDate = journalArticle.getModifiedDate()>
4375 </#if>
4376 <#return lastPublishDate />
4377</#function>
4378
4379<#-- Seção da imagem de destaque ---------------------------------------------------------------------->
4380<#function extractNewsMedia fieldList xmlArticle fileEntryService>
4381 <#-- Tentando pegar Imagem -->
4382 <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) />
4383 <#assign media = {} />
4384 <#list mediasGroup as mediaGroup >
4385 <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />
4386 <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "fileEntryId" : media.fileEntryId} />
4387
4388 <#-- Se não tiver imagem, tentar pegar vídeo -->
4389 <#if !media.imageSrc?has_content>
4390 <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") />
4391 <#if youtubeID?? && youtubeID?has_content>
4392 <#assign media = {"videoYotubeID": youtubeID} />
4393 <#else>
4394 <#-- Tentar pegar vídeo Interno -->
4395 <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) />
4396 <#if internalVideo?? && internalVideo?has_content>
4397 <#assign media = {"internalVideo": internalVideo} />
4398 </#if>
4399 </#if>
4400 </#if>
4401
4402 <#assign referenceMediasGroup = getNodes(getIdFromFieldName(fieldList, "Referências"), mediaGroup) />
4403 <#list referenceMediasGroup as referenciaMediaGroup >
4404 <#assign credits = getFieldValue(fieldList, referenceMediasGroup, "Crédito da mídia de destaque da notícia") />
4405 <#assign legend = getFieldValue(fieldList, referenceMediasGroup, "Legenda da mídia de destaque da notícia") />
4406 </#list>
4407
4408 <#assign media = media + {"credits": credits, "legend": legend} />
4409
4410 </#list>
4411
4412 <#return media>
4413</#function>
4414
4415
4416<#--------------------- Renderização de Lista de Cards ----------------------------------------------->
4417
4418<#-- Root Css -> Para poder instanciar dois elementos e não dar confusão no JS -->
4419<#assign rootCss = "card-news-list-container_" + randomNumber(4586) />
4420
4421<#attempt>
4422 <#assign ourEnergyStyles = [] />
4423 <#list ourEnergyVocabulary.getCategories() as ourEnergyCategory >
4424 <#assign shadowColorCategory = "" />
4425 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra")??)>
4426 <#assign categoryShadowColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra") />
4427 <#assign shadowColorCategory = categoryShadowColorByService.value />
4428 </#if>
4429
4430 <#assign backgroundColorCategory = "" />
4431 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo")??)>
4432 <#assign categoryBackgroundColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo") />
4433 <#assign backgroundColorCategory = categoryBackgroundColorByService.value />
4434 </#if>
4435
4436 <#assign textColorCategory = "" />
4437 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto")??)>
4438 <#assign categoryTextColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto") />
4439 <#assign textColorCategory = categoryTextColorByService.value />
4440 </#if>
4441
4442 <#assign textColorHighContrastCategory = "" />
4443 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste")??)>
4444 <#assign categoryTextColorHighContrastByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste") />
4445 <#assign textColorHighContrastCategory = categoryTextColorHighContrastByService.value />
4446 </#if>
4447
4448 <#assign ourEnergyStyles += [{"titleLocale": ourEnergyCategory.getTitle(locale),"shadowColor": shadowColorCategory, "backgroundColor": backgroundColorCategory, "textColor": textColorCategory, "textColorHighContrast": textColorHighContrastCategory}] />
4449 </#list>
4450
4451 <#recover>
4452 <#assign ourEnergyStyles = [] />
4453
4454</#attempt>
4455
4456<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article -->
4457<#function getFirstCategoryTitleLocaleOfVocabulary journalArticle vocabulary >
4458 <#attempt>
4459 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
4460
4461 <#list categories as category>
4462 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
4463 <#return category.getTitle(locale)>
4464 </#if>
4465 </#list>
4466
4467 <#return "">
4468
4469 <#recover>
4470 <#return "" />
4471
4472 </#attempt>
4473</#function>
4474
4475<#-- Função para obter os dados de um card no Web Content (Journal Article) -->
4476<#function getDataForCard entry >
4477 <#attempt>
4478 <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) />
4479 <#assign ddmStructure = journalArticle.getDDMStructure() />
4480 <#assign fieldList = getFieldListByStructure(ddmStructure) />
4481 <#assign xmlArticle = journalArticle.getDocument().getRootElement() />
4482
4483 <#-- Tentando pegar Imagem -->
4484 <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) />
4485 <#assign media = "" />
4486 <#list mediasGroup as mediaGroup >
4487 <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />
4488
4489 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${media.fileEntryId}") />
4490
4491 <#assign urlAdaptativeMediaDesktop = ""/>
4492 <#assign urlAdaptativeMediaMobile = ""/>
4493 <#if media.url?? && media.url?has_content && fileDataRequest?? && fileDataRequest.adaptedImages?? >
4494 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
4495 <#list dataAdaptativeMedia as data>
4496 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
4497 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
4498 </#if>
4499 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
4500 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
4501 </#if>
4502 </#list>
4503 </#if>
4504 <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "imageFileEntryId": media.fileEntryId, "urlAdaptativeMedia": {"mobile": urlAdaptativeMediaMobile, "desktop": urlAdaptativeMediaDesktop}} />
4505
4506 <#-- Se não tiver imagem, tentar pegar vídeo -->
4507 <#if !media.imageSrc?? || !media.imageSrc?has_content>
4508 <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") />
4509 <#if youtubeID?? && youtubeID?has_content>
4510 <#assign media = {"videoYotubeID": youtubeID} />
4511 <#else>
4512 <#-- Tentar pegar vídeo Interno -->
4513 <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) />
4514 <#if internalVideo?? && internalVideo?has_content>
4515 <#assign media = {"internalVideo": internalVideo} />
4516 </#if>
4517 </#if>
4518 </#if>
4519 </#list>
4520
4521 <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") />
4522
4523 <#assign timeRead = getFieldValue(fieldList, xmlArticle, "Tempo de Leitura") />
4524
4525 <#assign ourEnergyCategory = getFirstCategoryTitleLocaleOfVocabulary(entry, ourEnergyVocabulary) />
4526
4527 <#assign typeOfNews = getFirstCategoryTitleLocaleOfVocabulary(entry, typeOfNewsVocabulary) />
4528
4529 <#if themeDisplay.getPortalURL()?contains("webserver")>
4530 <#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()>
4531 <#else>
4532 <#assign urlNews = themeDisplay.getPortalURL() + "/w/" + journalArticle.getUrlTitle()>
4533 </#if>
4534
4535 <#assign cardData = {"media": media, "title": title, "timeRead": timeRead, "ourEnergyCategory": ourEnergyCategory, "typeOfNews": typeOfNews, "urlNews": urlNews} />
4536
4537 <#return cardData>
4538
4539 <#recover>
4540 <#return {} />
4541 </#attempt>
4542
4543 <#-- cardData -> image: url, alt
4544 title
4545 timeRead
4546 ourEnergyCategory
4547 typeOfNews
4548 urlNews
4549 -->
4550</#function>
4551
4552
4553<#-- Macro para renderizar os arrows-->
4554<#macro renderArrows>
4555 <div class="card-news-list-arrows-breakpoint">
4556 <div class="card-news-list-arrows">
4557 <div class="card-news-arrow-left arrow-disable">
4558 <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
4559 <path d="M1 17C1 8.16344 8.16344 1 17 1C25.8366 1 33 8.16344 33 17C33 25.8366 25.8366 33 17 33C8.16344 33 1 25.8366 1 17Z" stroke="#959595"/>
4560 <path d="M22.5 17H11.5M11.5 17L16 12.5M11.5 17L16 21.5" stroke="#525252" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4561 </svg>
4562 </div>
4563 <div class="card-news-arrow-right">
4564 <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
4565 <path d="M1 17C1 8.16344 8.16344 1 17 1C25.8366 1 33 8.16344 33 17C33 25.8366 25.8366 33 17 33C8.16344 33 1 25.8366 1 17Z" stroke="#008542"/>
4566 <path d="M11.5 17H22.5M22.5 17L18 12.5M22.5 17L18 21.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4567 </svg>
4568
4569 </div>
4570 </div>
4571 </div>
4572
4573 <style>
4574
4575 .${rootCss} .card-news-list-arrows-breakpoint {
4576 position: relative;
4577 z-index: 1;
4578 width: 100%;
4579 }
4580
4581 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows {
4582 display: flex;
4583 align-items: flex-start;
4584 justify-self: flex-end;
4585 gap: var(--space-xxs, 8px);
4586 }
4587
4588 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left,
4589 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right {
4590 cursor: pointer;
4591 }
4592
4593 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1),
4594 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) {
4595 fill: rgb(0, 133, 66);
4596 }
4597
4598 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1),
4599 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) {
4600 fill: white;
4601 }
4602
4603 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2),
4604 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) {
4605 stroke: #fff;
4606 }
4607
4608 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2),
4609 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) {
4610 stroke: #010101;
4611 }
4612
4613 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable,
4614 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable {
4615 opacity: 0.4;
4616 cursor: auto;
4617 }
4618
4619 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path,
4620 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path {
4621 stroke: rgb(0, 133, 66);
4622 transition: all 300ms ease-in-out;
4623 }
4624
4625 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path,
4626 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path {
4627 stroke: rgba(228, 247, 232, 1);
4628 }
4629
4630 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1),
4631 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) {
4632 stroke: rgb(149, 149, 149);
4633 }
4634
4635 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1),
4636 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) {
4637 stroke: rgba(215, 215, 215, 1);
4638 }
4639
4640 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2),
4641 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) {
4642 stroke: rgb(82, 82, 82);
4643 }
4644
4645 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2),
4646 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) {
4647 stroke: rgba(149, 149, 149, 1);
4648 }
4649
4650 @media screen and (min-width: 1440px) {
4651 .${rootCss} .card-news-list-arrows-breakpoint {
4652 width: 100%;
4653 }
4654 }
4655
4656 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4657
4658 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows {
4659 justify-self: flex-start;
4660 margin-top: var(--space-lg);
4661 }
4662 }
4663
4664 </style>
4665
4666</#macro>
4667
4668
4669<#-- Macro para renderizar um Card -->
4670<#macro renderCard cardData>
4671 <#-- cardData -> image: url, alt
4672 title
4673 timeRead
4674 ourEnergyCategory
4675 typeOfNews
4676 urlNews
4677 -->
4678
4679 <div class="card-news-container">
4680 <a class="news-page-see-more-link card-news-link" href="${cardData.urlNews}"> Link da Notícia ${cardData.title} </a>
4681 <div class="card-news-thumb">
4682 <#assign noImage = "" />
4683 <#if cardData.media.imageSrc?? && cardData.media.imageSrc?has_content>
4684 <#assign imageSrcDesktop = cardData.media.imageSrc />
4685 <#assign imageSrcMobile = cardData.media.imageSrc />
4686 <#if cardData.media.urlAdaptativeMedia?? && cardData.media.urlAdaptativeMedia?has_content>
4687 <#assign imageSrcDesktop = cardData.media.urlAdaptativeMedia.desktop />
4688 <#assign imageSrcMobile = cardData.media.urlAdaptativeMedia.mobile />
4689 </#if>
4690 <picture >
4691 <source media="(max-width:767px)" srcset="${imageSrcMobile}">
4692 <img class="card-news-image" loading="lazy" src="${imageSrcDesktop}" alt="${cardData.media.imageAlt}"/>
4693 </picture>
4694 <#else>
4695 <#if cardData.media.videoYotubeID?? && cardData.media.videoYotubeID?has_content>
4696 <picture >
4697 <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/mqdefault.jpg">
4698 <img class="card-news-image" loading="lazy" src="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/maxresdefault.jpg" alt="YouTube Thumbnail"/>
4699 </picture>
4700 <#else>
4701 <#if (cardData.media.internalVideo?? && cardData.media.internalVideo.url?has_content) >
4702 <video class="card-news-image" loading="lazy">
4703 <source src="${cardData.media.internalVideo.url}">
4704 Your browser does not support the video tag.
4705 </video>
4706 <#else>
4707 <#assign noImage = "no-image" />
4708 </#if>
4709 </#if>
4710 <svg class="thumb-play-icon" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4711 <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z" fill="white" fill-opacity="0.8"/>
4712 <path d="M22.2563 15.5744L13.2625 10.0744C13.1868 10.0277 13.1 10.0021 13.0111 10.0001C12.9221 9.99816 12.8343 10.02 12.7566 10.0633C12.6789 10.1066 12.6141 10.1698 12.569 10.2465C12.5239 10.3232 12.5001 10.4105 12.5 10.4994V21.4994C12.5001 21.5884 12.5239 21.6757 12.569 21.7524C12.6141 21.8291 12.6789 21.8923 12.7566 21.9356C12.8343 21.9789 12.9221 22.0007 13.0111 21.9988C13.1 21.9968 13.1868 21.9712 13.2625 21.9244L22.2563 16.4244C22.3301 16.3808 22.3913 16.3186 22.4338 16.2441C22.4763 16.1696 22.4987 16.0852 22.4987 15.9994C22.4987 15.9137 22.4763 15.8293 22.4338 15.7548C22.3913 15.6803 22.3301 15.6181 22.2563 15.5744Z" fill="#008542"/>
4713 </svg>
4714 </#if>
4715 </div>
4716
4717 <div class="card-news-category-container ${noImage}">
4718 <div data-category="${cardData.ourEnergyCategory}" class="card-news-category paragraph-micro-regular"> ${cardData.ourEnergyCategory} </div>
4719 </div>
4720
4721 <div class="card-news-text-content ${noImage}">
4722 <div class="card-news-title h5"> ${cardData.title} </div>
4723
4724 <div class="card-news-info">
4725 <div class="card-news-type">
4726 <#if getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default(""))?? >
4727 <#assign postTypeIconUrl = getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default("")) />
4728 <img src="${postTypeIconUrl}" loading="lazy" alt="post type icon" />
4729 <div class="card-news-type-text paragraph-micro-regular">${cardData.typeOfNews}</div>
4730 <#else/>
4731 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
4732 <path d="M6.25 7.5H13.75M6.25 10H13.75M6.25 12.5H13.75M3.125 3.75H16.875C17.2202 3.75 17.5 4.02982 17.5 4.375V15.625C17.5 15.9702 17.2202 16.25 16.875 16.25H3.125C2.77982 16.25 2.5 15.9702 2.5 15.625V4.375C2.5 4.02982 2.77982 3.75 3.125 3.75Z" stroke="#959595" stroke-linecap="round" stroke-linejoin="round"/>
4733 </svg>
4734 <div class="card-news-type-text paragraph-micro-regular">Artigo</div>
4735 </#if>
4736 </div>
4737
4738 <#if cardData.timeRead?? && cardData.timeRead?has_content>
4739 <div class="card-news-time-read">
4740 <svg class="card-news-icon-time-read" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
4741 <path d="M10.5 5.625C10.5 5.34886 10.2761 5.125 10 5.125C9.72386 5.125 9.5 5.34886 9.5 5.625H10.5ZM10 10H9.5C9.5 10.2761 9.72386 10.5 10 10.5V10ZM14.375 10.5C14.6511 10.5 14.875 10.2761 14.875 10C14.875 9.72386 14.6511 9.5 14.375 9.5V10.5ZM17 10C17 13.866 13.866 17 10 17V18C14.4183 18 18 14.4183 18 10H17ZM10 17C6.13401 17 3 13.866 3 10H2C2 14.4183 5.58172 18 10 18V17ZM3 10C3 6.13401 6.13401 3 10 3V2C5.58172 2 2 5.58172 2 10H3ZM10 3C13.866 3 17 6.13401 17 10H18C18 5.58172 14.4183 2 10 2V3ZM9.5 5.625V10H10.5V5.625H9.5ZM10 10.5H14.375V9.5H10V10.5Z" fill="#959595"/>
4742 </svg>
4743
4744 <div class="card-news-time-read-text paragraph-micro-regular">${cardData.timeRead} min</div>
4745 </div>
4746 </#if>
4747 </div>
4748 </div>
4749 </div>
4750</#macro>
4751
4752<style>
4753 .${rootCss} .card-news-container {
4754 width: 300px;
4755 height: 370px;
4756 display: flex;
4757 flex-direction: column;
4758 flex-shrink: 0;
4759 align-items: flex-start;
4760 border-radius: var(--border-radius-lg);
4761 border: var(--border-width-hairline) solid var(--border-card-default, #EEE);
4762 background: var(--background-surface-level-01, #FFF);
4763 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
4764 overflow: hidden;
4765 scroll-snap-align: start;
4766 cursor: pointer;
4767 transition: border 300ms ease-in-out;
4768 text-decoration: none;
4769 position: relative;
4770 }
4771
4772 body.high-contrast-active .${rootCss} .card-news-container {
4773 border: var(--border-width-hairline) solid var(--border-card-default, #525252);
4774 background: var(--background-surface-level-01, #010101);
4775 }
4776
4777 .${rootCss} .card-news-container:hover {
4778 border: var(--border-width-hairline) solid rgb(0, 133, 66);
4779 }
4780
4781 body.high-contrast-active .${rootCss} .card-news-container:hover {
4782 border: var(--border-width-hairline) solid var(--border-card-default, #E4F7E8);
4783 }
4784
4785 .${rootCss} .card-news-container .card-news-link {
4786 position: absolute;
4787 top: 0;
4788 width: 100%;
4789 height: 100%;
4790 z-index: 1;
4791 opacity: 0;
4792 }
4793
4794 .${rootCss} .card-news-container .card-news-thumb {
4795 position: relative;
4796 }
4797
4798 .${rootCss} .card-news-container .card-news-image {
4799 width: 298px;
4800 height: 168px;
4801 object-fit: cover;
4802 }
4803
4804
4805 .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon {
4806 position: absolute;
4807 left: 50%;
4808 top: 50%;
4809 transform: translate(-50%, -50%);
4810 }
4811
4812 body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(1) {
4813 fill: black;
4814 }
4815
4816 body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(2) {
4817 fill: white;
4818 }
4819
4820 .${rootCss} .card-news-container .card-news-category-container {
4821 position: relative;
4822 }
4823
4824 .${rootCss} .card-news-container .card-news-category-container .card-news-category {
4825 display: flex;
4826 justify-content: center;
4827 align-items: center;
4828 padding: var(--space-micro) var(--space-xs);
4829 position: absolute;
4830 z-index: 2;
4831 left: var(--space-md);
4832 top: -13px;
4833 border-radius: var(--border-radius-pill);
4834 background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 0%, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 100%), var(--default-sup-green-water, #006B65);
4835 box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10);
4836 line-height: var(--line-height-lg, 144%);
4837 color: var(--default-sup-green-water, #006B65);
4838 white-space: nowrap;
4839 }
4840
4841 body.high-contrast-active .${rootCss} .card-news-container .card-news-category-container .card-news-category {
4842 background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, #373737) 0%, var(--background-surface-opacity-light-level-07, #373737) 100%), var(--default-sup-green-water, #99E0DD);
4843 color: var(--default-sup-green-water, #99E0DD);
4844 }
4845
4846 .${rootCss} .card-news-container .card-news-category-container.no-image .card-news-category {
4847 position: relative;
4848 top: 0;
4849 left: 0;
4850 margin-left: var(--space-md);
4851 margin-top: var(--space-md);
4852 }
4853
4854 .${rootCss} .card-news-container .card-news-text-content {
4855 display: flex;
4856 padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px);
4857 flex-direction: column;
4858 justify-content: space-between;
4859 align-items: flex-start;
4860 flex: 1 0 0;
4861 align-self: stretch;
4862 }
4863
4864 .${rootCss} .card-news-container .card-news-text-content.no-image {
4865 padding-top: var(--space-sm);
4866 }
4867
4868 .${rootCss} .card-news-container .card-news-text-content .card-news-title {
4869 display: -webkit-box;
4870 -webkit-box-orient: vertical;
4871 -webkit-line-clamp: 4;
4872 align-self: stretch;
4873 overflow: hidden;
4874 color: var(--text-primary-default, #373737);
4875 text-overflow: ellipsis;
4876 margin: 0;
4877 }
4878
4879 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-title {
4880 color: var(--text-primary-default, #FFF);
4881 }
4882
4883 .${rootCss} .card-news-container .card-news-text-content .card-news-info {
4884 display: flex;
4885 align-items: center;
4886 align-content: center;
4887 gap: var(--space-sm, 16px);
4888 align-self: stretch;
4889 flex-wrap: wrap;
4890 }
4891
4892 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type,
4893 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read {
4894 display: flex;
4895 align-items: center;
4896 gap: var(--space-xxs, 8px);
4897 }
4898
4899 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type path {
4900 stroke: #D7D7D7;
4901 }
4902
4903 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text,
4904 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text {
4905 color: var(--text-tertiary-default, #959595);
4906 line-height: var(--line-height-lg, 144%);
4907 }
4908
4909 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text,
4910 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text {
4911 color: var(--text-tertiary-default, #EEE);
4912 }
4913
4914 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read {
4915 transform: translateY(-0.5px);
4916 }
4917
4918 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read path {
4919 fill: #D7D7D7;
4920 }
4921</style>
4922
4923<#assign maxNumberOfCards = 9/>
4924<#assign className = "com.liferay.journal.model.JournalArticle" />
4925<#assign classNameId = PortalUtil.getClassNameId(className) />
4926${AssetEntryQuery.setClassNameIds([classNameId]) }
4927${AssetEntryQuery.setEnd(maxNumberOfCards)}
4928
4929<#assign entries = []/>
4930<#assign ourEnergyCategoriesIds = getAllCategoryIdOfVocabulary(assetEntry, ourEnergyVocabulary) />
4931<#list ourEnergyCategoriesIds as ourEnergyCategoryId>
4932 ${AssetEntryQuery.setAllCategoryIds([ourEnergyCategoryId])}
4933 <#assign ents = AssetEntryQueryService.getEntries(AssetEntryQuery) />
4934 <#assign entries = entries + ents />
4935</#list>
4936
4937
4938<#-- Renderizar Lista de cards -->
4939<#if entries?has_content>
4940 <div class="${rootCss}">
4941 <div class="list-of-news-title breakpoint">
4942 <div class="list-of-news-title-col col-1-12 md-col-1-8 sm-col-1-4">
4943 <div class="list-title fragment_85017">
4944 <div class="petro-title">
4945 <h2 id="title" class="display-sm" style="color: var(--color-neutral-800)">
4946 <#if locale?lower_case == "pt_br"> Leia também <#else> Read also </#if>
4947 </h2>
4948 <div class="yellow-bar-container">
4949 <div class="yellow-bar bar-display-sm" style="background-color: var(--color-secondary-medium)"></div>
4950 <@renderArrows />
4951 </div>
4952 </div>
4953 </div>
4954 </div>
4955 </div>
4956
4957 <div class="card-news-list-breakpoint breakpoint">
4958 <div class="card-news-list col-1-12 md-col-1-8 sm-col-1-4">
4959 <#if entries?size gt maxNumberOfCards>
4960 <#assign entries = entries[0..maxNumberOfCards] />
4961 </#if>
4962 <#list entries as entry>
4963 <#if assetEntry.getClassPK() != entry.getClassPK() >
4964 <#assign cardData = getDataForCard(entry) />
4965 <@renderCard cardData/>
4966 </#if>
4967 </#list>
4968 </div>
4969 </div>
4970 </div>
4971</#if>
4972
4973
4974<style>
4975 .portlet {
4976 margin: 0;
4977 }
4978
4979 .${rootCss} {
4980 padding: var(--space-giant, 80px) 0;
4981 background: var(--background-surface-level-01, #FFF);
4982 width: 100%;
4983 position: relative;
4984 font-family: var(--font-family-base, "Petrobras Sans");
4985 display: flex;
4986 flex-direction: column;
4987 gap: var(--space-lg);
4988 }
4989
4990 body.high-contrast-active .${rootCss} {
4991 background: var(--background-surface-level-01, #010101);
4992 }
4993
4994 .${rootCss} .list-of-news-title {
4995 position: relative;
4996 z-index: 1;
4997 }
4998
4999 .${rootCss} body.high-contrast-active .fragment_614685 .petro-title .yellow-bar {
5000 background-color: #FFEEB3 !important;
5001 }
5002
5003 .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) {
5004 display: flex;
5005 }
5006
5007 .${rootCss} .card-news-list {
5008 display: flex;
5009 gap: var(--space-lg);
5010 overflow: auto;
5011 position: relative;
5012 z-index: 1;
5013 scroll-snap-type: x mandatory;
5014 scrollbar-width: none;
5015 }
5016
5017 .${rootCss} .card-news-list::-webkit-scrollbar {
5018 display: none;
5019 }
5020
5021 @media screen and (min-width: 1441px) {
5022 .${rootCss} .card-news-list-breakpoint {
5023 width: 100%;
5024 }
5025
5026 .${rootCss} .list-of-news-title {
5027 width: 100%;
5028 }
5029 }
5030
5031 @media screen and (max-width: 1024px) {
5032 .${rootCss} .fragment_614685 {
5033 padding: var(--space-xxl, 56px) 0;
5034 }
5035 }
5036
5037 @media screen and (max-width: 768px) {
5038 .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) {
5039 flex-direction: column;
5040 }
5041 }
5042
5043
5044</style>
5045
5046<#list ourEnergyStyles as ourEnergyStyle>
5047 <style>
5048 .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] {
5049 background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 0%, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 100%), #${ourEnergyStyle.backgroundColor} !important;
5050 box-shadow: 0px 2px 6px 0px #${ourEnergyStyle.shadowColor} !important;
5051 color: #${ourEnergyStyle.textColor} !important;
5052 }
5053
5054 body.high-contrast-active .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] {
5055 background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, rgba(55, 55, 55, 1)) 0%, var(--background-surface-opacity-light-level-07, rgba(55, 55, 55, 1)) 100%), #${ourEnergyStyle.backgroundColor} !important;
5056 color: #${ourEnergyStyle.textColorHighContrast} !important;
5057 }
5058
5059 </style>
5060</#list>
5061
5062<script>
5063
5064 function disableEnableArrow(arrow, scrollBar, maxDistance, direction)
5065 {
5066 if(direction === "left") {
5067 if (scrollBar.scrollLeft > 0) {
5068 arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable");
5069 }
5070 else {
5071 !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable");
5072 }
5073 }
5074 else if(direction === "right") {
5075 if (Math.ceil(scrollBar.scrollLeft + scrollBar.clientWidth) < maxDistance) {
5076 arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable");
5077 }
5078 else {
5079 !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable");
5080 }
5081 }
5082 }
5083
5084 function scrollCarousel()
5085 {
5086 const root = document.querySelector(".${rootCss}");
5087 if(root) {
5088 const scrollBar = root.querySelector(".${rootCss} .card-news-list");
5089 const gap = 32;// var(--space-lg);
5090 const stepLength = scrollBar.querySelector(".card-news-container").offsetWidth + gap;
5091 const arrowLeftBtn = root.querySelector(".card-news-arrow-left")
5092 const arrowRightBtn = root.querySelector(".card-news-arrow-right")
5093
5094 let maxDistance = scrollBar.scrollWidth;
5095
5096 arrowLeftBtn.addEventListener('click', () => {
5097 if (scrollBar.scrollLeft > 0) {
5098 scrollBar.scroll({
5099 left: scrollBar.scrollLeft - stepLength,
5100 behavior: "smooth",
5101 });
5102 }
5103 });
5104
5105 arrowRightBtn.addEventListener('click', () => {
5106 if (scrollBar.scrollLeft < maxDistance) {
5107 scrollBar.scroll({
5108 left: scrollBar.scrollLeft + stepLength,
5109 behavior: "smooth",
5110 });
5111 }
5112 });
5113
5114 scrollBar.addEventListener("scroll", ()=>{
5115 disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left");
5116 disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right");
5117 });
5118
5119 disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left");
5120 disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right");
5121
5122 }
5123 }
5124
5125 document.addEventListener('DOMContentLoaded', scrollCarousel);
5126
5127</script>
5128
5129<style>
5130
5131
5132.ptb-news__read-news .news-content .embed-responsive-youtube::before {
5133 padding-top: 0;
5134}
5135
5136.ptb-news__read-news .news-content .embed-responsive-liferay::before {
5137 padding-top: calc(9/16 *100% - 64px);
5138}
5139
5140.ptb-news__read-news .news-content .thumnail-play-button {
5141}
5142
5143.ptb-news__read-news .news-content .thumnail-play-button {
5144 position: relative;
5145 z-index: 100;
5146 height: 64px;
5147 width: 64px;
5148 background-repeat: no-repeat;
5149 top: calc(50%);
5150 left: calc(50% - 32px);
5151}
5152
5153
5154.ptb-news__read-news .news-content .thumnail-play-button-youtube {
5155 position: absolute;
5156 z-index: 100;
5157 height: 64px;
5158 width: 64px;
5159 background-repeat: no-repeat;
5160 top: calc(50% - 64px);
5161 left: calc(50% - 32px);
5162}
5163
5164.ptb-news__read-news .news-content .thumnail-play-button-liferay {
5165 position: relative;
5166 z-index: 100;
5167 height: 64px;
5168 width: 64px;
5169 top: calc(-50% + 32px);
5170 left: calc(50% - 32px);
5171 background-repeat: no-repeat;
5172}
5173
5174
5175 .ptb-news__read-news .news-content .embed-responsive-youtube img {
5176 width: 100%;
5177 height: 100%;
5178 }
5179
5180</style>
5181
5182 <script>
5183 <#assign createYoutubeThumbnails = "createYoutubeThumbnails_"+ randomNumber(5952) />
5184
5185 function ${createYoutubeThumbnails}(){
5186
5187 const newsContent = document.querySelector(".news-content");
5188
5189 const getYoutubeId = (youtubeUrl) => {
5190
5191 const url = new URL(youtubeUrl);
5192 const splittedPathName = url.pathname.split("/");
5193
5194 if (splittedPathName.length <= 0){
5195 return "";
5196 }
5197
5198 return splittedPathName[splittedPathName.length-1];
5199 };
5200
5201 window.addEventListener("resize", (event) => {
5202 const iframeList = newsContent.querySelectorAll('iframe');
5203 iframeList.forEach((iframe) => {
5204 const src = iframe.src;
5205 if (!src){
5206 return;
5207 }
5208
5209 const isYoutube = src.toLowerCase().includes("youtube");
5210 if (!isYoutube){
5211 return;
5212 }
5213
5214 const iframeParent = iframe.parentNode;
5215
5216 const thumbnail = iframeParent.querySelector("img");
5217 if (thumbnail){
5218 // thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px";
5219 }
5220 });
5221
5222 });
5223
5224 const iframeList = newsContent.querySelectorAll('iframe');
5225 iframeList.forEach((iframe) => {
5226 const src = iframe.src;
5227 if (!src){
5228 return;
5229 }
5230
5231 const isYoutube = src.toLowerCase().includes("youtube");
5232 if (!isYoutube){
5233 return;
5234 }
5235
5236 const iframeParent = iframe.parentNode;
5237
5238 const thumbnail = document.createElement("img");
5239 thumbnail.src = 'https://img.youtube.com/vi/' + getYoutubeId(src) +'/hqdefault.jpg';
5240 thumbnail.alt = "Youtube";
5241 //thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px";
5242
5243 const playButton = document.createElement("div");
5244 playButton.style = 'background-image: url("data:image/svg+xml,%3Csvg width=\'64\' height=\'64\' viewBox=\'0 0 64 64\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cg clip-path=\'url(%23clip0_4118_27800)\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3Cpath d=\'M39.22 32.52C39.591 32.2726 39.591 31.7274 39.22 31.48L28.9717 24.6478C28.5563 24.3709 28 24.6686 28 25.1678V38.8322C28 39.3314 28.5563 39.6291 28.9717 39.3522L39.22 32.52Z\' fill=\'%23008542\' stroke=\'%23008542\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=\'clip0_4118_27800\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A")';
5245 playButton.classList.add("thumnail-play-button-youtube");
5246 const children = iframeParent.children;
5247
5248 if (children.length > 0) {
5249 iframeParent.insertBefore(thumbnail, children.firstChild);
5250 iframeParent.insertBefore(playButton, thumbnail);
5251 iframe.classList.add("hide");
5252 iframeParent.classList.add("embed-responsive-youtube");
5253 }
5254
5255 playButton.addEventListener("click", () => {
5256 thumbnail.click();
5257 });
5258
5259 thumbnail.addEventListener("click", () => {
5260 thumbnail.classList.add("hide");
5261 playButton.classList.add("hide");
5262 iframe.classList.remove("hide");
5263 iframeParent.classList.remove("embed-responsive-youtube");
5264 const url = new URL(src);
5265 const searchParams = url.searchParams;
5266 searchParams.set("rel", "0");
5267 //searchParams.set("modestbranding", "0");
5268 //searchParams.set("mute", "0");
5269 //searchParams.set("color", "white");
5270 searchParams.set("controls", "1");
5271 //searchParams.set("playsinline", "1");
5272 //searchParams.set("enablejsapi", "1");
5273 searchParams.set("autoplay", "1");
5274 //searchParams.set("logo", "0");
5275 iframeParent.setAttribute("data-embed-id", url.toString());
5276 iframe.setAttribute("src", url.toString());
5277 });
5278 });
5279
5280 }
5281
5282 ${createYoutubeThumbnails}();
5283
5284 <#assign createLRThumbnails = "createLRThumbnails"+ randomNumber(5952) />
5285
5286 function ${createLRThumbnails}(){
5287
5288 const newsContent = document.querySelector(".news-content");
5289 const iframeList = newsContent.querySelectorAll("iframe[data-video-liferay]");
5290
5291 iframeList.forEach(iframe => {
5292
5293 const playButton = document.createElement("div");
5294 playButton.style = 'background-image: url("data:image/svg+xml,%3Csvg width=\'64\' height=\'64\' viewBox=\'0 0 64 64\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cg clip-path=\'url(%23clip0_4118_27800)\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3Cpath d=\'M39.22 32.52C39.591 32.2726 39.591 31.7274 39.22 31.48L28.9717 24.6478C28.5563 24.3709 28 24.6686 28 25.1678V38.8322C28 39.3314 28.5563 39.6291 28.9717 39.3522L39.22 32.52Z\' fill=\'%23008542\' stroke=\'%23008542\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=\'clip0_4118_27800\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A")';
5295 playButton.classList.add("thumnail-play-button-liferay");
5296 const children = iframe.parentNode.children;
5297 if (children.length > 0) {
5298 iframe.parentNode.insertBefore(playButton, children.firstChild);
5299 }
5300
5301 iframe.addEventListener("load", () => {
5302 if (iframe.contentDocument){
5303 const video = iframe.contentDocument.body.querySelector("video");
5304 video.removeAttribute("controls");
5305 }
5306 });
5307
5308 iframe.parentNode.classList.add("embed-responsive-liferay");
5309
5310
5311 playButton.addEventListener("click", () => {
5312 playButton.classList.add("hide");
5313 playButton.classList.remove("thumnail-play-button-liferay");
5314 iframe.parentNode.classList.remove("embed-responsive-liferay");
5315 if (iframe.contentDocument){
5316 const video = iframe.contentDocument.body.querySelector("video");
5317 video.setAttribute("controls", "");
5318 video.play();
5319 }
5320 });
5321 });
5322 }
5323
5324 ${createLRThumbnails}();
5325 </script>
Escolha um Canal:
Navegue nas Seções:
Acessibilidade
Idioma:
Selecione um idioma: