@ng-doc/app 19.3.0 → 20.0.0-beta.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 (285) hide show
  1. package/classes/default-search-engine/index.d.ts +44 -1
  2. package/classes/root-page/index.d.ts +35 -1
  3. package/classes/search-engine/index.d.ts +11 -1
  4. package/components/api-list/index.d.ts +30 -1
  5. package/components/breadcrumb/index.d.ts +10 -1
  6. package/components/code/index.d.ts +16 -1
  7. package/components/copy-button/index.d.ts +15 -1
  8. package/components/demo/index.d.ts +22 -1
  9. package/components/demo-displayer/index.d.ts +16 -1
  10. package/components/demo-pane/index.d.ts +21 -1
  11. package/components/fullscreen-button/index.d.ts +9 -1
  12. package/components/heading-anchor/index.d.ts +12 -1
  13. package/components/image-viewer/index.d.ts +19 -1
  14. package/components/kind-icon/index.d.ts +11 -1
  15. package/components/link/index.d.ts +9 -1
  16. package/components/mermaid-viewer/index.d.ts +20 -1
  17. package/components/navbar/index.d.ts +33 -1
  18. package/components/page/index.d.ts +19 -1
  19. package/components/page-header/index.d.ts +9 -1
  20. package/components/page-link/index.d.ts +22 -1
  21. package/components/page-navigation/index.d.ts +11 -1
  22. package/components/page-wrapper/index.d.ts +26 -1
  23. package/components/playground/index.d.ts +143 -7
  24. package/components/root/index.d.ts +60 -1
  25. package/components/search/index.d.ts +18 -1
  26. package/components/search-dialog/index.d.ts +28 -1
  27. package/components/search-result/index.d.ts +14 -1
  28. package/components/sidebar/index.d.ts +15 -1
  29. package/components/tabs/index.d.ts +12 -1
  30. package/components/theme-toggle/index.d.ts +19 -1
  31. package/components/toc/index.d.ts +38 -2
  32. package/constants/index.d.ts +3 -1
  33. package/defaults/default-processors/index.d.ts +5 -1
  34. package/defaults/default-skeleton/index.d.ts +5 -1
  35. package/directives/code-highlighter/index.d.ts +17 -1
  36. package/directives/route-active/index.d.ts +13 -1
  37. package/fesm2022/ng-doc-app-classes-default-search-engine.mjs.map +1 -1
  38. package/fesm2022/ng-doc-app-classes-root-page.mjs.map +1 -1
  39. package/fesm2022/ng-doc-app-classes-search-engine.mjs.map +1 -1
  40. package/fesm2022/ng-doc-app-classes.mjs.map +1 -1
  41. package/fesm2022/ng-doc-app-components-api-list.mjs +5 -8
  42. package/fesm2022/ng-doc-app-components-api-list.mjs.map +1 -1
  43. package/fesm2022/ng-doc-app-components-breadcrumb.mjs +4 -4
  44. package/fesm2022/ng-doc-app-components-breadcrumb.mjs.map +1 -1
  45. package/fesm2022/ng-doc-app-components-code.mjs +8 -10
  46. package/fesm2022/ng-doc-app-components-code.mjs.map +1 -1
  47. package/fesm2022/ng-doc-app-components-copy-button.mjs +5 -5
  48. package/fesm2022/ng-doc-app-components-copy-button.mjs.map +1 -1
  49. package/fesm2022/ng-doc-app-components-demo-displayer.mjs +6 -7
  50. package/fesm2022/ng-doc-app-components-demo-displayer.mjs.map +1 -1
  51. package/fesm2022/ng-doc-app-components-demo-pane.mjs +10 -12
  52. package/fesm2022/ng-doc-app-components-demo-pane.mjs.map +1 -1
  53. package/fesm2022/ng-doc-app-components-demo.mjs +10 -12
  54. package/fesm2022/ng-doc-app-components-demo.mjs.map +1 -1
  55. package/fesm2022/ng-doc-app-components-fullscreen-button.mjs +4 -4
  56. package/fesm2022/ng-doc-app-components-fullscreen-button.mjs.map +1 -1
  57. package/fesm2022/ng-doc-app-components-heading-anchor.mjs +4 -4
  58. package/fesm2022/ng-doc-app-components-heading-anchor.mjs.map +1 -1
  59. package/fesm2022/ng-doc-app-components-image-viewer.mjs +4 -4
  60. package/fesm2022/ng-doc-app-components-image-viewer.mjs.map +1 -1
  61. package/fesm2022/ng-doc-app-components-kind-icon.mjs +4 -4
  62. package/fesm2022/ng-doc-app-components-kind-icon.mjs.map +1 -1
  63. package/fesm2022/ng-doc-app-components-link.mjs +4 -4
  64. package/fesm2022/ng-doc-app-components-link.mjs.map +1 -1
  65. package/fesm2022/ng-doc-app-components-mermaid-viewer.mjs +4 -4
  66. package/fesm2022/ng-doc-app-components-mermaid-viewer.mjs.map +1 -1
  67. package/fesm2022/ng-doc-app-components-navbar.mjs +11 -14
  68. package/fesm2022/ng-doc-app-components-navbar.mjs.map +1 -1
  69. package/fesm2022/ng-doc-app-components-page-header.mjs +5 -6
  70. package/fesm2022/ng-doc-app-components-page-header.mjs.map +1 -1
  71. package/fesm2022/ng-doc-app-components-page-link.mjs +6 -6
  72. package/fesm2022/ng-doc-app-components-page-link.mjs.map +1 -1
  73. package/fesm2022/ng-doc-app-components-page-navigation.mjs +5 -8
  74. package/fesm2022/ng-doc-app-components-page-navigation.mjs.map +1 -1
  75. package/fesm2022/ng-doc-app-components-page-wrapper.mjs +4 -6
  76. package/fesm2022/ng-doc-app-components-page-wrapper.mjs.map +1 -1
  77. package/fesm2022/ng-doc-app-components-page.mjs +6 -8
  78. package/fesm2022/ng-doc-app-components-page.mjs.map +1 -1
  79. package/fesm2022/ng-doc-app-components-playground.mjs +31 -40
  80. package/fesm2022/ng-doc-app-components-playground.mjs.map +1 -1
  81. package/fesm2022/ng-doc-app-components-root.mjs +12 -12
  82. package/fesm2022/ng-doc-app-components-root.mjs.map +1 -1
  83. package/fesm2022/ng-doc-app-components-search-dialog.mjs +7 -7
  84. package/fesm2022/ng-doc-app-components-search-dialog.mjs.map +1 -1
  85. package/fesm2022/ng-doc-app-components-search-result.mjs +6 -8
  86. package/fesm2022/ng-doc-app-components-search-result.mjs.map +1 -1
  87. package/fesm2022/ng-doc-app-components-search.mjs +4 -4
  88. package/fesm2022/ng-doc-app-components-search.mjs.map +1 -1
  89. package/fesm2022/ng-doc-app-components-sidebar.mjs +13 -16
  90. package/fesm2022/ng-doc-app-components-sidebar.mjs.map +1 -1
  91. package/fesm2022/ng-doc-app-components-tabs.mjs +5 -13
  92. package/fesm2022/ng-doc-app-components-tabs.mjs.map +1 -1
  93. package/fesm2022/ng-doc-app-components-theme-toggle.mjs +4 -5
  94. package/fesm2022/ng-doc-app-components-theme-toggle.mjs.map +1 -1
  95. package/fesm2022/ng-doc-app-components-toc.mjs +7 -8
  96. package/fesm2022/ng-doc-app-components-toc.mjs.map +1 -1
  97. package/fesm2022/ng-doc-app-components.mjs.map +1 -1
  98. package/fesm2022/ng-doc-app-constants.mjs.map +1 -1
  99. package/fesm2022/ng-doc-app-defaults-default-processors.mjs.map +1 -1
  100. package/fesm2022/ng-doc-app-defaults-default-skeleton.mjs +1 -1
  101. package/fesm2022/ng-doc-app-defaults-default-skeleton.mjs.map +1 -1
  102. package/fesm2022/ng-doc-app-defaults.mjs.map +1 -1
  103. package/fesm2022/ng-doc-app-directives-code-highlighter.mjs +3 -3
  104. package/fesm2022/ng-doc-app-directives-code-highlighter.mjs.map +1 -1
  105. package/fesm2022/ng-doc-app-directives-route-active.mjs +4 -4
  106. package/fesm2022/ng-doc-app-directives-route-active.mjs.map +1 -1
  107. package/fesm2022/ng-doc-app-directives.mjs.map +1 -1
  108. package/fesm2022/ng-doc-app-helpers.mjs.map +1 -1
  109. package/fesm2022/ng-doc-app-interfaces.mjs.map +1 -1
  110. package/fesm2022/ng-doc-app-pipes-decode-uri-component.mjs +3 -3
  111. package/fesm2022/ng-doc-app-pipes-decode-uri-component.mjs.map +1 -1
  112. package/fesm2022/ng-doc-app-pipes-extract-value.mjs +3 -3
  113. package/fesm2022/ng-doc-app-pipes-extract-value.mjs.map +1 -1
  114. package/fesm2022/ng-doc-app-pipes-filter-by-text.mjs +3 -3
  115. package/fesm2022/ng-doc-app-pipes-filter-by-text.mjs.map +1 -1
  116. package/fesm2022/ng-doc-app-pipes-sanitize-html.mjs +8 -8
  117. package/fesm2022/ng-doc-app-pipes-sanitize-html.mjs.map +1 -1
  118. package/fesm2022/ng-doc-app-pipes.mjs.map +1 -1
  119. package/fesm2022/ng-doc-app-processors-page-processor.mjs +4 -4
  120. package/fesm2022/ng-doc-app-processors-page-processor.mjs.map +1 -1
  121. package/fesm2022/ng-doc-app-processors-processors-link.mjs.map +1 -1
  122. package/fesm2022/ng-doc-app-processors-processors-tooltip.mjs +7 -7
  123. package/fesm2022/ng-doc-app-processors-processors-tooltip.mjs.map +1 -1
  124. package/fesm2022/ng-doc-app-processors-processors.mjs.map +1 -1
  125. package/fesm2022/ng-doc-app-processors.mjs.map +1 -1
  126. package/fesm2022/ng-doc-app-providers-mermaid.mjs.map +1 -1
  127. package/fesm2022/ng-doc-app-providers-ng-doc-app.mjs.map +1 -1
  128. package/fesm2022/ng-doc-app-providers-page-skeleton.mjs.map +1 -1
  129. package/fesm2022/ng-doc-app-providers-playground-demo.mjs.map +1 -1
  130. package/fesm2022/ng-doc-app-providers-search-engine.mjs.map +1 -1
  131. package/fesm2022/ng-doc-app-providers-type-control.mjs.map +1 -1
  132. package/fesm2022/ng-doc-app-providers.mjs.map +1 -1
  133. package/fesm2022/ng-doc-app-services-highlighter.mjs +3 -3
  134. package/fesm2022/ng-doc-app-services-highlighter.mjs.map +1 -1
  135. package/fesm2022/ng-doc-app-services-sidebar.mjs +4 -5
  136. package/fesm2022/ng-doc-app-services-sidebar.mjs.map +1 -1
  137. package/fesm2022/ng-doc-app-services-store.mjs +3 -3
  138. package/fesm2022/ng-doc-app-services-store.mjs.map +1 -1
  139. package/fesm2022/ng-doc-app-services-theme.mjs +4 -5
  140. package/fesm2022/ng-doc-app-services-theme.mjs.map +1 -1
  141. package/fesm2022/ng-doc-app-services.mjs.map +1 -1
  142. package/fesm2022/ng-doc-app-tokens.mjs.map +1 -1
  143. package/fesm2022/ng-doc-app-type-controls-boolean-control.mjs +4 -4
  144. package/fesm2022/ng-doc-app-type-controls-boolean-control.mjs.map +1 -1
  145. package/fesm2022/ng-doc-app-type-controls-number-control.mjs +5 -7
  146. package/fesm2022/ng-doc-app-type-controls-number-control.mjs.map +1 -1
  147. package/fesm2022/ng-doc-app-type-controls-string-control.mjs +5 -7
  148. package/fesm2022/ng-doc-app-type-controls-string-control.mjs.map +1 -1
  149. package/fesm2022/ng-doc-app-type-controls-type-alias-control.mjs +6 -8
  150. package/fesm2022/ng-doc-app-type-controls-type-alias-control.mjs.map +1 -1
  151. package/fesm2022/ng-doc-app-type-controls.mjs.map +1 -1
  152. package/fesm2022/ng-doc-app-types.mjs.map +1 -1
  153. package/fesm2022/ng-doc-app.mjs.map +1 -1
  154. package/helpers/index.d.ts +49 -7
  155. package/interfaces/index.d.ts +221 -13
  156. package/package.json +27 -27
  157. package/pipes/decode-uri-component/index.d.ts +10 -1
  158. package/pipes/extract-value/index.d.ts +11 -1
  159. package/pipes/filter-by-text/index.d.ts +10 -1
  160. package/pipes/sanitize-html/index.d.ts +14 -1
  161. package/processors/page-processor/index.d.ts +26 -1
  162. package/processors/processors/index.d.ts +32 -10
  163. package/processors/processors/link/index.d.ts +6 -1
  164. package/processors/processors/tooltip/index.d.ts +17 -1
  165. package/providers/mermaid/index.d.ts +10 -1
  166. package/providers/ng-doc-app/index.d.ts +25 -1
  167. package/providers/page-skeleton/index.d.ts +13 -1
  168. package/providers/playground-demo/index.d.ts +20 -1
  169. package/providers/search-engine/index.d.ts +15 -1
  170. package/providers/type-control/index.d.ts +18 -1
  171. package/services/highlighter/index.d.ts +29 -1
  172. package/services/sidebar/index.d.ts +37 -1
  173. package/services/store/index.d.ts +13 -1
  174. package/services/theme/index.d.ts +27 -1
  175. package/tokens/index.d.ts +63 -8
  176. package/type-controls/boolean-control/index.d.ts +16 -1
  177. package/type-controls/number-control/index.d.ts +13 -1
  178. package/type-controls/string-control/index.d.ts +14 -1
  179. package/type-controls/type-alias-control/index.d.ts +16 -1
  180. package/types/index.d.ts +7 -1
  181. package/classes/default-search-engine/default-search-engine.d.ts +0 -40
  182. package/classes/root-page/root-page.d.ts +0 -32
  183. package/classes/search-engine/search-engine.d.ts +0 -8
  184. package/components/api-list/api-list.component.d.ts +0 -28
  185. package/components/breadcrumb/breadcrumb.component.d.ts +0 -7
  186. package/components/code/code.component.d.ts +0 -14
  187. package/components/copy-button/copy-button.component.d.ts +0 -12
  188. package/components/demo/demo.component.d.ts +0 -20
  189. package/components/demo-displayer/demo-displayer.component.d.ts +0 -13
  190. package/components/demo-pane/demo-pane.component.d.ts +0 -19
  191. package/components/fullscreen-button/fullscreen-button.component.d.ts +0 -6
  192. package/components/heading-anchor/heading-anchor.component.d.ts +0 -9
  193. package/components/image-viewer/image-viewer.component.d.ts +0 -16
  194. package/components/kind-icon/kind-icon.component.d.ts +0 -8
  195. package/components/link/link.component.d.ts +0 -6
  196. package/components/mermaid-viewer/mermaid-viewer.component.d.ts +0 -17
  197. package/components/navbar/navbar.component.d.ts +0 -31
  198. package/components/page/page.component.d.ts +0 -16
  199. package/components/page-header/page-header.component.d.ts +0 -6
  200. package/components/page-link/page-link.component.d.ts +0 -19
  201. package/components/page-navigation/page-navigation.component.d.ts +0 -8
  202. package/components/page-wrapper/page-wrapper.component.d.ts +0 -22
  203. package/components/playground/base-playground.d.ts +0 -28
  204. package/components/playground/playground-demo/playground-demo.component.d.ts +0 -34
  205. package/components/playground/playground-form.d.ts +0 -5
  206. package/components/playground/playground-properties/playground-properties.component.d.ts +0 -35
  207. package/components/playground/playground-property/playground-property.component.d.ts +0 -20
  208. package/components/playground/playground-property-control.d.ts +0 -7
  209. package/components/playground/playground.component.d.ts +0 -30
  210. package/components/root/root.component.d.ts +0 -57
  211. package/components/search/search.component.d.ts +0 -15
  212. package/components/search-dialog/search-dialog.component.d.ts +0 -24
  213. package/components/search-result/search-result.component.d.ts +0 -11
  214. package/components/sidebar/sidebar-category/sidebar-category.component.d.ts +0 -20
  215. package/components/sidebar/sidebar-item/sidebar-item.component.d.ts +0 -12
  216. package/components/sidebar/sidebar.component.d.ts +0 -11
  217. package/components/tabs/tabs.component.d.ts +0 -9
  218. package/components/theme-toggle/theme-toggle.component.d.ts +0 -17
  219. package/components/toc/toc-element/toc-element.component.d.ts +0 -11
  220. package/components/toc/toc.component.d.ts +0 -26
  221. package/constants/store-keys.d.ts +0 -1
  222. package/defaults/default-processors/default-processors.d.ts +0 -2
  223. package/defaults/default-skeleton/default-skeleton.d.ts +0 -2
  224. package/directives/code-highlighter/code-highlighter.directive.d.ts +0 -14
  225. package/directives/route-active/route-active.directive.d.ts +0 -10
  226. package/helpers/as-boolean.d.ts +0 -5
  227. package/helpers/create-component.d.ts +0 -8
  228. package/helpers/format-html.d.ts +0 -5
  229. package/helpers/generate-toc.d.ts +0 -7
  230. package/helpers/is-dark-os-theme.d.ts +0 -4
  231. package/helpers/is-external-link.d.ts +0 -5
  232. package/helpers/is-playground-property.d.ts +0 -6
  233. package/interfaces/context.d.ts +0 -10
  234. package/interfaces/demo-assets.d.ts +0 -9
  235. package/interfaces/navigation.d.ts +0 -19
  236. package/interfaces/page-processor.d.ts +0 -27
  237. package/interfaces/page-skeleton.d.ts +0 -53
  238. package/interfaces/processor-options.d.ts +0 -7
  239. package/interfaces/provided-type-control.d.ts +0 -7
  240. package/interfaces/search-result.d.ts +0 -15
  241. package/interfaces/tab.d.ts +0 -6
  242. package/interfaces/theme.d.ts +0 -13
  243. package/interfaces/toc-item.d.ts +0 -7
  244. package/interfaces/type-control-provider-options.d.ts +0 -15
  245. package/interfaces/type-control.d.ts +0 -26
  246. package/pipes/decode-uri-component/decode-uri-component.pipe.d.ts +0 -7
  247. package/pipes/extract-value/extract-value.pipe.d.ts +0 -8
  248. package/pipes/filter-by-text/filter-by-text.pipe.d.ts +0 -7
  249. package/pipes/sanitize-html/sanitize-html.pipe.d.ts +0 -10
  250. package/processors/page-processor/page-processor.component.d.ts +0 -23
  251. package/processors/processors/blockquote.processor.d.ts +0 -3
  252. package/processors/processors/code.processor.d.ts +0 -3
  253. package/processors/processors/demo-pane.processor.d.ts +0 -3
  254. package/processors/processors/demo.processor.d.ts +0 -3
  255. package/processors/processors/heading-anchor.processor.d.ts +0 -3
  256. package/processors/processors/icon.processor.d.ts +0 -3
  257. package/processors/processors/image.processor.d.ts +0 -3
  258. package/processors/processors/link/link.processor.d.ts +0 -3
  259. package/processors/processors/mermaid.processor.d.ts +0 -3
  260. package/processors/processors/playground.processor.d.ts +0 -3
  261. package/processors/processors/tabs.processor.d.ts +0 -3
  262. package/processors/processors/tooltip/tooltip.processor.d.ts +0 -15
  263. package/providers/mermaid/provide-mermaid.d.ts +0 -7
  264. package/providers/ng-doc-app/provide-ng-doc-app.d.ts +0 -21
  265. package/providers/page-skeleton/provide-page-skeleton.d.ts +0 -9
  266. package/providers/playground-demo/provide-playground-demo.d.ts +0 -17
  267. package/providers/search-engine/provide-search-engine.d.ts +0 -12
  268. package/providers/type-control/provide-type-control.d.ts +0 -15
  269. package/services/highlighter/highlighter.service.d.ts +0 -24
  270. package/services/sidebar/sidebar.service.d.ts +0 -34
  271. package/services/store/store.service.d.ts +0 -10
  272. package/services/theme/theme.service.d.ts +0 -24
  273. package/tokens/context.d.ts +0 -3
  274. package/tokens/mermaid.d.ts +0 -3
  275. package/tokens/page-processor.d.ts +0 -15
  276. package/tokens/page-skeleton.d.ts +0 -3
  277. package/tokens/route-prefix.d.ts +0 -2
  278. package/tokens/shiki-theme.d.ts +0 -6
  279. package/tokens/theme.d.ts +0 -28
  280. package/tokens/type-control.d.ts +0 -3
  281. package/type-controls/boolean-control/boolean-control.component.d.ts +0 -13
  282. package/type-controls/number-control/number-control.component.d.ts +0 -10
  283. package/type-controls/string-control/string-control.component.d.ts +0 -11
  284. package/type-controls/type-alias-control/type-alias-control.component.d.ts +0 -13
  285. package/types/typed-form.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-playground.mjs","sources":["../../../../libs/app/components/playground/playground-demo/playground-demo.component.ts","../../../../libs/app/components/playground/playground-demo/playground-demo.component.html","../../../../libs/app/components/playground/playground-property/playground-property.component.ts","../../../../libs/app/components/playground/playground-property/playground-property.component.html","../../../../libs/app/components/playground/playground-properties/playground-properties.component.ts","../../../../libs/app/components/playground/playground-properties/playground-properties.component.html","../../../../libs/app/components/playground/playground.component.ts","../../../../libs/app/components/playground/playground.component.html","../../../../libs/app/components/playground/base-playground.ts","../../../../libs/app/components/playground/ng-doc-app-components-playground.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n inject,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport { NgDocDemoDisplayerComponent } from '@ng-doc/app/components/demo-displayer';\nimport { formatHtml } from '@ng-doc/app/helpers';\nimport { getPlaygroundDemoToken } from '@ng-doc/app/providers/playground-demo';\nimport { NgDocFormPartialValue } from '@ng-doc/app/types';\nimport {\n buildPlaygroundDemoPipeTemplate,\n buildPlaygroundDemoTemplate,\n} from '@ng-doc/core/helpers/build-playground-demo-template';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { stringify } from '@ng-doc/core/helpers/stringify';\nimport { NgDocPlaygroundConfig, NgDocPlaygroundProperties } from '@ng-doc/core/interfaces';\nimport { NgDocSmoothResizeComponent } from '@ng-doc/ui-kit';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { NgDocBasePlayground } from '../base-playground';\nimport { NgDocPlaygroundForm } from '../playground-form';\n\n@Component({\n selector: 'ng-doc-playground-demo',\n templateUrl: './playground-demo.component.html',\n styleUrls: ['./playground-demo.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocDemoDisplayerComponent, NgDocSmoothResizeComponent],\n})\nexport class NgDocPlaygroundDemoComponent<\n T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties,\n >\n implements OnChanges, OnDestroy\n{\n @Input()\n id: string = '';\n\n @Input()\n pipeName: string = '';\n\n @Input()\n selector: string = '';\n\n @Input()\n configuration?: NgDocPlaygroundConfig;\n\n @Input()\n properties?: T;\n\n @Input()\n recreateDemo: boolean = false;\n\n @Input()\n form!: FormGroup<NgDocPlaygroundForm>;\n\n @Input()\n expanded: boolean = false;\n\n @ViewChild('demoOutlet', { static: true, read: ViewContainerRef })\n demoOutlet?: ViewContainerRef;\n\n playgroundDemo?: typeof NgDocBasePlayground;\n\n protected code = '';\n\n protected readonly injector = inject(Injector);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly destroyRef = inject(DestroyRef);\n\n private demoRef?: ComponentRef<NgDocBasePlayground>;\n private readonly unsubscribe$: Subject<void> = new Subject<void>();\n\n async ngOnChanges({ form, id }: SimpleChanges): Promise<void> {\n if (form || id) {\n this.unsubscribe$.next();\n\n const demoInjector: InjectionToken<Array<typeof NgDocBasePlayground>> | undefined =\n getPlaygroundDemoToken(this.id);\n\n if (demoInjector) {\n const demos: Array<typeof NgDocBasePlayground> = this.injector.get(demoInjector, []);\n\n this.playgroundDemo = demos.find(\n (demo: typeof NgDocBasePlayground) =>\n demo.selector === this.selector || demo.selector === this.pipeName,\n );\n }\n\n await this.updateDemo();\n\n this.form?.valueChanges\n .pipe(\n takeUntil(this.unsubscribe$),\n startWith(this.form?.value),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((data: NgDocFormPartialValue<typeof this.form>) => this.updateDemo(data));\n }\n }\n\n private async updateDemo(data?: NgDocFormPartialValue<typeof this.form>): Promise<void> {\n if (this.recreateDemo || !this.demoRef) {\n this.createDemo();\n }\n\n if (data) {\n this.demoRef?.setInput('properties', data.properties ?? {});\n this.demoRef?.setInput('content', data.content ?? {});\n this.demoRef?.setInput('actionData', this.configuration?.data ?? {});\n\n if (this.recreateDemo) {\n this.demoRef?.instance.onReattached.subscribe(() => {\n this.demoRef?.changeDetectorRef.detectChanges();\n });\n }\n }\n\n await this.updateCodeView();\n }\n\n private createDemo(): void {\n if (this.playgroundDemo) {\n this.demoRef?.destroy();\n this.demoRef = this.demoOutlet?.createComponent(\n this.playgroundDemo as unknown as Type<NgDocBasePlayground>,\n );\n this.demoRef?.changeDetectorRef.markForCheck();\n }\n }\n\n private async updateCodeView(): Promise<void> {\n const template: string = this.pipeName\n ? buildPlaygroundDemoPipeTemplate(\n this.configuration?.template ?? '',\n this.pipeName,\n this.getActiveContent(),\n this.getPipeActiveInputs(),\n )\n : buildPlaygroundDemoTemplate(\n this.configuration?.template ?? '',\n this.selector,\n this.getActiveContent(),\n this.getActiveInputs(),\n );\n\n this.code = await formatHtml(template);\n this.changeDetectorRef.markForCheck();\n }\n\n private getActiveContent(): Record<string, string> {\n const formData: Record<string, boolean> =\n (this.form?.controls.content.value as Record<string, boolean>) ?? {};\n\n return objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n result[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n\n return result;\n }, {});\n }\n\n private getActiveInputs(): Record<string, string> {\n const formData: Record<string, unknown> =\n (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n\n return objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n const inputName = this.properties?.[key]?.inputName ?? key;\n const value: unknown = formData[key];\n const property: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n if (property !== value) {\n result[inputName] = stringify(value).replace(/\"/g, `'`);\n }\n\n return result;\n }, {});\n }\n\n private getPipeActiveInputs(): Record<string, string> {\n const formData: Record<string, unknown> =\n (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n let changedInputIndex: number = -1;\n\n return objectKeys(formData)\n .map((key: string, i: number) => {\n const value: unknown = formData[key];\n const defaultValue: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n if (defaultValue !== value) {\n changedInputIndex = i;\n }\n\n return key;\n })\n .slice(0, changedInputIndex + 1)\n .reduce((result: Record<string, string>, key: string) => {\n result[key] = stringify(formData[key]).replace(/\"/g, `'`);\n\n return result;\n }, {});\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<ng-doc-smooth-resize [trigger]=\"code\">\n <ng-doc-demo-displayer\n [code]=\"code\"\n [border]=\"false\"\n [expanded]=\"expanded\"\n language=\"angular-html\">\n <ng-container #demoOutlet></ng-container>\n </ng-doc-demo-displayer>\n</ng-doc-smooth-resize>\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport {\n NgDocProvidedTypeControl,\n NgDocTypeControl,\n NgDocTypeControlProviderOptions,\n} from '@ng-doc/app/interfaces';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport { NgDocPlaygroundContent, NgDocPlaygroundProperty } from '@ng-doc/core/interfaces';\nimport { NgDocLabelComponent, NgDocTooltipDirective } from '@ng-doc/ui-kit';\n\n@Component({\n selector: 'ng-doc-playground-property',\n templateUrl: './playground-property.component.html',\n styleUrls: ['./playground-property.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe],\n})\nexport class NgDocPlaygroundPropertyComponent implements OnChanges {\n @Input()\n name: string = '';\n\n @Input()\n property?: NgDocPlaygroundProperty | NgDocPlaygroundContent;\n\n @Input()\n typeControl?: NgDocProvidedTypeControl;\n\n @Input()\n control?: FormControl;\n\n @Input()\n defaultValue?: unknown;\n\n @ViewChild('propertyOutlet', { read: ViewContainerRef, static: true })\n propertyOutlet?: ViewContainerRef;\n\n protected option?: NgDocTypeControlProviderOptions;\n private propertyTypeControl?: ComponentRef<NgDocTypeControl>;\n\n ngOnChanges({ property, control, typeControl, defaultValue }: SimpleChanges): void {\n if ((property || control || typeControl || defaultValue) && this.property && this.typeControl) {\n this.propertyTypeControl?.destroy();\n this.propertyTypeControl = undefined;\n\n if (this.typeControl && this.propertyOutlet) {\n this.propertyTypeControl = this.propertyOutlet.createComponent(this.typeControl.control);\n this.propertyTypeControl.instance.name = this.name;\n this.propertyTypeControl.instance.description = this.tooltipContent;\n this.propertyTypeControl.instance.options = isPlaygroundProperty(this.property)\n ? this.property.options\n : undefined;\n this.propertyTypeControl.instance.default = this.defaultValue;\n this.propertyTypeControl.instance.isManual = isPlaygroundProperty(this.property)\n ? this.property.isManual\n : undefined;\n this.propertyTypeControl.instance.writeValue(this.control?.value);\n\n this.option = this.typeControl.options;\n }\n\n if (this.control) {\n this.control?.registerOnChange((value: string) =>\n this.propertyTypeControl?.instance?.writeValue(value),\n );\n this.propertyTypeControl?.instance.registerOnChange((value: unknown) =>\n this.control?.setValue(value),\n );\n this.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n }\n }\n }\n\n @HostBinding('attr.data-has-property-control')\n get hasPropertyControl(): boolean {\n return !!this.propertyTypeControl;\n }\n\n get tooltipContent(): string {\n return this.property && isPlaygroundProperty(this.property)\n ? this.property.description ?? ''\n : '';\n }\n}\n","<label [ng-doc-label]=\"option?.hideLabel ? '' : labelContent\">\n\t<ng-template #labelContent>\n\t\t<span\n\t\t\t[ngDocTooltip]=\"tooltipTemplate\"\n\t\t\t[canOpen]=\"!!tooltipContent\"\n\t\t\t[positions]=\"['left-center', 'top-right', 'bottom-right']\"\n\t\t\t>{{ name }}</span\n\t\t>\n\t\t<ng-template #tooltipTemplate>\n\t\t\t<div [innerHTML]=\"tooltipContent | ngDocSanitizeHtml\"></div>\n\t\t</ng-template>\n\t</ng-template>\n\t<ng-container #propertyOutlet></ng-container>\n</label>\n","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { AsyncPipe, KeyValuePipe, NgFor, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n isDevMode,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormsModule } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { NgDocProvidedTypeControl } from '@ng-doc/app/interfaces';\nimport { getTokenForType } from '@ng-doc/app/providers/type-control';\nimport { extractValueOrThrow } from '@ng-doc/core/helpers/extract-value';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport {\n NgDocPlaygroundContent,\n NgDocPlaygroundProperties,\n NgDocPlaygroundProperty,\n} from '@ng-doc/core/interfaces';\nimport {\n NgDocBindPipe,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n NgDocExecutePipe,\n NgDocIconComponent,\n NgDocTextComponent,\n NgDocTextRightDirective,\n NgDocTooltipDirective,\n} from '@ng-doc/ui-kit';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { NgDocPlaygroundForm } from '../playground-form';\nimport { NgDocPlaygroundPropertyComponent } from '../playground-property/playground-property.component';\nimport { NgDocPlaygroundPropertyControl } from '../playground-property-control';\n\n@Component({\n selector: 'ng-doc-playground-properties',\n templateUrl: './playground-properties.component.html',\n styleUrls: ['./playground-properties.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocTextComponent,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n FormsModule,\n NgDocTooltipDirective,\n NgDocIconComponent,\n NgDocTextRightDirective,\n NgIf,\n NgFor,\n NgDocPlaygroundPropertyComponent,\n AsyncPipe,\n KeyValuePipe,\n NgDocBindPipe,\n NgDocExecutePipe,\n ],\n})\nexport class NgDocPlaygroundPropertiesComponent<\n P extends NgDocPlaygroundProperties,\n C extends Record<string, NgDocPlaygroundContent>,\n> implements OnChanges\n{\n @Input()\n form!: FormGroup<NgDocPlaygroundForm>;\n\n @Input()\n properties?: P;\n\n @Input()\n ignoreInputs?: string[] = [];\n\n @Input()\n dynamicContent?: C;\n\n @Input()\n defaultValues?: Record<string, unknown>;\n\n @Input()\n hideSidePanel: boolean = false;\n\n @Input()\n recreateDemo: boolean = false;\n\n @Input()\n showResetButton: boolean = false;\n\n @Output()\n recreateDemoChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n resetForm: EventEmitter<void> = new EventEmitter<void>();\n\n readonly breakpoints: string[] = [Breakpoints.XSmall];\n readonly observer: Observable<boolean>;\n\n protected propertyControls: NgDocPlaygroundPropertyControl[] = [];\n protected contentTypeControl?: NgDocProvidedTypeControl = this.getControlForType('boolean');\n\n constructor(\n protected readonly breakpointObserver: BreakpointObserver,\n private injector: Injector,\n ) {\n this.observer = this.breakpointObserver\n .observe(this.breakpoints)\n .pipe(map((state: BreakpointState) => state.matches));\n }\n\n ngOnChanges({ properties }: SimpleChanges): void {\n if (properties && this.properties) {\n this.propertyControls = objectKeys(this.properties)\n .filter((key: keyof P) => this.ignoreInputs?.includes(String(key)) !== true)\n .map((key: keyof P) => {\n if (this.properties) {\n const property: NgDocPlaygroundProperty = this.properties[key];\n const typeControl: NgDocProvidedTypeControl | undefined = this.getTypeControl(property);\n\n if (typeControl) {\n return {\n propertyName: String(key),\n property,\n typeControl,\n };\n }\n }\n\n return null;\n })\n .filter(isPresent)\n .sort((a: NgDocPlaygroundPropertyControl, b: NgDocPlaygroundPropertyControl) => {\n const aOrder: number | undefined = a.typeControl.options?.order;\n const bOrder: number | undefined = b.typeControl.options?.order;\n\n if (isPresent(aOrder) && isPresent(bOrder)) {\n return aOrder - bOrder;\n }\n if (isPresent(aOrder)) {\n return -1;\n }\n if (isPresent(bOrder)) {\n return 1;\n }\n return a.property.inputName.localeCompare(b.property.inputName);\n });\n }\n }\n\n getFormControl(controlType: keyof typeof this.form.controls, key: string): FormControl {\n return this.form.get(controlType)?.get(key) as FormControl;\n }\n\n private getTypeControl(property: NgDocPlaygroundProperty): NgDocProvidedTypeControl | undefined {\n const type: string = property.type;\n const typeControl: NgDocProvidedTypeControl | undefined =\n this.getControlForType(type) ??\n this.getControlForTypeAlias(\n isPlaygroundProperty(property) ? property.options : undefined,\n property.isManual,\n );\n\n if (!typeControl && isDevMode()) {\n console.warn(\n `NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`,\n );\n }\n\n return typeControl;\n }\n\n private getControlForType(type: string): NgDocProvidedTypeControl | undefined {\n const token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType(type);\n\n return token ? this.injector.get(token) : undefined;\n }\n\n private getControlForTypeAlias(\n options?: string[],\n isManual?: boolean,\n ): NgDocProvidedTypeControl | undefined {\n if (options && options.length) {\n let optionsIsValid: boolean = true;\n\n if (!isManual) {\n try {\n // checking that all values are extractable\n options.forEach((item: string) => extractValueOrThrow(item));\n } catch {\n optionsIsValid = false;\n }\n }\n\n if (optionsIsValid) {\n const token: InjectionToken<NgDocProvidedTypeControl> | undefined =\n getTokenForType('NgDocTypeAlias');\n\n return token ? this.injector.get(token) : undefined;\n }\n }\n\n return undefined;\n }\n}\n","<div\n\tclass=\"ng-doc-playground-properties-wrapper\"\n\t[class.vertical]=\"observer | async\"\n\t*ngIf=\"defaultValues\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\" *ngIf=\"!hideSidePanel\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"alert\" (click)=\"resetForm.emit()\" *ngIf=\"showResetButton\">\n\t\t\t\tReset\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\">\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[defaultValue]=\"defaultValues[propertyControl.propertyName]\"\n\t\t\t\t[control]=\"\n\t\t\t\t\tgetFormControl | bind: this | execute: 'properties':propertyControl.propertyName\n\t\t\t\t\">\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\n\t\t<ng-container *ngIf=\"(dynamicContent | keyvalue)?.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Content</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let content of dynamicContent | keyvalue\"\n\t\t\t\t[name]=\"content.value.label\"\n\t\t\t\t[property]=\"content.value\"\n\t\t\t\t[typeControl]=\"contentTypeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'content':content.key\">\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n","import { NgFor, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgDocRootPage } from '@ng-doc/app/classes/root-page';\nimport { isSameObject } from '@ng-doc/core/helpers/is-same-object';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport {\n NgDocPlaygroundConfig,\n NgDocPlaygroundOptions,\n NgDocPlaygroundProperties,\n} from '@ng-doc/core/interfaces';\nimport { NgDocAsArrayPipe } from '@ng-doc/ui-kit';\n\nimport { NgDocPlaygroundDemoComponent } from './playground-demo/playground-demo.component';\nimport { NgDocPlaygroundForm } from './playground-form';\nimport { NgDocPlaygroundPropertiesComponent } from './playground-properties/playground-properties.component';\n\n@Component({\n selector: 'ng-doc-playground',\n templateUrl: './playground.component.html',\n styleUrls: ['./playground.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgDocPlaygroundPropertiesComponent,\n NgFor,\n NgDocPlaygroundDemoComponent,\n NgDocAsArrayPipe,\n ],\n})\nexport class NgDocPlaygroundComponent<\n T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties,\n >\n implements OnChanges, AfterViewInit\n{\n @Input({ required: true })\n id: string = '';\n\n @Input()\n pipeName: string = '';\n\n @Input()\n selectors: string[] = [];\n\n @Input()\n properties?: T;\n\n @Input()\n options: NgDocPlaygroundOptions = {};\n\n recreateDemo: boolean = false;\n formGroup!: FormGroup<NgDocPlaygroundForm>;\n defaultValues?: Record<string, unknown>;\n configuration!: NgDocPlaygroundConfig;\n\n private defaultProperties: Record<string, unknown> = {};\n private defaultContent: Record<string, boolean> = {};\n\n constructor(\n private readonly rootPage: NgDocRootPage,\n private readonly formBuilder: FormBuilder,\n ) {}\n\n ngOnChanges({ options }: SimpleChanges) {\n if (options) {\n // Join configuration with options\n this.configuration = Object.assign(\n {},\n this.rootPage.page?.playgrounds?.[this.id],\n this.options,\n );\n }\n }\n\n ngAfterViewInit(): void {\n this.defaultProperties = this.getPropertiesFormValues();\n this.defaultContent = this.getContentFormValues();\n\n const propertiesForm: FormGroup = this.formBuilder.group(this.defaultProperties);\n const contentForm: FormGroup = this.formBuilder.group(this.defaultContent);\n\n this.formGroup = this.formBuilder.group({\n properties: propertiesForm,\n content: contentForm,\n });\n // `patchValue` is needed to set `undefined` values, otherwise they will be ignored by the Angular form\n this.formGroup.patchValue({\n properties: Object.assign({}, this.defaultProperties, this.configuration.inputs),\n content: this.defaultContent,\n });\n }\n\n protected isDefaultState(): boolean {\n if (!this.formGroup) {\n return false;\n }\n\n return (\n isSameObject(this.formGroup.value.properties ?? {}, this.defaultValues ?? {}) &&\n isSameObject(this.formGroup.value.content ?? {}, this.defaultContent ?? {})\n );\n }\n\n private getPropertiesFormValues(): Record<string, unknown> {\n const formValues: Record<string, unknown> = objectKeys(this.properties ?? {}).reduce(\n (controls: Record<string, unknown>, key: string) => {\n if (this.properties) {\n controls[key] = this.defaultValues ? this.defaultValues[key] : undefined;\n }\n\n return controls;\n },\n {} as Record<string, unknown>,\n );\n\n return Object.assign({}, formValues, this.configuration.defaults);\n }\n\n private getContentFormValues(): Record<string, boolean> {\n return objectKeys(this.configuration?.content ?? {}).reduce(\n (controls: Record<string, boolean>, key: string) => {\n if (this.configuration?.content) {\n controls[key] = false;\n }\n\n return controls;\n },\n {} as Record<keyof T, boolean>,\n );\n }\n\n resetForm(): void {\n this.formGroup.reset({}, { emitEvent: false });\n this.formGroup?.patchValue({\n properties: this.defaultProperties,\n content: this.defaultContent,\n });\n }\n}\n","<ng-container *ngIf=\"configuration\">\n <ng-doc-playground-properties\n [form]=\"formGroup\"\n [properties]=\"properties\"\n [ignoreInputs]=\"configuration.hiddenInputs\"\n [dynamicContent]=\"configuration.content\"\n [hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n [defaultValues]=\"defaultValues\"\n [showResetButton]=\"!isDefaultState()\"\n [(recreateDemo)]=\"recreateDemo\"\n (resetForm)=\"resetForm()\">\n <ng-doc-playground-demo\n *ngFor=\"let selector of configuration.selectors ?? selectors | asArray\"\n [id]=\"id\"\n [selector]=\"selector\"\n [properties]=\"properties\"\n [configuration]=\"configuration\"\n [recreateDemo]=\"recreateDemo\"\n [form]=\"formGroup\"\n [expanded]=\"configuration.expanded ?? false\">\n </ng-doc-playground-demo>\n\n <ng-doc-playground-demo\n *ngIf=\"pipeName\"\n [id]=\"id\"\n [pipeName]=\"pipeName\"\n [properties]=\"properties\"\n [configuration]=\"configuration\"\n [recreateDemo]=\"recreateDemo\"\n [form]=\"formGroup\">\n </ng-doc-playground-demo>\n </ng-doc-playground-properties>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n inject,\n Input,\n OnInit,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { extractFunctionDefaults } from '@ng-doc/core/helpers/extract-function-defaults';\nimport { NgDocPlaygroundConfig } from '@ng-doc/core/interfaces';\nimport { Constructor } from '@ng-doc/core/types';\nimport { Observable, Subject, take } from 'rxjs';\n\nimport { NgDocPlaygroundComponent } from './playground.component';\n\n/**\n * Base class for playgrounds components.\n */\n@Directive()\nexport abstract class NgDocBasePlayground implements Pick<NgDocPlaygroundConfig, 'data'>, OnInit {\n static readonly selector: string = 'unknown';\n abstract readonly playground?: Type<any>;\n abstract readonly viewContainerRef?: ViewContainerRef;\n abstract readonly configData: Record<string, unknown>;\n\n @Input()\n properties: Record<string, any> = {};\n\n @Input()\n actionData: Record<string, unknown> = {};\n\n @Input()\n content: any = {};\n\n defaultValues: Record<string, unknown> = {};\n\n private reattached: Subject<void> = new Subject<void>();\n\n private playgroundContainer: NgDocPlaygroundComponent = inject(NgDocPlaygroundComponent);\n protected changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n protected constructor(private playgroundInstance?: Constructor<unknown>) {\n this.changeDetectorRef.detach();\n }\n\n get onReattached(): Observable<void> {\n return this.reattached.pipe(take(1));\n }\n\n ngOnInit(): void {\n /*\n * Extract default values from playground properties. We do this in `ngOnInit` because in this case\n * input values provided from the template are not initialized yet, and we can read default values instead.\n */\n if (this.playground) {\n this.defaultValues = Object.keys(this.playground).reduce(\n (values: Record<string, unknown>, key: string) => {\n if (this.playground) {\n try {\n values[key] =\n // @ts-expect-error we do not know the type of the playground\n typeof this.playground[key] === 'function'\n ? // @ts-expect-error we do not know the type of the playground\n this.playground[key]()\n : // @ts-expect-error we do not know the type of the playground\n this.playground[key];\n } catch (e) {\n // we do catch here because some of the playground properties can be getters and throw an error\n }\n }\n\n return values;\n },\n {},\n );\n } else if (this.playgroundInstance) {\n const defaults = extractFunctionDefaults(this.playgroundInstance.prototype.transform);\n\n this.defaultValues = Object.keys(this.playgroundContainer.properties ?? {}).reduce(\n (def: Record<string, unknown>, key: string, i: number) => {\n // we do +1 because the first argument is the `value` of the transform function\n def[key] = defaults[i + 1];\n\n return def;\n },\n {},\n );\n } else {\n throw new Error('Playground is not defined or initialized');\n }\n\n if (!this.playgroundContainer.defaultValues) {\n this.playgroundContainer.defaultValues = this.defaultValues;\n }\n\n /*\n This is a hack just to wait for the playground container to be initialized and only then\n attach the change detector to have correct inputs values.\n */\n Promise.resolve().then(() => {\n this.changeDetectorRef.reattach();\n this.reattached.next();\n });\n }\n\n get data(): any {\n return Object.assign({}, this.configData, this.actionData);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ng-doc-app-components-playground.mjs","sources":["../tmp-esm2022/components/playground/playground-demo/playground-demo.component.js","../tmp-esm2022/components/playground/playground-property/playground-property.component.js","../tmp-esm2022/components/playground/playground-properties/playground-properties.component.js","../tmp-esm2022/components/playground/playground.component.js","../tmp-esm2022/components/playground/base-playground.js","../tmp-esm2022/components/playground/ng-doc-app-components-playground.js"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, Injector, Input, ViewChild, ViewContainerRef, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport { NgDocDemoDisplayerComponent } from '@ng-doc/app/components/demo-displayer';\nimport { formatHtml } from '@ng-doc/app/helpers';\nimport { getPlaygroundDemoToken } from '@ng-doc/app/providers/playground-demo';\nimport { buildPlaygroundDemoPipeTemplate, buildPlaygroundDemoTemplate, } from '@ng-doc/core/helpers/build-playground-demo-template';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { stringify } from '@ng-doc/core/helpers/stringify';\nimport { NgDocSmoothResizeComponent } from '@ng-doc/ui-kit';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport class NgDocPlaygroundDemoComponent {\n constructor() {\n this.id = '';\n this.pipeName = '';\n this.selector = '';\n this.recreateDemo = false;\n this.expanded = false;\n this.code = '';\n this.injector = inject(Injector);\n this.changeDetectorRef = inject(ChangeDetectorRef);\n this.destroyRef = inject(DestroyRef);\n this.unsubscribe$ = new Subject();\n }\n async ngOnChanges({ form, id }) {\n if (form || id) {\n this.unsubscribe$.next();\n const demoInjector = getPlaygroundDemoToken(this.id);\n if (demoInjector) {\n const demos = this.injector.get(demoInjector, []);\n this.playgroundDemo = demos.find((demo) => demo.selector === this.selector || demo.selector === this.pipeName);\n }\n await this.updateDemo();\n this.form?.valueChanges\n .pipe(takeUntil(this.unsubscribe$), startWith(this.form?.value), takeUntilDestroyed(this.destroyRef))\n .subscribe((data) => this.updateDemo(data));\n }\n }\n async updateDemo(data) {\n if (this.recreateDemo || !this.demoRef) {\n this.createDemo();\n }\n if (data) {\n this.demoRef?.setInput('properties', data.properties ?? {});\n this.demoRef?.setInput('content', data.content ?? {});\n this.demoRef?.setInput('actionData', this.configuration?.data ?? {});\n if (this.recreateDemo) {\n this.demoRef?.instance.onReattached.subscribe(() => {\n this.demoRef?.changeDetectorRef.detectChanges();\n });\n }\n }\n await this.updateCodeView();\n }\n createDemo() {\n if (this.playgroundDemo) {\n this.demoRef?.destroy();\n this.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo);\n this.demoRef?.changeDetectorRef.markForCheck();\n }\n }\n async updateCodeView() {\n const template = this.pipeName\n ? buildPlaygroundDemoPipeTemplate(this.configuration?.template ?? '', this.pipeName, this.getActiveContent(), this.getPipeActiveInputs())\n : buildPlaygroundDemoTemplate(this.configuration?.template ?? '', this.selector, this.getActiveContent(), this.getActiveInputs());\n this.code = await formatHtml(template);\n this.changeDetectorRef.markForCheck();\n }\n getActiveContent() {\n const formData = this.form?.controls.content.value ?? {};\n return objectKeys(formData).reduce((result, key) => {\n result[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n return result;\n }, {});\n }\n getActiveInputs() {\n const formData = this.form?.controls.properties.value ?? {};\n return objectKeys(formData).reduce((result, key) => {\n const inputName = this.properties?.[key]?.inputName ?? key;\n const value = formData[key];\n const property = this.demoRef?.instance?.defaultValues[key];\n if (property !== value) {\n result[inputName] = stringify(value).replace(/\"/g, `'`);\n }\n return result;\n }, {});\n }\n getPipeActiveInputs() {\n const formData = this.form?.controls.properties.value ?? {};\n let changedInputIndex = -1;\n return objectKeys(formData)\n .map((key, i) => {\n const value = formData[key];\n const defaultValue = this.demoRef?.instance?.defaultValues[key];\n if (defaultValue !== value) {\n changedInputIndex = i;\n }\n return key;\n })\n .slice(0, changedInputIndex + 1)\n .reduce((result, key) => {\n result[key] = stringify(formData[key]).replace(/\"/g, `'`);\n return result;\n }, {});\n }\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.3\", type: NgDocPlaygroundDemoComponent, isStandalone: true, selector: \"ng-doc-playground-demo\", inputs: { id: \"id\", pipeName: \"pipeName\", selector: \"selector\", configuration: \"configuration\", properties: \"properties\", recreateDemo: \"recreateDemo\", form: \"form\", expanded: \"expanded\" }, viewQueries: [{ propertyName: \"demoOutlet\", first: true, predicate: [\"demoOutlet\"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: \"<ng-doc-smooth-resize [trigger]=\\\"code\\\">\\n <ng-doc-demo-displayer\\n [code]=\\\"code\\\"\\n [border]=\\\"false\\\"\\n [expanded]=\\\"expanded\\\"\\n language=\\\"angular-html\\\">\\n <ng-container #demoOutlet></ng-container>\\n </ng-doc-demo-displayer>\\n</ng-doc-smooth-resize>\\n\", styles: [\":host{display:block;border:var(--ng-doc-demo-displayer-border);border-radius:var(--ng-doc-demo-displayer-border-radius);overflow:hidden}:host:not(:last-child){border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}:host:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}\\n\"], dependencies: [{ kind: \"component\", type: NgDocDemoDisplayerComponent, selector: \"ng-doc-demo-displayer\", inputs: [\"codeContent\", \"code\", \"language\", \"container\", \"border\", \"expanded\"] }, { kind: \"component\", type: NgDocSmoothResizeComponent, selector: \"ng-doc-smooth-resize\", inputs: [\"trigger\", \"animateOpacity\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundDemoComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-playground-demo', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocDemoDisplayerComponent, NgDocSmoothResizeComponent], template: \"<ng-doc-smooth-resize [trigger]=\\\"code\\\">\\n <ng-doc-demo-displayer\\n [code]=\\\"code\\\"\\n [border]=\\\"false\\\"\\n [expanded]=\\\"expanded\\\"\\n language=\\\"angular-html\\\">\\n <ng-container #demoOutlet></ng-container>\\n </ng-doc-demo-displayer>\\n</ng-doc-smooth-resize>\\n\", styles: [\":host{display:block;border:var(--ng-doc-demo-displayer-border);border-radius:var(--ng-doc-demo-displayer-border-radius);overflow:hidden}:host:not(:last-child){border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}:host:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}\\n\"] }]\n }], propDecorators: { id: [{\n type: Input\n }], pipeName: [{\n type: Input\n }], selector: [{\n type: Input\n }], configuration: [{\n type: Input\n }], properties: [{\n type: Input\n }], recreateDemo: [{\n type: Input\n }], form: [{\n type: Input\n }], expanded: [{\n type: Input\n }], demoOutlet: [{\n type: ViewChild,\n args: ['demoOutlet', { static: true, read: ViewContainerRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC1kZW1vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLWRlbW8vcGxheWdyb3VuZC1kZW1vLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLWRlbW8vcGxheWdyb3VuZC1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBS0wsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsMkJBQTJCLEdBQzVCLE1BQU0scURBQXFELENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxT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UUFBUTtzQkFEUCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ0RvY0RlbW9EaXNwbGF5ZXJDb21wb25lbnQgfSBmcm9tICdAbmctZG9jL2FwcC9jb21wb25lbnRzL2RlbW8tZGlzcGxheWVyJztcbmltcG9ydCB7IGZvcm1hdEh0bWwgfSBmcm9tICdAbmctZG9jL2FwcC9oZWxwZXJzJztcbmltcG9ydCB7IGdldFBsYXlncm91bmREZW1vVG9rZW4gfSBmcm9tICdAbmctZG9jL2FwcC9wcm92aWRlcnMvcGxheWdyb3VuZC1kZW1vJztcbmltcG9ydCB7IE5nRG9jRm9ybVBhcnRpYWxWYWx1ZSB9IGZyb20gJ0BuZy1kb2MvYXBwL3R5cGVzJztcbmltcG9ydCB7XG4gIGJ1aWxkUGxheWdyb3VuZERlbW9QaXBlVGVtcGxhdGUsXG4gIGJ1aWxkUGxheWdyb3VuZERlbW9UZW1wbGF0ZSxcbn0gZnJvbSAnQG5nLWRvYy9jb3JlL2hlbHBlcnMvYnVpbGQtcGxheWdyb3VuZC1kZW1vLXRlbXBsYXRlJztcbmltcG9ydCB7IG9iamVjdEtleXMgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9vYmplY3Qta2V5cyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9zdHJpbmdpZnknO1xuaW1wb3J0IHsgTmdEb2NQbGF5Z3JvdW5kQ29uZmlnLCBOZ0RvY1BsYXlncm91bmRQcm9wZXJ0aWVzIH0gZnJvbSAnQG5nLWRvYy9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTmdEb2NTbW9vdGhSZXNpemVDb21wb25lbnQgfSBmcm9tICdAbmctZG9jL3VpLWtpdCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTmdEb2NCYXNlUGxheWdyb3VuZCB9IGZyb20gJy4uL2Jhc2UtcGxheWdyb3VuZCc7XG5pbXBvcnQgeyBOZ0RvY1BsYXlncm91bmRGb3JtIH0gZnJvbSAnLi4vcGxheWdyb3VuZC1mb3JtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZG9jLXBsYXlncm91bmQtZGVtbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGF5Z3JvdW5kLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGF5Z3JvdW5kLWRlbW8uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0RvY0RlbW9EaXNwbGF5ZXJDb21wb25lbnQsIE5nRG9jU21vb3RoUmVzaXplQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdEb2NQbGF5Z3JvdW5kRGVtb0NvbXBvbmVudDxcbiAgICBUIGV4dGVuZHMgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydGllcyA9IE5nRG9jUGxheWdyb3VuZFByb3BlcnRpZXMsXG4gID5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBpZDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgcGlwZU5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdG9yOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBjb25maWd1cmF0aW9uPzogTmdEb2NQbGF5Z3JvdW5kQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHByb3BlcnRpZXM/OiBUO1xuXG4gIEBJbnB1dCgpXG4gIHJlY3JlYXRlRGVtbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm0hOiBGb3JtR3JvdXA8TmdEb2NQbGF5Z3JvdW5kRm9ybT47XG5cbiAgQElucHV0KClcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdkZW1vT3V0bGV0JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgZGVtb091dGxldD86IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcGxheWdyb3VuZERlbW8/OiB0eXBlb2YgTmdEb2NCYXNlUGxheWdyb3VuZDtcblxuICBwcm90ZWN0ZWQgY29kZSA9ICcnO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgZGVtb1JlZj86IENvbXBvbmVudFJlZjxOZ0RvY0Jhc2VQbGF5Z3JvdW5kPjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKHsgZm9ybSwgaWQgfTogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChmb3JtIHx8IGlkKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG5cbiAgICAgIGNvbnN0IGRlbW9JbmplY3RvcjogSW5qZWN0aW9uVG9rZW48QXJyYXk8dHlwZW9mIE5nRG9jQmFzZVBsYXlncm91bmQ+PiB8IHVuZGVmaW5lZCA9XG4gICAgICAgIGdldFBsYXlncm91bmREZW1vVG9rZW4odGhpcy5pZCk7XG5cbiAgICAgIGlmIChkZW1vSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgZGVtb3M6IEFycmF5PHR5cGVvZiBOZ0RvY0Jhc2VQbGF5Z3JvdW5kPiA9IHRoaXMuaW5qZWN0b3IuZ2V0KGRlbW9JbmplY3RvciwgW10pO1xuXG4gICAgICAgIHRoaXMucGxheWdyb3VuZERlbW8gPSBkZW1vcy5maW5kKFxuICAgICAgICAgIChkZW1vOiB0eXBlb2YgTmdEb2NCYXNlUGxheWdyb3VuZCkgPT5cbiAgICAgICAgICAgIGRlbW8uc2VsZWN0b3IgPT09IHRoaXMuc2VsZWN0b3IgfHwgZGVtby5zZWxlY3RvciA9PT0gdGhpcy5waXBlTmFtZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVEZW1vKCk7XG5cbiAgICAgIHRoaXMuZm9ybT8udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZm9ybT8udmFsdWUpLFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IE5nRG9jRm9ybVBhcnRpYWxWYWx1ZTx0eXBlb2YgdGhpcy5mb3JtPikgPT4gdGhpcy51cGRhdGVEZW1vKGRhdGEpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZURlbW8oZGF0YT86IE5nRG9jRm9ybVBhcnRpYWxWYWx1ZTx0eXBlb2YgdGhpcy5mb3JtPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnJlY3JlYXRlRGVtbyB8fCAhdGhpcy5kZW1vUmVmKSB7XG4gICAgICB0aGlzLmNyZWF0ZURlbW8oKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5kZW1vUmVmPy5zZXRJbnB1dCgncHJvcGVydGllcycsIGRhdGEucHJvcGVydGllcyA/PyB7fSk7XG4gICAgICB0aGlzLmRlbW9SZWY/LnNldElucHV0KCdjb250ZW50JywgZGF0YS5jb250ZW50ID8/IHt9KTtcbiAgICAgIHRoaXMuZGVtb1JlZj8uc2V0SW5wdXQoJ2FjdGlvbkRhdGEnLCB0aGlzLmNvbmZpZ3VyYXRpb24/LmRhdGEgPz8ge30pO1xuXG4gICAgICBpZiAodGhpcy5yZWNyZWF0ZURlbW8pIHtcbiAgICAgICAgdGhpcy5kZW1vUmVmPy5pbnN0YW5jZS5vblJlYXR0YWNoZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRlbW9SZWY/LmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb2RlVmlldygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZW1vKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBsYXlncm91bmREZW1vKSB7XG4gICAgICB0aGlzLmRlbW9SZWY/LmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZGVtb1JlZiA9IHRoaXMuZGVtb091dGxldD8uY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICB0aGlzLnBsYXlncm91bmREZW1vIGFzIHVua25vd24gYXMgVHlwZTxOZ0RvY0Jhc2VQbGF5Z3JvdW5kPixcbiAgICAgICk7XG4gICAgICB0aGlzLmRlbW9SZWY/LmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ29kZVZpZXcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGVtcGxhdGU6IHN0cmluZyA9IHRoaXMucGlwZU5hbWVcbiAgICAgID8gYnVpbGRQbGF5Z3JvdW5kRGVtb1BpcGVUZW1wbGF0ZShcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24/LnRlbXBsYXRlID8/ICcnLFxuICAgICAgICAgIHRoaXMucGlwZU5hbWUsXG4gICAgICAgICAgdGhpcy5nZXRBY3RpdmVDb250ZW50KCksXG4gICAgICAgICAgdGhpcy5nZXRQaXBlQWN0aXZlSW5wdXRzKCksXG4gICAgICAgIClcbiAgICAgIDogYnVpbGRQbGF5Z3JvdW5kRGVtb1RlbXBsYXRlKFxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbj8udGVtcGxhdGUgPz8gJycsXG4gICAgICAgICAgdGhpcy5zZWxlY3RvcixcbiAgICAgICAgICB0aGlzLmdldEFjdGl2ZUNvbnRlbnQoKSxcbiAgICAgICAgICB0aGlzLmdldEFjdGl2ZUlucHV0cygpLFxuICAgICAgICApO1xuXG4gICAgdGhpcy5jb2RlID0gYXdhaXQgZm9ybWF0SHRtbCh0ZW1wbGF0ZSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQ29udGVudCgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPVxuICAgICAgKHRoaXMuZm9ybT8uY29udHJvbHMuY29udGVudC52YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikgPz8ge307XG5cbiAgICByZXR1cm4gb2JqZWN0S2V5cyhmb3JtRGF0YSkucmVkdWNlKChyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXN1bHRba2V5XSA9IGZvcm1EYXRhW2tleV0gPyB0aGlzLmNvbmZpZ3VyYXRpb24/LmNvbnRlbnQ/LltrZXldLnRlbXBsYXRlID8/ICcnIDogJyc7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVJbnB1dHMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgZm9ybURhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID1cbiAgICAgICh0aGlzLmZvcm0/LmNvbnRyb2xzLnByb3BlcnRpZXMudmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID8/IHt9O1xuXG4gICAgcmV0dXJuIG9iamVjdEtleXMoZm9ybURhdGEpLnJlZHVjZSgocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgaW5wdXROYW1lID0gdGhpcy5wcm9wZXJ0aWVzPy5ba2V5XT8uaW5wdXROYW1lID8/IGtleTtcbiAgICAgIGNvbnN0IHZhbHVlOiB1bmtub3duID0gZm9ybURhdGFba2V5XTtcbiAgICAgIGNvbnN0IHByb3BlcnR5OiB1bmtub3duIHwgdW5kZWZpbmVkID0gdGhpcy5kZW1vUmVmPy5pbnN0YW5jZT8uZGVmYXVsdFZhbHVlc1trZXldO1xuXG4gICAgICBpZiAocHJvcGVydHkgIT09IHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFtpbnB1dE5hbWVdID0gc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9cIi9nLCBgJ2ApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGlwZUFjdGl2ZUlucHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPVxuICAgICAgKHRoaXMuZm9ybT8uY29udHJvbHMucHJvcGVydGllcy52YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPz8ge307XG4gICAgbGV0IGNoYW5nZWRJbnB1dEluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgIHJldHVybiBvYmplY3RLZXlzKGZvcm1EYXRhKVxuICAgICAgLm1hcCgoa2V5OiBzdHJpbmcsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IGZvcm1EYXRhW2tleV07XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogdW5rbm93biB8IHVuZGVmaW5lZCA9IHRoaXMuZGVtb1JlZj8uaW5zdGFuY2U/LmRlZmF1bHRWYWx1ZXNba2V5XTtcblxuICAgICAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgIGNoYW5nZWRJbnB1dEluZGV4ID0gaTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9KVxuICAgICAgLnNsaWNlKDAsIGNoYW5nZWRJbnB1dEluZGV4ICsgMSlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBzdHJpbmdpZnkoZm9ybURhdGFba2V5XSkucmVwbGFjZSgvXCIvZywgYCdgKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwge30pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxuZy1kb2Mtc21vb3RoLXJlc2l6ZSBbdHJpZ2dlcl09XCJjb2RlXCI+XG4gIDxuZy1kb2MtZGVtby1kaXNwbGF5ZXJcbiAgICBbY29kZV09XCJjb2RlXCJcbiAgICBbYm9yZGVyXT1cImZhbHNlXCJcbiAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIGxhbmd1YWdlPVwiYW5ndWxhci1odG1sXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjZGVtb091dGxldD48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1kb2MtZGVtby1kaXNwbGF5ZXI+XG48L25nLWRvYy1zbW9vdGgtcmVzaXplPlxuIl19","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild, ViewContainerRef, } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport { NgDocLabelComponent, NgDocTooltipDirective } from '@ng-doc/ui-kit';\nimport * as i0 from \"@angular/core\";\nexport class NgDocPlaygroundPropertyComponent {\n constructor() {\n this.name = '';\n }\n ngOnChanges({ property, control, typeControl, defaultValue }) {\n if ((property || control || typeControl || defaultValue) && this.property && this.typeControl) {\n this.propertyTypeControl?.destroy();\n this.propertyTypeControl = undefined;\n if (this.typeControl && this.propertyOutlet) {\n this.propertyTypeControl = this.propertyOutlet.createComponent(this.typeControl.control);\n this.propertyTypeControl.instance.name = this.name;\n this.propertyTypeControl.instance.description = this.tooltipContent;\n this.propertyTypeControl.instance.options = isPlaygroundProperty(this.property)\n ? this.property.options\n : undefined;\n this.propertyTypeControl.instance.default = this.defaultValue;\n this.propertyTypeControl.instance.isManual = isPlaygroundProperty(this.property)\n ? this.property.isManual\n : undefined;\n this.propertyTypeControl.instance.writeValue(this.control?.value);\n this.option = this.typeControl.options;\n }\n if (this.control) {\n this.control?.registerOnChange((value) => this.propertyTypeControl?.instance?.writeValue(value));\n this.propertyTypeControl?.instance.registerOnChange((value) => this.control?.setValue(value));\n this.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n }\n }\n }\n get hasPropertyControl() {\n return !!this.propertyTypeControl;\n }\n get tooltipContent() {\n return this.property && isPlaygroundProperty(this.property)\n ? this.property.description ?? ''\n : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.3\", type: NgDocPlaygroundPropertyComponent, isStandalone: true, selector: \"ng-doc-playground-property\", inputs: { name: \"name\", property: \"property\", typeControl: \"typeControl\", control: \"control\", defaultValue: \"defaultValue\" }, host: { properties: { \"attr.data-has-property-control\": \"this.hasPropertyControl\" } }, viewQueries: [{ propertyName: \"propertyOutlet\", first: true, predicate: [\"propertyOutlet\"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: \"<label [ng-doc-label]=\\\"option?.hideLabel ? '' : labelContent\\\">\\n\\t<ng-template #labelContent>\\n\\t\\t<span\\n\\t\\t\\t[ngDocTooltip]=\\\"tooltipTemplate\\\"\\n\\t\\t\\t[canOpen]=\\\"!!tooltipContent\\\"\\n\\t\\t\\t[positions]=\\\"['left-center', 'top-right', 'bottom-right']\\\"\\n\\t\\t\\t>{{ name }}</span\\n\\t\\t>\\n\\t\\t<ng-template #tooltipTemplate>\\n\\t\\t\\t<div [innerHTML]=\\\"tooltipContent | ngDocSanitizeHtml\\\"></div>\\n\\t\\t</ng-template>\\n\\t</ng-template>\\n\\t<ng-container #propertyOutlet></ng-container>\\n</label>\\n\", styles: [\":host{display:block}:host[data-has-property-control=false]{display:none}\\n\"], dependencies: [{ kind: \"component\", type: NgDocLabelComponent, selector: \"label[ng-doc-label]\", inputs: [\"ng-doc-label\", \"align\"] }, { kind: \"directive\", type: NgDocTooltipDirective, selector: \"[ngDocTooltip]\", inputs: [\"ngDocTooltip\", \"delay\", \"displayOrigin\", \"pointerOrigin\", \"positions\", \"canOpen\", \"panelClass\", \"minHeight\", \"maxHeight\", \"height\", \"minWidth\", \"maxWidth\", \"width\"], outputs: [\"beforeOpen\", \"afterOpen\", \"beforeClose\", \"afterClose\"], exportAs: [\"ngDocTooltip\"] }, { kind: \"pipe\", type: NgDocSanitizeHtmlPipe, name: \"ngDocSanitizeHtml\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertyComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-playground-property', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe], template: \"<label [ng-doc-label]=\\\"option?.hideLabel ? '' : labelContent\\\">\\n\\t<ng-template #labelContent>\\n\\t\\t<span\\n\\t\\t\\t[ngDocTooltip]=\\\"tooltipTemplate\\\"\\n\\t\\t\\t[canOpen]=\\\"!!tooltipContent\\\"\\n\\t\\t\\t[positions]=\\\"['left-center', 'top-right', 'bottom-right']\\\"\\n\\t\\t\\t>{{ name }}</span\\n\\t\\t>\\n\\t\\t<ng-template #tooltipTemplate>\\n\\t\\t\\t<div [innerHTML]=\\\"tooltipContent | ngDocSanitizeHtml\\\"></div>\\n\\t\\t</ng-template>\\n\\t</ng-template>\\n\\t<ng-container #propertyOutlet></ng-container>\\n</label>\\n\", styles: [\":host{display:block}:host[data-has-property-control=false]{display:none}\\n\"] }]\n }], propDecorators: { name: [{\n type: Input\n }], property: [{\n type: Input\n }], typeControl: [{\n type: Input\n }], control: [{\n type: Input\n }], defaultValue: [{\n type: Input\n }], propertyOutlet: [{\n type: ViewChild,\n args: ['propertyOutlet', { read: ViewContainerRef, static: true }]\n }], hasPropertyControl: [{\n type: HostBinding,\n args: ['attr.data-has-property-control']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC1wcm9wZXJ0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcC9jb21wb25lbnRzL3BsYXlncm91bmQvcGxheWdyb3VuZC1wcm9wZXJ0eS9wbGF5Z3JvdW5kLXByb3BlcnR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLXByb3BlcnR5L3BsYXlncm91bmQtcHJvcGVydHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU0zRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFTNUUsTUFBTSxPQUFPLGdDQUFnQztJQVA3QztRQVNFLFNBQUksR0FBVyxFQUFFLENBQUM7S0ErRG5CO0lBM0NDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBaUI7UUFDekUsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLElBQUksV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsbUJB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S0FBSztnQkFJTixjQUFjO3NCQURiLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF3Q2pFLGtCQUFrQjtzQkFEckIsV0FBVzt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1BsYXlncm91bmRQcm9wZXJ0eSB9IGZyb20gJ0BuZy1kb2MvYXBwL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTmdEb2NQcm92aWRlZFR5cGVDb250cm9sLFxuICBOZ0RvY1R5cGVDb250cm9sLFxuICBOZ0RvY1R5cGVDb250cm9sUHJvdmlkZXJPcHRpb25zLFxufSBmcm9tICdAbmctZG9jL2FwcC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5nRG9jU2FuaXRpemVIdG1sUGlwZSB9IGZyb20gJ0BuZy1kb2MvYXBwL3BpcGVzJztcbmltcG9ydCB7IE5nRG9jUGxheWdyb3VuZENvbnRlbnQsIE5nRG9jUGxheWdyb3VuZFByb3BlcnR5IH0gZnJvbSAnQG5nLWRvYy9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTmdEb2NMYWJlbENvbXBvbmVudCwgTmdEb2NUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQG5nLWRvYy91aS1raXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1kb2MtcGxheWdyb3VuZC1wcm9wZXJ0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGF5Z3JvdW5kLXByb3BlcnR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGxheWdyb3VuZC1wcm9wZXJ0eS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW05nRG9jTGFiZWxDb21wb25lbnQsIE5nRG9jVG9vbHRpcERpcmVjdGl2ZSwgTmdEb2NTYW5pdGl6ZUh0bWxQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBuYW1lOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBwcm9wZXJ0eT86IE5nRG9jUGxheWdyb3VuZFByb3BlcnR5IHwgTmdEb2NQbGF5Z3JvdW5kQ29udGVudDtcblxuICBASW5wdXQoKVxuICB0eXBlQ29udHJvbD86IE5nRG9jUHJvdmlkZWRUeXBlQ29udHJvbDtcblxuICBASW5wdXQoKVxuICBjb250cm9sPzogRm9ybUNvbnRyb2w7XG5cbiAgQElucHV0KClcbiAgZGVmYXVsdFZhbHVlPzogdW5rbm93bjtcblxuICBAVmlld0NoaWxkKCdwcm9wZXJ0eU91dGxldCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByb3BlcnR5T3V0bGV0PzogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcm90ZWN0ZWQgb3B0aW9uPzogTmdEb2NUeXBlQ29udHJvbFByb3ZpZGVyT3B0aW9ucztcbiAgcHJpdmF0ZSBwcm9wZXJ0eVR5cGVDb250cm9sPzogQ29tcG9uZW50UmVmPE5nRG9jVHlwZUNvbnRyb2w+O1xuXG4gIG5nT25DaGFuZ2VzKHsgcHJvcGVydHksIGNvbnRyb2wsIHR5cGVDb250cm9sLCBkZWZhdWx0VmFsdWUgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICgocHJvcGVydHkgfHwgY29udHJvbCB8fCB0eXBlQ29udHJvbCB8fCBkZWZhdWx0VmFsdWUpICYmIHRoaXMucHJvcGVydHkgJiYgdGhpcy50eXBlQ29udHJvbCkge1xuICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sPy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLnR5cGVDb250cm9sICYmIHRoaXMucHJvcGVydHlPdXRsZXQpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sID0gdGhpcy5wcm9wZXJ0eU91dGxldC5jcmVhdGVDb21wb25lbnQodGhpcy50eXBlQ29udHJvbC5jb250cm9sKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sLmluc3RhbmNlLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbC5pbnN0YW5jZS5kZXNjcmlwdGlvbiA9IHRoaXMudG9vbHRpcENvbnRlbnQ7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbC5pbnN0YW5jZS5vcHRpb25zID0gaXNQbGF5Z3JvdW5kUHJvcGVydHkodGhpcy5wcm9wZXJ0eSlcbiAgICAgICAgICA/IHRoaXMucHJvcGVydHkub3B0aW9uc1xuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wuaW5zdGFuY2UuZGVmYXVsdCA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wuaW5zdGFuY2UuaXNNYW51YWwgPSBpc1BsYXlncm91bmRQcm9wZXJ0eSh0aGlzLnByb3BlcnR5KVxuICAgICAgICAgID8gdGhpcy5wcm9wZXJ0eS5pc01hbnVhbFxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wuaW5zdGFuY2Uud3JpdGVWYWx1ZSh0aGlzLmNvbnRyb2w/LnZhbHVlKTtcblxuICAgICAgICB0aGlzLm9wdGlvbiA9IHRoaXMudHlwZUNvbnRyb2wub3B0aW9ucztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICB0aGlzLmNvbnRyb2w/LnJlZ2lzdGVyT25DaGFuZ2UoKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sPy5pbnN0YW5jZT8ud3JpdGVWYWx1ZSh2YWx1ZSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbD8uaW5zdGFuY2UucmVnaXN0ZXJPbkNoYW5nZSgodmFsdWU6IHVua25vd24pID0+XG4gICAgICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbD8uaW5zdGFuY2UucmVnaXN0ZXJPblRvdWNoZWQoKCkgPT4gdGhpcy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWhhcy1wcm9wZXJ0eS1jb250cm9sJylcbiAgZ2V0IGhhc1Byb3BlcnR5Q29udHJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2w7XG4gIH1cblxuICBnZXQgdG9vbHRpcENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eSAmJiBpc1BsYXlncm91bmRQcm9wZXJ0eSh0aGlzLnByb3BlcnR5KVxuICAgICAgPyB0aGlzLnByb3BlcnR5LmRlc2NyaXB0aW9uID8/ICcnXG4gICAgICA6ICcnO1xuICB9XG59XG4iLCI8bGFiZWwgW25nLWRvYy1sYWJlbF09XCJvcHRpb24/LmhpZGVMYWJlbCA/ICcnIDogbGFiZWxDb250ZW50XCI+XG5cdDxuZy10ZW1wbGF0ZSAjbGFiZWxDb250ZW50PlxuXHRcdDxzcGFuXG5cdFx0XHRbbmdEb2NUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG5cdFx0XHRbY2FuT3Blbl09XCIhIXRvb2x0aXBDb250ZW50XCJcblx0XHRcdFtwb3NpdGlvbnNdPVwiWydsZWZ0LWNlbnRlcicsICd0b3AtcmlnaHQnLCAnYm90dG9tLXJpZ2h0J11cIlxuXHRcdFx0Pnt7IG5hbWUgfX08L3NwYW5cblx0XHQ+XG5cdFx0PG5nLXRlbXBsYXRlICN0b29sdGlwVGVtcGxhdGU+XG5cdFx0XHQ8ZGl2IFtpbm5lckhUTUxdPVwidG9vbHRpcENvbnRlbnQgfCBuZ0RvY1Nhbml0aXplSHRtbFwiPjwvZGl2PlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdDwvbmctdGVtcGxhdGU+XG5cdDxuZy1jb250YWluZXIgI3Byb3BlcnR5T3V0bGV0PjwvbmctY29udGFpbmVyPlxuPC9sYWJlbD5cbiJdfQ==","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { AsyncPipe, KeyValuePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Injector, Input, isDevMode, Output, } from '@angular/core';\nimport { FormGroup, FormsModule } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { getTokenForType } from '@ng-doc/app/providers/type-control';\nimport { extractValueOrThrow } from '@ng-doc/core/helpers/extract-value';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { NgDocBindPipe, NgDocButtonComponent, NgDocCheckboxComponent, NgDocExecutePipe, NgDocIconComponent, NgDocTextComponent, NgDocTextRightDirective, NgDocTooltipDirective, } from '@ng-doc/ui-kit';\nimport { map } from 'rxjs/operators';\nimport { NgDocPlaygroundPropertyComponent } from '../playground-property/playground-property.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport class NgDocPlaygroundPropertiesComponent {\n constructor() {\n this.breakpointObserver = inject(BreakpointObserver);\n this.injector = inject(Injector);\n this.ignoreInputs = [];\n this.hideSidePanel = false;\n this.recreateDemo = false;\n this.showResetButton = false;\n this.recreateDemoChange = new EventEmitter();\n this.resetForm = new EventEmitter();\n this.breakpoints = [Breakpoints.XSmall];\n this.propertyControls = [];\n this.contentTypeControl = this.getControlForType('boolean');\n this.observer = this.breakpointObserver\n .observe(this.breakpoints)\n .pipe(map((state) => state.matches));\n }\n ngOnChanges({ properties }) {\n if (properties && this.properties) {\n this.propertyControls = objectKeys(this.properties)\n .filter((key) => this.ignoreInputs?.includes(String(key)) !== true)\n .map((key) => {\n if (this.properties) {\n const property = this.properties[key];\n const typeControl = this.getTypeControl(property);\n if (typeControl) {\n return {\n propertyName: String(key),\n property,\n typeControl,\n };\n }\n }\n return null;\n })\n .filter(isPresent)\n .sort((a, b) => {\n const aOrder = a.typeControl.options?.order;\n const bOrder = b.typeControl.options?.order;\n if (isPresent(aOrder) && isPresent(bOrder)) {\n return aOrder - bOrder;\n }\n if (isPresent(aOrder)) {\n return -1;\n }\n if (isPresent(bOrder)) {\n return 1;\n }\n return a.property.inputName.localeCompare(b.property.inputName);\n });\n }\n }\n getFormControl(controlType, key) {\n return this.form.get(controlType)?.get(key);\n }\n getTypeControl(property) {\n const type = property.type;\n const typeControl = this.getControlForType(type) ??\n this.getControlForTypeAlias(isPlaygroundProperty(property) ? property.options : undefined, property.isManual);\n if (!typeControl && isDevMode()) {\n console.warn(`NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`);\n }\n return typeControl;\n }\n getControlForType(type) {\n const token = getTokenForType(type);\n return token ? this.injector.get(token) : undefined;\n }\n getControlForTypeAlias(options, isManual) {\n if (options && options.length) {\n let optionsIsValid = true;\n if (!isManual) {\n try {\n // checking that all values are extractable\n options.forEach((item) => extractValueOrThrow(item));\n }\n catch {\n optionsIsValid = false;\n }\n }\n if (optionsIsValid) {\n const token = getTokenForType('NgDocTypeAlias');\n return token ? this.injector.get(token) : undefined;\n }\n }\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.3\", type: NgDocPlaygroundPropertiesComponent, isStandalone: true, selector: \"ng-doc-playground-properties\", inputs: { form: \"form\", properties: \"properties\", ignoreInputs: \"ignoreInputs\", dynamicContent: \"dynamicContent\", defaultValues: \"defaultValues\", hideSidePanel: \"hideSidePanel\", recreateDemo: \"recreateDemo\", showResetButton: \"showResetButton\" }, outputs: { recreateDemoChange: \"recreateDemoChange\", resetForm: \"resetForm\" }, usesOnChanges: true, ngImport: i0, template: \"@if (defaultValues) {\\n <div class=\\\"ng-doc-playground-properties-wrapper\\\" [class.vertical]=\\\"observer | async\\\">\\n <div class=\\\"ng-doc-playground-demos\\\">\\n <ng-content></ng-content>\\n </div>\\n @if (!hideSidePanel) {\\n <div class=\\\"ng-doc-playground-properties\\\">\\n <div class=\\\"ng-doc-playground-header\\\">\\n <h4 ng-doc-text>Playground</h4>\\n @if (showResetButton) {\\n <button ng-doc-button color=\\\"alert\\\" (click)=\\\"resetForm.emit()\\\">Reset</button>\\n }\\n </div>\\n <div class=\\\"ng-doc-playground-setting\\\">\\n <ng-doc-checkbox\\n [(ngModel)]=\\\"recreateDemo\\\"\\n (ngModelChange)=\\\"recreateDemoChange.emit($event)\\\">\\n <span\\n ng-doc-text\\n [ngDocTooltip]=\\\"'Recreates demo everytime\\\\none of the input has changed'\\\"\\n [positions]=\\\"['bottom-right', 'left-center']\\\">\\n Recreate\\n <ng-doc-icon icon=\\\"info\\\" ngDocTextRight></ng-doc-icon>\\n </span>\\n </ng-doc-checkbox>\\n </div>\\n <div class=\\\"ng-doc-playground-divider\\\"></div>\\n @if (propertyControls.length) {\\n <h5 class=\\\"ng-doc-title\\\" ng-doc-text>Settings</h5>\\n @for (propertyControl of propertyControls; track propertyControl) {\\n <ng-doc-playground-property\\n [name]=\\\"propertyControl.property.inputName\\\"\\n [property]=\\\"propertyControl.property\\\"\\n [typeControl]=\\\"propertyControl.typeControl\\\"\\n [defaultValue]=\\\"defaultValues[propertyControl.propertyName]\\\"\\n [control]=\\\"\\n getFormControl | bind: this | execute: 'properties' : propertyControl.propertyName\\n \\\">\\n </ng-doc-playground-property>\\n }\\n }\\n @if ((dynamicContent | keyvalue)?.length) {\\n <h5 class=\\\"ng-doc-title\\\" ng-doc-text>Content</h5>\\n @for (content of dynamicContent | keyvalue; track content) {\\n <ng-doc-playground-property\\n [name]=\\\"content.value.label\\\"\\n [property]=\\\"content.value\\\"\\n [typeControl]=\\\"contentTypeControl\\\"\\n [control]=\\\"getFormControl | bind: this | execute: 'content' : content.key\\\">\\n </ng-doc-playground-property>\\n }\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\":host .ng-doc-playground-properties-wrapper{position:relative;display:flex;align-items:flex-start;gap:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical{flex-direction:column}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-demos{margin-right:0;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-properties{width:100%}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-demos{position:sticky;display:flex;flex-direction:column;width:100%;min-width:0;z-index:4;top:calc(var(--ng-doc-page-sticky-offset) + var(--ng-doc-base-gutter))}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties{flex-shrink:0;align-self:normal;width:300px;padding:calc(var(--ng-doc-base-gutter) * 2) calc(var(--ng-doc-base-gutter) * 3);background-color:var(--ng-doc-base-1);border-radius:var(--ng-doc-base-gutter);border:1px solid var(--ng-doc-border-color)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties ng-doc-playground-property:not(:last-child){margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-controls{display:flex;justify-content:flex-end}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header{display:flex;align-items:center;justify-content:space-between;height:40px;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header h4{margin:0}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-setting{display:flex;flex-direction:column}:host .ng-doc-playground-properties-wrapper .ng-doc-title{margin-top:0;margin-bottom:calc(var(--ng-doc-base-gutter) + var(--ng-doc-base-gutter) / 2)}:host .ng-doc-playground-divider{margin:calc(var(--ng-doc-base-gutter) * 2) 0;height:1px;background-color:var(--ng-doc-base-2)}\\n\"], dependencies: [{ kind: \"component\", type: NgDocTextComponent, selector: \"[ng-doc-text]\", inputs: [\"size\", \"color\", \"align\", \"absoluteContent\"] }, { kind: \"component\", type: NgDocButtonComponent, selector: \"button[ng-doc-button], a[ng-doc-button], button[ng-doc-button-flat], a[ng-doc-button-flat], button[ng-doc-button-text], a[ng-doc-button-text]\", inputs: [\"size\", \"color\", \"rounded\"] }, { kind: \"component\", type: NgDocCheckboxComponent, selector: \"ng-doc-checkbox\", inputs: [\"color\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: NgDocTooltipDirective, selector: \"[ngDocTooltip]\", inputs: [\"ngDocTooltip\", \"delay\", \"displayOrigin\", \"pointerOrigin\", \"positions\", \"canOpen\", \"panelClass\", \"minHeight\", \"maxHeight\", \"height\", \"minWidth\", \"maxWidth\", \"width\"], outputs: [\"beforeOpen\", \"afterOpen\", \"beforeClose\", \"afterClose\"], exportAs: [\"ngDocTooltip\"] }, { kind: \"component\", type: NgDocIconComponent, selector: \"ng-doc-icon\", inputs: [\"icon\", \"customIcon\", \"size\"] }, { kind: \"directive\", type: NgDocTextRightDirective, selector: \"[ngDocTextRight]\" }, { kind: \"component\", type: NgDocPlaygroundPropertyComponent, selector: \"ng-doc-playground-property\", inputs: [\"name\", \"property\", \"typeControl\", \"control\", \"defaultValue\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: KeyValuePipe, name: \"keyvalue\" }, { kind: \"pipe\", type: NgDocBindPipe, name: \"bind\" }, { kind: \"pipe\", type: NgDocExecutePipe, name: \"execute\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertiesComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-playground-properties', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n NgDocTextComponent,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n FormsModule,\n NgDocTooltipDirective,\n NgDocIconComponent,\n NgDocTextRightDirective,\n NgDocPlaygroundPropertyComponent,\n AsyncPipe,\n KeyValuePipe,\n NgDocBindPipe,\n NgDocExecutePipe,\n ], template: \"@if (defaultValues) {\\n <div class=\\\"ng-doc-playground-properties-wrapper\\\" [class.vertical]=\\\"observer | async\\\">\\n <div class=\\\"ng-doc-playground-demos\\\">\\n <ng-content></ng-content>\\n </div>\\n @if (!hideSidePanel) {\\n <div class=\\\"ng-doc-playground-properties\\\">\\n <div class=\\\"ng-doc-playground-header\\\">\\n <h4 ng-doc-text>Playground</h4>\\n @if (showResetButton) {\\n <button ng-doc-button color=\\\"alert\\\" (click)=\\\"resetForm.emit()\\\">Reset</button>\\n }\\n </div>\\n <div class=\\\"ng-doc-playground-setting\\\">\\n <ng-doc-checkbox\\n [(ngModel)]=\\\"recreateDemo\\\"\\n (ngModelChange)=\\\"recreateDemoChange.emit($event)\\\">\\n <span\\n ng-doc-text\\n [ngDocTooltip]=\\\"'Recreates demo everytime\\\\none of the input has changed'\\\"\\n [positions]=\\\"['bottom-right', 'left-center']\\\">\\n Recreate\\n <ng-doc-icon icon=\\\"info\\\" ngDocTextRight></ng-doc-icon>\\n </span>\\n </ng-doc-checkbox>\\n </div>\\n <div class=\\\"ng-doc-playground-divider\\\"></div>\\n @if (propertyControls.length) {\\n <h5 class=\\\"ng-doc-title\\\" ng-doc-text>Settings</h5>\\n @for (propertyControl of propertyControls; track propertyControl) {\\n <ng-doc-playground-property\\n [name]=\\\"propertyControl.property.inputName\\\"\\n [property]=\\\"propertyControl.property\\\"\\n [typeControl]=\\\"propertyControl.typeControl\\\"\\n [defaultValue]=\\\"defaultValues[propertyControl.propertyName]\\\"\\n [control]=\\\"\\n getFormControl | bind: this | execute: 'properties' : propertyControl.propertyName\\n \\\">\\n </ng-doc-playground-property>\\n }\\n }\\n @if ((dynamicContent | keyvalue)?.length) {\\n <h5 class=\\\"ng-doc-title\\\" ng-doc-text>Content</h5>\\n @for (content of dynamicContent | keyvalue; track content) {\\n <ng-doc-playground-property\\n [name]=\\\"content.value.label\\\"\\n [property]=\\\"content.value\\\"\\n [typeControl]=\\\"contentTypeControl\\\"\\n [control]=\\\"getFormControl | bind: this | execute: 'content' : content.key\\\">\\n </ng-doc-playground-property>\\n }\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\":host .ng-doc-playground-properties-wrapper{position:relative;display:flex;align-items:flex-start;gap:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical{flex-direction:column}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-demos{margin-right:0;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-properties{width:100%}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-demos{position:sticky;display:flex;flex-direction:column;width:100%;min-width:0;z-index:4;top:calc(var(--ng-doc-page-sticky-offset) + var(--ng-doc-base-gutter))}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties{flex-shrink:0;align-self:normal;width:300px;padding:calc(var(--ng-doc-base-gutter) * 2) calc(var(--ng-doc-base-gutter) * 3);background-color:var(--ng-doc-base-1);border-radius:var(--ng-doc-base-gutter);border:1px solid var(--ng-doc-border-color)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties ng-doc-playground-property:not(:last-child){margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-controls{display:flex;justify-content:flex-end}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header{display:flex;align-items:center;justify-content:space-between;height:40px;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header h4{margin:0}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-setting{display:flex;flex-direction:column}:host .ng-doc-playground-properties-wrapper .ng-doc-title{margin-top:0;margin-bottom:calc(var(--ng-doc-base-gutter) + var(--ng-doc-base-gutter) / 2)}:host .ng-doc-playground-divider{margin:calc(var(--ng-doc-base-gutter) * 2) 0;height:1px;background-color:var(--ng-doc-base-2)}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { form: [{\n type: Input\n }], properties: [{\n type: Input\n }], ignoreInputs: [{\n type: Input\n }], dynamicContent: [{\n type: Input\n }], defaultValues: [{\n type: Input\n }], hideSidePanel: [{\n type: Input\n }], recreateDemo: [{\n type: Input\n }], showResetButton: [{\n type: Input\n }], recreateDemoChange: [{\n type: Output\n }], resetForm: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLXByb3BlcnRpZXMvcGxheWdyb3VuZC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLXByb3BlcnRpZXMvcGxheWdyb3VuZC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUVULE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBTTlELE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVB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QUNoQyxTQUFTO3dCQUNULFlBQVk7d0JBQ1osYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCO3dEQVdELElBQUk7c0JBREgsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMsIEJyZWFrcG9pbnRTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBLZXlWYWx1ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1BsYXlncm91bmRQcm9wZXJ0eSB9IGZyb20gJ0BuZy1kb2MvYXBwL2hlbHBlcnMnO1xuaW1wb3J0IHsgTmdEb2NQcm92aWRlZFR5cGVDb250cm9sIH0gZnJvbSAnQG5nLWRvYy9hcHAvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRUb2tlbkZvclR5cGUgfSBmcm9tICdAbmctZG9jL2FwcC9wcm92aWRlcnMvdHlwZS1jb250cm9sJztcbmltcG9ydCB7IGV4dHJhY3RWYWx1ZU9yVGhyb3cgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9leHRyYWN0LXZhbHVlJztcbmltcG9ydCB7IGlzUHJlc2VudCB9IGZyb20gJ0BuZy1kb2MvY29yZS9oZWxwZXJzL2lzLXByZXNlbnQnO1xuaW1wb3J0IHsgb2JqZWN0S2V5cyB9IGZyb20gJ0BuZy1kb2MvY29yZS9oZWxwZXJzL29iamVjdC1rZXlzJztcbmltcG9ydCB7XG4gIE5nRG9jUGxheWdyb3VuZENvbnRlbnQsXG4gIE5nRG9jUGxheWdyb3VuZFByb3BlcnRpZXMsXG4gIE5nRG9jUGxheWdyb3VuZFByb3BlcnR5LFxufSBmcm9tICdAbmctZG9jL2NvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBOZ0RvY0JpbmRQaXBlLFxuICBOZ0RvY0J1dHRvbkNvbXBvbmVudCxcbiAgTmdEb2NDaGVja2JveENvbXBvbmVudCxcbiAgTmdEb2NFeGVjdXRlUGlwZSxcbiAgTmdEb2NJY29uQ29tcG9uZW50LFxuICBOZ0RvY1RleHRDb21wb25lbnQsXG4gIE5nRG9jVGV4dFJpZ2h0RGlyZWN0aXZlLFxuICBOZ0RvY1Rvb2x0aXBEaXJlY3RpdmUsXG59IGZyb20gJ0BuZy1kb2MvdWkta2l0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTmdEb2NQbGF5Z3JvdW5kRm9ybSB9IGZyb20gJy4uL3BsYXlncm91bmQtZm9ybSc7XG5pbXBvcnQgeyBOZ0RvY1BsYXlncm91bmRQcm9wZXJ0eUNvbXBvbmVudCB9IGZyb20gJy4uL3BsYXlncm91bmQtcHJvcGVydHkvcGxheWdyb3VuZC1wcm9wZXJ0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydHlDb250cm9sIH0gZnJvbSAnLi4vcGxheWdyb3VuZC1wcm9wZXJ0eS1jb250cm9sJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZG9jLXBsYXlncm91bmQtcHJvcGVydGllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGF5Z3JvdW5kLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGF5Z3JvdW5kLXByb3BlcnRpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0RvY1RleHRDb21wb25lbnQsXG4gICAgTmdEb2NCdXR0b25Db21wb25lbnQsXG4gICAgTmdEb2NDaGVja2JveENvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0RvY1Rvb2x0aXBEaXJlY3RpdmUsXG4gICAgTmdEb2NJY29uQ29tcG9uZW50LFxuICAgIE5nRG9jVGV4dFJpZ2h0RGlyZWN0aXZlLFxuICAgIE5nRG9jUGxheWdyb3VuZFByb3BlcnR5Q29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBLZXlWYWx1ZVBpcGUsXG4gICAgTmdEb2NCaW5kUGlwZSxcbiAgICBOZ0RvY0V4ZWN1dGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0RvY1BsYXlncm91bmRQcm9wZXJ0aWVzQ29tcG9uZW50PFxuICBQIGV4dGVuZHMgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydGllcyxcbiAgQyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIE5nRG9jUGxheWdyb3VuZENvbnRlbnQ+LFxuPiBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm0hOiBGb3JtR3JvdXA8TmdEb2NQbGF5Z3JvdW5kRm9ybT47XG5cbiAgQElucHV0KClcbiAgcHJvcGVydGllcz86IFA7XG5cbiAgQElucHV0KClcbiAgaWdub3JlSW5wdXRzPzogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBkeW5hbWljQ29udGVudD86IEM7XG5cbiAgQElucHV0KClcbiAgZGVmYXVsdFZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGhpZGVTaWRlUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICByZWNyZWF0ZURlbW86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzaG93UmVzZXRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcmVjcmVhdGVEZW1vQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlc2V0Rm9ybTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGJyZWFrcG9pbnRzOiBzdHJpbmdbXSA9IFtCcmVha3BvaW50cy5YU21hbGxdO1xuICByZWFkb25seSBvYnNlcnZlcjogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcm90ZWN0ZWQgcHJvcGVydHlDb250cm9sczogTmdEb2NQbGF5Z3JvdW5kUHJvcGVydHlDb250cm9sW10gPSBbXTtcbiAgcHJvdGVjdGVkIGNvbnRlbnRUeXBlQ29udHJvbD86IE5nRG9jUHJvdmlkZWRUeXBlQ29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbEZvclR5cGUoJ2Jvb2xlYW4nKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9ic2VydmVyID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgIC5vYnNlcnZlKHRoaXMuYnJlYWtwb2ludHMpXG4gICAgICAucGlwZShtYXAoKHN0YXRlOiBCcmVha3BvaW50U3RhdGUpID0+IHN0YXRlLm1hdGNoZXMpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgcHJvcGVydGllcyB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHByb3BlcnRpZXMgJiYgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLnByb3BlcnR5Q29udHJvbHMgPSBvYmplY3RLZXlzKHRoaXMucHJvcGVydGllcylcbiAgICAgICAgLmZpbHRlcigoa2V5OiBrZXlvZiBQKSA9PiB0aGlzLmlnbm9yZUlucHV0cz8uaW5jbHVkZXMoU3RyaW5nKGtleSkpICE9PSB0cnVlKVxuICAgICAgICAubWFwKChrZXk6IGtleW9mIFApID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eTogTmdEb2NQbGF5Z3JvdW5kUHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb250cm9sOiBOZ0RvY1Byb3ZpZGVkVHlwZUNvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzLmdldFR5cGVDb250cm9sKHByb3BlcnR5KTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb250cm9sKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBTdHJpbmcoa2V5KSxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICB0eXBlQ29udHJvbCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpc1ByZXNlbnQpXG4gICAgICAgIC5zb3J0KChhOiBOZ0RvY1BsYXlncm91bmRQcm9wZXJ0eUNvbnRyb2wsIGI6IE5nRG9jUGxheWdyb3VuZFByb3BlcnR5Q29udHJvbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFPcmRlcjogbnVtYmVyIHwgdW5kZWZpbmVkID0gYS50eXBlQ29udHJvbC5vcHRpb25zPy5vcmRlcjtcbiAgICAgICAgICBjb25zdCBiT3JkZXI6IG51bWJlciB8IHVuZGVmaW5lZCA9IGIudHlwZUNvbnRyb2wub3B0aW9ucz8ub3JkZXI7XG5cbiAgICAgICAgICBpZiAoaXNQcmVzZW50KGFPcmRlcikgJiYgaXNQcmVzZW50KGJPcmRlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBhT3JkZXIgLSBiT3JkZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc1ByZXNlbnQoYU9yZGVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNQcmVzZW50KGJPcmRlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYS5wcm9wZXJ0eS5pbnB1dE5hbWUubG9jYWxlQ29tcGFyZShiLnByb3BlcnR5LmlucHV0TmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEZvcm1Db250cm9sKGNvbnRyb2xUeXBlOiBrZXlvZiB0eXBlb2YgdGhpcy5mb3JtLmNvbnRyb2xzLCBrZXk6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChjb250cm9sVHlwZSk/LmdldChrZXkpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlQ29udHJvbChwcm9wZXJ0eTogTmdEb2NQbGF5Z3JvdW5kUHJvcGVydHkpOiBOZ0RvY1Byb3ZpZGVkVHlwZUNvbnRyb2wgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHR5cGU6IHN0cmluZyA9IHByb3BlcnR5LnR5cGU7XG4gICAgY29uc3QgdHlwZUNvbnRyb2w6IE5nRG9jUHJvdmlkZWRUeXBlQ29udHJvbCB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLmdldENvbnRyb2xGb3JUeXBlKHR5cGUpID8/XG4gICAgICB0aGlzLmdldENvbnRyb2xGb3JUeXBlQWxpYXMoXG4gICAgICAgIGlzUGxheWdyb3VuZFByb3BlcnR5KHByb3BlcnR5KSA/IHByb3BlcnR5Lm9wdGlvbnMgOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BlcnR5LmlzTWFudWFsLFxuICAgICAgKTtcblxuICAgIGlmICghdHlwZUNvbnRyb2wgJiYgaXNEZXZNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE5nRG9jUGxheWdyb3VuZCBkaWRuJ3QgZmluZCB0aGUgY29udHJvbCBmb3IgdGhlIEBJbnB1dCBcIiR7cHJvcGVydHkuaW5wdXROYW1lfVwiLCB0aGUgdHlwZSBcIiR7dHlwZX1cIiB3YXMgbm90IHJlY29nbml6ZWQnYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVDb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRm9yVHlwZSh0eXBlOiBzdHJpbmcpOiBOZ0RvY1Byb3ZpZGVkVHlwZUNvbnRyb2wgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRva2VuOiBJbmplY3Rpb25Ub2tlbjxOZ0RvY1Byb3ZpZGVkVHlwZUNvbnRyb2w+IHwgdW5kZWZpbmVkID0gZ2V0VG9rZW5Gb3JUeXBlKHR5cGUpO1xuXG4gICAgcmV0dXJuIHRva2VuID8gdGhpcy5pbmplY3Rvci5nZXQodG9rZW4pIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRm9yVHlwZUFsaWFzKFxuICAgIG9wdGlvbnM/OiBzdHJpbmdbXSxcbiAgICBpc01hbnVhbD86IGJvb2xlYW4sXG4gICk6IE5nRG9jUHJvdmlkZWRUeXBlQ29udHJvbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGxldCBvcHRpb25zSXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAgIGlmICghaXNNYW51YWwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBjaGVja2luZyB0aGF0IGFsbCB2YWx1ZXMgYXJlIGV4dHJhY3RhYmxlXG4gICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IGV4dHJhY3RWYWx1ZU9yVGhyb3coaXRlbSkpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBvcHRpb25zSXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zSXNWYWxpZCkge1xuICAgICAgICBjb25zdCB0b2tlbjogSW5qZWN0aW9uVG9rZW48TmdEb2NQcm92aWRlZFR5cGVDb250cm9sPiB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgZ2V0VG9rZW5Gb3JUeXBlKCdOZ0RvY1R5cGVBbGlhcycpO1xuXG4gICAgICAgIHJldHVybiB0b2tlbiA/IHRoaXMuaW5qZWN0b3IuZ2V0KHRva2VuKSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJAaWYgKGRlZmF1bHRWYWx1ZXMpIHtcbiAgPGRpdiBjbGFzcz1cIm5nLWRvYy1wbGF5Z3JvdW5kLXByb3BlcnRpZXMtd3JhcHBlclwiIFtjbGFzcy52ZXJ0aWNhbF09XCJvYnNlcnZlciB8IGFzeW5jXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5nLWRvYy1wbGF5Z3JvdW5kLWRlbW9zXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgQGlmICghaGlkZVNpZGVQYW5lbCkge1xuICAgICAgPGRpdiBjbGFzcz1cIm5nLWRvYy1wbGF5Z3JvdW5kLXByb3BlcnRpZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWRvYy1wbGF5Z3JvdW5kLWhlYWRlclwiPlxuICAgICAgICAgIDxoNCBuZy1kb2MtdGV4dD5QbGF5Z3JvdW5kPC9oND5cbiAgICAgICAgICBAaWYgKHNob3dSZXNldEJ1dHRvbikge1xuICAgICAgICAgICAgPGJ1dHRvbiBuZy1kb2MtYnV0dG9uIGNvbG9yPVwiYWxlcnRcIiAoY2xpY2spPVwicmVzZXRGb3JtLmVtaXQoKVwiPlJlc2V0PC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWRvYy1wbGF5Z3JvdW5kLXNldHRpbmdcIj5cbiAgICAgICAgICA8bmctZG9jLWNoZWNrYm94XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlY3JlYXRlRGVtb1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJyZWNyZWF0ZURlbW9DaGFuZ2UuZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBuZy1kb2MtdGV4dFxuICAgICAgICAgICAgICBbbmdEb2NUb29sdGlwXT1cIidSZWNyZWF0ZXMgZGVtbyBldmVyeXRpbWVcXG5vbmUgb2YgdGhlIGlucHV0IGhhcyBjaGFuZ2VkJ1wiXG4gICAgICAgICAgICAgIFtwb3NpdGlvbnNdPVwiWydib3R0b20tcmlnaHQnLCAnbGVmdC1jZW50ZXInXVwiPlxuICAgICAgICAgICAgICBSZWNyZWF0ZVxuICAgICAgICAgICAgICA8bmctZG9jLWljb24gaWNvbj1cImluZm9cIiBuZ0RvY1RleHRSaWdodD48L25nLWRvYy1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctZG9jLWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWRvYy1wbGF5Z3JvdW5kLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgQGlmIChwcm9wZXJ0eUNvbnRyb2xzLmxlbmd0aCkge1xuICAgICAgICAgIDxoNSBjbGFzcz1cIm5nLWRvYy10aXRsZVwiIG5nLWRvYy10ZXh0PlNldHRpbmdzPC9oNT5cbiAgICAgICAgICBAZm9yIChwcm9wZXJ0eUNvbnRyb2wgb2YgcHJvcGVydHlDb250cm9sczsgdHJhY2sgcHJvcGVydHlDb250cm9sKSB7XG4gICAgICAgICAgICA8bmctZG9jLXBsYXlncm91bmQtcHJvcGVydHlcbiAgICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHlDb250cm9sLnByb3BlcnR5LmlucHV0TmFtZVwiXG4gICAgICAgICAgICAgIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eUNvbnRyb2wucHJvcGVydHlcIlxuICAgICAgICAgICAgICBbdHlwZUNvbnRyb2xdPVwicHJvcGVydHlDb250cm9sLnR5cGVDb250cm9sXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJkZWZhdWx0VmFsdWVzW3Byb3BlcnR5Q29udHJvbC5wcm9wZXJ0eU5hbWVdXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiXG4gICAgICAgICAgICAgICAgZ2V0Rm9ybUNvbnRyb2wgfCBiaW5kOiB0aGlzIHwgZXhlY3V0ZTogJ3Byb3BlcnRpZXMnIDogcHJvcGVydHlDb250cm9sLnByb3BlcnR5TmFtZVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvbmctZG9jLXBsYXlncm91bmQtcHJvcGVydHk+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoKGR5bmFtaWNDb250ZW50IHwga2V5dmFsdWUpPy5sZW5ndGgpIHtcbiAgICAgICAgICA8aDUgY2xhc3M9XCJuZy1kb2MtdGl0bGVcIiBuZy1kb2MtdGV4dD5Db250ZW50PC9oNT5cbiAgICAgICAgICBAZm9yIChjb250ZW50IG9mIGR5bmFtaWNDb250ZW50IHwga2V5dmFsdWU7IHRyYWNrIGNvbnRlbnQpIHtcbiAgICAgICAgICAgIDxuZy1kb2MtcGxheWdyb3VuZC1wcm9wZXJ0eVxuICAgICAgICAgICAgICBbbmFtZV09XCJjb250ZW50LnZhbHVlLmxhYmVsXCJcbiAgICAgICAgICAgICAgW3Byb3BlcnR5XT1cImNvbnRlbnQudmFsdWVcIlxuICAgICAgICAgICAgICBbdHlwZUNvbnRyb2xdPVwiY29udGVudFR5cGVDb250cm9sXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2wgfCBiaW5kOiB0aGlzIHwgZXhlY3V0ZTogJ2NvbnRlbnQnIDogY29udGVudC5rZXlcIj5cbiAgICAgICAgICAgIDwvbmctZG9jLXBsYXlncm91bmQtcHJvcGVydHk+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19","import { ChangeDetectionStrategy, Component, inject, Input, } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { NgDocRootPage } from '@ng-doc/app/classes/root-page';\nimport { isSameObject } from '@ng-doc/core/helpers/is-same-object';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { NgDocAsArrayPipe } from '@ng-doc/ui-kit';\nimport { NgDocPlaygroundDemoComponent } from './playground-demo/playground-demo.component';\nimport { NgDocPlaygroundPropertiesComponent } from './playground-properties/playground-properties.component';\nimport * as i0 from \"@angular/core\";\nexport class NgDocPlaygroundComponent {\n constructor() {\n this.rootPage = inject(NgDocRootPage);\n this.formBuilder = inject(FormBuilder);\n this.id = '';\n this.pipeName = '';\n this.selectors = [];\n this.options = {};\n this.recreateDemo = false;\n this.defaultProperties = {};\n this.defaultContent = {};\n }\n ngOnChanges({ options }) {\n if (options) {\n // Join configuration with options\n this.configuration = Object.assign({}, this.rootPage.page?.playgrounds?.[this.id], this.options);\n }\n }\n ngAfterViewInit() {\n this.defaultProperties = this.getPropertiesFormValues();\n this.defaultContent = this.getContentFormValues();\n const propertiesForm = this.formBuilder.group(this.defaultProperties);\n const contentForm = this.formBuilder.group(this.defaultContent);\n this.formGroup = this.formBuilder.group({\n properties: propertiesForm,\n content: contentForm,\n });\n // `patchValue` is needed to set `undefined` values, otherwise they will be ignored by the Angular form\n this.formGroup.patchValue({\n properties: Object.assign({}, this.defaultProperties, this.configuration.inputs),\n content: this.defaultContent,\n });\n }\n isDefaultState() {\n if (!this.formGroup) {\n return false;\n }\n return (isSameObject(this.formGroup.value.properties ?? {}, this.defaultValues ?? {}) &&\n isSameObject(this.formGroup.value.content ?? {}, this.defaultContent ?? {}));\n }\n getPropertiesFormValues() {\n const formValues = objectKeys(this.properties ?? {}).reduce((controls, key) => {\n if (this.properties) {\n controls[key] = this.defaultValues ? this.defaultValues[key] : undefined;\n }\n return controls;\n }, {});\n return Object.assign({}, formValues, this.configuration.defaults);\n }\n getContentFormValues() {\n return objectKeys(this.configuration?.content ?? {}).reduce((controls, key) => {\n if (this.configuration?.content) {\n controls[key] = false;\n }\n return controls;\n }, {});\n }\n resetForm() {\n this.formGroup.reset({}, { emitEvent: false });\n this.formGroup?.patchValue({\n properties: this.defaultProperties,\n content: this.defaultContent,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.3\", type: NgDocPlaygroundComponent, isStandalone: true, selector: \"ng-doc-playground\", inputs: { id: \"id\", pipeName: \"pipeName\", selectors: \"selectors\", properties: \"properties\", options: \"options\" }, usesOnChanges: true, ngImport: i0, template: \"@if (configuration) {\\n <ng-doc-playground-properties\\n [form]=\\\"formGroup\\\"\\n [properties]=\\\"properties\\\"\\n [ignoreInputs]=\\\"configuration.hiddenInputs\\\"\\n [dynamicContent]=\\\"configuration.content\\\"\\n [hideSidePanel]=\\\"configuration.hideSidePanel ?? false\\\"\\n [defaultValues]=\\\"defaultValues\\\"\\n [showResetButton]=\\\"!isDefaultState()\\\"\\n [(recreateDemo)]=\\\"recreateDemo\\\"\\n (resetForm)=\\\"resetForm()\\\">\\n @for (selector of configuration.selectors ?? selectors | asArray; track selector) {\\n <ng-doc-playground-demo\\n [id]=\\\"id\\\"\\n [selector]=\\\"selector\\\"\\n [properties]=\\\"properties\\\"\\n [configuration]=\\\"configuration\\\"\\n [recreateDemo]=\\\"recreateDemo\\\"\\n [form]=\\\"formGroup\\\"\\n [expanded]=\\\"configuration.expanded ?? false\\\">\\n </ng-doc-playground-demo>\\n }\\n @if (pipeName) {\\n <ng-doc-playground-demo\\n [id]=\\\"id\\\"\\n [pipeName]=\\\"pipeName\\\"\\n [properties]=\\\"properties\\\"\\n [configuration]=\\\"configuration\\\"\\n [recreateDemo]=\\\"recreateDemo\\\"\\n [form]=\\\"formGroup\\\">\\n </ng-doc-playground-demo>\\n }\\n </ng-doc-playground-properties>\\n}\\n\", styles: [\":host{display:block;margin:var(--ng-doc-playground-margin)}\\n\"], dependencies: [{ kind: \"component\", type: NgDocPlaygroundPropertiesComponent, selector: \"ng-doc-playground-properties\", inputs: [\"form\", \"properties\", \"ignoreInputs\", \"dynamicContent\", \"defaultValues\", \"hideSidePanel\", \"recreateDemo\", \"showResetButton\"], outputs: [\"recreateDemoChange\", \"resetForm\"] }, { kind: \"component\", type: NgDocPlaygroundDemoComponent, selector: \"ng-doc-playground-demo\", inputs: [\"id\", \"pipeName\", \"selector\", \"configuration\", \"properties\", \"recreateDemo\", \"form\", \"expanded\"] }, { kind: \"pipe\", type: NgDocAsArrayPipe, name: \"asArray\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-playground', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocPlaygroundPropertiesComponent, NgDocPlaygroundDemoComponent, NgDocAsArrayPipe], template: \"@if (configuration) {\\n <ng-doc-playground-properties\\n [form]=\\\"formGroup\\\"\\n [properties]=\\\"properties\\\"\\n [ignoreInputs]=\\\"configuration.hiddenInputs\\\"\\n [dynamicContent]=\\\"configuration.content\\\"\\n [hideSidePanel]=\\\"configuration.hideSidePanel ?? false\\\"\\n [defaultValues]=\\\"defaultValues\\\"\\n [showResetButton]=\\\"!isDefaultState()\\\"\\n [(recreateDemo)]=\\\"recreateDemo\\\"\\n (resetForm)=\\\"resetForm()\\\">\\n @for (selector of configuration.selectors ?? selectors | asArray; track selector) {\\n <ng-doc-playground-demo\\n [id]=\\\"id\\\"\\n [selector]=\\\"selector\\\"\\n [properties]=\\\"properties\\\"\\n [configuration]=\\\"configuration\\\"\\n [recreateDemo]=\\\"recreateDemo\\\"\\n [form]=\\\"formGroup\\\"\\n [expanded]=\\\"configuration.expanded ?? false\\\">\\n </ng-doc-playground-demo>\\n }\\n @if (pipeName) {\\n <ng-doc-playground-demo\\n [id]=\\\"id\\\"\\n [pipeName]=\\\"pipeName\\\"\\n [properties]=\\\"properties\\\"\\n [configuration]=\\\"configuration\\\"\\n [recreateDemo]=\\\"recreateDemo\\\"\\n [form]=\\\"formGroup\\\">\\n </ng-doc-playground-demo>\\n }\\n </ng-doc-playground-properties>\\n}\\n\", styles: [\":host{display:block;margin:var(--ng-doc-playground-margin)}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { id: [{\n type: Input,\n args: [{ required: true }]\n }], pipeName: [{\n type: Input\n }], selectors: [{\n type: Input\n }], properties: [{\n type: Input\n }], options: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcC9jb21wb25lbnRzL3BsYXlncm91bmQvcGxheWdyb3VuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcC9jb21wb25lbnRzL3BsYXlncm91bmQvcGxheWdyb3VuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU05RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUzRixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7QUFTN0csTUFBTSxPQUFPLHdCQUF3QjtJQStCbkM7UUExQmlCLGFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHbkQsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUdoQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBR3RCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFNekIsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFFckMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFLdEIsc0JBQWlCLEdBQTRCLEVBQUUs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LENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQztZQUVELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUE4QixDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztZQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0EzR1Usd0JBQXdCO2tHQUF4Qix3QkFBd0Isb05DL0JyQywwcUNBa0NBLHVIRExZLGtDQUFrQyw4UEFBRSw0QkFBNEIseUtBQUUsZ0JBQWdCOzsyRkFFakYsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsa0NBQWtDLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLENBQUM7d0RBVzdGLEVBQUU7c0JBREQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXpCLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdEb2NSb290UGFnZSB9IGZyb20gJ0BuZy1kb2MvYXBwL2NsYXNzZXMvcm9vdC1wYWdlJztcbmltcG9ydCB7IGlzU2FtZU9iamVjdCB9IGZyb20gJ0BuZy1kb2MvY29yZS9oZWxwZXJzL2lzLXNhbWUtb2JqZWN0JztcbmltcG9ydCB7IG9iamVjdEtleXMgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9vYmplY3Qta2V5cyc7XG5pbXBvcnQge1xuICBOZ0RvY1BsYXlncm91bmRDb25maWcsXG4gIE5nRG9jUGxheWdyb3VuZE9wdGlvbnMsXG4gIE5nRG9jUGxheWdyb3VuZFByb3BlcnRpZXMsXG59IGZyb20gJ0BuZy1kb2MvY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5nRG9jQXNBcnJheVBpcGUgfSBmcm9tICdAbmctZG9jL3VpLWtpdCc7XG5cbmltcG9ydCB7IE5nRG9jUGxheWdyb3VuZERlbW9Db21wb25lbnQgfSBmcm9tICcuL3BsYXlncm91bmQtZGVtby9wbGF5Z3JvdW5kLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IE5nRG9jUGxheWdyb3VuZEZvcm0gfSBmcm9tICcuL3BsYXlncm91bmQtZm9ybSc7XG5pbXBvcnQgeyBOZ0RvY1BsYXlncm91bmRQcm9wZXJ0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi9wbGF5Z3JvdW5kLXByb3BlcnRpZXMvcGxheWdyb3VuZC1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWRvYy1wbGF5Z3JvdW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYXlncm91bmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGF5Z3JvdW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdEb2NQbGF5Z3JvdW5kUHJvcGVydGllc0NvbXBvbmVudCwgTmdEb2NQbGF5Z3JvdW5kRGVtb0NvbXBvbmVudCwgTmdEb2NBc0FycmF5UGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5nRG9jUGxheWdyb3VuZENvbXBvbmVudDxcbiAgICBUIGV4dGVuZHMgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydGllcyA9IE5nRG9jUGxheWdyb3VuZFByb3BlcnRpZXMsXG4gID5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXRcbntcbiAgcHJpdmF0ZSByZWFkb25seSByb290UGFnZSA9IGluamVjdChOZ0RvY1Jvb3RQYWdlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaWQ6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIHBpcGVOYW1lOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBzZWxlY3RvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHJvcGVydGllcz86IFQ7XG5cbiAgQElucHV0KClcbiAgb3B0aW9uczogTmdEb2NQbGF5Z3JvdW5kT3B0aW9ucyA9IHt9O1xuXG4gIHJlY3JlYXRlRGVtbzogYm9vbGVhbiA9IGZhbHNlO1xuICBmb3JtR3JvdXAhOiBGb3JtR3JvdXA8TmdEb2NQbGF5Z3JvdW5kRm9ybT47XG4gIGRlZmF1bHRWYWx1ZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uZmlndXJhdGlvbiE6IE5nRG9jUGxheWdyb3VuZENvbmZpZztcblxuICBwcml2YXRlIGRlZmF1bHRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBwcml2YXRlIGRlZmF1bHRDb250ZW50OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uQ2hhbmdlcyh7IG9wdGlvbnMgfTogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAvLyBKb2luIGNvbmZpZ3VyYXRpb24gd2l0aCBvcHRpb25zXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgdGhpcy5yb290UGFnZS5wYWdlPy5wbGF5Z3JvdW5kcz8uW3RoaXMuaWRdLFxuICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRlZmF1bHRQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzRm9ybVZhbHVlcygpO1xuICAgIHRoaXMuZGVmYXVsdENvbnRlbnQgPSB0aGlzLmdldENvbnRlbnRGb3JtVmFsdWVzKCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzRm9ybTogRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh0aGlzLmRlZmF1bHRQcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBjb250ZW50Rm9ybTogRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh0aGlzLmRlZmF1bHRDb250ZW50KTtcblxuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzRm9ybSxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRGb3JtLFxuICAgIH0pO1xuICAgIC8vIGBwYXRjaFZhbHVlYCBpcyBuZWVkZWQgdG8gc2V0IGB1bmRlZmluZWRgIHZhbHVlcywgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBBbmd1bGFyIGZvcm1cbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdFByb3BlcnRpZXMsIHRoaXMuY29uZmlndXJhdGlvbi5pbnB1dHMpLFxuICAgICAgY29udGVudDogdGhpcy5kZWZhdWx0Q29udGVudCxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0RlZmF1bHRTdGF0ZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIGlzU2FtZU9iamVjdCh0aGlzLmZvcm1Hcm91cC52YWx1ZS5wcm9wZXJ0aWVzID8/IHt9LCB0aGlzLmRlZmF1bHRWYWx1ZXMgPz8ge30pICYmXG4gICAgICBpc1NhbWVPYmplY3QodGhpcy5mb3JtR3JvdXAudmFsdWUuY29udGVudCA/PyB7fSwgdGhpcy5kZWZhdWx0Q29udGVudCA/PyB7fSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm9wZXJ0aWVzRm9ybVZhbHVlcygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZm9ybVZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBvYmplY3RLZXlzKHRoaXMucHJvcGVydGllcyA/PyB7fSkucmVkdWNlKFxuICAgICAgKGNvbnRyb2xzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydGllcykge1xuICAgICAgICAgIGNvbnRyb2xzW2tleV0gPSB0aGlzLmRlZmF1bHRWYWx1ZXMgPyB0aGlzLmRlZmF1bHRWYWx1ZXNba2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9scztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGZvcm1WYWx1ZXMsIHRoaXMuY29uZmlndXJhdGlvbi5kZWZhdWx0cyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRlbnRGb3JtVmFsdWVzKCk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHtcbiAgICByZXR1cm4gb2JqZWN0S2V5cyh0aGlzLmNvbmZpZ3VyYXRpb24/LmNvbnRlbnQgPz8ge30pLnJlZHVjZShcbiAgICAgIChjb250cm9sczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LmNvbnRlbnQpIHtcbiAgICAgICAgICBjb250cm9sc1trZXldID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udHJvbHM7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPGtleW9mIFQsIGJvb2xlYW4+LFxuICAgICk7XG4gIH1cblxuICByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAucmVzZXQoe30sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLmZvcm1Hcm91cD8ucGF0Y2hWYWx1ZSh7XG4gICAgICBwcm9wZXJ0aWVzOiB0aGlzLmRlZmF1bHRQcm9wZXJ0aWVzLFxuICAgICAgY29udGVudDogdGhpcy5kZWZhdWx0Q29udGVudCxcbiAgICB9KTtcbiAgfVxufVxuIiwiQGlmIChjb25maWd1cmF0aW9uKSB7XG4gIDxuZy1kb2MtcGxheWdyb3VuZC1wcm9wZXJ0aWVzXG4gICAgW2Zvcm1dPVwiZm9ybUdyb3VwXCJcbiAgICBbcHJvcGVydGllc109XCJwcm9wZXJ0aWVzXCJcbiAgICBbaWdub3JlSW5wdXRzXT1cImNvbmZpZ3VyYXRpb24uaGlkZGVuSW5wdXRzXCJcbiAgICBbZHluYW1pY0NvbnRlbnRdPVwiY29uZmlndXJhdGlvbi5jb250ZW50XCJcbiAgICBbaGlkZVNpZGVQYW5lbF09XCJjb25maWd1cmF0aW9uLmhpZGVTaWRlUGFuZWwgPz8gZmFsc2VcIlxuICAgIFtkZWZhdWx0VmFsdWVzXT1cImRlZmF1bHRWYWx1ZXNcIlxuICAgIFtzaG93UmVzZXRCdXR0b25dPVwiIWlzRGVmYXVsdFN0YXRlKClcIlxuICAgIFsocmVjcmVhdGVEZW1vKV09XCJyZWNyZWF0ZURlbW9cIlxuICAgIChyZXNldEZvcm0pPVwicmVzZXRGb3JtKClcIj5cbiAgICBAZm9yIChzZWxlY3RvciBvZiBjb25maWd1cmF0aW9uLnNlbGVjdG9ycyA/PyBzZWxlY3RvcnMgfCBhc0FycmF5OyB0cmFjayBzZWxlY3Rvcikge1xuICAgICAgPG5nLWRvYy1wbGF5Z3JvdW5kLWRlbW9cbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW3NlbGVjdG9yXT1cInNlbGVjdG9yXCJcbiAgICAgICAgW3Byb3BlcnRpZXNdPVwicHJvcGVydGllc1wiXG4gICAgICAgIFtjb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIlxuICAgICAgICBbcmVjcmVhdGVEZW1vXT1cInJlY3JlYXRlRGVtb1wiXG4gICAgICAgIFtmb3JtXT1cImZvcm1Hcm91cFwiXG4gICAgICAgIFtleHBhbmRlZF09XCJjb25maWd1cmF0aW9uLmV4cGFuZGVkID8/IGZhbHNlXCI+XG4gICAgICA8L25nLWRvYy1wbGF5Z3JvdW5kLWRlbW8+XG4gICAgfVxuICAgIEBpZiAocGlwZU5hbWUpIHtcbiAgICAgIDxuZy1kb2MtcGxheWdyb3VuZC1kZW1vXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtwaXBlTmFtZV09XCJwaXBlTmFtZVwiXG4gICAgICAgIFtwcm9wZXJ0aWVzXT1cInByb3BlcnRpZXNcIlxuICAgICAgICBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCJcbiAgICAgICAgW3JlY3JlYXRlRGVtb109XCJyZWNyZWF0ZURlbW9cIlxuICAgICAgICBbZm9ybV09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDwvbmctZG9jLXBsYXlncm91bmQtZGVtbz5cbiAgICB9XG4gIDwvbmctZG9jLXBsYXlncm91bmQtcHJvcGVydGllcz5cbn1cbiJdfQ==","import { ChangeDetectorRef, Directive, inject, Input, } from '@angular/core';\nimport { extractFunctionDefaults } from '@ng-doc/core/helpers/extract-function-defaults';\nimport { Subject, take } from 'rxjs';\nimport { NgDocPlaygroundComponent } from './playground.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Base class for playgrounds components.\n */\nexport class NgDocBasePlayground {\n static { this.selector = 'unknown'; }\n constructor(playgroundInstance) {\n this.playgroundInstance = playgroundInstance;\n this.properties = {};\n this.actionData = {};\n this.content = {};\n this.defaultValues = {};\n this.reattached = new Subject();\n this.playgroundContainer = inject(NgDocPlaygroundComponent);\n this.changeDetectorRef = inject(ChangeDetectorRef);\n this.changeDetectorRef.detach();\n }\n get onReattached() {\n return this.reattached.pipe(take(1));\n }\n ngOnInit() {\n /*\n * Extract default values from playground properties. We do this in `ngOnInit` because in this case\n * input values provided from the template are not initialized yet, and we can read default values instead.\n */\n if (this.playground) {\n this.defaultValues = Object.keys(this.playground).reduce((values, key) => {\n if (this.playground) {\n try {\n values[key] =\n // @ts-expect-error we do not know the type of the playground\n typeof this.playground[key] === 'function'\n ? // @ts-expect-error we do not know the type of the playground\n this.playground[key]()\n : // @ts-expect-error we do not know the type of the playground\n this.playground[key];\n }\n catch (e) {\n // we do catch here because some of the playground properties can be getters and throw an error\n }\n }\n return values;\n }, {});\n }\n else if (this.playgroundInstance) {\n const defaults = extractFunctionDefaults(this.playgroundInstance.prototype.transform);\n this.defaultValues = Object.keys(this.playgroundContainer.properties ?? {}).reduce((def, key, i) => {\n // we do +1 because the first argument is the `value` of the transform function\n def[key] = defaults[i + 1];\n return def;\n }, {});\n }\n else {\n throw new Error('Playground is not defined or initialized');\n }\n if (!this.playgroundContainer.defaultValues) {\n this.playgroundContainer.defaultValues = this.defaultValues;\n }\n /*\n This is a hack just to wait for the playground container to be initialized and only then\n attach the change detector to have correct inputs values.\n */\n Promise.resolve().then(() => {\n this.changeDetectorRef.reattach();\n this.reattached.next();\n });\n }\n get data() {\n return Object.assign({}, this.configData, this.actionData);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocBasePlayground, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.3\", type: NgDocBasePlayground, isStandalone: true, inputs: { properties: \"properties\", actionData: \"actionData\", content: \"content\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocBasePlayground, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: undefined }], propDecorators: { properties: [{\n type: Input\n }], actionData: [{\n type: Input\n }], content: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wbGF5Z3JvdW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHAvY29tcG9uZW50cy9wbGF5Z3JvdW5kL2Jhc2UtcGxheWdyb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVsRTs7R0FFRztBQUVILE1BQU0sT0FBZ0IsbUJBQW1CO2FBQ3ZCLGFBQVEsR0FBVyxTQUFTLEFBQXBCLENBQXFCO0lBcUI3QyxZQUE4QixrQkFBeUM7UUFBekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF1QjtRQWZ2RSxlQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUdyQyxlQUFVLEdBQTRCLEVBQUUsQ0FBQztRQUd6QyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBRWxCLGtCQUFhLEdBQTRCLEVBQUUsQ0FBQztRQUVwQyxlQUFVLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFaEQsd0JBQW1CLEdBQTZCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQy9FLHNCQUFpQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUd6RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVE7UUFDTjs7O1dBR0c7UUFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FDdEQsQ0FBQyxNQUErQixFQUFFLEdBQVcsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDO3dCQUNILE1BQU0sQ0FBQyxHQUFHLENBQUM7NEJBQ1QsNkRBQTZEOzRCQUM3RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVTtnQ0FDeEMsQ0FBQyxDQUFDLDZEQUE2RDtvQ0FDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDeEIsQ0FBQyxDQUFDLDZEQUE2RDtvQ0FDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0IsQ0FBQztvQkFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNYLCtGQUErRjtvQkFDakcsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNoRixDQUFDLEdBQTRCLEVBQUUsR0FBVyxFQUFFLENBQVMsRUFBRSxFQUFFO2dCQUN2RCwrRUFBK0U7Z0JBQy9FLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUUzQixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5RCxDQUFDO1FBRUQ7OztlQUdPO1FBQ1AsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3RCxDQUFDOzhHQXhGbUIsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRHhDLFNBQVM7MkVBUVIsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0cmFjdEZ1bmN0aW9uRGVmYXVsdHMgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9leHRyYWN0LWZ1bmN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCB7IE5nRG9jUGxheWdyb3VuZENvbmZpZyB9IGZyb20gJ0BuZy1kb2MvY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSAnQG5nLWRvYy9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmdEb2NQbGF5Z3JvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9wbGF5Z3JvdW5kLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgcGxheWdyb3VuZHMgY29tcG9uZW50cy5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdEb2NCYXNlUGxheWdyb3VuZCBpbXBsZW1lbnRzIFBpY2s8TmdEb2NQbGF5Z3JvdW5kQ29uZmlnLCAnZGF0YSc+LCBPbkluaXQge1xuICBzdGF0aWMgcmVhZG9ubHkgc2VsZWN0b3I6IHN0cmluZyA9ICd1bmtub3duJztcbiAgYWJzdHJhY3QgcmVhZG9ubHkgcGxheWdyb3VuZD86IFR5cGU8YW55PjtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWY7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbmZpZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBASW5wdXQoKVxuICBhY3Rpb25EYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQ6IGFueSA9IHt9O1xuXG4gIGRlZmF1bHRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgcHJpdmF0ZSByZWF0dGFjaGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHBsYXlncm91bmRDb250YWluZXI6IE5nRG9jUGxheWdyb3VuZENvbXBvbmVudCA9IGluamVjdChOZ0RvY1BsYXlncm91bmRDb21wb25lbnQpO1xuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJpdmF0ZSBwbGF5Z3JvdW5kSW5zdGFuY2U/OiBDb25zdHJ1Y3Rvcjx1bmtub3duPikge1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0YWNoKCk7XG4gIH1cblxuICBnZXQgb25SZWF0dGFjaGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnJlYXR0YWNoZWQucGlwZSh0YWtlKDEpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8qXG4gICAgICogRXh0cmFjdCBkZWZhdWx0IHZhbHVlcyBmcm9tIHBsYXlncm91bmQgcHJvcGVydGllcy4gV2UgZG8gdGhpcyBpbiBgbmdPbkluaXRgIGJlY2F1c2UgaW4gdGhpcyBjYXNlXG4gICAgICogaW5wdXQgdmFsdWVzIHByb3ZpZGVkIGZyb20gdGhlIHRlbXBsYXRlIGFyZSBub3QgaW5pdGlhbGl6ZWQgeWV0LCBhbmQgd2UgY2FuIHJlYWQgZGVmYXVsdCB2YWx1ZXMgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5wbGF5Z3JvdW5kKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZXMgPSBPYmplY3Qua2V5cyh0aGlzLnBsYXlncm91bmQpLnJlZHVjZShcbiAgICAgICAgKHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucGxheWdyb3VuZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPVxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgb2YgdGhlIHBsYXlncm91bmRcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5wbGF5Z3JvdW5kW2tleV0gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgID8gLy8gQHRzLWV4cGVjdC1lcnJvciB3ZSBkbyBub3Qga25vdyB0aGUgdHlwZSBvZiB0aGUgcGxheWdyb3VuZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlncm91bmRba2V5XSgpXG4gICAgICAgICAgICAgICAgICA6IC8vIEB0cy1leHBlY3QtZXJyb3Igd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgb2YgdGhlIHBsYXlncm91bmRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5Z3JvdW5kW2tleV07XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIC8vIHdlIGRvIGNhdGNoIGhlcmUgYmVjYXVzZSBzb21lIG9mIHRoZSBwbGF5Z3JvdW5kIHByb3BlcnRpZXMgY2FuIGJlIGdldHRlcnMgYW5kIHRocm93IGFuIGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfSxcbiAgICAgICAge30sXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wbGF5Z3JvdW5kSW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0gZXh0cmFjdEZ1bmN0aW9uRGVmYXVsdHModGhpcy5wbGF5Z3JvdW5kSW5zdGFuY2UucHJvdG90eXBlLnRyYW5zZm9ybSk7XG5cbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlcyA9IE9iamVjdC5rZXlzKHRoaXMucGxheWdyb3VuZENvbnRhaW5lci5wcm9wZXJ0aWVzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgIChkZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgLy8gd2UgZG8gKzEgYmVjYXVzZSB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGB2YWx1ZWAgb2YgdGhlIHRyYW5zZm9ybSBmdW5jdGlvblxuICAgICAgICAgIGRlZltrZXldID0gZGVmYXVsdHNbaSArIDFdO1xuXG4gICAgICAgICAgcmV0dXJuIGRlZjtcbiAgICAgICAgfSxcbiAgICAgICAge30sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsYXlncm91bmQgaXMgbm90IGRlZmluZWQgb3IgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGxheWdyb3VuZENvbnRhaW5lci5kZWZhdWx0VmFsdWVzKSB7XG4gICAgICB0aGlzLnBsYXlncm91bmRDb250YWluZXIuZGVmYXVsdFZhbHVlcyA9IHRoaXMuZGVmYXVsdFZhbHVlcztcbiAgICB9XG5cbiAgICAvKlxuICAgICAgICAgICAgIFRoaXMgaXMgYSBoYWNrIGp1c3QgdG8gd2FpdCBmb3IgdGhlIHBsYXlncm91bmQgY29udGFpbmVyIHRvIGJlIGluaXRpYWxpemVkIGFuZCBvbmx5IHRoZW5cbiAgICAgICAgICAgICBhdHRhY2ggdGhlIGNoYW5nZSBkZXRlY3RvciB0byBoYXZlIGNvcnJlY3QgaW5wdXRzIHZhbHVlcy5cbiAgICAgICAgICovXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLnJlYXR0YWNoKCk7XG4gICAgICB0aGlzLnJlYXR0YWNoZWQubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGRhdGEoKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWdEYXRhLCB0aGlzLmFjdGlvbkRhdGEpO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZG9jLWFwcC1jb21wb25lbnRzLXBsYXlncm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcC9jb21wb25lbnRzL3BsYXlncm91bmQvbmctZG9jLWFwcC1jb21wb25lbnRzLXBsYXlncm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { NgIf, AsyncPipe } from '@angular/common';
1
+ import { AsyncPipe } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, inject, Component, ChangeDetectionStrategy, Input, HostBinding, ViewChild } from '@angular/core';
3
+ import { Directive, inject, ViewChild, Input, HostBinding, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { NgDocSidebarService } from '@ng-doc/app/services';
5
5
  import { NgDocSidenavComponent } from '@ng-doc/ui-kit';
6
6
  import * as i1 from '@tinkoff/ng-polymorpheus';
@@ -20,10 +20,10 @@ import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
20
20
  * ```
21
21
  */
22
22
  class NgDocCustomNavbarDirective {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocCustomNavbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.3", type: NgDocCustomNavbarDirective, isStandalone: true, selector: "[ngDocCustomNavbar]", ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgDocCustomNavbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: NgDocCustomNavbarDirective, isStandalone: true, selector: "[ngDocCustomNavbar]", ngImport: i0 }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocCustomNavbarDirective, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgDocCustomNavbarDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: '[ngDocCustomNavbar]',
@@ -44,10 +44,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
44
44
  * ```
45
45
  */
46
46
  class NgDocCustomSidebarDirective {
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocCustomSidebarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
48
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.3", type: NgDocCustomSidebarDirective, isStandalone: true, selector: "[ngDocCustomSidebar]", ngImport: i0 }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgDocCustomSidebarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
48
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: NgDocCustomSidebarDirective, isStandalone: true, selector: "[ngDocCustomSidebar]", ngImport: i0 }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocCustomSidebarDirective, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgDocCustomSidebarDirective, decorators: [{
51
51
  type: Directive,
52
52
  args: [{
53
53
  selector: '[ngDocCustomSidebar]',
@@ -72,12 +72,12 @@ class NgDocRootComponent {
72
72
  this.noWidthLimit = false;
73
73
  this.sidebarService = inject(NgDocSidebarService);
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: NgDocRootComponent, isStandalone: true, selector: "ng-doc-root", inputs: { sidebar: "sidebar", footerContent: "footerContent", noWidthLimit: "noWidthLimit" }, host: { properties: { "attr.data-ng-doc-no-width-limit": "this.noWidthLimit" } }, providers: [], viewQueries: [{ propertyName: "sidenav", first: true, predicate: NgDocSidenavComponent, descendants: true }], ngImport: i0, template: "<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n <footer *ngIf=\"footerContent\">\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n </div>\n</ng-container>\n", styles: [":host[data-ng-doc-no-width-limit=true] .ng-doc-root-wrapper main{max-width:none}:host .ng-doc-root-wrapper{display:flex;flex-direction:column;height:100%}:host .ng-doc-root-wrapper main{display:flex;width:100%;margin-left:auto;margin-right:auto;max-width:var(--ng-doc-app-max-width);padding:var(--ng-doc-main-padding);--ng-doc-sidenav-top: var(--ng-doc-navbar-height);--ng-doc-sidenav-width: var(--ng-doc-sidebar-width);--ng-doc-sidenav-content-padding: var(--ng-doc-page-padding)}:host .ng-doc-root-wrapper footer{margin-top:auto}:host .ng-doc-root-wrapper .ng-doc-header{position:fixed;top:0;height:var(--ng-doc-navbar-height);width:100%;z-index:15}\n"], dependencies: [{ kind: "component", type: NgDocSidenavComponent, selector: "ng-doc-sidenav", inputs: ["sidebar", "opened", "hasBackdrop"], outputs: ["closeEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PolymorpheusModule }, { kind: "directive", type: i1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgDocRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: NgDocRootComponent, isStandalone: true, selector: "ng-doc-root", inputs: { sidebar: "sidebar", footerContent: "footerContent", noWidthLimit: "noWidthLimit" }, host: { properties: { "attr.data-ng-doc-no-width-limit": "this.noWidthLimit" } }, providers: [], viewQueries: [{ propertyName: "sidenav", first: true, predicate: NgDocSidenavComponent, descendants: true }], ngImport: i0, template: "<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n @if (footerContent) {\n <footer>\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n }\n </div>\n</ng-container>\n", styles: [":host[data-ng-doc-no-width-limit=true] .ng-doc-root-wrapper main{max-width:none}:host .ng-doc-root-wrapper{display:flex;flex-direction:column;height:100%}:host .ng-doc-root-wrapper main{display:flex;width:100%;margin-left:auto;margin-right:auto;max-width:var(--ng-doc-app-max-width);padding:var(--ng-doc-main-padding);--ng-doc-sidenav-top: var(--ng-doc-navbar-height);--ng-doc-sidenav-width: var(--ng-doc-sidebar-width);--ng-doc-sidenav-content-padding: var(--ng-doc-page-padding)}:host .ng-doc-root-wrapper footer{margin-top:auto}:host .ng-doc-root-wrapper .ng-doc-header{position:fixed;top:0;height:var(--ng-doc-navbar-height);width:100%;z-index:15}\n"], dependencies: [{ kind: "component", type: NgDocSidenavComponent, selector: "ng-doc-sidenav", inputs: ["sidebar", "opened", "hasBackdrop"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: PolymorpheusModule }, { kind: "directive", type: i1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRootComponent, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: NgDocRootComponent, decorators: [{
79
79
  type: Component,
80
- args: [{ selector: 'ng-doc-root', providers: [], changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocSidenavComponent, NgIf, PolymorpheusModule, AsyncPipe], template: "<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n <footer *ngIf=\"footerContent\">\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n </div>\n</ng-container>\n", styles: [":host[data-ng-doc-no-width-limit=true] .ng-doc-root-wrapper main{max-width:none}:host .ng-doc-root-wrapper{display:flex;flex-direction:column;height:100%}:host .ng-doc-root-wrapper main{display:flex;width:100%;margin-left:auto;margin-right:auto;max-width:var(--ng-doc-app-max-width);padding:var(--ng-doc-main-padding);--ng-doc-sidenav-top: var(--ng-doc-navbar-height);--ng-doc-sidenav-width: var(--ng-doc-sidebar-width);--ng-doc-sidenav-content-padding: var(--ng-doc-page-padding)}:host .ng-doc-root-wrapper footer{margin-top:auto}:host .ng-doc-root-wrapper .ng-doc-header{position:fixed;top:0;height:var(--ng-doc-navbar-height);width:100%;z-index:15}\n"] }]
80
+ args: [{ selector: 'ng-doc-root', providers: [], changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocSidenavComponent, PolymorpheusModule, AsyncPipe], template: "<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n @if (footerContent) {\n <footer>\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n }\n </div>\n</ng-container>\n", styles: [":host[data-ng-doc-no-width-limit=true] .ng-doc-root-wrapper main{max-width:none}:host .ng-doc-root-wrapper{display:flex;flex-direction:column;height:100%}:host .ng-doc-root-wrapper main{display:flex;width:100%;margin-left:auto;margin-right:auto;max-width:var(--ng-doc-app-max-width);padding:var(--ng-doc-main-padding);--ng-doc-sidenav-top: var(--ng-doc-navbar-height);--ng-doc-sidenav-width: var(--ng-doc-sidebar-width);--ng-doc-sidenav-content-padding: var(--ng-doc-page-padding)}:host .ng-doc-root-wrapper footer{margin-top:auto}:host .ng-doc-root-wrapper .ng-doc-header{position:fixed;top:0;height:var(--ng-doc-navbar-height);width:100%;z-index:15}\n"] }]
81
81
  }], propDecorators: { sidebar: [{
82
82
  type: Input
83
83
  }], footerContent: [{