Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing: ==> json.groupId [in template "1975398" at line 283, column 45] ---- 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: #assign info = {"url": "/documents/" ... [in template "1975398" in function "getMediaInfo" at line 283, column 5] ----
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 <#-- Seção do áudio para o conteúdo da notícia -------------------------------------------------------->
263 <#assign audios = []
264 audioIdentifierFieldSetList = getNodes("Fieldset65862311", xmlArticle)
265 >
266 <#list audioIdentifierFieldSetList as audioIdentifierFieldSet>
267 <#assign
268 <#-- Grupo com as informações de url e legenda do áudio -->
269 audioInfoFieldSet = getGroupNode("Fieldset24035689",audioIdentifierFieldSet)>
270 <#assign
271 externalAudioUrl = getFieldValue(fieldList, audioInfoFieldSet, "URL externa do áudio")
272 internalAudioUrl = getFileFromXML("DocumentLibrary24170668", audioInfoFieldSet, fileEntryService)
273 audioLegend = getFieldValue(fieldList, audioInfoFieldSet, "Legenda do áudio")>
274
275 <#if externalAudioUrl?has_content || internalAudioUrl.url?has_content >
276 <#assign audios += [{
277 "id": getFieldValue(fieldList, audioIdentifierFieldSet, "Identificador de Áudio"),
278 "externalUrl" : externalAudioUrl,
279 "internalUrl" : internalAudioUrl,
280 "legend" : audioLegend
281 }]>
282 </#if>
283 </#list>
284
285
286 <#-- Seção de vídeo para o conteúdo da notícia -------------------------------------------------------->
287 <#assign videos = []
288 videoIdentifierFieldSetList = getNodes("Fieldset24460782", xmlArticle)
289 >
290 <#list videoIdentifierFieldSetList as videoIdentifierFieldSet>
291 <#assign
292 <#-- Grupo com as informações de url e legenda do áudio -->
293 videoInfoFieldSet = getGroupNode("Fieldset51040010",videoIdentifierFieldSet)
294
295 videos += [{
296 "id": getFieldValue(fieldList,videoIdentifierFieldSet, "Identificador de Vídeo"),
297 "youtubeID" : getFieldValue(fieldList, videoInfoFieldSet, "ID do vídeo do YouTube"),
298 "internalUrl" : getFileFromXML("DocumentLibrary15265409", videoInfoFieldSet, fileEntryService),
299 "legend" : getFieldValue(fieldList, videoInfoFieldSet, "Legenda do vídeo")
300 }]
301 >
302 </#list>
303
304
305 <#-- Seção de links para o conteúdo da notícia -------------------------------------------------------->
306 <#assign
307 links = []
308 linksFieldSetList = getNodes("Fieldset37770113", xmlArticle)
309 >
310 <#list linksFieldSetList as linksFieldSet>
311 <#assign linkFieldSetList = getNodes("Fieldset10524367", linksFieldSet)>
312
313 <#list linkFieldSetList as linkFieldSet>
314 <#assign
315 linkId = getFieldValue(fieldList, linkFieldSet, "Identificador do link")
316
317 <#-- Grupo com as informações de url e legenda do áudio -->
318 linkInfoFieldSeet = getGroupNode("Fieldset86037074", linkFieldSet)
319
320 iconType = getFieldValue(fieldList, linkInfoFieldSeet, "Ícone do link")
321 links += [{
322 "id": linkId,
323 "externalLink" : getFieldValue(fieldList, linkInfoFieldSeet, "Link externo"),
324 "pageLink" : getPageLayoutLinkFromXML("LinkToLayout77941175", linkInfoFieldSeet, layoutLocalService),
325 "file" : getFileFromXML("DocumentLibrary34820760", linkInfoFieldSeet, fileEntryService),
326 "title" : getFieldValue(fieldList, linkInfoFieldSeet, "Título do link"),
327 "iconType" : iconType
328 }]
329 >
330 </#list>
331 </#list>
332
333
334
335 <#assign galleryItems = []/>
336
337 <#assign mediaGroupList = getNodes(getIdFromFieldName(fieldList, "Galeria de multimídia"), xmlArticle) />
338
339 <#list mediaGroupList as mediaGroup >
340 <#assign nodes = getNodes(getIdFromFieldName(fieldList, "Imagem da Galeria") , mediaGroup) />
341 <#list nodes as node>
342 <#assign image = getMediaInfo(fieldList, node, "Imagem", fileEntryService) />
343 <#if image?? && image?has_content && image.url?has_content>
344 <#assign galleryItems += [{"image": image}] />
345 </#if>
346 </#list>
347 </#list>
348
349 <#-- Seção de Quotes para o conteúdo da notícia -------------------------------------------------------->
350 <#assign quotes = [] />
351 <#assign quotesRootFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quotes da notícia"), xmlArticle) />
352 <#list quotesRootFieldSetList as quotesFieldSetList>
353 <#assign quoteFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quote"), quotesFieldSetList) />
354 <#list quoteFieldSetList as quoteFieldSet>
355 <#assign imageJsonString = getSingleNodeString("Image94530628", quoteFieldSet) />
356 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
357 <#attempt>
358 <#if imageJsonString ?? && imageJsonString?has_content>
359 <#assign imageJson = jsonFactoryUtil.createJSONObject(imageJsonString) />
360 </#if>
361
362 <#if !imageJson.url?? || !imageJson.url?has_content>
363 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
364 </#if>
365 <#recover>
366 </#attempt>
367
368 <#if !imageJson.url?? || !imageJson.url?has_content>
369 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
370 </#if>
371
372 <#assign quotes += [{
373 "id": getFieldValue(fieldList, quoteFieldSet, "Identificador do Quote"),
374 "content" : getFieldValue(fieldList, quoteFieldSet, "Texto do Quote"),
375 "author" : getFieldValue(fieldList, quoteFieldSet, "Nome do autor"),
376 "image" : {"url": imageJson.url, "alt": imageJson.alt, "fileEntryId" : imageJson.fileEntryId, "title" : imageJson.title}
377 }] />
378 </#list>
379 </#list>
380
381 <#assign newsInfo = {
382 "mainHeadlineOfTheNews": mainHeadlineOfTheNews,
383 "featuredNewsHeadline" : featuredNewsHeadline,
384 "displayDate" : formatDate(createDate),
385 "createDate": createDate,
386 "newsSummary" : newsSummary,
387 "newsMedia": extractNewsMedia(fieldList, xmlArticle, fileEntryService),
388 "lastPublishDate": lastPublishDate,
389 "flag": flag,
390 "url": newsJournalArticleFriendlyUrl,
391 "newsContent": newsContent,
392 "audios": audios,
393 "videos": videos,
394 "galleryItems": galleryItems,
395 "links": links,
396 "quotes": quotes
397 }/>
398
399 <#-- Renderizar o título principal da notícia -->
400 <#-- Conteúdo-> Conteúdo Web -> Templates: Site de Crise - Notícia - Título -->
401 <@renderHeadLine newsInfo/>
402
403 <#-- Renderizar o resumo da notícia -->
404 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Resumo -->
405 <@renderReview newsInfo/>
406
407 <#-- Renderizar a data de publicação/edição da notícia e redes sociais -->
408 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação -->
409 <@renderPublishAndSocialMediasInfos newsJournalArticle newsInfo/>
410
411 <#-- Renderizar as tags da notícia -->
412 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render Tags -->
413 <#assign categoriesAsssetEntryResponse = restClient.get("/headless-delivery/v1.0/structured-contents/${assetEntry.getClassPK()}?nestedFields=embeddedTaxonomyCategory&fields=taxonomyCategoryBriefs") />
414
415 <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??>
416 <#assign tagCategoryList = getCategoriesNamesAndIds("Tags", categoriesAsssetEntryResponse.taxonomyCategoryBriefs) />
417 <#assign removeStartParameterWhenTagIsClicked = true />
418 <#assign includeRequestParams = false />
419 <#assign NEWS_PAGE_NAME= "categorias"/>
420 <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams />
421 </#if>
422
423
424 <#-- Renderizar a imagem de destaque da notícia -->
425 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Imagem de destaque -->
426 <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) />
427
428 <#if !typeOfNews?? || !typeOfNews?has_content || typeOfNews != "Infográfico" >
429 <@renderNewsFeaturedMedia newsInfo />
430 </#if>
431
432 <#-- Renderizar o conteúdo da notícia -->
433 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
434 <@renderNewsContent newsInfo/>
435
436 <#-- Renderizar o conteúdo da notícia-->
437 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
438
439 <#-- Renderiza botoes de compartilhamento na versao mobile -->
440 <div class="render-share-news-container publish_and_social_medias_infos_desk mobile">
441 <@renderShareAndCopyNews/>
442 </div>
443
444 <#-- Renderizar links da notícia -->
445 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Links do conteúdo da notícia -->
446 <@renderLinks newsInfo />
447
448 <@renderCite />
449
450 <#-- Renderizar áudios da notícia -->
451 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia -->
452
453 <#-- Renderizar galeria de imagens notícia -->
454 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render galeria -->
455 <@renderGallery newsInfo />
456
457 <#-- Renderizar quotes da notícia -->
458 <@renderQuotes newsInfo />
459 </div>
460 </div>
461 </div>
462<#else >
463 <div class="ptb-news__read-news paragraph-sm-regular">
464 <p> <#if locale == "pt_BR"> Nenhuma notícia <#else> There are no news </#if></p>
465 </div>
466
467 <style>
468 .ptb-news__read-news p {
469 color: #515867;
470 }
471
472 body.high-contrast-active .ptb-news__read-news p {
473 color: var(--color-neutral-100);
474 }
475 </style>
476</#if>
477
478<style>
479 .breadcrumb-breakpoint {
480 padding-top: var(--space-xxl);
481 padding-bottom: var(--space-xl);
482 }
483
484 body.high-contrast-active .breadcrumb-breakpoint {
485 background: var(--background-surface-level-01, #010101);
486 }
487
488 .breadcrumb-breakpoint .breadcrumb-col {
489 display: flex;
490 width: max-content;
491 gap: var(--space-xxs);
492 height: fit-content;
493 overflow-x: hidden;
494 }
495
496 .breadcrumb-breakpoint #liferay-breadcrumb {
497 display: none;
498 }
499
500 .breadcrumb-breakpoint .breadcrumb-page {
501 display: flex;
502 gap: var(--space-micro);
503 height: var(--size-md);
504 size: var(--size-md);
505 border: 1px solid rgba(0, 0, 0, 0);
506 box-sizing: border-box;
507 border-radius: var(--border-radius-sm);
508 }
509
510 .breadcrumb-breakpoint a.breadcrumb-page.text span,
511 .breadcrumb-breakpoint span.breadcrumb-page.text {
512 white-space: nowrap;
513 }
514
515 .breadcrumb-breakpoint .breadcrumb-page a:focus {
516 outline: none;
517 }
518
519 .breadcrumb-breakpoint .breadcrumb-page.active-page {
520 color: var(--color-text-primary-default);
521 background-color: var(--color-background-default-level-02);
522 border-radius: var(--border-radius-sm);
523 }
524
525 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.active-page {
526 background: var(--background-surface-level-02, #373737);
527 color: var(--text-primary-default, #FFF);
528 }
529
530 .breadcrumb-breakpoint .breadcrumb-page.previous-page {
531 transition: 300ms ease-in-out;
532 }
533
534 .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
535 text-decoration: var(--text-decoration-none);
536 color: var(--color-text-primary-default);
537 text-transform: capitalize;
538 padding-left: var(--space-xxs);
539 padding-right: var(--space-xxs);
540 }
541
542 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
543 color: var(--text-primary-default, #FFF);
544 }
545
546 .breadcrumb-breakpoint .breadcrumb-page.active-page.text {
547 color: var(--color-text-primary-default);
548 text-decoration: var(--text-decoration-none);
549 background-color: var(--color-background-default-level-02);
550 text-transform: capitalize;
551 padding-left: var(--space-xxs);
552 padding-right: var(--space-xxs);
553 }
554
555 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
556 color: var(--text-primary-default, #FFF);
557 }
558
559 .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
560 background-color: var(--color-background-default-level-01);
561 border-color: var(--border-color-dark);
562 border-radius: var(--border-radius-sm);
563 border: 1px solid;
564 transition: all 300ms ease-in-out;
565 }
566
567 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
568 background-color: transparent;
569 }
570
571 .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
572 margin: var(--space-micro);
573 border-radius: var(--space-micro);
574 outline: none;
575 border: 1px solid var(--color-primary-medium);
576 box-sizing: border-box;
577 transition: 300ms ease-in-out;
578 }
579
580 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
581 border: 1px solid rgba(228, 247, 232, 1);
582 }
583
584 .breadcrumb-breakpoint .breadcrumb-page .icon {
585 width: var(--size-xxs);
586 height: var(--size-xxs);
587 border-color: var(--border-color-darkest);
588 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');
589 background-size: cover;
590 margin-top: auto;
591 margin-bottom: auto;
592 }
593
594 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page .icon {
595 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>');
596 }
597
598 .ptb-news__read-news {
599 padding-bottom: var(--space-xl, 40px);
600 overflow: hidden;
601 }
602
603 body.high-contrast-active .ptb-news__read-news {
604 background: var(--background-surface-level-01, #010101);
605 }
606</style>
607
608
609<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
610<#--
611Add elements from the sidebar to define your template. Type "${" to use the
612autocomplete feature.
613-->
614
615<#macro renderHeadLine newsInfo>
616
617 <div class="main-headline-container breakpoint">
618 <div class="main-headline-container-col col-2-11 md-col-1-8 sm-col-1-4">
619 <h1 class="main-headline display-sm">${newsInfo.featuredNewsHeadline}</h1>
620 <div class="bar"></div>
621 </div>
622 </div>
623
624 <style>
625 .ptb-news__read-news .main-headline-container .main-headline-container-col {
626 display: flex;
627 flex-direction: column;
628 gap: var(--space-sm);
629 padding-bottom: var(--space-lg);
630 }
631
632 .ptb-news__read-news .main-headline-container .main-headline-container-col * {
633 margin: 0;
634 padding: 0;
635 }
636
637 .ptb-news__read-news .main-headline-container .main-headline {
638 font-family: var(--font-family-base);
639 color: var(--color-neutral-800);
640 }
641
642 body.high-contrast-active .ptb-news__read-news .main-headline-container .main-headline {
643 color: var(--text-primary-default, var(--color-neutral-100));
644 }
645
646 .ptb-news__read-news .main-headline-container .bar {
647 width: 32px;
648 height: var(--size-micro);
649 background: var(--color-secondary-medium);
650 }
651
652 body.high-contrast-active .ptb-news__read-news .main-headline-container .bar{
653 background: var(--text-secondary-accent, #FFEEB3);
654 }
655
656 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
657 .ptb-news__read-news .main-headline-container .main-headline-container-col {
658 gap: var(--space-xs, 12px);
659 }
660 }
661 </style>
662</#macro>
663<#-- ################################################################################################################## -->
664
665<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
666<#macro renderReview newsInfo>
667 <#assign summaryCssRoot = "summary-container" />
668
669 <div class="${summaryCssRoot}-breakpoint breakpoint">
670 <div class="${summaryCssRoot} col-2-11 md-col-1-8 sm-col-1-4">
671 <p class="summary paragraph-lg-regular">
672 ${newsInfo.newsSummary}
673 </p>
674 </div>
675
676 </div>
677
678 <style>
679 .${summaryCssRoot} .summary {
680 padding-bottom: var(--space-lg);
681 }
682
683 .${summaryCssRoot} .summary,
684 .${summaryCssRoot} .summary * {
685 color: var(--color-neutral-800, #373737);
686 font-family: var(--font-family-base);
687 font-style: var(--font-style-italic);
688 margin: var(--space-none);
689 }
690
691 body.high-contrast-active .summary,
692 body.high-contrast-active .summary * {
693 color: var(--text-secondary-default, #F8F8F8);
694 }
695 </style>
696</#macro>
697<#-- ################################################################################################################## -->
698
699<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
700<#macro renderPublishAndSocialMediasInfos journalArticle newsInfo>
701
702 <div class="publish_and_social_medias_infos_desk-breakpoint breakpoint">
703 <div class="publish_and_social_medias_infos_desk col-2-11 md-col-1-8 sm-col-1-4">
704 <div class="publish_and_update_date">
705 <#assign lastPublishDate = journalArticle.getModifiedDate()>
706 <#assign createDate = journalArticle.getCreateDate()>
707 <#if journalArticle.getLastPublishDate()??>
708 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
709 </#if>
710
711 <#if locale == "pt_BR">
712 <p class="updated">Atualizado em ${formatDate(lastPublishDate)}</p>
713 <p class="published">Postado em ${formatDate(createDate)}</p>
714 <#else >
715 <p class="updated">Updated on ${formatDate(lastPublishDate)}</p>
716 <p class="published">Posted on ${formatDate(createDate)}</p>
717 </#if>
718 </div>
719 <div class="render-share-news-container desktop">
720 <@renderShareAndCopyNews/>
721 </div>
722 </div>
723 </div>
724
725 <style>
726 .ptb-news__read-news .hidden {
727 display: none;
728 }
729 /*Data de publicação e redes sociais */
730
731 /* Desktop */
732 .ptb-news__read-news .publish_and_social_medias_infos_desk {
733 position: relative;
734 display: grid;
735 grid-template-columns: auto 1fr auto;
736 }
737
738 .ptb-news__read-news .render-share-news-container.mobile {
739 display: none;
740 }
741
742 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
743 padding: var(--space-none, 0);
744 margin: var(--space-none, 0);
745 font-family: var(--font-family-base);
746 font-style: var(--font-style-normal, normal);
747 font-weight: var(--font-weight-regular, 400);
748 font-size: var(--font-size-xxs, 16px);
749 line-height: var(--line-height-xl, 160%);
750 color: var(--color-neutral-800, #373737);
751 }
752
753 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk * {
754 color: var(--text-secondary-default, #F8F8F8);
755 }
756
757 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg path,
758 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg path {
759 stroke: var(--color-neutral-500, #D7D7D7);
760 fill: rgba(255, 255, 255, 0.32);
761 }
762
763 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg circle,
764 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg circle {
765 fill: rgba(255, 255, 255, 0.32);
766 }
767
768 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
769 display: flex;
770 align-items: center;
771 gap: var(--space-sm, 16px);
772 }
773
774 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
775 font-weight: var(--font-weight-bold, 700);
776 }
777
778 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
779 color: var(--text-primary-default, var(--color-neutral-100));
780 }
781
782 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
783 font-weight: var(--font-weight-normal, 400);
784 }
785
786 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
787 display: flex;
788 width: 100%;
789 justify-content: flex-end;
790 align-items: center;
791 gap: var(--space-sm, 16px);
792 }
793
794 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share {
795 position: relative;
796 }
797
798 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share span {
799 position: absolute;
800 width: 100%;
801 height: 100%;
802 opacity: 0;
803 overflow: hidden;
804 pointer-events: none;
805 }
806
807 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
808 display: none;
809 }
810
811 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
812 background: var(--color-neutral-100);
813 border: var(--border-width-hairline, 1px) solid #CCCCCC;
814 border-radius: 32px;
815 display: flex;
816 align-items: center;
817 gap: var(--space-sm, 16px);
818 padding: 6px var(--space-xxs, 8px);
819 height: 36px;
820 margin: 0;
821 cursor: pointer;
822 }
823
824 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
825 background: rgba(255, 255, 255, 0.32);
826 border: var(--border-width-hairline, 1px) solid rgba(255, 255, 255, 0.32);
827 }
828
829 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container svg {
830 width: 18px;
831 }
832
833 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk svg path {
834 stroke: var(--color-neutral-500, #D7D7D7);
835 }
836
837 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
838 font-family: var(--font-family-base);
839 font-style: normal;
840 margin: 0;
841 height: 100%;
842 display: flex;
843 align-items: center;
844 color: var(--color-primary-medium, #008542);
845 font-size: var(--font-size-micro, 12px);
846 font-weight: var(--font-weight-bold, 700);
847 line-height: var(--line-height-lg, 144%);
848 pointer-events: none;
849 }
850
851 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text .copy-text-title-news {
852 position: absolute;
853 width: 100%;
854 height: 100%;
855 opacity: 0;
856 overflow: hidden;
857 }
858
859 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
860 color: var(--text-primary-accent, #E4F7E8);
861 }
862
863 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
864 display: none;
865 position: absolute;
866 bottom: -43px;
867 right: -15px;
868 padding: var(--space-xxxs, 4px) 15px;
869 margin: var(--space-micro, 2px) 10px;
870 width: 110px;
871 font-family: var(--font-family-base);
872 font-size: var(--font-size-micro, 12px);
873
874 color: #008542;
875 background: var(--color-neutral-100);
876 border-radius: var(--border-radius-md, 8px);
877
878 filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.16));
879
880 cursor: pointer;
881 }
882
883 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
884 background: rgba(255, 255, 255, 0.32);
885 color: var(--text-primary-accent, #E4F7E8);
886 }
887
888 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message-active {
889 display: block;
890 }
891
892 /* Mobile */
893
894 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
895 display: flex;
896 flex-direction: column;
897 gap: 19px;
898 }
899
900 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
901 display: none;
902 }
903
904 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text {
905 display: flex;
906 justify-content: space-between;
907 align-items: center;
908 margin-bottom: var(--space-lg, 32px);
909 }
910
911 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
912 padding: 0;
913 margin: 0;
914 font-family: var(--font-family-base);
915 font-style: var(--font-style-normal, normal);
916 font-size: var(--font-size-micro, 12px);
917 line-height: 136%;
918 color: var(--color-neutral-800, #373737);
919 }
920
921 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 * {
922 color: var(--text-primary-accent, #E4F7E8);
923 }
924
925 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date {
926 display: flex;
927 flex-direction: column;
928 gap: 0;
929 }
930
931 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .updated {
932 font-weight: var(--font-weight-bold, 700);
933 }
934
935 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .published {
936 font-weight: var(--font-weight-regular, 400);
937 }
938
939 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
940 background: var(--color-neutral-100);
941 border: var(--border-width-hairline, 1px) solid #CCCCCC;
942 border-radius: 32px;
943 display: flex;
944 align-items: center;
945 gap: var(--space-sm, 16px);
946 padding: 6px var(--space-xxs, 8px);
947 width: 112px;
948 height: 36px;
949 }
950
951 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
952 background: rgba(255, 255, 255, 0.32);
953 color: var(--text-primary-accent, #E4F7E8);
954 }
955
956 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container p.text {
957 margin: 0;
958 }
959
960 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
961 font-family: var(--font-family-base);
962 font-style: var(--font-style-normal, normal);
963 font-weight: var(--font-weight-regular, 400);
964 font-size: 13px;
965 line-height: 14px;
966 color: #008542;
967 }
968
969 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 {
970 background: rgba(255, 255, 255, 0.32);
971 color: var(--text-primary-accent, #E4F7E8);
972 }
973
974 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
975
976 .ptb-news__read-news .publish_and_social_medias_infos_desk .render-share-news-container.desktop {
977 display: none;
978 }
979
980 .ptb-news__read-news .render-share-news-container.mobile {
981 display: block;
982 margin: 0 var(--space-lg);
983 }
984
985 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
986 font-size: var(--font-size-micro, 12px);
987 }
988
989 .ptb-news__read-news .publish_and_social_medias_infos_desk {
990 display: grid;
991 grid-template-columns: 100%;
992 grid-template-rows: 1fr 100%;
993 }
994
995 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
996 grid-column-start: 1;
997 grid-column-end: 1;
998 grid-row-start: 1;
999 grid-row-end: 1;
1000 gap: var(--space-xxs, 8px);
1001 }
1002
1003 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1004 padding: 0;
1005 margin: 0;
1006 font-family: var(--font-family-base);
1007 font-style: var(--font-style-normal);
1008 color: var(--color-neutral-800, #373737);
1009 font-weight: var(--font-weight-bold);
1010 font-size: var(--font-size-xxxs, 14px);
1011 line-height: var(--line-height-md, 132%);
1012 }
1013
1014 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1015 color: var(--text-primary-accent, #E4F7E8);
1016 }
1017
1018 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
1019 font-weight: var(--font-weight-regular, 400);
1020 }
1021
1022 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1023 grid-column-start: 1;
1024 grid-column-end: 2;
1025 grid-row-start: 2;
1026 grid-row-end: 2;
1027 justify-content: flex-end;
1028 height: 36px;
1029 }
1030
1031 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1032 grid-column-start: 1;
1033 grid-column-end: 2;
1034 grid-row-start: 2;
1035 grid-row-end: 2;
1036 max-width: 112px;
1037 place-self: end;
1038 }
1039
1040 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
1041 display: none;
1042 }
1043
1044 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
1045 bottom: 0;
1046 right: -9px;
1047 }
1048
1049 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
1050 display: initial;
1051 }
1052 }
1053
1054 @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) {
1055 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1056 padding-right: 0;
1057 }
1058 }
1059
1060
1061 </style>
1062
1063 <script>
1064 AUI().ready(function () {
1065
1066 function copyOnClick(text) {
1067
1068 const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, "");
1069 const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, "");
1070 const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous Next/g, "");
1071 const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, "");
1072 const strWithoutBlankLines = strWithoutBlankEnters.replace(/ /g, '');
1073 const tempInput = document.createElement("textarea");
1074 tempInput.value = strWithoutBlankLines;
1075
1076 document.body.appendChild(tempInput);
1077 tempInput.select();
1078 document.execCommand("copy");
1079
1080 if (tempInput.value.length > 0) {
1081 copyMessages.forEach(copyMessage => copyMessage.classList.add('copy-message-active'));
1082
1083 timerToMessage()
1084 }
1085
1086 document.body.removeChild(tempInput);
1087 }
1088
1089 const copyTextContainers = document.querySelectorAll(".publish_and_social_medias_infos_desk .copy-text-container");
1090 copyTextContainers.forEach(copyTextContainer => {
1091 copyTextContainer.addEventListener("click", (event) => {
1092 event.preventDefault();
1093 const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML;
1094 const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML;
1095 const tagsText = document.querySelector(".tags").innerHTML;
1096 const newsContentText = document.querySelector(".news-content").innerHTML;
1097 const text = titleText + publishSocialMediaText + tagsText + newsContentText;
1098 copyOnClick(text)
1099 });
1100 });
1101
1102 const mobileShare = async () => {
1103 try {
1104 const shareData = {
1105 title: '${newsInfo.mainHeadlineOfTheNews}',
1106 text: '',
1107 url: '${newsInfo.url}'
1108 };
1109 await navigator.share(shareData);
1110 } catch (err) {
1111
1112 }
1113 };
1114
1115 const mobileShareButtons = document.querySelectorAll(".publish_and_social_medias_infos_desk .mobile-share");
1116 mobileShareButtons.forEach(mobileShareButton => {
1117 mobileShareButton.addEventListener("click", (event) => {
1118 event.preventDefault();
1119 mobileShare();
1120 });
1121 });
1122
1123 const copyMessages = document.querySelectorAll('.copy-message');
1124 const timerToMessage = () => {
1125 setTimeout(() => {
1126 removeMessage();
1127 }, 2500);
1128
1129 }
1130
1131 const removeMessage = () => {
1132 copyMessages.forEach(copyMessage => copyMessage.classList.remove('copy-message-active'));
1133 }
1134
1135 });
1136 </script>
1137
1138</#macro>
1139
1140<#-- ################################################################################################################## -->
1141
1142<#-- ############# Site de Crise - Notícia - Render Tags ############################################################## -->
1143
1144<#function getCategoriesNamesAndIds vocabularyName categoriesList>
1145 <#assign tagCategoryList = [] />
1146
1147 <#assign tagsVocabulary = assetVocabularyService.fetchGroupVocabulary(groupId, vocabularyName) />
1148 <#list categoriesList as cat>
1149 <#if tagsVocabulary.getVocabularyId() == cat.embeddedTaxonomyCategory.taxonomyVocabularyId >
1150 <#assign tagCategoryList += [[cat.taxonomyCategoryName, cat.taxonomyCategoryId]] />
1151 </#if>
1152 </#list>
1153 <#return tagCategoryList>
1154</#function>
1155
1156<#assign
1157flagVocabulary = findVocabulary("Flag", vocabularies)
1158assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")
1159/>
1160
1161<#macro renderNewsTags categoryList targetPageWhenClickTag removeStartParameterWhenTagIsClicked updateTagParamsWhenClicked>
1162 <#assign tagPrefix = "tags-" + randomNumber(groupId?number)>
1163 <div class="${tagPrefix}-breakpoint breakpoint">
1164 <div class="${tagPrefix} col-2-11 md-col-1-8 sm-col-1-4">
1165
1166 <div class="tags">
1167 <#list categoryList as cat>
1168 <#assign tagLink = mountUrlToPage("") />
1169 <#assign urlWithoutTrailingSlash = tagLink?substring(0, tagLink?length - 1)>
1170 <#assign lastSlashIndex = urlWithoutTrailingSlash?last_index_of("/")>
1171 <#assign newUrl = urlWithoutTrailingSlash?substring(0, lastSlashIndex + 1)>
1172 <#assign tagLink = newUrl + "categorias?category=" + cat[1] />
1173 <a href="${tagLink}"
1174 class="category" cetegoryid="${cat[1]}"># ${cat[0]}</a>
1175 </#list>
1176 </div>
1177 </div>
1178 </div>
1179
1180 <style>
1181 .${tagPrefix} {
1182 display: flex;
1183 flex-direction: column;
1184 padding: 0;
1185 gap: var(--space-sm);
1186 }
1187
1188 .${tagPrefix} * {
1189 margin: 0;
1190 padding: 0;
1191 }
1192
1193 .${tagPrefix} .tags {
1194 display: flex;
1195 flex-wrap: wrap;
1196 gap: var(--space-xxs, 8px);
1197 padding: var(--space-lg) 0 var(--space-xl);
1198 }
1199
1200 .${tagPrefix} .tags .category {
1201 padding: var(--space-xxxs) var(--space-xxs);
1202 background: var(--color-neutral-100);
1203 border: var(--border-width-hairline, 1px) solid var(--color-neutral-500);
1204 border-radius: var(--border-radius-xl);
1205
1206 font-family: var(--font-family-base);
1207 font-style: var(--font-style-normal);
1208 font-weight: var(--font-weight-regular);
1209 font-size: var(--font-size-xxxs);
1210 line-height: var(--line-height-xl);
1211 color: var(--color-neutral-800, #373737);
1212 cursor: pointer;
1213 }
1214
1215 body.high-contrast-active .${tagPrefix} .tags .category {
1216 background: rgba(255, 255, 255, 0.32);
1217 border: 1px solid rgba(255, 255, 255, 0.32);
1218 color: var(--text-secondary-default, #F8F8F8);
1219 }
1220
1221 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1222 .${tagPrefix} .tags {
1223 display: flex;
1224 flex-wrap: wrap;
1225 gap: 8px;
1226 padding: var(--space-sm) 0 var(--space-lg);
1227 }
1228
1229 .${tagPrefix} {
1230 margin-top: var(--space-sm);
1231 }
1232 }
1233 </style>
1234
1235 <script>
1236 AUI().ready(function () {
1237
1238 const urlParams = new URLSearchParams(window.location.search);
1239 const categories = urlParams.getAll("category").sort();
1240
1241 const root = document.querySelector(".${tagPrefix}");
1242 const tags = root.querySelectorAll(".category");
1243 tags.forEach((tag, index) => {
1244
1245 const categoryId = tag.getAttribute("cetegoryid");
1246 if (categories.indexOf(categoryId) != -1) {
1247 tag.classList.add("active");
1248 }
1249
1250 <#if updateTagParamsWhenClicked>
1251 tag.addEventListener("click", (e) => {
1252 e.preventDefault();
1253 const clickedTag = e.target;
1254 const urlParams = new URLSearchParams(window.location.search);
1255 urlParams.delete("tag");
1256 urlParams.delete("category");
1257
1258 const categoryId = clickedTag.getAttribute("cetegoryid");
1259 urlParams.append("category", categoryId);
1260
1261 <#if removeStartParameterWhenTagIsClicked>
1262 urlParams.delete("start");
1263 </#if>
1264
1265 const href = "${themeDisplay.getPortalURL() + mountUrlToPage(targetPageWhenClickTag)}?" + urlParams.toString();
1266 window.location.href = href;
1267 });
1268 </#if>
1269 });
1270 });
1271 </script>
1272
1273</#macro>
1274
1275<#-- ################################################################################################################## -->
1276
1277<#-- ############# Site de Crise - Notícia - Imagem de destaque ####################################################### -->
1278<#macro renderNewsFeaturedMedia newsInfo>
1279 <#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)>
1280 <div class="news-featured-media">
1281
1282 <div class="media-breakpoint breakpoint">
1283 <div class="media-col col-2-11 md-col-1-8 sm-col-1-4">
1284 <#if newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content>
1285 <#-- Midias adaptativas de imagem para desktop e mobile -->
1286 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${newsInfo.newsMedia.fileEntryId}") />
1287 <#assign urlAdaptativeMediaMobile = newsInfo.newsMedia.imageSrc/>
1288 <#assign urlAdaptativeMediaDesktop = newsInfo.newsMedia.imageSrc/>
1289
1290 <#if fileDataRequest?? && fileDataRequest.adaptedImages?? >
1291 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
1292 <#list dataAdaptativeMedia as data>
1293 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
1294 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
1295 </#if>
1296 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
1297 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
1298 </#if>
1299 </#list>
1300 </#if>
1301
1302 <picture >
1303 <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}">
1304 <img src="${urlAdaptativeMediaDesktop}" loading="lazy" alt="${newsInfo.newsMedia.imageAlt}"/>
1305 </picture>
1306 <@liferay_util["html-top"]>
1307 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1308 <meta name="description" content="${newsInfo.newsSummary}">
1309
1310 <meta property="og:url" content="${currentURL}">
1311 <meta property="og:type" content="website">
1312 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1313 <meta property="og:description" content="${newsInfo.newsSummary}" />
1314 <meta property="og:image" content="${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image">
1315 <meta property="og:image:alt" content="${newsInfo.newsMedia.imageAlt}">
1316
1317 <meta name="twitter:card" content="summary_large_image">
1318 <meta name="twitter:url" content="${currentURL}" />
1319 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1320 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1321 <meta name="twitter:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image" >
1322 <meta name="twitter:image:alt" content="${newsInfo.newsMedia.imageAlt}">
1323 </@>
1324 <#else>
1325 <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content>
1326 <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>
1327 <@liferay_util["html-top"]>
1328 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1329 <meta name="description" content="${newsInfo.newsSummary}">
1330
1331 <meta property="og:url" content="${currentURL}">
1332 <meta property="og:type" content="website">
1333 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1334 <meta property="og:description" content="${newsInfo.newsSummary}" />
1335 <meta property="og:image" content="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg">
1336 <meta property="og:image:alt" content="Youtube Video Thumbnail">
1337
1338 <meta name="twitter:card" content="summary_large_image">
1339 <meta name="twitter:url" content="${currentURL}" />
1340 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1341 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1342 <meta name="twitter:image" content= "https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" >
1343 <meta name="twitter:image:alt" content="Youtube Video Thumbnail">
1344 </@>
1345 <#else>
1346 <video loading="lazy">
1347 <source src="${newsInfo.newsMedia.internalVideo.url}">
1348 Your browser does not support the video tag.
1349 </video>
1350 </#if>
1351
1352 <div class="banner-video-icons">
1353 <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content>
1354 <picture >
1355 <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/mqdefault.jpg">
1356 <img class="banner-video-thumb-iframe" loading="lazy" src="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" alt="YouTube Thumbnail"/>
1357 </picture>
1358 </#if>
1359 <svg class="banner-video-icon-play" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
1360 <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"/>
1361 <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"/>
1362 </svg>
1363 </div>
1364 </#if>
1365 </div>
1366 </div>
1367
1368 <div class="credit-legend breakpoint">
1369
1370 <div class="credit-legend-container col-2-11 md-col-1-8 sm-col-1-4">
1371 <#if newsInfo.newsMedia.legend != "">
1372 <div class="legend paragraph-micro-regular">
1373 <p>${newsInfo.newsMedia.legend}</p>
1374 </div>
1375 </#if>
1376 <#if newsInfo.newsMedia.credits != "">
1377 <p class="credits paragraph-micro-regular">
1378 ${newsInfo.newsMedia.credits}
1379 </p>
1380 </#if>
1381
1382 </div>
1383 </div>
1384 </div>
1385 </#if>
1386 <style>
1387 .ptb-news__read-news .news-featured-media {
1388 padding: 0 0 var(--space-xl) 0;
1389 }
1390
1391 .ptb-news__read-news .news-featured-media .media-col {
1392 position: relative;
1393 }
1394
1395 .ptb-news__read-news .news-featured-media img,
1396 .ptb-news__read-news .news-featured-media video,
1397 .ptb-news__read-news .news-featured-media iframe {
1398 width: 100%;
1399 max-height: 567px;
1400 aspect-ratio: 16/9;
1401 object-fit: cover;
1402 border-radius: var(--border-radius-lg, 16px);
1403 }
1404
1405 .ptb-news__read-news .news-featured-media .banner-video-icons {
1406 width: 100%;
1407 height: 100%;
1408 position: absolute;
1409 top: 50%;
1410 left: 50%;
1411 transform: translate(-50%,-50%);
1412 cursor: pointer;
1413 }
1414
1415 .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-thumb-iframe {
1416 position: absolute;
1417 width: 100%;
1418 height: 100%;
1419 object-fit: cover;
1420 }
1421
1422 .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play {
1423 position: absolute;
1424 top: 50%;
1425 left: 50%;
1426 transform: translate(-50%,-50%);
1427 }
1428
1429 body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(1) {
1430 fill: black;
1431 }
1432
1433 body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(2) {
1434 fill: white;
1435 }
1436
1437 .ptb-news__read-news .news-featured-media *:not(.breakpoint) {
1438 margin: 0;
1439 }
1440 .ptb-news__read-news .news-featured-media * {
1441 padding: 0;
1442 font-family: var(--font-family-base);
1443 line-height: var(--line-height-xl);
1444 }
1445
1446 .ptb-news__read-news .news-featured-media .credits {
1447 text-align: right;
1448 color: var(--collor-neutral-dark-to-bright-200, #525252);
1449 margin-bottom: var(--space-xxxs, 4px);
1450 font-style: var(--font-style-italic, italic);
1451 margin-top: var(--space-xxs, 8px);
1452 margin-bottom: 0;
1453 }
1454
1455 body.high-contrast-active .ptb-news__read-news .news-featured-media .credits {
1456 color: var(--text-secondary-default, #F8F8F8);
1457 }
1458
1459 .ptb-news__read-news .news-featured-media .legend {
1460 margin-top: var(--space-xxs, 8px);
1461 display: flex;
1462 justify-content: space-between;
1463 }
1464
1465 .ptb-news__read-news .news-featured-media .legend,
1466 .ptb-news__read-news .news-featured-media .legend * {
1467 font-style: var(--font-style-italic, italic);
1468 color: var(--collor-neutral-dark-to-bright-200, #525252);
1469 }
1470
1471 .ptb-news__read-news .credit-legend .credit-legend-container {
1472 display: flex;
1473 justify-content: space-between;
1474 flex-wrap: wrap;
1475 gap: 8px;
1476 }
1477
1478 body.high-contrast-active .ptb-news__read-news .news-featured-media .legend,
1479 body.high-contrast-active .ptb-news__read-news .news-featured-media .legend * {
1480 color: var(--text-secondary-default, #F8F8F8);
1481 }
1482
1483 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1484 .ptb-news__read-news .news-featured-media .credits {
1485 text-align: left;
1486 }
1487 }
1488 </style>
1489
1490 <script>
1491 /* Manipulation video*/
1492 let videoIsPlaying = false;
1493
1494 const modalForClick = document.querySelector(".ptb-news__read-news .news-featured-media .banner-video-icons");
1495 const video = document.querySelector(".ptb-news__read-news .news-featured-media .media-col > :first-child");
1496
1497 const playIcon = modalForClick && modalForClick.querySelector(".banner-video-icon-play");
1498 modalForClick && modalForClick.addEventListener("click", ()=>{
1499 if(video.tagName === "VIDEO") {
1500 if(videoIsPlaying) {
1501 video.pause();
1502 playIcon.style.display = "";
1503 videoIsPlaying = false;
1504 }
1505 else {
1506 video.play();
1507 playIcon.style.display = "none";
1508 videoIsPlaying = true;
1509 }
1510 }
1511 else if(video.tagName === "IFRAME") {
1512 const thumbYoutube = modalForClick.querySelector(".banner-video-thumb-iframe");
1513 if(videoIsPlaying) {
1514 video.contentWindow.postMessage('{"event":"command","func":"pauseVideo"}', '*');
1515 playIcon.style.display = "";
1516 videoIsPlaying = false;
1517 }
1518 else {
1519 thumbYoutube && (thumbYoutube.style.display = "none");
1520 video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*');
1521 playIcon.style.display = "none";
1522 videoIsPlaying = true;
1523 }
1524 }
1525 });
1526 </script>
1527<#--/#if -->
1528</#macro>
1529<#-- ################################################################################################################## -->
1530
1531<#-- ############# Site de Crise - Notícia - Conteúdo da notícia ###################################################### -->
1532
1533<#macro renderNewsContent newsInfo>
1534
1535 <#assign targetStr = "<div class='paragraph_separator'><span class='dot'></span><span class='dot'></span><span class='dot'></span><span class='dot'></span></div>">
1536 <#assign content = newsInfo.newsContent?replace("<p></p>", targetStr, 'r')>
1537 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
1538 <#assign content = content?replace("<p></p>", targetStr, 'r')>
1539 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
1540
1541
1542 <div class="news-content breakpoint">
1543 <div class="col-1-12 md-col-1-8 sm-col-1-4">
1544 ${content}
1545 </div>
1546 <div class="audio-template audio-pause audio-unmuted" style="display:none">
1547 <div class="audio-button-play">
1548 <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>
1549 </svg>
1550
1551 <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>
1552 </svg>
1553 </div>
1554 <div class="audio-sondwave">
1555 <svg class="audio-sondwave-desktop" width="100%" height="100%" viewBox="0 0 590 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1556 <g clip-path="url(#clip0_2625_8152)">
1557 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1558 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1559 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1560 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1561 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1562 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1563 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1564 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1565 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1566 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1567 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1568 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1569 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1570 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1571 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1572 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1573 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1574 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1575 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1576 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1577 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1578 <line x1="107.072" y1="8.75" x2="107.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1579 <line x1="112.234" y1="0.75" x2="112.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1580 <line x1="117.395" y1="7.75" x2="117.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1581 <line x1="122.557" y1="5.75" x2="122.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1582 <line x1="127.717" y1="11.75" x2="127.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1583 <line x1="132.879" y1="9.75" x2="132.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1584 <line x1="138.041" y1="9.75" x2="138.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1585 <line x1="142.17" y1="1.75" x2="142.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1586 <line x1="147.33" y1="12.75" x2="147.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1587 <line x1="151.75" y1="0.75" x2="151.75" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1588 <line x1="156.91" y1="7.75" x2="156.91" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1589 <line x1="162.072" y1="5.75" x2="162.072" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1590 <line x1="167.234" y1="11.75" x2="167.234" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1591 <line x1="172.395" y1="9.75" x2="172.395" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1592 <line x1="177.557" y1="9.75" x2="177.557" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1593 <line x1="181.686" y1="1.75" x2="181.686" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1594 <line x1="186.848" y1="12.75" x2="186.848" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1595 <line x1="192.008" y1="13.75" x2="192.008" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1596 <line x1="197.17" y1="10.75" x2="197.17" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1597 <line x1="202.33" y1="8.75" x2="202.33" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1598 <line x1="207.492" y1="0.75" x2="207.492" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1599 <line x1="212.652" y1="7.75" x2="212.652" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1600 <line x1="217.814" y1="5.75" x2="217.814" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1601 <line x1="222.977" y1="11.75" x2="222.977" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1602 <line x1="228.137" y1="9.75" x2="228.137" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1603 <line x1="233.299" y1="9.75" x2="233.299" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1604 <line x1="237.428" y1="1.75" x2="237.428" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1605 <line x1="242.588" y1="12.75" x2="242.588" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1606 <line x1="247.75" y1="13.75" x2="247.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1607 <line x1="252.91" y1="10.75" x2="252.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1608 <line x1="258.072" y1="8.75" x2="258.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1609 <line x1="263.234" y1="0.75" x2="263.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1610 <line x1="268.395" y1="7.75" x2="268.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1611 <line x1="273.557" y1="5.75" x2="273.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1612 <line x1="278.717" y1="11.75" x2="278.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1613 <line x1="283.879" y1="9.75" x2="283.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1614 <line x1="289.041" y1="9.75" x2="289.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1615 <line x1="293.17" y1="1.75" x2="293.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1616 <line x1="298.33" y1="12.75" x2="298.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1617 <line x1="302.75" y1="10.75" x2="302.75" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1618 <line x1="307.912" y1="8.75" x2="307.912" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1619 <line x1="313.072" y1="0.75" x2="313.072" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1620 <line x1="318.234" y1="7.75" x2="318.234" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1621 <line x1="323.395" y1="5.75" x2="323.395" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1622 <line x1="328.557" y1="11.75" x2="328.557" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1623 <line x1="333.719" y1="9.75" x2="333.719" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1624 <line x1="338.879" y1="9.75" x2="338.879" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1625 <line x1="343.008" y1="1.75" x2="343.008" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1626 <line x1="348.17" y1="12.75" x2="348.17" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1627 <line x1="353.33" y1="13.75" x2="353.33" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1628 <line x1="358.492" y1="10.75" x2="358.492" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1629 <line x1="363.652" y1="8.75" x2="363.652" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1630 <line x1="368.814" y1="0.75" x2="368.814" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1631 <line x1="373.977" y1="7.75" x2="373.977" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1632 <line x1="379.137" y1="5.75" x2="379.137" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1633 <line x1="384.299" y1="11.75" x2="384.299" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1634 <line x1="389.459" y1="9.75" x2="389.459" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1635 <line x1="394.621" y1="9.75" x2="394.621" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1636 <line x1="398.75" y1="1.75" x2="398.75" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1637 <line x1="403.912" y1="12.75" x2="403.912" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1638 <line x1="408.33" y1="10.75" x2="408.33" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1639 <line x1="413.492" y1="8.75" x2="413.492" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1640 <line x1="418.654" y1="0.75" x2="418.654" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1641 <line x1="423.814" y1="7.75" x2="423.814" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1642 <line x1="428.977" y1="5.75" x2="428.977" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1643 <line x1="434.137" y1="11.75" x2="434.137" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1644 <line x1="439.299" y1="9.75" x2="439.299" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1645 <line x1="444.461" y1="9.75" x2="444.461" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1646 <line x1="448.59" y1="1.75" x2="448.59" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1647 <line x1="453.75" y1="12.75" x2="453.75" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1648 <line x1="458.912" y1="13.75" x2="458.912" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1649 <line x1="464.072" y1="10.75" x2="464.072" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1650 <line x1="469.234" y1="8.75" x2="469.234" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1651 <line x1="474.395" y1="0.75" x2="474.395" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1652 <line x1="479.557" y1="7.75" x2="479.557" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1653 <line x1="484.719" y1="5.75" x2="484.719" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1654 <line x1="489.879" y1="11.75" x2="489.879" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1655 <line x1="495.041" y1="9.75" x2="495.041" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1656 <line x1="500.201" y1="9.75" x2="500.201" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1657 <line x1="504.33" y1="1.75" x2="504.33" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1658 <line x1="509.492" y1="12.75" x2="509.492" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1659 <line x1="513.912" y1="10.75" x2="513.912" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1660 <line x1="519.072" y1="8.75" x2="519.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1661 <line x1="524.234" y1="0.75" x2="524.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1662 <line x1="529.395" y1="7.75" x2="529.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1663 <line x1="534.557" y1="5.75" x2="534.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1664 <line x1="539.719" y1="11.75" x2="539.719" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1665 <line x1="544.879" y1="9.75" x2="544.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1666 <line x1="550.041" y1="9.75" x2="550.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1667 <line x1="554.17" y1="1.75" x2="554.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1668 <line x1="559.332" y1="12.75" x2="559.332" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1669 <line x1="564.492" y1="13.75" x2="564.492" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1670 <line x1="569.654" y1="10.75" x2="569.654" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1671 <line x1="574.814" y1="8.75" x2="574.814" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1672 <line x1="579.977" y1="0.75" x2="579.977" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1673 <line x1="585.137" y1="7.75" x2="585.137" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1674 <line x1="590.299" y1="5.75" x2="590.299" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1675 </g>
1676 <defs>
1677 <clipPath id="clip0_2625_8152">
1678 <rect width="590" height="30" fill="white"/>
1679 </clipPath>
1680 </defs>
1681 </svg>
1682 <svg class="audio-sondwave-mobile" width="100%" height="100%" viewBox="0 0 102 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1683 <g clip-path="url(#clip0_2625_8922)">
1684 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1685 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1686 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1687 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1688 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1689 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1690 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1691 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1692 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1693 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1694 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1695 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1696 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1697 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1698 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1699 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1700 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1701 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1702 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1703 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1704 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1705 </g>
1706 <defs>
1707 <clipPath id="clip0_2625_8922">
1708 <rect width="102" height="30" fill="white"/>
1709 </clipPath>
1710 </defs>
1711 </svg>
1712 </div>
1713 <div class="audio-time paragraph-micro-bold"> </div>
1714 <div class="audio-button-mute">
1715 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
1716 <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"/>
1717 </svg>
1718 </div>
1719 </div>
1720 </div>
1721
1722 <style>
1723
1724 .ptb-news__read-news .news-content p {
1725 margin-bottom: var(--space-md, 24px);
1726 }
1727
1728 .ptb-news__read-news .news-content strong {
1729 font-weight: var(--font-weight-bold);
1730 }
1731
1732 .ptb-news__read-news .news-content em {
1733 font-style: var(--font-style-italic);
1734 }
1735
1736 .ptb-news__read-news .news-content a {
1737 font-family: var(--font-family-base);
1738 font-style: var(--font-style-normal, normal);
1739 font-weight: var(--font-weight-bold, 700);
1740 font-size: var(--font-size-xs, 18px);
1741 line-height: var(--line-height-xl, 160%);
1742
1743 text-decoration-line: var(--text-decoration-underline, underline);
1744 color: #008542;
1745 }
1746
1747 body.high-contrast-active .ptb-news__read-news .news-content a {
1748 color: #E4F7E8;
1749 }
1750
1751 .ptb-news__read-news .news-content ul {
1752 padding-left: 27px;
1753 margin-top: -16px;
1754 }
1755
1756 .ptb-news__read-news .news-content ul li::marker {
1757 content: "■" !important;
1758 color: var(--color-secondary-medium) !important;
1759 font-size: var(--size-xxs);
1760 }
1761
1762 .ptb-news__read-news .news-content ul li {
1763 color: var(--color-text-primary-default);
1764 padding: 8px 0;
1765
1766 /*paragraph-sm-regular*/
1767 font-size: var(--font-size-xxs);
1768 line-height: var(--line-height-xl);
1769 font-weight: var(--font-weight-regular);
1770 font-style: var(--font-style-normal);
1771 text-decoration: var(--text-decoration-none);
1772
1773 margin-left: calc(-1* var(--space-sm));
1774 padding-left: var(--space-sm);
1775 }
1776
1777 .ptb-news__read-news .news-content ul li * {
1778 color: var(--color-text-primary-default);
1779 padding: 8px 0;
1780
1781 /*paragraph-sm-regular*/
1782 font-size: var(--font-size-xxs);
1783 line-height: var(--line-height-xl);
1784 font-weight: var(--font-weight-regular);
1785 font-style: var(--font-style-normal);
1786 text-decoration: var(--text-decoration-none);
1787 }
1788
1789 @media screen and (min-width: 1024px) {
1790 .ptb-news__read-news .news-content > * {
1791 grid-column-start: 3;
1792 grid-column-end: 11;
1793 }
1794
1795 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
1796 .ptb-news__read-news .news-content > *:has(img) {
1797 grid-column-start: 2;
1798 grid-column-end: 12;
1799 }
1800 }
1801
1802 </#if>
1803 }
1804
1805 .ptb-news__read-news .news-content figure {
1806 margin-bottom: var(--space-sm, 16px);
1807 }
1808
1809 .ptb-news__read-news .news-content figure figcaption {
1810 display: flex;
1811 justify-content: space-between;
1812 align-items: flex-start;
1813 align-self: stretch;
1814 margin-top: var(--space-xxs, 8px);
1815 text-align: justify;
1816 }
1817
1818 .ptb-news__read-news .news-content figure figcaption,
1819 .ptb-news__read-news .news-content figure figcaption * {
1820 color: var(--color-neutral-700, #525252);
1821 font-family: var(--font-family-base);
1822 font-size: var(--font-size-xxxs, 14px);
1823 font-style: var(--font-style-italic, italic);
1824 font-weight: var(--font-weight-regular, 400);
1825 line-height: var(--line-height-xl, 160%);
1826 }
1827
1828 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption,
1829 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption * {
1830 color: var(--text-secondary-default, #F8F8F8);
1831 }
1832
1833 .ptb-news__read-news .news-content figure figcaption br {
1834 display: none;
1835 }
1836
1837 .ptb-news__read-news .news-content .embed-responsive {
1838 width: 100% !important;
1839 border-radius: var(--border-radius-md, 16px);
1840 margin-bottom: var(--space-md, 16px);
1841 }
1842
1843 .ptb-news__read-news .news-content img {
1844 width: 100%;
1845 height: auto;
1846 object-fit: cover;
1847 border-radius: var(--border-radius-md, 16px);
1848 }
1849
1850 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Artigo" >
1851 .ptb-news__read-news .news-content img {
1852 aspect-ratio: 16/9;
1853 }
1854 </#if>
1855
1856 .ptb-news__read-news .news-content .paragraph_separator {
1857 display: flex;
1858 width: 100%;
1859 height: fit-content;
1860 justify-content: center;
1861 gap: 6px;
1862 }
1863
1864 .ptb-news__read-news .news-content .paragraph_separator .dot {
1865 height: var(--size-micro, 4px);
1866 width: var(--size-micro, 4px);
1867 background-color: #959595;
1868 border-radius: 100%;
1869 display: inline-block;
1870 }
1871
1872 .ptb-news__read-news .news-content * {
1873 font-family: var(--font-family-base);
1874 font-style: var(--font-style-normal, normal);
1875 font-weight: var(--font-weight-regular, 400);
1876 font-size: var(--font-size-xs, 18px);
1877 line-height: var(--line-height-xl, 160%);
1878 color: var(--color-neutral-800, #373737);
1879 }
1880
1881 body.high-contrast-active .ptb-news__read-news .news-content * {
1882 color: var(--text-primary-default, var(--color-neutral-100));
1883 }
1884
1885 .ptb-news__read-news .news-content h1,
1886 .ptb-news__read-news .news-content h1 *,
1887 .ptb-news__read-news .news-content h2,
1888 .ptb-news__read-news .news-content h2 *,
1889 .ptb-news__read-news .news-content h3,
1890 .ptb-news__read-news .news-content h3 *,
1891 .ptb-news__read-news .news-content h4,
1892 .ptb-news__read-news .news-content h4 *,
1893 .ptb-news__read-news .news-content h5,
1894 .ptb-news__read-news .news-content h5 *,
1895 .ptb-news__read-news .news-content h6,
1896 .ptb-news__read-news .news-content h6 * {
1897 color: var(--color-neutral-800, #373737) !important;
1898 }
1899
1900 body.high-contrast-active .ptb-news__read-news .news-content h1,
1901 body.high-contrast-active .ptb-news__read-news .news-content h1 *,
1902 body.high-contrast-active .ptb-news__read-news .news-content h2,
1903 body.high-contrast-active .ptb-news__read-news .news-content h2 *,
1904 body.high-contrast-active .ptb-news__read-news .news-content h3,
1905 body.high-contrast-active .ptb-news__read-news .news-content h3 *,
1906 body.high-contrast-active .ptb-news__read-news .news-content h4,
1907 body.high-contrast-active .ptb-news__read-news .news-content h4 *,
1908 body.high-contrast-active .ptb-news__read-news .news-content h5,
1909 body.high-contrast-active .ptb-news__read-news .news-content h5 *,
1910 body.high-contrast-active .ptb-news__read-news .news-content h6,
1911 body.high-contrast-active .ptb-news__read-news .news-content h6 * {
1912 color: var(--text-primary-default, var(--color-neutral-100)) !important;
1913 }
1914
1915 .ptb-news__read-news .news-content h1:last-child,
1916 .ptb-news__read-news .news-content h2:last-child,
1917 .ptb-news__read-news .news-content h3:last-child,
1918 .ptb-news__read-news .news-content h4:last-child,
1919 .ptb-news__read-news .news-content h5:last-child,
1920 .ptb-news__read-news .news-content h5:last-child,
1921 .ptb-news__read-news .news-content h6:last-child,
1922 .ptb-news__read-news .news-content p:last-child {
1923 padding-bottom: 0 !important;
1924 }
1925
1926 .ptb-news__read-news .news-content h1,
1927 .ptb-news__read-news .news-content h1 * {
1928 font-size: var(--font-size-xxl) !important;
1929 line-height: var(--line-height-sm) !important;
1930 font-weight: var(--font-weight-bold) !important;
1931 font-style: var(--font-style-normal) !important;
1932 text-decoration: var(--text-decoration-none) !important;
1933 }
1934
1935 .ptb-news__read-news .news-content h2,
1936 .ptb-news__read-news .news-content h2 * {
1937
1938 font-size: var(--font-size-xl) !important;
1939 line-height: var(--line-height-sm) !important;
1940 font-weight: var(--font-weight-bold) !important;
1941 font-style: var(--font-style-normal) !important;
1942 text-decoration: var(--text-decoration-none) !important;
1943
1944 }
1945
1946 .ptb-news__read-news .news-content h2 {
1947 margin-top: 48px !important;
1948 margin-bottom: var(--space-xl, 40px) !important;
1949
1950 }
1951
1952 .ptb-news__read-news .news-content h3,
1953 .ptb-news__read-news .news-content h3 * {
1954 font-size: var(--font-size-lg) !important;
1955 line-height: var(--line-height-sm) !important;
1956 font-weight: var(--font-weight-bold) !important;
1957 font-style: var(--font-style-normal) !important;
1958 text-decoration: var(--text-decoration-none) !important;
1959 }
1960
1961 .ptb-news__read-news .news-content h3 {
1962 margin-bottom: var(--space-sm, 16px) !important;
1963 margin-top: 48px !important;
1964 }
1965
1966 .ptb-news__read-news .news-content h4,
1967 .ptb-news__read-news .news-content h4 * {
1968 font-size: var(--font-size-md) !important;
1969 line-height: var(--line-height-md) !important;
1970 font-weight: var(--font-weight-bold) !important;
1971 font-style: var(--font-style-normal) !important;
1972 text-decoration: var(--text-decoration-none) !important;
1973 }
1974
1975 .ptb-news__read-news .news-content h4 {
1976 margin-top: 48px !important;
1977 margin-bottom: var(--space-sm, 16px) !important;
1978 }
1979
1980 .ptb-news__read-news .news-content h5,
1981 .ptb-news__read-news .news-content h5 * {
1982 font-size: var(--font-size-sm) !important;
1983 line-height: var(--line-height-md) !important;
1984 font-weight: var(--font-weight-bold) !important;
1985 font-style: var(--font-style-normal) !important;
1986 text-decoration: var(--text-decoration-none) !important;
1987 }
1988
1989 .ptb-news__read-news .news-content h5 {
1990 margin-top: 48px !important;
1991 margin-bottom: var(--space-sm, 16px) !important;
1992 }
1993
1994 .ptb-news__read-news .news-content table {
1995 border-collapse: collapse;
1996 border: none;
1997 width: 100% !important;
1998 margin: 24px 0;
1999 }
2000
2001 .ptb-news__read-news .news-content table * {
2002 font-size: var(--font-size-xxs, 16px);
2003 font-style: var(--font-style-normal, normal);
2004 font-weight: var(--font-weight-regular, 400);
2005 line-height: var(--line-height-xl, 160%);
2006 color: var(--color-neutral-800, #373737);
2007 border: 0;
2008 }
2009
2010 body.high-contrast-active .ptb-news__read-news .news-content table * {
2011 color: var(--text-primary-default, var(--color-neutral-100));
2012 }
2013
2014 .ptb-news__read-news .news-content table tbody > :first-child,
2015 .ptb-news__read-news .news-content table tbody > :first-child * {
2016 font-weight: var(--font-weight-bold, 700);
2017 flex: 1 0 0;
2018 background: var(--background-Surface-level-02, #F8F8F8);
2019 }
2020
2021 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child,
2022 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * {
2023 background: #373737;
2024 }
2025
2026 .ptb-news__read-news .news-content table tbody {
2027 display: flex;
2028 flex-direction: column;
2029 }
2030
2031 .ptb-news__read-news .news-content table tbody * {
2032 display: flex;
2033 height: 100%;
2034 align-items: center;
2035 flex: 1 0 0;
2036 }
2037
2038 .ptb-news__read-news .news-content table tbody tr * {
2039 padding: 23px var(--space-lg, 32px);
2040 }
2041
2042
2043 .ptb-news__read-news .news-content table tbody tr {
2044 border-radius: var(--border-radius-md);
2045 border: var(--border-width-hairline, 1px) solid #EEEEEE;
2046 }
2047
2048 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr {
2049 border: var(--border-width-hairline, 1px) solid #525252;
2050 }
2051
2052 .ptb-news__read-news .news-content table tbody tr:not(:last-child) {
2053 border-bottom-left-radius: 0;
2054 border-bottom-right-radius: 0;
2055 }
2056
2057 .ptb-news__read-news .news-content table tbody tr:not(:first-child) {
2058 border-top-left-radius: 0;
2059 border-top-right-radius: 0;
2060 border-top: none;
2061 }
2062
2063 .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2064 border-right: var(--border-width-hairline, 1px) solid #EEEEEE;
2065 }
2066
2067 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2068 border-right: var(--border-width-hairline, 1px) solid #525252;
2069 }
2070
2071 .ptb-news__read-news .news-content table tbody tr:first-child td {
2072 border-top: var(--border-width-hairline, 1px) solid #EEEEEE;
2073 border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE;
2074 }
2075
2076 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td {
2077 border-top: var(--border-width-hairline, 1px) solid #525252;
2078 border-bottom: var(--border-width-hairline, 1px) solid #525252;
2079 }
2080
2081 .ptb-news__read-news .news-content table tbody tr td:first-child {
2082 padding-left: 0;
2083 }
2084
2085 .ptb-news__read-news .news-content table tbody tr td:last-child{
2086 padding-right: 0;
2087 }
2088
2089 .ptb-news__read-news .news-content audio {
2090 display: none;
2091 }
2092
2093 .ptb-news__read-news .news-content .audio-template {
2094 display: flex;
2095 padding: var(--space-sm, 16px);
2096 align-items: center;
2097 gap: var(--space-md, 24px);
2098 align-self: stretch;
2099 border-radius: var(--border-radius-lg, 16px);
2100 border: var(--border-width-hairline, 1px) solid var(--border-color-mid);
2101 background: var(--background-card-default, #FFF);
2102 max-height: var(--size-giant, 72px);
2103 margin: 48px 0;
2104 }
2105
2106 body.high-contrast-active .ptb-news__read-news .news-content .audio-template {
2107 background: var(--background-card-default, #010101);
2108 border: var(--border-width-hairline, 1px) solid #525252;
2109 }
2110
2111 .ptb-news__read-news .news-content .audio-template .audio-button-play {
2112 display: flex;
2113 width: var(--size-xl, 40px);
2114 height: var(--size-xl, 40px);
2115 justify-content: center;
2116 align-items: center;
2117 flex-grow: 0;
2118 flex-shrink: 0;
2119 cursor: pointer;
2120 }
2121
2122 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon,
2123 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon {
2124 fill: #FFFFFF;
2125 }
2126
2127 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path,
2128 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path {
2129 fill: #010101;
2130 }
2131
2132 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon {
2133 display: block;
2134 }
2135
2136 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon {
2137 display: none;
2138 }
2139
2140 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon {
2141 display: none;
2142 }
2143
2144 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon {
2145 display: block;
2146 }
2147
2148 .ptb-news__read-news .news-content .audio-template .audio-sondwave {
2149 display: flex;
2150 flex-direction: column;
2151 align-items: flex-start;
2152 gap: var(--space-xxs, 8px);
2153 flex: 1 0 0;
2154 height: 100%;
2155 flex-grow: 1;
2156 flex-shrink: 1;
2157 }
2158
2159 .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2160 stroke: #008542;
2161 }
2162
2163 .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2164 stroke: #90EE90;
2165 }
2166
2167 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2168 stroke: #E4F7E8;
2169 }
2170
2171 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2172 stroke: #666666;
2173 }
2174
2175 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2176 display: none;
2177 }
2178
2179 .ptb-news__read-news .news-content .audio-template .audio-time {
2180 display: flex;
2181 flex-direction: column;
2182 align-items: flex-start;
2183 gap: var(--space-xxs, 8px);
2184 flex: 1 0 0;
2185 color: var(--text-primary-accent, #008542);
2186 text-align: center;
2187 font-family: var(--font-family-base);
2188 line-height: 124% !important;
2189 flex-grow: 0;
2190 flex-shrink: 0;
2191 }
2192
2193 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {
2194 color: var(--text-primary-accent, #E4F7E8);
2195 }
2196
2197 .ptb-news__read-news .news-content .audio-template .audio-button-mute {
2198 width: var(--size-lg, 32px);
2199 height: var(--size-lg, 32px);
2200 flex-grow: 0;
2201 flex-shrink: 0;
2202 cursor: pointer;
2203 }
2204
2205 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path {
2206 stroke: white;
2207 fill: none;
2208 }
2209
2210 .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute {
2211 opacity: 0.6;
2212 }
2213
2214
2215 @media screen and (max-width: 1023px) and (min-width: ${MAX_MOBILE_WIDTH}px) {
2216 .ptb-news__read-news .news-content > * {
2217 grid-column-start: 1;
2218 grid-column-end: 9;
2219 }
2220 }
2221
2222
2223 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
2224
2225 .ptb-news__read-news .news-content * {
2226 font-size: var(--font-size-xxs, 16px);
2227 }
2228
2229
2230 .ptb-news__read-news .news-content > * {
2231 grid-column-start: 1;
2232 grid-column-end: 5;
2233 }
2234
2235
2236 .ptb-news__read-news .news-content h1,
2237 .ptb-news__read-news .news-content h1 * {
2238 font-size: var(--font-size-xl) !important;
2239 line-height: var(--line-height-sm) !important;
2240 font-weight: var(--font-weight-bold) !important;
2241 font-style: var(--font-style-normal) !important;
2242 text-decoration: var(--text-decoration-none) !important;
2243
2244 }
2245
2246 .ptb-news__read-news .news-content h2,
2247 .ptb-news__read-news .news-content h2 * {
2248 font-size: var(--font-size-lg) !important;
2249 line-height: var(--line-height-sm) !important;
2250 font-weight: var(--font-weight-bold) !important;
2251 font-style: var(--font-style-normal) !important;
2252 text-decoration: var(--text-decoration-none) !important;
2253 }
2254
2255 .ptb-news__read-news .news-content h2 {
2256 margin-bottom: var(--space-md, 24px) !important;
2257 }
2258
2259 .ptb-news__read-news .news-content h3,
2260 .ptb-news__read-news .news-content h3 * {
2261 font-size: var(--font-size-md) !important;
2262 line-height: var(--line-height-sm) !important;
2263 font-weight: var(--font-weight-bold) !important;
2264 font-style: var(--font-style-normal) !important;
2265 text-decoration: var(--text-decoration-none) !important;
2266 }
2267
2268 .ptb-news__read-news .news-content h3 {
2269 margin-top: var(--space-xxs, 8px) !important;
2270 }
2271
2272 .ptb-news__read-news .news-content h4,
2273 .ptb-news__read-news .news-content h4 * {
2274 font-size: var(--font-size-sm) !important;
2275 line-height: var(--line-height-md) !important;
2276 font-weight: var(--font-weight-bold) !important;
2277 font-style: var(--font-style-normal) !important;
2278 text-decoration: var(--text-decoration-none) !important;
2279 }
2280
2281 .ptb-news__read-news .news-content h5,
2282 .ptb-news__read-news .news-content h5 * {
2283 font-size: var(--font-size-xs) !important;
2284 line-height: var(--line-height-md) !important;
2285 font-weight: var(--font-weight-bold) !important;
2286 font-style: var(--font-style-normal) !important;
2287 text-decoration: var(--text-decoration-none) !important;
2288 }
2289
2290 .ptb-news__read-news .news-content figure figcaption {
2291 flex-direction: column;
2292 gap: var(--space-xxs, 8px);
2293 }
2294
2295 .ptb-news__read-news .news-content figure figcaption,
2296 .ptb-news__read-news .news-content figure figcaption * {
2297 font-size: var(--font-size-micro, 12px);
2298 }
2299
2300 .ptb-news__read-news .news-content table {
2301 margin-top: var(--space-xxs, 8px);
2302 margin-bottom: var(--space-lg, 32px);
2303 }
2304
2305 .ptb-news__read-news .news-content table * {
2306 font-size: var(--font-size-micro, 12px);
2307 line-height: 19.2%;
2308 }
2309
2310 .ptb-news__read-news .news-content table tbody * {
2311 height: 43px;
2312 padding: var(--space-xs, 12px);
2313 }
2314
2315 .ptb-news__read-news .news-content .audio-template {
2316 margin-top: var(--space-xxs, 8px);
2317 margin-bottom: var(--space-lg, 32px);
2318 }
2319 }
2320
2321 @media screen and (max-width: 500px) {
2322 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop {
2323 display: none;
2324 }
2325
2326 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2327 display: block;
2328 }
2329 }
2330 </style>
2331
2332 <style>
2333.ws-carousel p {
2334 margin: 0 !important;
2335}
2336
2337.ws-carousel {
2338 display: flex;
2339 flex-direction: column;
2340 gap: 32px;
2341 /*max-width: 800px;*/
2342 margin: 72px auto;
2343}
2344
2345.ws-carousel .ws-carousel-header {
2346 display: flex;
2347 justify-content: space-between;
2348}
2349
2350.ws-carousel .ws-carousel-header .h2 {
2351 color: var(--color-neutral-800, #373737) !important;
2352 font-family: var(--font-family-base), "Petrobras Sans" !important;
2353 line-height: 100% !important;
2354 margin: 0 ! important;
2355}
2356
2357.ws-carousel .ws-carousel-header .nav-buttons {
2358 display: flex;
2359 justify-content: space-between;
2360 gap: var(--space-xxs, 8px);
2361}
2362
2363.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.left-arrow {
2364 transform: scaleX(-1);
2365}
2366
2367.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow {
2368 cursor: pointer;
2369}
2370
2371.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive {
2372 cursor: not-allowed;
2373}
2374
2375
2376.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow path {
2377 transition: stroke 0.3s ease;
2378}
2379
2380.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive path {
2381 stroke: #bababa;
2382}
2383
2384.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.active path {
2385 stroke: #008542;
2386}
2387
2388
2389.ws-carousel .ws-carousel-body {
2390 overflow-x: scroll;
2391 -ms-overflow-style: none;
2392 -scrollbar-width: none;
2393}
2394
2395.ws-carousel .ws-carousel-body::-webkit-scrollbar {
2396 display: none;
2397}
2398
2399.ws-carousel .ws-carousel-body .ws-container {
2400 display: flex;
2401 gap: var(--space-lg, 32px);
2402}
2403
2404.ws-carousel .ws-carousel-body .ws-container .ws-item {
2405 min-width: 300px;
2406 max-width: 300px;
2407 min-height: 400px;
2408 max-height: 400px;
2409 position: relative;
2410 overflow: hidden;
2411 border-radius: var(--border-radius-lg);
2412 /* FIXME: Há um efeito nas imagens que precisa ser devidamente aplicado */
2413 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;
2414 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
2415}
2416
2417.ws-carousel .ws-carousel-body .ws-container .ws-item:hover {
2418 cursor: pointer;
2419}
2420
2421.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-image {
2422 position: absolute;
2423 top: 50%;
2424 left: 50%;
2425 transform: translate(-50%, -50%);
2426 height: 100%;
2427}
2428
2429.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-overlay {
2430 position: absolute;
2431 background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%);
2432 width: 100%;
2433 height: 100%;
2434}
2435
2436.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label {
2437 position: absolute;
2438 margin: 24px 0 0 24px;
2439 border-radius: var(--border-radius-pill, 100%);
2440 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);
2441 box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10);
2442 padding: 2px 12px;
2443
2444 color: var(--Default-sup-green-water, #006B65);
2445 font-family: var(--font-family-base), "Petrobras Sans";
2446 font-size: 12px;
2447 font-style: normal;
2448 font-weight: 400;
2449 line-height: 120%;
2450
2451 color: #006B65;
2452}
2453
2454<#assign petrobrasSiteGroup = "" >
2455<#assign GroupService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupService")>
2456<#assign groups = GroupService.search(themeDisplay.getCompanyId(), "Petrobras", "", [], 0, 100)>
2457<#list groups as group>
2458 <#assign groupName = group.getDescriptiveName()>
2459 <#assign groupId = group.getGroupId()>
2460 <h1>Group Name: ${groupName}<h1>
2461 <h2>Group ID: ${groupId}<h2>
2462 <#if groupName == "Petrobras" || groupName == "Portal Petrobras" >
2463 <#assign petrobrasSiteGroup = group >
2464 <#break>
2465 </#if>
2466</#list>
2467
2468.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content {
2469 position: relative;
2470 z-index: 1;
2471 height: 100%;
2472
2473 display: flex;
2474 padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px);
2475 flex-direction: column;
2476 justify-content: flex-end;
2477 align-items: flex-start;
2478 gap: var(--space-md, 24px);
2479}
2480
2481.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content .h5 {
2482 overflow: hidden;
2483 color: #FFF !important;
2484 text-overflow: ellipsis;
2485 margin: 0 !important;
2486 font-family: var(--font-family-base), "Petrobras Sans" !important;
2487}
2488
2489@media (max-width: 768px) {
2490
2491 .ws-carousel .ws-carousel-header .nav-buttons {
2492 gap: 12px;
2493 }
2494
2495 .ws-carousel .ws-carousel-header .nav-buttons .nav-arrow {
2496 width: 44px;
2497 height: 44px;
2498 }
2499
2500 .ws-carousel .ws-carousel-header {
2501 flex-direction: column;
2502 align-items: flex-start;
2503 gap: var(--space-lg, 32px);
2504 }
2505
2506 .ws-carousel .ws-carousel-header .h2 {
2507 font-size: var(--font-size-lg, 24px) !important;
2508 }
2509
2510 .ws-carousel .ws-carousel-body .ws-container {
2511 gap: var(--space-lg, 32px);
2512 }
2513
2514 .ws-carousel .ws-carousel-body .ws-container .ws-item {
2515 min-width: 225px;
2516 max-width: 225px;
2517 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;
2518 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
2519 }
2520}
2521 </style>
2522
2523 <script>
2524/* CONSTANTS */
2525const PUBLISHER_LOGO_INDEX = 0;
2526const POSTER_PORTRAIT_INDEX = 1;
2527const PUBLISHER_INDEX = 2;
2528const COVER_INDEX = 3;
2529const STORIES_INDEX = 4;
2530
2531const COVER_HAS_COVER_INDEX = 0;
2532const COVER_TITLE_INDEX = 1;
2533const COVER_TEXT_INDEX = 2;
2534const COVER_IMAGE_INDEX = 3;
2535
2536const STORY_TITLE_INDEX = 0;
2537const STORY_TEXT_INDEX = 1;
2538const STORY_COLOR_THEME_INDEX = 2;
2539const STORY_IMAGE_INDEX = 3;
2540
2541const 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`;
2542
2543/* Função para criar formatar object*/
2544const createStoryObject = (objectContent) => {
2545 const hasCover = Boolean(
2546 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2547 COVER_HAS_COVER_INDEX
2548 ].contentFieldValue.data
2549 );
2550 return {
2551 category: objectContent.taxonomyCategoryBriefs[0].taxonomyCategoryName,
2552 publisherLogoSrc:
2553 objectContent.contentFields[PUBLISHER_LOGO_INDEX].contentFieldValue.data,
2554 posterPortraitSrc:
2555 objectContent.contentFields[POSTER_PORTRAIT_INDEX].contentFieldValue.data,
2556 publisher:
2557 objectContent.contentFields[PUBLISHER_INDEX].contentFieldValue.data,
2558 cover: {
2559 image: Boolean(
2560 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2561 COVER_HAS_COVER_INDEX
2562 ].contentFieldValue.data
2563 ),
2564 title:
2565 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2566 COVER_TITLE_INDEX
2567 ].contentFieldValue.data,
2568 description:
2569 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2570 COVER_TEXT_INDEX
2571 ].contentFieldValue.data,
2572 imageUrl:
2573 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2574 COVER_IMAGE_INDEX
2575 ].contentFieldValue.image?.contentUrl || null,
2576 imageAlt:
2577 objectContent.contentFields[COVER_INDEX].nestedContentFields[
2578 COVER_IMAGE_INDEX
2579 ].contentFieldValue.image?.description || null,
2580 },
2581 stories: objectContent.contentFields
2582 .slice(STORIES_INDEX)
2583 .map((contentField) => {
2584 return {
2585 title:
2586 contentField.nestedContentFields[STORY_TITLE_INDEX]
2587 .contentFieldValue.data,
2588 description:
2589 contentField.nestedContentFields[STORY_TEXT_INDEX].contentFieldValue
2590 .data,
2591 colorTheme:
2592 contentField.nestedContentFields[STORY_COLOR_THEME_INDEX]
2593 .contentFieldValue.value,
2594 imageUrl:
2595 contentField.nestedContentFields[STORY_IMAGE_INDEX]
2596 .contentFieldValue.image.contentUrl,
2597 imageAlt:
2598 contentField.nestedContentFields[STORY_IMAGE_INDEX]
2599 .contentFieldValue.image.description,
2600 };
2601 }),
2602 };
2603};
2604
2605/* Renderiza os cards */
2606const storyCardFrom = (storyData) => {
2607 const storyCard = document.createElement("div");
2608 storyCard.classList.add("ws-item");
2609
2610 storyCard.addEventListener("click", (e) => {
2611 const storyCardElement = e.target.closest(".ws-item");
2612 console.log(
2613 "wsContents[storyCardElement.dataset.index].content",
2614 storyData
2615 );
2616 Liferay.fire("web-stories-modal-open", { webStoryItem: storyData });
2617 });
2618
2619 const image = document.createElement("img");
2620 image.classList.add("ws-image");
2621 image.src = storyData.cover.imageUrl
2622 ? storyData.cover.imageUrl
2623 : storyData.stories[0].imageUrl;
2624 image.alt = storyData.cover.imageAlt
2625 ? storyData.cover.imageAlt
2626 : storyData.stories[0].imageAlt;
2627
2628 storyCard.appendChild(image);
2629
2630 const overlay = document.createElement("div");
2631 overlay.classList.add("ws-overlay");
2632 storyCard.appendChild(overlay);
2633
2634 const label = document.createElement("span");
2635 label.classList.add("ws-label");
2636 label.dataset.category = storyData.category;
2637 label.classList.add((storyData.category || "Categoria").toLowerCase().replace(" ", '-'));
2638 label.textContent = storyData.category || "Categoria";
2639 storyCard.appendChild(label);
2640
2641 const content = document.createElement("div");
2642 content.classList.add("ws-content");
2643
2644 const title = document.createElement("h5");
2645 title.classList.add("h5")
2646 title.textContent = storyData.cover.title || "Título do Card";
2647 content.appendChild(title);
2648
2649 const details = document.createElement("div");
2650 details.classList.add("ws-details");
2651
2652 details.innerHTML = DETAILS_SVG || `<svg>...</svg>`;
2653 content.appendChild(details);
2654
2655 storyCard.appendChild(content);
2656
2657 return storyCard;
2658};
2659
2660/* Renderiza os itens */
2661const renderItems = (carouselId, webStoriesObjects) => {
2662 const carouselElement = document.querySelector(`#` + carouselId);
2663 const carouselContainer = carouselElement.querySelector(`.ws-container`);
2664 const carouselBody = carouselElement.querySelector(".ws-carousel-body");
2665 const navButtons = carouselElement.querySelector(".nav-buttons");
2666 const leftArrow = navButtons.querySelector(".left-arrow");
2667 const rightArrow = navButtons.querySelector(".right-arrow");
2668
2669 // Adiciona Cards
2670 webStoriesObjects.forEach((storyObject, index) => {
2671 const storyCard = storyCardFrom(storyObject);
2672 storyCard.dataset.index = index;
2673 carouselContainer.appendChild(storyCard);
2674 });
2675
2676 // Altera o Layout
2677 function updateLayout() {
2678 if (webStoriesObjects.length < 3) {
2679 if (window.matchMedia("(min-width: 769px)").matches) {
2680 carouselContainer.style.justifyContent = "center";
2681 navButtons.style.display = "none";
2682 } else {
2683 carouselContainer.style.justifyContent = "flex-start";
2684 navButtons.style.display = "flex";
2685 }
2686 } else {
2687 carouselContainer.style.justifyContent = "";
2688 carouselContainer.style.gap = window.matchMedia("(max-width: 768px)")
2689 .matches
2690 ? "32px"
2691 : "16px";
2692 navButtons.style.display = "";
2693 }
2694 }
2695 updateLayout();
2696 window.addEventListener("resize", updateLayout);
2697
2698 // Configura Scroll das setas
2699 leftArrow.addEventListener("click", () => {
2700 const items = carouselBody.querySelectorAll(".ws-item");
2701 const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16;
2702 const pageSize = items[0].offsetWidth + gap;
2703 const currentScroll = carouselBody.scrollLeft;
2704 const currentPageReal = carouselBody.scrollLeft / pageSize;
2705 const currentPage = parseInt(currentPageReal);
2706 const rest = currentPage - currentPageReal;
2707 const nextPage = rest !== 0 ? currentPage : currentPage - 1;
2708 carouselBody.scrollLeft = nextPage * pageSize;
2709 });
2710
2711 rightArrow.addEventListener("click", () => {
2712 const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16;
2713 const items = carouselBody.querySelectorAll(".ws-item");
2714 carouselBody.scrollLeft += items[0].offsetWidth + gap;
2715 });
2716
2717 const updateArrows = () => {
2718 const scrollLeft = carouselBody.scrollLeft;
2719 const maxScrollLeft = carouselBody.scrollWidth - carouselBody.clientWidth;
2720
2721 // Regra 1: A seta esquerda fica cinza se scrollLeft for 0
2722 if (scrollLeft === 0) {
2723 leftArrow.classList.remove("active");
2724 leftArrow.classList.add("inactive");
2725 } else {
2726 leftArrow.classList.remove("inactive");
2727 leftArrow.classList.add("active");
2728 }
2729
2730 // Regra 2: A seta direita fica cinza se o scroll for máximo
2731 if (scrollLeft >= maxScrollLeft) {
2732 rightArrow.classList.remove("active");
2733 rightArrow.classList.add("inactive");
2734 } else {
2735 rightArrow.classList.remove("inactive");
2736 rightArrow.classList.add("active");
2737 }
2738 };
2739
2740 carouselBody.addEventListener("scroll", updateArrows);
2741};
2742
2743/* Fetch Things */
2744async function getWebStoriesDataSectionFromNews(webContentId) {
2745 const ID_INDEX = 0;
2746 const WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT = 2;
2747 const urlToFetchToGetWebStoriesGroup =
2748 `/o/headless-delivery/v1.0/structured-contents/` +
2749 webContentId +
2750 `?fields=contentFields`;
2751
2752 return fetch(urlToFetchToGetWebStoriesGroup, {
2753 method: "GET",
2754 headers: {
2755 accept: "application/json",
2756 "x-csrf-token": Liferay.authToken,
2757 },
2758 })
2759 .then((response) => {
2760 if (response.status === 200) {
2761 return response.json();
2762 } else {
2763 throw new Error("Erro interno. Por favor tente mais tarde.");
2764 }
2765 })
2766 .then((data) => {
2767 const webStoriesGroups = Array.from(data.contentFields).filter(
2768 (contentField) => contentField.label === "Web Stories"
2769 );
2770
2771 const webStoriesDataMapped = webStoriesGroups.map((webStoryGroup) => {
2772 const webStoryGroupId =
2773 webStoryGroup.nestedContentFields[ID_INDEX].contentFieldValue.data;
2774 const webStoriesStrucutredContentNodes =
2775 webStoryGroup.nestedContentFields.slice(
2776 WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT
2777 );
2778 const webStoriesIds = Array.from(webStoriesStrucutredContentNodes).map(
2779 (webStoryNode) => {
2780 const webStoryId =
2781 webStoryNode.contentFieldValue.structuredContentLink.id;
2782 return {
2783 webStoryId: webStoryId,
2784 };
2785 }
2786 );
2787 return {
2788 webStoryGroupId: webStoryGroupId,
2789 webStoriesIds: webStoriesIds,
2790 };
2791 });
2792
2793 return webStoriesDataMapped;
2794 })
2795 .then((webStoriesDataMapped) => {
2796 // Mapeia os dados recebidos
2797 return Promise.all(
2798 webStoriesDataMapped.map(async (group) => {
2799 const updatedWebStoriesIds = await Promise.all(
2800 group.webStoriesIds.map(async (story) => {
2801 // Faz o fetch para obter os dados do webStoryId
2802 const response = await fetch(
2803 `/o/headless-delivery/v1.0/structured-contents/` +
2804 story.webStoryId,
2805 {
2806 method: "GET",
2807 headers: {
2808 accept: "application/json",
2809 "x-csrf-token": Liferay.authToken,
2810 },
2811 }
2812 );
2813 if (!response.ok) {
2814 throw new Error(
2815 `Erro ao buscar dados para webStoryId` + story.webStoryId
2816 );
2817 }
2818 const webStoryData = await response.json();
2819 return { webStoryData: webStoryData };
2820 })
2821 );
2822
2823 // Retorna o objeto transformado
2824 return {
2825 webStoryGroupId: group.webStoryGroupId,
2826 webStoriesData: updatedWebStoriesIds,
2827 };
2828 })
2829 );
2830 })
2831 .then((webStoriesDataFetched) => {
2832 return webStoriesDataFetched.map((data) => {
2833 return {
2834 webStoryGroupId: data.webStoryGroupId,
2835 webStoryObjects: data.webStoriesData.map((data) =>
2836 createStoryObject(data.webStoryData)
2837 ),
2838 };
2839 });
2840 })
2841 .catch((error) => {
2842 console.error("Erro ao buscar coleção: ", error);
2843 });
2844}
2845
2846async function getWebStoriesData(webStoriesIds) {
2847 // Mapeia os IDs para criar um array de promessas
2848 const fetchPromises = webStoriesIds.map((webStoryId) => {
2849 //const urlToFetch = `/o/headless-delivery/v1.0/structured-contents/` + webStoryId + `?fields=contentFields`;
2850 const urlToFetch =
2851 `/o/headless-delivery/v1.0/structured-contents/` +
2852 webStoryId +
2853 `?fields=contentFields%2CtaxonomyCategoryBriefs`;
2854 return fetch(urlToFetch, {
2855 method: "GET",
2856 headers: {
2857 accept: "application/json",
2858 "x-csrf-token": Liferay.authToken,
2859 },
2860 }).then((response) => {
2861 if (!response.ok) {
2862 throw new Error(`Erro ao buscar ID`);
2863 }
2864 return response.json(); // Transforma a resposta em JSON
2865 });
2866 });
2867
2868 // Aguarda todas as promessas e preserva a ordem
2869 try {
2870 const results = await Promise.all(fetchPromises);
2871 return results; // Retorna os resultados em ordem
2872 } catch (error) {
2873 console.error("Erro ao buscar Web Stories:", error);
2874 throw error; // Relança o erro para tratamento posterior
2875 }
2876}
2877
2878async function fetchAndLogWebStories() {
2879 const webStoriesCarouselDataList = await getWebStoriesDataSectionFromNews(
2880 "${newsJournalArticle.getResourcePrimKey()}"
2881 );
2882
2883 webStoriesCarouselDataList.forEach((webStoriesCarouselData) => {
2884 renderItems(
2885 webStoriesCarouselData.webStoryGroupId,
2886 webStoriesCarouselData.webStoryObjects
2887 );
2888 });
2889}
2890
2891fetchAndLogWebStories();
2892
2893</script>
2894
2895 <script>
2896 <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)>
2897
2898 function ${configureLinkTab}() {
2899 const root = document.querySelector(".ptb-news__read-news");
2900 const newsContentElement = root.querySelector(".news-content div:first-child");
2901 const pList = newsContentElement.querySelectorAll("p");
2902 pList.forEach((pElement) => {
2903 const cont = pElement.innerHTML.trim();
2904 if (cont == "" || cont == " ") {
2905 newsContentElement?.removeChild(pElement);
2906 }
2907 });
2908 }
2909
2910 ${configureLinkTab}();
2911
2912 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
2913
2914 function resizeMediaInfographic() {
2915 if (window.innerWidth > 1024) {
2916 const contents = document.querySelectorAll(".ptb-news__read-news .news-content p");
2917 contents.forEach((content) => {
2918 content.querySelector("img") && (content.style.gridColumn = "2 / 12");
2919 });
2920 }
2921 else {
2922 const contents = document.querySelectorAll(".ptb-news__read-news .news-content p");
2923 contents.forEach((content) => {
2924 content.querySelector("img") && (content.style.gridColumn = "");
2925 });
2926
2927 }
2928 }
2929 resizeMediaInfographic();
2930 </#if>
2931
2932
2933
2934 document.addEventListener("DOMContentLoaded", () => {
2935 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");
2936
2937 headers.forEach((header) => {
2938
2939 const currentLevel = parseInt(header.tagName.charAt(1));
2940
2941 if (currentLevel >= 1 && currentLevel <= 5) {
2942
2943 const newLevel = currentLevel + 1;
2944 const newTagName = "h" + newLevel;
2945
2946 // Criar a nova tag e transferir o conteúdo
2947 const newHeader = document.createElement(newTagName);
2948 newHeader.innerHTML = header.innerHTML;
2949
2950 // Substituir a tag antiga pela nova
2951 header.parentNode.replaceChild(newHeader, header);
2952 }
2953 });
2954
2955 <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) />
2956
2957 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
2958 resizeMediaInfographic();
2959 window.addEventListener("resize", resizeMediaInfographic);
2960 </#if>
2961 });
2962
2963 AUI().ready(()=>{
2964 const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content");
2965 const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template");
2966
2967 audiosContainer.forEach((audioContainer)=>{
2968
2969 const audio = audioContainer.querySelector("audio");
2970 const audioInterface = audioTemplate.cloneNode(true);
2971
2972 const sondwave = audioInterface.querySelector(".audio-sondwave");
2973 const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line");
2974 const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line");
2975
2976 const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play");
2977
2978 playPauseButtonAudioInterface.addEventListener("click", ()=>{
2979 if(audioInterface.classList.contains("audio-play")) {
2980 audioInterface.classList.replace("audio-play", "audio-pause");
2981 audio.pause();
2982 }
2983 else {
2984
2985 audiosContainer.forEach((audioContainer)=>{
2986 const otherAudio = audioContainer.querySelector("audio");
2987 const otherAudioInterface = audioContainer.querySelector(".audio-button-play");
2988 !otherAudio.paused && otherAudioInterface.click();
2989 });
2990
2991 audioInterface.classList.replace("audio-pause", "audio-play");
2992 audio.play();
2993 }
2994 });
2995
2996 const audioMuteButton = audioInterface.querySelector(".audio-button-mute");
2997
2998 audioMuteButton.addEventListener("click", ()=>{
2999 if(audioInterface.classList.contains("audio-unmuted")) {
3000 audioInterface.classList.replace("audio-unmuted", "audio-muted");
3001 audio.muted = true;
3002 }
3003 else {
3004 audioInterface.classList.replace("audio-muted", "audio-unmuted");
3005 audio.muted = false;
3006 }
3007 });
3008
3009 const audioTime = audioInterface.querySelector(".audio-time");
3010 audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60);
3011
3012
3013 audio.addEventListener("timeupdate", ()=>{
3014 let minutes = Math.floor((audio.duration - audio.currentTime) / 60);
3015 let seconds = Math.floor((audio.duration - audio.currentTime) % 60);
3016
3017 minutes = minutes < 10? "0" + minutes : minutes;
3018 seconds = seconds < 10? "0" + seconds : seconds;
3019
3020 audioTime.textContent = minutes + ":" + seconds;
3021
3022 const progress = (audio.currentTime / audio.duration) * 100;
3023
3024 linesDesktop.forEach(function(line, index) {
3025 const lineProgress = (index / linesDesktop.length) * 100;
3026 if (progress >= lineProgress) {
3027 !line.classList.contains("line-active") && line.classList.add("line-active");
3028 } else {
3029 line.classList.contains("line-active") && line.classList.remove("line-active");
3030 }
3031 });
3032
3033 linesMobile.forEach(function(line, index) {
3034 const lineProgress = (index / linesMobile.length) * 100;
3035 if (progress >= lineProgress) {
3036 !line.classList.contains("line-active") && line.classList.add("line-active");
3037 } else {
3038 line.classList.contains("line-active") && line.classList.remove("line-active");
3039 }
3040 });
3041 });
3042
3043
3044 sondwave.addEventListener("click", (event)=>{
3045 const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left)/sondwave.offsetWidth;
3046 audio.currentTime = audio.duration * distanceLeft;
3047 });
3048
3049 audioInterface.style.display = "";
3050 audioContainer.appendChild(audioInterface);
3051 });
3052
3053 });
3054 </script>
3055</#macro>
3056
3057<#macro renderShareAndCopyNews>
3058 <#-- <div class="share_news_container">-->
3059 <div class="social-media-container">
3060
3061 <#assign emailMsg = "Veja o conteúdo do post no link ">
3062 <#if locale == "en_US">
3063 <#assign emailMsg = "See the content of the post in the link ">
3064 </#if>
3065 <a class="social-media-share" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&body=${emailMsg}${newsInfo.url}"
3066 target="_blank">
3067 <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none"
3068 xmlns="http://www.w3.org/2000/svg">
3069 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3070 <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"
3071 fill="#008542"/>
3072 </svg>
3073 <span >send e-mail</span>
3074 </a>
3075
3076 <a class="social-media-share" href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank">
3077 <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none"
3078 xmlns="http://www.w3.org/2000/svg">
3079 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3080 <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"
3081 fill="#008542"/>
3082 </svg>
3083 <span >Facebook</span>
3084 </a>
3085
3086 <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)>
3087 <div class="mobile-share" id="${mobileShareButtonId}">
3088 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
3089 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3090 <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"
3091 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3092 <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"
3093 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3094 <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"
3095 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3096 <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round"
3097 stroke-linejoin="round"/>
3098 <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round"
3099 stroke-linejoin="round"/>
3100 </svg>
3101 </div>
3102
3103 <a class="social-media-share" href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large">
3104 <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none"
3105 xmlns="http://www.w3.org/2000/svg">
3106 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3107 <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"/>
3108 </svg>
3109 <span >twitter</span>
3110 </a>
3111
3112 <a class="social-media-share" href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp/share"
3113 target="_blank">
3114 <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none"
3115 xmlns="http://www.w3.org/2000/svg">
3116 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3117 <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"
3118 fill="#008542"/>
3119 <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"
3120 fill="white"/>
3121 </svg>
3122 <span >Share to WhatsApp </span>
3123 </a>
3124
3125 <div class="copy-text-container">
3126 <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3127 <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round"
3128 stroke-linejoin="round"/>
3129 <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round"
3130 stroke-linejoin="round"/>
3131 </svg>
3132
3133 <#if locale == "pt_BR">
3134 <p class="text">Copiar texto <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p>
3135 <#else >
3136 <p class="text">Copy text <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p>
3137 </#if>
3138 </div>
3139
3140 </div>
3141
3142 <#if locale == "pt_BR">
3143 <span class="copy-message">Texto copiado!</span>
3144 <#else >
3145 <span class="copy-message">Text copied!</span>
3146 </#if>
3147 <#-- </div>-->
3148</#macro>
3149
3150<#-- ################################################################################################################## -->
3151
3152<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
3153<#macro renderLinks newsInfo>
3154 <#if newsInfo.links?size != 0>
3155 <#--videos "escondidos" que serão unidos a .ptb-news__read-content -->
3156
3157 <div class="ptb-news__links-container d-none ">
3158 <div id="ptb-news__links-identifiers">
3159 <#assign separator = "">
3160 <#list newsInfo.links as link>
3161 ${link.id};
3162 <#assign separator = ";">
3163 </#list>
3164 </div>
3165 <#list newsInfo.links as link>
3166 <#assign link_index = link?index>
3167 <#assign linkUrl = "#">
3168 <#assign target = "_blank">
3169 <#assign linkClass = "">
3170
3171 <div id="ptb-news__link-container-${link_index}">
3172 <#if link.externalLink?has_content>
3173 <#assign linkUrl = link.externalLink>
3174 <#assign target = "_blank">
3175 <#assign linkClass = "external-link">
3176 <#elseif link.pageLink?has_content>
3177 <#assign linkUrl = link.pageLink>
3178 <#assign target = "_self">
3179 <#assign linkClass = "internal-page-link">
3180 <#elseif link.file.mimeType?has_content>
3181 <#assign linkUrl = link.file.url>
3182 <#assign target = "_blank">
3183 <#assign linkClass = "file-link">
3184 </#if>
3185
3186 <#-- PDF icon -->
3187 <#if link.iconType == "Opção78730408" >
3188 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3189 xmlns="http://www.w3.org/2000/svg">
3190 <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"
3191 fill="#008542"/>
3192 <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"
3193 fill="#008542"/>
3194 <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z"
3195 fill="#008542"/>
3196 <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"
3197 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3198 stroke-linejoin="round"/>
3199 </svg>
3200
3201 <#-- JPG icon -->
3202 <#elseif link.iconType == "Opção89889679" >
3203 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3204 xmlns="http://www.w3.org/2000/svg">
3205 <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"
3206 fill="#008542"/>
3207 <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"
3208 fill="#008542"/>
3209 <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"
3210 fill="#008542"/>
3211 <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"
3212 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3213 stroke-linejoin="round"/>
3214 </svg>
3215 <#-- DOC icon -->
3216 <#elseif link.iconType == "Opção15480314" >
3217 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3218 xmlns="http://www.w3.org/2000/svg">
3219 <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"
3220 fill="#008542"/>
3221 <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"
3222 fill="#008542"/>
3223 <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"
3224 fill="#008542"/>
3225 <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"
3226 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3227 stroke-linejoin="round"/>
3228 </svg>
3229 <#-- External link icon -->
3230 <#elseif link.iconType == "Opção43823553" >
3231 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
3232 xmlns="http://www.w3.org/2000/svg">
3233 <path opacity="0.98"
3234 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"
3235 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3236 </svg>
3237 <#-- Internal page link icon -->
3238 <#elseif link.iconType == "Opção64212757" >
3239 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542" viewBox="0 0 256 256">
3240 <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">
3241 </path>
3242 </svg>
3243 <#-- Download link icon -->
3244 <#elseif link.iconType == "Opção20766606" >
3245 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
3246 xmlns="http://www.w3.org/2000/svg">
3247 <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"
3248 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3249 </svg>
3250 </#if>
3251<#if link.title?? && link.title?has_content>
3252 <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a>
3253 </#if>
3254 </div>
3255 </#list>
3256 </div>
3257
3258 <script>
3259 var newsContent_code = document.querySelector(".news-content").innerHTML;
3260
3261 var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";");
3262 linksIdentifiers.forEach((linkIdentifier, index) => {
3263 const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index);
3264 if (linkIdentifierContent) {
3265 const tag = "#[" + linkIdentifier.trim() + "]";
3266 const splitContent = newsContent_code.split(tag);
3267 newsContent_code = splitContent.join(linkIdentifierContent.innerHTML);
3268 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
3269 }
3270 });
3271
3272
3273 var ptb_news__read_content = document.querySelector(".news-content");
3274 ptb_news__read_content.innerHTML = newsContent_code;
3275
3276 const links_ptb_news = document.querySelectorAll(".news-content a");
3277 links_ptb_news.forEach((link) => {
3278 link.classList.add("link-ptb-news");
3279 });
3280
3281 </script>
3282
3283 <style>
3284 .ptb-news__read-news .ptb-news__link a {
3285 font-family: var(--font-family-base);
3286 font-style: var(--font-style-normal, normal);
3287 font-weight: var(--font-weight-bold, 700);
3288 font-size: var(--font-size-xxs, 16px);
3289 line-height: var(--line-height-xl, 160%);
3290 text-decoration-line: var(--text-decoration-underline, underline);
3291 color: #008542;
3292 }
3293
3294 body.high-contrast-active .ptb-news__read-news .ptb-news__link a {
3295 color: #E4F7E8;
3296 }
3297
3298 .ptb-news__read-news .news-content .link {
3299 font-family: var(--font-family-base);
3300 font-style: var(--font-style-normal, normal);
3301 font-weight: var(--font-weight-bold, 700);
3302 font-size: var(--font-size-xs, 18px);
3303 line-height: var(--line-height-xl, 160%);
3304
3305 text-decoration-line: var(--text-decoration-underline, underline);
3306 color: #008542;
3307 }
3308
3309 body.high-contrast-active .ptb-news__read-news .news-content .link {
3310 color: #E4F7E8;
3311 }
3312
3313 body.high-contrast-active .ptb-news__read-news .news-content svg path {
3314 stroke: var(--color-neutral-500, #D7D7D7);
3315 fill: rgba(255, 255, 255, 0.32);
3316 }
3317
3318 .ptb-news__read-news .news-content .ptb-link__wrapper {
3319 display: flex;
3320 flex-direction: column;
3321 gap: 0;
3322 margin-top: -24px;
3323 }
3324
3325 .ptb-news__read-news .news-content .ptb-link__wrapper svg {
3326 margin-right: var(--space-sm, 16px);
3327 }
3328
3329 .ptb-news__read-news .news-content .ptb-link__wrapper .first {
3330 gap: 0 !important;
3331 }
3332
3333 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
3334 .ptb-news__read-news .news-content .link {
3335 font-size: var(--font-size-xxs, 16px);
3336 }
3337 }
3338 </style>
3339 </#if>
3340</#macro>
3341
3342<#-- ################################################################################################################## -->
3343
3344<#-- ################################################################################################################## -->
3345
3346<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
3347<#macro renderCite>
3348 <div class="ptb-news__cite-container">
3349 <div class="ptb-news__cite-container-breakpoint breakpoint">
3350 <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4">
3351 <div class="ptb-news__cite-title">
3352 <#if locale?lower_case == "pt_br">
3353 Notas
3354 <#else>
3355 Notes
3356 </#if>
3357 </div>
3358
3359 <div class="ptb-news__cites-elements">
3360 </div>
3361 </div>
3362 </div>
3363 </div>
3364
3365 <script>
3366 function positionCitesText(parentNodeCitesText) {
3367
3368 parentNodeCitesText.forEach((parentNodeCiteText)=>{
3369 if(window.innerWidth > 1024) {
3370 parentNodeCiteText.style.display="";
3371 parentNodeCiteText.style.gridColumnStart = "11";
3372 parentNodeCiteText.style.gridColumnEnd = "13";
3373 }
3374 else {
3375 parentNodeCiteText.style.display="none";
3376 parentNodeCiteText.style.gridColumnStart = "";
3377 parentNodeCiteText.style.gridColumnEnd = "";
3378 }
3379 });
3380 }
3381
3382 function addCitesTextMobile(citesText) {
3383 const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements");
3384
3385 if(citesContainer.children.length === 0) {
3386 citesContainer && citesText.forEach((citeText)=>{
3387 citesContainer.appendChild(citeText.cloneNode(true));
3388 });
3389 }
3390 }
3391
3392 const citesText = document.querySelectorAll(".news-content cite");
3393
3394 if (citesText.length > 0) {
3395 const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);
3396 positionCitesText(parentNodeCitesText);
3397 addCitesTextMobile(citesText);
3398 }
3399 else {
3400 const citesContainer = document.querySelector(".ptb-news__cite-container");
3401 citesContainer && (citesContainer.style.display="none");
3402 }
3403
3404 document.addEventListener('DOMContentLoaded', ()=>{
3405
3406 const citesText = document.querySelectorAll(".news-content cite");
3407
3408 if (citesText.length > 0) {
3409 const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);
3410
3411 positionCitesText(parentNodeCitesText);
3412 addCitesTextMobile(citesText);
3413
3414 window.addEventListener('resize', ()=>{positionCitesText(parentNodeCitesText)});
3415 }
3416 else {
3417 const citesContainer = document.querySelector(".ptb-news__cite-container");
3418 citesContainer && (citesContainer.style.display="none");
3419 }
3420 });
3421
3422 </script>
3423
3424 <style>
3425
3426 .ptb-news__read-news-post cite {
3427 color: var(--color-neutral-800, #373737);
3428 font-family: var(--font-family-base);
3429 font-size: var(--font-size-xxxs, 14px) !important;
3430 font-style: var(--font-style-normal, normal);
3431 font-weight: var(--font-weight-regular, 400);
3432 line-height: var(--line-height-xl, 160%);
3433 }
3434
3435 .ptb-news__read-news-post cite a{
3436 font-size: var(--font-size-xxxs, 14px) !important;
3437 }
3438
3439 body.high-contrast-active .ptb-news__read-news-post cite {
3440 color: var(--text-primary-default, var(--color-neutral-100));
3441 }
3442
3443 .ptb-news__read-news-post .news-content cite,
3444 .ptb-news__read-news-post .ptb-news__cite-container cite {
3445 display: block;
3446 padding-left: var(--space-md);
3447 border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7);
3448 }
3449
3450 @media screen and (min-width: 1025px) {
3451 .ptb-news__read-news-post .ptb-news__cite-container {
3452 display: none;
3453 }
3454 }
3455
3456 @media screen and (max-width: 1025px) {
3457 .ptb-news__read-news .ptb-news__cite-container .link {
3458 text-decoration-line: var(--text-decoration-underline, underline);
3459 color: #008542;
3460 }
3461
3462 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link {
3463 color: #E4F7E8;
3464 }
3465
3466 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path {
3467 stroke: var(--color-neutral-500, #D7D7D7);
3468 fill: rgba(255, 255, 255, 0.32);
3469 }
3470
3471 .ptb-news__read-news-post .ptb-news__cite-container {
3472 display: grid;
3473 background: var(--background-surface-level-03, #EEE);
3474 }
3475
3476 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container {
3477 background: var(--background-surface-level-03, #525252);
3478 }
3479
3480 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col {
3481 padding: var(--space-xxl) 0;
3482 display: flex;
3483 flex-direction: column;
3484 gap: var(--space-lg, 32px);
3485 }
3486
3487 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements {
3488 display: flex;
3489 flex-direction: column;
3490 gap: var(--space-lg, 32px);
3491 }
3492
3493 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
3494 color: var(--color-neutral-800, #373737);
3495 font-size: var(--font-size-sm, 20px);
3496 font-style: var(--font-style-normal, normal);
3497 font-weight: var(--font-weight-bold, 700);
3498 line-height: var(--line-height-xl, 160%);
3499 }
3500
3501 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
3502 color: var(--text-primary-default, var(--color-neutral-100));
3503 }
3504 }
3505 </style>
3506
3507</#macro>
3508
3509<#-- ################################################################################################################## -->
3510
3511
3512<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
3513<#macro renderGallery newsInfo>
3514 <#if newsInfo.galleryItems?size == 0>
3515 <#return />
3516 </#if>
3517
3518 <div class="gallery-breakpoint breakpoint">
3519 <div class="gallery col-3-11 md-col-1-8 sm-col-1-4">
3520
3521 <div class="title-container">
3522 <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg">
3523 <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"
3524 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3525 <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"
3526 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3527 </svg>
3528 <p class="title">
3529 <#if locale == "pt_BR"> Galeria de Imagens <#else > Image gallery </#if>
3530 </p>
3531 </div>
3532
3533 <div class="image-container">
3534 <#assign index = 0 />
3535 <#list newsInfo.galleryItems as gItem>
3536 <div class="modal-image-fragment" index="${index}">
3537 <div class="modal-image-container" index="${index}">
3538 <span class="click-image" ></span>
3539
3540 <div class="image-player-container">
3541 <span class="close-image">
3542 <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
3543 <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"/>
3544 <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"/>
3545 </svg>
3546 </span>
3547 <div class="image-player-session">
3548 <#-- Midias adaptativas de imagem para desktop e mobile -->
3549 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${gItem.image.fileEntryId}") />
3550 <#assign urlAdaptativeMediaMobile = gItem.image.url/>
3551 <#assign urlAdaptativeMediaDesktop = gItem.image.url/>
3552
3553 <#if fileDataRequest?? && fileDataRequest.adaptedImages?? >
3554 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
3555 <#list dataAdaptativeMedia as data>
3556 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
3557 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
3558 </#if>
3559 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
3560 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
3561 </#if>
3562 </#list>
3563 </#if>
3564
3565 <picture >
3566 <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}" >
3567 <img width="274px" height="152px" loading="lazy" src="${urlAdaptativeMediaDesktop}" alt="${gItem.image.alt}"/>
3568 </picture>
3569 </div>
3570 </div>
3571 </div>
3572 </div>
3573 <#assign index = index + 1 />
3574 </#list>
3575 <div class="control-arrow left-arrow">
3576 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3577 <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3578 </svg>
3579 </div>
3580 <div class="control-arrow right-arrow">
3581 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
3582 <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3583 </svg>
3584 </div>
3585 <div class="image-bullets">
3586 <#list 0..(newsInfo.galleryItems?size-1) as index>
3587 <div index="${index}" class="bullet"></div>
3588 </#list>
3589 </div>
3590 </div>
3591 </div>
3592 </div>
3593
3594 <style>
3595
3596 .ptb-news__read-news .gallery {
3597 padding-top: 42px;
3598 }
3599
3600 .ptb-news__read-news .gallery * {
3601 margin: 0;
3602 padding: 0;
3603 }
3604
3605 .ptb-news__read-news .gallery {
3606 display: flex;
3607 gap: var(--space-xl, 40px);
3608 flex-direction: column;
3609 }
3610
3611 .ptb-news__read-news .gallery .control-arrow {
3612 position: fixed;
3613 height: 100%;
3614 align-items: center;
3615 display: flex;
3616 justify-content: center;
3617 display: none;
3618 z-index: 9999;
3619 }
3620
3621 .ptb-news__read-news .gallery .left-arrow {
3622 top: 0;
3623 left: 5vw;
3624 }
3625
3626 .ptb-news__read-news .gallery .right-arrow {
3627 top: 0;
3628 right: 5vw;
3629 }
3630
3631 .ptb-news__read-news .gallery .lefg-arrow svg {
3632 margin-left: 16px !important;
3633 }
3634
3635 .ptb-news__read-news .gallery .right-arrow svg {
3636 margin-right: 16px !important;
3637 }
3638
3639 .ptb-news__read-news .gallery .image-bullets {
3640 display: none;
3641 gap: var(--space-sm, 16px);
3642 position: fixed;
3643 left: 0;
3644 bottom: calc(10vh + 24px);
3645 width: 100vw;
3646 z-index: 9999;
3647 justify-content: center;
3648 }
3649
3650 .ptb-news__read-news .gallery .image-bullets .bullet {
3651 width: var(--size-xs, 16px);
3652 height: var(--size-xs, 16px);
3653 border-radius: 50%;
3654 border: 1px solid var(--color-neutral-100, #FFFFFF);
3655 z-index: 9999;
3656 }
3657
3658 .ptb-news__read-news .gallery .image-bullets .bullet.current-item {
3659 background: var(--color-neutral-100, #FFFFFF);
3660 }
3661
3662 .ptb-news__read-news .gallery .title-container {
3663 display: flex;
3664 align-items: center;
3665 gap: var(--space-sm, 16px);
3666 }
3667
3668 .ptb-news__read-news .gallery .title-container svg {
3669 width: var(--size-md, 24px);
3670 height: 21px;
3671 }
3672
3673 .ptb-news__read-news .gallery .title-container .title {
3674 color: var(--color-neutral-800, #373737);
3675 font-family: var(--font-family-base);
3676 font-size: var(--font-size-lg);
3677 font-style: var(--font-style-normal);
3678 font-weight: var(--font-weight-bold);
3679 line-height: var(--line-height-md);
3680 }
3681
3682 body.high-contrast-active .ptb-news__read-news .gallery .title-container .title {
3683 color: var(--color-neutral-100);
3684 }
3685
3686 .ptb-news__read-news .gallery .image-container {
3687 display: flex;
3688 gap: var(--space-sm, 16px);
3689 flex-wrap: wrap;
3690 }
3691
3692 .ptb-news__read-news .gallery .image-container .modal-image-fragment {
3693 width: inherit;
3694 height: inherit;
3695 max-height: calc(100vw/2);
3696 padding: 0;
3697 margin: 0;
3698 overflow: hidden;
3699 }
3700
3701 .ptb-news__read-news .gallery .image-container .modal-image-fragment * {
3702 box-sizing: border-box;
3703 margin: 0;
3704 padding: 0;
3705 }
3706
3707 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container {
3708 width: 100%;
3709 height: inherit;
3710 display: flex;
3711 justify-content: center;
3712 align-items: center;
3713 cursor: pointer;
3714 position: relative;
3715 }
3716
3717 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing {
3718 position: fixed;
3719 top: 0;
3720 left: 0;
3721 width: 100vw !important;
3722 height: 100vh !important;
3723 z-index: 9999 !important;
3724 background-color: rgba(0, 0, 0, 0.75);
3725 max-height: 100vh;
3726 }
3727
3728 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .click-image {
3729 height: 100%;
3730 width: 100%;
3731 position: absolute;
3732 z-index: 3;
3733 }
3734
3735 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container {
3736 width: 100%;
3737 height: 100%;
3738 }
3739
3740 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing {
3741 position: relative;
3742 width: 90vw !important;
3743 height: 80vh !important;
3744 z-index: 9999 !important;
3745 background-color: rgba(0, 0, 0, 0.75);
3746 border-radius: var(--border-radius-card);
3747 }
3748
3749 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image {
3750 display: none;
3751 position: absolute;
3752 top: 0;
3753 right: 0;
3754 transform: translate(100%, -100%);
3755 z-index: 99999;
3756 }
3757
3758 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) {
3759 fill: var(--background-Surface-level-01, #010101);
3760 }
3761
3762 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) {
3763 stroke: #E4F7E8;
3764 }
3765
3766 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image.image-active {
3767 display: block;
3768 }
3769
3770 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session {
3771 width: 100%;
3772 height: 100%;
3773 }
3774
3775 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session {
3776 width: 90vw !important;
3777 height: 80vh !important;
3778 z-index: 9999 !important;
3779 background-color: rgba(0, 0, 0, 0.75);
3780 border-radius: var(--border-radius-card);
3781 overflow: hidden;
3782 }
3783
3784 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session img {
3785 object-fit: cover;
3786 }
3787
3788 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session img {
3789 width: 100%;
3790 height: 100%;
3791 margin-left: 0 !important;
3792 max-height: 100vh;
3793 }
3794
3795 .ptb-news__read-news .gallery .image-container img {
3796 width: 274px;
3797 height: 152px;
3798 border-radius: var(--border-radius-md, 8px);
3799 cursor: pointer;
3800 }
3801
3802 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
3803
3804 .ptb-news__read-news .gallery {
3805 padding-top: var(--space-xl, 40px);
3806 }
3807
3808 .ptb-news__read-news .gallery .image-container {
3809 gap: var(--space-xxs, 8px);
3810 }
3811
3812 .ptb-news__read-news .gallery .image-container img {
3813 width: 296px;
3814 height: 180px;
3815 }
3816
3817 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing {
3818 transform: rotate(90deg);
3819 transform-origin: center;
3820 width: 80vh !important;
3821 height: 90vw !important;
3822 }
3823
3824 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing img{
3825 cursor: pointer;
3826 }
3827
3828 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session {
3829 width: 80vh !important;
3830 height: 90vw !important;
3831 }
3832
3833 .ptb-news__read-news .gallery .lefg-arrow svg {
3834 margin-left: 4px !important;
3835 }
3836
3837 .ptb-news__read-news .gallery .right-arrow svg {
3838 margin-right: 4px !important;
3839 }
3840
3841 .ptb-news__read-news .gallery .image-bullets {
3842 gap: 14px;
3843 }
3844
3845 .ptb-news__read-news .gallery .image-bullets .bullet {
3846 width: var(--size-xxs, 12px);
3847 height: var(--size-xxs, 12px);
3848 }
3849 }
3850
3851 </style>
3852
3853 <script>
3854
3855 const allModalImagesFragment = document.querySelectorAll(".ptb-news__read-news .gallery .modal-image-fragment");
3856 const totalItems = allModalImagesFragment.length;
3857 const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets");
3858 const bullets = bulletsContainer.querySelectorAll(".bullet");
3859 let currentItem = 0;
3860 const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow");
3861 const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow");
3862
3863 const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
3864 getImageClick.classList.remove('image-playing');
3865 imagePlayerContainer.classList.remove('image-playing');
3866 imageContainer.classList.remove('image-playing');
3867
3868 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
3869 currentBullet && currentBullet.classList.remove('current-item');
3870
3871 closeImage.classList.remove('image-active');
3872
3873 document.querySelector("body").style.overflow = 'initial';
3874 [nextImage, previousImage].forEach(item => {
3875 item.style.display = "none";
3876 });
3877 bulletsContainer.style.display = "none";
3878 }
3879
3880 const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
3881 getImageClick.classList.add('image-playing');
3882 imagePlayerContainer.classList.add('image-playing');
3883 imageContainer.classList.add('image-playing');
3884 closeImage.classList.add('image-active');
3885
3886
3887 document.querySelector("body").style.overflow = 'hidden';
3888 [nextImage, previousImage].forEach(item => {
3889 item.style.display = "flex";
3890 });
3891 bulletsContainer.style.display = "flex";
3892 bullets[index].classList.add('current-item');
3893 }
3894
3895 const changeImage = (next) => {
3896 if(next == currentItem || next < 0 || next >= totalItems) return;
3897
3898 const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image');
3899 const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container');
3900 const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container');
3901 const image = imagePlayerContainer.querySelector('img');
3902 const closeImage = imagePlayerContainer.querySelector('.close-image');
3903
3904 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
3905 currentBullet.classList.remove('current-item');
3906
3907 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
3908 allModalImagesFragment[next].querySelector('.click-image')?.click();
3909
3910 const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next + '"]')
3911 nextBullet.classList.add('current-item');
3912 currentItem = next;
3913 }
3914
3915 nextImage.addEventListener('click', () => {
3916 changeImage(currentItem + 1);
3917 });
3918
3919 previousImage.addEventListener('click', () => {
3920 changeImage(currentItem - 1);
3921 });
3922
3923 bullets.forEach((bullet, bulletIndex) => {
3924 bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ;
3925 });
3926
3927 allModalImagesFragment.forEach((modalImageFragment, index)=>{
3928 const getImageClick = modalImageFragment.querySelector('.click-image');
3929 const imageContainer = modalImageFragment.querySelector('.modal-image-container');
3930 const imagePlayerContainer = modalImageFragment.querySelector('.image-player-container');
3931
3932 const image = imagePlayerContainer.querySelector('img');
3933 const closeImage = imagePlayerContainer.querySelector('.close-image');
3934 const body = document.body;
3935
3936 const toTopButton = document.querySelector(".fragment_88038 .petro-button");
3937
3938 getImageClick.addEventListener('click', () => {
3939 if (document.body.classList.contains('has-edit-mode-menu')) {
3940 return;
3941 }
3942 currentItem = index;
3943 if (imagePlayerContainer.classList.contains('image-playing')) {
3944 toTopButton && (toTopButton.style.zIndex = "");
3945 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
3946 } else {
3947 playImage(index, getImageClick, imagePlayerContainer, imageContainer, closeImage);
3948 toTopButton && (toTopButton.style.zIndex = "1");
3949 }
3950 })
3951
3952 closeImage.addEventListener('click', () => {
3953 if (imagePlayerContainer.classList.contains('image-playing')) {
3954 toTopButton && (toTopButton.style.zIndex = "");
3955 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
3956 const bulletToClose = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + index + '"]')
3957 console.log(bulletToClose)
3958 bulletToClose?.classList.remove('current-item');
3959 }
3960 })
3961 });
3962 </script>
3963
3964</#macro>
3965
3966
3967<#-- ################################################################################################################## -->
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981 <#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
3982<#macro renderQuotes newsInfo>
3983 <#if newsInfo.quotes?size != 0>
3984 <#--quotes "escondidas" que serão unidas a .ptb-news__read-content -->
3985
3986 <div class="ptb-news__quotes-container d-none ">
3987 <div id="ptb-news__quotes-identifiers">
3988 <#assign separator = "">
3989 <#list newsInfo.quotes as quote>
3990 ${quote.id};
3991 <#assign separator = ";">
3992 </#list>
3993 </div>
3994 <#list newsInfo.quotes as quote>
3995 <#assign quotes_index = quote?index>
3996 <div id="ptb-news__quotes-container-${quote_index}">
3997 <#assign noAuthorWrapper = !((quote.image.url?? && quote.image.url?has_content) || (quote.author?has_content)) />
3998 <div class="quote <#if noAuthorWrapper>no-author-wrapper</#if>">
3999 <div class="text-wrapper">
4000 <blockquote class="text">${quote.content}</blockquote >
4001 </div>
4002 <#if !noAuthorWrapper>
4003 <div class="author-wrapper">
4004 <#if quote.image.url?? && quote.image.url?has_content>
4005 <#assign imageUrl = "/o/adaptive-media/image/" + quote.image.fileEntryId +"/Thumbnail-300x300/image"/>
4006 <img src="${imageUrl}" loading="lazy" alt="${quote.image.alt}">
4007 </#if>
4008 <#if quote.author?? && quote?has_content>
4009 <p class="author">${quote.author}</p>
4010 </#if>
4011 </div>
4012 </#if>
4013 </div>
4014 </div>
4015 </#list>
4016 </div>
4017
4018 <script>
4019 var newsContent_code = document.querySelector(".news-content").innerHTML;
4020
4021 var quotesIdentifiers = document.querySelector("#ptb-news__quotes-identifiers").innerHTML.trim().split(";");
4022 quotesIdentifiers.forEach((quoteIdentifier, index) => {
4023 const quoteIdentifierContent = document.querySelector("#ptb-news__quotes-container-" + index);
4024 if (quoteIdentifierContent) {
4025 const tag = "#[" + quoteIdentifier.trim() + "]";
4026 const splitContent = newsContent_code.split(tag);
4027 newsContent_code = splitContent.join(quoteIdentifierContent.innerHTML);
4028 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
4029 }
4030 });
4031
4032
4033 var ptb_news__read_content = document.querySelector(".news-content");
4034 ptb_news__read_content.innerHTML = newsContent_code;
4035
4036 </script>
4037
4038 <style>
4039
4040 .ptb-news__read-news .quote {
4041 display: flex;
4042 flex-direction: column;
4043 gap: var(--space-md, 24px);
4044 }
4045
4046 .ptb-news__read-news .quote.no-author-wrapper{
4047 gap: 0;
4048 }
4049
4050 .ptb-news__read-news .quote .text-wrapper {
4051 padding-left: var(--space-xl, 40px);
4052 }
4053
4054 .ptb-news__read-news .quote .text-wrapper .text {
4055 font-style: var(--font-style-italic) !important;
4056 padding-left: var(--space-md, 24px);
4057 margin-bottom: 0;
4058 border-left: 1px solid var(--border-color-mid, #d7d7d7);
4059 font-size: var(--font-size-xxs, 16px);
4060 }
4061
4062 .ptb-news__read-news .quote .author-wrapper {
4063 display: flex;
4064 flex-direction: row;
4065 gap: var(--space-md, 24px);
4066 }
4067
4068 .ptb-news__read-news .news-content .quote .author-wrapper img {
4069 height: var(--size-xxxl, 56px);
4070 width: var(--size-xxxl, 56px);
4071 border-radius: 100px;
4072 border: var(--size-nano, 2px) solid var(--border-color-mid) !important;
4073 }
4074
4075 .ptb-news__read-news .news-content .quote .author-wrapper p {
4076 margin: 0;
4077 align-self: center;
4078 font-size: var(--font-size-xs, 18px);
4079 font-style: var(--font-style-normal, normal);
4080 font-weight: var(--font-weight-bold, 700);
4081 line-height: var(--line-height-xs, 100%);
4082 }
4083
4084 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4085 .ptb-news__read-news .quote .text-wrapper {
4086 padding-left: 0;
4087 }
4088
4089 .ptb-news__read-news .quote .text-wrapper .text {
4090 font-size: var(--font-size-xxxs, 14px);
4091 }
4092
4093 .ptb-news__read-news .news-content .quote .author-wrapper p {
4094 font-size: var(--font-size-xxs, 16px);
4095 }
4096 }
4097 </style>
4098 </#if>
4099</#macro>
4100
4101
4102
4103
4104<#-- ################################################################################################################## -->
4105
4106
4107
4108
4109
4110
4111
4112
4113<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ -->
4114<#--
4115Add elements from the sidebar to define your template. Type "${" to use the
4116autocomplete feature.
4117-->
4118<#function extractFeaturedNewsHeadline fieldList xmlArticle>
4119 <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")>
4120</#function>
4121
4122<#function extractNewsSummary fieldList xmlArticle>
4123 <#return getFieldValue(fieldList, xmlArticle, "Resumo da notícia")>
4124</#function>
4125
4126<#function extractPublishDate journalArticle>
4127 <#assign lastPublishDate = journalArticle.getModifiedDate()>
4128 <#if journalArticle.getLastPublishDate()??>
4129 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
4130 <#else>
4131 <#assign lastPublishDate = journalArticle.getModifiedDate()>
4132 </#if>
4133 <#return lastPublishDate />
4134</#function>
4135
4136<#-- Seção da imagem de destaque ---------------------------------------------------------------------->
4137<#function extractNewsMedia fieldList xmlArticle fileEntryService>
4138 <#-- Tentando pegar Imagem -->
4139 <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) />
4140 <#assign media = {} />
4141 <#list mediasGroup as mediaGroup >
4142 <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />
4143 <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "fileEntryId" : media.fileEntryId} />
4144
4145 <#-- Se não tiver imagem, tentar pegar vídeo -->
4146 <#if !media.imageSrc?has_content>
4147 <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") />
4148 <#if youtubeID?? && youtubeID?has_content>
4149 <#assign media = {"videoYotubeID": youtubeID} />
4150 <#else>
4151 <#-- Tentar pegar vídeo Interno -->
4152 <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) />
4153 <#if internalVideo?? && internalVideo?has_content>
4154 <#assign media = {"internalVideo": internalVideo} />
4155 </#if>
4156 </#if>
4157 </#if>
4158
4159 <#assign referenceMediasGroup = getNodes(getIdFromFieldName(fieldList, "Referências"), mediaGroup) />
4160 <#list referenceMediasGroup as referenciaMediaGroup >
4161 <#assign credits = getFieldValue(fieldList, referenceMediasGroup, "Crédito da mídia de destaque da notícia") />
4162 <#assign legend = getFieldValue(fieldList, referenceMediasGroup, "Legenda da mídia de destaque da notícia") />
4163 </#list>
4164
4165 <#assign media = media + {"credits": credits, "legend": legend} />
4166
4167 </#list>
4168
4169 <#return media>
4170</#function>
4171
4172
4173<#--------------------- Renderização de Lista de Cards ----------------------------------------------->
4174
4175<#-- Root Css -> Para poder instanciar dois elementos e não dar confusão no JS -->
4176<#assign rootCss = "card-news-list-container_" + randomNumber(4586) />
4177
4178<#attempt>
4179 <#assign ourEnergyStyles = [] />
4180 <#list ourEnergyVocabulary.getCategories() as ourEnergyCategory >
4181 <#assign shadowColorCategory = "" />
4182 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra")??)>
4183 <#assign categoryShadowColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra") />
4184 <#assign shadowColorCategory = categoryShadowColorByService.value />
4185 </#if>
4186
4187 <#assign backgroundColorCategory = "" />
4188 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo")??)>
4189 <#assign categoryBackgroundColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo") />
4190 <#assign backgroundColorCategory = categoryBackgroundColorByService.value />
4191 </#if>
4192
4193 <#assign textColorCategory = "" />
4194 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto")??)>
4195 <#assign categoryTextColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto") />
4196 <#assign textColorCategory = categoryTextColorByService.value />
4197 </#if>
4198
4199 <#assign textColorHighContrastCategory = "" />
4200 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste")??)>
4201 <#assign categoryTextColorHighContrastByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste") />
4202 <#assign textColorHighContrastCategory = categoryTextColorHighContrastByService.value />
4203 </#if>
4204
4205 <#assign ourEnergyStyles += [{"titleLocale": ourEnergyCategory.getTitle(locale),"shadowColor": shadowColorCategory, "backgroundColor": backgroundColorCategory, "textColor": textColorCategory, "textColorHighContrast": textColorHighContrastCategory}] />
4206 </#list>
4207
4208 <#recover>
4209 <#assign ourEnergyStyles = [] />
4210
4211</#attempt>
4212
4213<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article -->
4214<#function getFirstCategoryTitleLocaleOfVocabulary journalArticle vocabulary >
4215 <#attempt>
4216 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
4217
4218 <#list categories as category>
4219 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
4220 <#return category.getTitle(locale)>
4221 </#if>
4222 </#list>
4223
4224 <#return "">
4225
4226 <#recover>
4227 <#return "" />
4228
4229 </#attempt>
4230</#function>
4231
4232<#-- Função para obter os dados de um card no Web Content (Journal Article) -->
4233<#function getDataForCard entry >
4234 <#attempt>
4235 <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) />
4236 <#assign ddmStructure = journalArticle.getDDMStructure() />
4237 <#assign fieldList = getFieldListByStructure(ddmStructure) />
4238 <#assign xmlArticle = journalArticle.getDocument().getRootElement() />
4239
4240 <#-- Tentando pegar Imagem -->
4241 <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) />
4242 <#assign media = "" />
4243 <#list mediasGroup as mediaGroup >
4244 <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />
4245
4246 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${media.fileEntryId}") />
4247
4248 <#assign urlAdaptativeMediaDesktop = ""/>
4249 <#assign urlAdaptativeMediaMobile = ""/>
4250 <#if media.url?? && media.url?has_content && fileDataRequest?? && fileDataRequest.adaptedImages?? >
4251 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
4252 <#list dataAdaptativeMedia as data>
4253 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
4254 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
4255 </#if>
4256 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
4257 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
4258 </#if>
4259 </#list>
4260 </#if>
4261 <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "imageFileEntryId": media.fileEntryId, "urlAdaptativeMedia": {"mobile": urlAdaptativeMediaMobile, "desktop": urlAdaptativeMediaDesktop}} />
4262
4263 <#-- Se não tiver imagem, tentar pegar vídeo -->
4264 <#if !media.imageSrc?? || !media.imageSrc?has_content>
4265 <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") />
4266 <#if youtubeID?? && youtubeID?has_content>
4267 <#assign media = {"videoYotubeID": youtubeID} />
4268 <#else>
4269 <#-- Tentar pegar vídeo Interno -->
4270 <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) />
4271 <#if internalVideo?? && internalVideo?has_content>
4272 <#assign media = {"internalVideo": internalVideo} />
4273 </#if>
4274 </#if>
4275 </#if>
4276 </#list>
4277
4278 <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") />
4279
4280 <#assign timeRead = getFieldValue(fieldList, xmlArticle, "Tempo de Leitura") />
4281
4282 <#assign ourEnergyCategory = getFirstCategoryTitleLocaleOfVocabulary(entry, ourEnergyVocabulary) />
4283
4284 <#assign typeOfNews = getFirstCategoryTitleLocaleOfVocabulary(entry, typeOfNewsVocabulary) />
4285
4286 <#if themeDisplay.getPortalURL()?contains("webserver")>
4287 <#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()>
4288 <#else>
4289 <#assign urlNews = themeDisplay.getPortalURL() + "/w/" + journalArticle.getUrlTitle()>
4290 </#if>
4291
4292 <#assign cardData = {"media": media, "title": title, "timeRead": timeRead, "ourEnergyCategory": ourEnergyCategory, "typeOfNews": typeOfNews, "urlNews": urlNews} />
4293
4294 <#return cardData>
4295
4296 <#recover>
4297 <#return {} />
4298 </#attempt>
4299
4300 <#-- cardData -> image: url, alt
4301 title
4302 timeRead
4303 ourEnergyCategory
4304 typeOfNews
4305 urlNews
4306 -->
4307</#function>
4308
4309
4310<#-- Macro para renderizar os arrows-->
4311<#macro renderArrows>
4312 <div class="card-news-list-arrows-breakpoint breakpoint">
4313 <div class="card-news-list-arrows col-11-12 md-col-7-8 sm-col-1-4">
4314 <div class="card-news-arrow-left arrow-disable">
4315 <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
4316 <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"/>
4317 <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"/>
4318 </svg>
4319 </div>
4320 <div class="card-news-arrow-right">
4321 <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
4322 <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"/>
4323 <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"/>
4324 </svg>
4325
4326 </div>
4327 </div>
4328 </div>
4329
4330 <style>
4331
4332 .${rootCss} .card-news-list-arrows-breakpoint {
4333 position: relative;
4334 z-index: 1;
4335 }
4336
4337 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows {
4338 display: flex;
4339 align-items: flex-start;
4340 justify-self: flex-end;
4341 gap: var(--space-xxs, 8px);
4342 }
4343
4344 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left,
4345 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right {
4346 cursor: pointer;
4347 }
4348
4349 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1),
4350 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) {
4351 fill: rgb(0, 133, 66);
4352 }
4353
4354 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),
4355 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) {
4356 fill: white;
4357 }
4358
4359 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2),
4360 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) {
4361 stroke: #fff;
4362 }
4363
4364 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),
4365 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) {
4366 stroke: #010101;
4367 }
4368
4369 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable,
4370 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable {
4371 opacity: 0.4;
4372 cursor: auto;
4373 }
4374
4375 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path,
4376 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path {
4377 stroke: rgb(0, 133, 66);
4378 transition: all 300ms ease-in-out;
4379 }
4380
4381 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path,
4382 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path {
4383 stroke: rgba(228, 247, 232, 1);
4384 }
4385
4386 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1),
4387 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) {
4388 stroke: rgb(149, 149, 149);
4389 }
4390
4391 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1),
4392 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) {
4393 stroke: rgba(215, 215, 215, 1);
4394 }
4395
4396 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2),
4397 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) {
4398 stroke: rgb(82, 82, 82);
4399 }
4400
4401 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2),
4402 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) {
4403 stroke: rgba(149, 149, 149, 1);
4404 }
4405
4406 @media screen and (min-width: 1440px) {
4407 .${rootCss} .card-news-list-arrows-breakpoint {
4408 width: 100%;
4409 }
4410 }
4411
4412 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4413
4414 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows {
4415 justify-self: flex-start;
4416 margin-top: var(--space-lg);
4417 }
4418 }
4419
4420 </style>
4421
4422</#macro>
4423
4424
4425<#-- Macro para renderizar um Card -->
4426<#macro renderCard cardData>
4427 <#-- cardData -> image: url, alt
4428 title
4429 timeRead
4430 ourEnergyCategory
4431 typeOfNews
4432 urlNews
4433 -->
4434
4435 <div class="card-news-container">
4436 <a class="news-page-see-more-link card-news-link" href="${cardData.urlNews}"> Link da Notícia ${cardData.title} </a>
4437 <div class="card-news-thumb">
4438 <#assign noImage = "" />
4439 <#if cardData.media.imageSrc?? && cardData.media.imageSrc?has_content>
4440 <#assign imageSrcDesktop = cardData.media.imageSrc />
4441 <#assign imageSrcMobile = cardData.media.imageSrc />
4442 <#if cardData.media.urlAdaptativeMedia?? && cardData.media.urlAdaptativeMedia?has_content>
4443 <#assign imageSrcDesktop = cardData.media.urlAdaptativeMedia.desktop />
4444 <#assign imageSrcMobile = cardData.media.urlAdaptativeMedia.mobile />
4445 </#if>
4446 <picture >
4447 <source media="(max-width:767px)" srcset="${imageSrcMobile}">
4448 <img class="card-news-image" loading="lazy" src="${imageSrcDesktop}" alt="${cardData.media.imageAlt}"/>
4449 </picture>
4450 <#else>
4451 <#if cardData.media.videoYotubeID?? && cardData.media.videoYotubeID?has_content>
4452 <picture >
4453 <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/mqdefault.jpg">
4454 <img class="card-news-image" loading="lazy" src="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/maxresdefault.jpg" alt="YouTube Thumbnail"/>
4455 </picture>
4456 <#else>
4457 <#if (cardData.media.internalVideo?? && cardData.media.internalVideo.url?has_content) >
4458 <video class="card-news-image" loading="lazy">
4459 <source src="${cardData.media.internalVideo.url}">
4460 Your browser does not support the video tag.
4461 </video>
4462 <#else>
4463 <#assign noImage = "no-image" />
4464 </#if>
4465 </#if>
4466 <svg class="thumb-play-icon" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4467 <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"/>
4468 <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"/>
4469 </svg>
4470 </#if>
4471 </div>
4472
4473 <div class="card-news-category-container ${noImage}">
4474 <div data-category="${cardData.ourEnergyCategory}" class="card-news-category paragraph-micro-regular"> ${cardData.ourEnergyCategory} </div>
4475 </div>
4476
4477 <div class="card-news-text-content ${noImage}">
4478 <div class="card-news-title h5"> ${cardData.title} </div>
4479
4480 <div class="card-news-info">
4481 <div class="card-news-type">
4482 <#if getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default(""))?? >
4483 <#assign postTypeIconUrl = getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default("")) />
4484 <img src="${postTypeIconUrl}" loading="lazy" alt="post type icon" />
4485 <div class="card-news-type-text paragraph-micro-regular">${cardData.typeOfNews}</div>
4486 <#else/>
4487 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
4488 <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"/>
4489 </svg>
4490 <div class="card-news-type-text paragraph-micro-regular">Artigo</div>
4491 </#if>
4492 </div>
4493
4494 <#if cardData.timeRead?? && cardData.timeRead?has_content>
4495 <div class="card-news-time-read">
4496 <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">
4497 <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"/>
4498 </svg>
4499
4500 <div class="card-news-time-read-text paragraph-micro-regular">${cardData.timeRead} min</div>
4501 </div>
4502 </#if>
4503 </div>
4504 </div>
4505 </div>
4506</#macro>
4507
4508<style>
4509 .${rootCss} .card-news-container {
4510 width: 300px;
4511 height: 370px;
4512 display: flex;
4513 flex-direction: column;
4514 flex-shrink: 0;
4515 align-items: flex-start;
4516 border-radius: var(--border-radius-lg);
4517 border: var(--border-width-hairline) solid var(--border-card-default, #EEE);
4518 background: var(--background-surface-level-01, #FFF);
4519 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
4520 overflow: hidden;
4521 scroll-snap-align: start;
4522 cursor: pointer;
4523 transition: border 300ms ease-in-out;
4524 text-decoration: none;
4525 position: relative;
4526 }
4527
4528 body.high-contrast-active .${rootCss} .card-news-container {
4529 border: var(--border-width-hairline) solid var(--border-card-default, #525252);
4530 background: var(--background-surface-level-01, #010101);
4531 }
4532
4533 .${rootCss} .card-news-container:hover {
4534 border: var(--border-width-hairline) solid rgb(0, 133, 66);
4535 }
4536
4537 body.high-contrast-active .${rootCss} .card-news-container:hover {
4538 border: var(--border-width-hairline) solid var(--border-card-default, #E4F7E8);
4539 }
4540
4541 .${rootCss} .card-news-container .card-news-link {
4542 position: absolute;
4543 top: 0;
4544 width: 100%;
4545 height: 100%;
4546 z-index: 1;
4547 opacity: 0;
4548 }
4549
4550 .${rootCss} .card-news-container .card-news-thumb {
4551 position: relative;
4552 }
4553
4554 .${rootCss} .card-news-container .card-news-image {
4555 width: 298px;
4556 height: 168px;
4557 object-fit: cover;
4558 }
4559
4560
4561 .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon {
4562 position: absolute;
4563 left: 50%;
4564 top: 50%;
4565 transform: translate(-50%, -50%);
4566 }
4567
4568 body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(1) {
4569 fill: black;
4570 }
4571
4572 body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(2) {
4573 fill: white;
4574 }
4575
4576 .${rootCss} .card-news-container .card-news-category-container {
4577 position: relative;
4578 }
4579
4580 .${rootCss} .card-news-container .card-news-category-container .card-news-category {
4581 display: flex;
4582 justify-content: center;
4583 align-items: center;
4584 padding: var(--space-micro) var(--space-xs);
4585 position: absolute;
4586 z-index: 2;
4587 left: var(--space-md);
4588 top: -13px;
4589 border-radius: var(--border-radius-pill);
4590 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);
4591 box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10);
4592 line-height: var(--line-height-lg, 144%);
4593 color: var(--default-sup-green-water, #006B65);
4594 white-space: nowrap;
4595 }
4596
4597 body.high-contrast-active .${rootCss} .card-news-container .card-news-category-container .card-news-category {
4598 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);
4599 color: var(--default-sup-green-water, #99E0DD);
4600 }
4601
4602 .${rootCss} .card-news-container .card-news-category-container.no-image .card-news-category {
4603 position: relative;
4604 top: 0;
4605 left: 0;
4606 margin-left: var(--space-md);
4607 margin-top: var(--space-md);
4608 }
4609
4610 .${rootCss} .card-news-container .card-news-text-content {
4611 display: flex;
4612 padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px);
4613 flex-direction: column;
4614 justify-content: space-between;
4615 align-items: flex-start;
4616 flex: 1 0 0;
4617 align-self: stretch;
4618 }
4619
4620 .${rootCss} .card-news-container .card-news-text-content.no-image {
4621 padding-top: var(--space-sm);
4622 }
4623
4624 .${rootCss} .card-news-container .card-news-text-content .card-news-title {
4625 display: -webkit-box;
4626 -webkit-box-orient: vertical;
4627 -webkit-line-clamp: 4;
4628 align-self: stretch;
4629 overflow: hidden;
4630 color: var(--text-primary-default, #373737);
4631 text-overflow: ellipsis;
4632 margin: 0;
4633 }
4634
4635 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-title {
4636 color: var(--text-primary-default, #FFF);
4637 }
4638
4639 .${rootCss} .card-news-container .card-news-text-content .card-news-info {
4640 display: flex;
4641 align-items: center;
4642 align-content: center;
4643 gap: var(--space-sm, 16px);
4644 align-self: stretch;
4645 flex-wrap: wrap;
4646 }
4647
4648 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type,
4649 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read {
4650 display: flex;
4651 align-items: center;
4652 gap: var(--space-xxs, 8px);
4653 }
4654
4655 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type path {
4656 stroke: #D7D7D7;
4657 }
4658
4659 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text,
4660 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text {
4661 color: var(--text-tertiary-default, #959595);
4662 line-height: var(--line-height-lg, 144%);
4663 }
4664
4665 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text,
4666 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text {
4667 color: var(--text-tertiary-default, #EEE);
4668 }
4669
4670 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read {
4671 transform: translateY(-0.5px);
4672 }
4673
4674 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 {
4675 fill: #D7D7D7;
4676 }
4677</style>
4678
4679<#assign maxNumberOfCards = 9/>
4680<#assign className = "com.liferay.journal.model.JournalArticle" />
4681<#assign classNameId = PortalUtil.getClassNameId(className) />
4682${AssetEntryQuery.setClassNameIds([classNameId]) }
4683${AssetEntryQuery.setEnd(maxNumberOfCards)}
4684
4685<#assign entries = []/>
4686<#assign ourEnergyCategoriesIds = getAllCategoryIdOfVocabulary(assetEntry, ourEnergyVocabulary) />
4687<#list ourEnergyCategoriesIds as ourEnergyCategoryId>
4688 ${AssetEntryQuery.setAllCategoryIds([ourEnergyCategoryId])}
4689 <#assign ents = AssetEntryQueryService.getEntries(AssetEntryQuery) />
4690 <#assign entries = entries + ents />
4691</#list>
4692
4693
4694<#-- Renderizar Lista de cards -->
4695<#if entries?has_content>
4696 <div class="${rootCss}">
4697 <div class="list-of-news-title breakpoint">
4698 <div class="list-of-news-title-col col-1-12 md-col-1-8 sm-col-1-4">
4699 <div class="list-title fragment_85017">
4700 <div class="petro-title">
4701 <h2 id="title" class="display-sm" style="color: var(--color-neutral-800)">
4702 <#if locale?lower_case == "pt_br"> Leia também <#else> Read also </#if>
4703 </h2>
4704
4705 <div class="yellow-bar bar-display-sm" style="background-color: var(--color-secondary-medium)"></div>
4706
4707 </div>
4708 </div>
4709 </div>
4710 </div>
4711
4712 <@renderArrows />
4713
4714 <div class="card-news-list-breakpoint breakpoint">
4715 <div class="card-news-list col-1-12 md-col-1-8 sm-col-1-4">
4716 <#if entries?size gt maxNumberOfCards>
4717 <#assign entries = entries[0..maxNumberOfCards] />
4718 </#if>
4719 <#list entries as entry>
4720 <#if assetEntry.getClassPK() != entry.getClassPK() >
4721 <#assign cardData = getDataForCard(entry) />
4722 <@renderCard cardData/>
4723 </#if>
4724 </#list>
4725 </div>
4726 </div>
4727 </div>
4728</#if>
4729
4730
4731<style>
4732
4733 .portlet {
4734 margin: 0;
4735 }
4736
4737 .${rootCss} {
4738 padding: var(--space-giant, 80px) 0;
4739 background: var(--background-surface-level-01, #FFF);
4740 width: 100%;
4741 position: relative;
4742 font-family: var(--font-family-base, "Petrobras Sans");
4743 display: flex;
4744 flex-direction: column;
4745 gap: var(--space-lg);
4746 }
4747
4748 body.high-contrast-active .${rootCss} {
4749 background: var(--background-surface-level-01, #010101);
4750 }
4751
4752 .${rootCss} .list-of-news-title {
4753 position: relative;
4754 z-index: 1;
4755 }
4756
4757 .${rootCss} body.high-contrast-active .fragment_614685 .petro-title .yellow-bar {
4758 background-color: #FFEEB3 !important;
4759 }
4760
4761 .${rootCss} .card-news-list {
4762 display: flex;
4763 gap: var(--space-lg);
4764 overflow: auto;
4765 position: relative;
4766 z-index: 1;
4767 scroll-snap-type: x mandatory;
4768 scrollbar-width: none;
4769 }
4770
4771 .${rootCss} .card-news-list::-webkit-scrollbar {
4772 display: none;
4773 }
4774
4775 @media screen and (min-width: 1440px) {
4776 .${rootCss} .card-news-list-breakpoint {
4777 width: 100%;
4778 }
4779
4780 .${rootCss} .list-of-news-title {
4781 width: 100%;
4782 }
4783 }
4784
4785 @media screen and (max-width: 1024px) {
4786 .${rootCss} .fragment_614685 {
4787 padding: var(--space-xxl, 56px) 0;
4788 }
4789 }
4790
4791</style>
4792
4793<#list ourEnergyStyles as ourEnergyStyle>
4794 <style>
4795 .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] {
4796 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;
4797 box-shadow: 0px 2px 6px 0px #${ourEnergyStyle.shadowColor} !important;
4798 color: #${ourEnergyStyle.textColor} !important;
4799 }
4800
4801 body.high-contrast-active .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] {
4802 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;
4803 color: #${ourEnergyStyle.textColorHighContrast} !important;
4804 }
4805
4806 </style>
4807</#list>
4808
4809<script>
4810
4811 function disableEnableArrow(arrow, scrollBar, maxDistance, direction)
4812 {
4813 if(direction === "left") {
4814 if (scrollBar.scrollLeft > 0) {
4815 arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable");
4816 }
4817 else {
4818 !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable");
4819 }
4820 }
4821 else if(direction === "right") {
4822 if (Math.ceil(scrollBar.scrollLeft + scrollBar.clientWidth) < maxDistance) {
4823 arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable");
4824 }
4825 else {
4826 !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable");
4827 }
4828 }
4829 }
4830
4831 function scrollCarousel()
4832 {
4833 const root = document.querySelector(".${rootCss}");
4834 if(root) {
4835 const scrollBar = root.querySelector(".${rootCss} .card-news-list");
4836 const gap = 32;// var(--space-lg);
4837 const stepLength = scrollBar.querySelector(".card-news-container").offsetWidth + gap;
4838 const arrowLeftBtn = root.querySelector(".card-news-arrow-left")
4839 const arrowRightBtn = root.querySelector(".card-news-arrow-right")
4840
4841 let maxDistance = scrollBar.scrollWidth;
4842
4843 arrowLeftBtn.addEventListener('click', () => {
4844 if (scrollBar.scrollLeft > 0) {
4845 scrollBar.scroll({
4846 left: scrollBar.scrollLeft - stepLength,
4847 behavior: "smooth",
4848 });
4849 }
4850 });
4851
4852 arrowRightBtn.addEventListener('click', () => {
4853 if (scrollBar.scrollLeft < maxDistance) {
4854 scrollBar.scroll({
4855 left: scrollBar.scrollLeft + stepLength,
4856 behavior: "smooth",
4857 });
4858 }
4859 });
4860
4861 scrollBar.addEventListener("scroll", ()=>{
4862 disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left");
4863 disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right");
4864 });
4865
4866 disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left");
4867 disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right");
4868
4869 }
4870 }
4871
4872 document.addEventListener('DOMContentLoaded', scrollCarousel);
4873
4874</script>
4875
4876<style>
4877
4878
4879.ptb-news__read-news .news-content .embed-responsive-youtube::before {
4880 padding-top: 0;
4881}
4882
4883.ptb-news__read-news .news-content .embed-responsive-liferay::before {
4884 padding-top: calc(9/16 *100% - 64px);
4885}
4886
4887.ptb-news__read-news .news-content .thumnail-play-button {
4888}
4889
4890.ptb-news__read-news .news-content .thumnail-play-button {
4891 position: relative;
4892 z-index: 100;
4893 height: 64px;
4894 width: 64px;
4895 background-repeat: no-repeat;
4896 top: calc(50%);
4897 left: calc(50% - 32px);
4898}
4899
4900
4901.ptb-news__read-news .news-content .thumnail-play-button-youtube {
4902 position: absolute;
4903 z-index: 100;
4904 height: 64px;
4905 width: 64px;
4906 background-repeat: no-repeat;
4907 top: calc(50% - 64px);
4908 left: calc(50% - 32px);
4909}
4910
4911.ptb-news__read-news .news-content .thumnail-play-button-liferay {
4912 position: relative;
4913 z-index: 100;
4914 height: 64px;
4915 width: 64px;
4916 top: calc(-50% + 32px);
4917 left: calc(50% - 32px);
4918 background-repeat: no-repeat;
4919}
4920
4921
4922 .ptb-news__read-news .news-content .embed-responsive-youtube img {
4923 width: 100%;
4924 height: 100%;
4925 }
4926
4927</style>
4928
4929 <script>
4930 <#assign createYoutubeThumbnails = "createYoutubeThumbnails_"+ randomNumber(5952) />
4931
4932 function ${createYoutubeThumbnails}(){
4933
4934 const newsContent = document.querySelector(".news-content");
4935
4936 const getYoutubeId = (youtubeUrl) => {
4937
4938 const url = new URL(youtubeUrl);
4939 const splittedPathName = url.pathname.split("/");
4940
4941 if (splittedPathName.length <= 0){
4942 return "";
4943 }
4944
4945 return splittedPathName[splittedPathName.length-1];
4946 };
4947
4948 window.addEventListener("resize", (event) => {
4949 const iframeList = newsContent.querySelectorAll('iframe');
4950 iframeList.forEach((iframe) => {
4951 const src = iframe.src;
4952 if (!src){
4953 return;
4954 }
4955
4956 const isYoutube = src.toLowerCase().includes("youtube");
4957 if (!isYoutube){
4958 return;
4959 }
4960
4961 const iframeParent = iframe.parentNode;
4962
4963 const thumbnail = iframeParent.querySelector("img");
4964 if (thumbnail){
4965 // thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px";
4966 }
4967 });
4968
4969 });
4970
4971 const iframeList = newsContent.querySelectorAll('iframe');
4972 iframeList.forEach((iframe) => {
4973 const src = iframe.src;
4974 if (!src){
4975 return;
4976 }
4977
4978 const isYoutube = src.toLowerCase().includes("youtube");
4979 if (!isYoutube){
4980 return;
4981 }
4982
4983 const iframeParent = iframe.parentNode;
4984
4985 const thumbnail = document.createElement("img");
4986 thumbnail.src = 'https://img.youtube.com/vi/' + getYoutubeId(src) +'/hqdefault.jpg';
4987 thumbnail.alt = "Youtube";
4988 //thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px";
4989
4990 const playButton = document.createElement("div");
4991 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")';
4992 playButton.classList.add("thumnail-play-button-youtube");
4993 const children = iframeParent.children;
4994
4995 if (children.length > 0) {
4996 iframeParent.insertBefore(thumbnail, children.firstChild);
4997 iframeParent.insertBefore(playButton, thumbnail);
4998 iframe.classList.add("hide");
4999 iframeParent.classList.add("embed-responsive-youtube");
5000 }
5001
5002 playButton.addEventListener("click", () => {
5003 thumbnail.click();
5004 });
5005
5006 thumbnail.addEventListener("click", () => {
5007 thumbnail.classList.add("hide");
5008 playButton.classList.add("hide");
5009 iframe.classList.remove("hide");
5010 iframeParent.classList.remove("embed-responsive-youtube");
5011 const url = new URL(src);
5012 const searchParams = url.searchParams;
5013 searchParams.set("rel", "0");
5014 //searchParams.set("modestbranding", "0");
5015 //searchParams.set("mute", "0");
5016 //searchParams.set("color", "white");
5017 searchParams.set("controls", "1");
5018 //searchParams.set("playsinline", "1");
5019 //searchParams.set("enablejsapi", "1");
5020 searchParams.set("autoplay", "1");
5021 //searchParams.set("logo", "0");
5022
5023 console.log(url.toString());
5024
5025 iframeParent.setAttribute("data-embed-id", url.toString());
5026 iframe.setAttribute("src", url.toString());
5027 });
5028 });
5029
5030 }
5031
5032 ${createYoutubeThumbnails}();
5033
5034 <#assign createLRThumbnails = "createLRThumbnails"+ randomNumber(5952) />
5035
5036 function ${createLRThumbnails}(){
5037
5038 const newsContent = document.querySelector(".news-content");
5039 const iframeList = newsContent.querySelectorAll("iframe[data-video-liferay]");
5040
5041 iframeList.forEach(iframe => {
5042
5043 const playButton = document.createElement("div");
5044 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")';
5045 playButton.classList.add("thumnail-play-button-liferay");
5046 const children = iframe.parentNode.children;
5047 if (children.length > 0) {
5048 iframe.parentNode.insertBefore(playButton, children.firstChild);
5049 }
5050
5051 iframe.addEventListener("load", () => {
5052 if (iframe.contentDocument){
5053 const video = iframe.contentDocument.body.querySelector("video");
5054 video.removeAttribute("controls");
5055 }
5056 });
5057
5058 iframe.parentNode.classList.add("embed-responsive-liferay");
5059
5060
5061 playButton.addEventListener("click", () => {
5062 playButton.classList.add("hide");
5063 playButton.classList.remove("thumnail-play-button-liferay");
5064 iframe.parentNode.classList.remove("embed-responsive-liferay");
5065 if (iframe.contentDocument){
5066 const video = iframe.contentDocument.body.querySelector("video");
5067 video.setAttribute("controls", "");
5068 video.play();
5069 }
5070 });
5071 });
5072 }
5073
5074 ${createLRThumbnails}();
5075 </script>
Escolha um Canal:
Navegue nas Seções:
Acessibilidade
Idioma:
Selecione um idioma: