@acorex/components 19.8.0-next.8 → 19.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. package/action-sheet/lib/action-sheet.class.d.ts +2 -1
  2. package/badge/lib/badge.component.d.ts +2 -2
  3. package/button/lib/button.component.d.ts +6 -1
  4. package/button-group/lib/button-group-item.component.d.ts +1 -3
  5. package/button-group/lib/button-group.module.d.ts +1 -2
  6. package/chips/lib/chips.component.d.ts +7 -11
  7. package/color-box/lib/color-box.component.d.ts +1 -5
  8. package/color-palette/lib/color-palette-picker.component.d.ts +14 -19
  9. package/color-palette/lib/color-palette.module.d.ts +1 -2
  10. package/common/lib/classes/styles.class.d.ts +4 -6
  11. package/common/lib/components/button-base-component.class.d.ts +1 -0
  12. package/conversation/lib/conversation-container/conversation-container.component.d.ts +3 -2
  13. package/conversation/lib/conversation-input/conversation-input.component.d.ts +2 -1
  14. package/datetime-picker/lib/datetime-picker.component.d.ts +10 -0
  15. package/datetime-picker/lib/datetime-picker.module.d.ts +1 -2
  16. package/decorators/index.d.ts +4 -5
  17. package/decorators/lib/decorators.module.d.ts +6 -7
  18. package/dialog/lib/dialog.component.d.ts +0 -2
  19. package/dropdown-button/lib/dropdown-button.component.d.ts +1 -1
  20. package/fesm2022/acorex-components-action-sheet.mjs +4 -4
  21. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  22. package/fesm2022/acorex-components-alert.mjs +4 -4
  23. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  24. package/fesm2022/acorex-components-audio-wave.mjs +5 -5
  25. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  26. package/fesm2022/acorex-components-avatar.mjs +4 -4
  27. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  28. package/fesm2022/acorex-components-badge.mjs +6 -6
  29. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  30. package/fesm2022/acorex-components-bottom-navigation.mjs +3 -3
  31. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  32. package/fesm2022/acorex-components-breadcrumbs.mjs +3 -3
  33. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  34. package/fesm2022/acorex-components-button-group.mjs +146 -147
  35. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  36. package/fesm2022/acorex-components-button.mjs +22 -19
  37. package/fesm2022/acorex-components-button.mjs.map +1 -1
  38. package/fesm2022/acorex-components-calendar.mjs +5 -5
  39. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  40. package/fesm2022/acorex-components-check-box.mjs +3 -3
  41. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  42. package/fesm2022/acorex-components-chips.mjs +10 -12
  43. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  44. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  45. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  46. package/fesm2022/acorex-components-collapse.mjs +4 -4
  47. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  48. package/fesm2022/acorex-components-color-box.mjs +4 -11
  49. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  50. package/fesm2022/acorex-components-color-palette.mjs +326 -342
  51. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  52. package/fesm2022/acorex-components-comment.mjs +9 -9
  53. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  54. package/fesm2022/acorex-components-common.mjs +7 -22
  55. package/fesm2022/acorex-components-common.mjs.map +1 -1
  56. package/fesm2022/acorex-components-conversation.mjs +50 -29
  57. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  58. package/fesm2022/acorex-components-cron-job.mjs +3 -3
  59. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  60. package/fesm2022/acorex-components-data-pager.mjs +7 -7
  61. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  62. package/fesm2022/acorex-components-data-table.mjs +5 -5
  63. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  64. package/fesm2022/acorex-components-datetime-box.mjs +4 -3
  65. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  66. package/fesm2022/acorex-components-datetime-input.mjs +3 -3
  67. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  68. package/fesm2022/acorex-components-datetime-picker.mjs +24 -18
  69. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  70. package/fesm2022/acorex-components-decorators.mjs +18 -30
  71. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  72. package/fesm2022/acorex-components-dialog.mjs +4 -11
  73. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  74. package/fesm2022/acorex-components-drawer.mjs +5 -5
  75. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  76. package/fesm2022/acorex-components-dropdown-button.mjs +13 -7
  77. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  78. package/fesm2022/acorex-components-dropdown.mjs +2 -2
  79. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  80. package/fesm2022/acorex-components-file-explorer.mjs +231 -0
  81. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -0
  82. package/fesm2022/acorex-components-form.mjs +4 -11
  83. package/fesm2022/acorex-components-form.mjs.map +1 -1
  84. package/fesm2022/acorex-components-grid-layout-builder.mjs +200 -22
  85. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  86. package/fesm2022/acorex-components-image-editor.mjs +57 -42
  87. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  88. package/fesm2022/acorex-components-image.mjs +3 -3
  89. package/fesm2022/acorex-components-image.mjs.map +1 -1
  90. package/fesm2022/acorex-components-json-viewer.mjs +3 -3
  91. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  92. package/fesm2022/acorex-components-label.mjs +3 -3
  93. package/fesm2022/acorex-components-label.mjs.map +1 -1
  94. package/fesm2022/acorex-components-list.mjs +3 -3
  95. package/fesm2022/acorex-components-list.mjs.map +1 -1
  96. package/fesm2022/acorex-components-loading-dialog.mjs +3 -3
  97. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  98. package/fesm2022/acorex-components-loading.mjs +5 -5
  99. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  100. package/fesm2022/acorex-components-map.mjs +1 -1
  101. package/fesm2022/acorex-components-media-viewer.mjs +5 -5
  102. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  103. package/fesm2022/acorex-components-menu.mjs +9 -9
  104. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  105. package/fesm2022/acorex-components-navbar.mjs +4 -4
  106. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  107. package/fesm2022/acorex-components-notification.mjs +5 -5
  108. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  109. package/fesm2022/acorex-components-number-box.mjs +7 -3
  110. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  111. package/fesm2022/acorex-components-otp.mjs +3 -3
  112. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  113. package/fesm2022/acorex-components-page.mjs +1 -1
  114. package/fesm2022/acorex-components-paint.mjs +11 -11
  115. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  116. package/fesm2022/acorex-components-password-box.mjs +5 -5
  117. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  118. package/fesm2022/acorex-components-pdf-reader.mjs +1 -1
  119. package/fesm2022/acorex-components-phone-box.mjs +3 -3
  120. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  121. package/fesm2022/acorex-components-picker.mjs +233 -128
  122. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  123. package/fesm2022/acorex-components-popover.mjs +1 -1
  124. package/fesm2022/acorex-components-popup.mjs +3 -3
  125. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  126. package/fesm2022/acorex-components-progress-bar.mjs +23 -23
  127. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  128. package/fesm2022/acorex-components-qrcode.mjs +1 -1
  129. package/fesm2022/acorex-components-radio.mjs +1 -1
  130. package/fesm2022/acorex-components-rail-navigation.mjs +4 -4
  131. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  132. package/fesm2022/acorex-components-range-slider.mjs +4 -4
  133. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  134. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  135. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  136. package/fesm2022/acorex-components-result.mjs +3 -3
  137. package/fesm2022/acorex-components-result.mjs.map +1 -1
  138. package/fesm2022/acorex-components-routing-progress.mjs +3 -3
  139. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  140. package/fesm2022/acorex-components-scheduler.mjs +12 -12
  141. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  142. package/fesm2022/acorex-components-search-box.mjs +11 -20
  143. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  144. package/fesm2022/acorex-components-select-box.mjs +3 -4
  145. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  146. package/fesm2022/acorex-components-selection-list.mjs +142 -27
  147. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  148. package/fesm2022/acorex-components-side-menu.mjs +18 -9
  149. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  150. package/fesm2022/acorex-components-skeleton.mjs +3 -3
  151. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  152. package/fesm2022/acorex-components-slider.mjs +3 -3
  153. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  154. package/fesm2022/acorex-components-step-wizard.mjs +3 -3
  155. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  156. package/fesm2022/acorex-components-switch.mjs +4 -9
  157. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  158. package/fesm2022/acorex-components-tabs.mjs +6 -6
  159. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  160. package/fesm2022/acorex-components-tag.mjs +4 -4
  161. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  162. package/fesm2022/acorex-components-text-area.mjs +4 -7
  163. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  164. package/fesm2022/acorex-components-text-box.mjs +3 -3
  165. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  166. package/fesm2022/acorex-components-time-line.mjs +9 -9
  167. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  168. package/fesm2022/acorex-components-toast.mjs +5 -5
  169. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  170. package/fesm2022/acorex-components-toolbar.mjs +12 -3
  171. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  172. package/fesm2022/acorex-components-tooltip.mjs +3 -3
  173. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  174. package/fesm2022/acorex-components-tree-view.mjs +37 -68
  175. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  176. package/fesm2022/acorex-components-uploader.mjs +8 -8
  177. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  178. package/fesm2022/acorex-components-video-player.mjs +1 -1
  179. package/fesm2022/acorex-components-wysiwyg.mjs +26 -26
  180. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  181. package/file-explorer/README.md +3 -0
  182. package/file-explorer/index.d.ts +6 -0
  183. package/file-explorer/lib/file-explorer-container/file-explorer-container.component.d.ts +10 -0
  184. package/file-explorer/lib/file-explorer-item/file-explorer-item.component.d.ts +11 -0
  185. package/file-explorer/lib/file-explorer-types.d.ts +11 -0
  186. package/file-explorer/lib/file-explorer-view/file-explorer-view.component.d.ts +27 -0
  187. package/file-explorer/lib/file-explorer.module.d.ts +16 -0
  188. package/file-explorer/lib/file-explorer.service.d.ts +6 -0
  189. package/form/lib/form.component.d.ts +2 -3
  190. package/grid-layout-builder/index.d.ts +1 -0
  191. package/grid-layout-builder/lib/grid-layout-builder.module.d.ts +3 -2
  192. package/grid-layout-builder/lib/grid-layout-container.component.d.ts +14 -10
  193. package/grid-layout-builder/lib/grid-layout-widget.directive.d.ts +106 -0
  194. package/grid-layout-builder/lib/types.d.ts +2 -1
  195. package/image-editor/index.d.ts +1 -0
  196. package/image-editor/lib/image-editor-container/image-editor-container.component.d.ts +3 -22
  197. package/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.d.ts +27 -0
  198. package/image-editor/lib/image-editor.module.d.ts +17 -16
  199. package/loading/lib/loading-spinner.component.d.ts +1 -1
  200. package/menu/lib/menu-item.component.d.ts +1 -2
  201. package/notification/lib/notification.service.d.ts +1 -1
  202. package/package.json +5 -1
  203. package/paint/lib/paint/paint-view/paint-view.component.d.ts +1 -1
  204. package/picker/index.d.ts +2 -3
  205. package/picker/lib/picker-column.directive.d.ts +16 -0
  206. package/picker/lib/picker.component.d.ts +61 -0
  207. package/picker/lib/picker.module.d.ts +4 -6
  208. package/progress-bar/lib/progress-bar.component.d.ts +19 -19
  209. package/range-slider/lib/range-slider.component.d.ts +1 -1
  210. package/scheduler/lib/scheduler-month-view.component.d.ts +6 -6
  211. package/search-box/lib/search-box.component.d.ts +1 -5
  212. package/selection-list/README.md +2 -2
  213. package/selection-list/lib/selection-list.component.d.ts +70 -17
  214. package/selection-list/lib/selection-list.module.d.ts +7 -3
  215. package/side-menu/lib/side-menu-item/side-menu-item.component.d.ts +6 -3
  216. package/side-menu/lib/side-menu.component.d.ts +2 -1
  217. package/tabs/lib/tabs.class.d.ts +1 -1
  218. package/text-area/lib/text-area.component.d.ts +1 -5
  219. package/time-line/lib/time-line.component.d.ts +1 -1
  220. package/toast/lib/toast.service.d.ts +1 -1
  221. package/toolbar/lib/toolbar.component.d.ts +3 -1
  222. package/tree-view/lib/tree-view.class.d.ts +1 -0
  223. package/tree-view/lib/tree-view.component.d.ts +1 -7
  224. package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +2 -2
  225. package/decorators/lib/components/color-indicator/color-indicator.component.d.ts +0 -6
  226. package/picker/lib/picker-container/picker-container.component.d.ts +0 -7
  227. package/picker/lib/picker-items/picker-items.component.d.ts +0 -20
  228. package/picker/lib/picker-title/picker-title.component.d.ts +0 -5
  229. /package/decorators/lib/components/{clear-button/clear-button.component.d.ts → clear-button.component.d.ts} +0 -0
  230. /package/decorators/lib/components/{close-button/close-button.component.d.ts → close-button.component.d.ts} +0 -0
  231. /package/decorators/lib/components/{full-screen/full-screen-button.component.d.ts → full-screen-button.component.d.ts} +0 -0
  232. /package/decorators/lib/components/{icon/icon.component.d.ts → icon.component.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-grid-layout-builder.mjs","sources":["../../../../libs/components/grid-layout-builder/src/lib/grid-layout-widget.component.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-container.component.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-builder.module.ts","../../../../libs/components/grid-layout-builder/src/lib/types.ts","../../../../libs/components/grid-layout-builder/src/acorex-components-grid-layout-builder.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXGridLayoutNode, AXGridLayoutWidget, AXGridLayoutWidgetCompElement } from './types';\n\n/**\n * A component that represents a widget within the grid layout. It serves as an individual\n * item within a `gridstack` layout, providing options for customization and interaction.\n *\n * This widget component is used within the `AXGridLayoutContainerComponent` to manage the\n * layout of widgets in a grid system. The component interacts with the GridStack library\n * to offer features like resizing, movement, and customization of the widget's properties.\n *\n * @example\n * <ax-grid-layout-widget [options]=\"widgetOptions\">\n * <div>Widget Content</div>\n * </ax-grid-layout-widget>\n */\n@Component({\n selector: 'ax-grid-layout-widget',\n template: ` <div class=\"grid-stack-item-content\">\n <ng-template #container></ng-template>\n <ng-content></ng-content>\n {{ options().content }}\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXGridLayoutWidgetComponent {\n /**\n * A reference to the native element of this widget component. It is used for interaction\n * with the underlying DOM element and for updating the widget properties via GridStack.\n */\n private readonly elementRef: ElementRef<AXGridLayoutWidgetCompElement> = inject(ElementRef);\n \n /**\n * The native element of the widget component.\n */\n public el: AXGridLayoutWidgetCompElement = this.elementRef.nativeElement;\n\n /**\n * The current options of the widget. These options are used to define the layout,\n * content, and behavior of the widget within the grid.\n *\n * @internal\n */\n private _options?: AXGridLayoutNode;\n\n /**\n * Input property that represents the widget's configuration options.\n *\n * The options include properties such as position, size, content, and other\n * configuration values. These options are updated dynamically.\n *\n * @param {AXGridLayoutNode} val The configuration object for the widget.\n * @returns {AXGridLayoutWidgetCompElement} The element associated with the widget.\n */\n public options = input(null, {\n transform: (val: AXGridLayoutNode) => {\n const grid = this.el.gridstackNode?.grid;\n if (grid) {\n grid.update(this.el, val);\n } else {\n this._options = { ...val, el: this.el };\n }\n return this.el.gridstackNode || this._options || { el: this.el };\n },\n });\n\n /**\n * Clears the widget's options.\n *\n * This method removes any existing options set for the widget and resets it\n * to its default state.\n */\n public clearOptions() {\n this._options = null;\n }\n\n /**\n * Constructor that initializes the widget component and sets the reference to\n * the grid widget component in the element's properties.\n */\n constructor() {\n this.el._gridWidgetComp = this;\n }\n\n /**\n * Removes this widget from the grid.\n *\n * This method interacts with GridStack to remove the widget from the layout.\n * Once removed, the widget will no longer be part of the grid.\n */\n public removeWidget() {\n this.el.gridstackNode.grid.removeWidget(this.el);\n }\n\n /**\n * Sets whether the widget can be locked (i.e., not resizable).\n *\n * @param {boolean} state Whether the widget should be locked or not.\n * @remarks\n * If the widget is locked, it cannot be resized.\n */\n public setlockable(state: boolean): void {\n this.el.gridstackNode.grid.update(this.el, { noResize: state });\n }\n\n /**\n * Sets whether the widget can be resized.\n *\n * @param {boolean} state Whether the widget should be resizable or not.\n * @remarks\n * If the widget is resizable, the user can change its size by dragging.\n */\n public setResizable(state: boolean): void {\n this.el.gridstackNode.grid.update(this.el, { noMove: state });\n }\n\n /**\n * Updates the options of the widget.\n *\n * @param {AXGridLayoutWidget} options The new options to apply to the widget.\n */\n setOptions(options: AXGridLayoutWidget) {\n this.el.gridstackNode.grid.update(this.el, options);\n }\n\n /**\n * Retrieves the current options of the widget.\n *\n * @returns {AXGridLayoutNode} The current configuration options of the widget.\n * @remarks\n * This method provides access to the widget's layout and configuration.\n * If no specific options are set, it returns the default options.\n */\n getOptions(): AXGridLayoutNode {\n const gridstackNode = this.el.gridstackNode;\n if (gridstackNode) {\n return {\n ...gridstackNode,\n el: this.el,\n };\n }\n return this.options() || this._options || { el: this.el };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n ViewEncapsulation,\n WritableSignal,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\nimport {\n AXGridLayout,\n AXGridLayoutContainerCompElement,\n AXGridLayoutDroppedEvent,\n AXGridLayoutElementEvent,\n AXGridLayoutEventEvent,\n AXGridLayoutNode,\n AXGridLayoutNodesEvent,\n AXGridLayoutOptions,\n AXGridLayoutWidget,\n AXGridLayoutWidgetCompElement,\n AXGridLayoutWidgetElement,\n AXSaveCallback,\n} from './types';\n\n/**\n * The `AXGridLayoutContainerComponent` is an Angular component that acts as a wrapper for the GridStack library.\n * It provides a flexible grid layout system for arranging items within a container. It integrates with GridStack.js\n * and allows dynamic manipulation of grid items (widgets), including adding, removing, resizing, and dragging.\n *\n * This component uses Angular's reactive signals, outputs, and lifecycle hooks to manage grid state and interactions.\n */\n@Component({\n selector: 'ax-grid-layout-container',\n template: ` <ng-template #container></ng-template>\n <ng-content></ng-content>`,\n styleUrl: './grid-layout-container.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXGridLayoutContainerComponent {\n private serializedData?: AXGridLayoutOptions;\n /**\n * Content children elements of type `AXGridLayoutWidgetComponent` that are dynamically managed within the grid.\n */\n private items = contentChildren(AXGridLayoutWidgetComponent);\n\n /**\n * Input that holds options for configuring the GridStack grid layout.\n */\n public options = input<AXGridLayoutOptions>();\n\n /**\n * A computed signal that merges the provided `options` with the grid's existing configuration (if any).\n */\n private calcOptions = computed(() => this.grid()?.opts || this.options() || {});\n\n /**\n * A reference to the native element of the container component.\n */\n private readonly elementRef: ElementRef<AXGridLayoutContainerCompElement> = inject(ElementRef);\n\n /**\n * Angular's NgZone for running code outside Angular's change detection.\n */\n private ngZone = inject(NgZone);\n\n /**\n * A writable signal representing the current state of the grid.\n */\n private grid: WritableSignal<AXGridLayout | undefined> = signal(undefined);\n\n /**\n * Flag indicating whether the grid has been loaded with content.\n */\n private loaded?: boolean;\n\n /**\n * A reference to the native element representing the grid container.\n */\n private el: AXGridLayoutContainerCompElement = this.elementRef.nativeElement;\n\n // Outputs\n\n /**\n * Output event emitted when a widget is added to the grid.\n */\n protected onAdded = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when a widget or layout is changed.\n */\n protected onChange = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when the grid is disabled.\n */\n protected onDisable = output<AXGridLayoutEventEvent>();\n\n /**\n * Output event emitted during a drag operation on a widget.\n */\n protected onDrag = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when drag starts on a widget.\n */\n protected onDragStart = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when drag stops on a widget.\n */\n protected onDragStop = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when a widget is dropped on the grid.\n */\n protected onDropped = output<AXGridLayoutDroppedEvent>();\n\n /**\n * Output event emitted when the grid is enabled.\n */\n protected onEnable = output<AXGridLayoutEventEvent>();\n\n /**\n * Output event emitted when a widget is removed from the grid.\n */\n protected onRemoved = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when a widget is resized.\n */\n protected onResize = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when resizing starts on a widget.\n */\n protected onResizeStart = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when resizing stops on a widget.\n */\n protected onResizeStop = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when the grid is rendered.\n */\n protected isRendered = output<boolean>();\n\n // Model\n\n /**\n * Model that tracks whether the grid container is empty.\n */\n protected isEmpty = model(false);\n\n // Lifecycle\n\n /**\n * Initializes the grid layout component and sets up the GridStack grid.\n */\n constructor() {\n this.el._gridComp = this;\n }\n\n /**\n * Angular lifecycle hook that initializes the grid once the component is created.\n * It sets up GridStack and loads any initial layout configuration.\n */\n protected async ngOnInit(): Promise<void> {\n this.ngZone.runOutsideAngular(async () => {\n this.loaded = !!this.calcOptions()?.children?.length;\n const { GridStack } = await import('gridstack');\n this.grid.set(GridStack.init(this.calcOptions(), this.el));\n this.checkEmpty();\n });\n }\n\n /**\n * Angular lifecycle hook that cleans up resources when the component is destroyed.\n * It removes event listeners and destroys the GridStack instance.\n */\n protected ngOnDestroy(): void {\n this.unhookEvents(this.grid());\n this.grid()?.destroy();\n }\n\n // Effects\n\n /**\n * Effect that reacts to changes in the grid layout and updates the DOM accordingly.\n */\n private gridChange = effect(() => {\n if (this.grid()) {\n if (!this.loaded) this.updateAll();\n this.hookEvents(this.grid());\n this.isRendered.emit(true);\n console.log('Grid Rendered!');\n }\n });\n\n /**\n * Effect that reacts to changes in child widgets and updates the grid layout.\n */\n private childChange = effect(() => {\n if (this.items()) {\n this.updateAll();\n }\n });\n\n // Methods\n\n /**\n * Updates the grid layout with the current set of widgets, clearing previous options.\n */\n private updateAll() {\n if (!this.grid()) return;\n const layout: AXGridLayoutWidget[] = [];\n this.items()?.forEach((item) => {\n layout.push(item.options());\n item.clearOptions();\n });\n this.grid().load(layout);\n }\n\n /**\n * Checks whether the grid is empty and updates the `isEmpty` model accordingly.\n */\n private checkEmpty() {\n if (this.grid()) {\n const isEmpty = !this.grid().engine.nodes.length;\n if (isEmpty === this.isEmpty()) return;\n this.isEmpty.set(isEmpty);\n }\n }\n\n // Event Listeners\n\n /**\n * Hooks event listeners to the grid for various grid events (e.g., add, remove, drag, resize).\n */\n private hookEvents(grid?: AXGridLayout): void {\n if (grid) {\n grid\n .on('added', (event: Event, nodes: AXGridLayoutNode[]) => {\n this.checkEmpty();\n this.onAdded.emit({ event, nodes });\n })\n .on('removed', (event: Event, nodes: AXGridLayoutNode[]) => {\n this.checkEmpty();\n this.onRemoved.emit({ event, nodes });\n })\n .on('change', (event: Event, nodes: AXGridLayoutNode[]) => this.onChange.emit({ event, nodes }))\n .on('disable', (event: Event) => this.onDisable.emit({ event }))\n .on('drag', (event: Event, el: AXGridLayoutWidgetElement) => this.onDrag.emit({ event, el }))\n .on('dragstart', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onDragStart.emit({ event, el }),\n )\n .on('dragstop', (event: Event, el: AXGridLayoutWidgetElement) => this.onDragStop.emit({ event, el }))\n .on('dropped', (event: Event, previousNode: AXGridLayoutNode, newNode: AXGridLayoutNode) =>\n this.onDropped.emit({ event, previousNode, newNode }),\n )\n .on('enable', (event: Event) => this.onEnable.emit({ event }))\n .on('resize', (event: Event, el: AXGridLayoutWidgetElement) => this.onResize.emit({ event, el }))\n .on('resizestart', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onResizeStart.emit({ event, el }),\n )\n .on('resizestop', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onResizeStop.emit({ event, el }),\n );\n }\n }\n\n /**\n * Removes all event listeners from the grid.\n */\n private unhookEvents(grid?: AXGridLayout) {\n if (grid) {\n grid.offAll();\n }\n }\n\n //PUBLIC SETTER METHODS\n\n /**\n * Creates a new widget and returns it.\n * @param w - Widget position/size options.\n * @returns The created widget's HTML element, or `undefined` if the grid is not initialized.\n */\n public addWidget(w: AXGridLayoutWidget, withAutoArrange = false): AXGridLayoutWidgetElement | undefined {\n if (withAutoArrange) {\n this.compact();\n }\n return this.grid()?.addWidget(w);\n }\n\n /**\n * Re-layout grid items to reclaim any empty space.\n * @param layout - Compaction mode: 'list' or 'compact'. Default is 'compact'.\n * @param doSort - Whether to sort items automatically. Default is `true`.\n */\n public compact(layout: 'list' | 'compact' = 'compact', doSort = true): void {\n this.grid()?.compact(layout, doSort);\n }\n\n /**\n * Updates the current cell height.\n * @param val - The new cell height value.\n * @param update - Whether to rebuild the internal CSS stylesheet. Default is `true`.\n */\n public setCellHeight(val: number, update = true): void {\n this.grid()?.cellHeight(val, update);\n }\n\n /**\n * Sets the number of columns in the grid and updates existing widgets to conform to the new layout.\n * @param column - Number of columns (must be > 0). Default is 12.\n * @param layout - Re-layout behavior: 'list', 'compact', 'moveScale', 'move', 'scale', 'none'.\n * Default is 'moveScale'.\n */\n public setColumn(\n column: number,\n layout: 'list' | 'compact' | 'moveScale' | 'move' | 'scale' | 'none' = 'moveScale',\n ): void {\n this.grid()?.column(column, layout);\n }\n\n /**\n * Destroys the grid instance.\n * @param removeDOM - If `false`, nodes and grid will not be removed from the DOM. Default is `true`.\n */\n public destroy(removeDOM = true): void {\n this.grid()?.destroy(removeDOM);\n }\n\n /**\n * Sets whether widgets in the grid can be moved (dragged).\n *\n * @param state If true, widgets are movable; otherwise, they are locked.\n * @param recurse If true, the setting is applied to nested widgets as well.\n */\n public setMovable(state: boolean, recurse?: boolean) {\n this.grid().enableMove(state, recurse);\n }\n\n /**\n * Sets whether widgets in the grid can be resized.\n *\n * @param state If true, widgets are resizable; otherwise, they are fixed.\n * @param recurse If true, the setting is applied to nested widgets as well.\n */\n public setResizable(state: boolean, recurse?: boolean) {\n this.grid().enableResize(state, recurse);\n }\n\n /**\n * Sets or gets the floating behavior of widgets.\n * @param val - If provided, sets floating behavior (`true` or `false`). If not provided, returns the current value.\n * @returns The current floating behavior if `val` is not provided.\n */\n public setFloat(val: boolean): void {\n this.grid()?.float(val);\n }\n\n /**\n * Sets the margin (gap) between grid items and their content.\n * @param value - The margin value (number or string).\n */\n public setMargin(value: number | string): void {\n this.grid()?.margin(value);\n }\n\n /**\n * Removes a widget from the grid.\n * @param el - The widget to remove.\n * @param removeDOM - If `false`, the widget won't be removed from the DOM. Default is `true`.\n * @param triggerEvent - If `false`, no 'removed' callbacks will be called. Default is `true`.\n */\n public removeWidget(el: AXGridLayoutWidgetElement, removeDOM = true, triggerEvent = true): void {\n this.grid()?.removeWidget(el, removeDOM, triggerEvent);\n }\n\n /**\n * Removes all widgets from the grid.\n * @param removeDOM - If `false`, widgets won't be removed from the DOM. Default is `true`.\n */\n public removeAll(removeDOM = true): void {\n this.grid()?.removeAll(removeDOM);\n }\n\n /**\n * Rotates a widget by swapping its width and height.\n * @param els - The widget or selector of widgets to rotate.\n * @param relative - Optional pixel coordinates to rotate around (keeps that cell under the cursor).\n */\n public setRotate(element: AXGridLayoutWidgetCompElement) {\n this.grid().rotate(element);\n }\n\n /**\n * Toggles the grid animation state.\n * @param doAnimate - If `true`, the grid will animate.\n */\n public setAnimation(doAnimate: boolean): void {\n this.grid()?.setAnimation(doAnimate);\n }\n\n /**\n * Saves the current state of the grid and its widgets.\n *\n * @param saveContent If true, the content of the widgets will be saved.\n * @param saveGridOpt If true, the grid options will be saved.\n * @param saveCallback Optional callback to invoke after saving the grid state.\n * @returns The saved grid layout options.\n */\n public save(saveContent = false, saveGridOpt = true, saveCallback?: AXSaveCallback): AXGridLayoutOptions {\n return (this.serializedData = this.grid().save(\n saveContent,\n saveGridOpt,\n saveCallback,\n ) as AXGridLayoutOptions);\n }\n\n /**\n * Loads a serialized grid layout configuration into the grid.\n *\n * @param serializedData The serialized grid options to load.\n * @param cleanBeforeLoad If true, the grid will be cleared before loading the new layout.\n * @returns A promise that resolves to the loaded grid instance.\n */\n public async load(\n serializedData: AXGridLayoutOptions = this.serializedData,\n cleanBeforeLoad = true,\n ): Promise<AXGridLayout> {\n if (cleanBeforeLoad) {\n this.grid().removeAll();\n }\n const { GridStack } = await import('gridstack');\n return GridStack.addGrid(this.el, serializedData);\n }\n\n /**\n * Sets up draggable functionality for external elements to be added to the grid.\n *\n * @param dragIn A CSS selector or an array of elements that can be dragged into the grid.\n * @param widgets An optional set of widgets that are draggable into the grid.\n */\n public async setupDraggable(dragIn?: string | HTMLElement[], widgets?: AXGridLayoutWidget) {\n if (typeof dragIn === 'string') {\n document.querySelectorAll(dragIn).forEach((item) => {\n if (!item.classList.contains('grid-stack-item')) {\n item.classList.add('grid-stack-item');\n }\n });\n }\n const { GridStack } = await import('gridstack');\n GridStack.setupDragIn(dragIn, undefined, [widgets]);\n }\n\n /**\n * Sets grid layout options.\n * @param options The new grid layout options to apply.\n *\n * `Experimental`\n */\n public setOption(options: AXGridLayoutOptions) {\n this.grid().opts = merge({}, this.grid().opts, options);\n }\n\n // PUBLIC GETTER METHODS //\n\n /**\n * Retrieves the current grid layout options.\n *\n * @returns The current grid options.\n */\n public getOptions(): AXGridLayoutOptions {\n return this.grid().opts;\n }\n\n /**\n * Retrieves all the child nodes (widgets) in the grid layout.\n *\n * @returns An array of grid layout nodes representing the widgets.\n */\n public getChildren(): AXGridLayoutNode[] {\n return this.grid().engine.nodes;\n }\n}\n","/**\n * gridstack.component.ts 11.1.1-dev\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AXGridLayoutContainerComponent } from './grid-layout-container.component';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent],\n exports: [AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent],\n})\nexport class AXGridLayoutBuilderModule {\n // constructor() {\n // set globally our method to create the right widget type\n // GridStack.addRemoveCB = gsCreateNgComponents;\n // GridStack.saveCB = gsSaveAdditionalNgInfo;\n // }\n}\n","import { AXGridLayoutContainerComponent } from './grid-layout-container.component';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\n//TYPES\nexport type AXGridLayoutNode = import('gridstack').GridStackNode;\nexport type AXGridLayout = import('gridstack').GridStack;\nexport type AXGridLayoutOptions = import('gridstack').GridStackOptions;\nexport type AXGridLayoutWidget = import('gridstack').GridStackWidget & { data?: any };\nexport type AXGridLayoutContainerElement = import('gridstack').GridHTMLElement;\nexport type AXGridLayoutWidgetElement = import('gridstack').GridItemHTMLElement;\n//EVENTS\nexport type AXGridLayoutEventEvent = { event: Event };\nexport type AXGridLayoutElementEvent = { event: Event; el: AXGridLayoutWidgetElement };\nexport type AXGridLayoutNodesEvent = { event: Event; nodes: AXGridLayoutNode[] };\nexport type AXGridLayoutDroppedEvent = {\n event: Event;\n previousNode: AXGridLayoutNode;\n newNode: AXGridLayoutNode;\n};\n//COMPONENTS\nexport interface AXGridLayoutContainerCompElement extends AXGridLayoutContainerElement {\n _gridComp?: AXGridLayoutContainerComponent;\n}\nexport interface AXGridLayoutWidgetCompElement extends AXGridLayoutWidgetElement {\n _gridWidgetComp?: AXGridLayoutWidgetComponent;\n}\n\n//Callback\nexport type AXSaveCallback = import('gridstack').SaveFcn;\n\n// //DYNAMIC\n// export type AXNgCompInputs = { [key: string]: any };\n// export type SelectorToType = { [key: string]: Type<object> }; // selector string to runtime Type mapping\n// export interface AXNgGridLayoutWidget extends AXGridLayoutWidget {\n// selector?: string; //Angular tag selector for this component to create at runtime\n// input?: AXNgCompInputs; // serialized data for the component input fields\n// subGridOpts?: AXNgGridLayoutOptions; // nested grid options\n// }\n// export interface AXNgGridLayoutNode extends AXGridLayoutNode {\n// selector?: string; // component type to create as content\n// }\n// export interface AXNgGridLayoutOptions extends AXGridLayoutOptions {\n// children?: AXNgGridLayoutWidget[];\n// subGridOpts?: AXNgGridLayoutOptions;\n// }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-grid-layout-builder.mjs","sources":["../../../../libs/components/grid-layout-builder/src/lib/grid-layout-widget.component.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-widget.directive.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-container.component.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-builder.module.ts","../../../../libs/components/grid-layout-builder/src/lib/types.ts","../../../../libs/components/grid-layout-builder/src/acorex-components-grid-layout-builder.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXGridLayoutNode, AXGridLayoutWidget, AXGridLayoutWidgetCompElement } from './types';\n\n/**\n * A component that represents a widget within the grid layout. It serves as an individual\n * item within a `gridstack` layout, providing options for customization and interaction.\n *\n * This widget component is used within the `AXGridLayoutContainerComponent` to manage the\n * layout of widgets in a grid system. The component interacts with the GridStack library\n * to offer features like resizing, movement, and customization of the widget's properties.\n *\n * @example\n * <ax-grid-layout-widget [options]=\"widgetOptions\">\n * <div>Widget Content</div>\n * </ax-grid-layout-widget>\n */\n@Component({\n selector: 'ax-grid-layout-widget',\n template: ` <div class=\"grid-stack-item-content\">\n <ng-template #container></ng-template>\n <ng-content></ng-content>\n {{ options().content }}\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXGridLayoutWidgetComponent {\n /**\n * A reference to the native element of this widget component. It is used for interaction\n * with the underlying DOM element and for updating the widget properties via GridStack.\n */\n private readonly elementRef: ElementRef<AXGridLayoutWidgetCompElement> = inject(ElementRef);\n \n /**\n * The native element of the widget component.\n */\n public el: AXGridLayoutWidgetCompElement = this.elementRef.nativeElement;\n\n /**\n * The current options of the widget. These options are used to define the layout,\n * content, and behavior of the widget within the grid.\n *\n * @internal\n */\n private _options?: AXGridLayoutNode;\n\n /**\n * Input property that represents the widget's configuration options.\n *\n * The options include properties such as position, size, content, and other\n * configuration values. These options are updated dynamically.\n *\n * @param {AXGridLayoutNode} val The configuration object for the widget.\n * @returns {AXGridLayoutWidgetCompElement} The element associated with the widget.\n */\n public options = input(null, {\n transform: (val: AXGridLayoutNode) => {\n const grid = this.el.gridstackNode?.grid;\n if (grid) {\n grid.update(this.el, val);\n } else {\n this._options = { ...val, el: this.el };\n }\n return this.el.gridstackNode || this._options || { el: this.el };\n },\n });\n\n /**\n * Clears the widget's options.\n *\n * This method removes any existing options set for the widget and resets it\n * to its default state.\n */\n public clearOptions() {\n this._options = null;\n }\n\n /**\n * Constructor that initializes the widget component and sets the reference to\n * the grid widget component in the element's properties.\n */\n constructor() {\n this.el._gridWidgetComp = this;\n }\n\n /**\n * Removes this widget from the grid.\n *\n * This method interacts with GridStack to remove the widget from the layout.\n * Once removed, the widget will no longer be part of the grid.\n */\n public removeWidget() {\n this.el.gridstackNode.grid.removeWidget(this.el);\n }\n\n /**\n * Sets whether the widget can be locked (i.e., not resizable).\n *\n * @param {boolean} state Whether the widget should be locked or not.\n * @remarks\n * If the widget is locked, it cannot be resized.\n */\n public setlockable(state: boolean): void {\n this.el.gridstackNode.grid.update(this.el, { noResize: state });\n }\n\n /**\n * Sets whether the widget can be resized.\n *\n * @param {boolean} state Whether the widget should be resizable or not.\n * @remarks\n * If the widget is resizable, the user can change its size by dragging.\n */\n public setResizable(state: boolean): void {\n this.el.gridstackNode.grid.update(this.el, { noMove: state });\n }\n\n /**\n * Updates the options of the widget.\n *\n * @param {AXGridLayoutWidget} options The new options to apply to the widget.\n */\n setOptions(options: AXGridLayoutWidget) {\n this.el.gridstackNode.grid.update(this.el, options);\n }\n\n /**\n * Retrieves the current options of the widget.\n *\n * @returns {AXGridLayoutNode} The current configuration options of the widget.\n * @remarks\n * This method provides access to the widget's layout and configuration.\n * If no specific options are set, it returns the default options.\n */\n getOptions(): AXGridLayoutNode {\n const gridstackNode = this.el.gridstackNode;\n if (gridstackNode) {\n return {\n ...gridstackNode,\n el: this.el,\n };\n }\n return this.options() || this._options || { el: this.el };\n }\n}\n","import { Directive, ElementRef, inject, input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { AXGridLayoutNode, AXGridLayoutWidget, AXGridLayoutWidgetCompElement } from './types';\n\n/**\n * A directive that turns any element into a GridStack widget.\n * It allows the element to be managed by the GridStack library,\n * enabling features like resizing, dragging, and layout customization.\n *\n * This directive creates an inner element inside the host element\n * and moves the widget content into it for better encapsulation and styling.\n *\n * @example\n * <div axGridLayoutWidget [options]=\"widgetOptions\">Widget Content</div>\n */\n@Directive({\n selector: '[axGridLayoutWidget]',\n standalone: false,\n})\nexport class AXGridLayoutWidgetDirective implements OnInit, OnDestroy {\n /**\n * Reference to the native element of the directive.\n */\n private readonly elementRef: ElementRef<AXGridLayoutWidgetCompElement> = inject(ElementRef);\n\n /**\n * Renderer2 for safe DOM manipulation.\n */\n private readonly renderer = inject(Renderer2);\n\n /**\n * The native element of the directive.\n */\n public el: AXGridLayoutWidgetCompElement = this.elementRef.nativeElement;\n\n /**\n * The current options of the widget. These options are used to define the layout,\n * content, and behavior of the widget within the grid.\n */\n private _options?: AXGridLayoutNode;\n\n /**\n * Reference to the newly created inner element.\n */\n private innerElement: HTMLElement;\n\n /**\n * Input property that represents the widget's configuration options.\n *\n * The options include properties such as position, size, content, and other\n * configuration values. These options are updated dynamically.\n *\n * @param {AXGridLayoutNode} val The configuration object for the widget.\n * @returns {AXGridLayoutWidgetCompElement} The element associated with the widget.\n */\n public options = input(null, {\n transform: (val: AXGridLayoutNode) => {\n const grid = this.el.gridstackNode?.grid;\n if (grid) {\n grid.update(this.el, val);\n } else {\n this._options = { ...val, el: this.el };\n }\n return this.el.gridstackNode || this._options || { el: this.el };\n },\n });\n\n /**\n * Initializes the directive and sets up the inner element.\n * Create a new inner element\n * Move the host element's content into the new inner element\n * Append the inner element to the host element\n * Set the reference to the grid widget directive\n */\n ngOnInit(): void {\n this.innerElement = this.renderer.createElement('div');\n this.renderer.addClass(this.innerElement, 'grid-stack-item-content');\n\n while (this.el.firstChild) {\n this.renderer.appendChild(this.innerElement, this.el.firstChild);\n }\n\n this.renderer.appendChild(this.el, this.innerElement);\n\n this.el._gridWidgetComp = this;\n }\n\n /**\n * Cleans up the directive when it is destroyed.\n */\n ngOnDestroy(): void {\n this.removeWidget();\n }\n\n /**\n * Clears the widget's options.\n *\n * This method removes any existing options set for the widget and resets it\n * to its default state.\n */\n public clearOptions() {\n this._options = null;\n }\n\n /**\n * Removes this widget from the grid.\n *\n * This method interacts with GridStack to remove the widget from the layout.\n * Once removed, the widget will no longer be part of the grid.\n */\n public removeWidget() {\n if (this.el.gridstackNode?.grid) {\n this.el.gridstackNode.grid.removeWidget(this.el);\n }\n }\n\n /**\n * Sets whether the widget can be locked (i.e., not resizable).\n *\n * @param {boolean} state Whether the widget should be locked or not.\n * @remarks\n * If the widget is locked, it cannot be resized.\n */\n public setLockable(state: boolean): void {\n if (this.el.gridstackNode?.grid) {\n this.el.gridstackNode.grid.update(this.el, { noResize: state });\n }\n }\n\n /**\n * Sets whether the widget can be resized.\n *\n * @param {boolean} state Whether the widget should be resizable or not.\n * @remarks\n * If the widget is resizable, the user can change its size by dragging.\n */\n public setResizable(state: boolean): void {\n if (this.el.gridstackNode?.grid) {\n this.el.gridstackNode.grid.update(this.el, { noMove: state });\n }\n }\n\n /**\n * Updates the options of the widget.\n *\n * @param {AXGridLayoutWidget} options The new options to apply to the widget.\n */\n public setOptions(options: AXGridLayoutWidget) {\n if (this.el.gridstackNode?.grid) {\n this.el.gridstackNode.grid.update(this.el, options);\n }\n }\n\n /**\n * Retrieves the current options of the widget.\n *\n * @returns {AXGridLayoutNode} The current configuration options of the widget.\n * @remarks\n * This method provides access to the widget's layout and configuration.\n * If no specific options are set, it returns the default options.\n */\n public getOptions(): AXGridLayoutNode {\n const gridstackNode = this.el.gridstackNode;\n if (gridstackNode) {\n return {\n ...gridstackNode,\n el: this.el,\n };\n }\n return this._options || { el: this.el };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n OnInit,\n SecurityContext,\n ViewEncapsulation,\n WritableSignal,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { merge } from 'lodash-es';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\nimport { AXGridLayoutWidgetDirective } from './grid-layout-widget.directive';\nimport {\n AXGridLayout,\n AXGridLayoutContainerCompElement,\n AXGridLayoutDroppedEvent,\n AXGridLayoutElementEvent,\n AXGridLayoutEventEvent,\n AXGridLayoutNode,\n AXGridLayoutNodesEvent,\n AXGridLayoutOptions,\n AXGridLayoutWidget,\n AXGridLayoutWidgetCompElement,\n AXGridLayoutWidgetElement,\n AXSaveCallback,\n} from './types';\n\n/**\n * The `AXGridLayoutContainerComponent` is an Angular component that acts as a wrapper for the GridStack library.\n * It provides a flexible grid layout system for arranging items within a container. It integrates with GridStack.js\n * and allows dynamic manipulation of grid items (widgets), including adding, removing, resizing, and dragging.\n *\n * This component uses Angular's reactive signals, outputs, and lifecycle hooks to manage grid state and interactions.\n */\n@Component({\n selector: 'ax-grid-layout-container',\n template: ` <ng-template #container></ng-template>\n <ng-content></ng-content>`,\n styleUrl: './grid-layout-container.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXGridLayoutContainerComponent implements OnInit, OnDestroy {\n private serializedData?: AXGridLayoutOptions;\n /**\n * Content children elements of type `AXGridLayoutWidgetComponent` that are dynamically managed within the grid.\n */\n private compItems = contentChildren(AXGridLayoutWidgetComponent);\n private dirItems = contentChildren(AXGridLayoutWidgetDirective);\n\n /**\n * Input that holds options for configuring the GridStack grid layout.\n */\n public options = input<AXGridLayoutOptions>();\n\n /**\n * A computed signal that merges the provided `options` with the grid's existing configuration (if any).\n */\n private calcOptions = computed(() => this.grid()?.opts || this.options() || {});\n\n /**\n * A reference to the native element of the container component.\n */\n private readonly elementRef: ElementRef<AXGridLayoutContainerCompElement> = inject(ElementRef);\n\n /**\n * Angular's NgZone for running code outside Angular's change detection.\n */\n private ngZone = inject(NgZone);\n\n /**\n * A writable signal representing the current state of the grid.\n */\n private grid: WritableSignal<AXGridLayout | undefined> = signal(undefined);\n\n /**\n * Flag indicating whether the grid has been loaded with content.\n */\n private loaded?: boolean;\n\n /**\n * A reference to the native element representing the grid container.\n */\n private el: AXGridLayoutContainerCompElement = this.elementRef.nativeElement;\n\n // Outputs\n\n /**\n * Output event emitted when a widget is added to the grid.\n */\n protected onAdded = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when a widget or layout is changed.\n */\n protected onChange = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when the grid is disabled.\n */\n protected onDisable = output<AXGridLayoutEventEvent>();\n\n /**\n * Output event emitted during a drag operation on a widget.\n */\n protected onDrag = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when drag starts on a widget.\n */\n protected onDragStart = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when drag stops on a widget.\n */\n protected onDragStop = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when a widget is dropped on the grid.\n */\n protected onDropped = output<AXGridLayoutDroppedEvent>();\n\n /**\n * Output event emitted when the grid is enabled.\n */\n protected onEnable = output<AXGridLayoutEventEvent>();\n\n /**\n * Output event emitted when a widget is removed from the grid.\n */\n protected onRemoved = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when a widget is resized.\n */\n protected onResize = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when resizing starts on a widget.\n */\n protected onResizeStart = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when resizing stops on a widget.\n */\n protected onResizeStop = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when the grid is rendered.\n */\n protected isRendered = output<boolean>();\n\n // Model\n\n /**\n * Model that tracks whether the grid container is empty.\n */\n protected isEmpty = model(false);\n\n // Lifecycle\n\n /**\n * Initializes the grid layout component and sets up the GridStack grid.\n */\n constructor() {\n console.time('grid-layout-builder loaded in: ');\n this.el._gridComp = this;\n }\n\n /**\n * Angular lifecycle hook that initializes the grid once the component is created.\n * It sets up GridStack and loads any initial layout configuration.\n */\n public async ngOnInit(): Promise<void> {\n this.ngZone.runOutsideAngular(async () => {\n this.loaded = !!this.calcOptions()?.children?.length;\n const { GridStack } = await import('gridstack');\n this.grid.set(GridStack.init(this.calcOptions(), this.el));\n this.checkEmpty();\n });\n }\n\n /**\n * Angular lifecycle hook that cleans up resources when the component is destroyed.\n * It removes event listeners and destroys the GridStack instance.\n */\n public ngOnDestroy(): void {\n this.unhookEvents(this.grid());\n this.grid()?.destroy();\n }\n\n // Effects\n\n /**\n * Effect that reacts to changes in the grid layout and updates the DOM accordingly.\n */\n private gridChange = effect(() => {\n if (this.grid()) {\n if (!this.loaded) this.updateAll();\n this.hookEvents(this.grid());\n this.isRendered.emit(true);\n console.timeEnd('grid-layout-builder loaded in: ');\n }\n });\n\n /**\n * Effect that reacts to changes in child widgets and updates the grid layout.\n */\n private childChange = effect(() => {\n if (this.compItems() || this.dirItems()) {\n this.updateAll();\n }\n });\n\n // Methods\n\n /**\n * Updates the grid layout with the current set of widgets, clearing previous options.\n */\n private updateAll() {\n if (!this.grid()) return;\n const layout: AXGridLayoutWidget[] = [];\n const arrays = [...this.dirItems(), ...this.compItems()];\n if (arrays.length) {\n arrays.forEach((item) => {\n layout.push(item.options());\n item.clearOptions();\n });\n this.grid().load(layout);\n }\n }\n\n /**\n * Checks whether the grid is empty and updates the `isEmpty` model accordingly.\n */\n private checkEmpty() {\n if (this.grid()) {\n const isEmpty = !this.grid().engine.nodes.length;\n if (isEmpty === this.isEmpty()) return;\n this.isEmpty.set(isEmpty);\n }\n }\n\n // Event Listeners\n\n /**\n * Hooks event listeners to the grid for various grid events (e.g., add, remove, drag, resize).\n */\n private hookEvents(grid?: AXGridLayout): void {\n if (grid) {\n grid\n .on('added', (event: Event, nodes: AXGridLayoutNode[]) => {\n this.checkEmpty();\n this.onAdded.emit({ event, nodes });\n })\n .on('removed', (event: Event, nodes: AXGridLayoutNode[]) => {\n this.checkEmpty();\n this.onRemoved.emit({ event, nodes });\n })\n .on('change', (event: Event, nodes: AXGridLayoutNode[]) => this.onChange.emit({ event, nodes }))\n .on('disable', (event: Event) => this.onDisable.emit({ event }))\n .on('drag', (event: Event, el: AXGridLayoutWidgetElement) => this.onDrag.emit({ event, el }))\n .on('dragstart', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onDragStart.emit({ event, el }),\n )\n .on('dragstop', (event: Event, el: AXGridLayoutWidgetElement) => this.onDragStop.emit({ event, el }))\n .on('dropped', (event: Event, previousNode: AXGridLayoutNode, newNode: AXGridLayoutNode) =>\n this.onDropped.emit({ event, previousNode, newNode }),\n )\n .on('enable', (event: Event) => this.onEnable.emit({ event }))\n .on('resize', (event: Event, el: AXGridLayoutWidgetElement) => this.onResize.emit({ event, el }))\n .on('resizestart', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onResizeStart.emit({ event, el }),\n )\n .on('resizestop', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onResizeStop.emit({ event, el }),\n );\n }\n }\n\n /**\n * Removes all event listeners from the grid.\n */\n private unhookEvents(grid?: AXGridLayout) {\n if (grid) {\n grid.offAll();\n }\n }\n\n //PUBLIC SETTER METHODS\n\n /**\n * Creates a new widget and returns it.\n * @param w - Widget position/size options.\n * @returns The created widget's HTML element, or `undefined` if the grid is not initialized.\n */\n public addWidget(w: AXGridLayoutWidget, withAutoArrange = false): AXGridLayoutWidgetElement | undefined {\n if (withAutoArrange) {\n this.compact();\n }\n return this.grid()?.addWidget(w);\n }\n\n /**\n * Re-layout grid items to reclaim any empty space.\n * @param layout - Compaction mode: 'list' or 'compact'. Default is 'compact'.\n * @param doSort - Whether to sort items automatically. Default is `true`.\n */\n public compact(layout: 'list' | 'compact' = 'compact', doSort = true): void {\n this.grid()?.compact(layout, doSort);\n }\n\n /**\n * Updates the current cell height.\n * @param val - The new cell height value.\n * @param update - Whether to rebuild the internal CSS stylesheet. Default is `true`.\n */\n public setCellHeight(val: number, update = true): void {\n this.grid()?.cellHeight(val, update);\n }\n\n /**\n * Sets the number of columns in the grid and updates existing widgets to conform to the new layout.\n * @param column - Number of columns (must be > 0). Default is 12.\n * @param layout - Re-layout behavior: 'list', 'compact', 'moveScale', 'move', 'scale', 'none'.\n * Default is 'moveScale'.\n */\n public setColumn(\n column: number,\n layout: 'list' | 'compact' | 'moveScale' | 'move' | 'scale' | 'none' = 'moveScale',\n ): void {\n this.grid()?.column(column, layout);\n }\n\n /**\n * Destroys the grid instance.\n * @param removeDOM - If `false`, nodes and grid will not be removed from the DOM. Default is `true`.\n */\n public destroy(removeDOM = true): void {\n this.grid()?.destroy(removeDOM);\n }\n\n /**\n * Sets whether widgets in the grid can be moved (dragged).\n *\n * @param state If true, widgets are movable; otherwise, they are locked.\n * @param recurse If true, the setting is applied to nested widgets as well.\n */\n public setMovable(state: boolean, recurse?: boolean) {\n this.grid().enableMove(state, recurse);\n }\n\n /**\n * Sets whether widgets in the grid can be resized.\n *\n * @param state If true, widgets are resizable; otherwise, they are fixed.\n * @param recurse If true, the setting is applied to nested widgets as well.\n */\n public setResizable(state: boolean, recurse?: boolean) {\n this.grid().enableResize(state, recurse);\n }\n\n /**\n * Sets or gets the floating behavior of widgets.\n * @param val - If provided, sets floating behavior (`true` or `false`). If not provided, returns the current value.\n * @returns The current floating behavior if `val` is not provided.\n */\n public setFloat(val: boolean): void {\n this.grid()?.float(val);\n }\n\n /**\n * Sets the margin (gap) between grid items and their content.\n * @param value - The margin value (number or string).\n */\n public setMargin(value: number | string): void {\n this.grid()?.margin(value);\n }\n\n /**\n * Removes a widget from the grid.\n * @param el - The widget to remove.\n * @param removeDOM - If `false`, the widget won't be removed from the DOM. Default is `true`.\n * @param triggerEvent - If `false`, no 'removed' callbacks will be called. Default is `true`.\n */\n public removeWidget(el: AXGridLayoutWidgetElement, removeDOM = true, triggerEvent = true): void {\n this.grid()?.removeWidget(el, removeDOM, triggerEvent);\n }\n\n /**\n * Removes all widgets from the grid.\n * @param removeDOM - If `false`, widgets won't be removed from the DOM. Default is `true`.\n */\n public removeAll(removeDOM = true): void {\n this.grid()?.removeAll(removeDOM);\n }\n\n /**\n * Rotates a widget by swapping its width and height.\n * @param els - The widget or selector of widgets to rotate.\n * @param relative - Optional pixel coordinates to rotate around (keeps that cell under the cursor).\n */\n public setRotate(element: AXGridLayoutWidgetCompElement) {\n this.grid().rotate(element);\n }\n\n /**\n * Toggles the grid animation state.\n * @param doAnimate - If `true`, the grid will animate.\n */\n public setAnimation(doAnimate: boolean): void {\n this.grid()?.setAnimation(doAnimate);\n }\n\n domSanitizer = inject(DomSanitizer);\n\n /**\n * Saves the current grid layout configuration.\n *\n * @param saveContent Whether to save the content of the grid items.\n * @param saveGridOpt Whether to save the grid options.\n * @param saveCallback Optional callback for custom save logic.\n * @returns The serialized grid layout options.\n */\n public save(saveContent = false, saveGridOpt = true, saveCallback?: AXSaveCallback): AXGridLayoutOptions {\n this.serializedData = this.grid().save(saveContent, saveGridOpt, saveCallback) as AXGridLayoutOptions;\n return this.serializedData;\n }\n\n /**\n * Loads a serialized grid layout configuration into the grid.\n *\n * @param serializedData The serialized grid options to load.\n * @param cleanBeforeLoad If true, the grid will be cleared before loading the new layout.\n * @returns A promise that resolves to the loaded grid instance.\n */\n public async load(\n serializedData: AXGridLayoutOptions = this.serializedData,\n cleanBeforeLoad = true,\n ): Promise<AXGridLayout> {\n if (cleanBeforeLoad) {\n this.grid().removeAll();\n }\n\n // Sanitize the content of each child element\n if (serializedData.children) {\n serializedData.children = serializedData.children.map((child) => {\n if (child.content) {\n // Sanitize the HTML content using Angular's DomSanitizer\n const sanitizedContent = this.domSanitizer.sanitize(SecurityContext.HTML, child.content);\n if (!sanitizedContent) {\n console.warn('Invalid or unsafe content removed:', child.content);\n child.content = ''; // Fallback to empty string\n } else {\n child.content = sanitizedContent;\n }\n }\n return child;\n });\n }\n\n // Dynamically import GridStack and load the grid\n const { GridStack } = await import('gridstack');\n return GridStack.addGrid(this.el, serializedData);\n }\n\n /**\n * Sets up draggable functionality for external elements to be added to the grid.\n *\n * @param dragIn A CSS selector or an array of elements that can be dragged into the grid.\n * @param widgets An optional set of widgets that are draggable into the grid.\n */\n public async setupDraggable(dragIn?: string | HTMLElement[], widgets?: AXGridLayoutWidget) {\n if (typeof dragIn === 'string') {\n document.querySelectorAll(dragIn).forEach((item) => {\n if (!item.classList.contains('grid-stack-item')) {\n item.classList.add('grid-stack-item');\n }\n });\n }\n const { GridStack } = await import('gridstack');\n GridStack.setupDragIn(dragIn, undefined, [widgets]);\n }\n\n /**\n * Sets grid layout options.\n * @param options The new grid layout options to apply.\n *\n * `Experimental`\n */\n public setOption(options: AXGridLayoutOptions) {\n this.grid().opts = merge({}, this.grid().opts, options);\n }\n\n // PUBLIC GETTER METHODS //\n\n /**\n * Retrieves the current grid layout options.\n *\n * @returns The current grid options.\n */\n public getOptions(): AXGridLayoutOptions {\n return this.grid().opts;\n }\n\n /**\n * Retrieves all the child nodes (widgets) in the grid layout.\n *\n * @returns An array of grid layout nodes representing the widgets.\n */\n public getChildren(): AXGridLayoutNode[] {\n return this.grid().engine.nodes;\n }\n}\n","/**\n * gridstack.component.ts 11.1.1-dev\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AXGridLayoutContainerComponent } from './grid-layout-container.component';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\nimport { AXGridLayoutWidgetDirective } from './grid-layout-widget.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent, AXGridLayoutWidgetDirective],\n exports: [AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent, AXGridLayoutWidgetDirective],\n})\nexport class AXGridLayoutBuilderModule {\n // constructor() {\n // set globally our method to create the right widget type\n // GridStack.addRemoveCB = gsCreateNgComponents;\n // GridStack.saveCB = gsSaveAdditionalNgInfo;\n // }\n}\n","import { AXGridLayoutContainerComponent } from './grid-layout-container.component';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\nimport { AXGridLayoutWidgetDirective } from './grid-layout-widget.directive';\n//TYPES\nexport type AXGridLayoutNode = import('gridstack').GridStackNode;\nexport type AXGridLayout = import('gridstack').GridStack;\nexport type AXGridLayoutOptions = import('gridstack').GridStackOptions;\nexport type AXGridLayoutWidget = import('gridstack').GridStackWidget & { data?: any };\nexport type AXGridLayoutContainerElement = import('gridstack').GridHTMLElement;\nexport type AXGridLayoutWidgetElement = import('gridstack').GridItemHTMLElement;\n//EVENTS\nexport type AXGridLayoutEventEvent = { event: Event };\nexport type AXGridLayoutElementEvent = { event: Event; el: AXGridLayoutWidgetElement };\nexport type AXGridLayoutNodesEvent = { event: Event; nodes: AXGridLayoutNode[] };\nexport type AXGridLayoutDroppedEvent = {\n event: Event;\n previousNode: AXGridLayoutNode;\n newNode: AXGridLayoutNode;\n};\n//COMPONENTS\nexport interface AXGridLayoutContainerCompElement extends AXGridLayoutContainerElement {\n _gridComp?: AXGridLayoutContainerComponent;\n}\nexport interface AXGridLayoutWidgetCompElement extends AXGridLayoutWidgetElement {\n _gridWidgetComp?: AXGridLayoutWidgetComponent | AXGridLayoutWidgetDirective;\n}\n\n//Callback\nexport type AXSaveCallback = import('gridstack').SaveFcn;\n\n// //DYNAMIC\n// export type AXNgCompInputs = { [key: string]: any };\n// export type SelectorToType = { [key: string]: Type<object> }; // selector string to runtime Type mapping\n// export interface AXNgGridLayoutWidget extends AXGridLayoutWidget {\n// selector?: string; //Angular tag selector for this component to create at runtime\n// input?: AXNgCompInputs; // serialized data for the component input fields\n// subGridOpts?: AXNgGridLayoutOptions; // nested grid options\n// }\n// export interface AXNgGridLayoutNode extends AXGridLayoutNode {\n// selector?: string; // component type to create as content\n// }\n// export interface AXNgGridLayoutOptions extends AXGridLayoutOptions {\n// children?: AXNgGridLayoutWidget[];\n// subGridOpts?: AXNgGridLayoutOptions;\n// }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAUA;;;;;;;;;;;;AAYG;MAYU,2BAA2B,CAAA;AAyCtC;;;;;AAKG;IACI,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGtB;;;AAGG;AACH,IAAA,WAAA,GAAA;AAtDA;;;AAGG;AACc,QAAA,IAAA,CAAA,UAAU,GAA8C,MAAM,CAAC,UAAU,CAAC;AAE3F;;AAEG;AACI,QAAA,IAAA,CAAA,EAAE,GAAkC,IAAI,CAAC,UAAU,CAAC,aAAa;AAUxE;;;;;;;;AAQG;AACI,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAC3B,YAAA,SAAS,EAAE,CAAC,GAAqB,KAAI;gBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI;gBACxC,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC;;qBACpB;AACL,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;;AAEzC,gBAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;aACjE;AACF,SAAA,CAAC;AAiBA,QAAA,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,IAAI;;AAGhC;;;;;AAKG;IACI,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGlD;;;;;;AAMG;AACI,IAAA,WAAW,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;AAGjE;;;;;;AAMG;AACI,IAAA,YAAY,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;AAG/D;;;;AAIG;AACH,IAAA,UAAU,CAAC,OAA2B,EAAA;AACpC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;;AAGrD;;;;;;;AAOG;IACH,UAAU,GAAA;AACR,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAC3C,IAAI,aAAa,EAAE;YACjB,OAAO;AACL,gBAAA,GAAG,aAAa;gBAChB,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ;;AAEH,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;;8GApHhD,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAT5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKI,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAXvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,CAAA;;;;AAIH,QAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;AC9BD;;;;;;;;;;AAUG;MAKU,2BAA2B,CAAA;AAJxC,IAAA,WAAA,GAAA;AAKE;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAA8C,MAAM,CAAC,UAAU,CAAC;AAE3F;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAE7C;;AAEG;AACI,QAAA,IAAA,CAAA,EAAE,GAAkC,IAAI,CAAC,UAAU,CAAC,aAAa;AAaxE;;;;;;;;AAQG;AACI,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAC3B,YAAA,SAAS,EAAE,CAAC,GAAqB,KAAI;gBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI;gBACxC,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC;;qBACpB;AACL,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;;AAEzC,gBAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;aACjE;AACF,SAAA,CAAC;AA0GH;AAxGC;;;;;;AAMG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC;AAEpE,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;;AAGlE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;AAErD,QAAA,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,IAAI;;AAGhC;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE;;AAGrB;;;;;AAKG;IACI,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGtB;;;;;AAKG;IACI,YAAY,GAAA;QACjB,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;;;AAIpD;;;;;;AAMG;AACI,IAAA,WAAW,CAAC,KAAc,EAAA;QAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;;AAInE;;;;;;AAMG;AACI,IAAA,YAAY,CAAC,KAAc,EAAA;QAChC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;;AAIjE;;;;AAIG;AACI,IAAA,UAAU,CAAC,OAA2B,EAAA;QAC3C,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;;;AAIvD;;;;;;;AAOG;IACI,UAAU,GAAA;AACf,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAC3C,IAAI,aAAa,EAAE;YACjB,OAAO;AACL,gBAAA,GAAG,aAAa;gBAChB,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ;;QAEH,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;;8GAtJ9B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;ACqBD;;;;;;AAMG;MAUU,8BAA8B,CAAA;;AAuHzC;;AAEG;AACH,IAAA,WAAA,GAAA;AAxHA;;AAEG;AACK,QAAA,IAAA,CAAA,SAAS,GAAG,eAAe,CAAC,2BAA2B,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAC,2BAA2B,CAAC;AAE/D;;AAEG;QACI,IAAO,CAAA,OAAA,GAAG,KAAK,EAAuB;AAE7C;;AAEG;QACK,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAE/E;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAiD,MAAM,CAAC,UAAU,CAAC;AAE9F;;AAEG;AACK,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE/B;;AAEG;AACK,QAAA,IAAA,CAAA,IAAI,GAA6C,MAAM,CAAC,SAAS,CAAC;AAO1E;;AAEG;AACK,QAAA,IAAA,CAAA,EAAE,GAAqC,IAAI,CAAC,UAAU,CAAC,aAAa;;AAI5E;;AAEG;QACO,IAAO,CAAA,OAAA,GAAG,MAAM,EAA0B;AAEpD;;AAEG;QACO,IAAQ,CAAA,QAAA,GAAG,MAAM,EAA0B;AAErD;;AAEG;QACO,IAAS,CAAA,SAAA,GAAG,MAAM,EAA0B;AAEtD;;AAEG;QACO,IAAM,CAAA,MAAA,GAAG,MAAM,EAA4B;AAErD;;AAEG;QACO,IAAW,CAAA,WAAA,GAAG,MAAM,EAA4B;AAE1D;;AAEG;QACO,IAAU,CAAA,UAAA,GAAG,MAAM,EAA4B;AAEzD;;AAEG;QACO,IAAS,CAAA,SAAA,GAAG,MAAM,EAA4B;AAExD;;AAEG;QACO,IAAQ,CAAA,QAAA,GAAG,MAAM,EAA0B;AAErD;;AAEG;QACO,IAAS,CAAA,SAAA,GAAG,MAAM,EAA0B;AAEtD;;AAEG;QACO,IAAQ,CAAA,QAAA,GAAG,MAAM,EAA4B;AAEvD;;AAEG;QACO,IAAa,CAAA,aAAA,GAAG,MAAM,EAA4B;AAE5D;;AAEG;QACO,IAAY,CAAA,YAAA,GAAG,MAAM,EAA4B;AAE3D;;AAEG;QACO,IAAU,CAAA,UAAA,GAAG,MAAM,EAAW;;AAIxC;;AAEG;AACO,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;;AAoChC;;AAEG;AACK,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,SAAS,EAAE;gBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,gBAAA,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC;;AAEtD,SAAC,CAAC;AAEF;;AAEG;AACK,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,MAAK;YAChC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE;;AAEpB,SAAC,CAAC;AA0MF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAzPjC,QAAA,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC;AAC/C,QAAA,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI;;AAG1B;;;AAGG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAW;AACvC,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM;YACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,WAAW,CAAC;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC;;AAGJ;;;AAGG;IACI,WAAW,GAAA;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE;;;AA4BxB;;AAEG;IACK,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;QAClB,MAAM,MAAM,GAAyB,EAAE;AACvC,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACxD,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,EAAE;AACrB,aAAC,CAAC;YACF,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAI5B;;AAEG;IACK,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;AAChD,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;gBAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;;;;AAM7B;;AAEG;AACK,IAAA,UAAU,CAAC,IAAmB,EAAA;QACpC,IAAI,IAAI,EAAE;YACR;iBACG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,KAAyB,KAAI;gBACvD,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACrC,aAAC;iBACA,EAAE,CAAC,SAAS,EAAE,CAAC,KAAY,EAAE,KAAyB,KAAI;gBACzD,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvC,aAAC;iBACA,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAY,EAAE,KAAyB,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9F,iBAAA,EAAE,CAAC,SAAS,EAAE,CAAC,KAAY,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;iBAC9D,EAAE,CAAC,MAAM,EAAE,CAAC,KAAY,EAAE,EAA6B,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAC3F,EAAE,CAAC,WAAW,EAAE,CAAC,KAAY,EAAE,EAA6B,KAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAErC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAY,EAAE,EAA6B,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBACnG,EAAE,CAAC,SAAS,EAAE,CAAC,KAAY,EAAE,YAA8B,EAAE,OAAyB,KACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAEtD,iBAAA,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAY,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;iBAC5D,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAY,EAAE,EAA6B,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAC/F,EAAE,CAAC,aAAa,EAAE,CAAC,KAAY,EAAE,EAA6B,KAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAEvC,EAAE,CAAC,YAAY,EAAE,CAAC,KAAY,EAAE,EAA6B,KAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACtC;;;AAIP;;AAEG;AACK,IAAA,YAAY,CAAC,IAAmB,EAAA;QACtC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,EAAE;;;;AAMjB;;;;AAIG;AACI,IAAA,SAAS,CAAC,CAAqB,EAAE,eAAe,GAAG,KAAK,EAAA;QAC7D,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE;;QAEhB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;;AAGlC;;;;AAIG;AACI,IAAA,OAAO,CAAC,MAA6B,GAAA,SAAS,EAAE,MAAM,GAAG,IAAI,EAAA;QAClE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;;AAGtC;;;;AAIG;AACI,IAAA,aAAa,CAAC,GAAW,EAAE,MAAM,GAAG,IAAI,EAAA;QAC7C,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;;AAGtC;;;;;AAKG;AACI,IAAA,SAAS,CACd,MAAc,EACd,MAAA,GAAuE,WAAW,EAAA;QAElF,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;AAGrC;;;AAGG;IACI,OAAO,CAAC,SAAS,GAAG,IAAI,EAAA;QAC7B,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC;;AAGjC;;;;;AAKG;IACI,UAAU,CAAC,KAAc,EAAE,OAAiB,EAAA;QACjD,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;;AAGxC;;;;;AAKG;IACI,YAAY,CAAC,KAAc,EAAE,OAAiB,EAAA;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;AAG1C;;;;AAIG;AACI,IAAA,QAAQ,CAAC,GAAY,EAAA;QAC1B,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;;AAGzB;;;AAGG;AACI,IAAA,SAAS,CAAC,KAAsB,EAAA;QACrC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;;AAG5B;;;;;AAKG;IACI,YAAY,CAAC,EAA6B,EAAE,SAAS,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAA;AACtF,QAAA,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC;;AAGxD;;;AAGG;IACI,SAAS,CAAC,SAAS,GAAG,IAAI,EAAA;QAC/B,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC;;AAGnC;;;;AAIG;AACI,IAAA,SAAS,CAAC,OAAsC,EAAA;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;;AAG7B;;;AAGG;AACI,IAAA,YAAY,CAAC,SAAkB,EAAA;QACpC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC;;AAKtC;;;;;;;AAOG;IACI,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,YAA6B,EAAA;AAChF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAwB;QACrG,OAAO,IAAI,CAAC,cAAc;;AAG5B;;;;;;AAMG;IACI,MAAM,IAAI,CACf,cAAsC,GAAA,IAAI,CAAC,cAAc,EACzD,eAAe,GAAG,IAAI,EAAA;QAEtB,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;;;AAIzB,QAAA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC3B,YAAA,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC9D,gBAAA,IAAI,KAAK,CAAC,OAAO,EAAE;;AAEjB,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;oBACxF,IAAI,CAAC,gBAAgB,EAAE;wBACrB,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,wBAAA,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;;yBACd;AACL,wBAAA,KAAK,CAAC,OAAO,GAAG,gBAAgB;;;AAGpC,gBAAA,OAAO,KAAK;AACd,aAAC,CAAC;;;QAIJ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,WAAW,CAAC;QAC/C,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;;AAGnD;;;;;AAKG;AACI,IAAA,MAAM,cAAc,CAAC,MAA+B,EAAE,OAA4B,EAAA;AACvF,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC/C,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;;AAEzC,aAAC,CAAC;;QAEJ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,WAAW,CAAC;QAC/C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;;AAGrD;;;;;AAKG;AACI,IAAA,SAAS,CAAC,OAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;;;AAKzD;;;;AAIG;IACI,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;;AAGzB;;;;AAIG;IACI,WAAW,GAAA;QAChB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK;;8GArdtB,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAKL,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,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,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,2BAA2B,EAC5B,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,2BAA2B,EAbpD,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;AACkB,6BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+hkBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMjB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAT1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAC1B,QAAA,EAAA,CAAA;8BACkB,EAEX,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,MAAA,EAAA,CAAA,+hkBAAA,CAAA,EAAA;;;ACpDnB;;;AAGG;MAcU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAHrB,YAAA,EAAA,CAAA,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,CAD7F,EAAA,OAAA,EAAA,CAAA,YAAY,CAEZ,EAAA,OAAA,EAAA,CAAA,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAEvF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAJ1B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,CAAC;AACxG,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,CAAC;AACpG,iBAAA;;;ACcD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;;AAEG;;;;"}
@@ -1,18 +1,17 @@
1
- import { MXInputBaseValueComponent, MXLookComponent, AXComponent, AXFocusableComponent, AXClearableComponent, AXValuableComponent, MXBaseComponent } from '@acorex/components/common';
2
- import { AXDialogService, AXDialogModule } from '@acorex/components/dialog';
1
+ import { MXLookComponent, MXInputBaseValueComponent, AXComponent, AXFocusableComponent, AXClearableComponent, AXValuableComponent, MXBaseComponent } from '@acorex/components/common';
3
2
  import * as i0 from '@angular/core';
4
- import { signal, Injectable, inject, viewChild, forwardRef, Component, ViewEncapsulation, HostBinding, input, Renderer2, computed, NgZone, afterNextRender, effect, ChangeDetectionStrategy, NgModule } from '@angular/core';
5
- import * as i1$1 from '@angular/forms';
6
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
7
- import { classes } from 'polytype';
3
+ import { signal, Injectable, inject, viewChild, ViewEncapsulation, Component, forwardRef, HostBinding, input, Renderer2, computed, NgZone, afterNextRender, effect, ChangeDetectionStrategy, NgModule } from '@angular/core';
8
4
  import * as i1 from '@acorex/components/loading';
9
5
  import { AXLoadingModule } from '@acorex/components/loading';
6
+ import { AXDialogService, AXDialogModule } from '@acorex/components/dialog';
7
+ import * as i1$2 from '@angular/forms';
8
+ import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
9
+ import * as i1$1 from '@acorex/components/button';
10
+ import { AXButtonModule } from '@acorex/components/button';
10
11
  import * as i2 from '@acorex/components/color-box';
11
12
  import { AXColorBoxModule } from '@acorex/components/color-box';
12
13
  import * as i3 from '@acorex/components/tooltip';
13
14
  import { AXTooltipModule } from '@acorex/components/tooltip';
14
- import * as i1$2 from '@acorex/components/button';
15
- import { AXButtonModule } from '@acorex/components/button';
16
15
  import * as i2$1 from '@acorex/components/decorators';
17
16
  import { AXDecoratorModule } from '@acorex/components/decorators';
18
17
  import * as i3$1 from '@acorex/components/range-slider';
@@ -46,15 +45,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
46
45
  * paint container.
47
46
  * @category Components
48
47
  */
49
- class AXImageEditorContainerComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {
48
+ class AXImageEditorContainerComponent extends MXLookComponent {
50
49
  constructor() {
51
50
  super(...arguments);
52
51
  /** @ignore */
53
52
  this.service = inject(AXImageEditorService);
54
53
  this.imageEditorContainer = viewChild('f');
54
+ }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXImageEditorContainerComponent, isStandalone: false, selector: "ax-image-editor-container", providers: [AXImageEditorService], viewQueries: [{ propertyName: "imageEditorContainer", first: true, predicate: ["f"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-look-solid\">\n <ng-content> </ng-content>\n </div>\n} @else {\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n}\n", styles: ["ax-image-editor-container{display:flex;justify-content:center;align-items:center;max-width:100%}ax-image-editor-container>.ax-editor-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto!important}\n"], dependencies: [{ kind: "component", type: i1.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }], encapsulation: i0.ViewEncapsulation.None }); }
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorContainerComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: 'ax-image-editor-container', encapsulation: ViewEncapsulation.None, providers: [AXImageEditorService], standalone: false, template: "@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-look-solid\">\n <ng-content> </ng-content>\n </div>\n} @else {\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n}\n", styles: ["ax-image-editor-container{display:flex;justify-content:center;align-items:center;max-width:100%}ax-image-editor-container>.ax-editor-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto!important}\n"] }]
61
+ }] });
62
+
63
+ /**
64
+ *paint toolbar
65
+ * @category Components
66
+ */
67
+ class AXImageEditorToolbarComponent extends MXInputBaseValueComponent {
68
+ constructor() {
69
+ super(...arguments);
55
70
  /** @ignore */
56
71
  this.dialogService = inject(AXDialogService);
57
72
  /** @ignore */
73
+ this.service = inject(AXImageEditorService);
74
+ /** @ignore */
58
75
  this.options = signal({
59
76
  color: 'primary',
60
77
  title: 'Attention',
@@ -64,50 +81,45 @@ class AXImageEditorContainerComponent extends classes((MXInputBaseValueComponent
64
81
  draggable: true,
65
82
  });
66
83
  }
67
- save() {
84
+ /** @ignore */
85
+ saveHandler() {
68
86
  if (this.service.initialImage() !== this.service.newImage()) {
69
87
  this.dialogService
70
88
  .confirm(this.options().title, this.options().content, this.options().color, this.options().orientation, this.options().draggable)
71
89
  .then((data) => {
72
90
  if (data.result) {
73
91
  this.service.initialImage.set(this.service.newImage());
74
- this.commitValue(this.service.imageBlob(), true);
92
+ this.commitValue(this.service.imageBlob());
75
93
  }
76
- })
77
- .catch(() => this.commitValue(null));
78
- }
79
- else {
80
- this.commitValue(null);
94
+ });
81
95
  }
82
96
  }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXImageEditorContainerComponent, isStandalone: false, selector: "ax-image-editor-container", inputs: { look: "look" }, outputs: { onValueChanged: "onValueChanged" }, providers: [
85
- AXImageEditorService,
86
- { provide: AXComponent, useExisting: AXImageEditorContainerComponent },
87
- { provide: AXFocusableComponent, useExisting: AXImageEditorContainerComponent },
88
- { provide: AXClearableComponent, useExisting: AXImageEditorContainerComponent },
89
- { provide: AXValuableComponent, useExisting: AXImageEditorContainerComponent },
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorToolbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXImageEditorToolbarComponent, isStandalone: false, selector: "ax-image-editor-toolbar", outputs: { onValueChanged: "onValueChanged" }, providers: [
99
+ { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },
100
+ { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },
101
+ { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },
102
+ { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },
90
103
  {
91
104
  provide: NG_VALUE_ACCESSOR,
92
- useExisting: forwardRef(() => AXImageEditorContainerComponent),
105
+ useExisting: forwardRef(() => AXImageEditorToolbarComponent),
93
106
  multi: true,
94
107
  },
95
- ], viewQueries: [{ propertyName: "imageEditorContainer", first: true, predicate: ["f"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-{{ look }}\">\n <ng-content> </ng-content>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n </div>\n <div class=\"ax-error-container\"></div>\n} @else {\n <div class=\"ax-loading-spinner-container\">\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n </div>\n}\n", styles: ["ax-image-editor-container{width:fit-content;display:block}ax-image-editor-container>.ax-editor-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto!important}ax-image-editor-container .ax-loading-spinner-container{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: i1.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }], encapsulation: i0.ViewEncapsulation.None }); }
108
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-toolbar-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n<ax-button color=\"primary\" (onClick)=\"saveHandler()\" class=\"ax-save-btn ax-sm\" text=\"Save\"></ax-button>\n", styles: ["ax-image-editor-toolbar{padding:.3rem 1rem;width:100%;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(var(--ax-color-input-border))}ax-image-editor-toolbar .ax-toolbar-container{display:flex;align-items:center;flex-wrap:wrap}ax-image-editor-toolbar .ax-icon{font-weight:900;font-size:1rem}\n"], dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
96
109
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorContainerComponent, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorToolbarComponent, decorators: [{
98
111
  type: Component,
99
- args: [{ selector: 'ax-image-editor-container', encapsulation: ViewEncapsulation.None, standalone: false, outputs: ['onValueChanged'], inputs: ['look'], providers: [
100
- AXImageEditorService,
101
- { provide: AXComponent, useExisting: AXImageEditorContainerComponent },
102
- { provide: AXFocusableComponent, useExisting: AXImageEditorContainerComponent },
103
- { provide: AXClearableComponent, useExisting: AXImageEditorContainerComponent },
104
- { provide: AXValuableComponent, useExisting: AXImageEditorContainerComponent },
112
+ args: [{ selector: 'ax-image-editor-toolbar', encapsulation: ViewEncapsulation.None, outputs: ['onValueChanged'], providers: [
113
+ { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },
114
+ { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },
115
+ { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },
116
+ { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },
105
117
  {
106
118
  provide: NG_VALUE_ACCESSOR,
107
- useExisting: forwardRef(() => AXImageEditorContainerComponent),
119
+ useExisting: forwardRef(() => AXImageEditorToolbarComponent),
108
120
  multi: true,
109
121
  },
110
- ], template: "@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-{{ look }}\">\n <ng-content> </ng-content>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n </div>\n <div class=\"ax-error-container\"></div>\n} @else {\n <div class=\"ax-loading-spinner-container\">\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n </div>\n}\n", styles: ["ax-image-editor-container{width:fit-content;display:block}ax-image-editor-container>.ax-editor-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:auto!important}ax-image-editor-container .ax-loading-spinner-container{display:flex;justify-content:center;align-items:center}\n"] }]
122
+ ], standalone: false, template: "<div class=\"ax-toolbar-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n<ax-button color=\"primary\" (onClick)=\"saveHandler()\" class=\"ax-save-btn ax-sm\" text=\"Save\"></ax-button>\n", styles: ["ax-image-editor-toolbar{padding:.3rem 1rem;width:100%;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(var(--ax-color-input-border))}ax-image-editor-toolbar .ax-toolbar-container{display:flex;align-items:center;flex-wrap:wrap}ax-image-editor-toolbar .ax-icon{font-weight:900;font-size:1rem}\n"] }]
111
123
  }] });
112
124
 
113
125
  /**
@@ -130,11 +142,11 @@ class AXImageEditorColorPickerComponent {
130
142
  return `.5rem`;
131
143
  }
132
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXImageEditorColorPickerComponent, isStandalone: false, selector: "ax-image-editor-color-picker", host: { properties: { "style.marginInline": "this.__hostClass" } }, ngImport: i0, template: "<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"solid\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n", styles: ["ax-image-editor-color-picker{margin-inline:0!important}ax-image-editor-color-picker .ax-submit-color{border:1px solid rgba(var(--ax-sys-body-text-color));width:.6rem;height:.6rem;border-radius:1000vmax}ax-image-editor-color-picker .ax-color-flex-container{display:flex;align-items:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }, { kind: "directive", type: i3.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXImageEditorColorPickerComponent, isStandalone: false, selector: "ax-image-editor-color-picker", host: { properties: { "style.marginInline": "this.__hostClass" } }, ngImport: i0, template: "<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"outline\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n", styles: ["ax-image-editor-color-picker{margin-inline:0!important}ax-image-editor-color-picker .ax-submit-color{border:1px solid rgba(var(--ax-color-text-default));width:.6rem;height:.6rem;border-radius:1000vmax}ax-image-editor-color-picker .ax-color-flex-container{display:flex;align-items:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }, { kind: "directive", type: i3.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
134
146
  }
135
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorColorPickerComponent, decorators: [{
136
148
  type: Component,
137
- args: [{ selector: 'ax-image-editor-color-picker', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"solid\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n", styles: ["ax-image-editor-color-picker{margin-inline:0!important}ax-image-editor-color-picker .ax-submit-color{border:1px solid rgba(var(--ax-sys-body-text-color));width:.6rem;height:.6rem;border-radius:1000vmax}ax-image-editor-color-picker .ax-color-flex-container{display:flex;align-items:center;cursor:pointer}\n"] }]
149
+ args: [{ selector: 'ax-image-editor-color-picker', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"outline\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n", styles: ["ax-image-editor-color-picker{margin-inline:0!important}ax-image-editor-color-picker .ax-submit-color{border:1px solid rgba(var(--ax-color-text-default));width:.6rem;height:.6rem;border-radius:1000vmax}ax-image-editor-color-picker .ax-color-flex-container{display:flex;align-items:center;cursor:pointer}\n"] }]
138
150
  }], propDecorators: { __hostClass: [{
139
151
  type: HostBinding,
140
152
  args: ['style.marginInline']
@@ -164,7 +176,7 @@ class AXImageEditorCropComponent {
164
176
  });
165
177
  }
166
178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorCropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
167
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXImageEditorCropComponent, isStandalone: false, selector: "ax-image-editor-crop", ngImport: i0, template: "<ax-button\n axTooltip=\"Crop Image\"\n axTooltipPlacement=\"top\"\n [selected]=\"service.cropState().state && true\"\n (click)=\"crop()\"\n look=\"blank\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Right\" axTooltipPlacement=\"top\" (click)=\"rotateRightHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n", dependencies: [{ kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: i3.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXImageEditorCropComponent, isStandalone: false, selector: "ax-image-editor-crop", ngImport: i0, template: "<ax-button\n axTooltip=\"Crop Image\"\n axTooltipPlacement=\"top\"\n [selected]=\"service.cropState().state && true\"\n (click)=\"crop()\"\n look=\"blank\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Right\" axTooltipPlacement=\"top\" (click)=\"rotateRightHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n", dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: i3.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
168
180
  }
169
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorCropComponent, decorators: [{
170
182
  type: Component,
@@ -209,7 +221,7 @@ class AXImageEditorPenModeChangerComponent {
209
221
  this.service.lineWidth.set(e);
210
222
  }
211
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorPenModeChangerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXImageEditorPenModeChangerComponent, isStandalone: false, selector: "ax-image-editor-pen-mode-changer", host: { properties: { "style.marginInline": "this.__hostClass" } }, ngImport: i0, template: "<ax-button axTooltip=\"Draw Utilities\" axTooltipPlacement=\"top\" look=\"blank\" #alignPop>\n @switch (service.penType()) {\n @case ('pen') {\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n }\n @case ('highlight') {\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n }\n }\n</ax-button>\n\n<ax-button axTooltip=\"Reset Changes\" axTooltipPlacement=\"top\" (click)=\"clear()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-refresh\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-button\n (click)=\"penTypeHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'pen' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n </ax-button>\n\n <ax-button\n (click)=\"penTypeHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'highlight' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n\n <div class=\"ax-paint-width-slider\">\n <ax-range-slider\n [min]=\"2\"\n [max]=\"20\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"valueHandler($event)\"\n ></ax-range-slider>\n </div>\n </div>\n</ax-popover>\n", styles: ["ax-image-editor-pen-mode-changer{margin-inline:0!important}ax-image-editor-pen-mode-changer ax-range-slider{padding:.5rem .75rem}ax-image-editor-pen-mode-changer ax-range-slider .ax-range-slider .ax-range-slider-handler{width:1rem!important;height:1rem!important}ax-image-editor-pen-mode-changer .ax-paint-pen-mode-changer-container{display:flex;align-items:center}ax-image-editor-pen-mode-changer .ax-paint-pen-mode-changer-container .ax-pen-type-container{margin-inline-end:.5rem}ax-image-editor-pen-mode-changer .ax-overlay-pane{padding:.5rem!important}\n"], dependencies: [{ kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "component", type: i4.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: i3.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXImageEditorPenModeChangerComponent, isStandalone: false, selector: "ax-image-editor-pen-mode-changer", host: { properties: { "style.marginInline": "this.__hostClass" } }, ngImport: i0, template: "<ax-button axTooltip=\"Draw Utilities\" axTooltipPlacement=\"top\" look=\"blank\" #alignPop>\n @switch (service.penType()) {\n @case ('pen') {\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n }\n @case ('highlight') {\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n }\n }\n</ax-button>\n\n<ax-button axTooltip=\"Reset Changes\" axTooltipPlacement=\"top\" (click)=\"clear()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-refresh\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-button\n (click)=\"penTypeHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'pen' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n </ax-button>\n\n <ax-button\n (click)=\"penTypeHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'highlight' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n\n <div class=\"ax-paint-width-slider\">\n <ax-range-slider\n [min]=\"2\"\n [max]=\"20\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"valueHandler($event)\"\n ></ax-range-slider>\n </div>\n </div>\n</ax-popover>\n", styles: ["ax-image-editor-pen-mode-changer{margin-inline:0!important}ax-image-editor-pen-mode-changer ax-range-slider{padding:.5rem .75rem}ax-image-editor-pen-mode-changer ax-range-slider .ax-range-slider .ax-range-slider-handler{width:1rem!important;height:1rem!important}ax-image-editor-pen-mode-changer .ax-paint-pen-mode-changer-container{display:flex;align-items:center}ax-image-editor-pen-mode-changer .ax-paint-pen-mode-changer-container .ax-pen-type-container{margin-inline-end:.5rem}ax-image-editor-pen-mode-changer .ax-overlay-pane{padding:.5rem!important}\n"], dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "component", type: i4.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: i3.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
213
225
  }
214
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorPenModeChangerComponent, decorators: [{
215
227
  type: Component,
@@ -568,7 +580,7 @@ class AXImageEditorViewComponent extends MXBaseComponent {
568
580
  return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;
569
581
  }
570
582
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
571
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.3", type: AXImageEditorViewComponent, isStandalone: false, selector: "ax-image-editor-view", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__hostStyle" } }, viewQueries: [{ propertyName: "canvasElem", first: true, predicate: ["canvasElem"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n", styles: ["ax-image-editor-view{position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff;width:100%}ax-image-editor-view .ax-canvas-element{cursor:crosshair}ax-image-editor-view .ax-crop-save{position:absolute;top:0;right:0;margin:1rem}\n"], dependencies: [{ kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
583
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.3", type: AXImageEditorViewComponent, isStandalone: false, selector: "ax-image-editor-view", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__hostStyle" } }, viewQueries: [{ propertyName: "canvasElem", first: true, predicate: ["canvasElem"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n", styles: ["ax-image-editor-view{position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff;width:100%}ax-image-editor-view .ax-canvas-element{cursor:crosshair}ax-image-editor-view .ax-crop-save{position:absolute;top:0;right:0;margin:1rem}\n"], dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
572
584
  }
573
585
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorViewComponent, decorators: [{
574
586
  type: Component,
@@ -579,6 +591,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
579
591
  }] } });
580
592
 
581
593
  const COMPONENT = [
594
+ AXImageEditorToolbarComponent,
582
595
  AXImageEditorColorPickerComponent,
583
596
  AXImageEditorPenModeChangerComponent,
584
597
  AXImageEditorViewComponent,
@@ -599,7 +612,8 @@ const MODULES = [
599
612
  ];
600
613
  class AXImageEditorModule {
601
614
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
602
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorModule, declarations: [AXImageEditorColorPickerComponent,
615
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXImageEditorModule, declarations: [AXImageEditorToolbarComponent,
616
+ AXImageEditorColorPickerComponent,
603
617
  AXImageEditorPenModeChangerComponent,
604
618
  AXImageEditorViewComponent,
605
619
  AXImageEditorContainerComponent,
@@ -612,7 +626,8 @@ class AXImageEditorModule {
612
626
  AXDecoratorModule,
613
627
  AXLoadingModule,
614
628
  AXDialogModule,
615
- AXTooltipModule], exports: [AXImageEditorColorPickerComponent,
629
+ AXTooltipModule], exports: [AXImageEditorToolbarComponent,
630
+ AXImageEditorColorPickerComponent,
616
631
  AXImageEditorPenModeChangerComponent,
617
632
  AXImageEditorViewComponent,
618
633
  AXImageEditorContainerComponent,
@@ -633,5 +648,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
633
648
  * Generated bundle index. Do not edit.
634
649
  */
635
650
 
636
- export { AXImageEditorColorPickerComponent, AXImageEditorContainerComponent, AXImageEditorCropComponent, AXImageEditorModule, AXImageEditorPenModeChangerComponent, AXImageEditorViewComponent };
651
+ export { AXImageEditorColorPickerComponent, AXImageEditorContainerComponent, AXImageEditorCropComponent, AXImageEditorModule, AXImageEditorPenModeChangerComponent, AXImageEditorToolbarComponent, AXImageEditorViewComponent };
637
652
  //# sourceMappingURL=acorex-components-image-editor.mjs.map