@taiga-ui/addon-doc 3.57.0 → 3.59.0-canary.1c24449

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 (242) hide show
  1. package/components/code/code.component.d.ts +1 -1
  2. package/components/copy/copy.component.d.ts +1 -1
  3. package/components/demo/demo.component.d.ts +3 -3
  4. package/components/doc-tab/doc-tab.component.d.ts +6 -0
  5. package/components/doc-tab/doc-tab.module.d.ts +8 -0
  6. package/components/documentation/documentation-property-connector.directive.d.ts +6 -4
  7. package/components/documentation/documentation.component.d.ts +1 -1
  8. package/components/documentation/documentation.module.d.ts +1 -1
  9. package/components/documentation/pipes/cleaner.pipe.d.ts +1 -1
  10. package/components/documentation/pipes/color.pipe.d.ts +1 -1
  11. package/components/documentation/pipes/inspect.pipe.d.ts +1 -1
  12. package/components/documentation/pipes/opacity.pipe.d.ts +1 -1
  13. package/components/documentation/pipes/optional.pipe.d.ts +1 -1
  14. package/components/documentation/pipes/primitive-polymorpheus-content.pipe.d.ts +1 -1
  15. package/components/documentation/pipes/strip-optional.pipe.d.ts +1 -1
  16. package/components/documentation/pipes/type-reference.pipe.d.ts +1 -1
  17. package/components/example/example-get-tabs.pipe.d.ts +1 -1
  18. package/components/example/example.component.d.ts +1 -1
  19. package/components/index.d.ts +2 -0
  20. package/components/internal/header/header.component.d.ts +1 -1
  21. package/components/internal/input-opacity/input-opacity.directive.d.ts +1 -1
  22. package/components/internal/see-also/see-also.component.d.ts +1 -1
  23. package/components/internal/source-code/source-code.component.d.ts +1 -1
  24. package/components/language-switcher/language-switcher.component.d.ts +3 -3
  25. package/components/main/main.component.d.ts +1 -1
  26. package/components/navigation/navigation.component.d.ts +8 -9
  27. package/components/page/page-tab.directive.d.ts +1 -1
  28. package/components/page/page.component.d.ts +1 -1
  29. package/directives/scroll-into-view/scroll-into-view.directive.d.ts +1 -1
  30. package/directives/text-code/text-code.directive.d.ts +1 -1
  31. package/{esm2015/addon-doc.module.js → esm2020/addon-doc.module.mjs} +4 -4
  32. package/esm2020/components/code/code.component.mjs +43 -0
  33. package/{esm2015/components/code/code.module.js → esm2020/components/code/code.module.mjs} +9 -11
  34. package/esm2020/components/copy/copy.component.mjs +36 -0
  35. package/{esm2015/components/copy/copy.module.js → esm2020/components/copy/copy.module.mjs} +5 -5
  36. package/esm2020/components/demo/demo.component.mjs +179 -0
  37. package/{esm2015/components/demo/demo.module.js → esm2020/components/demo/demo.module.mjs} +23 -25
  38. package/esm2020/components/doc-tab/doc-tab.component.mjs +17 -0
  39. package/esm2020/components/doc-tab/doc-tab.module.mjs +18 -0
  40. package/esm2020/components/documentation/documentation-property-connector.directive.mjs +141 -0
  41. package/esm2020/components/documentation/documentation.component.mjs +110 -0
  42. package/{esm2015/components/documentation/documentation.module.js → esm2020/components/documentation/documentation.module.mjs} +25 -25
  43. package/{esm2015/components/documentation/pipes/cleaner.pipe.js → esm2020/components/documentation/pipes/cleaner.pipe.mjs} +3 -3
  44. package/{esm2015/components/documentation/pipes/color.pipe.js → esm2020/components/documentation/pipes/color.pipe.mjs} +3 -3
  45. package/{esm2015/components/documentation/pipes/inspect.pipe.js → esm2020/components/documentation/pipes/inspect.pipe.mjs} +3 -3
  46. package/{esm2015/components/documentation/pipes/opacity.pipe.js → esm2020/components/documentation/pipes/opacity.pipe.mjs} +3 -3
  47. package/{esm2015/components/documentation/pipes/optional.pipe.js → esm2020/components/documentation/pipes/optional.pipe.mjs} +3 -3
  48. package/{esm2015/components/documentation/pipes/primitive-polymorpheus-content.pipe.js → esm2020/components/documentation/pipes/primitive-polymorpheus-content.pipe.mjs} +3 -3
  49. package/{esm2015/components/documentation/pipes/strip-optional.pipe.js → esm2020/components/documentation/pipes/strip-optional.pipe.mjs} +3 -3
  50. package/esm2020/components/documentation/pipes/type-reference.pipe.mjs +31 -0
  51. package/{esm2015/components/example/example-get-tabs.pipe.js → esm2020/components/example/example-get-tabs.pipe.mjs} +3 -3
  52. package/esm2020/components/example/example.component.mjs +151 -0
  53. package/{esm2015/components/example/example.module.js → esm2020/components/example/example.module.mjs} +13 -15
  54. package/esm2020/components/index.mjs +42 -0
  55. package/esm2020/components/internal/header/header.component.mjs +55 -0
  56. package/{esm2015/components/internal/header/header.module.js → esm2020/components/internal/header/header.module.mjs} +10 -12
  57. package/{esm2015/components/internal/input-opacity/input-opacity.directive.js → esm2020/components/internal/input-opacity/input-opacity.directive.mjs} +8 -8
  58. package/{esm2015/components/internal/input-opacity/input-opacity.module.js → esm2020/components/internal/input-opacity/input-opacity.module.mjs} +4 -4
  59. package/esm2020/components/internal/see-also/see-also.component.mjs +31 -0
  60. package/{esm2015/components/internal/see-also/see-also.module.js → esm2020/components/internal/see-also/see-also.module.mjs} +5 -5
  61. package/{esm2015/components/internal/source-code/source-code.component.js → esm2020/components/internal/source-code/source-code.component.mjs} +7 -11
  62. package/{esm2015/components/internal/source-code/source-code.module.js → esm2020/components/internal/source-code/source-code.module.mjs} +5 -5
  63. package/esm2020/components/language-switcher/language-switcher.component.mjs +61 -0
  64. package/{esm2015/components/language-switcher/language-switcher.module.js → esm2020/components/language-switcher/language-switcher.module.mjs} +9 -11
  65. package/esm2020/components/main/main.component.mjs +59 -0
  66. package/{esm2015/components/main/main.module.js → esm2020/components/main/main.module.mjs} +14 -16
  67. package/esm2020/components/navigation/navigation.component.mjs +214 -0
  68. package/{esm2015/components/navigation/navigation.module.js → esm2020/components/navigation/navigation.module.mjs} +24 -26
  69. package/{esm2015/components/page/page-tab.directive.js → esm2020/components/page/page-tab.directive.mjs} +3 -3
  70. package/esm2020/components/page/page.component.mjs +56 -0
  71. package/{esm2015/components/page/page.module.js → esm2020/components/page/page.module.mjs} +11 -13
  72. package/{esm2015/directives/scroll-into-view/scroll-into-view.directive.js → esm2020/directives/scroll-into-view/scroll-into-view.directive.mjs} +7 -7
  73. package/{esm2015/directives/scroll-into-view/scroll-into-view.module.js → esm2020/directives/scroll-into-view/scroll-into-view.module.mjs} +4 -4
  74. package/{esm2015/directives/text-code/text-code.directive.js → esm2020/directives/text-code/text-code.directive.mjs} +3 -3
  75. package/{esm2015/directives/text-code/text-code.module.js → esm2020/directives/text-code/text-code.module.mjs} +4 -4
  76. package/{esm2015/services/theme-night.service.js → esm2020/services/theme-night.service.mjs} +4 -4
  77. package/{esm2015/services/theme.service.js → esm2020/services/theme.service.mjs} +4 -4
  78. package/esm2020/tokens/pages.mjs +9 -0
  79. package/esm2020/utils/coerce-boolean.mjs +4 -0
  80. package/{esm2015/utils/coerce-value.js → esm2020/utils/coerce-value.mjs} +2 -2
  81. package/esm2020/utils/raw-load-record.mjs +11 -0
  82. package/esm2020/utils/raw-load.mjs +4 -0
  83. package/esm2020/utils/sort-pages.mjs +26 -0
  84. package/esm2020/utils/to-flat-map-pages.mjs +22 -0
  85. package/esm2020/utils/type-reference-parser.mjs +24 -0
  86. package/fesm2015/taiga-ui-addon-doc-components.mjs +1910 -0
  87. package/fesm2015/taiga-ui-addon-doc-components.mjs.map +1 -0
  88. package/fesm2015/taiga-ui-addon-doc-directives.mjs +100 -0
  89. package/fesm2015/taiga-ui-addon-doc-directives.mjs.map +1 -0
  90. package/fesm2015/{taiga-ui-addon-doc-interfaces.js → taiga-ui-addon-doc-interfaces.mjs} +1 -1
  91. package/fesm2015/taiga-ui-addon-doc-interfaces.mjs.map +1 -0
  92. package/fesm2015/{taiga-ui-addon-doc-languages.js → taiga-ui-addon-doc-languages.mjs} +1 -1
  93. package/fesm2015/taiga-ui-addon-doc-languages.mjs.map +1 -0
  94. package/fesm2015/taiga-ui-addon-doc-services.mjs +97 -0
  95. package/fesm2015/taiga-ui-addon-doc-services.mjs.map +1 -0
  96. package/fesm2015/{taiga-ui-addon-doc-tokens.js → taiga-ui-addon-doc-tokens.mjs} +1 -1
  97. package/fesm2015/taiga-ui-addon-doc-tokens.mjs.map +1 -0
  98. package/fesm2015/taiga-ui-addon-doc-types.mjs +4 -0
  99. package/fesm2015/taiga-ui-addon-doc-types.mjs.map +1 -0
  100. package/fesm2015/{taiga-ui-addon-doc-utils.js → taiga-ui-addon-doc-utils.mjs} +7 -6
  101. package/fesm2015/taiga-ui-addon-doc-utils.mjs.map +1 -0
  102. package/fesm2015/{taiga-ui-addon-doc.js → taiga-ui-addon-doc.mjs} +5 -5
  103. package/fesm2015/taiga-ui-addon-doc.mjs.map +1 -0
  104. package/fesm2020/taiga-ui-addon-doc-components.mjs +1880 -0
  105. package/fesm2020/taiga-ui-addon-doc-components.mjs.map +1 -0
  106. package/{fesm2015/taiga-ui-addon-doc-directives.js → fesm2020/taiga-ui-addon-doc-directives.mjs} +18 -18
  107. package/fesm2020/taiga-ui-addon-doc-directives.mjs.map +1 -0
  108. package/fesm2020/taiga-ui-addon-doc-interfaces.mjs +12 -0
  109. package/fesm2020/taiga-ui-addon-doc-interfaces.mjs.map +1 -0
  110. package/fesm2020/taiga-ui-addon-doc-languages.mjs +46 -0
  111. package/fesm2020/taiga-ui-addon-doc-languages.mjs.map +1 -0
  112. package/{fesm2015/taiga-ui-addon-doc-services.js → fesm2020/taiga-ui-addon-doc-services.mjs} +7 -7
  113. package/fesm2020/taiga-ui-addon-doc-services.mjs.map +1 -0
  114. package/fesm2020/taiga-ui-addon-doc-tokens.mjs +149 -0
  115. package/fesm2020/taiga-ui-addon-doc-tokens.mjs.map +1 -0
  116. package/fesm2020/taiga-ui-addon-doc-types.mjs +4 -0
  117. package/fesm2020/taiga-ui-addon-doc-types.mjs.map +1 -0
  118. package/fesm2020/taiga-ui-addon-doc-utils.mjs +275 -0
  119. package/fesm2020/taiga-ui-addon-doc-utils.mjs.map +1 -0
  120. package/fesm2020/taiga-ui-addon-doc.mjs +49 -0
  121. package/fesm2020/taiga-ui-addon-doc.mjs.map +1 -0
  122. package/interfaces/page.d.ts +3 -3
  123. package/package.json +115 -38
  124. package/styles/markdown.less +118 -0
  125. package/tokens/pages.d.ts +4 -2
  126. package/types/pages.d.ts +1 -1
  127. package/utils/type-reference-parser.d.ts +1 -1
  128. package/bundles/taiga-ui-addon-doc-components.umd.js +0 -2500
  129. package/bundles/taiga-ui-addon-doc-components.umd.js.map +0 -1
  130. package/bundles/taiga-ui-addon-doc-directives.umd.js +0 -140
  131. package/bundles/taiga-ui-addon-doc-directives.umd.js.map +0 -1
  132. package/bundles/taiga-ui-addon-doc-interfaces.umd.js +0 -22
  133. package/bundles/taiga-ui-addon-doc-interfaces.umd.js.map +0 -1
  134. package/bundles/taiga-ui-addon-doc-languages.umd.js +0 -54
  135. package/bundles/taiga-ui-addon-doc-languages.umd.js.map +0 -1
  136. package/bundles/taiga-ui-addon-doc-services.umd.js +0 -457
  137. package/bundles/taiga-ui-addon-doc-services.umd.js.map +0 -1
  138. package/bundles/taiga-ui-addon-doc-tokens.umd.js +0 -179
  139. package/bundles/taiga-ui-addon-doc-tokens.umd.js.map +0 -1
  140. package/bundles/taiga-ui-addon-doc-types.umd.js +0 -11
  141. package/bundles/taiga-ui-addon-doc-types.umd.js.map +0 -1
  142. package/bundles/taiga-ui-addon-doc-utils.umd.js +0 -671
  143. package/bundles/taiga-ui-addon-doc-utils.umd.js.map +0 -1
  144. package/bundles/taiga-ui-addon-doc.umd.js +0 -117
  145. package/bundles/taiga-ui-addon-doc.umd.js.map +0 -1
  146. package/components/package.json +0 -10
  147. package/components/taiga-ui-addon-doc-components.d.ts +0 -5
  148. package/directives/package.json +0 -10
  149. package/directives/taiga-ui-addon-doc-directives.d.ts +0 -5
  150. package/esm2015/components/code/code.component.js +0 -48
  151. package/esm2015/components/copy/copy.component.js +0 -42
  152. package/esm2015/components/demo/demo.component.js +0 -183
  153. package/esm2015/components/documentation/documentation-property-connector.directive.js +0 -127
  154. package/esm2015/components/documentation/documentation.component.js +0 -117
  155. package/esm2015/components/documentation/pipes/type-reference.pipe.js +0 -34
  156. package/esm2015/components/example/example.component.js +0 -152
  157. package/esm2015/components/index.js +0 -40
  158. package/esm2015/components/internal/header/header.component.js +0 -60
  159. package/esm2015/components/internal/see-also/see-also.component.js +0 -37
  160. package/esm2015/components/language-switcher/language-switcher.component.js +0 -67
  161. package/esm2015/components/main/main.component.js +0 -68
  162. package/esm2015/components/navigation/navigation.component.js +0 -223
  163. package/esm2015/components/page/page.component.js +0 -62
  164. package/esm2015/tokens/pages.js +0 -9
  165. package/esm2015/utils/coerce-boolean.js +0 -4
  166. package/esm2015/utils/raw-load-record.js +0 -14
  167. package/esm2015/utils/raw-load.js +0 -7
  168. package/esm2015/utils/sort-pages.js +0 -23
  169. package/esm2015/utils/to-flat-map-pages.js +0 -23
  170. package/esm2015/utils/type-reference-parser.js +0 -24
  171. package/fesm2015/taiga-ui-addon-doc-components.js +0 -1928
  172. package/fesm2015/taiga-ui-addon-doc-components.js.map +0 -1
  173. package/fesm2015/taiga-ui-addon-doc-directives.js.map +0 -1
  174. package/fesm2015/taiga-ui-addon-doc-interfaces.js.map +0 -1
  175. package/fesm2015/taiga-ui-addon-doc-languages.js.map +0 -1
  176. package/fesm2015/taiga-ui-addon-doc-services.js.map +0 -1
  177. package/fesm2015/taiga-ui-addon-doc-tokens.js.map +0 -1
  178. package/fesm2015/taiga-ui-addon-doc-types.js +0 -4
  179. package/fesm2015/taiga-ui-addon-doc-types.js.map +0 -1
  180. package/fesm2015/taiga-ui-addon-doc-utils.js.map +0 -1
  181. package/fesm2015/taiga-ui-addon-doc.js.map +0 -1
  182. package/interfaces/package.json +0 -10
  183. package/interfaces/taiga-ui-addon-doc-interfaces.d.ts +0 -5
  184. package/languages/package.json +0 -10
  185. package/languages/taiga-ui-addon-doc-languages.d.ts +0 -5
  186. package/services/package.json +0 -10
  187. package/services/taiga-ui-addon-doc-services.d.ts +0 -5
  188. package/taiga-ui-addon-doc.d.ts +0 -5
  189. package/tokens/package.json +0 -10
  190. package/tokens/taiga-ui-addon-doc-tokens.d.ts +0 -5
  191. package/types/package.json +0 -10
  192. package/types/taiga-ui-addon-doc-types.d.ts +0 -5
  193. package/utils/package.json +0 -10
  194. package/utils/taiga-ui-addon-doc-utils.d.ts +0 -5
  195. /package/{esm2015/components/example/example.options.js → esm2020/components/example/example.options.mjs} +0 -0
  196. /package/{esm2015/components/navigation/navigation.providers.js → esm2020/components/navigation/navigation.providers.mjs} +0 -0
  197. /package/{esm2015/components/page/page.providers.js → esm2020/components/page/page.providers.mjs} +0 -0
  198. /package/{esm2015/components/taiga-ui-addon-doc-components.js → esm2020/components/taiga-ui-addon-doc-components.mjs} +0 -0
  199. /package/{esm2015/directives/index.js → esm2020/directives/index.mjs} +0 -0
  200. /package/{esm2015/directives/taiga-ui-addon-doc-directives.js → esm2020/directives/taiga-ui-addon-doc-directives.mjs} +0 -0
  201. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  202. /package/{esm2015/interfaces/code-editor.js → esm2020/interfaces/code-editor.mjs} +0 -0
  203. /package/{esm2015/interfaces/demo-params.js → esm2020/interfaces/demo-params.mjs} +0 -0
  204. /package/{esm2015/interfaces/index.js → esm2020/interfaces/index.mjs} +0 -0
  205. /package/{esm2015/interfaces/page.js → esm2020/interfaces/page.mjs} +0 -0
  206. /package/{esm2015/interfaces/source-code-path-options.js → esm2020/interfaces/source-code-path-options.mjs} +0 -0
  207. /package/{esm2015/interfaces/taiga-ui-addon-doc-interfaces.js → esm2020/interfaces/taiga-ui-addon-doc-interfaces.mjs} +0 -0
  208. /package/{esm2015/languages/index.js → esm2020/languages/index.mjs} +0 -0
  209. /package/{esm2015/languages/russian.js → esm2020/languages/russian.mjs} +0 -0
  210. /package/{esm2015/languages/taiga-ui-addon-doc-languages.js → esm2020/languages/taiga-ui-addon-doc-languages.mjs} +0 -0
  211. /package/{esm2015/services/index.js → esm2020/services/index.mjs} +0 -0
  212. /package/{esm2015/services/taiga-ui-addon-doc-services.js → esm2020/services/taiga-ui-addon-doc-services.mjs} +0 -0
  213. /package/{esm2015/services/theme-night.options.js → esm2020/services/theme-night.options.mjs} +0 -0
  214. /package/{esm2015/services/theme.options.js → esm2020/services/theme.options.mjs} +0 -0
  215. /package/{esm2015/taiga-ui-addon-doc.js → esm2020/taiga-ui-addon-doc.mjs} +0 -0
  216. /package/{esm2015/tokens/code-actions.js → esm2020/tokens/code-actions.mjs} +0 -0
  217. /package/{esm2015/tokens/code-editor.js → esm2020/tokens/code-editor.mjs} +0 -0
  218. /package/{esm2015/tokens/default-tabs.js → esm2020/tokens/default-tabs.mjs} +0 -0
  219. /package/{esm2015/tokens/doc-icons.js → esm2020/tokens/doc-icons.mjs} +0 -0
  220. /package/{esm2015/tokens/example-content-processor.js → esm2020/tokens/example-content-processor.mjs} +0 -0
  221. /package/{esm2015/tokens/excluded-properties.js → esm2020/tokens/excluded-properties.mjs} +0 -0
  222. /package/{esm2015/tokens/i18n.js → esm2020/tokens/i18n.mjs} +0 -0
  223. /package/{esm2015/tokens/index.js → esm2020/tokens/index.mjs} +0 -0
  224. /package/{esm2015/tokens/logo.js → esm2020/tokens/logo.mjs} +0 -0
  225. /package/{esm2015/tokens/page-loaded.js → esm2020/tokens/page-loaded.mjs} +0 -0
  226. /package/{esm2015/tokens/scroll-behavior.js → esm2020/tokens/scroll-behavior.mjs} +0 -0
  227. /package/{esm2015/tokens/see-also.js → esm2020/tokens/see-also.mjs} +0 -0
  228. /package/{esm2015/tokens/source-code.js → esm2020/tokens/source-code.mjs} +0 -0
  229. /package/{esm2015/tokens/taiga-ui-addon-doc-tokens.js → esm2020/tokens/taiga-ui-addon-doc-tokens.mjs} +0 -0
  230. /package/{esm2015/tokens/title.js → esm2020/tokens/title.mjs} +0 -0
  231. /package/{esm2015/tokens/type-reference-handler.js → esm2020/tokens/type-reference-handler.mjs} +0 -0
  232. /package/{esm2015/tokens/url-state-handler.js → esm2020/tokens/url-state-handler.mjs} +0 -0
  233. /package/{esm2015/types/index.js → esm2020/types/index.mjs} +0 -0
  234. /package/{esm2015/types/pages.js → esm2020/types/pages.mjs} +0 -0
  235. /package/{esm2015/types/taiga-ui-addon-doc-types.js → esm2020/types/taiga-ui-addon-doc-types.mjs} +0 -0
  236. /package/{esm2015/utils/generate-routes.js → esm2020/utils/generate-routes.mjs} +0 -0
  237. /package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  238. /package/{esm2015/utils/inspect.js → esm2020/utils/inspect.mjs} +0 -0
  239. /package/{esm2015/utils/is-page-group.js → esm2020/utils/is-page-group.mjs} +0 -0
  240. /package/{esm2015/utils/parse-code-block.js → esm2020/utils/parse-code-block.mjs} +0 -0
  241. /package/{esm2015/utils/taiga-ui-addon-doc-utils.js → esm2020/utils/taiga-ui-addon-doc-utils.mjs} +0 -0
  242. /package/{esm2015/utils/transliterate-keyboard-layout.js → esm2020/utils/transliterate-keyboard-layout.mjs} +0 -0
@@ -0,0 +1,1880 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Inject, Input, HostBinding, NgModule, ElementRef, forwardRef, TemplateRef, ViewChild, ContentChild, HostListener, EventEmitter, Directive, Output, Pipe, Renderer2, ChangeDetectorRef, Self, ContentChildren, Optional, InjectionToken, ViewEncapsulation } from '@angular/core';
3
+ import { TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR, TUI_DOC_DEMO_TEXTS, TUI_DOC_URL_STATE_HANDLER, TUI_DOC_TYPE_REFERENCE_PARSER, TUI_DOC_TYPE_REFERENCE_HANDLER, TUI_DOC_DOCUMENTATION_TEXTS, TUI_DOC_EXCLUDED_PROPERTIES, TUI_DOC_EXAMPLE_TEXTS, TUI_DOC_CODE_EDITOR, TUI_DOC_EXAMPLE_CONTENT_PROCESSOR, TUI_DOC_CODE_ACTIONS, TUI_DOC_TITLE, TUI_DOC_PAGES, TUI_DOC_SEARCH_TEXT, TUI_DOC_PAGE_LOADED, TUI_DOC_ICONS, TUI_DOC_LOGO, TUI_DOC_MENU_TEXT, TUI_DOC_SEE_ALSO_TEXT, TUI_DOC_MAP_PAGES, TUI_DOC_SOURCE_CODE, TUI_DOC_SOURCE_CODE_TEXT, TUI_DOC_SEE_ALSO, TUI_DOC_DEFAULT_TABS } from '@taiga-ui/addon-doc/tokens';
4
+ import { tuiRawLoad, tuiCoerceValueIsTrue, tuiInspectAny, tuiCoerceValue, tuiRawLoadRecord, tuiTransliterateKeyboardLayout } from '@taiga-ui/addon-doc/utils';
5
+ import * as i10 from 'rxjs';
6
+ import { BehaviorSubject, Subject, timer, merge, combineLatest } from 'rxjs';
7
+ import { switchMap, map, startWith, takeUntil, filter, mergeMap, take, distinctUntilChanged, share } from 'rxjs/operators';
8
+ import * as i1 from '@angular/common';
9
+ import { CommonModule, Location as Location$1, DOCUMENT } from '@angular/common';
10
+ import * as i2 from 'ngx-highlightjs';
11
+ import { HighlightModule } from 'ngx-highlightjs';
12
+ import * as i4 from '@taiga-ui/core';
13
+ import { TuiSvgModule, TuiButtonModule, TuiModeDirective, TuiLinkModule, TuiExpandModule, TuiGroupModule, TuiTooltipModule, TuiModeModule, TuiDataListModule, TuiTextfieldControllerModule, TuiHintModule, TuiAlertService, TuiPrimitiveTextfieldModule, TuiDropdownModule, TuiNotificationModule, TuiLoaderModule, TUI_COMMON_ICONS, TuiHostedDropdownModule, TuiScrollbarModule, tuiCapitalizeFirstLetter, TuiFlagPipe, TuiFlagPipeModule, TuiThemeNightModule, TuiRootModule, TuiDialogModule, TuiAlertModule } from '@taiga-ui/core';
14
+ import * as i4$1 from '@angular/cdk/clipboard';
15
+ import { ClipboardModule, Clipboard } from '@angular/cdk/clipboard';
16
+ import { __decorate } from 'tslib';
17
+ import * as i6 from '@taiga-ui/cdk';
18
+ import { ALWAYS_FALSE_HANDLER, TuiDestroyService, tuiPure, tuiToInteger, tuiClamp, tuiPx, tuiCleanObject, TUI_IS_MOBILE, TuiResizeableDirective, TuiResizerModule, tuiIsNumber, tuiRgbToHex, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_E2E, tuiIsString, EMPTY_QUERY, tuiQueryListChanges, tuiWatch, tuiHexToRgb, TuiFilterPipeModule, tuiCreateToken, tuiProvideOptions, TuiMapperPipeModule, tuiIsPresent, tuiControlValue, tuiUniqBy, TuiSwipeService, TuiActiveZoneModule, TuiLetModule, TuiAutoFocusModule, TuiReplacePipeModule } from '@taiga-ui/cdk';
19
+ import * as i3$1 from '@taiga-ui/kit';
20
+ import { TUI_COPY_TEXTS, TUI_ARROW_OPTIONS, TuiSelectModule, TuiRadioBlockModule, TuiCheckboxLabeledModule, TuiDataListWrapperModule, TuiBadgeModule, TuiToggleModule, TuiInputNumberModule, TuiTabsModule, TuiInputModule, TuiAccordionModule, TuiTagModule } from '@taiga-ui/kit';
21
+ import * as i2$1 from '@angular/forms';
22
+ import { UntypedFormGroup, ReactiveFormsModule, FormsModule, UntypedFormControl } from '@angular/forms';
23
+ import * as i3 from '@angular/router';
24
+ import { UrlSerializer, RouterModule, ActivatedRoute, Router, NavigationEnd, Scroll } from '@angular/router';
25
+ import { trigger, transition, style, animate } from '@angular/animations';
26
+ import { LOCATION } from '@ng-web-apis/common';
27
+ import { TUI_EXAMPLE_PRIMARY_FILE_NAME } from '@taiga-ui/addon-doc/interfaces';
28
+ import * as i1$1 from '@tinkoff/ng-polymorpheus';
29
+ import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
30
+ import * as i3$2 from '@taiga-ui/addon-mobile';
31
+ import { TuiSidebarDirective, TuiSidebarModule } from '@taiga-ui/addon-mobile';
32
+ import * as i9 from '@angular/platform-browser';
33
+ import { Title } from '@angular/platform-browser';
34
+ import * as i5 from '@taiga-ui/addon-doc/directives';
35
+ import { TuiScrollIntoViewLinkModule } from '@taiga-ui/addon-doc/directives';
36
+ import * as i5$1 from '@taiga-ui/i18n';
37
+ import { TuiCountryIsoCode, TuiLanguageSwitcher } from '@taiga-ui/i18n';
38
+ import * as i6$1 from '@taiga-ui/addon-doc/services';
39
+ import { TuiThemeService, TuiThemeNightService } from '@taiga-ui/addon-doc/services';
40
+
41
+ class TuiDocCodeComponent {
42
+ constructor(markdownCodeProcessor) {
43
+ this.markdownCodeProcessor = markdownCodeProcessor;
44
+ this.rawLoader$$ = new BehaviorSubject('');
45
+ this.filename = '';
46
+ this.copy$ = new Subject();
47
+ this.icon$ = this.copy$.pipe(switchMap(() => timer(2000).pipe(map(() => 'tuiIconCopyLarge'), startWith('tuiIconCheckLarge'))));
48
+ this.processor$ = this.rawLoader$$.pipe(switchMap(tuiRawLoad), map((value) => this.markdownCodeProcessor(value)));
49
+ }
50
+ set code(code) {
51
+ this.rawLoader$$.next(code);
52
+ }
53
+ get hasFilename() {
54
+ return !!this.filename;
55
+ }
56
+ }
57
+ TuiDocCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCodeComponent, deps: [{ token: TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR }], target: i0.ɵɵFactoryTarget.Component });
58
+ TuiDocCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocCodeComponent, selector: "tui-doc-code", inputs: { filename: "filename", code: "code" }, host: { properties: { "class._has-filename": "this.hasFilename" } }, ngImport: i0, template: "<p\n *ngIf=\"filename\"\n class=\"t-header\"\n>\n {{ filename }}\n</p>\n<pre\n *ngFor=\"let content of processor$ | async\"\n class=\"t-code\"\n>\n <code [lineNumbers]=\"true\" [highlight]=\"content\"></code>\n <div class=\"t-code-actions\">\n <button\n tuiIconButton\n appearance=\"icon\"\n size=\"xs\"\n class=\"t-copy-button\"\n [icon]=\"(icon$ | async) || 'tuiIconCopyLarge'\"\n [cdkCopyToClipboard]=\"content\"\n (click)=\"copy$.next()\"\n >\n </button>\n <ng-content></ng-content>\n </div>\n</pre>\n", styles: [":host{display:block}.t-header{font:var(--tui-font-text-s);font-weight:700}.t-header+.t-code{border-radius:.25rem}.t-code{position:relative;margin:0;white-space:normal;outline:1px solid var(--tui-base-03)}.t-code ::ng-deep .hljs-ln{width:-webkit-max-content;width:max-content}.t-code+.t-code{margin-top:1rem}.t-code-actions{position:absolute;top:.75rem;right:.75rem;display:flex;justify-content:center;align-items:center;flex-direction:row-reverse}:host-context(tui-root._mobile) .t-code-actions{padding:.3125rem;border-radius:.25rem;border:1px solid var(--tui-base-04)}.t-copy-button::ng-deep+*:not(:empty){margin-right:.375rem}.hljs:not(:empty){font:var(--tui-font-text-m);font-size:.875rem;padding:1.5rem 2rem;font-family:monospace;word-wrap:break-word;white-space:pre-wrap}@media all and (-webkit-min-device-pixel-ratio: 0) and (-webkit-min-device-pixel-ratio: 0),all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm){.hljs:not(:empty)::-webkit-scrollbar,.hljs:not(:empty)::-webkit-scrollbar-thumb{width:1rem;height:1rem;border-radius:6.25rem;background-clip:padding-box;border:.375rem solid transparent}.hljs:not(:empty)::-webkit-scrollbar{background-color:transparent}.hljs:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--tui-clear-hover)}.hljs:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--tui-clear-active)}.hljs:not(:empty)::-webkit-scrollbar-thumb:active{background-color:var(--tui-text-03)}}:host-context(tui-root._mobile) .hljs:not(:empty){padding:1rem}.t-code-actions,.hljs:not(:empty){background:var(--tui-base-01)}@supports (background: color-mix(in srgb,var(--tui-base-01),#222 2%)){.t-code-actions,.hljs:not(:empty){background:color-mix(in srgb,var(--tui-base-01),#222 2%)}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.Highlight, selector: "[highlight]", inputs: ["highlight", "languages", "lineNumbers"], outputs: ["highlighted"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i4$1.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCodeComponent, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: 'tui-doc-code', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p\n *ngIf=\"filename\"\n class=\"t-header\"\n>\n {{ filename }}\n</p>\n<pre\n *ngFor=\"let content of processor$ | async\"\n class=\"t-code\"\n>\n <code [lineNumbers]=\"true\" [highlight]=\"content\"></code>\n <div class=\"t-code-actions\">\n <button\n tuiIconButton\n appearance=\"icon\"\n size=\"xs\"\n class=\"t-copy-button\"\n [icon]=\"(icon$ | async) || 'tuiIconCopyLarge'\"\n [cdkCopyToClipboard]=\"content\"\n (click)=\"copy$.next()\"\n >\n </button>\n <ng-content></ng-content>\n </div>\n</pre>\n", styles: [":host{display:block}.t-header{font:var(--tui-font-text-s);font-weight:700}.t-header+.t-code{border-radius:.25rem}.t-code{position:relative;margin:0;white-space:normal;outline:1px solid var(--tui-base-03)}.t-code ::ng-deep .hljs-ln{width:-webkit-max-content;width:max-content}.t-code+.t-code{margin-top:1rem}.t-code-actions{position:absolute;top:.75rem;right:.75rem;display:flex;justify-content:center;align-items:center;flex-direction:row-reverse}:host-context(tui-root._mobile) .t-code-actions{padding:.3125rem;border-radius:.25rem;border:1px solid var(--tui-base-04)}.t-copy-button::ng-deep+*:not(:empty){margin-right:.375rem}.hljs:not(:empty){font:var(--tui-font-text-m);font-size:.875rem;padding:1.5rem 2rem;font-family:monospace;word-wrap:break-word;white-space:pre-wrap}@media all and (-webkit-min-device-pixel-ratio: 0) and (-webkit-min-device-pixel-ratio: 0),all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm){.hljs:not(:empty)::-webkit-scrollbar,.hljs:not(:empty)::-webkit-scrollbar-thumb{width:1rem;height:1rem;border-radius:6.25rem;background-clip:padding-box;border:.375rem solid transparent}.hljs:not(:empty)::-webkit-scrollbar{background-color:transparent}.hljs:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--tui-clear-hover)}.hljs:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--tui-clear-active)}.hljs:not(:empty)::-webkit-scrollbar-thumb:active{background-color:var(--tui-text-03)}}:host-context(tui-root._mobile) .hljs:not(:empty){padding:1rem}.t-code-actions,.hljs:not(:empty){background:var(--tui-base-01)}@supports (background: color-mix(in srgb,var(--tui-base-01),#222 2%)){.t-code-actions,.hljs:not(:empty){background:color-mix(in srgb,var(--tui-base-01),#222 2%)}}\n"] }]
62
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
63
+ type: Inject,
64
+ args: [TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR]
65
+ }] }]; }, propDecorators: { filename: [{
66
+ type: Input
67
+ }], code: [{
68
+ type: Input
69
+ }], hasFilename: [{
70
+ type: HostBinding,
71
+ args: ['class._has-filename']
72
+ }] } });
73
+
74
+ class TuiDocCodeModule {
75
+ }
76
+ TuiDocCodeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCodeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
77
+ TuiDocCodeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCodeModule, declarations: [TuiDocCodeComponent], imports: [CommonModule,
78
+ TuiSvgModule,
79
+ HighlightModule,
80
+ TuiButtonModule,
81
+ ClipboardModule], exports: [TuiDocCodeComponent] });
82
+ TuiDocCodeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCodeModule, imports: [CommonModule,
83
+ TuiSvgModule,
84
+ HighlightModule,
85
+ TuiButtonModule,
86
+ ClipboardModule] });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCodeModule, decorators: [{
88
+ type: NgModule,
89
+ args: [{
90
+ imports: [
91
+ CommonModule,
92
+ TuiSvgModule,
93
+ HighlightModule,
94
+ TuiButtonModule,
95
+ ClipboardModule,
96
+ ],
97
+ declarations: [TuiDocCodeComponent],
98
+ exports: [TuiDocCodeComponent],
99
+ }]
100
+ }] });
101
+
102
+ const COPIED_TIMEOUT = 1500;
103
+ class TuiDocCopyComponent {
104
+ constructor(texts$) {
105
+ this.texts$ = texts$;
106
+ this.copy$ = new Subject();
107
+ }
108
+ get copied$() {
109
+ return this.copy$.pipe(switchMap(() => timer(COPIED_TIMEOUT).pipe(map(ALWAYS_FALSE_HANDLER), startWith(true))));
110
+ }
111
+ onClick() {
112
+ this.copy$.next();
113
+ }
114
+ }
115
+ TuiDocCopyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCopyComponent, deps: [{ token: TUI_COPY_TEXTS }], target: i0.ɵɵFactoryTarget.Component });
116
+ TuiDocCopyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocCopyComponent, selector: "tui-doc-copy", providers: [TuiDestroyService], ngImport: i0, template: "<button\n *ngIf=\"texts$ | async as texts\"\n appearance=\"\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-copy\"\n [title]=\"texts[0]\"\n (click)=\"onClick()\"\n>\n <span\n class=\"t-content\"\n [class.t-content_moved]=\"copied$ | async\"\n >\n <span\n class=\"t-initial\"\n [attr.data-text]=\"texts[0]\"\n >\n <ng-content></ng-content>\n </span>\n {{ texts[1] }}\n </span>\n</button>\n", styles: [":host{position:relative;display:inline-block;vertical-align:middle;border-radius:var(--tui-radius-m)}.t-copy{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:100%;color:var(--tui-text-01);background:var(--tui-base-01);overflow:hidden}.t-copy:hover{background:var(--tui-base-02)}.t-initial{white-space:nowrap}.t-initial:empty:before{content:attr(data-text)}.t-content{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;flex-direction:column;transform:translateY(1rem);text-align:center;line-height:2rem}.t-content_moved{transform:translateY(-1rem)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
117
+ __decorate([
118
+ tuiPure
119
+ ], TuiDocCopyComponent.prototype, "copied$", null);
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCopyComponent, decorators: [{
121
+ type: Component,
122
+ args: [{ selector: 'tui-doc-copy', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiDestroyService], template: "<button\n *ngIf=\"texts$ | async as texts\"\n appearance=\"\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-copy\"\n [title]=\"texts[0]\"\n (click)=\"onClick()\"\n>\n <span\n class=\"t-content\"\n [class.t-content_moved]=\"copied$ | async\"\n >\n <span\n class=\"t-initial\"\n [attr.data-text]=\"texts[0]\"\n >\n <ng-content></ng-content>\n </span>\n {{ texts[1] }}\n </span>\n</button>\n", styles: [":host{position:relative;display:inline-block;vertical-align:middle;border-radius:var(--tui-radius-m)}.t-copy{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:100%;color:var(--tui-text-01);background:var(--tui-base-01);overflow:hidden}.t-copy:hover{background:var(--tui-base-02)}.t-initial{white-space:nowrap}.t-initial:empty:before{content:attr(data-text)}.t-content{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;flex-direction:column;transform:translateY(1rem);text-align:center;line-height:2rem}.t-content_moved{transform:translateY(-1rem)}\n"] }]
123
+ }], ctorParameters: function () { return [{ type: i10.Observable, decorators: [{
124
+ type: Inject,
125
+ args: [TUI_COPY_TEXTS]
126
+ }] }]; }, propDecorators: { copied$: [] } });
127
+
128
+ class TuiDocCopyModule {
129
+ }
130
+ TuiDocCopyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCopyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
131
+ TuiDocCopyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCopyModule, declarations: [TuiDocCopyComponent], imports: [CommonModule, TuiButtonModule], exports: [TuiDocCopyComponent] });
132
+ TuiDocCopyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCopyModule, imports: [CommonModule, TuiButtonModule] });
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocCopyModule, decorators: [{
134
+ type: NgModule,
135
+ args: [{
136
+ imports: [CommonModule, TuiButtonModule],
137
+ declarations: [TuiDocCopyComponent],
138
+ exports: [TuiDocCopyComponent],
139
+ }]
140
+ }] });
141
+
142
+ const MIN_WIDTH = 160;
143
+ class TuiDocDemoComponent {
144
+ constructor(options, isMobile, el, locationRef, urlSerializer, texts, urlStateHandler) {
145
+ this.options = options;
146
+ this.isMobile = isMobile;
147
+ this.el = el;
148
+ this.locationRef = locationRef;
149
+ this.urlSerializer = urlSerializer;
150
+ this.texts = texts;
151
+ this.urlStateHandler = urlStateHandler;
152
+ this.control = null;
153
+ this.sticky = true;
154
+ this.template = null;
155
+ this.updateOnVariants = ['change', 'blur', 'submit'];
156
+ this.updateOn = this.params.updateOn || this.updateOnVariants[0];
157
+ this.opaque = tuiCoerceValueIsTrue(this.params.sandboxOpaque ?? true);
158
+ this.expanded = tuiCoerceValueIsTrue(this.params.sandboxExpanded ?? false);
159
+ this.mode = this.params.tuiMode || null;
160
+ this.sandboxWidth = tuiToInteger(this.params.sandboxWidth);
161
+ this.change$ = new Subject();
162
+ this.items = ['onLight', 'onDark'];
163
+ }
164
+ onResize() {
165
+ this.updateWidth();
166
+ this.onMouseUp();
167
+ }
168
+ onMouseUp() {
169
+ this.updateUrl({ sandboxWidth: this.sandboxWidth });
170
+ }
171
+ ngOnInit() {
172
+ this.createForm();
173
+ this.updateWidth(this.sandboxWidth + this.delta);
174
+ }
175
+ onModeChange(mode) {
176
+ this.mode = mode;
177
+ this.updateUrl({ sandboxWidth: this.sandboxWidth });
178
+ this.change$.next();
179
+ }
180
+ toggleDetails() {
181
+ this.expanded = !this.expanded;
182
+ this.updateUrl({ sandboxExpanded: this.expanded });
183
+ }
184
+ changeOpaque(opaque) {
185
+ this.opaque = opaque;
186
+ this.updateUrl({ sandboxOpaque: this.opaque });
187
+ }
188
+ updateOnChange(updateOn) {
189
+ this.updateOn = updateOn;
190
+ this.updateUrl({ updateOn });
191
+ this.createForm();
192
+ }
193
+ updateWidth(width = NaN) {
194
+ if (!this.resizer || !this.resizeable || !this.content) {
195
+ return;
196
+ }
197
+ const safe = width || this.resizeable.nativeElement.clientWidth;
198
+ const total = this.el.nativeElement.clientWidth;
199
+ const clamped = Math.round(tuiClamp(safe, MIN_WIDTH, total)) - this.delta;
200
+ const validated = safe < total ? clamped : NaN;
201
+ this.resizer.nativeElement.textContent = String(clamped || '-');
202
+ this.resizeable.nativeElement.style.width = validated ? tuiPx(safe) : '';
203
+ this.sandboxWidth = validated;
204
+ }
205
+ get delta() {
206
+ return this.resizeable && this.content
207
+ ? this.resizeable.nativeElement.clientWidth -
208
+ this.content.nativeElement.clientWidth
209
+ : 0;
210
+ }
211
+ updateUrl(params) {
212
+ const tree = this.getUrlTree();
213
+ const { queryParams } = tree;
214
+ delete queryParams.sandboxWidth;
215
+ delete queryParams.tuiMode;
216
+ tree.queryParams = {
217
+ ...queryParams,
218
+ ...tuiCleanObject({ tuiMode: this.mode, ...params }),
219
+ };
220
+ this.locationRef.go(this.urlStateHandler(tree));
221
+ }
222
+ createForm() {
223
+ const { control, updateOn } = this;
224
+ if (control) {
225
+ this.testForm = new UntypedFormGroup({ testValue: control }, { updateOn });
226
+ }
227
+ }
228
+ getUrlTree() {
229
+ return this.urlSerializer.parse(this.locationRef.path());
230
+ }
231
+ get params() {
232
+ return this.getUrlTree().queryParams;
233
+ }
234
+ }
235
+ TuiDocDemoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDemoComponent, deps: [{ token: TUI_ARROW_OPTIONS }, { token: TUI_IS_MOBILE }, { token: ElementRef }, { token: Location$1 }, { token: UrlSerializer }, { token: TUI_DOC_DEMO_TEXTS }, { token: TUI_DOC_URL_STATE_HANDLER }], target: i0.ɵɵFactoryTarget.Component });
236
+ TuiDocDemoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocDemoComponent, selector: "tui-doc-demo", inputs: { control: "control", sticky: "sticky" }, host: { listeners: { "window:resize": "onResize()", "document:mouseup.silent": "onMouseUp()" }, properties: { "class._sticky": "this.sticky" } }, providers: [
237
+ TuiDestroyService,
238
+ {
239
+ provide: TuiModeDirective,
240
+ useExisting: forwardRef(() => TuiDocDemoComponent),
241
+ },
242
+ ], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "resizeable", first: true, predicate: TuiResizeableDirective, descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }, { propertyName: "resizer", first: true, predicate: ["resizer"], descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"t-bg-toggle\"\n [tuiMode]=\"null\"\n>\n <ng-template #tooltip>\n {{ texts[0] }}\n <a\n routerLink=\"/directives/mode\"\n tuiLink\n tuiMode=\"onDark\"\n >\n <code>tuiMode</code>\n </a>\n </ng-template>\n <ng-container *ngIf=\"isMobile; else desktop\">\n <tui-select\n tuiTextfieldSize=\"s\"\n class=\"t-mode\"\n [ngModel]=\"mode\"\n [tuiHintContent]=\"tooltip\"\n [tuiTextfieldCleaner]=\"true\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n tuiMode\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"items\"\n ></tui-data-list-wrapper>\n </tui-select>\n </ng-container>\n <ng-template #desktop>\n tuiMode:\n <tui-tooltip\n describeId=\"form\"\n [content]=\"tooltip\"\n ></tui-tooltip>\n <div\n tuiGroup\n class=\"t-group\"\n [collapsed]=\"true\"\n >\n <tui-radio-block\n nativeId=\"form\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [item]=\"null\"\n [ngModel]=\"mode\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n null\n </tui-radio-block>\n <tui-radio-block\n item=\"onDark\"\n nativeId=\"form\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [ngModel]=\"mode\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n onDark\n </tui-radio-block>\n <tui-radio-block\n item=\"onLight\"\n nativeId=\"form\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [ngModel]=\"mode\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n onLight\n </tui-radio-block>\n </div>\n </ng-template>\n <tui-checkbox-labeled\n size=\"m\"\n class=\"t-checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n >\n {{ texts[1] }}\n </tui-checkbox-labeled>\n</div>\n<div\n tuiResizeable\n class=\"t-wrapper\"\n [class.t-wrapper_dark]=\"mode === 'onDark'\"\n [class.t-wrapper_gray]=\"mode === 'onLight'\"\n [class.t-wrapper_transparent]=\"!opaque\"\n>\n <div\n id=\"demo-content\"\n class=\"t-content\"\n >\n <div #content>\n <form\n *ngIf=\"testForm\"\n class=\"t-form\"\n [formGroup]=\"testForm\"\n >\n <div class=\"t-input-wrapper\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>\n <button\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [iconRight]=\"icon\"\n (click)=\"toggleDetails()\"\n >\n {{ texts[2] }}\n </button>\n <ng-template #icon>\n <tui-svg\n class=\"t-icon\"\n [class.t-icon_rotated]=\"expanded\"\n [src]=\"options.iconSmall\"\n ></tui-svg>\n </ng-template>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"expanded\"\n >\n <ng-template tuiExpandContent>\n <pre class=\"t-value\">Form data: {{ testForm.value | json }}</pre>\n <div\n tuiGroup\n class=\"t-form-controls\"\n >\n <tui-select\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n >\n updateOn\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"updateOnVariants\"\n ></tui-data-list-wrapper>\n </tui-select>\n <button\n automation-id=\"tui-demo-button__reset-state\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n class=\"tui-group__auto-width-item\"\n >\n Reset\n </button>\n <button\n automation-id=\"tui-demo-button__submit-state\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n class=\"tui-group__auto-width-item\"\n >\n Submit\n </button>\n </div>\n </ng-template>\n </tui-expand>\n </form>\n <ng-content></ng-content>\n </div>\n </div>\n <div\n #resizer\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n ></div>\n</div>\n", styles: [":host{position:relative;display:block;min-width:100%;margin:1.5rem 0}.t-bg-toggle{position:absolute;bottom:calc(100% + .75rem);display:flex;align-items:center;justify-content:flex-end;pointer-events:none;width:100%}.t-bg-toggle>*{pointer-events:auto}.t-wrapper{box-shadow:var(--tui-shadow-dropdown);display:flex;border:1px solid var(--tui-base-03);border-radius:var(--tui-radius-m);max-width:100%;min-height:6rem;width:100%;min-width:10rem;background-color:var(--tui-base-01);overflow:hidden}.t-wrapper.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-base-02) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-base-02) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-base-02) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-base-02) 75%);background-size:1.25rem 1.25rem;background-position:0 0,0 .625rem,.625rem -.625rem,-.625rem 0}.t-wrapper.t-wrapper_dark{background-color:#454e58;color:var(--tui-base-01)}.t-wrapper.t-wrapper_gray{background-color:#e5e7ea}.t-wrapper.t-wrapper_dark.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-focus) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-focus) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-focus) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-focus) 75%)}.t-wrapper.t-wrapper_gray.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-base-05) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-base-05) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-base-05) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-base-05) 75%)}:host-context(tui-root._mobile) .t-wrapper{min-height:auto}.t-content{flex:1 1 0;min-width:0;padding:1.5rem;box-sizing:border-box;overflow:hidden}:host-context(tui-root._mobile) .t-content{padding:1rem}.t-form{display:flex;flex-wrap:wrap;align-items:flex-start}.t-input-wrapper{width:100%;margin-bottom:.5rem}.t-expand{width:100%}.t-icon{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}.t-icon_rotated{transform:rotate(180deg)}.t-value{flex:1;background:var(--tui-clear-inverse);padding:.75rem;border-radius:.25rem}.t-mode{width:12.5rem}.t-select{max-width:15rem}.t-resizer{box-shadow:var(--tui-shadow-dropdown);position:relative;width:3.5rem;min-height:inherit;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-left:1px solid var(--tui-base-03);outline:none;background:var(--tui-base-01);color:var(--tui-text-01)}.t-resizer:before,.t-resizer:after{content:\"\";position:absolute;top:.75rem;left:50%;bottom:calc(50% + 1rem);width:1px;background:var(--tui-base-04);box-shadow:-.25rem 0 var(--tui-base-04);transform:translateZ(0)}.t-resizer:after{bottom:.75rem;top:calc(50% + 1rem)}:host-context(tui-root._mobile) .t-resizer{display:none}.t-resizer-text{font:var(--tui-font-text-s);position:relative;z-index:1;padding:.75rem;background:var(--tui-base-01)}.wrapper_light .t-resizer-text{background:#3e464e}.t-group,.t-checkbox{margin-left:.75rem}.t-button,.t-form-controls{margin-top:.75rem}@supports ((position: -webkit-sticky) or (position: sticky)){@media screen and (min-height: 37.5rem){:host._sticky{position:-webkit-sticky;position:sticky;top:4.625rem;z-index:2}}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i3$1.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i3$1.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i4.TuiExpandComponent, selector: "tui-expand", inputs: ["async", "expanded"] }, { kind: "directive", type: i4.TuiExpandContentDirective, selector: "[tuiExpandContent]" }, { kind: "directive", type: i4.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { kind: "component", type: i4.TuiTooltipComponent, selector: "tui-tooltip", inputs: ["content", "direction", "appearance", "showDelay", "hideDelay", "describeId", "context"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i3$1.TuiRadioBlockComponent, selector: "tui-radio-block", inputs: ["item", "identityMatcher", "contentAlign", "size", "hideRadio", "pseudoDisabled"] }, { kind: "component", type: i3$1.TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: ["size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i3$1.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "directive", type: i4.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "directive", type: i4.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { kind: "directive", type: i6.TuiResizeableDirective, selector: "[tuiResizeable]" }, { kind: "directive", type: i6.TuiResizerDirective, selector: "[tuiResizer]", inputs: ["tuiResizer"], outputs: ["tuiSizeChange"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
243
+ __decorate([
244
+ tuiPure
245
+ ], TuiDocDemoComponent.prototype, "updateUrl", null);
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDemoComponent, decorators: [{
247
+ type: Component,
248
+ args: [{ selector: 'tui-doc-demo', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
249
+ TuiDestroyService,
250
+ {
251
+ provide: TuiModeDirective,
252
+ useExisting: forwardRef(() => TuiDocDemoComponent),
253
+ },
254
+ ], template: "<div\n class=\"t-bg-toggle\"\n [tuiMode]=\"null\"\n>\n <ng-template #tooltip>\n {{ texts[0] }}\n <a\n routerLink=\"/directives/mode\"\n tuiLink\n tuiMode=\"onDark\"\n >\n <code>tuiMode</code>\n </a>\n </ng-template>\n <ng-container *ngIf=\"isMobile; else desktop\">\n <tui-select\n tuiTextfieldSize=\"s\"\n class=\"t-mode\"\n [ngModel]=\"mode\"\n [tuiHintContent]=\"tooltip\"\n [tuiTextfieldCleaner]=\"true\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n tuiMode\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"items\"\n ></tui-data-list-wrapper>\n </tui-select>\n </ng-container>\n <ng-template #desktop>\n tuiMode:\n <tui-tooltip\n describeId=\"form\"\n [content]=\"tooltip\"\n ></tui-tooltip>\n <div\n tuiGroup\n class=\"t-group\"\n [collapsed]=\"true\"\n >\n <tui-radio-block\n nativeId=\"form\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [item]=\"null\"\n [ngModel]=\"mode\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n null\n </tui-radio-block>\n <tui-radio-block\n item=\"onDark\"\n nativeId=\"form\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [ngModel]=\"mode\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n onDark\n </tui-radio-block>\n <tui-radio-block\n item=\"onLight\"\n nativeId=\"form\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [ngModel]=\"mode\"\n (ngModelChange)=\"onModeChange($event)\"\n >\n onLight\n </tui-radio-block>\n </div>\n </ng-template>\n <tui-checkbox-labeled\n size=\"m\"\n class=\"t-checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n >\n {{ texts[1] }}\n </tui-checkbox-labeled>\n</div>\n<div\n tuiResizeable\n class=\"t-wrapper\"\n [class.t-wrapper_dark]=\"mode === 'onDark'\"\n [class.t-wrapper_gray]=\"mode === 'onLight'\"\n [class.t-wrapper_transparent]=\"!opaque\"\n>\n <div\n id=\"demo-content\"\n class=\"t-content\"\n >\n <div #content>\n <form\n *ngIf=\"testForm\"\n class=\"t-form\"\n [formGroup]=\"testForm\"\n >\n <div class=\"t-input-wrapper\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>\n <button\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [iconRight]=\"icon\"\n (click)=\"toggleDetails()\"\n >\n {{ texts[2] }}\n </button>\n <ng-template #icon>\n <tui-svg\n class=\"t-icon\"\n [class.t-icon_rotated]=\"expanded\"\n [src]=\"options.iconSmall\"\n ></tui-svg>\n </ng-template>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"expanded\"\n >\n <ng-template tuiExpandContent>\n <pre class=\"t-value\">Form data: {{ testForm.value | json }}</pre>\n <div\n tuiGroup\n class=\"t-form-controls\"\n >\n <tui-select\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n >\n updateOn\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"updateOnVariants\"\n ></tui-data-list-wrapper>\n </tui-select>\n <button\n automation-id=\"tui-demo-button__reset-state\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n class=\"tui-group__auto-width-item\"\n >\n Reset\n </button>\n <button\n automation-id=\"tui-demo-button__submit-state\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n class=\"tui-group__auto-width-item\"\n >\n Submit\n </button>\n </div>\n </ng-template>\n </tui-expand>\n </form>\n <ng-content></ng-content>\n </div>\n </div>\n <div\n #resizer\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n ></div>\n</div>\n", styles: [":host{position:relative;display:block;min-width:100%;margin:1.5rem 0}.t-bg-toggle{position:absolute;bottom:calc(100% + .75rem);display:flex;align-items:center;justify-content:flex-end;pointer-events:none;width:100%}.t-bg-toggle>*{pointer-events:auto}.t-wrapper{box-shadow:var(--tui-shadow-dropdown);display:flex;border:1px solid var(--tui-base-03);border-radius:var(--tui-radius-m);max-width:100%;min-height:6rem;width:100%;min-width:10rem;background-color:var(--tui-base-01);overflow:hidden}.t-wrapper.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-base-02) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-base-02) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-base-02) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-base-02) 75%);background-size:1.25rem 1.25rem;background-position:0 0,0 .625rem,.625rem -.625rem,-.625rem 0}.t-wrapper.t-wrapper_dark{background-color:#454e58;color:var(--tui-base-01)}.t-wrapper.t-wrapper_gray{background-color:#e5e7ea}.t-wrapper.t-wrapper_dark.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-focus) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-focus) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-focus) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-focus) 75%)}.t-wrapper.t-wrapper_gray.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-base-05) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-base-05) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-base-05) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-base-05) 75%)}:host-context(tui-root._mobile) .t-wrapper{min-height:auto}.t-content{flex:1 1 0;min-width:0;padding:1.5rem;box-sizing:border-box;overflow:hidden}:host-context(tui-root._mobile) .t-content{padding:1rem}.t-form{display:flex;flex-wrap:wrap;align-items:flex-start}.t-input-wrapper{width:100%;margin-bottom:.5rem}.t-expand{width:100%}.t-icon{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}.t-icon_rotated{transform:rotate(180deg)}.t-value{flex:1;background:var(--tui-clear-inverse);padding:.75rem;border-radius:.25rem}.t-mode{width:12.5rem}.t-select{max-width:15rem}.t-resizer{box-shadow:var(--tui-shadow-dropdown);position:relative;width:3.5rem;min-height:inherit;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-left:1px solid var(--tui-base-03);outline:none;background:var(--tui-base-01);color:var(--tui-text-01)}.t-resizer:before,.t-resizer:after{content:\"\";position:absolute;top:.75rem;left:50%;bottom:calc(50% + 1rem);width:1px;background:var(--tui-base-04);box-shadow:-.25rem 0 var(--tui-base-04);transform:translateZ(0)}.t-resizer:after{bottom:.75rem;top:calc(50% + 1rem)}:host-context(tui-root._mobile) .t-resizer{display:none}.t-resizer-text{font:var(--tui-font-text-s);position:relative;z-index:1;padding:.75rem;background:var(--tui-base-01)}.wrapper_light .t-resizer-text{background:#3e464e}.t-group,.t-checkbox{margin-left:.75rem}.t-button,.t-form-controls{margin-top:.75rem}@supports ((position: -webkit-sticky) or (position: sticky)){@media screen and (min-height: 37.5rem){:host._sticky{position:-webkit-sticky;position:sticky;top:4.625rem;z-index:2}}}\n"] }]
255
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
256
+ type: Inject,
257
+ args: [TUI_ARROW_OPTIONS]
258
+ }] }, { type: undefined, decorators: [{
259
+ type: Inject,
260
+ args: [TUI_IS_MOBILE]
261
+ }] }, { type: i0.ElementRef, decorators: [{
262
+ type: Inject,
263
+ args: [ElementRef]
264
+ }] }, { type: i1.Location, decorators: [{
265
+ type: Inject,
266
+ args: [Location$1]
267
+ }] }, { type: i3.UrlSerializer, decorators: [{
268
+ type: Inject,
269
+ args: [UrlSerializer]
270
+ }] }, { type: undefined, decorators: [{
271
+ type: Inject,
272
+ args: [TUI_DOC_DEMO_TEXTS]
273
+ }] }, { type: undefined, decorators: [{
274
+ type: Inject,
275
+ args: [TUI_DOC_URL_STATE_HANDLER]
276
+ }] }]; }, propDecorators: { resizeable: [{
277
+ type: ViewChild,
278
+ args: [TuiResizeableDirective, { static: true }]
279
+ }], content: [{
280
+ type: ViewChild,
281
+ args: ['content', { static: true }]
282
+ }], resizer: [{
283
+ type: ViewChild,
284
+ args: ['resizer', { static: true }]
285
+ }], control: [{
286
+ type: Input
287
+ }], sticky: [{
288
+ type: Input
289
+ }, {
290
+ type: HostBinding,
291
+ args: ['class._sticky']
292
+ }], template: [{
293
+ type: ContentChild,
294
+ args: [TemplateRef]
295
+ }], onResize: [{
296
+ type: HostListener,
297
+ args: ['window:resize']
298
+ }], onMouseUp: [{
299
+ type: HostListener,
300
+ args: ['document:mouseup.silent']
301
+ }], updateUrl: [] } });
302
+
303
+ class TuiDocDemoModule {
304
+ }
305
+ TuiDocDemoModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDemoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
306
+ TuiDocDemoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDemoModule, declarations: [TuiDocDemoComponent], imports: [CommonModule,
307
+ ReactiveFormsModule,
308
+ FormsModule,
309
+ RouterModule,
310
+ TuiLinkModule,
311
+ TuiButtonModule,
312
+ TuiSelectModule,
313
+ TuiExpandModule,
314
+ TuiGroupModule,
315
+ TuiTooltipModule,
316
+ TuiModeModule,
317
+ TuiRadioBlockModule,
318
+ TuiCheckboxLabeledModule,
319
+ TuiSvgModule,
320
+ TuiDataListWrapperModule,
321
+ TuiDataListModule,
322
+ TuiTextfieldControllerModule,
323
+ TuiHintModule,
324
+ TuiResizerModule], exports: [TuiDocDemoComponent] });
325
+ TuiDocDemoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDemoModule, imports: [CommonModule,
326
+ ReactiveFormsModule,
327
+ FormsModule,
328
+ RouterModule,
329
+ TuiLinkModule,
330
+ TuiButtonModule,
331
+ TuiSelectModule,
332
+ TuiExpandModule,
333
+ TuiGroupModule,
334
+ TuiTooltipModule,
335
+ TuiModeModule,
336
+ TuiRadioBlockModule,
337
+ TuiCheckboxLabeledModule,
338
+ TuiSvgModule,
339
+ TuiDataListWrapperModule,
340
+ TuiDataListModule,
341
+ TuiTextfieldControllerModule,
342
+ TuiHintModule,
343
+ TuiResizerModule] });
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDemoModule, decorators: [{
345
+ type: NgModule,
346
+ args: [{
347
+ imports: [
348
+ CommonModule,
349
+ ReactiveFormsModule,
350
+ FormsModule,
351
+ RouterModule,
352
+ TuiLinkModule,
353
+ TuiButtonModule,
354
+ TuiSelectModule,
355
+ TuiExpandModule,
356
+ TuiGroupModule,
357
+ TuiTooltipModule,
358
+ TuiModeModule,
359
+ TuiRadioBlockModule,
360
+ TuiCheckboxLabeledModule,
361
+ TuiSvgModule,
362
+ TuiDataListWrapperModule,
363
+ TuiDataListModule,
364
+ TuiTextfieldControllerModule,
365
+ TuiHintModule,
366
+ TuiResizerModule,
367
+ ],
368
+ declarations: [TuiDocDemoComponent],
369
+ exports: [TuiDocDemoComponent],
370
+ }]
371
+ }] });
372
+
373
+ class TuiDocTabComponent {
374
+ constructor() {
375
+ this.src = '';
376
+ }
377
+ }
378
+ TuiDocTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
379
+ TuiDocTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocTabComponent, selector: "tui-doc-tab", inputs: { src: "src" }, ngImport: i0, template: "<div class=\"t-tab\">\n <tui-svg\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n <ng-content></ng-content>\n</div>\n", styles: [".t-tab{display:flex;align-items:center;justify-content:center;padding:0 .5rem;gap:.5rem;color:var(--tui-text-01)}.t-tab .t-icon{width:1rem;height:1rem;color:var(--tui-text-01)}\n"], dependencies: [{ kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTabComponent, decorators: [{
381
+ type: Component,
382
+ args: [{ selector: 'tui-doc-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"t-tab\">\n <tui-svg\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n <ng-content></ng-content>\n</div>\n", styles: [".t-tab{display:flex;align-items:center;justify-content:center;padding:0 .5rem;gap:.5rem;color:var(--tui-text-01)}.t-tab .t-icon{width:1rem;height:1rem;color:var(--tui-text-01)}\n"] }]
383
+ }], propDecorators: { src: [{
384
+ type: Input
385
+ }] } });
386
+
387
+ class TuiDocTabModule {
388
+ }
389
+ TuiDocTabModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
390
+ TuiDocTabModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTabModule, declarations: [TuiDocTabComponent], imports: [TuiSvgModule], exports: [TuiDocTabComponent] });
391
+ TuiDocTabModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTabModule, imports: [TuiSvgModule] });
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTabModule, decorators: [{
393
+ type: NgModule,
394
+ args: [{
395
+ imports: [TuiSvgModule],
396
+ declarations: [TuiDocTabComponent],
397
+ exports: [TuiDocTabComponent],
398
+ }]
399
+ }] });
400
+
401
+ const SERIALIZED_SUFFIX = '$';
402
+ // @bad TODO: refactor output and value sync
403
+ class TuiDocDocumentationPropertyConnectorDirective {
404
+ constructor(template, locationRef, activatedRoute, urlSerializer, urlStateHandler, alerts) {
405
+ this.template = template;
406
+ this.locationRef = locationRef;
407
+ this.activatedRoute = activatedRoute;
408
+ this.urlSerializer = urlSerializer;
409
+ this.urlStateHandler = urlStateHandler;
410
+ this.alerts = alerts;
411
+ this.documentationPropertyName = '';
412
+ this.documentationPropertyMode = null;
413
+ this.documentationPropertyType = '';
414
+ this.documentationPropertyDeprecated = false;
415
+ this.documentationPropertyValues = null;
416
+ this.documentationPropertyValueChange = new EventEmitter();
417
+ this.changed$ = new Subject();
418
+ this.emits$ = new BehaviorSubject(1);
419
+ }
420
+ ngOnInit() {
421
+ this.parseParams(this.activatedRoute.snapshot.queryParams);
422
+ }
423
+ get attrName() {
424
+ switch (this.documentationPropertyMode) {
425
+ case 'input':
426
+ return `[${this.documentationPropertyName}]`;
427
+ case 'output':
428
+ return `(${this.documentationPropertyName})`;
429
+ case 'input-output':
430
+ return `[(${this.documentationPropertyName})]`;
431
+ default:
432
+ return this.documentationPropertyName;
433
+ }
434
+ }
435
+ get hasItems() {
436
+ return !!this.documentationPropertyValues;
437
+ }
438
+ get shouldShowValues() {
439
+ return this.documentationPropertyMode !== 'output';
440
+ }
441
+ ngOnChanges() {
442
+ this.changed$.next();
443
+ }
444
+ onValueChange(value) {
445
+ this.documentationPropertyValue = value;
446
+ this.documentationPropertyValueChange.emit(value);
447
+ this.setQueryParam(value);
448
+ }
449
+ emitEvent(event) {
450
+ // For more convenient debugging
451
+ console.info(this.attrName, event);
452
+ this.emits$.next(this.emits$.value + 1);
453
+ let content;
454
+ if (event !== undefined) {
455
+ content = tuiInspectAny(event, 2);
456
+ }
457
+ this.alerts.open(content, { label: this.attrName }).subscribe();
458
+ }
459
+ parseParams(params) {
460
+ const propertyValue = params[this.documentationPropertyName];
461
+ const propertyValueWithSuffix = params[`${this.documentationPropertyName}${SERIALIZED_SUFFIX}`];
462
+ if (!propertyValue && !propertyValueWithSuffix) {
463
+ return;
464
+ }
465
+ let value = !!propertyValueWithSuffix && this.documentationPropertyValues
466
+ ? this.documentationPropertyValues[propertyValueWithSuffix]
467
+ : tuiCoerceValue(propertyValue);
468
+ if (this.documentationPropertyType === 'string' && tuiIsNumber(value)) {
469
+ value = value.toString();
470
+ }
471
+ this.onValueChange(value);
472
+ }
473
+ setQueryParam(value) {
474
+ const tree = this.urlSerializer.parse(this.locationRef.path());
475
+ const isValueAvailableByKey = value instanceof Object;
476
+ const computedValue = isValueAvailableByKey && this.documentationPropertyValues
477
+ ? this.documentationPropertyValues.indexOf(value)
478
+ : value;
479
+ const suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : '';
480
+ const propName = this.documentationPropertyName + suffix;
481
+ tree.queryParams = {
482
+ ...tree.queryParams,
483
+ [propName]: computedValue,
484
+ };
485
+ this.locationRef.go(this.urlStateHandler(tree));
486
+ }
487
+ }
488
+ TuiDocDocumentationPropertyConnectorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationPropertyConnectorDirective, deps: [{ token: TemplateRef }, { token: Location$1 }, { token: ActivatedRoute }, { token: UrlSerializer }, { token: TUI_DOC_URL_STATE_HANDLER }, { token: TuiAlertService }], target: i0.ɵɵFactoryTarget.Directive });
489
+ TuiDocDocumentationPropertyConnectorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocDocumentationPropertyConnectorDirective, selector: "ng-template[documentationPropertyName]", inputs: { documentationPropertyName: "documentationPropertyName", documentationPropertyMode: "documentationPropertyMode", documentationPropertyType: "documentationPropertyType", documentationPropertyValue: "documentationPropertyValue", documentationPropertyDeprecated: "documentationPropertyDeprecated", documentationPropertyValues: "documentationPropertyValues" }, outputs: { documentationPropertyValueChange: "documentationPropertyValueChange" }, exportAs: ["documentationProperty"], usesOnChanges: true, ngImport: i0 });
490
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationPropertyConnectorDirective, decorators: [{
491
+ type: Directive,
492
+ args: [{
493
+ selector: 'ng-template[documentationPropertyName]',
494
+ exportAs: 'documentationProperty',
495
+ }]
496
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
497
+ type: Inject,
498
+ args: [TemplateRef]
499
+ }] }, { type: i1.Location, decorators: [{
500
+ type: Inject,
501
+ args: [Location$1]
502
+ }] }, { type: i3.ActivatedRoute, decorators: [{
503
+ type: Inject,
504
+ args: [ActivatedRoute]
505
+ }] }, { type: i3.UrlSerializer, decorators: [{
506
+ type: Inject,
507
+ args: [UrlSerializer]
508
+ }] }, { type: undefined, decorators: [{
509
+ type: Inject,
510
+ args: [TUI_DOC_URL_STATE_HANDLER]
511
+ }] }, { type: i4.TuiAlertService, decorators: [{
512
+ type: Inject,
513
+ args: [TuiAlertService]
514
+ }] }]; }, propDecorators: { documentationPropertyName: [{
515
+ type: Input
516
+ }], documentationPropertyMode: [{
517
+ type: Input
518
+ }], documentationPropertyType: [{
519
+ type: Input
520
+ }], documentationPropertyValue: [{
521
+ type: Input
522
+ }], documentationPropertyDeprecated: [{
523
+ type: Input
524
+ }], documentationPropertyValues: [{
525
+ type: Input
526
+ }], documentationPropertyValueChange: [{
527
+ type: Output
528
+ }] } });
529
+
530
+ class TuiGetColorPipe {
531
+ transform(color) {
532
+ if (color.length === 4) {
533
+ return color
534
+ .split(``)
535
+ .reduce((result, current) => [...result, current, current], [])
536
+ .join(``)
537
+ .replace(`#`, ``);
538
+ }
539
+ if (color.startsWith(`#`)) {
540
+ return color;
541
+ }
542
+ if (color === `transparent`) {
543
+ return `#000000`;
544
+ }
545
+ const parsed = color
546
+ .replace(`rgb(`, ``)
547
+ .replace(`rgba(`, ``)
548
+ .replace(`)`, ``)
549
+ .replace(` `, ``)
550
+ .split(`,`)
551
+ .map(v => Number.parseInt(v, 10));
552
+ return tuiRgbToHex(...parsed);
553
+ }
554
+ }
555
+ TuiGetColorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiGetColorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
556
+ TuiGetColorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiGetColorPipe, name: "tuiGetColorPipe" });
557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiGetColorPipe, decorators: [{
558
+ type: Pipe,
559
+ args: [{ name: `tuiGetColorPipe` }]
560
+ }] });
561
+
562
+ class TuiGetOpacityPipe {
563
+ transform(color) {
564
+ if (color.startsWith(`#`) || color.startsWith(`rgb(`)) {
565
+ return 100;
566
+ }
567
+ if (color === `transparent`) {
568
+ return 0;
569
+ }
570
+ const lastComma = color.lastIndexOf(`,`);
571
+ const parsed = color
572
+ .slice(lastComma)
573
+ .replace(`)`, ``)
574
+ .replace(` `, ``)
575
+ .replace(`,`, ``);
576
+ return Math.round(Number.parseFloat(parsed) * 100);
577
+ }
578
+ }
579
+ TuiGetOpacityPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiGetOpacityPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
580
+ TuiGetOpacityPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiGetOpacityPipe, name: "tuiGetOpacity" });
581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiGetOpacityPipe, decorators: [{
582
+ type: Pipe,
583
+ args: [{ name: `tuiGetOpacity` }]
584
+ }] });
585
+
586
+ class TuiInputOpacityDirective {
587
+ set tuiInputOpacity(opacity) {
588
+ const { nativeFocusableElement } = this.focusable;
589
+ if (nativeFocusableElement) {
590
+ this.renderer.setStyle(nativeFocusableElement, 'opacity', opacity / 100);
591
+ }
592
+ }
593
+ constructor(renderer, focusable) {
594
+ this.renderer = renderer;
595
+ this.focusable = focusable;
596
+ }
597
+ }
598
+ TuiInputOpacityDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInputOpacityDirective, deps: [{ token: Renderer2 }, { token: TUI_FOCUSABLE_ITEM_ACCESSOR }], target: i0.ɵɵFactoryTarget.Directive });
599
+ TuiInputOpacityDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TuiInputOpacityDirective, selector: "[tuiInputOpacity]", inputs: { tuiInputOpacity: "tuiInputOpacity" }, ngImport: i0 });
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInputOpacityDirective, decorators: [{
601
+ type: Directive,
602
+ args: [{
603
+ selector: '[tuiInputOpacity]',
604
+ }]
605
+ }], ctorParameters: function () { return [{ type: i0.Renderer2, decorators: [{
606
+ type: Inject,
607
+ args: [Renderer2]
608
+ }] }, { type: undefined, decorators: [{
609
+ type: Inject,
610
+ args: [TUI_FOCUSABLE_ITEM_ACCESSOR]
611
+ }] }]; }, propDecorators: { tuiInputOpacity: [{
612
+ type: Input
613
+ }] } });
614
+
615
+ class TuiInspectPipe {
616
+ constructor(isE2E) {
617
+ this.isE2E = isE2E;
618
+ }
619
+ transform(value, depth = 2) {
620
+ if (this.isE2E && typeof value === `function`) {
621
+ /**
622
+ * @description:
623
+ * When developing in production mode the webpack bundler minify
624
+ * functions in different ways, then due to which the string content
625
+ * of the function may differ from build to build, which can be to
626
+ * various problems when screenshot testing on e2e.
627
+ */
628
+ return `λ(x) => y`;
629
+ }
630
+ return tuiInspectAny(value, depth);
631
+ }
632
+ }
633
+ TuiInspectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInspectPipe, deps: [{ token: TUI_IS_E2E }], target: i0.ɵɵFactoryTarget.Pipe });
634
+ TuiInspectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiInspectPipe, name: "tuiInspectAny" });
635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInspectPipe, decorators: [{
636
+ type: Pipe,
637
+ args: [{ name: `tuiInspectAny` }]
638
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
639
+ type: Inject,
640
+ args: [TUI_IS_E2E]
641
+ }] }]; } });
642
+
643
+ class TuiIsOptionalPipe {
644
+ transform(name) {
645
+ return name.includes(`?`);
646
+ }
647
+ }
648
+ TuiIsOptionalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiIsOptionalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
649
+ TuiIsOptionalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiIsOptionalPipe, name: "tuiIsOptionalPipe" });
650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiIsOptionalPipe, decorators: [{
651
+ type: Pipe,
652
+ args: [{ name: `tuiIsOptionalPipe` }]
653
+ }] });
654
+
655
+ class TuiShowCleanerPipe {
656
+ transform(type) {
657
+ return type.includes(`null`);
658
+ }
659
+ }
660
+ TuiShowCleanerPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiShowCleanerPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
661
+ TuiShowCleanerPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiShowCleanerPipe, name: "tuiShowCleanerPipe" });
662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiShowCleanerPipe, decorators: [{
663
+ type: Pipe,
664
+ args: [{ name: `tuiShowCleanerPipe` }]
665
+ }] });
666
+
667
+ class TuiStripOptionalPipe {
668
+ transform(name) {
669
+ return name.replace(`?`, ``);
670
+ }
671
+ }
672
+ TuiStripOptionalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiStripOptionalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
673
+ TuiStripOptionalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiStripOptionalPipe, name: "tuiStripOptionalPipe" });
674
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiStripOptionalPipe, decorators: [{
675
+ type: Pipe,
676
+ args: [{ name: `tuiStripOptionalPipe` }]
677
+ }] });
678
+
679
+ class TuiDocTypeReferencePipe {
680
+ constructor(parser, linkHandler) {
681
+ this.parser = parser;
682
+ this.linkHandler = linkHandler;
683
+ }
684
+ transform(original) {
685
+ return this.parser(original)
686
+ .map(({ type, extracted }) => ({
687
+ type,
688
+ extracted,
689
+ reference: this.linkHandler?.(extracted) ?? null,
690
+ }))
691
+ .sort((a, b) => b.reference?.localeCompare(a.reference ?? ``) ?? -1);
692
+ }
693
+ }
694
+ TuiDocTypeReferencePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTypeReferencePipe, deps: [{ token: TUI_DOC_TYPE_REFERENCE_PARSER }, { token: TUI_DOC_TYPE_REFERENCE_HANDLER }], target: i0.ɵɵFactoryTarget.Pipe });
695
+ TuiDocTypeReferencePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTypeReferencePipe, name: "tuiDocTypeReference" });
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocTypeReferencePipe, decorators: [{
697
+ type: Pipe,
698
+ args: [{ name: `tuiDocTypeReference` }]
699
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
700
+ type: Inject,
701
+ args: [TUI_DOC_TYPE_REFERENCE_PARSER]
702
+ }] }, { type: undefined, decorators: [{
703
+ type: Inject,
704
+ args: [TUI_DOC_TYPE_REFERENCE_HANDLER]
705
+ }] }]; } });
706
+
707
+ class TuiIsPrimitivePolymorpheusContentPipe {
708
+ transform(value) {
709
+ return tuiIsString(value) || tuiIsNumber(value);
710
+ }
711
+ }
712
+ TuiIsPrimitivePolymorpheusContentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiIsPrimitivePolymorpheusContentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
713
+ TuiIsPrimitivePolymorpheusContentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiIsPrimitivePolymorpheusContentPipe, name: "tuiIsPrimitivePolymorpheusContentPipe" });
714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiIsPrimitivePolymorpheusContentPipe, decorators: [{
715
+ type: Pipe,
716
+ args: [{ name: `tuiIsPrimitivePolymorpheusContentPipe` }]
717
+ }] });
718
+
719
+ // @bad TODO subscribe propertiesConnectors changes
720
+ // @bad TODO refactor to make more flexible
721
+ class TuiDocDocumentationComponent {
722
+ constructor(cdr, texts, excludedProperties, destroy$, getColor, getOpacity) {
723
+ this.cdr = cdr;
724
+ this.texts = texts;
725
+ this.excludedProperties = excludedProperties;
726
+ this.destroy$ = destroy$;
727
+ this.getColor = getColor;
728
+ this.getOpacity = getOpacity;
729
+ this.heading = '';
730
+ this.showValues = true;
731
+ this.isAPI = false;
732
+ this.propertiesConnectors = EMPTY_QUERY;
733
+ this.activeItemIndex = 0;
734
+ this.matcher = (item, exclusions) => !exclusions.has(item.documentationPropertyName);
735
+ }
736
+ ngAfterContentInit() {
737
+ tuiQueryListChanges(this.propertiesConnectors)
738
+ .pipe(switchMap(items => merge(...items.map(({ changed$ }) => changed$))), tuiWatch(this.cdr), takeUntil(this.destroy$))
739
+ .subscribe();
740
+ }
741
+ get type() {
742
+ return this.isAPI ? this.texts[0] : this.texts[1];
743
+ }
744
+ onColorChange(connector, color) {
745
+ const opacity = this.getOpacity.transform(connector.documentationPropertyValue || '');
746
+ if (opacity === 100) {
747
+ connector.onValueChange(color);
748
+ return;
749
+ }
750
+ const rgb = tuiHexToRgb(color).join(', ');
751
+ const result = `rgba(${rgb}, ${opacity / 100})`;
752
+ connector.onValueChange(result);
753
+ }
754
+ onOpacityChange(connector, opacity) {
755
+ const hex = this.getColor.transform(connector.documentationPropertyValue || '');
756
+ const rgb = tuiHexToRgb(hex);
757
+ const result = `rgba(${rgb}, ${(opacity || 0) / 100})`;
758
+ connector.onValueChange(result);
759
+ }
760
+ }
761
+ TuiDocDocumentationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationComponent, deps: [{ token: ChangeDetectorRef }, { token: TUI_DOC_DOCUMENTATION_TEXTS }, { token: TUI_DOC_EXCLUDED_PROPERTIES }, { token: TuiDestroyService, self: true }, { token: TuiGetColorPipe }, { token: TuiGetOpacityPipe }], target: i0.ɵɵFactoryTarget.Component });
762
+ TuiDocDocumentationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocDocumentationComponent, selector: "tui-doc-documentation", inputs: { heading: "heading", showValues: "showValues", isAPI: "isAPI" }, providers: [TuiGetColorPipe, TuiGetOpacityPipe, TuiDestroyService], queries: [{ propertyName: "propertiesConnectors", predicate: TuiDocDocumentationPropertyConnectorDirective }], ngImport: i0, template: "<h1\n *ngIf=\"heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h1>\n<ng-content></ng-content>\n<ng-container *ngIf=\"$any(propertiesConnectors) | tuiFilter: matcher : excludedProperties as properties\">\n <table\n *ngIf=\"properties.length\"\n class=\"t-table\"\n >\n <tr class=\"t-row t-row_header\">\n <th class=\"t-th t-cell t-cell_prop\">{{ texts[2] }}</th>\n <th class=\"t-th\">{{ type }}</th>\n <th\n *ngIf=\"showValues && !isAPI\"\n class=\"t-th t-cell t-th_value\"\n >\n {{ texts[3] }}\n </th>\n </tr>\n <tr\n *ngFor=\"let propertyConnector of properties\"\n class=\"t-row\"\n [class.t-deprecated]=\"propertyConnector.documentationPropertyDeprecated\"\n >\n <td class=\"t-cell\">\n <div\n automation-id=\"tui-documentation__property-name\"\n class=\"t-property t-additional-info\"\n >\n <code\n class=\"t-property-code\"\n [style.color]=\"'var(--tui-accent-active)'\"\n >\n {{ propertyConnector.attrName | tuiStripOptionalPipe }}\n </code>\n <tui-badge\n *ngIf=\"propertyConnector.attrName | tuiIsOptionalPipe\"\n size=\"s\"\n status=\"neutral\"\n value=\"Optional\"\n ></tui-badge>\n <tui-badge\n *ngIf=\"propertyConnector.documentationPropertyDeprecated\"\n size=\"s\"\n status=\"error\"\n value=\"Deprecated\"\n ></tui-badge>\n </div>\n <ng-container [ngTemplateOutlet]=\"propertyConnector.template\"></ng-container>\n </td>\n <td class=\"t-cell\">\n <span class=\"type\">\n <code class=\"t-code-type\">\n <ng-container\n *ngFor=\"\n let item of propertyConnector.documentationPropertyType | tuiDocTypeReference;\n let last = last\n \"\n >\n <a\n *ngIf=\"item.reference; else default\"\n target=\"_blank\"\n class=\"t-code-reference\"\n [attr.href]=\"item.reference\"\n >\n {{ item.type }}\n </a>\n <ng-template #default>\n {{ item.type }}\n </ng-template>\n <span *ngIf=\"!last\">&nbsp;|&nbsp;</span>\n </ng-container>\n </code>\n </span>\n </td>\n <td\n *ngIf=\"showValues\"\n class=\"t-cell t-cell_value\"\n >\n <ng-container *ngIf=\"propertyConnector.shouldShowValues; else elseEmitter\">\n <tui-select\n *ngIf=\"propertyConnector.hasItems; else noItems\"\n tuiDropdownLimitWidth=\"min\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n [tuiTextfieldCleaner]=\"propertyConnector.documentationPropertyType | tuiShowCleanerPipe\"\n [tuiTextfieldLabelOutside]=\"true\"\n [valueContent]=\"selectContent\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n >\n <code class=\"t-exception\">null</code>\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"selectContent\"\n [items]=\"propertyConnector.documentationPropertyValues\"\n ></tui-data-list-wrapper>\n </tui-select>\n <ng-template\n #selectContent\n let-data\n >\n <code>{{ data | tuiInspectAny }}</code>\n </ng-template>\n\n <ng-template #noItems>\n <ng-container [ngSwitch]=\"propertyConnector.documentationPropertyType\">\n <tui-toggle\n *ngSwitchCase=\"'boolean'\"\n size=\"l\"\n [nativeId]=\"propertyConnector.attrName\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n [showIcons]=\"true\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-toggle>\n\n <tui-primitive-textfield\n *ngSwitchCase=\"'string'\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue || ''\"\n (valueChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-primitive-textfield>\n\n <div\n *ngSwitchCase=\"'color'\"\n tuiGroup\n >\n <tui-primitive-textfield\n tuiTextfieldSize=\"m\"\n [attr.id]=\"propertyConnector.attrName\"\n [tuiInputOpacity]=\"propertyConnector.documentationPropertyValue | tuiGetOpacity\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue | tuiGetColorPipe\"\n (valueChange)=\"onColorChange(propertyConnector, $event)\"\n >\n <input\n tuiTextfield\n type=\"text\"\n />\n </tui-primitive-textfield>\n <tui-input-number\n tuiTextfieldSize=\"m\"\n [max]=\"100\"\n [min]=\"0\"\n [ngModel]=\"propertyConnector.documentationPropertyValue | tuiGetOpacity\"\n [step]=\"1\"\n (ngModelChange)=\"onOpacityChange(propertyConnector, $event)\"\n >\n Opacity\n </tui-input-number>\n </div>\n\n <tui-input-number\n *ngSwitchCase=\"'number'\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n [step]=\"1\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"propertyConnector.onValueChange($event || 0)\"\n ></tui-input-number>\n\n <ng-container *ngSwitchCase=\"'PolymorpheusContent'\">\n <tui-primitive-textfield\n *ngIf=\"\n propertyConnector.documentationPropertyValue\n | tuiIsPrimitivePolymorpheusContentPipe\n \"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue.toString()\"\n (valueChange)=\"propertyConnector.onValueChange($event)\"\n >\n Default content\n </tui-primitive-textfield>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-template #elseEmitter>\n <tui-notification\n class=\"t-output\"\n [@emitEvent]=\"propertyConnector.emits$ | async\"\n >\n Emit!\n </tui-notification>\n </ng-template>\n </td>\n </tr>\n </table>\n</ng-container>\n", styles: [":host{display:block;min-width:100%}.t-table{width:100%;table-layout:fixed}.t-row:not(:last-child){border-bottom:1px solid var(--tui-base-03)}:host-context(tui-root._mobile) .t-row{display:flex;flex-wrap:wrap}:host-context(tui-root._mobile) .t-row_header{display:none}.t-cell{padding:1rem 1rem .875rem}.t-cell:first-child{padding-left:0}.t-cell:last-child{padding-right:0}.t-cell_prop{width:40%}.t-cell_value{text-align:right}:host-context(tui-root._mobile) .t-cell{width:100%;height:auto;padding:.5rem 0;text-align:left}.t-th{padding:.5rem 1rem;color:var(--tui-text-02);font-weight:400;text-align:left}.t-th_value{max-width:20rem;text-align:right}:host-context(tui-root._mobile) .t-th_value{width:9.375rem}.t-property{font:var(--tui-font-text-m);margin-bottom:.25rem;font-family:monospace;color:#8f75d1}:host-context(tui-root._mobile) .t-property{padding:.5rem 0}.t-type{font-family:monospace}.t-deprecated .t-property-code{text-decoration:line-through}.t-deprecated-label{margin-right:.125rem;color:var(--tui-error-fill);font-size:.75rem}.t-additional-info{display:flex;gap:.3125rem;align-items:center}.t-exception{display:block;width:-webkit-max-content;width:max-content}.t-output{text-align:left;opacity:0}.t-heading{font:var(--tui-font-heading-4)}.t-code-type{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start}.t-code-reference{display:inline-flex;color:var(--tui-link);text-decoration:none;align-items:center;justify-content:center;gap:3px}.t-code-reference:after{content:\"\";font-size:1rem;width:1rem;height:1rem;background:currentColor;-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1rem\" height=\"1rem\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line></svg>') center / 100%;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1rem\" height=\"1rem\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line></svg>') center / 100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.TuiBadgeComponent, selector: "tui-badge", inputs: ["value", "size", "status", "hoverable"] }, { kind: "component", type: i3$1.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i3$1.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i3$1.TuiToggleComponent, selector: "tui-toggle", inputs: ["singleColor", "showIcons", "showLoader", "size"] }, { kind: "component", type: i3$1.TuiInputNumberComponent, selector: "tui-input-number", inputs: ["min", "max", "decimal", "precision", "step", "prefix", "postfix"] }, { kind: "directive", type: i3$1.TuiInputNumberDirective, selector: "tui-input-number" }, { kind: "directive", type: i4.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { kind: "directive", type: TuiInputOpacityDirective, selector: "[tuiInputOpacity]", inputs: ["tuiInputOpacity"] }, { kind: "component", type: i4.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i4.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { kind: "directive", type: i4.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i4.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "directive", type: i4.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i3$1.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items"] }, { kind: "component", type: i4.TuiNotificationComponent, selector: "tui-notification", inputs: ["hasIcon", "icon", "status", "size", "hideClose"], outputs: ["close"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFilterPipe, name: "tuiFilter" }, { kind: "pipe", type: TuiInspectPipe, name: "tuiInspectAny" }, { kind: "pipe", type: TuiGetColorPipe, name: "tuiGetColorPipe" }, { kind: "pipe", type: TuiGetOpacityPipe, name: "tuiGetOpacity" }, { kind: "pipe", type: TuiIsOptionalPipe, name: "tuiIsOptionalPipe" }, { kind: "pipe", type: TuiShowCleanerPipe, name: "tuiShowCleanerPipe" }, { kind: "pipe", type: TuiStripOptionalPipe, name: "tuiStripOptionalPipe" }, { kind: "pipe", type: TuiDocTypeReferencePipe, name: "tuiDocTypeReference" }, { kind: "pipe", type: TuiIsPrimitivePolymorpheusContentPipe, name: "tuiIsPrimitivePolymorpheusContentPipe" }], animations: [
763
+ trigger('emitEvent', [
764
+ transition(':increment', [style({ opacity: 1 }), animate('500ms ease-in')]),
765
+ ]),
766
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
767
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationComponent, decorators: [{
768
+ type: Component,
769
+ args: [{ selector: 'tui-doc-documentation', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiGetColorPipe, TuiGetOpacityPipe, TuiDestroyService], animations: [
770
+ trigger('emitEvent', [
771
+ transition(':increment', [style({ opacity: 1 }), animate('500ms ease-in')]),
772
+ ]),
773
+ ], template: "<h1\n *ngIf=\"heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h1>\n<ng-content></ng-content>\n<ng-container *ngIf=\"$any(propertiesConnectors) | tuiFilter: matcher : excludedProperties as properties\">\n <table\n *ngIf=\"properties.length\"\n class=\"t-table\"\n >\n <tr class=\"t-row t-row_header\">\n <th class=\"t-th t-cell t-cell_prop\">{{ texts[2] }}</th>\n <th class=\"t-th\">{{ type }}</th>\n <th\n *ngIf=\"showValues && !isAPI\"\n class=\"t-th t-cell t-th_value\"\n >\n {{ texts[3] }}\n </th>\n </tr>\n <tr\n *ngFor=\"let propertyConnector of properties\"\n class=\"t-row\"\n [class.t-deprecated]=\"propertyConnector.documentationPropertyDeprecated\"\n >\n <td class=\"t-cell\">\n <div\n automation-id=\"tui-documentation__property-name\"\n class=\"t-property t-additional-info\"\n >\n <code\n class=\"t-property-code\"\n [style.color]=\"'var(--tui-accent-active)'\"\n >\n {{ propertyConnector.attrName | tuiStripOptionalPipe }}\n </code>\n <tui-badge\n *ngIf=\"propertyConnector.attrName | tuiIsOptionalPipe\"\n size=\"s\"\n status=\"neutral\"\n value=\"Optional\"\n ></tui-badge>\n <tui-badge\n *ngIf=\"propertyConnector.documentationPropertyDeprecated\"\n size=\"s\"\n status=\"error\"\n value=\"Deprecated\"\n ></tui-badge>\n </div>\n <ng-container [ngTemplateOutlet]=\"propertyConnector.template\"></ng-container>\n </td>\n <td class=\"t-cell\">\n <span class=\"type\">\n <code class=\"t-code-type\">\n <ng-container\n *ngFor=\"\n let item of propertyConnector.documentationPropertyType | tuiDocTypeReference;\n let last = last\n \"\n >\n <a\n *ngIf=\"item.reference; else default\"\n target=\"_blank\"\n class=\"t-code-reference\"\n [attr.href]=\"item.reference\"\n >\n {{ item.type }}\n </a>\n <ng-template #default>\n {{ item.type }}\n </ng-template>\n <span *ngIf=\"!last\">&nbsp;|&nbsp;</span>\n </ng-container>\n </code>\n </span>\n </td>\n <td\n *ngIf=\"showValues\"\n class=\"t-cell t-cell_value\"\n >\n <ng-container *ngIf=\"propertyConnector.shouldShowValues; else elseEmitter\">\n <tui-select\n *ngIf=\"propertyConnector.hasItems; else noItems\"\n tuiDropdownLimitWidth=\"min\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n [tuiTextfieldCleaner]=\"propertyConnector.documentationPropertyType | tuiShowCleanerPipe\"\n [tuiTextfieldLabelOutside]=\"true\"\n [valueContent]=\"selectContent\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n >\n <code class=\"t-exception\">null</code>\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"selectContent\"\n [items]=\"propertyConnector.documentationPropertyValues\"\n ></tui-data-list-wrapper>\n </tui-select>\n <ng-template\n #selectContent\n let-data\n >\n <code>{{ data | tuiInspectAny }}</code>\n </ng-template>\n\n <ng-template #noItems>\n <ng-container [ngSwitch]=\"propertyConnector.documentationPropertyType\">\n <tui-toggle\n *ngSwitchCase=\"'boolean'\"\n size=\"l\"\n [nativeId]=\"propertyConnector.attrName\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n [showIcons]=\"true\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-toggle>\n\n <tui-primitive-textfield\n *ngSwitchCase=\"'string'\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue || ''\"\n (valueChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-primitive-textfield>\n\n <div\n *ngSwitchCase=\"'color'\"\n tuiGroup\n >\n <tui-primitive-textfield\n tuiTextfieldSize=\"m\"\n [attr.id]=\"propertyConnector.attrName\"\n [tuiInputOpacity]=\"propertyConnector.documentationPropertyValue | tuiGetOpacity\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue | tuiGetColorPipe\"\n (valueChange)=\"onColorChange(propertyConnector, $event)\"\n >\n <input\n tuiTextfield\n type=\"text\"\n />\n </tui-primitive-textfield>\n <tui-input-number\n tuiTextfieldSize=\"m\"\n [max]=\"100\"\n [min]=\"0\"\n [ngModel]=\"propertyConnector.documentationPropertyValue | tuiGetOpacity\"\n [step]=\"1\"\n (ngModelChange)=\"onOpacityChange(propertyConnector, $event)\"\n >\n Opacity\n </tui-input-number>\n </div>\n\n <tui-input-number\n *ngSwitchCase=\"'number'\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n [step]=\"1\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"propertyConnector.onValueChange($event || 0)\"\n ></tui-input-number>\n\n <ng-container *ngSwitchCase=\"'PolymorpheusContent'\">\n <tui-primitive-textfield\n *ngIf=\"\n propertyConnector.documentationPropertyValue\n | tuiIsPrimitivePolymorpheusContentPipe\n \"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue.toString()\"\n (valueChange)=\"propertyConnector.onValueChange($event)\"\n >\n Default content\n </tui-primitive-textfield>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-template #elseEmitter>\n <tui-notification\n class=\"t-output\"\n [@emitEvent]=\"propertyConnector.emits$ | async\"\n >\n Emit!\n </tui-notification>\n </ng-template>\n </td>\n </tr>\n </table>\n</ng-container>\n", styles: [":host{display:block;min-width:100%}.t-table{width:100%;table-layout:fixed}.t-row:not(:last-child){border-bottom:1px solid var(--tui-base-03)}:host-context(tui-root._mobile) .t-row{display:flex;flex-wrap:wrap}:host-context(tui-root._mobile) .t-row_header{display:none}.t-cell{padding:1rem 1rem .875rem}.t-cell:first-child{padding-left:0}.t-cell:last-child{padding-right:0}.t-cell_prop{width:40%}.t-cell_value{text-align:right}:host-context(tui-root._mobile) .t-cell{width:100%;height:auto;padding:.5rem 0;text-align:left}.t-th{padding:.5rem 1rem;color:var(--tui-text-02);font-weight:400;text-align:left}.t-th_value{max-width:20rem;text-align:right}:host-context(tui-root._mobile) .t-th_value{width:9.375rem}.t-property{font:var(--tui-font-text-m);margin-bottom:.25rem;font-family:monospace;color:#8f75d1}:host-context(tui-root._mobile) .t-property{padding:.5rem 0}.t-type{font-family:monospace}.t-deprecated .t-property-code{text-decoration:line-through}.t-deprecated-label{margin-right:.125rem;color:var(--tui-error-fill);font-size:.75rem}.t-additional-info{display:flex;gap:.3125rem;align-items:center}.t-exception{display:block;width:-webkit-max-content;width:max-content}.t-output{text-align:left;opacity:0}.t-heading{font:var(--tui-font-heading-4)}.t-code-type{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start}.t-code-reference{display:inline-flex;color:var(--tui-link);text-decoration:none;align-items:center;justify-content:center;gap:3px}.t-code-reference:after{content:\"\";font-size:1rem;width:1rem;height:1rem;background:currentColor;-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1rem\" height=\"1rem\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line></svg>') center / 100%;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1rem\" height=\"1rem\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line></svg>') center / 100%}\n"] }]
774
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef, decorators: [{
775
+ type: Inject,
776
+ args: [ChangeDetectorRef]
777
+ }] }, { type: undefined, decorators: [{
778
+ type: Inject,
779
+ args: [TUI_DOC_DOCUMENTATION_TEXTS]
780
+ }] }, { type: Set, decorators: [{
781
+ type: Inject,
782
+ args: [TUI_DOC_EXCLUDED_PROPERTIES]
783
+ }] }, { type: i6.TuiDestroyService, decorators: [{
784
+ type: Self
785
+ }, {
786
+ type: Inject,
787
+ args: [TuiDestroyService]
788
+ }] }, { type: TuiGetColorPipe, decorators: [{
789
+ type: Inject,
790
+ args: [TuiGetColorPipe]
791
+ }] }, { type: TuiGetOpacityPipe, decorators: [{
792
+ type: Inject,
793
+ args: [TuiGetOpacityPipe]
794
+ }] }]; }, propDecorators: { heading: [{
795
+ type: Input
796
+ }], showValues: [{
797
+ type: Input
798
+ }], isAPI: [{
799
+ type: Input
800
+ }], propertiesConnectors: [{
801
+ type: ContentChildren,
802
+ args: [TuiDocDocumentationPropertyConnectorDirective]
803
+ }] } });
804
+
805
+ class TuiInputOpacityModule {
806
+ }
807
+ TuiInputOpacityModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInputOpacityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
808
+ TuiInputOpacityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiInputOpacityModule, declarations: [TuiInputOpacityDirective], exports: [TuiInputOpacityDirective] });
809
+ TuiInputOpacityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInputOpacityModule });
810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiInputOpacityModule, decorators: [{
811
+ type: NgModule,
812
+ args: [{
813
+ declarations: [TuiInputOpacityDirective],
814
+ exports: [TuiInputOpacityDirective],
815
+ }]
816
+ }] });
817
+
818
+ class TuiDocDocumentationModule {
819
+ }
820
+ TuiDocDocumentationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
821
+ TuiDocDocumentationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationModule, declarations: [TuiInspectPipe,
822
+ TuiGetColorPipe,
823
+ TuiGetOpacityPipe,
824
+ TuiIsOptionalPipe,
825
+ TuiShowCleanerPipe,
826
+ TuiStripOptionalPipe,
827
+ TuiDocTypeReferencePipe,
828
+ TuiDocDocumentationComponent,
829
+ TuiIsPrimitivePolymorpheusContentPipe,
830
+ TuiDocDocumentationPropertyConnectorDirective], imports: [CommonModule,
831
+ FormsModule,
832
+ RouterModule,
833
+ TuiBadgeModule,
834
+ TuiSelectModule,
835
+ TuiToggleModule,
836
+ TuiLinkModule,
837
+ TuiInputNumberModule,
838
+ TuiModeModule,
839
+ TuiGroupModule,
840
+ TuiInputOpacityModule,
841
+ TuiPrimitiveTextfieldModule,
842
+ TuiTextfieldControllerModule,
843
+ TuiDropdownModule,
844
+ TuiDataListModule,
845
+ TuiDataListWrapperModule,
846
+ TuiNotificationModule,
847
+ TuiFilterPipeModule], exports: [TuiDocTypeReferencePipe,
848
+ TuiDocDocumentationComponent,
849
+ TuiDocDocumentationPropertyConnectorDirective] });
850
+ TuiDocDocumentationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationModule, imports: [CommonModule,
851
+ FormsModule,
852
+ RouterModule,
853
+ TuiBadgeModule,
854
+ TuiSelectModule,
855
+ TuiToggleModule,
856
+ TuiLinkModule,
857
+ TuiInputNumberModule,
858
+ TuiModeModule,
859
+ TuiGroupModule,
860
+ TuiInputOpacityModule,
861
+ TuiPrimitiveTextfieldModule,
862
+ TuiTextfieldControllerModule,
863
+ TuiDropdownModule,
864
+ TuiDataListModule,
865
+ TuiDataListWrapperModule,
866
+ TuiNotificationModule,
867
+ TuiFilterPipeModule] });
868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocDocumentationModule, decorators: [{
869
+ type: NgModule,
870
+ args: [{
871
+ imports: [
872
+ CommonModule,
873
+ FormsModule,
874
+ RouterModule,
875
+ TuiBadgeModule,
876
+ TuiSelectModule,
877
+ TuiToggleModule,
878
+ TuiLinkModule,
879
+ TuiInputNumberModule,
880
+ TuiModeModule,
881
+ TuiGroupModule,
882
+ TuiInputOpacityModule,
883
+ TuiPrimitiveTextfieldModule,
884
+ TuiTextfieldControllerModule,
885
+ TuiDropdownModule,
886
+ TuiDataListModule,
887
+ TuiDataListWrapperModule,
888
+ TuiNotificationModule,
889
+ TuiFilterPipeModule,
890
+ ],
891
+ declarations: [
892
+ TuiInspectPipe,
893
+ TuiGetColorPipe,
894
+ TuiGetOpacityPipe,
895
+ TuiIsOptionalPipe,
896
+ TuiShowCleanerPipe,
897
+ TuiStripOptionalPipe,
898
+ TuiDocTypeReferencePipe,
899
+ TuiDocDocumentationComponent,
900
+ TuiIsPrimitivePolymorpheusContentPipe,
901
+ TuiDocDocumentationPropertyConnectorDirective,
902
+ ],
903
+ exports: [
904
+ TuiDocTypeReferencePipe,
905
+ TuiDocDocumentationComponent,
906
+ TuiDocDocumentationPropertyConnectorDirective,
907
+ ],
908
+ }]
909
+ }] });
910
+
911
+ const TUI_DOC_EXAMPLE_DEFAULT_OPTIONS = {
912
+ codeEditorVisibilityHandler: files => Boolean(files[TUI_EXAMPLE_PRIMARY_FILE_NAME.TS] &&
913
+ files[TUI_EXAMPLE_PRIMARY_FILE_NAME.HTML]),
914
+ tabTitles: new Map(),
915
+ fullsize: true,
916
+ linkIcon: `tuiIconLink`,
917
+ };
918
+ /**
919
+ * Default parameters for DocExample component
920
+ */
921
+ const TUI_DOC_EXAMPLE_OPTIONS = tuiCreateToken(TUI_DOC_EXAMPLE_DEFAULT_OPTIONS);
922
+ function tuiDocExampleOptionsProvider(options) {
923
+ return tuiProvideOptions(TUI_DOC_EXAMPLE_OPTIONS, options, TUI_DOC_EXAMPLE_DEFAULT_OPTIONS);
924
+ }
925
+
926
+ class TuiDocExampleGetTabsPipe {
927
+ transform(content, defaultTab) {
928
+ return [defaultTab, ...Object.keys(content)];
929
+ }
930
+ }
931
+ TuiDocExampleGetTabsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleGetTabsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
932
+ TuiDocExampleGetTabsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleGetTabsPipe, name: "tuiDocExampleGetTabs" });
933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleGetTabsPipe, decorators: [{
934
+ type: Pipe,
935
+ args: [{ name: `tuiDocExampleGetTabs` }]
936
+ }] });
937
+
938
+ class TuiDocExampleComponent {
939
+ set content(content) {
940
+ this.rawLoader$$.next(content);
941
+ }
942
+ constructor(clipboard, alerts, location, copyTexts$, texts, codeEditor, processContent, isE2E, codeActions, router, route, ngLocation, options) {
943
+ this.clipboard = clipboard;
944
+ this.alerts = alerts;
945
+ this.location = location;
946
+ this.copyTexts$ = copyTexts$;
947
+ this.texts = texts;
948
+ this.codeEditor = codeEditor;
949
+ this.processContent = processContent;
950
+ this.isE2E = isE2E;
951
+ this.codeActions = codeActions;
952
+ this.router = router;
953
+ this.route = route;
954
+ this.ngLocation = ngLocation;
955
+ this.options = options;
956
+ this.rawLoader$$ = new BehaviorSubject({});
957
+ this.id = null;
958
+ this.fullsize = this.options.fullsize;
959
+ this.componentName = this.location.pathname.slice(1);
960
+ this.defaultTabIndex = 0;
961
+ this.defaultTab = this.texts[this.defaultTabIndex];
962
+ this.activeItemIndex = this.defaultTabIndex;
963
+ this.copy$ = this.copyTexts$.pipe(map(([copy]) => copy));
964
+ this.processor$ = this.rawLoader$$.pipe(switchMap(tuiRawLoadRecord), map(value => this.processContent(value)));
965
+ this.loading$ = new Subject();
966
+ this.visible = (files) => Boolean(this.codeEditor && this.options.codeEditorVisibilityHandler(files));
967
+ }
968
+ getTabTitle(fileName) {
969
+ return this.options.tabTitles.get(fileName) || fileName;
970
+ }
971
+ copyExampleLink() {
972
+ const hashPosition = this.location.href.indexOf('#');
973
+ const currentUrl = hashPosition > -1
974
+ ? this.location.href.slice(0, Math.max(0, hashPosition))
975
+ : this.location.href;
976
+ const url = `${currentUrl}#${this.id}`;
977
+ this.setFragmentWithoutRedirect(this.id);
978
+ this.clipboard.copy(url);
979
+ this.alerts
980
+ .open(this.texts[1], {
981
+ label: this.texts[2],
982
+ status: 'success',
983
+ })
984
+ .subscribe();
985
+ }
986
+ edit(files) {
987
+ this.loading$.next(true);
988
+ this.codeEditor
989
+ ?.edit(this.componentName, this.id || '', files)
990
+ // TODO: replace lines below with `finally` when we bump Firefox to 58+
991
+ // TODO: Add `es2018.promise` to `tsconfig.json` => `compilerOptions.lib`.
992
+ .then(() => this.loading$.next(false))
993
+ .catch(() => this.loading$.next(false));
994
+ }
995
+ setFragmentWithoutRedirect(id) {
996
+ const url = this.router
997
+ .createUrlTree([], { relativeTo: this.route, fragment: id || '' })
998
+ .toString();
999
+ this.ngLocation.go(url);
1000
+ }
1001
+ }
1002
+ TuiDocExampleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleComponent, deps: [{ token: Clipboard }, { token: TuiAlertService }, { token: LOCATION }, { token: TUI_COPY_TEXTS }, { token: TUI_DOC_EXAMPLE_TEXTS }, { token: TUI_DOC_CODE_EDITOR, optional: true }, { token: TUI_DOC_EXAMPLE_CONTENT_PROCESSOR }, { token: TUI_IS_E2E }, { token: TUI_DOC_CODE_ACTIONS }, { token: Router }, { token: ActivatedRoute }, { token: Location$1 }, { token: TUI_DOC_EXAMPLE_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
1003
+ TuiDocExampleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocExampleComponent, selector: "tui-doc-example", inputs: { id: "id", heading: "heading", description: "description", content: "content", fullsize: "fullsize", componentName: "componentName" }, host: { properties: { "class._fullsize": "this.fullsize" } }, ngImport: i0, template: "<h3\n *ngIf=\"heading\"\n class=\"t-title\"\n>\n <span\n *polymorpheusOutlet=\"heading as text\"\n [textContent]=\"text\"\n ></span>\n <button\n *ngIf=\"id\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-link-icon\"\n [icon]=\"options.linkIcon\"\n [title]=\"copy$ | async\"\n (click)=\"copyExampleLink()\"\n ></button>\n</h3>\n<h4\n *ngIf=\"description\"\n class=\"t-description\"\n>\n <ng-container *polymorpheusOutlet=\"description as text\">\n {{ text }}\n </ng-container>\n</h4>\n\n<div\n *ngIf=\"processor$ | async as files\"\n class=\"t-example\"\n>\n <ng-container *ngIf=\"files | tuiDocExampleGetTabs: defaultTab as tabs\">\n <div\n *ngIf=\"tabs.length > 1\"\n class=\"t-tabs-wrapper\"\n >\n <tui-tabs-with-more\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <button\n *tuiItem\n tuiTab\n >\n <ng-container *polymorpheusOutlet=\"getTabTitle(tab) as text\">\n {{ text }}\n </ng-container>\n </button>\n </ng-container>\n </tui-tabs-with-more>\n\n <tui-loader\n *ngIf=\"files | tuiMapper: visible\"\n size=\"xs\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n (click)=\"edit(files)\"\n >\n <ng-container *ngIf=\"codeEditor?.content as content; else defaultEditContent\">\n <ng-container *polymorpheusOutlet=\"content as editContent\">\n {{ editContent }}\n </ng-container>\n </ng-container>\n\n <ng-template #defaultEditContent>\n <button\n appearance=\"flat\"\n size=\"s\"\n tuiButton\n type=\"button\"\n >\n Edit on {{ codeEditor!.name }}\n </button>\n </ng-template>\n </tui-loader>\n </div>\n\n <div\n *ngFor=\"let tab of tabs; let index = index\"\n class=\"t-content\"\n [class.t-content_animated]=\"!isE2E\"\n [class.t-content_visible]=\"activeItemIndex === index\"\n >\n <ng-container\n *ngIf=\"index === defaultTabIndex; else anotherTab\"\n [ngTemplateOutlet]=\"preview\"\n ></ng-container>\n <ng-template #anotherTab>\n <ng-container\n [ngTemplateOutlet]=\"codeSection\"\n [ngTemplateOutletContext]=\"{$implicit: files?.[tabs[activeItemIndex]] || ''}\"\n ></ng-container>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template #preview>\n <div\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n >\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template\n #codeSection\n let-code\n>\n <tui-doc-code [code]=\"code\">\n <ng-container *ngFor=\"let action of codeActions\">\n <ng-container *polymorpheusOutlet=\"action as text; context: {$implicit: code}\">\n {{ text }}\n </ng-container>\n </ng-container>\n </tui-doc-code>\n</ng-template>\n", styles: [":host{position:relative;display:block;padding-top:3.5rem;clear:right}:host:target{animation:1s .3s tuiShaking}:host :host-context(tui-root._mobile){padding-top:2rem}.t-title{font:var(--tui-font-heading-5);margin:0 0 .5rem}:host-context(tui-root._mobile) .t-title{font:var(--tui-font-heading-6)}.t-description{font:var(--tui-font-text-m);font-weight:400;margin:0}.t-title:first-letter,.t-description:first-letter{text-transform:capitalize}.t-example{position:relative;margin-top:1.5rem;border:1px solid var(--tui-base-03);border-radius:var(--tui-radius-m);box-shadow:0 .125rem .1875rem #0000001a;overflow:hidden}:host-context(tui-root._mobile) .t-example{margin-top:.75rem}.t-tabs-wrapper{display:flex;padding:0 .875rem 0 2rem;box-shadow:inset 0 -1px var(--tui-base-03);justify-content:space-between;align-items:center}:host-context(tui-root._mobile) .t-tabs-wrapper{padding:0 .875rem 0 1rem}.t-tabs{flex-grow:1}.t-demo{padding:2rem;max-width:100%;box-sizing:border-box;overflow-x:auto}@media all and (-webkit-min-device-pixel-ratio: 0) and (-webkit-min-device-pixel-ratio: 0),all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm){.t-demo::-webkit-scrollbar,.t-demo::-webkit-scrollbar-thumb{width:1rem;height:1rem;border-radius:6.25rem;background-clip:padding-box;border:.375rem solid transparent}.t-demo::-webkit-scrollbar{background-color:transparent}.t-demo::-webkit-scrollbar-thumb{background-color:var(--tui-clear-hover)}.t-demo::-webkit-scrollbar-thumb:hover{background-color:var(--tui-clear-active)}.t-demo::-webkit-scrollbar-thumb:active{background-color:var(--tui-text-03)}}:host-context(tui-root._mobile) .t-demo{padding:1rem}:host:not(._fullsize) .t-demo{width:-webkit-min-content;width:min-content;min-width:20rem}.t-link-icon{margin-left:.3rem;vertical-align:baseline}.t-content{will-change:opacity;height:0;visibility:hidden;opacity:0}.t-content_animated{transition:opacity .3s ease-in-out}.t-content_visible{height:auto;visibility:visible;opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.TuiTabsWithMoreComponent, selector: "tui-tabs-with-more, nav[tuiTabsWithMore]", inputs: ["moreContent", "dropdownContent", "underline", "activeItemIndex", "itemsLimit"], outputs: ["activeItemIndexChange"] }, { kind: "component", type: i3$1.TuiTabComponent, selector: "a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]" }, { kind: "directive", type: i6.TuiItemDirective, selector: "[tuiItem]" }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: TuiDocCodeComponent, selector: "tui-doc-code", inputs: ["filename", "code"] }, { kind: "directive", type: i1$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: TuiDocExampleGetTabsPipe, name: "tuiDocExampleGetTabs" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1004
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleComponent, decorators: [{
1005
+ type: Component,
1006
+ args: [{ selector: 'tui-doc-example', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h3\n *ngIf=\"heading\"\n class=\"t-title\"\n>\n <span\n *polymorpheusOutlet=\"heading as text\"\n [textContent]=\"text\"\n ></span>\n <button\n *ngIf=\"id\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-link-icon\"\n [icon]=\"options.linkIcon\"\n [title]=\"copy$ | async\"\n (click)=\"copyExampleLink()\"\n ></button>\n</h3>\n<h4\n *ngIf=\"description\"\n class=\"t-description\"\n>\n <ng-container *polymorpheusOutlet=\"description as text\">\n {{ text }}\n </ng-container>\n</h4>\n\n<div\n *ngIf=\"processor$ | async as files\"\n class=\"t-example\"\n>\n <ng-container *ngIf=\"files | tuiDocExampleGetTabs: defaultTab as tabs\">\n <div\n *ngIf=\"tabs.length > 1\"\n class=\"t-tabs-wrapper\"\n >\n <tui-tabs-with-more\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <button\n *tuiItem\n tuiTab\n >\n <ng-container *polymorpheusOutlet=\"getTabTitle(tab) as text\">\n {{ text }}\n </ng-container>\n </button>\n </ng-container>\n </tui-tabs-with-more>\n\n <tui-loader\n *ngIf=\"files | tuiMapper: visible\"\n size=\"xs\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n (click)=\"edit(files)\"\n >\n <ng-container *ngIf=\"codeEditor?.content as content; else defaultEditContent\">\n <ng-container *polymorpheusOutlet=\"content as editContent\">\n {{ editContent }}\n </ng-container>\n </ng-container>\n\n <ng-template #defaultEditContent>\n <button\n appearance=\"flat\"\n size=\"s\"\n tuiButton\n type=\"button\"\n >\n Edit on {{ codeEditor!.name }}\n </button>\n </ng-template>\n </tui-loader>\n </div>\n\n <div\n *ngFor=\"let tab of tabs; let index = index\"\n class=\"t-content\"\n [class.t-content_animated]=\"!isE2E\"\n [class.t-content_visible]=\"activeItemIndex === index\"\n >\n <ng-container\n *ngIf=\"index === defaultTabIndex; else anotherTab\"\n [ngTemplateOutlet]=\"preview\"\n ></ng-container>\n <ng-template #anotherTab>\n <ng-container\n [ngTemplateOutlet]=\"codeSection\"\n [ngTemplateOutletContext]=\"{$implicit: files?.[tabs[activeItemIndex]] || ''}\"\n ></ng-container>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template #preview>\n <div\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n >\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template\n #codeSection\n let-code\n>\n <tui-doc-code [code]=\"code\">\n <ng-container *ngFor=\"let action of codeActions\">\n <ng-container *polymorpheusOutlet=\"action as text; context: {$implicit: code}\">\n {{ text }}\n </ng-container>\n </ng-container>\n </tui-doc-code>\n</ng-template>\n", styles: [":host{position:relative;display:block;padding-top:3.5rem;clear:right}:host:target{animation:1s .3s tuiShaking}:host :host-context(tui-root._mobile){padding-top:2rem}.t-title{font:var(--tui-font-heading-5);margin:0 0 .5rem}:host-context(tui-root._mobile) .t-title{font:var(--tui-font-heading-6)}.t-description{font:var(--tui-font-text-m);font-weight:400;margin:0}.t-title:first-letter,.t-description:first-letter{text-transform:capitalize}.t-example{position:relative;margin-top:1.5rem;border:1px solid var(--tui-base-03);border-radius:var(--tui-radius-m);box-shadow:0 .125rem .1875rem #0000001a;overflow:hidden}:host-context(tui-root._mobile) .t-example{margin-top:.75rem}.t-tabs-wrapper{display:flex;padding:0 .875rem 0 2rem;box-shadow:inset 0 -1px var(--tui-base-03);justify-content:space-between;align-items:center}:host-context(tui-root._mobile) .t-tabs-wrapper{padding:0 .875rem 0 1rem}.t-tabs{flex-grow:1}.t-demo{padding:2rem;max-width:100%;box-sizing:border-box;overflow-x:auto}@media all and (-webkit-min-device-pixel-ratio: 0) and (-webkit-min-device-pixel-ratio: 0),all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm){.t-demo::-webkit-scrollbar,.t-demo::-webkit-scrollbar-thumb{width:1rem;height:1rem;border-radius:6.25rem;background-clip:padding-box;border:.375rem solid transparent}.t-demo::-webkit-scrollbar{background-color:transparent}.t-demo::-webkit-scrollbar-thumb{background-color:var(--tui-clear-hover)}.t-demo::-webkit-scrollbar-thumb:hover{background-color:var(--tui-clear-active)}.t-demo::-webkit-scrollbar-thumb:active{background-color:var(--tui-text-03)}}:host-context(tui-root._mobile) .t-demo{padding:1rem}:host:not(._fullsize) .t-demo{width:-webkit-min-content;width:min-content;min-width:20rem}.t-link-icon{margin-left:.3rem;vertical-align:baseline}.t-content{will-change:opacity;height:0;visibility:hidden;opacity:0}.t-content_animated{transition:opacity .3s ease-in-out}.t-content_visible{height:auto;visibility:visible;opacity:1}\n"] }]
1007
+ }], ctorParameters: function () { return [{ type: i4$1.Clipboard, decorators: [{
1008
+ type: Inject,
1009
+ args: [Clipboard]
1010
+ }] }, { type: i4.TuiAlertService, decorators: [{
1011
+ type: Inject,
1012
+ args: [TuiAlertService]
1013
+ }] }, { type: Location, decorators: [{
1014
+ type: Inject,
1015
+ args: [LOCATION]
1016
+ }] }, { type: i10.Observable, decorators: [{
1017
+ type: Inject,
1018
+ args: [TUI_COPY_TEXTS]
1019
+ }] }, { type: undefined, decorators: [{
1020
+ type: Inject,
1021
+ args: [TUI_DOC_EXAMPLE_TEXTS]
1022
+ }] }, { type: undefined, decorators: [{
1023
+ type: Optional
1024
+ }, {
1025
+ type: Inject,
1026
+ args: [TUI_DOC_CODE_EDITOR]
1027
+ }] }, { type: undefined, decorators: [{
1028
+ type: Inject,
1029
+ args: [TUI_DOC_EXAMPLE_CONTENT_PROCESSOR]
1030
+ }] }, { type: undefined, decorators: [{
1031
+ type: Inject,
1032
+ args: [TUI_IS_E2E]
1033
+ }] }, { type: Array, decorators: [{
1034
+ type: Inject,
1035
+ args: [TUI_DOC_CODE_ACTIONS]
1036
+ }] }, { type: i3.Router, decorators: [{
1037
+ type: Inject,
1038
+ args: [Router]
1039
+ }] }, { type: i3.ActivatedRoute, decorators: [{
1040
+ type: Inject,
1041
+ args: [ActivatedRoute]
1042
+ }] }, { type: i1.Location, decorators: [{
1043
+ type: Inject,
1044
+ args: [Location$1]
1045
+ }] }, { type: undefined, decorators: [{
1046
+ type: Inject,
1047
+ args: [TUI_DOC_EXAMPLE_OPTIONS]
1048
+ }] }]; }, propDecorators: { id: [{
1049
+ type: Input
1050
+ }], heading: [{
1051
+ type: Input
1052
+ }], description: [{
1053
+ type: Input
1054
+ }], content: [{
1055
+ type: Input
1056
+ }], fullsize: [{
1057
+ type: Input
1058
+ }, {
1059
+ type: HostBinding,
1060
+ args: ['class._fullsize']
1061
+ }], componentName: [{
1062
+ type: Input
1063
+ }] } });
1064
+
1065
+ class TuiDocExampleModule {
1066
+ }
1067
+ TuiDocExampleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1068
+ TuiDocExampleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleModule, declarations: [TuiDocExampleComponent, TuiDocExampleGetTabsPipe], imports: [CommonModule,
1069
+ ClipboardModule,
1070
+ TuiTabsModule,
1071
+ TuiButtonModule,
1072
+ TuiDocCopyModule,
1073
+ TuiDocCodeModule,
1074
+ PolymorpheusModule,
1075
+ TuiMapperPipeModule,
1076
+ TuiLoaderModule], exports: [TuiDocExampleComponent, TuiDocExampleGetTabsPipe] });
1077
+ TuiDocExampleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleModule, imports: [CommonModule,
1078
+ ClipboardModule,
1079
+ TuiTabsModule,
1080
+ TuiButtonModule,
1081
+ TuiDocCopyModule,
1082
+ TuiDocCodeModule,
1083
+ PolymorpheusModule,
1084
+ TuiMapperPipeModule,
1085
+ TuiLoaderModule] });
1086
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocExampleModule, decorators: [{
1087
+ type: NgModule,
1088
+ args: [{
1089
+ imports: [
1090
+ CommonModule,
1091
+ ClipboardModule,
1092
+ TuiTabsModule,
1093
+ TuiButtonModule,
1094
+ TuiDocCopyModule,
1095
+ TuiDocCodeModule,
1096
+ PolymorpheusModule,
1097
+ TuiMapperPipeModule,
1098
+ TuiLoaderModule,
1099
+ ],
1100
+ declarations: [TuiDocExampleComponent, TuiDocExampleGetTabsPipe],
1101
+ exports: [TuiDocExampleComponent, TuiDocExampleGetTabsPipe],
1102
+ }]
1103
+ }] });
1104
+
1105
+ function labelsProviderFactory(pages) {
1106
+ return pages
1107
+ .map(({ section }) => section)
1108
+ .filter(tuiIsPresent)
1109
+ .filter((item, index, array) => array.indexOf(item) === index);
1110
+ }
1111
+ /**
1112
+ * Page title
1113
+ */
1114
+ const NAVIGATION_TITLE = new InjectionToken(`[NAVIGATION_TITLE]`);
1115
+ /**
1116
+ * Navigation sections labels for search
1117
+ */
1118
+ const NAVIGATION_LABELS = new InjectionToken(`[NAVIGATION_LABELS]`);
1119
+ /**
1120
+ * Navigation pages
1121
+ */
1122
+ const NAVIGATION_ITEMS = new InjectionToken(`[NAVIGATION_ITEMS]`);
1123
+ const NAVIGATION_PROVIDERS = [
1124
+ TuiDestroyService,
1125
+ {
1126
+ provide: NAVIGATION_TITLE,
1127
+ deps: [Router, ActivatedRoute, TUI_DOC_TITLE, TuiDestroyService],
1128
+ useFactory: (router, activatedRoute, titlePrefix, destroy$) => router.events.pipe(filter(event => event instanceof NavigationEnd), map(() => activatedRoute.firstChild), filter(tuiIsPresent), mergeMap(({ data }) => data), map(({ title }) => `${titlePrefix}${title}`), takeUntil(destroy$)),
1129
+ },
1130
+ {
1131
+ provide: NAVIGATION_LABELS,
1132
+ deps: [TUI_DOC_PAGES],
1133
+ useFactory: labelsProviderFactory,
1134
+ },
1135
+ {
1136
+ provide: NAVIGATION_ITEMS,
1137
+ deps: [TUI_DOC_PAGES],
1138
+ useFactory: (pages) => {
1139
+ const labels = labelsProviderFactory(pages);
1140
+ return [
1141
+ ...labels.map(label => pages.filter(({ section }) => section === label)),
1142
+ pages.filter(page => !page.section),
1143
+ ];
1144
+ },
1145
+ },
1146
+ ];
1147
+
1148
+ class TuiDocNavigationComponent {
1149
+ constructor(cdr, titleService, title$, mode, sidebar, labels, items, searchText, router, activatedRoute, destroy$, readyToScroll$, docIcons, icons, doc) {
1150
+ this.title$ = title$;
1151
+ this.mode = mode;
1152
+ this.sidebar = sidebar;
1153
+ this.labels = labels;
1154
+ this.items = items;
1155
+ this.searchText = searchText;
1156
+ this.router = router;
1157
+ this.activatedRoute = activatedRoute;
1158
+ this.destroy$ = destroy$;
1159
+ this.readyToScroll$ = readyToScroll$;
1160
+ this.docIcons = docIcons;
1161
+ this.icons = icons;
1162
+ this.doc = doc;
1163
+ this.menuOpen = false;
1164
+ this.openPagesArr = [];
1165
+ this.openPagesGroupsArr = [];
1166
+ this.active = '';
1167
+ this.search = new UntypedFormControl('');
1168
+ this.filtered$ = tuiControlValue(this.search).pipe(filter(search => search.trim().length > 2), map(search => this.filterItems(this.flattenSubPages(this.items), search)));
1169
+ this.mode$ = this.mode.change$.pipe(startWith(null), map(() => this.mode.mode || 'onLight'));
1170
+ title$.subscribe(title => {
1171
+ cdr.markForCheck();
1172
+ titleService.setTitle(title);
1173
+ this.openActivePageGroup();
1174
+ });
1175
+ combineLatest([
1176
+ this.router.events.pipe(filter((event) => event instanceof Scroll)),
1177
+ this.title$.pipe(switchMap(() => this.readyToScroll$.pipe(filter(Boolean)))),
1178
+ ])
1179
+ .pipe(take(1), map(([event]) => event.anchor || ''), filter(Boolean), takeUntil(this.destroy$))
1180
+ .subscribe(anchor => this.navigateToAnchorLink(anchor));
1181
+ }
1182
+ get canOpen() {
1183
+ return (this.search.value?.length ?? 0) > 2;
1184
+ }
1185
+ get itemsWithoutSections() {
1186
+ return this.items[this.items.length - 1];
1187
+ }
1188
+ $pages(pages) {
1189
+ return pages;
1190
+ }
1191
+ isActive(route) {
1192
+ return route === this.active;
1193
+ }
1194
+ onGroupClick(index) {
1195
+ this.openPagesGroupsArr[index] = !this.openPagesGroupsArr[index];
1196
+ }
1197
+ closeMenu() {
1198
+ this.menuOpen = false;
1199
+ }
1200
+ onClick(input) {
1201
+ input.open = false;
1202
+ this.menuOpen = false;
1203
+ this.search.setValue('');
1204
+ this.openActivePageGroup();
1205
+ }
1206
+ filterItems(items, search) {
1207
+ return items.map(section => tuiUniqBy(section.filter(({ title, keywords = '' }) => {
1208
+ search = search.toLowerCase().trim();
1209
+ keywords = keywords.toLowerCase();
1210
+ title = title.toLowerCase();
1211
+ return (title.includes(search) ||
1212
+ keywords.includes(search) ||
1213
+ title.includes(tuiTransliterateKeyboardLayout(search)) ||
1214
+ keywords.includes(tuiTransliterateKeyboardLayout(search)) ||
1215
+ search.replace(/-/gi, '').includes(title) ||
1216
+ title.includes(search.replace(/\s|tui/g, '')) ||
1217
+ keywords.includes(search.replace(/\s|tui/g, '')) ||
1218
+ search.split(/\s/).find(word => title.includes(word)));
1219
+ }), 'title'));
1220
+ }
1221
+ flattenSubPages(items) {
1222
+ return items.reduce((array, item) => [
1223
+ ...array,
1224
+ item.reduce((pages, page) => 'subPages' in page
1225
+ ? [...pages, ...page.subPages]
1226
+ : [...pages, page], []),
1227
+ ], []);
1228
+ }
1229
+ isActiveRoute(route) {
1230
+ return this.router.isActive(route, {
1231
+ paths: 'subset',
1232
+ queryParams: 'subset',
1233
+ fragment: 'ignored',
1234
+ matrixParams: 'ignored',
1235
+ });
1236
+ }
1237
+ openActivePageGroup() {
1238
+ this.items.forEach((pages, pagesIndex) => {
1239
+ pages.forEach((page, pageIndex) => {
1240
+ if ('route' in page && this.isActiveRoute(page.route)) {
1241
+ this.openPagesArr[pagesIndex] = true;
1242
+ this.active = page.route;
1243
+ }
1244
+ if ('subPages' in page) {
1245
+ page.subPages.forEach(subPage => {
1246
+ if (this.isActiveRoute(subPage.route)) {
1247
+ this.openPagesArr[pagesIndex] = true;
1248
+ this.openPagesGroupsArr[pagesIndex * 100 + pageIndex] = true;
1249
+ this.active = subPage.route;
1250
+ }
1251
+ });
1252
+ }
1253
+ });
1254
+ });
1255
+ }
1256
+ navigateToAnchorLink(fragment) {
1257
+ const nodes = fragment ? this.doc.querySelectorAll(`#${fragment}`) : [];
1258
+ const element = nodes.length && nodes[nodes.length - 1];
1259
+ if (!element) {
1260
+ return;
1261
+ }
1262
+ // emulate :target event
1263
+ const target = this.doc.createElement('a');
1264
+ target.href = `${this.doc.location.pathname}#${fragment}`;
1265
+ target.style.display = 'none';
1266
+ target.style.position = 'absolute';
1267
+ this.doc.body.appendChild(target);
1268
+ target.click();
1269
+ target.remove();
1270
+ }
1271
+ }
1272
+ TuiDocNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocNavigationComponent, deps: [{ token: ChangeDetectorRef }, { token: Title }, { token: NAVIGATION_TITLE }, { token: TuiModeDirective }, { token: TuiSidebarDirective, optional: true }, { token: NAVIGATION_LABELS }, { token: NAVIGATION_ITEMS }, { token: TUI_DOC_SEARCH_TEXT }, { token: Router }, { token: ActivatedRoute }, { token: TuiDestroyService, self: true }, { token: TUI_DOC_PAGE_LOADED }, { token: TUI_DOC_ICONS }, { token: TUI_COMMON_ICONS }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1273
+ TuiDocNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocNavigationComponent, selector: "tui-doc-navigation", host: { properties: { "class._open": "this.menuOpen" } }, providers: NAVIGATION_PROVIDERS, ngImport: i0, template: "<tui-input\n #input\n tuiTextfieldSize=\"m\"\n class=\"t-input\"\n [formControl]=\"search\"\n [tuiAutoFocus]=\"!!sidebar\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldIconLeft]=\"docIcons.search\"\n [tuiTextfieldLabelOutside]=\"true\"\n>\n {{ searchText }}\n <ng-container *ngIf=\"canOpen\">\n <tui-data-list *tuiDataList>\n <tui-opt-group\n *ngFor=\"let group of filtered$ | async; let index = index\"\n [label]=\"labels[index] || ''\"\n >\n <a\n *ngFor=\"let item of group\"\n tuiOption\n [fragment]=\"item.fragment\"\n [routerLink]=\"item.route\"\n (click)=\"onClick(input)\"\n >\n {{ item.title }}\n <tui-svg\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </a>\n </tui-opt-group>\n </tui-data-list>\n </ng-container>\n</tui-input>\n\n<nav class=\"t-navigation\">\n <tui-scrollbar\n class=\"t-scrollbar\"\n [tuiMode]=\"mode$ | async\"\n >\n <tui-accordion\n [closeOthers]=\"false\"\n [rounded]=\"false\"\n >\n <tui-accordion-item\n *ngFor=\"let label of labels; index as index\"\n size=\"s\"\n [borders]=\"null\"\n [(open)]=\"!!openPagesArr[index]\"\n >\n <span class=\"t-label\">\n <strong>{{ label }}</strong>\n </span>\n <ng-template tuiAccordionItemContent>\n <div class=\"t-section\">\n <ng-container\n *ngFor=\"let item of items[index]; index as subIndex\"\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: index * 100 + subIndex}\"\n ></ng-container>\n </div>\n </ng-template>\n </tui-accordion-item>\n </tui-accordion>\n <div class=\"t-items-container\">\n <ng-container\n *ngFor=\"let item of itemsWithoutSections; let index = index\"\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: items.length - 1 + index}\"\n ></ng-container>\n </div>\n\n <ng-template\n #pages\n let-index=\"index\"\n let-item=\"item\"\n >\n <a\n *ngIf=\"!item.subPages; else subPagesTemplate\"\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink\"\n [routerLink]=\"item.route\"\n [tuiScrollIntoViewLink]=\"isActive(item.route)\"\n (click)=\"closeMenu()\"\n >\n {{ item.title }}\n <tui-svg\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </a>\n\n <ng-template #subPagesTemplate>\n <div\n routerLinkActive\n class=\"t-subsection\"\n [routerLinkActiveOptions]=\"{exact: false}\"\n >\n <button\n *ngIf=\"item.subPages\"\n tuiLink\n type=\"button\"\n class=\"t-sublink t-sublink_subsection\"\n (click)=\"onGroupClick(index)\"\n >\n <tui-svg\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesGroupsArr[index]\"\n [src]=\"icons.more\"\n ></tui-svg>\n {{ item.title }}\n <tui-svg\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </button>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"!!openPagesGroupsArr[index]\"\n >\n <div class=\"t-section t-section_bordered\">\n <a\n *ngFor=\"let subPage of $pages(item.subPages)\"\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink t-sublink_small\"\n [fragment]=\"subPage.fragment\"\n [routerLink]=\"subPage.route\"\n [tuiScrollIntoViewLink]=\"isActive(subPage.route)\"\n (click)=\"closeMenu()\"\n >\n {{ subPage.title }}\n <tui-svg\n *polymorpheusOutlet=\"subPage.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </a>\n </div>\n </tui-expand>\n </div>\n </ng-template>\n </ng-template>\n </tui-scrollbar>\n</nav>\n\n<ng-content></ng-content>\n", styles: [":host{z-index:1;display:flex;flex-direction:column;text-align:center;background:var(--tui-base-01)}.t-input{margin:1.25rem}.t-navigation{display:flex;max-height:100%;min-height:0;flex:1 1 0;text-align:left}.t-scrollbar{scroll-behavior:smooth;width:100%}:host-context(tui-root._reduced-motion) .t-scrollbar{scroll-behavior:auto}.t-items-container{display:flex;flex-direction:column;padding:0 1rem}.t-label{margin-left:.5rem}.t-expand{margin-left:.25rem}.t-section{display:flex;flex-direction:column;align-items:flex-start;margin:-1rem 0 -.5rem}.t-section_bordered{margin:.5rem 0;border-left:1px solid var(--tui-base-03)}.t-subsection{margin-left:.5rem}.t-sublink{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;font:var(--tui-font-text-m);margin-left:.5rem;padding-top:1rem}.t-sublink_small{margin-left:1rem;line-height:1.5rem;padding-top:.5rem}.t-sublink_subsection{margin-left:0;line-height:1.6rem}.t-sublink.t-sublink.t-sublink_active{color:var(--tui-text-01)}.t-icon{margin-left:.5rem}.t-chevron{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:1rem;height:1rem;margin:-.25rem .25rem 0 -.1875rem}.t-chevron_active{transform:rotate(90deg)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i1$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i5.TuiScrollIntoViewLinkDirective, selector: "[tuiScrollIntoViewLink]", inputs: ["tuiScrollIntoViewLink"] }, { kind: "component", type: i3$1.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i3$1.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i4.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i4.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "directive", type: i4.TuiTextfieldIconLeftDirective, selector: "[tuiTextfieldIconLeft]", inputs: ["tuiTextfieldIconLeft"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiExpandComponent, selector: "tui-expand", inputs: ["async", "expanded"] }, { kind: "component", type: i3$1.TuiAccordionComponent, selector: "tui-accordion", inputs: ["closeOthers", "rounded"] }, { kind: "component", type: i3$1.TuiAccordionItemComponent, selector: "tui-accordion-item", inputs: ["noPadding", "showArrow", "borders", "size", "disabled", "disableHover", "open", "async"], outputs: ["openChange"] }, { kind: "directive", type: i3$1.TuiAccordionItemContentDirective, selector: "ng-template[tuiAccordionItemContent]" }, { kind: "component", type: i4.TuiScrollbarComponent, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { kind: "component", type: i4.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }, { kind: "directive", type: i4.TuiOptGroupDirective, selector: "tui-opt-group", inputs: ["label"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "directive", type: i6.TuiAutoFocusDirective, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1274
+ __decorate([
1275
+ tuiPure
1276
+ ], TuiDocNavigationComponent.prototype, "filterItems", null);
1277
+ __decorate([
1278
+ tuiPure
1279
+ ], TuiDocNavigationComponent.prototype, "flattenSubPages", null);
1280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocNavigationComponent, decorators: [{
1281
+ type: Component,
1282
+ args: [{ selector: 'tui-doc-navigation', changeDetection: ChangeDetectionStrategy.OnPush, providers: NAVIGATION_PROVIDERS, template: "<tui-input\n #input\n tuiTextfieldSize=\"m\"\n class=\"t-input\"\n [formControl]=\"search\"\n [tuiAutoFocus]=\"!!sidebar\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldIconLeft]=\"docIcons.search\"\n [tuiTextfieldLabelOutside]=\"true\"\n>\n {{ searchText }}\n <ng-container *ngIf=\"canOpen\">\n <tui-data-list *tuiDataList>\n <tui-opt-group\n *ngFor=\"let group of filtered$ | async; let index = index\"\n [label]=\"labels[index] || ''\"\n >\n <a\n *ngFor=\"let item of group\"\n tuiOption\n [fragment]=\"item.fragment\"\n [routerLink]=\"item.route\"\n (click)=\"onClick(input)\"\n >\n {{ item.title }}\n <tui-svg\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </a>\n </tui-opt-group>\n </tui-data-list>\n </ng-container>\n</tui-input>\n\n<nav class=\"t-navigation\">\n <tui-scrollbar\n class=\"t-scrollbar\"\n [tuiMode]=\"mode$ | async\"\n >\n <tui-accordion\n [closeOthers]=\"false\"\n [rounded]=\"false\"\n >\n <tui-accordion-item\n *ngFor=\"let label of labels; index as index\"\n size=\"s\"\n [borders]=\"null\"\n [(open)]=\"!!openPagesArr[index]\"\n >\n <span class=\"t-label\">\n <strong>{{ label }}</strong>\n </span>\n <ng-template tuiAccordionItemContent>\n <div class=\"t-section\">\n <ng-container\n *ngFor=\"let item of items[index]; index as subIndex\"\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: index * 100 + subIndex}\"\n ></ng-container>\n </div>\n </ng-template>\n </tui-accordion-item>\n </tui-accordion>\n <div class=\"t-items-container\">\n <ng-container\n *ngFor=\"let item of itemsWithoutSections; let index = index\"\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: items.length - 1 + index}\"\n ></ng-container>\n </div>\n\n <ng-template\n #pages\n let-index=\"index\"\n let-item=\"item\"\n >\n <a\n *ngIf=\"!item.subPages; else subPagesTemplate\"\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink\"\n [routerLink]=\"item.route\"\n [tuiScrollIntoViewLink]=\"isActive(item.route)\"\n (click)=\"closeMenu()\"\n >\n {{ item.title }}\n <tui-svg\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </a>\n\n <ng-template #subPagesTemplate>\n <div\n routerLinkActive\n class=\"t-subsection\"\n [routerLinkActiveOptions]=\"{exact: false}\"\n >\n <button\n *ngIf=\"item.subPages\"\n tuiLink\n type=\"button\"\n class=\"t-sublink t-sublink_subsection\"\n (click)=\"onGroupClick(index)\"\n >\n <tui-svg\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesGroupsArr[index]\"\n [src]=\"icons.more\"\n ></tui-svg>\n {{ item.title }}\n <tui-svg\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </button>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"!!openPagesGroupsArr[index]\"\n >\n <div class=\"t-section t-section_bordered\">\n <a\n *ngFor=\"let subPage of $pages(item.subPages)\"\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink t-sublink_small\"\n [fragment]=\"subPage.fragment\"\n [routerLink]=\"subPage.route\"\n [tuiScrollIntoViewLink]=\"isActive(subPage.route)\"\n (click)=\"closeMenu()\"\n >\n {{ subPage.title }}\n <tui-svg\n *polymorpheusOutlet=\"subPage.icon as icon\"\n class=\"t-icon\"\n [src]=\"icon\"\n ></tui-svg>\n </a>\n </div>\n </tui-expand>\n </div>\n </ng-template>\n </ng-template>\n </tui-scrollbar>\n</nav>\n\n<ng-content></ng-content>\n", styles: [":host{z-index:1;display:flex;flex-direction:column;text-align:center;background:var(--tui-base-01)}.t-input{margin:1.25rem}.t-navigation{display:flex;max-height:100%;min-height:0;flex:1 1 0;text-align:left}.t-scrollbar{scroll-behavior:smooth;width:100%}:host-context(tui-root._reduced-motion) .t-scrollbar{scroll-behavior:auto}.t-items-container{display:flex;flex-direction:column;padding:0 1rem}.t-label{margin-left:.5rem}.t-expand{margin-left:.25rem}.t-section{display:flex;flex-direction:column;align-items:flex-start;margin:-1rem 0 -.5rem}.t-section_bordered{margin:.5rem 0;border-left:1px solid var(--tui-base-03)}.t-subsection{margin-left:.5rem}.t-sublink{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;font:var(--tui-font-text-m);margin-left:.5rem;padding-top:1rem}.t-sublink_small{margin-left:1rem;line-height:1.5rem;padding-top:.5rem}.t-sublink_subsection{margin-left:0;line-height:1.6rem}.t-sublink.t-sublink.t-sublink_active{color:var(--tui-text-01)}.t-icon{margin-left:.5rem}.t-chevron{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:1rem;height:1rem;margin:-.25rem .25rem 0 -.1875rem}.t-chevron_active{transform:rotate(90deg)}\n"] }]
1283
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef, decorators: [{
1284
+ type: Inject,
1285
+ args: [ChangeDetectorRef]
1286
+ }] }, { type: i9.Title, decorators: [{
1287
+ type: Inject,
1288
+ args: [Title]
1289
+ }] }, { type: i10.Observable, decorators: [{
1290
+ type: Inject,
1291
+ args: [NAVIGATION_TITLE]
1292
+ }] }, { type: i4.TuiModeDirective, decorators: [{
1293
+ type: Inject,
1294
+ args: [TuiModeDirective]
1295
+ }] }, { type: undefined, decorators: [{
1296
+ type: Optional
1297
+ }, {
1298
+ type: Inject,
1299
+ args: [TuiSidebarDirective]
1300
+ }] }, { type: undefined, decorators: [{
1301
+ type: Inject,
1302
+ args: [NAVIGATION_LABELS]
1303
+ }] }, { type: undefined, decorators: [{
1304
+ type: Inject,
1305
+ args: [NAVIGATION_ITEMS]
1306
+ }] }, { type: undefined, decorators: [{
1307
+ type: Inject,
1308
+ args: [TUI_DOC_SEARCH_TEXT]
1309
+ }] }, { type: i3.Router, decorators: [{
1310
+ type: Inject,
1311
+ args: [Router]
1312
+ }] }, { type: i3.ActivatedRoute, decorators: [{
1313
+ type: Inject,
1314
+ args: [ActivatedRoute]
1315
+ }] }, { type: i10.Observable, decorators: [{
1316
+ type: Self
1317
+ }, {
1318
+ type: Inject,
1319
+ args: [TuiDestroyService]
1320
+ }] }, { type: i10.Observable, decorators: [{
1321
+ type: Inject,
1322
+ args: [TUI_DOC_PAGE_LOADED]
1323
+ }] }, { type: undefined, decorators: [{
1324
+ type: Inject,
1325
+ args: [TUI_DOC_ICONS]
1326
+ }] }, { type: undefined, decorators: [{
1327
+ type: Inject,
1328
+ args: [TUI_COMMON_ICONS]
1329
+ }] }, { type: Document, decorators: [{
1330
+ type: Inject,
1331
+ args: [DOCUMENT]
1332
+ }] }]; }, propDecorators: { menuOpen: [{
1333
+ type: HostBinding,
1334
+ args: ['class._open']
1335
+ }], filterItems: [], flattenSubPages: [] } });
1336
+
1337
+ class TuiDocHeaderComponent {
1338
+ constructor(icons, logo, menu, router, swipes$) {
1339
+ this.icons = icons;
1340
+ this.logo = logo;
1341
+ this.menu = menu;
1342
+ this.router = router;
1343
+ this.swipes$ = swipes$;
1344
+ this.stream$ = new Subject();
1345
+ this.open$ = merge(this.router.events.pipe(map(ALWAYS_FALSE_HANDLER)), this.stream$, this.swipes$.pipe(filter(swipe => swipe.direction === 'left' || swipe.direction === 'right'), map(swipe => swipe.direction === 'right'))).pipe(startWith(false), distinctUntilChanged());
1346
+ }
1347
+ onClick() {
1348
+ this.stream$.next(true);
1349
+ }
1350
+ onActiveZone(active) {
1351
+ if (!active) {
1352
+ this.stream$.next(false);
1353
+ }
1354
+ }
1355
+ }
1356
+ TuiDocHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocHeaderComponent, deps: [{ token: TUI_DOC_ICONS }, { token: TUI_DOC_LOGO }, { token: TUI_DOC_MENU_TEXT }, { token: Router }, { token: TuiSwipeService }], target: i0.ɵɵFactoryTarget.Component });
1357
+ TuiDocHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocHeaderComponent, selector: "header[tuiDocHeader]", ngImport: i0, template: "<button\n appearance=\"icon\"\n tuiIconButton\n type=\"button\"\n class=\"t-menu\"\n [icon]=\"icons.menu\"\n [title]=\"menu\"\n (click)=\"onClick()\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-doc-navigation\n *tuiSidebar=\"!!(open$ | async)\"\n class=\"t-navigation\"\n ></tui-doc-navigation>\n</button>\n<div class=\"t-logo\">\n <img\n *polymorpheusOutlet=\"logo as src\"\n alt=\"Logo\"\n class=\"t-img\"\n [src]=\"src\"\n />\n</div>\n<ng-content></ng-content>\n", styles: [":host{position:fixed;top:0;left:0;right:0;z-index:1;display:flex;box-shadow:var(--tui-shadow-navigation);height:3.9375rem;align-items:center;padding:0 1.25rem;background:var(--tui-base-01);border-bottom:1px solid var(--tui-base-03)}@supports (background: color-mix(in srgb,var(--tui-base-01),transparent 50%)){:host{background:color-mix(in srgb,var(--tui-base-01),transparent 50%);-webkit-backdrop-filter:blur(1.25rem);backdrop-filter:blur(1.25rem)}}.t-logo{margin-right:auto;font:var(--tui-font-heading-5)}.t-img{display:block}.t-menu{margin-left:-1.25rem}@media screen and (min-width: 48em){.t-menu{display:none}}.t-navigation{min-height:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i3$2.TuiSidebarDirective, selector: "[tuiSidebar]", inputs: ["tuiSidebarDirection", "tuiSidebarAutoWidth", "tuiSidebar"] }, { kind: "directive", type: i6.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { kind: "component", type: TuiDocNavigationComponent, selector: "tui-doc-navigation" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocHeaderComponent, decorators: [{
1359
+ type: Component,
1360
+ args: [{ selector: 'header[tuiDocHeader]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n appearance=\"icon\"\n tuiIconButton\n type=\"button\"\n class=\"t-menu\"\n [icon]=\"icons.menu\"\n [title]=\"menu\"\n (click)=\"onClick()\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-doc-navigation\n *tuiSidebar=\"!!(open$ | async)\"\n class=\"t-navigation\"\n ></tui-doc-navigation>\n</button>\n<div class=\"t-logo\">\n <img\n *polymorpheusOutlet=\"logo as src\"\n alt=\"Logo\"\n class=\"t-img\"\n [src]=\"src\"\n />\n</div>\n<ng-content></ng-content>\n", styles: [":host{position:fixed;top:0;left:0;right:0;z-index:1;display:flex;box-shadow:var(--tui-shadow-navigation);height:3.9375rem;align-items:center;padding:0 1.25rem;background:var(--tui-base-01);border-bottom:1px solid var(--tui-base-03)}@supports (background: color-mix(in srgb,var(--tui-base-01),transparent 50%)){:host{background:color-mix(in srgb,var(--tui-base-01),transparent 50%);-webkit-backdrop-filter:blur(1.25rem);backdrop-filter:blur(1.25rem)}}.t-logo{margin-right:auto;font:var(--tui-font-heading-5)}.t-img{display:block}.t-menu{margin-left:-1.25rem}@media screen and (min-width: 48em){.t-menu{display:none}}.t-navigation{min-height:100%}\n"] }]
1361
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1362
+ type: Inject,
1363
+ args: [TUI_DOC_ICONS]
1364
+ }] }, { type: undefined, decorators: [{
1365
+ type: Inject,
1366
+ args: [TUI_DOC_LOGO]
1367
+ }] }, { type: undefined, decorators: [{
1368
+ type: Inject,
1369
+ args: [TUI_DOC_MENU_TEXT]
1370
+ }] }, { type: i3.Router, decorators: [{
1371
+ type: Inject,
1372
+ args: [Router]
1373
+ }] }, { type: i6.TuiSwipeService, decorators: [{
1374
+ type: Inject,
1375
+ args: [TuiSwipeService]
1376
+ }] }]; } });
1377
+
1378
+ class TuiDocNavigationModule {
1379
+ }
1380
+ TuiDocNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1381
+ TuiDocNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocNavigationModule, declarations: [TuiDocNavigationComponent], imports: [CommonModule,
1382
+ ReactiveFormsModule,
1383
+ RouterModule,
1384
+ PolymorpheusModule,
1385
+ TuiScrollIntoViewLinkModule,
1386
+ TuiButtonModule,
1387
+ TuiInputModule,
1388
+ TuiTextfieldControllerModule,
1389
+ TuiActiveZoneModule,
1390
+ TuiLetModule,
1391
+ TuiModeModule,
1392
+ TuiLinkModule,
1393
+ TuiExpandModule,
1394
+ TuiHostedDropdownModule,
1395
+ TuiDropdownModule,
1396
+ TuiAccordionModule,
1397
+ TuiScrollbarModule,
1398
+ TuiSvgModule,
1399
+ TuiDataListModule,
1400
+ TuiAutoFocusModule], exports: [TuiDocNavigationComponent] });
1401
+ TuiDocNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocNavigationModule, imports: [CommonModule,
1402
+ ReactiveFormsModule,
1403
+ RouterModule,
1404
+ PolymorpheusModule,
1405
+ TuiScrollIntoViewLinkModule,
1406
+ TuiButtonModule,
1407
+ TuiInputModule,
1408
+ TuiTextfieldControllerModule,
1409
+ TuiActiveZoneModule,
1410
+ TuiLetModule,
1411
+ TuiModeModule,
1412
+ TuiLinkModule,
1413
+ TuiExpandModule,
1414
+ TuiHostedDropdownModule,
1415
+ TuiDropdownModule,
1416
+ TuiAccordionModule,
1417
+ TuiScrollbarModule,
1418
+ TuiSvgModule,
1419
+ TuiDataListModule,
1420
+ TuiAutoFocusModule] });
1421
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocNavigationModule, decorators: [{
1422
+ type: NgModule,
1423
+ args: [{
1424
+ imports: [
1425
+ CommonModule,
1426
+ ReactiveFormsModule,
1427
+ RouterModule,
1428
+ PolymorpheusModule,
1429
+ TuiScrollIntoViewLinkModule,
1430
+ TuiButtonModule,
1431
+ TuiInputModule,
1432
+ TuiTextfieldControllerModule,
1433
+ TuiActiveZoneModule,
1434
+ TuiLetModule,
1435
+ TuiModeModule,
1436
+ TuiLinkModule,
1437
+ TuiExpandModule,
1438
+ TuiHostedDropdownModule,
1439
+ TuiDropdownModule,
1440
+ TuiAccordionModule,
1441
+ TuiScrollbarModule,
1442
+ TuiSvgModule,
1443
+ TuiDataListModule,
1444
+ TuiAutoFocusModule,
1445
+ ],
1446
+ declarations: [TuiDocNavigationComponent],
1447
+ exports: [TuiDocNavigationComponent],
1448
+ }]
1449
+ }] });
1450
+
1451
+ class TuiDocHeaderModule {
1452
+ }
1453
+ TuiDocHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1454
+ TuiDocHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocHeaderModule, declarations: [TuiDocHeaderComponent], imports: [CommonModule,
1455
+ PolymorpheusModule,
1456
+ TuiButtonModule,
1457
+ TuiSidebarModule,
1458
+ TuiActiveZoneModule,
1459
+ TuiDocNavigationModule], exports: [TuiDocHeaderComponent] });
1460
+ TuiDocHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocHeaderModule, imports: [CommonModule,
1461
+ PolymorpheusModule,
1462
+ TuiButtonModule,
1463
+ TuiSidebarModule,
1464
+ TuiActiveZoneModule,
1465
+ TuiDocNavigationModule] });
1466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocHeaderModule, decorators: [{
1467
+ type: NgModule,
1468
+ args: [{
1469
+ imports: [
1470
+ CommonModule,
1471
+ PolymorpheusModule,
1472
+ TuiButtonModule,
1473
+ TuiSidebarModule,
1474
+ TuiActiveZoneModule,
1475
+ TuiDocNavigationModule,
1476
+ ],
1477
+ declarations: [TuiDocHeaderComponent],
1478
+ exports: [TuiDocHeaderComponent],
1479
+ }]
1480
+ }] });
1481
+
1482
+ class TuiDocSeeAlsoComponent {
1483
+ constructor(text, pages) {
1484
+ this.text = text;
1485
+ this.pages = pages;
1486
+ this.seeAlso = [];
1487
+ }
1488
+ getRouterLink(pageTitle) {
1489
+ return this.pages.get(pageTitle)?.route ?? '';
1490
+ }
1491
+ }
1492
+ TuiDocSeeAlsoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSeeAlsoComponent, deps: [{ token: TUI_DOC_SEE_ALSO_TEXT }, { token: TUI_DOC_MAP_PAGES }], target: i0.ɵɵFactoryTarget.Component });
1493
+ TuiDocSeeAlsoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocSeeAlsoComponent, selector: "tui-doc-see-also", inputs: { seeAlso: "seeAlso" }, ngImport: i0, template: "<h5 class=\"t-header\">{{ text }}</h5>\n<ng-container *ngFor=\"let item of seeAlso; last as last\">\n <a\n tuiLink\n [innerText]=\"item\"\n [routerLink]=\"getRouterLink(item)\"\n ></a>\n <ng-container *ngIf=\"!last\">{{ ', ' }}</ng-container>\n</ng-container>\n", styles: [":host{display:block}.t-header{font-size:.6875rem;line-height:1rem;text-transform:uppercase;letter-spacing:.075em;color:var(--tui-text-02);margin:0 0 .5rem;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSeeAlsoComponent, decorators: [{
1495
+ type: Component,
1496
+ args: [{ selector: 'tui-doc-see-also', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 class=\"t-header\">{{ text }}</h5>\n<ng-container *ngFor=\"let item of seeAlso; last as last\">\n <a\n tuiLink\n [innerText]=\"item\"\n [routerLink]=\"getRouterLink(item)\"\n ></a>\n <ng-container *ngIf=\"!last\">{{ ', ' }}</ng-container>\n</ng-container>\n", styles: [":host{display:block}.t-header{font-size:.6875rem;line-height:1rem;text-transform:uppercase;letter-spacing:.075em;color:var(--tui-text-02);margin:0 0 .5rem;white-space:nowrap}\n"] }]
1497
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1498
+ type: Inject,
1499
+ args: [TUI_DOC_SEE_ALSO_TEXT]
1500
+ }] }, { type: Map, decorators: [{
1501
+ type: Inject,
1502
+ args: [TUI_DOC_MAP_PAGES]
1503
+ }] }]; }, propDecorators: { seeAlso: [{
1504
+ type: Input
1505
+ }] } });
1506
+
1507
+ class TuiDocSeeAlsoModule {
1508
+ }
1509
+ TuiDocSeeAlsoModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSeeAlsoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1510
+ TuiDocSeeAlsoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSeeAlsoModule, declarations: [TuiDocSeeAlsoComponent], imports: [CommonModule, RouterModule, TuiLinkModule], exports: [TuiDocSeeAlsoComponent] });
1511
+ TuiDocSeeAlsoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSeeAlsoModule, imports: [CommonModule, RouterModule, TuiLinkModule] });
1512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSeeAlsoModule, decorators: [{
1513
+ type: NgModule,
1514
+ args: [{
1515
+ imports: [CommonModule, RouterModule, TuiLinkModule],
1516
+ declarations: [TuiDocSeeAlsoComponent],
1517
+ exports: [TuiDocSeeAlsoComponent],
1518
+ }]
1519
+ }] });
1520
+
1521
+ class TuiDocSourceCodeComponent {
1522
+ constructor(icons, sourceCode, text) {
1523
+ this.icons = icons;
1524
+ this.sourceCode = sourceCode;
1525
+ this.text = text;
1526
+ this.header = '';
1527
+ this.package = '';
1528
+ this.type = '';
1529
+ this.path = '';
1530
+ }
1531
+ get pathOptions() {
1532
+ return this.getPathOptions(this.header, this.package, this.type, this.path);
1533
+ }
1534
+ pathIsUrl(path) {
1535
+ return path.startsWith('http');
1536
+ }
1537
+ getPathOptions(header, packageName, type, path) {
1538
+ return {
1539
+ header,
1540
+ package: packageName,
1541
+ type,
1542
+ path,
1543
+ };
1544
+ }
1545
+ }
1546
+ TuiDocSourceCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSourceCodeComponent, deps: [{ token: TUI_DOC_ICONS }, { token: TUI_DOC_SOURCE_CODE }, { token: TUI_DOC_SOURCE_CODE_TEXT }], target: i0.ɵɵFactoryTarget.Component });
1547
+ TuiDocSourceCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocSourceCodeComponent, selector: "tui-doc-source-code", inputs: { header: "header", package: "package", type: "type", path: "path" }, ngImport: i0, template: "<a\n *polymorpheusOutlet=\"pathIsUrl(path) ? path : sourceCode as link; context: pathOptions\"\n appearance=\"icon\"\n size=\"s\"\n target=\"_blank\"\n tuiIconButton\n type=\"button\"\n [href]=\"link\"\n [icon]=\"icons.code\"\n [title]=\"text\"\n></a>\n", dependencies: [{ kind: "directive", type: i1$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1548
+ __decorate([
1549
+ tuiPure
1550
+ ], TuiDocSourceCodeComponent.prototype, "pathIsUrl", null);
1551
+ __decorate([
1552
+ tuiPure
1553
+ ], TuiDocSourceCodeComponent.prototype, "getPathOptions", null);
1554
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSourceCodeComponent, decorators: [{
1555
+ type: Component,
1556
+ args: [{ selector: 'tui-doc-source-code', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n *polymorpheusOutlet=\"pathIsUrl(path) ? path : sourceCode as link; context: pathOptions\"\n appearance=\"icon\"\n size=\"s\"\n target=\"_blank\"\n tuiIconButton\n type=\"button\"\n [href]=\"link\"\n [icon]=\"icons.code\"\n [title]=\"text\"\n></a>\n" }]
1557
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1558
+ type: Inject,
1559
+ args: [TUI_DOC_ICONS]
1560
+ }] }, { type: undefined, decorators: [{
1561
+ type: Inject,
1562
+ args: [TUI_DOC_SOURCE_CODE]
1563
+ }] }, { type: undefined, decorators: [{
1564
+ type: Inject,
1565
+ args: [TUI_DOC_SOURCE_CODE_TEXT]
1566
+ }] }]; }, propDecorators: { header: [{
1567
+ type: Input
1568
+ }], package: [{
1569
+ type: Input
1570
+ }], type: [{
1571
+ type: Input
1572
+ }], path: [{
1573
+ type: Input
1574
+ }], pathIsUrl: [], getPathOptions: [] } });
1575
+
1576
+ class TuiDocSourceCodeModule {
1577
+ }
1578
+ TuiDocSourceCodeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSourceCodeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1579
+ TuiDocSourceCodeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSourceCodeModule, declarations: [TuiDocSourceCodeComponent], imports: [CommonModule, PolymorpheusModule, TuiButtonModule], exports: [TuiDocSourceCodeComponent] });
1580
+ TuiDocSourceCodeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSourceCodeModule, imports: [CommonModule, PolymorpheusModule, TuiButtonModule] });
1581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocSourceCodeModule, decorators: [{
1582
+ type: NgModule,
1583
+ args: [{
1584
+ imports: [CommonModule, PolymorpheusModule, TuiButtonModule],
1585
+ declarations: [TuiDocSourceCodeComponent],
1586
+ exports: [TuiDocSourceCodeComponent],
1587
+ }]
1588
+ }] });
1589
+
1590
+ class TuiLanguageSwitcherComponent {
1591
+ constructor(switcher, flagPipe) {
1592
+ this.switcher = switcher;
1593
+ this.flagPipe = flagPipe;
1594
+ this.language = new UntypedFormControl(tuiCapitalizeFirstLetter(this.switcher.language));
1595
+ this.flags = new Map([
1596
+ ['chinese', TuiCountryIsoCode.CN],
1597
+ ['dutch', TuiCountryIsoCode.NL],
1598
+ ['english', TuiCountryIsoCode.GB],
1599
+ ['french', TuiCountryIsoCode.FR],
1600
+ ['german', TuiCountryIsoCode.DE],
1601
+ ['italian', TuiCountryIsoCode.IT],
1602
+ ['polish', TuiCountryIsoCode.PL],
1603
+ ['portuguese', TuiCountryIsoCode.PT],
1604
+ ['russian', TuiCountryIsoCode.RU],
1605
+ ['spanish', TuiCountryIsoCode.ES],
1606
+ ['turkish', TuiCountryIsoCode.TR],
1607
+ ['ukrainian', TuiCountryIsoCode.UA],
1608
+ ['kazakh', TuiCountryIsoCode.KZ],
1609
+ ['malay', TuiCountryIsoCode.MY],
1610
+ ['vietnamese', TuiCountryIsoCode.VN],
1611
+ ]);
1612
+ this.names = Array.from(this.flags.keys());
1613
+ }
1614
+ /**
1615
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
1616
+ * TODO drop in v4.0
1617
+ */
1618
+ getFlagPath(code) {
1619
+ return this.flagPipe.transform(code);
1620
+ }
1621
+ }
1622
+ TuiLanguageSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiLanguageSwitcherComponent, deps: [{ token: TuiLanguageSwitcher }, { token: TuiFlagPipe }], target: i0.ɵɵFactoryTarget.Component });
1623
+ TuiLanguageSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiLanguageSwitcherComponent, selector: "tui-language-switcher", providers: [
1624
+ // TODO: for backward compatibility only. Drop in v4.0
1625
+ TuiFlagPipe,
1626
+ ], ngImport: i0, template: "<tui-select [formControl]=\"language\">\n <ng-content></ng-content>\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let name of names\"\n tuiOption\n [value]=\"name | titlecase\"\n (click)=\"switcher.setLanguage(name)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"flags.get(name) | tuiFlag\"\n />\n {{ name | titlecase }}\n </button>\n </tui-data-list>\n</tui-select>\n", styles: [".t-flag{width:1.75rem;height:1.25rem;margin-right:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$1.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i3$1.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { kind: "component", type: i4.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.TuiFlagPipe, name: "tuiFlag" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiLanguageSwitcherComponent, decorators: [{
1628
+ type: Component,
1629
+ args: [{ selector: 'tui-language-switcher', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1630
+ // TODO: for backward compatibility only. Drop in v4.0
1631
+ TuiFlagPipe,
1632
+ ], template: "<tui-select [formControl]=\"language\">\n <ng-content></ng-content>\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let name of names\"\n tuiOption\n [value]=\"name | titlecase\"\n (click)=\"switcher.setLanguage(name)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"flags.get(name) | tuiFlag\"\n />\n {{ name | titlecase }}\n </button>\n </tui-data-list>\n</tui-select>\n", styles: [".t-flag{width:1.75rem;height:1.25rem;margin-right:.5rem}\n"] }]
1633
+ }], ctorParameters: function () { return [{ type: i5$1.TuiLanguageSwitcher, decorators: [{
1634
+ type: Inject,
1635
+ args: [TuiLanguageSwitcher]
1636
+ }] }, { type: i4.TuiFlagPipe, decorators: [{
1637
+ type: Inject,
1638
+ args: [TuiFlagPipe]
1639
+ }] }]; } });
1640
+
1641
+ class TuiLanguageSwitcherModule {
1642
+ }
1643
+ TuiLanguageSwitcherModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiLanguageSwitcherModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1644
+ TuiLanguageSwitcherModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiLanguageSwitcherModule, declarations: [TuiLanguageSwitcherComponent], imports: [CommonModule,
1645
+ TuiFlagPipeModule,
1646
+ TuiSelectModule,
1647
+ TuiDataListModule,
1648
+ ReactiveFormsModule], exports: [TuiLanguageSwitcherComponent] });
1649
+ TuiLanguageSwitcherModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiLanguageSwitcherModule, imports: [CommonModule,
1650
+ TuiFlagPipeModule,
1651
+ TuiSelectModule,
1652
+ TuiDataListModule,
1653
+ ReactiveFormsModule] });
1654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiLanguageSwitcherModule, decorators: [{
1655
+ type: NgModule,
1656
+ args: [{
1657
+ imports: [
1658
+ CommonModule,
1659
+ TuiFlagPipeModule,
1660
+ TuiSelectModule,
1661
+ TuiDataListModule,
1662
+ ReactiveFormsModule,
1663
+ ],
1664
+ declarations: [TuiLanguageSwitcherComponent],
1665
+ exports: [TuiLanguageSwitcherComponent],
1666
+ }]
1667
+ }] });
1668
+
1669
+ class TuiDocMainComponent {
1670
+ constructor(icons, theme, night) {
1671
+ this.icons = icons;
1672
+ this.theme = theme;
1673
+ this.night = night;
1674
+ this.change$ = this.night;
1675
+ this.night$ = this.change$.pipe(startWith(null), map(() => this.night.value), distinctUntilChanged(), share());
1676
+ }
1677
+ get mode() {
1678
+ return this.night.value ? 'onDark' : null;
1679
+ }
1680
+ get icon() {
1681
+ return this.night.value ? this.icons.day : this.icons.night;
1682
+ }
1683
+ }
1684
+ TuiDocMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocMainComponent, deps: [{ token: TUI_DOC_ICONS }, { token: TuiThemeService }, { token: TuiThemeNightService }], target: i0.ɵɵFactoryTarget.Component });
1685
+ TuiDocMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocMainComponent, selector: "tui-doc-main", host: { properties: { "attr.data-mode": "this.mode" } }, providers: [
1686
+ {
1687
+ provide: TuiModeDirective,
1688
+ useExisting: forwardRef(() => TuiDocMainComponent),
1689
+ },
1690
+ TuiSwipeService,
1691
+ ], ngImport: i0, template: "<tui-theme-night *ngIf=\"theme.isDefaultTheme && night.useDefaultNightTheme && (night$ | async)\"></tui-theme-night>\n<tui-root>\n <div class=\"tui-doc-page\">\n <tui-doc-navigation class=\"tui-doc-navigation\">\n <ng-content select=\"tuiDocNavigation\"></ng-content>\n </tui-doc-navigation>\n <div class=\"tui-doc-content\">\n <router-outlet class=\"tui-doc-outlet\"></router-outlet>\n </div>\n </div>\n <header tuiDocHeader>\n <ng-content select=\"tuiDocHeader\"></ng-content>\n <button\n appearance=\"secondary\"\n shape=\"rounded\"\n size=\"s\"\n tuiIconButton\n tuiMode=\"onLight\"\n type=\"button\"\n class=\"tui-doc-night-mode-switch\"\n [icon]=\"icon\"\n (click)=\"night.toggle()\"\n ></button>\n </header>\n <ng-container ngProjectAs=\"tuiOverContent\">\n <ng-content select=\"tuiOverContent\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverDialogs\">\n <ng-content select=\"tuiOverDialogs\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverAlerts\">\n <ng-content select=\"tuiOverAlerts\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverPortals\">\n <ng-content select=\"tuiOverPortals\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverHints\">\n <ng-content select=\"tuiOverHints\"></ng-content>\n </ng-container>\n</tui-root>\n", styles: ["@keyframes tuiShaking{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(-.3125rem,0,0)}20%,40%,60%,80%{transform:translate3d(.3125rem,0,0)}}html,body{scroll-padding-top:4rem;background:var(--tui-base-01);height:auto}tui-root>tui-scroll-controls>.t-bar_vertical{top:4rem!important}tui-doc-main{display:block}code:not(pre code):not(.hljs):not([class*=\"language-\"]){transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:inline-flex;background:var(--tui-base-02);color:var(--tui-text-02);vertical-align:middle;align-items:center;border-radius:.25rem;font-weight:500;outline:1px solid var(--tui-base-04);font-size:.75rem;padding:0 .3125rem;margin:.125rem .1875rem;text-wrap:wrap}tui-notification code:not(pre code):not(.hljs):not([class*=\"language-\"]){mix-blend-mode:luminosity}a code:not(pre code):not(.hljs):not([class*=\"language-\"]){color:var(--tui-link)}button:focus code,a:focus code{background:var(--tui-base-01)}.tui-doc-page{isolation:isolate;padding-top:4rem}tui-doc-navigation.tui-doc-navigation{position:fixed;top:4rem;bottom:0;width:16.25rem;border-right:1px solid var(--tui-base-03)}@media screen and (max-width: 47.9625em){tui-doc-navigation.tui-doc-navigation{display:none}}.tui-doc-content{margin-left:16.25rem}@media screen and (max-width: 47.9625em){.tui-doc-content{margin-left:0}}.tui-doc-outlet+*{display:block}.tui-doc-night-mode-switch{margin-left:1rem}.tui-doc-night-mode-switch tui-svg{color:var(--tui-text-02)}tui-doc-code .hljs-tag{background:none}tui-doc-code .hljs{display:block;overflow-x:auto;padding:.5em;color:var(--tui-text-01);background-color:var(--tui-clear)}tui-doc-code .hljs.hljs-line-numbers{background:transparent}tui-doc-code .hljs-subst,tui-doc-code .hljs-title{font-weight:400;color:var(--tui-text-01)}tui-doc-code .hljs-property{color:var(--tui-support-14)}tui-doc-code .hljs-comment,tui-doc-code .hljs-quote{color:var(--tui-text-02);font-style:italic}tui-doc-code .hljs-meta{color:#e38162}tui-doc-code .hljs-section,tui-doc-code .hljs-name,tui-doc-code .hljs-literal,tui-doc-code .hljs-keyword,tui-doc-code .hljs-selector-tag,tui-doc-code .hljs-type,tui-doc-code .hljs-selector-id,tui-doc-code .hljs-selector-class{font-weight:700;color:var(--tui-link)}tui-doc-code .hljs-attr{color:var(--tui-link)}tui-doc-code .hljs-attribute,tui-doc-code .hljs-number,tui-doc-code .hljs-regexp,tui-doc-code .hljs-link,tui-doc-code .hljs-built_in{font-weight:700;color:var(--tui-support-06)}tui-doc-code .hljs-number,tui-doc-code .hljs-regexp,tui-doc-code .hljs-link{font-weight:400}tui-doc-code .hljs-string{color:var(--tui-positive);font-weight:700}tui-doc-code .hljs-symbol,tui-doc-code .hljs-bullet,tui-doc-code .hljs-formula{color:var(--tui-text-01);background:var(--tui-base-02);font-style:italic}tui-doc-code .hljs-doctag{text-decoration:underline}tui-doc-code .hljs-variable,tui-doc-code .hljs-template-variable{color:var(--tui-link-hover)}tui-doc-code [data-mode=onDark] .hljs-variable,tui-doc-code [data-mode=onDark] .hljs-template-variable{color:var(--tui-warning-fill)}tui-doc-code .hljs-addition{background:var(--tui-success-bg)}tui-doc-code .hljs-deletion{background:var(--tui-error-bg)}tui-doc-code .hljs-emphasis{font-style:italic}tui-doc-code .hljs-strong{font-weight:700}tui-doc-code .hljs .hljs-line-numbers{padding:0}tui-doc-code .hljs-ln-numbers{vertical-align:top;opacity:.3;text-align:right;padding-right:1em!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.TuiThemeNightComponent, selector: "tui-theme-night" }, { kind: "component", type: TuiDocHeaderComponent, selector: "header[tuiDocHeader]" }, { kind: "component", type: i4.TuiRootComponent, selector: "tui-root" }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: TuiDocNavigationComponent, selector: "tui-doc-navigation" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
1692
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocMainComponent, decorators: [{
1693
+ type: Component,
1694
+ args: [{ selector: 'tui-doc-main', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [
1695
+ {
1696
+ provide: TuiModeDirective,
1697
+ useExisting: forwardRef(() => TuiDocMainComponent),
1698
+ },
1699
+ TuiSwipeService,
1700
+ ], template: "<tui-theme-night *ngIf=\"theme.isDefaultTheme && night.useDefaultNightTheme && (night$ | async)\"></tui-theme-night>\n<tui-root>\n <div class=\"tui-doc-page\">\n <tui-doc-navigation class=\"tui-doc-navigation\">\n <ng-content select=\"tuiDocNavigation\"></ng-content>\n </tui-doc-navigation>\n <div class=\"tui-doc-content\">\n <router-outlet class=\"tui-doc-outlet\"></router-outlet>\n </div>\n </div>\n <header tuiDocHeader>\n <ng-content select=\"tuiDocHeader\"></ng-content>\n <button\n appearance=\"secondary\"\n shape=\"rounded\"\n size=\"s\"\n tuiIconButton\n tuiMode=\"onLight\"\n type=\"button\"\n class=\"tui-doc-night-mode-switch\"\n [icon]=\"icon\"\n (click)=\"night.toggle()\"\n ></button>\n </header>\n <ng-container ngProjectAs=\"tuiOverContent\">\n <ng-content select=\"tuiOverContent\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverDialogs\">\n <ng-content select=\"tuiOverDialogs\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverAlerts\">\n <ng-content select=\"tuiOverAlerts\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverPortals\">\n <ng-content select=\"tuiOverPortals\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverHints\">\n <ng-content select=\"tuiOverHints\"></ng-content>\n </ng-container>\n</tui-root>\n", styles: ["@keyframes tuiShaking{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(-.3125rem,0,0)}20%,40%,60%,80%{transform:translate3d(.3125rem,0,0)}}html,body{scroll-padding-top:4rem;background:var(--tui-base-01);height:auto}tui-root>tui-scroll-controls>.t-bar_vertical{top:4rem!important}tui-doc-main{display:block}code:not(pre code):not(.hljs):not([class*=\"language-\"]){transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:inline-flex;background:var(--tui-base-02);color:var(--tui-text-02);vertical-align:middle;align-items:center;border-radius:.25rem;font-weight:500;outline:1px solid var(--tui-base-04);font-size:.75rem;padding:0 .3125rem;margin:.125rem .1875rem;text-wrap:wrap}tui-notification code:not(pre code):not(.hljs):not([class*=\"language-\"]){mix-blend-mode:luminosity}a code:not(pre code):not(.hljs):not([class*=\"language-\"]){color:var(--tui-link)}button:focus code,a:focus code{background:var(--tui-base-01)}.tui-doc-page{isolation:isolate;padding-top:4rem}tui-doc-navigation.tui-doc-navigation{position:fixed;top:4rem;bottom:0;width:16.25rem;border-right:1px solid var(--tui-base-03)}@media screen and (max-width: 47.9625em){tui-doc-navigation.tui-doc-navigation{display:none}}.tui-doc-content{margin-left:16.25rem}@media screen and (max-width: 47.9625em){.tui-doc-content{margin-left:0}}.tui-doc-outlet+*{display:block}.tui-doc-night-mode-switch{margin-left:1rem}.tui-doc-night-mode-switch tui-svg{color:var(--tui-text-02)}tui-doc-code .hljs-tag{background:none}tui-doc-code .hljs{display:block;overflow-x:auto;padding:.5em;color:var(--tui-text-01);background-color:var(--tui-clear)}tui-doc-code .hljs.hljs-line-numbers{background:transparent}tui-doc-code .hljs-subst,tui-doc-code .hljs-title{font-weight:400;color:var(--tui-text-01)}tui-doc-code .hljs-property{color:var(--tui-support-14)}tui-doc-code .hljs-comment,tui-doc-code .hljs-quote{color:var(--tui-text-02);font-style:italic}tui-doc-code .hljs-meta{color:#e38162}tui-doc-code .hljs-section,tui-doc-code .hljs-name,tui-doc-code .hljs-literal,tui-doc-code .hljs-keyword,tui-doc-code .hljs-selector-tag,tui-doc-code .hljs-type,tui-doc-code .hljs-selector-id,tui-doc-code .hljs-selector-class{font-weight:700;color:var(--tui-link)}tui-doc-code .hljs-attr{color:var(--tui-link)}tui-doc-code .hljs-attribute,tui-doc-code .hljs-number,tui-doc-code .hljs-regexp,tui-doc-code .hljs-link,tui-doc-code .hljs-built_in{font-weight:700;color:var(--tui-support-06)}tui-doc-code .hljs-number,tui-doc-code .hljs-regexp,tui-doc-code .hljs-link{font-weight:400}tui-doc-code .hljs-string{color:var(--tui-positive);font-weight:700}tui-doc-code .hljs-symbol,tui-doc-code .hljs-bullet,tui-doc-code .hljs-formula{color:var(--tui-text-01);background:var(--tui-base-02);font-style:italic}tui-doc-code .hljs-doctag{text-decoration:underline}tui-doc-code .hljs-variable,tui-doc-code .hljs-template-variable{color:var(--tui-link-hover)}tui-doc-code [data-mode=onDark] .hljs-variable,tui-doc-code [data-mode=onDark] .hljs-template-variable{color:var(--tui-warning-fill)}tui-doc-code .hljs-addition{background:var(--tui-success-bg)}tui-doc-code .hljs-deletion{background:var(--tui-error-bg)}tui-doc-code .hljs-emphasis{font-style:italic}tui-doc-code .hljs-strong{font-weight:700}tui-doc-code .hljs .hljs-line-numbers{padding:0}tui-doc-code .hljs-ln-numbers{vertical-align:top;opacity:.3;text-align:right;padding-right:1em!important}\n"] }]
1701
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1702
+ type: Inject,
1703
+ args: [TUI_DOC_ICONS]
1704
+ }] }, { type: i6$1.TuiThemeService, decorators: [{
1705
+ type: Inject,
1706
+ args: [TuiThemeService]
1707
+ }] }, { type: i6$1.TuiThemeNightService, decorators: [{
1708
+ type: Inject,
1709
+ args: [TuiThemeNightService]
1710
+ }] }]; }, propDecorators: { mode: [{
1711
+ type: HostBinding,
1712
+ args: ['attr.data-mode']
1713
+ }] } });
1714
+
1715
+ class TuiDocMainModule {
1716
+ }
1717
+ TuiDocMainModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocMainModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1718
+ TuiDocMainModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocMainModule, declarations: [TuiDocMainComponent], imports: [CommonModule,
1719
+ RouterModule,
1720
+ TuiThemeNightModule,
1721
+ TuiDocHeaderModule,
1722
+ TuiRootModule,
1723
+ TuiDialogModule,
1724
+ TuiAlertModule,
1725
+ TuiButtonModule,
1726
+ TuiModeModule,
1727
+ TuiDocNavigationModule], exports: [TuiDocMainComponent] });
1728
+ TuiDocMainModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocMainModule, imports: [CommonModule,
1729
+ RouterModule,
1730
+ TuiThemeNightModule,
1731
+ TuiDocHeaderModule,
1732
+ TuiRootModule,
1733
+ TuiDialogModule,
1734
+ TuiAlertModule,
1735
+ TuiButtonModule,
1736
+ TuiModeModule,
1737
+ TuiDocNavigationModule] });
1738
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocMainModule, decorators: [{
1739
+ type: NgModule,
1740
+ args: [{
1741
+ imports: [
1742
+ CommonModule,
1743
+ RouterModule,
1744
+ TuiThemeNightModule,
1745
+ TuiDocHeaderModule,
1746
+ TuiRootModule,
1747
+ TuiDialogModule,
1748
+ TuiAlertModule,
1749
+ TuiButtonModule,
1750
+ TuiModeModule,
1751
+ TuiDocNavigationModule,
1752
+ ],
1753
+ declarations: [TuiDocMainComponent],
1754
+ exports: [TuiDocMainComponent],
1755
+ }]
1756
+ }] });
1757
+
1758
+ /**
1759
+ * Array if related page titles
1760
+ */
1761
+ const PAGE_SEE_ALSO = new InjectionToken(`[PAGE_SEE_ALSO]`);
1762
+ const PAGE_PROVIDERS = [
1763
+ {
1764
+ provide: PAGE_SEE_ALSO,
1765
+ deps: [ElementRef, TUI_DOC_SEE_ALSO],
1766
+ useFactory: ({ nativeElement }, seeAlsoGroups) => {
1767
+ const currentHeader = nativeElement.getAttribute(`header`);
1768
+ const groups = seeAlsoGroups.filter(group => group.includes(currentHeader)) || [];
1769
+ const seeAlsoSet = new Set(groups
1770
+ .join()
1771
+ .split(`,`)
1772
+ .filter(component => component && component !== currentHeader));
1773
+ return Array.from(seeAlsoSet);
1774
+ },
1775
+ },
1776
+ ];
1777
+
1778
+ class TuiDocPageTabConnectorDirective {
1779
+ constructor(template) {
1780
+ this.template = template;
1781
+ }
1782
+ }
1783
+ TuiDocPageTabConnectorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageTabConnectorDirective, deps: [{ token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1784
+ TuiDocPageTabConnectorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocPageTabConnectorDirective, selector: "[pageTab]", inputs: { pageTab: "pageTab" }, ngImport: i0 });
1785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageTabConnectorDirective, decorators: [{
1786
+ type: Directive,
1787
+ args: [{
1788
+ selector: '[pageTab]',
1789
+ }]
1790
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
1791
+ type: Inject,
1792
+ args: [TemplateRef]
1793
+ }] }]; }, propDecorators: { pageTab: [{
1794
+ type: Input
1795
+ }] } });
1796
+
1797
+ class TuiDocPageComponent {
1798
+ constructor(defaultTabs, seeAlso) {
1799
+ this.defaultTabs = defaultTabs;
1800
+ this.seeAlso = seeAlso;
1801
+ this.header = '';
1802
+ this.package = '';
1803
+ this.type = '';
1804
+ this.path = '';
1805
+ this.deprecated = false;
1806
+ this.tabConnectors = EMPTY_QUERY;
1807
+ this.activeItemIndex = 0;
1808
+ this.from = / /g;
1809
+ this.to = '_';
1810
+ }
1811
+ get showSeeAlso() {
1812
+ return !!this.seeAlso.length && this.activeItemIndex === 0;
1813
+ }
1814
+ }
1815
+ TuiDocPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageComponent, deps: [{ token: TUI_DOC_DEFAULT_TABS }, { token: PAGE_SEE_ALSO }], target: i0.ɵɵFactoryTarget.Component });
1816
+ TuiDocPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TuiDocPageComponent, selector: "tui-doc-page", inputs: { header: "header", package: "package", type: "type", path: "path", deprecated: "deprecated" }, providers: PAGE_PROVIDERS, queries: [{ propertyName: "tabConnectors", predicate: TuiDocPageTabConnectorDirective }], ngImport: i0, template: "<header class=\"t-header\">\n <h1 class=\"t-title\">\n {{ header }}\n <tui-tag\n *ngIf=\"!!deprecated || deprecated === ''\"\n status=\"custom\"\n value=\"deprecated\"\n class=\"t-tag t-tag_deprecated\"\n ></tui-tag>\n <tui-tag\n *ngIf=\"package\"\n status=\"custom\"\n class=\"t-tag t-tag_package\"\n [autoColor]=\"true\"\n [value]=\"package\"\n ></tui-tag>\n </h1>\n <tui-tabs-with-more\n *ngIf=\"tabConnectors.length\"\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n <ng-container *ngFor=\"let tab of tabConnectors; first as first; index as index\">\n <ng-container *ngIf=\"tab.pageTab || defaultTabs[index] as tabName\">\n <a\n *tuiItem\n routerLinkActive\n tuiTab\n [routerLink]=\"first ? './' : (tabName | tuiReplace: from : to)\"\n [routerLinkActiveOptions]=\"{exact: first}\"\n >\n {{ tabName }}\n </a>\n </ng-container>\n </ng-container>\n </tui-tabs-with-more>\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header\"\n [package]=\"package\"\n [path]=\"path\"\n [type]=\"type\"\n ></tui-doc-source-code>\n</header>\n<div class=\"t-content\">\n <ng-content></ng-content>\n <tui-doc-see-also\n *ngIf=\"showSeeAlso\"\n class=\"t-see-also\"\n [seeAlso]=\"seeAlso\"\n ></tui-doc-see-also>\n <ng-container *ngFor=\"let tab of tabConnectors; index as index\">\n <ng-container\n *ngIf=\"index === activeItemIndex\"\n [ngTemplateOutlet]=\"tab.template\"\n ></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0;flex-basis:0;flex-grow:1}.t-header{display:flex;font:var(--tui-font-heading-3);flex-wrap:wrap;min-height:7.25rem;color:var(--tui-text-01);box-shadow:inset 0 -1px 0 0 var(--tui-base-03);padding:3.75rem 0 0;box-sizing:border-box;flex-shrink:0;margin:0 min(10vw,8.75rem)}:host-context(tui-root._mobile) .t-header{font:var(--tui-font-heading-4);min-height:4.5rem;padding:1.25rem 1.25rem 0;margin:0}.t-title{min-width:100%;font-size:inherit;margin:0}.t-tag{vertical-align:middle;text-transform:uppercase;margin-right:.5rem}.t-tag_deprecated{background-color:var(--tui-error-fill);color:#fff}.t-tag.t-tag_package{color:#000}.t-tabs{flex:1;margin:1.125rem .3125rem 0 0}:host-context(tui-root._mobile) .t-tabs{margin-top:.25rem}.t-content{padding:2rem 0;margin:0 min(10vw,8.75rem)}:host-context(tui-root._mobile) .t-content{padding:2rem 1.25rem;margin:0}.t-see-also{min-width:18.75rem;width:30%;float:right;margin-left:1.5rem}:host-context(tui-root._mobile) .t-see-also{float:none;width:100%;margin:0 0 1.5rem}.t-source-code{align-self:flex-end;line-height:2.75rem;margin-left:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: TuiDocSeeAlsoComponent, selector: "tui-doc-see-also", inputs: ["seeAlso"] }, { kind: "component", type: i3$1.TuiTabsWithMoreComponent, selector: "tui-tabs-with-more, nav[tuiTabsWithMore]", inputs: ["moreContent", "dropdownContent", "underline", "activeItemIndex", "itemsLimit"], outputs: ["activeItemIndexChange"] }, { kind: "component", type: i3$1.TuiTabComponent, selector: "a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]" }, { kind: "directive", type: i6.TuiItemDirective, selector: "[tuiItem]" }, { kind: "component", type: i3$1.TuiTagComponent, selector: "tui-tag, a[tuiTag], button[tuiTag]", inputs: ["value", "editable", "separator", "maxLength", "size", "showLoader", "status", "hoverable", "removable", "disabled", "autoColor", "leftContent"], outputs: ["edited"] }, { kind: "component", type: TuiDocSourceCodeComponent, selector: "tui-doc-source-code", inputs: ["header", "package", "type", "path"] }, { kind: "pipe", type: i6.TuiReplacePipe, name: "tuiReplace" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageComponent, decorators: [{
1818
+ type: Component,
1819
+ args: [{ selector: 'tui-doc-page', changeDetection: ChangeDetectionStrategy.OnPush, providers: PAGE_PROVIDERS, template: "<header class=\"t-header\">\n <h1 class=\"t-title\">\n {{ header }}\n <tui-tag\n *ngIf=\"!!deprecated || deprecated === ''\"\n status=\"custom\"\n value=\"deprecated\"\n class=\"t-tag t-tag_deprecated\"\n ></tui-tag>\n <tui-tag\n *ngIf=\"package\"\n status=\"custom\"\n class=\"t-tag t-tag_package\"\n [autoColor]=\"true\"\n [value]=\"package\"\n ></tui-tag>\n </h1>\n <tui-tabs-with-more\n *ngIf=\"tabConnectors.length\"\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n <ng-container *ngFor=\"let tab of tabConnectors; first as first; index as index\">\n <ng-container *ngIf=\"tab.pageTab || defaultTabs[index] as tabName\">\n <a\n *tuiItem\n routerLinkActive\n tuiTab\n [routerLink]=\"first ? './' : (tabName | tuiReplace: from : to)\"\n [routerLinkActiveOptions]=\"{exact: first}\"\n >\n {{ tabName }}\n </a>\n </ng-container>\n </ng-container>\n </tui-tabs-with-more>\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header\"\n [package]=\"package\"\n [path]=\"path\"\n [type]=\"type\"\n ></tui-doc-source-code>\n</header>\n<div class=\"t-content\">\n <ng-content></ng-content>\n <tui-doc-see-also\n *ngIf=\"showSeeAlso\"\n class=\"t-see-also\"\n [seeAlso]=\"seeAlso\"\n ></tui-doc-see-also>\n <ng-container *ngFor=\"let tab of tabConnectors; index as index\">\n <ng-container\n *ngIf=\"index === activeItemIndex\"\n [ngTemplateOutlet]=\"tab.template\"\n ></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0;flex-basis:0;flex-grow:1}.t-header{display:flex;font:var(--tui-font-heading-3);flex-wrap:wrap;min-height:7.25rem;color:var(--tui-text-01);box-shadow:inset 0 -1px 0 0 var(--tui-base-03);padding:3.75rem 0 0;box-sizing:border-box;flex-shrink:0;margin:0 min(10vw,8.75rem)}:host-context(tui-root._mobile) .t-header{font:var(--tui-font-heading-4);min-height:4.5rem;padding:1.25rem 1.25rem 0;margin:0}.t-title{min-width:100%;font-size:inherit;margin:0}.t-tag{vertical-align:middle;text-transform:uppercase;margin-right:.5rem}.t-tag_deprecated{background-color:var(--tui-error-fill);color:#fff}.t-tag.t-tag_package{color:#000}.t-tabs{flex:1;margin:1.125rem .3125rem 0 0}:host-context(tui-root._mobile) .t-tabs{margin-top:.25rem}.t-content{padding:2rem 0;margin:0 min(10vw,8.75rem)}:host-context(tui-root._mobile) .t-content{padding:2rem 1.25rem;margin:0}.t-see-also{min-width:18.75rem;width:30%;float:right;margin-left:1.5rem}:host-context(tui-root._mobile) .t-see-also{float:none;width:100%;margin:0 0 1.5rem}.t-source-code{align-self:flex-end;line-height:2.75rem;margin-left:auto}\n"] }]
1820
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1821
+ type: Inject,
1822
+ args: [TUI_DOC_DEFAULT_TABS]
1823
+ }] }, { type: undefined, decorators: [{
1824
+ type: Inject,
1825
+ args: [PAGE_SEE_ALSO]
1826
+ }] }]; }, propDecorators: { header: [{
1827
+ type: Input
1828
+ }], package: [{
1829
+ type: Input
1830
+ }], type: [{
1831
+ type: Input
1832
+ }], path: [{
1833
+ type: Input
1834
+ }], deprecated: [{
1835
+ type: Input
1836
+ }], tabConnectors: [{
1837
+ type: ContentChildren,
1838
+ args: [TuiDocPageTabConnectorDirective]
1839
+ }] } });
1840
+
1841
+ class TuiDocPageModule {
1842
+ }
1843
+ TuiDocPageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1844
+ TuiDocPageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageModule, declarations: [TuiDocPageComponent, TuiDocPageTabConnectorDirective], imports: [CommonModule,
1845
+ RouterModule,
1846
+ TuiDocSeeAlsoModule,
1847
+ TuiTabsModule,
1848
+ TuiTagModule,
1849
+ TuiDocSourceCodeModule,
1850
+ TuiReplacePipeModule], exports: [TuiDocPageComponent, TuiDocPageTabConnectorDirective] });
1851
+ TuiDocPageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageModule, imports: [CommonModule,
1852
+ RouterModule,
1853
+ TuiDocSeeAlsoModule,
1854
+ TuiTabsModule,
1855
+ TuiTagModule,
1856
+ TuiDocSourceCodeModule,
1857
+ TuiReplacePipeModule] });
1858
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TuiDocPageModule, decorators: [{
1859
+ type: NgModule,
1860
+ args: [{
1861
+ imports: [
1862
+ CommonModule,
1863
+ RouterModule,
1864
+ TuiDocSeeAlsoModule,
1865
+ TuiTabsModule,
1866
+ TuiTagModule,
1867
+ TuiDocSourceCodeModule,
1868
+ TuiReplacePipeModule,
1869
+ ],
1870
+ declarations: [TuiDocPageComponent, TuiDocPageTabConnectorDirective],
1871
+ exports: [TuiDocPageComponent, TuiDocPageTabConnectorDirective],
1872
+ }]
1873
+ }] });
1874
+
1875
+ /**
1876
+ * Generated bundle index. Do not edit.
1877
+ */
1878
+
1879
+ export { PAGE_PROVIDERS, PAGE_SEE_ALSO, TUI_DOC_EXAMPLE_DEFAULT_OPTIONS, TUI_DOC_EXAMPLE_OPTIONS, TuiDocCodeComponent, TuiDocCodeModule, TuiDocCopyComponent, TuiDocCopyModule, TuiDocDemoComponent, TuiDocDemoModule, TuiDocDocumentationComponent, TuiDocDocumentationModule, TuiDocDocumentationPropertyConnectorDirective, TuiDocExampleComponent, TuiDocExampleGetTabsPipe, TuiDocExampleModule, TuiDocHeaderComponent, TuiDocHeaderModule, TuiDocMainComponent, TuiDocMainModule, TuiDocNavigationComponent, TuiDocNavigationModule, TuiDocPageComponent, TuiDocPageModule, TuiDocPageTabConnectorDirective, TuiDocSeeAlsoComponent, TuiDocSeeAlsoModule, TuiDocSourceCodeComponent, TuiDocSourceCodeModule, TuiDocTabComponent, TuiDocTabModule, TuiDocTypeReferencePipe, TuiGetColorPipe, TuiGetOpacityPipe, TuiInputOpacityDirective, TuiInputOpacityModule, TuiInspectPipe, TuiIsOptionalPipe, TuiIsPrimitivePolymorpheusContentPipe, TuiLanguageSwitcherComponent, TuiLanguageSwitcherModule, TuiShowCleanerPipe, TuiStripOptionalPipe, tuiDocExampleOptionsProvider };
1880
+ //# sourceMappingURL=taiga-ui-addon-doc-components.mjs.map