@frame-ui-ng/components 0.1.0-beta.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 (249) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +31 -0
  3. package/accordion/src/styles/_vars.css +25 -0
  4. package/accordion/src/styles/accordion.css +87 -0
  5. package/alert/src/styles/_vars.css +28 -0
  6. package/alert/src/styles/alert.css +77 -0
  7. package/avatar/src/styles/_vars.css +34 -0
  8. package/avatar/src/styles/avatar.css +209 -0
  9. package/badge/src/styles/_vars.css +16 -0
  10. package/badge/src/styles/badge.css +125 -0
  11. package/breadcrumb/src/styles/_vars.css +16 -0
  12. package/breadcrumb/src/styles/breadcrumb.css +98 -0
  13. package/button/src/styles/_vars.css +20 -0
  14. package/button/src/styles/button-icon.css +18 -0
  15. package/button/src/styles/button-label.css +3 -0
  16. package/button/src/styles/button.css +243 -0
  17. package/button-group/src/styles/button-group.css +69 -0
  18. package/calendar/src/styles/_vars.css +29 -0
  19. package/calendar/src/styles/calendar.css +226 -0
  20. package/card/src/styles/_vars.css +17 -0
  21. package/card/src/styles/card.css +142 -0
  22. package/carousel/src/styles/_vars.css +7 -0
  23. package/carousel/src/styles/carousel.css +89 -0
  24. package/checkbox/src/styles/_vars.css +22 -0
  25. package/checkbox/src/styles/checkbox.css +95 -0
  26. package/collapsible/src/styles/_vars.css +13 -0
  27. package/collapsible/src/styles/collapsible.css +42 -0
  28. package/combobox/src/styles/_vars.css +60 -0
  29. package/combobox/src/styles/combobox.css +285 -0
  30. package/command/src/styles/_vars.css +37 -0
  31. package/command/src/styles/command.css +171 -0
  32. package/context-menu/src/styles/context-menu.css +5 -0
  33. package/date-picker/src/styles/_vars.css +29 -0
  34. package/date-picker/src/styles/date-picker.css +177 -0
  35. package/dropdown-menu/src/styles/_vars.css +34 -0
  36. package/dropdown-menu/src/styles/dropdown-menu-item.css +87 -0
  37. package/dropdown-menu/src/styles/dropdown-menu-motion.css +42 -0
  38. package/dropdown-menu/src/styles/dropdown-menu-panel.css +26 -0
  39. package/dropdown-menu/src/styles/dropdown-menu.css +4 -0
  40. package/empty/src/styles/_vars.css +23 -0
  41. package/empty/src/styles/empty.css +108 -0
  42. package/fesm2022/frame-ui-ng-components-accordion.mjs +268 -0
  43. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -0
  44. package/fesm2022/frame-ui-ng-components-alert.mjs +102 -0
  45. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -0
  46. package/fesm2022/frame-ui-ng-components-avatar.mjs +197 -0
  47. package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -0
  48. package/fesm2022/frame-ui-ng-components-badge.mjs +120 -0
  49. package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -0
  50. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +156 -0
  51. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -0
  52. package/fesm2022/frame-ui-ng-components-button-group.mjs +44 -0
  53. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -0
  54. package/fesm2022/frame-ui-ng-components-button.mjs +150 -0
  55. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -0
  56. package/fesm2022/frame-ui-ng-components-calendar.mjs +559 -0
  57. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -0
  58. package/fesm2022/frame-ui-ng-components-card.mjs +169 -0
  59. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -0
  60. package/fesm2022/frame-ui-ng-components-carousel.mjs +454 -0
  61. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -0
  62. package/fesm2022/frame-ui-ng-components-checkbox.mjs +83 -0
  63. package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -0
  64. package/fesm2022/frame-ui-ng-components-collapsible.mjs +191 -0
  65. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -0
  66. package/fesm2022/frame-ui-ng-components-combobox.mjs +859 -0
  67. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -0
  68. package/fesm2022/frame-ui-ng-components-command.mjs +658 -0
  69. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -0
  70. package/fesm2022/frame-ui-ng-components-context-menu.mjs +579 -0
  71. package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -0
  72. package/fesm2022/frame-ui-ng-components-date-picker.mjs +512 -0
  73. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -0
  74. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +647 -0
  75. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -0
  76. package/fesm2022/frame-ui-ng-components-empty.mjs +134 -0
  77. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -0
  78. package/fesm2022/frame-ui-ng-components-field.mjs +210 -0
  79. package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -0
  80. package/fesm2022/frame-ui-ng-components-forms.mjs +89 -0
  81. package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -0
  82. package/fesm2022/frame-ui-ng-components-hover-card.mjs +412 -0
  83. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -0
  84. package/fesm2022/frame-ui-ng-components-input-otp.mjs +327 -0
  85. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -0
  86. package/fesm2022/frame-ui-ng-components-input.mjs +250 -0
  87. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -0
  88. package/fesm2022/frame-ui-ng-components-item.mjs +207 -0
  89. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -0
  90. package/fesm2022/frame-ui-ng-components-menubar.mjs +371 -0
  91. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -0
  92. package/fesm2022/frame-ui-ng-components-modal.mjs +525 -0
  93. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -0
  94. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +322 -0
  95. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -0
  96. package/fesm2022/frame-ui-ng-components-pagination.mjs +327 -0
  97. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -0
  98. package/fesm2022/frame-ui-ng-components-popover.mjs +454 -0
  99. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -0
  100. package/fesm2022/frame-ui-ng-components-progress.mjs +96 -0
  101. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -0
  102. package/fesm2022/frame-ui-ng-components-radio-group.mjs +124 -0
  103. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -0
  104. package/fesm2022/frame-ui-ng-components-resizable.mjs +325 -0
  105. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -0
  106. package/fesm2022/frame-ui-ng-components-select.mjs +434 -0
  107. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -0
  108. package/fesm2022/frame-ui-ng-components-separator.mjs +51 -0
  109. package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -0
  110. package/fesm2022/frame-ui-ng-components-sheet.mjs +514 -0
  111. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -0
  112. package/fesm2022/frame-ui-ng-components-sidebar.mjs +628 -0
  113. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -0
  114. package/fesm2022/frame-ui-ng-components-skeleton.mjs +46 -0
  115. package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -0
  116. package/fesm2022/frame-ui-ng-components-slider.mjs +279 -0
  117. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -0
  118. package/fesm2022/frame-ui-ng-components-spinner.mjs +51 -0
  119. package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -0
  120. package/fesm2022/frame-ui-ng-components-switch.mjs +130 -0
  121. package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -0
  122. package/fesm2022/frame-ui-ng-components-table.mjs +594 -0
  123. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -0
  124. package/fesm2022/frame-ui-ng-components-tabs.mjs +208 -0
  125. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -0
  126. package/fesm2022/frame-ui-ng-components-textarea.mjs +40 -0
  127. package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -0
  128. package/fesm2022/frame-ui-ng-components-toast.mjs +346 -0
  129. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -0
  130. package/fesm2022/frame-ui-ng-components-toggle.mjs +127 -0
  131. package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -0
  132. package/fesm2022/frame-ui-ng-components-tooltip.mjs +425 -0
  133. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -0
  134. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +321 -0
  135. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -0
  136. package/fesm2022/frame-ui-ng-components.mjs +10278 -0
  137. package/fesm2022/frame-ui-ng-components.mjs.map +1 -0
  138. package/field/src/styles/_vars.css +20 -0
  139. package/field/src/styles/field.css +165 -0
  140. package/hover-card/src/styles/_vars.css +21 -0
  141. package/hover-card/src/styles/hover-card.css +76 -0
  142. package/input/src/styles/_vars.css +65 -0
  143. package/input/src/styles/input-group.css +112 -0
  144. package/input/src/styles/input.css +163 -0
  145. package/input-otp/src/styles/_vars.css +21 -0
  146. package/input-otp/src/styles/input-otp.css +116 -0
  147. package/item/src/styles/_vars.css +34 -0
  148. package/item/src/styles/item.css +187 -0
  149. package/menubar/src/styles/_vars.css +22 -0
  150. package/menubar/src/styles/menubar.css +70 -0
  151. package/modal/src/styles/_vars.css +18 -0
  152. package/modal/src/styles/modal.css +179 -0
  153. package/navigation-menu/src/styles/_vars.css +45 -0
  154. package/navigation-menu/src/styles/navigation-menu.css +245 -0
  155. package/package.json +243 -0
  156. package/pagination/src/styles/_vars.css +22 -0
  157. package/pagination/src/styles/pagination.css +138 -0
  158. package/popover/src/styles/_vars.css +24 -0
  159. package/popover/src/styles/popover.css +101 -0
  160. package/progress/src/styles/_vars.css +15 -0
  161. package/progress/src/styles/progress.css +64 -0
  162. package/radio-group/src/styles/_vars.css +29 -0
  163. package/radio-group/src/styles/radio-group.css +137 -0
  164. package/resizable/src/styles/_vars.css +20 -0
  165. package/resizable/src/styles/resizable.css +130 -0
  166. package/select/src/styles/_vars.css +28 -0
  167. package/select/src/styles/select-content.css +19 -0
  168. package/select/src/styles/select-feedback.css +6 -0
  169. package/select/src/styles/select-item.css +69 -0
  170. package/select/src/styles/select-trigger.css +95 -0
  171. package/select/src/styles/select.css +5 -0
  172. package/separator/src/styles/_vars.css +9 -0
  173. package/separator/src/styles/separator.css +25 -0
  174. package/sheet/src/styles/_vars.css +18 -0
  175. package/sheet/src/styles/sheet.css +215 -0
  176. package/sidebar/src/styles/_vars.css +24 -0
  177. package/sidebar/src/styles/sidebar.css +531 -0
  178. package/skeleton/src/styles/_vars.css +8 -0
  179. package/skeleton/src/styles/skeleton.css +40 -0
  180. package/slider/src/styles/_vars.css +17 -0
  181. package/slider/src/styles/slider.css +147 -0
  182. package/spinner/src/styles/_vars.css +9 -0
  183. package/spinner/src/styles/spinner.css +62 -0
  184. package/src/styles/components.css +47 -0
  185. package/styles/components.css +47 -0
  186. package/styles.css +49 -0
  187. package/switch/src/styles/_vars.css +34 -0
  188. package/switch/src/styles/switch.css +131 -0
  189. package/table/src/styles/_vars.css +25 -0
  190. package/table/src/styles/table.css +245 -0
  191. package/tabs/src/styles/_vars.css +23 -0
  192. package/tabs/src/styles/tabs.css +164 -0
  193. package/textarea/src/styles/_vars.css +20 -0
  194. package/textarea/src/styles/textarea.css +60 -0
  195. package/toast/src/styles/_vars.css +47 -0
  196. package/toast/src/styles/toast.css +314 -0
  197. package/toggle/src/styles/_vars.css +24 -0
  198. package/toggle/src/styles/toggle.css +110 -0
  199. package/tooltip/src/styles/_vars.css +21 -0
  200. package/tooltip/src/styles/tooltip.css +103 -0
  201. package/types/frame-ui-ng-components-accordion.d.ts +75 -0
  202. package/types/frame-ui-ng-components-alert.d.ts +30 -0
  203. package/types/frame-ui-ng-components-avatar.d.ts +65 -0
  204. package/types/frame-ui-ng-components-badge.d.ts +35 -0
  205. package/types/frame-ui-ng-components-breadcrumb.d.ts +40 -0
  206. package/types/frame-ui-ng-components-button-group.d.ts +18 -0
  207. package/types/frame-ui-ng-components-button.d.ts +50 -0
  208. package/types/frame-ui-ng-components-calendar.d.ts +101 -0
  209. package/types/frame-ui-ng-components-card.d.ts +51 -0
  210. package/types/frame-ui-ng-components-carousel.d.ts +117 -0
  211. package/types/frame-ui-ng-components-checkbox.d.ts +25 -0
  212. package/types/frame-ui-ng-components-collapsible.d.ts +55 -0
  213. package/types/frame-ui-ng-components-combobox.d.ts +201 -0
  214. package/types/frame-ui-ng-components-command.d.ts +198 -0
  215. package/types/frame-ui-ng-components-context-menu.d.ts +149 -0
  216. package/types/frame-ui-ng-components-date-picker.d.ts +95 -0
  217. package/types/frame-ui-ng-components-dropdown-menu.d.ts +182 -0
  218. package/types/frame-ui-ng-components-empty.d.ts +44 -0
  219. package/types/frame-ui-ng-components-field.d.ts +60 -0
  220. package/types/frame-ui-ng-components-forms.d.ts +39 -0
  221. package/types/frame-ui-ng-components-hover-card.d.ts +94 -0
  222. package/types/frame-ui-ng-components-input-otp.d.ts +70 -0
  223. package/types/frame-ui-ng-components-input.d.ts +67 -0
  224. package/types/frame-ui-ng-components-item.d.ts +62 -0
  225. package/types/frame-ui-ng-components-menubar.d.ts +76 -0
  226. package/types/frame-ui-ng-components-modal.d.ts +148 -0
  227. package/types/frame-ui-ng-components-navigation-menu.d.ts +74 -0
  228. package/types/frame-ui-ng-components-pagination.d.ts +79 -0
  229. package/types/frame-ui-ng-components-popover.d.ts +95 -0
  230. package/types/frame-ui-ng-components-progress.d.ts +24 -0
  231. package/types/frame-ui-ng-components-radio-group.d.ts +40 -0
  232. package/types/frame-ui-ng-components-resizable.d.ts +61 -0
  233. package/types/frame-ui-ng-components-select.d.ts +114 -0
  234. package/types/frame-ui-ng-components-separator.d.ts +19 -0
  235. package/types/frame-ui-ng-components-sheet.d.ts +146 -0
  236. package/types/frame-ui-ng-components-sidebar.d.ts +163 -0
  237. package/types/frame-ui-ng-components-skeleton.d.ts +18 -0
  238. package/types/frame-ui-ng-components-slider.d.ts +56 -0
  239. package/types/frame-ui-ng-components-spinner.d.ts +23 -0
  240. package/types/frame-ui-ng-components-switch.d.ts +38 -0
  241. package/types/frame-ui-ng-components-table.d.ts +125 -0
  242. package/types/frame-ui-ng-components-tabs.d.ts +62 -0
  243. package/types/frame-ui-ng-components-textarea.d.ts +14 -0
  244. package/types/frame-ui-ng-components-toast.d.ts +74 -0
  245. package/types/frame-ui-ng-components-toggle.d.ts +45 -0
  246. package/types/frame-ui-ng-components-tooltip.d.ts +99 -0
  247. package/types/frame-ui-ng-components-virtual-scroll.d.ts +106 -0
  248. package/types/frame-ui-ng-components.d.ts +2746 -0
  249. package/virtual-scroll/src/styles/virtual-scroll.css +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-ui-ng-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar.ts","../../../projects/components/sidebar/sidebar.module.ts","../../../projects/components/sidebar/frame-ui-ng-components-sidebar.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n HostListener,\n InjectionToken,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nexport const FR_SIDEBAR_SIDES = ['left', 'right'] as const;\nexport const FR_SIDEBAR_VARIANTS = ['sidebar', 'floating', 'inset'] as const;\nexport const FR_SIDEBAR_COLLAPSIBLES = ['offcanvas', 'icon', 'none'] as const;\nexport const FR_SIDEBAR_MENU_BUTTON_SIZES = ['default', 'sm', 'lg'] as const;\nexport const FR_SIDEBAR_MENU_BUTTON_VARIANTS = ['default', 'outline'] as const;\n\nexport type FrSidebarSide = (typeof FR_SIDEBAR_SIDES)[number];\nexport type FrSidebarVariant = (typeof FR_SIDEBAR_VARIANTS)[number];\nexport type FrSidebarCollapsible = (typeof FR_SIDEBAR_COLLAPSIBLES)[number];\nexport type FrSidebarState = 'expanded' | 'collapsed';\nexport type FrSidebarMenuButtonSize = (typeof FR_SIDEBAR_MENU_BUTTON_SIZES)[number];\nexport type FrSidebarMenuButtonVariant = (typeof FR_SIDEBAR_MENU_BUTTON_VARIANTS)[number];\n\nexport const FR_SIDEBAR_PROVIDER = new InjectionToken<FrSidebarProvider>('FR_SIDEBAR_PROVIDER');\n\nfunction coerceSide(value: unknown): FrSidebarSide {\n return value === 'right' ? 'right' : 'left';\n}\n\nfunction coerceVariant(value: unknown): FrSidebarVariant {\n return value === 'floating' || value === 'inset' ? value : 'sidebar';\n}\n\nfunction coerceCollapsible(value: unknown): FrSidebarCollapsible {\n return value === 'icon' || value === 'none' ? value : 'offcanvas';\n}\n\nfunction coerceMenuButtonSize(value: unknown): FrSidebarMenuButtonSize {\n return value === 'sm' || value === 'lg' ? value : 'default';\n}\n\nfunction coerceMenuButtonVariant(value: unknown): FrSidebarMenuButtonVariant {\n return value === 'outline' ? 'outline' : 'default';\n}\n\n@Directive({\n selector: '[frSidebarProvider], frame-sidebar-provider',\n exportAs: 'frSidebarProvider',\n providers: [\n {\n provide: FR_SIDEBAR_PROVIDER,\n useExisting: FrSidebarProvider,\n },\n ],\n host: {\n class: 'frame-sidebar-provider',\n '[attr.data-state]': 'state()',\n '[attr.data-open]': 'open()',\n '[attr.data-mobile-open]': 'openMobile()',\n '[attr.data-mobile]': 'isMobile() ? \"\" : null',\n '[attr.data-resizing]': 'resizing() ? \"\" : null',\n },\n})\nexport class FrSidebarProvider {\n private readonly document = inject(DOCUMENT);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly internalOpen = signal(true);\n private readonly internalOpenMobile = signal(false);\n protected readonly resizing = signal(false);\n\n readonly defaultOpen = input(true, { transform: booleanAttribute });\n readonly openInput = input<boolean | null>(null, { alias: 'open' });\n readonly openChange = output<boolean>();\n readonly openMobileChange = output<boolean>();\n readonly shortcut = input('b');\n readonly keyboardShortcut = input(true, { transform: booleanAttribute });\n readonly isMobile = signal(false);\n\n readonly open = computed(() => this.openInput() ?? this.internalOpen());\n readonly openMobile = computed(() => this.internalOpenMobile());\n readonly state = computed<FrSidebarState>(() => (this.open() ? 'expanded' : 'collapsed'));\n\n constructor() {\n this.internalOpen.set(this.defaultOpen());\n\n effect(() => {\n if (this.openInput() === null) {\n this.internalOpen.set(this.defaultOpen());\n }\n });\n\n effect(() => {\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-state', this.state());\n });\n\n const defaultView = this.document.defaultView;\n if (!defaultView?.matchMedia) {\n return;\n }\n\n const mediaQuery = defaultView.matchMedia('(max-width: 768px)');\n const updateMobile = () => this.isMobile.set(mediaQuery.matches);\n updateMobile();\n mediaQuery.addEventListener?.('change', updateMobile);\n }\n\n setOpen(open: boolean): void {\n if (this.openInput() === null) {\n this.internalOpen.set(open);\n }\n\n this.openChange.emit(open);\n }\n\n setOpenMobile(open: boolean): void {\n this.internalOpenMobile.set(open);\n this.openMobileChange.emit(open);\n }\n\n setSidebarWidth(width: number): void {\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-width', `${width}px`);\n }\n\n setResizing(resizing: boolean): void {\n this.resizing.set(resizing);\n }\n\n toggleSidebar(): void {\n if (this.isMobile()) {\n this.setOpenMobile(!this.openMobile());\n return;\n }\n\n this.setOpen(!this.open());\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (!this.keyboardShortcut()) {\n return;\n }\n\n const key = this.shortcut().toLowerCase();\n if (event.key.toLowerCase() !== key || (!event.metaKey && !event.ctrlKey)) {\n return;\n }\n\n event.preventDefault();\n this.toggleSidebar();\n }\n}\n\n@Directive({\n selector: '[frSidebar], frame-sidebar',\n host: {\n class: 'frame-sidebar',\n '[attr.data-side]': 'side()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-collapsible]': 'collapsible()',\n '[attr.data-state]': 'provider?.state() ?? \"expanded\"',\n '[attr.data-mobile-open]': 'provider?.openMobile() ?? false',\n },\n})\nexport class FrSidebar {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\n readonly side = input<FrSidebarSide, unknown>('left', { transform: coerceSide });\n readonly variant = input<FrSidebarVariant, unknown>('sidebar', { transform: coerceVariant });\n readonly collapsible = input<FrSidebarCollapsible, unknown>('offcanvas', {\n transform: coerceCollapsible,\n });\n}\n\n@Directive({\n selector: '[frSidebarTrigger]',\n host: {\n class: 'frame-sidebar__trigger',\n type: 'button',\n '[attr.aria-expanded]': 'provider?.open() ?? true',\n '[attr.aria-label]': 'ariaLabel()',\n '(click)': 'toggle()',\n },\n})\nexport class FrSidebarTrigger {\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\n readonly ariaLabel = input('Toggle sidebar', { alias: 'aria-label' });\n\n toggle(): void {\n this.provider?.toggleSidebar();\n }\n}\n\n@Directive({\n selector: '[frSidebarRail], frame-sidebar-rail',\n host: {\n class: 'frame-sidebar__rail',\n role: 'separator',\n tabindex: '0',\n 'aria-label': 'Resize sidebar',\n 'aria-orientation': 'vertical',\n '(click)': 'toggle()',\n '(pointerdown)': 'startResize($event)',\n '(keydown.enter)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n },\n})\nexport class FrSidebarRail {\n private readonly document = inject(DOCUMENT);\n private readonly sidebar = inject(FrSidebar, { optional: true });\n private startX = 0;\n private startWidth = 0;\n private dragging = false;\n private suppressClick = false;\n private frameId = -1;\n private pendingWidth = 0;\n\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\n\n toggle(): void {\n if (this.suppressClick) {\n return;\n }\n\n this.provider?.toggleSidebar();\n }\n\n startResize(event: PointerEvent): void {\n if (!this.sidebar || !this.provider || this.provider.isMobile()) {\n return;\n }\n\n this.startX = event.clientX;\n this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;\n this.dragging = false;\n this.pendingWidth = this.startWidth;\n this.provider.setResizing(true);\n event.preventDefault();\n\n const move = (moveEvent: PointerEvent) => this.resize(moveEvent);\n const up = () => {\n this.document.removeEventListener('pointermove', move);\n this.document.removeEventListener('pointerup', up);\n this.flushResize();\n this.provider?.setResizing(false);\n this.suppressClick = this.dragging;\n this.dragging = false;\n this.pendingWidth = 0;\n setTimeout(() => {\n this.suppressClick = false;\n });\n };\n\n this.document.addEventListener('pointermove', move);\n this.document.addEventListener('pointerup', up, { once: true });\n }\n\n private resize(event: PointerEvent): void {\n if (!this.sidebar || !this.provider) {\n return;\n }\n\n const delta = event.clientX - this.startX;\n const direction = this.sidebar.side() === 'right' ? -1 : 1;\n const nextWidth = Math.min(Math.max(this.startWidth + delta * direction, 192), 384);\n\n if (Math.abs(delta) > 3) {\n this.dragging = true;\n }\n\n this.pendingWidth = nextWidth;\n\n if (this.frameId !== -1) {\n return;\n }\n\n this.frameId = requestAnimationFrame(() => {\n this.provider?.setSidebarWidth(this.pendingWidth);\n this.frameId = -1;\n });\n }\n\n private flushResize(): void {\n if (this.frameId !== -1) {\n cancelAnimationFrame(this.frameId);\n this.frameId = -1;\n }\n\n if (this.pendingWidth) {\n this.provider?.setSidebarWidth(this.pendingWidth);\n }\n }\n}\n\n@Directive({\n selector: '[frSidebarInset], frame-sidebar-inset',\n host: {\n class: 'frame-sidebar-inset',\n },\n})\nexport class FrSidebarInset {}\n\n@Directive({\n selector: '[frSidebarHeader], frame-sidebar-header',\n host: {\n class: 'frame-sidebar__header',\n },\n})\nexport class FrSidebarHeader {}\n\n@Directive({\n selector: '[frSidebarFooter], frame-sidebar-footer',\n host: {\n class: 'frame-sidebar__footer',\n },\n})\nexport class FrSidebarFooter {}\n\n@Directive({\n selector: '[frSidebarContent], frame-sidebar-content',\n host: {\n class: 'frame-sidebar__content',\n },\n})\nexport class FrSidebarContent {}\n\n@Directive({\n selector: '[frSidebarGroup], frame-sidebar-group',\n host: {\n class: 'frame-sidebar__group',\n },\n})\nexport class FrSidebarGroup {}\n\n@Directive({\n selector: '[frSidebarGroupLabel], frame-sidebar-group-label',\n host: {\n class: 'frame-sidebar__group-label',\n },\n})\nexport class FrSidebarGroupLabel {}\n\n@Directive({\n selector: '[frSidebarGroupAction], frame-sidebar-group-action',\n host: {\n class: 'frame-sidebar__group-action',\n type: 'button',\n },\n})\nexport class FrSidebarGroupAction {}\n\n@Directive({\n selector: '[frSidebarGroupContent], frame-sidebar-group-content',\n host: {\n class: 'frame-sidebar__group-content',\n },\n})\nexport class FrSidebarGroupContent {}\n\n@Directive({\n selector: '[frSidebarMenu], frame-sidebar-menu',\n host: {\n class: 'frame-sidebar__menu',\n role: 'list',\n },\n})\nexport class FrSidebarMenu {}\n\n@Directive({\n selector: '[frSidebarMenuItem], frame-sidebar-menu-item',\n host: {\n class: 'frame-sidebar__menu-item',\n role: 'listitem',\n },\n})\nexport class FrSidebarMenuItem {}\n\n@Directive({\n selector: '[frSidebarMenuButton], a[frSidebarMenuButton], button[frSidebarMenuButton]',\n host: {\n class: 'frame-sidebar__menu-button',\n '[attr.data-active]': 'active() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.tabindex]': 'disabled() ? -1 : null',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrSidebarMenuButton {\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly size = input<FrSidebarMenuButtonSize, unknown>('default', {\n transform: coerceMenuButtonSize,\n });\n readonly variant = input<FrSidebarMenuButtonVariant, unknown>('default', {\n transform: coerceMenuButtonVariant,\n });\n readonly tooltip = input<string | null>(null);\n\n handleClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n@Directive({\n selector: '[frSidebarMenuAction], frame-sidebar-menu-action',\n host: {\n class: 'frame-sidebar__menu-action',\n type: 'button',\n '[attr.data-show-on-hover]': 'showOnHover() ? \"\" : null',\n },\n})\nexport class FrSidebarMenuAction {\n readonly showOnHover = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frSidebarMenuBadge], frame-sidebar-menu-badge',\n host: {\n class: 'frame-sidebar__menu-badge',\n },\n})\nexport class FrSidebarMenuBadge {}\n\n@Directive({\n selector: '[frSidebarMenuSub], frame-sidebar-menu-sub',\n host: {\n class: 'frame-sidebar__menu-sub',\n role: 'list',\n },\n})\nexport class FrSidebarMenuSub {}\n\n@Directive({\n selector: '[frSidebarMenuSubItem], frame-sidebar-menu-sub-item',\n host: {\n class: 'frame-sidebar__menu-sub-item',\n role: 'listitem',\n },\n})\nexport class FrSidebarMenuSubItem {}\n\n@Directive({\n selector: '[frSidebarMenuSubButton], a[frSidebarMenuSubButton], button[frSidebarMenuSubButton]',\n host: {\n class: 'frame-sidebar__menu-sub-button',\n '[attr.data-active]': 'active() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrSidebarMenuSubButton {\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n handleClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n@Directive({\n selector: '[frSidebarMenuSkeleton], frame-sidebar-menu-skeleton',\n host: {\n class: 'frame-sidebar__menu-skeleton',\n '[attr.data-show-icon]': 'showIcon() ? \"\" : null',\n '[style.--frame-sidebar-skeleton-width]': 'width()',\n },\n})\nexport class FrSidebarMenuSkeleton {\n readonly showIcon = input(false, { transform: booleanAttribute });\n readonly width = input('72%');\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n} from './src/sidebar';\n\n@NgModule({\n imports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n exports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n})\nexport class FrSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAea,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO;AACzC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO;AAC3D,MAAM,uBAAuB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM;AAC5D,MAAM,4BAA4B,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI;MACrD,+BAA+B,GAAG,CAAC,SAAS,EAAE,SAAS;MASvD,mBAAmB,GAAG,IAAI,cAAc,CAAoB,qBAAqB;AAE9F,SAAS,UAAU,CAAC,KAAc,EAAA;IAChC,OAAO,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM;AAC7C;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;AACnC,IAAA,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,SAAS;AACtE;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,WAAW;AACnE;AAEA,SAAS,oBAAoB,CAAC,KAAc,EAAA;AAC1C,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,SAAS;AAC7D;AAEA,SAAS,uBAAuB,CAAC,KAAc,EAAA;IAC7C,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;AACpD;MAoBa,iBAAiB,CAAA;AACX,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,IAAA,YAAY,GAAG,MAAM,CAAC,IAAI,mFAAC;AAC3B,IAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,yFAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;IAElC,WAAW,GAAG,KAAK,CAAC,IAAI,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1D,SAAS,GAAG,KAAK,CAAiB,IAAI,iFAAI,KAAK,EAAE,MAAM,EAAA,CAAG;IAC1D,UAAU,GAAG,MAAM,EAAW;IAC9B,gBAAgB,GAAG,MAAM,EAAW;AACpC,IAAA,QAAQ,GAAG,KAAK,CAAC,GAAG,+EAAC;IACrB,gBAAgB,GAAG,KAAK,CAAC,IAAI,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/D,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AAExB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,2EAAC;IAC9D,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACtD,KAAK,GAAG,QAAQ,CAAiB,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEzF,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACxF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC7C,QAAA,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;YAC5B;QACF;QAEA,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC/D,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAChE,QAAA,YAAY,EAAE;QACd,UAAU,CAAC,gBAAgB,GAAG,QAAQ,EAAE,YAAY,CAAC;IACvD;AAEA,IAAA,OAAO,CAAC,IAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,aAAa,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;IACxF;AAEA,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B;AAGA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5B;QACF;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;QACzC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACzE;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,aAAa,EAAE;IACtB;wGAtFW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAfjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,iBAAiB;AAC/B,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAUU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6CAA6C;AACvD,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA,iBAAmB;AAC/B,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,yBAAyB,EAAE,cAAc;AACzC,wBAAA,oBAAoB,EAAE,wBAAwB;AAC9C,wBAAA,sBAAsB,EAAE,wBAAwB;AACjD,qBAAA;AACF,iBAAA;;sBA0EE,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;MA2BjC,SAAS,CAAA;AACX,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IACxD,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,GAAG,KAAK,CAAyB,MAAM,4EAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACvE,OAAO,GAAG,KAAK,CAA4B,SAAS,+EAAI,SAAS,EAAE,aAAa,EAAA,CAAG;IACnF,WAAW,GAAG,KAAK,CAAgC,WAAW,mFACrE,SAAS,EAAE,iBAAiB,EAAA,CAC5B;wGAPS,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mCAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAXrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,mBAAmB,EAAE,iCAAiC;AACtD,wBAAA,yBAAyB,EAAE,iCAAiC;AAC7D,qBAAA;AACF,iBAAA;;MAqBY,gBAAgB,CAAA;IAClB,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1D,SAAS,GAAG,KAAK,CAAC,gBAAgB,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAErE,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;IAChC;wGANW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,SAAS,EAAE,UAAU;AACtB,qBAAA;AACF,iBAAA;;MAwBY,aAAa,CAAA;AACP,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,GAAG,CAAC;IACV,UAAU,GAAG,CAAC;IACd,QAAQ,GAAG,KAAK;IAChB,aAAa,GAAG,KAAK;IACrB,OAAO,GAAG,CAAC,CAAC;IACZ,YAAY,GAAG,CAAC;IAEf,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEnE,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;IAChC;AAEA,IAAA,WAAW,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC/D;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AACrF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,IAAI,GAAG,CAAC,SAAuB,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAChE,MAAM,EAAE,GAAG,MAAK;YACd,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC;YACrB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC5B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjE;AAEQ,IAAA,MAAM,CAAC,KAAmB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC;QACF;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;QAEnF,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAE7B,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAK;YACxC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;AACjD,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE;AACvB,YAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;QACnD;IACF;wGApFW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,GAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mCAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAdzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,YAAY,EAAE,gBAAgB;AAC9B,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,iBAAiB,EAAE,mCAAmC;AACvD,qBAAA;AACF,iBAAA;;MA8FY,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;MASY,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;MASY,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;MASY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2CAA2C;AACrD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAChC,qBAAA;AACF,iBAAA;;MASY,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;MASY,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA;AACF,iBAAA;;MAUY,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oDAAoD;AAC9D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,6BAA6B;AACpC,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA;AACF,iBAAA;;MASY,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACtC,qBAAA;AACF,iBAAA;;MAUY,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA;AACF,iBAAA;;MAUY,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,0BAA0B;AACjC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;AACF,iBAAA;;MAgBY,mBAAmB,CAAA;IACrB,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,IAAI,GAAG,KAAK,CAAmC,SAAS,4EAC/D,SAAS,EAAE,oBAAoB,EAAA,CAC/B;IACO,OAAO,GAAG,KAAK,CAAsC,SAAS,+EACrE,SAAS,EAAE,uBAAuB,EAAA,CAClC;AACO,IAAA,OAAO,GAAG,KAAK,CAAgB,IAAI,8EAAC;AAE7C,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF;wGAhBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4EAA4E;AACtF,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;MA4BY,mBAAmB,CAAA;IACrB,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGADzD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,2BAA2B,EAAE,2BAA2B;AACzD,qBAAA;AACF,iBAAA;;MAWY,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gDAAgD;AAC1D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,2BAA2B;AACnC,qBAAA;AACF,iBAAA;;MAUY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA;AACF,iBAAA;;MAUY,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qDAAqD;AAC/D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;AACF,iBAAA;;MAaY,sBAAsB,CAAA;IACxB,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF;wGATW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qFAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qFAAqF;AAC/F,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gCAAgC;AACvC,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;MAqBY,qBAAqB,CAAA;IACvB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;wGAFlB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,sCAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,uBAAuB,EAAE,wBAAwB;AACjD,wBAAA,wCAAwC,EAAE,SAAS;AACpD,qBAAA;AACF,iBAAA;;;MCvZY,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YA9CxB,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,cAAc;YACd,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,aAAa;YACb,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,gBAAgB;YAChB,sBAAsB;YACtB,oBAAoB;YACpB,iBAAiB;YACjB,aAAa;AACb,YAAA,gBAAgB,aAGhB,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,cAAc;YACd,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,aAAa;YACb,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,gBAAgB;YAChB,sBAAsB;YACtB,oBAAoB;YACpB,iBAAiB;YACjB,aAAa;YACb,gBAAgB,CAAA,EAAA,CAAA;yGAGP,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhD3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,SAAS;wBACT,gBAAgB;wBAChB,eAAe;wBACf,cAAc;wBACd,oBAAoB;wBACpB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;wBACpB,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,SAAS;wBACT,gBAAgB;wBAChB,eAAe;wBACf,cAAc;wBACd,oBAAoB;wBACpB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;wBACpB,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;ACxED;;AAEG;;;;"}
@@ -0,0 +1,46 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, Directive, NgModule } from '@angular/core';
3
+
4
+ class FrSkeleton {
5
+ animated = input(true, { ...(ngDevMode ? { debugName: "animated" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6
+ width = input(null, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
7
+ height = input(null, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
8
+ radius = input(null, ...(ngDevMode ? [{ debugName: "radius" }] : /* istanbul ignore next */ []));
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSkeleton, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSkeleton, isStandalone: true, selector: "[frSkeleton], frame-skeleton", inputs: { animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "attr.data-animated": "animated()", "style.--frame-skeleton-width": "width()", "style.--frame-skeleton-height": "height()", "style.--frame-skeleton-radius": "radius()" }, classAttribute: "frame-skeleton" }, exportAs: ["frSkeleton"], ngImport: i0 });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSkeleton, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ selector: '[frSkeleton], frame-skeleton',
16
+ exportAs: 'frSkeleton',
17
+ host: {
18
+ class: 'frame-skeleton',
19
+ 'aria-hidden': 'true',
20
+ '[attr.data-animated]': 'animated()',
21
+ '[style.--frame-skeleton-width]': 'width()',
22
+ '[style.--frame-skeleton-height]': 'height()',
23
+ '[style.--frame-skeleton-radius]': 'radius()',
24
+ },
25
+ }]
26
+ }], propDecorators: { animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }] } });
27
+
28
+ class FrSkeletonModule {
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSkeletonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.16", ngImport: i0, type: FrSkeletonModule, imports: [FrSkeleton], exports: [FrSkeleton] });
31
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSkeletonModule });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSkeletonModule, decorators: [{
34
+ type: NgModule,
35
+ args: [{
36
+ imports: [FrSkeleton],
37
+ exports: [FrSkeleton],
38
+ }]
39
+ }] });
40
+
41
+ /**
42
+ * Generated bundle index. Do not edit.
43
+ */
44
+
45
+ export { FrSkeleton, FrSkeletonModule };
46
+ //# sourceMappingURL=frame-ui-ng-components-skeleton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-ui-ng-components-skeleton.mjs","sources":["../../../projects/components/skeleton/src/skeleton.ts","../../../projects/components/skeleton/skeleton.module.ts","../../../projects/components/skeleton/frame-ui-ng-components-skeleton.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[frSkeleton], frame-skeleton',\n exportAs: 'frSkeleton',\n host: {\n class: 'frame-skeleton',\n 'aria-hidden': 'true',\n '[attr.data-animated]': 'animated()',\n '[style.--frame-skeleton-width]': 'width()',\n '[style.--frame-skeleton-height]': 'height()',\n '[style.--frame-skeleton-radius]': 'radius()',\n },\n})\nexport class FrSkeleton {\n readonly animated = input(true, { transform: booleanAttribute });\n readonly width = input<string | null>(null);\n readonly height = input<string | null>(null);\n readonly radius = input<string | null>(null);\n}\n","import { NgModule } from '@angular/core';\n\nimport { FrSkeleton } from './src/skeleton';\n\n@NgModule({\n imports: [FrSkeleton],\n exports: [FrSkeleton],\n})\nexport class FrSkeletonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAca,UAAU,CAAA;IACZ,QAAQ,GAAG,KAAK,CAAC,IAAI,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvD,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,4EAAC;AAClC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;AACnC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;wGAJjC,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAZtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,gCAAgC,EAAE,SAAS;AAC3C,wBAAA,iCAAiC,EAAE,UAAU;AAC7C,wBAAA,iCAAiC,EAAE,UAAU;AAC9C,qBAAA;AACF,iBAAA;;;MCLY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHjB,UAAU,CAAA,EAAA,OAAA,EAAA,CACV,UAAU,CAAA,EAAA,CAAA;yGAET,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,OAAO,EAAE,CAAC,UAAU,CAAC;AACtB,iBAAA;;;ACPD;;AAEG;;;;"}
@@ -0,0 +1,279 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, input, numberAttribute, booleanAttribute, output, signal, computed, effect, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';
5
+
6
+ const FR_SLIDER_ORIENTATIONS = ['horizontal', 'vertical'];
7
+ function coerceOrientation(value) {
8
+ return value === 'vertical' ? 'vertical' : 'horizontal';
9
+ }
10
+ function coerceNumber(value, fallback) {
11
+ const parsed = Number(value);
12
+ return Number.isFinite(parsed) ? parsed : fallback;
13
+ }
14
+ function coerceValue(value) {
15
+ if (Array.isArray(value)) {
16
+ return value.map((item) => coerceNumber(item, 0));
17
+ }
18
+ if (value === null || value === undefined) {
19
+ return [0];
20
+ }
21
+ return [coerceNumber(value, 0)];
22
+ }
23
+ class FrSlider extends FrControlValueAccessor {
24
+ elementRef = inject(ElementRef);
25
+ document = inject(DOCUMENT);
26
+ controlledByInput = false;
27
+ min = input(0, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: numberAttribute });
28
+ max = input(100, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: numberAttribute });
29
+ step = input(1, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: numberAttribute });
30
+ minStepsBetweenThumbs = input(0, { ...(ngDevMode ? { debugName: "minStepsBetweenThumbs" } : /* istanbul ignore next */ {}), transform: numberAttribute });
31
+ orientation = input('horizontal', { ...(ngDevMode ? { debugName: "orientation" } : /* istanbul ignore next */ {}), transform: coerceOrientation });
32
+ disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled', transform: booleanAttribute });
33
+ invalidInput = input(false, { ...(ngDevMode ? { debugName: "invalidInput" } : /* istanbul ignore next */ {}), alias: 'invalid', transform: booleanAttribute });
34
+ inverted = input(false, { ...(ngDevMode ? { debugName: "inverted" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
35
+ defaultValue = input(0, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
36
+ valueInput = input(null, { ...(ngDevMode ? { debugName: "valueInput" } : /* istanbul ignore next */ {}), alias: 'value' });
37
+ ariaLabel = input('Slider thumb', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
38
+ formatValue = input(null, ...(ngDevMode ? [{ debugName: "formatValue" }] : /* istanbul ignore next */ []));
39
+ valueChange = output();
40
+ values = signal([0], ...(ngDevMode ? [{ debugName: "values" }] : /* istanbul ignore next */ []));
41
+ activeThumb = signal(null, ...(ngDevMode ? [{ debugName: "activeThumb" }] : /* istanbul ignore next */ []));
42
+ disabled = computed(() => this.disabledInput() || this.formDisabled(), ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
43
+ invalid = computed(() => this.invalidInput() || this.formInvalid(), ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
44
+ rangeStartPercent = computed(() => {
45
+ const values = this.values();
46
+ return values.length > 1 ? this.percentForValue(values[0]) : 0;
47
+ }, ...(ngDevMode ? [{ debugName: "rangeStartPercent" }] : /* istanbul ignore next */ []));
48
+ rangeEndPercent = computed(() => {
49
+ const values = this.values();
50
+ return this.percentForValue(values.at(-1) ?? this.min());
51
+ }, ...(ngDevMode ? [{ debugName: "rangeEndPercent" }] : /* istanbul ignore next */ []));
52
+ constructor() {
53
+ super();
54
+ effect(() => {
55
+ const controlledValue = this.valueInput();
56
+ if (controlledValue !== null) {
57
+ this.controlledByInput = true;
58
+ this.values.set(this.normalizeValues(coerceValue(controlledValue)));
59
+ return;
60
+ }
61
+ if (!this.controlledByInput) {
62
+ this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));
63
+ }
64
+ });
65
+ }
66
+ setViewValue(value) {
67
+ if (value === null || value === undefined) {
68
+ this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));
69
+ return;
70
+ }
71
+ this.values.set(this.normalizeValues(coerceValue(value)));
72
+ }
73
+ handleNativeInput(index, rawValue) {
74
+ this.commitThumbValue(index, Number(rawValue));
75
+ }
76
+ markTouched() {
77
+ this.markAsTouched();
78
+ }
79
+ handlePointerDown(event) {
80
+ if (this.disabled() || event.button !== 0) {
81
+ return;
82
+ }
83
+ const target = event.target;
84
+ if (target?.classList.contains('frame-slider__native')) {
85
+ return;
86
+ }
87
+ event.preventDefault();
88
+ const index = this.closestThumbIndex(this.valueFromPointer(event));
89
+ this.activeThumb.set(index);
90
+ this.commitThumbValue(index, this.valueFromPointer(event));
91
+ const move = (moveEvent) => {
92
+ moveEvent.preventDefault();
93
+ this.commitThumbValue(index, this.valueFromPointer(moveEvent));
94
+ };
95
+ const up = () => {
96
+ this.document.removeEventListener('pointermove', move);
97
+ this.document.removeEventListener('pointerup', up);
98
+ this.activeThumb.set(null);
99
+ this.markTouched();
100
+ };
101
+ this.document.addEventListener('pointermove', move);
102
+ this.document.addEventListener('pointerup', up, { once: true });
103
+ }
104
+ thumbLabel(index) {
105
+ const count = this.values().length;
106
+ if (count === 1) {
107
+ return this.ariaLabel();
108
+ }
109
+ if (index === 0) {
110
+ return `${this.ariaLabel()} minimum`;
111
+ }
112
+ if (index === count - 1) {
113
+ return `${this.ariaLabel()} maximum`;
114
+ }
115
+ return `${this.ariaLabel()} ${index + 1}`;
116
+ }
117
+ valueText(value) {
118
+ return this.formatValue()?.(value) ?? String(value);
119
+ }
120
+ percentForValue(value) {
121
+ const min = this.min();
122
+ const max = this.max();
123
+ const range = max - min;
124
+ if (range <= 0) {
125
+ return 0;
126
+ }
127
+ return ((value - min) / range) * 100;
128
+ }
129
+ commitThumbValue(index, rawValue) {
130
+ const next = [...this.values()];
131
+ next[index] = rawValue;
132
+ const normalized = this.normalizeValues(next, index);
133
+ this.values.set(normalized);
134
+ const emitted = this.toExternalValue(normalized);
135
+ this.notifyValueChange(emitted);
136
+ this.valueChange.emit(emitted);
137
+ }
138
+ normalizeValues(values, activeIndex = -1) {
139
+ const min = Math.min(this.min(), this.max());
140
+ const max = Math.max(this.min(), this.max());
141
+ const step = Math.max(this.step(), 0.000001);
142
+ const minDistance = Math.max(this.minStepsBetweenThumbs(), 0) * step;
143
+ const normalized = values.length ? values : [min];
144
+ return normalized.map((value, index) => {
145
+ const previous = index > 0 ? normalized[index - 1] + minDistance : min;
146
+ const next = index < normalized.length - 1 ? normalized[index + 1] - minDistance : max;
147
+ const lower = activeIndex === index ? previous : min;
148
+ const upper = activeIndex === index ? next : max;
149
+ return this.snap(clamp(value, lower, upper), min, step);
150
+ });
151
+ }
152
+ snap(value, min, step) {
153
+ const decimals = String(step).split('.')[1]?.length ?? 0;
154
+ return Number((Math.round((value - min) / step) * step + min).toFixed(decimals));
155
+ }
156
+ toExternalValue(values) {
157
+ return values.length === 1 ? values[0] : values;
158
+ }
159
+ valueFromPointer(event) {
160
+ const rect = this.elementRef.nativeElement.getBoundingClientRect();
161
+ const horizontal = this.orientation() === 'horizontal';
162
+ const size = horizontal ? rect.width : rect.height;
163
+ const offset = horizontal ? event.clientX - rect.left : rect.bottom - event.clientY;
164
+ const direction = horizontal && this.isRtl() ? -1 : 1;
165
+ let percent = size > 0 ? offset / size : 0;
166
+ if (direction === -1) {
167
+ percent = 1 - percent;
168
+ }
169
+ if (this.inverted()) {
170
+ percent = 1 - percent;
171
+ }
172
+ return this.min() + clamp(percent, 0, 1) * (this.max() - this.min());
173
+ }
174
+ closestThumbIndex(value) {
175
+ return this.values().reduce((closestIndex, thumb, index, values) => {
176
+ const currentDistance = Math.abs(value - thumb);
177
+ const closestDistance = Math.abs(value - values[closestIndex]);
178
+ return currentDistance < closestDistance ? index : closestIndex;
179
+ }, 0);
180
+ }
181
+ isRtl() {
182
+ return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';
183
+ }
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSlider, isStandalone: true, selector: "frame-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "pointerdown": "handlePointerDown($event)" }, properties: { "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-inverted": "inverted() ? \"\" : null", "style.--frame-slider-start-percent": "rangeStartPercent() + \"%\"", "style.--frame-slider-end-percent": "rangeEndPercent() + \"%\"" }, classAttribute: "frame-slider" }, providers: [provideDsValueAccessor(FrSlider)], exportAs: ["frSlider"], usesInheritance: true, ngImport: i0, template: `
186
+ <span class="frame-slider__track">
187
+ <span class="frame-slider__range"></span>
188
+ </span>
189
+
190
+ @for (thumb of values(); track $index) {
191
+ <input
192
+ class="frame-slider__native"
193
+ type="range"
194
+ [attr.aria-label]="thumbLabel($index)"
195
+ [attr.aria-valuetext]="valueText(thumb)"
196
+ [disabled]="disabled()"
197
+ [min]="min()"
198
+ [max]="max()"
199
+ [step]="step()"
200
+ [value]="thumb"
201
+ (blur)="markTouched()"
202
+ (input)="handleNativeInput($index, $any($event.target).value)"
203
+ />
204
+ <span
205
+ class="frame-slider__thumb"
206
+ [attr.data-active]="activeThumb() === $index ? '' : null"
207
+ [style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
208
+ ></span>
209
+ }
210
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
+ }
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, decorators: [{
213
+ type: Component,
214
+ args: [{
215
+ selector: 'frame-slider',
216
+ exportAs: 'frSlider',
217
+ providers: [provideDsValueAccessor(FrSlider)],
218
+ changeDetection: ChangeDetectionStrategy.OnPush,
219
+ host: {
220
+ class: 'frame-slider',
221
+ '[attr.data-orientation]': 'orientation()',
222
+ '[attr.data-disabled]': 'disabled() ? "" : null',
223
+ '[attr.data-invalid]': 'invalid() ? "" : null',
224
+ '[attr.data-inverted]': 'inverted() ? "" : null',
225
+ '[style.--frame-slider-start-percent]': 'rangeStartPercent() + "%"',
226
+ '[style.--frame-slider-end-percent]': 'rangeEndPercent() + "%"',
227
+ '(pointerdown)': 'handlePointerDown($event)',
228
+ },
229
+ template: `
230
+ <span class="frame-slider__track">
231
+ <span class="frame-slider__range"></span>
232
+ </span>
233
+
234
+ @for (thumb of values(); track $index) {
235
+ <input
236
+ class="frame-slider__native"
237
+ type="range"
238
+ [attr.aria-label]="thumbLabel($index)"
239
+ [attr.aria-valuetext]="valueText(thumb)"
240
+ [disabled]="disabled()"
241
+ [min]="min()"
242
+ [max]="max()"
243
+ [step]="step()"
244
+ [value]="thumb"
245
+ (blur)="markTouched()"
246
+ (input)="handleNativeInput($index, $any($event.target).value)"
247
+ />
248
+ <span
249
+ class="frame-slider__thumb"
250
+ [attr.data-active]="activeThumb() === $index ? '' : null"
251
+ [style.--frame-slider-thumb-percent]="percentForValue(thumb) + '%'"
252
+ ></span>
253
+ }
254
+ `,
255
+ }]
256
+ }], ctorParameters: () => [], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], minStepsBetweenThumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "minStepsBetweenThumbs", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], formatValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
257
+ function clamp(value, min, max) {
258
+ return Math.min(Math.max(value, min), max);
259
+ }
260
+
261
+ class FrSliderModule {
262
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
263
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.16", ngImport: i0, type: FrSliderModule, imports: [FrSlider], exports: [FrSlider] });
264
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSliderModule });
265
+ }
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSliderModule, decorators: [{
267
+ type: NgModule,
268
+ args: [{
269
+ imports: [FrSlider],
270
+ exports: [FrSlider],
271
+ }]
272
+ }] });
273
+
274
+ /**
275
+ * Generated bundle index. Do not edit.
276
+ */
277
+
278
+ export { FR_SLIDER_ORIENTATIONS, FrSlider, FrSliderModule };
279
+ //# sourceMappingURL=frame-ui-ng-components-slider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-ui-ng-components-slider.mjs","sources":["../../../projects/components/slider/src/slider.ts","../../../projects/components/slider/slider.module.ts","../../../projects/components/slider/frame-ui-ng-components-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\n\nexport const FR_SLIDER_ORIENTATIONS = ['horizontal', 'vertical'] as const;\n\nexport type FrSliderOrientation = (typeof FR_SLIDER_ORIENTATIONS)[number];\nexport type FrSliderValue = number | number[];\n\nfunction coerceOrientation(value: unknown): FrSliderOrientation {\n return value === 'vertical' ? 'vertical' : 'horizontal';\n}\n\nfunction coerceNumber(value: unknown, fallback: number): number {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction coerceValue(value: FrSliderValue | null | undefined): number[] {\n if (Array.isArray(value)) {\n return value.map((item) => coerceNumber(item, 0));\n }\n\n if (value === null || value === undefined) {\n return [0];\n }\n\n return [coerceNumber(value, 0)];\n}\n\n@Component({\n selector: 'frame-slider',\n exportAs: 'frSlider',\n providers: [provideDsValueAccessor(FrSlider)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-slider',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n '[attr.data-inverted]': 'inverted() ? \"\" : null',\n '[style.--frame-slider-start-percent]': 'rangeStartPercent() + \"%\"',\n '[style.--frame-slider-end-percent]': 'rangeEndPercent() + \"%\"',\n '(pointerdown)': 'handlePointerDown($event)',\n },\n template: `\n <span class=\"frame-slider__track\">\n <span class=\"frame-slider__range\"></span>\n </span>\n\n @for (thumb of values(); track $index) {\n <input\n class=\"frame-slider__native\"\n type=\"range\"\n [attr.aria-label]=\"thumbLabel($index)\"\n [attr.aria-valuetext]=\"valueText(thumb)\"\n [disabled]=\"disabled()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"thumb\"\n (blur)=\"markTouched()\"\n (input)=\"handleNativeInput($index, $any($event.target).value)\"\n />\n <span\n class=\"frame-slider__thumb\"\n [attr.data-active]=\"activeThumb() === $index ? '' : null\"\n [style.--frame-slider-thumb-percent]=\"percentForValue(thumb) + '%'\"\n ></span>\n }\n `,\n})\nexport class FrSlider extends FrControlValueAccessor<FrSliderValue | null> {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n private controlledByInput = false;\n\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly step = input(1, { transform: numberAttribute });\n readonly minStepsBetweenThumbs = input(0, { transform: numberAttribute });\n readonly orientation = input<FrSliderOrientation, unknown>('horizontal', { transform: coerceOrientation });\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\n readonly inverted = input(false, { transform: booleanAttribute });\n readonly defaultValue = input<FrSliderValue>(0);\n readonly valueInput = input<FrSliderValue | null>(null, { alias: 'value' });\n readonly ariaLabel = input('Slider thumb', { alias: 'aria-label' });\n readonly formatValue = input<((value: number) => string) | null>(null);\n\n readonly valueChange = output<FrSliderValue>();\n\n protected readonly values = signal<number[]>([0]);\n protected readonly activeThumb = signal<number | null>(null);\n protected readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\n protected readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\n protected readonly rangeStartPercent = computed(() => {\n const values = this.values();\n return values.length > 1 ? this.percentForValue(values[0]) : 0;\n });\n protected readonly rangeEndPercent = computed(() => {\n const values = this.values();\n return this.percentForValue(values.at(-1) ?? this.min());\n });\n\n constructor() {\n super();\n\n effect(() => {\n const controlledValue = this.valueInput();\n\n if (controlledValue !== null) {\n this.controlledByInput = true;\n this.values.set(this.normalizeValues(coerceValue(controlledValue)));\n return;\n }\n\n if (!this.controlledByInput) {\n this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));\n }\n });\n }\n\n protected setViewValue(value: FrSliderValue | null): void {\n if (value === null || value === undefined) {\n this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));\n return;\n }\n\n this.values.set(this.normalizeValues(coerceValue(value)));\n }\n\n protected handleNativeInput(index: number, rawValue: string): void {\n this.commitThumbValue(index, Number(rawValue));\n }\n\n protected markTouched(): void {\n this.markAsTouched();\n }\n\n protected handlePointerDown(event: PointerEvent): void {\n if (this.disabled() || event.button !== 0) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.classList.contains('frame-slider__native')) {\n return;\n }\n\n event.preventDefault();\n const index = this.closestThumbIndex(this.valueFromPointer(event));\n this.activeThumb.set(index);\n this.commitThumbValue(index, this.valueFromPointer(event));\n\n const move = (moveEvent: PointerEvent) => {\n moveEvent.preventDefault();\n this.commitThumbValue(index, this.valueFromPointer(moveEvent));\n };\n\n const up = () => {\n this.document.removeEventListener('pointermove', move);\n this.document.removeEventListener('pointerup', up);\n this.activeThumb.set(null);\n this.markTouched();\n };\n\n this.document.addEventListener('pointermove', move);\n this.document.addEventListener('pointerup', up, { once: true });\n }\n\n protected thumbLabel(index: number): string {\n const count = this.values().length;\n\n if (count === 1) {\n return this.ariaLabel();\n }\n\n if (index === 0) {\n return `${this.ariaLabel()} minimum`;\n }\n\n if (index === count - 1) {\n return `${this.ariaLabel()} maximum`;\n }\n\n return `${this.ariaLabel()} ${index + 1}`;\n }\n\n protected valueText(value: number): string {\n return this.formatValue()?.(value) ?? String(value);\n }\n\n protected percentForValue(value: number): number {\n const min = this.min();\n const max = this.max();\n const range = max - min;\n\n if (range <= 0) {\n return 0;\n }\n\n return ((value - min) / range) * 100;\n }\n\n private commitThumbValue(index: number, rawValue: number): void {\n const next = [...this.values()];\n next[index] = rawValue;\n const normalized = this.normalizeValues(next, index);\n this.values.set(normalized);\n\n const emitted = this.toExternalValue(normalized);\n this.notifyValueChange(emitted);\n this.valueChange.emit(emitted);\n }\n\n private normalizeValues(values: number[], activeIndex = -1): number[] {\n const min = Math.min(this.min(), this.max());\n const max = Math.max(this.min(), this.max());\n const step = Math.max(this.step(), 0.000001);\n const minDistance = Math.max(this.minStepsBetweenThumbs(), 0) * step;\n const normalized = values.length ? values : [min];\n\n return normalized.map((value, index) => {\n const previous = index > 0 ? normalized[index - 1] + minDistance : min;\n const next = index < normalized.length - 1 ? normalized[index + 1] - minDistance : max;\n const lower = activeIndex === index ? previous : min;\n const upper = activeIndex === index ? next : max;\n return this.snap(clamp(value, lower, upper), min, step);\n });\n }\n\n private snap(value: number, min: number, step: number): number {\n const decimals = String(step).split('.')[1]?.length ?? 0;\n return Number((Math.round((value - min) / step) * step + min).toFixed(decimals));\n }\n\n private toExternalValue(values: number[]): FrSliderValue {\n return values.length === 1 ? values[0] : values;\n }\n\n private valueFromPointer(event: PointerEvent): number {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const horizontal = this.orientation() === 'horizontal';\n const size = horizontal ? rect.width : rect.height;\n const offset = horizontal ? event.clientX - rect.left : rect.bottom - event.clientY;\n const direction = horizontal && this.isRtl() ? -1 : 1;\n let percent = size > 0 ? offset / size : 0;\n\n if (direction === -1) {\n percent = 1 - percent;\n }\n\n if (this.inverted()) {\n percent = 1 - percent;\n }\n\n return this.min() + clamp(percent, 0, 1) * (this.max() - this.min());\n }\n\n private closestThumbIndex(value: number): number {\n return this.values().reduce((closestIndex, thumb, index, values) => {\n const currentDistance = Math.abs(value - thumb);\n const closestDistance = Math.abs(value - values[closestIndex]);\n return currentDistance < closestDistance ? index : closestIndex;\n }, 0);\n }\n\n private isRtl(): boolean {\n return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n","import { NgModule } from '@angular/core';\n\nimport { FrSlider } from './src/slider';\n\n@NgModule({\n imports: [FrSlider],\n exports: [FrSlider],\n})\nexport class FrSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, Directive, NgModule } from '@angular/core';
3
+
4
+ const FR_SPINNER_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'];
5
+ class FrSpinner {
6
+ customSize = input(null, { ...(ngDevMode ? { debugName: "customSize" } : /* istanbul ignore next */ {}), alias: 'sizeValue' });
7
+ decorative = input(false, { ...(ngDevMode ? { debugName: "decorative" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
8
+ duration = input(null, ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
9
+ label = input('Loading', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
10
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
11
+ stroke = input(null, ...(ngDevMode ? [{ debugName: "stroke" }] : /* istanbul ignore next */ []));
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSpinner, deps: [], target: i0.ɵɵFactoryTarget.Directive });
13
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSpinner, isStandalone: true, selector: "[frSpinner], frame-spinner", inputs: { customSize: { classPropertyName: "customSize", publicName: "sizeValue", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, stroke: { classPropertyName: "stroke", publicName: "stroke", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.role": "decorative() ? null : \"status\"", "attr.aria-hidden": "decorative() ? \"true\" : null", "attr.aria-label": "decorative() ? null : label()", "style.--frame-spinner-size": "customSize()", "style.--frame-spinner-duration": "duration()", "style.--frame-spinner-stroke": "stroke()" }, classAttribute: "frame-spinner" }, exportAs: ["frSpinner"], ngImport: i0 });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSpinner, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ selector: '[frSpinner], frame-spinner',
19
+ exportAs: 'frSpinner',
20
+ host: {
21
+ class: 'frame-spinner',
22
+ '[attr.data-size]': 'size()',
23
+ '[attr.role]': 'decorative() ? null : "status"',
24
+ '[attr.aria-hidden]': 'decorative() ? "true" : null',
25
+ '[attr.aria-label]': 'decorative() ? null : label()',
26
+ '[style.--frame-spinner-size]': 'customSize()',
27
+ '[style.--frame-spinner-duration]': 'duration()',
28
+ '[style.--frame-spinner-stroke]': 'stroke()',
29
+ },
30
+ }]
31
+ }], propDecorators: { customSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizeValue", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], stroke: [{ type: i0.Input, args: [{ isSignal: true, alias: "stroke", required: false }] }] } });
32
+
33
+ class FrSpinnerModule {
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
35
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.16", ngImport: i0, type: FrSpinnerModule, imports: [FrSpinner], exports: [FrSpinner] });
36
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSpinnerModule });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSpinnerModule, decorators: [{
39
+ type: NgModule,
40
+ args: [{
41
+ imports: [FrSpinner],
42
+ exports: [FrSpinner],
43
+ }]
44
+ }] });
45
+
46
+ /**
47
+ * Generated bundle index. Do not edit.
48
+ */
49
+
50
+ export { FR_SPINNER_SIZES, FrSpinner, FrSpinnerModule };
51
+ //# sourceMappingURL=frame-ui-ng-components-spinner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-ui-ng-components-spinner.mjs","sources":["../../../projects/components/spinner/src/spinner.ts","../../../projects/components/spinner/spinner.module.ts","../../../projects/components/spinner/frame-ui-ng-components-spinner.ts"],"sourcesContent":["import { Directive, booleanAttribute, input } from '@angular/core';\n\nexport const FR_SPINNER_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\n\nexport type FrSpinnerSize = (typeof FR_SPINNER_SIZES)[number];\n\n@Directive({\n selector: '[frSpinner], frame-spinner',\n exportAs: 'frSpinner',\n host: {\n class: 'frame-spinner',\n '[attr.data-size]': 'size()',\n '[attr.role]': 'decorative() ? null : \"status\"',\n '[attr.aria-hidden]': 'decorative() ? \"true\" : null',\n '[attr.aria-label]': 'decorative() ? null : label()',\n '[style.--frame-spinner-size]': 'customSize()',\n '[style.--frame-spinner-duration]': 'duration()',\n '[style.--frame-spinner-stroke]': 'stroke()',\n },\n})\nexport class FrSpinner {\n readonly customSize = input<string | null>(null, { alias: 'sizeValue' });\n readonly decorative = input(false, { transform: booleanAttribute });\n readonly duration = input<string | null>(null);\n readonly label = input('Loading');\n readonly size = input<FrSpinnerSize>('md');\n readonly stroke = input<string | null>(null);\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { FrSpinner } from './src/spinner';\n\n@NgModule({\n imports: [FrSpinner],\n exports: [FrSpinner],\n})\nexport class FrSpinnerModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEO,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;MAkBhD,SAAS,CAAA;IACX,UAAU,GAAG,KAAK,CAAgB,IAAI,kFAAI,KAAK,EAAE,WAAW,EAAA,CAAG;IAC/D,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC1D,IAAA,QAAQ,GAAG,KAAK,CAAgB,IAAI,+EAAC;AACrC,IAAA,KAAK,GAAG,KAAK,CAAC,SAAS,4EAAC;AACxB,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,2EAAC;AACjC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;wGANjC,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,kCAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,aAAa,EAAE,gCAAgC;AAC/C,wBAAA,oBAAoB,EAAE,8BAA8B;AACpD,wBAAA,mBAAmB,EAAE,+BAA+B;AACpD,wBAAA,8BAA8B,EAAE,cAAc;AAC9C,wBAAA,kCAAkC,EAAE,YAAY;AAChD,wBAAA,gCAAgC,EAAE,UAAU;AAC7C,qBAAA;AACF,iBAAA;;;MCXY,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAf,eAAe,EAAA,OAAA,EAAA,CAHhB,SAAS,CAAA,EAAA,OAAA,EAAA,CACT,SAAS,CAAA,EAAA,CAAA;yGAER,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,iBAAA;;;ACPD;;AAEG;;;;"}