@tailng-ui/components 0.1.0

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 (266) hide show
  1. package/README.md +26 -0
  2. package/package.json +14 -0
  3. package/src/index.d.ts +7 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +7 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/feedback/empty/tng-empty.component.d.ts +14 -0
  8. package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -0
  9. package/src/lib/feedback/empty/tng-empty.component.js +60 -0
  10. package/src/lib/feedback/empty/tng-empty.component.js.map +1 -0
  11. package/src/lib/feedback/index.d.ts +11 -0
  12. package/src/lib/feedback/index.d.ts.map +1 -0
  13. package/src/lib/feedback/index.js +11 -0
  14. package/src/lib/feedback/index.js.map +1 -0
  15. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts +10 -0
  16. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -0
  17. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +37 -0
  18. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -0
  19. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts +14 -0
  20. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -0
  21. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +55 -0
  22. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -0
  23. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts +10 -0
  24. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -0
  25. package/src/lib/feedback/skeleton/tng-skeleton.component.js +33 -0
  26. package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -0
  27. package/src/lib/feedback/toast/tng-toast.component.d.ts +40 -0
  28. package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -0
  29. package/src/lib/feedback/toast/tng-toast.component.js +111 -0
  30. package/src/lib/feedback/toast/tng-toast.component.js.map +1 -0
  31. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts +26 -0
  32. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -0
  33. package/src/lib/form/autocomplete/tng-autocomplete.component.js +104 -0
  34. package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -0
  35. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +44 -0
  36. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -0
  37. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +123 -0
  38. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -0
  39. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts +14 -0
  40. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -0
  41. package/src/lib/form/button-toggle/tng-button-toggle.component.js +65 -0
  42. package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -0
  43. package/src/lib/form/checkbox/tng-checkbox.component.d.ts +38 -0
  44. package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -0
  45. package/src/lib/form/checkbox/tng-checkbox.component.js +138 -0
  46. package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -0
  47. package/src/lib/form/chips/tng-chips.component.d.ts +4 -0
  48. package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -0
  49. package/src/lib/form/chips/tng-chips.component.js +16 -0
  50. package/src/lib/form/chips/tng-chips.component.js.map +1 -0
  51. package/src/lib/form/combobox/tng-combobox.component.d.ts +4 -0
  52. package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -0
  53. package/src/lib/form/combobox/tng-combobox.component.js +16 -0
  54. package/src/lib/form/combobox/tng-combobox.component.js.map +1 -0
  55. package/src/lib/form/index.d.ts +37 -0
  56. package/src/lib/form/index.d.ts.map +1 -0
  57. package/src/lib/form/index.js +37 -0
  58. package/src/lib/form/index.js.map +1 -0
  59. package/src/lib/form/input/tng-input.component.d.ts +16 -0
  60. package/src/lib/form/input/tng-input.component.d.ts.map +1 -0
  61. package/src/lib/form/input/tng-input.component.js +52 -0
  62. package/src/lib/form/input/tng-input.component.js.map +1 -0
  63. package/src/lib/form/input-otp/tng-input-otp.component.d.ts +13 -0
  64. package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -0
  65. package/src/lib/form/input-otp/tng-input-otp.component.js +138 -0
  66. package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -0
  67. package/src/lib/form/label/tng-label.component.d.ts +8 -0
  68. package/src/lib/form/label/tng-label.component.d.ts.map +1 -0
  69. package/src/lib/form/label/tng-label.component.js +29 -0
  70. package/src/lib/form/label/tng-label.component.js.map +1 -0
  71. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts +55 -0
  72. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -0
  73. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +126 -0
  74. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -0
  75. package/src/lib/form/multiselect/tng-multiselect.component.d.ts +49 -0
  76. package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -0
  77. package/src/lib/form/multiselect/tng-multiselect.component.js +112 -0
  78. package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -0
  79. package/src/lib/form/radio/tng-radio.component.d.ts +12 -0
  80. package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -0
  81. package/src/lib/form/radio/tng-radio.component.js +45 -0
  82. package/src/lib/form/radio/tng-radio.component.js.map +1 -0
  83. package/src/lib/form/select/tng-select.component.d.ts +40 -0
  84. package/src/lib/form/select/tng-select.component.d.ts.map +1 -0
  85. package/src/lib/form/select/tng-select.component.js +98 -0
  86. package/src/lib/form/select/tng-select.component.js.map +1 -0
  87. package/src/lib/form/select/tng-select.slots.d.ts +25 -0
  88. package/src/lib/form/select/tng-select.slots.d.ts.map +1 -0
  89. package/src/lib/form/select/tng-select.slots.js +23 -0
  90. package/src/lib/form/select/tng-select.slots.js.map +1 -0
  91. package/src/lib/form/slider/tng-slider.component.d.ts +11 -0
  92. package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -0
  93. package/src/lib/form/slider/tng-slider.component.js +48 -0
  94. package/src/lib/form/slider/tng-slider.component.js.map +1 -0
  95. package/src/lib/form/switch/tng-switch.component.d.ts +18 -0
  96. package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -0
  97. package/src/lib/form/switch/tng-switch.component.js +57 -0
  98. package/src/lib/form/switch/tng-switch.component.js.map +1 -0
  99. package/src/lib/form/textarea/tng-textarea.component.d.ts +17 -0
  100. package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -0
  101. package/src/lib/form/textarea/tng-textarea.component.js +54 -0
  102. package/src/lib/form/textarea/tng-textarea.component.js.map +1 -0
  103. package/src/lib/form/toggle/tng-toggle.component.d.ts +39 -0
  104. package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -0
  105. package/src/lib/form/toggle/tng-toggle.component.js +152 -0
  106. package/src/lib/form/toggle/tng-toggle.component.js.map +1 -0
  107. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts +3 -0
  108. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -0
  109. package/src/lib/form/toggle-group/tng-toggle-group.component.js +34 -0
  110. package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -0
  111. package/src/lib/layout/accordion/tng-accordion.component.d.ts +11 -0
  112. package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -0
  113. package/src/lib/layout/accordion/tng-accordion.component.js +158 -0
  114. package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -0
  115. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts +4 -0
  116. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -0
  117. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +16 -0
  118. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -0
  119. package/src/lib/layout/card/tng-card.component.d.ts +42 -0
  120. package/src/lib/layout/card/tng-card.component.d.ts.map +1 -0
  121. package/src/lib/layout/card/tng-card.component.js +186 -0
  122. package/src/lib/layout/card/tng-card.component.js.map +1 -0
  123. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts +11 -0
  124. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -0
  125. package/src/lib/layout/collapsible/tng-collapsible.component.js +40 -0
  126. package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -0
  127. package/src/lib/layout/drawer/tng-drawer.component.d.ts +12 -0
  128. package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -0
  129. package/src/lib/layout/drawer/tng-drawer.component.js +77 -0
  130. package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -0
  131. package/src/lib/layout/grid/tng-grid.component.d.ts +4 -0
  132. package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -0
  133. package/src/lib/layout/grid/tng-grid.component.js +16 -0
  134. package/src/lib/layout/grid/tng-grid.component.js.map +1 -0
  135. package/src/lib/layout/index.d.ts +16 -0
  136. package/src/lib/layout/index.d.ts.map +1 -0
  137. package/src/lib/layout/index.js +16 -0
  138. package/src/lib/layout/index.js.map +1 -0
  139. package/src/lib/layout/separator/tng-separator.component.d.ts +6 -0
  140. package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -0
  141. package/src/lib/layout/separator/tng-separator.component.js +19 -0
  142. package/src/lib/layout/separator/tng-separator.component.js.map +1 -0
  143. package/src/lib/layout/stepper/tng-stepper.component.d.ts +4 -0
  144. package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -0
  145. package/src/lib/layout/stepper/tng-stepper.component.js +16 -0
  146. package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -0
  147. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +28 -0
  148. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -0
  149. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +86 -0
  150. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -0
  151. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts +10 -0
  152. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -0
  153. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +29 -0
  154. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -0
  155. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts +3 -0
  156. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -0
  157. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +15 -0
  158. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -0
  159. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts +6 -0
  160. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -0
  161. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +16 -0
  162. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -0
  163. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts +6 -0
  164. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -0
  165. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +18 -0
  166. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -0
  167. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts +23 -0
  168. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -0
  169. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +155 -0
  170. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -0
  171. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +4 -0
  172. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -0
  173. package/src/lib/navigation/context-menu/tng-context-menu.component.js +16 -0
  174. package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -0
  175. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts +10 -0
  176. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -0
  177. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +54 -0
  178. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -0
  179. package/src/lib/navigation/index.d.ts +27 -0
  180. package/src/lib/navigation/index.d.ts.map +1 -0
  181. package/src/lib/navigation/index.js +27 -0
  182. package/src/lib/navigation/index.js.map +1 -0
  183. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts +15 -0
  184. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -0
  185. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +85 -0
  186. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -0
  187. package/src/lib/navigation/menu/tng-menu.component.d.ts +13 -0
  188. package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -0
  189. package/src/lib/navigation/menu/tng-menu.component.js +92 -0
  190. package/src/lib/navigation/menu/tng-menu.component.js.map +1 -0
  191. package/src/lib/navigation/menubar/tng-menubar.component.d.ts +5 -0
  192. package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -0
  193. package/src/lib/navigation/menubar/tng-menubar.component.js +29 -0
  194. package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -0
  195. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts +4 -0
  196. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -0
  197. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +16 -0
  198. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -0
  199. package/src/lib/navigation/tabs/tng-tabs.component.d.ts +5 -0
  200. package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -0
  201. package/src/lib/navigation/tabs/tng-tabs.component.js +41 -0
  202. package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -0
  203. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts +4 -0
  204. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -0
  205. package/src/lib/navigation/toolbar/tng-toolbar.component.js +16 -0
  206. package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -0
  207. package/src/lib/overlay/dialog/tng-dialog.component.d.ts +43 -0
  208. package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -0
  209. package/src/lib/overlay/dialog/tng-dialog.component.js +286 -0
  210. package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -0
  211. package/src/lib/overlay/index.d.ts +7 -0
  212. package/src/lib/overlay/index.d.ts.map +1 -0
  213. package/src/lib/overlay/index.js +7 -0
  214. package/src/lib/overlay/index.js.map +1 -0
  215. package/src/lib/overlay/popover/tng-popover.component.d.ts +28 -0
  216. package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -0
  217. package/src/lib/overlay/popover/tng-popover.component.js +133 -0
  218. package/src/lib/overlay/popover/tng-popover.component.js.map +1 -0
  219. package/src/lib/overlay/tng-overlay-runtime.d.ts +11 -0
  220. package/src/lib/overlay/tng-overlay-runtime.d.ts.map +1 -0
  221. package/src/lib/overlay/tng-overlay-runtime.js +11 -0
  222. package/src/lib/overlay/tng-overlay-runtime.js.map +1 -0
  223. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +31 -0
  224. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -0
  225. package/src/lib/overlay/tooltip/tng-tooltip.component.js +111 -0
  226. package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -0
  227. package/src/lib/utility/avatar/tng-avatar.component.d.ts +19 -0
  228. package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -0
  229. package/src/lib/utility/avatar/tng-avatar.component.js +66 -0
  230. package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -0
  231. package/src/lib/utility/badge/tng-badge.component.d.ts +4 -0
  232. package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -0
  233. package/src/lib/utility/badge/tng-badge.component.js +13 -0
  234. package/src/lib/utility/badge/tng-badge.component.js.map +1 -0
  235. package/src/lib/utility/button/tng-button.component.d.ts +18 -0
  236. package/src/lib/utility/button/tng-button.component.d.ts.map +1 -0
  237. package/src/lib/utility/button/tng-button.component.js +32 -0
  238. package/src/lib/utility/button/tng-button.component.js.map +1 -0
  239. package/src/lib/utility/code-block/highlighting.d.ts +96 -0
  240. package/src/lib/utility/code-block/highlighting.d.ts.map +1 -0
  241. package/src/lib/utility/code-block/highlighting.js +220 -0
  242. package/src/lib/utility/code-block/highlighting.js.map +1 -0
  243. package/src/lib/utility/code-block/tng-code-block.component.d.ts +118 -0
  244. package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -0
  245. package/src/lib/utility/code-block/tng-code-block.component.js +586 -0
  246. package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -0
  247. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts +39 -0
  248. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -0
  249. package/src/lib/utility/copy-button/tng-copy-button.component.js +127 -0
  250. package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -0
  251. package/src/lib/utility/index.d.ts +17 -0
  252. package/src/lib/utility/index.d.ts.map +1 -0
  253. package/src/lib/utility/index.js +16 -0
  254. package/src/lib/utility/index.js.map +1 -0
  255. package/src/lib/utility/tag/tng-tag.component.d.ts +10 -0
  256. package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -0
  257. package/src/lib/utility/tag/tng-tag.component.js +18 -0
  258. package/src/lib/utility/tag/tng-tag.component.js.map +1 -0
  259. package/src/lib/utility/tree/tng-tree.component.d.ts +72 -0
  260. package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -0
  261. package/src/lib/utility/tree/tng-tree.component.js +336 -0
  262. package/src/lib/utility/tree/tng-tree.component.js.map +1 -0
  263. package/src/test-setup.d.ts +3 -0
  264. package/src/test-setup.d.ts.map +1 -0
  265. package/src/test-setup.js +10 -0
  266. package/src/test-setup.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-code-block.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/code-block/tng-code-block.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, type SafeHtml } from '@angular/platform-browser';\nimport {\n TngCodeBlock as TngCodeBlockPrimitive,\n TngCodeBlockBody as TngCodeBlockBodyPrimitive,\n TngCodeBlockCode as TngCodeBlockCodePrimitive,\n TngCodeBlockGutter as TngCodeBlockGutterPrimitive,\n TngCodeBlockHeader as TngCodeBlockHeaderPrimitive,\n TngCopy,\n} from '@tailng-ui/primitives';\nimport type { TngCopyErrorEvent, TngCopyEvent, TngCopySuccessEvent } from '@tailng-ui/primitives';\nimport {\n escapeTngCodeHtml,\n normalizeTngCodeLanguage,\n resolveTngCodeHighlightResult,\n TNG_CODE_HIGHLIGHTING_CONFIG,\n type TngCodeHighlightToken,\n type TngCodeHighlightTokenLine,\n type TngCodeHighlightRequest,\n type TngNormalizedCodeHighlightResult,\n type TngResolvedCodeHighlightingConfig,\n} from './highlighting';\n\nexport type TngCodeBlockCopyMode = boolean | 'auto';\nexport type TngCodeBlockHighlightLineInput = number | readonly [number, number];\nexport type TngCodeBlockHighlightMode = 'auto' | 'off' | 'on';\nexport type TngCodeBlockLineNumbersMode = boolean | 'auto';\nexport type TngCodeBlockRenderState = 'error' | 'highlighted' | 'highlighting' | 'idle';\nexport type TngCodeBlockSanitizeHtml = boolean | 'auto';\nexport type TngCodeBlockVariant = 'compact' | 'default' | 'ghost';\n\nexport interface TngCodeBlockCopyContext {\n code: string;\n language: string | null;\n theme: string | null;\n}\n\nexport interface TngCodeBlockRenderStateChange {\n error?: unknown;\n state: TngCodeBlockRenderState;\n}\n\ntype TngCodeBlockCopyState = 'copied' | 'error' | 'idle';\n\ntype TngCodeBlockRenderRequest = Readonly<{\n adapter: string | null;\n code: string;\n includeLineWrappers: boolean;\n language: string | null;\n theme: string | null;\n}>;\n\ntype TngCodeBlockRenderedLine = Readonly<{\n dimmed: boolean;\n highlighted: boolean;\n html: SafeHtml | string;\n lineNumber: number;\n}>;\n\nconst defaultCopyResetDuration = 1500;\nconst highlightModeSet = new Set<TngCodeBlockHighlightMode>(['auto', 'off', 'on']);\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nfunction coerceOptionalBoolean(value: boolean | string | null | undefined): boolean | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\nfunction coercePositiveInteger(value: number | string, fallback: number): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return fallback;\n }\n\n return Math.max(1, Math.round(numericValue));\n}\n\nfunction coerceOptionalPositiveNumber(value: number | string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return undefined;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nfunction coerceTngCodeBlockCopyMode(\n value: TngCodeBlockCopyMode | boolean | string | null | undefined,\n): TngCodeBlockCopyMode {\n if (value === 'auto' || value === undefined || value === null) {\n return 'auto';\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return 'auto';\n}\n\nfunction coerceTngCodeBlockLineNumbersMode(\n value: TngCodeBlockLineNumbersMode | boolean | string | null | undefined,\n): TngCodeBlockLineNumbersMode {\n if (value === 'auto') {\n return 'auto';\n }\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return false;\n}\n\nfunction coerceTngCodeBlockSanitizeHtml(\n value: TngCodeBlockSanitizeHtml | string | null | undefined,\n): TngCodeBlockSanitizeHtml {\n if (value === undefined || value === null || value === 'auto') {\n return 'auto';\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return 'auto';\n}\n\nfunction normalizeHighlightLineNumber(value: number): number | null {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n const normalized = Math.round(value);\n return normalized > 0 ? normalized : null;\n}\n\nfunction toNormalizedHighlightLineSet(\n value: readonly TngCodeBlockHighlightLineInput[] | null | undefined,\n): ReadonlySet<number> {\n if (value === undefined || value === null || value.length === 0) {\n return new Set<number>();\n }\n\n const normalizedValues = new Set<number>();\n\n for (const entry of value) {\n if (typeof entry === 'number') {\n const normalized = normalizeHighlightLineNumber(entry);\n if (normalized !== null) {\n normalizedValues.add(normalized);\n }\n continue;\n }\n\n const [start, end] = entry;\n const normalizedStart = normalizeHighlightLineNumber(start);\n const normalizedEnd = normalizeHighlightLineNumber(end);\n if (normalizedStart === null || normalizedEnd === null) {\n continue;\n }\n\n const from = Math.min(normalizedStart, normalizedEnd);\n const to = Math.max(normalizedStart, normalizedEnd);\n for (let current = from; current <= to; current += 1) {\n normalizedValues.add(current);\n }\n }\n\n return normalizedValues;\n}\n\nfunction tokenClassNameToAttributeValue(className: string | null | undefined): string {\n if (className === null || className === undefined) {\n return '';\n }\n\n return className\n .trim()\n .split(/\\s+/)\n .filter((token) => token.length > 0)\n .join(' ');\n}\n\nfunction renderToken(token: TngCodeHighlightToken): string {\n const escapedContent = escapeTngCodeHtml(token.content);\n const normalizedClassName = tokenClassNameToAttributeValue(token.className);\n if (normalizedClassName.length === 0) {\n return escapedContent;\n }\n\n return `<span class=\"${escapeTngCodeHtml(normalizedClassName)}\">${escapedContent}</span>`;\n}\n\nfunction renderTokenLine(line: TngCodeHighlightTokenLine): string {\n return line.map((token) => renderToken(token)).join('');\n}\n\nfunction splitCodeLines(code: string): readonly string[] {\n if (code.length === 0) {\n return [''];\n }\n\n const lines = code.split('\\n');\n if (lines.length > 1 && lines[lines.length - 1] === '') {\n lines.pop();\n }\n\n return lines;\n}\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nestedError = (value as { error: unknown }).error;\n if (nestedError instanceof Error) {\n return nestedError;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toCssSizeValue(value: number | string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return `${Math.max(0, value)}px`;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction shouldHighlight(mode: TngCodeBlockHighlightMode): boolean {\n return mode === 'auto' || mode === 'on';\n}\n\nexport function coerceTngCodeBlockHighlightMode(value: string): TngCodeBlockHighlightMode {\n if (highlightModeSet.has(value as TngCodeBlockHighlightMode)) {\n return value as TngCodeBlockHighlightMode;\n }\n\n return 'auto';\n}\n\nexport function coerceTngCodeBlockCopyResetDuration(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultCopyResetDuration;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function coerceTngCodeBlockStartingLineNumber(value: number | string): number {\n return coercePositiveInteger(value, 1);\n}\n\nexport function normalizeTngCodeBlockCode(value: string | null | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n return value.replace(/\\r\\n?/g, '\\n');\n}\n\nexport function toTngCodeBlockLineNumbers(\n code: string,\n startingLineNumber = 1,\n): readonly number[] {\n const normalizedStart = Math.max(1, Math.round(startingLineNumber));\n return splitCodeLines(code).map((_, index) => normalizedStart + index);\n}\n\n@Component({\n selector: 'tng-code-block',\n imports: [\n TngCodeBlockPrimitive,\n TngCodeBlockHeaderPrimitive,\n TngCodeBlockBodyPrimitive,\n TngCodeBlockGutterPrimitive,\n TngCodeBlockCodePrimitive,\n TngCopy,\n ],\n templateUrl: './tng-code-block.component.html',\n styleUrl: './tng-code-block.component.css',\n})\nexport class TngCodeBlockComponent implements OnDestroy {\n public readonly adapter = input<string | null>(null);\n public readonly caption = input<string | null>(null);\n public readonly code = input<string>('');\n public readonly copyMode = input<TngCodeBlockCopyMode, TngCodeBlockCopyMode | boolean | string | null | undefined>(\n 'auto',\n {\n alias: 'copy',\n transform: coerceTngCodeBlockCopyMode,\n },\n );\n public readonly copyLabel = input<string>('Copy code');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyResetDuration = input<number, number | string>(defaultCopyResetDuration, {\n transform: coerceTngCodeBlockCopyResetDuration,\n });\n public readonly copySuccessDurationMs = input<number | undefined, number | string | undefined>(\n undefined,\n {\n transform: coerceOptionalPositiveNumber,\n },\n );\n public readonly copyText = input<string | ((ctx: TngCodeBlockCopyContext) => string) | null>(null);\n public readonly errorLabel = input<string>('Copy failed');\n public readonly focusLines = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly highlight = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly highlightDebounceMs = input<number, number | string>(0, {\n transform: coerceTngCodeBlockCopyResetDuration,\n });\n public readonly highlightLines = input<readonly TngCodeBlockHighlightLineInput[] | null>(null);\n public readonly highlightMode = input<TngCodeBlockHighlightMode, string>('auto', {\n transform: coerceTngCodeBlockHighlightMode,\n });\n public readonly language = input<string | null>(null);\n public readonly lineNumbersMode = input<\n TngCodeBlockLineNumbersMode,\n TngCodeBlockLineNumbersMode | boolean | string | null | undefined\n >(false, {\n alias: 'lineNumbers',\n transform: coerceTngCodeBlockLineNumbersMode,\n });\n public readonly maxHeight = input<string | number | null>(null);\n public readonly sanitizeHtml = input<\n TngCodeBlockSanitizeHtml,\n TngCodeBlockSanitizeHtml | string | null | undefined\n >('auto', {\n transform: coerceTngCodeBlockSanitizeHtml,\n });\n public readonly showHeader = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly showLanguageBadge = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly showLineNumbers = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n transform: coerceOptionalBoolean,\n },\n );\n public readonly startingLineNumber = input<number, number | string>(1, {\n transform: coerceTngCodeBlockStartingLineNumber,\n });\n public readonly theme = input<string | null>(null);\n public readonly title = input<string | null>(null);\n public readonly variant = input<TngCodeBlockVariant>('default');\n public readonly wrap = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public readonly copy = output<TngCopyEvent>();\n public readonly copyError = output<TngCopyErrorEvent>();\n public readonly copySuccess = output<TngCopySuccessEvent>();\n public readonly renderStateChange = output<TngCodeBlockRenderStateChange>();\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly copyButtonLabel = computed((): string => {\n const state = this.copyState();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly copyPayload = computed((): string => {\n const value = this.copyText();\n if (typeof value === 'function') {\n try {\n return value({\n code: this.normalizedCode(),\n language: this.languageForBadge(),\n theme: normalizeTngCodeLanguage(this.theme()),\n });\n } catch {\n return this.normalizedCode();\n }\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return this.normalizedCode();\n });\n\n protected readonly dataHasCopy = computed((): 'false' | 'true' =>\n this.shouldShowCopyAction() ? 'true' : 'false',\n );\n\n protected readonly dataHasTitle = computed((): 'false' | 'true' =>\n this.titleText() === null ? 'false' : 'true',\n );\n\n protected readonly dataHighlighted = computed((): 'false' | 'true' =>\n this.renderState() === 'highlighted' ? 'true' : 'false',\n );\n\n protected readonly dataWrap = computed((): 'false' | 'true' => (this.wrap() ? 'true' : 'false'));\n\n protected readonly effectiveCopyResetDuration = computed((): number => {\n return this.copySuccessDurationMs() ?? this.copyResetDuration();\n });\n\n protected readonly effectiveLineNumbers = computed((): boolean => {\n const legacyValue = this.showLineNumbers();\n if (legacyValue !== undefined) {\n return legacyValue;\n }\n\n const mode = this.lineNumbersMode();\n if (mode === 'auto') {\n return splitCodeLines(this.normalizedCode()).length > 1;\n }\n\n return mode;\n });\n\n protected readonly hasHeaderContent = computed((): boolean => {\n return this.titleText() !== null || this.hasLanguageBadge() || this.shouldShowCopyAction();\n });\n\n protected readonly hasLanguageBadge = computed((): boolean => {\n return this.showLanguageBadge() && this.languageForBadge() !== null;\n });\n\n protected readonly highlightLineSet = computed((): ReadonlySet<number> =>\n toNormalizedHighlightLineSet(this.highlightLines()),\n );\n\n protected readonly isHighlighting = computed((): boolean => this.renderState() === 'highlighting');\n\n protected readonly languageForBadge = computed((): string | null => {\n return this.resolvedLanguage() ?? this.normalizedLanguage();\n });\n\n protected readonly languageLabel = computed((): string => {\n return this.languageForBadge() ?? 'text';\n });\n\n protected readonly lineNumbers = computed((): readonly number[] => {\n return this.renderedLines().map((line) => line.lineNumber);\n });\n\n protected readonly maxHeightCssValue = computed((): string | null => toCssSizeValue(this.maxHeight()));\n\n protected readonly normalizedCode = computed((): string => normalizeTngCodeBlockCode(this.code()));\n\n protected readonly renderState = signal<TngCodeBlockRenderState>('idle');\n\n protected readonly renderedLines = computed((): readonly TngCodeBlockRenderedLine[] => {\n const baseLines = this.baseLineHtml();\n const start = this.startingLineNumber();\n const highlightSet = this.highlightLineSet();\n const shouldDim = this.focusLines() && highlightSet.size > 0;\n\n return baseLines.map((html, index) => {\n const lineNumber = start + index;\n const highlighted = highlightSet.has(lineNumber);\n\n return {\n dimmed: shouldDim && !highlighted,\n highlighted,\n html,\n lineNumber,\n };\n });\n });\n\n protected readonly shouldRenderBodyLineNumbers = computed((): boolean => this.effectiveLineNumbers());\n\n protected readonly shouldRenderHeader = computed((): boolean => {\n return this.showHeader() && this.hasHeaderContent();\n });\n\n protected readonly shouldShowCopyAction = computed((): boolean => {\n const mode = this.copyMode();\n if (mode === 'auto') {\n return this.normalizedCode().length > 0;\n }\n\n return mode;\n });\n\n protected readonly titleText = computed((): string | null => normalizeOptionalString(this.title()));\n\n private readonly baseLineHtml = signal<readonly (SafeHtml | string)[]>(['']);\n private readonly copyState = signal<TngCodeBlockCopyState>('idle');\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly highlightingConfig = inject<TngResolvedCodeHighlightingConfig>(\n TNG_CODE_HIGHLIGHTING_CONFIG,\n );\n private readonly normalizedLanguage = computed((): string | null => normalizeTngCodeLanguage(this.language()));\n private readonly resolvedLanguage = signal<string | null>(null);\n\n private copyResetTimer: ReturnType<typeof setTimeout> | null = null;\n private destroyed = false;\n private highlightDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private highlightRequestId = 0;\n private lastEmittedRenderState: TngCodeBlockRenderState = 'idle';\n private readonly renderCache = new Map<string, TngNormalizedCodeHighlightResult | null>();\n\n public constructor() {\n effect((): void => {\n const request: TngCodeBlockRenderRequest = {\n adapter: normalizeTngCodeLanguage(this.adapter()),\n code: this.normalizedCode(),\n includeLineWrappers: this.shouldIncludeLineWrappers(),\n language: this.normalizedLanguage(),\n theme: normalizeTngCodeLanguage(this.theme()),\n };\n\n this.enqueueRenderRequest({\n request,\n shouldHighlight: this.shouldHighlightCode(),\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.destroyed = true;\n this.highlightRequestId += 1;\n this.clearCopyResetTimer();\n this.clearHighlightDebounceTimer();\n }\n\n protected onPrimitiveCopy(...args: readonly unknown[]): void {\n const [event] = args;\n if (\n typeof event === 'object' &&\n event !== null &&\n 'text' in event &&\n 'trigger' in event &&\n typeof (event as { text: unknown }).text === 'string' &&\n typeof (event as { trigger: unknown }).trigger === 'string'\n ) {\n this.copy.emit(event as TngCopyEvent);\n }\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [event] = args;\n const normalizedError = toNormalizedCopyError(event);\n\n this.copyState.set('error');\n this.tngCopyError.emit(normalizedError);\n\n if (typeof event === 'object' && event !== null && 'error' in event) {\n this.copyError.emit(event as TngCopyErrorEvent);\n } else {\n this.copyError.emit({ error: normalizedError });\n }\n\n this.scheduleCopyStateReset();\n }\n\n protected onPrimitiveCopySuccess(...args: readonly unknown[]): void {\n const [event] = args;\n if (\n typeof event !== 'object' ||\n event === null ||\n !('text' in event) ||\n !('method' in event) ||\n typeof (event as { text: unknown }).text !== 'string' ||\n typeof (event as { method: unknown }).method !== 'string'\n ) {\n return;\n }\n\n const payload = event as TngCopySuccessEvent;\n this.copyState.set('copied');\n this.copySuccess.emit(payload);\n this.tngCopied.emit(payload.text);\n this.scheduleCopyStateReset();\n }\n\n private applyPlainText(code: string, language: string | null): void {\n this.resolvedLanguage.set(language);\n this.baseLineHtml.set(splitCodeLines(code).map((line) => escapeTngCodeHtml(line)));\n }\n\n private applyResolvedHighlightResult(\n result: TngNormalizedCodeHighlightResult,\n request: TngCodeBlockRenderRequest,\n ): boolean {\n this.resolvedLanguage.set(result.language ?? request.language);\n\n if (result.kind === 'tokens') {\n if (result.tokens.length === 0) {\n return false;\n }\n\n this.baseLineHtml.set(result.tokens.map((line) => renderTokenLine(line)));\n return true;\n }\n\n const htmlLines = result.html.split('\\n');\n if (htmlLines.length === 0 || (htmlLines.length === 1 && htmlLines[0].length === 0)) {\n return false;\n }\n\n const shouldBypassSanitization = this.sanitizeHtml() === false && result.trustedHtml;\n if (shouldBypassSanitization) {\n this.baseLineHtml.set(\n htmlLines.map((line) => this.domSanitizer.bypassSecurityTrustHtml(line)),\n );\n return true;\n }\n\n this.baseLineHtml.set(htmlLines);\n return true;\n }\n\n private buildCacheKey(request: TngCodeBlockRenderRequest): string {\n return [\n request.adapter ?? '',\n request.language ?? '',\n request.theme ?? '',\n request.includeLineWrappers ? '1' : '0',\n request.code,\n ].join('\\u241f');\n }\n\n private clearCopyResetTimer(): void {\n if (this.copyResetTimer === null) {\n return;\n }\n\n clearTimeout(this.copyResetTimer);\n this.copyResetTimer = null;\n }\n\n private clearHighlightDebounceTimer(): void {\n if (this.highlightDebounceTimer === null) {\n return;\n }\n\n clearTimeout(this.highlightDebounceTimer);\n this.highlightDebounceTimer = null;\n }\n\n private enqueueRenderRequest(input: Readonly<{ request: TngCodeBlockRenderRequest; shouldHighlight: boolean }>): void {\n this.clearHighlightDebounceTimer();\n\n const debounceMs = this.highlightDebounceMs();\n if (debounceMs <= 0) {\n void this.renderRequest(input);\n return;\n }\n\n this.highlightDebounceTimer = setTimeout((): void => {\n this.highlightDebounceTimer = null;\n void this.renderRequest(input);\n }, debounceMs);\n }\n\n private isStaleRequest(requestId: number): boolean {\n return this.destroyed || requestId !== this.highlightRequestId;\n }\n\n private scheduleCopyStateReset(): void {\n this.clearCopyResetTimer();\n this.copyResetTimer = setTimeout((): void => {\n this.copyState.set('idle');\n this.copyResetTimer = null;\n }, this.effectiveCopyResetDuration());\n }\n\n private setRenderState(state: TngCodeBlockRenderState, error?: unknown): void {\n this.renderState.set(state);\n\n if (this.lastEmittedRenderState === state) {\n return;\n }\n\n this.lastEmittedRenderState = state;\n if (state === 'error') {\n this.renderStateChange.emit({ error, state });\n return;\n }\n\n this.renderStateChange.emit({ state });\n }\n\n private shouldHighlightCode(): boolean {\n if (!this.highlight()) {\n return false;\n }\n\n return shouldHighlight(this.highlightMode());\n }\n\n private shouldIncludeLineWrappers(): boolean {\n return this.effectiveLineNumbers() || this.highlightLineSet().size > 0 || this.focusLines();\n }\n\n private toHighlightRequest(request: TngCodeBlockRenderRequest): TngCodeHighlightRequest {\n return {\n adapter: request.adapter,\n code: request.code,\n includeLineWrappers: request.includeLineWrappers,\n language: request.language,\n theme: request.theme,\n };\n }\n\n private async renderRequest(input: Readonly<{ request: TngCodeBlockRenderRequest; shouldHighlight: boolean }>): Promise<void> {\n const requestId = this.highlightRequestId + 1;\n this.highlightRequestId = requestId;\n\n if (!input.shouldHighlight) {\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('idle');\n return;\n }\n\n this.setRenderState('highlighting');\n\n try {\n const cacheKey = this.buildCacheKey(input.request);\n let resolvedResult = this.renderCache.get(cacheKey);\n if (resolvedResult === undefined) {\n resolvedResult = await resolveTngCodeHighlightResult(\n this.toHighlightRequest(input.request),\n this.highlightingConfig,\n );\n this.renderCache.set(cacheKey, resolvedResult);\n }\n\n if (this.isStaleRequest(requestId)) {\n return;\n }\n\n if (resolvedResult === null) {\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('highlighted');\n return;\n }\n\n const didRenderHighlight = this.applyResolvedHighlightResult(resolvedResult, input.request);\n if (!didRenderHighlight) {\n this.applyPlainText(input.request.code, input.request.language);\n }\n\n this.setRenderState('highlighted');\n } catch (error) {\n if (this.isStaleRequest(requestId)) {\n return;\n }\n\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('error', error);\n }\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { type OnDestroy } from '@angular/core';
2
+ import type { TngCopyFromTarget, TngCopyIgnoreSelectorsInput } from '@tailng-ui/primitives';
3
+ type TngCopyButtonState = 'copied' | 'copying' | 'error' | 'idle';
4
+ export type TngCopyButtonAppearance = 'ghost' | 'outline' | 'solid';
5
+ export type TngCopyButtonSize = 'md' | 'sm';
6
+ type TngCopyButtonIconState = 'copied' | 'copy';
7
+ export declare function coerceTngCopyButtonResetDelay(value: number | string): number;
8
+ export declare function resolveTngCopyButtonIconState(state: TngCopyButtonState): TngCopyButtonIconState;
9
+ export declare class TngCopyButtonComponent implements OnDestroy {
10
+ readonly appearance: import("@angular/core").InputSignal<TngCopyButtonAppearance>;
11
+ readonly copiedIconText: import("@angular/core").InputSignal<string>;
12
+ readonly copyLabel: import("@angular/core").InputSignal<string>;
13
+ readonly copyIconText: import("@angular/core").InputSignal<string>;
14
+ readonly copiedLabel: import("@angular/core").InputSignal<string>;
15
+ readonly copyingLabel: import("@angular/core").InputSignal<string>;
16
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
17
+ readonly errorLabel: import("@angular/core").InputSignal<string>;
18
+ readonly from: import("@angular/core").InputSignal<TngCopyFromTarget>;
19
+ readonly ignoreSelectors: import("@angular/core").InputSignal<TngCopyIgnoreSelectorsInput>;
20
+ readonly resetDelay: import("@angular/core").InputSignalWithTransform<number, string | number>;
21
+ readonly size: import("@angular/core").InputSignal<TngCopyButtonSize>;
22
+ readonly showIcon: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
23
+ readonly text: import("@angular/core").InputSignal<string | null | undefined>;
24
+ readonly tngCopied: import("@angular/core").OutputEmitterRef<string>;
25
+ readonly tngCopyError: import("@angular/core").OutputEmitterRef<Error>;
26
+ protected readonly liveMessage: import("@angular/core").Signal<string>;
27
+ protected readonly label: import("@angular/core").Signal<string>;
28
+ protected readonly iconState: import("@angular/core").Signal<TngCopyButtonIconState>;
29
+ protected readonly state: import("@angular/core").WritableSignal<TngCopyButtonState>;
30
+ private resetTimer;
31
+ ngOnDestroy(): void;
32
+ protected onHostClick(): void;
33
+ protected onPrimitiveCopied(payload: string): void;
34
+ protected onPrimitiveCopyError(...args: readonly unknown[]): void;
35
+ private clearResetTimer;
36
+ private scheduleReset;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=tng-copy-button.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-copy-button.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAI5F,KAAK,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,KAAK,sBAAsB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqBhD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAO5E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,kBAAkB,GAAG,sBAAsB,CAM/F;AAED,qBAMa,sBAAuB,YAAW,SAAS;IACtD,SAAgB,UAAU,+DAA6C;IACvE,SAAgB,cAAc,8CAAsB;IACpD,SAAgB,SAAS,8CAAyB;IAClD,SAAgB,YAAY,8CAAsB;IAClD,SAAgB,WAAW,8CAA2B;IACtD,SAAgB,YAAY,8CAA+B;IAC3D,SAAgB,QAAQ,8EAErB;IACH,SAAgB,UAAU,8CAAgC;IAC1D,SAAgB,IAAI,yDAAkC;IACtD,SAAgB,eAAe,mEAA4C;IAC3E,SAAgB,UAAU,4EAEvB;IACH,SAAgB,IAAI,yDAAkC;IACtD,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,iEAA+C;IAEnE,SAAgB,SAAS,mDAAoB;IAC7C,SAAgB,YAAY,kDAAmB;IAE/C,SAAS,CAAC,QAAQ,CAAC,WAAW,yCAW3B;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAerB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,yDAE1B;IAEF,SAAS,CAAC,QAAQ,CAAC,KAAK,6DAAsC;IAE9D,OAAO,CAAC,UAAU,CAA8C;IAEzD,WAAW,IAAI,IAAI;IAI1B,SAAS,CAAC,WAAW,IAAI,IAAI;IAQ7B,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMlD,SAAS,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAQjE,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;CAOtB"}
@@ -0,0 +1,127 @@
1
+ import { __decorate } from "tslib";
2
+ import { booleanAttribute, Component, computed, input, output, signal, } from '@angular/core';
3
+ import { TngCopy } from '@tailng-ui/primitives';
4
+ const defaultResetDelay = 1500;
5
+ function toNormalizedCopyError(value) {
6
+ if (value instanceof Error) {
7
+ return value;
8
+ }
9
+ if (typeof value === 'object' && value !== null && 'error' in value) {
10
+ const nested = value.error;
11
+ if (nested instanceof Error) {
12
+ return nested;
13
+ }
14
+ }
15
+ return new Error('Copy failed.');
16
+ }
17
+ function toRoundedPositiveNumber(value) {
18
+ return Math.max(0, Math.round(value));
19
+ }
20
+ export function coerceTngCopyButtonResetDelay(value) {
21
+ const numericValue = typeof value === 'number' ? value : Number(value);
22
+ if (!Number.isFinite(numericValue)) {
23
+ return defaultResetDelay;
24
+ }
25
+ return toRoundedPositiveNumber(numericValue);
26
+ }
27
+ export function resolveTngCopyButtonIconState(state) {
28
+ if (state === 'copied') {
29
+ return 'copied';
30
+ }
31
+ return 'copy';
32
+ }
33
+ let TngCopyButtonComponent = class TngCopyButtonComponent {
34
+ appearance = input('outline');
35
+ copiedIconText = input('✓');
36
+ copyLabel = input('Copy');
37
+ copyIconText = input('⧉');
38
+ copiedLabel = input('Copied');
39
+ copyingLabel = input('Copying...');
40
+ disabled = input(false, {
41
+ transform: booleanAttribute,
42
+ });
43
+ errorLabel = input('Copy failed');
44
+ from = input(null);
45
+ ignoreSelectors = input(null);
46
+ resetDelay = input(defaultResetDelay, {
47
+ transform: coerceTngCopyButtonResetDelay,
48
+ });
49
+ size = input('md');
50
+ showIcon = input(true, {
51
+ transform: booleanAttribute,
52
+ });
53
+ text = input(undefined);
54
+ tngCopied = output();
55
+ tngCopyError = output();
56
+ liveMessage = computed(() => {
57
+ const state = this.state();
58
+ if (state === 'copied') {
59
+ return this.copiedLabel();
60
+ }
61
+ if (state === 'error') {
62
+ return this.errorLabel();
63
+ }
64
+ return '';
65
+ });
66
+ label = computed(() => {
67
+ const state = this.state();
68
+ if (state === 'copying') {
69
+ return this.copyingLabel();
70
+ }
71
+ if (state === 'copied') {
72
+ return this.copiedLabel();
73
+ }
74
+ if (state === 'error') {
75
+ return this.errorLabel();
76
+ }
77
+ return this.copyLabel();
78
+ });
79
+ iconState = computed(() => resolveTngCopyButtonIconState(this.state()));
80
+ state = signal('idle');
81
+ resetTimer = null;
82
+ ngOnDestroy() {
83
+ this.clearResetTimer();
84
+ }
85
+ onHostClick() {
86
+ if (this.disabled()) {
87
+ return;
88
+ }
89
+ this.state.set('copying');
90
+ }
91
+ onPrimitiveCopied(payload) {
92
+ this.state.set('copied');
93
+ this.tngCopied.emit(payload);
94
+ this.scheduleReset();
95
+ }
96
+ onPrimitiveCopyError(...args) {
97
+ const [error] = args;
98
+ const normalizedError = toNormalizedCopyError(error);
99
+ this.state.set('error');
100
+ this.tngCopyError.emit(normalizedError);
101
+ this.scheduleReset();
102
+ }
103
+ clearResetTimer() {
104
+ if (this.resetTimer === null) {
105
+ return;
106
+ }
107
+ clearTimeout(this.resetTimer);
108
+ this.resetTimer = null;
109
+ }
110
+ scheduleReset() {
111
+ this.clearResetTimer();
112
+ this.resetTimer = setTimeout(() => {
113
+ this.state.set('idle');
114
+ this.resetTimer = null;
115
+ }, this.resetDelay());
116
+ }
117
+ };
118
+ TngCopyButtonComponent = __decorate([
119
+ Component({
120
+ selector: 'tng-copy-button',
121
+ imports: [TngCopy],
122
+ templateUrl: './tng-copy-button.component.html',
123
+ styleUrl: './tng-copy-button.component.css',
124
+ })
125
+ ], TngCopyButtonComponent);
126
+ export { TngCopyButtonComponent };
127
+ //# sourceMappingURL=tng-copy-button.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-copy-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { TngCopy } from '@tailng-ui/primitives';\nimport type { TngCopyFromTarget, TngCopyIgnoreSelectorsInput } from '@tailng-ui/primitives';\n\nconst defaultResetDelay = 1500;\n\ntype TngCopyButtonState = 'copied' | 'copying' | 'error' | 'idle';\nexport type TngCopyButtonAppearance = 'ghost' | 'outline' | 'solid';\nexport type TngCopyButtonSize = 'md' | 'sm';\ntype TngCopyButtonIconState = 'copied' | 'copy';\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nested = (value as { error: unknown }).error;\n if (nested instanceof Error) {\n return nested;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nexport function coerceTngCopyButtonResetDelay(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultResetDelay;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function resolveTngCopyButtonIconState(state: TngCopyButtonState): TngCopyButtonIconState {\n if (state === 'copied') {\n return 'copied';\n }\n\n return 'copy';\n}\n\n@Component({\n selector: 'tng-copy-button',\n imports: [TngCopy],\n templateUrl: './tng-copy-button.component.html',\n styleUrl: './tng-copy-button.component.css',\n})\nexport class TngCopyButtonComponent implements OnDestroy {\n public readonly appearance = input<TngCopyButtonAppearance>('outline');\n public readonly copiedIconText = input<string>('✓');\n public readonly copyLabel = input<string>('Copy');\n public readonly copyIconText = input<string>('⧉');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyingLabel = input<string>('Copying...');\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly errorLabel = input<string>('Copy failed');\n public readonly from = input<TngCopyFromTarget>(null);\n public readonly ignoreSelectors = input<TngCopyIgnoreSelectorsInput>(null);\n public readonly resetDelay = input<number, number | string>(defaultResetDelay, {\n transform: coerceTngCopyButtonResetDelay,\n });\n public readonly size = input<TngCopyButtonSize>('md');\n public readonly showIcon = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly text = input<string | null | undefined>(undefined);\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly liveMessage = computed((): string => {\n const state = this.state();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return '';\n });\n\n protected readonly label = computed((): string => {\n const state = this.state();\n if (state === 'copying') {\n return this.copyingLabel();\n }\n\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly iconState = computed<TngCopyButtonIconState>(() =>\n resolveTngCopyButtonIconState(this.state()),\n );\n\n protected readonly state = signal<TngCopyButtonState>('idle');\n\n private resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n public ngOnDestroy(): void {\n this.clearResetTimer();\n }\n\n protected onHostClick(): void {\n if (this.disabled()) {\n return;\n }\n\n this.state.set('copying');\n }\n\n protected onPrimitiveCopied(payload: string): void {\n this.state.set('copied');\n this.tngCopied.emit(payload);\n this.scheduleReset();\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [error] = args;\n const normalizedError = toNormalizedCopyError(error);\n this.state.set('error');\n this.tngCopyError.emit(normalizedError);\n this.scheduleReset();\n }\n\n private clearResetTimer(): void {\n if (this.resetTimer === null) {\n return;\n }\n\n clearTimeout(this.resetTimer);\n this.resetTimer = null;\n }\n\n private scheduleReset(): void {\n this.clearResetTimer();\n this.resetTimer = setTimeout((): void => {\n this.state.set('idle');\n this.resetTimer = null;\n }, this.resetDelay());\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ export * from './avatar/tng-avatar.component';
2
+ export { TngAvatarComponent as TngAvatar } from './avatar/tng-avatar.component';
3
+ export * from './badge/tng-badge.component';
4
+ export { TngBadgeComponent as TngBadge } from './badge/tng-badge.component';
5
+ export * from './button/tng-button.component';
6
+ export { TngButtonComponent as TngButton } from './button/tng-button.component';
7
+ export * from './code-block/tng-code-block.component';
8
+ export { TngCodeBlockComponent as TngCodeBlock } from './code-block/tng-code-block.component';
9
+ export { TNG_CODE_HIGHLIGHTING_CONFIG, TNG_CODE_HIGHLIGHTING_RESOLVER, TNG_BUILTIN_CODE_HIGHLIGHTERS, TNG_DEFAULT_CODE_HIGHLIGHTER_ID, TngCodeHighlightingResolver, createTngCodeHighlighterAdapter, escapeTngCodeHtml, highlightWithTngCodeHighlightingConfig, normalizeTngCodeHighlighterId, normalizeTngCodeLanguage, provideTngCodeHighlighting, resolveTngCodeHighlightingConfig, tngPlainCodeHighlighterAdapter, } from './code-block/highlighting';
10
+ export type { TngCodeHighlightInput, TngCodeHighlightingResolverLike, TngCodeHighlightRequest, TngCodeHighlightResult, TngCodeHighlighterAdapter, TngProvideCodeHighlightingOptions, TngResolvedCodeHighlightingConfig, } from './code-block/highlighting';
11
+ export * from './copy-button/tng-copy-button.component';
12
+ export { TngCopyButtonComponent as TngCopyButton } from './copy-button/tng-copy-button.component';
13
+ export * from './tag/tng-tag.component';
14
+ export { TngTagComponent as TngTag } from './tag/tng-tag.component';
15
+ export * from './tree/tng-tree.component';
16
+ export { TngTreeComponent as TngTree } from './tree/tng-tree.component';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,iBAAiB,EACjB,sCAAsC,EACtC,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iCAAiC,EACjC,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,sBAAsB,IAAI,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAClG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export * from './avatar/tng-avatar.component';
2
+ export { TngAvatarComponent as TngAvatar } from './avatar/tng-avatar.component';
3
+ export * from './badge/tng-badge.component';
4
+ export { TngBadgeComponent as TngBadge } from './badge/tng-badge.component';
5
+ export * from './button/tng-button.component';
6
+ export { TngButtonComponent as TngButton } from './button/tng-button.component';
7
+ export * from './code-block/tng-code-block.component';
8
+ export { TngCodeBlockComponent as TngCodeBlock } from './code-block/tng-code-block.component';
9
+ export { TNG_CODE_HIGHLIGHTING_CONFIG, TNG_CODE_HIGHLIGHTING_RESOLVER, TNG_BUILTIN_CODE_HIGHLIGHTERS, TNG_DEFAULT_CODE_HIGHLIGHTER_ID, TngCodeHighlightingResolver, createTngCodeHighlighterAdapter, escapeTngCodeHtml, highlightWithTngCodeHighlightingConfig, normalizeTngCodeHighlighterId, normalizeTngCodeLanguage, provideTngCodeHighlighting, resolveTngCodeHighlightingConfig, tngPlainCodeHighlighterAdapter, } from './code-block/highlighting';
10
+ export * from './copy-button/tng-copy-button.component';
11
+ export { TngCopyButtonComponent as TngCopyButton } from './copy-button/tng-copy-button.component';
12
+ export * from './tag/tng-tag.component';
13
+ export { TngTagComponent as TngTag } from './tag/tng-tag.component';
14
+ export * from './tree/tng-tree.component';
15
+ export { TngTreeComponent as TngTree } from './tree/tng-tree.component';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,iBAAiB,EACjB,sCAAsC,EACtC,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAUnC,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,sBAAsB,IAAI,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAClG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC","sourcesContent":["export * from './avatar/tng-avatar.component';\nexport { TngAvatarComponent as TngAvatar } from './avatar/tng-avatar.component';\nexport * from './badge/tng-badge.component';\nexport { TngBadgeComponent as TngBadge } from './badge/tng-badge.component';\nexport * from './button/tng-button.component';\nexport { TngButtonComponent as TngButton } from './button/tng-button.component';\nexport * from './code-block/tng-code-block.component';\nexport { TngCodeBlockComponent as TngCodeBlock } from './code-block/tng-code-block.component';\nexport {\n TNG_CODE_HIGHLIGHTING_CONFIG,\n TNG_CODE_HIGHLIGHTING_RESOLVER,\n TNG_BUILTIN_CODE_HIGHLIGHTERS,\n TNG_DEFAULT_CODE_HIGHLIGHTER_ID,\n TngCodeHighlightingResolver,\n createTngCodeHighlighterAdapter,\n escapeTngCodeHtml,\n highlightWithTngCodeHighlightingConfig,\n normalizeTngCodeHighlighterId,\n normalizeTngCodeLanguage,\n provideTngCodeHighlighting,\n resolveTngCodeHighlightingConfig,\n tngPlainCodeHighlighterAdapter,\n} from './code-block/highlighting';\nexport type {\n TngCodeHighlightInput,\n TngCodeHighlightingResolverLike,\n TngCodeHighlightRequest,\n TngCodeHighlightResult,\n TngCodeHighlighterAdapter,\n TngProvideCodeHighlightingOptions,\n TngResolvedCodeHighlightingConfig,\n} from './code-block/highlighting';\nexport * from './copy-button/tng-copy-button.component';\nexport { TngCopyButtonComponent as TngCopyButton } from './copy-button/tng-copy-button.component';\nexport * from './tag/tng-tag.component';\nexport { TngTagComponent as TngTag } from './tag/tng-tag.component';\nexport * from './tree/tng-tree.component';\nexport { TngTreeComponent as TngTree } from './tree/tng-tree.component';\n"]}
@@ -0,0 +1,10 @@
1
+ type TngTagAppearance = 'outline' | 'soft' | 'solid';
2
+ type TngTagShape = 'pill' | 'rounded';
3
+ type TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';
4
+ export declare class TngTagComponent {
5
+ readonly appearance: import("@angular/core").InputSignal<TngTagAppearance>;
6
+ readonly shape: import("@angular/core").InputSignal<TngTagShape>;
7
+ readonly tone: import("@angular/core").InputSignal<TngTagTone>;
8
+ }
9
+ export {};
10
+ //# sourceMappingURL=tng-tag.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":"AAGA,KAAK,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACrD,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,qBAMa,eAAe;IAC1B,SAAgB,UAAU,wDAAmC;IAC7D,SAAgB,KAAK,mDAA8B;IACnD,SAAgB,IAAI,kDAAgC;CACrD"}
@@ -0,0 +1,18 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, input } from '@angular/core';
3
+ import { TngTag as TngTagPrimitive } from '@tailng-ui/primitives';
4
+ let TngTagComponent = class TngTagComponent {
5
+ appearance = input('soft');
6
+ shape = input('pill');
7
+ tone = input('neutral');
8
+ };
9
+ TngTagComponent = __decorate([
10
+ Component({
11
+ selector: 'tng-tag',
12
+ imports: [TngTagPrimitive],
13
+ templateUrl: './tng-tag.component.html',
14
+ styleUrl: './tng-tag.component.css',
15
+ })
16
+ ], TngTagComponent);
17
+ export { TngTagComponent };
18
+ //# sourceMappingURL=tng-tag.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAY3D,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,UAAU,GAAG,KAAK,CAAmB,MAAM,CAAC,CAAC;IAC7C,KAAK,GAAG,KAAK,CAAc,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAa,SAAS,CAAC,CAAC;CACrD,CAAA;AAJY,eAAe;IAN3B,SAAS,CAAC;QACT,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,yBAAyB;KACpC,CAAC;GACW,eAAe,CAI3B","sourcesContent":["import { Component, input } from '@angular/core';\nimport { TngTag as TngTagPrimitive } from '@tailng-ui/primitives';\n\ntype TngTagAppearance = 'outline' | 'soft' | 'solid';\ntype TngTagShape = 'pill' | 'rounded';\ntype TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';\n\n@Component({\n selector: 'tng-tag',\n imports: [TngTagPrimitive],\n templateUrl: './tng-tag.component.html',\n styleUrl: './tng-tag.component.css',\n})\nexport class TngTagComponent {\n public readonly appearance = input<TngTagAppearance>('soft');\n public readonly shape = input<TngTagShape>('pill');\n public readonly tone = input<TngTagTone>('neutral');\n}\n"]}
@@ -0,0 +1,72 @@
1
+ import type { OnDestroy } from '@angular/core';
2
+ type TngTreeKeyboardEvent = Readonly<{
3
+ altKey: boolean;
4
+ key: string;
5
+ metaKey: boolean;
6
+ preventDefault: () => void;
7
+ }>;
8
+ type TngTreePointerEvent = Readonly<{
9
+ preventDefault: () => void;
10
+ stopPropagation: () => void;
11
+ }>;
12
+ export type TngTreeItem = Readonly<{
13
+ description?: string | null;
14
+ disabled?: boolean;
15
+ id: string;
16
+ label: string;
17
+ parentId?: string | null;
18
+ }>;
19
+ export declare class TngTreeComponent implements OnDestroy {
20
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
21
+ readonly defaultExpandedIds: import("@angular/core").InputSignal<readonly string[]>;
22
+ readonly defaultSelectedId: import("@angular/core").InputSignal<string | null>;
23
+ readonly nodes: import("@angular/core").InputSignal<readonly Readonly<{
24
+ description?: string | null;
25
+ disabled?: boolean;
26
+ id: string;
27
+ label: string;
28
+ parentId?: string | null;
29
+ }>[]>;
30
+ readonly selectedIdChange: import("@angular/core").OutputEmitterRef<string | null>;
31
+ protected readonly activeDescendantId: import("@angular/core").Signal<string | null>;
32
+ protected readonly selectedId: import("@angular/core").WritableSignal<string | null>;
33
+ protected readonly treeId: string;
34
+ protected readonly visibleRows: import("@angular/core").Signal<readonly Readonly<{
35
+ depth: number;
36
+ description: string | null;
37
+ disabled: boolean;
38
+ hasChildren: boolean;
39
+ id: string;
40
+ label: string;
41
+ }>[]>;
42
+ private readonly activeId;
43
+ private readonly expandedIds;
44
+ private readonly lookup;
45
+ private readonly rootRef;
46
+ private readonly visibleIds;
47
+ private model;
48
+ private readonly typeahead;
49
+ private readonly keyActionHandlers;
50
+ private readonly syncInputsEffect;
51
+ ngOnDestroy(): void;
52
+ onToggleClick(nodeId: string, event: TngTreePointerEvent): void;
53
+ onTreeFocus(): void;
54
+ onTreeItemClick(nodeId: string): void;
55
+ onTreeKeydown(event: TngTreeKeyboardEvent): void;
56
+ protected isExpanded(nodeId: string): boolean;
57
+ protected toItemDomId(nodeId: string): string;
58
+ private applyState;
59
+ private focusRoot;
60
+ private handleArrowLeft;
61
+ private handleArrowRight;
62
+ private handleTypeahead;
63
+ private hasChildren;
64
+ private moveToBoundary;
65
+ private rebuildFromInputs;
66
+ private resolveVisibleRows;
67
+ private runKeyAction;
68
+ private selectActiveNode;
69
+ private selectNode;
70
+ }
71
+ export {};
72
+ //# sourceMappingURL=tng-tree.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tng-tree.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tree/tng-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB3D,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC,CAAC;AAEH,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC,CAAC;AA6BH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAiKH,qBAMa,gBAAiB,YAAW,SAAS;IAChD,SAAgB,SAAS,8CAAyB;IAClD,SAAgB,kBAAkB,yDAAgC;IAClE,SAAgB,iBAAiB,qDAA8B;IAC/D,SAAgB,KAAK;sBAhLP,MAAM,GAAG,IAAI;mBAChB,OAAO;YACd,MAAM;eACH,MAAM;mBACF,MAAM,GAAG,IAAI;UA4KkC;IAE1D,SAAgB,gBAAgB,0DAA2B;IAE3D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gDAOlC;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,wDAA+B;IAC5D,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW;eAzMvB,MAAM;qBACA,MAAM,GAAG,IAAI;kBAChB,OAAO;qBACJ,OAAO;YAChB,MAAM;eACH,MAAM;UAoMqF;IAElG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiD;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAE3E,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAE9F,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAS7B;IAEL,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEI,WAAW,IAAI,IAAI;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAY/D,WAAW,IAAI,IAAI;IAMnB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWrC,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAiBvD,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,UAAU;CAInB"}