@foblex/m-render 2.5.1

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 (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -0
  3. package/assets/fonts/inter-italic-latin-ext.woff2 +0 -0
  4. package/assets/fonts/inter-italic-latin.woff2 +0 -0
  5. package/assets/fonts/inter-roman-latin-ext.woff2 +0 -0
  6. package/assets/fonts/inter-roman-latin.woff2 +0 -0
  7. package/assets/styles/_alert.scss +50 -0
  8. package/assets/styles/_badge.scss +63 -0
  9. package/assets/styles/_button.scss +42 -0
  10. package/assets/styles/_code-group.scss +45 -0
  11. package/assets/styles/_code-highlight.scss +96 -0
  12. package/assets/styles/_code-view.scss +91 -0
  13. package/assets/styles/_doc-text.scss +124 -0
  14. package/assets/styles/_fonts.scss +41 -0
  15. package/assets/styles/_icons.scss +158 -0
  16. package/assets/styles/_preview-group.scss +11 -0
  17. package/assets/styles/_variables.scss +287 -0
  18. package/assets/styles/styles.scss +75 -0
  19. package/esm2022/foblex-m-render.mjs +5 -0
  20. package/esm2022/lib/common-services/analytics/f-accept-cookies-key.mjs +2 -0
  21. package/esm2022/lib/common-services/analytics/f-analytics.service.mjs +52 -0
  22. package/esm2022/lib/common-services/analytics/i-window-with-analytics.mjs +2 -0
  23. package/esm2022/lib/common-services/analytics/index.mjs +5 -0
  24. package/esm2022/lib/common-services/analytics/set-cookie-consent.mjs +32 -0
  25. package/esm2022/lib/common-services/f-head-tag.service.mjs +52 -0
  26. package/esm2022/lib/common-services/index.mjs +4 -0
  27. package/esm2022/lib/common-services/json-ld/f-json-ld.service.mjs +51 -0
  28. package/esm2022/lib/common-services/json-ld/i-json-ld-creator.mjs +2 -0
  29. package/esm2022/lib/common-services/json-ld/i-json-ld-entity-of-page.mjs +2 -0
  30. package/esm2022/lib/common-services/json-ld/i-json-ld.mjs +2 -0
  31. package/esm2022/lib/common-services/json-ld/index.mjs +5 -0
  32. package/esm2022/lib/domain/f-environment.service.mjs +66 -0
  33. package/esm2022/lib/domain/f-meta.service.mjs +77 -0
  34. package/esm2022/lib/domain/f-popover.service.mjs +25 -0
  35. package/esm2022/lib/domain/f-state.service.mjs +27 -0
  36. package/esm2022/lib/domain/features/get-version-handler/get-version.handler.mjs +27 -0
  37. package/esm2022/lib/domain/features/get-version-handler/get-version.request.mjs +6 -0
  38. package/esm2022/lib/domain/features/get-version-handler/index.mjs +3 -0
  39. package/esm2022/lib/domain/features/handle-navigation-links/handle-navigation-links.handler.mjs +51 -0
  40. package/esm2022/lib/domain/features/handle-navigation-links/handle-navigation-links.request.mjs +6 -0
  41. package/esm2022/lib/domain/features/handle-navigation-links/index.mjs +3 -0
  42. package/esm2022/lib/domain/features/index.mjs +3 -0
  43. package/esm2022/lib/domain/i-docs-component.mjs +2 -0
  44. package/esm2022/lib/domain/i-docs-environment.mjs +2 -0
  45. package/esm2022/lib/domain/i-docs-footer-navigation.mjs +2 -0
  46. package/esm2022/lib/domain/i-docs-header-navigation-item.mjs +2 -0
  47. package/esm2022/lib/domain/i-docs-social-link.mjs +2 -0
  48. package/esm2022/lib/domain/i-docs-table-of-content.mjs +2 -0
  49. package/esm2022/lib/domain/i-docs-version.mjs +2 -0
  50. package/esm2022/lib/domain/i-meta-data.mjs +2 -0
  51. package/esm2022/lib/domain/index.mjs +15 -0
  52. package/esm2022/lib/domain/providers.mjs +3 -0
  53. package/esm2022/lib/domain/router.mjs +13 -0
  54. package/esm2022/lib/f-documentation/f-badge/f-badge.component.mjs +22 -0
  55. package/esm2022/lib/f-documentation/f-badge/index.mjs +2 -0
  56. package/esm2022/lib/f-documentation/f-checkbox/f-checkbox.component.mjs +70 -0
  57. package/esm2022/lib/f-documentation/f-cookie-popup/f-cookie-popup.component.mjs +33 -0
  58. package/esm2022/lib/f-documentation/f-documentation.component.mjs +56 -0
  59. package/esm2022/lib/f-documentation/f-hamburger-button/f-hamburger-button.component.mjs +24 -0
  60. package/esm2022/lib/f-documentation/f-header/f-header.component.mjs +30 -0
  61. package/esm2022/lib/f-documentation/f-header-menu/f-header-menu.component.mjs +29 -0
  62. package/esm2022/lib/f-documentation/f-preview/f-preview.component.mjs +58 -0
  63. package/esm2022/lib/f-documentation/f-social-links/f-social-links.component.mjs +18 -0
  64. package/esm2022/lib/f-documentation/f-theme-button/f-theme-button.component.mjs +41 -0
  65. package/esm2022/lib/f-documentation/f-version/f-version.component.mjs +19 -0
  66. package/esm2022/lib/f-documentation/i-documentation-component.mjs +3 -0
  67. package/esm2022/lib/f-documentation/index.mjs +13 -0
  68. package/esm2022/lib/f-navigation-panel/domain/i-navigation-group.mjs +2 -0
  69. package/esm2022/lib/f-navigation-panel/domain/i-navigation-item-badge.mjs +2 -0
  70. package/esm2022/lib/f-navigation-panel/domain/i-navigation-item.mjs +2 -0
  71. package/esm2022/lib/f-navigation-panel/domain/index.mjs +4 -0
  72. package/esm2022/lib/f-navigation-panel/f-navigation-group/f-navigation-group.component.mjs +22 -0
  73. package/esm2022/lib/f-navigation-panel/f-navigation-header/f-navigation-header.component.mjs +24 -0
  74. package/esm2022/lib/f-navigation-panel/f-navigation-item/f-navigation-item.component.mjs +11 -0
  75. package/esm2022/lib/f-navigation-panel/f-navigation-panel.component.mjs +94 -0
  76. package/esm2022/lib/f-navigation-panel/index.mjs +6 -0
  77. package/esm2022/lib/f-page/f-markdown/domain/handle-dynamic-components/handle-dynamic-components.handler.mjs +102 -0
  78. package/esm2022/lib/f-page/f-markdown/domain/handle-dynamic-components/handle-dynamic-components.request.mjs +6 -0
  79. package/esm2022/lib/f-page/f-markdown/domain/handle-dynamic-components/index.mjs +3 -0
  80. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/handle-parsed-containers.handler.mjs +34 -0
  81. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/handle-parsed-containers.request.mjs +6 -0
  82. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/i-parsed-container.mjs +2 -0
  83. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/index.mjs +5 -0
  84. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/clipboard/copy-to-clipboard.mjs +15 -0
  85. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/clipboard/index.mjs +2 -0
  86. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-async-code-view-handler.mjs +46 -0
  87. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group/f-code-group.handler.mjs +51 -0
  88. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group/i-code-group-view.mjs +2 -0
  89. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group/index.mjs +3 -0
  90. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group-body.handler.mjs +45 -0
  91. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-view-handler.mjs +60 -0
  92. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-example-view-handler.mjs +9 -0
  93. package/esm2022/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/index.mjs +7 -0
  94. package/esm2022/lib/f-page/f-markdown/domain/highlight/change-code-focused-syntax.pre-processor.mjs +23 -0
  95. package/esm2022/lib/f-page/f-markdown/domain/highlight/highlight.service.mjs +54 -0
  96. package/esm2022/lib/f-page/f-markdown/domain/highlight/index.mjs +6 -0
  97. package/esm2022/lib/f-page/f-markdown/domain/highlight/mark-code-focused-blocks.post-processor.mjs +52 -0
  98. package/esm2022/lib/f-page/f-markdown/domain/highlight/modify-punctuation-highlight.post-processor.mjs +22 -0
  99. package/esm2022/lib/f-page/f-markdown/domain/highlight/separate-code-by-lines.post-processor.mjs +28 -0
  100. package/esm2022/lib/f-page/f-markdown/domain/index.mjs +5 -0
  101. package/esm2022/lib/f-page/f-markdown/domain/markdown/index.mjs +4 -0
  102. package/esm2022/lib/f-page/f-markdown/domain/markdown/markdown.service.mjs +65 -0
  103. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/e-markdown-container-type.mjs +13 -0
  104. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/i-markdown-it-token.mjs +2 -0
  105. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/index.mjs +8 -0
  106. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-alerts.mjs +19 -0
  107. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-code-group.mjs +54 -0
  108. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-code-view.mjs +15 -0
  109. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-example-group.mjs +92 -0
  110. package/esm2022/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-preview-group.mjs +49 -0
  111. package/esm2022/lib/f-page/f-markdown/domain/markdown/utils/get-content.mjs +17 -0
  112. package/esm2022/lib/f-page/f-markdown/domain/markdown/utils/index.mjs +2 -0
  113. package/esm2022/lib/f-page/f-markdown/f-markdown-renderer.component.mjs +80 -0
  114. package/esm2022/lib/f-page/f-markdown/index.mjs +3 -0
  115. package/esm2022/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/get-previous-next-page-navigation.handler.mjs +36 -0
  116. package/esm2022/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/get-previous-next-page-navigation.request.mjs +6 -0
  117. package/esm2022/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/get-previous-next-page-navigation.response.mjs +7 -0
  118. package/esm2022/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/index.mjs +4 -0
  119. package/esm2022/lib/f-page/f-markdown-footer/domain/features/index.mjs +2 -0
  120. package/esm2022/lib/f-page/f-markdown-footer/domain/i-page-link.mjs +2 -0
  121. package/esm2022/lib/f-page/f-markdown-footer/domain/index.mjs +3 -0
  122. package/esm2022/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-edit-information.component.mjs +11 -0
  123. package/esm2022/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-edit-link/f-footer-edit-link.component.mjs +11 -0
  124. package/esm2022/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-edit-link/index.mjs +2 -0
  125. package/esm2022/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-last-updated/f-footer-last-updated.component.mjs +11 -0
  126. package/esm2022/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-last-updated/index.mjs +2 -0
  127. package/esm2022/lib/f-page/f-markdown-footer/f-footer-edit-information/index.mjs +2 -0
  128. package/esm2022/lib/f-page/f-markdown-footer/f-footer-navigation/f-footer-navigation-button/f-footer-navigation-button.component.mjs +17 -0
  129. package/esm2022/lib/f-page/f-markdown-footer/f-footer-navigation/f-footer-navigation-button/index.mjs +2 -0
  130. package/esm2022/lib/f-page/f-markdown-footer/f-footer-navigation/f-footer-navigation.component.mjs +11 -0
  131. package/esm2022/lib/f-page/f-markdown-footer/f-footer-navigation/index.mjs +3 -0
  132. package/esm2022/lib/f-page/f-markdown-footer/f-markdown-footer.component.mjs +82 -0
  133. package/esm2022/lib/f-page/f-markdown-footer/index.mjs +5 -0
  134. package/esm2022/lib/f-page/f-page.component.mjs +18 -0
  135. package/esm2022/lib/f-page/f-table-of-content/f-table-of-content-items/f-table-of-content-items.component.mjs +16 -0
  136. package/esm2022/lib/f-page/f-table-of-content/f-table-of-content-items/index.mjs +2 -0
  137. package/esm2022/lib/f-page/f-table-of-content/f-table-of-content.component.mjs +63 -0
  138. package/esm2022/lib/f-page/f-table-of-content/index.mjs +3 -0
  139. package/esm2022/lib/f-page/index.mjs +5 -0
  140. package/esm2022/lib/f-scrollable-container/domain/calculate-hash-from-scroll-position/calculate-hash-from-scroll-position.handler.mjs +51 -0
  141. package/esm2022/lib/f-scrollable-container/domain/calculate-hash-from-scroll-position/calculate-hash-from-scroll-position.request.mjs +6 -0
  142. package/esm2022/lib/f-scrollable-container/domain/calculate-hash-from-scroll-position/index.mjs +3 -0
  143. package/esm2022/lib/f-scrollable-container/domain/get-absolute-top-to-container/get-absolute-top-to-container.handler.mjs +14 -0
  144. package/esm2022/lib/f-scrollable-container/domain/get-absolute-top-to-container/get-absolute-top-to-container.request.mjs +7 -0
  145. package/esm2022/lib/f-scrollable-container/domain/get-absolute-top-to-container/index.mjs +3 -0
  146. package/esm2022/lib/f-scrollable-container/domain/get-table-of-content-data/get-table-of-content-data.handler.mjs +52 -0
  147. package/esm2022/lib/f-scrollable-container/domain/get-table-of-content-data/get-table-of-content-data.request.mjs +7 -0
  148. package/esm2022/lib/f-scrollable-container/domain/get-table-of-content-data/index.mjs +3 -0
  149. package/esm2022/lib/f-scrollable-container/domain/i-table-of-content-item.mjs +2 -0
  150. package/esm2022/lib/f-scrollable-container/domain/index.mjs +7 -0
  151. package/esm2022/lib/f-scrollable-container/domain/scroll-to-element-in-container.mjs +34 -0
  152. package/esm2022/lib/f-scrollable-container/domain/table-of-content-data.mjs +7 -0
  153. package/esm2022/lib/f-scrollable-container/f-scrollable-container.component.mjs +30 -0
  154. package/esm2022/lib/f-scrollable-container/f-scrollable.service.mjs +57 -0
  155. package/esm2022/lib/f-scrollable-container/index.mjs +3 -0
  156. package/esm2022/lib/index.mjs +7 -0
  157. package/esm2022/public-api.mjs +2 -0
  158. package/fesm2022/foblex-m-render.mjs +2405 -0
  159. package/fesm2022/foblex-m-render.mjs.map +1 -0
  160. package/index.d.ts +5 -0
  161. package/lib/common-services/analytics/f-accept-cookies-key.d.ts +1 -0
  162. package/lib/common-services/analytics/f-analytics.service.d.ts +10 -0
  163. package/lib/common-services/analytics/i-window-with-analytics.d.ts +5 -0
  164. package/lib/common-services/analytics/index.d.ts +4 -0
  165. package/lib/common-services/analytics/set-cookie-consent.d.ts +6 -0
  166. package/lib/common-services/f-head-tag.service.d.ts +20 -0
  167. package/lib/common-services/index.d.ts +3 -0
  168. package/lib/common-services/json-ld/f-json-ld.service.d.ts +12 -0
  169. package/lib/common-services/json-ld/i-json-ld-creator.d.ts +7 -0
  170. package/lib/common-services/json-ld/i-json-ld-entity-of-page.d.ts +3 -0
  171. package/lib/common-services/json-ld/i-json-ld.d.ts +9 -0
  172. package/lib/common-services/json-ld/index.d.ts +4 -0
  173. package/lib/domain/f-environment.service.d.ts +23 -0
  174. package/lib/domain/f-meta.service.d.ts +20 -0
  175. package/lib/domain/f-popover.service.d.ts +10 -0
  176. package/lib/domain/f-state.service.d.ts +13 -0
  177. package/lib/domain/features/get-version-handler/get-version.handler.d.ts +13 -0
  178. package/lib/domain/features/get-version-handler/get-version.request.d.ts +5 -0
  179. package/lib/domain/features/get-version-handler/index.d.ts +2 -0
  180. package/lib/domain/features/handle-navigation-links/handle-navigation-links.handler.d.ts +19 -0
  181. package/lib/domain/features/handle-navigation-links/handle-navigation-links.request.d.ts +4 -0
  182. package/lib/domain/features/handle-navigation-links/index.d.ts +2 -0
  183. package/lib/domain/features/index.d.ts +2 -0
  184. package/lib/domain/i-docs-component.d.ts +5 -0
  185. package/lib/domain/i-docs-environment.d.ts +21 -0
  186. package/lib/domain/i-docs-footer-navigation.d.ts +8 -0
  187. package/lib/domain/i-docs-header-navigation-item.d.ts +5 -0
  188. package/lib/domain/i-docs-social-link.d.ts +4 -0
  189. package/lib/domain/i-docs-table-of-content.d.ts +7 -0
  190. package/lib/domain/i-docs-version.d.ts +4 -0
  191. package/lib/domain/i-meta-data.d.ts +12 -0
  192. package/lib/domain/index.d.ts +14 -0
  193. package/lib/domain/providers.d.ts +3 -0
  194. package/lib/domain/router.d.ts +2 -0
  195. package/lib/f-documentation/f-badge/f-badge.component.d.ts +7 -0
  196. package/lib/f-documentation/f-badge/index.d.ts +1 -0
  197. package/lib/f-documentation/f-checkbox/f-checkbox.component.d.ts +22 -0
  198. package/lib/f-documentation/f-cookie-popup/f-cookie-popup.component.d.ts +9 -0
  199. package/lib/f-documentation/f-documentation.component.d.ts +18 -0
  200. package/lib/f-documentation/f-hamburger-button/f-hamburger-button.component.d.ts +9 -0
  201. package/lib/f-documentation/f-header/f-header.component.d.ts +9 -0
  202. package/lib/f-documentation/f-header-menu/f-header-menu.component.d.ts +17 -0
  203. package/lib/f-documentation/f-preview/f-preview.component.d.ts +29 -0
  204. package/lib/f-documentation/f-social-links/f-social-links.component.d.ts +9 -0
  205. package/lib/f-documentation/f-theme-button/f-theme-button.component.d.ts +15 -0
  206. package/lib/f-documentation/f-version/f-version.component.d.ts +10 -0
  207. package/lib/f-documentation/i-documentation-component.d.ts +5 -0
  208. package/lib/f-documentation/index.d.ts +12 -0
  209. package/lib/f-navigation-panel/domain/i-navigation-group.d.ts +5 -0
  210. package/lib/f-navigation-panel/domain/i-navigation-item-badge.d.ts +4 -0
  211. package/lib/f-navigation-panel/domain/i-navigation-item.d.ts +13 -0
  212. package/lib/f-navigation-panel/domain/index.d.ts +3 -0
  213. package/lib/f-navigation-panel/f-navigation-group/f-navigation-group.component.d.ts +8 -0
  214. package/lib/f-navigation-panel/f-navigation-header/f-navigation-header.component.d.ts +12 -0
  215. package/lib/f-navigation-panel/f-navigation-item/f-navigation-item.component.d.ts +5 -0
  216. package/lib/f-navigation-panel/f-navigation-panel.component.d.ts +29 -0
  217. package/lib/f-navigation-panel/index.d.ts +5 -0
  218. package/lib/f-page/f-markdown/domain/handle-dynamic-components/handle-dynamic-components.handler.d.ts +26 -0
  219. package/lib/f-page/f-markdown/domain/handle-dynamic-components/handle-dynamic-components.request.d.ts +4 -0
  220. package/lib/f-page/f-markdown/domain/handle-dynamic-components/index.d.ts +2 -0
  221. package/lib/f-page/f-markdown/domain/handle-parsed-containers/handle-parsed-containers.handler.d.ts +16 -0
  222. package/lib/f-page/f-markdown/domain/handle-parsed-containers/handle-parsed-containers.request.d.ts +4 -0
  223. package/lib/f-page/f-markdown/domain/handle-parsed-containers/i-parsed-container.d.ts +3 -0
  224. package/lib/f-page/f-markdown/domain/handle-parsed-containers/index.d.ts +4 -0
  225. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/clipboard/copy-to-clipboard.d.ts +2 -0
  226. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/clipboard/index.d.ts +1 -0
  227. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-async-code-view-handler.d.ts +10 -0
  228. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group/f-code-group.handler.d.ts +18 -0
  229. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group/i-code-group-view.d.ts +3 -0
  230. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group/index.d.ts +2 -0
  231. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-group-body.handler.d.ts +15 -0
  232. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-code-view-handler.d.ts +21 -0
  233. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/f-example-view-handler.d.ts +6 -0
  234. package/lib/f-page/f-markdown/domain/handle-parsed-containers/pseudo-components/index.d.ts +6 -0
  235. package/lib/f-page/f-markdown/domain/highlight/change-code-focused-syntax.pre-processor.d.ts +7 -0
  236. package/lib/f-page/f-markdown/domain/highlight/highlight.service.d.ts +15 -0
  237. package/lib/f-page/f-markdown/domain/highlight/index.d.ts +5 -0
  238. package/lib/f-page/f-markdown/domain/highlight/mark-code-focused-blocks.post-processor.d.ts +14 -0
  239. package/lib/f-page/f-markdown/domain/highlight/modify-punctuation-highlight.post-processor.d.ts +6 -0
  240. package/lib/f-page/f-markdown/domain/highlight/separate-code-by-lines.post-processor.d.ts +9 -0
  241. package/lib/f-page/f-markdown/domain/index.d.ts +4 -0
  242. package/lib/f-page/f-markdown/domain/markdown/index.d.ts +3 -0
  243. package/lib/f-page/f-markdown/domain/markdown/markdown.service.d.ts +22 -0
  244. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/e-markdown-container-type.d.ts +11 -0
  245. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/i-markdown-it-token.d.ts +15 -0
  246. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/index.d.ts +7 -0
  247. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-alerts.d.ts +9 -0
  248. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-code-group.d.ts +17 -0
  249. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-code-view.d.ts +5 -0
  250. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-example-group.d.ts +21 -0
  251. package/lib/f-page/f-markdown/domain/markdown/parse-markdown/parse-preview-group.d.ts +17 -0
  252. package/lib/f-page/f-markdown/domain/markdown/utils/get-content.d.ts +2 -0
  253. package/lib/f-page/f-markdown/domain/markdown/utils/index.d.ts +1 -0
  254. package/lib/f-page/f-markdown/f-markdown-renderer.component.d.ts +25 -0
  255. package/lib/f-page/f-markdown/index.d.ts +2 -0
  256. package/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/get-previous-next-page-navigation.handler.d.ts +9 -0
  257. package/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/get-previous-next-page-navigation.request.d.ts +4 -0
  258. package/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/get-previous-next-page-navigation.response.d.ts +6 -0
  259. package/lib/f-page/f-markdown-footer/domain/features/get-previous-next-page-navigation/index.d.ts +3 -0
  260. package/lib/f-page/f-markdown-footer/domain/features/index.d.ts +1 -0
  261. package/lib/f-page/f-markdown-footer/domain/i-page-link.d.ts +4 -0
  262. package/lib/f-page/f-markdown-footer/domain/index.d.ts +2 -0
  263. package/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-edit-information.component.d.ts +5 -0
  264. package/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-edit-link/f-footer-edit-link.component.d.ts +5 -0
  265. package/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-edit-link/index.d.ts +1 -0
  266. package/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-last-updated/f-footer-last-updated.component.d.ts +5 -0
  267. package/lib/f-page/f-markdown-footer/f-footer-edit-information/f-footer-last-updated/index.d.ts +1 -0
  268. package/lib/f-page/f-markdown-footer/f-footer-edit-information/index.d.ts +1 -0
  269. package/lib/f-page/f-markdown-footer/f-footer-navigation/f-footer-navigation-button/f-footer-navigation-button.component.d.ts +8 -0
  270. package/lib/f-page/f-markdown-footer/f-footer-navigation/f-footer-navigation-button/index.d.ts +1 -0
  271. package/lib/f-page/f-markdown-footer/f-footer-navigation/f-footer-navigation.component.d.ts +5 -0
  272. package/lib/f-page/f-markdown-footer/f-footer-navigation/index.d.ts +2 -0
  273. package/lib/f-page/f-markdown-footer/f-markdown-footer.component.d.ts +29 -0
  274. package/lib/f-page/f-markdown-footer/index.d.ts +4 -0
  275. package/lib/f-page/f-page.component.d.ts +5 -0
  276. package/lib/f-page/f-table-of-content/f-table-of-content-items/f-table-of-content-items.component.d.ts +7 -0
  277. package/lib/f-page/f-table-of-content/f-table-of-content-items/index.d.ts +1 -0
  278. package/lib/f-page/f-table-of-content/f-table-of-content.component.d.ts +28 -0
  279. package/lib/f-page/f-table-of-content/index.d.ts +2 -0
  280. package/lib/f-page/index.d.ts +4 -0
  281. package/lib/f-scrollable-container/domain/calculate-hash-from-scroll-position/calculate-hash-from-scroll-position.handler.d.ts +15 -0
  282. package/lib/f-scrollable-container/domain/calculate-hash-from-scroll-position/calculate-hash-from-scroll-position.request.d.ts +5 -0
  283. package/lib/f-scrollable-container/domain/calculate-hash-from-scroll-position/index.d.ts +2 -0
  284. package/lib/f-scrollable-container/domain/get-absolute-top-to-container/get-absolute-top-to-container.handler.d.ts +5 -0
  285. package/lib/f-scrollable-container/domain/get-absolute-top-to-container/get-absolute-top-to-container.request.d.ts +5 -0
  286. package/lib/f-scrollable-container/domain/get-absolute-top-to-container/index.d.ts +2 -0
  287. package/lib/f-scrollable-container/domain/get-table-of-content-data/get-table-of-content-data.handler.d.ts +11 -0
  288. package/lib/f-scrollable-container/domain/get-table-of-content-data/get-table-of-content-data.request.d.ts +11 -0
  289. package/lib/f-scrollable-container/domain/get-table-of-content-data/index.d.ts +2 -0
  290. package/lib/f-scrollable-container/domain/i-table-of-content-item.d.ts +7 -0
  291. package/lib/f-scrollable-container/domain/index.d.ts +6 -0
  292. package/lib/f-scrollable-container/domain/scroll-to-element-in-container.d.ts +12 -0
  293. package/lib/f-scrollable-container/domain/table-of-content-data.d.ts +6 -0
  294. package/lib/f-scrollable-container/f-scrollable-container.component.d.ts +13 -0
  295. package/lib/f-scrollable-container/f-scrollable.service.d.ts +25 -0
  296. package/lib/f-scrollable-container/index.d.ts +2 -0
  297. package/lib/index.d.ts +6 -0
  298. package/package.json +49 -0
  299. package/public-api.d.ts +1 -0
@@ -0,0 +1,82 @@
1
+ import { ChangeDetectionStrategy, Component, HostListener, } from '@angular/core';
2
+ import { FFooterNavigationButtonComponent, FFooterNavigationComponent } from './f-footer-navigation';
3
+ import { FFooterEditInformationComponent } from './f-footer-edit-information';
4
+ import { FFooterEditLinkComponent } from './f-footer-edit-information/f-footer-edit-link';
5
+ import { FFooterLastUpdatedComponent } from './f-footer-edit-information/f-footer-last-updated';
6
+ import { debounceTime, startWith, Subscription } from 'rxjs';
7
+ import { ActivatedRoute, Router, RouterLink } from '@angular/router';
8
+ import { HandleNavigationLinksHandler, HandleNavigationLinksRequest } from '../../domain';
9
+ import { GetPreviousNextPageNavigationHandler, GetPreviousNextPageNavigationRequest } from './domain';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../domain";
12
+ import * as i2 from "@angular/router";
13
+ export class FMarkdownFooterComponent {
14
+ constructor(injector, fEnvironmentService, router, changeDetectorRef) {
15
+ this.injector = injector;
16
+ this.fEnvironmentService = fEnvironmentService;
17
+ this.router = router;
18
+ this.changeDetectorRef = changeDetectorRef;
19
+ this.subscriptions$ = new Subscription();
20
+ this.navigation = {};
21
+ }
22
+ ngOnInit() {
23
+ this.subscriptions$.add(this.subscribeOnRouteChanges());
24
+ }
25
+ subscribeOnRouteChanges() {
26
+ return this.getRouterEvents().pipe(startWith(null), debounceTime(10)).subscribe(() => this.updateData());
27
+ }
28
+ getRouterEvents() {
29
+ return this.injector.get(Router).events;
30
+ }
31
+ updateData() {
32
+ const currentPath = this.router.url;
33
+ const prefix = currentPath.substring(0, currentPath.lastIndexOf('/'));
34
+ this.navigation = JSON.parse(JSON.stringify(this.fEnvironmentService.getFooterNavigation()));
35
+ if (this.navigation.editLink) {
36
+ this.editLink = this.getEditLink();
37
+ }
38
+ const previousNext = new GetPreviousNextPageNavigationHandler(this.fEnvironmentService).handle(new GetPreviousNextPageNavigationRequest(this.getCurrentLink()));
39
+ this.previousLink = previousNext.previousLink;
40
+ this.normalizeLink(this.previousLink, prefix);
41
+ this.nextLink = previousNext.nextLink;
42
+ this.normalizeLink(this.nextLink, prefix);
43
+ this.changeDetectorRef.markForCheck();
44
+ }
45
+ normalizeLink(item, prefix) {
46
+ if (item?.link && !this.isExternalLink(item.link)) {
47
+ item.link = item.link.startsWith('/') ? `${prefix}${item.link}` : `${prefix}/${item.link}`;
48
+ }
49
+ }
50
+ isExternalLink(href) {
51
+ return href.startsWith('www') || href.startsWith('http');
52
+ }
53
+ getEditLink() {
54
+ return this.navigation.editLink.pattern + this.getCurrentLink() + '.md';
55
+ }
56
+ getCurrentLink() {
57
+ return this.injector.get(ActivatedRoute).snapshot.url.map((x) => x.path).join('/');
58
+ }
59
+ onDocumentClick(event) {
60
+ this.injector.get(HandleNavigationLinksHandler).handle(new HandleNavigationLinksRequest(event));
61
+ }
62
+ ngOnDestroy() {
63
+ this.subscriptions$.unsubscribe();
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FMarkdownFooterComponent, deps: [{ token: i0.Injector }, { token: i1.FEnvironmentService }, { token: i2.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FMarkdownFooterComponent, isStandalone: true, selector: "footer [f-markdown-footer]", host: { listeners: { "click": "onDocumentClick($event)" } }, ngImport: i0, template: "@if (editLink) {\n <f-footer-edit-information>\n <a f-footer-edit-link [href]=\"editLink\">\n {{ navigation.editLink?.text || 'Edit this page on GitHub' }}\n </a>\n\n <!-- <f-footer-last-updated>-->\n <!-- Last updated: <span>{{ lastUpdated.datetime }}</span>-->\n <!-- </f-footer-last-updated>-->\n </f-footer-edit-information>\n}\n\n@if (previousLink || nextLink) {\n <nav f-footer-navigation>\n @if (previousLink) {\n <a f-footer-navigation-button\n [href]=\"previousLink.link\"\n [description]=\"navigation.previous\"\n [link]=\"previousLink\">\n </a>\n }\n @if (nextLink) {\n <a f-footer-navigation-button class=\"next\"\n [href]=\"nextLink.link\"\n [description]=\"navigation.next\"\n [link]=\"nextLink\">\n </a>\n }\n </nav>\n}\n\n", styles: [":host{display:block;margin-top:64px}\n"], dependencies: [{ kind: "component", type: FFooterNavigationComponent, selector: "nav[f-footer-navigation]" }, { kind: "component", type: FFooterNavigationButtonComponent, selector: "a[f-footer-navigation-button]", inputs: ["description", "link"] }, { kind: "component", type: FFooterEditInformationComponent, selector: "f-footer-edit-information" }, { kind: "component", type: FFooterEditLinkComponent, selector: "a[f-footer-edit-link]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FMarkdownFooterComponent, decorators: [{
69
+ type: Component,
70
+ args: [{ selector: 'footer [f-markdown-footer]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
71
+ FFooterNavigationComponent,
72
+ FFooterNavigationButtonComponent,
73
+ FFooterEditInformationComponent,
74
+ FFooterEditLinkComponent,
75
+ FFooterLastUpdatedComponent,
76
+ RouterLink,
77
+ ], standalone: true, template: "@if (editLink) {\n <f-footer-edit-information>\n <a f-footer-edit-link [href]=\"editLink\">\n {{ navigation.editLink?.text || 'Edit this page on GitHub' }}\n </a>\n\n <!-- <f-footer-last-updated>-->\n <!-- Last updated: <span>{{ lastUpdated.datetime }}</span>-->\n <!-- </f-footer-last-updated>-->\n </f-footer-edit-information>\n}\n\n@if (previousLink || nextLink) {\n <nav f-footer-navigation>\n @if (previousLink) {\n <a f-footer-navigation-button\n [href]=\"previousLink.link\"\n [description]=\"navigation.previous\"\n [link]=\"previousLink\">\n </a>\n }\n @if (nextLink) {\n <a f-footer-navigation-button class=\"next\"\n [href]=\"nextLink.link\"\n [description]=\"navigation.next\"\n [link]=\"nextLink\">\n </a>\n }\n </nav>\n}\n\n", styles: [":host{display:block;margin-top:64px}\n"] }]
78
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FEnvironmentService }, { type: i2.Router }, { type: i0.ChangeDetectorRef }], propDecorators: { onDocumentClick: [{
79
+ type: HostListener,
80
+ args: ['click', ['$event']]
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1tYXJrZG93bi1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXBhZ2UvZi1tYXJrZG93bi1mb290ZXIvZi1tYXJrZG93bi1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXBhZ2UvZi1tYXJrZG93bi1mb290ZXIvZi1tYXJrZG93bi1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsWUFBWSxHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUVMLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFFN0IsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLG9DQUFvQyxFQUFhLE1BQU0sVUFBVSxDQUFDOzs7O0FBaUJqSCxNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLE1BQWMsRUFDZCxpQkFBb0M7UUFIcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZHRDLG1CQUFjLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsZUFBVSxHQUEwQixFQUFFLENBQUM7SUFjakQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUNsQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQzVGLElBQUksb0NBQW9DLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ2hFLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBMkIsRUFBRSxNQUFjO1FBQy9ELElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBSSxNQUFPLEdBQUksSUFBSSxDQUFDLElBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFJLE1BQU8sSUFBSyxJQUFJLENBQUMsSUFBSyxFQUFFLENBQUM7UUFDckcsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsSUFBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzNFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUdNLGVBQWUsQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDOytHQTVFVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixtSkNqQ3JDLGkxQkErQkEsZ0dEUEksMEJBQTBCLHFFQUMxQixnQ0FBZ0MsMkdBQ2hDLCtCQUErQixzRUFDL0Isd0JBQXdCOzs0RkFNZix3QkFBd0I7a0JBZnBDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLDBCQUEwQjt3QkFDMUIsZ0NBQWdDO3dCQUNoQywrQkFBK0I7d0JBQy9CLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQixVQUFVO3FCQUNYLGNBQ1csSUFBSTtvS0F3RVQsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkZvb3Rlck5hdmlnYXRpb25CdXR0b25Db21wb25lbnQsIEZGb290ZXJOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9mLWZvb3Rlci1uYXZpZ2F0aW9uJztcbmltcG9ydCB7IEZGb290ZXJFZGl0SW5mb3JtYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2YtZm9vdGVyLWVkaXQtaW5mb3JtYXRpb24nO1xuaW1wb3J0IHsgRkZvb3RlckVkaXRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9mLWZvb3Rlci1lZGl0LWluZm9ybWF0aW9uL2YtZm9vdGVyLWVkaXQtbGluayc7XG5pbXBvcnQgeyBGRm9vdGVyTGFzdFVwZGF0ZWRDb21wb25lbnQgfSBmcm9tICcuL2YtZm9vdGVyLWVkaXQtaW5mb3JtYXRpb24vZi1mb290ZXItbGFzdC11cGRhdGVkJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgRkVudmlyb25tZW50U2VydmljZSxcbiAgSGFuZGxlTmF2aWdhdGlvbkxpbmtzSGFuZGxlcixcbiAgSGFuZGxlTmF2aWdhdGlvbkxpbmtzUmVxdWVzdCxcbiAgSURvY3NGb290ZXJOYXZpZ2F0aW9uXG59IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBHZXRQcmV2aW91c05leHRQYWdlTmF2aWdhdGlvbkhhbmRsZXIsIEdldFByZXZpb3VzTmV4dFBhZ2VOYXZpZ2F0aW9uUmVxdWVzdCwgSVBhZ2VMaW5rIH0gZnJvbSAnLi9kb21haW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb290ZXIgW2YtbWFya2Rvd24tZm9vdGVyXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mLW1hcmtkb3duLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9mLW1hcmtkb3duLWZvb3Rlci5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBGRm9vdGVyTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICBGRm9vdGVyTmF2aWdhdGlvbkJ1dHRvbkNvbXBvbmVudCxcbiAgICBGRm9vdGVyRWRpdEluZm9ybWF0aW9uQ29tcG9uZW50LFxuICAgIEZGb290ZXJFZGl0TGlua0NvbXBvbmVudCxcbiAgICBGRm9vdGVyTGFzdFVwZGF0ZWRDb21wb25lbnQsXG4gICAgUm91dGVyTGluayxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGTWFya2Rvd25Gb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBuYXZpZ2F0aW9uOiBJRG9jc0Zvb3Rlck5hdmlnYXRpb24gPSB7fTtcblxuICBwcm90ZWN0ZWQgZWRpdExpbms6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgcHJldmlvdXNMaW5rOiBJUGFnZUxpbmsgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIG5leHRMaW5rOiBJUGFnZUxpbmsgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBmRW52aXJvbm1lbnRTZXJ2aWNlOiBGRW52aXJvbm1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJC5hZGQodGhpcy5zdWJzY3JpYmVPblJvdXRlQ2hhbmdlcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlT25Sb3V0ZUNoYW5nZXMoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZXJFdmVudHMoKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKG51bGwpLCBkZWJvdW5jZVRpbWUoMTApXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVEYXRhKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3V0ZXJFdmVudHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKS5ldmVudHM7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhdGggPSB0aGlzLnJvdXRlci51cmw7XG4gICAgY29uc3QgcHJlZml4ID0gY3VycmVudFBhdGguc3Vic3RyaW5nKDAsIGN1cnJlbnRQYXRoLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIHRoaXMubmF2aWdhdGlvbiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mRW52aXJvbm1lbnRTZXJ2aWNlLmdldEZvb3Rlck5hdmlnYXRpb24oKSkpO1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb24uZWRpdExpbmspIHtcbiAgICAgIHRoaXMuZWRpdExpbmsgPSB0aGlzLmdldEVkaXRMaW5rKCk7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzTmV4dCA9IG5ldyBHZXRQcmV2aW91c05leHRQYWdlTmF2aWdhdGlvbkhhbmRsZXIodGhpcy5mRW52aXJvbm1lbnRTZXJ2aWNlKS5oYW5kbGUoXG4gICAgICBuZXcgR2V0UHJldmlvdXNOZXh0UGFnZU5hdmlnYXRpb25SZXF1ZXN0KHRoaXMuZ2V0Q3VycmVudExpbmsoKSlcbiAgICApO1xuICAgIHRoaXMucHJldmlvdXNMaW5rID0gcHJldmlvdXNOZXh0LnByZXZpb3VzTGluaztcbiAgICB0aGlzLm5vcm1hbGl6ZUxpbmsodGhpcy5wcmV2aW91c0xpbmssIHByZWZpeCk7XG4gICAgdGhpcy5uZXh0TGluayA9IHByZXZpb3VzTmV4dC5uZXh0TGluaztcbiAgICB0aGlzLm5vcm1hbGl6ZUxpbmsodGhpcy5uZXh0TGluaywgcHJlZml4KTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVMaW5rKGl0ZW06IElQYWdlTGluayB8IHVuZGVmaW5lZCwgcHJlZml4OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXRlbT8ubGluayAmJiAhdGhpcy5pc0V4dGVybmFsTGluayhpdGVtLmxpbmspKSB7XG4gICAgICBpdGVtLmxpbmsgPSBpdGVtLmxpbmsuc3RhcnRzV2l0aCgnLycpID8gYCR7IHByZWZpeCB9JHsgaXRlbS5saW5rIH1gIDogYCR7IHByZWZpeCB9LyR7IGl0ZW0ubGluayB9YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzRXh0ZXJuYWxMaW5rKGhyZWY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBocmVmLnN0YXJ0c1dpdGgoJ3d3dycpIHx8IGhyZWYuc3RhcnRzV2l0aCgnaHR0cCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZGl0TGluaygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb24uZWRpdExpbmshLnBhdHRlcm4gKyB0aGlzLmdldEN1cnJlbnRMaW5rKCkgKyAnLm1kJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudExpbmsoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpLnNuYXBzaG90LnVybC5tYXAoKHgpID0+IHgucGF0aCkuam9pbignLycpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbICckZXZlbnQnIF0pXG4gIHB1YmxpYyBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmluamVjdG9yLmdldChIYW5kbGVOYXZpZ2F0aW9uTGlua3NIYW5kbGVyKS5oYW5kbGUobmV3IEhhbmRsZU5hdmlnYXRpb25MaW5rc1JlcXVlc3QoZXZlbnQpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIkBpZiAoZWRpdExpbmspIHtcbiAgPGYtZm9vdGVyLWVkaXQtaW5mb3JtYXRpb24+XG4gICAgPGEgZi1mb290ZXItZWRpdC1saW5rIFtocmVmXT1cImVkaXRMaW5rXCI+XG4gICAgICB7eyBuYXZpZ2F0aW9uLmVkaXRMaW5rPy50ZXh0IHx8ICdFZGl0IHRoaXMgcGFnZSBvbiBHaXRIdWInIH19XG4gICAgPC9hPlxuXG4gICAgPCEtLSAgPGYtZm9vdGVyLWxhc3QtdXBkYXRlZD4tLT5cbiAgICA8IS0tICAgIExhc3QgdXBkYXRlZDogPHNwYW4+e3sgbGFzdFVwZGF0ZWQuZGF0ZXRpbWUgfX08L3NwYW4+LS0+XG4gICAgPCEtLSAgPC9mLWZvb3Rlci1sYXN0LXVwZGF0ZWQ+LS0+XG4gIDwvZi1mb290ZXItZWRpdC1pbmZvcm1hdGlvbj5cbn1cblxuQGlmIChwcmV2aW91c0xpbmsgfHwgbmV4dExpbmspIHtcbiAgPG5hdiBmLWZvb3Rlci1uYXZpZ2F0aW9uPlxuICAgIEBpZiAocHJldmlvdXNMaW5rKSB7XG4gICAgICA8YSBmLWZvb3Rlci1uYXZpZ2F0aW9uLWJ1dHRvblxuICAgICAgICAgW2hyZWZdPVwicHJldmlvdXNMaW5rLmxpbmtcIlxuICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIm5hdmlnYXRpb24ucHJldmlvdXNcIlxuICAgICAgICAgW2xpbmtdPVwicHJldmlvdXNMaW5rXCI+XG4gICAgICA8L2E+XG4gICAgfVxuICAgIEBpZiAobmV4dExpbmspIHtcbiAgICAgIDxhIGYtZm9vdGVyLW5hdmlnYXRpb24tYnV0dG9uIGNsYXNzPVwibmV4dFwiXG4gICAgICAgICBbaHJlZl09XCJuZXh0TGluay5saW5rXCJcbiAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJuYXZpZ2F0aW9uLm5leHRcIlxuICAgICAgICAgW2xpbmtdPVwibmV4dExpbmtcIj5cbiAgICAgIDwvYT5cbiAgICB9XG4gIDwvbmF2PlxufVxuXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './domain';
2
+ export * from './f-footer-edit-information';
3
+ export * from './f-footer-navigation';
4
+ export * from './f-markdown-footer.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2YtcGFnZS9mLW1hcmtkb3duLWZvb3Rlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUV6QixjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZG9tYWluJztcblxuZXhwb3J0ICogZnJvbSAnLi9mLWZvb3Rlci1lZGl0LWluZm9ybWF0aW9uJztcblxuZXhwb3J0ICogZnJvbSAnLi9mLWZvb3Rlci1uYXZpZ2F0aW9uJztcblxuZXhwb3J0ICogZnJvbSAnLi9mLW1hcmtkb3duLWZvb3Rlci5jb21wb25lbnQnO1xuXG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
+ import { FTableOfContentComponent } from './f-table-of-content';
3
+ import { FMarkdownRendererComponent } from './f-markdown';
4
+ import * as i0 from "@angular/core";
5
+ export class FPageComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FPageComponent, isStandalone: true, selector: "f-page", host: { attributes: { "ngSkipHydration": "" } }, ngImport: i0, template: "<f-markdown-renderer></f-markdown-renderer>\n<aside f-table-of-content></aside>\n\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}:host [fMarkdownRenderer]{width:100%}@media (min-width: 1280px){:host{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 4)}:host [fMarkdownRenderer]{width:calc(100% - var(--on-page-navigation-width) - var(--page-padding))}}\n"], dependencies: [{ kind: "component", type: FTableOfContentComponent, selector: "aside[f-table-of-content]" }, { kind: "component", type: FMarkdownRendererComponent, selector: "f-markdown-renderer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FPageComponent, decorators: [{
10
+ type: Component,
11
+ args: [{ selector: 'f-page', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
12
+ FTableOfContentComponent,
13
+ FMarkdownRendererComponent
14
+ ], host: {
15
+ 'ngSkipHydration': ''
16
+ }, template: "<f-markdown-renderer></f-markdown-renderer>\n<aside f-table-of-content></aside>\n\n", styles: [":host{display:block;width:100%;padding:48px var(--page-padding) 140px}:host [fMarkdownRenderer]{width:100%}@media (min-width: 1280px){:host{padding-right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 2);padding-left:max(var(--page-padding),(100vw - var(--layout-max-width)) / 4)}:host [fMarkdownRenderer]{width:calc(100% - var(--on-page-navigation-width) - var(--page-padding))}}\n"] }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1wYWdlL2YtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2YtcGFnZS9mLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQWdCMUQsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYzttR0FBZCxjQUFjLG1IQ3JCM0IscUZBR0EscWNEV0ksd0JBQXdCLHNFQUN4QiwwQkFBMEI7OzRGQU1qQixjQUFjO2tCQWQxQixTQUFTOytCQUNFLFFBQVEsY0FHTixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1Asd0JBQXdCO3dCQUN4QiwwQkFBMEI7cUJBQzNCLFFBQ0s7d0JBQ0osaUJBQWlCLEVBQUUsRUFBRTtxQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZUYWJsZU9mQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vZi10YWJsZS1vZi1jb250ZW50JztcbmltcG9ydCB7IEZNYXJrZG93blJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9mLW1hcmtkb3duJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZi1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2YtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9mLXBhZ2UuY29tcG9uZW50LnNjc3MnIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgRlRhYmxlT2ZDb250ZW50Q29tcG9uZW50LFxuICAgIEZNYXJrZG93blJlbmRlcmVyQ29tcG9uZW50XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnbmdTa2lwSHlkcmF0aW9uJzogJydcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBGUGFnZUNvbXBvbmVudCB7XG5cbn1cbiIsIjxmLW1hcmtkb3duLXJlbmRlcmVyPjwvZi1tYXJrZG93bi1yZW5kZXJlcj5cbjxhc2lkZSBmLXRhYmxlLW9mLWNvbnRlbnQ+PC9hc2lkZT5cblxuIl19
@@ -0,0 +1,16 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FTableOfContentItemsComponent {
4
+ constructor() {
5
+ this.items = [];
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FTableOfContentItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FTableOfContentItemsComponent, isStandalone: true, selector: "ul[f-table-of-content-items]", inputs: { items: "items" }, ngImport: i0, template: "@for (item of items;track item.hash) {\n <li [class.active]=\"item.isActive\"><a class=\"text-ellipsis\" [href]=\"item.hash\">{{ item.title }}</a></li>\n @if (item.children) {\n <ul f-table-of-content-items [items]=\"item.children\"></ul>\n }\n}\n", styles: [":host{list-style:none;margin:0;padding:0}:host li{overflow-wrap:break-word;color:var(--secondary-text);max-width:180px}:host li a{display:block;line-height:var(--on-page-navigation-item-height);font-size:14px;color:inherit;font-weight:400}:host li.active{color:var(--primary-text)}:host li+ul{padding:0 16px}\n"], dependencies: [{ kind: "component", type: FTableOfContentItemsComponent, selector: "ul[f-table-of-content-items]", inputs: ["items"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FTableOfContentItemsComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'ul[f-table-of-content-items]', changeDetection: ChangeDetectionStrategy.Default, standalone: true, template: "@for (item of items;track item.hash) {\n <li [class.active]=\"item.isActive\"><a class=\"text-ellipsis\" [href]=\"item.hash\">{{ item.title }}</a></li>\n @if (item.children) {\n <ul f-table-of-content-items [items]=\"item.children\"></ul>\n }\n}\n", styles: [":host{list-style:none;margin:0;padding:0}:host li{overflow-wrap:break-word;color:var(--secondary-text);max-width:180px}:host li a{display:block;line-height:var(--on-page-navigation-item-height);font-size:14px;color:inherit;font-weight:400}:host li.active{color:var(--primary-text)}:host li+ul{padding:0 16px}\n"] }]
13
+ }], propDecorators: { items: [{
14
+ type: Input
15
+ }] } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi10YWJsZS1vZi1jb250ZW50LWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1wYWdlL2YtdGFibGUtb2YtY29udGVudC9mLXRhYmxlLW9mLWNvbnRlbnQtaXRlbXMvZi10YWJsZS1vZi1jb250ZW50LWl0ZW1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1wYWdlL2YtdGFibGUtb2YtY29udGVudC9mLXRhYmxlLW9mLWNvbnRlbnQtaXRlbXMvZi10YWJsZS1vZi1jb250ZW50LWl0ZW1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUFFLEtBQUssRUFDakIsTUFBTSxlQUFlLENBQUM7O0FBVXZCLE1BQU0sT0FBTyw2QkFBNkI7SUFQMUM7UUFVUyxVQUFLLEdBQTBCLEVBQUUsQ0FBQztLQUMxQzsrR0FKWSw2QkFBNkI7bUdBQTdCLDZCQUE2QixvSENiMUMsK1BBTUEsZ1hET2EsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQVB6QyxTQUFTOytCQUNFLDhCQUE4QixtQkFHdkIsdUJBQXVCLENBQUMsT0FBTyxjQUNwQyxJQUFJOzhCQUtULEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRhYmxlT2ZDb250ZW50SXRlbSB9IGZyb20gJy4uLy4uLy4uL2Ytc2Nyb2xsYWJsZS1jb250YWluZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1bFtmLXRhYmxlLW9mLWNvbnRlbnQtaXRlbXNdJyxcbiAgc3R5bGVVcmxzOiBbICcuL2YtdGFibGUtb2YtY29udGVudC1pdGVtcy5jb21wb25lbnQuc2NzcycgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2YtdGFibGUtb2YtY29udGVudC1pdGVtcy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGVGFibGVPZkNvbnRlbnRJdGVtc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1zOiBJVGFibGVPZkNvbnRlbnRJdGVtW10gPSBbXTtcbn1cbiIsIkBmb3IgKGl0ZW0gb2YgaXRlbXM7dHJhY2sgaXRlbS5oYXNoKSB7XG4gIDxsaSBbY2xhc3MuYWN0aXZlXT1cIml0ZW0uaXNBY3RpdmVcIj48YSBjbGFzcz1cInRleHQtZWxsaXBzaXNcIiBbaHJlZl09XCJpdGVtLmhhc2hcIj57eyBpdGVtLnRpdGxlIH19PC9hPjwvbGk+XG4gIEBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgIDx1bCBmLXRhYmxlLW9mLWNvbnRlbnQtaXRlbXMgW2l0ZW1zXT1cIml0ZW0uY2hpbGRyZW5cIj48L3VsPlxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './f-table-of-content-items.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2YtcGFnZS9mLXRhYmxlLW9mLWNvbnRlbnQvZi10YWJsZS1vZi1jb250ZW50LWl0ZW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2YtdGFibGUtb2YtY29udGVudC1pdGVtcy5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,63 @@
1
+ import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { AsyncPipe, JsonPipe } from '@angular/common';
4
+ import { TableOfContentData } from '../../f-scrollable-container';
5
+ import { FTableOfContentItemsComponent } from './f-table-of-content-items';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../domain";
8
+ import * as i2 from "../../f-scrollable-container/f-scrollable.service";
9
+ import * as i3 from "@foblex/platform";
10
+ export class FTableOfContentComponent {
11
+ get onToc$() {
12
+ return this.fScrollableService.onToc$;
13
+ }
14
+ constructor(fEnvironmentService, elementRef, fScrollableService, changeDetectorRef, fBrowser) {
15
+ this.fEnvironmentService = fEnvironmentService;
16
+ this.elementRef = elementRef;
17
+ this.fScrollableService = fScrollableService;
18
+ this.changeDetectorRef = changeDetectorRef;
19
+ this.fBrowser = fBrowser;
20
+ this.subscriptions$ = new Subscription();
21
+ this.tocData = new TableOfContentData([], []);
22
+ this.activeMarkerPosition = 0;
23
+ this.title = this.fEnvironmentService.getToC().title;
24
+ }
25
+ ngOnInit() {
26
+ this.subscriptions$.add(this.subscribeOnPageNavigation());
27
+ }
28
+ subscribeOnPageNavigation() {
29
+ return this.onToc$.subscribe((data) => {
30
+ this.tocData = data;
31
+ this.activeMarkerPosition = this.getActiveMarkerPosition();
32
+ this.changeDetectorRef.detectChanges();
33
+ });
34
+ }
35
+ getActiveMarkerPosition() {
36
+ const index = this.tocData.flat.findIndex((x) => x.isActive) || 0;
37
+ const itemHeight = parseInt(this.getComputedStyle(this.elementRef.nativeElement).getPropertyValue('--on-page-navigation-item-height'));
38
+ return (index + 1) * itemHeight + itemHeight / 4;
39
+ }
40
+ getComputedStyle(element) {
41
+ return this.fBrowser.window.getComputedStyle(element);
42
+ }
43
+ onDocumentClick(event) {
44
+ const target = event.target;
45
+ if (target.tagName === 'A') {
46
+ event.preventDefault();
47
+ this.fScrollableService.scrollTo(target.getAttribute('href'));
48
+ }
49
+ }
50
+ ngOnDestroy() {
51
+ this.subscriptions$.unsubscribe();
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FTableOfContentComponent, deps: [{ token: i1.FEnvironmentService }, { token: i0.ElementRef }, { token: i2.FScrollableService }, { token: i0.ChangeDetectorRef }, { token: i3.BrowserService }], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FTableOfContentComponent, isStandalone: true, selector: "aside[f-table-of-content]", host: { listeners: { "click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div class=\"title\">{{ title || 'In this article' }}</div>\n<ul f-table-of-content-items [items]=\"tocData.tree\"></ul>\n<div class=\"active-marker\" [style.top]=\"activeMarkerPosition + 'px'\"></div>\n", styles: [":host{--on-page-navigation-item-height: 32px;display:none;padding-left:16px;border-left:1px solid var(--divider-color);font-size:13px;font-weight:500;position:relative}:host .title{line-height:32px;font-size:14px;font-weight:600}@media (min-width: 1280px){:host{display:block;width:var(--on-page-navigation-width);position:fixed;top:calc(var(--header-height) + 48px);right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 3)}}:host .active-marker{position:absolute;top:0;left:0;width:2px;height:calc(var(--on-page-navigation-item-height) / 2);border-radius:2px;background-color:var(--primary-1);transition:top .25s cubic-bezier(0,1,.5,1),opacity .25s}\n"], dependencies: [{ kind: "component", type: FTableOfContentItemsComponent, selector: "ul[f-table-of-content-items]", inputs: ["items"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FTableOfContentComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'aside[f-table-of-content]', standalone: true, imports: [AsyncPipe, JsonPipe, FTableOfContentItemsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"title\">{{ title || 'In this article' }}</div>\n<ul f-table-of-content-items [items]=\"tocData.tree\"></ul>\n<div class=\"active-marker\" [style.top]=\"activeMarkerPosition + 'px'\"></div>\n", styles: [":host{--on-page-navigation-item-height: 32px;display:none;padding-left:16px;border-left:1px solid var(--divider-color);font-size:13px;font-weight:500;position:relative}:host .title{line-height:32px;font-size:14px;font-weight:600}@media (min-width: 1280px){:host{display:block;width:var(--on-page-navigation-width);position:fixed;top:calc(var(--header-height) + 48px);right:max(var(--page-padding),(100vw - var(--layout-max-width)) / 3)}}:host .active-marker{position:absolute;top:0;left:0;width:2px;height:calc(var(--on-page-navigation-item-height) / 2);border-radius:2px;background-color:var(--primary-1);transition:top .25s cubic-bezier(0,1,.5,1),opacity .25s}\n"] }]
59
+ }], ctorParameters: () => [{ type: i1.FEnvironmentService }, { type: i0.ElementRef }, { type: i2.FScrollableService }, { type: i0.ChangeDetectorRef }, { type: i3.BrowserService }], propDecorators: { onDocumentClick: [{
60
+ type: HostListener,
61
+ args: ['click', ['$event']]
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi10YWJsZS1vZi1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1wYWdlL2YtdGFibGUtb2YtY29udGVudC9mLXRhYmxlLW9mLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXBhZ2UvZi10YWJsZS1vZi1jb250ZW50L2YtdGFibGUtb2YtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQ2hGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFZM0UsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQVFELFlBQ1UsbUJBQXdDLEVBQ3hDLFVBQW1DLEVBQ25DLGtCQUFzQyxFQUN0QyxpQkFBb0MsRUFDcEMsUUFBd0I7UUFKeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFqQjFCLG1CQUFjLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNaEQsWUFBTyxHQUF1QixJQUFJLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU3RCx5QkFBb0IsR0FBVyxDQUFDLENBQUM7UUFXekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8seUJBQXlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztRQUN2SSxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFvQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFHTSxlQUFlLENBQUMsS0FBaUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDOytHQXpEVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixrSkNuQnJDLDZNQUdBLGt0QkRha0MsNkJBQTZCOzs0RkFHbEQsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLDJCQUEyQixjQUd6QixJQUFJLFdBQ1AsQ0FBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLDZCQUE2QixDQUFFLG1CQUM5Qyx1QkFBdUIsQ0FBQyxNQUFNOytNQWlEeEMsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGU2Nyb2xsYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mLXNjcm9sbGFibGUtY29udGFpbmVyL2Ytc2Nyb2xsYWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlT2ZDb250ZW50RGF0YSB9IGZyb20gJy4uLy4uL2Ytc2Nyb2xsYWJsZS1jb250YWluZXInO1xuaW1wb3J0IHsgRlRhYmxlT2ZDb250ZW50SXRlbXNDb21wb25lbnQgfSBmcm9tICcuL2YtdGFibGUtb2YtY29udGVudC1pdGVtcyc7XG5pbXBvcnQgeyBGRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FzaWRlW2YtdGFibGUtb2YtY29udGVudF0nLFxuICBzdHlsZVVybHM6IFsgJy4vZi10YWJsZS1vZi1jb250ZW50LmNvbXBvbmVudC5zY3NzJyBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZi10YWJsZS1vZi1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogWyBBc3luY1BpcGUsIEpzb25QaXBlLCBGVGFibGVPZkNvbnRlbnRJdGVtc0NvbXBvbmVudCBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGVGFibGVPZkNvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBnZXQgb25Ub2MkKCk6IE9ic2VydmFibGU8VGFibGVPZkNvbnRlbnREYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuZlNjcm9sbGFibGVTZXJ2aWNlLm9uVG9jJDtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2NEYXRhOiBUYWJsZU9mQ29udGVudERhdGEgPSBuZXcgVGFibGVPZkNvbnRlbnREYXRhKFtdLCBbXSk7XG5cbiAgcHJvdGVjdGVkIGFjdGl2ZU1hcmtlclBvc2l0aW9uOiBudW1iZXIgPSAwO1xuXG4gIHByb3RlY3RlZCB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZkVudmlyb25tZW50U2VydmljZTogRkVudmlyb25tZW50U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgZlNjcm9sbGFibGVTZXJ2aWNlOiBGU2Nyb2xsYWJsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmQnJvd3NlcjogQnJvd3NlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZkVudmlyb25tZW50U2VydmljZS5nZXRUb0MoKS50aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmFkZCh0aGlzLnN1YnNjcmliZU9uUGFnZU5hdmlnYXRpb24oKSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZU9uUGFnZU5hdmlnYXRpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vblRvYyQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnRvY0RhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5hY3RpdmVNYXJrZXJQb3NpdGlvbiA9IHRoaXMuZ2V0QWN0aXZlTWFya2VyUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVNYXJrZXJQb3NpdGlvbigpOiBudW1iZXIge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50b2NEYXRhLmZsYXQuZmluZEluZGV4KCh4KSA9PiB4LmlzQWN0aXZlKSB8fCAwO1xuICAgIGNvbnN0IGl0ZW1IZWlnaHQgPSBwYXJzZUludCh0aGlzLmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tb24tcGFnZS1uYXZpZ2F0aW9uLWl0ZW0taGVpZ2h0JykpO1xuICAgIHJldHVybiAoaW5kZXggKyAxKSAqIGl0ZW1IZWlnaHQgKyBpdGVtSGVpZ2h0IC8gNDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IENTU1N0eWxlRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmZCcm93c2VyLndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbICckZXZlbnQnIF0pXG4gIHB1YmxpYyBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnQScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmZTY3JvbGxhYmxlU2VydmljZS5zY3JvbGxUbyh0YXJnZXQuZ2V0QXR0cmlidXRlKCdocmVmJykhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB8fCAnSW4gdGhpcyBhcnRpY2xlJyB9fTwvZGl2PlxuPHVsIGYtdGFibGUtb2YtY29udGVudC1pdGVtcyBbaXRlbXNdPVwidG9jRGF0YS50cmVlXCI+PC91bD5cbjxkaXYgY2xhc3M9XCJhY3RpdmUtbWFya2VyXCIgW3N0eWxlLnRvcF09XCJhY3RpdmVNYXJrZXJQb3NpdGlvbiArICdweCdcIj48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './f-table-of-content-items';
2
+ export * from './f-table-of-content.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2YtcGFnZS9mLXRhYmxlLW9mLWNvbnRlbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mLXRhYmxlLW9mLWNvbnRlbnQtaXRlbXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2YtdGFibGUtb2YtY29udGVudC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,5 @@
1
+ export * from './f-markdown';
2
+ export * from './f-markdown-footer';
3
+ export * from './f-table-of-content';
4
+ export * from './f-page.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2YtcGFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUU3QixjQUFjLHFCQUFxQixDQUFDO0FBRXBDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZi1tYXJrZG93bic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZi1tYXJrZG93bi1mb290ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2YtdGFibGUtb2YtY29udGVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZi1wYWdlLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { GetAbsoluteTopToContainerHandler, GetAbsoluteTopToContainerRequest } from '../get-absolute-top-to-container';
2
+ export class CalculateHashFromScrollPositionHandler {
3
+ constructor(scrollableContainer, fBrowser) {
4
+ this.scrollableContainer = scrollableContainer;
5
+ this.fBrowser = fBrowser;
6
+ }
7
+ handle(request) {
8
+ let result;
9
+ const containerScrollTop = this.getContainerScrollTop();
10
+ const elementsWithTopPosition = this.calculateElementsTopPositions(request.tocData);
11
+ if (elementsWithTopPosition.length) {
12
+ if (this.isScrollAtBottom(containerScrollTop)) {
13
+ result = elementsWithTopPosition[elementsWithTopPosition.length - 1].hash;
14
+ }
15
+ else {
16
+ result = this.findTargetHashByPosition(containerScrollTop, elementsWithTopPosition);
17
+ }
18
+ }
19
+ return result;
20
+ }
21
+ getContainerScrollTop() {
22
+ return this.scrollableContainer.scrollTop + this.getHeaderHeight();
23
+ }
24
+ getHeaderHeight() {
25
+ return parseInt(this.fBrowser.window.getComputedStyle(this.fBrowser.document.documentElement).getPropertyValue('--header-height'), 10);
26
+ }
27
+ calculateElementsTopPositions(items) {
28
+ return items.map((x) => {
29
+ return {
30
+ hash: x.hash,
31
+ top: this.getAbsoluteTopToContainer(x.element)
32
+ };
33
+ }).filter((x) => !Number.isNaN(x.top));
34
+ }
35
+ getAbsoluteTopToContainer(element) {
36
+ return new GetAbsoluteTopToContainerHandler().handle(new GetAbsoluteTopToContainerRequest(element, this.scrollableContainer));
37
+ }
38
+ isScrollAtBottom(containerScrollTop) {
39
+ return Math.abs(containerScrollTop - this.getHeaderHeight() + this.scrollableContainer.clientHeight - this.scrollableContainer.scrollHeight) < 1;
40
+ }
41
+ findTargetHashByPosition(containerScrollTop, elementsWithTopPosition) {
42
+ let result = elementsWithTopPosition[0].hash;
43
+ for (const { hash, top } of elementsWithTopPosition) {
44
+ if (top > containerScrollTop)
45
+ break;
46
+ result = hash;
47
+ }
48
+ return result;
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24uaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1zY3JvbGxhYmxlLWNvbnRhaW5lci9kb21haW4vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24uaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVV0SCxNQUFNLE9BQU8sc0NBQXNDO0lBRWpELFlBQ1UsbUJBQWdDLEVBQ2hDLFFBQXdCO1FBRHhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBYTtRQUNoQyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtJQUVsQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQStDO1FBQzNELElBQUksTUFBMEIsQ0FBQztRQUMvQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXhELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwRixJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxHQUFHLHVCQUF1QixDQUFFLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUM7WUFDOUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pJLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxLQUE0QjtRQUNoRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQixPQUFPO2dCQUNMLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixHQUFHLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDL0MsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxPQUFvQjtRQUNwRCxPQUFPLElBQUksZ0NBQWdDLEVBQUUsQ0FBQyxNQUFNLENBQ2xELElBQUksZ0NBQWdDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLGtCQUEwQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuSixDQUFDO0lBRU8sd0JBQXdCLENBQUMsa0JBQTBCLEVBQUUsdUJBQXNDO1FBQ2pHLElBQUksTUFBTSxHQUFXLHVCQUF1QixDQUFFLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBQztRQUN2RCxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEdBQUcsR0FBRyxrQkFBa0I7Z0JBQUUsTUFBTTtZQUNwQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSGFuZGxlciB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgQ2FsY3VsYXRlSGFzaEZyb21TY3JvbGxQb3NpdGlvblJlcXVlc3QgfSBmcm9tICcuL2NhbGN1bGF0ZS1oYXNoLWZyb20tc2Nyb2xsLXBvc2l0aW9uLnJlcXVlc3QnO1xuaW1wb3J0IHsgSVRhYmxlT2ZDb250ZW50SXRlbSB9IGZyb20gJy4uL2ktdGFibGUtb2YtY29udGVudC1pdGVtJztcbmltcG9ydCB7IEdldEFic29sdXRlVG9wVG9Db250YWluZXJIYW5kbGVyLCBHZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVyUmVxdWVzdCB9IGZyb20gJy4uL2dldC1hYnNvbHV0ZS10b3AtdG8tY29udGFpbmVyJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5cbmludGVyZmFjZSBJSGFzVG9wSXRlbSB7XG5cbiAgaGFzaDogc3RyaW5nO1xuXG4gIHRvcDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FsY3VsYXRlSGFzaEZyb21TY3JvbGxQb3NpdGlvbkhhbmRsZXIgaW1wbGVtZW50cyBJSGFuZGxlcjxDYWxjdWxhdGVIYXNoRnJvbVNjcm9sbFBvc2l0aW9uUmVxdWVzdCwgc3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY3JvbGxhYmxlQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBwcml2YXRlIGZCcm93c2VyOiBCcm93c2VyU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogQ2FsY3VsYXRlSGFzaEZyb21TY3JvbGxQb3NpdGlvblJlcXVlc3QpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb250YWluZXJTY3JvbGxUb3AgPSB0aGlzLmdldENvbnRhaW5lclNjcm9sbFRvcCgpO1xuXG4gICAgY29uc3QgZWxlbWVudHNXaXRoVG9wUG9zaXRpb24gPSB0aGlzLmNhbGN1bGF0ZUVsZW1lbnRzVG9wUG9zaXRpb25zKHJlcXVlc3QudG9jRGF0YSk7XG5cbiAgICBpZiAoZWxlbWVudHNXaXRoVG9wUG9zaXRpb24ubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5pc1Njcm9sbEF0Qm90dG9tKGNvbnRhaW5lclNjcm9sbFRvcCkpIHtcbiAgICAgICAgcmVzdWx0ID0gZWxlbWVudHNXaXRoVG9wUG9zaXRpb25bIGVsZW1lbnRzV2l0aFRvcFBvc2l0aW9uLmxlbmd0aCAtIDEgXS5oYXNoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5maW5kVGFyZ2V0SGFzaEJ5UG9zaXRpb24oY29udGFpbmVyU2Nyb2xsVG9wLCBlbGVtZW50c1dpdGhUb3BQb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRhaW5lclNjcm9sbFRvcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNjcm9sbGFibGVDb250YWluZXIuc2Nyb2xsVG9wICsgdGhpcy5nZXRIZWFkZXJIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVhZGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhcnNlSW50KHRoaXMuZkJyb3dzZXIud2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5mQnJvd3Nlci5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0taGVhZGVyLWhlaWdodCcpLCAxMCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUVsZW1lbnRzVG9wUG9zaXRpb25zKGl0ZW1zOiBJVGFibGVPZkNvbnRlbnRJdGVtW10pOiBJSGFzVG9wSXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoYXNoOiB4Lmhhc2gsXG4gICAgICAgIHRvcDogdGhpcy5nZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVyKHguZWxlbWVudClcbiAgICAgIH1cbiAgICB9KS5maWx0ZXIoKHgpID0+ICFOdW1iZXIuaXNOYU4oeC50b3ApKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWJzb2x1dGVUb3BUb0NvbnRhaW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5ldyBHZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVySGFuZGxlcigpLmhhbmRsZShcbiAgICAgIG5ldyBHZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVyUmVxdWVzdChlbGVtZW50LCB0aGlzLnNjcm9sbGFibGVDb250YWluZXIpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTY3JvbGxBdEJvdHRvbShjb250YWluZXJTY3JvbGxUb3A6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBNYXRoLmFicyhjb250YWluZXJTY3JvbGxUb3AgLSB0aGlzLmdldEhlYWRlckhlaWdodCgpICsgdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyLmNsaWVudEhlaWdodCAtIHRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lci5zY3JvbGxIZWlnaHQpIDwgMTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFRhcmdldEhhc2hCeVBvc2l0aW9uKGNvbnRhaW5lclNjcm9sbFRvcDogbnVtYmVyLCBlbGVtZW50c1dpdGhUb3BQb3NpdGlvbjogSUhhc1RvcEl0ZW1bXSk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gZWxlbWVudHNXaXRoVG9wUG9zaXRpb25bIDAgXS5oYXNoO1xuICAgIGZvciAoY29uc3QgeyBoYXNoLCB0b3AgfSBvZiBlbGVtZW50c1dpdGhUb3BQb3NpdGlvbikge1xuICAgICAgaWYgKHRvcCA+IGNvbnRhaW5lclNjcm9sbFRvcCkgYnJlYWs7XG4gICAgICByZXN1bHQgPSBoYXNoO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export class CalculateHashFromScrollPositionRequest {
2
+ constructor(tocData) {
3
+ this.tocData = tocData;
4
+ }
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24ucmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1zY3JvbGxhYmxlLWNvbnRhaW5lci9kb21haW4vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24ucmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sc0NBQXNDO0lBQ2pELFlBQ1MsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFFdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRhYmxlT2ZDb250ZW50SXRlbSB9IGZyb20gJy4uL2ktdGFibGUtb2YtY29udGVudC1pdGVtJztcblxuZXhwb3J0IGNsYXNzIENhbGN1bGF0ZUhhc2hGcm9tU2Nyb2xsUG9zaXRpb25SZXF1ZXN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRvY0RhdGE6IElUYWJsZU9mQ29udGVudEl0ZW1bXVxuICApIHtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './calculate-hash-from-scroll-position.handler';
2
+ export * from './calculate-hash-from-scroll-position.request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZG9tYWluL2NhbGN1bGF0ZS1oYXNoLWZyb20tc2Nyb2xsLXBvc2l0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0NBQStDLENBQUM7QUFFOUQsY0FBYywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24uaGFuZGxlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24ucmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,14 @@
1
+ export class GetAbsoluteTopToContainerHandler {
2
+ handle(request) {
3
+ let element = request.element;
4
+ let result = 0;
5
+ while (element !== request.container) {
6
+ if (!element)
7
+ return NaN;
8
+ result += element.offsetTop;
9
+ element = element.offsetParent;
10
+ }
11
+ return result;
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1zY3JvbGxhYmxlLWNvbnRhaW5lci9kb21haW4vZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIvZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZ0NBQWdDO0lBRXBDLE1BQU0sQ0FBQyxPQUF5QztRQUNyRCxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksTUFBTSxHQUFXLENBQUMsQ0FBQztRQUV2QixPQUFPLE9BQU8sS0FBSyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFDekIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDNUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUEyQixDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSGFuZGxlciB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgR2V0QWJzb2x1dGVUb3BUb0NvbnRhaW5lclJlcXVlc3QgfSBmcm9tICcuL2dldC1hYnNvbHV0ZS10b3AtdG8tY29udGFpbmVyLnJlcXVlc3QnO1xuXG5leHBvcnQgY2xhc3MgR2V0QWJzb2x1dGVUb3BUb0NvbnRhaW5lckhhbmRsZXIgaW1wbGVtZW50cyBJSGFuZGxlcjxHZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVyUmVxdWVzdCwgbnVtYmVyPiB7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBHZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVyUmVxdWVzdCk6IG51bWJlciB7XG4gICAgbGV0IGVsZW1lbnQgPSByZXF1ZXN0LmVsZW1lbnQ7XG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gMDtcblxuICAgIHdoaWxlIChlbGVtZW50ICE9PSByZXF1ZXN0LmNvbnRhaW5lcikge1xuICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gTmFOO1xuICAgICAgcmVzdWx0ICs9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export class GetAbsoluteTopToContainerRequest {
2
+ constructor(element, container) {
3
+ this.element = element;
4
+ this.container = container;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIucmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL20tcmVuZGVyL3NyYy9saWIvZi1zY3JvbGxhYmxlLWNvbnRhaW5lci9kb21haW4vZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIvZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIucmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLFlBQ1MsT0FBb0IsRUFDcEIsU0FBc0I7UUFEdEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFhO0lBRS9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBHZXRBYnNvbHV0ZVRvcFRvQ29udGFpbmVyUmVxdWVzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBwdWJsaWMgY29udGFpbmVyOiBIVE1MRWxlbWVudFxuICApIHtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './get-absolute-top-to-container.handler';
2
+ export * from './get-absolute-top-to-container.request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZG9tYWluL2dldC1hYnNvbHV0ZS10b3AtdG8tY29udGFpbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIuaGFuZGxlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZ2V0LWFic29sdXRlLXRvcC10by1jb250YWluZXIucmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { TableOfContentData } from '../table-of-content-data';
2
+ export class GetTableOfContentDataHandler {
3
+ handle(request) {
4
+ const flat = [];
5
+ const tree = [];
6
+ const stack = [];
7
+ this.getNavigationSelectors(request.fMarkdownPage, request.tocRange).forEach((element) => {
8
+ const tocItem = this.createItem(element);
9
+ this.insertItemIntoTree(tocItem, tree, stack);
10
+ flat.push(tocItem);
11
+ });
12
+ return new TableOfContentData(flat, tree);
13
+ }
14
+ getNavigationSelectors(fMarkdownPage, tocRange) {
15
+ if (!tocRange || tocRange.start < 1 || tocRange.end > 6) {
16
+ tocRange = { start: 1, end: 6 };
17
+ }
18
+ let selectors = [];
19
+ for (let i = tocRange.start; i <= tocRange.end; i++) {
20
+ selectors.push(`h${i}`);
21
+ }
22
+ return Array.from(fMarkdownPage.querySelectorAll(selectors.join(', ')));
23
+ }
24
+ createItem(element) {
25
+ element.id = this.createNavigationId(element);
26
+ return {
27
+ hash: `#${element.id}`,
28
+ title: element.innerHTML,
29
+ element,
30
+ children: []
31
+ };
32
+ }
33
+ createNavigationId(element) {
34
+ return element.innerHTML.toLowerCase().replaceAll(' ', '-');
35
+ }
36
+ getLevel(element) {
37
+ return parseInt(element.tagName.substring(1));
38
+ }
39
+ insertItemIntoTree(tocItem, tree, stack) {
40
+ while (stack.length > 0 && this.getLevel(stack[stack.length - 1].element) >= this.getLevel(tocItem.element)) {
41
+ stack.pop();
42
+ }
43
+ if (stack.length === 0) {
44
+ tree.push(tocItem);
45
+ }
46
+ else {
47
+ stack[stack.length - 1].children.push(tocItem);
48
+ }
49
+ stack.push(tocItem);
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRhYmxlLW9mLWNvbnRlbnQtZGF0YS5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXNjcm9sbGFibGUtY29udGFpbmVyL2RvbWFpbi9nZXQtdGFibGUtb2YtY29udGVudC1kYXRhL2dldC10YWJsZS1vZi1jb250ZW50LWRhdGEuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RCxNQUFNLE9BQU8sNEJBQTRCO0lBRWhDLE1BQU0sQ0FBQyxPQUFxQztRQUNqRCxNQUFNLElBQUksR0FBMEIsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUEwQixFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkYsTUFBTSxPQUFPLEdBQXdCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGFBQTBCLEVBQUUsUUFBeUM7UUFDbEcsSUFBRyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDN0IsS0FBSSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFvQjtRQUNyQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUssT0FBTyxDQUFDLEVBQUcsRUFBRTtZQUN4QixLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDeEIsT0FBTztZQUNQLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxPQUFvQjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQW9CO1FBQ25DLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE9BQTRCLEVBQUUsSUFBMkIsRUFBRSxLQUE0QjtRQUNoSCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM5RyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBHZXRUYWJsZU9mQ29udGVudERhdGFSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtdGFibGUtb2YtY29udGVudC1kYXRhLnJlcXVlc3QnO1xuaW1wb3J0IHsgSVRhYmxlT2ZDb250ZW50SXRlbSB9IGZyb20gJy4uL2ktdGFibGUtb2YtY29udGVudC1pdGVtJztcbmltcG9ydCB7IFRhYmxlT2ZDb250ZW50RGF0YSB9IGZyb20gJy4uL3RhYmxlLW9mLWNvbnRlbnQtZGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBHZXRUYWJsZU9mQ29udGVudERhdGFIYW5kbGVyIGltcGxlbWVudHMgSUhhbmRsZXI8R2V0VGFibGVPZkNvbnRlbnREYXRhUmVxdWVzdCwgVGFibGVPZkNvbnRlbnREYXRhPiB7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBHZXRUYWJsZU9mQ29udGVudERhdGFSZXF1ZXN0KTogVGFibGVPZkNvbnRlbnREYXRhIHtcbiAgICBjb25zdCBmbGF0OiBJVGFibGVPZkNvbnRlbnRJdGVtW10gPSBbXTtcbiAgICBjb25zdCB0cmVlOiBJVGFibGVPZkNvbnRlbnRJdGVtW10gPSBbXTtcbiAgICBjb25zdCBzdGFjazogSVRhYmxlT2ZDb250ZW50SXRlbVtdID0gW107XG5cbiAgICB0aGlzLmdldE5hdmlnYXRpb25TZWxlY3RvcnMocmVxdWVzdC5mTWFya2Rvd25QYWdlLCByZXF1ZXN0LnRvY1JhbmdlKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCB0b2NJdGVtOiBJVGFibGVPZkNvbnRlbnRJdGVtID0gdGhpcy5jcmVhdGVJdGVtKGVsZW1lbnQpO1xuICAgICAgdGhpcy5pbnNlcnRJdGVtSW50b1RyZWUodG9jSXRlbSwgdHJlZSwgc3RhY2spO1xuICAgICAgZmxhdC5wdXNoKHRvY0l0ZW0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBUYWJsZU9mQ29udGVudERhdGEoZmxhdCwgdHJlZSk7XG4gIH1cblxuICBwcml2YXRlIGdldE5hdmlnYXRpb25TZWxlY3RvcnMoZk1hcmtkb3duUGFnZTogSFRNTEVsZW1lbnQsIHRvY1JhbmdlPzogeyBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciB9KTogSFRNTEVsZW1lbnRbXSB7XG4gICAgaWYoIXRvY1JhbmdlIHx8IHRvY1JhbmdlLnN0YXJ0IDwgMSB8fCB0b2NSYW5nZS5lbmQgPiA2KSB7XG4gICAgICB0b2NSYW5nZSA9IHsgc3RhcnQ6IDEsIGVuZDogNiB9O1xuICAgIH1cbiAgICBsZXQgc2VsZWN0b3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvcihsZXQgaSA9IHRvY1JhbmdlLnN0YXJ0OyBpIDw9IHRvY1JhbmdlLmVuZDsgaSsrKSB7XG4gICAgICBzZWxlY3RvcnMucHVzaChgaCR7aX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZk1hcmtkb3duUGFnZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycy5qb2luKCcsICcpKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUl0ZW0oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBJVGFibGVPZkNvbnRlbnRJdGVtIHtcbiAgICBlbGVtZW50LmlkID0gdGhpcy5jcmVhdGVOYXZpZ2F0aW9uSWQoZWxlbWVudCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhc2g6IGAjJHsgZWxlbWVudC5pZCB9YCxcbiAgICAgIHRpdGxlOiBlbGVtZW50LmlubmVySFRNTCxcbiAgICAgIGVsZW1lbnQsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOYXZpZ2F0aW9uSWQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbGVtZW50LmlubmVySFRNTC50b0xvd2VyQ2FzZSgpLnJlcGxhY2VBbGwoJyAnLCAnLScpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMZXZlbChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGVsZW1lbnQudGFnTmFtZS5zdWJzdHJpbmcoMSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRJdGVtSW50b1RyZWUodG9jSXRlbTogSVRhYmxlT2ZDb250ZW50SXRlbSwgdHJlZTogSVRhYmxlT2ZDb250ZW50SXRlbVtdLCBzdGFjazogSVRhYmxlT2ZDb250ZW50SXRlbVtdKTogdm9pZCB7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDAgJiYgdGhpcy5nZXRMZXZlbChzdGFja1sgc3RhY2subGVuZ3RoIC0gMSBdLmVsZW1lbnQpID49IHRoaXMuZ2V0TGV2ZWwodG9jSXRlbS5lbGVtZW50KSkge1xuICAgICAgc3RhY2sucG9wKCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdHJlZS5wdXNoKHRvY0l0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFja1sgc3RhY2subGVuZ3RoIC0gMSBdLmNoaWxkcmVuLnB1c2godG9jSXRlbSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaCh0b2NJdGVtKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ export class GetTableOfContentDataRequest {
2
+ constructor(fMarkdownPage, tocRange) {
3
+ this.fMarkdownPage = fMarkdownPage;
4
+ this.tocRange = tocRange;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRhYmxlLW9mLWNvbnRlbnQtZGF0YS5yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXNjcm9sbGFibGUtY29udGFpbmVyL2RvbWFpbi9nZXQtdGFibGUtb2YtY29udGVudC1kYXRhL2dldC10YWJsZS1vZi1jb250ZW50LWRhdGEucmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLFlBQ1MsYUFBMEIsRUFDMUIsUUFHTjtRQUpNLGtCQUFhLEdBQWIsYUFBYSxDQUFhO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBR2Q7SUFFSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgR2V0VGFibGVPZkNvbnRlbnREYXRhUmVxdWVzdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZNYXJrZG93blBhZ2U6IEhUTUxFbGVtZW50LFxuICAgIHB1YmxpYyB0b2NSYW5nZT86IHtcbiAgICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgICBlbmQ6IG51bWJlclxuICAgIH1cbiAgKSB7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './get-table-of-content-data.handler';
2
+ export * from './get-table-of-content-data.request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZG9tYWluL2dldC10YWJsZS1vZi1jb250ZW50LWRhdGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZXQtdGFibGUtb2YtY29udGVudC1kYXRhLmhhbmRsZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2dldC10YWJsZS1vZi1jb250ZW50LWRhdGEucmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS10YWJsZS1vZi1jb250ZW50LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZG9tYWluL2ktdGFibGUtb2YtY29udGVudC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElUYWJsZU9mQ29udGVudEl0ZW0ge1xuXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGhhc2g6IHN0cmluZztcblxuICB0aXRsZTogc3RyaW5nO1xuXG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcblxuICBjaGlsZHJlbjogSVRhYmxlT2ZDb250ZW50SXRlbVtdO1xufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './get-absolute-top-to-container';
2
+ export * from './get-table-of-content-data';
3
+ export * from './calculate-hash-from-scroll-position';
4
+ export * from './table-of-content-data';
5
+ export * from './i-table-of-content-item';
6
+ export * from './scroll-to-element-in-container';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZG9tYWluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZXQtYWJzb2x1dGUtdG9wLXRvLWNvbnRhaW5lcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZ2V0LXRhYmxlLW9mLWNvbnRlbnQtZGF0YSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWhhc2gtZnJvbS1zY3JvbGwtcG9zaXRpb24nO1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLW9mLWNvbnRlbnQtZGF0YSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vaS10YWJsZS1vZi1jb250ZW50LWl0ZW0nO1xuXG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbC10by1lbGVtZW50LWluLWNvbnRhaW5lcic7XG4iXX0=
@@ -0,0 +1,34 @@
1
+ export class ScrollToElementInContainer {
2
+ constructor(container) {
3
+ this.container = container;
4
+ }
5
+ handle(hash) {
6
+ this.container.scrollTo({
7
+ top: this.getScrollTo(this.getScrollToElement(hash)) - 64,
8
+ behavior: 'smooth'
9
+ });
10
+ }
11
+ getScrollToElement(hash) {
12
+ const element = this.container.querySelector(hash);
13
+ if (!element) {
14
+ throw new Error(`Element ${hash} not found`);
15
+ }
16
+ return element;
17
+ }
18
+ getScrollTo(element) {
19
+ return this.isFirstElementInContainer(element) ? 0 : this.calculateScrollTo(element);
20
+ }
21
+ isFirstElementInContainer(element) {
22
+ return element.parentElement.children[0] === element;
23
+ }
24
+ calculateScrollTo(element) {
25
+ return this.getElementTop(element) - this.getContainerTop() + this.container.scrollTop;
26
+ }
27
+ getElementTop(element) {
28
+ return element.getBoundingClientRect().top;
29
+ }
30
+ getContainerTop() {
31
+ return this.container.getBoundingClientRect().top;
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLWVsZW1lbnQtaW4tY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXNjcm9sbGFibGUtY29udGFpbmVyL2RvbWFpbi9zY3JvbGwtdG8tZWxlbWVudC1pbi1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUNVLFNBQXNCO1FBQXRCLGNBQVMsR0FBVCxTQUFTLENBQWE7SUFFaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7WUFDekQsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVk7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFpQixDQUFDO1FBQ25FLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBWSxJQUFLLFlBQVksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQW9CO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8seUJBQXlCLENBQUMsT0FBb0I7UUFDcEQsT0FBTyxPQUFPLENBQUMsYUFBYyxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUUsS0FBSyxPQUFPLENBQUM7SUFDMUQsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQW9CO1FBQzVDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDekYsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFvQjtRQUN4QyxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM3QyxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDcEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUhhbmRsZXIgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcblxuZXhwb3J0IGNsYXNzIFNjcm9sbFRvRWxlbWVudEluQ29udGFpbmVyIGltcGxlbWVudHMgSUhhbmRsZXI8c3RyaW5nLCB2b2lkPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250YWluZXI6IEhUTUxFbGVtZW50XG4gICkge1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShoYXNoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lci5zY3JvbGxUbyh7XG4gICAgICB0b3A6IHRoaXMuZ2V0U2Nyb2xsVG8odGhpcy5nZXRTY3JvbGxUb0VsZW1lbnQoaGFzaCkpIC0gNjQsXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Nyb2xsVG9FbGVtZW50KGhhc2g6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcihoYXNoKSEgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVsZW1lbnQgJHsgaGFzaCB9IG5vdCBmb3VuZGApO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Nyb2xsVG8oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlzRmlyc3RFbGVtZW50SW5Db250YWluZXIoZWxlbWVudCkgPyAwIDogdGhpcy5jYWxjdWxhdGVTY3JvbGxUbyhlbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaXJzdEVsZW1lbnRJbkNvbnRhaW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuWyAwIF0gPT09IGVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVNjcm9sbFRvKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbGVtZW50VG9wKGVsZW1lbnQpIC0gdGhpcy5nZXRDb250YWluZXJUb3AoKSArIHRoaXMuY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbWVudFRvcChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250YWluZXJUb3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export class TableOfContentData {
2
+ constructor(flat, tree) {
3
+ this.flat = flat;
4
+ this.tree = tree;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb2YtY29udGVudC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbS1yZW5kZXIvc3JjL2xpYi9mLXNjcm9sbGFibGUtY29udGFpbmVyL2RvbWFpbi90YWJsZS1vZi1jb250ZW50LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUNTLElBQTJCLEVBQzNCLElBQTJCO1FBRDNCLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQXVCO0lBRXBDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUYWJsZU9mQ29udGVudEl0ZW0gfSBmcm9tICcuL2ktdGFibGUtb2YtY29udGVudC1pdGVtJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlT2ZDb250ZW50RGF0YSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZsYXQ6IElUYWJsZU9mQ29udGVudEl0ZW1bXSxcbiAgICBwdWJsaWMgdHJlZTogSVRhYmxlT2ZDb250ZW50SXRlbVtdXG4gICkge1xuICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FScrollableService } from './f-scrollable.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./f-scrollable.service";
5
+ export class FScrollableContainerComponent {
6
+ get hostElement() {
7
+ return this.elementRef.nativeElement;
8
+ }
9
+ constructor(elementRef, fScrollableService) {
10
+ this.elementRef = elementRef;
11
+ this.fScrollableService = fScrollableService;
12
+ }
13
+ ngOnInit() {
14
+ this.fScrollableService.setContainer(this.hostElement);
15
+ }
16
+ ngOnDestroy() {
17
+ this.fScrollableService.dispose();
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FScrollableContainerComponent, deps: [{ token: i0.ElementRef }, { token: i1.FScrollableService }], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FScrollableContainerComponent, isStandalone: true, selector: "f-scrollable-container", providers: [
21
+ FScrollableService
22
+ ], ngImport: i0, template: "<ng-content></ng-content>\n\n\n\n", styles: [":host{position:relative;width:100%;height:100%;overflow:hidden;overflow-y:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FScrollableContainerComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'f-scrollable-container', providers: [
27
+ FScrollableService
28
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n\n\n\n", styles: [":host{position:relative;width:100%;height:100%;overflow:hidden;overflow-y:auto}\n"] }]
29
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FScrollableService }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZi1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tLXJlbmRlci9zcmMvbGliL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIvZi1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBWTVELE1BQU0sT0FBTyw2QkFBNkI7SUFFeEMsSUFBWSxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQ1UsVUFBbUMsRUFDbkMsa0JBQXNDO1FBRHRDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFFaEQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQzsrR0FsQlUsNkJBQTZCO21HQUE3Qiw2QkFBNkIscUVBTjdCO1lBQ1Qsa0JBQWtCO1NBQ25CLDBCQ1pILG1DQUlBOzs0RkRZYSw2QkFBNkI7a0JBVnpDLFNBQVM7K0JBQ0Usd0JBQXdCLGFBR3ZCO3dCQUNULGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZTY3JvbGxhYmxlU2VydmljZSB9IGZyb20gJy4vZi1zY3JvbGxhYmxlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmLXNjcm9sbGFibGUtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ytc2Nyb2xsYWJsZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vZi1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRlNjcm9sbGFibGVTZXJ2aWNlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGZTY3JvbGxhYmxlU2VydmljZTogRlNjcm9sbGFibGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZlNjcm9sbGFibGVTZXJ2aWNlLnNldENvbnRhaW5lcih0aGlzLmhvc3RFbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZTY3JvbGxhYmxlU2VydmljZS5kaXNwb3NlKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuXG5cbiJdfQ==