@rededor/site-front-end-lib 20.0.13 → 20.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/algolia-search/index.d.ts +2 -0
- package/components/footer/index.d.ts +2 -1
- package/components/header/index.d.ts +2 -1
- package/core/index.d.ts +1 -0
- package/fesm2022/rededor-site-front-end-lib-components-algolia-search.mjs +5 -2
- package/fesm2022/rededor-site-front-end-lib-components-algolia-search.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-components-footer.mjs +49 -2
- package/fesm2022/rededor-site-front-end-lib-components-footer.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-components-header.mjs +123 -3
- package/fesm2022/rededor-site-front-end-lib-components-header.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-components-page-header.mjs +3 -3
- package/fesm2022/rededor-site-front-end-lib-components-page-header.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-core.mjs +7 -5
- package/fesm2022/rededor-site-front-end-lib-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rededor-site-front-end-lib-core.mjs","sources":["../../../projects/site-front-end-lib/core/tokens/LibConfig.ts","../../../projects/site-front-end-lib/core/tokens/express.tokens.ts","../../../projects/site-front-end-lib/core/services/phone/phone.service.ts","../../../projects/site-front-end-lib/core/helpers/executeWithRetry.func.ts","../../../projects/site-front-end-lib/core/services/modal/modal.service.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/formatPhone.func.ts","../../../projects/site-front-end-lib/core/directives/rdsite-phone-modal/rdsite-phone-modal.directive.ts","../../../projects/site-front-end-lib/core/directives/rdsite-link/rdsite-link.directive.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalDrawerComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/getSiteUrl.func.ts","../../../projects/site-front-end-lib/core/helpers/removeHtmlTags.func.ts","../../../projects/site-front-end-lib/core/helpers/check-safari-agent.func.ts","../../../projects/site-front-end-lib/core/helpers/getCircularReplacer.func.ts","../../../projects/site-front-end-lib/core/helpers/djb2Hash.func.ts","../../../projects/site-front-end-lib/core/services/log/log.service.ts","../../../projects/site-front-end-lib/core/helpers/toQueryParams.func.ts","../../../projects/site-front-end-lib/core/services/http-client/http-client.service.ts","../../../projects/site-front-end-lib/core/services/site-back-end/site-back-end.service.ts","../../../projects/site-front-end-lib/core/interceptors/error.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/log.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/transfer-state-url.interceptor.ts","../../../projects/site-front-end-lib/core/models/doenca-taxonomy.model.ts","../../../projects/site-front-end-lib/core/models/filters/filter-sections.model.ts","../../../projects/site-front-end-lib/core/services/error/error.service.ts","../../../projects/site-front-end-lib/core/services/mapbox/mapbox.service.ts","../../../projects/site-front-end-lib/core/services/geoloc/geoloc.service.ts","../../../projects/site-front-end-lib/core/services/modal-drawer/modal-drawer.service.ts","../../../projects/site-front-end-lib/core/services/privacy-tools/privacy-tools.service.ts","../../../projects/site-front-end-lib/core/services/seo/seo.service.ts","../../../projects/site-front-end-lib/core/services/server-response/server-response.service.ts","../../../projects/site-front-end-lib/core/services/ssr-response/ssr-response.service.ts","../../../projects/site-front-end-lib/core/rededor-site-front-end-lib-core.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\n\nexport interface LibConfig {\n production: boolean;\n environmentName: string;\n siteProject: string;\n server: boolean;\n siteName: string;\n siteUrl: string;\n siteSufix?: string;\n client_id: string;\n xOriginApplication: string;\n searchApiEnv: string;\n fallbackImgSrc: string;\n\n // Cura iconset\n iconsetDefaultList: string[];\n\n // site-back-end (SNF)\n siteApi: {\n auth: {\n user: string;\n password: string;\n };\n base: string;\n baseInternal: string;\n recaptcha: string;\n centroEstudos: string;\n };\n\n // Algolia Search\n algoliaConfig: {\n id: string;\n key: string;\n };\n\n // Wordpress\n wpUrl: string;\n\n // SEO\n keywords: string;\n logoPath?: string;\n\n // Mapbox\n mapboxAccessToken: string;\n mapboxSSRAccessToken: string;\n\n // rdsitelink custom anchor adjustment\n customAnchorAdjustment?: (document: Document) => number;\n customPhoneModalCondition?: (element: ElementRef<any>) => boolean;\n customInternalLinkNavigation?: (noBaseHref: string) => boolean;\n\n // rdsitelink navigation behavior\n forcePageReload?: boolean;\n\n // TransferState configuration\n transferState?: {\n includeHeaders?: string[];\n };\n}\n\n// Configura a lib com informações especificas de cada projeto.\nexport const LIB_CONFIG = new InjectionToken<LibConfig>('libConfig');\n","import { InjectionToken } from '@angular/core';\nimport type { Request, Response } from 'express';\n\nexport const REQUEST: InjectionToken<Request> = new InjectionToken<Request>('REQUEST');\nexport const RESPONSE: InjectionToken<Response> = new InjectionToken<Response>('RESPONSE');\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PhoneService {\n private document = inject<Document>(DOCUMENT);\n\n private telRegex = /tel:/;\n\n public phoneModalIsAllowed: boolean = true; // variavel utilizada para permitir/bloquear o modal de telefone\n\n /** Verifica se o 'href' é de telefone e se a janela está em tamanho desktop */\n public isPhoneModal(href: string) {\n const width = this.document.defaultView?.innerWidth ?? 0;\n const SMALL_BREAKPOINT = 718;\n return this.telRegex.test(href) && width > SMALL_BREAKPOINT;\n }\n}\n","/**\n * Executa uma função recursivamente até que uma condição seja atendida ou atinja o máximo de tentativas\n * @param fn - Função a ser executada quando a condição for atendida\n * @param condition - Função que retorna true quando a condição for satisfeita\n * @param maxTries - Número máximo de tentativas (padrão: 10)\n * @param delay - Delay entre tentativas em ms (padrão: 200)\n * @param currentTry - Contador interno de tentativas (padrão: 0)\n * @param args - Argumentos que serão passados para a função fn\n */\nexport function executeWithRetry<T extends any[]>(\n fn: (...args: T) => void,\n condition: () => boolean,\n maxTries: number = 10,\n delay: number = 200,\n currentTry: number = 0,\n ...args: T\n): void {\n if (!condition() && currentTry < maxTries) {\n setTimeout(() => {\n executeWithRetry(fn, condition, maxTries, delay, currentTry + 1, ...args);\n }, delay);\n } else {\n fn(...args);\n }\n}\n","import { Injectable, signal, TemplateRef } from '@angular/core';\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\n\nexport abstract class AbstractModalComponent {\n abstract id?: string;\n abstract modalTitle?: string | null;\n abstract modalHeader?: TemplateRef<any> | null;\n abstract modalContent: TemplateRef<any> | null;\n abstract modalContentContext: Record<string, any> | null;\n abstract modalActions?: TemplateRef<any> | null;\n abstract componentStyle?: any;\n abstract modal: HTMLDialogElement;\n abstract open(): void;\n abstract close(): void;\n abstract reset?(): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalService {\n reference: AbstractModalComponent | null = null;\n defaultPhoneModal!: TemplateRef<any>;\n\n firstInteraction = signal(false);\n maxTries = 10;\n delay = 200;\n\n open() {\n this.firstInteraction.set(true);\n executeWithRetry(\n () => {\n this.reference?.open();\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setReference(element: AbstractModalComponent) {\n this.reference = element;\n }\n\n setHeader(header: TemplateRef<any>) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalHeader = header;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setTitle(title: string) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalTitle = title;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setContent(content: TemplateRef<any>, context: Record<string, any> = {}) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalContent = content;\n this.reference.modalContentContext = context;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setActions(actions: TemplateRef<any>) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalActions = actions;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setStyle(style: RdsiteModalComponentStyle) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.componentStyle = style;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setDefaultPhoneModal(modal: TemplateRef<any>) {\n this.defaultPhoneModal = modal;\n }\n\n close() {\n executeWithRetry(\n () => this.reference?.close(),\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n}\n","export enum RdsiteModalComponentStyle {\n DEFAULT = 'default',\n ALERT = 'alert',\n LIGHT = 'light',\n DOCTORCARD = 'doctor-card',\n HOMESLIDE = 'home-slide',\n BASIC = 'basic',\n SHARING = 'sharing',\n FORMFALLBACK = 'form-fallback',\n FILTER = 'filter',\n FILTERDOENCAS = 'filter-doencas',\n PHOTOGALLERY = 'photo-gallery',\n}\n","export const formatPhone = (phone: string): string => {\n if (!phone) return '';\n\n const cleanPhone = phone.replace(/[^0-9]/gi, '');\n let formatedPhone = '';\n if (cleanPhone.length === 12) {\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\n } else if (cleanPhone.length === 11) {\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\n } else if (cleanPhone.length === 10) {\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{4})?(\\d{4})/, '($1) $2-$3');\n } else if (cleanPhone.length === 9) {\n formatedPhone = cleanPhone.replace(/(\\d{5})?(\\d{4})/, '$1-$2');\n } else if (cleanPhone.length === 8) {\n formatedPhone = cleanPhone.replace(/(\\d{4})?(\\d{4})/, '$1-$2');\n } else if (cleanPhone.length === 7) {\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{4})/, '$1-$2');\n } else {\n formatedPhone = cleanPhone;\n }\n return formatedPhone;\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, inject, model, PLATFORM_ID, TemplateRef } from '@angular/core';\nimport { PhoneService } from '../../services/phone/phone.service';\nimport { ModalService } from '../../services/modal/modal.service';\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\nimport { formatPhone } from '../../helpers/formatPhone.func';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[rdsitephonemodal]',\n})\nexport class RdsitePhoneModalDirective {\n private modalService = inject(ModalService);\n private platformId = inject(PLATFORM_ID);\n private element = inject(ElementRef<Element>);\n private phoneService = inject(PhoneService);\n\n rdsitephonemodal = model<TemplateRef<HTMLElement> | null>(null);\n\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\n\n // Intercepta cliques em telefones e aplica comportamentos diferentes em tamanho desktop.\n @HostListener('click', ['$event'])\n public onClick(event: Event) {\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName) || !this.phoneService.phoneModalIsAllowed)\n return;\n\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\n if (this.phoneService.isPhoneModal(href)) {\n this.openPhoneModal(event, href);\n }\n }\n\n public openPhoneModal(event: Event, href: string) {\n event.preventDefault();\n event.stopPropagation();\n this.modalService.setContent(this.rdsitephonemodal() || this.modalService.defaultPhoneModal, { phone: formatPhone(href) });\n this.modalService.setStyle(RdsiteModalComponentStyle.DEFAULT);\n this.modalService.open();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID, TemplateRef, DOCUMENT, input, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\nimport { PhoneService } from '../../services/phone/phone.service';\nimport { RdsitePhoneModalDirective } from '../rdsite-phone-modal/rdsite-phone-modal.directive';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[rdsitelink]',\n providers: [RdsitePhoneModalDirective],\n})\nexport class RdsiteLinkDirective {\n private router = inject(Router);\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private element = inject(ElementRef<any>);\n private phoneService = inject(PhoneService);\n private rdsitePhoneModalDirective = inject(RdsitePhoneModalDirective);\n private deviceDetectorService = inject(DeviceDetectorService);\n\n anchorAdjustment = input<number | null>(null);\n anchorExtraAdjustment = input<number | null>(null);\n phonemodal = input<TemplateRef<HTMLElement> | null>(null);\n\n private externalRegex = /^http:|https:|tel:|www\\.|mailto:/;\n private telRegex = /tel:/;\n private mailRegex = /mailto:/;\n private siteUrlList = ['rededorsaoluiz', 'rededorlabs'];\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\n\n @HostListener('click', ['$event'])\n public onClick(event: Event) {\n event.preventDefault();\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName)) return;\n let href = this.element?.nativeElement?.getAttribute('href') ?? '';\n if (!href) return;\n\n href = this.verifyUtm(href);\n\n if (this.isPhone(href)) {\n this.phoneClicked({\n href,\n event,\n element: this.element,\n phonemodal: this.phonemodal(),\n });\n return;\n }\n\n const isMobile = this.deviceDetectorService.isMobile();\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\n\n if (this.isMail(href)) {\n const target = isMobile || deviceInfo.browser !== 'Chrome' ? '_self' : '_blank';\n window.open(href, target);\n return;\n }\n\n if (this.isExternalUrl(href)) {\n const target = this.isSiteUrl(href) ? '_self' : '_blank';\n window.open(href, target);\n return;\n }\n\n if (this.isAnchor(href)) {\n this.scrollToAnchor(href);\n return;\n }\n\n this.navigateTo(href);\n }\n\n private verifyUtm(href: string): string {\n if (!href.includes('/paciente')) return href;\n if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {\n const currentUrl = new URL(window.location.href);\n const utmParams = Array.from(currentUrl.searchParams.entries()).filter(([key]) => key.startsWith('utm_'));\n\n if (utmParams.length === 0) return href;\n\n const targetUrl = new URL(href);\n utmParams.forEach(([key, value]) => targetUrl.searchParams.set(key, value));\n\n return targetUrl.toString();\n } else {\n return href;\n }\n }\n\n private isPhone(href: string) {\n return this.telRegex.test(href);\n }\n\n private isMail(href: string) {\n return this.mailRegex.test(href);\n }\n\n private phoneClicked(value: { href: string; event: Event; element: ElementRef<any>; phonemodal: TemplateRef<HTMLElement> | null }) {\n const { href, event, element, phonemodal } = value;\n if (this.phoneService.isPhoneModal(href)) {\n this.setPhoneModal(element, phonemodal);\n this.rdsitePhoneModalDirective.openPhoneModal(event, href);\n } else {\n window.open(href, '_self');\n }\n }\n\n private setPhoneModal(element: ElementRef<any>, phonemodal: TemplateRef<HTMLElement> | null) {\n if (!this.phonemodal()) return;\n if (!this.libConfig?.customPhoneModalCondition) {\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\n return;\n }\n if (this.libConfig?.customPhoneModalCondition(element)) {\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\n }\n }\n\n private isExternalUrl(href: string) {\n return this.externalRegex.test(href);\n }\n\n private isSiteUrl(href: string) {\n const exception = '/paciente';\n return this.siteUrlList.find((url) => href.includes(url) && !href.includes(exception));\n }\n\n private isAnchor(href: string) {\n return href.includes('#');\n }\n\n private getAnchor(url: string): string {\n const hashIndex = url.indexOf('#');\n return hashIndex !== -1 ? url.substring(hashIndex) : '';\n }\n\n private scrollToAnchor(href: string) {\n if (href === '#') return;\n\n const anchor = this.getAnchor(href);\n\n if (isPlatformBrowser(this.platformId)) {\n const docElement = this.document.documentElement;\n let adjustment = 0;\n\n if (this.libConfig.customAnchorAdjustment) {\n adjustment = this.libConfig.customAnchorAdjustment(this.document);\n }\n\n if (this.anchorAdjustment()) {\n adjustment = this.anchorAdjustment()!;\n }\n\n if (this.anchorExtraAdjustment()) {\n adjustment += this.anchorExtraAdjustment()!;\n }\n\n const bodyTop = this.document?.body?.getBoundingClientRect()?.top ?? 0;\n const hrefTop = this.document?.querySelector<HTMLElement>(anchor)?.getBoundingClientRect()?.top ?? 0;\n const scrollTop = bodyTop * -1 + hrefTop - adjustment;\n docElement.scrollTo({ top: scrollTop, behavior: 'smooth' });\n }\n }\n\n private navigateTo(href: string) {\n const siteBasePath = this.libConfig.siteSufix ?? '';\n const siteBasePathNoSlash = siteBasePath.replace(/\\//g, '');\n let noBaseHref = href;\n if (href.startsWith(siteBasePathNoSlash)) {\n noBaseHref = href.replace(siteBasePathNoSlash, '');\n } else if (href.startsWith(siteBasePath)) {\n noBaseHref = href.replace(siteBasePath, '');\n }\n if (this.libConfig?.customInternalLinkNavigation && this.libConfig.customInternalLinkNavigation(noBaseHref)) {\n return;\n }\n\n const [path, query] = noBaseHref.split('?');\n const queryParams: Record<string, any> = {};\n if (query) {\n const queryArray = query.split('&');\n queryArray.forEach((q) => {\n const arr = q.split('=');\n queryParams[arr[0]] = arr[1];\n });\n }\n // Força reload da pagina\n if (this.libConfig?.forcePageReload) {\n const fullUrl = path + (query ? '?' + query : '');\n window.location.href = fullUrl;\n return;\n }\n\n this.router.navigate([path], { queryParams: queryParams });\n }\n}\n","export enum RdsiteModalDrawerComponentStyle {\n DEFAULT = 'default',\n DRAWERDOCTOR = 'doctor-card',\n FORMFALLBACK = 'form-fallback',\n FILTERDOENCAS = 'filter-doencas',\n PHOTOGALLERY = 'photo-gallery',\n}\n","const getSiteUrl = (siteUrl: string = '', siteSufix: string = ''): string => {\n const baseUrl = siteUrl.endsWith('/') ? siteUrl.substring(0, siteUrl.length - 1) : siteUrl;\n const baseSufix = siteSufix.endsWith('/') ? siteSufix.substring(0, siteSufix.length - 1) : siteSufix;\n return `${baseUrl}${baseSufix}`;\n};\n\nexport { getSiteUrl };\n","function removeHtmlTags(content: string): string {\n content = content.replace(/<.*?>/g, '');\n return content;\n}\n\nexport { removeHtmlTags };\n","const checkSafariAgent = (): boolean => {\n const safariAgent = navigator.userAgent.includes('Safari');\n const chromeAgent = navigator.userAgent.includes('Chrome');\n return !chromeAgent && safariAgent;\n};\nexport { checkSafariAgent };\n","/**\n * Função que retorna um replacer personalizado para o JSON.stringify que resolve problemas de estruturas circulares durante a serialização.\n */\nexport function getCircularReplacer(customOptions?: {\n ignoreKeys?: string[]; // Chaves específicas a serem sempre ignoradas (ex: ['_request', 'parent'])\n maxDepth?: number; // Profundidade máxima de objetos aninhados (opcional)\n}) {\n const seen = new WeakSet();\n const options = {\n ignoreKeys: customOptions?.ignoreKeys || [],\n maxDepth: customOptions?.maxDepth || 100,\n };\n\n let depth = 0;\n\n return (key: string, value: any) => {\n // Ignora chaves específicas configuradas\n if (options.ignoreKeys.includes(key)) {\n return undefined;\n }\n\n // Controle de profundidade (opcional)\n if (key === '') {\n depth = 0; // Reinicia a profundidade na raiz\n } else {\n depth += 1; // Incrementa apenas quando descer na hierarquia\n }\n\n if (depth > options.maxDepth) {\n return typeof value === 'object' ? '[Object]' : value;\n }\n\n // Lida com referências circulares\n if (typeof value === 'object' && value !== null) {\n // Se já vimos este objeto, é uma referência circular\n if (seen.has(value)) {\n return undefined; // Exclui valores circulares\n }\n // Adiciona o objeto ao conjunto de objetos vistos\n seen.add(value);\n }\n\n return value;\n };\n}\n","/**\n * Função de hash djb2 para gerar chaves numéricas únicas\n *\n * @param str - String para gerar hash\n * @returns Número hash único e positivo\n */\nexport const djb2Hash = (str: string): number => {\n let hash = 5381; // Valor inicial do djb2 original\n if (str.length === 0) return hash;\n\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) + hash + char; // hash * 33 + char\n hash = hash & hash; // Converte para 32bit integer\n }\n\n return Math.abs(hash);\n};\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser, Location } from '@angular/common';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LogService {\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private platformId = inject(PLATFORM_ID);\n private location = inject(Location);\n\n logMsg(msg: any, label?: string) {\n label = label ? `${label} ` : '';\n if (!isPlatformBrowser(this.platformId) || (isPlatformBrowser(this.platformId) && !this.libConfig?.production)) {\n console.log(`${label}${msg}`);\n }\n }\n\n logLoad(component?: string) {\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, 'LOAD');\n }\n\n log404(component?: string) {\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '404');\n }\n\n log500(component?: string) {\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '500');\n }\n\n getPageURL() {\n return `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`;\n }\n}\n","/**\n * Converte JSON para query string.\n * @param params JSON\n */\nexport function toQueryParams(params: any): string {\n return params\n ? `?${Object.keys(params)\n .map((key) => key + '=' + params[key])\n .join('&')}`\n : '';\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { Observable } from 'rxjs';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\n\n/* Adiciona os Headers necessários para funcionamento do site back-end */\n@Injectable({ providedIn: 'root' })\nexport class HttpClientService {\n private platformId = inject(PLATFORM_ID);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private http = inject(HttpClient);\n private deviceService = inject(DeviceDetectorService);\n\n get<T = any>(url: string): Observable<T> {\n const headers = this.getHeaders();\n return this.http.get<T>(url, { headers });\n }\n\n post<T = any>(url: string, data?: any): Observable<T> {\n const headers = this.getHeaders();\n return this.http.post<T>(url, data, { headers });\n }\n\n private getHeaders(): HttpHeaders {\n const baseHeaders = new HttpHeaders()\n .set('x-origin-application', this.libConfig.xOriginApplication)\n .set('x-origin-channel', this.getOriginChannel())\n .set('x-origin-device', this.getOriginDevice());\n\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\n return baseHeaders.append(\n 'authorization',\n 'Basic ' + Buffer.from(`${this.libConfig.siteApi.auth.user}:${this.libConfig.siteApi.auth.password}`).toString('base64'),\n );\n } else {\n return baseHeaders.append('client_id', this.libConfig.client_id);\n }\n }\n\n private getOriginChannel(): string {\n return this.deviceService.isDesktop() ? 'desktop' : 'mobile';\n }\n\n private getOriginDevice(): string {\n return `app-${this.deviceService.getDeviceInfo().os}`;\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\nimport { toQueryParams } from '../../helpers/toQueryParams.func';\nimport { HttpClientService } from '../http-client/http-client.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SiteBackendService {\n private httpClientService = inject(HttpClientService);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private platformId = inject(PLATFORM_ID);\n\n siteApiUrl: string;\n\n constructor() {\n this.siteApiUrl = this.getApiUrl();\n }\n\n private getApiUrl(): string {\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\n return this.libConfig.siteApi.baseInternal;\n }\n return this.libConfig.siteApi.base;\n }\n\n /**\n * GET para qualquer endpoint do back-end do site.\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\n * @param params - Parâmetros opcionais para a requisição.\n * @returns Observable que emite os dados retornados pelo back-end.\n */\n get<T = any>(path: string, params?: any): Observable<T> {\n return this.httpClientService.get<T>(`${this.siteApiUrl}${path}${toQueryParams(params)}`);\n }\n\n /**\n * POST para qualquer endpoint do back-end do site.\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\n * @param params - Parâmetros opcionais para a requisição.\n * @returns Observable que emite os dados retornados pelo back-end.\n */\n post<T = any>(path: string, params?: any): Observable<T> {\n return this.httpClientService.post<T>(`${this.siteApiUrl}${path}`, params);\n }\n}\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, catchError, throwError } from 'rxjs';\nimport { isPlatformBrowser } from '@angular/common';\nimport { LogService } from '../services/log/log.service';\nimport { SiteBackendService } from '../services/site-back-end/site-back-end.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorInterceptor implements HttpInterceptor {\n private logService = inject(LogService);\n private siteBackendService = inject(SiteBackendService);\n private platformId = inject(PLATFORM_ID);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const queryParams = req.params.keys().length ? `?${req.params.toString()}` : '';\n const requestUrl = `${req.url}${queryParams}`;\n return next.handle(req).pipe(\n catchError((error) => {\n this.logService.logMsg(`REQUEST ERROR => ${req.method} ${requestUrl}`, 'ERROR_INTERCEPTOR');\n\n if (isPlatformBrowser(this.platformId) && !req.url.includes('/log/error')) {\n const errorMessage = typeof error === 'string' ? error : error instanceof Error ? error.message : JSON.stringify(error);\n\n this.siteBackendService\n .post('log/error', {\n error: errorMessage,\n origin: window.location.href,\n url: req.urlWithParams,\n })\n .subscribe();\n }\n\n return throwError(() => error);\n }),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { differenceInMilliseconds } from 'date-fns';\nimport { v4 as uuidv4 } from 'uuid';\nimport { LogService } from '../services/log/log.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LogInterceptor implements HttpInterceptor {\n private logService = inject(LogService);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const requestId = uuidv4();\n const startTime = Date.now();\n const queryParams = req.params.keys().length ? `?${req.params.toString()}` : '';\n const requestUrl = `${req.url}${queryParams}`;\n\n this.logService.logMsg(`REQUEST ${requestId} => ${req.method} ${requestUrl}`, 'INTERCEPTOR');\n\n return next.handle(req).pipe(\n tap((response) => {\n const res = response as HttpResponse<any>;\n if (res?.status) {\n const elapsedTime = differenceInMilliseconds(Date.now(), startTime);\n this.logService.logMsg(\n `RESPONSE ${requestId} => ${req.method} ${requestUrl} | Duração: ${elapsedTime}ms | Status: ${res.status} - ${res.statusText} | Body: ${!!res.body}`,\n 'INTERCEPTOR',\n );\n }\n }),\n );\n }\n}\n","import { inject, Injectable, PLATFORM_ID, TransferState, makeStateKey, StateKey } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, tap, of } from 'rxjs';\nimport { isPlatformServer, isPlatformBrowser } from '@angular/common';\nimport { LIB_CONFIG } from '../tokens/LibConfig';\nimport { djb2Hash } from '../helpers/djb2Hash.func';\n\n/**\n * Cria uma chave numérica única para o cache\n * Gera um hash baseado em método + URL + parâmetros\n */\nfunction createCacheKey(req: HttpRequest<any>, url: string): string {\n const method = req.method;\n const params = req.params.toString();\n\n // Combina método, URL e parâmetros\n const keyString = [method, url, params].filter((part) => part.length > 0).join('::');\n\n // Gera hash numérico único\n const hashNumber = djb2Hash(keyString);\n\n return hashNumber.toString();\n}\n\n/**\n * Cria StateKey para o TransferState\n */\nfunction getTransferStateKey(req: HttpRequest<any>, url: string): StateKey<any> {\n const cacheKey = createCacheKey(req, url);\n return makeStateKey<any>(cacheKey);\n}\n\n/**\n * Interceptor para resolver o problema de TransferState com urls diferentes\n *\n * Problema: O SiteBackendService usa urls diferentes no server (baseInternal) e no client (base), fazendo com que o TransferState nativo do Angular não funcione corretamente.\n *\n * Solução:\n * - Server: Usa url interna, mas salva no TransferState baseado na url externa\n * - Client: Verifica TransferState usando url externa antes de fazer alguma requisição\n *\n * Dessa forma é possivel fazer o uso do TransferState mesmo com urls diferentes (\"baseInternal\" no server e \"base\" no client).\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TransferStateUrlInterceptor implements HttpInterceptor {\n private platformId = inject(PLATFORM_ID);\n private transferState = inject(TransferState);\n private libConfig = inject(LIB_CONFIG);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (isPlatformServer(this.platformId)) {\n return this.handleServerRequest(req, next);\n } else if (isPlatformBrowser(this.platformId)) {\n return this.handleClientRequest(req, next);\n }\n\n return next.handle(req);\n }\n\n /**\n * Filtra headers da resposta baseado na configuração no LibConfig\n */\n private filterHeaders(responseHeaders: any): Record<string, string> {\n const includeHeaders = this.libConfig.transferState?.includeHeaders;\n\n if (!includeHeaders || includeHeaders.length === 0) {\n return {};\n }\n\n // Filtra apenas os headers configurados\n const filteredHeaders: Record<string, string> = {};\n includeHeaders.forEach((headerName) => {\n const headerValue = responseHeaders.get(headerName.toLowerCase());\n if (headerValue) {\n filteredHeaders[headerName.toLowerCase()] = headerValue;\n }\n });\n\n return filteredHeaders;\n }\n\n private handleServerRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const siteApi = this.libConfig.siteApi;\n\n // Para urls internas\n if (req.url.startsWith(siteApi.baseInternal)) {\n const externalUrl = req.url.replace(siteApi.baseInternal, siteApi.base);\n const stateKey = getTransferStateKey(req, externalUrl);\n\n return next.handle(req).pipe(\n tap((event) => {\n if (event instanceof HttpResponse) {\n const filteredHeaders = this.filterHeaders(event.headers);\n\n // Salva no TransferState baseado na url externa\n this.transferState.set(stateKey, {\n body: event.body,\n status: event.status,\n statusText: event.statusText,\n headers: filteredHeaders,\n });\n }\n }),\n );\n }\n\n return next.handle(req);\n }\n\n private handleClientRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const siteApi = this.libConfig.siteApi;\n\n // Para urls externas\n if (req.url.startsWith(siteApi.base)) {\n const stateKey = getTransferStateKey(req, req.url);\n const cachedResponse = this.transferState.get(stateKey, null);\n\n if (cachedResponse) {\n this.transferState.remove(stateKey);\n\n // Retorna resposta do TransferState\n return of(\n new HttpResponse({\n body: cachedResponse.body,\n status: cachedResponse.status,\n statusText: cachedResponse.statusText,\n headers: cachedResponse.headers,\n }),\n );\n }\n }\n\n return next.handle(req);\n }\n}\n","export enum EnumDoencaTaxonomy {\n DOENCAS_CAT = 'doencas_cat',\n DOENCAS_TAG = 'doencas_tag',\n}\n\nexport enum EnumDoencaTaxonomyCat {\n DOENCA = 'doencas',\n SINTOMA = 'sintomas',\n}\n\nexport interface DoencaTaxonomy {\n id: number;\n name: string;\n slug: string;\n taxonomy: EnumDoencaTaxonomy;\n}\n\nexport interface TaxonomiasDoencasList {\n doencas_cat: DoencaTaxonomy[];\n doencas_tag: DoencaTaxonomy[];\n}\n","import { TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FilterOption, FilterSectionBase } from './filter-planos-convenios.model';\nimport { FilterControl } from './filter-section.type';\n\nexport enum FilterType {\n INPUT = 'input',\n SELECT = 'select',\n CHECKBOX_GROUP = 'checkbox-group',\n RADIO_GROUP = 'radio-group',\n CUSTOM = 'custom',\n}\n\n// Input\nexport interface InputFilterConfig {\n name: string;\n placeholder?: string;\n iconName?: string;\n control: FilterControl;\n options?: FilterOption[];\n}\n\n// Select\nexport interface SelectFilterConfig {\n name: string;\n label?: string;\n placeholder?: string;\n includeDefaultOption?: boolean;\n defaultOptionText?: string;\n control: FilterControl;\n options?: FilterOption[];\n}\n\n// Checkbox Group\nexport interface CheckboxGroupFilterConfig {\n name: string;\n title?: string;\n subtitle?: string;\n description?: string;\n control: FormControl<any[]>;\n options: FilterOption[];\n}\n\n// Radio Group\nexport interface RadioGroupFilterConfig {\n name: string;\n title?: string;\n control: FilterControl;\n options: FilterOption[];\n}\n\n// Custom\nexport interface CustomFilterConfig {\n template: TemplateRef<any>;\n control?: any;\n context?: any;\n options?: FilterOption[];\n count?: number;\n}\n\n// Interfaces completas por tipo\nexport interface InputFilterSection extends FilterSectionBase<FilterType.INPUT, InputFilterConfig> {}\nexport interface SelectFilterSection extends FilterSectionBase<FilterType.SELECT, SelectFilterConfig> {}\nexport interface CheckboxGroupFilterSection extends FilterSectionBase<FilterType.CHECKBOX_GROUP, CheckboxGroupFilterConfig> {}\nexport interface RadioGroupFilterSection extends FilterSectionBase<FilterType.RADIO_GROUP, RadioGroupFilterConfig> {}\nexport interface CustomFilterSection extends FilterSectionBase<FilterType.CUSTOM, CustomFilterConfig> {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CtaWrapper } from '../../models/cta-wrapper.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorService {\n ctas = new BehaviorSubject<CtaWrapper>({});\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { LogService } from '../log/log.service';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\n\nexport interface MapBoxGeocodingParams {\n autocomplete?: boolean;\n bbox?: string; // minLon, minLat, maxLon, maxLat\n country?: string; // country codes separated by commas\n fuzzyMatch?: boolean;\n language?: string;\n limit?: number; // default: 5, max: 10\n proximity?: string; // longitude, latitude\n routing?: boolean;\n // Types can be comma separated\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\n [propName: string]: any;\n}\n\nexport interface MapBoxReverseGeocodingParams {\n country?: string; // country codes separated by commas\n language?: string;\n limit?: number; // default: 5, max: 10\n reverseMode?: 'distance' | 'score';\n routing?: boolean;\n // Types can be comma separated\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\n [propName: string]: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapBoxService {\n private readonly http = inject(HttpClient);\n private readonly logService = inject(LogService);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private readonly platformId = inject(PLATFORM_ID);\n\n private mapboxAccessToken = this.libConfig.mapboxAccessToken;\n private mapboxSSRAccessToken = this.libConfig.mapboxSSRAccessToken;\n private mapboxApiUrl = 'https://api.mapbox.com';\n private geocodingEp = 'search/geocode/v6';\n\n /**\n * Busca geocalizada por nome do local.\n * Ex.: barra da tijuca, rio de janeiro - rio de janeiro, brasil\n * @param query nome de local para a busca\n * @param params parâmetros opcionais de busca e filtro\n */\n forwardGeocoding(query: string, params: MapBoxGeocodingParams = {}, logContext?: string): Observable<any> {\n this.logMapbox('forwardGeocoding', logContext);\n if (query.length >= 256) {\n return throwError(() => 'Query length exceeds 255 characters.');\n }\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/forward?q=${query}`;\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\n return this.http.get(url, { params, headers: this.getHeaders() });\n }\n\n /**\n * Busca local por longitude e latitude\n * @param lng formato longitude\n * @param lat formato latitude\n * @param params parâmetros opcionais de busca e filtro\n */\n reverseGeocoding(lng: string, lat: string, params: MapBoxReverseGeocodingParams = {}, logContext?: string): Observable<any> {\n this.logMapbox('reverseGeocoding', logContext);\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/reverse?longitude=${lng}&latitude=${lat}`;\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\n return this.http.get(url, { params });\n }\n\n private logMapbox(callerFunction: string, context = 'no-context') {\n const platform = isPlatformServer(this.platformId) ? 'server' : 'browser';\n this.logService.logMsg(`${platform} - ${callerFunction} - ${context}`, 'MAPBOX');\n }\n\n private getHeaders(): HttpHeaders {\n return new HttpHeaders().set('Referrer-Policy', 'origin');\n }\n}\n","import { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { MapBoxReverseGeocodingParams, MapBoxService } from '../mapbox/mapbox.service';\nimport { LogService } from '../log/log.service';\nimport { checkSafariAgent } from '../../helpers/check-safari-agent.func';\nimport { getCircularReplacer } from '../../helpers/getCircularReplacer.func';\n\nexport enum GeolocationPermissions {\n GRANTED = 'granted',\n PROMPT = 'prompt',\n DENIED = 'denied',\n}\n\nexport interface Geolocation {\n lat: number;\n lng: number;\n}\n\nexport interface Address {\n city: string;\n state: {\n name: string;\n shortCode: string;\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocService {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private mapboxService = inject(MapBoxService);\n private readonly logService = inject(LogService);\n\n private _mapboxGeocodingParams: MapBoxReverseGeocodingParams = {\n types: 'place',\n limit: 1,\n language: 'pt-BR',\n country: 'BR',\n };\n\n private _hasConsent = false;\n private _switchStatus = false;\n public get switchStatus(): boolean {\n return this._switchStatus;\n }\n private _address: Address | null = null;\n public get address(): Address | null {\n return this._address;\n }\n\n private _permission: PermissionState = GeolocationPermissions.PROMPT;\n public get permission(): PermissionState {\n return this._permission;\n }\n\n public geolocation: BehaviorSubject<Geolocation | null> = new BehaviorSubject<Geolocation | null>(null);\n public isChecked: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); // Emite true quando o geoloc está estável\n\n private _isSafariAgent: boolean = false;\n private _disableSwitch = false;\n public get disableSwitch(): boolean {\n return this._disableSwitch;\n }\n\n constructor() {\n if (isPlatformServer(this.platformId)) {\n this.isChecked.next(true);\n return;\n }\n\n this._isSafariAgent = checkSafariAgent();\n if (this._isSafariAgent) {\n this._hasConsent = this.checkACookieExists('geolocation_consent');\n this.initGeolocation(this._hasConsent);\n return;\n }\n\n navigator?.permissions\n ?.query({ name: 'geolocation' })\n .then((permission) => {\n this._permission = permission.state;\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\n\n permission.onchange = () => {\n this._permission = permission.state;\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\n };\n })\n .catch((error) => {\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\n this._permission = GeolocationPermissions.DENIED;\n this._disableSwitch = true;\n this.initGeolocation(false);\n });\n }\n\n initGeolocation(geolocAllowed = false): void {\n this._switchStatus = true;\n if (geolocAllowed) {\n this.getCurrentPosition().subscribe({\n next: (position) => {\n this._disableSwitch = false;\n this.setGeolocation(position);\n this.setConsentCookie(true, 3650);\n this._hasConsent = true;\n this._permission = GeolocationPermissions.GRANTED;\n },\n error: () => {\n if (this._permission === GeolocationPermissions.DENIED) {\n this._disableSwitch = true;\n this.setConsentCookie(false, 15);\n }\n this.geolocation.next(null);\n this._address = null;\n this._hasConsent = false;\n this._switchStatus = false;\n this.isChecked.next(true);\n },\n });\n } else {\n if (this.permission === GeolocationPermissions.DENIED) {\n this._disableSwitch = true;\n this.setConsentCookie(false, 15);\n }\n this.geolocation.next(null);\n this._address = null;\n this._hasConsent = false;\n this._switchStatus = false;\n this.isChecked.next(true);\n }\n }\n\n private getCurrentPosition(): Observable<GeolocationPosition> {\n return new Observable((observer) => {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n observer.next(position);\n observer.complete();\n },\n (error) => observer.error(error),\n { enableHighAccuracy: true },\n );\n });\n }\n\n private setGeolocation(position: GeolocationPosition): void {\n if (position) {\n if (position.coords.latitude === this.geolocation.value?.lat && position.coords.longitude === this.geolocation.value?.lng) return;\n\n this.geolocation.next({\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n });\n\n this.getMapboxAdress()\n .pipe(\n map((response) => {\n const city = response?.features[0]?.properties?.name;\n const state = {\n name: response?.features[0]?.properties?.context?.region?.name,\n shortCode: response?.features[0]?.properties?.context?.region?.region_code,\n };\n return { city, state };\n }),\n )\n .subscribe({\n next: (response) => {\n this._address = response;\n this._switchStatus = true;\n this.isChecked.next(true);\n },\n error: (error) => {\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\n this._switchStatus = false;\n this.geolocation.next(null);\n this._address = null;\n this.isChecked.next(true);\n },\n });\n } else {\n this.geolocation.next(null);\n this._address = null;\n this._switchStatus = false;\n this.isChecked.next(true);\n }\n }\n\n private getMapboxAdress(): Observable<any> {\n const lng = `${this.geolocation.value?.lng}`;\n const lat = `${this.geolocation.value?.lat}`;\n return this.mapboxService.reverseGeocoding(lng, lat, this._mapboxGeocodingParams, 'geolocalizacao.service getMapboxAdress');\n }\n\n checkACookieExists(name: string): boolean {\n if (isPlatformServer(this.platformId) || typeof this.document === 'undefined' || !this.document?.cookie) {\n return false;\n }\n return this.document.cookie\n .split(';')\n .map((item) => item.trim())\n .some((item) => item.trim().startsWith(name));\n }\n\n private setConsentCookie(status: boolean, days: number): void {\n if (this.getCookieValue('geolocation_consent') !== status.toString()) {\n const lifetime = new Date(Date.now() + days * 86400000).toUTCString();\n this.document.cookie = `geolocation_consent=${status}; path=/; expires=${lifetime}; SameSite=None; Secure`;\n }\n }\n\n private getCookieValue(prop: string): string {\n if (isPlatformBrowser(this.platformId)) {\n const value = this.document.cookie\n .split(';')\n .map((item) => item.trim())\n .find((item) => item.startsWith(`${prop}=`));\n\n return value ? value.slice(prop.length + 1) : '';\n }\n return '';\n }\n}\n","import { ElementRef, Injectable, TemplateRef, ModelSignal, signal } from '@angular/core';\nimport { RdsiteModalDrawerComponentStyle } from '../../enums/RdsiteModalDrawerComponentStyle.enum';\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\n\nexport abstract class AbstractModalDrawerComponent {\n abstract sheet: HTMLElement | null;\n abstract sheetContents: HTMLElement | null;\n abstract draggableArea: HTMLElement | null;\n abstract sheetHeight: number | null;\n abstract dragPosition: number | null;\n abstract maxHeight: number | null;\n abstract closeHeight: number | null;\n abstract rdsiteModalComponentStyle: any;\n abstract id: ModelSignal<string>;\n abstract modalContent: ModelSignal<ElementRef | TemplateRef<any>> | null;\n abstract componentStyle: ModelSignal<any>;\n abstract modal: HTMLDialogElement;\n abstract setSheetHeight(value: number): void;\n abstract setIsSheetShown(isShown: boolean): void;\n abstract openSheet(): void;\n abstract closeSheet(): void;\n abstract touchPosition(event: any): void;\n abstract onDragStart(event: any): void;\n abstract onDragMove(event: any): void;\n abstract onDragEnd(): void;\n abstract reset(): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalDrawerService {\n reference: AbstractModalDrawerComponent | null = null;\n\n firstInteraction = signal(false);\n maxTries = 10;\n delay = 200;\n\n open() {\n this.firstInteraction.set(true);\n executeWithRetry(\n () => {\n this.reference?.openSheet();\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setReference(element: AbstractModalDrawerComponent) {\n this.reference = element;\n }\n\n setContent(content: ElementRef | TemplateRef<any>) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalContent?.set(content);\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setStyle(style: RdsiteModalDrawerComponentStyle) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.componentStyle.set(style);\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setHeight(value: number) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.maxHeight = value;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n close() {\n executeWithRetry(\n () => {\n this.reference?.closeSheet();\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\nimport { PrivacyToolsConfigOptions, PrivacyToolsCookieBanner } from '../../models/privacy-tools/privacy-tools.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PrivacyToolsService {\n document = inject<Document>(DOCUMENT);\n platformId = inject(PLATFORM_ID);\n\n cookieBannerScriptId = 'PrivacyToolsScript';\n cookieBannerStyleId = 'PrivacyToolsStyle';\n cookieBannerScriptElement: HTMLScriptElement | null = null;\n configOptions: PrivacyToolsConfigOptions = {};\n cookieConsent: any = null;\n\n /* Config */\n public config(options: PrivacyToolsConfigOptions) {\n this.configOptions = options;\n }\n\n /* Setup cookie Banner */\n public setupCookieBanner(unidadeBasePath: string) {\n if (isPlatformBrowser(this.platformId)) {\n const banner = this.configOptions?.cookieBanners?.find((banner) => banner.basePath.includes(unidadeBasePath));\n\n if (banner) {\n this.addCookieBanner(banner);\n }\n }\n }\n\n public openCookieBanner() {\n if (this.cookieConsent && this.cookieBannerScriptElement) {\n this.cookieConsent.privacyToolsShowCookieNotice();\n }\n }\n\n /* Add cookie banner style and script */\n private addCookieBanner(banner: PrivacyToolsCookieBanner) {\n this.cookieBannerScriptElement = null;\n this.addCookieBannerStyle(banner.styleSrc);\n this.addCookieBannerScript(banner.scriptSrc);\n }\n\n /* Add cookie banner style. */\n public addCookieBannerStyle(src: string) {\n if (isPlatformServer(this.platformId)) return;\n\n this.document.getElementById('byRemovePortal')?.remove();\n\n const oldStyle = this.document.getElementById(this.cookieBannerStyleId);\n\n if (oldStyle) {\n oldStyle.remove();\n }\n\n const style = this.document.createElement('link');\n style.id = this.cookieBannerStyleId;\n style.rel = 'stylesheet';\n style.type = 'text/css';\n style.href = src;\n style.media = 'none';\n\n style.addEventListener('load', () => {\n style.media = 'all';\n });\n\n this.document.body.appendChild(style);\n }\n\n /* Add cookie banner script. */\n public addCookieBannerScript(src: string) {\n if (isPlatformServer(this.platformId) || typeof window === 'undefined') return;\n\n (window as any)['cookieconsent'] = null;\n\n const oldScript = this.document.getElementById(this.cookieBannerScriptId);\n\n if (oldScript) {\n oldScript.remove();\n }\n const script = this.document.createElement('script');\n script.id = this.cookieBannerScriptId;\n script.src = src;\n\n script.addEventListener('load', () => {\n this.cookieBannerScriptElement = script;\n this.cookieConsent = (window as any)['cookieconsent'];\n (window as any)['portalBanner']?.call();\n });\n\n this.document.body.appendChild(script);\n }\n}\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Location } from '@angular/common';\n\nimport * as he from 'he';\n\nimport { SocialMetaProperties } from '../../models/social-meta-properties.model';\nimport { BreadcrumbsItems } from '../../models/breadcrumbs/breadcrumbs-items.model';\nimport { BreadcrumbsJsonItem } from '../../models/breadcrumbs/breadcrumbs-json-item.model';\nimport { SeoData } from '../../models/seo/seo-data.model';\nimport { SeoUnidade } from '../../models/seo/seo-unidade.model';\nimport { WpPost } from '../../models/wordpress/post/post.model';\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\nimport { removeHtmlTags } from '../../helpers/removeHtmlTags.func';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SeoService {\n private title = inject(Title);\n private meta = inject(Meta);\n private location = inject(Location);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private document = inject<Document>(DOCUMENT);\n\n public separator = ' - ';\n public defaultTitle = 'Rede D’Or';\n public activeDescription!: string;\n public sameAs = [\n 'https://www.facebook.com/rededor/',\n 'https://www.instagram.com/rededor_oficial/',\n 'https://www.linkedin.com/company/rededor-saoluiz',\n 'https://twitter.com/rededor',\n ];\n public twitterUser = '@rededor';\n\n private canonicalTag!: HTMLLinkElement;\n private jsonTag!: HTMLScriptElement;\n private jsonTagId = 'seoJSON';\n private breadcrumbsJsonTag!: HTMLScriptElement;\n private breadcrumbsJsonTagId = 'breadcrumbsJSON';\n\n public unidade: any = null;\n public unidadeName: string = '';\n public unidadePath: string = '';\n public unidadeSlug: string = '';\n\n public customJsonType: any[] = [];\n\n public setFullSeo(data: SeoData) {\n this.setTitle(data.title.text, !!data.title.sub);\n this.setDescription(data.description);\n this.setCanonicalHref(data.canonical);\n this.setPageJson();\n this.setSocialTags(data.socialTags);\n }\n\n /**\n * Define tag description da página\n * @param content conteúdo da descrição <string>\n */\n public setDescription(content: string): SeoService {\n const descTag = this.meta.getTag(\"name='description'\");\n if (content) {\n content = he.decode(content);\n content = removeHtmlTags(content);\n } else {\n content = '';\n }\n this.activeDescription = content;\n const tagContent = { name: 'description', content };\n if (descTag) {\n this.meta.updateTag(tagContent);\n } else {\n this.meta.addTag(tagContent);\n }\n return this;\n }\n\n /**\n * Define meta tags para a página\n * @param tag nome da tag meta\n * @param content conteúdo da tag meta\n * @param type tipo de tag meta\n */\n public setMetaTag(tag: string, content: string, type = 'name') {\n const metatag = this.meta.getTag(`${type}='${tag}'`);\n content = he.decode(content);\n content = removeHtmlTags(content);\n const tagContent = {\n [type]: tag,\n content,\n };\n if (!metatag) {\n this.meta.addTag(tagContent);\n } else {\n this.meta.updateTag(tagContent);\n }\n return this;\n }\n\n /**\n * Remove meta tags da página\n * @param tag nome da tag meta\n * @param content conteúdo da tag meta\n * @param attr atributo da tag meta\n * @param type tipo de tag meta\n */\n public removeTag(tag: string, content: string, attr: string, type = 'name') {\n const metatag = this.meta.getTag(`${type}='${tag}'`);\n if (metatag) {\n this.meta.removeTag(`${attr}=${content}`);\n }\n return this;\n }\n\n /**\n * Define meta tags para Facebook\n * @param title título para o facebook\n * @param description descrição para o facebook\n * @param url url para definição do facebook\n * @param img imagem para definição no facebook\n */\n public setMetaFacebook(title: string, description: string, url: string, img: string | null = null) {\n this.setMetaTag('og:url', url, 'property');\n this.setMetaTag('og:title', title, 'property');\n this.setMetaTag('og:description', description, 'property');\n this.setMetaTag('og:type', 'website', 'property');\n this.setMetaTag('og:image', img ?? '', 'property');\n }\n\n /**\n * Define meta tags para Twitter\n * @param title título para o twitter\n * @param description descrição para o twitter\n * @param url url para o twitter\n * @param img imagem para definição no twitter\n */\n public setMetaTwitter(title: string, description: string, url: string, img: string | null = null) {\n this.setMetaTag('twitter:site', url, 'name');\n this.setMetaTag('twitter:title', title, 'name');\n this.setMetaTag('twitter:description', description, 'name');\n this.setMetaTag('twitter:image', img ?? '', 'name');\n }\n\n /**\n * Define tags de redes sociais (Twitter e Open Graph)\n * @param properties\n */\n setSocialTags(properties?: SocialMetaProperties) {\n const pagePath = this.location.path();\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n let defaultProperties: SocialMetaProperties = {\n twitterCard: 'summary',\n twitterSite: this.twitterUser,\n type: 'website',\n title: this.getTitle(),\n description: this.activeDescription || '',\n url: `${siteurl}${pagePath}`,\n image: this.libConfig?.logoPath ? `${siteurl}${this.libConfig.logoPath}` : 'https://www.rededorsaoluiz.com.br/assets/imgs/logo-rededor-blue.png',\n };\n if (properties) {\n defaultProperties = { ...defaultProperties, ...properties };\n }\n this.setMetaTag('twitter:card', defaultProperties.twitterCard || '', 'name')\n .setMetaTag('twitter:site', defaultProperties.twitterSite || '', 'name')\n .setMetaTag('og:type', defaultProperties.type || '', 'property')\n .setMetaTag('og:title', defaultProperties.title || '', 'property')\n .setMetaTag('og:description', defaultProperties.description || '', 'property')\n .setMetaTag('og:url', defaultProperties.url || '', 'property')\n .setMetaTag('og:image', defaultProperties.image || '', 'property');\n\n return this;\n }\n\n /**\n * Define título da página\n * @param title título da página <string>\n * @param sub Se é subsite acrescenta unidade <boolean>\n */\n public setTitle(title: string, sub = false) {\n if (title && title !== '') {\n title = he.decode(title);\n title = removeHtmlTags(title);\n if (sub) {\n title = he.decode(`${title}${this.separator}${this.unidadeName}`);\n }\n this.title.setTitle(title);\n }\n return this;\n }\n\n /** Obtem título atual da página */\n public getTitle(): string {\n return this.title.getTitle();\n }\n\n public set404Title(component: string = 'Default Component') {\n if (component && component !== '') {\n component = he.decode(component);\n component = removeHtmlTags(component);\n if (this.unidadeName) {\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\n }\n }\n const title = `Erro 404 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\n this.title.setTitle(title);\n return this;\n }\n\n public set500Title(component: string = 'Default Component') {\n if (component && component !== '') {\n component = he.decode(component);\n component = removeHtmlTags(component);\n if (this.unidadeName) {\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\n }\n }\n const title = `Erro 500 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\n this.title.setTitle(title);\n return this;\n }\n\n /** Cria tag script para JSON de breadcrumbs */\n private createBreadcrumbsJSONTag(): HTMLScriptElement {\n const tag: HTMLScriptElement = this.document.createElement('script');\n tag.id = this.breadcrumbsJsonTagId;\n tag.type = 'application/ld+json';\n this.document.head.appendChild(tag);\n this.breadcrumbsJsonTag = tag;\n return tag;\n }\n\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\n private getBreadcrumbsJSONTag(): HTMLScriptElement {\n const elements = this.document.head.children;\n let i: number;\n for (i = 0; i < elements.length; i++) {\n const elem = elements[i] as HTMLScriptElement;\n if (elem && elem.id === this.breadcrumbsJsonTagId) {\n return elem;\n }\n }\n return this.createBreadcrumbsJSONTag();\n }\n\n /** Define o JSON de breadcrumbs da página */\n public setBreadcrumbsJson(items: BreadcrumbsItems[]) {\n this.breadcrumbsJsonTag = this.getBreadcrumbsJSONTag();\n const json = {\n '@context': 'http://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: this.getJsonBreadcrumbItems(items),\n };\n this.breadcrumbsJsonTag.innerHTML = JSON.stringify(json);\n return this;\n }\n\n /** Converte itens do breadcrumb em itens do JSON */\n private getJsonBreadcrumbItems(items: BreadcrumbsItems[]): BreadcrumbsJsonItem[] {\n const jsonItems = [\n {\n '@type': 'ListItem',\n position: 1,\n item: { '@id': this.getBreadcrumbItemUrl(['/']), name: he.encode('Página Inicial') },\n } as BreadcrumbsJsonItem,\n ];\n items.forEach((item, i) => {\n const jsonItem: BreadcrumbsJsonItem = {\n '@type': 'ListItem',\n position: i + 2,\n item: { '@id': this.getBreadcrumbItemUrl(item?.url || []), name: he.encode(item.label) },\n };\n jsonItems.push(jsonItem);\n });\n return jsonItems;\n }\n\n /**\n * Monta a url do item de breadcrumb proveniente do array de urls\n * ou do caminho da própria página, conforme caso do último item.\n */\n private getBreadcrumbItemUrl(url: string[]): string {\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n if (!url || url.length <= 0) {\n const pagePath = this.location.path();\n return `${siteurl}${pagePath}`;\n }\n url = url.filter((u) => u !== this.unidadePath);\n const unidadePath = this.getUnidadePath();\n const fullPath = `${unidadePath}/${url.join('/').replace(/^\\/?/, '')}`;\n return `${siteurl}${fullPath}`.replace(/\\/$/, '');\n }\n\n /** Cria tag script para o JSON de SEO */\n private createJSONTag(): HTMLScriptElement {\n const tag: HTMLScriptElement = this.document.createElement('script');\n tag.id = this.jsonTagId;\n tag.type = 'application/ld+json';\n this.document.head.appendChild(tag);\n this.jsonTag = tag;\n return tag;\n }\n\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\n private getJSONTag(): HTMLScriptElement {\n const elements = this.document.head.children;\n let i: number;\n for (i = 0; i < elements.length; i++) {\n const elem = elements[i] as HTMLScriptElement;\n if (elem && elem.id === this.jsonTagId) {\n return elem;\n }\n }\n return this.createJSONTag();\n }\n\n /** Define JSON para SEO somente quando no servidor */\n public setPageJson() {\n this.jsonTag = this.getJSONTag();\n\n const baseGraph = [this.getOrgJson(), this.getWebsiteJson(), this.getWebpageJson()];\n\n const extendedGraph = this.customJsonType.length ? [...baseGraph, ...this.customJsonType] : baseGraph;\n\n this.customJsonType = [];\n\n const json = {\n '@context': 'http://schema.org',\n '@graph': extendedGraph,\n };\n\n this.jsonTag.innerHTML = JSON.stringify(json);\n\n return this;\n }\n\n /** Obtem JSON da Organização */\n private getOrgJson() {\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n return {\n '@type': 'Organization',\n '@id': `${siteurl}#organization`,\n name: this.defaultTitle,\n keywords: this.libConfig?.keywords,\n url: `${siteurl}`,\n sameAs: this.sameAs,\n };\n }\n\n /** Obtem JSON do Website (portal, unidades, etc) */\n private getWebsiteJson() {\n const unidadePath = this.getUnidadePath();\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n return {\n '@type': 'WebSite',\n '@id': `${siteurl}${unidadePath}#website`,\n url: `${siteurl}${unidadePath}`,\n name: this.unidadeName,\n keywords: this.libConfig?.keywords,\n };\n }\n\n /** Obtem Json da página */\n private getWebpageJson() {\n const unidadePath = this.getUnidadePath();\n const siteURL = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n const pagePath = `${siteURL}${this.location.path()}`;\n const desc = this.activeDescription ? this.activeDescription : '';\n return {\n '@type': 'WebPage',\n '@id': `${pagePath}#webpage`,\n url: pagePath,\n inLanguage: 'pt-BR',\n name: this.getTitle(),\n isPartOf: { '@id': `${siteURL}${unidadePath}#website` },\n about: { '@id': `${siteURL}#organization` },\n description: desc,\n };\n }\n\n private getUnidadePath() {\n let unidadePath = '';\n if (this.unidade && this.unidadePath) {\n unidadePath = this.unidade?.path === '/' ? '' : this.unidadePath?.substring(0, this.unidadePath?.length - 1);\n }\n return unidadePath;\n }\n\n /**\n * Obtém a URL canônica da página.\n * @returns A URL canônica da página.\n */\n public getCanonicalHref(): string {\n if (!this.canonicalTag) {\n this.canonicalTag = this.getCanonicalTag();\n }\n return this.canonicalTag.href;\n }\n\n /** Cria tag para links canonicals no head */\n private createCanonicalTag(): HTMLLinkElement {\n const tag = this.document.createElement('link');\n tag.setAttribute('rel', 'canonical');\n this.document.head.appendChild(tag);\n tag.setAttribute('href', this.document.URL);\n this.canonicalTag = tag;\n return tag;\n }\n\n /** Retorna tag para link canonical existe ou cria se não houver. */\n private getCanonicalTag(): HTMLLinkElement {\n const elements = this.document.head.children;\n let i: number;\n for (i = 0; i < elements.length; i++) {\n const elem = elements[i] as HTMLLinkElement;\n if (elem && elem.tagName === 'LINK' && elem.rel === 'canonical') {\n return elem;\n }\n }\n return this.createCanonicalTag();\n }\n\n /**\n * Define link canonical da página\n * @param url url canonical\n */\n public setCanonicalHref(url?: string) {\n if (!this.canonicalTag) {\n this.canonicalTag = this.getCanonicalTag();\n }\n\n let path = this.document.location.pathname;\n\n if (this.libConfig?.siteSufix && path.includes(this.libConfig?.siteSufix)) {\n path = path.replace(this.libConfig?.siteSufix, '');\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n\n const canonicalUrl = url && this.isCustomCanonical(url) ? url : `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${path}`;\n\n this.canonicalTag.setAttribute('href', canonicalUrl);\n return this;\n }\n\n /**\n * Verifica se a URL fornecida é um link canonical personalizado\n * @param url URL fornecida\n */\n public isCustomCanonical(url: string): boolean {\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n return url.startsWith(siteurl);\n }\n\n /**\n * Obtém uma url válida na aplicação proveniente de uma URL gerada\n * pelo plugin Yoast para canonical automático.\n * Ex.: https://wp.rededorsaoluiz.com.br/brasil/especialidades/cardiologia/\n * @param urlFromWpApi URL canonica gerada pelo Yoast Plugin.\n */\n toLocalCanonical(urlFromWpApi: string): string {\n const apiUrl = this.libConfig?.wpUrl ?? '';\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n const unidadeSlug = this.unidadeSlug;\n let converted = urlFromWpApi.replace(apiUrl, siteurl);\n if (unidadeSlug !== '/' && converted.includes(`/${unidadeSlug}/`)) {\n converted = converted.replace(`/${unidadeSlug}/`, `${this.unidadePath}`);\n }\n return converted;\n }\n\n getPostContent(post: WpPost): string {\n const content = post?.acf?.['rdsl_post_content'] ? post?.acf?.rdsl_post_content?.find((content: any) => content.acf_fc_layout === 'text_html') : null;\n return content?.content || post.content.rendered || '';\n }\n\n addArticleScript(post: WpPost, scriptName: string): void {\n const postContent = this.getPostContent(post);\n const postHeaderImage = post?.acf?.['rdsl_post_header_img']\n ? {\n url: post?.acf?.['rdsl_post_header_img'].url,\n width: post?.acf?.['rdsl_post_header_img'].width,\n height: post?.acf?.['rdsl_post_header_img'].height,\n }\n : null;\n\n const structuredData = {\n '@context': 'https://schema.org',\n '@type': 'Article',\n mainEntityOfPage: `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`,\n headline: post.title?.rendered,\n datePublished: post.date_gmt,\n publisher: {\n '@type': 'Organization',\n name: 'Rede D’Or',\n },\n description: post.title?.rendered,\n articleBody: removeHtmlTags(he.decode(postContent)),\n dateModified: post.modified_gmt,\n image: {\n '@type': 'ImageObject',\n url: postHeaderImage?.url || post.featured_media_path || '',\n height: postHeaderImage?.height || '',\n width: postHeaderImage?.width || '',\n },\n author: {\n '@type': 'Organization',\n name: 'Rede D’Or',\n },\n wordcount: postContent.split(' ').length,\n };\n\n const script = this.document.createElement('script');\n\n script.type = 'application/ld+json';\n script.id = scriptName;\n script.innerHTML = JSON.stringify(structuredData);\n\n this.document.head.appendChild(script);\n }\n\n removeArticleScript(scriptName: string): void {\n const script = this.document.getElementById(scriptName);\n script?.remove();\n }\n\n public setUnidade({ unidade = null, unidadeName = '', unidadePath = '', unidadeSlug = '' }: SeoUnidade) {\n this.unidade = unidade;\n this.unidadeName = unidadeName;\n this.unidadePath = unidadePath;\n this.unidadeSlug = unidadeSlug;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Response } from 'express';\nimport { RESPONSE } from '../../tokens/express.tokens';\n\nexport interface IServerResponseService {\n getHeader(key: string): string;\n setHeader(key: string, value: string): this;\n setHeaders(dictionary: { [key: string]: string }): this;\n appendHeader(key: string, value: string, delimiter?: string): this;\n setStatus(code: number, message?: string): this;\n setNotFound(message?: string): this;\n setError(message?: string): this;\n setRedirect(redirectParams?: { statusCode: number; message: string; url?: string }): this;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ServerResponseService implements IServerResponseService {\n private response = inject(RESPONSE, { optional: true });\n\n getHeader(key: string): string {\n if (this.response) {\n return this.response.getHeader(key) as string;\n }\n return '';\n }\n\n setHeader(key: string, value: string): this {\n if (this.response) {\n this.response.header(key, value);\n }\n return this;\n }\n\n appendHeader(key: string, value: string, delimiter = ','): this {\n if (this.response) {\n const current = this.getHeader(key);\n if (!current) {\n return this.setHeader(key, value);\n }\n const newValue = [...current.split(delimiter), value].filter((el, i, a) => i === a.indexOf(el)).join(delimiter);\n this.response.header(key, newValue);\n }\n return this;\n }\n\n setHeaders(dictionary: { [key: string]: string }): this {\n if (this.response) {\n Object.keys(dictionary).forEach((key) => this.setHeader(key, dictionary[key]));\n }\n return this;\n }\n\n setStatus(code: number, message?: string): this {\n if (this.response) {\n this.response.statusCode = code;\n if (message) {\n this.response.statusMessage = message;\n }\n }\n return this;\n }\n\n setNotFound(message = 'Não encontrado'): this {\n if (this.response) {\n this.response.statusCode = 404;\n this.response.statusMessage = message;\n }\n return this;\n }\n\n setUnauthorized(message = 'Não autorizado'): this {\n if (this.response) {\n this.response.statusCode = 401;\n this.response.statusMessage = message;\n }\n return this;\n }\n\n setError(message = 'Erro interno de servidor'): this {\n if (this.response) {\n this.response.statusCode = 500;\n this.response.statusMessage = message;\n }\n return this;\n }\n\n setRedirect(\n { statusCode, message, url }: { statusCode?: number; message?: string; url?: string } = {\n statusCode: 301,\n message: 'Redirecionado permanentemente',\n url: undefined,\n },\n ): this {\n if (this.response) {\n this.response.statusCode = statusCode || 301;\n this.response.statusMessage = message || 'Redirecionado permanentemente';\n if (url) {\n this.response.locals['redirectUrl'] = url; // Utilizado no ssr para redirect\n }\n }\n return this;\n }\n}\n\nexport type HttpCacheDirective = 'public' | 'private' | 'no-store' | 'no-cache' | 'must-revalidate' | 'no-transform' | 'proxy-revalidate';\n","import { Injectable, inject, RESPONSE_INIT } from '@angular/core';\n\nexport interface ISsrResponseService {\n setStatus(code: number, message?: string): this;\n setNotFound(message?: string): this;\n setError(message?: string): this;\n setRedirect(params?: { statusCode?: number; url?: string }): this;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SsrResponseService implements ISsrResponseService {\n private readonly responseInit = inject(RESPONSE_INIT, { optional: true });\n\n setStatus(code: number, message?: string): this {\n if (this.responseInit) {\n this.responseInit.status = code;\n if (message !== undefined) {\n this.responseInit.statusText = message;\n }\n }\n return this;\n }\n\n setNotFound(message = 'Não encontrado'): this {\n if (this.responseInit) {\n this.responseInit.status = 404;\n this.responseInit.statusText = message;\n }\n return this;\n }\n\n setError(message = 'Erro interno de servidor'): this {\n if (this.responseInit) {\n this.responseInit.status = 500;\n this.responseInit.statusText = message;\n }\n return this;\n }\n\n setRedirect(\n params: { statusCode?: number; url?: string } = {\n statusCode: 301,\n url: undefined,\n },\n ): this {\n if (this.responseInit && params.url) {\n this.responseInit.status = params.statusCode ?? 301;\n this.responseInit.statusText = params.statusCode === 302 ? 'Found' : 'Moved Permanently';\n const existingHeaders = this.responseInit.headers ? new Headers(this.responseInit.headers as HeadersInit) : new Headers();\n existingHeaders.set('Location', params.url);\n this.responseInit.headers = existingHeaders;\n }\n return this;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rededor-site-front-end-lib-core.mjs","sources":["../../../projects/site-front-end-lib/core/tokens/LibConfig.ts","../../../projects/site-front-end-lib/core/tokens/express.tokens.ts","../../../projects/site-front-end-lib/core/services/phone/phone.service.ts","../../../projects/site-front-end-lib/core/helpers/executeWithRetry.func.ts","../../../projects/site-front-end-lib/core/services/modal/modal.service.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/formatPhone.func.ts","../../../projects/site-front-end-lib/core/directives/rdsite-phone-modal/rdsite-phone-modal.directive.ts","../../../projects/site-front-end-lib/core/directives/rdsite-link/rdsite-link.directive.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalDrawerComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/getSiteUrl.func.ts","../../../projects/site-front-end-lib/core/helpers/removeHtmlTags.func.ts","../../../projects/site-front-end-lib/core/helpers/check-safari-agent.func.ts","../../../projects/site-front-end-lib/core/helpers/getCircularReplacer.func.ts","../../../projects/site-front-end-lib/core/helpers/djb2Hash.func.ts","../../../projects/site-front-end-lib/core/services/log/log.service.ts","../../../projects/site-front-end-lib/core/helpers/toQueryParams.func.ts","../../../projects/site-front-end-lib/core/services/http-client/http-client.service.ts","../../../projects/site-front-end-lib/core/services/site-back-end/site-back-end.service.ts","../../../projects/site-front-end-lib/core/interceptors/error.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/log.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/transfer-state-url.interceptor.ts","../../../projects/site-front-end-lib/core/models/doenca-taxonomy.model.ts","../../../projects/site-front-end-lib/core/models/filters/filter-sections.model.ts","../../../projects/site-front-end-lib/core/services/error/error.service.ts","../../../projects/site-front-end-lib/core/services/mapbox/mapbox.service.ts","../../../projects/site-front-end-lib/core/services/geoloc/geoloc.service.ts","../../../projects/site-front-end-lib/core/services/modal-drawer/modal-drawer.service.ts","../../../projects/site-front-end-lib/core/services/privacy-tools/privacy-tools.service.ts","../../../projects/site-front-end-lib/core/services/seo/seo.service.ts","../../../projects/site-front-end-lib/core/services/server-response/server-response.service.ts","../../../projects/site-front-end-lib/core/services/ssr-response/ssr-response.service.ts","../../../projects/site-front-end-lib/core/rededor-site-front-end-lib-core.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\n\nexport interface LibConfig {\n production: boolean;\n environmentName: string;\n siteProject: string;\n server: boolean;\n siteName: string;\n siteUrl: string;\n siteSufix?: string;\n skipDuplicationSufixRule: boolean;\n client_id: string;\n xOriginApplication: string;\n searchApiEnv: string;\n fallbackImgSrc: string;\n\n // Cura iconset\n iconsetDefaultList: string[];\n\n // site-back-end (SNF)\n siteApi: {\n auth: {\n user: string;\n password: string;\n };\n base: string;\n baseInternal: string;\n recaptcha: string;\n centroEstudos: string;\n };\n\n // Algolia Search\n algoliaConfig: {\n id: string;\n key: string;\n };\n\n // Wordpress\n wpUrl: string;\n\n // SEO\n keywords: string;\n logoPath?: string;\n\n // Mapbox\n mapboxAccessToken: string;\n mapboxSSRAccessToken: string;\n\n // rdsitelink custom anchor adjustment\n customAnchorAdjustment?: (document: Document) => number;\n customPhoneModalCondition?: (element: ElementRef<any>) => boolean;\n customInternalLinkNavigation?: (noBaseHref: string) => boolean;\n\n // rdsitelink navigation behavior\n forcePageReload?: boolean;\n\n // TransferState configuration\n transferState?: {\n includeHeaders?: string[];\n };\n}\n\n// Configura a lib com informações especificas de cada projeto.\nexport const LIB_CONFIG = new InjectionToken<LibConfig>('libConfig');\n","import { InjectionToken } from '@angular/core';\nimport type { Request, Response } from 'express';\n\nexport const REQUEST: InjectionToken<Request> = new InjectionToken<Request>('REQUEST');\nexport const RESPONSE: InjectionToken<Response> = new InjectionToken<Response>('RESPONSE');\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PhoneService {\n private document = inject<Document>(DOCUMENT);\n\n private telRegex = /tel:/;\n\n public phoneModalIsAllowed: boolean = true; // variavel utilizada para permitir/bloquear o modal de telefone\n\n /** Verifica se o 'href' é de telefone e se a janela está em tamanho desktop */\n public isPhoneModal(href: string) {\n const width = this.document.defaultView?.innerWidth ?? 0;\n const SMALL_BREAKPOINT = 718;\n return this.telRegex.test(href) && width > SMALL_BREAKPOINT;\n }\n}\n","/**\n * Executa uma função recursivamente até que uma condição seja atendida ou atinja o máximo de tentativas\n * @param fn - Função a ser executada quando a condição for atendida\n * @param condition - Função que retorna true quando a condição for satisfeita\n * @param maxTries - Número máximo de tentativas (padrão: 10)\n * @param delay - Delay entre tentativas em ms (padrão: 200)\n * @param currentTry - Contador interno de tentativas (padrão: 0)\n * @param args - Argumentos que serão passados para a função fn\n */\nexport function executeWithRetry<T extends any[]>(\n fn: (...args: T) => void,\n condition: () => boolean,\n maxTries: number = 10,\n delay: number = 200,\n currentTry: number = 0,\n ...args: T\n): void {\n if (!condition() && currentTry < maxTries) {\n setTimeout(() => {\n executeWithRetry(fn, condition, maxTries, delay, currentTry + 1, ...args);\n }, delay);\n } else {\n fn(...args);\n }\n}\n","import { Injectable, signal, TemplateRef } from '@angular/core';\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\n\nexport abstract class AbstractModalComponent {\n abstract id?: string;\n abstract modalTitle?: string | null;\n abstract modalHeader?: TemplateRef<any> | null;\n abstract modalContent: TemplateRef<any> | null;\n abstract modalContentContext: Record<string, any> | null;\n abstract modalActions?: TemplateRef<any> | null;\n abstract componentStyle?: any;\n abstract modal: HTMLDialogElement;\n abstract open(): void;\n abstract close(): void;\n abstract reset?(): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalService {\n reference: AbstractModalComponent | null = null;\n defaultPhoneModal!: TemplateRef<any>;\n\n firstInteraction = signal(false);\n maxTries = 10;\n delay = 200;\n\n open() {\n this.firstInteraction.set(true);\n executeWithRetry(\n () => {\n this.reference?.open();\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setReference(element: AbstractModalComponent) {\n this.reference = element;\n }\n\n setHeader(header: TemplateRef<any>) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalHeader = header;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setTitle(title: string) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalTitle = title;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setContent(content: TemplateRef<any>, context: Record<string, any> = {}) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalContent = content;\n this.reference.modalContentContext = context;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setActions(actions: TemplateRef<any>) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalActions = actions;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setStyle(style: RdsiteModalComponentStyle) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.componentStyle = style;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setDefaultPhoneModal(modal: TemplateRef<any>) {\n this.defaultPhoneModal = modal;\n }\n\n close() {\n executeWithRetry(\n () => this.reference?.close(),\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n}\n","export enum RdsiteModalComponentStyle {\n DEFAULT = 'default',\n ALERT = 'alert',\n LIGHT = 'light',\n DOCTORCARD = 'doctor-card',\n HOMESLIDE = 'home-slide',\n BASIC = 'basic',\n SHARING = 'sharing',\n FORMFALLBACK = 'form-fallback',\n FILTER = 'filter',\n FILTERDOENCAS = 'filter-doencas',\n PHOTOGALLERY = 'photo-gallery',\n}\n","export const formatPhone = (phone: string): string => {\n if (!phone) return '';\n\n const cleanPhone = phone.replace(/[^0-9]/gi, '');\n let formatedPhone = '';\n if (cleanPhone.length === 12) {\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\n } else if (cleanPhone.length === 11) {\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\n } else if (cleanPhone.length === 10) {\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{4})?(\\d{4})/, '($1) $2-$3');\n } else if (cleanPhone.length === 9) {\n formatedPhone = cleanPhone.replace(/(\\d{5})?(\\d{4})/, '$1-$2');\n } else if (cleanPhone.length === 8) {\n formatedPhone = cleanPhone.replace(/(\\d{4})?(\\d{4})/, '$1-$2');\n } else if (cleanPhone.length === 7) {\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{4})/, '$1-$2');\n } else {\n formatedPhone = cleanPhone;\n }\n return formatedPhone;\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, inject, model, PLATFORM_ID, TemplateRef } from '@angular/core';\nimport { PhoneService } from '../../services/phone/phone.service';\nimport { ModalService } from '../../services/modal/modal.service';\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\nimport { formatPhone } from '../../helpers/formatPhone.func';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[rdsitephonemodal]',\n})\nexport class RdsitePhoneModalDirective {\n private modalService = inject(ModalService);\n private platformId = inject(PLATFORM_ID);\n private element = inject(ElementRef<Element>);\n private phoneService = inject(PhoneService);\n\n rdsitephonemodal = model<TemplateRef<HTMLElement> | null>(null);\n\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\n\n // Intercepta cliques em telefones e aplica comportamentos diferentes em tamanho desktop.\n @HostListener('click', ['$event'])\n public onClick(event: Event) {\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName) || !this.phoneService.phoneModalIsAllowed)\n return;\n\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\n if (this.phoneService.isPhoneModal(href)) {\n this.openPhoneModal(event, href);\n }\n }\n\n public openPhoneModal(event: Event, href: string) {\n event.preventDefault();\n event.stopPropagation();\n this.modalService.setContent(this.rdsitephonemodal() || this.modalService.defaultPhoneModal, { phone: formatPhone(href) });\n this.modalService.setStyle(RdsiteModalComponentStyle.DEFAULT);\n this.modalService.open();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID, TemplateRef, DOCUMENT, input, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\nimport { PhoneService } from '../../services/phone/phone.service';\nimport { RdsitePhoneModalDirective } from '../rdsite-phone-modal/rdsite-phone-modal.directive';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[rdsitelink]',\n providers: [RdsitePhoneModalDirective],\n})\nexport class RdsiteLinkDirective {\n private router = inject(Router);\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private element = inject(ElementRef<any>);\n private phoneService = inject(PhoneService);\n private rdsitePhoneModalDirective = inject(RdsitePhoneModalDirective);\n private deviceDetectorService = inject(DeviceDetectorService);\n\n anchorAdjustment = input<number | null>(null);\n anchorExtraAdjustment = input<number | null>(null);\n phonemodal = input<TemplateRef<HTMLElement> | null>(null);\n\n private externalRegex = /^http:|https:|tel:|www\\.|mailto:/;\n private telRegex = /tel:/;\n private mailRegex = /mailto:/;\n private siteUrlList = ['rededorsaoluiz', 'rededorlabs'];\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\n\n @HostListener('click', ['$event'])\n public onClick(event: Event) {\n event.preventDefault();\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName)) return;\n let href = this.element?.nativeElement?.getAttribute('href') ?? '';\n if (!href) return;\n\n href = this.verifyUtm(href);\n\n if (this.isPhone(href)) {\n this.phoneClicked({\n href,\n event,\n element: this.element,\n phonemodal: this.phonemodal(),\n });\n return;\n }\n\n const isMobile = this.deviceDetectorService.isMobile();\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\n\n if (this.isMail(href)) {\n const target = isMobile || deviceInfo.browser !== 'Chrome' ? '_self' : '_blank';\n window.open(href, target);\n return;\n }\n\n if (this.isExternalUrl(href)) {\n const target = this.isSiteUrl(href) ? '_self' : '_blank';\n window.open(href, target);\n return;\n }\n\n if (this.isAnchor(href)) {\n this.scrollToAnchor(href);\n return;\n }\n\n this.navigateTo(href);\n }\n\n private verifyUtm(href: string): string {\n if (!href.includes('/paciente')) return href;\n if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {\n const currentUrl = new URL(window.location.href);\n const utmParams = Array.from(currentUrl.searchParams.entries()).filter(([key]) => key.startsWith('utm_'));\n\n if (utmParams.length === 0) return href;\n\n const targetUrl = new URL(href);\n utmParams.forEach(([key, value]) => targetUrl.searchParams.set(key, value));\n\n return targetUrl.toString();\n } else {\n return href;\n }\n }\n\n private isPhone(href: string) {\n return this.telRegex.test(href);\n }\n\n private isMail(href: string) {\n return this.mailRegex.test(href);\n }\n\n private phoneClicked(value: { href: string; event: Event; element: ElementRef<any>; phonemodal: TemplateRef<HTMLElement> | null }) {\n const { href, event, element, phonemodal } = value;\n if (this.phoneService.isPhoneModal(href)) {\n this.setPhoneModal(element, phonemodal);\n this.rdsitePhoneModalDirective.openPhoneModal(event, href);\n } else {\n window.open(href, '_self');\n }\n }\n\n private setPhoneModal(element: ElementRef<any>, phonemodal: TemplateRef<HTMLElement> | null) {\n if (!this.phonemodal()) return;\n if (!this.libConfig?.customPhoneModalCondition) {\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\n return;\n }\n if (this.libConfig?.customPhoneModalCondition(element)) {\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\n }\n }\n\n private isExternalUrl(href: string) {\n return this.externalRegex.test(href);\n }\n\n private isSiteUrl(href: string) {\n const exception = '/paciente';\n return this.siteUrlList.find((url) => href.includes(url) && !href.includes(exception));\n }\n\n private isAnchor(href: string) {\n return href.includes('#');\n }\n\n private getAnchor(url: string): string {\n const hashIndex = url.indexOf('#');\n return hashIndex !== -1 ? url.substring(hashIndex) : '';\n }\n\n private scrollToAnchor(href: string) {\n if (href === '#') return;\n\n const anchor = this.getAnchor(href);\n\n if (isPlatformBrowser(this.platformId)) {\n const docElement = this.document.documentElement;\n let adjustment = 0;\n\n if (this.libConfig.customAnchorAdjustment) {\n adjustment = this.libConfig.customAnchorAdjustment(this.document);\n }\n\n if (this.anchorAdjustment()) {\n adjustment = this.anchorAdjustment()!;\n }\n\n if (this.anchorExtraAdjustment()) {\n adjustment += this.anchorExtraAdjustment()!;\n }\n\n const bodyTop = this.document?.body?.getBoundingClientRect()?.top ?? 0;\n const hrefTop = this.document?.querySelector<HTMLElement>(anchor)?.getBoundingClientRect()?.top ?? 0;\n const scrollTop = bodyTop * -1 + hrefTop - adjustment;\n docElement.scrollTo({ top: scrollTop, behavior: 'smooth' });\n }\n }\n\n private navigateTo(href: string) {\n const siteBasePath = this.libConfig.siteSufix ?? '';\n const siteBasePathNoSlash = siteBasePath.replace(/\\//g, '');\n let noBaseHref = href;\n if (!this.libConfig?.skipDuplicationSufixRule) {\n if (href.startsWith(siteBasePathNoSlash)) {\n noBaseHref = href.replace(siteBasePathNoSlash, '');\n } else if (href.startsWith(siteBasePath)) {\n noBaseHref = href.replace(siteBasePath, '');\n }\n }\n if (this.libConfig?.customInternalLinkNavigation && this.libConfig.customInternalLinkNavigation(noBaseHref)) {\n return;\n }\n\n const [path, query] = noBaseHref.split('?');\n const queryParams: Record<string, any> = {};\n if (query) {\n const queryArray = query.split('&');\n queryArray.forEach((q) => {\n const arr = q.split('=');\n queryParams[arr[0]] = arr[1];\n });\n }\n // Força reload da pagina\n if (this.libConfig?.forcePageReload) {\n const fullUrl = path + (query ? '?' + query : '');\n window.location.href = fullUrl;\n return;\n }\n\n this.router.navigate([path], { queryParams: queryParams });\n }\n}\n","export enum RdsiteModalDrawerComponentStyle {\n DEFAULT = 'default',\n DRAWERDOCTOR = 'doctor-card',\n FORMFALLBACK = 'form-fallback',\n FILTERDOENCAS = 'filter-doencas',\n PHOTOGALLERY = 'photo-gallery',\n}\n","const getSiteUrl = (siteUrl: string = '', siteSufix: string = ''): string => {\n const baseUrl = siteUrl.endsWith('/') ? siteUrl.substring(0, siteUrl.length - 1) : siteUrl;\n const baseSufix = siteSufix.endsWith('/') ? siteSufix.substring(0, siteSufix.length - 1) : siteSufix;\n return `${baseUrl}${baseSufix}`;\n};\n\nexport { getSiteUrl };\n","function removeHtmlTags(content: string): string {\n content = content.replace(/<.*?>/g, '');\n return content;\n}\n\nexport { removeHtmlTags };\n","const checkSafariAgent = (): boolean => {\n const safariAgent = navigator.userAgent.includes('Safari');\n const chromeAgent = navigator.userAgent.includes('Chrome');\n return !chromeAgent && safariAgent;\n};\nexport { checkSafariAgent };\n","/**\n * Função que retorna um replacer personalizado para o JSON.stringify que resolve problemas de estruturas circulares durante a serialização.\n */\nexport function getCircularReplacer(customOptions?: {\n ignoreKeys?: string[]; // Chaves específicas a serem sempre ignoradas (ex: ['_request', 'parent'])\n maxDepth?: number; // Profundidade máxima de objetos aninhados (opcional)\n}) {\n const seen = new WeakSet();\n const options = {\n ignoreKeys: customOptions?.ignoreKeys || [],\n maxDepth: customOptions?.maxDepth || 100,\n };\n\n let depth = 0;\n\n return (key: string, value: any) => {\n // Ignora chaves específicas configuradas\n if (options.ignoreKeys.includes(key)) {\n return undefined;\n }\n\n // Controle de profundidade (opcional)\n if (key === '') {\n depth = 0; // Reinicia a profundidade na raiz\n } else {\n depth += 1; // Incrementa apenas quando descer na hierarquia\n }\n\n if (depth > options.maxDepth) {\n return typeof value === 'object' ? '[Object]' : value;\n }\n\n // Lida com referências circulares\n if (typeof value === 'object' && value !== null) {\n // Se já vimos este objeto, é uma referência circular\n if (seen.has(value)) {\n return undefined; // Exclui valores circulares\n }\n // Adiciona o objeto ao conjunto de objetos vistos\n seen.add(value);\n }\n\n return value;\n };\n}\n","/**\n * Função de hash djb2 para gerar chaves numéricas únicas\n *\n * @param str - String para gerar hash\n * @returns Número hash único e positivo\n */\nexport const djb2Hash = (str: string): number => {\n let hash = 5381; // Valor inicial do djb2 original\n if (str.length === 0) return hash;\n\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) + hash + char; // hash * 33 + char\n hash = hash & hash; // Converte para 32bit integer\n }\n\n return Math.abs(hash);\n};\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser, Location } from '@angular/common';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LogService {\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private platformId = inject(PLATFORM_ID);\n private location = inject(Location);\n\n logMsg(msg: any, label?: string) {\n label = label ? `${label} ` : '';\n if (!isPlatformBrowser(this.platformId) || (isPlatformBrowser(this.platformId) && !this.libConfig?.production)) {\n console.log(`${label}${msg}`);\n }\n }\n\n logLoad(component?: string) {\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, 'LOAD');\n }\n\n log404(component?: string) {\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '404');\n }\n\n log500(component?: string) {\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '500');\n }\n\n getPageURL() {\n return `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`;\n }\n}\n","/**\n * Converte JSON para query string.\n * @param params JSON\n */\nexport function toQueryParams(params: any): string {\n return params\n ? `?${Object.keys(params)\n .map((key) => key + '=' + params[key])\n .join('&')}`\n : '';\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { Observable } from 'rxjs';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\n\n/* Adiciona os Headers necessários para funcionamento do site back-end */\n@Injectable({ providedIn: 'root' })\nexport class HttpClientService {\n private platformId = inject(PLATFORM_ID);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private http = inject(HttpClient);\n private deviceService = inject(DeviceDetectorService);\n\n get<T = any>(url: string): Observable<T> {\n const headers = this.getHeaders();\n return this.http.get<T>(url, { headers });\n }\n\n post<T = any>(url: string, data?: any): Observable<T> {\n const headers = this.getHeaders();\n return this.http.post<T>(url, data, { headers });\n }\n\n private getHeaders(): HttpHeaders {\n const baseHeaders = new HttpHeaders()\n .set('x-origin-application', this.libConfig.xOriginApplication)\n .set('x-origin-channel', this.getOriginChannel())\n .set('x-origin-device', this.getOriginDevice());\n\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\n return baseHeaders.append(\n 'authorization',\n 'Basic ' + Buffer.from(`${this.libConfig.siteApi.auth.user}:${this.libConfig.siteApi.auth.password}`).toString('base64'),\n );\n } else {\n return baseHeaders.append('client_id', this.libConfig.client_id);\n }\n }\n\n private getOriginChannel(): string {\n return this.deviceService.isDesktop() ? 'desktop' : 'mobile';\n }\n\n private getOriginDevice(): string {\n return `app-${this.deviceService.getDeviceInfo().os}`;\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\nimport { toQueryParams } from '../../helpers/toQueryParams.func';\nimport { HttpClientService } from '../http-client/http-client.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SiteBackendService {\n private httpClientService = inject(HttpClientService);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private platformId = inject(PLATFORM_ID);\n\n siteApiUrl: string;\n\n constructor() {\n this.siteApiUrl = this.getApiUrl();\n }\n\n private getApiUrl(): string {\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\n return this.libConfig.siteApi.baseInternal;\n }\n return this.libConfig.siteApi.base;\n }\n\n /**\n * GET para qualquer endpoint do back-end do site.\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\n * @param params - Parâmetros opcionais para a requisição.\n * @returns Observable que emite os dados retornados pelo back-end.\n */\n get<T = any>(path: string, params?: any): Observable<T> {\n return this.httpClientService.get<T>(`${this.siteApiUrl}${path}${toQueryParams(params)}`);\n }\n\n /**\n * POST para qualquer endpoint do back-end do site.\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\n * @param params - Parâmetros opcionais para a requisição.\n * @returns Observable que emite os dados retornados pelo back-end.\n */\n post<T = any>(path: string, params?: any): Observable<T> {\n return this.httpClientService.post<T>(`${this.siteApiUrl}${path}`, params);\n }\n}\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, catchError, throwError } from 'rxjs';\nimport { isPlatformBrowser } from '@angular/common';\nimport { LogService } from '../services/log/log.service';\nimport { SiteBackendService } from '../services/site-back-end/site-back-end.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorInterceptor implements HttpInterceptor {\n private logService = inject(LogService);\n private siteBackendService = inject(SiteBackendService);\n private platformId = inject(PLATFORM_ID);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const queryParams = req.params.keys().length ? `?${req.params.toString()}` : '';\n const requestUrl = `${req.url}${queryParams}`;\n return next.handle(req).pipe(\n catchError((error) => {\n this.logService.logMsg(`REQUEST ERROR => ${req.method} ${requestUrl}`, 'ERROR_INTERCEPTOR');\n\n if (isPlatformBrowser(this.platformId) && !req.url.includes('/log/error')) {\n const errorMessage = typeof error === 'string' ? error : error instanceof Error ? error.message : JSON.stringify(error);\n\n this.siteBackendService\n .post('log/error', {\n error: errorMessage,\n origin: window.location.href,\n url: req.urlWithParams,\n })\n .subscribe();\n }\n\n return throwError(() => error);\n }),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { differenceInMilliseconds } from 'date-fns';\nimport { v4 as uuidv4 } from 'uuid';\nimport { LogService } from '../services/log/log.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LogInterceptor implements HttpInterceptor {\n private logService = inject(LogService);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const requestId = uuidv4();\n const startTime = Date.now();\n const queryParams = req.params.keys().length ? `?${req.params.toString()}` : '';\n const requestUrl = `${req.url}${queryParams}`;\n\n this.logService.logMsg(`REQUEST ${requestId} => ${req.method} ${requestUrl}`, 'INTERCEPTOR');\n\n return next.handle(req).pipe(\n tap((response) => {\n const res = response as HttpResponse<any>;\n if (res?.status) {\n const elapsedTime = differenceInMilliseconds(Date.now(), startTime);\n this.logService.logMsg(\n `RESPONSE ${requestId} => ${req.method} ${requestUrl} | Duração: ${elapsedTime}ms | Status: ${res.status} - ${res.statusText} | Body: ${!!res.body}`,\n 'INTERCEPTOR',\n );\n }\n }),\n );\n }\n}\n","import { inject, Injectable, PLATFORM_ID, TransferState, makeStateKey, StateKey } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, tap, of } from 'rxjs';\nimport { isPlatformServer, isPlatformBrowser } from '@angular/common';\nimport { LIB_CONFIG } from '../tokens/LibConfig';\nimport { djb2Hash } from '../helpers/djb2Hash.func';\n\n/**\n * Cria uma chave numérica única para o cache\n * Gera um hash baseado em método + URL + parâmetros\n */\nfunction createCacheKey(req: HttpRequest<any>, url: string): string {\n const method = req.method;\n const params = req.params.toString();\n\n // Combina método, URL e parâmetros\n const keyString = [method, url, params].filter((part) => part.length > 0).join('::');\n\n // Gera hash numérico único\n const hashNumber = djb2Hash(keyString);\n\n return hashNumber.toString();\n}\n\n/**\n * Cria StateKey para o TransferState\n */\nfunction getTransferStateKey(req: HttpRequest<any>, url: string): StateKey<any> {\n const cacheKey = createCacheKey(req, url);\n return makeStateKey<any>(cacheKey);\n}\n\n/**\n * Interceptor para resolver o problema de TransferState com urls diferentes\n *\n * Problema: O SiteBackendService usa urls diferentes no server (baseInternal) e no client (base), fazendo com que o TransferState nativo do Angular não funcione corretamente.\n *\n * Solução:\n * - Server: Usa url interna, mas salva no TransferState baseado na url externa\n * - Client: Verifica TransferState usando url externa antes de fazer alguma requisição\n *\n * Dessa forma é possivel fazer o uso do TransferState mesmo com urls diferentes (\"baseInternal\" no server e \"base\" no client).\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TransferStateUrlInterceptor implements HttpInterceptor {\n private platformId = inject(PLATFORM_ID);\n private transferState = inject(TransferState);\n private libConfig = inject(LIB_CONFIG);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (isPlatformServer(this.platformId)) {\n return this.handleServerRequest(req, next);\n } else if (isPlatformBrowser(this.platformId)) {\n return this.handleClientRequest(req, next);\n }\n\n return next.handle(req);\n }\n\n /**\n * Filtra headers da resposta baseado na configuração no LibConfig\n */\n private filterHeaders(responseHeaders: any): Record<string, string> {\n const includeHeaders = this.libConfig.transferState?.includeHeaders;\n\n if (!includeHeaders || includeHeaders.length === 0) {\n return {};\n }\n\n // Filtra apenas os headers configurados\n const filteredHeaders: Record<string, string> = {};\n includeHeaders.forEach((headerName) => {\n const headerValue = responseHeaders.get(headerName.toLowerCase());\n if (headerValue) {\n filteredHeaders[headerName.toLowerCase()] = headerValue;\n }\n });\n\n return filteredHeaders;\n }\n\n private handleServerRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const siteApi = this.libConfig.siteApi;\n\n // Para urls internas\n if (req.url.startsWith(siteApi.baseInternal)) {\n const externalUrl = req.url.replace(siteApi.baseInternal, siteApi.base);\n const stateKey = getTransferStateKey(req, externalUrl);\n\n return next.handle(req).pipe(\n tap((event) => {\n if (event instanceof HttpResponse) {\n const filteredHeaders = this.filterHeaders(event.headers);\n\n // Salva no TransferState baseado na url externa\n this.transferState.set(stateKey, {\n body: event.body,\n status: event.status,\n statusText: event.statusText,\n headers: filteredHeaders,\n });\n }\n }),\n );\n }\n\n return next.handle(req);\n }\n\n private handleClientRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const siteApi = this.libConfig.siteApi;\n\n // Para urls externas\n if (req.url.startsWith(siteApi.base)) {\n const stateKey = getTransferStateKey(req, req.url);\n const cachedResponse = this.transferState.get(stateKey, null);\n\n if (cachedResponse) {\n this.transferState.remove(stateKey);\n\n // Retorna resposta do TransferState\n return of(\n new HttpResponse({\n body: cachedResponse.body,\n status: cachedResponse.status,\n statusText: cachedResponse.statusText,\n headers: cachedResponse.headers,\n }),\n );\n }\n }\n\n return next.handle(req);\n }\n}\n","export enum EnumDoencaTaxonomy {\n DOENCAS_CAT = 'doencas_cat',\n DOENCAS_TAG = 'doencas_tag',\n}\n\nexport enum EnumDoencaTaxonomyCat {\n DOENCA = 'doencas',\n SINTOMA = 'sintomas',\n}\n\nexport interface DoencaTaxonomy {\n id: number;\n name: string;\n slug: string;\n taxonomy: EnumDoencaTaxonomy;\n}\n\nexport interface TaxonomiasDoencasList {\n doencas_cat: DoencaTaxonomy[];\n doencas_tag: DoencaTaxonomy[];\n}\n","import { TemplateRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FilterOption, FilterSectionBase } from './filter-planos-convenios.model';\nimport { FilterControl } from './filter-section.type';\n\nexport enum FilterType {\n INPUT = 'input',\n SELECT = 'select',\n CHECKBOX_GROUP = 'checkbox-group',\n RADIO_GROUP = 'radio-group',\n CUSTOM = 'custom',\n}\n\n// Input\nexport interface InputFilterConfig {\n name: string;\n placeholder?: string;\n iconName?: string;\n control: FilterControl;\n options?: FilterOption[];\n}\n\n// Select\nexport interface SelectFilterConfig {\n name: string;\n label?: string;\n placeholder?: string;\n includeDefaultOption?: boolean;\n defaultOptionText?: string;\n control: FilterControl;\n options?: FilterOption[];\n}\n\n// Checkbox Group\nexport interface CheckboxGroupFilterConfig {\n name: string;\n title?: string;\n subtitle?: string;\n description?: string;\n control: FormControl<any[]>;\n options: FilterOption[];\n}\n\n// Radio Group\nexport interface RadioGroupFilterConfig {\n name: string;\n title?: string;\n control: FilterControl;\n options: FilterOption[];\n}\n\n// Custom\nexport interface CustomFilterConfig {\n template: TemplateRef<any>;\n control?: any;\n context?: any;\n options?: FilterOption[];\n count?: number;\n}\n\n// Interfaces completas por tipo\nexport interface InputFilterSection extends FilterSectionBase<FilterType.INPUT, InputFilterConfig> {}\nexport interface SelectFilterSection extends FilterSectionBase<FilterType.SELECT, SelectFilterConfig> {}\nexport interface CheckboxGroupFilterSection extends FilterSectionBase<FilterType.CHECKBOX_GROUP, CheckboxGroupFilterConfig> {}\nexport interface RadioGroupFilterSection extends FilterSectionBase<FilterType.RADIO_GROUP, RadioGroupFilterConfig> {}\nexport interface CustomFilterSection extends FilterSectionBase<FilterType.CUSTOM, CustomFilterConfig> {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CtaWrapper } from '../../models/cta-wrapper.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorService {\n ctas = new BehaviorSubject<CtaWrapper>({});\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { LogService } from '../log/log.service';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\n\nexport interface MapBoxGeocodingParams {\n autocomplete?: boolean;\n bbox?: string; // minLon, minLat, maxLon, maxLat\n country?: string; // country codes separated by commas\n fuzzyMatch?: boolean;\n language?: string;\n limit?: number; // default: 5, max: 10\n proximity?: string; // longitude, latitude\n routing?: boolean;\n // Types can be comma separated\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\n [propName: string]: any;\n}\n\nexport interface MapBoxReverseGeocodingParams {\n country?: string; // country codes separated by commas\n language?: string;\n limit?: number; // default: 5, max: 10\n reverseMode?: 'distance' | 'score';\n routing?: boolean;\n // Types can be comma separated\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\n [propName: string]: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapBoxService {\n private readonly http = inject(HttpClient);\n private readonly logService = inject(LogService);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private readonly platformId = inject(PLATFORM_ID);\n\n private mapboxAccessToken = this.libConfig.mapboxAccessToken;\n private mapboxSSRAccessToken = this.libConfig.mapboxSSRAccessToken;\n private mapboxApiUrl = 'https://api.mapbox.com';\n private geocodingEp = 'search/geocode/v6';\n\n /**\n * Busca geocalizada por nome do local.\n * Ex.: barra da tijuca, rio de janeiro - rio de janeiro, brasil\n * @param query nome de local para a busca\n * @param params parâmetros opcionais de busca e filtro\n */\n forwardGeocoding(query: string, params: MapBoxGeocodingParams = {}, logContext?: string): Observable<any> {\n this.logMapbox('forwardGeocoding', logContext);\n if (query.length >= 256) {\n return throwError(() => 'Query length exceeds 255 characters.');\n }\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/forward?q=${query}`;\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\n return this.http.get(url, { params, headers: this.getHeaders() });\n }\n\n /**\n * Busca local por longitude e latitude\n * @param lng formato longitude\n * @param lat formato latitude\n * @param params parâmetros opcionais de busca e filtro\n */\n reverseGeocoding(lng: string, lat: string, params: MapBoxReverseGeocodingParams = {}, logContext?: string): Observable<any> {\n this.logMapbox('reverseGeocoding', logContext);\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/reverse?longitude=${lng}&latitude=${lat}`;\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\n return this.http.get(url, { params });\n }\n\n private logMapbox(callerFunction: string, context = 'no-context') {\n const platform = isPlatformServer(this.platformId) ? 'server' : 'browser';\n this.logService.logMsg(`${platform} - ${callerFunction} - ${context}`, 'MAPBOX');\n }\n\n private getHeaders(): HttpHeaders {\n return new HttpHeaders().set('Referrer-Policy', 'origin');\n }\n}\n","import { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { MapBoxReverseGeocodingParams, MapBoxService } from '../mapbox/mapbox.service';\nimport { LogService } from '../log/log.service';\nimport { checkSafariAgent } from '../../helpers/check-safari-agent.func';\nimport { getCircularReplacer } from '../../helpers/getCircularReplacer.func';\n\nexport enum GeolocationPermissions {\n GRANTED = 'granted',\n PROMPT = 'prompt',\n DENIED = 'denied',\n}\n\nexport interface Geolocation {\n lat: number;\n lng: number;\n}\n\nexport interface Address {\n city: string;\n state: {\n name: string;\n shortCode: string;\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeolocService {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private mapboxService = inject(MapBoxService);\n private readonly logService = inject(LogService);\n\n private _mapboxGeocodingParams: MapBoxReverseGeocodingParams = {\n types: 'place',\n limit: 1,\n language: 'pt-BR',\n country: 'BR',\n };\n\n private _hasConsent = false;\n private _switchStatus = false;\n public get switchStatus(): boolean {\n return this._switchStatus;\n }\n private _address: Address | null = null;\n public get address(): Address | null {\n return this._address;\n }\n\n private _permission: PermissionState = GeolocationPermissions.PROMPT;\n public get permission(): PermissionState {\n return this._permission;\n }\n\n public geolocation: BehaviorSubject<Geolocation | null> = new BehaviorSubject<Geolocation | null>(null);\n public isChecked: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); // Emite true quando o geoloc está estável\n\n private _isSafariAgent: boolean = false;\n private _disableSwitch = false;\n public get disableSwitch(): boolean {\n return this._disableSwitch;\n }\n\n constructor() {\n if (isPlatformServer(this.platformId)) {\n this.isChecked.next(true);\n return;\n }\n\n this._isSafariAgent = checkSafariAgent();\n if (this._isSafariAgent) {\n this._hasConsent = this.checkACookieExists('geolocation_consent');\n this.initGeolocation(this._hasConsent);\n return;\n }\n\n navigator?.permissions\n ?.query({ name: 'geolocation' })\n .then((permission) => {\n this._permission = permission.state;\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\n\n permission.onchange = () => {\n this._permission = permission.state;\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\n };\n })\n .catch((error) => {\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\n this._permission = GeolocationPermissions.DENIED;\n this._disableSwitch = true;\n this.initGeolocation(false);\n });\n }\n\n initGeolocation(geolocAllowed = false): void {\n this._switchStatus = true;\n if (geolocAllowed) {\n this.getCurrentPosition().subscribe({\n next: (position) => {\n this._disableSwitch = false;\n this.setGeolocation(position);\n this.setConsentCookie(true, 3650);\n this._hasConsent = true;\n this._permission = GeolocationPermissions.GRANTED;\n },\n error: () => {\n if (this._permission === GeolocationPermissions.DENIED) {\n this._disableSwitch = true;\n this.setConsentCookie(false, 15);\n }\n this.geolocation.next(null);\n this._address = null;\n this._hasConsent = false;\n this._switchStatus = false;\n this.isChecked.next(true);\n },\n });\n } else {\n if (this.permission === GeolocationPermissions.DENIED) {\n this._disableSwitch = true;\n this.setConsentCookie(false, 15);\n }\n this.geolocation.next(null);\n this._address = null;\n this._hasConsent = false;\n this._switchStatus = false;\n this.isChecked.next(true);\n }\n }\n\n private getCurrentPosition(): Observable<GeolocationPosition> {\n return new Observable((observer) => {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n observer.next(position);\n observer.complete();\n },\n (error) => observer.error(error),\n { enableHighAccuracy: true },\n );\n });\n }\n\n private setGeolocation(position: GeolocationPosition): void {\n if (position) {\n if (position.coords.latitude === this.geolocation.value?.lat && position.coords.longitude === this.geolocation.value?.lng) return;\n\n this.geolocation.next({\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n });\n\n this.getMapboxAdress()\n .pipe(\n map((response) => {\n const city = response?.features[0]?.properties?.name;\n const state = {\n name: response?.features[0]?.properties?.context?.region?.name,\n shortCode: response?.features[0]?.properties?.context?.region?.region_code,\n };\n return { city, state };\n }),\n )\n .subscribe({\n next: (response) => {\n this._address = response;\n this._switchStatus = true;\n this.isChecked.next(true);\n },\n error: (error) => {\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\n this._switchStatus = false;\n this.geolocation.next(null);\n this._address = null;\n this.isChecked.next(true);\n },\n });\n } else {\n this.geolocation.next(null);\n this._address = null;\n this._switchStatus = false;\n this.isChecked.next(true);\n }\n }\n\n private getMapboxAdress(): Observable<any> {\n const lng = `${this.geolocation.value?.lng}`;\n const lat = `${this.geolocation.value?.lat}`;\n return this.mapboxService.reverseGeocoding(lng, lat, this._mapboxGeocodingParams, 'geolocalizacao.service getMapboxAdress');\n }\n\n checkACookieExists(name: string): boolean {\n if (isPlatformServer(this.platformId) || typeof this.document === 'undefined' || !this.document?.cookie) {\n return false;\n }\n return this.document.cookie\n .split(';')\n .map((item) => item.trim())\n .some((item) => item.trim().startsWith(name));\n }\n\n private setConsentCookie(status: boolean, days: number): void {\n if (this.getCookieValue('geolocation_consent') !== status.toString()) {\n const lifetime = new Date(Date.now() + days * 86400000).toUTCString();\n this.document.cookie = `geolocation_consent=${status}; path=/; expires=${lifetime}; SameSite=None; Secure`;\n }\n }\n\n private getCookieValue(prop: string): string {\n if (isPlatformBrowser(this.platformId)) {\n const value = this.document.cookie\n .split(';')\n .map((item) => item.trim())\n .find((item) => item.startsWith(`${prop}=`));\n\n return value ? value.slice(prop.length + 1) : '';\n }\n return '';\n }\n}\n","import { ElementRef, Injectable, TemplateRef, ModelSignal, signal } from '@angular/core';\nimport { RdsiteModalDrawerComponentStyle } from '../../enums/RdsiteModalDrawerComponentStyle.enum';\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\n\nexport abstract class AbstractModalDrawerComponent {\n abstract sheet: HTMLElement | null;\n abstract sheetContents: HTMLElement | null;\n abstract draggableArea: HTMLElement | null;\n abstract sheetHeight: number | null;\n abstract dragPosition: number | null;\n abstract maxHeight: number | null;\n abstract closeHeight: number | null;\n abstract rdsiteModalComponentStyle: any;\n abstract id: ModelSignal<string>;\n abstract modalContent: ModelSignal<ElementRef | TemplateRef<any>> | null;\n abstract componentStyle: ModelSignal<any>;\n abstract modal: HTMLDialogElement;\n abstract setSheetHeight(value: number): void;\n abstract setIsSheetShown(isShown: boolean): void;\n abstract openSheet(): void;\n abstract closeSheet(): void;\n abstract touchPosition(event: any): void;\n abstract onDragStart(event: any): void;\n abstract onDragMove(event: any): void;\n abstract onDragEnd(): void;\n abstract reset(): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalDrawerService {\n reference: AbstractModalDrawerComponent | null = null;\n\n firstInteraction = signal(false);\n maxTries = 10;\n delay = 200;\n\n open() {\n this.firstInteraction.set(true);\n executeWithRetry(\n () => {\n this.reference?.openSheet();\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setReference(element: AbstractModalDrawerComponent) {\n this.reference = element;\n }\n\n setContent(content: ElementRef | TemplateRef<any>) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.modalContent?.set(content);\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setStyle(style: RdsiteModalDrawerComponentStyle) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.componentStyle.set(style);\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n setHeight(value: number) {\n executeWithRetry(\n () => {\n if (this.reference) {\n this.reference.maxHeight = value;\n }\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n\n close() {\n executeWithRetry(\n () => {\n this.reference?.closeSheet();\n },\n () => !!this.reference,\n this.maxTries,\n this.delay,\n );\n }\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\nimport { PrivacyToolsConfigOptions, PrivacyToolsCookieBanner } from '../../models/privacy-tools/privacy-tools.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PrivacyToolsService {\n document = inject<Document>(DOCUMENT);\n platformId = inject(PLATFORM_ID);\n\n cookieBannerScriptId = 'PrivacyToolsScript';\n cookieBannerStyleId = 'PrivacyToolsStyle';\n cookieBannerScriptElement: HTMLScriptElement | null = null;\n configOptions: PrivacyToolsConfigOptions = {};\n cookieConsent: any = null;\n\n /* Config */\n public config(options: PrivacyToolsConfigOptions) {\n this.configOptions = options;\n }\n\n /* Setup cookie Banner */\n public setupCookieBanner(unidadeBasePath: string) {\n if (isPlatformBrowser(this.platformId)) {\n const banner = this.configOptions?.cookieBanners?.find((banner) => banner.basePath.includes(unidadeBasePath));\n\n if (banner) {\n this.addCookieBanner(banner);\n }\n }\n }\n\n public openCookieBanner() {\n if (this.cookieConsent && this.cookieBannerScriptElement) {\n this.cookieConsent.privacyToolsShowCookieNotice();\n }\n }\n\n /* Add cookie banner style and script */\n private addCookieBanner(banner: PrivacyToolsCookieBanner) {\n this.cookieBannerScriptElement = null;\n this.addCookieBannerStyle(banner.styleSrc);\n this.addCookieBannerScript(banner.scriptSrc);\n }\n\n /* Add cookie banner style. */\n public addCookieBannerStyle(src: string) {\n if (isPlatformServer(this.platformId)) return;\n\n this.document.getElementById('byRemovePortal')?.remove();\n\n const oldStyle = this.document.getElementById(this.cookieBannerStyleId);\n\n if (oldStyle) {\n oldStyle.remove();\n }\n\n const style = this.document.createElement('link');\n style.id = this.cookieBannerStyleId;\n style.rel = 'stylesheet';\n style.type = 'text/css';\n style.href = src;\n style.media = 'none';\n\n style.addEventListener('load', () => {\n style.media = 'all';\n });\n\n this.document.body.appendChild(style);\n }\n\n /* Add cookie banner script. */\n public addCookieBannerScript(src: string) {\n if (isPlatformServer(this.platformId) || typeof window === 'undefined') return;\n\n (window as any)['cookieconsent'] = null;\n\n const oldScript = this.document.getElementById(this.cookieBannerScriptId);\n\n if (oldScript) {\n oldScript.remove();\n }\n const script = this.document.createElement('script');\n script.id = this.cookieBannerScriptId;\n script.src = src;\n\n script.addEventListener('load', () => {\n this.cookieBannerScriptElement = script;\n this.cookieConsent = (window as any)['cookieconsent'];\n (window as any)['portalBanner']?.call();\n });\n\n this.document.body.appendChild(script);\n }\n}\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Location } from '@angular/common';\n\nimport * as he from 'he';\n\nimport { SocialMetaProperties } from '../../models/social-meta-properties.model';\nimport { BreadcrumbsItems } from '../../models/breadcrumbs/breadcrumbs-items.model';\nimport { BreadcrumbsJsonItem } from '../../models/breadcrumbs/breadcrumbs-json-item.model';\nimport { SeoData } from '../../models/seo/seo-data.model';\nimport { SeoUnidade } from '../../models/seo/seo-unidade.model';\nimport { WpPost } from '../../models/wordpress/post/post.model';\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\nimport { removeHtmlTags } from '../../helpers/removeHtmlTags.func';\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SeoService {\n private title = inject(Title);\n private meta = inject(Meta);\n private location = inject(Location);\n private libConfig = inject<LibConfig>(LIB_CONFIG);\n private document = inject<Document>(DOCUMENT);\n\n public separator = ' - ';\n public defaultTitle = 'Rede D’Or';\n public activeDescription!: string;\n public sameAs = [\n 'https://www.facebook.com/rededor/',\n 'https://www.instagram.com/rededor_oficial/',\n 'https://www.linkedin.com/company/rededor-saoluiz',\n 'https://twitter.com/rededor',\n ];\n public twitterUser = '@rededor';\n\n private canonicalTag!: HTMLLinkElement;\n private jsonTag!: HTMLScriptElement;\n private jsonTagId = 'seoJSON';\n private breadcrumbsJsonTag!: HTMLScriptElement;\n private breadcrumbsJsonTagId = 'breadcrumbsJSON';\n\n public unidade: any = null;\n public unidadeName: string = '';\n public unidadePath: string = '';\n public unidadeSlug: string = '';\n\n public customJsonType: any[] = [];\n\n public setFullSeo(data: SeoData) {\n this.setTitle(data.title.text, !!data.title.sub);\n this.setDescription(data.description);\n this.setCanonicalHref(data.canonical);\n this.setPageJson();\n this.setSocialTags(data.socialTags);\n }\n\n /**\n * Define tag description da página\n * @param content conteúdo da descrição <string>\n */\n public setDescription(content: string): SeoService {\n const descTag = this.meta.getTag(\"name='description'\");\n if (content) {\n content = he.decode(content);\n content = removeHtmlTags(content);\n } else {\n content = '';\n }\n this.activeDescription = content;\n const tagContent = { name: 'description', content };\n if (descTag) {\n this.meta.updateTag(tagContent);\n } else {\n this.meta.addTag(tagContent);\n }\n return this;\n }\n\n /**\n * Define meta tags para a página\n * @param tag nome da tag meta\n * @param content conteúdo da tag meta\n * @param type tipo de tag meta\n */\n public setMetaTag(tag: string, content: string, type = 'name') {\n const metatag = this.meta.getTag(`${type}='${tag}'`);\n content = he.decode(content);\n content = removeHtmlTags(content);\n const tagContent = {\n [type]: tag,\n content,\n };\n if (!metatag) {\n this.meta.addTag(tagContent);\n } else {\n this.meta.updateTag(tagContent);\n }\n return this;\n }\n\n /**\n * Remove meta tags da página\n * @param tag nome da tag meta\n * @param content conteúdo da tag meta\n * @param attr atributo da tag meta\n * @param type tipo de tag meta\n */\n public removeTag(tag: string, content: string, attr: string, type = 'name') {\n const metatag = this.meta.getTag(`${type}='${tag}'`);\n if (metatag) {\n this.meta.removeTag(`${attr}=${content}`);\n }\n return this;\n }\n\n /**\n * Define meta tags para Facebook\n * @param title título para o facebook\n * @param description descrição para o facebook\n * @param url url para definição do facebook\n * @param img imagem para definição no facebook\n */\n public setMetaFacebook(title: string, description: string, url: string, img: string | null = null) {\n this.setMetaTag('og:url', url, 'property');\n this.setMetaTag('og:title', title, 'property');\n this.setMetaTag('og:description', description, 'property');\n this.setMetaTag('og:type', 'website', 'property');\n this.setMetaTag('og:image', img ?? '', 'property');\n }\n\n /**\n * Define meta tags para Twitter\n * @param title título para o twitter\n * @param description descrição para o twitter\n * @param url url para o twitter\n * @param img imagem para definição no twitter\n */\n public setMetaTwitter(title: string, description: string, url: string, img: string | null = null) {\n this.setMetaTag('twitter:site', url, 'name');\n this.setMetaTag('twitter:title', title, 'name');\n this.setMetaTag('twitter:description', description, 'name');\n this.setMetaTag('twitter:image', img ?? '', 'name');\n }\n\n /**\n * Define tags de redes sociais (Twitter e Open Graph)\n * @param properties\n */\n setSocialTags(properties?: SocialMetaProperties) {\n const pagePath = this.location.path();\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n let defaultProperties: SocialMetaProperties = {\n twitterCard: 'summary',\n twitterSite: this.twitterUser,\n type: 'website',\n title: this.getTitle(),\n description: this.activeDescription || '',\n url: `${siteurl}${pagePath}`,\n image: this.libConfig?.logoPath ? `${siteurl}${this.libConfig.logoPath}` : 'https://www.rededorsaoluiz.com.br/assets/imgs/logo-rededor-blue.png',\n };\n if (properties) {\n defaultProperties = { ...defaultProperties, ...properties };\n }\n this.setMetaTag('twitter:card', defaultProperties.twitterCard || '', 'name')\n .setMetaTag('twitter:site', defaultProperties.twitterSite || '', 'name')\n .setMetaTag('og:type', defaultProperties.type || '', 'property')\n .setMetaTag('og:title', defaultProperties.title || '', 'property')\n .setMetaTag('og:description', defaultProperties.description || '', 'property')\n .setMetaTag('og:url', defaultProperties.url || '', 'property')\n .setMetaTag('og:image', defaultProperties.image || '', 'property');\n\n return this;\n }\n\n /**\n * Define título da página\n * @param title título da página <string>\n * @param sub Se é subsite acrescenta unidade <boolean>\n */\n public setTitle(title: string, sub = false) {\n if (title && title !== '') {\n title = he.decode(title);\n title = removeHtmlTags(title);\n if (sub) {\n title = he.decode(`${title}${this.separator}${this.unidadeName}`);\n }\n this.title.setTitle(title);\n }\n return this;\n }\n\n /** Obtem título atual da página */\n public getTitle(): string {\n return this.title.getTitle();\n }\n\n public set404Title(component: string = 'Default Component') {\n if (component && component !== '') {\n component = he.decode(component);\n component = removeHtmlTags(component);\n if (this.unidadeName) {\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\n }\n }\n const title = `Erro 404 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\n this.title.setTitle(title);\n return this;\n }\n\n public set500Title(component: string = 'Default Component') {\n if (component && component !== '') {\n component = he.decode(component);\n component = removeHtmlTags(component);\n if (this.unidadeName) {\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\n }\n }\n const title = `Erro 500 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\n this.title.setTitle(title);\n return this;\n }\n\n /** Cria tag script para JSON de breadcrumbs */\n private createBreadcrumbsJSONTag(): HTMLScriptElement {\n const tag: HTMLScriptElement = this.document.createElement('script');\n tag.id = this.breadcrumbsJsonTagId;\n tag.type = 'application/ld+json';\n this.document.head.appendChild(tag);\n this.breadcrumbsJsonTag = tag;\n return tag;\n }\n\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\n private getBreadcrumbsJSONTag(): HTMLScriptElement {\n const elements = this.document.head.children;\n let i: number;\n for (i = 0; i < elements.length; i++) {\n const elem = elements[i] as HTMLScriptElement;\n if (elem && elem.id === this.breadcrumbsJsonTagId) {\n return elem;\n }\n }\n return this.createBreadcrumbsJSONTag();\n }\n\n /** Define o JSON de breadcrumbs da página */\n public setBreadcrumbsJson(items: BreadcrumbsItems[]) {\n this.breadcrumbsJsonTag = this.getBreadcrumbsJSONTag();\n const json = {\n '@context': 'http://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: this.getJsonBreadcrumbItems(items),\n };\n this.breadcrumbsJsonTag.innerHTML = JSON.stringify(json);\n return this;\n }\n\n /** Converte itens do breadcrumb em itens do JSON */\n private getJsonBreadcrumbItems(items: BreadcrumbsItems[]): BreadcrumbsJsonItem[] {\n const jsonItems = [\n {\n '@type': 'ListItem',\n position: 1,\n item: { '@id': this.getBreadcrumbItemUrl(['/']), name: he.encode('Página Inicial') },\n } as BreadcrumbsJsonItem,\n ];\n items.forEach((item, i) => {\n const jsonItem: BreadcrumbsJsonItem = {\n '@type': 'ListItem',\n position: i + 2,\n item: { '@id': this.getBreadcrumbItemUrl(item?.url || []), name: he.encode(item.label) },\n };\n jsonItems.push(jsonItem);\n });\n return jsonItems;\n }\n\n /**\n * Monta a url do item de breadcrumb proveniente do array de urls\n * ou do caminho da própria página, conforme caso do último item.\n */\n private getBreadcrumbItemUrl(url: string[]): string {\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n if (!url || url.length <= 0) {\n const pagePath = this.location.path();\n return `${siteurl}${pagePath}`;\n }\n url = url.filter((u) => u !== this.unidadePath);\n const unidadePath = this.getUnidadePath();\n const fullPath = `${unidadePath}/${url.join('/').replace(/^\\/?/, '')}`;\n return `${siteurl}${fullPath}`.replace(/\\/$/, '');\n }\n\n /** Cria tag script para o JSON de SEO */\n private createJSONTag(): HTMLScriptElement {\n const tag: HTMLScriptElement = this.document.createElement('script');\n tag.id = this.jsonTagId;\n tag.type = 'application/ld+json';\n this.document.head.appendChild(tag);\n this.jsonTag = tag;\n return tag;\n }\n\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\n private getJSONTag(): HTMLScriptElement {\n const elements = this.document.head.children;\n let i: number;\n for (i = 0; i < elements.length; i++) {\n const elem = elements[i] as HTMLScriptElement;\n if (elem && elem.id === this.jsonTagId) {\n return elem;\n }\n }\n return this.createJSONTag();\n }\n\n /** Define JSON para SEO somente quando no servidor */\n public setPageJson() {\n this.jsonTag = this.getJSONTag();\n\n const baseGraph = [this.getOrgJson(), this.getWebsiteJson(), this.getWebpageJson()];\n\n const extendedGraph = this.customJsonType.length ? [...baseGraph, ...this.customJsonType] : baseGraph;\n\n this.customJsonType = [];\n\n const json = {\n '@context': 'http://schema.org',\n '@graph': extendedGraph,\n };\n\n this.jsonTag.innerHTML = JSON.stringify(json);\n\n return this;\n }\n\n /** Obtem JSON da Organização */\n private getOrgJson() {\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n return {\n '@type': 'Organization',\n '@id': `${siteurl}#organization`,\n name: this.defaultTitle,\n keywords: this.libConfig?.keywords,\n url: `${siteurl}`,\n sameAs: this.sameAs,\n };\n }\n\n /** Obtem JSON do Website (portal, unidades, etc) */\n private getWebsiteJson() {\n const unidadePath = this.getUnidadePath();\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n return {\n '@type': 'WebSite',\n '@id': `${siteurl}${unidadePath}#website`,\n url: `${siteurl}${unidadePath}`,\n name: this.unidadeName,\n keywords: this.libConfig?.keywords,\n };\n }\n\n /** Obtem Json da página */\n private getWebpageJson() {\n const unidadePath = this.getUnidadePath();\n const siteURL = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n const pagePath = `${siteURL}${this.location.path()}`;\n const desc = this.activeDescription ? this.activeDescription : '';\n return {\n '@type': 'WebPage',\n '@id': `${pagePath}#webpage`,\n url: pagePath,\n inLanguage: 'pt-BR',\n name: this.getTitle(),\n isPartOf: { '@id': `${siteURL}${unidadePath}#website` },\n about: { '@id': `${siteURL}#organization` },\n description: desc,\n };\n }\n\n private getUnidadePath() {\n let unidadePath = '';\n if (this.unidade && this.unidadePath) {\n unidadePath = this.unidade?.path === '/' ? '' : this.unidadePath?.substring(0, this.unidadePath?.length - 1);\n }\n return unidadePath;\n }\n\n /**\n * Obtém a URL canônica da página.\n * @returns A URL canônica da página.\n */\n public getCanonicalHref(): string {\n if (!this.canonicalTag) {\n this.canonicalTag = this.getCanonicalTag();\n }\n return this.canonicalTag.href;\n }\n\n /** Cria tag para links canonicals no head */\n private createCanonicalTag(): HTMLLinkElement {\n const tag = this.document.createElement('link');\n tag.setAttribute('rel', 'canonical');\n this.document.head.appendChild(tag);\n tag.setAttribute('href', this.document.URL);\n this.canonicalTag = tag;\n return tag;\n }\n\n /** Retorna tag para link canonical existe ou cria se não houver. */\n private getCanonicalTag(): HTMLLinkElement {\n const elements = this.document.head.children;\n let i: number;\n for (i = 0; i < elements.length; i++) {\n const elem = elements[i] as HTMLLinkElement;\n if (elem && elem.tagName === 'LINK' && elem.rel === 'canonical') {\n return elem;\n }\n }\n return this.createCanonicalTag();\n }\n\n /**\n * Define link canonical da página\n * @param url url canonical\n */\n public setCanonicalHref(url?: string) {\n if (!this.canonicalTag) {\n this.canonicalTag = this.getCanonicalTag();\n }\n\n let path = this.document.location.pathname;\n\n if (this.libConfig?.siteSufix && path.includes(this.libConfig?.siteSufix)) {\n path = path.replace(this.libConfig?.siteSufix, '');\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`;\n }\n\n const canonicalUrl = url && this.isCustomCanonical(url) ? url : `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${path}`;\n\n this.canonicalTag.setAttribute('href', canonicalUrl);\n return this;\n }\n\n /**\n * Verifica se a URL fornecida é um link canonical personalizado\n * @param url URL fornecida\n */\n public isCustomCanonical(url: string): boolean {\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n return url.startsWith(siteurl);\n }\n\n /**\n * Obtém uma url válida na aplicação proveniente de uma URL gerada\n * pelo plugin Yoast para canonical automático.\n * Ex.: https://wp.rededorsaoluiz.com.br/brasil/especialidades/cardiologia/\n * @param urlFromWpApi URL canonica gerada pelo Yoast Plugin.\n */\n toLocalCanonical(urlFromWpApi: string): string {\n const apiUrl = this.libConfig?.wpUrl ?? '';\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\n const unidadeSlug = this.unidadeSlug;\n let converted = urlFromWpApi.replace(apiUrl, siteurl);\n if (unidadeSlug !== '/' && converted.includes(`/${unidadeSlug}/`)) {\n converted = converted.replace(`/${unidadeSlug}/`, `${this.unidadePath}`);\n }\n return converted;\n }\n\n getPostContent(post: WpPost): string {\n const content = post?.acf?.['rdsl_post_content'] ? post?.acf?.rdsl_post_content?.find((content: any) => content.acf_fc_layout === 'text_html') : null;\n return content?.content || post.content.rendered || '';\n }\n\n addArticleScript(post: WpPost, scriptName: string): void {\n const postContent = this.getPostContent(post);\n const postHeaderImage = post?.acf?.['rdsl_post_header_img']\n ? {\n url: post?.acf?.['rdsl_post_header_img'].url,\n width: post?.acf?.['rdsl_post_header_img'].width,\n height: post?.acf?.['rdsl_post_header_img'].height,\n }\n : null;\n\n const structuredData = {\n '@context': 'https://schema.org',\n '@type': 'Article',\n mainEntityOfPage: `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`,\n headline: post.title?.rendered,\n datePublished: post.date_gmt,\n publisher: {\n '@type': 'Organization',\n name: 'Rede D’Or',\n },\n description: post.title?.rendered,\n articleBody: removeHtmlTags(he.decode(postContent)),\n dateModified: post.modified_gmt,\n image: {\n '@type': 'ImageObject',\n url: postHeaderImage?.url || post.featured_media_path || '',\n height: postHeaderImage?.height || '',\n width: postHeaderImage?.width || '',\n },\n author: {\n '@type': 'Organization',\n name: 'Rede D’Or',\n },\n wordcount: postContent.split(' ').length,\n };\n\n const script = this.document.createElement('script');\n\n script.type = 'application/ld+json';\n script.id = scriptName;\n script.innerHTML = JSON.stringify(structuredData);\n\n this.document.head.appendChild(script);\n }\n\n removeArticleScript(scriptName: string): void {\n const script = this.document.getElementById(scriptName);\n script?.remove();\n }\n\n public setUnidade({ unidade = null, unidadeName = '', unidadePath = '', unidadeSlug = '' }: SeoUnidade) {\n this.unidade = unidade;\n this.unidadeName = unidadeName;\n this.unidadePath = unidadePath;\n this.unidadeSlug = unidadeSlug;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Response } from 'express';\nimport { RESPONSE } from '../../tokens/express.tokens';\n\nexport interface IServerResponseService {\n getHeader(key: string): string;\n setHeader(key: string, value: string): this;\n setHeaders(dictionary: { [key: string]: string }): this;\n appendHeader(key: string, value: string, delimiter?: string): this;\n setStatus(code: number, message?: string): this;\n setNotFound(message?: string): this;\n setError(message?: string): this;\n setRedirect(redirectParams?: { statusCode: number; message: string; url?: string }): this;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ServerResponseService implements IServerResponseService {\n private response = inject(RESPONSE, { optional: true });\n\n getHeader(key: string): string {\n if (this.response) {\n return this.response.getHeader(key) as string;\n }\n return '';\n }\n\n setHeader(key: string, value: string): this {\n if (this.response) {\n this.response.header(key, value);\n }\n return this;\n }\n\n appendHeader(key: string, value: string, delimiter = ','): this {\n if (this.response) {\n const current = this.getHeader(key);\n if (!current) {\n return this.setHeader(key, value);\n }\n const newValue = [...current.split(delimiter), value].filter((el, i, a) => i === a.indexOf(el)).join(delimiter);\n this.response.header(key, newValue);\n }\n return this;\n }\n\n setHeaders(dictionary: { [key: string]: string }): this {\n if (this.response) {\n Object.keys(dictionary).forEach((key) => this.setHeader(key, dictionary[key]));\n }\n return this;\n }\n\n setStatus(code: number, message?: string): this {\n if (this.response) {\n this.response.statusCode = code;\n if (message) {\n this.response.statusMessage = message;\n }\n }\n return this;\n }\n\n setNotFound(message = 'Não encontrado'): this {\n if (this.response) {\n this.response.statusCode = 404;\n this.response.statusMessage = message;\n }\n return this;\n }\n\n setUnauthorized(message = 'Não autorizado'): this {\n if (this.response) {\n this.response.statusCode = 401;\n this.response.statusMessage = message;\n }\n return this;\n }\n\n setError(message = 'Erro interno de servidor'): this {\n if (this.response) {\n this.response.statusCode = 500;\n this.response.statusMessage = message;\n }\n return this;\n }\n\n setRedirect(\n { statusCode, message, url }: { statusCode?: number; message?: string; url?: string } = {\n statusCode: 301,\n message: 'Redirecionado permanentemente',\n url: undefined,\n },\n ): this {\n if (this.response) {\n this.response.statusCode = statusCode || 301;\n this.response.statusMessage = message || 'Redirecionado permanentemente';\n if (url) {\n this.response.locals['redirectUrl'] = url; // Utilizado no ssr para redirect\n }\n }\n return this;\n }\n}\n\nexport type HttpCacheDirective = 'public' | 'private' | 'no-store' | 'no-cache' | 'must-revalidate' | 'no-transform' | 'proxy-revalidate';\n","import { Injectable, inject, RESPONSE_INIT } from '@angular/core';\n\nexport interface ISsrResponseService {\n setStatus(code: number, message?: string): this;\n setNotFound(message?: string): this;\n setError(message?: string): this;\n setRedirect(params?: { statusCode?: number; url?: string }): this;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SsrResponseService implements ISsrResponseService {\n private readonly responseInit = inject(RESPONSE_INIT, { optional: true });\n\n setStatus(code: number, message?: string): this {\n if (this.responseInit) {\n this.responseInit.status = code;\n if (message !== undefined) {\n this.responseInit.statusText = message;\n }\n }\n return this;\n }\n\n setNotFound(message = 'Não encontrado'): this {\n if (this.responseInit) {\n this.responseInit.status = 404;\n this.responseInit.statusText = message;\n }\n return this;\n }\n\n setError(message = 'Erro interno de servidor'): this {\n if (this.responseInit) {\n this.responseInit.status = 500;\n this.responseInit.statusText = message;\n }\n return this;\n }\n\n setRedirect(\n params: { statusCode?: number; url?: string } = {\n statusCode: 301,\n url: undefined,\n },\n ): this {\n if (this.responseInit && params.url) {\n this.responseInit.status = params.statusCode ?? 301;\n this.responseInit.statusText = params.statusCode === 302 ? 'Found' : 'Moved Permanently';\n const existingHeaders = this.responseInit.headers ? new Headers(this.responseInit.headers as HeadersInit) : new Headers();\n existingHeaders.set('Location', params.url);\n this.responseInit.headers = existingHeaders;\n }\n return this;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
|