Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing: ==> cardData [in template "20099#20135#10700480" at line 1373, column 69] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${cardData.media.videoYotubeID} [in template "20099#20135#10700480" in macro "renderNewsFeaturedMedia" at line 1373, column 67] - Reached through: @renderNewsFeaturedMedia newsInfo [in template "20099#20135#10700480" at line 471, column 21] ----
1<#-- Conteúdo Web -> Templates: Site de Crise - Include de templates-->
2<#-- include "${templatesPath}/1975602" -->
3
4<#-- Conteúdo Web -> Templates: Site de Crise - Funções gerais-->
5<#include "${templatesPath}/1975398" />
6
7<#-- Conteúdo Web -> Templates: Busca pelas imagens do tipo de noticia -->
8<#include "${templatesPath}/18598756" />
9
10<#assign POST_TYPES_CATEGORIES = getPostTypeImages()!default([]) />
11
12<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Extrair dados de Notícias -->
13<#--include "${templatesPath}/7762031" -->
14
15<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Título -->
16<#-- include "${templatesPath}/7761976" -->
17
18<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação -->
19<#--include "${templatesPath}/7762069" -->
20
21<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia -->
22<#-- include "${templatesPath}/7761972" -->
23<#function getNodesByLabel fieldList parentNode label>
24 <#assign result = []/>
25 <#attempt>
26 <#assign groupId = getIdFromFieldName(fieldList, label) />
27 <#assign xSeletorCaminho = saxReaderUtil.createXPath("dynamic-element[@name='${groupId}' ]") />
28 <#assign result = xSeletorCaminho.selectNodes(parentNode) />
29 <#return result />
30 <#recover>
31 <#return result />
32 </#attempt>
33</#function>
34
35<#function findVocabulary vocabularyName vocabularies>
36 <#assign vocabularyNameLowerCase = vocabularyName?lower_case>
37 <#list vocabularies as vocabulary>
38 <#if vocabulary.name?lower_case == vocabularyNameLowerCase>
39 <#return vocabulary>
40 </#if>
41 </#list>
42 <#return {}>
43</#function>
44
45<#-- ############# Conteúdo Web -> Templates: Site de Crise - Include de templates #################################### -->
46<#function getSiteUrl>
47 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
48 <#if layout?? && layout?has_content>
49 <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?replace(layout.getFriendlyURL(), "")>
50 </#if>
51 <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)>
52</#function>
53
54<#function getSiteName>
55 <#return layout.getGroup().getDescriptiveName(locale)>
56</#function>
57
58<#function mountUrlToPage targetPage>
59 <#assign baseUrl = getSiteUrl()>
60 <#assign trimmedUrl = baseUrl?replace("/w/", "/")>
61 <#assign trimmedUrl = trimmedUrl?substring(0, trimmedUrl?last_index_of("/"))>
62 <#return trimmedUrl + "/" + targetPage>
63</#function>
64<#-- ################################################################################################################## -->
65
66
67<#assign
68 journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
69 assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
70 assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
71 vocabularies = assetVocabularyService.getGroupVocabularies(groupId)
72 tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")
73 tagVocabulary = findVocabulary("Tag", vocabularies)
74 flagVocabulary = findVocabulary("Flag", vocabularies)
75 tagCategoryTitles = extractVocabularyTitles(tagVocabulary)
76 flagCategoryTitles = extractVocabularyTitles(flagVocabulary)
77 assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
78 fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"]
79 layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
80 PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]
81 AssetEntryQueryService = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil").getService()
82 AssetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')
83/>
84
85<#-- Nome das midias adaptativas de imagem para desktop e mobile -->
86<#assign adaptativeMediaDesktopResolutionName = "Preview-1000x0" />
87<#assign adaptativeMediaMobileResolutionName = "Thumbnail-300x300" />
88
89<#assign typeOfNewsVocabulary = findVocabulary("Tipo de Notícia", vocabularies)/>
90<#assign ourEnergyVocabulary = findVocabulary("Nossa Energia", vocabularies)/>
91
92<#assign newsJournalArticle = "">
93<#assign assetEntry = getAssetEntryFromRequest(assetEntryLocalService)>
94<#if assetEntry?? && assetEntry?has_content>
95 <#assign newsJournalArticle = journalArticleLocalService.fetchLatestArticle(assetEntry.classPK)/>
96</#if>
97
98<#function getSingleNode name root>
99 <#attempt>
100 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']/dynamic-content[@language-id='${locale}']") />
101 <#return xPathSelector.selectSingleNode( root ) />
102 <#recover>
103 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']") />
104 <#return xPathSelector.selectSingleNode( root ) />
105 </#attempt>
106</#function>
107
108<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article -->
109<#function getFirstCategoryOfVocabulary journalArticle vocabulary >
110 <#attempt>
111 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
112 <#list categories as category>
113 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
114 <#return category.getName()>
115 </#if>
116 </#list>
117 <#return "">
118
119 <#recover>
120 <#return "" />
121 </#attempt>
122</#function>
123
124<#function getFirstCategoryObjectOfVocabulary journalArticle vocabulary >
125 <#attempt>
126 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
127 <#list categories as category>
128 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
129 <#return category>
130 </#if>
131 </#list>
132 <#return "">
133
134 <#recover>
135 <#return "" />
136 </#attempt>
137</#function>
138
139<#-- Função para obter todas os ids das categorias associonadas a um Vocabulário o qual está associado a um Jornal Article -->
140<#function getAllCategoryIdOfVocabulary journalArticle vocabulary >
141 <#attempt>
142 <#assign categoriesIds = [] />
143 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
144 <#list categories as category>
145 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
146 <#assign categoriesIds = categoriesIds + [category.getCategoryId()] />
147 </#if>
148 </#list>
149 <#return categoriesIds>
150
151 <#recover>
152 <#return [] />
153 </#attempt>
154</#function>
155
156<#if newsJournalArticle?? && newsJournalArticle?has_content>
157
158 <div class="breadcrumb-breakpoint breakpoint">
159 <div class="breadcrumb-col col-2-11 md-col-1-8 sm-col-1-4">
160 <#assign homeURL = "/" />
161
162 <#if currentURL?contains('webserver')>
163 <#assign homeURL = "/web/nossa-energia" />
164 </#if>
165
166 <a href="${homeURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">
167 <span class="breadcrumb-text-truncate" original-text="Home">Home</span>
168 <div class="icon"></div>
169 </a>
170
171 <#assign currentUrl = getSiteUrl()>
172
173 <#assign lastIndex = currentUrl?last_index_of("/")>
174 <#assign urlWithoutLastSegment = currentUrl?substring(0, lastIndex+1)>
175 <#assign urlWithoutW = urlWithoutLastSegment?replace("/w/", "/")>
176
177 <#assign breadcrumbOurEnergyCategory = getFirstCategoryObjectOfVocabulary(assetEntry, ourEnergyVocabulary) />
178 <#assign categoryURL = urlWithoutW/>
179 <a href="${categoryURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">
180 <span class="breadcrumb-text-truncate" original-text="${breadcrumbOurEnergyCategory.getTitle(locale)}">${breadcrumbOurEnergyCategory.getTitle(locale)}</span>
181 <div class="icon"></div>
182 </a>
183
184 <span original-text="${newsJournalArticle.getTitle(locale)}" class="breadcrumb-page text active-page active paragraph-micro-bold">${newsJournalArticle.getTitle(locale)}</span>
185 </div>
186 </div>
187
188 <div class="ptb-news__read-news">
189 <div class="ptb-news__read-news-post ">
190 <div class="ptb-news__read-content">
191
192 <#assign
193 ddmStructure = newsJournalArticle.getDDMStructure()
194 fieldList = getFieldListByStructure(ddmStructure)
195 xmlArticle = newsJournalArticle.getDocument().getRootElement()
196 >
197
198 <#assign
199 <#-- Título principal da notícia -->
200 mainHeadlineOfTheNews = newsJournalArticle.getTitle(locale, true)
201 <#-- Título de destaque da notícia -->
202 featuredNewsHeadline = extractFeaturedNewsHeadline(fieldList, xmlArticle)
203 <#-- Sumário da notícia -->
204 newsSummary = extractNewsSummary(fieldList, xmlArticle)
205 <#-- Data de publicação da notícia -->
206 lastPublishDate = extractPublishDate(newsJournalArticle)
207 <#-- Data de criação da notícia -->
208 createDate = newsJournalArticle.getCreateDate()
209 >
210
211 <#-- Flag da notícia ---------------------------------------------------------------------------------->
212 <#assign flag = getFirstCategoryTitle(newsJournalArticle, flagCategoryTitles, assetCategoryLocalService)>
213
214 <#-- Url amigável da notícia para visualização em DisplayPage ----------------------------------------->
215 <#assign newsJournalArticleFriendlyUrl = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + newsJournalArticle.getUrlTitle()>
216
217 <#-- Conteúdo da notícia ------------------------------------------------------------------------------>
218 <#assign newsContent = getFieldValue(fieldList, xmlArticle, "Corpo da notícia")>
219
220 <#assign WEB_STORIES_FIELD_SET_FIELD_REF = "Fieldset91054335" />
221 <#assign WEB_STORIES_IDENTIFICATION_FIELD_LABEL = "Identificador do Carousel" />
222 <#assign WEB_STORIES_TITLE_FIELD_LABEL = "Título do carrossel" />
223
224 <#assign webStoriesCarouselsIds = [] />
225 <#assign webStoriesCarouselsTitles = [] />
226 <#assign webStoriesCarouselsIdsFieldSetList = getNodes(WEB_STORIES_FIELD_SET_FIELD_REF, xmlArticle) />
227
228 <#list webStoriesCarouselsIdsFieldSetList as webStoriesFieldSet>
229 <#assign webStoriesCarouselsIds = webStoriesCarouselsIds + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_IDENTIFICATION_FIELD_LABEL) ] />
230 <#assign webStoriesCarouselsTitles = webStoriesCarouselsTitles + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_TITLE_FIELD_LABEL) ] />
231 </#list>
232
233 <#assign wsCarouselContent = '
234 <div id="[CAROUSEL_ID]" class="ws-carousel">
235 <div class="ws-carousel-header">
236 <h1 class="h2">
237 [CAROUSEL_TITLE]
238 </h1>
239 <div class="nav-buttons">
240 <svg class="nav-arrow left-arrow inactive" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
241 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#bababa"/>
242 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#bababa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
243 </svg>
244 <svg class="nav-arrow right-arrow active" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
245 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#008542"/>
246 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
247 </svg>
248 </div>
249 </div>
250 <div class="ws-carousel-body">
251 <div class="ws-container">
252 </div>
253 </div>
254 </div>' />
255
256 <#list webStoriesCarouselsIds as item >
257 <#assign carouselDiv = wsCarouselContent?replace("[CAROUSEL_ID]", item)?replace("[CAROUSEL_TITLE]", webStoriesCarouselsTitles[item?index]) />
258 <#assign newsContent = newsContent?replace("<p>#[${item}]</p>", carouselDiv) />
259 </#list>
260
261
262 <#assign WEB_STORIES_FIELD_SET_FIELD_REF = "Fieldset91054335" />
263 <#assign WEB_STORIES_IDENTIFICATION_FIELD_LABEL = "Identificador do Carousel" />
264 <#assign WEB_STORIES_TITLE_FIELD_LABEL = "Título do carrossel" />
265
266 <#assign webStoriesCarouselsIds = [] />
267 <#assign webStoriesCarouselsTitles = [] />
268 <#assign webStoriesCarouselsIdsFieldSetList = getNodes(WEB_STORIES_FIELD_SET_FIELD_REF, xmlArticle) />
269
270 <#list webStoriesCarouselsIdsFieldSetList as webStoriesFieldSet>
271 <#assign webStoriesCarouselsIds = webStoriesCarouselsIds + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_IDENTIFICATION_FIELD_LABEL) ] />
272 <#assign webStoriesCarouselsTitles = webStoriesCarouselsTitles + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_TITLE_FIELD_LABEL) ] />
273 </#list>
274
275 <#assign wsCarouselContent = '
276 <div id="[CAROUSEL_ID]" class="ws-carousel">
277 <div class="ws-carousel-header">
278 <h1 class="h2">
279 [CAROUSEL_TITLE]
280 </h1>
281 <div class="nav-buttons">
282 <svg class="nav-arrow left-arrow inactive" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
283 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#bababa"/>
284 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#bababa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
285 </svg>
286 <svg class="nav-arrow right-arrow active" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
287 <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#008542"/>
288 <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
289 </svg>
290 </div>
291 </div>
292 <div class="ws-carousel-body">
293 <div class="ws-container">
294 </div>
295 </div>
296 </div>' />
297
298 <#list webStoriesCarouselsIds as item >
299 <#assign carouselDiv = wsCarouselContent?replace("[CAROUSEL_ID]", item)?replace("[CAROUSEL_TITLE]", webStoriesCarouselsTitles[item?index]) />
300 <#assign newsContent = newsContent?replace("<p>#[${item}]</p>", carouselDiv) />
301 </#list>
302
303
304 <#-- Seção do áudio para o conteúdo da notícia -------------------------------------------------------->
305 <#assign audios = []
306 audioIdentifierFieldSetList = getNodes("Fieldset65862311", xmlArticle)
307 >
308 <#list audioIdentifierFieldSetList as audioIdentifierFieldSet>
309 <#assign
310 <#-- Grupo com as informações de url e legenda do áudio -->
311 audioInfoFieldSet = getGroupNode("Fieldset24035689",audioIdentifierFieldSet)>
312 <#assign
313 externalAudioUrl = getFieldValue(fieldList, audioInfoFieldSet, "URL externa do áudio")
314 internalAudioUrl = getFileFromXML("DocumentLibrary24170668", audioInfoFieldSet, fileEntryService)
315 audioLegend = getFieldValue(fieldList, audioInfoFieldSet, "Legenda do áudio")>
316
317 <#if externalAudioUrl?has_content || internalAudioUrl.url?has_content >
318 <#assign audios += [{
319 "id": getFieldValue(fieldList, audioIdentifierFieldSet, "Identificador de Áudio"),
320 "externalUrl" : externalAudioUrl,
321 "internalUrl" : internalAudioUrl,
322 "legend" : audioLegend
323 }]>
324 </#if>
325 </#list>
326
327
328 <#-- Seção de vídeo para o conteúdo da notícia -------------------------------------------------------->
329 <#assign videos = []
330 videoIdentifierFieldSetList = getNodes("Fieldset24460782", xmlArticle)
331 >
332 <#list videoIdentifierFieldSetList as videoIdentifierFieldSet>
333 <#assign
334 <#-- Grupo com as informações de url e legenda do áudio -->
335 videoInfoFieldSet = getGroupNode("Fieldset51040010",videoIdentifierFieldSet)
336
337 videos += [{
338 "id": getFieldValue(fieldList,videoIdentifierFieldSet, "Identificador de Vídeo"),
339 "youtubeID" : getFieldValue(fieldList, videoInfoFieldSet, "ID do vídeo do YouTube"),
340 "internalUrl" : getFileFromXML("DocumentLibrary15265409", videoInfoFieldSet, fileEntryService),
341 "legend" : getFieldValue(fieldList, videoInfoFieldSet, "Legenda do vídeo")
342 }]
343 >
344 </#list>
345
346
347 <#-- Seção de links para o conteúdo da notícia -------------------------------------------------------->
348 <#assign
349 links = []
350 linksFieldSetList = getNodes("Fieldset37770113", xmlArticle)
351 >
352 <#list linksFieldSetList as linksFieldSet>
353 <#assign linkFieldSetList = getNodes("Fieldset10524367", linksFieldSet)>
354
355 <#list linkFieldSetList as linkFieldSet>
356 <#assign
357 linkId = getFieldValue(fieldList, linkFieldSet, "Identificador do link")
358
359 <#-- Grupo com as informações de url e legenda do áudio -->
360 linkInfoFieldSeet = getGroupNode("Fieldset86037074", linkFieldSet)
361
362 iconType = getFieldValue(fieldList, linkInfoFieldSeet, "Ícone do link")
363 links += [{
364 "id": linkId,
365 "externalLink" : getFieldValue(fieldList, linkInfoFieldSeet, "Link externo"),
366 "pageLink" : getPageLayoutLinkFromXML("LinkToLayout77941175", linkInfoFieldSeet, layoutLocalService),
367 "file" : getFileFromXML("DocumentLibrary34820760", linkInfoFieldSeet, fileEntryService),
368 "title" : getFieldValue(fieldList, linkInfoFieldSeet, "Título do link"),
369 "iconType" : iconType
370 }]
371 >
372 </#list>
373 </#list>
374
375
376
377 <#assign galleryItems = []/>
378
379 <#assign mediaGroupList = getNodes(getIdFromFieldName(fieldList, "Galeria de multimídia"), xmlArticle) />
380
381 <#list mediaGroupList as mediaGroup >
382 <#assign nodes = getNodes(getIdFromFieldName(fieldList, "Imagem da Galeria") , mediaGroup) />
383 <#list nodes as node>
384 <#assign image = getMediaInfo(fieldList, node, "Imagem", fileEntryService) />
385 <#if image?? && image?has_content && image.url?has_content>
386 <#assign galleryItems += [{"image": image}] />
387 </#if>
388 </#list>
389 </#list>
390
391 <#-- Seção de Quotes para o conteúdo da notícia -------------------------------------------------------->
392 <#-- Seção de Quotes para o conteúdo da notícia -------------------------------------------------------->
393 <#assign quotes = [] />
394 <#assign quotesRootFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quotes da notícia"), xmlArticle) />
395 <#list quotesRootFieldSetList as quotesFieldSetList>
396 <#assign quoteFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quote"), quotesFieldSetList) />
397 <#list quoteFieldSetList as quoteFieldSet>
398 <#assign imageJsonString = getSingleNodeString("Image94530628", quoteFieldSet) />
399 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
400 <#attempt>
401 <#if imageJsonString ?? && imageJsonString?has_content>
402 <#assign imageJson = jsonFactoryUtil.createJSONObject(imageJsonString) />
403 </#if>
404
405 <#if !imageJson.url?? || !imageJson.url?has_content>
406 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
407 </#if>
408 <#recover>
409 </#attempt>
410
411 <#if !imageJson.url?? || !imageJson.url?has_content>
412 <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} />
413 </#if>
414
415 <#assign quotes += [{
416 "id": getFieldValue(fieldList, quoteFieldSet, "Identificador do Quote"),
417 "content" : getFieldValue(fieldList, quoteFieldSet, "Texto do Quote"),
418 "author" : getFieldValue(fieldList, quoteFieldSet, "Nome do autor"),
419 "image" : {"url": imageJson.url, "alt": imageJson.alt, "fileEntryId" : imageJson.fileEntryId, "title" : imageJson.title}
420 }] />
421 </#list>
422 </#list>
423
424 <#assign newsInfo = {
425 "mainHeadlineOfTheNews": mainHeadlineOfTheNews,
426 "featuredNewsHeadline" : featuredNewsHeadline,
427 "displayDate" : formatDate(createDate),
428 "createDate": createDate,
429 "newsSummary" : newsSummary,
430 "newsMedia": extractNewsMedia(fieldList, xmlArticle, fileEntryService),
431 "lastPublishDate": lastPublishDate,
432 "flag": flag,
433 "url": newsJournalArticleFriendlyUrl,
434 "newsContent": newsContent,
435 "audios": audios,
436 "videos": videos,
437 "galleryItems": galleryItems,
438 "links": links,
439 "quotes": quotes
440 }/>
441
442 <#-- Renderizar o título principal da notícia -->
443 <#-- Conteúdo-> Conteúdo Web -> Templates: Site de Crise - Notícia - Título -->
444 <@renderHeadLine newsInfo/>
445
446 <#-- Renderizar o resumo da notícia -->
447 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Resumo -->
448 <@renderReview newsInfo/>
449
450 <#-- Renderizar a data de publicação/edição da notícia e redes sociais -->
451 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação -->
452 <@renderPublishAndSocialMediasInfos newsJournalArticle newsInfo/>
453
454 <#-- Renderizar as tags da notícia -->
455 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render Tags -->
456 <#assign categoriesAsssetEntryResponse = restClient.get("/headless-delivery/v1.0/structured-contents/${assetEntry.getClassPK()}?nestedFields=embeddedTaxonomyCategory&fields=taxonomyCategoryBriefs") />
457
458 <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??>
459 <#assign tagCategoryList = getCategoriesNamesAndIds("Tags", categoriesAsssetEntryResponse.taxonomyCategoryBriefs) />
460 <#assign removeStartParameterWhenTagIsClicked = true />
461 <#assign includeRequestParams = false />
462 <#assign NEWS_PAGE_NAME= "categorias"/>
463 </#if>
464
465
466 <#-- Renderizar a imagem de destaque da notícia -->
467 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Imagem de destaque -->
468 <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) />
469
470 <#if !typeOfNews?? || !typeOfNews?has_content || typeOfNews != "Infográfico" >
471 <@renderNewsFeaturedMedia newsInfo />
472 </#if>
473
474 <#-- Renderizar o conteúdo da notícia -->
475 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
476 <@renderNewsContent newsInfo/>
477
478 <#-- Renderizar o conteúdo da notícia-->
479 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
480
481 <#-- Renderizar o conteúdo da notícia-->
482 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
483
484 <#-- Renderiza botoes de compartilhamento na versao mobile -->
485 <div class="render-share-news-container publish_and_social_medias_infos_desk mobile">
486 <@renderShareAndCopyNews/>
487 </div>
488
489 <#-- Renderizar links da notícia -->
490 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Links do conteúdo da notícia -->
491 <@renderLinks newsInfo />
492
493 <@renderCite />
494
495 <#-- Renderizar áudios da notícia -->
496 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia -->
497
498 <#-- Renderizar galeria de imagens notícia -->
499 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render galeria -->
500 <@renderGallery newsInfo />
501
502 <#-- Renderizar quotes da notícia -->
503 <@renderQuotes newsInfo />
504 </div>
505 </div>
506 </div>
507<#else >
508 <div class="ptb-news__read-news paragraph-sm-regular">
509 <p> <#if locale == "pt_BR"> Nenhuma notícia <#else> There are no news </#if></p>
510 </div>
511
512 <style>
513 .ptb-news__read-news p {
514 color: #515867;
515 }
516
517 body.high-contrast-active .ptb-news__read-news p {
518 color: var(--color-neutral-100);
519 }
520 </style>
521</#if>
522
523<style>
524 .breadcrumb-breakpoint {
525 padding-top: var(--space-xxl);
526 padding-bottom: var(--space-xl);
527 }
528
529 body.high-contrast-active .breadcrumb-breakpoint {
530 background: var(--background-surface-level-01, #010101);
531 }
532
533 .breadcrumb-breakpoint .breadcrumb-col {
534 display: flex;
535 width: max-content;
536 gap: var(--space-xxs);
537 height: fit-content;
538 overflow-x: hidden;
539 }
540
541 .breadcrumb-breakpoint #liferay-breadcrumb {
542 display: none;
543 }
544
545 .breadcrumb-breakpoint .breadcrumb-page {
546 display: flex;
547 gap: var(--space-micro);
548 height: var(--size-md);
549 size: var(--size-md);
550 border: 1px solid rgba(0, 0, 0, 0);
551 box-sizing: border-box;
552 border-radius: var(--border-radius-sm);
553 }
554
555 .breadcrumb-breakpoint a.breadcrumb-page.text span,
556 .breadcrumb-breakpoint span.breadcrumb-page.text {
557 white-space: nowrap;
558 }
559
560 .breadcrumb-breakpoint .breadcrumb-page a:focus {
561 outline: none;
562 }
563
564 .breadcrumb-breakpoint .breadcrumb-page.active-page {
565 color: var(--color-text-primary-default);
566 background-color: var(--color-background-default-level-02);
567 border-radius: var(--border-radius-sm);
568 }
569
570 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.active-page {
571 background: var(--background-surface-level-02, #373737);
572 color: var(--text-primary-default, #FFF);
573 }
574
575 .breadcrumb-breakpoint .breadcrumb-page.previous-page {
576 transition: 300ms ease-in-out;
577 }
578
579 .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
580 text-decoration: var(--text-decoration-none);
581 color: var(--color-text-primary-default);
582 text-transform: capitalize;
583 padding-left: var(--space-xxs);
584 padding-right: var(--space-xxs);
585 }
586
587 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
588 color: var(--text-primary-default, #FFF);
589 }
590
591 .breadcrumb-breakpoint .breadcrumb-page.active-page.text {
592 color: var(--color-text-primary-default);
593 text-decoration: var(--text-decoration-none);
594 background-color: var(--color-background-default-level-02);
595 text-transform: capitalize;
596 padding-left: var(--space-xxs);
597 padding-right: var(--space-xxs);
598 }
599
600 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
601 color: var(--text-primary-default, #FFF);
602 }
603
604 .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
605 background-color: var(--color-background-default-level-01);
606 border-color: var(--border-color-dark);
607 border-radius: var(--border-radius-sm);
608 border: 1px solid;
609 transition: all 300ms ease-in-out;
610 }
611
612 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
613 background-color: transparent;
614 }
615
616 .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
617 margin: var(--space-micro);
618 border-radius: var(--space-micro);
619 outline: none;
620 border: 1px solid var(--color-primary-medium);
621 box-sizing: border-box;
622 transition: 300ms ease-in-out;
623 }
624
625 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
626 border: 1px solid rgba(228, 247, 232, 1);
627 }
628
629 .breadcrumb-breakpoint .breadcrumb-page .icon {
630 width: var(--size-xxs);
631 height: var(--size-xxs);
632 border-color: var(--border-color-darkest);
633 background-image: url('data:image/svg+xml,%3Csvg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M4.5 2.25L8.25 6L4.5 9.75" stroke="%23525252" stroke-linecap="round" stroke-linejoin="round"%3E%3C/path%3E%3C/svg%3E');
634 background-size: cover;
635 margin-top: auto;
636 margin-bottom: auto;
637 }
638
639 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page .icon {
640 background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 2.25L8.25 6L4.5 9.75" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg>');
641 }
642
643 .ptb-news__read-news {
644 overflow: hidden;
645 }
646
647 body.high-contrast-active .ptb-news__read-news {
648 background: var(--background-surface-level-01, #010101);
649 }
650</style>
651
652
653<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
654<#--
655Add elements from the sidebar to define your template. Type "${" to use the
656autocomplete feature.
657-->
658
659<#macro renderHeadLine newsInfo>
660
661 <div class="main-headline-container breakpoint">
662 <div class="main-headline-container-col col-2-11 md-col-1-8 sm-col-1-4">
663 <h1 class="main-headline display-sm">${newsInfo.featuredNewsHeadline}</h1>
664 <div class="bar"></div>
665 </div>
666 </div>
667
668 <style>
669 .ptb-news__read-news .main-headline-container .main-headline-container-col {
670 display: flex;
671 flex-direction: column;
672 gap: var(--space-sm);
673 padding-bottom: var(--space-lg);
674 }
675
676 .ptb-news__read-news .main-headline-container .main-headline-container-col * {
677 margin: 0;
678 padding: 0;
679 }
680
681 .ptb-news__read-news .main-headline-container .main-headline {
682 font-family: var(--font-family-base);
683 color: var(--color-neutral-800);
684 }
685
686 body.high-contrast-active .ptb-news__read-news .main-headline-container .main-headline {
687 color: var(--text-primary-default, var(--color-neutral-100));
688 }
689
690 .ptb-news__read-news .main-headline-container .bar {
691 width: 32px;
692 height: var(--size-micro);
693 background: var(--color-secondary-medium);
694 }
695
696 body.high-contrast-active .ptb-news__read-news .main-headline-container .bar{
697 background: var(--text-secondary-accent, #FFEEB3);
698 }
699
700 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
701 .ptb-news__read-news .main-headline-container .main-headline-container-col {
702 gap: var(--space-xs, 12px);
703 }
704 }
705 </style>
706</#macro>
707<#-- ################################################################################################################## -->
708
709<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
710<#macro renderReview newsInfo>
711 <#assign summaryCssRoot = "summary-container" />
712
713 <div class="${summaryCssRoot}-breakpoint breakpoint">
714 <div class="${summaryCssRoot} col-2-11 md-col-1-8 sm-col-1-4">
715 <p class="summary paragraph-lg-regular">
716 ${newsInfo.newsSummary}
717 </p>
718 </div>
719
720 </div>
721
722 <style>
723 .${summaryCssRoot} .summary {
724 padding-bottom: var(--space-lg);
725 }
726
727 .${summaryCssRoot} .summary,
728 .${summaryCssRoot} .summary * {
729 color: var(--color-neutral-800, #373737);
730 font-family: var(--font-family-base);
731 font-style: var(--font-style-italic);
732 margin: var(--space-none);
733 }
734
735 body.high-contrast-active .summary,
736 body.high-contrast-active .summary * {
737 color: var(--text-secondary-default, #F8F8F8);
738 }
739 </style>
740</#macro>
741<#-- ################################################################################################################## -->
742
743<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
744<#macro renderPublishAndSocialMediasInfos journalArticle newsInfo>
745
746 <div class="publish_and_social_medias_infos_desk-breakpoint breakpoint">
747 <div class="publish_and_social_medias_infos_desk col-2-11 md-col-1-8 sm-col-1-4">
748 <div class="publish_and_update_date">
749 <#assign lastPublishDate = journalArticle.getModifiedDate()>
750 <#assign createDate = journalArticle.getCreateDate()>
751 <#if journalArticle.getLastPublishDate()??>
752 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
753 </#if>
754
755 <#if locale == "pt_BR">
756 <p class="updated">Atualizado em ${formatDate(lastPublishDate)}</p>
757 <p class="published">Postado em ${formatDate(createDate)}</p>
758 <#else >
759 <p class="updated">Updated on ${formatDate(lastPublishDate)}</p>
760 <p class="published">Posted on ${formatDate(createDate)}</p>
761 </#if>
762 </div>
763 <div class="render-share-news-container desktop">
764 <@renderShareAndCopyNews/>
765 </div>
766 </div>
767 </div>
768
769 <style>
770 .ptb-news__read-news .hidden {
771 display: none;
772 }
773 /*Data de publicação e redes sociais */
774
775 /* Desktop */
776 .ptb-news__read-news .publish_and_social_medias_infos_desk {
777 position: relative;
778 display: grid;
779 grid-template-columns: auto 1fr auto;
780 }
781
782 .ptb-news__read-news .render-share-news-container.mobile {
783 display: none;
784 }
785
786 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
787 padding: var(--space-none, 0);
788 margin: var(--space-none, 0);
789 font-family: var(--font-family-base);
790 font-style: var(--font-style-normal, normal);
791 font-weight: var(--font-weight-regular, 400);
792 font-size: var(--font-size-xxs, 16px);
793 line-height: var(--line-height-xl, 160%);
794 color: var(--color-neutral-800, #373737);
795 }
796
797 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk * {
798 color: var(--text-secondary-default, #F8F8F8);
799 }
800
801 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg path,
802 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg path {
803 stroke: var(--color-neutral-500, #D7D7D7);
804 fill: rgba(255, 255, 255, 0.32);
805 }
806
807 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg circle,
808 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg circle {
809 fill: rgba(255, 255, 255, 0.32);
810 }
811
812 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
813 display: flex;
814 align-items: center;
815 gap: var(--space-sm, 16px);
816 }
817
818 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
819 font-weight: var(--font-weight-bold, 700);
820 font-size: var(--font-size-xxxs, 14px);
821 }
822
823 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
824 color: var(--text-primary-default, var(--color-neutral-100));
825 }
826
827 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
828 font-weight: var(--font-weight-normal, 400);
829 font-size: var(--font-size-xxxs, 14px);
830 }
831
832 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
833 display: flex;
834 width: 100%;
835 justify-content: flex-end;
836 align-items: center;
837 gap: var(--space-sm, 16px);
838 }
839
840 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share {
841 position: relative;
842 }
843
844 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share span {
845 position: absolute;
846 width: 100%;
847 height: 100%;
848 opacity: 0;
849 overflow: hidden;
850 pointer-events: none;
851 }
852
853 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
854 display: none;
855 }
856
857 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
858 background: var(--color-neutral-100);
859 border: var(--border-width-hairline, 1px) solid #CCCCCC;
860 border-radius: 32px;
861 display: flex;
862 align-items: center;
863 gap: var(--space-sm, 16px);
864 padding: 6px var(--space-xxs, 8px);
865 height: 36px;
866 margin: 0;
867 cursor: pointer;
868 }
869
870 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
871 background: rgba(255, 255, 255, 0.32);
872 border: var(--border-width-hairline, 1px) solid rgba(255, 255, 255, 0.32);
873 }
874
875 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container svg {
876 width: 18px;
877 }
878
879 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk svg path {
880 stroke: var(--color-neutral-500, #D7D7D7);
881 }
882
883 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
884 font-family: var(--font-family-base);
885 font-style: normal;
886 margin: 0;
887 height: 100%;
888 display: flex;
889 align-items: center;
890 color: var(--color-primary-medium, #008542);
891 font-size: var(--font-size-micro, 12px);
892 font-weight: var(--font-weight-bold, 700);
893 line-height: var(--line-height-lg, 144%);
894 pointer-events: none;
895 }
896
897 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text .copy-text-title-news {
898 position: absolute;
899 width: 100%;
900 height: 100%;
901 opacity: 0;
902 overflow: hidden;
903 }
904
905 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
906 color: var(--text-primary-accent, #E4F7E8);
907 }
908
909 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
910 display: none;
911 position: absolute;
912 bottom: -43px;
913 right: -15px;
914 padding: var(--space-xxxs, 4px) 15px;
915 margin: var(--space-micro, 2px) 10px;
916 width: 110px;
917 font-family: var(--font-family-base);
918 font-size: var(--font-size-micro, 12px);
919
920 color: #008542;
921 background: var(--color-neutral-100);
922 border-radius: var(--border-radius-md, 8px);
923
924 filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.16));
925
926 cursor: pointer;
927 }
928
929 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
930 background: rgba(255, 255, 255, 0.32);
931 color: var(--text-primary-accent, #E4F7E8);
932 }
933
934 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message-active {
935 display: block;
936 }
937
938 /* Mobile */
939
940 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
941 display: flex;
942 flex-direction: column;
943 gap: 19px;
944 }
945
946 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
947 display: none;
948 }
949
950 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text {
951 display: flex;
952 justify-content: space-between;
953 align-items: center;
954 margin-bottom: var(--space-lg, 32px);
955 }
956
957 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
958 padding: 0;
959 margin: 0;
960 font-family: var(--font-family-base);
961 font-style: var(--font-style-normal, normal);
962 font-size: var(--font-size-micro, 12px);
963 line-height: 136%;
964 color: var(--color-neutral-800, #373737);
965 }
966
967 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
968 color: var(--text-primary-accent, #E4F7E8);
969 }
970
971 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date {
972 display: flex;
973 flex-direction: column;
974 gap: 0;
975 }
976
977 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .updated {
978 font-weight: var(--font-weight-bold, 700);
979 }
980
981 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .published {
982 font-weight: var(--font-weight-regular, 400);
983 }
984
985 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
986 background: var(--color-neutral-100);
987 border: var(--border-width-hairline, 1px) solid #CCCCCC;
988 border-radius: 32px;
989 display: flex;
990 align-items: center;
991 gap: var(--space-sm, 16px);
992 padding: 6px var(--space-xxs, 8px);
993 width: 112px;
994 height: 36px;
995 }
996
997 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
998 background: rgba(255, 255, 255, 0.32);
999 color: var(--text-primary-accent, #E4F7E8);
1000 }
1001
1002 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container p.text {
1003 margin: 0;
1004 }
1005
1006 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
1007 font-family: var(--font-family-base);
1008 font-style: var(--font-style-normal, normal);
1009 font-weight: var(--font-weight-regular, 400);
1010 font-size: 13px;
1011 line-height: 14px;
1012 color: #008542;
1013 }
1014
1015 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
1016 background: rgba(255, 255, 255, 0.32);
1017 color: var(--text-primary-accent, #E4F7E8);
1018 }
1019
1020 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1021
1022 .ptb-news__read-news .publish_and_social_medias_infos_desk .render-share-news-container.desktop {
1023 display: none;
1024 }
1025
1026 .ptb-news__read-news .render-share-news-container.mobile {
1027 display: block;
1028 margin: var(--space-xl) var(--space-lg) 0 var(--space-lg);
1029 }
1030
1031 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
1032 font-size: var(--font-size-micro, 12px);
1033 }
1034
1035 .ptb-news__read-news .publish_and_social_medias_infos_desk {
1036 display: grid;
1037 grid-template-columns: 100%;
1038 grid-template-rows: 1fr 100%;
1039 }
1040
1041 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
1042 grid-column-start: 1;
1043 grid-column-end: 1;
1044 grid-row-start: 1;
1045 grid-row-end: 1;
1046 gap: var(--space-xxs, 8px);
1047 }
1048
1049 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1050 padding: 0;
1051 margin: 0;
1052 font-family: var(--font-family-base);
1053 font-style: var(--font-style-normal);
1054 color: var(--color-neutral-800, #373737);
1055 font-weight: var(--font-weight-bold);
1056 font-size: var(--font-size-xxxs, 14px);
1057 line-height: var(--line-height-md, 132%);
1058 }
1059
1060 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1061 color: var(--text-primary-accent, #E4F7E8);
1062 }
1063
1064 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
1065 font-weight: var(--font-weight-regular, 400);
1066 }
1067
1068 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1069 grid-column-start: 1;
1070 grid-column-end: 2;
1071 grid-row-start: 2;
1072 grid-row-end: 2;
1073 justify-content: center;
1074 gap: var(--space-xs, 12px);
1075 height: 36px;
1076 }
1077
1078 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1079 grid-column-start: 1;
1080 grid-column-end: 2;
1081 grid-row-start: 2;
1082 grid-row-end: 2;
1083 max-width: 112px;
1084 place-self: end;
1085 }
1086
1087 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
1088 display: none;
1089 }
1090
1091 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
1092 bottom: 0;
1093 right: -9px;
1094 }
1095
1096 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
1097 display: initial;
1098 }
1099 }
1100
1101 @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) {
1102 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1103 padding-right: 0;
1104 }
1105 }
1106
1107
1108 </style>
1109
1110 <script>
1111 AUI().ready(function () {
1112
1113 function copyOnClick(text) {
1114
1115 const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, "");
1116 const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, "");
1117 const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous Next/g, "");
1118 const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, "");
1119 const strWithoutBlankLines = strWithoutBlankEnters.replace(/ /g, '');
1120 const tempInput = document.createElement("textarea");
1121 tempInput.value = strWithoutBlankLines;
1122
1123 document.body.appendChild(tempInput);
1124 tempInput.select();
1125 document.execCommand("copy");
1126
1127 if (tempInput.value.length > 0) {
1128 copyMessages.forEach(copyMessage => copyMessage.classList.add('copy-message-active'));
1129
1130 timerToMessage()
1131 }
1132
1133 document.body.removeChild(tempInput);
1134 }
1135
1136 const copyTextContainers = document.querySelectorAll(".publish_and_social_medias_infos_desk .copy-text-container");
1137 copyTextContainers.forEach(copyTextContainer => {
1138 copyTextContainer.addEventListener("click", (event) => {
1139 event.preventDefault();
1140 const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML;
1141 const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML;
1142 const tagsText = document.querySelector(".tags").innerHTML;
1143 const newsContentText = document.querySelector(".news-content").innerHTML;
1144 const text = titleText + publishSocialMediaText + tagsText + newsContentText;
1145 copyOnClick(text)
1146 });
1147 });
1148
1149 const mobileShare = async () => {
1150 try {
1151 const shareData = {
1152 title: '${newsInfo.mainHeadlineOfTheNews}',
1153 text: '',
1154 url: '${newsInfo.url}'
1155 };
1156 await navigator.share(shareData);
1157 } catch (err) {
1158
1159 }
1160 };
1161
1162 const mobileShareButtons = document.querySelectorAll(".publish_and_social_medias_infos_desk .mobile-share");
1163 mobileShareButtons.forEach(mobileShareButton => {
1164 mobileShareButton.addEventListener("click", (event) => {
1165 event.preventDefault();
1166 mobileShare();
1167 });
1168 });
1169
1170 const copyMessages = document.querySelectorAll('.copy-message');
1171 const timerToMessage = () => {
1172 setTimeout(() => {
1173 removeMessage();
1174 }, 2500);
1175
1176 }
1177
1178 const removeMessage = () => {
1179 copyMessages.forEach(copyMessage => copyMessage.classList.remove('copy-message-active'));
1180 }
1181
1182 });
1183 </script>
1184
1185</#macro>
1186
1187<#-- ################################################################################################################## -->
1188
1189<#-- ############# Site de Crise - Notícia - Render Tags ############################################################## -->
1190
1191<#function getCategoriesNamesAndIds vocabularyName categoriesList>
1192 <#assign tagCategoryList = [] />
1193
1194 <#assign tagsVocabulary = assetVocabularyService.fetchGroupVocabulary(groupId, vocabularyName) />
1195 <#list categoriesList as cat>
1196 <#if tagsVocabulary.getVocabularyId() == cat.embeddedTaxonomyCategory.taxonomyVocabularyId >
1197 <#assign tagCategoryList += [[cat.taxonomyCategoryName, cat.taxonomyCategoryId]] />
1198 </#if>
1199 </#list>
1200 <#return tagCategoryList>
1201</#function>
1202
1203<#assign
1204flagVocabulary = findVocabulary("Flag", vocabularies)
1205assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")
1206/>
1207
1208<#macro renderNewsTags categoryList targetPageWhenClickTag removeStartParameterWhenTagIsClicked updateTagParamsWhenClicked>
1209 <#assign tagPrefix = "tags-" + randomNumber(groupId?number)>
1210 <div class="${tagPrefix}-breakpoint breakpoint">
1211 <div class="${tagPrefix} col-2-11 md-col-1-8 sm-col-1-4">
1212
1213 <div class="tags">
1214 <#list categoryList as cat>
1215 <#assign tagLink = mountUrlToPage("") />
1216 <#assign urlWithoutTrailingSlash = tagLink?substring(0, tagLink?length - 1)>
1217 <#assign lastSlashIndex = urlWithoutTrailingSlash?last_index_of("/")>
1218 <#assign newUrl = urlWithoutTrailingSlash?substring(0, lastSlashIndex + 1)>
1219 <#assign tagLink = newUrl + "categorias?category=" + cat[1] />
1220 <a href="${tagLink}"
1221 class="category" cetegoryid="${cat[1]}"># ${cat[0]}</a>
1222 </#list>
1223 </div>
1224 </div>
1225 </div>
1226
1227 <style>
1228 .${tagPrefix} {
1229 display: flex;
1230 flex-direction: column;
1231 padding: 0;
1232 gap: var(--space-sm);
1233 }
1234
1235 .${tagPrefix} * {
1236 margin: 0;
1237 padding: 0;
1238 }
1239
1240 .${tagPrefix} .tags {
1241 display: flex;
1242 flex-wrap: wrap;
1243 gap: var(--space-xxs, 8px);
1244 padding: var(--space-lg) 0 0;
1245 }
1246
1247 .${tagPrefix} .tags .category {
1248 padding: var(--space-xxxs) var(--space-xxs);
1249 background: var(--color-neutral-100);
1250 border: var(--border-width-hairline, 1px) solid var(--color-neutral-500);
1251 border-radius: var(--border-radius-xl);
1252
1253 font-family: var(--font-family-base);
1254 font-style: var(--font-style-normal);
1255 font-weight: var(--font-weight-regular);
1256 font-size: var(--font-size-xxxs);
1257 line-height: var(--line-height-xl);
1258 color: var(--color-neutral-800, #373737);
1259 cursor: pointer;
1260 }
1261
1262 body.high-contrast-active .${tagPrefix} .tags .category {
1263 background: rgba(255, 255, 255, 0.32);
1264 border: 1px solid rgba(255, 255, 255, 0.32);
1265 color: var(--text-secondary-default, #F8F8F8);
1266 }
1267
1268 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1269 .${tagPrefix} .tags {
1270 display: flex;
1271 flex-wrap: wrap;
1272 gap: 8px;
1273 padding: var(--space-sm) 0 var(--space-lg);
1274 }
1275
1276 .${tagPrefix} {
1277 margin-top: var(--space-sm);
1278 }
1279 }
1280 </style>
1281
1282 <script>
1283 AUI().ready(function () {
1284
1285 const urlParams = new URLSearchParams(window.location.search);
1286 const categories = urlParams.getAll("category").sort();
1287
1288 const root = document.querySelector(".${tagPrefix}");
1289 const tags = root.querySelectorAll(".category");
1290 tags.forEach((tag, index) => {
1291
1292 const categoryId = tag.getAttribute("cetegoryid");
1293 if (categories.indexOf(categoryId) != -1) {
1294 tag.classList.add("active");
1295 }
1296
1297 <#if updateTagParamsWhenClicked>
1298 tag.addEventListener("click", (e) => {
1299 e.preventDefault();
1300 const clickedTag = e.target;
1301 const urlParams = new URLSearchParams(window.location.search);
1302 urlParams.delete("tag");
1303 urlParams.delete("category");
1304
1305 const categoryId = clickedTag.getAttribute("cetegoryid");
1306 urlParams.append("category", categoryId);
1307
1308 <#if removeStartParameterWhenTagIsClicked>
1309 urlParams.delete("start");
1310 </#if>
1311
1312 const href = "${themeDisplay.getPortalURL() + mountUrlToPage(targetPageWhenClickTag)}?" + urlParams.toString();
1313 window.location.href = href;
1314 });
1315 </#if>
1316 });
1317 });
1318 </script>
1319
1320</#macro>
1321
1322<#-- ################################################################################################################## -->
1323
1324<#-- ############# Site de Crise - Notícia - Imagem de destaque ####################################################### -->
1325<#macro renderNewsFeaturedMedia newsInfo>
1326 <#if (newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content) || (newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content) || (newsInfo.newsMedia.internalVideo?? && newsInfo.newsMedia.internalVideo.url?has_content)>
1327 <div class="news-featured-media">
1328
1329 <div class="media-breakpoint breakpoint">
1330 <div class="media-col col-2-11 md-col-1-8 sm-col-1-4">
1331 <#if newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content>
1332 <#-- Midias adaptativas de imagem para desktop e mobile -->
1333 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${newsInfo.newsMedia.fileEntryId}") />
1334 <#assign urlAdaptativeMediaMobile = newsInfo.newsMedia.imageSrc/>
1335 <#assign urlAdaptativeMediaDesktop = newsInfo.newsMedia.imageSrc/>
1336
1337 <#if fileDataRequest?? && fileDataRequest.adaptedImages?? >
1338 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
1339 <#list dataAdaptativeMedia as data>
1340 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
1341 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
1342 </#if>
1343 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
1344 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
1345 </#if>
1346 </#list>
1347 </#if>
1348
1349 <picture >
1350 <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}">
1351 <img src="${urlAdaptativeMediaDesktop}" loading="lazy" alt="${newsInfo.newsMedia.imageAlt}"/>
1352 </picture>
1353 <@liferay_util["html-top"]>
1354 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1355 <meta name="description" content="${newsInfo.newsSummary}">
1356
1357 <meta property="og:url" content="${currentURL}">
1358 <meta property="og:type" content="website">
1359 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1360 <meta property="og:description" content="${newsInfo.newsSummary}" />
1361 <meta property="og:image" content="${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image">
1362 <meta property="og:image:alt" content="${newsInfo.newsMedia.imageAlt}">
1363
1364 <meta name="twitter:card" content="summary_large_image">
1365 <meta name="twitter:url" content="${currentURL}" />
1366 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1367 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1368 <meta name="twitter:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image" >
1369 <meta name="twitter:image:alt" content="${newsInfo.newsMedia.imageAlt}">
1370 </@>
1371 <#else>
1372 <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content>
1373 <iframe loading="lazy" data-video-id="${cardData.media.videoYotubeID}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
1374 <@liferay_util["html-top"]>
1375 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1376 <meta name="description" content="${newsInfo.newsSummary}">
1377
1378 <meta property="og:url" content="${currentURL}">
1379 <meta property="og:type" content="website">
1380 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1381 <meta property="og:description" content="${newsInfo.newsSummary}" />
1382 <meta property="og:image" content="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg">
1383 <meta property="og:image:alt" content="Youtube Video Thumbnail">
1384
1385 <meta name="twitter:card" content="summary_large_image">
1386 <meta name="twitter:url" content="${currentURL}" />
1387 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1388 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1389 <meta name="twitter:image" content= "https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" >
1390 <meta name="twitter:image:alt" content="Youtube Video Thumbnail">
1391 </@>
1392 <#else>
1393 <video loading="lazy">
1394 <source src="${newsInfo.newsMedia.internalVideo.url}">
1395 Your browser does not support the video tag.
1396 </video>
1397 </#if>
1398
1399 <div class="banner-video-icons">
1400 <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content>
1401 <picture >
1402 <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/mqdefault.jpg">
1403 <img class="banner-video-thumb-iframe" loading="lazy" src="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" alt="YouTube Thumbnail"/>
1404 </picture>
1405 </#if>
1406 <svg class="banner-video-icon-play" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
1407 <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z" fill="white" fill-opacity="0.8"/>
1408 <path d="M22.2563 15.5744L13.2625 10.0744C13.1868 10.0277 13.1 10.0021 13.0111 10.0001C12.9221 9.99816 12.8343 10.02 12.7566 10.0633C12.6789 10.1066 12.6141 10.1698 12.569 10.2465C12.5239 10.3232 12.5001 10.4105 12.5 10.4994V21.4994C12.5001 21.5884 12.5239 21.6757 12.569 21.7524C12.6141 21.8291 12.6789 21.8923 12.7566 21.9356C12.8343 21.9789 12.9221 22.0007 13.0111 21.9988C13.1 21.9968 13.1868 21.9712 13.2625 21.9244L22.2563 16.4244C22.3301 16.3808 22.3913 16.3186 22.4338 16.2441C22.4763 16.1696 22.4987 16.0852 22.4987 15.9994C22.4987 15.9137 22.4763 15.8293 22.4338 15.7548C22.3913 15.6803 22.3301 15.6181 22.2563 15.5744Z" fill="#008542"/>
1409 </svg>
1410 </div>
1411 </#if>
1412 </div>
1413 </div>
1414
1415 <div class="credit-legend breakpoint">
1416
1417 <div class="credit-legend-container col-2-11 md-col-1-8 sm-col-1-4">
1418 <#if newsInfo.newsMedia.legend != "">
1419 <div class="legend paragraph-micro-regular">
1420 <p>${newsInfo.newsMedia.legend}</p>
1421 </div>
1422 </#if>
1423 <#if newsInfo.newsMedia.credits != "">
1424 <p class="credits paragraph-micro-regular">
1425 ${newsInfo.newsMedia.credits}
1426 </p>
1427 </#if>
1428
1429 </div>
1430 </div>
1431 </div>
1432 </#if>
1433 <style>
1434 .ptb-news__read-news .news-featured-media {
1435 padding: var(--space-xl) 0 var(--space-xl) 0;
1436 }
1437
1438 .ptb-news__read-news .news-featured-media .media-col {
1439 position: relative;
1440 }
1441
1442 .ptb-news__read-news .news-featured-media img,
1443 .ptb-news__read-news .news-featured-media video,
1444 .ptb-news__read-news .news-featured-media iframe {
1445 width: 100%;
1446 max-height: 567px;
1447 aspect-ratio: 16/9;
1448 object-fit: cover;
1449 border-radius: var(--border-radius-lg, 16px);
1450 }
1451
1452 .ptb-news__read-news .news-featured-media .banner-video-icons {
1453 width: 100%;
1454 height: 100%;
1455 position: absolute;
1456 top: 50%;
1457 left: 50%;
1458 transform: translate(-50%,-50%);
1459 cursor: pointer;
1460 }
1461
1462 .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-thumb-iframe {
1463 position: absolute;
1464 width: 100%;
1465 height: 100%;
1466 object-fit: cover;
1467 }
1468
1469 .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play {
1470 position: absolute;
1471 top: 50%;
1472 left: 50%;
1473 transform: translate(-50%,-50%);
1474 }
1475
1476 body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(1) {
1477 fill: black;
1478 }
1479
1480 body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(2) {
1481 fill: white;
1482 }
1483
1484 .ptb-news__read-news .news-featured-media *:not(.breakpoint) {
1485 margin: 0;
1486 }
1487 .ptb-news__read-news .news-featured-media * {
1488 padding: 0;
1489 font-family: var(--font-family-base);
1490 line-height: var(--line-height-xl);
1491 }
1492
1493 .ptb-news__read-news .news-featured-media .credits {
1494 text-align: right;
1495 color: var(--collor-neutral-dark-to-bright-200, #525252);
1496 margin-bottom: var(--space-xxxs, 4px);
1497 font-style: var(--font-style-italic, italic);
1498 margin-top: var(--space-xxs, 8px);
1499 margin-bottom: 0;
1500 }
1501
1502 body.high-contrast-active .ptb-news__read-news .news-featured-media .credits {
1503 color: var(--text-secondary-default, #F8F8F8);
1504 }
1505
1506 .ptb-news__read-news .news-featured-media .legend {
1507 margin-top: var(--space-xxs, 8px);
1508 display: flex;
1509 justify-content: space-between;
1510 }
1511
1512 .ptb-news__read-news .news-featured-media .legend,
1513 .ptb-news__read-news .news-featured-media .legend * {
1514 font-style: var(--font-style-italic, italic);
1515 color: var(--collor-neutral-dark-to-bright-200, #525252);
1516 }
1517
1518 .ptb-news__read-news .credit-legend .credit-legend-container {
1519 display: flex;
1520 justify-content: space-between;
1521 flex-wrap: wrap;
1522 gap: 8px;
1523 }
1524
1525 body.high-contrast-active .ptb-news__read-news .news-featured-media .legend,
1526 body.high-contrast-active .ptb-news__read-news .news-featured-media .legend * {
1527 color: var(--text-secondary-default, #F8F8F8);
1528 }
1529
1530 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1531 .ptb-news__read-news .news-featured-media .credits {
1532 text-align: left;
1533 }
1534 }
1535 </style>
1536
1537 <script>
1538 /* Manipulation video*/
1539 let videoIsPlaying = false;
1540
1541 const modalForClick = document.querySelector(".ptb-news__read-news .news-featured-media .banner-video-icons");
1542 const video = document.querySelector(".ptb-news__read-news .news-featured-media .media-col > :first-child");
1543
1544 const playIcon = modalForClick && modalForClick.querySelector(".banner-video-icon-play");
1545 modalForClick && modalForClick.addEventListener("click", ()=>{
1546 if(video.tagName === "VIDEO") {
1547 if(videoIsPlaying) {
1548 video.pause();
1549 playIcon.style.display = "";
1550 videoIsPlaying = false;
1551 }
1552 else {
1553 video.play();
1554 playIcon.style.display = "none";
1555 videoIsPlaying = true;
1556 }
1557 }
1558 else if(video.tagName === "IFRAME") {
1559 const thumbYoutube = modalForClick.querySelector(".banner-video-thumb-iframe");
1560 if(videoIsPlaying) {
1561 video.contentWindow.postMessage('{"event":"command","func":"pauseVideo"}', '*');
1562 playIcon.style.display = "";
1563 videoIsPlaying = false;
1564 }
1565 else {
1566 if (!video.getAttribute('src')) {
1567 const videoId = video.getAttribute('data-video-id');
1568 const youtubeIframeUrl = 'https://www.youtube-nocookie.com/embed/' + videoId + '?si=PDNu4EIwtCuSHC1S&controls=0&enablejsapi=1&rel=0';
1569 video.setAttribute('src', youtubeIframeUrl);
1570 video.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share');
1571
1572 video.onload = () => video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*');
1573 }
1574 thumbYoutube && (thumbYoutube.style.display = "none");
1575 video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*');
1576 playIcon.style.display = "none";
1577 videoIsPlaying = true;
1578 }
1579 }
1580 });
1581 </script>
1582<#--/#if -->
1583</#macro>
1584<#-- ################################################################################################################## -->
1585
1586<#-- ############# Site de Crise - Notícia - Conteúdo da notícia ###################################################### -->
1587
1588<#macro renderNewsContent newsInfo>
1589
1590 <#assign targetStr = "<div class='paragraph_separator'><span class='dot'></span><span class='dot'></span><span class='dot'></span><span class='dot'></span></div>">
1591 <#assign content = newsInfo.newsContent?replace("<p></p>", targetStr, 'r')>
1592 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
1593 <#assign content = content?replace("<p></p>", targetStr, 'r')>
1594 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
1595
1596
1597 <div class="news-content breakpoint">
1598 <div class="col-1-12 md-col-1-8 sm-col-1-4">
1599 ${content}
1600 </div>
1601 <div class="audio-template audio-pause audio-unmuted" style="display:none">
1602 <div class="audio-button-play">
1603 <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>
1604 </svg>
1605
1606 <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>
1607 </svg>
1608 </div>
1609 <div class="audio-sondwave">
1610 <svg class="audio-sondwave-desktop" width="100%" height="100%" viewBox="0 0 590 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1611 <g clip-path="url(#clip0_2625_8152)">
1612 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1613 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1614 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1615 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1616 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1617 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1618 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1619 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1620 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1621 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1622 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1623 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1624 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1625 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1626 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1627 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1628 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1629 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1630 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1631 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1632 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1633 <line x1="107.072" y1="8.75" x2="107.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1634 <line x1="112.234" y1="0.75" x2="112.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1635 <line x1="117.395" y1="7.75" x2="117.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1636 <line x1="122.557" y1="5.75" x2="122.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1637 <line x1="127.717" y1="11.75" x2="127.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1638 <line x1="132.879" y1="9.75" x2="132.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1639 <line x1="138.041" y1="9.75" x2="138.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1640 <line x1="142.17" y1="1.75" x2="142.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1641 <line x1="147.33" y1="12.75" x2="147.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1642 <line x1="151.75" y1="0.75" x2="151.75" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1643 <line x1="156.91" y1="7.75" x2="156.91" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1644 <line x1="162.072" y1="5.75" x2="162.072" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1645 <line x1="167.234" y1="11.75" x2="167.234" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1646 <line x1="172.395" y1="9.75" x2="172.395" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1647 <line x1="177.557" y1="9.75" x2="177.557" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1648 <line x1="181.686" y1="1.75" x2="181.686" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1649 <line x1="186.848" y1="12.75" x2="186.848" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1650 <line x1="192.008" y1="13.75" x2="192.008" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1651 <line x1="197.17" y1="10.75" x2="197.17" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1652 <line x1="202.33" y1="8.75" x2="202.33" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1653 <line x1="207.492" y1="0.75" x2="207.492" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1654 <line x1="212.652" y1="7.75" x2="212.652" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1655 <line x1="217.814" y1="5.75" x2="217.814" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1656 <line x1="222.977" y1="11.75" x2="222.977" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1657 <line x1="228.137" y1="9.75" x2="228.137" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1658 <line x1="233.299" y1="9.75" x2="233.299" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1659 <line x1="237.428" y1="1.75" x2="237.428" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1660 <line x1="242.588" y1="12.75" x2="242.588" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1661 <line x1="247.75" y1="13.75" x2="247.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1662 <line x1="252.91" y1="10.75" x2="252.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1663 <line x1="258.072" y1="8.75" x2="258.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1664 <line x1="263.234" y1="0.75" x2="263.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1665 <line x1="268.395" y1="7.75" x2="268.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1666 <line x1="273.557" y1="5.75" x2="273.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1667 <line x1="278.717" y1="11.75" x2="278.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1668 <line x1="283.879" y1="9.75" x2="283.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1669 <line x1="289.041" y1="9.75" x2="289.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1670 <line x1="293.17" y1="1.75" x2="293.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1671 <line x1="298.33" y1="12.75" x2="298.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1672 <line x1="302.75" y1="10.75" x2="302.75" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1673 <line x1="307.912" y1="8.75" x2="307.912" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1674 <line x1="313.072" y1="0.75" x2="313.072" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1675 <line x1="318.234" y1="7.75" x2="318.234" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1676 <line x1="323.395" y1="5.75" x2="323.395" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1677 <line x1="328.557" y1="11.75" x2="328.557" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1678 <line x1="333.719" y1="9.75" x2="333.719" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1679 <line x1="338.879" y1="9.75" x2="338.879" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1680 <line x1="343.008" y1="1.75" x2="343.008" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1681 <line x1="348.17" y1="12.75" x2="348.17" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1682 <line x1="353.33" y1="13.75" x2="353.33" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1683 <line x1="358.492" y1="10.75" x2="358.492" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1684 <line x1="363.652" y1="8.75" x2="363.652" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1685 <line x1="368.814" y1="0.75" x2="368.814" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1686 <line x1="373.977" y1="7.75" x2="373.977" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1687 <line x1="379.137" y1="5.75" x2="379.137" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1688 <line x1="384.299" y1="11.75" x2="384.299" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1689 <line x1="389.459" y1="9.75" x2="389.459" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1690 <line x1="394.621" y1="9.75" x2="394.621" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1691 <line x1="398.75" y1="1.75" x2="398.75" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1692 <line x1="403.912" y1="12.75" x2="403.912" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1693 <line x1="408.33" y1="10.75" x2="408.33" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1694 <line x1="413.492" y1="8.75" x2="413.492" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1695 <line x1="418.654" y1="0.75" x2="418.654" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1696 <line x1="423.814" y1="7.75" x2="423.814" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1697 <line x1="428.977" y1="5.75" x2="428.977" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1698 <line x1="434.137" y1="11.75" x2="434.137" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1699 <line x1="439.299" y1="9.75" x2="439.299" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1700 <line x1="444.461" y1="9.75" x2="444.461" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1701 <line x1="448.59" y1="1.75" x2="448.59" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1702 <line x1="453.75" y1="12.75" x2="453.75" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1703 <line x1="458.912" y1="13.75" x2="458.912" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1704 <line x1="464.072" y1="10.75" x2="464.072" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1705 <line x1="469.234" y1="8.75" x2="469.234" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1706 <line x1="474.395" y1="0.75" x2="474.395" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1707 <line x1="479.557" y1="7.75" x2="479.557" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1708 <line x1="484.719" y1="5.75" x2="484.719" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1709 <line x1="489.879" y1="11.75" x2="489.879" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1710 <line x1="495.041" y1="9.75" x2="495.041" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1711 <line x1="500.201" y1="9.75" x2="500.201" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1712 <line x1="504.33" y1="1.75" x2="504.33" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1713 <line x1="509.492" y1="12.75" x2="509.492" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1714 <line x1="513.912" y1="10.75" x2="513.912" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1715 <line x1="519.072" y1="8.75" x2="519.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1716 <line x1="524.234" y1="0.75" x2="524.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1717 <line x1="529.395" y1="7.75" x2="529.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1718 <line x1="534.557" y1="5.75" x2="534.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1719 <line x1="539.719" y1="11.75" x2="539.719" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1720 <line x1="544.879" y1="9.75" x2="544.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1721 <line x1="550.041" y1="9.75" x2="550.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1722 <line x1="554.17" y1="1.75" x2="554.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1723 <line x1="559.332" y1="12.75" x2="559.332" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1724 <line x1="564.492" y1="13.75" x2="564.492" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1725 <line x1="569.654" y1="10.75" x2="569.654" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1726 <line x1="574.814" y1="8.75" x2="574.814" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1727 <line x1="579.977" y1="0.75" x2="579.977" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1728 <line x1="585.137" y1="7.75" x2="585.137" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1729 <line x1="590.299" y1="5.75" x2="590.299" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1730 </g>
1731 <defs>
1732 <clipPath id="clip0_2625_8152">
1733 <rect width="590" height="30" fill="white"/>
1734 </clipPath>
1735 </defs>
1736 </svg>
1737 <svg class="audio-sondwave-mobile" width="100%" height="100%" viewBox="0 0 102 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1738 <g clip-path="url(#clip0_2625_8922)">
1739 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1740 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1741 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1742 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1743 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1744 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1745 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1746 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1747 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1748 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1749 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1750 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1751 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1752 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1753 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1754 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1755 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1756 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1757 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1758 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1759 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/>
1760 </g>
1761 <defs>
1762 <clipPath id="clip0_2625_8922">
1763 <rect width="102" height="30" fill="white"/>
1764 </clipPath>
1765 </defs>
1766 </svg>
1767 </div>
1768 <div class="audio-time paragraph-micro-bold"> </div>
1769 <div class="audio-button-mute">
1770 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
1771 <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"/>
1772 </svg>
1773 </div>
1774 </div>
1775 </div>
1776
1777 <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??>
1778 <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams />
1779 </#if>
1780 <style>
1781
1782 .ptb-news__read-news .news-content p {
1783 margin-bottom: var(--space-md, 24px);
1784 }
1785
1786 .ptb-news__read-news .news-content strong {
1787 font-weight: var(--font-weight-bold);
1788 }
1789
1790 .ptb-news__read-news .news-content em {
1791 font-style: var(--font-style-italic);
1792 }
1793
1794 .ptb-news__read-news .news-content a:not(.stories-container *) {
1795 font-family: var(--font-family-base);
1796 font-style: var(--font-style-normal, normal);
1797 font-weight: var(--font-weight-bold, 700);
1798 font-size: var(--font-size-xs, 18px);
1799 line-height: var(--line-height-xl, 160%);
1800
1801 color: #008542;
1802 }
1803
1804 body.high-contrast-active .ptb-news__read-news .news-content a {
1805 color: #E4F7E8;
1806 }
1807
1808 .ptb-news__read-news .news-content ul {
1809 padding-left: 27px;
1810 margin-top: -16px;
1811 }
1812
1813 .ptb-news__read-news .news-content ul li::marker {
1814 content: "■" !important;
1815 color: var(--color-secondary-medium) !important;
1816 font-size: var(--size-xxs);
1817 }
1818
1819 .ptb-news__read-news .news-content ul li {
1820 color: var(--color-text-primary-default);
1821 padding: 8px 0;
1822
1823 /*paragraph-sm-regular*/
1824 font-size: var(--font-size-xxs);
1825 line-height: var(--line-height-xl);
1826 font-weight: var(--font-weight-regular);
1827 font-style: var(--font-style-normal);
1828 text-decoration: var(--text-decoration-none);
1829
1830 margin-left: calc(-1* var(--space-sm));
1831 padding-left: var(--space-sm);
1832 }
1833
1834 .ptb-news__read-news .news-content ul li * {
1835 color: var(--color-text-primary-default);
1836 padding: 8px 0;
1837
1838 /*paragraph-sm-regular*/
1839 font-size: var(--font-size-xxs);
1840 line-height: var(--line-height-xl);
1841 font-weight: var(--font-weight-regular);
1842 font-style: var(--font-style-normal);
1843 text-decoration: var(--text-decoration-none);
1844 }
1845
1846 @media screen and (min-width: 1024px) {
1847 .ptb-news__read-news .news-content > * {
1848 grid-column-start: 3;
1849 grid-column-end: 11;
1850 }
1851
1852 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
1853 .ptb-news__read-news .news-content > *:has(img) {
1854 grid-column-start: 2;
1855 grid-column-end: 12;
1856 }
1857 }
1858
1859 </#if>
1860 }
1861
1862 .ptb-news__read-news .news-content figure {
1863 margin-bottom: var(--space-sm, 16px);
1864 }
1865
1866 .ptb-news__read-news .news-content figure figcaption {
1867 display: flex;
1868 justify-content: space-between;
1869 align-items: flex-start;
1870 align-self: stretch;
1871 margin-top: var(--space-xxs, 8px);
1872 text-align: justify;
1873 }
1874
1875 .ptb-news__read-news .news-content figure figcaption,
1876 .ptb-news__read-news .news-content figure figcaption * {
1877 color: var(--color-neutral-700, #525252);
1878 font-family: var(--font-family-base);
1879 font-size: var(--font-size-xxxs, 14px);
1880 font-style: var(--font-style-italic, italic);
1881 font-weight: var(--font-weight-regular, 400);
1882 line-height: var(--line-height-xl, 160%);
1883 }
1884
1885 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption,
1886 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption * {
1887 color: var(--text-secondary-default, #F8F8F8);
1888 }
1889
1890 .ptb-news__read-news .news-content figure figcaption br {
1891 display: none;
1892 }
1893
1894 .ptb-news__read-news .news-content .embed-responsive {
1895 width: 100% !important;
1896 border-radius: var(--border-radius-md, 16px);
1897 margin-bottom: var(--space-md, 16px);
1898 aspect-ratio: 16/9;
1899 }
1900
1901 .ptb-news__read-news .news-content img {
1902 width: 100%;
1903 height: auto;
1904 object-fit: cover;
1905 border-radius: var(--border-radius-md, 16px);
1906 }
1907
1908 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Artigo" >
1909 .ptb-news__read-news .news-content img {
1910 aspect-ratio: 16/9;
1911 }
1912 </#if>
1913
1914 .ptb-news__read-news .news-content .paragraph_separator {
1915 display: flex;
1916 width: 100%;
1917 height: fit-content;
1918 justify-content: center;
1919 gap: 6px;
1920 }
1921
1922 .ptb-news__read-news .news-content .paragraph_separator .dot {
1923 height: var(--size-micro, 4px);
1924 width: var(--size-micro, 4px);
1925 background-color: #959595;
1926 border-radius: 100%;
1927 display: inline-block;
1928 }
1929
1930 .ptb-news__read-news .news-content *:not(.stories-container *) {
1931 font-family: var(--font-family-base);
1932 font-style: var(--font-style-normal, normal);
1933 font-weight: var(--font-weight-regular, 400);
1934 font-size: var(--font-size-xs, 18px);
1935 line-height: var(--line-height-xl, 160%);
1936 color: var(--color-neutral-800, #373737);
1937 }
1938
1939 body.high-contrast-active .ptb-news__read-news .news-content * {
1940 color: var(--text-primary-default, var(--color-neutral-100));
1941 }
1942
1943 .ptb-news__read-news .news-content h1,
1944 .ptb-news__read-news .news-content h1 *,
1945 .ptb-news__read-news .news-content h2,
1946 .ptb-news__read-news .news-content h2 *,
1947 .ptb-news__read-news .news-content h3,
1948 .ptb-news__read-news .news-content h3 *,
1949 .ptb-news__read-news .news-content h4,
1950 .ptb-news__read-news .news-content h4 *,
1951 .ptb-news__read-news .news-content h5,
1952 .ptb-news__read-news .news-content h5 *,
1953 .ptb-news__read-news .news-content h6,
1954 .ptb-news__read-news .news-content h6 * {
1955 color: var(--color-neutral-800, #373737) !important;
1956 }
1957
1958 body.high-contrast-active .ptb-news__read-news .news-content h1,
1959 body.high-contrast-active .ptb-news__read-news .news-content h1 *,
1960 body.high-contrast-active .ptb-news__read-news .news-content h2,
1961 body.high-contrast-active .ptb-news__read-news .news-content h2 *,
1962 body.high-contrast-active .ptb-news__read-news .news-content h3,
1963 body.high-contrast-active .ptb-news__read-news .news-content h3 *,
1964 body.high-contrast-active .ptb-news__read-news .news-content h4,
1965 body.high-contrast-active .ptb-news__read-news .news-content h4 *,
1966 body.high-contrast-active .ptb-news__read-news .news-content h5,
1967 body.high-contrast-active .ptb-news__read-news .news-content h5 *,
1968 body.high-contrast-active .ptb-news__read-news .news-content h6,
1969 body.high-contrast-active .ptb-news__read-news .news-content h6 * {
1970 color: var(--text-primary-default, var(--color-neutral-100)) !important;
1971 }
1972
1973 .ptb-news__read-news .news-content h1:last-child,
1974 .ptb-news__read-news .news-content h2:last-child,
1975 .ptb-news__read-news .news-content h3:last-child,
1976 .ptb-news__read-news .news-content h4:last-child,
1977 .ptb-news__read-news .news-content h5:last-child,
1978 .ptb-news__read-news .news-content h5:last-child,
1979 .ptb-news__read-news .news-content h6:last-child,
1980 .ptb-news__read-news .news-content p:last-child {
1981 padding-bottom: 0 !important;
1982 }
1983
1984 .ptb-news__read-news .news-content h1,
1985 .ptb-news__read-news .news-content h1 * {
1986 font-size: var(--font-size-xxl) !important;
1987 line-height: var(--line-height-sm) !important;
1988 font-weight: var(--font-weight-bold) !important;
1989 font-style: var(--font-style-normal) !important;
1990 text-decoration: var(--text-decoration-none) !important;
1991 }
1992
1993 .ptb-news__read-news .news-content h2,
1994 .ptb-news__read-news .news-content h2 * {
1995
1996 font-size: var(--font-size-xl) !important;
1997 line-height: var(--line-height-sm) !important;
1998 font-weight: var(--font-weight-bold) !important;
1999 font-style: var(--font-style-normal) !important;
2000 text-decoration: var(--text-decoration-none) !important;
2001
2002 }
2003
2004 .ptb-news__read-news .news-content h2 {
2005 margin-top: 48px !important;
2006 margin-bottom: var(--space-xl, 40px) !important;
2007
2008 }
2009
2010 .ptb-news__read-news .news-content h3,
2011 .ptb-news__read-news .news-content h3 * {
2012 font-size: var(--font-size-lg) !important;
2013 line-height: var(--line-height-sm) !important;
2014 font-weight: var(--font-weight-bold) !important;
2015 font-style: var(--font-style-normal) !important;
2016 text-decoration: var(--text-decoration-none) !important;
2017 }
2018
2019 .ptb-news__read-news .news-content h3 {
2020 margin-bottom: var(--space-sm, 16px) !important;
2021 margin-top: 48px !important;
2022 }
2023
2024 .ptb-news__read-news .news-content h4,
2025 .ptb-news__read-news .news-content h4 * {
2026 font-size: var(--font-size-md) !important;
2027 line-height: var(--line-height-md) !important;
2028 font-weight: var(--font-weight-bold) !important;
2029 font-style: var(--font-style-normal) !important;
2030 text-decoration: var(--text-decoration-none) !important;
2031 }
2032
2033 .ptb-news__read-news .news-content h4 {
2034 margin-top: 48px !important;
2035 margin-bottom: var(--space-sm, 16px) !important;
2036 }
2037
2038 .ptb-news__read-news .news-content h5,
2039 .ptb-news__read-news .news-content h5 * {
2040 font-size: var(--font-size-sm) !important;
2041 line-height: var(--line-height-md) !important;
2042 font-weight: var(--font-weight-bold) !important;
2043 font-style: var(--font-style-normal) !important;
2044 text-decoration: var(--text-decoration-none) !important;
2045 }
2046
2047 .ptb-news__read-news .news-content h5 {
2048 margin-top: 48px !important;
2049 margin-bottom: var(--space-sm, 16px) !important;
2050 }
2051
2052 .ptb-news__read-news .news-content table {
2053 border-collapse: collapse;
2054 border: none;
2055 width: 100% !important;
2056 margin: var(--space-md, 24px) 0;
2057 }
2058
2059 .ptb-news__read-news .news-content table * {
2060 font-size: var(--font-size-xxs, 16px);
2061 font-style: var(--font-style-normal, normal);
2062 font-weight: var(--font-weight-regular, 400);
2063 line-height: var(--line-height-xl, 160%);
2064 color: var(--color-neutral-800, #373737);
2065 border: 0;
2066 }
2067
2068 body.high-contrast-active .ptb-news__read-news .news-content table * {
2069 color: var(--text-primary-default, var(--color-neutral-100));
2070 }
2071
2072 .ptb-news__read-news .news-content table tbody > :first-child,
2073 .ptb-news__read-news .news-content table tbody > :first-child * {
2074 font-weight: var(--font-weight-bold, 700);
2075 flex: 1 0 0;
2076 background: var(--background-Surface-level-02, #F8F8F8);
2077 }
2078
2079 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child,
2080 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * {
2081 background: #373737;
2082 }
2083
2084 .ptb-news__read-news .news-content table tbody {
2085 display: flex;
2086 flex-direction: column;
2087 }
2088
2089 .ptb-news__read-news .news-content table tbody * {
2090 display: flex;
2091 height: 100%;
2092 align-items: center;
2093 flex: 1 0 0;
2094 }
2095
2096 .ptb-news__read-news .news-content table tbody tr * {
2097 padding: 23px var(--space-lg, 32px);
2098 }
2099
2100
2101 .ptb-news__read-news .news-content table tbody tr {
2102 border-radius: var(--border-radius-md);
2103 border: var(--border-width-hairline, 1px) solid #EEEEEE;
2104 }
2105
2106 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr {
2107 border: var(--border-width-hairline, 1px) solid #525252;
2108 }
2109
2110 .ptb-news__read-news .news-content table tbody tr:not(:last-child) {
2111 border-bottom-left-radius: 0;
2112 border-bottom-right-radius: 0;
2113 }
2114
2115 .ptb-news__read-news .news-content table tbody tr:not(:first-child) {
2116 border-top-left-radius: 0;
2117 border-top-right-radius: 0;
2118 border-top: none;
2119 }
2120
2121 .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2122 border-right: var(--border-width-hairline, 1px) solid #EEEEEE;
2123 }
2124
2125 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2126 border-right: var(--border-width-hairline, 1px) solid #525252;
2127 }
2128
2129 .ptb-news__read-news .news-content table tbody tr:first-child td {
2130 border-top: var(--border-width-hairline, 1px) solid #EEEEEE;
2131 border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE;
2132 }
2133
2134 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td {
2135 border-top: var(--border-width-hairline, 1px) solid #525252;
2136 border-bottom: var(--border-width-hairline, 1px) solid #525252;
2137 }
2138
2139 .ptb-news__read-news .news-content table tbody tr td:first-child {
2140 padding-left: 0;
2141 }
2142
2143 .ptb-news__read-news .news-content table tbody tr td:last-child{
2144 padding-right: 0;
2145 }
2146
2147 .ptb-news__read-news .news-content audio {
2148 display: none;
2149 }
2150
2151 .ptb-news__read-news .news-content .audio-template {
2152 display: flex;
2153 padding: var(--space-sm, 16px);
2154 align-items: center;
2155 gap: var(--space-md, 24px);
2156 align-self: stretch;
2157 border-radius: var(--border-radius-lg, 16px);
2158 border: var(--border-width-hairline, 1px) solid var(--border-color-mid);
2159 background: var(--background-card-default, #FFF);
2160 max-height: var(--size-giant, 72px);
2161 margin: 48px 0;
2162 }
2163
2164 body.high-contrast-active .ptb-news__read-news .news-content .audio-template {
2165 background: var(--background-card-default, #010101);
2166 border: var(--border-width-hairline, 1px) solid #525252;
2167 }
2168
2169 .ptb-news__read-news .news-content .audio-template .audio-button-play {
2170 display: flex;
2171 width: var(--size-xl, 40px);
2172 height: var(--size-xl, 40px);
2173 justify-content: center;
2174 align-items: center;
2175 flex-grow: 0;
2176 flex-shrink: 0;
2177 cursor: pointer;
2178 }
2179
2180 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon,
2181 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon {
2182 fill: #FFFFFF;
2183 }
2184
2185 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path,
2186 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path {
2187 fill: #010101;
2188 }
2189
2190 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon {
2191 display: block;
2192 }
2193
2194 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon {
2195 display: none;
2196 }
2197
2198 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon {
2199 display: none;
2200 }
2201
2202 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon {
2203 display: block;
2204 }
2205
2206 .ptb-news__read-news .news-content .audio-template .audio-sondwave {
2207 display: flex;
2208 flex-direction: column;
2209 align-items: flex-start;
2210 gap: var(--space-xxs, 8px);
2211 flex: 1 0 0;
2212 height: 100%;
2213 flex-grow: 1;
2214 flex-shrink: 1;
2215 }
2216
2217 .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2218 stroke: #008542;
2219 }
2220
2221 .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2222 stroke: #90EE90;
2223 }
2224
2225 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2226 stroke: #E4F7E8;
2227 }
2228
2229 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2230 stroke: #666666;
2231 }
2232
2233 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2234 display: none;
2235 }
2236
2237 .ptb-news__read-news .news-content .audio-template .audio-time {
2238 display: flex;
2239 flex-direction: column;
2240 align-items: flex-start;
2241 gap: var(--space-xxs, 8px);
2242 flex: 1 0 0;
2243 color: var(--text-primary-accent, #008542);
2244 text-align: center;
2245 font-family: var(--font-family-base);
2246 line-height: 124% !important;
2247 flex-grow: 0;
2248 flex-shrink: 0;
2249 }
2250
2251 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {
2252 color: var(--text-primary-accent, #E4F7E8);
2253 }
2254
2255 .ptb-news__read-news .news-content .audio-template .audio-button-mute {
2256 width: var(--size-lg, 32px);
2257 height: var(--size-lg, 32px);
2258 flex-grow: 0;
2259 flex-shrink: 0;
2260 cursor: pointer;
2261 }
2262
2263 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path {
2264 stroke: white;
2265 fill: none;
2266 }
2267
2268 .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute {
2269 opacity: 0.6;
2270 }
2271
2272
2273 @media screen and (max-width: 1023px) and (min-width: ${MAX_MOBILE_WIDTH}px) {
2274 .ptb-news__read-news .news-content > * {
2275 grid-column-start: 1;
2276 grid-column-end: 9;
2277 }
2278 }
2279
2280
2281 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
2282
2283 .ptb-news__read-news .news-content * {
2284 font-size: var(--font-size-xxs, 16px);
2285 }
2286
2287
2288 .ptb-news__read-news .news-content > * {
2289 grid-column-start: 1;
2290 grid-column-end: 5;
2291 }
2292
2293
2294 .ptb-news__read-news .news-content h1,
2295 .ptb-news__read-news .news-content h1 * {
2296 font-size: var(--font-size-xl) !important;
2297 line-height: var(--line-height-sm) !important;
2298 font-weight: var(--font-weight-bold) !important;
2299 font-style: var(--font-style-normal) !important;
2300 text-decoration: var(--text-decoration-none) !important;
2301
2302 }
2303
2304 .ptb-news__read-news .news-content h2,
2305 .ptb-news__read-news .news-content h2 * {
2306 font-size: var(--font-size-lg) !important;
2307 line-height: var(--line-height-sm) !important;
2308 font-weight: var(--font-weight-bold) !important;
2309 font-style: var(--font-style-normal) !important;
2310 text-decoration: var(--text-decoration-none) !important;
2311 }
2312
2313 .ptb-news__read-news .news-content h2 {
2314 margin-bottom: var(--space-md, 24px) !important;
2315 }
2316
2317 .ptb-news__read-news .news-content h3,
2318 .ptb-news__read-news .news-content h3 * {
2319 font-size: var(--font-size-md) !important;
2320 line-height: var(--line-height-sm) !important;
2321 font-weight: var(--font-weight-bold) !important;
2322 font-style: var(--font-style-normal) !important;
2323 text-decoration: var(--text-decoration-none) !important;
2324 }
2325
2326 .ptb-news__read-news .news-content h3 {
2327 margin-top: var(--space-xxs, 8px) !important;
2328 }
2329
2330 .ptb-news__read-news .news-content h4,
2331 .ptb-news__read-news .news-content h4 * {
2332 font-size: var(--font-size-sm) !important;
2333 line-height: var(--line-height-md) !important;
2334 font-weight: var(--font-weight-bold) !important;
2335 font-style: var(--font-style-normal) !important;
2336 text-decoration: var(--text-decoration-none) !important;
2337 }
2338
2339 .ptb-news__read-news .news-content h5,
2340 .ptb-news__read-news .news-content h5 * {
2341 font-size: var(--font-size-xs) !important;
2342 line-height: var(--line-height-md) !important;
2343 font-weight: var(--font-weight-bold) !important;
2344 font-style: var(--font-style-normal) !important;
2345 text-decoration: var(--text-decoration-none) !important;
2346 }
2347
2348 .ptb-news__read-news .news-content figure figcaption {
2349 flex-direction: column;
2350 gap: var(--space-xxs, 8px);
2351 }
2352
2353 .ptb-news__read-news .news-content figure figcaption,
2354 .ptb-news__read-news .news-content figure figcaption * {
2355 font-size: var(--font-size-micro, 12px);
2356 }
2357
2358 .ptb-news__read-news .news-content table {
2359 margin-top: var(--space-xxs, 8px);
2360 margin-bottom: var(--space-lg, 32px);
2361 }
2362
2363 .ptb-news__read-news .news-content table * {
2364 font-size: var(--font-size-micro, 12px);
2365 line-height: 19.2%;
2366 }
2367
2368 .ptb-news__read-news .news-content table tbody * {
2369 height: 43px;
2370 padding: var(--space-xs, 12px);
2371 }
2372
2373 .ptb-news__read-news .news-content .audio-template {
2374 margin-top: var(--space-xxs, 8px);
2375 margin-bottom: var(--space-lg, 32px);
2376 }
2377 }
2378
2379 @media screen and (max-width: 500px) {
2380 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop {
2381 display: none;
2382 }
2383
2384 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2385 display: block;
2386 }
2387 }
2388 </style>
2389
2390 <style>
2391.ws-carousel p {
2392 margin: var(--space-none, 0) !important;
2393}
2394
2395.ws-carousel {
2396 display: flex;
2397 flex-direction: column;
2398 gap: var(--space-lg, 32px);
2399 margin: var(--space-big, 72px) auto;
2400}
2401
2402.ws-carousel .ws-carousel-header {
2403 display: flex;
2404 justify-content: space-between;
2405}
2406
2407.ws-carousel .ws-carousel-header .h2,
2408.ws-carousel .ws-carousel-header h2 {
2409 color: var(--color-neutral-800, #373737) !important;
2410 font-family: var(--font-family-base), "Petrobras Sans" !important;
2411 line-height: 100% !important;
2412 margin: var(--space-none, 0) ! important;
2413}
2414
2415.ws-carousel .ws-carousel-header .nav-buttons {
2416 display: flex;
2417 justify-content: space-between;
2418 gap: var(--space-xxs, 8px);
2419}
2420
2421.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.left-arrow {
2422 transform: scaleX(-1);
2423}
2424
2425.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow {
2426 cursor: pointer;
2427}
2428
2429.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive {
2430 cursor: not-allowed;
2431}
2432
2433
2434.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow path {
2435 transition: stroke 0.3s ease;
2436}
2437
2438.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive path {
2439 stroke: #bababa;
2440}
2441
2442.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.active path {
2443 stroke: #008542;
2444}
2445
2446
2447.ws-carousel .ws-carousel-body {
2448 overflow-x: scroll;
2449 -ms-overflow-style: none;
2450 -scrollbar-width: none;
2451}
2452
2453.ws-carousel .ws-carousel-body::-webkit-scrollbar {
2454 display: none;
2455}
2456
2457.ws-carousel .ws-carousel-body .ws-container {
2458 display: flex;
2459 gap: var(--space-lg, 32px);
2460}
2461
2462.ws-carousel .ws-carousel-body .ws-container .ws-item {
2463 min-width: 300px;
2464 max-width: 300px;
2465 min-height: 400px;
2466 max-height: 400px;
2467 position: relative;
2468 overflow: hidden;
2469 border-radius: var(--border-radius-lg);
2470 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
2471}
2472
2473.ws-carousel .ws-carousel-body .ws-container .ws-item:hover {
2474 cursor: pointer;
2475}
2476
2477.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-image {
2478 position: absolute;
2479 top: 50%;
2480 left: 50%;
2481 transform: translate(-50%, -50%);
2482 height: 100%;
2483}
2484
2485.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-overlay {
2486 position: absolute;
2487 background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%);
2488 width: 100%;
2489 height: 100%;
2490}
2491
2492.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label {
2493 position: absolute;
2494 margin: var(--space-md, 24px) 0 0 var(--space-md, 24px);
2495 border-radius: var(--border-radius-pill, 100%);
2496 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);
2497 box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10);
2498 padding: var(--space-micro, 2px) var(--space-xs, 12px);
2499
2500 color: var(--Default-sup-green-water, #006B65);
2501 font-family: var(--font-family-base), "Petrobras Sans";
2502 font-size: var(--font-size-xxxs, 12px);
2503 font-style: normal;
2504 font-weight: var(--font-weight-regular, 400);
2505 line-height: var(--line-height-sm, 120%);
2506 color: #006B65;
2507}
2508
2509.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content {
2510 position: relative;
2511 z-index: 1;
2512 height: 100%;
2513
2514 display: flex;
2515 padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px);
2516 flex-direction: column;
2517 justify-content: flex-end;
2518 align-items: flex-start;
2519 gap: var(--space-md, 24px);
2520}
2521
2522.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content .h5 {
2523 overflow: hidden;
2524 color: #FFF !important;
2525 text-overflow: ellipsis;
2526 margin: 0 !important;
2527 font-family: var(--font-family-base), "Petrobras Sans" !important;
2528}
2529
2530@media (max-width: 768px) {
2531
2532 .ws-carousel .ws-carousel-header .nav-buttons {
2533 gap: var(--space-micro, 12px);
2534 }
2535
2536 .ws-carousel .ws-carousel-header .nav-buttons .nav-arrow {
2537 width: 44px;
2538 height: 44px;
2539 }
2540
2541 .ws-carousel .ws-carousel-header {
2542 flex-direction: column;
2543 align-items: flex-start;
2544 gap: var(--space-lg, 32px);
2545 }
2546
2547 .ws-carousel .ws-carousel-header .h2 {
2548 font-size: var(--font-size-lg, 24px) !important;
2549 }
2550
2551 .ws-carousel .ws-carousel-body .ws-container {
2552 gap: var(--space-lg, 32px);
2553 }
2554
2555 .ws-carousel .ws-carousel-body .ws-container .ws-item {
2556 min-width: 225px;
2557 max-width: 225px;
2558 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;
2559 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
2560 }
2561}
2562 </style>
2563
2564<#-- Exibição de um único story com naveação direto no conteúdo -->
2565<style>
2566 .stories-container * {
2567 margin: 0;
2568 padding: 0;
2569 box-sizing: border-box;
2570 }
2571
2572 .stories-container {
2573 position: relative;
2574 /*
2575 Largura das duas setas com position absolute: 64px
2576 Largura das somas margens das setas: 48px
2577
2578 */
2579 width: calc(100vw - 64px - 48px);
2580 max-width: 400px;
2581 height: auto;
2582 aspect-ratio: 59/105;
2583 border-radius: 8px;
2584 }
2585
2586 .header-container {
2587 position: absolute;
2588 top: 0;
2589 left: 0;
2590 right: 0;
2591 z-index: 3;
2592 padding: 16px 16px 0 16px;
2593 display: flex;
2594 flex-direction: column;
2595 gap: 24px;
2596 }
2597
2598 .story-header {
2599 display: flex;
2600 flex-direction: column;
2601 gap: 8px;
2602 }
2603
2604 .progress-bars {
2605 display: flex;
2606 gap: 5px;
2607 width: 100%;
2608 }
2609
2610 .progress-bar {
2611 height: 3px;
2612 background-color: rgba(255, 255, 255, 0.3);
2613 flex-grow: 1;
2614 border-radius: 3px;
2615 overflow: hidden;
2616 }
2617
2618 .story-progress {
2619 height: 100%;
2620 background-color: white;
2621 width: 0%;
2622 transition: width 0.2s linear;
2623 }
2624
2625 .story-progress.completed {
2626 width: 100% !important;
2627 }
2628
2629 .story-progress.active {
2630 animation: progress 8s linear forwards;
2631 }
2632
2633 @keyframes progress {
2634 from {
2635 width: 0%;
2636 }
2637
2638 to {
2639 width: 100%;
2640 }
2641 }
2642
2643 .story-slide {
2644 position: absolute;
2645 width: 100%;
2646 height: 100%;
2647 display: none;
2648 flex-direction: column;
2649 justify-content: center;
2650 align-items: center;
2651 color: white;
2652 overflow: hidden;
2653 border-radius: 8px;
2654 }
2655
2656 .story-slide::before {
2657 position: absolute;
2658 z-index: 2;
2659 content: '';
2660 width: 100%;
2661 height: 100%;
2662 background: linear-gradient(180deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 100%);
2663 }
2664
2665 .story-slide.active {
2666 display: flex;
2667 }
2668
2669 .story-image {
2670 width: 100%;
2671 height: 100% !important;
2672 object-fit: cover;
2673 position: absolute;
2674 top: 0;
2675 left: 0;
2676 z-index: 1;
2677 aspect-ratio: auto !important;
2678 }
2679
2680 .story-content {
2681 position: relative;
2682 z-index: 2;
2683 color: white;
2684 width: 100%;
2685 display: flex;
2686 flex-direction: column;
2687 justify-content: flex-end;
2688 height: 100%;
2689 padding: 16px 24px 64px 24px;
2690 }
2691
2692 .story-content .content-wrapper {
2693 display: flex;
2694 flex-direction: column;
2695 align-items: flex-start;
2696 gap: 24px;
2697 align-self: stretch;
2698 padding: 0 16px;
2699 }
2700
2701 .story-content .content-wrapper.no-padding {
2702 padding: 0;
2703 }
2704
2705 .story-title {
2706 display: flex;
2707 padding: 8px;
2708 flex-direction: column;
2709 align-items: flex-start;
2710 align-self: stretch;
2711 backdrop-filter: blur(3px);
2712 }
2713
2714 .story-title.button {
2715 display: none;
2716 }
2717
2718 .story-title.dark-theme,
2719 .story-description.dark-theme {
2720 background: rgba(13, 19, 16, 0.80);
2721 color: #FFF;
2722 }
2723
2724 .story-description.dark-theme p {
2725 color: #FFF !important;
2726 }
2727
2728 .story-title.light-theme,
2729 .story-description.light-theme {
2730 background: rgba(255, 255, 255, 0.90);
2731 color: #373737;
2732 }
2733
2734 .story-title.green-theme,
2735 .story-description.green-theme {
2736 background: rgba(0, 133, 66, 0.80);
2737 color: #FFF;
2738 }
2739
2740 .story-title .title-text {
2741 align-self: stretch;
2742 font-size: 24px;
2743 font-style: normal;
2744 font-weight: 700;
2745 line-height: 100%;
2746 }
2747
2748 .story-title .mischievous {
2749 color: #FDC82F;
2750 font-size: 24px;
2751 font-style: normal;
2752 font-weight: 700;
2753 line-height: 100%;
2754 width: 24px;
2755 }
2756
2757 .description-and-link {
2758 width: 100%;
2759 display: flex;
2760 flex-direction: column;
2761 gap: 8px;
2762 }
2763
2764 .story-description {
2765 padding: 8px;
2766 width: 100%;
2767 }
2768
2769 .story-description p {
2770 font-size: 16px;
2771 font-weight: 400;
2772 line-height: 120%;
2773 margin-bottom: 0;
2774 }
2775
2776 .story-description.button {
2777 padding: 0;
2778 display: flex;
2779 justify-content: center;
2780 }
2781
2782 .story-description.button p a {
2783 text-decoration: underline;
2784 font-weight: bold;
2785 }
2786
2787 .story-description.button p a {
2788 background: #FFF;
2789 width: fit-content;
2790 height: 48px;
2791 display: flex;
2792 justify-content: center;
2793 align-items: center;
2794 gap: 16px;
2795 text-decoration: none;
2796 color: #008542;
2797 border-radius: 100px;
2798 padding: 0 24px;
2799 box-shadow: 0px 4px 16px 0px #00000029;
2800 font-family: 'Petrobras Sans';
2801 font-weight: 700;
2802 font-size: 16px;
2803 line-height: 144%;
2804 letter-spacing: 0%;
2805 }
2806
2807 .story-description.button p a::after {
2808 content: '';
2809 display: inline-block;
2810 flex-shrink: 0;
2811 width: 20px;
2812 height: 20px;
2813 vertical-align: middle;
2814 background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjQ2OTUgMTIuMzU5MkMxMC4zMDk4IDEyLjUxODkgMTAuMzA5OCAxMi43Nzc5IDEwLjQ2OTUgMTIuOTM3N0MxMC42MjkzIDEzLjA5NzUgMTAuODg4MyAxMy4wOTc1IDExLjA0ODEgMTIuOTM3N0wxMC40Njk1IDEyLjM1OTJaTTEzLjQwNzIgMTBMMTMuNjk2NSAxMC4yODkzQzEzLjg1NjMgMTAuMTI5NSAxMy44NTYzIDkuODcwNDkgMTMuNjk2NSA5LjcxMDczTDEzLjQwNzIgMTBaTTExLjA0ODEgNy4wNjIyOUMxMC44ODgzIDYuOTAyNTMgMTAuNjI5MyA2LjkwMjUzIDEwLjQ2OTUgNy4wNjIyOUMxMC4zMDk4IDcuMjIyMDUgMTAuMzA5OCA3LjQ4MTA3IDEwLjQ2OTUgNy42NDA4M0wxMS4wNDgxIDcuMDYyMjlaTTcuMTU3MjMgOS41OTA5MUM2LjkzMTI5IDkuNTkwOTEgNi43NDgxNCA5Ljc3NDA3IDYuNzQ4MTQgMTBDNi43NDgxNCAxMC4yMjU5IDYuOTMxMjkgMTAuNDA5MSA3LjE1NzIzIDEwLjQwOTFWOS41OTA5MVpNMTcuMzczMSAxMEMxNy4zNzMxIDEzLjkxNjIgMTQuMTk4NCAxNy4wOTA5IDEwLjI4MjIgMTcuMDkwOVYxNy45MDkxQzE0LjY1MDMgMTcuOTA5MSAxOC4xOTEzIDE0LjM2ODEgMTguMTkxMyAxMEgxNy4zNzMxWk0xMC4yODIyIDE3LjA5MDlDNi4zNjYwMyAxNy4wOTA5IDMuMTkxMzIgMTMuOTE2MiAzLjE5MTMyIDEwSDIuMzczMTRDMi4zNzMxNCAxNC4zNjgxIDUuOTE0MTYgMTcuOTA5MSAxMC4yODIyIDE3LjkwOTFWMTcuMDkwOVpNMy4xOTEzMiAxMEMzLjE5MTMyIDYuMDgzOCA2LjM2NjAzIDIuOTA5MDkgMTAuMjgyMiAyLjkwOTA5VjIuMDkwOTFDNS45MTQxNiAyLjA5MDkxIDIuMzczMTQgNS42MzE5MyAyLjM3MzE0IDEwSDMuMTkxMzJaTTEwLjI4MjIgMi45MDkwOUMxNC4xOTg0IDIuOTA5MDkgMTcuMzczMSA2LjA4MzggMTcuMzczMSAxMEgxOC4xOTEzQzE4LjE5MTMgNS42MzE5MyAxNC42NTAzIDIuMDkwOTEgMTAuMjgyMiAyLjA5MDkxVjIuOTA5MDlaTTExLjA0ODEgMTIuOTM3N0wxMy42OTY1IDEwLjI4OTNMMTMuMTE4IDkuNzEwNzNMMTAuNDY5NSAxMi4zNTkyTDExLjA0ODEgMTIuOTM3N1pNMTMuNjk2NSA5LjcxMDczTDExLjA0ODEgNy4wNjIyOUwxMC40Njk1IDcuNjQwODNMMTMuMTE4IDEwLjI4OTNMMTMuNjk2NSA5LjcxMDczWk03LjE1NzIzIDEwLjQwOTFIMTMuNDA3MlY5LjU5MDkxSDcuMTU3MjNWMTAuNDA5MVoiIGZpbGw9IiMwMDg1NDIiLz4KPC9zdmc+Cg==");
2815 background-size: contain;
2816 background-repeat: no-repeat;
2817 background-position: center;
2818 }
2819
2820 .story-description a {
2821 position: relative;
2822 z-index: 3;
2823 color: #FFF;
2824 text-decoration: underline;
2825 }
2826
2827 .nav-area-container {
2828 position: absolute;
2829 top: 0;
2830 left: 0;
2831 right: 0;
2832 bottom: 0;
2833 display: flex;
2834 justify-content: space-between;
2835 align-items: center;
2836 z-index: 1;
2837 /* pointer-events: none; */
2838 }
2839
2840 .nav-area {
2841 height: 100%;
2842 width: 50%;
2843 display: flex;
2844 align-items: center;
2845 }
2846
2847 .nav-area .arrow,
2848 .nav-area .restart-icon {
2849 position: absolute;
2850 }
2851
2852 .nav-area .arrow:hover,
2853 .nav-area.next .restart-icon {
2854 cursor: pointer;
2855 }
2856
2857 .nav-area.prev .arrow {
2858 left: calc(-32px - 24px);
2859 }
2860
2861 .nav-area.next .arrow,
2862 .nav-area.next .restart-icon {
2863 right: calc(-32px - 24px);
2864 }
2865
2866 .nav-area .arrow.disabled {
2867 opacity: 0.4;
2868 }
2869
2870 .nav-area .arrow.disabled:hover {
2871 cursor: not-allowed;
2872 }
2873
2874 .nav-area .hidden {
2875 display: none;
2876 }
2877
2878 .action-buttons {
2879 display: flex;
2880 gap: 24px;
2881 justify-content: flex-end;
2882 }
2883
2884 .action-btn {
2885 background: transparent;
2886 border-radius: 50%;
2887 border: none;
2888 display: flex;
2889 align-items: center;
2890 justify-content: center;
2891 cursor: pointer;
2892 font-size: 14px;
2893 }
2894
2895 .action-btn.pause::before {
2896 content: '';
2897 display: inline-block;
2898 width: 15px;
2899 height: 18px;
2900 vertical-align: middle;
2901 background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxNiAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMjY4NTU1IDE4LjI3NzNINS4zNTE0N1YwLjI3NzM0NEgwLjI2ODU1NVYxOC4yNzczWk0xMC40MzQ0IDAuMjc3MzQ0VjE4LjI3NzNIMTUuNTE3M1YwLjI3NzM0NEgxMC40MzQ0WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==");
2902 background-size: contain;
2903 background-repeat: no-repeat;
2904 background-position: center;
2905 }
2906
2907 .action-btn.play::before {
2908 content: '';
2909 display: inline-block;
2910 width: 18px;
2911 height: 18px;
2912 vertical-align: middle;
2913 background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyMiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjUxMjUgMTIuMTQ5OUwyLjUyNSAxLjE0OTg4QzIuMzczNTggMS4wNTY0NyAyLjE5OTk4IDEuMDA1MTYgMi4wMjIxMSAxLjAwMTIyQzEuODQ0MjQgMC45OTcyODcgMS42Njg1NCAxLjA0MDg4IDEuNTEzMTQgMS4xMjc1QzEuMzU3NzQgMS4yMTQxMSAxLjIyODI2IDEuMzQwNjIgMS4xMzgwNSAxLjQ5Mzk3QzEuMDQ3ODUgMS42NDczMiAxLjAwMDIgMS44MjE5NiAxIDEuOTk5ODhWMjMuOTk5OUMxLjAwMDIgMjQuMTc3OCAxLjA0Nzg1IDI0LjM1MjQgMS4xMzgwNSAyNC41MDU4QzEuMjI4MjYgMjQuNjU5MSAxLjM1Nzc0IDI0Ljc4NTYgMS41MTMxNCAyNC44NzIzQzEuNjY4NTQgMjQuOTU4OSAxLjg0NDI0IDI1LjAwMjUgMi4wMjIxMSAyNC45OTg1QzIuMTk5OTggMjQuOTk0NiAyLjM3MzU4IDI0Ljk0MzMgMi41MjUgMjQuODQ5OUwyMC41MTI1IDEzLjg0OTlDMjAuNjYwMiAxMy43NjI1IDIwLjc4MjYgMTMuNjM4MiAyMC44Njc2IDEzLjQ4OTJDMjAuOTUyNiAxMy4zNDAxIDIwLjk5NzQgMTMuMTcxNSAyMC45OTc0IDEyLjk5OTlDMjAuOTk3NCAxMi44MjgzIDIwLjk1MjYgMTIuNjU5NiAyMC44Njc2IDEyLjUxMDZDMjAuNzgyNiAxMi4zNjE1IDIwLjY2MDIgMTIuMjM3MiAyMC41MTI1IDEyLjE0OTlWMTIuMTQ5OVoiIHN0cm9rZT0iI0ZGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==");
2914 background-size: contain;
2915 background-repeat: no-repeat;
2916 background-position: center;
2917 }
2918
2919 .action-btn.share::before {
2920 content: '';
2921 display: inline-block;
2922 width: 18px;
2923 height: 18px;
2924 vertical-align: middle;
2925 background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOSAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuOTA3MDMgMTAuNjYxMkwxNi43NzcgMS4wNjU3MkwxOC4xOTcgMi40NDc2Mkw4LjMzNzAzIDEyLjA1MjlMNi45MDcwMyAxMC42NjEyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNi43MzQxIDIuNDg4NzdMMTMuMTA3OCAxNS45NTU0QzEzLjA3NDYgMTYuMDc5MyAxMy4wMDM2IDE2LjE5MDQgMTIuOTA0MSAxNi4yNzQyQzEyLjgwNDYgMTYuMzU3OSAxMi42ODEzIDE2LjQxMDMgMTIuNTUwNiAxNi40MjQ0QzEyLjQxOTkgMTYuNDM4NiAxMi4yODc4IDE2LjQxMzggMTIuMTcxOSAxNi4zNTMzQzEyLjA1NjMgMTYuMjkzMSAxMS45NjIyIDE2LjIwMDIgMTEuOTAxOCAxNi4wODdMMTEuOTAxMiAxNi4wODU5TDguODMwNjkgMTAuMjQyMUwyLjc4MTI5IDcuMzAzNjZMMi43Nzg5MiA3LjMwMjUxQzIuNjYwNDcgNy4yNDUzNyAyLjU2Mjc0IDcuMTU0NDUgMi40OTg3NiA3LjA0MTg3QzIuNDM0NzkgNi45MjkyOCAyLjQwNzYxIDYuODAwMzkgMi40MjA4NSA2LjY3MjM4QzIuNDM0MDkgNi41NDQzOCAyLjQ4NzEyIDYuNDIzMzQgMi41NzI4OCA2LjMyNTQzQzIuNjU4NjMgNi4yMjc1MSAyLjc3MzAyIDYuMTU3MzcgMi45MDA3OSA2LjEyNDM2TDE2LjczNDEgMi40ODg3N1pNMTguOTYyMyAxLjUwODUyQzE5LjA3NzIgMS4xMTQ0MyAxOC45MTE2IDAuNzY0OTExIDE4LjcwNzUgMC41NjYzNjFDMTguNTAzNCAwLjM2NzczNyAxOC4yMzc0IDAuMjc3MzQ0IDE3Ljk4NyAwLjI3NzM0NEgxNy44NjFMMi40MTMyNyA0LjMzNzI0TDIuNDExMTEgNC4zMzc3OUMxLjkxMDcxIDQuNDY3NTMgMS40NjI3NSA0Ljc0MjQ3IDEuMTI2ODIgNS4xMjYwNUMwLjc5MDQxIDUuNTEwMTcgMC41ODIzNTMgNS45ODUgMC41MzA0MDUgNi40ODcxN0MwLjQ3ODQ1NiA2Ljk4OTM1IDAuNTg1MDg2IDcuNDk1MDEgMC44MzYwNzEgNy45MzY2OEMxLjA4NjggOC4zNzc5MiAxLjQ2OTY5IDguNzM0MzUgMS45MzM3NCA4Ljk1ODUzTDEuOTM1MTQgOC45NTkyTDcuNDIzMzcgMTEuNjI1MUwxMC4yMTEyIDE2LjkzMDhMMTAuMjEyOCAxNi45MzM5QzEwLjQ0OTUgMTcuMzgwMiAxMC44MTk3IDE3Ljc0NiAxMS4yNzQ2IDE3Ljk4MzJDMTEuNzI5NSAxOC4yMjAzIDEyLjI0NzYgMTguMzE3NiAxMi43NjA0IDE4LjI2MjJDMTMuMjczMyAxOC4yMDY3IDEzLjc1NjggMTguMDAxMSAxNC4xNDcxIDE3LjY3MjZDMTQuNTM3MyAxNy4zNDQxIDE0LjgxNTkgMTYuOTA4MiAxNC45NDYyIDE2LjQyMjRMMTguOTYyMyAxLjUwODUyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==");
2926 background-size: contain;
2927 background-repeat: no-repeat;
2928 background-position: center;
2929 }
2930
2931 @media (max-width: 768px) {
2932 .ws-carousel {
2933 margin: var(--space-lg, 32px) 0;
2934 }
2935
2936 .stories-container {
2937 /*
2938 Largura das duas setas com position absolute: 64px
2939 Largura das somas margens das setas mobile: 16px
2940 Soma das margens laterais: 48px
2941 */
2942 width: calc(100vw - 64px - 16px - 48px);
2943 }
2944
2945 .header-container {
2946 padding: 6px;
2947 }
2948
2949 .story-progress {
2950 height: 2px;
2951 }
2952
2953 .header-container,
2954 .action-buttons {
2955 gap: 12px;
2956 }
2957
2958 .action-btn.play::before,
2959 .action-btn.pause::before,
2960 .action-btn.share::before {
2961 width: 10px;
2962 height: 10px;
2963 }
2964
2965 .nav-area.prev .arrow {
2966 left: calc(-32px - 8px);
2967 }
2968
2969 .nav-area.next .arrow,
2970 .nav-area.next .restart-icon {
2971 right: calc(-32px - 8px);
2972 }
2973
2974 .story-content {
2975 padding: 16px 16px 32px 16px;
2976 }
2977
2978 .story-content .content-wrapper {
2979 padding: 0;
2980 }
2981
2982 .story-title .title-text {
2983 font-size: 16px;
2984 }
2985
2986 .story-description p,
2987 .story-description p a {
2988 font-size: 14px !important;
2989 }
2990 }
2991</style>
2992
2993<!-- Google tag (gtag.js) -->
2994<script async src="https://www.googletagmanager.com/gtag/js?id=G-9TG5WL85H3"></script>
2995<script>
2996 window.dataLayer = window.dataLayer || [];
2997 function gtag() { dataLayer.push(arguments); }
2998 gtag('js', new Date());
2999
3000 // Configuração do Google Analytics 4
3001 gtag('config', 'G-9TG5WL85H3');
3002</script>
3003
3004 <script>
3005/* CONSTANTS */
3006const PUBLISHER_LOGO_INDEX = 0;
3007const POSTER_PORTRAIT_INDEX = 1;
3008const PUBLISHER_INDEX = 2;
3009const COVER_INDEX = 3;
3010const STORIES_INDEX = 4;
3011
3012const COVER_HAS_COVER_INDEX = 0;
3013const COVER_TITLE_INDEX = 1;
3014const COVER_TEXT_INDEX = 2;
3015const COVER_IMAGE_INDEX = 3;
3016
3017const STORY_TITLE_INDEX = 0;
3018const STORY_TEXT_INDEX = 1;
3019const STORY_COLOR_THEME_INDEX = 2;
3020const STORY_IMAGE_INDEX = 3;
3021
3022const 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`;
3023
3024/* Função para criar formatar object*/
3025const createStoryObject = (objectContent) => {
3026 const hasCover = Boolean(
3027 objectContent.contentFields[COVER_INDEX].nestedContentFields[
3028 COVER_HAS_COVER_INDEX
3029 ].contentFieldValue.data
3030 );
3031 return {
3032 category: objectContent.taxonomyCategoryBriefs[0].taxonomyCategoryName,
3033 publisherLogoSrc:
3034 objectContent.contentFields[PUBLISHER_LOGO_INDEX].contentFieldValue.data,
3035 posterPortraitSrc:
3036 objectContent.contentFields[POSTER_PORTRAIT_INDEX].contentFieldValue.data,
3037 publisher:
3038 objectContent.contentFields[PUBLISHER_INDEX].contentFieldValue.data,
3039 friendlyUrlPath: objectContent.friendlyUrlPath,
3040 cover: {
3041 image: Boolean(
3042 objectContent.contentFields[COVER_INDEX].nestedContentFields[
3043 COVER_HAS_COVER_INDEX
3044 ].contentFieldValue.data
3045 ),
3046 title:
3047 objectContent.contentFields[COVER_INDEX].nestedContentFields[
3048 COVER_TITLE_INDEX
3049 ].contentFieldValue.data,
3050 description:
3051 objectContent.contentFields[COVER_INDEX].nestedContentFields[
3052 COVER_TEXT_INDEX
3053 ].contentFieldValue.data,
3054 imageUrl:
3055 objectContent.contentFields[COVER_INDEX].nestedContentFields[
3056 COVER_IMAGE_INDEX
3057 ].contentFieldValue.image?.contentUrl || null,
3058 imageAlt:
3059 objectContent.contentFields[COVER_INDEX].nestedContentFields[
3060 COVER_IMAGE_INDEX
3061 ].contentFieldValue.image?.description || null,
3062 },
3063 stories: objectContent.contentFields
3064 .slice(STORIES_INDEX)
3065 .map((contentField) => {
3066 return {
3067 title:
3068 contentField.nestedContentFields[STORY_TITLE_INDEX]
3069 ?.contentFieldValue?.data ?? null,
3070 description:
3071 contentField.nestedContentFields[STORY_TEXT_INDEX]?.contentFieldValue
3072 .data ?? null,
3073 colorTheme:
3074 contentField.nestedContentFields[STORY_COLOR_THEME_INDEX]
3075 ?.contentFieldValue?.value ?? null,
3076 imageUrl:
3077 contentField.nestedContentFields[STORY_IMAGE_INDEX]
3078 ?.contentFieldValue?.image?.contentUrl ?? null,
3079 imageAlt:
3080 contentField.nestedContentFields[STORY_IMAGE_INDEX]
3081 ?.contentFieldValue?.image?.description ?? null,
3082 };
3083 }),
3084 };
3085};
3086
3087/* Renderiza os cards */
3088const storyCardFrom = (storyData) => {
3089 const storyCard = document.createElement("div");
3090 storyCard.classList.add("ws-item");
3091
3092 let displayPageUrl;
3093 if (`${themeDisplay.getURLPortal()}`.includes('webserver')) {
3094 displayPageUrl = `${themeDisplay.getURLPortal()}/web/nossa-energia/w/` + storyData.friendlyUrlPath;
3095 } else {
3096 displayPageUrl = `${themeDisplay.getURLPortal()}/w/` + storyData.friendlyUrlPath;
3097 }
3098
3099 storyCard.addEventListener("click", (e) => {
3100 window.location.href = displayPageUrl;
3101 });
3102
3103 const image = document.createElement("img");
3104 image.classList.add("ws-image");
3105 image.src = storyData.cover.imageUrl
3106 ? storyData.cover.imageUrl
3107 : storyData.stories[0].imageUrl;
3108 image.alt = storyData.cover.imageAlt
3109 ? storyData.cover.imageAlt
3110 : storyData.stories[0].imageAlt;
3111
3112 storyCard.appendChild(image);
3113
3114 const overlay = document.createElement("div");
3115 overlay.classList.add("ws-overlay");
3116 storyCard.appendChild(overlay);
3117
3118 const label = document.createElement("span");
3119 label.classList.add("ws-label");
3120 label.dataset.category = storyData.category;
3121 label.classList.add((storyData.category || "Categoria").toLowerCase().replace(" ", '-'));
3122 label.textContent = storyData.category || "Categoria";
3123 storyCard.appendChild(label);
3124
3125 const content = document.createElement("div");
3126 content.classList.add("ws-content");
3127
3128 const title = document.createElement("h5");
3129 title.classList.add("h5")
3130 title.textContent = storyData.cover.title || "Título do Card";
3131 content.appendChild(title);
3132
3133 const details = document.createElement("div");
3134 details.classList.add("ws-details");
3135
3136 details.innerHTML = DETAILS_SVG || `<svg>...</svg>`;
3137 content.appendChild(details);
3138
3139 storyCard.appendChild(content);
3140
3141 return storyCard;
3142};
3143
3144/* Renderiza cores */
3145
3146const getCategoriesColorsStyles = async () => {
3147 //
3148 const urlToFetchToGetWebStoriesCategoriesColor = `/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/31841266/taxonomy-categories?fields=name%2CtaxonomyCategoryProperties`;
3149
3150 return fetch(urlToFetchToGetWebStoriesCategoriesColor, {
3151 method: "GET",
3152 headers: {
3153 accept: "application/json",
3154 "x-csrf-token": Liferay.authToken,
3155 },
3156 })
3157 .then((response) => {
3158 if (response.status === 200) {
3159 return response.json();
3160 } else {
3161 throw new Error("Erro interno. Por favor tente mais tarde.");
3162 }
3163 })
3164 .then((data) => {
3165 const styleTag = document.createElement('style');
3166 styleTag.id= 'webstories-carousel-labels';
3167
3168 let styleContent = ``;
3169
3170 data.items.forEach(item => {
3171 let textColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto")?.value;
3172 let textHighContrastColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto em Alto Contraste")?.value;
3173
3174 if (textColor != undefined) {
3175 styleContent = styleContent + `
3176 .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] {
3177 color: #` + textColor + `;
3178 }
3179 `
3180 }
3181
3182 if (textHighContrastColor != undefined) {
3183 styleContent = styleContent + `
3184 body.high-contrast .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] {
3185 color: #` + textHighContrastColor + `;
3186 }
3187 `
3188 }
3189 });
3190
3191 styleTag.textContent = styleContent;
3192
3193 document.head.appendChild(styleTag);
3194 });
3195};
3196
3197getCategoriesColorsStyles();
3198
3199/* Renderiza os itens */
3200const renderItems = (carouselId, webStoriesObjects) => {
3201 const carouselElement = document.querySelector(`#` + carouselId);
3202 const carouselContainer = carouselElement.querySelector(`.ws-container`);
3203 const carouselBody = carouselElement.querySelector(".ws-carousel-body");
3204 const navButtons = carouselElement.querySelector(".nav-buttons");
3205 const leftArrow = navButtons.querySelector(".left-arrow");
3206 const rightArrow = navButtons.querySelector(".right-arrow");
3207
3208 // Adiciona Cards
3209 webStoriesObjects.forEach((storyObject, index) => {
3210 const storyCard = storyCardFrom(storyObject);
3211 storyCard.dataset.index = index;
3212 carouselContainer.appendChild(storyCard);
3213 });
3214
3215 // Altera o Layout
3216 function updateLayout() {
3217 if (webStoriesObjects.length < 3) {
3218 if (window.matchMedia("(min-width: 769px)").matches) {
3219 carouselContainer.style.justifyContent = "center";
3220 navButtons.style.display = "none";
3221 } else {
3222 carouselContainer.style.justifyContent = "flex-start";
3223 navButtons.style.display = "flex";
3224 }
3225 } else {
3226 carouselContainer.style.justifyContent = "";
3227 carouselContainer.style.gap = window.matchMedia("(max-width: 768px)")
3228 .matches
3229 ? "32px"
3230 : "16px";
3231 navButtons.style.display = "";
3232 }
3233 }
3234 updateLayout();
3235 window.addEventListener("resize", updateLayout);
3236
3237 // Configura Scroll das setas
3238 leftArrow.addEventListener("click", () => {
3239 const items = carouselBody.querySelectorAll(".ws-item");
3240 const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16;
3241 const pageSize = items[0].offsetWidth + gap;
3242 const currentScroll = carouselBody.scrollLeft;
3243 const currentPageReal = carouselBody.scrollLeft / pageSize;
3244 const currentPage = parseInt(currentPageReal);
3245 const rest = currentPage - currentPageReal;
3246 const nextPage = rest !== 0 ? currentPage : currentPage - 1;
3247 carouselBody.scrollLeft = nextPage * pageSize;
3248 });
3249
3250 rightArrow.addEventListener("click", () => {
3251 const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16;
3252 const items = carouselBody.querySelectorAll(".ws-item");
3253 carouselBody.scrollLeft += items[0].offsetWidth + gap;
3254 });
3255
3256 const updateArrows = () => {
3257 const scrollLeft = carouselBody.scrollLeft;
3258 const maxScrollLeft = carouselBody.scrollWidth - carouselBody.clientWidth;
3259
3260 // Regra 1: A seta esquerda fica cinza se scrollLeft for 0
3261 if (scrollLeft === 0) {
3262 leftArrow.classList.remove("active");
3263 leftArrow.classList.add("inactive");
3264 } else {
3265 leftArrow.classList.remove("inactive");
3266 leftArrow.classList.add("active");
3267 }
3268
3269 // Regra 2: A seta direita fica cinza se o scroll for máximo
3270 if (scrollLeft >= maxScrollLeft) {
3271 rightArrow.classList.remove("active");
3272 rightArrow.classList.add("inactive");
3273 } else {
3274 rightArrow.classList.remove("inactive");
3275 rightArrow.classList.add("active");
3276 }
3277 };
3278
3279 carouselBody.addEventListener("scroll", updateArrows);
3280};
3281
3282/* Fetch Things */
3283async function getWebStoriesDataSectionFromNews(webContentId) {
3284 const ID_INDEX = 0;
3285 const WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT = 2;
3286 const urlToFetchToGetWebStoriesGroup =
3287 `/o/headless-delivery/v1.0/structured-contents/` +
3288 webContentId +
3289 `?fields=contentFields`;
3290
3291 return fetch(urlToFetchToGetWebStoriesGroup, {
3292 method: "GET",
3293 headers: {
3294 accept: "application/json",
3295 "x-csrf-token": Liferay.authToken,
3296 },
3297 })
3298 .then((response) => {
3299 if (response.status === 200) {
3300 return response.json();
3301 } else {
3302 throw new Error("Erro interno. Por favor tente mais tarde.");
3303 }
3304 })
3305 .then((data) => {
3306 const webStoriesGroups = Array.from(data.contentFields).filter(
3307 (contentField) => contentField.label === "Web Stories"
3308 );
3309
3310 const webStoriesDataMapped = webStoriesGroups.map((webStoryGroup) => {
3311 const webStoryGroupId =
3312 webStoryGroup.nestedContentFields[ID_INDEX].contentFieldValue.data;
3313 const webStoriesStrucutredContentNodes =
3314 webStoryGroup.nestedContentFields.slice(
3315 WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT
3316 );
3317 const webStoriesIds = Array.from(webStoriesStrucutredContentNodes).map(
3318 (webStoryNode) => {
3319 const webStoryId =
3320 webStoryNode.contentFieldValue.structuredContentLink.id;
3321 return {
3322 webStoryId: webStoryId,
3323 };
3324 }
3325 );
3326 return {
3327 webStoryGroupId: webStoryGroupId,
3328 webStoriesIds: webStoriesIds,
3329 };
3330 });
3331
3332 return webStoriesDataMapped;
3333 })
3334 .then((webStoriesDataMapped) => {
3335 // Mapeia os dados recebidos
3336 return Promise.all(
3337 webStoriesDataMapped.map(async (group) => {
3338 const updatedWebStoriesIds = await Promise.all(
3339 group.webStoriesIds.map(async (story) => {
3340 // Faz o fetch para obter os dados do webStoryId
3341 const response = await fetch(
3342 `/o/headless-delivery/v1.0/structured-contents/` +
3343 story.webStoryId,
3344 {
3345 method: "GET",
3346 headers: {
3347 accept: "application/json",
3348 "x-csrf-token": Liferay.authToken,
3349 },
3350 }
3351 );
3352 if (!response.ok) {
3353 throw new Error(
3354 `Erro ao buscar dados para webStoryId` + story.webStoryId
3355 );
3356 }
3357 const webStoryData = await response.json();
3358 return { webStoryData: webStoryData };
3359 })
3360 );
3361
3362 // Retorna o objeto transformado
3363 return {
3364 webStoryGroupId: group.webStoryGroupId,
3365 webStoriesData: updatedWebStoriesIds,
3366 };
3367 })
3368 );
3369 })
3370 .then((webStoriesDataFetched) => {
3371 return webStoriesDataFetched.map((data) => {
3372 return {
3373 webStoryGroupId: data.webStoryGroupId,
3374 webStoryObjects: data.webStoriesData.map((data) =>
3375 createStoryObject(data.webStoryData)
3376 ),
3377 };
3378 });
3379 })
3380 .catch((error) => {
3381 console.error("Erro ao buscar coleção: ", error);
3382 });
3383}
3384
3385async function getWebStoriesData(webStoriesIds) {
3386 // Mapeia os IDs para criar um array de promessas
3387 const fetchPromises = webStoriesIds.map((webStoryId) => {
3388 //const urlToFetch = `/o/headless-delivery/v1.0/structured-contents/` + webStoryId + `?fields=contentFields`;
3389 const urlToFetch =
3390 `/o/headless-delivery/v1.0/structured-contents/` +
3391 webStoryId +
3392 `?fields=contentFields%2CtaxonomyCategoryBriefs`;
3393 return fetch(urlToFetch, {
3394 method: "GET",
3395 headers: {
3396 accept: "application/json",
3397 "x-csrf-token": Liferay.authToken,
3398 },
3399 }).then((response) => {
3400 if (!response.ok) {
3401 throw new Error(`Erro ao buscar ID`);
3402 }
3403 return response.json(); // Transforma a resposta em JSON
3404 });
3405 });
3406
3407 // Aguarda todas as promessas e preserva a ordem
3408 try {
3409 const results = await Promise.all(fetchPromises);
3410 return results; // Retorna os resultados em ordem
3411 } catch (error) {
3412 console.error("Erro ao buscar Web Stories:", error);
3413 throw error; // Relança o erro para tratamento posterior
3414 }
3415}
3416
3417<#noparse>
3418const scriptForStoryInNews = (storyData, containerId) => {
3419
3420 storyData.stories = storyData.stories.filter(story => story.imageUrl !== null)
3421
3422 const storiesContainer = document.getElementById(`stories-container-${containerId}`);
3423 const prevArrow = storiesContainer.querySelector('.nav-area.prev svg.arrow');
3424 const nextArrow = storiesContainer.querySelector('.nav-area.next svg.arrow');
3425 const restartIcon = storiesContainer.querySelector('.nav-area.next svg.restart-icon');
3426 const progressBars = storiesContainer.querySelector('.progress-bars');
3427 const pauseBtn = storiesContainer.querySelector('.pause-btn');
3428 const shareBtn = storiesContainer.querySelector('.share-btn');
3429
3430 let currentStoryIndex = 0;
3431 let progressTimeout;
3432 let touchStartX = 0;
3433 let touchEndX = 0;
3434 let isPaused = false;
3435 let viewedStories = new Set();
3436 let progressStartTime = 0;
3437 let remainingTime = 8000;
3438
3439 // Tagueamento com Google Analytics
3440 const trackStoryPageView = (pageId) => {
3441 gtag("event", `web_story_page_view_${pageId}`, {
3442 story_title: document.title,
3443 canonical_url: window.location.href,
3444 source_url: document.referrer
3445 });
3446 }
3447
3448 // Cria slides dos stories
3449 function createStorySlides() {
3450 // Cria barras de progresso
3451 storyData.stories.forEach((story, index) => {
3452 const progressContainer = document.createElement('div');
3453 progressContainer.className = 'progress-bar';
3454 progressContainer.dataset.index = index;
3455
3456 const progress = document.createElement('div');
3457 progress.className = 'story-progress';
3458 progressContainer.appendChild(progress);
3459
3460 progressBars.appendChild(progressContainer);
3461 });
3462
3463 // Cria slides
3464 storyData.stories.forEach((story, index) => {
3465 const slide = document.createElement('div');
3466 slide.className = `story-slide ${index === 0 ? 'active' : ''}`;
3467 slide.dataset.index = index;
3468
3469 let imageHtml = '';
3470 if (story.imageUrl) {
3471 imageHtml = `<img src="${story.imageUrl}" alt="${story.imageAlt || ''}" class="story-image" loading="lazy">`;
3472 }
3473
3474 slide.innerHTML = `
3475 ${imageHtml}
3476 <div class="story-content">
3477 <div class="content-wrapper">
3478 ${story.title && (
3479 `<div class="story-title ${story.colorTheme}">
3480 <p class="title-text">${story.title}</p>
3481 <div class="mischievous">—</div>
3482 </div>`
3483 )}
3484 ${story.description && `<div class="story-description description-text ${story.colorTheme}">${story.description}</div>`}
3485 </div>
3486 </div>
3487 `;
3488 storiesContainer.insertBefore(slide, storiesContainer.querySelector('.nav-area-container'));
3489 });
3490
3491 updateArrows();
3492 updateProgressBars();
3493 startProgressBar();
3494 }
3495
3496 // Atualiza o estado das setas de navegação
3497 function updateArrows() {
3498 // Seta anterior
3499 if (currentStoryIndex === 0) {
3500 prevArrow.classList.add('disabled');
3501 } else {
3502 prevArrow.classList.remove('disabled');
3503 }
3504
3505 // Próxima seta
3506 if (currentStoryIndex === storyData.stories.length - 1) {
3507 nextArrow.classList.add('hidden');
3508 restartIcon.classList.remove('hidden');
3509 } else {
3510 nextArrow.classList.remove('hidden');
3511 restartIcon.classList.add('hidden');
3512 }
3513 }
3514
3515 // Atualiza as barras de progresso conforme navegação
3516 function updateProgressBars() {
3517 const allProgressBars = storiesContainer.querySelectorAll('.progress-bar .story-progress');
3518
3519 allProgressBars.forEach((bar, index) => {
3520 bar.classList.remove('completed', 'active');
3521 bar.style.width = '0%';
3522 bar.style.animation = 'none';
3523
3524 if (index < currentStoryIndex) {
3525 // Stories já vistos - barra completa
3526 bar.classList.add('completed');
3527 bar.style.width = '100%';
3528 } else if (index === currentStoryIndex) {
3529 // Story atual - barra em progresso
3530 bar.classList.add('active');
3531 } else {
3532 // Stories não vistos - barra vazia
3533 bar.style.width = '0%';
3534 }
3535 });
3536 }
3537
3538 function nextStory() {
3539 if (currentStoryIndex < storyData.stories.length - 1) {
3540 viewedStories.add(currentStoryIndex);
3541 goToStory(currentStoryIndex + 1);
3542 }
3543 }
3544
3545 function prevStory() {
3546 if (currentStoryIndex > 0) {
3547 viewedStories.delete(currentStoryIndex);
3548 goToStory(currentStoryIndex - 1);
3549 }
3550 }
3551
3552 function goToStory(index) {
3553 // Pausa a animação atual
3554 clearTimeout(progressTimeout);
3555
3556 storiesContainer.querySelector('.story-slide.active').classList.remove('active');
3557 currentStoryIndex = index;
3558 storiesContainer.querySelector(`.story-slide[data-index="${index}"]`).classList.add('active');
3559
3560 updateArrows();
3561 updateProgressBars();
3562
3563 isPaused = false;
3564 pauseBtn.classList.replace('play', 'pause');
3565 startProgressBar();
3566 }
3567
3568 function startProgressBar() {
3569 const currentProgressBar = storiesContainer.querySelector(`.progress-bar[data-index="${currentStoryIndex}"] .story-progress`);
3570
3571 // Resetar e iniciar animação
3572 currentProgressBar.style.animation = 'none';
3573 currentProgressBar.offsetHeight; // Trigger reflow
3574 currentProgressBar.style.animation = 'progress 8s linear forwards';
3575
3576 progressStartTime = Date.now();
3577
3578 progressTimeout = setTimeout(() => {
3579 nextStory();
3580 }, remainingTime);
3581 }
3582
3583 // Pausar/continuar story
3584 function togglePause() {
3585 isPaused = !isPaused;
3586
3587 const currentProgressBar = storiesContainer.querySelector(`.progress-bar[data-index="${currentStoryIndex}"] .story-progress`);
3588
3589 if (isPaused) {
3590 // Pausar
3591 currentProgressBar.style.animationPlayState = 'paused';
3592 clearTimeout(progressTimeout);
3593
3594 // Calcular tempo restante
3595 const elapsed = Date.now() - progressStartTime;
3596 remainingTime = Math.max(0, 8000 - elapsed);
3597
3598 pauseBtn.classList.remove('pause');
3599 pauseBtn.classList.add('play');
3600 } else {
3601 // Retomar
3602 currentProgressBar.style.animationPlayState = 'running';
3603 pauseBtn.classList.remove('play');
3604 pauseBtn.classList.add('pause');
3605
3606 // Reiniciar com tempo restante
3607 progressStartTime = Date.now();
3608 progressTimeout = setTimeout(() => {
3609 nextStory();
3610 }, remainingTime);
3611 }
3612 }
3613
3614 function shareStory() {
3615 const currentStory = storyData.stories[currentStoryIndex];
3616 const baseUrl = window.location.origin;
3617 let displayPageUrl;
3618 if (baseUrl.includes('webserver')) {
3619 displayPageUrl = `${baseUrl}/web/nossa-energia/w/${storyData.friendlyUrlPath}`;
3620 } else {
3621 displayPageUrl = `${baseUrl}/w/${storyData.friendlyUrlPath}`;
3622 }
3623
3624 const shareData = {
3625 title: currentStory.title || 'Story',
3626 text: currentStory.description ? currentStory.description.replace(/<[^>]*>/g, '') : '',
3627 url: displayPageUrl
3628 };
3629
3630 if (navigator.share) {
3631 navigator.share(shareData)
3632 .then(() => console.log('Compartilhado com sucesso'))
3633 .catch((error) => console.log('Erro ao compartilhar:', error));
3634 } else {
3635 // Fallback para navegadores que não suportam a API de compartilhamento
3636 alert('Compartilhar: ' + shareData.title + '\n' + shareData.text + '\n' + shareData.url);
3637 }
3638 }
3639
3640 // Event Listeners
3641 prevArrow.addEventListener('click', (e) => {
3642 e.stopPropagation();
3643 prevStory();
3644 });
3645
3646 nextArrow.addEventListener('click', (e) => {
3647 e.stopPropagation();
3648 nextStory();
3649 });
3650
3651 restartIcon.addEventListener('click', (e) => {
3652 e.stopPropagation();
3653 goToStory(0);
3654 });
3655
3656 pauseBtn.addEventListener('click', e => {
3657 e.stopPropagation();
3658 togglePause();
3659 });
3660
3661 shareBtn.addEventListener('click', e => {
3662 e.stopPropagation();
3663 shareStory();
3664 });
3665
3666 // Navegação por clique na tela
3667 storiesContainer.addEventListener('click', (e) => {
3668 const containerWidth = storiesContainer.offsetWidth;
3669 const clickX = e.clientX - storiesContainer.getBoundingClientRect().left;
3670
3671 // Se clicou na metade esquerda
3672 if (clickX < containerWidth / 2) {
3673 prevStory();
3674 }
3675 // Se clicou na metade direita
3676 else if (clickX > containerWidth / 2) {
3677 nextStory();
3678 }
3679 });
3680
3681 // Inicializar
3682 createStorySlides();
3683
3684 // Envia evento de click em links
3685 storiesContainer.addEventListener('click', e => {
3686 if (e.target.classList.contains('a')) {
3687 gtag("event", `web_story_link_click_${storyData.friendlyUrlPath}`);
3688 }
3689 });
3690
3691 const lastPage = storiesContainer.querySelector(".story-slide:last-of-type");
3692
3693 // Observa a mudança das páginas do story
3694 const observer = new MutationObserver((mutationsList) => {
3695 mutationsList.forEach((mutation) => {
3696 if (mutation.type === "attributes" && mutation.attributeName === "active") {
3697 const target = mutation.target;
3698 if (target.tagName.toLowerCase() === "story-slide" && target.hasAttribute("active")) {
3699 trackStoryPageView(target.getAttribute('data-index'));
3700 target === lastPage && gtag("event", 'web_story_complete');
3701 }
3702 }
3703 });
3704 });
3705
3706 const activePage = storiesContainer.querySelector('.story-slide.active');
3707 if (activePage && activePage.getAttribute('data-index') === '0') {
3708 trackStoryPageView(0);
3709 }
3710
3711 const pages = storiesContainer.querySelectorAll(".story-slide");
3712 pages.forEach(page => {
3713 observer.observe(page, { attributes: true, attributeFilter: ["active"] });
3714 });
3715}
3716</#noparse>
3717
3718async function fetchAndLogWebStories() {
3719 const webStoriesCarouselDataList = await getWebStoriesDataSectionFromNews(
3720 "${newsJournalArticle.getResourcePrimKey()}"
3721 );
3722
3723 webStoriesCarouselDataList.forEach((webStoriesCarouselData) => {
3724 const onlyOneWebstory = webStoriesCarouselData.webStoryObjects.length === 1;
3725
3726 if (onlyOneWebstory) {
3727 // renderiza um único story com navegação dentro da notícia
3728 const carouselElement = document.querySelector(`#` + webStoriesCarouselData.webStoryGroupId);
3729 carouselElement.style.alignItems = 'center';
3730 <#noparse>
3731 carouselElement.innerHTML =
3732 ` <div class="stories-container" id="stories-container-${webStoriesCarouselData.webStoryGroupId}">
3733 <div class="header-container">
3734 <div class="story-header">
3735 <div class="progress-bars"></div>
3736 </div>
3737 <div class="action-buttons">
3738 <button class="action-btn pause pause-btn"></button>
3739 <button class="action-btn share share-btn"></button>
3740 </div>
3741 </div>
3742
3743 <!-- Os stories serão inseridas aqui via JavaScript -->
3744
3745 <div class="nav-area-container">
3746 <div class="nav-area prev">
3747 <svg class="arrow disabled" width="32" height="32" viewBox="0 0 34 33" fill="none"
3748 xmlns="http://www.w3.org/2000/svg">
3749 <g>
3750 <path
3751 d="M1 16.5C1 7.66344 8.16344 0.5 17 0.5C25.8366 0.5 33 7.66344 33 16.5C33 25.3366 25.8366 32.5 17 32.5C8.16344 32.5 1 25.3366 1 16.5Z"
3752 stroke="#959595" />
3753 <path d="M19 21.5L14 16.5L19 11.5" stroke="#525252" stroke-width="1.5" stroke-linecap="round"
3754 stroke-linejoin="round" />
3755 </g>
3756 </svg>
3757 </div>
3758 <div class="nav-area next">
3759 <svg class="arrow" width="32" height="32" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg">
3760 <path
3761 d="M1 16.5C1 7.66344 8.16344 0.5 17 0.5C25.8366 0.5 33 7.66344 33 16.5C33 25.3366 25.8366 32.5 17 32.5C8.16344 32.5 1 25.3366 1 16.5Z"
3762 stroke="#008542" />
3763 <path d="M15 11.5L20 16.5L15 21.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3764 stroke-linejoin="round" />
3765 </svg>
3766 <svg class="restart-icon hidden" width="32" height="32" viewBox="0 0 34 33" fill="none" xmlns="http://www.w3.org/2000/svg">
3767 <path
3768 d="M1 16.5C1 7.66344 8.16344 0.5 17 0.5C25.8366 0.5 33 7.66344 33 16.5C33 25.3366 25.8366 32.5 17 32.5C8.16344 32.5 1 25.3366 1 16.5Z"
3769 stroke="#008542" />
3770 <path
3771 d="M13.9875 14.7313H10.9875M10.9875 14.7313V11.7313M10.9875 14.7313L13.1125 12.6125C13.8816 11.8429 14.8616 11.3186 15.9286 11.106C16.9956 10.8934 18.1017 11.0021 19.1069 11.4182C20.1122 11.8344 20.9714 12.5393 21.576 13.4439C22.1805 14.3485 22.5032 15.412 22.5032 16.5C22.5032 17.588 22.1805 18.6515 21.576 19.5561C20.9714 20.4607 20.1122 21.1656 19.1069 21.5818C18.1017 21.9979 16.9956 22.1066 15.9286 21.894C14.8616 21.6814 13.8816 21.1571 13.1125 20.3875"
3772 stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
3773 </svg>
3774 </div>
3775 </div>
3776 </div>
3777 `;
3778 </#noparse>
3779 const singleWebstoryData = webStoriesCarouselData.webStoryObjects[0];
3780 scriptForStoryInNews(singleWebstoryData, webStoriesCarouselData.webStoryGroupId);
3781 } else {
3782 // Carrossel
3783 renderItems(
3784 webStoriesCarouselData.webStoryGroupId,
3785 webStoriesCarouselData.webStoryObjects
3786 );
3787 }
3788 });
3789}
3790
3791fetchAndLogWebStories();
3792
3793</script>
3794
3795 <script>
3796 <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)>
3797
3798 function ${configureLinkTab}() {
3799 const root = document.querySelector(".ptb-news__read-news");
3800 const newsContentElement = root.querySelector(".news-content div:first-child");
3801 const pList = newsContentElement.querySelectorAll("p");
3802 pList.forEach((pElement) => {
3803 const cont = pElement.innerHTML.trim();
3804 if (cont == "" || cont == " ") {
3805 newsContentElement?.removeChild(pElement);
3806 }
3807 });
3808 }
3809
3810 ${configureLinkTab}();
3811
3812 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
3813
3814 function resizeMediaInfographic() {
3815 if (window.innerWidth > 1024) {
3816 const contents = document.querySelectorAll(".ptb-news__read-news .news-content p");
3817 contents.forEach((content) => {
3818 content.querySelector("img") && (content.style.gridColumn = "2 / 12");
3819 });
3820 }
3821 else {
3822 const contents = document.querySelectorAll(".ptb-news__read-news .news-content p");
3823 contents.forEach((content) => {
3824 content.querySelector("img") && (content.style.gridColumn = "");
3825 });
3826
3827 }
3828 }
3829 resizeMediaInfographic();
3830 </#if>
3831
3832
3833
3834 document.addEventListener("DOMContentLoaded", () => {
3835 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");
3836
3837 headers.forEach((header) => {
3838
3839 const currentLevel = parseInt(header.tagName.charAt(1));
3840
3841 if (currentLevel >= 1 && currentLevel <= 5) {
3842
3843 const newLevel = currentLevel + 1;
3844 const newTagName = "h" + newLevel;
3845
3846 // Criar a nova tag e transferir o conteúdo
3847 const newHeader = document.createElement(newTagName);
3848 newHeader.innerHTML = header.innerHTML;
3849
3850 // Substituir a tag antiga pela nova
3851 header.parentNode.replaceChild(newHeader, header);
3852 }
3853 });
3854
3855 <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) />
3856
3857 <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" >
3858 resizeMediaInfographic();
3859 window.addEventListener("resize", resizeMediaInfographic);
3860 </#if>
3861 });
3862
3863 AUI().ready(()=>{
3864 const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content");
3865 const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template");
3866
3867 audiosContainer.forEach((audioContainer)=>{
3868
3869 const audio = audioContainer.querySelector("audio");
3870 const audioInterface = audioTemplate.cloneNode(true);
3871
3872 const sondwave = audioInterface.querySelector(".audio-sondwave");
3873 const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line");
3874 const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line");
3875
3876 const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play");
3877
3878 playPauseButtonAudioInterface.addEventListener("click", ()=>{
3879 if(audioInterface.classList.contains("audio-play")) {
3880 audioInterface.classList.replace("audio-play", "audio-pause");
3881 audio.pause();
3882 }
3883 else {
3884
3885 audiosContainer.forEach((audioContainer)=>{
3886 const otherAudio = audioContainer.querySelector("audio");
3887 const otherAudioInterface = audioContainer.querySelector(".audio-button-play");
3888 !otherAudio.paused && otherAudioInterface.click();
3889 });
3890
3891 audioInterface.classList.replace("audio-pause", "audio-play");
3892 audio.play();
3893 }
3894 });
3895
3896 const audioMuteButton = audioInterface.querySelector(".audio-button-mute");
3897
3898 audioMuteButton.addEventListener("click", ()=>{
3899 if(audioInterface.classList.contains("audio-unmuted")) {
3900 audioInterface.classList.replace("audio-unmuted", "audio-muted");
3901 audio.muted = true;
3902 }
3903 else {
3904 audioInterface.classList.replace("audio-muted", "audio-unmuted");
3905 audio.muted = false;
3906 }
3907 });
3908
3909 const audioTime = audioInterface.querySelector(".audio-time");
3910 audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60);
3911
3912
3913 audio.addEventListener("timeupdate", ()=>{
3914 let minutes = Math.floor((audio.duration - audio.currentTime) / 60);
3915 let seconds = Math.floor((audio.duration - audio.currentTime) % 60);
3916
3917 minutes = minutes < 10? "0" + minutes : minutes;
3918 seconds = seconds < 10? "0" + seconds : seconds;
3919
3920 audioTime.textContent = minutes + ":" + seconds;
3921
3922 const progress = (audio.currentTime / audio.duration) * 100;
3923
3924 linesDesktop.forEach(function(line, index) {
3925 const lineProgress = (index / linesDesktop.length) * 100;
3926 if (progress >= lineProgress) {
3927 !line.classList.contains("line-active") && line.classList.add("line-active");
3928 } else {
3929 line.classList.contains("line-active") && line.classList.remove("line-active");
3930 }
3931 });
3932
3933 linesMobile.forEach(function(line, index) {
3934 const lineProgress = (index / linesMobile.length) * 100;
3935 if (progress >= lineProgress) {
3936 !line.classList.contains("line-active") && line.classList.add("line-active");
3937 } else {
3938 line.classList.contains("line-active") && line.classList.remove("line-active");
3939 }
3940 });
3941 });
3942
3943
3944 sondwave.addEventListener("click", (event)=>{
3945 const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left)/sondwave.offsetWidth;
3946 audio.currentTime = audio.duration * distanceLeft;
3947 });
3948
3949 audioInterface.style.display = "";
3950 audioContainer.appendChild(audioInterface);
3951 });
3952
3953 });
3954 </script>
3955</#macro>
3956
3957<#macro renderShareAndCopyNews>
3958 <#-- <div class="share_news_container">-->
3959 <div class="social-media-container">
3960
3961 <#assign emailMsg = "Veja o conteúdo do post no link ">
3962 <#if locale == "en_US">
3963 <#assign emailMsg = "See the content of the post in the link ">
3964 </#if>
3965 <a class="social-media-share" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&body=${emailMsg}${newsInfo.url}"
3966 target="_blank">
3967 <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none"
3968 xmlns="http://www.w3.org/2000/svg">
3969 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3970 <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"
3971 fill="#008542"/>
3972 </svg>
3973 <span >send e-mail</span>
3974 </a>
3975
3976 <a class="social-media-share" href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank">
3977 <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none"
3978 xmlns="http://www.w3.org/2000/svg">
3979 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3980 <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"
3981 fill="#008542"/>
3982 </svg>
3983 <span >Facebook</span>
3984 </a>
3985
3986 <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)>
3987 <div class="mobile-share" id="${mobileShareButtonId}">
3988 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
3989 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
3990 <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"
3991 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3992 <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"
3993 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3994 <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"
3995 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
3996 <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round"
3997 stroke-linejoin="round"/>
3998 <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round"
3999 stroke-linejoin="round"/>
4000 </svg>
4001 </div>
4002
4003 <a class="social-media-share" href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large">
4004 <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none"
4005 xmlns="http://www.w3.org/2000/svg">
4006 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
4007 <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"/>
4008 </svg>
4009 <span >twitter</span>
4010 </a>
4011
4012 <a class="social-media-share" href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp/share"
4013 target="_blank">
4014 <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none"
4015 xmlns="http://www.w3.org/2000/svg">
4016 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
4017 <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"
4018 fill="#008542"/>
4019 <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"
4020 fill="white"/>
4021 </svg>
4022 <span >Share to WhatsApp </span>
4023 </a>
4024
4025 <div class="copy-text-container">
4026 <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
4027 <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round"
4028 stroke-linejoin="round"/>
4029 <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round"
4030 stroke-linejoin="round"/>
4031 </svg>
4032
4033 <#if locale == "pt_BR">
4034 <p class="text">Copiar texto <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p>
4035 <#else >
4036 <p class="text">Copy text <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p>
4037 </#if>
4038 </div>
4039
4040 </div>
4041
4042 <#if locale == "pt_BR">
4043 <span class="copy-message">Texto copiado!</span>
4044 <#else >
4045 <span class="copy-message">Text copied!</span>
4046 </#if>
4047 <#-- </div>-->
4048</#macro>
4049
4050<#-- ################################################################################################################## -->
4051
4052<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
4053<#macro renderLinks newsInfo>
4054 <#if newsInfo.links?size != 0>
4055 <#--videos "escondidos" que serão unidos a .ptb-news__read-content -->
4056
4057 <div class="ptb-news__links-container d-none ">
4058 <div id="ptb-news__links-identifiers">
4059 <#assign separator = "">
4060 <#list newsInfo.links as link>
4061 ${link.id};
4062 <#assign separator = ";">
4063 </#list>
4064 </div>
4065 <#list newsInfo.links as link>
4066 <#assign link_index = link?index>
4067 <#assign linkUrl = "#">
4068 <#assign target = "_blank">
4069 <#assign linkClass = "">
4070
4071 <div id="ptb-news__link-container-${link_index}">
4072 <#if link.externalLink?has_content>
4073 <#assign linkUrl = link.externalLink>
4074 <#assign target = "_blank">
4075 <#assign linkClass = "external-link">
4076 <#elseif link.pageLink?has_content>
4077 <#assign linkUrl = link.pageLink>
4078 <#assign target = "_self">
4079 <#assign linkClass = "internal-page-link">
4080 <#elseif link.file.mimeType?has_content>
4081 <#assign linkUrl = link.file.url>
4082 <#assign target = "_blank">
4083 <#assign linkClass = "file-link">
4084 </#if>
4085
4086 <#-- PDF icon -->
4087 <#if link.iconType == "Opção78730408" >
4088 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4089 xmlns="http://www.w3.org/2000/svg">
4090 <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"
4091 fill="#008542"/>
4092 <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"
4093 fill="#008542"/>
4094 <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z"
4095 fill="#008542"/>
4096 <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"
4097 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
4098 stroke-linejoin="round"/>
4099 </svg>
4100
4101 <#-- JPG icon -->
4102 <#elseif link.iconType == "Opção89889679" >
4103 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4104 xmlns="http://www.w3.org/2000/svg">
4105 <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"
4106 fill="#008542"/>
4107 <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"
4108 fill="#008542"/>
4109 <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"
4110 fill="#008542"/>
4111 <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"
4112 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
4113 stroke-linejoin="round"/>
4114 </svg>
4115 <#-- DOC icon -->
4116 <#elseif link.iconType == "Opção15480314" >
4117 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4118 xmlns="http://www.w3.org/2000/svg">
4119 <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"
4120 fill="#008542"/>
4121 <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"
4122 fill="#008542"/>
4123 <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"
4124 fill="#008542"/>
4125 <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"
4126 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
4127 stroke-linejoin="round"/>
4128 </svg>
4129 <#-- External link icon -->
4130 <#elseif link.iconType == "Opção43823553" >
4131 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
4132 xmlns="http://www.w3.org/2000/svg">
4133 <path opacity="0.98"
4134 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"
4135 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4136 </svg>
4137 <#-- Internal page link icon -->
4138 <#elseif link.iconType == "Opção64212757" >
4139 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542" viewBox="0 0 256 256">
4140 <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">
4141 </path>
4142 </svg>
4143 <#-- Download link icon -->
4144 <#elseif link.iconType == "Opção20766606" >
4145 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
4146 xmlns="http://www.w3.org/2000/svg">
4147 <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"
4148 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4149 </svg>
4150 </#if>
4151<#if link.title?? && link.title?has_content>
4152 <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a>
4153 </#if>
4154 </div>
4155 </#list>
4156 </div>
4157
4158 <script>
4159 var newsContent_code = document.querySelector(".news-content").innerHTML;
4160
4161 var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";");
4162 linksIdentifiers.forEach((linkIdentifier, index) => {
4163 const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index);
4164 if (linkIdentifierContent) {
4165 const tag = "#[" + linkIdentifier.trim() + "]";
4166 const splitContent = newsContent_code.split(tag);
4167 newsContent_code = splitContent.join(linkIdentifierContent.innerHTML);
4168 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
4169 }
4170 });
4171
4172
4173 var ptb_news__read_content = document.querySelector(".news-content");
4174 ptb_news__read_content.innerHTML = newsContent_code;
4175
4176 const links_ptb_news = document.querySelectorAll(".news-content a");
4177 links_ptb_news.forEach((link) => {
4178 link.classList.add("link-ptb-news");
4179 });
4180
4181 </script>
4182
4183 <style>
4184 .ptb-news__read-news .ptb-news__link a {
4185 font-family: var(--font-family-base);
4186 font-style: var(--font-style-normal, normal);
4187 font-weight: var(--font-weight-bold, 700);
4188 font-size: var(--font-size-xxs, 16px);
4189 line-height: var(--line-height-xl, 160%);
4190 text-decoration-line: var(--text-decoration-underline, underline);
4191 color: #008542;
4192 }
4193
4194 body.high-contrast-active .ptb-news__read-news .ptb-news__link a {
4195 color: #E4F7E8;
4196 }
4197
4198 .ptb-news__read-news .news-content .link {
4199 font-family: var(--font-family-base);
4200 font-style: var(--font-style-normal, normal);
4201 font-weight: var(--font-weight-bold, 700);
4202 font-size: var(--font-size-xs, 18px);
4203 line-height: var(--line-height-xl, 160%);
4204
4205 text-decoration-line: var(--text-decoration-underline, underline);
4206 color: #008542;
4207 }
4208
4209 body.high-contrast-active .ptb-news__read-news .news-content .link {
4210 color: #E4F7E8;
4211 }
4212
4213 body.high-contrast-active .ptb-news__read-news .news-content svg path {
4214 stroke: var(--color-neutral-500, #D7D7D7);
4215 fill: rgba(255, 255, 255, 0.32);
4216 }
4217
4218 .ptb-news__read-news .news-content .ptb-link__wrapper {
4219 display: flex;
4220 flex-direction: column;
4221 gap: 0;
4222 margin-top: -24px;
4223 }
4224
4225 .ptb-news__read-news .news-content .ptb-link__wrapper svg {
4226 margin-right: var(--space-sm, 16px);
4227 }
4228
4229 .ptb-news__read-news .news-content .ptb-link__wrapper .first {
4230 gap: 0 !important;
4231 }
4232
4233 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4234 .ptb-news__read-news .news-content .link {
4235 font-size: var(--font-size-xxs, 16px);
4236 }
4237 }
4238 </style>
4239 </#if>
4240</#macro>
4241
4242<#-- ################################################################################################################## -->
4243
4244<#-- ################################################################################################################## -->
4245
4246<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
4247<#macro renderCite>
4248 <div class="ptb-news__cite-container">
4249 <div class="ptb-news__cite-container-breakpoint breakpoint">
4250 <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4">
4251 <div class="ptb-news__cite-title">
4252 <#if locale?lower_case == "pt_br">
4253 Notas
4254 <#else>
4255 Notes
4256 </#if>
4257 </div>
4258
4259 <div class="ptb-news__cites-elements">
4260 </div>
4261 </div>
4262 </div>
4263 </div>
4264
4265 <script>
4266 function positionCitesText(parentNodeCitesText) {
4267
4268 parentNodeCitesText.forEach((parentNodeCiteText)=>{
4269 if(window.innerWidth > 1024) {
4270 parentNodeCiteText.style.display="";
4271 parentNodeCiteText.style.gridColumnStart = "11";
4272 parentNodeCiteText.style.gridColumnEnd = "13";
4273 }
4274 else {
4275 parentNodeCiteText.style.display="none";
4276 parentNodeCiteText.style.gridColumnStart = "";
4277 parentNodeCiteText.style.gridColumnEnd = "";
4278 }
4279 });
4280 }
4281
4282 function addCitesTextMobile(citesText) {
4283 const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements");
4284
4285 if(citesContainer.children.length === 0) {
4286 citesContainer && citesText.forEach((citeText)=>{
4287 citesContainer.appendChild(citeText.cloneNode(true));
4288 });
4289 }
4290 }
4291
4292 const citesText = document.querySelectorAll(".news-content cite");
4293
4294 if (citesText.length > 0) {
4295 const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);
4296 positionCitesText(parentNodeCitesText);
4297 addCitesTextMobile(citesText);
4298 }
4299 else {
4300 const citesContainer = document.querySelector(".ptb-news__cite-container");
4301 citesContainer && (citesContainer.style.display="none");
4302 }
4303
4304 document.addEventListener('DOMContentLoaded', ()=>{
4305
4306 const citesText = document.querySelectorAll(".news-content cite");
4307
4308 if (citesText.length > 0) {
4309 const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);
4310
4311 positionCitesText(parentNodeCitesText);
4312 addCitesTextMobile(citesText);
4313
4314 window.addEventListener('resize', ()=>{positionCitesText(parentNodeCitesText)});
4315 }
4316 else {
4317 const citesContainer = document.querySelector(".ptb-news__cite-container");
4318 citesContainer && (citesContainer.style.display="none");
4319 }
4320 });
4321
4322 </script>
4323
4324 <style>
4325
4326 .ptb-news__read-news-post cite {
4327 color: var(--color-neutral-800, #373737);
4328 font-family: var(--font-family-base);
4329 font-size: var(--font-size-xxxs, 14px) !important;
4330 font-style: var(--font-style-normal, normal);
4331 font-weight: var(--font-weight-regular, 400);
4332 line-height: var(--line-height-xl, 160%);
4333 }
4334
4335 .ptb-news__read-news-post cite a{
4336 font-size: var(--font-size-xxxs, 14px) !important;
4337 }
4338
4339 body.high-contrast-active .ptb-news__read-news-post cite {
4340 color: var(--text-primary-default, var(--color-neutral-100));
4341 }
4342
4343 .ptb-news__read-news-post .news-content cite,
4344 .ptb-news__read-news-post .ptb-news__cite-container cite {
4345 display: block;
4346 padding-left: var(--space-md);
4347 border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7);
4348 }
4349
4350 @media screen and (min-width: 1025px) {
4351 .ptb-news__read-news-post .ptb-news__cite-container {
4352 display: none;
4353 }
4354 }
4355
4356 @media screen and (max-width: 1025px) {
4357 .ptb-news__read-news .ptb-news__cite-container .link {
4358 text-decoration-line: var(--text-decoration-underline, underline);
4359 color: #008542;
4360 }
4361
4362 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link {
4363 color: #E4F7E8;
4364 }
4365
4366 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path {
4367 stroke: var(--color-neutral-500, #D7D7D7);
4368 fill: rgba(255, 255, 255, 0.32);
4369 }
4370
4371 .ptb-news__read-news-post .ptb-news__cite-container {
4372 display: grid;
4373 background: var(--background-surface-level-03, #EEE);
4374 }
4375
4376 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container {
4377 background: var(--background-surface-level-03, #525252);
4378 }
4379
4380 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col {
4381 padding: var(--space-xxl) 0;
4382 display: flex;
4383 flex-direction: column;
4384 gap: var(--space-lg, 32px);
4385 }
4386
4387 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements {
4388 display: flex;
4389 flex-direction: column;
4390 gap: var(--space-lg, 32px);
4391 }
4392
4393 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
4394 color: var(--color-neutral-800, #373737);
4395 font-size: var(--font-size-sm, 20px);
4396 font-style: var(--font-style-normal, normal);
4397 font-weight: var(--font-weight-bold, 700);
4398 line-height: var(--line-height-xl, 160%);
4399 }
4400
4401 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
4402 color: var(--text-primary-default, var(--color-neutral-100));
4403 }
4404 }
4405 </style>
4406
4407</#macro>
4408
4409<#-- ################################################################################################################## -->
4410
4411
4412<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
4413<#macro renderGallery newsInfo>
4414 <#if newsInfo.galleryItems?size == 0>
4415 <#return />
4416 </#if>
4417
4418 <div class="gallery-breakpoint breakpoint">
4419 <div class="gallery col-3-11 md-col-1-8 sm-col-1-4">
4420
4421 <div class="title-container">
4422 <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg">
4423 <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"
4424 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4425 <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"
4426 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4427 </svg>
4428 <p class="title">
4429 <#if locale == "pt_BR"> Galeria de Imagens <#else > Image gallery </#if>
4430 </p>
4431 </div>
4432
4433 <div class="image-container">
4434 <#assign index = 0 />
4435 <#assign index = 0 />
4436 <#list newsInfo.galleryItems as gItem>
4437 <div class="modal-image-fragment" index="${index}">
4438 <div class="modal-image-container" index="${index}">
4439 <div class="modal-image-fragment" index="${index}">
4440 <div class="modal-image-container" index="${index}">
4441 <span class="click-image" ></span>
4442
4443 <div class="image-player-container">
4444 <span class="close-image">
4445 <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
4446 <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"/>
4447 <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"/>
4448 </svg>
4449 </span>
4450 <div class="image-player-session">
4451 <#-- Midias adaptativas de imagem para desktop e mobile -->
4452 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${gItem.image.fileEntryId}") />
4453 <#assign urlAdaptativeMediaMobile = gItem.image.url/>
4454 <#assign urlAdaptativeMediaDesktop = gItem.image.url/>
4455
4456 <#if fileDataRequest?? && fileDataRequest.adaptedImages?? >
4457 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
4458 <#list dataAdaptativeMedia as data>
4459 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
4460 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
4461 </#if>
4462 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
4463 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
4464 </#if>
4465 </#list>
4466 </#if>
4467
4468 <picture >
4469 <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}" >
4470 <img width="274px" height="152px" loading="lazy" src="${urlAdaptativeMediaDesktop}" alt="${gItem.image.alt}"/>
4471 </picture>
4472 </div>
4473 </div>
4474 </div>
4475 </div>
4476 <#assign index = index + 1 />
4477 <#assign index = index + 1 />
4478 </#list>
4479 <div class="control-arrow left-arrow">
4480 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4481 <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4482 </svg>
4483 </div>
4484 <div class="control-arrow right-arrow">
4485 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4486 <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4487 </svg>
4488 </div>
4489 <div class="image-bullets">
4490 <#list 0..(newsInfo.galleryItems?size-1) as index>
4491 <div index="${index}" class="bullet"></div>
4492 </#list>
4493 </div>
4494 </div>
4495 <div class="control-arrow left-arrow">
4496 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4497 <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4498 </svg>
4499 </div>
4500 <div class="control-arrow right-arrow">
4501 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4502 <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4503 </svg>
4504 </div>
4505 <div class="image-bullets">
4506 <#list 0..(newsInfo.galleryItems?size-1) as index>
4507 <div index="${index}" class="bullet"></div>
4508 </#list>
4509 </div>
4510 </div>
4511 </div>
4512 </div>
4513
4514 <style>
4515
4516 .ptb-news__read-news .gallery {
4517 padding-top: 42px;
4518 }
4519
4520 .ptb-news__read-news .gallery * {
4521 margin: 0;
4522 padding: 0;
4523 }
4524
4525 .ptb-news__read-news .gallery {
4526 display: flex;
4527 gap: var(--space-xl, 40px);
4528 flex-direction: column;
4529 }
4530
4531 .ptb-news__read-news .gallery .control-arrow {
4532 position: fixed;
4533 height: 100%;
4534 align-items: center;
4535 display: flex;
4536 justify-content: center;
4537 display: none;
4538 z-index: 9999;
4539 }
4540
4541 .ptb-news__read-news .gallery .left-arrow {
4542 top: 0;
4543 left: 5vw;
4544 }
4545
4546 .ptb-news__read-news .gallery .right-arrow {
4547 top: 0;
4548 right: 5vw;
4549 }
4550
4551 .ptb-news__read-news .gallery .lefg-arrow svg {
4552 margin-left: 16px !important;
4553 }
4554
4555 .ptb-news__read-news .gallery .right-arrow svg {
4556 margin-right: 16px !important;
4557 }
4558
4559 .ptb-news__read-news .gallery .image-bullets {
4560 display: none;
4561 gap: var(--space-sm, 16px);
4562 position: fixed;
4563 left: 0;
4564 bottom: calc(10vh + 24px);
4565 width: 100vw;
4566 z-index: 9999;
4567 justify-content: center;
4568 }
4569
4570 .ptb-news__read-news .gallery .image-bullets .bullet {
4571 width: var(--size-xs, 16px);
4572 height: var(--size-xs, 16px);
4573 border-radius: 50%;
4574 border: 1px solid var(--color-neutral-100, #FFFFFF);
4575 z-index: 9999;
4576 }
4577
4578 .ptb-news__read-news .gallery .image-bullets .bullet.current-item {
4579 background: var(--color-neutral-100, #FFFFFF);
4580 }
4581
4582 .ptb-news__read-news .gallery .control-arrow {
4583 position: fixed;
4584 height: 100%;
4585 align-items: center;
4586 display: flex;
4587 justify-content: center;
4588 display: none;
4589 z-index: 9999;
4590 }
4591
4592 .ptb-news__read-news .gallery .left-arrow {
4593 top: 0;
4594 left: 5vw;
4595 }
4596
4597 .ptb-news__read-news .gallery .right-arrow {
4598 top: 0;
4599 right: 5vw;
4600 }
4601
4602 .ptb-news__read-news .gallery .lefg-arrow svg {
4603 margin-left: 16px !important;
4604 }
4605
4606 .ptb-news__read-news .gallery .right-arrow svg {
4607 margin-right: 16px !important;
4608 }
4609
4610 .ptb-news__read-news .gallery .image-bullets {
4611 display: none;
4612 gap: var(--space-sm, 16px);
4613 position: fixed;
4614 left: 0;
4615 bottom: calc(10vh + 24px);
4616 width: 100vw;
4617 z-index: 9999;
4618 justify-content: center;
4619 }
4620
4621 .ptb-news__read-news .gallery .image-bullets .bullet {
4622 width: var(--size-xs, 16px);
4623 height: var(--size-xs, 16px);
4624 border-radius: 50%;
4625 border: 1px solid var(--color-neutral-100, #FFFFFF);
4626 z-index: 9999;
4627 }
4628
4629 .ptb-news__read-news .gallery .image-bullets .bullet.current-item {
4630 background: var(--color-neutral-100, #FFFFFF);
4631 }
4632
4633 .ptb-news__read-news .gallery .title-container {
4634 display: flex;
4635 align-items: center;
4636 gap: var(--space-sm, 16px);
4637 }
4638
4639 .ptb-news__read-news .gallery .title-container svg {
4640 width: var(--size-md, 24px);
4641 height: 21px;
4642 }
4643
4644 .ptb-news__read-news .gallery .title-container .title {
4645 color: var(--color-neutral-800, #373737);
4646 font-family: var(--font-family-base);
4647 font-size: var(--font-size-lg);
4648 font-style: var(--font-style-normal);
4649 font-weight: var(--font-weight-bold);
4650 line-height: var(--line-height-md);
4651 }
4652
4653 body.high-contrast-active .ptb-news__read-news .gallery .title-container .title {
4654 color: var(--color-neutral-100);
4655 }
4656
4657 .ptb-news__read-news .gallery .image-container {
4658 display: flex;
4659 gap: var(--space-sm, 16px);
4660 flex-wrap: wrap;
4661 }
4662
4663 .ptb-news__read-news .gallery .image-container .modal-image-fragment {
4664 width: inherit;
4665 height: inherit;
4666 max-height: calc(100vw/2);
4667 padding: 0;
4668 margin: 0;
4669 overflow: hidden;
4670 }
4671
4672 .ptb-news__read-news .gallery .image-container .modal-image-fragment * {
4673 box-sizing: border-box;
4674 margin: 0;
4675 padding: 0;
4676 }
4677
4678 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container {
4679 width: 100%;
4680 height: inherit;
4681 display: flex;
4682 justify-content: center;
4683 align-items: center;
4684 cursor: pointer;
4685 position: relative;
4686 }
4687
4688 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing {
4689 position: fixed;
4690 top: 0;
4691 left: 0;
4692 width: 100vw !important;
4693 height: 100vh !important;
4694 z-index: 9999 !important;
4695 background-color: rgba(0, 0, 0, 0.75);
4696 max-height: 100vh;
4697 }
4698
4699 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .click-image {
4700 height: 100%;
4701 width: 100%;
4702 position: absolute;
4703 z-index: 3;
4704 }
4705
4706 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container {
4707 width: 100%;
4708 height: 100%;
4709 }
4710
4711 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing {
4712 position: relative;
4713 width: 90vw !important;
4714 height: 80vh !important;
4715 z-index: 9999 !important;
4716 background-color: rgba(0, 0, 0, 0.75);
4717 border-radius: var(--border-radius-card);
4718 }
4719
4720 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image {
4721 display: none;
4722 position: absolute;
4723 top: 0;
4724 right: 0;
4725 transform: translate(100%, -100%);
4726 z-index: 99999;
4727 }
4728
4729 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) {
4730 fill: var(--background-Surface-level-01, #010101);
4731 }
4732
4733 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) {
4734 stroke: #E4F7E8;
4735 }
4736
4737 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image.image-active {
4738 display: block;
4739 }
4740
4741 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session {
4742 width: 100%;
4743 height: 100%;
4744 }
4745
4746 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session {
4747 width: 90vw !important;
4748 height: 80vh !important;
4749 z-index: 9999 !important;
4750 background-color: rgba(0, 0, 0, 0.75);
4751 border-radius: var(--border-radius-card);
4752 overflow: hidden;
4753 }
4754
4755 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session img {
4756 object-fit: cover;
4757 }
4758
4759 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session img {
4760 width: 100%;
4761 height: 100%;
4762 margin-left: 0 !important;
4763 max-height: 100vh;
4764 }
4765
4766 .ptb-news__read-news .gallery .image-container img {
4767 width: 274px;
4768 height: 152px;
4769 border-radius: var(--border-radius-md, 8px);
4770 cursor: pointer;
4771 }
4772
4773 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4774
4775 .ptb-news__read-news .gallery {
4776 padding-top: var(--space-xl, 40px);
4777 }
4778
4779 .ptb-news__read-news .gallery .image-container {
4780 gap: var(--space-xxs, 8px);
4781 }
4782
4783 .ptb-news__read-news .gallery .image-container img {
4784 width: 296px;
4785 height: 180px;
4786 }
4787
4788 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing {
4789 transform: rotate(90deg);
4790 transform-origin: center;
4791 width: 80vh !important;
4792 height: 90vw !important;
4793 }
4794
4795 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing img{
4796 cursor: pointer;
4797 }
4798
4799 .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session {
4800 width: 80vh !important;
4801 height: 90vw !important;
4802 }
4803
4804 .ptb-news__read-news .gallery .lefg-arrow svg {
4805 margin-left: 4px !important;
4806 }
4807
4808 .ptb-news__read-news .gallery .right-arrow svg {
4809 margin-right: 4px !important;
4810 }
4811
4812 .ptb-news__read-news .gallery .image-bullets {
4813 gap: 14px;
4814 }
4815
4816 .ptb-news__read-news .gallery .image-bullets .bullet {
4817 width: var(--size-xxs, 12px);
4818 height: var(--size-xxs, 12px);
4819 }
4820
4821 .ptb-news__read-news .gallery .lefg-arrow svg {
4822 margin-left: 4px !important;
4823 }
4824
4825 .ptb-news__read-news .gallery .right-arrow svg {
4826 margin-right: 4px !important;
4827 }
4828
4829 .ptb-news__read-news .gallery .image-bullets {
4830 gap: 14px;
4831 }
4832
4833 .ptb-news__read-news .gallery .image-bullets .bullet {
4834 width: var(--size-xxs, 12px);
4835 height: var(--size-xxs, 12px);
4836 }
4837 }
4838
4839 </style>
4840
4841 <script>
4842
4843
4844 const allModalImagesFragment = document.querySelectorAll(".ptb-news__read-news .gallery .modal-image-fragment");
4845 const totalItems = allModalImagesFragment.length;
4846 const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets");
4847 const bullets = bulletsContainer.querySelectorAll(".bullet");
4848 let currentItem = 0;
4849 const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow");
4850 const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow");
4851
4852 const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4853 getImageClick.classList.remove('image-playing');
4854 imagePlayerContainer.classList.remove('image-playing');
4855 imageContainer.classList.remove('image-playing');
4856
4857 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4858 currentBullet && currentBullet.classList.remove('current-item');
4859
4860 closeImage.classList.remove('image-active');
4861
4862 document.querySelector("body").style.overflow = 'initial';
4863 [nextImage, previousImage].forEach(item => {
4864 item.style.display = "none";
4865 });
4866 bulletsContainer.style.display = "none";
4867 }
4868
4869 const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4870 getImageClick.classList.add('image-playing');
4871 imagePlayerContainer.classList.add('image-playing');
4872 imageContainer.classList.add('image-playing');
4873 closeImage.classList.add('image-active');
4874
4875
4876 document.querySelector("body").style.overflow = 'hidden';
4877 [nextImage, previousImage].forEach(item => {
4878 item.style.display = "flex";
4879 });
4880 bulletsContainer.style.display = "flex";
4881 bullets[index].classList.add('current-item');
4882 }
4883
4884 const changeImage = (next) => {
4885 if(next == currentItem || next < 0 || next >= totalItems) return;
4886
4887 const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image');
4888 const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container');
4889 const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container');
4890 const image = imagePlayerContainer.querySelector('img');
4891 const closeImage = imagePlayerContainer.querySelector('.close-image');
4892
4893 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4894 currentBullet.classList.remove('current-item');
4895
4896 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
4897 allModalImagesFragment[next].querySelector('.click-image')?.click();
4898
4899 const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next + '"]')
4900 nextBullet.classList.add('current-item');
4901 currentItem = next;
4902 }
4903
4904 nextImage.addEventListener('click', () => {
4905 changeImage(currentItem + 1);
4906 });
4907
4908 previousImage.addEventListener('click', () => {
4909 changeImage(currentItem - 1);
4910 });
4911
4912 bullets.forEach((bullet, bulletIndex) => {
4913 bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ;
4914 });
4915
4916 allModalImagesFragment.forEach((modalImageFragment, index)=>{
4917 const totalItems = allModalImagesFragment.length;
4918 const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets");
4919 const bullets = bulletsContainer.querySelectorAll(".bullet");
4920 let currentItem = 0;
4921 const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow");
4922 const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow");
4923
4924 const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4925 getImageClick.classList.remove('image-playing');
4926 imagePlayerContainer.classList.remove('image-playing');
4927 imageContainer.classList.remove('image-playing');
4928
4929 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4930 currentBullet && currentBullet.classList.remove('current-item');
4931
4932 closeImage.classList.remove('image-active');
4933
4934 document.querySelector("body").style.overflow = 'initial';
4935 [nextImage, previousImage].forEach(item => {
4936 item.style.display = "none";
4937 });
4938 bulletsContainer.style.display = "none";
4939 }
4940
4941 const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => {
4942 getImageClick.classList.add('image-playing');
4943 imagePlayerContainer.classList.add('image-playing');
4944 imageContainer.classList.add('image-playing');
4945 closeImage.classList.add('image-active');
4946
4947
4948 document.querySelector("body").style.overflow = 'hidden';
4949 [nextImage, previousImage].forEach(item => {
4950 item.style.display = "flex";
4951 });
4952 bulletsContainer.style.display = "flex";
4953 bullets[index].classList.add('current-item');
4954 }
4955
4956 const changeImage = (next) => {
4957 if(next == currentItem || next < 0 || next >= totalItems) return;
4958
4959 const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image');
4960 const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container');
4961 const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container');
4962 const image = imagePlayerContainer.querySelector('img');
4963 const closeImage = imagePlayerContainer.querySelector('.close-image');
4964
4965 const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem + '"]')
4966 currentBullet.classList.remove('current-item');
4967
4968 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
4969 allModalImagesFragment[next].querySelector('.click-image')?.click();
4970
4971 const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next + '"]')
4972 nextBullet.classList.add('current-item');
4973 currentItem = next;
4974 }
4975
4976 nextImage.addEventListener('click', () => {
4977 changeImage(currentItem + 1);
4978 });
4979
4980 previousImage.addEventListener('click', () => {
4981 changeImage(currentItem - 1);
4982 });
4983
4984 bullets.forEach((bullet, bulletIndex) => {
4985 bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ;
4986 });
4987
4988 allModalImagesFragment.forEach((modalImageFragment, index)=>{
4989 const getImageClick = modalImageFragment.querySelector('.click-image');
4990 const imageContainer = modalImageFragment.querySelector('.modal-image-container');
4991 const imagePlayerContainer = modalImageFragment.querySelector('.image-player-container');
4992
4993 const image = imagePlayerContainer.querySelector('img');
4994 const closeImage = imagePlayerContainer.querySelector('.close-image');
4995 const body = document.body;
4996
4997 const toTopButton = document.querySelector(".fragment_88038 .petro-button");
4998
4999 getImageClick.addEventListener('click', () => {
5000 if (document.body.classList.contains('has-edit-mode-menu')) {
5001 return;
5002 }
5003 currentItem = index;
5004 currentItem = index;
5005 if (imagePlayerContainer.classList.contains('image-playing')) {
5006 toTopButton && (toTopButton.style.zIndex = "");
5007 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImagegetImageClick, imagePlayerContainer, imageContainer, closeImage);
5008 } else {
5009 playImage(index, getImageClick, imagePlayerContainer, imageContainer, closeImageindex, getImageClick, imagePlayerContainer, imageContainer, closeImage);
5010 toTopButton && (toTopButton.style.zIndex = "1");
5011 }
5012 })
5013
5014 closeImage.addEventListener('click', () => {
5015 if (imagePlayerContainer.classList.contains('image-playing')) {
5016 toTopButton && (toTopButton.style.zIndex = "");
5017 stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);
5018 const bulletToClose = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + index + '"]')
5019 bulletToClose?.classList.remove('current-item');
5020 }
5021 })
5022 });
5023 </script>
5024
5025</#macro>
5026
5027
5028<#-- ################################################################################################################## -->
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042 <#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
5043<#macro renderQuotes newsInfo>
5044 <#if newsInfo.quotes?size != 0>
5045 <#--quotes "escondidas" que serão unidas a .ptb-news__read-content -->
5046
5047 <div class="ptb-news__quotes-container d-none ">
5048 <div id="ptb-news__quotes-identifiers">
5049 <#assign separator = "">
5050 <#list newsInfo.quotes as quote>
5051 ${quote.id};
5052 <#assign separator = ";">
5053 </#list>
5054 </div>
5055 <#list newsInfo.quotes as quote>
5056 <#assign quotes_index = quote?index>
5057 <div id="ptb-news__quotes-container-${quote_index}">
5058 <#assign noAuthorWrapper = !((quote.image.url?? && quote.image.url?has_content) || (quote.author?has_content)) />
5059 <div class="quote <#if noAuthorWrapper>no-author-wrapper</#if>">
5060 <div class="text-wrapper">
5061 <blockquote class="text">${quote.content}</blockquote >
5062 </div>
5063 <#if !noAuthorWrapper>
5064 <div class="author-wrapper">
5065 <#if quote.image.url?? && quote.image.url?has_content>
5066 <#assign imageUrl = "/o/adaptive-media/image/" + quote.image.fileEntryId +"/Thumbnail-300x300/image"/>
5067 <img src="${imageUrl}" loading="lazy" alt="${quote.image.alt}">
5068 </#if>
5069 <#if quote.author?? && quote?has_content>
5070 <p class="author">${quote.author}</p>
5071 </#if>
5072 </div>
5073 </#if>
5074 </div>
5075 </div>
5076 </#list>
5077 </div>
5078
5079 <script>
5080 var newsContent_code = document.querySelector(".news-content").innerHTML;
5081
5082 var quotesIdentifiers = document.querySelector("#ptb-news__quotes-identifiers").innerHTML.trim().split(";");
5083 quotesIdentifiers.forEach((quoteIdentifier, index) => {
5084 const quoteIdentifierContent = document.querySelector("#ptb-news__quotes-container-" + index);
5085 if (quoteIdentifierContent) {
5086 const tag = "#[" + quoteIdentifier.trim() + "]";
5087 const splitContent = newsContent_code.split(tag);
5088 newsContent_code = splitContent.join(quoteIdentifierContent.innerHTML);
5089 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
5090 }
5091 });
5092
5093
5094 var ptb_news__read_content = document.querySelector(".news-content");
5095 ptb_news__read_content.innerHTML = newsContent_code;
5096
5097 </script>
5098
5099 <style>
5100
5101 .ptb-news__read-news .quote {
5102 display: flex;
5103 flex-direction: column;
5104 gap: var(--space-md, 24px);
5105 }
5106
5107 .ptb-news__read-news .quote.no-author-wrapper{
5108 gap: 0;
5109 }
5110
5111 .ptb-news__read-news .quote .text-wrapper {
5112 padding-left: var(--space-xl, 40px);
5113 }
5114
5115 .ptb-news__read-news .quote .text-wrapper .text {
5116 font-style: var(--font-style-italic) !important;
5117 padding-left: var(--space-md, 24px);
5118 margin-bottom: 0;
5119 border-left: 1px solid var(--border-color-mid, #d7d7d7);
5120 font-size: var(--font-size-xxs, 16px);
5121 }
5122
5123 .ptb-news__read-news .quote .author-wrapper {
5124 display: flex;
5125 flex-direction: row;
5126 gap: var(--space-md, 24px);
5127 }
5128
5129 .ptb-news__read-news .news-content .quote .author-wrapper img {
5130 height: var(--size-xxxl, 56px);
5131 width: var(--size-xxxl, 56px);
5132 border-radius: 100px;
5133 border: var(--size-nano, 2px) solid var(--border-color-mid) !important;
5134 }
5135
5136 .ptb-news__read-news .news-content .quote .author-wrapper p {
5137 margin: 0;
5138 align-self: center;
5139 font-size: var(--font-size-xs, 18px);
5140 font-style: var(--font-style-normal, normal);
5141 font-weight: var(--font-weight-bold, 700);
5142 line-height: var(--line-height-xs, 100%);
5143 }
5144
5145 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
5146 .ptb-news__read-news .quote .text-wrapper {
5147 padding-left: 0;
5148 }
5149
5150 .ptb-news__read-news .quote .text-wrapper .text {
5151 font-size: var(--font-size-xxxs, 14px);
5152 }
5153
5154 .ptb-news__read-news .news-content .quote .author-wrapper p {
5155 font-size: var(--font-size-xxs, 16px);
5156 }
5157 }
5158 </style>
5159 </#if>
5160</#macro>
5161
5162
5163
5164
5165<#-- ################################################################################################################## -->
5166
5167
5168
5169
5170
5171
5172
5173
5174<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ -->
5175<#--
5176Add elements from the sidebar to define your template. Type "${" to use the
5177autocomplete feature.
5178-->
5179<#function extractFeaturedNewsHeadline fieldList xmlArticle>
5180 <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")>
5181</#function>
5182
5183<#function extractNewsSummary fieldList xmlArticle>
5184 <#return getFieldValue(fieldList, xmlArticle, "Resumo da notícia")>
5185</#function>
5186
5187<#function extractPublishDate journalArticle>
5188 <#assign lastPublishDate = journalArticle.getModifiedDate()>
5189 <#if journalArticle.getLastPublishDate()??>
5190 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
5191 <#else>
5192 <#assign lastPublishDate = journalArticle.getModifiedDate()>
5193 </#if>
5194 <#return lastPublishDate />
5195</#function>
5196
5197<#-- Seção da imagem de destaque ---------------------------------------------------------------------->
5198<#function extractNewsMedia fieldList xmlArticle fileEntryService>
5199 <#-- Tentando pegar Imagem -->
5200 <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) />
5201 <#assign media = {} />
5202 <#list mediasGroup as mediaGroup >
5203 <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />
5204 <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "fileEntryId" : media.fileEntryId} />
5205
5206 <#-- Se não tiver imagem, tentar pegar vídeo -->
5207 <#if !media.imageSrc?has_content>
5208 <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") />
5209 <#if youtubeID?? && youtubeID?has_content>
5210 <#assign media = {"videoYotubeID": youtubeID} />
5211 <#else>
5212 <#-- Tentar pegar vídeo Interno -->
5213 <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) />
5214 <#if internalVideo?? && internalVideo?has_content>
5215 <#assign media = {"internalVideo": internalVideo} />
5216 </#if>
5217 </#if>
5218 </#if>
5219
5220 <#assign referenceMediasGroup = getNodes(getIdFromFieldName(fieldList, "Referências"), mediaGroup) />
5221 <#list referenceMediasGroup as referenciaMediaGroup >
5222 <#assign credits = getFieldValue(fieldList, referenceMediasGroup, "Crédito da mídia de destaque da notícia") />
5223 <#assign legend = getFieldValue(fieldList, referenceMediasGroup, "Legenda da mídia de destaque da notícia") />
5224 </#list>
5225
5226 <#assign media = media + {"credits": credits, "legend": legend} />
5227
5228 </#list>
5229
5230 <#return media>
5231</#function>
5232
5233
5234<#--------------------- Renderização de Lista de Cards ----------------------------------------------->
5235
5236<#-- Root Css -> Para poder instanciar dois elementos e não dar confusão no JS -->
5237<#assign rootCss = "card-news-list-container_" + randomNumber(4586) />
5238
5239<#attempt>
5240 <#assign ourEnergyStyles = [] />
5241 <#list ourEnergyVocabulary.getCategories() as ourEnergyCategory >
5242 <#assign shadowColorCategory = "" />
5243 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra")??)>
5244 <#assign categoryShadowColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra") />
5245 <#assign shadowColorCategory = categoryShadowColorByService.value />
5246 </#if>
5247
5248 <#assign backgroundColorCategory = "" />
5249 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo")??)>
5250 <#assign categoryBackgroundColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo") />
5251 <#assign backgroundColorCategory = categoryBackgroundColorByService.value />
5252 </#if>
5253
5254 <#assign textColorCategory = "" />
5255 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto")??)>
5256 <#assign categoryTextColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto") />
5257 <#assign textColorCategory = categoryTextColorByService.value />
5258 </#if>
5259
5260 <#assign textColorHighContrastCategory = "" />
5261 <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste")??)>
5262 <#assign categoryTextColorHighContrastByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste") />
5263 <#assign textColorHighContrastCategory = categoryTextColorHighContrastByService.value />
5264 </#if>
5265
5266 <#assign ourEnergyStyles += [{"titleLocale": ourEnergyCategory.getTitle(locale),"shadowColor": shadowColorCategory, "backgroundColor": backgroundColorCategory, "textColor": textColorCategory, "textColorHighContrast": textColorHighContrastCategory}] />
5267 </#list>
5268
5269 <#recover>
5270 <#assign ourEnergyStyles = [] />
5271
5272</#attempt>
5273
5274<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article -->
5275<#function getFirstCategoryTitleLocaleOfVocabulary journalArticle vocabulary >
5276 <#attempt>
5277 <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
5278
5279 <#list categories as category>
5280 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
5281 <#return category.getTitle(locale)>
5282 </#if>
5283 </#list>
5284
5285 <#return "">
5286
5287 <#recover>
5288 <#return "" />
5289
5290 </#attempt>
5291</#function>
5292
5293<#-- Função para obter os dados de um card no Web Content (Journal Article) -->
5294<#function getDataForCard entry >
5295 <#attempt>
5296 <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) />
5297 <#assign ddmStructure = journalArticle.getDDMStructure() />
5298 <#assign fieldList = getFieldListByStructure(ddmStructure) />
5299 <#assign xmlArticle = journalArticle.getDocument().getRootElement() />
5300
5301 <#-- Tentando pegar Imagem -->
5302 <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) />
5303 <#assign media = "" />
5304 <#list mediasGroup as mediaGroup >
5305 <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />
5306
5307 <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${media.fileEntryId}") />
5308
5309 <#assign urlAdaptativeMediaDesktop = ""/>
5310 <#assign urlAdaptativeMediaMobile = ""/>
5311 <#if media.url?? && media.url?has_content && fileDataRequest?? && fileDataRequest.adaptedImages?? >
5312 <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages />
5313 <#list dataAdaptativeMedia as data>
5314 <#if data.resolutionName == adaptativeMediaDesktopResolutionName>
5315 <#assign urlAdaptativeMediaDesktop = data.contentUrl/>
5316 </#if>
5317 <#if data.resolutionName == adaptativeMediaMobileResolutionName>
5318 <#assign urlAdaptativeMediaMobile = data.contentUrl/>
5319 </#if>
5320 </#list>
5321 </#if>
5322 <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "imageFileEntryId": media.fileEntryId, "urlAdaptativeMedia": {"mobile": urlAdaptativeMediaMobile, "desktop": urlAdaptativeMediaDesktop}} />
5323
5324 <#-- Se não tiver imagem, tentar pegar vídeo -->
5325 <#if !media.imageSrc?? || !media.imageSrc?has_content>
5326 <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") />
5327 <#if youtubeID?? && youtubeID?has_content>
5328 <#assign media = {"videoYotubeID": youtubeID} />
5329 <#else>
5330 <#-- Tentar pegar vídeo Interno -->
5331 <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) />
5332 <#if internalVideo?? && internalVideo?has_content>
5333 <#assign media = {"internalVideo": internalVideo} />
5334 </#if>
5335 </#if>
5336 </#if>
5337 </#list>
5338
5339 <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") />
5340
5341 <#assign timeRead = getFieldValue(fieldList, xmlArticle, "Tempo de Leitura") />
5342
5343 <#assign ourEnergyCategory = getFirstCategoryTitleLocaleOfVocabulary(entry, ourEnergyVocabulary) />
5344
5345 <#assign typeOfNews = getFirstCategoryTitleLocaleOfVocabulary(entry, typeOfNewsVocabulary) />
5346
5347 <#if themeDisplay.getPortalURL()?contains("webserver")>
5348 <#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()>
5349 <#else>
5350 <#assign urlNews = themeDisplay.getPortalURL() + "/w/" + journalArticle.getUrlTitle()>
5351 </#if>
5352
5353 <#assign cardData = {"media": media, "title": title, "timeRead": timeRead, "ourEnergyCategory": ourEnergyCategory, "typeOfNews": typeOfNews, "urlNews": urlNews} />
5354
5355 <#return cardData>
5356
5357 <#recover>
5358 <#return {} />
5359 </#attempt>
5360
5361 <#-- cardData -> image: url, alt
5362 title
5363 timeRead
5364 ourEnergyCategory
5365 typeOfNews
5366 urlNews
5367 -->
5368</#function>
5369
5370
5371<#-- Macro para renderizar os arrows-->
5372<#macro renderArrows>
5373 <div class="card-news-list-arrows-breakpoint">
5374 <div class="card-news-list-arrows">
5375 <div class="card-news-arrow-left arrow-disable">
5376 <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
5377 <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"/>
5378 <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"/>
5379 </svg>
5380 </div>
5381 <div class="card-news-arrow-right">
5382 <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
5383 <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"/>
5384 <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"/>
5385 </svg>
5386
5387 </div>
5388 </div>
5389 </div>
5390
5391 <style>
5392
5393 .${rootCss} .card-news-list-arrows-breakpoint {
5394 position: relative;
5395 z-index: 1;
5396 width: 100%;
5397 }
5398
5399 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows {
5400 display: flex;
5401 align-items: flex-start;
5402 justify-self: flex-end;
5403 gap: var(--space-xxs, 8px);
5404 }
5405
5406 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left,
5407 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right {
5408 cursor: pointer;
5409 }
5410
5411 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1),
5412 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) {
5413 fill: rgb(0, 133, 66);
5414 }
5415
5416 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),
5417 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) {
5418 fill: white;
5419 }
5420
5421 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2),
5422 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) {
5423 stroke: #fff;
5424 }
5425
5426 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),
5427 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) {
5428 stroke: #010101;
5429 }
5430
5431 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable,
5432 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable {
5433 opacity: 0.4;
5434 cursor: auto;
5435 }
5436
5437 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path,
5438 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path {
5439 stroke: rgb(0, 133, 66);
5440 transition: all 300ms ease-in-out;
5441 }
5442
5443 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path,
5444 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path {
5445 stroke: rgba(228, 247, 232, 1);
5446 }
5447
5448 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1),
5449 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) {
5450 stroke: rgb(149, 149, 149);
5451 }
5452
5453 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1),
5454 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) {
5455 stroke: rgba(215, 215, 215, 1);
5456 }
5457
5458 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2),
5459 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) {
5460 stroke: rgb(82, 82, 82);
5461 }
5462
5463 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2),
5464 body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) {
5465 stroke: rgba(149, 149, 149, 1);
5466 }
5467
5468 @media screen and (min-width: 1440px) {
5469 .${rootCss} .card-news-list-arrows-breakpoint {
5470 width: 100%;
5471 }
5472 }
5473
5474 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
5475
5476 .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows {
5477 justify-self: flex-start;
5478 margin-top: var(--space-lg);
5479 }
5480 }
5481
5482 </style>
5483
5484</#macro>
5485
5486
5487<#-- Macro para renderizar um Card -->
5488<#macro renderCard cardData>
5489 <#-- cardData -> image: url, alt
5490 title
5491 timeRead
5492 ourEnergyCategory
5493 typeOfNews
5494 urlNews
5495 -->
5496
5497 <div class="card-news-container">
5498 <a class="news-page-see-more-link card-news-link" href="${cardData.urlNews}"> Link da Notícia ${cardData.title} </a>
5499 <div class="card-news-thumb">
5500 <#assign noImage = "" />
5501 <#if cardData.media.imageSrc?? && cardData.media.imageSrc?has_content>
5502 <#assign imageSrcDesktop = cardData.media.imageSrc />
5503 <#assign imageSrcMobile = cardData.media.imageSrc />
5504 <#if cardData.media.urlAdaptativeMedia?? && cardData.media.urlAdaptativeMedia?has_content>
5505 <#assign imageSrcDesktop = cardData.media.urlAdaptativeMedia.desktop />
5506 <#assign imageSrcMobile = cardData.media.urlAdaptativeMedia.mobile />
5507 </#if>
5508 <picture >
5509 <source media="(max-width:767px)" srcset="${imageSrcMobile}">
5510 <img class="card-news-image" loading="lazy" src="${imageSrcDesktop}" alt="${cardData.media.imageAlt}"/>
5511 </picture>
5512 <#else>
5513 <#if cardData.media.videoYotubeID?? && cardData.media.videoYotubeID?has_content>
5514 <picture >
5515 <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/mqdefault.jpg">
5516 <img class="card-news-image" loading="lazy" src="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/maxresdefault.jpg" alt="YouTube Thumbnail"/>
5517 </picture>
5518 <#else>
5519 <#if (cardData.media.internalVideo?? && cardData.media.internalVideo.url?has_content) >
5520 <video class="card-news-image" loading="lazy">
5521 <source src="${cardData.media.internalVideo.url}">
5522 Your browser does not support the video tag.
5523 </video>
5524 <#else>
5525 <#assign noImage = "no-image" />
5526 </#if>
5527 </#if>
5528 <svg class="thumb-play-icon" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
5529 <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"/>
5530 <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"/>
5531 </svg>
5532 </#if>
5533 </div>
5534
5535 <div class="card-news-category-container ${noImage}">
5536 <div data-category="${cardData.ourEnergyCategory}" class="card-news-category paragraph-micro-regular"> ${cardData.ourEnergyCategory} </div>
5537 </div>
5538
5539 <div class="card-news-text-content ${noImage}">
5540 <div class="card-news-title h5"> ${cardData.title} </div>
5541
5542 <div class="card-news-info">
5543 <div class="card-news-type">
5544 <#if getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default(""))?? >
5545 <#assign postTypeIconUrl = getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default("")) />
5546 <img src="${postTypeIconUrl}" loading="lazy" alt="post type icon" />
5547 <div class="card-news-type-text paragraph-micro-regular">${cardData.typeOfNews}</div>
5548 <#else/>
5549 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
5550 <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"/>
5551 </svg>
5552 <div class="card-news-type-text paragraph-micro-regular">Artigo</div>
5553 </#if>
5554 </div>
5555
5556 <#if cardData.timeRead?? && cardData.timeRead?has_content>
5557 <div class="card-news-time-read">
5558 <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">
5559 <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"/>
5560 </svg>
5561
5562 <div class="card-news-time-read-text paragraph-micro-regular">${cardData.timeRead} min</div>
5563 </div>
5564 </#if>
5565 </div>
5566 </div>
5567 </div>
5568</#macro>
5569
5570<style>
5571 .${rootCss} .card-news-container {
5572 width: 300px;
5573 height: 370px;
5574 display: flex;
5575 flex-direction: column;
5576 flex-shrink: 0;
5577 align-items: flex-start;
5578 border-radius: var(--border-radius-lg);
5579 border: var(--border-width-hairline) solid var(--border-card-default, #EEE);
5580 background: var(--background-surface-level-01, #FFF);
5581 box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12);
5582 overflow: hidden;
5583 scroll-snap-align: start;
5584 cursor: pointer;
5585 transition: border 300ms ease-in-out;
5586 text-decoration: none;
5587 position: relative;
5588 }
5589
5590 body.high-contrast-active .${rootCss} .card-news-container {
5591 border: var(--border-width-hairline) solid var(--border-card-default, #525252);
5592 background: var(--background-surface-level-01, #010101);
5593 }
5594
5595 .${rootCss} .card-news-container:hover {
5596 border: var(--border-width-hairline) solid rgb(0, 133, 66);
5597 }
5598
5599 body.high-contrast-active .${rootCss} .card-news-container:hover {
5600 border: var(--border-width-hairline) solid var(--border-card-default, #E4F7E8);
5601 }
5602
5603 .${rootCss} .card-news-container .card-news-link {
5604 position: absolute;
5605 top: 0;
5606 width: 100%;
5607 height: 100%;
5608 z-index: 1;
5609 opacity: 0;
5610 }
5611
5612 .${rootCss} .card-news-container .card-news-thumb {
5613 position: relative;
5614 }
5615
5616 .${rootCss} .card-news-container .card-news-image {
5617 width: 298px;
5618 height: 168px;
5619 object-fit: cover;
5620 }
5621
5622
5623 .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon {
5624 position: absolute;
5625 left: 50%;
5626 top: 50%;
5627 transform: translate(-50%, -50%);
5628 }
5629
5630 body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(1) {
5631 fill: black;
5632 }
5633
5634 body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(2) {
5635 fill: white;
5636 }
5637
5638 .${rootCss} .card-news-container .card-news-category-container {
5639 position: relative;
5640 }
5641
5642 .${rootCss} .card-news-container .card-news-category-container .card-news-category {
5643 display: flex;
5644 justify-content: center;
5645 align-items: center;
5646 padding: var(--space-micro) var(--space-xs);
5647 position: absolute;
5648 z-index: 2;
5649 left: var(--space-md);
5650 top: -13px;
5651 border-radius: var(--border-radius-pill);
5652 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);
5653 box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10);
5654 line-height: var(--line-height-lg, 144%);
5655 color: var(--default-sup-green-water, #006B65);
5656 white-space: nowrap;
5657 }
5658
5659 body.high-contrast-active .${rootCss} .card-news-container .card-news-category-container .card-news-category {
5660 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);
5661 color: var(--default-sup-green-water, #99E0DD);
5662 }
5663
5664 .${rootCss} .card-news-container .card-news-category-container.no-image .card-news-category {
5665 position: relative;
5666 top: 0;
5667 left: 0;
5668 margin-left: var(--space-md);
5669 margin-top: var(--space-md);
5670 }
5671
5672 .${rootCss} .card-news-container .card-news-text-content {
5673 display: flex;
5674 padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px);
5675 flex-direction: column;
5676 justify-content: space-between;
5677 align-items: flex-start;
5678 flex: 1 0 0;
5679 align-self: stretch;
5680 }
5681
5682 .${rootCss} .card-news-container .card-news-text-content.no-image {
5683 padding-top: var(--space-sm);
5684 }
5685
5686 .${rootCss} .card-news-container .card-news-text-content .card-news-title {
5687 display: -webkit-box;
5688 -webkit-box-orient: vertical;
5689 -webkit-line-clamp: 4;
5690 align-self: stretch;
5691 overflow: hidden;
5692 color: var(--text-primary-default, #373737);
5693 text-overflow: ellipsis;
5694 margin: 0;
5695 }
5696
5697 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-title {
5698 color: var(--text-primary-default, #FFF);
5699 }
5700
5701 .${rootCss} .card-news-container .card-news-text-content .card-news-info {
5702 display: flex;
5703 align-items: center;
5704 align-content: center;
5705 gap: var(--space-sm, 16px);
5706 align-self: stretch;
5707 flex-wrap: wrap;
5708 }
5709
5710 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type,
5711 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read {
5712 display: flex;
5713 align-items: center;
5714 gap: var(--space-xxs, 8px);
5715 }
5716
5717 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type path {
5718 stroke: #D7D7D7;
5719 }
5720
5721 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text,
5722 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text {
5723 color: var(--text-tertiary-default, #959595);
5724 line-height: var(--line-height-lg, 144%);
5725 }
5726
5727 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text,
5728 body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text {
5729 color: var(--text-tertiary-default, #EEE);
5730 }
5731
5732 .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read {
5733 transform: translateY(-0.5px);
5734 }
5735
5736 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 {
5737 fill: #D7D7D7;
5738 }
5739</style>
5740
5741<#assign maxNumberOfCards = 9/>
5742<#assign className = "com.liferay.journal.model.JournalArticle" />
5743<#assign classNameId = PortalUtil.getClassNameId(className) />
5744${AssetEntryQuery.setClassNameIds([classNameId]) }
5745${AssetEntryQuery.setEnd(maxNumberOfCards)}
5746
5747<#assign entries = []/>
5748<#assign ourEnergyCategoriesIds = getAllCategoryIdOfVocabulary(assetEntry, ourEnergyVocabulary) />
5749<#list ourEnergyCategoriesIds as ourEnergyCategoryId>
5750 ${AssetEntryQuery.setAllCategoryIds([ourEnergyCategoryId])}
5751 <#assign ents = AssetEntryQueryService.getEntries(AssetEntryQuery) />
5752 <#assign entries = entries + ents />
5753</#list>
5754
5755
5756<#-- Renderizar Lista de cards -->
5757<#if entries?has_content>
5758 <div class="${rootCss}">
5759 <div class="list-of-news-title breakpoint">
5760 <div class="list-of-news-title-col col-1-12 md-col-1-8 sm-col-1-4">
5761 <div class="list-title fragment_85017">
5762 <div class="petro-title">
5763 <h2 id="title" class="display-sm" style="color: var(--color-neutral-800)">
5764 <#if locale?lower_case == "pt_br"> Leia também <#else> Read also </#if>
5765 </h2>
5766 <div class="yellow-bar-container">
5767 <div class="yellow-bar bar-display-sm" style="background-color: var(--color-secondary-medium)"></div>
5768 <@renderArrows />
5769 </div>
5770 </div>
5771 </div>
5772 </div>
5773 </div>
5774
5775 <div class="card-news-list-breakpoint breakpoint">
5776 <div class="card-news-list col-1-12 md-col-1-8 sm-col-1-4">
5777 <#if entries?size gt maxNumberOfCards>
5778 <#assign entries = entries[0..maxNumberOfCards] />
5779 </#if>
5780 <#list entries as entry>
5781 <#if assetEntry.getClassPK() != entry.getClassPK() >
5782 <#assign cardData = getDataForCard(entry) />
5783 <@renderCard cardData/>
5784 </#if>
5785 </#list>
5786 </div>
5787 </div>
5788 </div>
5789</#if>
5790
5791
5792<style>
5793 .portlet {
5794 margin: 0;
5795 }
5796
5797 .${rootCss} {
5798 padding: var(--space-giant, 80px) 0;
5799 background: var(--background-surface-level-01, #FFF);
5800 width: 100%;
5801 position: relative;
5802 font-family: var(--font-family-base, "Petrobras Sans");
5803 display: flex;
5804 flex-direction: column;
5805 gap: var(--space-lg);
5806 }
5807
5808 body.high-contrast-active .${rootCss} {
5809 background: var(--background-surface-level-01, #010101);
5810 }
5811
5812 .${rootCss} .list-of-news-title {
5813 position: relative;
5814 z-index: 1;
5815 }
5816
5817 .${rootCss} body.high-contrast-active .fragment_614685 .petro-title .yellow-bar {
5818 background-color: #FFEEB3 !important;
5819 }
5820
5821 .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) {
5822 display: flex;
5823 }
5824
5825 .${rootCss} .card-news-list {
5826 display: flex;
5827 gap: var(--space-lg);
5828 overflow: auto;
5829 position: relative;
5830 z-index: 1;
5831 scroll-snap-type: x mandatory;
5832 scrollbar-width: none;
5833 }
5834
5835 .${rootCss} .card-news-list::-webkit-scrollbar {
5836 display: none;
5837 }
5838
5839 @media screen and (min-width: 1441px) {
5840 .${rootCss} .card-news-list-breakpoint {
5841 width: 100%;
5842 }
5843
5844 .${rootCss} .list-of-news-title {
5845 width: 100%;
5846 }
5847 }
5848
5849 @media screen and (max-width: 1024px) {
5850 .${rootCss} .fragment_614685 {
5851 padding: var(--space-xxl, 56px) 0;
5852 }
5853 }
5854
5855 @media screen and (max-width: 768px) {
5856 .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) {
5857 flex-direction: column;
5858 }
5859 }
5860
5861
5862</style>
5863
5864<#list ourEnergyStyles as ourEnergyStyle>
5865 <style>
5866 .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] {
5867 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;
5868 box-shadow: 0px 2px 6px 0px #${ourEnergyStyle.shadowColor} !important;
5869 color: #${ourEnergyStyle.textColor} !important;
5870 }
5871
5872 body.high-contrast-active .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] {
5873 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;
5874 color: #${ourEnergyStyle.textColorHighContrast} !important;
5875 }
5876
5877 </style>
5878</#list>
5879
5880<script>
5881
5882 function disableEnableArrow(arrow, scrollBar, maxDistance, direction)
5883 {
5884 if(direction === "left") {
5885 if (scrollBar.scrollLeft > 0) {
5886 arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable");
5887 }
5888 else {
5889 !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable");
5890 }
5891 }
5892 else if(direction === "right") {
5893 if (Math.ceil(scrollBar.scrollLeft + scrollBar.clientWidth) < maxDistance) {
5894 arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable");
5895 }
5896 else {
5897 !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable");
5898 }
5899 }
5900 }
5901
5902 function scrollCarousel()
5903 {
5904 const root = document.querySelector(".${rootCss}");
5905 if(root) {
5906 const scrollBar = root.querySelector(".${rootCss} .card-news-list");
5907 const gap = 32;// var(--space-lg);
5908 const stepLength = scrollBar.querySelector(".card-news-container").offsetWidth + gap;
5909 const arrowLeftBtn = root.querySelector(".card-news-arrow-left")
5910 const arrowRightBtn = root.querySelector(".card-news-arrow-right")
5911
5912 let maxDistance = scrollBar.scrollWidth;
5913
5914 arrowLeftBtn.addEventListener('click', () => {
5915 if (scrollBar.scrollLeft > 0) {
5916 scrollBar.scroll({
5917 left: scrollBar.scrollLeft - stepLength,
5918 behavior: "smooth",
5919 });
5920 }
5921 });
5922
5923 arrowRightBtn.addEventListener('click', () => {
5924 if (scrollBar.scrollLeft < maxDistance) {
5925 scrollBar.scroll({
5926 left: scrollBar.scrollLeft + stepLength,
5927 behavior: "smooth",
5928 });
5929 }
5930 });
5931
5932 scrollBar.addEventListener("scroll", ()=>{
5933 disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left");
5934 disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right");
5935 });
5936
5937 disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left");
5938 disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right");
5939
5940 }
5941 }
5942
5943 document.addEventListener('DOMContentLoaded', scrollCarousel);
5944
5945</script>
5946
5947<style>
5948
5949
5950.ptb-news__read-news .news-content .embed-responsive-youtube::before {
5951 padding-top: 0;
5952}
5953
5954.ptb-news__read-news .news-content .embed-responsive-liferay::before {
5955 padding-top: calc(9/16 *100% - 64px);
5956}
5957
5958.ptb-news__read-news .news-content .thumnail-play-button {
5959}
5960
5961.ptb-news__read-news .news-content .thumnail-play-button {
5962 position: relative;
5963 z-index: 100;
5964 height: 64px;
5965 width: 64px;
5966 background-repeat: no-repeat;
5967 top: calc(50%);
5968 left: calc(50% - 32px);
5969}
5970
5971
5972.ptb-news__read-news .news-content .thumnail-play-button-youtube {
5973 position: absolute;
5974 z-index: 100;
5975 height: 64px;
5976 width: 64px;
5977 background-repeat: no-repeat;
5978 top: calc(50% - 64px);
5979 left: calc(50% - 32px);
5980}
5981
5982.ptb-news__read-news .news-content .thumnail-play-button-liferay {
5983 position: relative;
5984 z-index: 100;
5985 height: 64px;
5986 width: 64px;
5987 top: calc(-50% + 32px);
5988 left: calc(50% - 32px);
5989 background-repeat: no-repeat;
5990}
5991
5992
5993 .ptb-news__read-news .news-content .embed-responsive-youtube img {
5994 width: 100%;
5995 height: 100%;
5996 }
5997
5998</style>
5999
6000 <script>
6001 <#assign createYoutubeThumbnails = "createYoutubeThumbnails_"+ randomNumber(5952) />
6002
6003 function ${createYoutubeThumbnails}(){
6004
6005 const newsContent = document.querySelector(".news-content");
6006
6007 const getYoutubeId = (youtubeUrl) => {
6008
6009 const url = new URL(youtubeUrl);
6010 const splittedPathName = url.pathname.split("/");
6011
6012 if (splittedPathName.length <= 0){
6013 return "";
6014 }
6015
6016 return splittedPathName[splittedPathName.length-1];
6017 };
6018
6019 window.addEventListener("resize", (event) => {
6020 const iframeList = newsContent.querySelectorAll('iframe');
6021 iframeList.forEach((iframe) => {
6022 const src = iframe.src;
6023 if (!src){
6024 return;
6025 }
6026
6027 const isYoutube = src.toLowerCase().includes("youtube");
6028 if (!isYoutube){
6029 return;
6030 }
6031
6032 const iframeParent = iframe.parentNode;
6033
6034 const thumbnail = iframeParent.querySelector("img");
6035 if (thumbnail){
6036 // thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px";
6037 }
6038 });
6039
6040 });
6041
6042 const iframeList = newsContent.querySelectorAll('iframe');
6043 iframeList.forEach((iframe) => {
6044 const src = iframe.src;
6045 if (!src){
6046 return;
6047 }
6048
6049 const isYoutube = src.toLowerCase().includes("youtube");
6050 if (!isYoutube){
6051 return;
6052 }
6053
6054 const iframeParent = iframe.parentNode;
6055
6056 const thumbnail = document.createElement("img");
6057 thumbnail.src = 'https://img.youtube.com/vi/' + getYoutubeId(src) +'/hqdefault.jpg';
6058 thumbnail.alt = "Youtube";
6059 thumbnail.loading = "lazy";
6060 //thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px";
6061
6062 const playButton = document.createElement("div");
6063 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")';
6064 playButton.classList.add("thumnail-play-button-youtube");
6065 const children = iframeParent.children;
6066
6067 if (children.length > 0) {
6068 iframeParent.insertBefore(thumbnail, children.firstChild);
6069 iframeParent.insertBefore(playButton, thumbnail);
6070 iframe.classList.add("hide");
6071 iframeParent.classList.add("embed-responsive-youtube");
6072 }
6073
6074 playButton.addEventListener("click", () => {
6075 thumbnail.click();
6076 });
6077
6078 thumbnail.addEventListener("click", () => {
6079 thumbnail.classList.add("hide");
6080 playButton.classList.add("hide");
6081 iframe.classList.remove("hide");
6082 iframeParent.classList.remove("embed-responsive-youtube");
6083 const url = new URL(src);
6084 const searchParams = url.searchParams;
6085 searchParams.set("rel", "0");
6086 //searchParams.set("modestbranding", "0");
6087 //searchParams.set("mute", "0");
6088 //searchParams.set("color", "white");
6089 searchParams.set("controls", "1");
6090 //searchParams.set("playsinline", "1");
6091 //searchParams.set("enablejsapi", "1");
6092 searchParams.set("autoplay", "1");
6093 //searchParams.set("logo", "0");
6094 iframeParent.setAttribute("data-embed-id", url.toString());
6095 iframe.setAttribute("src", url.toString());
6096 });
6097 });
6098
6099 }
6100
6101 ${createYoutubeThumbnails}();
6102
6103 <#assign createLRThumbnails = "createLRThumbnails"+ randomNumber(5952) />
6104
6105 function ${createLRThumbnails}(){
6106
6107 const newsContent = document.querySelector(".news-content");
6108 const iframeList = newsContent.querySelectorAll("iframe[data-video-liferay]");
6109
6110 iframeList.forEach(iframe => {
6111
6112 const playButton = document.createElement("div");
6113 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")';
6114 playButton.classList.add("thumnail-play-button-liferay");
6115 const children = iframe.parentNode.children;
6116 if (children.length > 0) {
6117 iframe.parentNode.insertBefore(playButton, children.firstChild);
6118 }
6119
6120 iframe.addEventListener("load", () => {
6121 if (iframe.contentDocument){
6122 const video = iframe.contentDocument.body.querySelector("video");
6123 video.removeAttribute("controls");
6124 }
6125 });
6126
6127 iframe.parentNode.classList.add("embed-responsive-liferay");
6128
6129
6130 playButton.addEventListener("click", () => {
6131 playButton.classList.add("hide");
6132 playButton.classList.remove("thumnail-play-button-liferay");
6133 iframe.parentNode.classList.remove("embed-responsive-liferay");
6134 if (iframe.contentDocument){
6135 const video = iframe.contentDocument.body.querySelector("video");
6136 video.setAttribute("controls", "");
6137 video.play();
6138 }
6139 });
6140 });
6141 }
6142
6143 ${createLRThumbnails}();
6144
6145 document.querySelectorAll(".news-content img").forEach(img => img.loading = "lazy");
6146
6147 </script>
Escolha um Canal:
Navegue nas Seções:
Acessibilidade
Idioma:
Selecione um idioma: