@rededor/site-front-end-lib 20.0.34 → 20.0.35

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.
Files changed (140) hide show
  1. package/README.md +124 -124
  2. package/core/index.d.ts +45 -3
  3. package/fesm2022/rededor-site-front-end-lib-components-algolia-dropdown.mjs +2 -2
  4. package/fesm2022/rededor-site-front-end-lib-components-algolia-dropdown.mjs.map +1 -1
  5. package/fesm2022/rededor-site-front-end-lib-components-algolia-search.mjs +10 -10
  6. package/fesm2022/rededor-site-front-end-lib-components-algolia-search.mjs.map +1 -1
  7. package/fesm2022/rededor-site-front-end-lib-components-banner.mjs +2 -2
  8. package/fesm2022/rededor-site-front-end-lib-components-banner.mjs.map +1 -1
  9. package/fesm2022/rededor-site-front-end-lib-components-breadcrumbs.mjs +2 -2
  10. package/fesm2022/rededor-site-front-end-lib-components-breadcrumbs.mjs.map +1 -1
  11. package/fesm2022/rededor-site-front-end-lib-components-cards.mjs +6 -6
  12. package/fesm2022/rededor-site-front-end-lib-components-cards.mjs.map +1 -1
  13. package/fesm2022/rededor-site-front-end-lib-components-carousels.mjs +2 -2
  14. package/fesm2022/rededor-site-front-end-lib-components-carousels.mjs.map +1 -1
  15. package/fesm2022/rededor-site-front-end-lib-components-cta-wrapper.mjs +2 -2
  16. package/fesm2022/rededor-site-front-end-lib-components-cta-wrapper.mjs.map +1 -1
  17. package/fesm2022/rededor-site-front-end-lib-components-error.mjs +2 -2
  18. package/fesm2022/rededor-site-front-end-lib-components-error.mjs.map +1 -1
  19. package/fesm2022/rededor-site-front-end-lib-components-filter-letter-and-terms.mjs +2 -2
  20. package/fesm2022/rededor-site-front-end-lib-components-filter-letter-and-terms.mjs.map +1 -1
  21. package/fesm2022/rededor-site-front-end-lib-components-filters-filter-generic.mjs +2 -2
  22. package/fesm2022/rededor-site-front-end-lib-components-filters-filter-generic.mjs.map +1 -1
  23. package/fesm2022/rededor-site-front-end-lib-components-filters-filter-planos-convenios.mjs +2 -2
  24. package/fesm2022/rededor-site-front-end-lib-components-filters-filter-planos-convenios.mjs.map +1 -1
  25. package/fesm2022/rededor-site-front-end-lib-components-footer.mjs +2 -2
  26. package/fesm2022/rededor-site-front-end-lib-components-footer.mjs.map +1 -1
  27. package/fesm2022/rededor-site-front-end-lib-components-header-components-action.mjs +2 -2
  28. package/fesm2022/rededor-site-front-end-lib-components-header-components-action.mjs.map +1 -1
  29. package/fesm2022/rededor-site-front-end-lib-components-header-components-auxiliar.mjs +4 -4
  30. package/fesm2022/rededor-site-front-end-lib-components-header-components-auxiliar.mjs.map +1 -1
  31. package/fesm2022/rededor-site-front-end-lib-components-header-components-main.mjs +4 -4
  32. package/fesm2022/rededor-site-front-end-lib-components-header-components-main.mjs.map +1 -1
  33. package/fesm2022/rededor-site-front-end-lib-components-header-components-side.mjs +4 -4
  34. package/fesm2022/rededor-site-front-end-lib-components-header-components-side.mjs.map +1 -1
  35. package/fesm2022/rededor-site-front-end-lib-components-header-services.mjs.map +1 -1
  36. package/fesm2022/rededor-site-front-end-lib-components-header.mjs +4 -4
  37. package/fesm2022/rededor-site-front-end-lib-components-header.mjs.map +1 -1
  38. package/fesm2022/rededor-site-front-end-lib-components-image.mjs +2 -2
  39. package/fesm2022/rededor-site-front-end-lib-components-image.mjs.map +1 -1
  40. package/fesm2022/rededor-site-front-end-lib-components-load-screen.mjs +2 -2
  41. package/fesm2022/rededor-site-front-end-lib-components-load-screen.mjs.map +1 -1
  42. package/fesm2022/rededor-site-front-end-lib-components-modal-drawer.mjs +2 -2
  43. package/fesm2022/rededor-site-front-end-lib-components-modal-drawer.mjs.map +1 -1
  44. package/fesm2022/rededor-site-front-end-lib-components-modal.mjs +2 -2
  45. package/fesm2022/rededor-site-front-end-lib-components-modal.mjs.map +1 -1
  46. package/fesm2022/rededor-site-front-end-lib-components-overlay.mjs +2 -2
  47. package/fesm2022/rededor-site-front-end-lib-components-overlay.mjs.map +1 -1
  48. package/fesm2022/rededor-site-front-end-lib-components-page-header.mjs +2 -2
  49. package/fesm2022/rededor-site-front-end-lib-components-page-header.mjs.map +1 -1
  50. package/fesm2022/rededor-site-front-end-lib-components-page-template-fullcontent.mjs +2 -2
  51. package/fesm2022/rededor-site-front-end-lib-components-page-template-fullcontent.mjs.map +1 -1
  52. package/fesm2022/rededor-site-front-end-lib-components-page-template-sidebar.mjs +2 -2
  53. package/fesm2022/rededor-site-front-end-lib-components-page-template-sidebar.mjs.map +1 -1
  54. package/fesm2022/rededor-site-front-end-lib-components-pagination.mjs +2 -2
  55. package/fesm2022/rededor-site-front-end-lib-components-pagination.mjs.map +1 -1
  56. package/fesm2022/rededor-site-front-end-lib-components-search.mjs +2 -2
  57. package/fesm2022/rededor-site-front-end-lib-components-search.mjs.map +1 -1
  58. package/fesm2022/rededor-site-front-end-lib-components-section-navigation.mjs +2 -2
  59. package/fesm2022/rededor-site-front-end-lib-components-section-navigation.mjs.map +1 -1
  60. package/fesm2022/rededor-site-front-end-lib-components-side-ctas.mjs +10 -10
  61. package/fesm2022/rededor-site-front-end-lib-components-side-ctas.mjs.map +1 -1
  62. package/fesm2022/rededor-site-front-end-lib-components-sidebar-navigation.mjs +2 -2
  63. package/fesm2022/rededor-site-front-end-lib-components-sidebar-navigation.mjs.map +1 -1
  64. package/fesm2022/rededor-site-front-end-lib-components-sticky-navigation.mjs +2 -2
  65. package/fesm2022/rededor-site-front-end-lib-components-sticky-navigation.mjs.map +1 -1
  66. package/fesm2022/rededor-site-front-end-lib-components-whatsapp.mjs +2 -2
  67. package/fesm2022/rededor-site-front-end-lib-components-whatsapp.mjs.map +1 -1
  68. package/fesm2022/rededor-site-front-end-lib-core.mjs +293 -1
  69. package/fesm2022/rededor-site-front-end-lib-core.mjs.map +1 -1
  70. package/fesm2022/rededor-site-front-end-lib-cura-accordion.mjs +4 -4
  71. package/fesm2022/rededor-site-front-end-lib-cura-accordion.mjs.map +1 -1
  72. package/fesm2022/rededor-site-front-end-lib-cura-api.mjs +8 -8
  73. package/fesm2022/rededor-site-front-end-lib-cura-api.mjs.map +1 -1
  74. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-counter.mjs +2 -2
  75. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-counter.mjs.map +1 -1
  76. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-distance.mjs +2 -2
  77. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-distance.mjs.map +1 -1
  78. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-dot.mjs +2 -2
  79. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-dot.mjs.map +1 -1
  80. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-pill.mjs +2 -2
  81. package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-pill.mjs.map +1 -1
  82. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button-outline.mjs +2 -2
  83. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button-outline.mjs.map +1 -1
  84. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button-select.mjs +2 -2
  85. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button-select.mjs.map +1 -1
  86. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button-transparent.mjs +2 -2
  87. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button-transparent.mjs.map +1 -1
  88. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button.mjs +2 -2
  89. package/fesm2022/rededor-site-front-end-lib-cura-buttons-cura-button.mjs.map +1 -1
  90. package/fesm2022/rededor-site-front-end-lib-cura-buttons.mjs.map +1 -1
  91. package/fesm2022/rededor-site-front-end-lib-cura-cards-cura-card.mjs +2 -2
  92. package/fesm2022/rededor-site-front-end-lib-cura-cards-cura-card.mjs.map +1 -1
  93. package/fesm2022/rededor-site-front-end-lib-cura-feedback-cura-alert.mjs +2 -2
  94. package/fesm2022/rededor-site-front-end-lib-cura-feedback-cura-alert.mjs.map +1 -1
  95. package/fesm2022/rededor-site-front-end-lib-cura-feedback-cura-modal.mjs +2 -2
  96. package/fesm2022/rededor-site-front-end-lib-cura-feedback-cura-modal.mjs.map +1 -1
  97. package/fesm2022/rededor-site-front-end-lib-cura-feedback-cura-toast.mjs +2 -2
  98. package/fesm2022/rededor-site-front-end-lib-cura-feedback-cura-toast.mjs.map +1 -1
  99. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-checkbox.mjs +2 -2
  100. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-checkbox.mjs.map +1 -1
  101. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-input-text.mjs +2 -2
  102. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-input-text.mjs.map +1 -1
  103. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-label.mjs +2 -2
  104. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-label.mjs.map +1 -1
  105. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-radio.mjs +2 -2
  106. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-radio.mjs.map +1 -1
  107. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-select-option.mjs +2 -2
  108. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-select-option.mjs.map +1 -1
  109. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-select-state.mjs +2 -2
  110. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-select-state.mjs.map +1 -1
  111. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-select.mjs +2 -2
  112. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-select.mjs.map +1 -1
  113. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-switch.mjs +2 -2
  114. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-switch.mjs.map +1 -1
  115. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-textarea.mjs +2 -2
  116. package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-textarea.mjs.map +1 -1
  117. package/fesm2022/rededor-site-front-end-lib-cura-forms.mjs.map +1 -1
  118. package/fesm2022/rededor-site-front-end-lib-cura-icons-cura-icon.mjs +2 -2
  119. package/fesm2022/rededor-site-front-end-lib-cura-icons-cura-icon.mjs.map +1 -1
  120. package/fesm2022/rededor-site-front-end-lib-cura-loaders-cura-loader-bar.mjs +2 -2
  121. package/fesm2022/rededor-site-front-end-lib-cura-loaders-cura-loader-bar.mjs.map +1 -1
  122. package/fesm2022/rededor-site-front-end-lib-cura-loaders-cura-loader-circle.mjs +2 -2
  123. package/fesm2022/rededor-site-front-end-lib-cura-loaders-cura-loader-circle.mjs.map +1 -1
  124. package/fesm2022/rededor-site-front-end-lib-cura-texts-cura-display.mjs +2 -2
  125. package/fesm2022/rededor-site-front-end-lib-cura-texts-cura-display.mjs.map +1 -1
  126. package/fesm2022/rededor-site-front-end-lib-cura-texts-cura-heading.mjs +2 -2
  127. package/fesm2022/rededor-site-front-end-lib-cura-texts-cura-heading.mjs.map +1 -1
  128. package/fesm2022/rededor-site-front-end-lib-cura-texts-cura-paragraph.mjs +2 -2
  129. package/fesm2022/rededor-site-front-end-lib-cura-texts-cura-paragraph.mjs.map +1 -1
  130. package/fesm2022/rededor-site-front-end-lib-enums.mjs.map +1 -1
  131. package/fesm2022/rededor-site-front-end-lib-services-algolia-search-api.mjs.map +1 -1
  132. package/fesm2022/rededor-site-front-end-lib-services-algolia.mjs.map +1 -1
  133. package/fesm2022/rededor-site-front-end-lib-services-ngu-carousel.mjs.map +1 -1
  134. package/fesm2022/rededor-site-front-end-lib-services-ssr-loading.mjs.map +1 -1
  135. package/fesm2022/rededor-site-front-end-lib-services-transfer-state.mjs.map +1 -1
  136. package/fesm2022/rededor-site-front-end-lib-services-youtube.mjs.map +1 -1
  137. package/fesm2022/rededor-site-front-end-lib-shared.mjs.map +1 -1
  138. package/fesm2022/rededor-site-front-end-lib.mjs.map +1 -1
  139. package/package.json +2 -1
  140. package/styles/_breakpoints.scss +5 -5
@@ -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 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': 'MedicalOrganization',\n '@id': `${siteurl}#medicalorganization`,\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}#medicalorganization` },\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': 'MedicalOrganization',\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': 'MedicalOrganization',\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/middlewares/ssr-initialization.middleware.ts","../../../projects/site-front-end-lib/core/middlewares/url-validation-default-logo.ts","../../../projects/site-front-end-lib/core/middlewares/url-validation-error-page.ts","../../../projects/site-front-end-lib/core/middlewares/url-validation.middleware.ts","../../../projects/site-front-end-lib/core/rededor-site-front-end-lib-core.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\r\n\r\nexport interface LibConfig {\r\n production: boolean;\r\n environmentName: string;\r\n siteProject: string;\r\n server: boolean;\r\n siteName: string;\r\n siteUrl: string;\r\n siteSufix?: string;\r\n skipDuplicationSufixRule: boolean;\r\n client_id: string;\r\n xOriginApplication: string;\r\n searchApiEnv: string;\r\n fallbackImgSrc: string;\r\n\r\n // Cura iconset\r\n iconsetDefaultList: string[];\r\n\r\n // site-back-end (SNF)\r\n siteApi: {\r\n auth: {\r\n user: string;\r\n password: string;\r\n };\r\n base: string;\r\n baseInternal: string;\r\n recaptcha: string;\r\n centroEstudos: string;\r\n };\r\n\r\n // Algolia Search\r\n algoliaConfig: {\r\n id: string;\r\n key: string;\r\n };\r\n\r\n // Wordpress\r\n wpUrl: string;\r\n\r\n // SEO\r\n keywords: string;\r\n logoPath?: string;\r\n\r\n // Mapbox\r\n mapboxAccessToken: string;\r\n mapboxSSRAccessToken: string;\r\n\r\n // rdsitelink custom anchor adjustment\r\n customAnchorAdjustment?: (document: Document) => number;\r\n customPhoneModalCondition?: (element: ElementRef<any>) => boolean;\r\n customInternalLinkNavigation?: (noBaseHref: string) => boolean;\r\n\r\n // rdsitelink navigation behavior\r\n forcePageReload?: boolean;\r\n\r\n // TransferState configuration\r\n transferState?: {\r\n includeHeaders?: string[];\r\n };\r\n}\r\n\r\n// Configura a lib com informações especificas de cada projeto.\r\nexport const LIB_CONFIG = new InjectionToken<LibConfig>('libConfig');\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { Request, Response } from 'express';\r\n\r\nexport const REQUEST: InjectionToken<Request> = new InjectionToken<Request>('REQUEST');\r\nexport const RESPONSE: InjectionToken<Response> = new InjectionToken<Response>('RESPONSE');\r\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PhoneService {\r\n private document = inject<Document>(DOCUMENT);\r\n\r\n private telRegex = /tel:/;\r\n\r\n public phoneModalIsAllowed: boolean = true; // variavel utilizada para permitir/bloquear o modal de telefone\r\n\r\n /** Verifica se o 'href' é de telefone e se a janela está em tamanho desktop */\r\n public isPhoneModal(href: string) {\r\n const width = this.document.defaultView?.innerWidth ?? 0;\r\n const SMALL_BREAKPOINT = 718;\r\n return this.telRegex.test(href) && width > SMALL_BREAKPOINT;\r\n }\r\n}\r\n","/**\r\n * Executa uma função recursivamente até que uma condição seja atendida ou atinja o máximo de tentativas\r\n * @param fn - Função a ser executada quando a condição for atendida\r\n * @param condition - Função que retorna true quando a condição for satisfeita\r\n * @param maxTries - Número máximo de tentativas (padrão: 10)\r\n * @param delay - Delay entre tentativas em ms (padrão: 200)\r\n * @param currentTry - Contador interno de tentativas (padrão: 0)\r\n * @param args - Argumentos que serão passados para a função fn\r\n */\r\nexport function executeWithRetry<T extends any[]>(\r\n fn: (...args: T) => void,\r\n condition: () => boolean,\r\n maxTries: number = 10,\r\n delay: number = 200,\r\n currentTry: number = 0,\r\n ...args: T\r\n): void {\r\n if (!condition() && currentTry < maxTries) {\r\n setTimeout(() => {\r\n executeWithRetry(fn, condition, maxTries, delay, currentTry + 1, ...args);\r\n }, delay);\r\n } else {\r\n fn(...args);\r\n }\r\n}\r\n","import { Injectable, signal, TemplateRef } from '@angular/core';\r\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\r\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\r\n\r\nexport abstract class AbstractModalComponent {\r\n abstract id?: string;\r\n abstract modalTitle?: string | null;\r\n abstract modalHeader?: TemplateRef<any> | null;\r\n abstract modalContent: TemplateRef<any> | null;\r\n abstract modalContentContext: Record<string, any> | null;\r\n abstract modalActions?: TemplateRef<any> | null;\r\n abstract componentStyle?: any;\r\n abstract modal: HTMLDialogElement;\r\n abstract open(): void;\r\n abstract close(): void;\r\n abstract reset?(): void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalService {\r\n reference: AbstractModalComponent | null = null;\r\n defaultPhoneModal!: TemplateRef<any>;\r\n\r\n firstInteraction = signal(false);\r\n maxTries = 10;\r\n delay = 200;\r\n\r\n open() {\r\n this.firstInteraction.set(true);\r\n executeWithRetry(\r\n () => {\r\n this.reference?.open();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setReference(element: AbstractModalComponent) {\r\n this.reference = element;\r\n }\r\n\r\n setHeader(header: TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalHeader = header;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setTitle(title: string) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalTitle = title;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setContent(content: TemplateRef<any>, context: Record<string, any> = {}) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalContent = content;\r\n this.reference.modalContentContext = context;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setActions(actions: TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalActions = actions;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setStyle(style: RdsiteModalComponentStyle) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.componentStyle = style;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setDefaultPhoneModal(modal: TemplateRef<any>) {\r\n this.defaultPhoneModal = modal;\r\n }\r\n\r\n close() {\r\n executeWithRetry(\r\n () => this.reference?.close(),\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n}\r\n","export enum RdsiteModalComponentStyle {\r\n DEFAULT = 'default',\r\n ALERT = 'alert',\r\n LIGHT = 'light',\r\n DOCTORCARD = 'doctor-card',\r\n HOMESLIDE = 'home-slide',\r\n BASIC = 'basic',\r\n SHARING = 'sharing',\r\n FORMFALLBACK = 'form-fallback',\r\n FILTER = 'filter',\r\n FILTERDOENCAS = 'filter-doencas',\r\n PHOTOGALLERY = 'photo-gallery',\r\n}\r\n","export const formatPhone = (phone: string): string => {\r\n if (!phone) return '';\r\n\r\n const cleanPhone = phone.replace(/[^0-9]/gi, '');\r\n let formatedPhone = '';\r\n if (cleanPhone.length === 12) {\r\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 11) {\r\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 10) {\r\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{4})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 9) {\r\n formatedPhone = cleanPhone.replace(/(\\d{5})?(\\d{4})/, '$1-$2');\r\n } else if (cleanPhone.length === 8) {\r\n formatedPhone = cleanPhone.replace(/(\\d{4})?(\\d{4})/, '$1-$2');\r\n } else if (cleanPhone.length === 7) {\r\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{4})/, '$1-$2');\r\n } else {\r\n formatedPhone = cleanPhone;\r\n }\r\n return formatedPhone;\r\n};\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, inject, model, PLATFORM_ID, TemplateRef } from '@angular/core';\r\nimport { PhoneService } from '../../services/phone/phone.service';\r\nimport { ModalService } from '../../services/modal/modal.service';\r\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\r\nimport { formatPhone } from '../../helpers/formatPhone.func';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[rdsitephonemodal]',\r\n})\r\nexport class RdsitePhoneModalDirective {\r\n private modalService = inject(ModalService);\r\n private platformId = inject(PLATFORM_ID);\r\n private element = inject(ElementRef<Element>);\r\n private phoneService = inject(PhoneService);\r\n\r\n rdsitephonemodal = model<TemplateRef<HTMLElement> | null>(null);\r\n\r\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\r\n\r\n // Intercepta cliques em telefones e aplica comportamentos diferentes em tamanho desktop.\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event) {\r\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName) || !this.phoneService.phoneModalIsAllowed)\r\n return;\r\n\r\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\r\n if (this.phoneService.isPhoneModal(href)) {\r\n this.openPhoneModal(event, href);\r\n }\r\n }\r\n\r\n public openPhoneModal(event: Event, href: string) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.modalService.setContent(this.rdsitephonemodal() || this.modalService.defaultPhoneModal, { phone: formatPhone(href) });\r\n this.modalService.setStyle(RdsiteModalComponentStyle.DEFAULT);\r\n this.modalService.open();\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID, TemplateRef, DOCUMENT, input, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { PhoneService } from '../../services/phone/phone.service';\r\nimport { RdsitePhoneModalDirective } from '../rdsite-phone-modal/rdsite-phone-modal.directive';\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[rdsitelink]',\r\n providers: [RdsitePhoneModalDirective],\r\n})\r\nexport class RdsiteLinkDirective {\r\n private router = inject(Router);\r\n private platformId = inject(PLATFORM_ID);\r\n private document = inject(DOCUMENT);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private element = inject(ElementRef<any>);\r\n private phoneService = inject(PhoneService);\r\n private rdsitePhoneModalDirective = inject(RdsitePhoneModalDirective);\r\n private deviceDetectorService = inject(DeviceDetectorService);\r\n\r\n anchorAdjustment = input<number | null>(null);\r\n anchorExtraAdjustment = input<number | null>(null);\r\n phonemodal = input<TemplateRef<HTMLElement> | null>(null);\r\n\r\n private externalRegex = /^http:|https:|tel:|www\\.|mailto:/;\r\n private telRegex = /tel:/;\r\n private mailRegex = /mailto:/;\r\n private siteUrlList = ['rededorsaoluiz', 'rededorlabs'];\r\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event) {\r\n event.preventDefault();\r\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName)) return;\r\n let href = this.element?.nativeElement?.getAttribute('href') ?? '';\r\n if (!href) return;\r\n\r\n href = this.verifyUtm(href);\r\n\r\n if (this.isPhone(href)) {\r\n this.phoneClicked({\r\n href,\r\n event,\r\n element: this.element,\r\n phonemodal: this.phonemodal(),\r\n });\r\n return;\r\n }\r\n\r\n const isMobile = this.deviceDetectorService.isMobile();\r\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\r\n\r\n if (this.isMail(href)) {\r\n const target = isMobile || deviceInfo.browser !== 'Chrome' ? '_self' : '_blank';\r\n window.open(href, target);\r\n return;\r\n }\r\n\r\n if (this.isExternalUrl(href)) {\r\n const target = this.isSiteUrl(href) ? '_self' : '_blank';\r\n window.open(href, target);\r\n return;\r\n }\r\n\r\n if (this.isAnchor(href)) {\r\n this.scrollToAnchor(href);\r\n return;\r\n }\r\n\r\n this.navigateTo(href);\r\n }\r\n\r\n private verifyUtm(href: string): string {\r\n if (!href.includes('/paciente')) return href;\r\n if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {\r\n const currentUrl = new URL(window.location.href);\r\n const utmParams = Array.from(currentUrl.searchParams.entries()).filter(([key]) => key.startsWith('utm_'));\r\n\r\n if (utmParams.length === 0) return href;\r\n\r\n const targetUrl = new URL(href);\r\n utmParams.forEach(([key, value]) => targetUrl.searchParams.set(key, value));\r\n\r\n return targetUrl.toString();\r\n } else {\r\n return href;\r\n }\r\n }\r\n\r\n private isPhone(href: string) {\r\n return this.telRegex.test(href);\r\n }\r\n\r\n private isMail(href: string) {\r\n return this.mailRegex.test(href);\r\n }\r\n\r\n private phoneClicked(value: { href: string; event: Event; element: ElementRef<any>; phonemodal: TemplateRef<HTMLElement> | null }) {\r\n const { href, event, element, phonemodal } = value;\r\n if (this.phoneService.isPhoneModal(href)) {\r\n this.setPhoneModal(element, phonemodal);\r\n this.rdsitePhoneModalDirective.openPhoneModal(event, href);\r\n } else {\r\n window.open(href, '_self');\r\n }\r\n }\r\n\r\n private setPhoneModal(element: ElementRef<any>, phonemodal: TemplateRef<HTMLElement> | null) {\r\n if (!this.phonemodal()) return;\r\n if (!this.libConfig?.customPhoneModalCondition) {\r\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\r\n return;\r\n }\r\n if (this.libConfig?.customPhoneModalCondition(element)) {\r\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\r\n }\r\n }\r\n\r\n private isExternalUrl(href: string) {\r\n return this.externalRegex.test(href);\r\n }\r\n\r\n private isSiteUrl(href: string) {\r\n const exception = '/paciente';\r\n return this.siteUrlList.find((url) => href.includes(url) && !href.includes(exception));\r\n }\r\n\r\n private isAnchor(href: string) {\r\n return href.includes('#');\r\n }\r\n\r\n private getAnchor(url: string): string {\r\n const hashIndex = url.indexOf('#');\r\n return hashIndex !== -1 ? url.substring(hashIndex) : '';\r\n }\r\n\r\n private scrollToAnchor(href: string) {\r\n if (href === '#') return;\r\n\r\n const anchor = this.getAnchor(href);\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n const docElement = this.document.documentElement;\r\n let adjustment = 0;\r\n\r\n if (this.libConfig.customAnchorAdjustment) {\r\n adjustment = this.libConfig.customAnchorAdjustment(this.document);\r\n }\r\n\r\n if (this.anchorAdjustment()) {\r\n adjustment = this.anchorAdjustment()!;\r\n }\r\n\r\n if (this.anchorExtraAdjustment()) {\r\n adjustment += this.anchorExtraAdjustment()!;\r\n }\r\n\r\n const bodyTop = this.document?.body?.getBoundingClientRect()?.top ?? 0;\r\n const hrefTop = this.document?.querySelector<HTMLElement>(anchor)?.getBoundingClientRect()?.top ?? 0;\r\n const scrollTop = bodyTop * -1 + hrefTop - adjustment;\r\n docElement.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n }\r\n }\r\n\r\n private navigateTo(href: string) {\r\n const siteBasePath = this.libConfig.siteSufix ?? '';\r\n const siteBasePathNoSlash = siteBasePath.replace(/\\//g, '');\r\n let noBaseHref = href;\r\n if (!this.libConfig?.skipDuplicationSufixRule) {\r\n if (href.startsWith(siteBasePathNoSlash)) {\r\n noBaseHref = href.replace(siteBasePathNoSlash, '');\r\n } else if (href.startsWith(siteBasePath)) {\r\n noBaseHref = href.replace(siteBasePath, '');\r\n }\r\n }\r\n if (this.libConfig?.customInternalLinkNavigation && this.libConfig.customInternalLinkNavigation(noBaseHref)) {\r\n return;\r\n }\r\n\r\n const [path, query] = noBaseHref.split('?');\r\n const queryParams: Record<string, any> = {};\r\n if (query) {\r\n const queryArray = query.split('&');\r\n queryArray.forEach((q) => {\r\n const arr = q.split('=');\r\n queryParams[arr[0]] = arr[1];\r\n });\r\n }\r\n // Força reload da pagina\r\n if (this.libConfig?.forcePageReload) {\r\n const fullUrl = path + (query ? '?' + query : '');\r\n window.location.href = fullUrl;\r\n return;\r\n }\r\n\r\n this.router.navigate([path], { queryParams: queryParams });\r\n }\r\n}\r\n","export enum RdsiteModalDrawerComponentStyle {\r\n DEFAULT = 'default',\r\n DRAWERDOCTOR = 'doctor-card',\r\n FORMFALLBACK = 'form-fallback',\r\n FILTERDOENCAS = 'filter-doencas',\r\n PHOTOGALLERY = 'photo-gallery',\r\n}\r\n","const getSiteUrl = (siteUrl: string = '', siteSufix: string = ''): string => {\r\n const baseUrl = siteUrl.endsWith('/') ? siteUrl.substring(0, siteUrl.length - 1) : siteUrl;\r\n const baseSufix = siteSufix.endsWith('/') ? siteSufix.substring(0, siteSufix.length - 1) : siteSufix;\r\n return `${baseUrl}${baseSufix}`;\r\n};\r\n\r\nexport { getSiteUrl };\r\n","function removeHtmlTags(content: string): string {\r\n content = content.replace(/<.*?>/g, '');\r\n return content;\r\n}\r\n\r\nexport { removeHtmlTags };\r\n","const checkSafariAgent = (): boolean => {\r\n const safariAgent = navigator.userAgent.includes('Safari');\r\n const chromeAgent = navigator.userAgent.includes('Chrome');\r\n return !chromeAgent && safariAgent;\r\n};\r\nexport { checkSafariAgent };\r\n","/**\r\n * Função que retorna um replacer personalizado para o JSON.stringify que resolve problemas de estruturas circulares durante a serialização.\r\n */\r\nexport function getCircularReplacer(customOptions?: {\r\n ignoreKeys?: string[]; // Chaves específicas a serem sempre ignoradas (ex: ['_request', 'parent'])\r\n maxDepth?: number; // Profundidade máxima de objetos aninhados (opcional)\r\n}) {\r\n const seen = new WeakSet();\r\n const options = {\r\n ignoreKeys: customOptions?.ignoreKeys || [],\r\n maxDepth: customOptions?.maxDepth || 100,\r\n };\r\n\r\n let depth = 0;\r\n\r\n return (key: string, value: any) => {\r\n // Ignora chaves específicas configuradas\r\n if (options.ignoreKeys.includes(key)) {\r\n return undefined;\r\n }\r\n\r\n // Controle de profundidade (opcional)\r\n if (key === '') {\r\n depth = 0; // Reinicia a profundidade na raiz\r\n } else {\r\n depth += 1; // Incrementa apenas quando descer na hierarquia\r\n }\r\n\r\n if (depth > options.maxDepth) {\r\n return typeof value === 'object' ? '[Object]' : value;\r\n }\r\n\r\n // Lida com referências circulares\r\n if (typeof value === 'object' && value !== null) {\r\n // Se já vimos este objeto, é uma referência circular\r\n if (seen.has(value)) {\r\n return undefined; // Exclui valores circulares\r\n }\r\n // Adiciona o objeto ao conjunto de objetos vistos\r\n seen.add(value);\r\n }\r\n\r\n return value;\r\n };\r\n}\r\n","/**\r\n * Função de hash djb2 para gerar chaves numéricas únicas\r\n *\r\n * @param str - String para gerar hash\r\n * @returns Número hash único e positivo\r\n */\r\nexport const djb2Hash = (str: string): number => {\r\n let hash = 5381; // Valor inicial do djb2 original\r\n if (str.length === 0) return hash;\r\n\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i);\r\n hash = (hash << 5) + hash + char; // hash * 33 + char\r\n hash = hash & hash; // Converte para 32bit integer\r\n }\r\n\r\n return Math.abs(hash);\r\n};\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformBrowser, Location } from '@angular/common';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LogService {\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private platformId = inject(PLATFORM_ID);\r\n private location = inject(Location);\r\n\r\n logMsg(msg: any, label?: string) {\r\n label = label ? `${label} ` : '';\r\n if (!isPlatformBrowser(this.platformId) || (isPlatformBrowser(this.platformId) && !this.libConfig?.production)) {\r\n console.log(`${label}${msg}`);\r\n }\r\n }\r\n\r\n logLoad(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, 'LOAD');\r\n }\r\n\r\n log404(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '404');\r\n }\r\n\r\n log500(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '500');\r\n }\r\n\r\n getPageURL() {\r\n return `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`;\r\n }\r\n}\r\n","/**\r\n * Converte JSON para query string.\r\n * @param params JSON\r\n */\r\nexport function toQueryParams(params: any): string {\r\n return params\r\n ? `?${Object.keys(params)\r\n .map((key) => key + '=' + params[key])\r\n .join('&')}`\r\n : '';\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { Observable } from 'rxjs';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\n/* Adiciona os Headers necessários para funcionamento do site back-end */\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpClientService {\r\n private platformId = inject(PLATFORM_ID);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private http = inject(HttpClient);\r\n private deviceService = inject(DeviceDetectorService);\r\n\r\n get<T = any>(url: string): Observable<T> {\r\n const headers = this.getHeaders();\r\n return this.http.get<T>(url, { headers });\r\n }\r\n\r\n post<T = any>(url: string, data?: any): Observable<T> {\r\n const headers = this.getHeaders();\r\n return this.http.post<T>(url, data, { headers });\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n const baseHeaders = new HttpHeaders()\r\n .set('x-origin-application', this.libConfig.xOriginApplication)\r\n .set('x-origin-channel', this.getOriginChannel())\r\n .set('x-origin-device', this.getOriginDevice());\r\n\r\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\r\n return baseHeaders.append(\r\n 'authorization',\r\n 'Basic ' + Buffer.from(`${this.libConfig.siteApi.auth.user}:${this.libConfig.siteApi.auth.password}`).toString('base64'),\r\n );\r\n } else {\r\n return baseHeaders.append('client_id', this.libConfig.client_id);\r\n }\r\n }\r\n\r\n private getOriginChannel(): string {\r\n return this.deviceService.isDesktop() ? 'desktop' : 'mobile';\r\n }\r\n\r\n private getOriginDevice(): string {\r\n return `app-${this.deviceService.getDeviceInfo().os}`;\r\n }\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { toQueryParams } from '../../helpers/toQueryParams.func';\r\nimport { HttpClientService } from '../http-client/http-client.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SiteBackendService {\r\n private httpClientService = inject(HttpClientService);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n siteApiUrl: string;\r\n\r\n constructor() {\r\n this.siteApiUrl = this.getApiUrl();\r\n }\r\n\r\n private getApiUrl(): string {\r\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\r\n return this.libConfig.siteApi.baseInternal;\r\n }\r\n return this.libConfig.siteApi.base;\r\n }\r\n\r\n /**\r\n * GET para qualquer endpoint do back-end do site.\r\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\r\n * @param params - Parâmetros opcionais para a requisição.\r\n * @returns Observable que emite os dados retornados pelo back-end.\r\n */\r\n get<T = any>(path: string, params?: any): Observable<T> {\r\n return this.httpClientService.get<T>(`${this.siteApiUrl}${path}${toQueryParams(params)}`);\r\n }\r\n\r\n /**\r\n * POST para qualquer endpoint do back-end do site.\r\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\r\n * @param params - Parâmetros opcionais para a requisição.\r\n * @returns Observable que emite os dados retornados pelo back-end.\r\n */\r\n post<T = any>(path: string, params?: any): Observable<T> {\r\n return this.httpClientService.post<T>(`${this.siteApiUrl}${path}`, params);\r\n }\r\n}\r\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { LogService } from '../services/log/log.service';\r\nimport { SiteBackendService } from '../services/site-back-end/site-back-end.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n private logService = inject(LogService);\r\n private siteBackendService = inject(SiteBackendService);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const queryParams = req.params.keys().length ? `?${req.params.toString()}` : '';\r\n const requestUrl = `${req.url}${queryParams}`;\r\n return next.handle(req).pipe(\r\n catchError((error) => {\r\n this.logService.logMsg(`REQUEST ERROR => ${req.method} ${requestUrl}`, 'ERROR_INTERCEPTOR');\r\n\r\n if (isPlatformBrowser(this.platformId) && !req.url.includes('/log/error')) {\r\n const errorMessage = typeof error === 'string' ? error : error instanceof Error ? error.message : JSON.stringify(error);\r\n\r\n this.siteBackendService\r\n .post('log/error', {\r\n error: errorMessage,\r\n origin: window.location.href,\r\n url: req.urlWithParams,\r\n })\r\n .subscribe();\r\n }\r\n\r\n return throwError(() => error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { differenceInMilliseconds } from 'date-fns';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { LogService } from '../services/log/log.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LogInterceptor implements HttpInterceptor {\r\n private logService = inject(LogService);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const requestId = uuidv4();\r\n const startTime = Date.now();\r\n const queryParams = req.params.keys().length ? `?${req.params.toString()}` : '';\r\n const requestUrl = `${req.url}${queryParams}`;\r\n\r\n this.logService.logMsg(`REQUEST ${requestId} => ${req.method} ${requestUrl}`, 'INTERCEPTOR');\r\n\r\n return next.handle(req).pipe(\r\n tap((response) => {\r\n const res = response as HttpResponse<any>;\r\n if (res?.status) {\r\n const elapsedTime = differenceInMilliseconds(Date.now(), startTime);\r\n this.logService.logMsg(\r\n `RESPONSE ${requestId} => ${req.method} ${requestUrl} | Duração: ${elapsedTime}ms | Status: ${res.status} - ${res.statusText} | Body: ${!!res.body}`,\r\n 'INTERCEPTOR',\r\n );\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import { inject, Injectable, PLATFORM_ID, TransferState, makeStateKey, StateKey } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap, of } from 'rxjs';\r\nimport { isPlatformServer, isPlatformBrowser } from '@angular/common';\r\nimport { LIB_CONFIG } from '../tokens/LibConfig';\r\nimport { djb2Hash } from '../helpers/djb2Hash.func';\r\n\r\n/**\r\n * Cria uma chave numérica única para o cache\r\n * Gera um hash baseado em método + URL + parâmetros\r\n */\r\nfunction createCacheKey(req: HttpRequest<any>, url: string): string {\r\n const method = req.method;\r\n const params = req.params.toString();\r\n\r\n // Combina método, URL e parâmetros\r\n const keyString = [method, url, params].filter((part) => part.length > 0).join('::');\r\n\r\n // Gera hash numérico único\r\n const hashNumber = djb2Hash(keyString);\r\n\r\n return hashNumber.toString();\r\n}\r\n\r\n/**\r\n * Cria StateKey para o TransferState\r\n */\r\nfunction getTransferStateKey(req: HttpRequest<any>, url: string): StateKey<any> {\r\n const cacheKey = createCacheKey(req, url);\r\n return makeStateKey<any>(cacheKey);\r\n}\r\n\r\n/**\r\n * Interceptor para resolver o problema de TransferState com urls diferentes\r\n *\r\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.\r\n *\r\n * Solução:\r\n * - Server: Usa url interna, mas salva no TransferState baseado na url externa\r\n * - Client: Verifica TransferState usando url externa antes de fazer alguma requisição\r\n *\r\n * Dessa forma é possivel fazer o uso do TransferState mesmo com urls diferentes (\"baseInternal\" no server e \"base\" no client).\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TransferStateUrlInterceptor implements HttpInterceptor {\r\n private platformId = inject(PLATFORM_ID);\r\n private transferState = inject(TransferState);\r\n private libConfig = inject(LIB_CONFIG);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (isPlatformServer(this.platformId)) {\r\n return this.handleServerRequest(req, next);\r\n } else if (isPlatformBrowser(this.platformId)) {\r\n return this.handleClientRequest(req, next);\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n\r\n /**\r\n * Filtra headers da resposta baseado na configuração no LibConfig\r\n */\r\n private filterHeaders(responseHeaders: any): Record<string, string> {\r\n const includeHeaders = this.libConfig.transferState?.includeHeaders;\r\n\r\n if (!includeHeaders || includeHeaders.length === 0) {\r\n return {};\r\n }\r\n\r\n // Filtra apenas os headers configurados\r\n const filteredHeaders: Record<string, string> = {};\r\n includeHeaders.forEach((headerName) => {\r\n const headerValue = responseHeaders.get(headerName.toLowerCase());\r\n if (headerValue) {\r\n filteredHeaders[headerName.toLowerCase()] = headerValue;\r\n }\r\n });\r\n\r\n return filteredHeaders;\r\n }\r\n\r\n private handleServerRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const siteApi = this.libConfig.siteApi;\r\n\r\n // Para urls internas\r\n if (req.url.startsWith(siteApi.baseInternal)) {\r\n const externalUrl = req.url.replace(siteApi.baseInternal, siteApi.base);\r\n const stateKey = getTransferStateKey(req, externalUrl);\r\n\r\n return next.handle(req).pipe(\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n const filteredHeaders = this.filterHeaders(event.headers);\r\n\r\n // Salva no TransferState baseado na url externa\r\n this.transferState.set(stateKey, {\r\n body: event.body,\r\n status: event.status,\r\n statusText: event.statusText,\r\n headers: filteredHeaders,\r\n });\r\n }\r\n }),\r\n );\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n\r\n private handleClientRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const siteApi = this.libConfig.siteApi;\r\n\r\n // Para urls externas\r\n if (req.url.startsWith(siteApi.base)) {\r\n const stateKey = getTransferStateKey(req, req.url);\r\n const cachedResponse = this.transferState.get(stateKey, null);\r\n\r\n if (cachedResponse) {\r\n this.transferState.remove(stateKey);\r\n\r\n // Retorna resposta do TransferState\r\n return of(\r\n new HttpResponse({\r\n body: cachedResponse.body,\r\n status: cachedResponse.status,\r\n statusText: cachedResponse.statusText,\r\n headers: cachedResponse.headers,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n}\r\n","export enum EnumDoencaTaxonomy {\r\n DOENCAS_CAT = 'doencas_cat',\r\n DOENCAS_TAG = 'doencas_tag',\r\n}\r\n\r\nexport enum EnumDoencaTaxonomyCat {\r\n DOENCA = 'doencas',\r\n SINTOMA = 'sintomas',\r\n}\r\n\r\nexport interface DoencaTaxonomy {\r\n id: number;\r\n name: string;\r\n slug: string;\r\n taxonomy: EnumDoencaTaxonomy;\r\n}\r\n\r\nexport interface TaxonomiasDoencasList {\r\n doencas_cat: DoencaTaxonomy[];\r\n doencas_tag: DoencaTaxonomy[];\r\n}\r\n","import { TemplateRef } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { FilterOption, FilterSectionBase } from './filter-planos-convenios.model';\r\nimport { FilterControl } from './filter-section.type';\r\n\r\nexport enum FilterType {\r\n INPUT = 'input',\r\n SELECT = 'select',\r\n CHECKBOX_GROUP = 'checkbox-group',\r\n RADIO_GROUP = 'radio-group',\r\n CUSTOM = 'custom',\r\n}\r\n\r\n// Input\r\nexport interface InputFilterConfig {\r\n name: string;\r\n placeholder?: string;\r\n iconName?: string;\r\n control: FilterControl;\r\n options?: FilterOption[];\r\n}\r\n\r\n// Select\r\nexport interface SelectFilterConfig {\r\n name: string;\r\n label?: string;\r\n placeholder?: string;\r\n includeDefaultOption?: boolean;\r\n defaultOptionText?: string;\r\n control: FilterControl;\r\n options?: FilterOption[];\r\n}\r\n\r\n// Checkbox Group\r\nexport interface CheckboxGroupFilterConfig {\r\n name: string;\r\n title?: string;\r\n subtitle?: string;\r\n description?: string;\r\n control: FormControl<any[]>;\r\n options: FilterOption[];\r\n}\r\n\r\n// Radio Group\r\nexport interface RadioGroupFilterConfig {\r\n name: string;\r\n title?: string;\r\n control: FilterControl;\r\n options: FilterOption[];\r\n}\r\n\r\n// Custom\r\nexport interface CustomFilterConfig {\r\n template: TemplateRef<any>;\r\n control?: any;\r\n context?: any;\r\n options?: FilterOption[];\r\n count?: number;\r\n}\r\n\r\n// Interfaces completas por tipo\r\nexport interface InputFilterSection extends FilterSectionBase<FilterType.INPUT, InputFilterConfig> {}\r\nexport interface SelectFilterSection extends FilterSectionBase<FilterType.SELECT, SelectFilterConfig> {}\r\nexport interface CheckboxGroupFilterSection extends FilterSectionBase<FilterType.CHECKBOX_GROUP, CheckboxGroupFilterConfig> {}\r\nexport interface RadioGroupFilterSection extends FilterSectionBase<FilterType.RADIO_GROUP, RadioGroupFilterConfig> {}\r\nexport interface CustomFilterSection extends FilterSectionBase<FilterType.CUSTOM, CustomFilterConfig> {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CtaWrapper } from '../../models/cta-wrapper.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorService {\r\n ctas = new BehaviorSubject<CtaWrapper>({});\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { LogService } from '../log/log.service';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\nexport interface MapBoxGeocodingParams {\r\n autocomplete?: boolean;\r\n bbox?: string; // minLon, minLat, maxLon, maxLat\r\n country?: string; // country codes separated by commas\r\n fuzzyMatch?: boolean;\r\n language?: string;\r\n limit?: number; // default: 5, max: 10\r\n proximity?: string; // longitude, latitude\r\n routing?: boolean;\r\n // Types can be comma separated\r\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\r\n [propName: string]: any;\r\n}\r\n\r\nexport interface MapBoxReverseGeocodingParams {\r\n country?: string; // country codes separated by commas\r\n language?: string;\r\n limit?: number; // default: 5, max: 10\r\n reverseMode?: 'distance' | 'score';\r\n routing?: boolean;\r\n // Types can be comma separated\r\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\r\n [propName: string]: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapBoxService {\r\n private readonly http = inject(HttpClient);\r\n private readonly logService = inject(LogService);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n private mapboxAccessToken = this.libConfig.mapboxAccessToken;\r\n private mapboxSSRAccessToken = this.libConfig.mapboxSSRAccessToken;\r\n private mapboxApiUrl = 'https://api.mapbox.com';\r\n private geocodingEp = 'search/geocode/v6';\r\n\r\n /**\r\n * Busca geocalizada por nome do local.\r\n * Ex.: barra da tijuca, rio de janeiro - rio de janeiro, brasil\r\n * @param query nome de local para a busca\r\n * @param params parâmetros opcionais de busca e filtro\r\n */\r\n forwardGeocoding(query: string, params: MapBoxGeocodingParams = {}, logContext?: string): Observable<any> {\r\n this.logMapbox('forwardGeocoding', logContext);\r\n if (query.length >= 256) {\r\n return throwError(() => 'Query length exceeds 255 characters.');\r\n }\r\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/forward?q=${query}`;\r\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\r\n return this.http.get(url, { params, headers: this.getHeaders() });\r\n }\r\n\r\n /**\r\n * Busca local por longitude e latitude\r\n * @param lng formato longitude\r\n * @param lat formato latitude\r\n * @param params parâmetros opcionais de busca e filtro\r\n */\r\n reverseGeocoding(lng: string, lat: string, params: MapBoxReverseGeocodingParams = {}, logContext?: string): Observable<any> {\r\n this.logMapbox('reverseGeocoding', logContext);\r\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/reverse?longitude=${lng}&latitude=${lat}`;\r\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\r\n return this.http.get(url, { params });\r\n }\r\n\r\n private logMapbox(callerFunction: string, context = 'no-context') {\r\n const platform = isPlatformServer(this.platformId) ? 'server' : 'browser';\r\n this.logService.logMsg(`${platform} - ${callerFunction} - ${context}`, 'MAPBOX');\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('Referrer-Policy', 'origin');\r\n }\r\n}\r\n","import { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { BehaviorSubject, map, Observable } from 'rxjs';\r\nimport { MapBoxReverseGeocodingParams, MapBoxService } from '../mapbox/mapbox.service';\r\nimport { LogService } from '../log/log.service';\r\nimport { checkSafariAgent } from '../../helpers/check-safari-agent.func';\r\nimport { getCircularReplacer } from '../../helpers/getCircularReplacer.func';\r\n\r\nexport enum GeolocationPermissions {\r\n GRANTED = 'granted',\r\n PROMPT = 'prompt',\r\n DENIED = 'denied',\r\n}\r\n\r\nexport interface Geolocation {\r\n lat: number;\r\n lng: number;\r\n}\r\n\r\nexport interface Address {\r\n city: string;\r\n state: {\r\n name: string;\r\n shortCode: string;\r\n };\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GeolocService {\r\n private readonly document = inject<Document>(DOCUMENT);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private mapboxService = inject(MapBoxService);\r\n private readonly logService = inject(LogService);\r\n\r\n private _mapboxGeocodingParams: MapBoxReverseGeocodingParams = {\r\n types: 'place',\r\n limit: 1,\r\n language: 'pt-BR',\r\n country: 'BR',\r\n };\r\n\r\n private _hasConsent = false;\r\n private _switchStatus = false;\r\n public get switchStatus(): boolean {\r\n return this._switchStatus;\r\n }\r\n private _address: Address | null = null;\r\n public get address(): Address | null {\r\n return this._address;\r\n }\r\n\r\n private _permission: PermissionState = GeolocationPermissions.PROMPT;\r\n public get permission(): PermissionState {\r\n return this._permission;\r\n }\r\n\r\n public geolocation: BehaviorSubject<Geolocation | null> = new BehaviorSubject<Geolocation | null>(null);\r\n public isChecked: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); // Emite true quando o geoloc está estável\r\n\r\n private _isSafariAgent: boolean = false;\r\n private _disableSwitch = false;\r\n public get disableSwitch(): boolean {\r\n return this._disableSwitch;\r\n }\r\n\r\n constructor() {\r\n if (isPlatformServer(this.platformId)) {\r\n this.isChecked.next(true);\r\n return;\r\n }\r\n\r\n this._isSafariAgent = checkSafariAgent();\r\n if (this._isSafariAgent) {\r\n this._hasConsent = this.checkACookieExists('geolocation_consent');\r\n this.initGeolocation(this._hasConsent);\r\n return;\r\n }\r\n\r\n navigator?.permissions\r\n ?.query({ name: 'geolocation' })\r\n .then((permission) => {\r\n this._permission = permission.state;\r\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\r\n\r\n permission.onchange = () => {\r\n this._permission = permission.state;\r\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\r\n };\r\n })\r\n .catch((error) => {\r\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\r\n this._permission = GeolocationPermissions.DENIED;\r\n this._disableSwitch = true;\r\n this.initGeolocation(false);\r\n });\r\n }\r\n\r\n initGeolocation(geolocAllowed = false): void {\r\n this._switchStatus = true;\r\n if (geolocAllowed) {\r\n this.getCurrentPosition().subscribe({\r\n next: (position) => {\r\n this._disableSwitch = false;\r\n this.setGeolocation(position);\r\n this.setConsentCookie(true, 3650);\r\n this._hasConsent = true;\r\n this._permission = GeolocationPermissions.GRANTED;\r\n },\r\n error: () => {\r\n if (this._permission === GeolocationPermissions.DENIED) {\r\n this._disableSwitch = true;\r\n this.setConsentCookie(false, 15);\r\n }\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._hasConsent = false;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n },\r\n });\r\n } else {\r\n if (this.permission === GeolocationPermissions.DENIED) {\r\n this._disableSwitch = true;\r\n this.setConsentCookie(false, 15);\r\n }\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._hasConsent = false;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n }\r\n }\r\n\r\n private getCurrentPosition(): Observable<GeolocationPosition> {\r\n return new Observable((observer) => {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n observer.next(position);\r\n observer.complete();\r\n },\r\n (error) => observer.error(error),\r\n { enableHighAccuracy: true },\r\n );\r\n });\r\n }\r\n\r\n private setGeolocation(position: GeolocationPosition): void {\r\n if (position) {\r\n if (position.coords.latitude === this.geolocation.value?.lat && position.coords.longitude === this.geolocation.value?.lng) return;\r\n\r\n this.geolocation.next({\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n });\r\n\r\n this.getMapboxAdress()\r\n .pipe(\r\n map((response) => {\r\n const city = response?.features[0]?.properties?.name;\r\n const state = {\r\n name: response?.features[0]?.properties?.context?.region?.name,\r\n shortCode: response?.features[0]?.properties?.context?.region?.region_code,\r\n };\r\n return { city, state };\r\n }),\r\n )\r\n .subscribe({\r\n next: (response) => {\r\n this._address = response;\r\n this._switchStatus = true;\r\n this.isChecked.next(true);\r\n },\r\n error: (error) => {\r\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\r\n this._switchStatus = false;\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this.isChecked.next(true);\r\n },\r\n });\r\n } else {\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n }\r\n }\r\n\r\n private getMapboxAdress(): Observable<any> {\r\n const lng = `${this.geolocation.value?.lng}`;\r\n const lat = `${this.geolocation.value?.lat}`;\r\n return this.mapboxService.reverseGeocoding(lng, lat, this._mapboxGeocodingParams, 'geolocalizacao.service getMapboxAdress');\r\n }\r\n\r\n checkACookieExists(name: string): boolean {\r\n if (isPlatformServer(this.platformId) || typeof this.document === 'undefined' || !this.document?.cookie) {\r\n return false;\r\n }\r\n return this.document.cookie\r\n .split(';')\r\n .map((item) => item.trim())\r\n .some((item) => item.trim().startsWith(name));\r\n }\r\n\r\n private setConsentCookie(status: boolean, days: number): void {\r\n if (this.getCookieValue('geolocation_consent') !== status.toString()) {\r\n const lifetime = new Date(Date.now() + days * 86400000).toUTCString();\r\n this.document.cookie = `geolocation_consent=${status}; path=/; expires=${lifetime}; SameSite=None; Secure`;\r\n }\r\n }\r\n\r\n private getCookieValue(prop: string): string {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const value = this.document.cookie\r\n .split(';')\r\n .map((item) => item.trim())\r\n .find((item) => item.startsWith(`${prop}=`));\r\n\r\n return value ? value.slice(prop.length + 1) : '';\r\n }\r\n return '';\r\n }\r\n}\r\n","import { ElementRef, Injectable, TemplateRef, ModelSignal, signal } from '@angular/core';\r\nimport { RdsiteModalDrawerComponentStyle } from '../../enums/RdsiteModalDrawerComponentStyle.enum';\r\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\r\n\r\nexport abstract class AbstractModalDrawerComponent {\r\n abstract sheet: HTMLElement | null;\r\n abstract sheetContents: HTMLElement | null;\r\n abstract draggableArea: HTMLElement | null;\r\n abstract sheetHeight: number | null;\r\n abstract dragPosition: number | null;\r\n abstract maxHeight: number | null;\r\n abstract closeHeight: number | null;\r\n abstract rdsiteModalComponentStyle: any;\r\n abstract id: ModelSignal<string>;\r\n abstract modalContent: ModelSignal<ElementRef | TemplateRef<any>> | null;\r\n abstract componentStyle: ModelSignal<any>;\r\n abstract modal: HTMLDialogElement;\r\n abstract setSheetHeight(value: number): void;\r\n abstract setIsSheetShown(isShown: boolean): void;\r\n abstract openSheet(): void;\r\n abstract closeSheet(): void;\r\n abstract touchPosition(event: any): void;\r\n abstract onDragStart(event: any): void;\r\n abstract onDragMove(event: any): void;\r\n abstract onDragEnd(): void;\r\n abstract reset(): void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalDrawerService {\r\n reference: AbstractModalDrawerComponent | null = null;\r\n\r\n firstInteraction = signal(false);\r\n maxTries = 10;\r\n delay = 200;\r\n\r\n open() {\r\n this.firstInteraction.set(true);\r\n executeWithRetry(\r\n () => {\r\n this.reference?.openSheet();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setReference(element: AbstractModalDrawerComponent) {\r\n this.reference = element;\r\n }\r\n\r\n setContent(content: ElementRef | TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalContent?.set(content);\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setStyle(style: RdsiteModalDrawerComponentStyle) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.componentStyle.set(style);\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setHeight(value: number) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.maxHeight = value;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n close() {\r\n executeWithRetry(\r\n () => {\r\n this.reference?.closeSheet();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n}\r\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\r\nimport { PrivacyToolsConfigOptions, PrivacyToolsCookieBanner } from '../../models/privacy-tools/privacy-tools.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PrivacyToolsService {\r\n document = inject<Document>(DOCUMENT);\r\n platformId = inject(PLATFORM_ID);\r\n\r\n cookieBannerScriptId = 'PrivacyToolsScript';\r\n cookieBannerStyleId = 'PrivacyToolsStyle';\r\n cookieBannerScriptElement: HTMLScriptElement | null = null;\r\n configOptions: PrivacyToolsConfigOptions = {};\r\n cookieConsent: any = null;\r\n\r\n /* Config */\r\n public config(options: PrivacyToolsConfigOptions) {\r\n this.configOptions = options;\r\n }\r\n\r\n /* Setup cookie Banner */\r\n public setupCookieBanner(unidadeBasePath: string) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const banner = this.configOptions?.cookieBanners?.find((banner) => banner.basePath.includes(unidadeBasePath));\r\n\r\n if (banner) {\r\n this.addCookieBanner(banner);\r\n }\r\n }\r\n }\r\n\r\n public openCookieBanner() {\r\n if (this.cookieConsent && this.cookieBannerScriptElement) {\r\n this.cookieConsent.privacyToolsShowCookieNotice();\r\n }\r\n }\r\n\r\n /* Add cookie banner style and script */\r\n private addCookieBanner(banner: PrivacyToolsCookieBanner) {\r\n this.cookieBannerScriptElement = null;\r\n this.addCookieBannerStyle(banner.styleSrc);\r\n this.addCookieBannerScript(banner.scriptSrc);\r\n }\r\n\r\n /* Add cookie banner style. */\r\n public addCookieBannerStyle(src: string) {\r\n if (isPlatformServer(this.platformId)) return;\r\n\r\n this.document.getElementById('byRemovePortal')?.remove();\r\n\r\n const oldStyle = this.document.getElementById(this.cookieBannerStyleId);\r\n\r\n if (oldStyle) {\r\n oldStyle.remove();\r\n }\r\n\r\n const style = this.document.createElement('link');\r\n style.id = this.cookieBannerStyleId;\r\n style.rel = 'stylesheet';\r\n style.type = 'text/css';\r\n style.href = src;\r\n style.media = 'none';\r\n\r\n style.addEventListener('load', () => {\r\n style.media = 'all';\r\n });\r\n\r\n this.document.body.appendChild(style);\r\n }\r\n\r\n /* Add cookie banner script. */\r\n public addCookieBannerScript(src: string) {\r\n if (isPlatformServer(this.platformId) || typeof window === 'undefined') return;\r\n\r\n (window as any)['cookieconsent'] = null;\r\n\r\n const oldScript = this.document.getElementById(this.cookieBannerScriptId);\r\n\r\n if (oldScript) {\r\n oldScript.remove();\r\n }\r\n const script = this.document.createElement('script');\r\n script.id = this.cookieBannerScriptId;\r\n script.src = src;\r\n\r\n script.addEventListener('load', () => {\r\n this.cookieBannerScriptElement = script;\r\n this.cookieConsent = (window as any)['cookieconsent'];\r\n (window as any)['portalBanner']?.call();\r\n });\r\n\r\n this.document.body.appendChild(script);\r\n }\r\n}\r\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { Location } from '@angular/common';\r\n\r\nimport * as he from 'he';\r\n\r\nimport { SocialMetaProperties } from '../../models/social-meta-properties.model';\r\nimport { BreadcrumbsItems } from '../../models/breadcrumbs/breadcrumbs-items.model';\r\nimport { BreadcrumbsJsonItem } from '../../models/breadcrumbs/breadcrumbs-json-item.model';\r\nimport { SeoData } from '../../models/seo/seo-data.model';\r\nimport { SeoUnidade } from '../../models/seo/seo-unidade.model';\r\nimport { WpPost } from '../../models/wordpress/post/post.model';\r\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\r\nimport { removeHtmlTags } from '../../helpers/removeHtmlTags.func';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SeoService {\r\n private title = inject(Title);\r\n private meta = inject(Meta);\r\n private location = inject(Location);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private document = inject<Document>(DOCUMENT);\r\n\r\n public separator = ' - ';\r\n public defaultTitle = 'Rede D’Or';\r\n public activeDescription!: string;\r\n public sameAs = [\r\n 'https://www.facebook.com/rededor/',\r\n 'https://www.instagram.com/rededor_oficial/',\r\n 'https://www.linkedin.com/company/rededor-saoluiz',\r\n 'https://twitter.com/rededor',\r\n ];\r\n public twitterUser = '@rededor';\r\n\r\n private canonicalTag!: HTMLLinkElement;\r\n private jsonTag!: HTMLScriptElement;\r\n private jsonTagId = 'seoJSON';\r\n private breadcrumbsJsonTag!: HTMLScriptElement;\r\n private breadcrumbsJsonTagId = 'breadcrumbsJSON';\r\n\r\n public unidade: any = null;\r\n public unidadeName: string = '';\r\n public unidadePath: string = '';\r\n public unidadeSlug: string = '';\r\n\r\n public customJsonType: any[] = [];\r\n\r\n public setFullSeo(data: SeoData) {\r\n this.setTitle(data.title.text, !!data.title.sub);\r\n this.setDescription(data.description);\r\n this.setCanonicalHref(data.canonical);\r\n this.setPageJson();\r\n this.setSocialTags(data.socialTags);\r\n }\r\n\r\n /**\r\n * Define tag description da página\r\n * @param content conteúdo da descrição <string>\r\n */\r\n public setDescription(content: string): SeoService {\r\n const descTag = this.meta.getTag(\"name='description'\");\r\n if (content) {\r\n content = he.decode(content);\r\n content = removeHtmlTags(content);\r\n } else {\r\n content = '';\r\n }\r\n this.activeDescription = content;\r\n const tagContent = { name: 'description', content };\r\n if (descTag) {\r\n this.meta.updateTag(tagContent);\r\n } else {\r\n this.meta.addTag(tagContent);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Define meta tags para a página\r\n * @param tag nome da tag meta\r\n * @param content conteúdo da tag meta\r\n * @param type tipo de tag meta\r\n */\r\n public setMetaTag(tag: string, content: string, type = 'name') {\r\n const metatag = this.meta.getTag(`${type}='${tag}'`);\r\n content = he.decode(content);\r\n content = removeHtmlTags(content);\r\n const tagContent = {\r\n [type]: tag,\r\n content,\r\n };\r\n if (!metatag) {\r\n this.meta.addTag(tagContent);\r\n } else {\r\n this.meta.updateTag(tagContent);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove meta tags da página\r\n * @param tag nome da tag meta\r\n * @param content conteúdo da tag meta\r\n * @param attr atributo da tag meta\r\n * @param type tipo de tag meta\r\n */\r\n public removeTag(tag: string, content: string, attr: string, type = 'name') {\r\n const metatag = this.meta.getTag(`${type}='${tag}'`);\r\n if (metatag) {\r\n this.meta.removeTag(`${attr}=${content}`);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Define meta tags para Facebook\r\n * @param title título para o facebook\r\n * @param description descrição para o facebook\r\n * @param url url para definição do facebook\r\n * @param img imagem para definição no facebook\r\n */\r\n public setMetaFacebook(title: string, description: string, url: string, img: string | null = null) {\r\n this.setMetaTag('og:url', url, 'property');\r\n this.setMetaTag('og:title', title, 'property');\r\n this.setMetaTag('og:description', description, 'property');\r\n this.setMetaTag('og:type', 'website', 'property');\r\n this.setMetaTag('og:image', img ?? '', 'property');\r\n }\r\n\r\n /**\r\n * Define meta tags para Twitter\r\n * @param title título para o twitter\r\n * @param description descrição para o twitter\r\n * @param url url para o twitter\r\n * @param img imagem para definição no twitter\r\n */\r\n public setMetaTwitter(title: string, description: string, url: string, img: string | null = null) {\r\n this.setMetaTag('twitter:site', url, 'name');\r\n this.setMetaTag('twitter:title', title, 'name');\r\n this.setMetaTag('twitter:description', description, 'name');\r\n this.setMetaTag('twitter:image', img ?? '', 'name');\r\n }\r\n\r\n /**\r\n * Define tags de redes sociais (Twitter e Open Graph)\r\n * @param properties\r\n */\r\n setSocialTags(properties?: SocialMetaProperties) {\r\n const pagePath = this.location.path();\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n let defaultProperties: SocialMetaProperties = {\r\n twitterCard: 'summary',\r\n twitterSite: this.twitterUser,\r\n type: 'website',\r\n title: this.getTitle(),\r\n description: this.activeDescription || '',\r\n url: `${siteurl}${pagePath}`,\r\n image: this.libConfig?.logoPath ? `${siteurl}${this.libConfig.logoPath}` : 'https://www.rededorsaoluiz.com.br/assets/imgs/logo-rededor-blue.png',\r\n };\r\n if (properties) {\r\n defaultProperties = { ...defaultProperties, ...properties };\r\n }\r\n this.setMetaTag('twitter:card', defaultProperties.twitterCard || '', 'name')\r\n .setMetaTag('twitter:site', defaultProperties.twitterSite || '', 'name')\r\n .setMetaTag('og:type', defaultProperties.type || '', 'property')\r\n .setMetaTag('og:title', defaultProperties.title || '', 'property')\r\n .setMetaTag('og:description', defaultProperties.description || '', 'property')\r\n .setMetaTag('og:url', defaultProperties.url || '', 'property')\r\n .setMetaTag('og:image', defaultProperties.image || '', 'property');\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Define título da página\r\n * @param title título da página <string>\r\n * @param sub Se é subsite acrescenta unidade <boolean>\r\n */\r\n public setTitle(title: string, sub = false) {\r\n if (title && title !== '') {\r\n title = he.decode(title);\r\n title = removeHtmlTags(title);\r\n if (sub) {\r\n title = he.decode(`${title}${this.separator}${this.unidadeName}`);\r\n }\r\n this.title.setTitle(title);\r\n }\r\n return this;\r\n }\r\n\r\n /** Obtem título atual da página */\r\n public getTitle(): string {\r\n return this.title.getTitle();\r\n }\r\n\r\n public set404Title(component: string = 'Default Component') {\r\n if (component && component !== '') {\r\n component = he.decode(component);\r\n component = removeHtmlTags(component);\r\n if (this.unidadeName) {\r\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\r\n }\r\n }\r\n const title = `Erro 404 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\r\n this.title.setTitle(title);\r\n return this;\r\n }\r\n\r\n public set500Title(component: string = 'Default Component') {\r\n if (component && component !== '') {\r\n component = he.decode(component);\r\n component = removeHtmlTags(component);\r\n if (this.unidadeName) {\r\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\r\n }\r\n }\r\n const title = `Erro 500 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\r\n this.title.setTitle(title);\r\n return this;\r\n }\r\n\r\n /** Cria tag script para JSON de breadcrumbs */\r\n private createBreadcrumbsJSONTag(): HTMLScriptElement {\r\n const tag: HTMLScriptElement = this.document.createElement('script');\r\n tag.id = this.breadcrumbsJsonTagId;\r\n tag.type = 'application/ld+json';\r\n this.document.head.appendChild(tag);\r\n this.breadcrumbsJsonTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\r\n private getBreadcrumbsJSONTag(): HTMLScriptElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLScriptElement;\r\n if (elem && elem.id === this.breadcrumbsJsonTagId) {\r\n return elem;\r\n }\r\n }\r\n return this.createBreadcrumbsJSONTag();\r\n }\r\n\r\n /** Define o JSON de breadcrumbs da página */\r\n public setBreadcrumbsJson(items: BreadcrumbsItems[]) {\r\n this.breadcrumbsJsonTag = this.getBreadcrumbsJSONTag();\r\n const json = {\r\n '@context': 'http://schema.org',\r\n '@type': 'BreadcrumbList',\r\n itemListElement: this.getJsonBreadcrumbItems(items),\r\n };\r\n this.breadcrumbsJsonTag.innerHTML = JSON.stringify(json);\r\n return this;\r\n }\r\n\r\n /** Converte itens do breadcrumb em itens do JSON */\r\n private getJsonBreadcrumbItems(items: BreadcrumbsItems[]): BreadcrumbsJsonItem[] {\r\n const jsonItems = [\r\n {\r\n '@type': 'ListItem',\r\n position: 1,\r\n item: { '@id': this.getBreadcrumbItemUrl(['/']), name: he.encode('Página Inicial') },\r\n } as BreadcrumbsJsonItem,\r\n ];\r\n items.forEach((item, i) => {\r\n const jsonItem: BreadcrumbsJsonItem = {\r\n '@type': 'ListItem',\r\n position: i + 2,\r\n item: { '@id': this.getBreadcrumbItemUrl(item?.url || []), name: he.encode(item.label) },\r\n };\r\n jsonItems.push(jsonItem);\r\n });\r\n return jsonItems;\r\n }\r\n\r\n /**\r\n * Monta a url do item de breadcrumb proveniente do array de urls\r\n * ou do caminho da própria página, conforme caso do último item.\r\n */\r\n private getBreadcrumbItemUrl(url: string[]): string {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n if (!url || url.length <= 0) {\r\n const pagePath = this.location.path();\r\n return `${siteurl}${pagePath}`;\r\n }\r\n url = url.filter((u) => u !== this.unidadePath);\r\n const unidadePath = this.getUnidadePath();\r\n const fullPath = `${unidadePath}/${url.join('/').replace(/^\\/?/, '')}`;\r\n return `${siteurl}${fullPath}`.replace(/\\/$/, '');\r\n }\r\n\r\n /** Cria tag script para o JSON de SEO */\r\n private createJSONTag(): HTMLScriptElement {\r\n const tag: HTMLScriptElement = this.document.createElement('script');\r\n tag.id = this.jsonTagId;\r\n tag.type = 'application/ld+json';\r\n this.document.head.appendChild(tag);\r\n this.jsonTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\r\n private getJSONTag(): HTMLScriptElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLScriptElement;\r\n if (elem && elem.id === this.jsonTagId) {\r\n return elem;\r\n }\r\n }\r\n return this.createJSONTag();\r\n }\r\n\r\n /** Define JSON para SEO somente quando no servidor */\r\n public setPageJson() {\r\n this.jsonTag = this.getJSONTag();\r\n\r\n const baseGraph = [this.getOrgJson(), this.getWebsiteJson(), this.getWebpageJson()];\r\n\r\n const extendedGraph = this.customJsonType.length ? [...baseGraph, ...this.customJsonType] : baseGraph;\r\n\r\n this.customJsonType = [];\r\n\r\n const json = {\r\n '@context': 'http://schema.org',\r\n '@graph': extendedGraph,\r\n };\r\n\r\n this.jsonTag.innerHTML = JSON.stringify(json);\r\n\r\n return this;\r\n }\r\n\r\n /** Obtem JSON da Organização */\r\n private getOrgJson() {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return {\r\n '@type': 'MedicalOrganization',\r\n '@id': `${siteurl}#medicalorganization`,\r\n name: this.defaultTitle,\r\n keywords: this.libConfig?.keywords,\r\n url: `${siteurl}`,\r\n sameAs: this.sameAs,\r\n };\r\n }\r\n\r\n /** Obtem JSON do Website (portal, unidades, etc) */\r\n private getWebsiteJson() {\r\n const unidadePath = this.getUnidadePath();\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return {\r\n '@type': 'WebSite',\r\n '@id': `${siteurl}${unidadePath}#website`,\r\n url: `${siteurl}${unidadePath}`,\r\n name: this.unidadeName,\r\n keywords: this.libConfig?.keywords,\r\n };\r\n }\r\n\r\n /** Obtem Json da página */\r\n private getWebpageJson() {\r\n const unidadePath = this.getUnidadePath();\r\n const siteURL = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n const pagePath = `${siteURL}${this.location.path()}`;\r\n const desc = this.activeDescription ? this.activeDescription : '';\r\n return {\r\n '@type': 'WebPage',\r\n '@id': `${pagePath}#webpage`,\r\n url: pagePath,\r\n inLanguage: 'pt-BR',\r\n name: this.getTitle(),\r\n isPartOf: { '@id': `${siteURL}${unidadePath}#website` },\r\n about: { '@id': `${siteURL}#medicalorganization` },\r\n description: desc,\r\n };\r\n }\r\n\r\n private getUnidadePath() {\r\n let unidadePath = '';\r\n if (this.unidade && this.unidadePath) {\r\n unidadePath = this.unidade?.path === '/' ? '' : this.unidadePath?.substring(0, this.unidadePath?.length - 1);\r\n }\r\n return unidadePath;\r\n }\r\n\r\n /**\r\n * Obtém a URL canônica da página.\r\n * @returns A URL canônica da página.\r\n */\r\n public getCanonicalHref(): string {\r\n if (!this.canonicalTag) {\r\n this.canonicalTag = this.getCanonicalTag();\r\n }\r\n return this.canonicalTag.href;\r\n }\r\n\r\n /** Cria tag para links canonicals no head */\r\n private createCanonicalTag(): HTMLLinkElement {\r\n const tag = this.document.createElement('link');\r\n tag.setAttribute('rel', 'canonical');\r\n this.document.head.appendChild(tag);\r\n tag.setAttribute('href', this.document.URL);\r\n this.canonicalTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para link canonical existe ou cria se não houver. */\r\n private getCanonicalTag(): HTMLLinkElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLLinkElement;\r\n if (elem && elem.tagName === 'LINK' && elem.rel === 'canonical') {\r\n return elem;\r\n }\r\n }\r\n return this.createCanonicalTag();\r\n }\r\n\r\n /**\r\n * Define link canonical da página\r\n * @param url url canonical\r\n */\r\n public setCanonicalHref(url?: string) {\r\n if (!this.canonicalTag) {\r\n this.canonicalTag = this.getCanonicalTag();\r\n }\r\n\r\n let path = this.document.location.pathname;\r\n\r\n if (this.libConfig?.siteSufix && path.includes(this.libConfig?.siteSufix)) {\r\n path = path.replace(this.libConfig?.siteSufix, '');\r\n }\r\n\r\n if (!path.startsWith('/')) {\r\n path = `/${path}`;\r\n }\r\n\r\n const canonicalUrl = url && this.isCustomCanonical(url) ? url : `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${path}`;\r\n\r\n this.canonicalTag.setAttribute('href', canonicalUrl);\r\n return this;\r\n }\r\n\r\n /**\r\n * Verifica se a URL fornecida é um link canonical personalizado\r\n * @param url URL fornecida\r\n */\r\n public isCustomCanonical(url: string): boolean {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return url.startsWith(siteurl);\r\n }\r\n\r\n /**\r\n * Obtém uma url válida na aplicação proveniente de uma URL gerada\r\n * pelo plugin Yoast para canonical automático.\r\n * Ex.: https://wp.rededorsaoluiz.com.br/brasil/especialidades/cardiologia/\r\n * @param urlFromWpApi URL canonica gerada pelo Yoast Plugin.\r\n */\r\n toLocalCanonical(urlFromWpApi: string): string {\r\n const apiUrl = this.libConfig?.wpUrl ?? '';\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n const unidadeSlug = this.unidadeSlug;\r\n let converted = urlFromWpApi.replace(apiUrl, siteurl);\r\n if (unidadeSlug !== '/' && converted.includes(`/${unidadeSlug}/`)) {\r\n converted = converted.replace(`/${unidadeSlug}/`, `${this.unidadePath}`);\r\n }\r\n return converted;\r\n }\r\n\r\n getPostContent(post: WpPost): string {\r\n const content = post?.acf?.['rdsl_post_content'] ? post?.acf?.rdsl_post_content?.find((content: any) => content.acf_fc_layout === 'text_html') : null;\r\n return content?.content || post.content.rendered || '';\r\n }\r\n\r\n addArticleScript(post: WpPost, scriptName: string): void {\r\n const postContent = this.getPostContent(post);\r\n const postHeaderImage = post?.acf?.['rdsl_post_header_img']\r\n ? {\r\n url: post?.acf?.['rdsl_post_header_img'].url,\r\n width: post?.acf?.['rdsl_post_header_img'].width,\r\n height: post?.acf?.['rdsl_post_header_img'].height,\r\n }\r\n : null;\r\n\r\n const structuredData = {\r\n '@context': 'https://schema.org',\r\n '@type': 'Article',\r\n mainEntityOfPage: `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`,\r\n headline: post.title?.rendered,\r\n datePublished: post.date_gmt,\r\n publisher: {\r\n '@type': 'MedicalOrganization',\r\n name: 'Rede D’Or',\r\n },\r\n description: post.title?.rendered,\r\n articleBody: removeHtmlTags(he.decode(postContent)),\r\n dateModified: post.modified_gmt,\r\n image: {\r\n '@type': 'ImageObject',\r\n url: postHeaderImage?.url || post.featured_media_path || '',\r\n height: postHeaderImage?.height || '',\r\n width: postHeaderImage?.width || '',\r\n },\r\n author: {\r\n '@type': 'MedicalOrganization',\r\n name: 'Rede D’Or',\r\n },\r\n wordcount: postContent.split(' ').length,\r\n };\r\n\r\n const script = this.document.createElement('script');\r\n\r\n script.type = 'application/ld+json';\r\n script.id = scriptName;\r\n script.innerHTML = JSON.stringify(structuredData);\r\n\r\n this.document.head.appendChild(script);\r\n }\r\n\r\n removeArticleScript(scriptName: string): void {\r\n const script = this.document.getElementById(scriptName);\r\n script?.remove();\r\n }\r\n\r\n public setUnidade({ unidade = null, unidadeName = '', unidadePath = '', unidadeSlug = '' }: SeoUnidade) {\r\n this.unidade = unidade;\r\n this.unidadeName = unidadeName;\r\n this.unidadePath = unidadePath;\r\n this.unidadeSlug = unidadeSlug;\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Response } from 'express';\r\nimport { RESPONSE } from '../../tokens/express.tokens';\r\n\r\nexport interface IServerResponseService {\r\n getHeader(key: string): string;\r\n setHeader(key: string, value: string): this;\r\n setHeaders(dictionary: { [key: string]: string }): this;\r\n appendHeader(key: string, value: string, delimiter?: string): this;\r\n setStatus(code: number, message?: string): this;\r\n setNotFound(message?: string): this;\r\n setError(message?: string): this;\r\n setRedirect(redirectParams?: { statusCode: number; message: string; url?: string }): this;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ServerResponseService implements IServerResponseService {\r\n private response = inject(RESPONSE, { optional: true });\r\n\r\n getHeader(key: string): string {\r\n if (this.response) {\r\n return this.response.getHeader(key) as string;\r\n }\r\n return '';\r\n }\r\n\r\n setHeader(key: string, value: string): this {\r\n if (this.response) {\r\n this.response.header(key, value);\r\n }\r\n return this;\r\n }\r\n\r\n appendHeader(key: string, value: string, delimiter = ','): this {\r\n if (this.response) {\r\n const current = this.getHeader(key);\r\n if (!current) {\r\n return this.setHeader(key, value);\r\n }\r\n const newValue = [...current.split(delimiter), value].filter((el, i, a) => i === a.indexOf(el)).join(delimiter);\r\n this.response.header(key, newValue);\r\n }\r\n return this;\r\n }\r\n\r\n setHeaders(dictionary: { [key: string]: string }): this {\r\n if (this.response) {\r\n Object.keys(dictionary).forEach((key) => this.setHeader(key, dictionary[key]));\r\n }\r\n return this;\r\n }\r\n\r\n setStatus(code: number, message?: string): this {\r\n if (this.response) {\r\n this.response.statusCode = code;\r\n if (message) {\r\n this.response.statusMessage = message;\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n setNotFound(message = 'Não encontrado'): this {\r\n if (this.response) {\r\n this.response.statusCode = 404;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setUnauthorized(message = 'Não autorizado'): this {\r\n if (this.response) {\r\n this.response.statusCode = 401;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setError(message = 'Erro interno de servidor'): this {\r\n if (this.response) {\r\n this.response.statusCode = 500;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setRedirect(\r\n { statusCode, message, url }: { statusCode?: number; message?: string; url?: string } = {\r\n statusCode: 301,\r\n message: 'Redirecionado permanentemente',\r\n url: undefined,\r\n },\r\n ): this {\r\n if (this.response) {\r\n this.response.statusCode = statusCode || 301;\r\n this.response.statusMessage = message || 'Redirecionado permanentemente';\r\n if (url) {\r\n this.response.locals['redirectUrl'] = url; // Utilizado no ssr para redirect\r\n }\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nexport type HttpCacheDirective = 'public' | 'private' | 'no-store' | 'no-cache' | 'must-revalidate' | 'no-transform' | 'proxy-revalidate';\r\n","import { Injectable, inject, RESPONSE_INIT } from '@angular/core';\r\n\r\nexport interface ISsrResponseService {\r\n setStatus(code: number, message?: string): this;\r\n setNotFound(message?: string): this;\r\n setError(message?: string): this;\r\n setRedirect(params?: { statusCode?: number; url?: string }): this;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SsrResponseService implements ISsrResponseService {\r\n private readonly responseInit = inject(RESPONSE_INIT, { optional: true });\r\n\r\n setStatus(code: number, message?: string): this {\r\n if (this.responseInit) {\r\n this.responseInit.status = code;\r\n if (message !== undefined) {\r\n this.responseInit.statusText = message;\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n setNotFound(message = 'Não encontrado'): this {\r\n if (this.responseInit) {\r\n this.responseInit.status = 404;\r\n this.responseInit.statusText = message;\r\n }\r\n return this;\r\n }\r\n\r\n setError(message = 'Erro interno de servidor'): this {\r\n if (this.responseInit) {\r\n this.responseInit.status = 500;\r\n this.responseInit.statusText = message;\r\n }\r\n return this;\r\n }\r\n\r\n setRedirect(\r\n params: { statusCode?: number; url?: string } = {\r\n statusCode: 301,\r\n url: undefined,\r\n },\r\n ): this {\r\n if (this.responseInit && params.url) {\r\n this.responseInit.status = params.statusCode ?? 301;\r\n this.responseInit.statusText = params.statusCode === 302 ? 'Found' : 'Moved Permanently';\r\n const existingHeaders = this.responseInit.headers ? new Headers(this.responseInit.headers as HeadersInit) : new Headers();\r\n existingHeaders.set('Location', params.url);\r\n this.responseInit.headers = existingHeaders;\r\n }\r\n return this;\r\n }\r\n}\r\n","import { Request, Response, NextFunction } from 'express';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nexport const ssrInitialization = (req: Request, res: Response, next: NextFunction) => {\r\n res.locals['requestId'] = uuidv4();\r\n res.locals['startTime'] = Date.now();\r\n console.log(`SSR REQ ${res.locals['requestId']} => ${req.url} | HEADERS -> ${JSON.stringify(req.rawHeaders)}`);\r\n next();\r\n};\r\n","export const DEFAULT_REDEDOR_LOGO_HTML = `<svg\r\n class=\"logo\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"160\"\r\n height=\"38\"\r\n viewBox=\"0 0 160 38\"\r\n fill=\"none\"\r\n>\r\n <path\r\n d=\"M94.714 35.5604C92.0424 34.3118 89.6803 33.6893 87.6278 33.6929C86.509 33.6929 85.6158 33.8469 84.9221 34.1639C84.2284 34.481 83.8797 34.886 83.8797 35.3771C83.8797 35.8683 84.2526 36.2403 84.9836 36.55C85.7146 36.8598 86.6619 37.0082 87.7808 37.0082C90.0036 37.0082 92.314 36.5256 94.7121 35.5604H94.714ZM96.6869 35.5861C98.3955 36.4547 100.289 36.9143 102.212 36.9276C105.039 36.9276 107.638 35.919 110.009 33.9019C113.332 31.0918 115.743 27.2481 117.242 22.3708C118.08 19.6353 118.5 17.0989 118.501 14.7616C118.494 13.2408 118.283 11.7275 117.874 10.2606C116.72 11.5882 115.646 12.9809 114.658 14.4317C113.699 15.8453 112.324 18.0628 110.531 21.0843C108.722 24.1387 107.208 26.4234 105.988 27.9384C104.652 29.5729 103.138 31.0593 101.474 32.3716C100.493 33.1474 98.8973 34.2189 96.6869 35.5861ZM118.419 9.73464C118.897 11.3329 119.144 12.9894 119.152 14.6553C119.128 17.3414 118.712 20.0102 117.915 22.5797C116.356 27.7955 113.794 31.8749 110.227 34.8182C108.003 36.728 105.145 37.7711 102.192 37.7504C101.228 37.7594 100.267 37.653 99.3293 37.4334C98.4752 37.2245 97.255 36.7865 95.6687 36.1194C92.8231 37.2593 90.1795 37.8298 87.7379 37.8311C86.7102 37.8545 85.6854 37.7134 84.7039 37.4132C84.2063 37.2561 83.7641 36.9639 83.4284 36.5702C83.111 36.241 82.9256 35.8101 82.9062 35.357C82.9062 34.5812 83.3414 33.9703 84.2116 33.5243C85.0818 33.0784 86.2523 32.8487 87.7229 32.8353C90.0353 32.8353 92.6863 33.5995 95.6762 35.1279C97.7272 33.7368 99.5776 32.0797 101.177 30.2017C102.248 28.9537 103.12 27.8633 103.788 26.903C104.456 25.9426 106.184 23.3714 108.957 19.16C111.12 15.9174 113.958 12.6186 117.472 9.26365C116.671 7.431 115.759 6.02596 114.736 5.04854C112.629 2.99231 109.791 1.96541 106.223 1.96785C101.532 1.96785 97.5584 3.52927 94.3037 6.65212C92.74 8.12695 91.4574 9.8648 90.5164 11.7836C89.7061 13.3872 89.2757 15.1503 89.2576 16.9406C89.2576 18.6658 89.8065 20.0604 90.9042 21.1246C91.9411 22.1435 93.3707 22.6536 95.1932 22.6549C97.7069 22.6549 100.12 21.6982 102.432 19.7849C105.576 17.1691 107.752 13.4757 108.959 8.70469L109.453 8.86046C108.976 11.9332 107.959 14.6443 106.402 16.9938C104.812 19.3762 102.848 21.1594 100.506 22.3085C98.8964 23.1199 97.114 23.5445 95.3051 23.5474C92.9431 23.5474 91.1311 22.766 89.8693 21.2034C88.7504 19.8216 88.2003 18.1227 88.2003 16.1214C88.2003 13.5557 88.958 11.0462 90.4735 8.5929C91.9672 6.1551 94.1004 4.1568 96.6496 2.80721C99.218 1.44738 102.077 0.766847 105.228 0.765625C109.415 0.765625 112.722 1.9764 115.15 4.39795C116.159 5.40224 117.119 6.83294 118.027 8.69003C120.052 6.93312 121.973 5.55619 123.789 4.55922L123.976 5.21348C122.294 6.25076 120.445 7.76026 118.428 9.74197L118.419 9.73464ZM125.742 1.59765H129.578V5.48838C129.578 7.05713 129.329 8.09564 128.832 8.60389C128.322 9.12803 127.401 9.42981 126.07 9.50923C125.859 9.46077 125.642 9.44043 125.425 9.44874V7.66924C126.04 7.66924 126.496 7.53362 126.792 7.26239C127.086 6.98932 127.224 6.46335 127.206 5.67898H125.733L125.742 1.59765Z\"\r\n fill=\"#003DA5\"\r\n />\r\n <path\r\n d=\"M13.0739 25.5331C12.7851 25.8403 12.4182 26.0661 12.011 26.1874C11.4564 26.3271 10.8844 26.3888 10.3122 26.3706H4.22929V18.9814H10.1965C10.8212 18.9709 11.4455 19.0175 12.0613 19.1207C12.4985 19.1963 12.8946 19.4208 13.1802 19.7548C13.514 20.2404 13.6855 21.1696 13.6855 22.5312C13.6855 24.0083 13.4798 25.0071 13.0683 25.5276L13.0739 25.5331ZM14.0324 28.0933V28.0054C15.4086 27.7616 16.382 27.2888 16.9601 26.5924C17.6115 25.8373 17.936 24.2576 17.9335 21.8532C17.9335 19.6356 17.4909 18.0388 16.6058 17.0626C15.5988 15.9703 13.6719 15.4236 10.825 15.4236H0V37.0788H4.22929V29.915H10.1313C10.6821 29.902 11.2326 29.9506 11.7723 30.0598C12.1856 30.1581 12.5568 30.3819 12.8333 30.6994C13.1431 31.0479 13.3382 31.4804 13.3928 31.9401C13.4743 32.5605 13.5117 33.1857 13.5046 33.8112V37.0788H17.7545V33.0653C17.7545 31.4489 17.4903 30.2241 16.9619 29.3909C16.2999 28.6578 15.3209 28.2161 14.0342 28.097\"\r\n fill=\"#003DA5\"\r\n />\r\n <path\r\n d=\"M21.0508 37.0716V15.4243H36.1759V18.9797H25.2801V24.4007H35.6183V27.7782H25.2801V33.5163H36.2337V37.0716H21.0508Z\"\r\n fill=\"#003DA5\"\r\n />\r\n <path\r\n d=\"M54.3513 26.4257V27.8919C54.3513 29.8785 54.0672 31.2639 53.4991 32.0483C53.0777 32.6531 52.604 33.0489 52.0707 33.2359C51.4033 33.445 50.7047 33.5411 50.0045 33.5199H43.6308V18.9797H49.7099C51.1253 18.9797 52.1677 19.1629 52.839 19.5295C53.1489 19.6857 53.4213 19.9052 53.6381 20.1732C53.8548 20.4412 54.0109 20.7516 54.0958 21.0836C54.2674 21.758 54.3513 22.7329 54.3513 24.0158V26.4257ZM57.5755 18.5123C56.4181 16.4549 53.8944 15.4255 50.0045 15.4243H39.4033V37.0771H50.8511C51.6558 37.0697 52.4578 36.9844 53.2455 36.8224C53.9623 36.6969 54.6545 36.4612 55.2967 36.1241C57.5084 34.8449 58.6142 32.286 58.6142 28.4472V23.8289C58.6142 21.5539 58.2698 19.7824 57.5811 18.5142\"\r\n fill=\"#003DA5\"\r\n />\r\n <path\r\n d=\"M61.3643 37.0716V15.4243H76.4894V18.9797H65.5935V24.4007H75.9318V27.7782H65.5935V33.5163H76.5472V37.0716H61.3643Z\"\r\n fill=\"#003DA5\"\r\n />\r\n <path\r\n d=\"M134.867 23.5342V29.2778C134.871 29.9264 134.802 30.5736 134.662 31.2075C134.571 31.6885 134.394 32.1496 134.138 32.5692C133.734 33.0204 133.194 33.332 132.596 33.458C131.936 33.6266 130.96 33.7244 129.668 33.7513C128.677 33.7445 127.688 33.663 126.709 33.5075C126.41 33.4587 126.125 33.3503 125.871 33.1889C125.616 33.0275 125.398 32.8166 125.23 32.5692C124.819 31.9009 124.613 30.6791 124.613 28.9039V23.7725C124.618 23.5499 124.599 23.3275 124.555 23.109C124.643 21.8042 124.827 20.8439 125.114 20.2189C125.363 19.6643 125.856 19.2904 126.593 19.0974C127.339 18.8994 128.385 18.8041 129.75 18.8041C130.496 18.8041 131.194 18.8225 131.841 18.8609C132.889 18.9966 133.651 19.3136 134.136 19.8194C134.621 20.4095 134.865 21.3918 134.865 22.7517L134.867 23.5342ZM138.597 19.1578C138.25 18.2965 137.961 17.7485 137.732 17.5084C137.295 16.8542 136.629 16.363 135.729 16.0277C134.817 15.6911 133.864 15.4772 132.894 15.3917C131.902 15.3001 130.834 15.2524 129.683 15.2524C128.475 15.2524 127.398 15.2921 126.453 15.3716C125.516 15.4521 124.594 15.6561 123.712 15.9782C122.892 16.2497 122.176 16.7613 121.661 17.4443C121.133 18.2145 120.787 19.0912 120.648 20.01C120.478 21.1174 120.401 22.2366 120.417 23.3564V29.2778C120.417 32.2418 120.977 34.2717 122.095 35.3677C122.839 36.1552 123.819 36.6882 124.893 36.8888C126.29 37.1532 127.712 37.276 129.135 37.2553C130.511 37.2553 131.692 37.218 132.678 37.1435C133.654 37.0663 134.614 36.8592 135.533 36.5277C136.392 36.2442 137.143 35.7113 137.687 34.9993C138.133 34.3661 138.49 33.677 138.75 32.9504C138.998 32.2338 139.123 31.2222 139.123 29.9192V22.9294C139.123 21.269 138.949 20.0118 138.602 19.1578\"\r\n fill=\"#003DA5\"\r\n />\r\n <path\r\n d=\"M155.14 25.5331C154.852 25.8403 154.485 26.0661 154.077 26.1874C153.523 26.327 152.952 26.3887 152.38 26.3706H146.296V18.9814H152.263C152.888 18.9709 153.512 19.0175 154.128 19.1207C154.565 19.1963 154.961 19.4208 155.247 19.7548C155.58 20.2404 155.752 21.1696 155.752 22.5312C155.752 24.0083 155.546 25.0071 155.135 25.5276L155.14 25.5331ZM156.099 28.0933V28.0054C157.475 27.7616 158.448 27.2888 159.026 26.5924C159.678 25.8373 160.002 24.2576 160 21.8532C160 19.6356 159.558 18.0388 158.674 17.0626C157.665 15.9703 155.738 15.4236 152.893 15.4224H142.066V37.0788H146.296V29.915H152.2C152.75 29.9021 153.3 29.9507 153.839 30.0598C154.252 30.1581 154.623 30.3819 154.9 30.6994C155.21 31.0479 155.405 31.4804 155.459 31.9401C155.542 32.5604 155.579 33.1857 155.571 33.8112V37.0788H159.821V33.0653C159.821 31.4489 159.557 30.2241 159.028 29.3909C158.366 28.6578 157.387 28.2161 156.101 28.097\"\r\n fill=\"#003DA5\"\r\n />\r\n</svg>`;\r\n","import { DEFAULT_REDEDOR_LOGO_HTML } from './url-validation-default-logo';\r\n\r\nexport const URL_VALIDATION_FONT_FAMILIES = {\r\n GOTHAM: \"'Gotham', Arial, Helvetica, sans-serif\",\r\n HANKEN_GROTESK: \"'Hanken Grotesk', Arial, Helvetica, sans-serif\",\r\n ROBOTO: \"'Roboto', sans-serif\",\r\n} as const;\r\n\r\nexport const URL_VALIDATION_DEFAULT_COLORS = {\r\n TITLE: '#003da5',\r\n HOME_BUTTON_BACKGROUND: '#ff8200',\r\n HOME_BUTTON_TEXT: '#262626',\r\n} as const;\r\n\r\nexport interface UrlValidationErrorPageOptions {\r\n url: string;\r\n homeHref?: string;\r\n fontsBasePath?: string;\r\n fontFamily?: string;\r\n logo?: string;\r\n titleColor?: string;\r\n homeButtonBackgroundColor?: string;\r\n homeButtonTextColor?: string;\r\n faviconBasePath?: string;\r\n}\r\n\r\nfunction buildFaviconHeadContent(faviconBasePath: string): string {\r\n const base = faviconBasePath.replace(/\\/$/, '');\r\n\r\n return `\r\n <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"${base}/favicon-apple-touch-icon-180x180.png\" />\r\n <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"${base}/favicon-16x16.png\" />\r\n <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"${base}/favicon-32x32.png\" />\r\n <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"${base}/favicon-android-chrome-192x192.png\" />\r\n <link rel=\"shortcut icon\" href=\"${base}/favicon.ico\" />`;\r\n}\r\n\r\nfunction buildGothamFontFaces(fontsBasePath: string): string {\r\n return `\r\n @font-face {\r\n font-family: \"Gotham\";\r\n src: local(\"Gotham-Book\"), local(\"Gotham Book\");\r\n src: url(\"${fontsBasePath}/fonts/Gotham-Book.woff\") format(\"woff\");\r\n src: url(\"${fontsBasePath}/fonts/Gotham-Book.ttf\") format(\"truetype\");\r\n font-weight: 400;\r\n font-style: normal;\r\n font-display: swap;\r\n }\r\n\r\n @font-face {\r\n font-family: \"Gotham\";\r\n src: local(\"Gotham-Medium\"), local(\"Gotham Medium\");\r\n src: url(\"${fontsBasePath}/fonts/Gotham-Medium.woff\") format(\"woff\");\r\n src: url(\"${fontsBasePath}/fonts/Gotham-Medium.ttf\") format(\"truetype\");\r\n font-weight: 500;\r\n font-style: normal;\r\n font-display: swap;\r\n }\r\n `;\r\n}\r\n\r\nfunction buildFontHeadContent(fontFamily: string, fontsBasePath: string): string {\r\n if (fontFamily.includes('Hanken Grotesk')) {\r\n return `<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&display=swap\" />`;\r\n }\r\n\r\n if (fontFamily.includes('Roboto') && !fontFamily.includes('Gotham')) {\r\n return `<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap\" />`;\r\n }\r\n\r\n return `<style>${buildGothamFontFaces(fontsBasePath)}</style>`;\r\n}\r\n\r\nfunction buildLogoContent(logo?: string): string {\r\n if (!logo) {\r\n return DEFAULT_REDEDOR_LOGO_HTML;\r\n }\r\n\r\n if (logo.startsWith('<')) {\r\n return logo;\r\n }\r\n\r\n return `<img class=\"logo\" src=\"${logo}\" alt=\"Logo\" />`;\r\n}\r\n\r\nexport function buildUrlValidationErrorPage(options: UrlValidationErrorPageOptions): string {\r\n const {\r\n url,\r\n homeHref = '/',\r\n fontsBasePath = '/assets',\r\n fontFamily = URL_VALIDATION_FONT_FAMILIES.GOTHAM,\r\n logo,\r\n titleColor = URL_VALIDATION_DEFAULT_COLORS.TITLE,\r\n homeButtonBackgroundColor = URL_VALIDATION_DEFAULT_COLORS.HOME_BUTTON_BACKGROUND,\r\n homeButtonTextColor = URL_VALIDATION_DEFAULT_COLORS.HOME_BUTTON_TEXT,\r\n faviconBasePath,\r\n } = options;\r\n\r\n const fontHeadContent = buildFontHeadContent(fontFamily, fontsBasePath);\r\n const logoContent = buildLogoContent(logo);\r\n const resolvedFaviconBasePath = (faviconBasePath ?? homeHref).replace(/\\/$/, '');\r\n const faviconHeadContent = buildFaviconHeadContent(resolvedFaviconBasePath);\r\n\r\n return `\r\n<!DOCTYPE html>\r\n<html>\r\n <head>\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>Erro - Não foi possível acessar essa página - Rede D'Or - ${url}</title>\r\n ${faviconHeadContent}\r\n ${fontHeadContent}\r\n <style>\r\n body {\r\n text-align: center;\r\n padding: 0px;\r\n margin: 0px;\r\n height: 100vh;\r\n background-color: #fff;\r\n font-family: ${fontFamily};\r\n }\r\n\r\n .error-container {\r\n height: 100%;\r\n padding: 0px 162px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 40px;\r\n }\r\n\r\n .logo {\r\n margin-bottom: 30px;\r\n max-width: 280px;\r\n width: 100%;\r\n height: auto;\r\n }\r\n\r\n .text-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 16px;\r\n }\r\n\r\n h1 {\r\n color: ${titleColor};\r\n margin: 0px;\r\n font-family: inherit;\r\n font-size: 28px;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 36px;\r\n letter-spacing: 0px;\r\n }\r\n\r\n p {\r\n color: #262626;\r\n margin: 0px;\r\n font-family: inherit;\r\n font-size: 19px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 28px;\r\n letter-spacing: 0px;\r\n }\r\n\r\n a {\r\n color: ${homeButtonTextColor};\r\n background: ${homeButtonBackgroundColor};\r\n text-decoration: none;\r\n display: flex;\r\n padding: 12px 16px;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 24px;\r\n border-radius: 4px;\r\n font-family: inherit;\r\n font-size: 16px;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 20px;\r\n letter-spacing: 0.32px;\r\n }\r\n\r\n @media screen and (max-width: 768px) {\r\n .error-container {\r\n padding: 0px 24px;\r\n gap: 32px;\r\n }\r\n\r\n .logo {\r\n margin-bottom: 0px;\r\n }\r\n\r\n .text-container {\r\n gap: 12px;\r\n }\r\n\r\n h1 {\r\n font-size: 24px;\r\n }\r\n\r\n p {\r\n font-size: 17px;\r\n }\r\n }\r\n </style>\r\n </head>\r\n\r\n <body>\r\n <div class=\"error-container\">\r\n ${logoContent}\r\n <div class=\"text-container\">\r\n <h1>Informamos que ocorreu um erro ao acessar esta página.</h1>\r\n <p>\r\n Pedimos desculpas pelo inconveniente. Enquanto estamos trabalhando\r\n para resolver a situação, por favor, acesse novamente a nossa home\r\n </p>\r\n </div>\r\n <a href=\"${homeHref}\">\r\n Ir para a página inicial\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"17\"\r\n height=\"17\"\r\n viewBox=\"0 0 17 17\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M15.0695 8.57667H1.83301M8.53734 15.1668L15.1663 8.48923L8.53734 1.8335\"\r\n stroke=\"${homeButtonTextColor}\"\r\n stroke-width=\"1.75\"\r\n stroke-miterlimit=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </a>\r\n </div>\r\n </body>\r\n</html>\r\n `;\r\n}\r\n","import { differenceInMilliseconds } from 'date-fns';\r\nimport { Request, Response, NextFunction, RequestHandler } from 'express';\r\nimport { buildUrlValidationErrorPage, URL_VALIDATION_FONT_FAMILIES } from './url-validation-error-page';\r\n\r\nconst DANGEROUS_CHARACTERS =\r\n /(%00|%01|%02|%03|%04|%05|%06|%07|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%10|%11|%12|%13|%14|%15|%16|%17|%18|%19|%1A|%1B|%1C|%1D|%1E|%1F|%22|%27|%28|%29|%3B|%3C|%3E|%5B|%5D|%7B|%7D)|[<>{}[\\]()\\\\`\"']/g;\r\n\r\nexport interface ValidateUrlCharactersOptions {\r\n homeHref?: string;\r\n fontsBasePath?: string;\r\n fontFamily?: string;\r\n logo?: string;\r\n titleColor?: string;\r\n homeButtonBackgroundColor?: string;\r\n homeButtonTextColor?: string;\r\n faviconBasePath?: string;\r\n}\r\n\r\nexport function createValidateUrlCharacters(options: ValidateUrlCharactersOptions = {}): RequestHandler {\r\n const {\r\n homeHref = '/',\r\n fontsBasePath = '/assets',\r\n fontFamily = URL_VALIDATION_FONT_FAMILIES.GOTHAM,\r\n logo,\r\n titleColor,\r\n homeButtonBackgroundColor,\r\n homeButtonTextColor,\r\n faviconBasePath,\r\n } = options;\r\n\r\n return (req: Request, res: Response, next: NextFunction) => {\r\n try {\r\n const url = req.url;\r\n const matches = url.match(DANGEROUS_CHARACTERS);\r\n\r\n if (matches && matches.length > 1) {\r\n res.statusCode = 403;\r\n const requestId = res.locals['requestId'];\r\n console.log(`SSR MIDDLEWARE URL ${requestId} => ${req.url} | Caracteres perigosos: ${matches.length}`);\r\n\r\n const elapsedTime = differenceInMilliseconds(Date.now(), res.locals['startTime']);\r\n console.log(\r\n `SSR RES ${requestId} => ${req.url} | Status: ${res.statusCode} | Duração: ${elapsedTime}ms | Resposta interrompida por conter caracteres perigosos`,\r\n );\r\n\r\n res.setHeader('Content-Type', 'text/html');\r\n return res.send(\r\n buildUrlValidationErrorPage({\r\n url: req.url,\r\n homeHref,\r\n fontsBasePath,\r\n fontFamily,\r\n logo,\r\n titleColor,\r\n homeButtonBackgroundColor,\r\n homeButtonTextColor,\r\n faviconBasePath,\r\n }),\r\n );\r\n }\r\n\r\n return next();\r\n } catch (error) {\r\n console.error('Erro na validação da URL:', error);\r\n\r\n return res.status(500).json({\r\n error: 'Internal server error',\r\n code: '500',\r\n });\r\n }\r\n };\r\n}\r\n\r\nexport const validateUrlCharacters = createValidateUrlCharacters();\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}