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