ng-magary 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +63 -213
  2. package/fesm2022/ng-magary.mjs +8694 -0
  3. package/fesm2022/ng-magary.mjs.map +1 -0
  4. package/package.json +19 -14
  5. package/types/ng-magary.d.ts +2556 -0
  6. package/LICENSE.md +0 -21
  7. package/bun.lock +0 -290
  8. package/ng-package.json +0 -7
  9. package/src/lib/Button/button/button.html +0 -29
  10. package/src/lib/Button/button/button.module.ts +0 -9
  11. package/src/lib/Button/button/button.scss +0 -196
  12. package/src/lib/Button/button/button.spec.ts +0 -18
  13. package/src/lib/Button/button/button.ts +0 -72
  14. package/src/lib/Button/speed-dial/speed-dial-item.interface.ts +0 -9
  15. package/src/lib/Button/speed-dial/speed-dial.html +0 -57
  16. package/src/lib/Button/speed-dial/speed-dial.module.ts +0 -8
  17. package/src/lib/Button/speed-dial/speed-dial.scss +0 -247
  18. package/src/lib/Button/speed-dial/speed-dial.spec.ts +0 -18
  19. package/src/lib/Button/speed-dial/speed-dial.ts +0 -106
  20. package/src/lib/Form/cascade-select/cascade-select.html +0 -1
  21. package/src/lib/Form/cascade-select/cascade-select.module.ts +0 -8
  22. package/src/lib/Form/cascade-select/cascade-select.scss +0 -0
  23. package/src/lib/Form/cascade-select/cascade-select.spec.ts +0 -18
  24. package/src/lib/Form/cascade-select/cascade-select.ts +0 -9
  25. package/src/lib/Form/input/input.html +0 -66
  26. package/src/lib/Form/input/input.module.ts +0 -9
  27. package/src/lib/Form/input/input.scss +0 -193
  28. package/src/lib/Form/input/input.spec.ts +0 -22
  29. package/src/lib/Form/input/input.ts +0 -132
  30. package/src/lib/Menu/panelmenu/panelmenu.html +0 -259
  31. package/src/lib/Menu/panelmenu/panelmenu.interface.ts +0 -13
  32. package/src/lib/Menu/panelmenu/panelmenu.module.ts +0 -9
  33. package/src/lib/Menu/panelmenu/panelmenu.scss +0 -177
  34. package/src/lib/Menu/panelmenu/panelmenu.spec.ts +0 -18
  35. package/src/lib/Menu/panelmenu/panelmenu.ts +0 -134
  36. package/src/lib/Menu/sidebar/sidebar.html +0 -85
  37. package/src/lib/Menu/sidebar/sidebar.module.ts +0 -9
  38. package/src/lib/Menu/sidebar/sidebar.scss +0 -153
  39. package/src/lib/Menu/sidebar/sidebar.spec.ts +0 -18
  40. package/src/lib/Menu/sidebar/sidebar.ts +0 -64
  41. package/src/lib/Misc/avatar/avatar.html +0 -44
  42. package/src/lib/Misc/avatar/avatar.module.ts +0 -9
  43. package/src/lib/Misc/avatar/avatar.scss +0 -167
  44. package/src/lib/Misc/avatar/avatar.spec.ts +0 -18
  45. package/src/lib/Misc/avatar/avatar.ts +0 -93
  46. package/src/lib/Panel/card/card.html +0 -58
  47. package/src/lib/Panel/card/card.module.ts +0 -9
  48. package/src/lib/Panel/card/card.scss +0 -290
  49. package/src/lib/Panel/card/card.spec.ts +0 -18
  50. package/src/lib/Panel/card/card.ts +0 -126
  51. package/src/lib/Panel/tabs/tab/tab.spec.ts +0 -18
  52. package/src/lib/Panel/tabs/tab/tab.ts +0 -12
  53. package/src/lib/Panel/tabs/tabs.html +0 -26
  54. package/src/lib/Panel/tabs/tabs.module.ts +0 -10
  55. package/src/lib/Panel/tabs/tabs.scss +0 -58
  56. package/src/lib/Panel/tabs/tabs.spec.ts +0 -18
  57. package/src/lib/Panel/tabs/tabs.ts +0 -57
  58. package/src/lib/ng-magary.spec.ts +0 -18
  59. package/src/lib/ng-magary.ts +0 -43
  60. package/src/public-api.ts +0 -5
  61. package/tsconfig.lib.json +0 -22
  62. package/tsconfig.lib.prod.json +0 -11
  63. package/tsconfig.spec.json +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-magary.mjs","sources":["../../../projects/ng-magary/src/lib/Button/button/button.ts","../../../projects/ng-magary/src/lib/Button/button/button.html","../../../projects/ng-magary/src/lib/Button/button/button.module.ts","../../../projects/ng-magary/src/lib/Button/speed-dial/speed-dial.ts","../../../projects/ng-magary/src/lib/Button/speed-dial/speed-dial.html","../../../projects/ng-magary/src/lib/Button/speed-dial/speed-dial.module.ts","../../../projects/ng-magary/src/lib/Button/split-button/split-button.ts","../../../projects/ng-magary/src/lib/Button/split-button/split-button.html","../../../projects/ng-magary/src/lib/Misc/avatar/avatar.ts","../../../projects/ng-magary/src/lib/Misc/avatar/avatar.html","../../../projects/ng-magary/src/lib/Form/input/input.ts","../../../projects/ng-magary/src/lib/Form/input/input.html","../../../projects/ng-magary/src/lib/Misc/skeleton/skeleton.ts","../../../projects/ng-magary/src/lib/Misc/skeleton/skeleton.html","../../../projects/ng-magary/src/lib/Data/paginator/paginator.ts","../../../projects/ng-magary/src/lib/Data/paginator/paginator.html","../../../projects/ng-magary/src/lib/Data/table/table.ts","../../../projects/ng-magary/src/lib/Data/table/table.html","../../../projects/ng-magary/src/lib/Data/table/table.module.ts","../../../projects/ng-magary/src/lib/Data/tree/uitree-node.ts","../../../projects/ng-magary/src/lib/Data/tree/tree.ts","../../../projects/ng-magary/src/lib/Data/tree/tree.html","../../../projects/ng-magary/src/lib/Data/timeline/timeline.ts","../../../projects/ng-magary/src/lib/Data/organizationchart/organizationchart-node.ts","../../../projects/ng-magary/src/lib/Data/organizationchart/organizationchart.ts","../../../projects/ng-magary/src/lib/Data/organizationchart/organizationchart.html","../../../projects/ng-magary/src/lib/Data/picklist/picklist.ts","../../../projects/ng-magary/src/lib/Data/picklist/picklist.html","../../../projects/ng-magary/src/lib/Data/orderlist/orderlist.ts","../../../projects/ng-magary/src/lib/Data/orderlist/orderlist.html","../../../projects/ng-magary/src/lib/Data/dataview/dataview.ts","../../../projects/ng-magary/src/lib/Data/dataview/dataview.html","../../../projects/ng-magary/src/lib/File/upload/upload.ts","../../../projects/ng-magary/src/lib/File/upload/upload.html","../../../projects/ng-magary/src/lib/File/upload/upload.module.ts","../../../projects/ng-magary/src/lib/Form/cascade-select/cascade-select.ts","../../../projects/ng-magary/src/lib/Form/cascade-select/cascade-select.html","../../../projects/ng-magary/src/lib/Form/cascade-select/cascade-select.module.ts","../../../projects/ng-magary/src/lib/Form/input/input.module.ts","../../../projects/ng-magary/src/lib/Form/checkbox/checkbox.ts","../../../projects/ng-magary/src/lib/Form/checkbox/checkbox.html","../../../projects/ng-magary/src/lib/Form/checkbox/checkbox.module.ts","../../../projects/ng-magary/src/lib/Form/switch/switch.ts","../../../projects/ng-magary/src/lib/Form/switch/switch.html","../../../projects/ng-magary/src/lib/Form/switch/switch.module.ts","../../../projects/ng-magary/src/lib/Form/select/select.ts","../../../projects/ng-magary/src/lib/Form/select/select.html","../../../projects/ng-magary/src/lib/Form/select/select.module.ts","../../../projects/ng-magary/src/lib/Form/radio/radio.ts","../../../projects/ng-magary/src/lib/Form/radio/radio.html","../../../projects/ng-magary/src/lib/Form/radio/radio-group.ts","../../../projects/ng-magary/src/lib/Form/radio/radio-group.html","../../../projects/ng-magary/src/lib/Form/radio/radio.module.ts","../../../projects/ng-magary/src/lib/Form/textarea/textarea.ts","../../../projects/ng-magary/src/lib/Form/textarea/textarea.html","../../../projects/ng-magary/src/lib/Form/textarea/textarea.module.ts","../../../projects/ng-magary/src/lib/Form/datepicker/datepicker.ts","../../../projects/ng-magary/src/lib/Form/datepicker/datepicker.html","../../../projects/ng-magary/src/lib/Form/datepicker/datepicker.module.ts","../../../projects/ng-magary/src/lib/Form/inputnumber/input-number.ts","../../../projects/ng-magary/src/lib/Form/inputnumber/input-number.html","../../../projects/ng-magary/src/lib/Form/slider/slider.ts","../../../projects/ng-magary/src/lib/Form/slider/slider.html","../../../projects/ng-magary/src/lib/Form/rating/rating.ts","../../../projects/ng-magary/src/lib/Form/rating/rating.html","../../../projects/ng-magary/src/lib/Media/image/image.ts","../../../projects/ng-magary/src/lib/Media/image/image.html","../../../projects/ng-magary/src/lib/Media/image/image.module.ts","../../../projects/ng-magary/src/lib/Media/galleria/galleria.ts","../../../projects/ng-magary/src/lib/Media/galleria/galleria.html","../../../projects/ng-magary/src/lib/Media/carousel/carousel.ts","../../../projects/ng-magary/src/lib/Media/carousel/carousel.component.html","../../../projects/ng-magary/src/lib/Menu/panelmenu/panelmenu.ts","../../../projects/ng-magary/src/lib/Menu/panelmenu/panelmenu.html","../../../projects/ng-magary/src/lib/Menu/panelmenu/panelmenu.module.ts","../../../projects/ng-magary/src/lib/Menu/sidebar/sidebar.ts","../../../projects/ng-magary/src/lib/Menu/sidebar/sidebar.html","../../../projects/ng-magary/src/lib/Menu/sidebar/sidebar.module.ts","../../../projects/ng-magary/src/lib/Menu/breadcrumb/breadcrumb.ts","../../../projects/ng-magary/src/lib/Menu/breadcrumb/breadcrumb.html","../../../projects/ng-magary/src/lib/Menu/steps/steps.ts","../../../projects/ng-magary/src/lib/Menu/steps/steps.html","../../../projects/ng-magary/src/lib/Menu/tieredmenu/tiered-menu.ts","../../../projects/ng-magary/src/lib/Menu/tieredmenu/tiered-menu.html","../../../projects/ng-magary/src/lib/Menu/contextmenu/context-menu.ts","../../../projects/ng-magary/src/lib/Menu/contextmenu/context-menu.html","../../../projects/ng-magary/src/lib/Menu/menubar/menubar.ts","../../../projects/ng-magary/src/lib/Menu/menubar/menubar.html","../../../projects/ng-magary/src/lib/Menu/megamenu/megamenu.ts","../../../projects/ng-magary/src/lib/Menu/megamenu/megamenu.html","../../../projects/ng-magary/src/lib/Menu/slidemenu/slidemenu.ts","../../../projects/ng-magary/src/lib/Menu/slidemenu/slidemenu.html","../../../projects/ng-magary/src/lib/Misc/toast/toast-item.ts","../../../projects/ng-magary/src/lib/Misc/toast/toast-item.html","../../../projects/ng-magary/src/lib/Misc/toast/toast.service.ts","../../../projects/ng-magary/src/lib/Misc/toast/toast.ts","../../../projects/ng-magary/src/lib/Misc/toast/toast.html","../../../projects/ng-magary/src/lib/Misc/toast/toast.module.ts","../../../projects/ng-magary/src/lib/Messages/message/message.ts","../../../projects/ng-magary/src/lib/Messages/message/message.html","../../../projects/ng-magary/src/lib/Messages/message/message.module.ts","../../../projects/ng-magary/src/lib/Misc/avatar/avatar.module.ts","../../../projects/ng-magary/src/lib/Misc/skeleton/skeleton.module.ts","../../../projects/ng-magary/src/lib/Misc/divider/divider.ts","../../../projects/ng-magary/src/lib/Misc/divider/divider.html","../../../projects/ng-magary/src/lib/Misc/tag/tag.ts","../../../projects/ng-magary/src/lib/Misc/tag/tag.html","../../../projects/ng-magary/src/lib/Overlay/tooltip/tooltip.ts","../../../projects/ng-magary/src/lib/Overlay/tooltip/tooltip.module.ts","../../../projects/ng-magary/src/lib/Overlay/dialog/dialog.ts","../../../projects/ng-magary/src/lib/Overlay/dialog/dialog.html","../../../projects/ng-magary/src/lib/Overlay/dialog/dialog.module.ts","../../../projects/ng-magary/src/lib/Overlay/overlaypanel/overlaypanel.ts","../../../projects/ng-magary/src/lib/Overlay/overlaypanel/overlaypanel.html","../../../projects/ng-magary/src/lib/Overlay/confirm-dialog/confirmation.service.ts","../../../projects/ng-magary/src/lib/Overlay/confirm-dialog/confirm-dialog.ts","../../../projects/ng-magary/src/lib/Overlay/confirm-dialog/confirm-dialog.html","../../../projects/ng-magary/src/lib/Overlay/confirm-dialog/confirm-dialog.module.ts","../../../projects/ng-magary/src/lib/Panel/card/card.ts","../../../projects/ng-magary/src/lib/Panel/card/card.html","../../../projects/ng-magary/src/lib/Panel/fieldset/fieldset.ts","../../../projects/ng-magary/src/lib/Panel/fieldset/fieldset.html","../../../projects/ng-magary/src/lib/Panel/tabs/tab/tab.ts","../../../projects/ng-magary/src/lib/Panel/tabs/tabs.ts","../../../projects/ng-magary/src/lib/Panel/tabs/tabs.html","../../../projects/ng-magary/src/lib/Panel/toolbar/toolbar.ts","../../../projects/ng-magary/src/lib/Panel/toolbar/toolbar.html","../../../projects/ng-magary/src/lib/Panel/accordion/accordion-tab.ts","../../../projects/ng-magary/src/lib/Panel/accordion/accordion-tab.html","../../../projects/ng-magary/src/lib/Panel/accordion/accordion.ts","../../../projects/ng-magary/src/lib/Panel/accordion/accordion.html","../../../projects/ng-magary/src/lib/Services/theme.service.ts","../../../projects/ng-magary/src/lib/Grid/grid/grid.ts","../../../projects/ng-magary/src/lib/Grid/grid/grid.html","../../../projects/ng-magary/src/lib/Grid/grid-item/grid-item.ts","../../../projects/ng-magary/src/lib/Grid/grid-item/grid-item.html","../../../projects/ng-magary/src/lib/ng-magary.ts","../../../projects/ng-magary/src/lib/version.ts","../../../projects/ng-magary/src/public-api.ts","../../../projects/ng-magary/src/ng-magary.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n EventEmitter,\r\n input,\r\n output,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\ntype ButtonSeverity =\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'info'\r\n | 'warning'\r\n | 'danger'\r\n | 'help';\r\ntype ButtonVariant = 'solid' | 'text' | 'outlined';\r\ntype ButtonSize = 'small' | 'normal' | 'large';\r\ntype IconPosition = 'left' | 'right';\r\ntype ShadowLevel = 0 | 1 | 2 | 3 | 4 | 5;\r\n@Component({\r\n selector: 'magary-button',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './button.html',\r\n styleUrl: './button.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryButton {\r\n readonly label = input<string>();\r\n readonly icon = input<string>();\r\n readonly shadow = input<ShadowLevel>(0);\r\n readonly rounded = input<boolean>(false);\r\n readonly customBackgroundColor = input<string>();\r\n readonly iconPos = input<IconPosition>('left');\r\n readonly severity = input<ButtonSeverity>();\r\n readonly iconSize = input<number>();\r\n readonly loading = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly variant = input<ButtonVariant>('solid');\r\n readonly size = input<ButtonSize>('normal');\r\n readonly ariaLabel = input<string>();\r\n readonly buttonClick = output<Event>();\r\n readonly isDisabled = computed(() => this.disabled() || this.loading());\r\n readonly buttonClasses = computed(() =>\r\n [\r\n 'p-button',\r\n `shadow-${this.shadow()}`,\r\n `p-button-${this.size()}`,\r\n this.severity() ? `p-button-${this.severity()}` : '',\r\n this.variant() === 'text' ? 'p-button-text' : '',\r\n this.variant() === 'outlined' ? 'p-button-outlined' : '',\r\n this.icon() && !this.label() ? 'p-button-icon-only' : '',\r\n this.icon() && this.label() && this.iconPos() === 'left'\r\n ? 'p-button-icon-left'\r\n : '',\r\n this.icon() && this.label() && this.iconPos() === 'right'\r\n ? 'p-button-icon-right'\r\n : '',\r\n this.loading() ? 'p-button-loading' : '',\r\n ].filter(Boolean),\r\n );\r\n readonly buttonStyles = computed(() => ({\r\n 'border-radius': this.rounded() ? '22px' : '8px',\r\n background: this.customBackgroundColor() || undefined,\r\n }));\r\n readonly effectiveAriaLabel = computed(\r\n () => this.ariaLabel() || this.label() || 'Button',\r\n );\r\n onButtonClick(event: Event): void {\r\n if (!this.isDisabled()) {\r\n this.buttonClick.emit(event);\r\n }\r\n }\r\n}\r\n","<button\r\n type=\"button\"\r\n [disabled]=\"isDisabled()\"\r\n [ngStyle]=\"buttonStyles()\"\r\n [ngClass]=\"buttonClasses()\"\r\n [attr.aria-label]=\"effectiveAriaLabel()\"\r\n [attr.aria-busy]=\"loading() ? 'true' : null\"\r\n [attr.aria-disabled]=\"isDisabled() ? 'true' : null\"\r\n (click)=\"onButtonClick($event)\"\r\n>\r\n @if (loading()) {\r\n <lucide-icon\r\n name=\"loader\"\r\n class=\"p-button-loading-icon spin\"\r\n aria-hidden=\"true\"\r\n [size]=\"iconSize()\"\r\n [style.width.px]=\"iconSize()\"\r\n ></lucide-icon>\r\n }\r\n @if (icon() && !loading() && iconPos() === \"left\") {\r\n <lucide-icon\r\n [name]=\"icon()\"\r\n class=\"p-button-icon\"\r\n [size]=\"iconSize()\"\r\n [style.width.px]=\"iconSize()\"\r\n ></lucide-icon>\r\n }\r\n @if (label()) {\r\n <span class=\"p-button-label\">{{ label() }}</span>\r\n } @else if (!icon()) {\r\n <span class=\"p-button-label\">&nbsp;</span>\r\n }\r\n @if (icon() && !loading() && iconPos() === \"right\") {\r\n <lucide-icon\r\n [name]=\"icon()\"\r\n class=\"p-button-icon\"\r\n [size]=\"iconSize()\"\r\n [style.width.px]=\"iconSize()\"\r\n ></lucide-icon>\r\n }\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryButton } from './button';\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, MagaryButton],\r\n exports: [MagaryButton],\r\n})\r\nexport class MagaryButtonModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n ElementRef,\r\n HostListener,\r\n ChangeDetectionStrategy,\r\n inject,\r\n} from '@angular/core';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { SpeedDialItem } from './speed-dial-item.interface';\r\ntype SpeedDialType = 'linear' | 'circle' | 'semicircle' | 'quartercircle';\r\ntype SpeedDialDirection =\r\n | 'up'\r\n | 'down'\r\n | 'left'\r\n | 'right'\r\n | 'up-left'\r\n | 'up-right'\r\n | 'down-left'\r\n | 'down-right';\r\n@Component({\r\n selector: 'magary-speed-dial',\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './speed-dial.html',\r\n styleUrl: './speed-dial.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagarySpeedDial {\r\n private readonly elementRef = inject(ElementRef);\r\n readonly items = input.required<SpeedDialItem[]>();\r\n readonly icon = input<string>('plus');\r\n readonly activeIcon = input<string>('x');\r\n readonly type = input<SpeedDialType>('linear');\r\n readonly direction = input<SpeedDialDirection>();\r\n readonly radius = input<number>(80);\r\n readonly showMask = input<boolean>(false);\r\n readonly background = input<string | null>(null);\r\n readonly ariaLabel = input<string>('Speed dial menu');\r\n readonly isOpen = signal(false);\r\n readonly speedDialToggle = output<boolean>();\r\n readonly itemSelect = output<{ item: SpeedDialItem; event: Event }>();\r\n readonly itemCount = computed(() => this.items().length);\r\n readonly containerClasses = computed(() =>\r\n [\r\n 'speed-dial-container',\r\n this.isOpen() ? 'is-open' : '',\r\n `type-${this.type()}`,\r\n this.direction() ? `direction-${this.direction()}` : '',\r\n ].filter(Boolean),\r\n );\r\n readonly triggerStyles = computed(() =>\r\n this.background() ? { '--trigger-bg': this.background() } : null,\r\n );\r\n readonly itemsStyles = computed(() => ({\r\n '--item-count': this.itemCount().toString(),\r\n '--radius': `${this.radius()}px`,\r\n }));\r\n readonly currentIcon = computed(() =>\r\n this.isOpen() ? this.activeIcon() : this.icon(),\r\n );\r\n toggleSpeedDial(event: Event): void {\r\n event.stopPropagation();\r\n const newState = !this.isOpen();\r\n this.isOpen.set(newState);\r\n this.speedDialToggle.emit(newState);\r\n }\r\n onItemClick(event: Event, item: SpeedDialItem): void {\r\n event.stopPropagation();\r\n if (item.disabled) {\r\n return;\r\n }\r\n this.itemSelect.emit({ item, event });\r\n if (item.command) {\r\n item.command(event);\r\n }\r\n this.isOpen.set(false);\r\n this.speedDialToggle.emit(false);\r\n }\r\n closeMask(): void {\r\n this.isOpen.set(false);\r\n this.speedDialToggle.emit(false);\r\n }\r\n trackByItem(index: number, item: SpeedDialItem): string {\r\n return item.id || `${item.icon}-${index}`;\r\n }\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: Event): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n const target = event.target as HTMLElement;\r\n const componentElement = this.elementRef.nativeElement;\r\n if (!componentElement.contains(target)) {\r\n this.isOpen.set(false);\r\n this.speedDialToggle.emit(false);\r\n }\r\n }\r\n @HostListener('document:keydown.escape')\r\n onEscapeKeydown(): void {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n this.speedDialToggle.emit(false);\r\n }\r\n }\r\n}\r\n","<div [ngClass]=\"containerClasses()\" [ngStyle]=\"triggerStyles()\">\r\n @if (showMask() && isOpen()) {\r\n <div class=\"speed-dial-mask\" (click)=\"closeMask()\" aria-hidden=\"true\"></div>\r\n }\r\n <ul\r\n class=\"speed-dial-items\"\r\n [attr.data-direction]=\"direction()\"\r\n [ngStyle]=\"itemsStyles()\"\r\n role=\"menu\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n >\r\n @for (item of items(); track trackByItem($index, item)) {\r\n <li\r\n [style.--i]=\"$index\"\r\n [style.--radius.px]=\"radius()\"\r\n [style.transition-delay]=\"isOpen() ? $index * 50 + 'ms' : '0ms'\"\r\n [class]=\"'item-' + type()\"\r\n role=\"presentation\"\r\n >\r\n @if (item.tooltip) {\r\n <div\r\n class=\"action-tooltip\"\r\n role=\"tooltip\"\r\n [attr.id]=\"'tooltip-' + $index\"\r\n >\r\n {{ item.tooltip }}\r\n </div>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"action-button\"\r\n role=\"menuitem\"\r\n [disabled]=\"item.disabled\"\r\n [attr.aria-label]=\"\r\n item.ariaLabel || item.tooltip || 'Speed dial action'\r\n \"\r\n [attr.aria-describedby]=\"item.tooltip ? 'tooltip-' + $index : null\"\r\n [style.background-color]=\"item.backgroundColor\"\r\n (click)=\"onItemClick($event, item)\"\r\n >\r\n <lucide-icon [name]=\"item.icon\" aria-hidden=\"true\"></lucide-icon>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n <button\r\n type=\"button\"\r\n class=\"trigger-button\"\r\n [attr.aria-label]=\"ariaLabel() + (isOpen() ? ' - Cerrar' : ' - Abrir')\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-haspopup]=\"'menu'\"\r\n (click)=\"toggleSpeedDial($event)\"\r\n >\r\n <lucide-icon [name]=\"currentIcon()\" aria-hidden=\"true\"></lucide-icon>\r\n </button>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagarySpeedDial } from './speed-dial';\r\n@NgModule({\r\n imports: [CommonModule, MagarySpeedDial],\r\n exports: [MagarySpeedDial],\r\n})\r\nexport class MagarySpeedDialModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MenuItem } from '../../Menu/api/menu.interface'; // Use api interface\r\n\r\n@Component({\r\n selector: 'magary-split-button',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './split-button.html',\r\n styleUrl: './split-button.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagarySplitButton {\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n readonly label = input<string>('Save');\r\n readonly icon = input<string>();\r\n readonly iconSize = input<number>(18);\r\n readonly model = input<MenuItem[]>([]); // Items for the dropdown\r\n readonly disabled = input<boolean>(false);\r\n readonly styleClass = input<string>('');\r\n\r\n // Events\r\n readonly onClick = output<MouseEvent>();\r\n readonly onDropdownClick = output<MouseEvent>();\r\n\r\n readonly isOpen = signal(false);\r\n\r\n toggleDropdown(event: MouseEvent): void {\r\n if (this.disabled()) return;\r\n event.stopPropagation();\r\n this.isOpen.update((v) => !v);\r\n this.onDropdownClick.emit(event);\r\n }\r\n\r\n onDefaultClick(event: MouseEvent): void {\r\n if (this.disabled()) return;\r\n this.onClick.emit(event);\r\n }\r\n\r\n onItemClick(event: MouseEvent, item: MenuItem): void {\r\n if (item.disabled) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n\r\n // Execute command if exists\r\n if (item.command) {\r\n item.command({ originalEvent: event, item: item });\r\n }\r\n\r\n // Close dropdown\r\n this.isOpen.set(false);\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: Event): void {\r\n if (\r\n this.isOpen() &&\r\n !this.elementRef.nativeElement.contains(event.target)\r\n ) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscape(): void {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","<div\r\n [class]=\"\r\n 'magary-split-button ' + styleClass() + (disabled() ? ' disabled' : '')\r\n \"\r\n>\r\n <button\r\n type=\"button\"\r\n class=\"default-button\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"onDefaultClick($event)\"\r\n >\r\n @if (icon()) {\r\n <lucide-icon\r\n [name]=\"icon()\"\r\n [size]=\"iconSize()\"\r\n class=\"button-icon\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"button-label\">{{ label() }}</span>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-trigger\"\r\n [disabled]=\"disabled()\"\r\n [class.active]=\"isOpen()\"\r\n (click)=\"toggleDropdown($event)\"\r\n >\r\n <lucide-icon name=\"chevron-down\"></lucide-icon>\r\n </button>\r\n\r\n @if (isOpen()) {\r\n <div class=\"split-button-menu\">\r\n <ul role=\"menu\">\r\n @for (item of model(); track item.label || $index) {\r\n <li\r\n role=\"menuitem\"\r\n [class.disabled]=\"item.disabled\"\r\n (click)=\"onItemClick($event, item)\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n [size]=\"iconSize()\"\r\n class=\"menu-item-icon\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"menu-item-label\">{{ item.label }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n computed,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nexport type AvatarShape = 'circle' | 'square';\r\nexport type AvatarSize = 'xsmall' | 'small' | 'normal' | 'large' | 'xlarge';\r\nexport type BadgeSeverity = 'info' | 'success' | 'warning' | 'danger';\r\nexport interface AvatarClickEvent {\r\n type: 'avatar' | 'badge';\r\n data?: any;\r\n}\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n@Component({\r\n selector: 'magary-avatar',\r\n imports: [CommonModule, NgOptimizedImage, LucideAngularModule],\r\n templateUrl: './avatar.html',\r\n styleUrl: './avatar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryAvatar {\r\n public label = input<string>();\r\n public image = input<string>();\r\n public icon = input<string>();\r\n public shape = input<AvatarShape>('square');\r\n public size = input<AvatarSize>('normal');\r\n\r\n public sizePixels = computed(() => {\r\n switch (this.size()) {\r\n case 'xsmall':\r\n return 24;\r\n case 'small':\r\n return 28;\r\n case 'large':\r\n return 48;\r\n case 'xlarge':\r\n return 64;\r\n default:\r\n return 32; // normal\r\n }\r\n });\r\n public badgeValue = input<string | number>();\r\n public badgeSeverity = input<BadgeSeverity>('danger');\r\n public customStyle = input<Record<string, any>>();\r\n public alt = input<string>('Avatar');\r\n public clickable = input<boolean>(false);\r\n public loading = input<boolean>(false);\r\n public disabled = input<boolean>(false);\r\n public avatarClick = output<AvatarClickEvent>();\r\n public imageError = signal<boolean>(false);\r\n public displayLabel = computed(() => {\r\n const label = this.label();\r\n if (!label) return '';\r\n if (label.includes(' ')) {\r\n return label\r\n .split(' ')\r\n .map((word) => word.charAt(0))\r\n .join('')\r\n .toUpperCase()\r\n .slice(0, 2);\r\n }\r\n return label.toUpperCase().slice(0, 2);\r\n });\r\n public avatarClasses = computed(() => ({\r\n [this.size()]: true,\r\n [this.shape()]: true,\r\n clickable: this.clickable(),\r\n loading: this.loading(),\r\n disabled: this.disabled(),\r\n 'has-image': !!this.image() && !this.imageError(),\r\n 'has-icon': !this.image() && !!this.icon(),\r\n 'has-label': !this.image() && !this.icon() && !!this.label(),\r\n }));\r\n public shouldShowImage = computed(() => {\r\n return this.image() && !this.imageError();\r\n });\r\n public shouldShowIcon = computed(() => {\r\n return !this.shouldShowImage() && !!this.icon();\r\n });\r\n public shouldShowLabel = computed(() => {\r\n return (\r\n !this.shouldShowImage() && !this.shouldShowIcon() && !!this.displayLabel()\r\n );\r\n });\r\n onImageError(): void {\r\n this.imageError.set(true);\r\n }\r\n onImageLoad(): void {\r\n this.imageError.set(false);\r\n }\r\n onAvatarClick(): void {\r\n if (this.disabled() || this.loading()) return;\r\n this.avatarClick.emit({\r\n type: 'avatar',\r\n data: {\r\n label: this.label(),\r\n image: this.image(),\r\n icon: this.icon(),\r\n },\r\n });\r\n }\r\n onBadgeClick(event: Event): void {\r\n if (this.disabled() || this.loading()) return;\r\n event.stopPropagation();\r\n this.avatarClick.emit({\r\n type: 'badge',\r\n data: {\r\n value: this.badgeValue(),\r\n severity: this.badgeSeverity(),\r\n },\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"avatar-wrapper\"\r\n [ngClass]=\"avatarClasses()\"\r\n [ngStyle]=\"customStyle()\"\r\n [attr.aria-label]=\"alt()\"\r\n [attr.role]=\"clickable() ? 'button' : null\"\r\n [attr.tabindex]=\"clickable() && !disabled() ? '0' : null\"\r\n (click)=\"clickable() && onAvatarClick()\"\r\n (keydown.enter)=\"clickable() && onAvatarClick()\"\r\n (keydown.space)=\"clickable() && onAvatarClick()\"\r\n>\r\n @if (loading()) {\r\n <div class=\"avatar-loading\">\r\n <lucide-icon name=\"loader\" class=\"spin\"></lucide-icon>\r\n </div>\r\n } @else {\r\n @if (shouldShowImage()) {\r\n <img\r\n [ngSrc]=\"image() || ''\"\r\n [alt]=\"alt()\"\r\n class=\"avatar-img\"\r\n [ngClass]=\"shape()\"\r\n [width]=\"sizePixels()\"\r\n [height]=\"sizePixels()\"\r\n (error)=\"onImageError()\"\r\n (load)=\"onImageLoad()\"\r\n />\r\n }\r\n @if (shouldShowIcon()) {\r\n <lucide-icon [name]=\"icon() || 'user'\" class=\"avatar-icon\"></lucide-icon>\r\n }\r\n @if (shouldShowLabel()) {\r\n <span class=\"avatar-label\">{{ displayLabel() }}</span>\r\n }\r\n }\r\n @if (badgeValue()) {\r\n <div\r\n class=\"badge\"\r\n [ngClass]=\"badgeSeverity()\"\r\n [attr.aria-label]=\"'Badge: ' + badgeValue()\"\r\n (click)=\"onBadgeClick($event)\"\r\n >\r\n {{ badgeValue() }}\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n model,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\nexport type InputType =\r\n | 'text'\r\n | 'email'\r\n | 'password'\r\n | 'number'\r\n | 'tel'\r\n | 'url'\r\n | 'search';\r\n\r\nexport type InputSize = 'small' | 'normal' | 'large';\r\n\r\nexport type InputVariant = 'filled' | 'outlined' | 'underlined';\r\n\r\n@Component({\r\n selector: 'magary-input',\r\n imports: [CommonModule, FormsModule, LucideAngularModule],\r\n templateUrl: './input.html',\r\n styleUrl: './input.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryInput {\r\n value = model<string>('');\r\n placeholder = input<string>('');\r\n type = input<InputType>('text');\r\n size = input<InputSize>('normal');\r\n variant = input<InputVariant>('outlined');\r\n\r\n disabled = input<boolean>(false);\r\n readonly = input<boolean>(false);\r\n required = input<boolean>(false);\r\n loading = input<boolean>(false);\r\n\r\n error = input<string>('');\r\n success = input<boolean>(false);\r\n\r\n label = input<string>('');\r\n helpText = input<string>('');\r\n\r\n prefixIcon = input<string>('');\r\n suffixIcon = input<string>('');\r\n\r\n width = input<string>('100%');\r\n maxLength = input<number | undefined>(undefined);\r\n\r\n inputFocus = output<Event>();\r\n inputBlur = output<Event>();\r\n iconClick = output<'prefix' | 'suffix'>();\r\n\r\n private _internalError = signal<string>('');\r\n\r\n effectiveError = computed(() => this.error() || this._internalError());\r\n\r\n private focused = signal(false);\r\n\r\n // Use linkedSignal to reset password visibility when type changes\r\n private showPassword = linkedSignal({\r\n source: this.type,\r\n computation: () => false,\r\n });\r\n\r\n private readonly uniqueId = `magary-input-${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n inputClasses = computed(() => {\r\n const classes = ['magary-input-field'];\r\n classes.push(`input-${this.variant()}`);\r\n classes.push(`input-${this.size()}`);\r\n\r\n if (this.disabled()) classes.push('input-disabled');\r\n if (this.readonly()) classes.push('input-readonly');\r\n if (this.effectiveError()) classes.push('input-error');\r\n if (this.success()) classes.push('input-success');\r\n if (this.focused()) classes.push('input-focused');\r\n if (this.loading()) classes.push('input-loading');\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n containerClasses = computed(() => {\r\n const classes = ['magary-input-container'];\r\n if (this.label()) classes.push('has-label');\r\n if (this.prefixIcon()) classes.push('has-prefix');\r\n if (this.suffixIcon() || this.type() === 'password')\r\n classes.push('has-suffix');\r\n return classes.join(' ');\r\n });\r\n\r\n inputStyles = computed(() => ({\r\n width: this.width(),\r\n }));\r\n\r\n actualType = computed(() => {\r\n if (this.type() === 'password') {\r\n return this.showPassword() ? 'text' : 'password';\r\n }\r\n return this.type();\r\n });\r\n\r\n passwordIcon = computed(() => {\r\n return this.showPassword() ? 'eye-off' : 'eye';\r\n });\r\n\r\n onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.value.set(target.value);\r\n\r\n if (this._internalError()) {\r\n this._internalError.set('');\r\n }\r\n }\r\n\r\n onFocus(event: Event): void {\r\n this.focused.set(true);\r\n this.inputFocus.emit(event);\r\n }\r\n\r\n onBlur(event: Event): void {\r\n this.focused.set(false);\r\n this.validateEmail();\r\n this.inputBlur.emit(event);\r\n }\r\n\r\n private validateEmail(): void {\r\n if (this.type() === 'email' && this.value()) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(this.value())) {\r\n this._internalError.set('Email inválido');\r\n }\r\n }\r\n }\r\n\r\n onPrefixIconClick(): void {\r\n if (!this.disabled()) {\r\n this.iconClick.emit('prefix');\r\n }\r\n }\r\n\r\n onSuffixIconClick(): void {\r\n if (!this.disabled()) {\r\n this.iconClick.emit('suffix');\r\n }\r\n }\r\n\r\n togglePasswordVisibility(): void {\r\n if (this.type() === 'password') {\r\n this.showPassword.set(!this.showPassword());\r\n }\r\n }\r\n\r\n getId(): string {\r\n return this.uniqueId;\r\n }\r\n}\r\n","<div [ngClass]=\"containerClasses()\" [ngStyle]=\"inputStyles()\">\r\n @if (label()) {\r\n <label [for]=\"getId()\" class=\"input-label\">\r\n {{ label() }}\r\n @if (required()) {\r\n <span class=\"required-asterisk\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <div class=\"input-wrapper\">\r\n @if (prefixIcon()) {\r\n <lucide-icon\r\n [name]=\"prefixIcon()\"\r\n class=\"prefix-icon\"\r\n (click)=\"onPrefixIconClick()\"\r\n [class.clickable]=\"!disabled()\"\r\n ></lucide-icon>\r\n }\r\n\r\n <input\r\n [id]=\"getId()\"\r\n [ngClass]=\"inputClasses()\"\r\n [type]=\"actualType()\"\r\n [value]=\"value()\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [required]=\"required()\"\r\n attr.maxlength=\"{{ maxLength() }}\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n />\r\n\r\n @if (loading()) {\r\n <lucide-icon\r\n name=\"loader\"\r\n class=\"suffix-icon loading-icon spin\"\r\n ></lucide-icon>\r\n } @else if (type() === \"password\") {\r\n <lucide-icon\r\n [name]=\"passwordIcon()\"\r\n class=\"suffix-icon password-toggle\"\r\n (click)=\"togglePasswordVisibility()\"\r\n ></lucide-icon>\r\n } @else if (suffixIcon()) {\r\n <lucide-icon\r\n [name]=\"suffixIcon()\"\r\n class=\"suffix-icon\"\r\n (click)=\"onSuffixIconClick()\"\r\n [class.clickable]=\"!disabled()\"\r\n ></lucide-icon>\r\n }\r\n </div>\r\n\r\n @if (effectiveError() || helpText()) {\r\n <div class=\"input-message\">\r\n @if (effectiveError()) {\r\n <span class=\"error-message\">\r\n <lucide-icon name=\"circle-alert\" [size]=\"16\"></lucide-icon>\r\n {{ effectiveError() }}\r\n </span>\r\n } @else if (helpText()) {\r\n <span class=\"help-message\">{{ helpText() }}</span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'magary-skeleton',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './skeleton.html',\r\n styleUrls: ['./skeleton.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[style.width]': 'styles().width',\r\n '[style.height]': 'styles().height',\r\n '[style.border-radius]': 'styles()[\"border-radius\"]',\r\n '[class.skeleton-circle]': 'shape() === \"circle\"',\r\n '[class.skeleton-rectangle]': 'shape() === \"rectangle\"',\r\n '[class.skeleton-animation-shimmer]': 'animation() === \"shimmer\"',\r\n '[class.skeleton-animation-none]': 'animation() === \"none\"',\r\n '[class]': 'styleClass()',\r\n },\r\n})\r\nexport class MagarySkeleton {\r\n shape = input<'rectangle' | 'circle'>('rectangle');\r\n size = input<string | null>(null);\r\n width = input<string>('100%');\r\n height = input<string>('1rem');\r\n borderRadius = input<string>('4px');\r\n animation = input<'shimmer' | 'none'>('shimmer');\r\n styleClass = input<string>('');\r\n\r\n readonly styles = computed(() => {\r\n const sizeVal = this.size();\r\n if (sizeVal) {\r\n return {\r\n width: sizeVal,\r\n height: sizeVal,\r\n 'border-radius':\r\n this.shape() === 'circle' ? '50%' : this.borderRadius(),\r\n };\r\n }\r\n\r\n return {\r\n width: this.width(),\r\n height: this.height(),\r\n 'border-radius': this.shape() === 'circle' ? '50%' : this.borderRadius(),\r\n };\r\n });\r\n}\r\n","","import {\r\n Component,\r\n output,\r\n input,\r\n signal,\r\n computed,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nexport interface PaginatorState {\r\n page: number;\r\n first: number;\r\n rows: number;\r\n pageCount: number;\r\n}\r\n\r\n/**\r\n * MagaryPaginator\r\n *\r\n * A component to handle data pagination.\r\n *\r\n * @example\r\n * <magary-paginator [rows]=\"10\" [totalRecords]=\"100\" (onPageChange)=\"paginate($event)\"></magary-paginator>\r\n */\r\n@Component({\r\n selector: 'magary-paginator',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './paginator.html',\r\n styleUrls: ['./paginator.scss'],\r\n})\r\nexport class MagaryPaginator implements OnChanges {\r\n /** Total number of records. */\r\n totalRecords = input.required<number>();\r\n\r\n /** Number of rows to display per page. */\r\n rows = input<number>(10);\r\n\r\n /** Index of the first record to display. */\r\n first = input<number>(0);\r\n\r\n /** Array of integers representing available options for rows per page. */\r\n rowsPerPageOptions = input<number[]>([]);\r\n\r\n /** Whether to show page links. */\r\n showPageLinks = input<boolean>(true);\r\n\r\n /** Number of page links to display. */\r\n pageLinkSize = input<number>(5);\r\n\r\n /** Event triggered when page changes. */\r\n onPageChange = output<PaginatorState>();\r\n\r\n /** Current page index (0-based). */\r\n getPage = computed(() => Math.floor(this.first() / this.rows()));\r\n\r\n /** Total number of pages. */\r\n getPageCount = computed(\r\n () => Math.ceil(this.totalRecords() / this.rows()) || 1,\r\n );\r\n\r\n /** Whether the first page is currently active. */\r\n isFirstPage = computed(() => this.getPage() === 0);\r\n\r\n /** Whether the last page is currently active. */\r\n isLastPage = computed(() => this.getPage() === this.getPageCount() - 1);\r\n\r\n /** Calculate page links. */\r\n getPageLinks = computed(() => {\r\n const pageCount = this.getPageCount();\r\n const page = this.getPage();\r\n const visiblePages = Math.min(this.pageLinkSize(), pageCount);\r\n\r\n let start = Math.max(0, Math.ceil(page - visiblePages / 2));\r\n let end = Math.min(pageCount - 1, start + visiblePages - 1);\r\n\r\n const delta = visiblePages - (end - start + 1);\r\n start = Math.max(0, start - delta);\r\n\r\n const pages = [];\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i + 1);\r\n }\r\n return pages;\r\n });\r\n\r\n changePage(p: number) {\r\n const pc = this.getPageCount();\r\n\r\n if (p >= 0 && p < pc) {\r\n const newFirst = this.rows() * p;\r\n const state: PaginatorState = {\r\n page: p,\r\n first: newFirst,\r\n rows: this.rows(),\r\n pageCount: pc,\r\n };\r\n this.onPageChange.emit(state);\r\n }\r\n }\r\n\r\n changePageToFirst(event: Event) {\r\n event.preventDefault();\r\n if (!this.isFirstPage()) {\r\n this.changePage(0);\r\n }\r\n }\r\n\r\n changePageToPrev(event: Event) {\r\n event.preventDefault();\r\n if (!this.isFirstPage()) {\r\n this.changePage(this.getPage() - 1);\r\n }\r\n }\r\n\r\n changePageToNext(event: Event) {\r\n event.preventDefault();\r\n if (!this.isLastPage()) {\r\n this.changePage(this.getPage() + 1);\r\n }\r\n }\r\n\r\n changePageToLast(event: Event) {\r\n event.preventDefault();\r\n if (!this.isLastPage()) {\r\n this.changePage(this.getPageCount() - 1);\r\n }\r\n }\r\n\r\n onRppChange(event: any) {\r\n // We cannot mutate the input 'rows' directly.\r\n // The parent must handle the state change for 'rows' if it's dynamic,\r\n // or we emit an event.\r\n // However, PaginatorState typically includes rows.\r\n // Let's assume onPageChange handles it.\r\n // But wait, the standard Paginator pattern usually updates rows.\r\n // Since 'rows' is now a signal input, we can't write to it.\r\n // We will emit the change with page 0.\r\n\r\n const newRows = Number(event.target.value);\r\n const state: PaginatorState = {\r\n page: 0,\r\n first: 0,\r\n rows: newRows,\r\n pageCount: Math.ceil(this.totalRecords() / newRows) || 1,\r\n };\r\n this.onPageChange.emit(state);\r\n }\r\n\r\n onPageLinkClick(event: Event, page: number) {\r\n event.preventDefault();\r\n this.changePage(page - 1); // 0-based\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['totalRecords']) {\r\n // Re-validate first index if total records change\r\n // Signal inputs don't trigger ngOnChanges for themselves if accessed as signals, but standard OnChanges works if using attributes?\r\n // Actually, with signal inputs, we should use effect().\r\n }\r\n }\r\n\r\n constructor() {\r\n // Effect to validate first index\r\n // effect(() => {\r\n // const total = this.totalRecords();\r\n // const rows = this.rows();\r\n // const first = this.first();\r\n // if (first >= total && total > 0) {\r\n // // We cannot emit inside effect easily without causing loops if we are not careful\r\n // // logic to adjust page should be on consumer?\r\n // }\r\n // });\r\n }\r\n}\r\n","<div class=\"magary-paginator\" [class.hidden]=\"totalRecords() === 0\">\r\n <div class=\"magary-paginator-left-content\">\r\n <!-- Optional content projection for left side -->\r\n <ng-content select=\".left-content\"></ng-content>\r\n </div>\r\n\r\n <div class=\"magary-paginator-pages\">\r\n <button\r\n type=\"button\"\r\n class=\"magary-paginator-element magary-paginator-first\"\r\n (click)=\"changePageToFirst($event)\"\r\n [disabled]=\"isFirstPage()\"\r\n [attr.aria-label]=\"'First Page'\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"11 17 6 12 11 7\"></polyline>\r\n <polyline points=\"18 17 13 12 18 7\"></polyline>\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"magary-paginator-element magary-paginator-prev\"\r\n (click)=\"changePageToPrev($event)\"\r\n [disabled]=\"isFirstPage()\"\r\n [attr.aria-label]=\"'Previous Page'\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"15 18 9 12 15 6\"></polyline>\r\n </svg>\r\n </button>\r\n\r\n @if (showPageLinks()) {\r\n <span class=\"magary-paginator-pages-container\">\r\n @for (pageLink of getPageLinks(); track pageLink) {\r\n <button\r\n type=\"button\"\r\n class=\"magary-paginator-page magary-paginator-element\"\r\n [class.magary-paginator-page-active]=\"pageLink - 1 === getPage()\"\r\n (click)=\"onPageLinkClick($event, pageLink)\"\r\n >\r\n {{ pageLink }}\r\n </button>\r\n }\r\n </span>\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"magary-paginator-element magary-paginator-next\"\r\n (click)=\"changePageToNext($event)\"\r\n [disabled]=\"isLastPage()\"\r\n [attr.aria-label]=\"'Next Page'\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"9 18 15 12 9 6\"></polyline>\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"magary-paginator-element magary-paginator-last\"\r\n (click)=\"changePageToLast($event)\"\r\n [disabled]=\"isLastPage()\"\r\n [attr.aria-label]=\"'Last Page'\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"13 17 18 12 13 7\"></polyline>\r\n <polyline points=\"6 17 11 12 6 7\"></polyline>\r\n </svg>\r\n </button>\r\n\r\n @if (rowsPerPageOptions().length > 0) {\r\n <div class=\"magary-paginator-rpp-options\">\r\n <select\r\n [ngModel]=\"rows()\"\r\n (change)=\"onRppChange($event)\"\r\n class=\"magary-paginator-rpp-dropdown\"\r\n >\r\n @for (opt of rowsPerPageOptions(); track opt) {\r\n <option [value]=\"opt\">{{ opt }} / page</option>\r\n }\r\n </select>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"magary-paginator-right-content\">\r\n <!-- Optional content projection for right side -->\r\n <ng-content select=\".right-content\"></ng-content>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n output,\r\n input,\r\n signal,\r\n computed,\r\n effect,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MagaryAvatar } from '../../Misc/avatar/avatar';\r\nimport { MagaryInput } from '../../Form/input/input';\r\nimport { MagarySkeleton } from '../../Misc/skeleton/skeleton';\r\n// Import MagaryPaginator\r\nimport {\r\n MagaryPaginator,\r\n PaginatorState,\r\n} from '../../Data/paginator/paginator';\r\n\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nexport interface MagaryTableColumn {\r\n field: string;\r\n header: string;\r\n type?: 'text' | 'avatar' | 'badge' | 'date' | 'currency';\r\n sortable?: boolean;\r\n width?: string;\r\n}\r\n@Component({\r\n selector: 'magary-table',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MagaryAvatar,\r\n MagaryInput,\r\n MagarySkeleton,\r\n LucideAngularModule,\r\n MagaryPaginator, // Add to imports\r\n ],\r\n templateUrl: './table.html',\r\n styleUrls: ['./table.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryTable {\r\n // Inputs as Signals\r\n value = input<any[]>([]);\r\n columns = input<MagaryTableColumn[]>([]);\r\n paginator = input<boolean>(false);\r\n rows = input<number>(5);\r\n globalFilterFields = input<string[]>([]);\r\n title = input<string>('');\r\n loading = input<boolean>(false);\r\n responsiveLayout = input<boolean>(true);\r\n\r\n // New input for Paginator options\r\n rowsPerPageOptions = input<number[]>([]);\r\n\r\n onPageChange = output<any>();\r\n\r\n // Internal State\r\n first = signal<number>(0);\r\n searchTerm = signal<string>('');\r\n\r\n // Track specific rows state if it changes via paginator\r\n currentRows = signal<number>(5);\r\n\r\n // Computed State\r\n processedData = computed(() => {\r\n let data = [...(this.value() || [])];\r\n const term = this.searchTerm().toLowerCase();\r\n const filterFields = this.globalFilterFields();\r\n\r\n if (term && filterFields.length > 0) {\r\n data = data.filter((item) => {\r\n return filterFields.some((field) => {\r\n const val = this.resolveFieldData(item, field);\r\n return String(val).toLowerCase().includes(term);\r\n });\r\n });\r\n }\r\n return data;\r\n });\r\n\r\n totalRecords = computed(() => this.processedData().length);\r\n\r\n paginatedData = computed(() => {\r\n const data = this.processedData();\r\n if (this.paginator()) {\r\n const start = this.first();\r\n const end = start + this.currentRows();\r\n return data.slice(start, end);\r\n } else {\r\n return data;\r\n }\r\n });\r\n\r\n constructor() {\r\n // Reset pagination when filter changes\r\n effect(\r\n () => {\r\n // Dependency tracking\r\n this.searchTerm();\r\n // Action\r\n this.first.set(0);\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n\r\n // Sync initial rows input with internal state\r\n effect(\r\n () => {\r\n this.currentRows.set(this.rows());\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n }\r\n\r\n onSearch(value: string) {\r\n this.searchTerm.set(value);\r\n }\r\n\r\n // Handle event from MagaryPaginator\r\n onPaginatorChange(event: PaginatorState) {\r\n this.first.set(event.first);\r\n this.currentRows.set(event.rows);\r\n\r\n this.onPageChange.emit(event);\r\n }\r\n\r\n resolveFieldData(data: any, field: string): any {\r\n if (data && field) {\r\n if (field.indexOf('.') == -1) {\r\n return data[field];\r\n } else {\r\n let fields: string[] = field.split('.');\r\n let value = data;\r\n for (let i = 0, len = fields.length; i < len; ++i) {\r\n if (value == null) {\r\n return null;\r\n }\r\n value = value[fields[i]];\r\n }\r\n return value;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getAvatarLabel(row: any): string {\r\n const val = this.resolveFieldData(row, 'name');\r\n return val ? String(val).slice(0, 1).toUpperCase() : '';\r\n }\r\n}\r\n","<div\r\n class=\"magary-table-container\"\r\n [class.responsive-layout]=\"responsiveLayout()\"\r\n>\r\n <!-- Header / Toolbar -->\r\n @if (title() || globalFilterFields().length > 0) {\r\n <div class=\"magary-table-header\">\r\n @if (title()) {\r\n <div class=\"table-title\">\r\n {{ title() }}\r\n </div>\r\n }\r\n <div class=\"table-actions\">\r\n @if (globalFilterFields().length > 0) {\r\n <div class=\"search-wrapper\">\r\n <magary-input\r\n placeholder=\"Search...\"\r\n prefixIcon=\"search\"\r\n (valueChange)=\"onSearch($event)\"\r\n width=\"250px\"\r\n size=\"small\"\r\n >\r\n </magary-input>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Table Wrapper -->\r\n <div class=\"table-scroll-wrapper\">\r\n <table class=\"magary-table\">\r\n <thead>\r\n <tr>\r\n @for (col of columns(); track col.field) {\r\n <th [style.width]=\"col.width\">\r\n {{ col.header }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- Data Rows -->\r\n @for (row of paginatedData(); track row) {\r\n <tr class=\"table-row\">\r\n @for (col of columns(); track col.field) {\r\n <td [attr.data-label]=\"col.header\">\r\n <!-- Content Switch -->\r\n @switch (col.type) {\r\n @case (\"avatar\") {\r\n <magary-avatar\r\n [image]=\"resolveFieldData(row, col.field)\"\r\n [label]=\"\r\n !resolveFieldData(row, col.field)\r\n ? getAvatarLabel(row)\r\n : ''\r\n \"\r\n shape=\"circle\"\r\n size=\"normal\"\r\n >\r\n </magary-avatar>\r\n }\r\n @case (\"badge\") {\r\n <span\r\n class=\"magary-badge\"\r\n [ngClass]=\"\r\n 'status-' +\r\n resolveFieldData(row, col.field)?.toLowerCase()\r\n \"\r\n >\r\n {{ resolveFieldData(row, col.field) }}\r\n </span>\r\n }\r\n @case (\"currency\") {\r\n {{ resolveFieldData(row, col.field) | currency }}\r\n }\r\n @case (\"date\") {\r\n {{ resolveFieldData(row, col.field) | date }}\r\n }\r\n @default {\r\n {{ resolveFieldData(row, col.field) }}\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n\r\n <!-- Skeleton Rows -->\r\n @if (loading()) {\r\n @for (i of [1, 2, 3, 4, 5]; track i) {\r\n <tr class=\"table-row skeleton-row\">\r\n @for (col of columns(); track col.field) {\r\n <td>\r\n <magary-skeleton\r\n width=\"100%\"\r\n height=\"1.5rem\"\r\n ></magary-skeleton>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }\r\n\r\n <!-- Empty State -->\r\n @if (paginatedData().length === 0 && !loading()) {\r\n <tr class=\"empty-row\">\r\n <td [attr.colspan]=\"columns().length\">\r\n <div class=\"empty-state\">\r\n <lucide-icon name=\"inbox\" [size]=\"48\"></lucide-icon>\r\n <p>No records found</p>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Paginator -->\r\n @if (paginator()) {\r\n <div class=\"magary-table-paginator-wrapper\">\r\n <magary-paginator\r\n [first]=\"first()\"\r\n [rows]=\"currentRows()\"\r\n [totalRecords]=\"totalRecords()\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\r\n (onPageChange)=\"onPaginatorChange($event)\"\r\n >\r\n </magary-paginator>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryTable } from './table';\r\n\r\n@NgModule({\r\n imports: [MagaryTable],\r\n exports: [MagaryTable],\r\n})\r\nexport class MagaryTableModule {}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n computed,\r\n forwardRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { DragDropModule, CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { MagaryTreeNode } from './tree-node.interface';\r\n\r\n@Component({\r\n selector: 'magary-uitree-node',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n LucideAngularModule,\r\n DragDropModule,\r\n forwardRef(() => MagaryUITreeNode),\r\n ],\r\n template: `\r\n <li\r\n class=\"magary-treenode\"\r\n [ngClass]=\"node().styleClass || ''\"\r\n cdkDrag\r\n [cdkDragData]=\"node()\"\r\n [cdkDragDisabled]=\"!draggable()\"\r\n >\r\n <div class=\"magary-tree-custom-placeholder\" *cdkDragPlaceholder></div>\r\n <div\r\n class=\"magary-treenode-content\"\r\n [class.magary-treenode-selectable]=\"selectionMode() !== null\"\r\n [class.magary-treenode-selected]=\"isSelected()\"\r\n (click)=\"onNodeClick($event)\"\r\n >\r\n <!-- Toggler -->\r\n <button\r\n type=\"button\"\r\n class=\"magary-tree-toggler\"\r\n [class.expanded]=\"isExpanded\"\r\n (click)=\"toggle($event)\"\r\n *ngIf=\"!isLeaf\"\r\n >\r\n <lucide-icon name=\"chevron-right\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n <span class=\"magary-tree-toggler-placeholder\" *ngIf=\"isLeaf\"></span>\r\n\r\n <!-- Checkbox (if mode is checkbox) -->\r\n <div\r\n class=\"magary-treenode-checkbox\"\r\n *ngIf=\"selectionMode() === 'checkbox'\"\r\n (click)=\"onCheckboxClick($event)\"\r\n >\r\n <div\r\n class=\"magary-checkbox-box\"\r\n [class.highlight]=\"isSelected() || node().partialSelected\"\r\n >\r\n <lucide-icon\r\n name=\"check\"\r\n [size]=\"12\"\r\n *ngIf=\"isSelected()\"\r\n ></lucide-icon>\r\n <lucide-icon\r\n name=\"minus\"\r\n [size]=\"12\"\r\n *ngIf=\"node().partialSelected && !isSelected()\"\r\n ></lucide-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- Icon -->\r\n <span\r\n class=\"magary-treenode-icon\"\r\n *ngIf=\"node().icon || node().expandedIcon || node().collapsedIcon\"\r\n >\r\n <lucide-icon [name]=\"getIcon()\" [size]=\"16\"></lucide-icon>\r\n </span>\r\n\r\n <!-- Label -->\r\n <span class=\"magary-treenode-label\">{{ node().label }}</span>\r\n </div>\r\n\r\n <!-- Children (Recursion) -->\r\n <ul\r\n class=\"magary-treenode-children\"\r\n *ngIf=\"isExpanded && !isLeaf\"\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!droppable()\"\r\n [cdkDropListData]=\"node().children || []\"\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n >\r\n <magary-uitree-node\r\n *ngFor=\"let childNode of node().children\"\r\n [node]=\"childNode\"\r\n [selectionMode]=\"selectionMode()\"\r\n [selection]=\"selection()\"\r\n [draggable]=\"draggable()\"\r\n [droppable]=\"droppable()\"\r\n (nodeSelect)=\"nodeSelect.emit($event)\"\r\n (nodeUnselect)=\"nodeUnselect.emit($event)\"\r\n (nodeExpand)=\"nodeExpand.emit($event)\"\r\n (nodeCollapse)=\"nodeCollapse.emit($event)\"\r\n (nodeDrop)=\"nodeDrop.emit($event)\"\r\n >\r\n </magary-uitree-node>\r\n </ul>\r\n </li>\r\n `,\r\n host: {\r\n class: 'magary-uitree-node-host',\r\n },\r\n})\r\nexport class MagaryUITreeNode {\r\n node = input.required<MagaryTreeNode>();\r\n selectionMode = input<string | null>(null);\r\n selection = input<any>(null);\r\n draggable = input<boolean>(false);\r\n droppable = input<boolean>(false);\r\n\r\n // Outputs to bubble up events\r\n nodeSelect = output<any>();\r\n nodeUnselect = output<any>();\r\n nodeExpand = output<any>();\r\n nodeCollapse = output<any>();\r\n nodeDrop = output<any>();\r\n\r\n get isExpanded() {\r\n return this.node().expanded;\r\n }\r\n\r\n get isLeaf() {\r\n return (\r\n this.node().leaf === true ||\r\n !this.node().children ||\r\n this.node().children!.length === 0\r\n );\r\n }\r\n\r\n // Helper to check if this specific node is selected based on the selection input\r\n // This is simple for now, might need more complex logic for multiple selection\r\n isSelected = computed(() => {\r\n const sel = this.selection();\r\n if (!sel) return false;\r\n if (Array.isArray(sel)) {\r\n return sel.includes(this.node());\r\n }\r\n return sel === this.node();\r\n });\r\n\r\n getIcon() {\r\n const n = this.node();\r\n if (n.expanded && n.expandedIcon) return n.expandedIcon;\r\n if (!n.expanded && n.collapsedIcon) return n.collapsedIcon;\r\n return n.icon || '';\r\n }\r\n\r\n toggle(event: Event) {\r\n event.stopPropagation();\r\n this.node().expanded = !this.node().expanded;\r\n if (this.node().expanded) {\r\n this.nodeExpand.emit(this.node());\r\n } else {\r\n this.nodeCollapse.emit(this.node());\r\n }\r\n }\r\n\r\n onNodeClick(event: Event) {\r\n if (this.selectionMode() === 'checkbox') return; // Handled by checkbox\r\n\r\n event.stopPropagation();\r\n if (this.isSelected()) {\r\n this.nodeUnselect.emit({ originalEvent: event, node: this.node() });\r\n } else {\r\n this.nodeSelect.emit({ originalEvent: event, node: this.node() });\r\n }\r\n }\r\n\r\n onCheckboxClick(event: Event) {\r\n event.stopPropagation();\r\n if (this.isSelected()) {\r\n this.nodeUnselect.emit({ originalEvent: event, node: this.node() });\r\n } else {\r\n this.nodeSelect.emit({ originalEvent: event, node: this.node() });\r\n }\r\n }\r\n\r\n onDrop(event: CdkDragDrop<MagaryTreeNode[]>) {\r\n event.event.stopPropagation(); // Stop bubbling immediately?\r\n // Actually we want to notify parent\r\n this.nodeDrop.emit({\r\n originalEvent: event,\r\n parent: this.node(), // The drop happened in this node's children list\r\n dragNode: event.item.data,\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n signal,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { DragDropModule, CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { MagaryTreeNode } from './tree-node.interface';\r\nimport { MagaryUITreeNode } from './uitree-node';\r\n\r\n@Component({\r\n selector: 'magary-tree',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MagaryUITreeNode,\r\n LucideAngularModule,\r\n DragDropModule,\r\n ],\r\n templateUrl: './tree.html',\r\n styleUrls: ['./tree.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryTree {\r\n value = input<MagaryTreeNode[]>([]);\r\n selectionMode = input<'single' | 'multiple' | 'checkbox' | null>(null);\r\n selection = input<any>(null);\r\n filter = input<boolean>(false);\r\n filterPlaceholder = input<string>('Search...');\r\n filterMode = input<'lenient' | 'strict'>('lenient');\r\n draggable = input<boolean>(false);\r\n droppable = input<boolean>(false);\r\n validateDrop = input<boolean>(false);\r\n\r\n onNodeSelect = output<any>();\r\n onNodeUnselect = output<any>();\r\n onNodeExpand = output<any>();\r\n onNodeCollapse = output<any>();\r\n onNodeDrop = output<any>();\r\n\r\n // Internal state for filter value\r\n filterValue = signal<string>('');\r\n\r\n // Computed filtered nodes\r\n filteredValue = computed(() => {\r\n const val = this.value();\r\n const filterText = this.filterValue().toLowerCase().trim();\r\n\r\n if (!filterText) {\r\n return val;\r\n }\r\n\r\n return this.filterTree(val, filterText);\r\n });\r\n\r\n filterTree(nodes: MagaryTreeNode[], term: string): MagaryTreeNode[] {\r\n const filtered: MagaryTreeNode[] = [];\r\n\r\n for (const node of nodes) {\r\n let copy = { ...node }; // Shallow copy to avoid mutating original for expansion logic\r\n let matches = this.isNodeMatching(node, term);\r\n let childMatches = false;\r\n\r\n if (node.children && node.children.length) {\r\n copy.children = this.filterTree(node.children, term);\r\n childMatches = copy.children.length > 0;\r\n }\r\n\r\n if (matches || childMatches) {\r\n // If children match, expand this node to show them\r\n if (childMatches) {\r\n copy.expanded = true;\r\n }\r\n filtered.push(copy);\r\n }\r\n }\r\n\r\n return filtered;\r\n }\r\n\r\n isNodeMatching(node: MagaryTreeNode, term: string): boolean {\r\n const label = (node.label || '').toLowerCase();\r\n if (this.filterMode() === 'strict') {\r\n return label === term;\r\n }\r\n return label.includes(term);\r\n }\r\n\r\n onFilterInput(event: Event) {\r\n const val = (event.target as HTMLInputElement).value;\r\n this.filterValue.set(val);\r\n }\r\n\r\n // Pass through events\r\n handleNodeSelect(event: any) {\r\n this.onNodeSelect.emit(event);\r\n }\r\n handleNodeUnselect(event: any) {\r\n this.onNodeUnselect.emit(event);\r\n }\r\n handleNodeExpand(event: any) {\r\n this.onNodeExpand.emit(event);\r\n }\r\n handleNodeCollapse(event: any) {\r\n this.onNodeCollapse.emit(event);\r\n }\r\n\r\n handleDrop(\r\n event: CdkDragDrop<MagaryTreeNode[]>,\r\n parent: MagaryTreeNode | null,\r\n ) {\r\n // This is the root level handler (or when bubbled up if configured that way)\r\n if (this.validateDrop()) {\r\n // Logic to validate if needed\r\n }\r\n\r\n // Emit the raw event for the consumer to handle data updates\r\n // They can use moveItemInArray(event.container.data, event.previousIndex, event.currentIndex)\r\n this.onNodeDrop.emit({\r\n originalEvent: event,\r\n parent: parent,\r\n dragNode: event.item.data,\r\n });\r\n }\r\n}\r\n","<div class=\"magary-tree-container\" cdkDropListGroup>\r\n <!-- Filter Section -->\r\n @if (filter()) {\r\n <div class=\"magary-tree-filter\">\r\n <lucide-icon\r\n name=\"search\"\r\n [size]=\"16\"\r\n class=\"magary-tree-filter-icon\"\r\n ></lucide-icon>\r\n <input\r\n type=\"text\"\r\n class=\"magary-tree-filter-input\"\r\n [placeholder]=\"filterPlaceholder()\"\r\n (input)=\"onFilterInput($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (filteredValue() && filteredValue().length) {\r\n <ul\r\n class=\"magary-tree-root-children\"\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!droppable()\"\r\n [cdkDropListData]=\"filteredValue() || []\"\r\n (cdkDropListDropped)=\"handleDrop($event, null)\"\r\n >\r\n @for (node of filteredValue(); track node.key || node.label) {\r\n <magary-uitree-node\r\n [node]=\"node\"\r\n [selectionMode]=\"selectionMode()\"\r\n [selection]=\"selection()\"\r\n [draggable]=\"draggable()\"\r\n [droppable]=\"droppable()\"\r\n (nodeSelect)=\"handleNodeSelect($event)\"\r\n (nodeUnselect)=\"handleNodeUnselect($event)\"\r\n (nodeExpand)=\"handleNodeExpand($event)\"\r\n (nodeCollapse)=\"handleNodeCollapse($event)\"\r\n (nodeDrop)=\"onNodeDrop.emit($event)\"\r\n >\r\n </magary-uitree-node>\r\n }\r\n </ul>\r\n }\r\n\r\n @if (!filteredValue() || filteredValue().length === 0) {\r\n <div class=\"magary-tree-empty-message\">No records found</div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n input,\r\n contentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'magary-timeline',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <div\r\n [class]=\"\r\n 'magary-timeline magary-timeline-' +\r\n layout() +\r\n ' magary-timeline-' +\r\n align()\r\n \"\r\n >\r\n @for (item of value(); track $index; let i = $index; let last = $last) {\r\n <div class=\"magary-timeline-event\">\r\n <div class=\"magary-timeline-event-opposite\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n oppositeTemplate() || null;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div class=\"magary-timeline-event-separator\">\r\n @if (markerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n markerTemplate();\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n } @else {\r\n <div class=\"magary-timeline-event-marker\"></div>\r\n }\r\n @if (!last) {\r\n <div class=\"magary-timeline-event-connector\"></div>\r\n }\r\n </div>\r\n <div class=\"magary-timeline-event-content\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n contentTemplate() || null;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n `,\r\n styleUrls: ['./timeline.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'magary-timeline-host',\r\n },\r\n})\r\nexport class MagaryTimeline {\r\n value = input<any[]>([]);\r\n layout = input<'vertical' | 'horizontal'>('vertical');\r\n align = input<'left' | 'right' | 'top' | 'bottom' | 'alternate'>('left');\r\n\r\n contentTemplate = contentChild<TemplateRef<any>>('content');\r\n oppositeTemplate = contentChild<TemplateRef<any>>('opposite');\r\n markerTemplate = contentChild<TemplateRef<any>>('marker');\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n inject,\r\n forwardRef,\r\n computed,\r\n input,\r\n contentChild,\r\n TemplateRef,\r\n signal,\r\n output,\r\n} from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryTreeNode } from '../tree/tree-node.interface';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\n@Component({\r\n selector: '[magary-organizationchart-node]',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n LucideAngularModule,\r\n forwardRef(() => MagaryOrganizationChartNode),\r\n ],\r\n template: `\r\n <!-- Connector Line Up (connects to parent bus) -->\r\n <tr *ngIf=\"node()\">\r\n <td [attr.colspan]=\"colspan()\">\r\n <div class=\"magary-organizationchart-line-up\"></div>\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"node()\">\r\n <td [attr.colspan]=\"colspan()\">\r\n <div\r\n class=\"magary-organizationchart-node-content\"\r\n [class.magary-organizationchart-selectable]=\"selectionMode() !== null\"\r\n [class.magary-organizationchart-selected]=\"isSelected()\"\r\n (click)=\"onNodeClick($event)\"\r\n >\r\n <!-- Display content based on template or fallback -->\r\n <ng-container *ngIf=\"template(); else defaultContent\">\r\n <ng-container\r\n *ngTemplateOutlet=\"template(); context: { $implicit: node() }\"\r\n ></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultContent>\r\n <div\r\n *ngIf=\"node().header\"\r\n class=\"magary-organizationchart-node-header\"\r\n >\r\n {{ node().header }}\r\n </div>\r\n <div class=\"magary-organizationchart-node-label\">\r\n {{ node().label }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Toggler -->\r\n <div\r\n *ngIf=\"!isLeaf() && collapsible()\"\r\n class=\"magary-organizationchart-toggler\"\r\n (click)=\"toggle($event)\"\r\n >\r\n <lucide-icon\r\n [name]=\"internalExpanded() ? 'chevron-down' : 'chevron-up'\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n <!-- Connector Lines Down -->\r\n <tr\r\n class=\"magary-organizationchart-lines\"\r\n *ngIf=\"!isLeaf() && internalExpanded()\"\r\n [@slideDown]\r\n >\r\n <td [attr.colspan]=\"colspan()\">\r\n <div class=\"magary-organizationchart-line-down\"></div>\r\n </td>\r\n </tr>\r\n\r\n <!-- Connector Lines Horizontal -->\r\n <tr\r\n class=\"magary-organizationchart-lines\"\r\n *ngIf=\"!isLeaf() && internalExpanded()\"\r\n [@slideDown]\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let child of node().children;\r\n let first = first;\r\n let last = last\r\n \"\r\n >\r\n <td\r\n class=\"magary-organizationchart-line-left\"\r\n [class.magary-organizationchart-line-top]=\"!first\"\r\n ></td>\r\n <td\r\n class=\"magary-organizationchart-line-right\"\r\n [class.magary-organizationchart-line-top]=\"!last\"\r\n ></td>\r\n </ng-container>\r\n </tr>\r\n\r\n <!-- Children Row -->\r\n <tr\r\n class=\"magary-organizationchart-nodes\"\r\n *ngIf=\"!isLeaf() && internalExpanded()\"\r\n [@slideDown]\r\n >\r\n <ng-container *ngFor=\"let child of node().children\">\r\n <td colspan=\"2\">\r\n <table class=\"magary-organizationchart-table\">\r\n <tbody\r\n magary-organizationchart-node\r\n [node]=\"child\"\r\n [selectionMode]=\"selectionMode()\"\r\n [selection]=\"selection()\"\r\n [collapsible]=\"collapsible()\"\r\n [itemTemplate]=\"itemTemplate()\"\r\n (nodeSelect)=\"nodeSelect.emit($event)\"\r\n (nodeUnselect)=\"nodeUnselect.emit($event)\"\r\n (nodeExpand)=\"nodeExpand.emit($event)\"\r\n (nodeCollapse)=\"nodeCollapse.emit($event)\"\r\n ></tbody>\r\n </table>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('slideDown', [\r\n transition(':enter', [\r\n style({ height: '0', opacity: 0, overflow: 'hidden' }),\r\n animate('200ms ease-out', style({ height: '*', opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n style({ height: '*', opacity: 1, overflow: 'hidden' }),\r\n animate('200ms ease-in', style({ height: '0', opacity: 0 })),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryOrganizationChartNode {\r\n readonly node = input.required<MagaryTreeNode>();\r\n readonly selectionMode = input<string | null>(null);\r\n readonly selection = input<any>(null);\r\n readonly collapsible = input<boolean>(false);\r\n readonly itemTemplate = input<TemplateRef<any> | null | undefined>(null);\r\n\r\n readonly template = computed(() => this.itemTemplate());\r\n\r\n readonly nodeSelect = output<any>();\r\n readonly nodeUnselect = output<any>();\r\n readonly nodeExpand = output<any>();\r\n readonly nodeCollapse = output<any>();\r\n\r\n // Local signal for expansion state to ensure UI updates\r\n // Initialized from node().expanded but then managed locally for this component instance\r\n internalExpanded = signal<boolean>(false);\r\n\r\n // Initialize the signal from the input when it changes (or initially)\r\n constructor() {\r\n // In a real scenario we might want an effect() here if the input changes later\r\n // But for now, we just initialize. Since inputs are signals, we can read them.\r\n // However, constructor runs before inputs are bound in standard Angular...\r\n // but signal inputs are available.\r\n // A better way is to use effect or just initialize it.\r\n // Effect(() => this.internalExpanded.set(!!this.node().expanded));\r\n }\r\n\r\n // Actually, let's just use effect to sync from input to internal state if input changes\r\n // and interactions update internal state.\r\n // Ideally, 'expanded' should be two-way binding or event driven.\r\n // For this component, we'll initialize it lazily or use an effect.\r\n\r\n ngOnInit() {\r\n this.internalExpanded.set(!!this.node().expanded);\r\n }\r\n\r\n isLeaf = computed(\r\n () => !this.node().children || this.node().children!.length === 0,\r\n );\r\n\r\n colspan = computed(() => {\r\n if (!this.node().children || this.node().children!.length === 0) return 1;\r\n return this.node().children!.length * 2;\r\n });\r\n\r\n isSelected = computed(() => {\r\n const sel = this.selection();\r\n if (!sel) return false;\r\n if (Array.isArray(sel)) return sel.includes(this.node());\r\n return sel === this.node();\r\n });\r\n\r\n onNodeClick(event: Event) {\r\n if (this.selectionMode()) {\r\n if (this.isSelected()) {\r\n this.nodeUnselect.emit({ originalEvent: event, node: this.node() });\r\n } else {\r\n this.nodeSelect.emit({ originalEvent: event, node: this.node() });\r\n }\r\n }\r\n }\r\n\r\n toggle(event: Event) {\r\n event.stopPropagation();\r\n this.internalExpanded.update((v) => !v);\r\n const expanded = this.internalExpanded();\r\n this.node().expanded = expanded;\r\n\r\n if (expanded) {\r\n this.nodeExpand.emit(this.node());\r\n } else {\r\n this.nodeCollapse.emit(this.node());\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n input,\r\n output,\r\n contentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryTreeNode } from '../tree/tree-node.interface';\r\nimport { MagaryOrganizationChartNode } from './organizationchart-node';\r\n\r\n@Component({\r\n selector: 'magary-organization-chart',\r\n standalone: true,\r\n imports: [CommonModule, MagaryOrganizationChartNode],\r\n templateUrl: './organizationchart.html',\r\n styleUrls: ['./organizationchart.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryOrganizationChart {\r\n readonly value = input<MagaryTreeNode[]>([]);\r\n readonly selectionMode = input<string | null>(null);\r\n readonly selection = input<any>(null);\r\n readonly collapsible = input<boolean>(false);\r\n\r\n // Custom template support\r\n readonly template = contentChild(TemplateRef);\r\n\r\n readonly onNodeSelect = output<any>();\r\n readonly onNodeUnselect = output<any>();\r\n readonly onNodeExpand = output<any>();\r\n readonly onNodeCollapse = output<any>();\r\n\r\n // Helper to handle root nodes array\r\n // Typically org chart has one root, but we support array just in case\r\n // If array has multiple items, it creates multiple trees side-by-side or needs a virtual root?\r\n // Standard is usually an array where each item is a root of a tree.\r\n}\r\n","<div class=\"magary-organizationchart\">\r\n <table class=\"magary-organizationchart-table\">\r\n <tbody\r\n magary-organizationchart-node\r\n *ngFor=\"let node of value()\"\r\n [node]=\"node\"\r\n [selectionMode]=\"selectionMode()\"\r\n [selection]=\"selection()\"\r\n [collapsible]=\"collapsible()\"\r\n [itemTemplate]=\"template()\"\r\n (nodeSelect)=\"onNodeSelect.emit($event)\"\r\n (nodeUnselect)=\"onNodeUnselect.emit($event)\"\r\n (nodeExpand)=\"onNodeExpand.emit($event)\"\r\n (nodeCollapse)=\"onNodeCollapse.emit($event)\"\r\n ></tbody>\r\n </table>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n contentChild,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n signal,\r\n computed,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MagaryButton } from '../../Button/button/button';\r\n\r\n@Component({\r\n selector: 'magary-pick-list',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule, MagaryButton],\r\n templateUrl: './picklist.html',\r\n styleUrl: './picklist.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'magary-pick-list',\r\n },\r\n})\r\nexport class MagaryPickList {\r\n // Inputs\r\n @Input() sourceHeader: string = 'Source';\r\n @Input() targetHeader: string = 'Target';\r\n @Input() sourceStyle: { [klass: string]: any } | null = null;\r\n @Input() targetStyle: { [klass: string]: any } | null = null;\r\n @Input() showSourceControls: boolean = true;\r\n @Input() showTargetControls: boolean = true;\r\n\r\n // Data Models\r\n source = model<any[]>([]);\r\n target = model<any[]>([]);\r\n\r\n // Selection\r\n selectedSource = signal<any[]>([]);\r\n selectedTarget = signal<any[]>([]);\r\n\r\n // Templates\r\n itemTemplate = contentChild<TemplateRef<any>>('itemTemplate');\r\n\r\n // Outputs\r\n @Output() onMoveToTarget = new EventEmitter<any>();\r\n @Output() onMoveToSource = new EventEmitter<any>();\r\n @Output() onMoveAllToTarget = new EventEmitter<any>();\r\n @Output() onMoveAllToSource = new EventEmitter<any>();\r\n\r\n // Methods\r\n moveRight() {\r\n const selected = this.selectedSource();\r\n if (selected.length === 0) return;\r\n\r\n const source = [...this.source()];\r\n const target = [...this.target()];\r\n\r\n // Remove from source, add to target\r\n const newSource = source.filter((item) => !selected.includes(item));\r\n const newTarget = [...target, ...selected];\r\n\r\n this.source.set(newSource);\r\n this.target.set(newTarget);\r\n this.selectedSource.set([]);\r\n\r\n this.onMoveToTarget.emit({ items: selected });\r\n }\r\n\r\n moveAllRight() {\r\n const source = [...this.source()];\r\n if (source.length === 0) return;\r\n\r\n const target = [...this.target(), ...source];\r\n\r\n this.source.set([]);\r\n this.target.set(target);\r\n this.selectedSource.set([]);\r\n\r\n this.onMoveAllToTarget.emit({ items: source });\r\n }\r\n\r\n moveLeft() {\r\n const selected = this.selectedTarget();\r\n if (selected.length === 0) return;\r\n\r\n const source = [...this.source()];\r\n const target = [...this.target()];\r\n\r\n // Remove from target, add to source\r\n const newTarget = target.filter((item) => !selected.includes(item));\r\n const newSource = [...source, ...selected];\r\n\r\n this.target.set(newTarget);\r\n this.source.set(newSource);\r\n this.selectedTarget.set([]);\r\n\r\n this.onMoveToSource.emit({ items: selected });\r\n }\r\n\r\n moveAllLeft() {\r\n const target = [...this.target()];\r\n if (target.length === 0) return;\r\n\r\n const source = [...this.source(), ...target];\r\n\r\n this.target.set([]);\r\n this.source.set(source);\r\n this.selectedTarget.set([]);\r\n\r\n this.onMoveAllToSource.emit({ items: target });\r\n }\r\n\r\n onSourceItemClick(event: MouseEvent, item: any) {\r\n const metaKey = event.metaKey || event.ctrlKey;\r\n const selected = [...this.selectedSource()];\r\n const index = selected.indexOf(item);\r\n\r\n if (metaKey) {\r\n if (index > -1) {\r\n selected.splice(index, 1);\r\n } else {\r\n selected.push(item);\r\n }\r\n } else {\r\n // Simple selection for now, maybe add shift key support later\r\n if (index > -1 && selected.length === 1) {\r\n this.selectedSource.set([]);\r\n return;\r\n }\r\n this.selectedSource.set([item]);\r\n return;\r\n }\r\n this.selectedSource.set(selected);\r\n }\r\n\r\n onTargetItemClick(event: MouseEvent, item: any) {\r\n const metaKey = event.metaKey || event.ctrlKey;\r\n const selected = [...this.selectedTarget()];\r\n const index = selected.indexOf(item);\r\n\r\n if (metaKey) {\r\n if (index > -1) {\r\n selected.splice(index, 1);\r\n } else {\r\n selected.push(item);\r\n }\r\n } else {\r\n if (index > -1 && selected.length === 1) {\r\n this.selectedTarget.set([]);\r\n return;\r\n }\r\n this.selectedTarget.set([item]);\r\n return;\r\n }\r\n this.selectedTarget.set(selected);\r\n }\r\n}\r\n","<div class=\"picklist-list-wrapper source-wrapper\">\r\n <div class=\"picklist-header\" *ngIf=\"sourceHeader\">{{ sourceHeader }}</div>\r\n <ul class=\"picklist-list\" [ngStyle]=\"sourceStyle\" tabindex=\"0\">\r\n <li\r\n *ngFor=\"let item of source()\"\r\n class=\"picklist-item\"\r\n [class.selected]=\"selectedSource().includes(item)\"\r\n (click)=\"onSourceItemClick($event, item)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate() || defaultTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n<div class=\"picklist-buttons\">\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevrons-right\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n (buttonClick)=\"moveAllRight()\"\r\n [disabled]=\"source().length === 0\"\r\n >\r\n </magary-button>\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevron-right\"\r\n (buttonClick)=\"moveRight()\"\r\n [disabled]=\"selectedSource().length === 0\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevron-left\"\r\n (buttonClick)=\"moveLeft()\"\r\n [disabled]=\"selectedTarget().length === 0\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevrons-left\"\r\n (buttonClick)=\"moveAllLeft()\"\r\n [disabled]=\"target().length === 0\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n</div>\r\n\r\n<div class=\"picklist-list-wrapper target-wrapper\">\r\n <div class=\"picklist-header\" *ngIf=\"targetHeader\">{{ targetHeader }}</div>\r\n <ul class=\"picklist-list\" [ngStyle]=\"targetStyle\" tabindex=\"0\">\r\n <li\r\n *ngFor=\"let item of target()\"\r\n class=\"picklist-item\"\r\n [class.selected]=\"selectedTarget().includes(item)\"\r\n (click)=\"onTargetItemClick($event, item)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate() || defaultTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #defaultTemplate let-item>\r\n {{ item.label || item }}\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n contentChild,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n signal,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MagaryButton } from '../../Button/button/button';\r\n\r\n@Component({\r\n selector: 'magary-order-list',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule, MagaryButton],\r\n templateUrl: './orderlist.html',\r\n styleUrl: './orderlist.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'magary-order-list',\r\n },\r\n})\r\nexport class MagaryOrderList {\r\n @Input() header: string | null = null;\r\n @Input() listStyle: { [klass: string]: any } | null = null;\r\n\r\n // Data\r\n value = model<any[]>([]);\r\n selection = model<any[]>([]);\r\n\r\n // Templates\r\n itemTemplate = contentChild<TemplateRef<any>>('itemTemplate');\r\n\r\n // Outputs\r\n @Output() onReorder = new EventEmitter<any>();\r\n @Output() onSelectionChange = new EventEmitter<any>();\r\n\r\n onItemClick(event: MouseEvent, item: any, index: number) {\r\n const metaKey = event.metaKey || event.ctrlKey;\r\n let selected = [...this.selection()];\r\n\r\n if (metaKey) {\r\n if (selected.includes(item)) {\r\n selected = selected.filter((i) => i !== item);\r\n } else {\r\n selected.push(item);\r\n }\r\n } else {\r\n if (selected.includes(item) && selected.length === 1) {\r\n this.selection.set([]);\r\n this.onSelectionChange.emit(this.selection());\r\n return;\r\n }\r\n selected = [item];\r\n }\r\n this.selection.set(selected);\r\n this.onSelectionChange.emit(this.selection());\r\n }\r\n\r\n moveUp() {\r\n const selected = this.selection();\r\n if (selected.length === 0) return;\r\n\r\n let list = [...this.value()];\r\n for (let i = 0; i < selected.length; i++) {\r\n const item = selected[i];\r\n const index = list.indexOf(item);\r\n if (index > 0) {\r\n list[index] = list[index - 1];\r\n list[index - 1] = item;\r\n }\r\n }\r\n this.value.set(list);\r\n this.onReorder.emit(list);\r\n }\r\n\r\n moveTop() {\r\n const selected = this.selection();\r\n if (selected.length === 0) return;\r\n\r\n let list = [...this.value()];\r\n for (let i = selected.length - 1; i >= 0; i--) {\r\n const item = selected[i];\r\n const index = list.indexOf(item);\r\n if (index > 0) {\r\n list.splice(index, 1);\r\n list.unshift(item);\r\n }\r\n }\r\n this.value.set(list);\r\n this.onReorder.emit(list);\r\n }\r\n\r\n moveDown() {\r\n const selected = this.selection();\r\n if (selected.length === 0) return;\r\n\r\n let list = [...this.value()];\r\n // Process in reverse order for moving down correctly\r\n for (let i = selected.length - 1; i >= 0; i--) {\r\n const item = selected[i];\r\n const index = list.indexOf(item);\r\n if (index < list.length - 1) {\r\n const nextItem = list[index + 1];\r\n list[index + 1] = item;\r\n list[index] = nextItem;\r\n }\r\n }\r\n this.value.set(list);\r\n this.onReorder.emit(list);\r\n }\r\n\r\n moveBottom() {\r\n const selected = this.selection();\r\n if (selected.length === 0) return;\r\n\r\n let list = [...this.value()];\r\n for (let i = 0; i < selected.length; i++) {\r\n const item = selected[i];\r\n const index = list.indexOf(item);\r\n if (index < list.length - 1) {\r\n list.splice(index, 1);\r\n list.push(item);\r\n }\r\n }\r\n this.value.set(list);\r\n this.onReorder.emit(list);\r\n }\r\n}\r\n","<div class=\"orderlist-controls\">\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevrons-up\"\r\n (buttonClick)=\"moveTop()\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevron-up\"\r\n (buttonClick)=\"moveUp()\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevron-down\"\r\n (buttonClick)=\"moveDown()\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n <magary-button\r\n type=\"button\"\r\n icon=\"chevrons-down\"\r\n (buttonClick)=\"moveBottom()\"\r\n severity=\"secondary\"\r\n size=\"small\"\r\n [iconSize]=\"16\"\r\n >\r\n </magary-button>\r\n</div>\r\n\r\n<div class=\"orderlist-list-wrapper\">\r\n <div class=\"orderlist-header\" *ngIf=\"header\">{{ header }}</div>\r\n <ul class=\"orderlist-list\" [ngStyle]=\"listStyle\">\r\n <li\r\n *ngFor=\"let item of value(); let i = index\"\r\n class=\"orderlist-item\"\r\n [class.selected]=\"selection().includes(item)\"\r\n (click)=\"onItemClick($event, item, i)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate() || defaultTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #defaultTemplate let-item>\r\n {{ item.label || item }}\r\n</ng-template>\r\n","import {\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n computed,\r\n signal,\r\n effect,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryPaginator, PaginatorState } from '../paginator/paginator';\r\n\r\n@Component({\r\n selector: 'magary-dataview',\r\n standalone: true,\r\n imports: [CommonModule, MagaryPaginator],\r\n templateUrl: './dataview.html',\r\n styleUrl: './dataview.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryDataView {\r\n // Content Templates\r\n @ContentChild('listItem') listItemTemplate!: TemplateRef<any>;\r\n @ContentChild('gridItem') gridItemTemplate!: TemplateRef<any>;\r\n @ContentChild('header') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('footer') footerTemplate!: TemplateRef<any>;\r\n\r\n // Inputs\r\n @Input() set value(val: any[]) {\r\n this._value.set(val);\r\n }\r\n @Input() set layout(val: 'list' | 'grid') {\r\n this._layout.set(val);\r\n }\r\n get layout() {\r\n return this._layout();\r\n }\r\n\r\n @Input() paginator: boolean = false;\r\n @Input() rows: number = 0;\r\n @Input() totalRecords: number = 0;\r\n @Input() pageLinks: number = 5;\r\n @Input() rowsPerPageOptions: number[] = [];\r\n @Input() emptyMessage: string = 'No records found';\r\n @Input() sortField: string | null = null;\r\n @Input() sortOrder: number | null = null; // 1 or -1\r\n @Input() loading: boolean = false;\r\n @Input() trackBy: any = (index: number, item: any) => item;\r\n\r\n // Outputs\r\n @Output() onPage = new EventEmitter<PaginatorState>();\r\n\r\n // Signals\r\n _value = signal<any[]>([]);\r\n _layout = signal<'list' | 'grid'>('list');\r\n first = signal<number>(0);\r\n _rows = signal<number>(0);\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n this._rows.set(this.rows);\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n }\r\n\r\n // Computed\r\n processedData = computed(() => {\r\n let data = this._value() || [];\r\n // Optional: Sorting logic could go here if we implemented internal sorting\r\n return data;\r\n });\r\n\r\n dataToRender = computed(() => {\r\n const data = this.processedData();\r\n if (this.paginator) {\r\n const first = this.first();\r\n const rows = this._rows() || data.length; // fallback\r\n return data.slice(first, first + rows);\r\n }\r\n return data;\r\n });\r\n\r\n onPageChange(event: PaginatorState) {\r\n this.first.set(event.first);\r\n this._rows.set(event.rows);\r\n this.onPage.emit(event);\r\n }\r\n\r\n getTotalRecords() {\r\n return this.totalRecords\r\n ? this.totalRecords\r\n : this._value()\r\n ? this._value().length\r\n : 0;\r\n }\r\n}\r\n","<div\r\n class=\"magary-dataview\"\r\n [ngClass]=\"{\r\n 'magary-dataview-list': layout === 'list',\r\n 'magary-dataview-grid': layout === 'grid',\r\n 'magary-dataview-loading': loading,\r\n }\"\r\n>\r\n <div class=\"magary-dataview-header\" *ngIf=\"headerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"magary-dataview-content\">\r\n <div class=\"magary-grid\">\r\n <ng-template\r\n ngFor\r\n let-item\r\n let-index=\"index\"\r\n [ngForOf]=\"dataToRender()\"\r\n [ngForTrackBy]=\"trackBy\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n layout === 'list' ? listItemTemplate : gridItemTemplate;\r\n context: { $implicit: item, index: index }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n <div\r\n *ngIf=\"!dataToRender() || dataToRender().length === 0\"\r\n class=\"magary-dataview-empty\"\r\n >\r\n {{ emptyMessage }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"magary-dataview-footer\" *ngIf=\"footerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n\r\n <magary-paginator\r\n *ngIf=\"paginator\"\r\n [rows]=\"rows\"\r\n [first]=\"first()\"\r\n [totalRecords]=\"getTotalRecords()\"\r\n [pageLinkSize]=\"pageLinks\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n ></magary-paginator>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n} from '@angular/core';\r\nimport { MagaryButton } from '../../Button/button/button';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport {\r\n HttpClient,\r\n HttpEventType,\r\n HttpRequest,\r\n HttpResponse,\r\n HttpErrorResponse,\r\n} from '@angular/common/http';\r\n\r\nexport interface UploadEvent {\r\n originalEvent: Event;\r\n files: File[];\r\n}\r\n\r\ninterface UploadedFile {\r\n file: File;\r\n objectURL?: SafeUrl;\r\n status?: 'pending' | 'uploading' | 'completed' | 'error';\r\n progress?: number;\r\n}\r\n\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'magary-upload',\r\n imports: [CommonModule, MagaryButton, LucideAngularModule],\r\n templateUrl: './upload.html',\r\n styleUrl: './upload.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryUpload implements OnDestroy {\r\n mode = input<'basic' | 'advanced'>('basic');\r\n multiple = input<boolean>(false);\r\n accept = input<string>('*');\r\n maxFileSize = input<number | null>(null);\r\n url = input<string>('');\r\n name = input<string>('file');\r\n chooseLabel = input<string>('Choose');\r\n chooseIcon = input<string>('plus');\r\n uploadLabel = input<string>('Upload');\r\n uploadIcon = input<string>('upload');\r\n cancelLabel = input<string>('Cancel');\r\n cancelIcon = input<string>('x');\r\n withCredentials = input<boolean>(false);\r\n\r\n onUpload = output<UploadEvent>();\r\n onSelect = output<UploadEvent>();\r\n onClear = output<void>();\r\n onError = output<{ error: string }>();\r\n\r\n files = signal<UploadedFile[]>([]);\r\n uploading = signal<boolean>(false);\r\n progress = signal<number>(0);\r\n isDragOver = false;\r\n\r\n private http = inject(HttpClient, { optional: true });\r\n\r\n @ViewChild('fileInput') fileInput!: ElementRef;\r\n\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n constructor() {}\r\n\r\n onFileSelect(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files) {\r\n this.handleFiles(Array.from(input.files), event);\r\n }\r\n }\r\n\r\n onDragOver(event: DragEvent) {\r\n event.preventDefault();\r\n this.isDragOver = true;\r\n }\r\n\r\n onDragLeave(event: DragEvent) {\r\n event.preventDefault();\r\n this.isDragOver = false;\r\n }\r\n\r\n onDrop(event: DragEvent) {\r\n event.preventDefault();\r\n this.isDragOver = false;\r\n if (event.dataTransfer?.files) {\r\n this.handleFiles(Array.from(event.dataTransfer.files), event);\r\n }\r\n }\r\n\r\n handleFiles(files: File[], event: Event) {\r\n const validFiles: UploadedFile[] = [];\r\n\r\n for (const file of files) {\r\n if (this.maxFileSize() && file.size > this.maxFileSize()!) {\r\n this.onError.emit({ error: `File ${file.name} exceeds max size` });\r\n continue;\r\n }\r\n\r\n // Create wrapper object\r\n const uploadedFile: UploadedFile = {\r\n file: file,\r\n status: 'pending',\r\n progress: 0,\r\n };\r\n\r\n if (this.isImage(file)) {\r\n uploadedFile.objectURL = this.sanitizer.bypassSecurityTrustUrl(\r\n URL.createObjectURL(file),\r\n );\r\n }\r\n validFiles.push(uploadedFile);\r\n }\r\n\r\n if (this.multiple()) {\r\n this.files.update((current) => [...current, ...validFiles]);\r\n } else {\r\n this.files.set(validFiles.slice(0, 1));\r\n }\r\n\r\n this.onSelect.emit({\r\n originalEvent: event,\r\n files: validFiles.map((f) => f.file),\r\n });\r\n }\r\n\r\n removeFile(file: UploadedFile) {\r\n this.files.update((current) => current.filter((f) => f !== file));\r\n if (this.files().length === 0 && this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n clear() {\r\n this.files.set([]);\r\n this.progress.set(0);\r\n this.uploading.set(false);\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n this.onClear.emit();\r\n }\r\n\r\n upload() {\r\n if (this.files().length === 0) return;\r\n\r\n this.uploading.set(true);\r\n this.progress.set(0);\r\n\r\n // Mark all pending files as uploading\r\n this.files.update((files) =>\r\n files.map((f) =>\r\n f.status === 'pending' ? { ...f, status: 'uploading', progress: 0 } : f,\r\n ),\r\n );\r\n\r\n if (this.url()) {\r\n this.uploadWithHttp();\r\n } else {\r\n this.simulateUpload();\r\n }\r\n }\r\n\r\n private intervalId: any;\r\n private uploadSubscription: any;\r\n\r\n ngOnDestroy() {\r\n this.clearUploadState();\r\n }\r\n\r\n private clearUploadState() {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n this.intervalId = null;\r\n }\r\n\r\n if (this.uploadSubscription) {\r\n this.uploadSubscription.unsubscribe();\r\n this.uploadSubscription = null;\r\n }\r\n }\r\n\r\n // Modified simulateUpload to track interval\r\n private simulateUpload() {\r\n this.clearUploadState(); // Clear any previous\r\n this.intervalId = setInterval(() => {\r\n this.progress.update((p) => {\r\n const newProgress = Math.min(p + Math.random() * 10, 100);\r\n\r\n this.updateFilesProgress(newProgress);\r\n\r\n if (newProgress >= 100) {\r\n this.clearUploadState();\r\n this.uploading.set(false);\r\n this.markFilesAsCompleted();\r\n\r\n this.onUpload.emit({\r\n originalEvent: new Event('upload'),\r\n files: this.files().map((f) => f.file),\r\n });\r\n }\r\n return newProgress;\r\n });\r\n }, 200);\r\n }\r\n\r\n // Modified uploadWithHttp to track subscription\r\n private uploadWithHttp() {\r\n if (!this.http) {\r\n console.error('HttpClient is required for upload but was not provided.');\r\n this.onError.emit({ error: 'HttpClient not configured' });\r\n this.uploading.set(false);\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n this.files().forEach((f) => {\r\n if (f.status === 'uploading') {\r\n formData.append(this.name(), f.file);\r\n }\r\n });\r\n\r\n const req = new HttpRequest('POST', this.url(), formData, {\r\n reportProgress: true,\r\n withCredentials: this.withCredentials(),\r\n });\r\n\r\n this.clearUploadState(); // Clear any previous\r\n this.uploadSubscription = this.http.request(req).subscribe({\r\n next: (event) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n if (event.total) {\r\n const percent = Math.round((100 * event.loaded) / event.total);\r\n this.progress.set(percent);\r\n this.updateFilesProgress(percent);\r\n }\r\n } else if (event instanceof HttpResponse) {\r\n this.uploading.set(false);\r\n this.markFilesAsCompleted();\r\n this.onUpload.emit({\r\n originalEvent: new Event('upload'),\r\n files: this.files().map((f) => f.file),\r\n });\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.uploading.set(false);\r\n this.markFilesAsError();\r\n this.onError.emit({\r\n error: error.message || 'Upload failed',\r\n });\r\n },\r\n });\r\n }\r\n\r\n private updateFilesProgress(percent: number) {\r\n this.files.update((files) =>\r\n files.map((f) => {\r\n if (f.status === 'uploading') {\r\n return { ...f, progress: percent };\r\n }\r\n return f;\r\n }),\r\n );\r\n }\r\n\r\n private markFilesAsCompleted() {\r\n this.files.update((files) =>\r\n files.map((f) =>\r\n f.status === 'uploading'\r\n ? { ...f, status: 'completed', progress: 100 }\r\n : f,\r\n ),\r\n );\r\n }\r\n\r\n private markFilesAsError() {\r\n this.files.update((files) =>\r\n files.map((f) =>\r\n f.status === 'uploading' ? { ...f, status: 'error', progress: 0 } : f,\r\n ),\r\n );\r\n }\r\n\r\n isImage(file: File): boolean {\r\n return /^image\\//.test(file.type);\r\n }\r\n\r\n formatSize(bytes: number): string {\r\n if (bytes === 0) return '0 B';\r\n const k = 1024;\r\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\r\n }\r\n}\r\n","<div\r\n class=\"magary-upload\"\r\n [ngClass]=\"{\r\n 'mode-basic': mode() === 'basic',\r\n 'mode-advanced': mode() === 'advanced',\r\n }\"\r\n>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [accept]=\"accept()\"\r\n [multiple]=\"multiple()\"\r\n (change)=\"onFileSelect($event)\"\r\n />\r\n\r\n @if (mode() === \"basic\") {\r\n @if (files().length === 0) {\r\n <magary-button\r\n [label]=\"chooseLabel()\"\r\n [icon]=\"chooseIcon()\"\r\n (buttonClick)=\"fileInput.click()\"\r\n [disabled]=\"uploading()\"\r\n ></magary-button>\r\n } @else {\r\n @for (file of files(); track file.file.name) {\r\n <div class=\"basic-file-item\">\r\n <div class=\"file-info\">\r\n <lucide-icon name=\"file\" class=\"file-icon\"></lucide-icon>\r\n <div class=\"file-details\">\r\n <span class=\"file-name\">{{ file.file.name }}</span>\r\n <span class=\"file-size\">{{ formatSize(file.file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n @if (file.status === \"uploading\") {\r\n <div class=\"basic-progress\">\r\n <div class=\"progress-bar\" [style.width.%]=\"file.progress\"></div>\r\n </div>\r\n }\r\n\r\n <div class=\"file-actions\">\r\n @if (file.status === \"pending\" || file.status === \"error\") {\r\n <magary-button\r\n icon=\"upload\"\r\n severity=\"success\"\r\n variant=\"text\"\r\n (buttonClick)=\"upload()\"\r\n [disabled]=\"uploading()\"\r\n ></magary-button>\r\n }\r\n @if (file.status === \"completed\") {\r\n <lucide-icon\r\n name=\"circle-check\"\r\n class=\"status-icon success\"\r\n ></lucide-icon>\r\n }\r\n\r\n <magary-button\r\n icon=\"x\"\r\n severity=\"danger\"\r\n variant=\"text\"\r\n (buttonClick)=\"removeFile(file)\"\r\n [disabled]=\"uploading()\"\r\n ></magary-button>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n @if (mode() === \"advanced\") {\r\n <div\r\n class=\"upload-content\"\r\n [class.highlight]=\"isDragOver\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n <lucide-icon\r\n name=\"cloud-upload\"\r\n class=\"upload-icon\"\r\n [size]=\"48\"\r\n ></lucide-icon>\r\n <div class=\"upload-text\">Drag and drop files here to upload.</div>\r\n <magary-button\r\n [label]=\"chooseLabel()\"\r\n [icon]=\"chooseIcon()\"\r\n (buttonClick)=\"fileInput.click()\"\r\n [disabled]=\"uploading()\"\r\n ></magary-button>\r\n </div>\r\n\r\n @if (files().length > 0) {\r\n <div class=\"upload-files\">\r\n <!-- @if (uploading()) {\r\n <div class=\"overall-progress\">\r\n <div class=\"progress-bar\" [style.width.%]=\"progress()\"></div>\r\n </div>\r\n } -->\r\n\r\n @for (file of files(); track file.file.name) {\r\n <div\r\n class=\"file-item\"\r\n [class.completed]=\"file.status === 'completed'\"\r\n >\r\n <div class=\"file-info\">\r\n @if (isImage(file.file)) {\r\n <img [src]=\"file.objectURL\" class=\"file-preview\" />\r\n } @else {\r\n <lucide-icon\r\n name=\"file\"\r\n class=\"file-preview-icon\"\r\n ></lucide-icon>\r\n }\r\n <div class=\"file-details\">\r\n <span class=\"file-name\">{{ file.file.name }}</span>\r\n <span class=\"file-size\">{{ formatSize(file.file.size) }}</span>\r\n @if (file.status === \"uploading\") {\r\n <div class=\"file-progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [style.width.%]=\"file.progress\"\r\n ></div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"file-actions\">\r\n @if (file.status === \"completed\") {\r\n <lucide-icon\r\n name=\"circle-check\"\r\n class=\"status-icon success\"\r\n ></lucide-icon>\r\n } @else if (file.status === \"error\") {\r\n <lucide-icon\r\n name=\"circle-alert\"\r\n class=\"status-icon error\"\r\n ></lucide-icon>\r\n } @else if (file.status === \"uploading\") {\r\n <span class=\"upload-percentage\"\r\n >{{ file.progress | number: \"1.0-0\" }}%</span\r\n >\r\n }\r\n\r\n <magary-button\r\n icon=\"x\"\r\n severity=\"danger\"\r\n variant=\"text\"\r\n (buttonClick)=\"removeFile(file)\"\r\n [disabled]=\"uploading()\"\r\n ></magary-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"upload-actions\">\r\n <magary-button\r\n [label]=\"uploadLabel()\"\r\n [icon]=\"uploadIcon()\"\r\n severity=\"success\"\r\n (buttonClick)=\"upload()\"\r\n [disabled]=\"files().length === 0 || uploading()\"\r\n [loading]=\"uploading()\"\r\n ></magary-button>\r\n <magary-button\r\n [label]=\"cancelLabel()\"\r\n [icon]=\"cancelIcon()\"\r\n severity=\"danger\"\r\n (buttonClick)=\"clear()\"\r\n [disabled]=\"files().length === 0 || uploading()\"\r\n ></magary-button>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryUpload } from './upload';\r\n\r\n@NgModule({\r\n imports: [MagaryUpload],\r\n exports: [MagaryUpload],\r\n})\r\nexport class MagaryUploadModule {}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n input,\r\n signal,\r\n forwardRef,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n@Component({\r\n selector: 'magary-cascade-select',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './cascade-select.html',\r\n styleUrl: './cascade-select.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryCascadeSelect),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MagaryCascadeSelect implements ControlValueAccessor {\r\n private elementRef = inject(ElementRef);\r\n\r\n public options = input<any[]>([]);\r\n public optionLabel = input<string>('label');\r\n public optionValue = input<string | null>(null);\r\n public optionGroupLabel = input<string[] | string | null>(null);\r\n public optionGroupChildren = input<string[]>(['children']);\r\n public placeholder = input<string>('Select an option');\r\n // Input externo: [disabled]=\"true\"\r\n protected disabledInput = input<boolean>(false, { alias: 'disabled' });\r\n public width = input<string>('100%');\r\n public optionGroupSelectable = input<boolean>(false);\r\n\r\n // Signal interno: setDisabledState(true) desde Reactive Forms\r\n private _disabled = signal<boolean>(false);\r\n\r\n // Computed que combina ambos (OR lógico)\r\n public disabled = computed(() => this._disabled() || this.disabledInput());\r\n\r\n public isOpen = signal(false);\r\n public value = signal<any>(null);\r\n public activeOption = signal<any>(null);\r\n\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n public selectedLabel = computed(() => {\r\n const val = this.value();\r\n if (!val) return this.placeholder();\r\n\r\n const findLabel = (opts: any[]): string | null => {\r\n for (const opt of opts) {\r\n if (this.getOptionValue(opt) === val) {\r\n return this.getOptionLabel(opt);\r\n }\r\n const children = this.getOptionChildren(opt);\r\n if (children && children.length > 0) {\r\n const found = findLabel(children);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n return findLabel(this.options()) || this.placeholder();\r\n });\r\n\r\n public getOptionLabel(option: any): string {\r\n if (this.isOptionGroup(option)) {\r\n const groupLabel = this.optionGroupLabel();\r\n if (groupLabel) {\r\n if (typeof groupLabel === 'string') {\r\n return option[groupLabel];\r\n }\r\n }\r\n }\r\n return option[this.optionLabel()];\r\n }\r\n\r\n public getOptionValue(option: any): any {\r\n const valueKey = this.optionValue();\r\n return valueKey ? option[valueKey] : option;\r\n }\r\n\r\n public getOptionChildren(option: any): any[] | null {\r\n for (const childKey of this.optionGroupChildren()) {\r\n if (option[childKey]) {\r\n return option[childKey];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public isOptionGroup(option: any): boolean {\r\n const children = this.getOptionChildren(option);\r\n return !!children && children.length > 0;\r\n }\r\n\r\n public toggle() {\r\n if (this.disabled()) return;\r\n this.isOpen.update((v) => !v);\r\n if (!this.isOpen()) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n public selectOption(option: any, event: Event) {\r\n event.stopPropagation();\r\n\r\n const isGroup = this.isOptionGroup(option);\r\n if (isGroup && !this.optionGroupSelectable()) {\r\n return;\r\n }\r\n\r\n const val = this.getOptionValue(option);\r\n\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.isOpen.set(false);\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onDocumentClick(event: Event) {\r\n if (!this.elementRef.nativeElement.contains(event.target)) {\r\n this.isOpen.set(false);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.value.set(obj);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","<div\r\n class=\"magary-cascade-select\"\r\n [class.disabled]=\"disabled()\"\r\n [class.open]=\"isOpen()\"\r\n [style.width]=\"width()\"\r\n (click)=\"toggle()\"\r\n>\r\n <div class=\"select-trigger\">\r\n <span class=\"select-label\" [class.placeholder]=\"!value()\">\r\n {{ selectedLabel() }}\r\n </span>\r\n <lucide-icon name=\"chevron-down\" class=\"select-icon\"></lucide-icon>\r\n </div>\r\n\r\n @if (isOpen()) {\r\n <div class=\"select-panel\" (click)=\"$event.stopPropagation()\">\r\n <ul class=\"select-list\">\r\n <ng-template #optionTemplate let-items>\r\n @for (option of items; track $index) {\r\n <li\r\n class=\"select-item\"\r\n [class.group]=\"isOptionGroup(option)\"\r\n [class.selected]=\"getOptionValue(option) === value()\"\r\n (click)=\"selectOption(option, $event)\"\r\n >\r\n <div class=\"item-content\">\r\n <span>{{ getOptionLabel(option) }}</span>\r\n @if (isOptionGroup(option)) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"group-icon\"\r\n ></lucide-icon>\r\n }\r\n </div>\r\n\r\n @if (isOptionGroup(option)) {\r\n <div class=\"submenu\">\r\n <ul class=\"select-list\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate;\r\n context: { $implicit: getOptionChildren(option) }\r\n \"\r\n ></ng-container>\r\n </ul>\r\n </div>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: options() }\"\r\n ></ng-container>\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryCascadeSelect } from './cascade-select';\r\n@NgModule({\r\n imports: [CommonModule, MagaryCascadeSelect],\r\n exports: [MagaryCascadeSelect],\r\n})\r\nexport class MagaryCascadeSelectModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryInput } from './input';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MagaryInput],\r\n exports: [MagaryInput],\r\n})\r\nexport class MagaryInputModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'magary-checkbox',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './checkbox.html',\r\n styleUrl: './checkbox.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryCheckbox {\r\n checked = model<boolean>(false);\r\n disabled = input<boolean>(false);\r\n required = input<boolean>(false);\r\n label = input<string>('');\r\n value = input<any>(null);\r\n\r\n // Visual variants\r\n color = input<'primary' | 'success' | 'danger' | 'warning' | 'info'>(\r\n 'primary',\r\n );\r\n\r\n change = output<boolean>();\r\n\r\n focused = signal(false);\r\n uniqueId = `magary-checkbox-${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n containerClasses = computed(() => {\r\n const classes = ['magary-checkbox-container'];\r\n if (this.disabled()) classes.push('checkbox-disabled');\r\n if (this.checked()) classes.push('checkbox-checked');\r\n if (this.focused()) classes.push('checkbox-focused');\r\n classes.push(`checkbox-${this.color()}`);\r\n return classes.join(' ');\r\n });\r\n\r\n onChange(event: Event): void {\r\n if (this.disabled()) return;\r\n const target = event.target as HTMLInputElement;\r\n this.checked.set(target.checked);\r\n this.change.emit(target.checked);\r\n }\r\n\r\n onFocus(): void {\r\n if (!this.disabled()) {\r\n this.focused.set(true);\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n this.focused.set(false);\r\n }\r\n}\r\n","<div [class]=\"containerClasses()\">\r\n <label [for]=\"uniqueId\" class=\"checkbox-wrapper\">\r\n <input\r\n type=\"checkbox\"\r\n [id]=\"uniqueId\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n [required]=\"required()\"\r\n (change)=\"onChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n class=\"hidden-input\"\r\n />\r\n <div class=\"custom-checkbox\">\r\n <svg class=\"checkmark\" viewBox=\"0 0 24 24\">\r\n <path\r\n class=\"checkmark-path\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n d=\"M5 12l5 5L19 7\"\r\n />\r\n </svg>\r\n </div>\r\n <span *ngIf=\"label()\" class=\"checkbox-label\">{{ label() }}</span>\r\n </label>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryCheckbox } from './checkbox';\r\n\r\n@NgModule({\r\n imports: [MagaryCheckbox],\r\n exports: [MagaryCheckbox],\r\n})\r\nexport class MagaryCheckboxModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'magary-switch',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './switch.html',\r\n styleUrl: './switch.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagarySwitch {\r\n checked = model<boolean>(false);\r\n disabled = input<boolean>(false);\r\n label = input<string>('');\r\n\r\n // Visual variants\r\n color = input<'primary' | 'success' | 'danger' | 'warning' | 'info'>(\r\n 'primary',\r\n );\r\n\r\n change = output<boolean>();\r\n\r\n focused = signal(false);\r\n uniqueId = `magary-switch-${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n containerClasses = computed(() => {\r\n const classes = ['magary-switch-container'];\r\n if (this.disabled()) classes.push('switch-disabled');\r\n if (this.checked()) classes.push('switch-checked');\r\n if (this.focused()) classes.push('switch-focused');\r\n classes.push(`switch-${this.color()}`);\r\n return classes.join(' ');\r\n });\r\n\r\n onChange(event: Event): void {\r\n if (this.disabled()) return;\r\n const target = event.target as HTMLInputElement;\r\n this.checked.set(target.checked);\r\n this.change.emit(target.checked);\r\n }\r\n\r\n onFocus(): void {\r\n if (!this.disabled()) {\r\n this.focused.set(true);\r\n }\r\n }\r\n\r\n onBlur(): void {\r\n this.focused.set(false);\r\n }\r\n}\r\n","<div [class]=\"containerClasses()\">\r\n <label [for]=\"uniqueId\" class=\"switch-wrapper\">\r\n <input\r\n type=\"checkbox\"\r\n [id]=\"uniqueId\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n (change)=\"onChange($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n class=\"hidden-input\"\r\n role=\"switch\"\r\n [attr.aria-checked]=\"checked()\"\r\n />\r\n <div class=\"switch-track\">\r\n <div class=\"switch-handle\">\r\n <div class=\"handle-shadow\"></div>\r\n </div>\r\n </div>\r\n <span *ngIf=\"label()\" class=\"switch-label\">{{ label() }}</span>\r\n </label>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagarySwitch } from './switch';\r\n\r\n@NgModule({\r\n imports: [MagarySwitch],\r\n exports: [MagarySwitch],\r\n})\r\nexport class MagarySwitchModule {}\r\n","import {\r\n Component,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\n@Component({\r\n selector: 'magary-select',\r\n standalone: true,\r\n imports: [CommonModule, OverlayModule, LucideAngularModule],\r\n templateUrl: './select.html',\r\n styleUrl: './select.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagarySelect),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MagarySelect implements ControlValueAccessor {\r\n // Signal Inputs\r\n readonly options = input<any[]>([]);\r\n readonly optionLabel = input<string>();\r\n readonly optionValue = input<string>();\r\n readonly placeholder = input<string>('Select an option');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly filter = input(false, { transform: booleanAttribute });\r\n readonly showClear = input(false, { transform: booleanAttribute });\r\n\r\n // Internal State\r\n readonly isOpen = signal(false);\r\n readonly focused = signal(false);\r\n readonly value = signal<any>(null);\r\n readonly filterValue = signal('');\r\n\r\n // Element Reference for Overlay Width\r\n readonly trigger = viewChild.required<ElementRef>('trigger');\r\n\r\n // CVA Callbacks\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n // Computed Helpers\r\n readonly visibleOptions = computed(() => {\r\n const opts = this.options();\r\n const search = this.filterValue().toLowerCase();\r\n\r\n if (!this.filter() || !search) return opts;\r\n\r\n return opts.filter((opt) =>\r\n String(this.getLabel(opt)).toLowerCase().includes(search),\r\n );\r\n });\r\n\r\n readonly selectedLabel = computed(() => {\r\n const val = this.value();\r\n if (!val) return '';\r\n const opts = this.options();\r\n\r\n const selectedOption = opts.find((opt) => this.getValue(opt) === val);\r\n return selectedOption ? this.getLabel(selectedOption) : '';\r\n });\r\n\r\n readonly hasValue = computed(\r\n () =>\r\n this.value() !== null &&\r\n this.value() !== undefined &&\r\n this.value() !== '',\r\n );\r\n\r\n toggleOverlay() {\r\n if (this.disabled() || this.loading()) return;\r\n this.isOpen.update((v) => !v);\r\n if (this.isOpen()) {\r\n this.focused.set(true);\r\n } else {\r\n this.onTouched();\r\n this.focused.set(false);\r\n }\r\n }\r\n\r\n close() {\r\n this.isOpen.set(false);\r\n this.focused.set(false);\r\n this.onTouched();\r\n }\r\n\r\n selectOption(option: any) {\r\n const val = this.getValue(option);\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.close();\r\n }\r\n\r\n isSelected(option: any): boolean {\r\n return this.getValue(option) === this.value();\r\n }\r\n\r\n getLabel(option: any): string {\r\n const labelProp = this.optionLabel();\r\n return labelProp ? option[labelProp] : option;\r\n }\r\n\r\n getValue(option: any): any {\r\n const valueProp = this.optionValue();\r\n return valueProp ? option[valueProp] : option;\r\n }\r\n\r\n onFilterInput(event: Event) {\r\n const val = (event.target as HTMLInputElement).value;\r\n this.filterValue.set(val);\r\n }\r\n\r\n clear(event: Event) {\r\n event.stopPropagation();\r\n this.value.set(null);\r\n this.onChange(null);\r\n this.onTouched();\r\n }\r\n\r\n // CVA Implementation\r\n writeValue(obj: any): void {\r\n this.value.set(obj);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // Handled by signal input usually, but we could update a local signal if needed\r\n }\r\n}\r\n","<div\r\n #trigger\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n class=\"magary-select-container\"\r\n [class.disabled]=\"disabled()\"\r\n [class.focused]=\"focused()\"\r\n [class.filled]=\"hasValue()\"\r\n (click)=\"toggleOverlay()\"\r\n>\r\n <div class=\"selected-value\">\r\n @if (hasValue()) {\r\n <span>{{ selectedLabel() }}</span>\r\n } @else {\r\n <span class=\"placeholder\">{{ placeholder() }}</span>\r\n }\r\n </div>\r\n\r\n <div class=\"icons-container\">\r\n @if (showClear() && hasValue() && !disabled()) {\r\n <lucide-icon\r\n name=\"x\"\r\n [size]=\"16\"\r\n class=\"clear-icon\"\r\n (click)=\"clear($event)\"\r\n >\r\n </lucide-icon>\r\n }\r\n @if (loading()) {\r\n <lucide-icon name=\"loader\" class=\"spin\" [size]=\"18\"></lucide-icon>\r\n } @else {\r\n <lucide-icon name=\"chevron-down\" [size]=\"18\"></lucide-icon>\r\n }\r\n </div>\r\n\r\n <!-- CDK Overlay Template -->\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\r\n [cdkConnectedOverlayMinWidth]=\"trigger.offsetWidth\"\r\n [cdkConnectedOverlayOffsetY]=\"4\"\r\n (backdropClick)=\"close()\"\r\n >\r\n <div\r\n class=\"select-overlay fade-in\"\r\n (click)=\"$event.stopPropagation()\"\r\n tabindex=\"-1\"\r\n >\r\n @if (filter()) {\r\n <div class=\"filter-container\">\r\n <input\r\n type=\"text\"\r\n class=\"filter-input\"\r\n [value]=\"filterValue()\"\r\n (input)=\"onFilterInput($event)\"\r\n placeholder=\"Search...\"\r\n autofocus\r\n />\r\n <lucide-icon\r\n name=\"search\"\r\n [size]=\"14\"\r\n class=\"filter-icon\"\r\n ></lucide-icon>\r\n </div>\r\n }\r\n\r\n <ul class=\"select-list\" role=\"listbox\">\r\n @for (option of visibleOptions(); track option) {\r\n <li\r\n class=\"select-item\"\r\n [class.selected]=\"isSelected(option)\"\r\n role=\"option\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n (click)=\"selectOption(option)\"\r\n >\r\n {{ getLabel(option) }}\r\n @if (isSelected(option)) {\r\n <lucide-icon\r\n name=\"check\"\r\n [size]=\"16\"\r\n class=\"check-icon\"\r\n ></lucide-icon>\r\n }\r\n </li>\r\n }\r\n @if (visibleOptions().length === 0) {\r\n <li class=\"empty-message\">No results found</li>\r\n }\r\n </ul>\r\n </div>\r\n </ng-template>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagarySelect } from './select';\r\n\r\n@NgModule({\r\n imports: [MagarySelect],\r\n exports: [MagarySelect],\r\n})\r\nexport class MagarySelectModule {}\r\n","import {\r\n Component,\r\n ElementRef,\r\n ViewChild,\r\n booleanAttribute,\r\n forwardRef,\r\n input,\r\n signal,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'magary-radio',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './radio.html',\r\n styleUrl: './radio.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryRadioButton),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MagaryRadioButton implements ControlValueAccessor {\r\n @ViewChild('inputElement') inputElement!: ElementRef;\r\n\r\n // Signal Inputs\r\n readonly value = input<any>();\r\n readonly name = input<string>();\r\n readonly label = input<string>();\r\n readonly inputId = input<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n // Internal State\r\n readonly focused = signal(false);\r\n readonly modelValue = signal<any>(null);\r\n\r\n // Computed\r\n readonly checked = computed(() => this.modelValue() === this.value());\r\n\r\n // CVA Callbacks\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n select(event: Event) {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n event.preventDefault(); // Prevent native double toggle actions logic\r\n\r\n // Only select if not already selected\r\n if (!this.checked()) {\r\n this.updateModel();\r\n this.inputElement.nativeElement.focus(); // Ensure focus moves here\r\n }\r\n }\r\n\r\n updateModel() {\r\n this.modelValue.set(this.value());\r\n this.onChange(this.value());\r\n }\r\n\r\n // Input Event Handlers\r\n onInputChange(event: Event) {\r\n // Native radio change\r\n if (!this.disabled()) {\r\n this.updateModel();\r\n }\r\n }\r\n\r\n onInputFocus() {\r\n this.focused.set(true);\r\n }\r\n\r\n onInputBlur() {\r\n this.focused.set(false);\r\n this.onTouched();\r\n }\r\n\r\n // CVA Impl\r\n writeValue(value: any): void {\r\n this.modelValue.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // managed by input binding normally, but good to have\r\n }\r\n}\r\n","<div\r\n class=\"magary-radio-container\"\r\n [class.disabled]=\"disabled()\"\r\n [class.checked]=\"checked()\"\r\n (click)=\"select($event)\"\r\n>\r\n <div class=\"radio-box\" [class.focused]=\"focused()\">\r\n <div class=\"radio-icon\"></div>\r\n <input\r\n #inputElement\r\n type=\"radio\"\r\n class=\"hidden-input\"\r\n [attr.id]=\"inputId()\"\r\n [attr.name]=\"name()\"\r\n [attr.aria-label]=\"label()\"\r\n [checked]=\"checked()\"\r\n [disabled]=\"disabled()\"\r\n (focus)=\"onInputFocus()\"\r\n (blur)=\"onInputBlur()\"\r\n (change)=\"onInputChange($event)\"\r\n tabindex=\"0\"\r\n />\r\n </div>\r\n\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"inputId()\"\r\n class=\"radio-label\"\r\n [class.disabled]=\"disabled()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n FormsModule,\r\n} from '@angular/forms';\r\nimport { MagaryRadioButton } from './radio';\r\n\r\n@Component({\r\n selector: 'magary-radio-group',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, MagaryRadioButton],\r\n templateUrl: './radio-group.html',\r\n styleUrl: './radio-group.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryRadioGroup),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MagaryRadioGroup implements ControlValueAccessor {\r\n readonly options = input<any[]>([]);\r\n readonly layout = input<'vertical' | 'horizontal'>('vertical');\r\n readonly name = input<string>();\r\n readonly optionLabel = input<string>();\r\n readonly optionValue = input<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly value = signal<any>(null);\r\n\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n onRadioChange(val: any) {\r\n if (this.disabled()) return;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n getOptionLabel(option: any): string {\r\n const labelProp = this.optionLabel();\r\n const val = labelProp ? option[labelProp] : option;\r\n return String(val);\r\n }\r\n\r\n getOptionValue(option: any): any {\r\n const valueProp = this.optionValue();\r\n return valueProp ? option[valueProp] : option;\r\n }\r\n\r\n readonly generatedName =\r\n 'magary-radio-group-' + Math.random().toString(36).substr(2, 9);\r\n readonly groupName = computed(() => this.name() || this.generatedName);\r\n\r\n writeValue(val: any): void {\r\n this.value.set(val);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // Handled by signal input usually, but we can't write to input signal.\r\n // relying on parent binding [disabled].\r\n }\r\n}\r\n","<div\r\n class=\"magary-radio-group\"\r\n [class.vertical]=\"layout() === 'vertical'\"\r\n [class.horizontal]=\"layout() === 'horizontal'\"\r\n>\r\n @for (option of options(); track $index) {\r\n <magary-radio\r\n [name]=\"groupName()\"\r\n [value]=\"getOptionValue(option)\"\r\n [label]=\"getOptionLabel(option)\"\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onRadioChange($event)\"\r\n [disabled]=\"disabled()\"\r\n ></magary-radio>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryRadioButton } from './radio';\r\nimport { MagaryRadioGroup } from './radio-group';\r\n@NgModule({\r\n imports: [MagaryRadioButton, MagaryRadioGroup],\r\n exports: [MagaryRadioButton, MagaryRadioGroup],\r\n})\r\nexport class MagaryRadioButtonModule {}\r\n","import {\r\n Component,\r\n ElementRef,\r\n ViewChild,\r\n booleanAttribute,\r\n forwardRef,\r\n input,\r\n signal,\r\n computed,\r\n AfterViewInit,\r\n numberAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'magary-textarea',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './textarea.html',\r\n styleUrl: './textarea.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryTextArea),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MagaryTextArea implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('textarea') textarea!: ElementRef<HTMLTextAreaElement>;\r\n\r\n readonly rows = input(3, { transform: numberAttribute });\r\n readonly cols = input(20, { transform: numberAttribute });\r\n readonly placeholder = input<string>();\r\n readonly autoResize = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n // Counter\r\n readonly maxlength = input<any, unknown>(undefined, {\r\n transform: numberAttribute,\r\n });\r\n readonly showCounter = input(false, { transform: booleanAttribute });\r\n\r\n // Internal State\r\n readonly value = signal<string>('');\r\n readonly length = computed(() => this.value().length);\r\n\r\n // CVA Callbacks\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n ngAfterViewInit() {\r\n if (this.autoResize()) {\r\n this.resize();\r\n }\r\n }\r\n\r\n onInput(event: Event) {\r\n const val = (event.target as HTMLTextAreaElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n\r\n if (this.autoResize()) {\r\n this.resize();\r\n }\r\n }\r\n\r\n onBlur() {\r\n this.onTouched();\r\n }\r\n\r\n onFocus() {\r\n // Focus logic if needed\r\n }\r\n\r\n resize() {\r\n const el = this.textarea.nativeElement;\r\n el.style.height = 'auto';\r\n el.style.height = el.scrollHeight + 'px';\r\n }\r\n\r\n // CVA\r\n writeValue(obj: any): void {\r\n const val = obj || '';\r\n this.value.set(val);\r\n if (this.textarea) {\r\n this.textarea.nativeElement.value = val;\r\n if (this.autoResize()) {\r\n setTimeout(() => this.resize(), 0); // Tick definition for direct value set\r\n }\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // handled by input binding\r\n }\r\n}\r\n","<div class=\"magary-textarea-wrapper\">\r\n <textarea\r\n #textarea\r\n [attr.rows]=\"rows()\"\r\n [attr.cols]=\"cols()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [disabled]=\"disabled()\"\r\n [class.magary-textarea]=\"true\"\r\n [class.disabled]=\"disabled()\"\r\n [class.auto-resize]=\"autoResize()\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n ></textarea>\r\n\r\n @if (showCounter() || maxlength()) {\r\n <div class=\"character-counter\">\r\n {{ length() }} {{ maxlength() ? \"/ \" + maxlength() : \"\" }}\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryTextArea } from './textarea';\r\n\r\n@NgModule({\r\n imports: [MagaryTextArea],\r\n exports: [MagaryTextArea],\r\n})\r\nexport class MagaryTextAreaModule {}\r\n","import {\r\n Component,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\n@Component({\r\n selector: 'magary-datepicker',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './datepicker.html',\r\n styleUrl: './datepicker.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryDatePicker),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MagaryDatePicker\r\n implements ControlValueAccessor, OnInit, OnDestroy\r\n{\r\n readonly placeholder = input<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly minDate = input<Date>();\r\n readonly maxDate = input<Date>();\r\n readonly selectionMode = input<'single' | 'range'>('single');\r\n\r\n readonly onSelect = output<any>(); // Date | Date[]\r\n\r\n // Use simple short names for week days\r\n readonly weekDays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\r\n readonly monthNames = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n\r\n // State\r\n readonly value = signal<any>(null); // Date | Date[] | null\r\n readonly isOpen = signal(false);\r\n readonly viewDate = signal(new Date()); // Current month being viewed\r\n readonly currentView = signal<'day' | 'month' | 'year'>('day');\r\n\r\n // Input Handling\r\n onInput(event: Event) {\r\n const val = (event.target as HTMLInputElement).value;\r\n if (!val) {\r\n this.value.set(null);\r\n this.onChange(null);\r\n return;\r\n }\r\n }\r\n\r\n // Computed\r\n readonly formattedValue = computed(() => {\r\n const val = this.value();\r\n if (!val) return '';\r\n\r\n const pipe = new DatePipe('en-US');\r\n if (Array.isArray(val)) {\r\n const start = pipe.transform(val[0], 'dd/MM/yyyy');\r\n const end = val[1] ? pipe.transform(val[1], 'dd/MM/yyyy') : '';\r\n return end ? `${start} - ${end}` : `${start}`;\r\n }\r\n return pipe.transform(val, 'dd/MM/yyyy');\r\n });\r\n\r\n readonly currentMonthName = computed(\r\n () => this.monthNames[this.viewDate().getMonth()],\r\n );\r\n readonly currentYear = computed(() => this.viewDate().getFullYear());\r\n\r\n readonly calendarDays = computed(() => {\r\n const year = this.viewDate().getFullYear();\r\n const month = this.viewDate().getMonth();\r\n const firstDay = new Date(year, month, 1);\r\n const lastDay = new Date(year, month + 1, 0);\r\n\r\n const days: (Date | null)[] = [];\r\n const startPadding = firstDay.getDay(); // 0 (Sun) - 6 (Sat)\r\n\r\n // Padding for empty start\r\n for (let i = 0; i < startPadding; i++) {\r\n days.push(null);\r\n }\r\n\r\n // Days\r\n for (let i = 1; i <= lastDay.getDate(); i++) {\r\n days.push(new Date(year, month, i));\r\n }\r\n\r\n return days;\r\n });\r\n\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private documentClickListener: ((event: Event) => void) | null = null;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n ngOnInit() {\r\n this.documentClickListener = (event: Event) => {\r\n if (\r\n this.isOpen() &&\r\n !this.elementRef.nativeElement.contains(event.target)\r\n ) {\r\n this.close();\r\n }\r\n };\r\n document.addEventListener('click', this.documentClickListener);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.documentClickListener) {\r\n document.removeEventListener('click', this.documentClickListener);\r\n }\r\n }\r\n\r\n // Interaction\r\n toggle() {\r\n if (this.disabled()) return;\r\n this.isOpen.update((v) => !v);\r\n\r\n if (!this.isOpen()) return;\r\n\r\n // Sync view\r\n let d: Date | null = null;\r\n const v = this.value();\r\n if (Array.isArray(v) && v[0]) d = v[0];\r\n else if (v instanceof Date) d = v;\r\n\r\n this.viewDate.set(d ? new Date(d) : new Date());\r\n }\r\n\r\n open() {\r\n if (!this.disabled() && !this.isOpen()) {\r\n this.toggle(); // Reusing toggle logic for sync\r\n }\r\n }\r\n\r\n close() {\r\n this.isOpen.set(false);\r\n this.onTouched();\r\n }\r\n\r\n onContainerClick(event: Event) {}\r\n\r\n // Navigation\r\n prev() {\r\n if (this.currentView() === 'day') {\r\n const d = new Date(this.viewDate());\r\n d.setMonth(d.getMonth() - 1);\r\n this.viewDate.set(d);\r\n } else if (this.currentView() === 'month') {\r\n const d = new Date(this.viewDate());\r\n d.setFullYear(d.getFullYear() - 1);\r\n this.viewDate.set(d);\r\n } else {\r\n const d = new Date(this.viewDate());\r\n d.setFullYear(d.getFullYear() - 10);\r\n this.viewDate.set(d);\r\n }\r\n }\r\n\r\n next() {\r\n if (this.currentView() === 'day') {\r\n const d = new Date(this.viewDate());\r\n d.setMonth(d.getMonth() + 1);\r\n this.viewDate.set(d);\r\n } else if (this.currentView() === 'month') {\r\n const d = new Date(this.viewDate());\r\n d.setFullYear(d.getFullYear() + 1);\r\n this.viewDate.set(d);\r\n } else {\r\n const d = new Date(this.viewDate());\r\n d.setFullYear(d.getFullYear() + 10);\r\n this.viewDate.set(d);\r\n }\r\n }\r\n\r\n switchView() {\r\n if (this.currentView() === 'day') {\r\n this.currentView.set('month');\r\n } else if (this.currentView() === 'month') {\r\n this.currentView.set('year');\r\n }\r\n }\r\n\r\n selectMonth(monthIndex: number) {\r\n const d = new Date(this.viewDate());\r\n d.setMonth(monthIndex);\r\n this.viewDate.set(d);\r\n this.currentView.set('day');\r\n }\r\n\r\n selectYear(year: number) {\r\n const d = new Date(this.viewDate());\r\n d.setFullYear(year);\r\n this.viewDate.set(d);\r\n this.currentView.set('month');\r\n }\r\n\r\n readonly years = computed(() => {\r\n const currentYear = this.viewDate().getFullYear();\r\n const startYear = currentYear - (currentYear % 10);\r\n const years = [];\r\n for (let i = 0; i < 12; i++) {\r\n years.push(startYear - 1 + i);\r\n }\r\n return years;\r\n });\r\n\r\n // Selection\r\n selectDate(date: Date | null) {\r\n if (!date || this.isDisabledDate(date)) return;\r\n\r\n if (this.selectionMode() === 'single') {\r\n this.value.set(date);\r\n this.onChange(date);\r\n this.onSelect.emit(date);\r\n this.close();\r\n } else {\r\n // Range Logic\r\n const current = this.value();\r\n let nextVal: Date[];\r\n\r\n if (\r\n !Array.isArray(current) ||\r\n !current[0] ||\r\n (current[0] && current[1])\r\n ) {\r\n // Start new range\r\n nextVal = [date];\r\n } else {\r\n // Complete range\r\n const start = current[0];\r\n if (date < start) {\r\n nextVal = [date, start];\r\n } else {\r\n nextVal = [start, date];\r\n }\r\n this.close(); // Close on second selection\r\n }\r\n\r\n this.value.set(nextVal);\r\n this.onChange(nextVal);\r\n this.onSelect.emit(nextVal);\r\n }\r\n }\r\n\r\n // Helpers\r\n isToday(date: Date | null): boolean {\r\n if (!date) return false;\r\n const today = new Date();\r\n return (\r\n date.getDate() === today.getDate() &&\r\n date.getMonth() === today.getMonth() &&\r\n date.getFullYear() === today.getFullYear()\r\n );\r\n }\r\n\r\n isSelected(date: Date | null): boolean {\r\n if (!date) return false;\r\n const v = this.value();\r\n\r\n if (this.selectionMode() === 'single') {\r\n if (!v || Array.isArray(v)) return false;\r\n return this.isSameDay(date, v);\r\n } else {\r\n // Range selection highlighting handled by start/end/range classes\r\n if (!Array.isArray(v) || !v[0]) return false;\r\n return (\r\n this.isSameDay(date, v[0]) || (!!v[1] && this.isSameDay(date, v[1]))\r\n );\r\n }\r\n }\r\n\r\n isRangeStart(date: Date | null): boolean {\r\n if (!date || this.selectionMode() !== 'range') return false;\r\n const v = this.value();\r\n if (!Array.isArray(v) || !v[0]) return false;\r\n return this.isSameDay(date, v[0]);\r\n }\r\n\r\n isRangeEnd(date: Date | null): boolean {\r\n if (!date || this.selectionMode() !== 'range') return false;\r\n const v = this.value();\r\n if (!Array.isArray(v) || !v[1]) return false;\r\n return this.isSameDay(date, v[1]);\r\n }\r\n\r\n isInRange(date: Date | null): boolean {\r\n if (!date || this.selectionMode() !== 'range') return false;\r\n const v = this.value();\r\n if (!Array.isArray(v) || !v[0] || !v[1]) return false;\r\n return date > v[0] && date < v[1];\r\n }\r\n\r\n private isSameDay(d1: Date, d2: Date): boolean {\r\n return (\r\n d1.getDate() === d2.getDate() &&\r\n d1.getMonth() === d2.getMonth() &&\r\n d1.getFullYear() === d2.getFullYear()\r\n );\r\n }\r\n\r\n isDisabledDate(date: Date | null): boolean {\r\n if (!date) return true;\r\n if (this.minDate() && date < this.minDate()!) return true;\r\n if (this.maxDate() && date > this.maxDate()!) return true;\r\n return false;\r\n }\r\n\r\n // CVA\r\n writeValue(value: any): void {\r\n // Handle Date or Date[] or String\r\n if (value) {\r\n if (Array.isArray(value)) {\r\n this.value.set(value); // Assume Date[]\r\n } else if (value instanceof Date) {\r\n this.value.set(value);\r\n } else {\r\n // Try parse string\r\n const d = new Date(value);\r\n if (!isNaN(d.getTime())) {\r\n this.value.set(d);\r\n }\r\n }\r\n } else {\r\n this.value.set(null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // Handled by signal\r\n }\r\n}\r\n","<div\r\n class=\"magary-datepicker\"\r\n [class.disabled]=\"disabled()\"\r\n (click)=\"onContainerClick($event)\"\r\n>\r\n <div class=\"input-group\">\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"placeholder() || 'dd/mm/yyyy'\"\r\n [value]=\"formattedValue()\"\r\n [disabled]=\"disabled()\"\r\n (focus)=\"open()\"\r\n (input)=\"onInput($event)\"\r\n class=\"datepicker-input\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"datepicker-trigger\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"toggle()\"\r\n tabindex=\"-1\"\r\n >\r\n <lucide-icon name=\"calendar\" [size]=\"18\"></lucide-icon>\r\n </button>\r\n </div>\r\n\r\n @if (isOpen()) {\r\n <div class=\"datepicker-panel fade-in\">\r\n <div class=\"calendar-header\">\r\n <button class=\"nav-btn\" (click)=\"prev()\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n <button class=\"view-switch-btn\" (click)=\"switchView()\">\r\n @if (currentView() === \"day\") {\r\n {{ currentMonthName() }} {{ currentYear() }}\r\n } @else if (currentView() === \"month\") {\r\n {{ currentYear() }}\r\n } @else {\r\n {{ years()[0] }} - {{ years()[10] }}\r\n }\r\n </button>\r\n <button class=\"nav-btn\" (click)=\"next()\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Day View -->\r\n @if (currentView() === \"day\") {\r\n <div class=\"calendar-grid\">\r\n @for (day of weekDays; track day) {\r\n <div class=\"weekday\">{{ day }}</div>\r\n }\r\n\r\n @for (day of calendarDays(); track $index) {\r\n <div\r\n class=\"day\"\r\n [class.empty]=\"!day\"\r\n [class.today]=\"isToday(day)\"\r\n [class.selected]=\"isSelected(day)\"\r\n [class.disabled]=\"isDisabledDate(day)\"\r\n [class.range-start]=\"isRangeStart(day)\"\r\n [class.range-end]=\"isRangeEnd(day)\"\r\n [class.in-range]=\"isInRange(day)\"\r\n (click)=\"selectDate(day)\"\r\n >\r\n {{ day?.getDate() }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Month View -->\r\n @if (currentView() === \"month\") {\r\n <div class=\"month-grid\">\r\n @for (month of monthNames; track month; let i = $index) {\r\n <div class=\"month-item\" (click)=\"selectMonth(i)\">\r\n {{ month.substring(0, 3) }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Year View -->\r\n @if (currentView() === \"year\") {\r\n <div class=\"year-grid\">\r\n @for (year of years(); track year) {\r\n <div\r\n class=\"year-item\"\r\n [class.current]=\"year === currentYear()\"\r\n (click)=\"selectYear(year)\"\r\n >\r\n {{ year }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryDatePicker } from './datepicker';\r\n\r\n@NgModule({\r\n imports: [MagaryDatePicker],\r\n exports: [MagaryDatePicker],\r\n})\r\nexport class MagaryDatePickerModule {}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n Injector,\r\n signal,\r\n computed,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n FormsModule,\r\n} from '@angular/forms';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\nexport const INPUTNUMBER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryInputNumber),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'magary-input-number',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule, FormsModule],\r\n templateUrl: './input-number.html',\r\n styleUrl: './input-number.scss',\r\n providers: [INPUTNUMBER_VALUE_ACCESSOR],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'magary-inputnumber-wrapper',\r\n '[class.magary-inputnumber-buttons-stacked]':\r\n 'showButtons() && buttonLayout() === \"stacked\"',\r\n '[class.magary-inputnumber-buttons-horizontal]':\r\n 'showButtons() && buttonLayout() === \"horizontal\"',\r\n '[class.magary-inputnumber-vertical]':\r\n 'showButtons() && buttonLayout() === \"vertical\"',\r\n },\r\n})\r\nexport class MagaryInputNumber implements OnInit, ControlValueAccessor {\r\n // Signal Inputs\r\n value = model<number | null>(null);\r\n\r\n format = input<boolean>(true);\r\n showButtons = input<boolean>(false);\r\n buttonLayout = input<'stacked' | 'horizontal' | 'vertical'>('stacked');\r\n incrementButtonClass = input<string>('');\r\n decrementButtonClass = input<string>('');\r\n incrementButtonIcon = input<string>('chevron-up');\r\n decrementButtonIcon = input<string>('chevron-down');\r\n\r\n locale = input<string>('en-US');\r\n localeMatcher = input<'lookup' | 'best fit'>('best fit');\r\n mode = input<'decimal' | 'currency' | 'percent'>('decimal');\r\n currency = input<string>('USD');\r\n currencyDisplay = input<'symbol' | 'narrowSymbol' | 'code' | 'name'>(\r\n 'symbol',\r\n );\r\n useGrouping = input<boolean>(true);\r\n minFractionDigits = input<number | undefined>(undefined);\r\n maxFractionDigits = input<number | undefined>(undefined);\r\n\r\n prefix = input<string>('');\r\n suffix = input<string>('');\r\n\r\n min = input<number | null>(null);\r\n max = input<number | null>(null);\r\n step = input<number>(1);\r\n allowEmpty = input<boolean>(true);\r\n inputStyle = input<{ [klass: string]: any } | null>(null);\r\n inputStyleClass = input<string>('');\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string>('');\r\n placeholder = input<string>('');\r\n size = input<number | null>(null);\r\n maxlength = input<number | null>(null);\r\n tabindex = input<number | null>(null);\r\n disabled = input<boolean>(false);\r\n readonly = input<boolean>(false);\r\n name = input<string>('');\r\n inputId = input<string>('');\r\n\r\n @Output() onInput = new EventEmitter<any>();\r\n @Output() onFocus = new EventEmitter<any>();\r\n @Output() onBlur = new EventEmitter<any>();\r\n @Output() onKeyDown = new EventEmitter<any>();\r\n\r\n @ViewChild('input') inputElement!: ElementRef;\r\n\r\n focused = signal<boolean>(false);\r\n\r\n // Internal logic\r\n public formattedValue = signal<string>('');\r\n\r\n onModelChange: Function = () => {};\r\n onModelTouched: Function = () => {};\r\n\r\n ngOnInit() {\r\n // initial format\r\n if (this.value() != null) {\r\n this.updateInput(this.value(), false);\r\n }\r\n }\r\n\r\n // --- Formatting ---\r\n\r\n getFormatter(): Intl.NumberFormat {\r\n const options: Intl.NumberFormatOptions = {\r\n localeMatcher: this.localeMatcher(),\r\n useGrouping: this.useGrouping(),\r\n minimumFractionDigits: this.minFractionDigits(),\r\n maximumFractionDigits: this.maxFractionDigits(),\r\n };\r\n\r\n if (this.mode() === 'currency') {\r\n options.style = 'currency';\r\n options.currency = this.currency();\r\n options.currencyDisplay = this.currencyDisplay();\r\n } else if (this.mode() === 'percent') {\r\n options.style = 'percent';\r\n } else {\r\n options.style = 'decimal';\r\n }\r\n\r\n return new Intl.NumberFormat(this.locale(), options);\r\n }\r\n\r\n formatValue(val: number): string {\r\n let formatted = '';\r\n if (val != null) {\r\n if (this.format()) {\r\n formatted = this.getFormatter().format(val);\r\n } else {\r\n formatted = val.toString();\r\n }\r\n }\r\n\r\n if (this.prefix()) {\r\n formatted = this.prefix() + formatted;\r\n }\r\n\r\n if (this.suffix()) {\r\n formatted = formatted + this.suffix();\r\n }\r\n\r\n return formatted;\r\n }\r\n\r\n parseValue(text: string): number | null {\r\n let cleanText = text;\r\n\r\n if (this.prefix()) {\r\n cleanText = cleanText.replace(this.prefix(), '');\r\n }\r\n if (this.suffix()) {\r\n cleanText = cleanText.replace(this.suffix(), '');\r\n }\r\n\r\n // This is a simplified parser. Robust parsing needs more defined regex based on locale.\r\n // For now, assuming standard decimals or simple currency usage.\r\n // We remove all non-numeric characters except '.', '-', and ',' if locale uses comma.\r\n\r\n // Simplest approach: remove currency symbols and group separators.\r\n // NOTE: This will fail for advanced locale parsing without a library.\r\n // We will assume standard input behavior: user types raw numbers, we format on blur.\r\n\r\n // Or we bind to an unformatted value internally?\r\n // Let's rely on standard parseFloat for now, stripping grouping separators.\r\n\r\n cleanText = cleanText.trim();\r\n if (cleanText.length === 0) {\r\n return null;\r\n }\r\n\r\n // Remove group separators (usually ,)\r\n // TODO: Improve locale detection for separators\r\n const isCommaDecimal = this.getDecimalSeparator() === ',';\r\n\r\n if (isCommaDecimal) {\r\n cleanText = cleanText.replace(/\\./g, ''); // remove group\r\n cleanText = cleanText.replace(/,/g, '.'); // replace decimal\r\n } else {\r\n cleanText = cleanText.replace(/,/g, ''); // remove group\r\n }\r\n\r\n // Remove currency symbols (regex for non-digit/dot/minus)\r\n cleanText = cleanText.replace(/[^\\d.-]/g, '');\r\n\r\n const parsed = parseFloat(cleanText);\r\n return isNaN(parsed) ? null : parsed;\r\n }\r\n\r\n getDecimalSeparator(): string {\r\n const formatter = new Intl.NumberFormat(this.locale());\r\n const parts = formatter.formatToParts(1.1);\r\n const part = parts.find((p) => p.type === 'decimal');\r\n return part ? part.value : '.';\r\n }\r\n\r\n // --- Event Handlers ---\r\n\r\n onUserInput(event: Event) {\r\n const inputVal = (event.target as HTMLInputElement).value;\r\n\r\n // If not formatting, just take value\r\n if (!this.format()) {\r\n const val = parseFloat(inputVal);\r\n this.updateModel(isNaN(val) ? null : val);\r\n this.onInput.emit(event);\r\n return;\r\n }\r\n\r\n // If formatting, we usually wait for blur to format,\r\n // OR we allow free typing and parse on the fly?\r\n // Usually formatting interferes with typing (caret jumps).\r\n // Let's parse but NOT re-format the view value while typing.\r\n const parsed = this.parseValue(inputVal);\r\n this.value.set(parsed);\r\n this.onModelChange(parsed);\r\n this.onInput.emit(event);\r\n }\r\n\r\n onInputFocus(event: FocusEvent) {\r\n this.focused.set(true);\r\n this.onFocus.emit(event);\r\n }\r\n\r\n onInputBlur(event: FocusEvent) {\r\n this.focused.set(false);\r\n this.onModelTouched();\r\n\r\n // Re-format on blur\r\n const currentVal = this.value();\r\n this.updateInput(currentVal, true);\r\n\r\n this.onBlur.emit(event);\r\n }\r\n\r\n onInputKeyDown(event: KeyboardEvent) {\r\n this.onKeyDown.emit(event);\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.spin(event, 1);\r\n event.preventDefault();\r\n } else if (event.key === 'ArrowDown') {\r\n this.spin(event, -1);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // --- Spinners ---\r\n\r\n spin(event: Event, dir: number) {\r\n const step = this.step() * dir;\r\n let current = this.value() || 0;\r\n\r\n let newValue = current + step;\r\n\r\n if (this.min() !== null && newValue < this.min()!) {\r\n newValue = this.min()!;\r\n }\r\n\r\n if (this.max() !== null && newValue > this.max()!) {\r\n newValue = this.max()!;\r\n }\r\n\r\n this.updateModel(newValue);\r\n this.updateInput(newValue, true); // format immediately\r\n }\r\n\r\n updateModel(val: number | null) {\r\n this.value.set(val);\r\n this.onModelChange(val);\r\n }\r\n\r\n updateInput(val: number | null, updateView: boolean) {\r\n if (val === null) {\r\n this.formattedValue.set('');\r\n if (updateView && this.inputElement)\r\n this.inputElement.nativeElement.value = '';\r\n } else {\r\n const formatted = this.formatValue(val);\r\n this.formattedValue.set(formatted);\r\n if (updateView && this.inputElement)\r\n this.inputElement.nativeElement.value = formatted;\r\n }\r\n }\r\n\r\n // --- CVA ---\r\n\r\n writeValue(value: number): void {\r\n this.value.set(value);\r\n this.updateInput(value, true);\r\n }\r\n\r\n registerOnChange(fn: Function): void {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: Function): void {\r\n this.onModelTouched = fn;\r\n }\r\n\r\n setDisabledState(val: boolean): void {\r\n // Handled by signal input usually, but CVA calls are directive-driven\r\n // We can't write to signal input easily?\r\n // Actually Angular signal inputs are readonly from inside.\r\n // We need a separate internal state or just rely on 'disabled' attribute binding if using template driven.\r\n // But implementation needs to handle disabled via CVA.\r\n // We will just use the input binding for now.\r\n }\r\n}\r\n","<!-- ============================================\r\n HTML Template - InputNumber Component\r\n ============================================ -->\r\n\r\n<span\r\n class=\"magary-inputnumber\"\r\n [ngClass]=\"{\r\n 'magary-inputnumber-buttons-stacked':\r\n showButtons() && buttonLayout() === 'stacked',\r\n 'magary-inputnumber-buttons-horizontal':\r\n showButtons() && buttonLayout() === 'horizontal',\r\n 'magary-inputnumber-focused': focused(),\r\n 'magary-disabled': disabled(),\r\n }\"\r\n [style]=\"style()\"\r\n [attr.data-mode]=\"buttonLayout()\"\r\n>\r\n <input\r\n #input\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.name]=\"name()\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.size]=\"size()\"\r\n [attr.maxlength]=\"maxlength()\"\r\n [attr.tabindex]=\"tabindex()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [value]=\"formattedValue()\"\r\n (input)=\"onUserInput($event)\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n (keydown)=\"onInputKeyDown($event)\"\r\n class=\"magary-inputnumber-input\"\r\n [ngClass]=\"inputStyleClass()\"\r\n [ngStyle]=\"inputStyle()\"\r\n />\r\n\r\n <!-- Stacked Layout: Botones verticales dentro del input -->\r\n @if (showButtons() && buttonLayout() === \"stacked\") {\r\n <span class=\"magary-inputnumber-button-group\">\r\n <button\r\n type=\"button\"\r\n class=\"magary-inputnumber-button magary-inputnumber-button-up\"\r\n [ngClass]=\"incrementButtonClass()\"\r\n [disabled]=\"disabled() || (max() !== null && value()! >= max()!)\"\r\n (click)=\"spin($event, 1)\"\r\n tabindex=\"-1\"\r\n >\r\n <i-lucide\r\n [name]=\"incrementButtonIcon() || 'chevron-up'\"\r\n class=\"magary-icon\"\r\n ></i-lucide>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"magary-inputnumber-button magary-inputnumber-button-down\"\r\n [ngClass]=\"decrementButtonClass()\"\r\n [disabled]=\"disabled() || (min() !== null && value()! <= min()!)\"\r\n (click)=\"spin($event, -1)\"\r\n tabindex=\"-1\"\r\n >\r\n <i-lucide\r\n [name]=\"decrementButtonIcon() || 'chevron-down'\"\r\n class=\"magary-icon\"\r\n ></i-lucide>\r\n </button>\r\n </span>\r\n }\r\n\r\n <!-- Horizontal Layout: Botones a los lados del input -->\r\n @if (showButtons() && buttonLayout() === \"horizontal\") {\r\n <!-- Botón Decrementar (Izquierda) -->\r\n <button\r\n type=\"button\"\r\n class=\"magary-inputnumber-button magary-inputnumber-button-down\"\r\n [ngClass]=\"decrementButtonClass()\"\r\n [disabled]=\"disabled() || (min() !== null && value()! <= min()!)\"\r\n (click)=\"spin($event, -1)\"\r\n tabindex=\"-1\"\r\n >\r\n <i-lucide\r\n [name]=\"decrementButtonIcon() || 'minus'\"\r\n class=\"magary-icon\"\r\n ></i-lucide>\r\n </button>\r\n\r\n <!-- Botón Incrementar (Derecha) -->\r\n <button\r\n type=\"button\"\r\n class=\"magary-inputnumber-button magary-inputnumber-button-up\"\r\n [ngClass]=\"incrementButtonClass()\"\r\n [disabled]=\"disabled() || (max() !== null && value()! >= max()!)\"\r\n (click)=\"spin($event, 1)\"\r\n tabindex=\"-1\"\r\n >\r\n <i-lucide\r\n [name]=\"incrementButtonIcon() || 'plus'\"\r\n class=\"magary-icon\"\r\n ></i-lucide>\r\n </button>\r\n }\r\n</span>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n OnDestroy,\r\n Renderer2,\r\n ChangeDetectorRef,\r\n inject,\r\n input,\r\n signal,\r\n computed,\r\n effect,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n FormsModule,\r\n} from '@angular/forms';\r\n\r\nexport const SLIDER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagarySlider),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'magary-slider',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './slider.html',\r\n styleUrl: './slider.scss',\r\n providers: [SLIDER_VALUE_ACCESSOR],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'magary-slider',\r\n '[class.magary-slider-horizontal]': 'orientation() === \"horizontal\"',\r\n '[class.magary-slider-vertical]': 'orientation() === \"vertical\"',\r\n '[class.magary-disabled]': 'disabled()',\r\n },\r\n})\r\nexport class MagarySlider implements ControlValueAccessor, OnDestroy {\r\n // Inputs\r\n min = input<number>(0);\r\n max = input<number>(100);\r\n step = input<number>(1);\r\n range = input<boolean>(false);\r\n orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n disabled = input<boolean>(false);\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string>('');\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n @Output() onSlideEnd = new EventEmitter<any>();\r\n\r\n @ViewChild('sliderHandle') sliderHandle!: ElementRef;\r\n @ViewChild('sliderHandleStart') sliderHandleStart!: ElementRef;\r\n @ViewChild('sliderHandleEnd') sliderHandleEnd!: ElementRef;\r\n\r\n value = model<number | number[] | null>(null);\r\n\r\n // Internal state\r\n dragging = signal<boolean>(false);\r\n handleIndex = signal<number | null>(null); // 0 for start/single, 1 for end\r\n\r\n private document = inject(DOCUMENT);\r\n private renderer = inject(Renderer2);\r\n private cdr = inject(ChangeDetectorRef);\r\n private el = inject(ElementRef);\r\n\r\n private dragListener: (() => void) | null = null;\r\n private upListener: (() => void) | null = null;\r\n\r\n // Computed values for view\r\n handle1Pos = computed(() => {\r\n if (this.range()) {\r\n const v = this.value() as number[];\r\n if (!v) return 0;\r\n return this.calculatePos(v[0]);\r\n } else {\r\n const v = this.value() as number;\r\n if (v === null) return 0;\r\n return this.calculatePos(v);\r\n }\r\n });\r\n\r\n handle2Pos = computed(() => {\r\n if (this.range()) {\r\n const v = this.value() as number[];\r\n if (!v) return 100;\r\n return this.calculatePos(v[1]);\r\n }\r\n return 0; // Not used\r\n });\r\n\r\n rangeStartPos = computed(() => {\r\n if (this.range()) {\r\n return this.handle1Pos();\r\n }\r\n return 0;\r\n });\r\n\r\n rangeWidth = computed(() => {\r\n if (this.range()) {\r\n return this.handle2Pos() - this.handle1Pos();\r\n }\r\n return this.handle1Pos();\r\n });\r\n\r\n onModelChange: Function = () => {};\r\n onModelTouched: Function = () => {};\r\n\r\n constructor() {}\r\n\r\n calculatePos(val: number): number {\r\n const min = this.min();\r\n const max = this.max();\r\n if (val < min) val = min;\r\n if (val > max) val = max;\r\n return ((val - min) / (max - min)) * 100;\r\n }\r\n\r\n updateValue(val: number, handleIdx: number = 0) {\r\n if (this.range()) {\r\n let current = [\r\n ...((this.value() as number[]) || [this.min(), this.max()]),\r\n ];\r\n\r\n // Constrain\r\n if (handleIdx === 0) {\r\n if (val > current[1]) val = current[1];\r\n } else {\r\n if (val < current[0]) val = current[0];\r\n }\r\n\r\n current[handleIdx] = val;\r\n this.value.set(current);\r\n this.onModelChange(current);\r\n this.onChange.emit({ originalEvent: event, value: current });\r\n } else {\r\n this.value.set(val);\r\n this.onModelChange(val);\r\n this.onChange.emit({ originalEvent: event, value: val });\r\n }\r\n }\r\n\r\n calculateValueFromPos(pos: number): number {\r\n // pos is 0-1 percentage-ish\r\n if (pos < 0) pos = 0;\r\n if (pos > 1) pos = 1;\r\n\r\n const min = this.min();\r\n const max = this.max();\r\n const step = this.step();\r\n\r\n let rawValue = (max - min) * pos + min;\r\n\r\n // Step snapping\r\n // round( (rawValue - min) / step ) * step + min\r\n let steps = Math.round((rawValue - min) / step);\r\n let value = steps * step + min;\r\n\r\n // Float precision fix\r\n // simple approach: assume step precision\r\n // Or simpler: Number(value.toFixed(10)) logic?\r\n\r\n return value;\r\n }\r\n\r\n // Events\r\n onMouseDown(event: MouseEvent, index: number) {\r\n if (this.disabled()) return;\r\n\r\n event.preventDefault(); // prevent selection\r\n this.dragging.set(true);\r\n this.handleIndex.set(index);\r\n this.bindDragListeners();\r\n }\r\n\r\n onBarClick(event: MouseEvent) {\r\n if (this.disabled() || this.dragging()) return;\r\n // Calculate clicked value\r\n // Decide which handle to move if range\r\n\r\n const rect = this.el.nativeElement\r\n .querySelector('.magary-slider-rail')\r\n .getBoundingClientRect();\r\n const vertical = this.orientation() === 'vertical';\r\n\r\n let percent = vertical\r\n ? (rect.bottom - event.clientY) / rect.height\r\n : (event.clientX - rect.left) / rect.width;\r\n\r\n const newVal = this.calculateValueFromPos(percent);\r\n\r\n if (this.range()) {\r\n const current = (this.value() as number[]) || [this.min(), this.max()];\r\n const dist1 = Math.abs(current[0] - newVal);\r\n const dist2 = Math.abs(current[1] - newVal);\r\n\r\n if (dist1 < dist2) {\r\n this.updateValue(newVal, 0);\r\n } else if (dist2 < dist1) {\r\n this.updateValue(newVal, 1);\r\n } else {\r\n // Equal distance, maybe move the nearest or start?\r\n // Typically move the one that creates a valid range or user intent.\r\n // Logic: if click is < v0, move v0. if click > v1, move v1. if in between, closest.\r\n if (newVal < current[0]) this.updateValue(newVal, 0);\r\n else if (newVal > current[1]) this.updateValue(newVal, 1);\r\n else this.updateValue(newVal, 0); // Default to start?\r\n }\r\n } else {\r\n this.updateValue(newVal, 0);\r\n }\r\n }\r\n\r\n bindDragListeners() {\r\n if (!this.dragListener) {\r\n this.dragListener = this.renderer.listen(\r\n this.document,\r\n 'mousemove',\r\n (event) => {\r\n this.onDrag(event);\r\n },\r\n );\r\n }\r\n if (!this.upListener) {\r\n this.upListener = this.renderer.listen(\r\n this.document,\r\n 'mouseup',\r\n (event) => {\r\n this.onDragEnd(event);\r\n },\r\n );\r\n }\r\n }\r\n\r\n unbindDragListeners() {\r\n if (this.dragListener) {\r\n this.dragListener();\r\n this.dragListener = null;\r\n }\r\n if (this.upListener) {\r\n this.upListener();\r\n this.upListener = null;\r\n }\r\n }\r\n\r\n onDrag(event: MouseEvent) {\r\n if (this.dragging()) {\r\n const rect = this.el.nativeElement\r\n .querySelector('.magary-slider-rail')\r\n .getBoundingClientRect();\r\n const vertical = this.orientation() === 'vertical';\r\n\r\n let percent = vertical\r\n ? (rect.bottom - event.clientY) / rect.height\r\n : (event.clientX - rect.left) / rect.width;\r\n\r\n const newVal = this.calculateValueFromPos(percent);\r\n this.updateValue(newVal, this.handleIndex()!);\r\n }\r\n }\r\n\r\n onDragEnd(event: MouseEvent) {\r\n if (this.dragging()) {\r\n this.dragging.set(false);\r\n this.handleIndex.set(null);\r\n this.unbindDragListeners();\r\n this.onSlideEnd.emit({ originalEvent: event, value: this.value() });\r\n }\r\n }\r\n\r\n // CVA\r\n writeValue(value: any): void {\r\n this.value.set(value);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: Function): void {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: Function): void {\r\n this.onModelTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n // Input signal disabled could be updated if it wasn't readonly.\r\n // But typically we rely on input binding `[disabled]`.\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unbindDragListeners();\r\n }\r\n}\r\n","<div class=\"magary-slider-rail\" (click)=\"onBarClick($event)\">\r\n <div\r\n class=\"magary-slider-range\"\r\n [ngStyle]=\"\r\n orientation() === 'horizontal'\r\n ? { left: rangeStartPos() + '%', width: rangeWidth() + '%' }\r\n : { bottom: rangeStartPos() + '%', height: rangeWidth() + '%' }\r\n \"\r\n ></div>\r\n\r\n @if (!range()) {\r\n <span\r\n #sliderHandle\r\n class=\"magary-slider-handle\"\r\n [ngStyle]=\"\r\n orientation() === 'horizontal'\r\n ? { left: handle1Pos() + '%' }\r\n : { bottom: handle1Pos() + '%' }\r\n \"\r\n (mousedown)=\"onMouseDown($event, 0)\"\r\n >\r\n </span>\r\n } @else {\r\n <span\r\n #sliderHandleStart\r\n class=\"magary-slider-handle\"\r\n [ngStyle]=\"\r\n orientation() === 'horizontal'\r\n ? { left: handle1Pos() + '%' }\r\n : { bottom: handle1Pos() + '%' }\r\n \"\r\n (mousedown)=\"onMouseDown($event, 0)\"\r\n >\r\n </span>\r\n <span\r\n #sliderHandleEnd\r\n class=\"magary-slider-handle\"\r\n [ngStyle]=\"\r\n orientation() === 'horizontal'\r\n ? { left: handle2Pos() + '%' }\r\n : { bottom: handle2Pos() + '%' }\r\n \"\r\n (mousedown)=\"onMouseDown($event, 1)\"\r\n >\r\n </span>\r\n }\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Output,\r\n ViewEncapsulation,\r\n forwardRef,\r\n input,\r\n model,\r\n signal,\r\n inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\nexport const RATING_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagaryRating),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'magary-rating',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './rating.html',\r\n styleUrl: './rating.scss',\r\n providers: [RATING_VALUE_ACCESSOR],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'magary-rating',\r\n '[class.magary-disabled]': 'disabled()',\r\n '[class.magary-readonly]': 'readonly()',\r\n },\r\n})\r\nexport class MagaryRating implements ControlValueAccessor {\r\n // Inputs\r\n disabled = input<boolean>(false);\r\n readonly = input<boolean>(false);\r\n stars = input<number>(5);\r\n cancel = input<boolean>(true);\r\n iconOn = input<string>('star'); // full star\r\n iconOff = input<string>('star'); // empty star\r\n iconCancel = input<string>('ban');\r\n\r\n // Model\r\n value = model<number | null>(null);\r\n\r\n // Events\r\n @Output() onRate = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<any>();\r\n\r\n // State\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n onModelChange: Function = () => {};\r\n onModelTouched: Function = () => {};\r\n\r\n constructor() {}\r\n\r\n get starsArray() {\r\n // Create array of size stars()\r\n return new Array(this.stars()).fill(0).map((_, i) => i + 1);\r\n }\r\n\r\n rate(event: Event, i: number) {\r\n if (this.readonly() || this.disabled()) {\r\n return;\r\n }\r\n\r\n this.value.set(i);\r\n this.onModelChange(i);\r\n this.onRate.emit({ originalEvent: event, value: i });\r\n event.preventDefault();\r\n }\r\n\r\n clear(event: Event) {\r\n if (this.readonly() || this.disabled()) {\r\n return;\r\n }\r\n\r\n this.value.set(null);\r\n this.onModelChange(null);\r\n this.onCancel.emit(event);\r\n event.preventDefault();\r\n }\r\n\r\n // CVA\r\n writeValue(val: number | null): void {\r\n this.value.set(val);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: Function): void {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: Function): void {\r\n this.onModelTouched = fn;\r\n }\r\n\r\n setDisabledState(val: boolean): void {\r\n // We use signal inputs generally, but for CVA directive compatibility we should handle this.\r\n // However, signals are read-only from here.\r\n // We can just rely on the template binding to `disabled()` input if used as component input,\r\n // but `setDisabledState` strictly comes from forms API.\r\n // For now, let's assume usage via [disabled] input binding for simplicity in standalone signals world\r\n // or we would need a separate signal for formDisabled state combined with input disabled.\r\n }\r\n}\r\n","@if (cancel() && !readonly()) {\r\n <div\r\n class=\"magary-rating-item magary-rating-cancel\"\r\n (click)=\"clear($event)\"\r\n [class.magary-hidden]=\"disabled()\"\r\n >\r\n <lucide-icon [name]=\"iconCancel()\" [size]=\"20\"></lucide-icon>\r\n </div>\r\n}\r\n\r\n@for (i of starsArray; track i) {\r\n <div\r\n class=\"magary-rating-item\"\r\n [class.magary-rating-item-active]=\"(value() || 0) >= i\"\r\n (click)=\"rate($event, i)\"\r\n >\r\n <!-- We toggle fill vs outline based on active state or always use star icon with class modification? -->\r\n <!-- Let's assume we use the same icon name but css handles fill? Or we swap icons? -->\r\n <!-- Simplest: Icon name is passed. If we want filled star vs empty star: -->\r\n <!-- Lucide 'star' is outline. filled is different? No, Lucide 'star' can be filled via fill attribute in SVG or class. -->\r\n <!-- But lucide-angular component doesn't easily expose fill prop dynamically inside icon? -->\r\n <!-- We can use class to fill the svg path. -->\r\n\r\n <lucide-icon\r\n [name]=\"(value() || 0) >= i ? iconOn() : iconOff()\"\r\n [class.filled-star]=\"(value() || 0) >= i\"\r\n [size]=\"20\"\r\n >\r\n </lucide-icon>\r\n </div>\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n signal,\r\n computed,\r\n} from '@angular/core';\r\n\r\nimport { CommonModule, NgStyle } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { ElementRef, viewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'magary-image',\r\n standalone: true,\r\n imports: [CommonModule, NgStyle, LucideAngularModule],\r\n templateUrl: './image.html',\r\n styleUrls: ['./image.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'magary-image',\r\n },\r\n})\r\nexport class MagaryImage implements OnDestroy {\r\n private dialog = viewChild<ElementRef<HTMLDialogElement>>('previewDialog');\r\n\r\n src = input<string | undefined>(undefined);\r\n\r\n alt = input<string | undefined>(undefined);\r\n\r\n width = input<string | undefined>(undefined);\r\n\r\n height = input<string | undefined>(undefined);\r\n\r\n objectFit = input<'cover' | 'contain' | 'fill' | 'none' | 'scale-down'>(\r\n 'cover',\r\n );\r\n\r\n loading = input<'lazy' | 'eager'>('lazy');\r\n\r\n preview = input<boolean>(false);\r\n\r\n onLoad = output<Event>();\r\n\r\n onError = output<Event>();\r\n\r\n loaded: boolean = false;\r\n\r\n error: boolean = false;\r\n\r\n onImageLoad(event: Event) {\r\n this.loaded = true;\r\n this.onLoad.emit(event);\r\n }\r\n\r\n onImageError(event: Event) {\r\n this.error = true;\r\n this.onError.emit(event);\r\n }\r\n\r\n rotate = signal<number>(0);\r\n\r\n scale = signal<number>(1);\r\n\r\n onPreviewImageClick(event: Event) {\r\n event.stopPropagation();\r\n if (this.preview()) {\r\n this.dialog()?.nativeElement.showModal();\r\n }\r\n }\r\n\r\n closePreview() {\r\n this.dialog()?.nativeElement.close();\r\n this.rotate.set(0);\r\n this.scale.set(1);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.dialog()?.nativeElement?.open) {\r\n this.dialog()?.nativeElement.close();\r\n }\r\n }\r\n\r\n zoomIn() {\r\n this.scale.update((s) => s + 0.1);\r\n }\r\n\r\n zoomOut() {\r\n if (this.scale() > 0.5) {\r\n this.scale.update((s) => s - 0.1);\r\n }\r\n }\r\n\r\n rotateRight() {\r\n this.rotate.update((r) => r + 90);\r\n }\r\n\r\n rotateLeft() {\r\n this.rotate.update((r) => r - 90);\r\n }\r\n\r\n download() {\r\n const src = this.src();\r\n if (src) {\r\n const link = document.createElement('a');\r\n link.href = src;\r\n link.download = this.alt() || 'image';\r\n link.click();\r\n }\r\n }\r\n\r\n imagePreviewStyle = computed(() => ({\r\n transform: `rotate(${this.rotate()}deg) scale(${this.scale()})`,\r\n }));\r\n}\r\n","<div\r\n class=\"magary-image-content\"\r\n [ngStyle]=\"{ width: width(), height: height() }\"\r\n>\r\n <img\r\n [src]=\"src()\"\r\n [alt]=\"alt()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [style.object-fit]=\"objectFit()\"\r\n [loading]=\"loading()\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n [ngStyle]=\"preview() ? { cursor: 'pointer' } : {}\"\r\n (click)=\"onPreviewImageClick($event)\"\r\n />\r\n</div>\r\n\r\n<dialog\r\n #previewDialog\r\n class=\"magary-image-preview-dialog\"\r\n (click)=\"closePreview()\"\r\n (cancel)=\"closePreview()\"\r\n>\r\n <div class=\"magary-image-toolbar\" (click)=\"$event.stopPropagation()\">\r\n <button class=\"magary-image-action\" (click)=\"zoomOut()\">\r\n <lucide-icon name=\"zoom-out\"></lucide-icon>\r\n </button>\r\n <button class=\"magary-image-action\" (click)=\"zoomIn()\">\r\n <lucide-icon name=\"zoom-in\"></lucide-icon>\r\n </button>\r\n <button class=\"magary-image-action\" (click)=\"rotateLeft()\">\r\n <lucide-icon name=\"rotate-ccw\"></lucide-icon>\r\n </button>\r\n <button class=\"magary-image-action\" (click)=\"rotateRight()\">\r\n <lucide-icon name=\"rotate-cw\"></lucide-icon>\r\n </button>\r\n <button class=\"magary-image-action\" (click)=\"download()\">\r\n <lucide-icon name=\"download\"></lucide-icon>\r\n </button>\r\n <button class=\"magary-image-action\" (click)=\"closePreview()\">\r\n <lucide-icon name=\"x\"></lucide-icon>\r\n </button>\r\n </div>\r\n <div class=\"magary-image-preview-content\" (click)=\"$event.stopPropagation()\">\r\n <img\r\n [src]=\"src()\"\r\n [alt]=\"alt()\"\r\n [ngStyle]=\"imagePreviewStyle()\"\r\n class=\"preview-image\"\r\n />\r\n </div>\r\n</dialog>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgStyle } from '@angular/common';\r\nimport { MagaryImage } from './image';\r\n\r\n@NgModule({\r\n imports: [CommonModule, NgStyle, MagaryImage],\r\n exports: [MagaryImage],\r\n})\r\nexport class MagaryImageModule {}\r\n","import {\r\n Component,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n signal,\r\n computed,\r\n OnInit,\r\n OnDestroy,\r\n Inject,\r\n PLATFORM_ID,\r\n AfterViewInit,\r\n HostListener,\r\n NgModule,\r\n input,\r\n model,\r\n output,\r\n viewChild,\r\n contentChildren,\r\n effect,\r\n} from '@angular/core';\r\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\r\nimport {\r\n LucideAngularModule,\r\n Play,\r\n Pause,\r\n Maximize,\r\n Minimize,\r\n Download,\r\n Share2,\r\n ZoomIn,\r\n ZoomOut,\r\n RotateCcw,\r\n ChevronLeft,\r\n ChevronRight,\r\n X,\r\n MonitorPlay,\r\n} from 'lucide-angular';\r\n\r\nexport interface GalleriaItem {\r\n src: string;\r\n alt?: string;\r\n title?: string;\r\n description?: string;\r\n thumbnail?: string;\r\n type?: 'image' | 'video';\r\n videoUrl?: string;\r\n}\r\n\r\nexport interface GalleriaResponsiveOptions {\r\n breakpoint: string;\r\n numVisible: number;\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n LucideAngularModule.pick({\r\n Play,\r\n Pause,\r\n Maximize,\r\n Minimize,\r\n Download,\r\n Share2,\r\n ZoomIn,\r\n ZoomOut,\r\n RotateCcw,\r\n ChevronLeft,\r\n ChevronRight,\r\n X,\r\n MonitorPlay,\r\n }),\r\n ],\r\n exports: [LucideAngularModule],\r\n})\r\nexport class GalleriaIconsModule {}\r\n\r\n@Component({\r\n selector: 'magary-galleria',\r\n standalone: true,\r\n imports: [CommonModule, GalleriaIconsModule],\r\n templateUrl: './galleria.html',\r\n styleUrls: ['./galleria.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'magary-galleria',\r\n '[class.magary-galleria-thumbnails-left]':\r\n 'thumbnailsPosition() === \"left\"',\r\n '[class.magary-galleria-thumbnails-right]':\r\n 'thumbnailsPosition() === \"right\"',\r\n '[class.magary-galleria-thumbnails-top]': 'thumbnailsPosition() === \"top\"',\r\n '[class.magary-galleria-thumbnails-bottom]':\r\n 'thumbnailsPosition() === \"bottom\"',\r\n '[class.magary-galleria-fullscreen]': 'isFullscreen()',\r\n '[class.magary-galleria-presentation-mode]': 'presentationMode()',\r\n '[style.width]': '\"100%\"',\r\n '[style.max-width]': 'width()',\r\n },\r\n})\r\nexport class MagaryGalleria implements OnInit, OnDestroy, AfterViewInit {\r\n // Core inputs\r\n value = input<GalleriaItem[]>([]);\r\n activeIndex = model<number>(0);\r\n responsiveOptions = input<GalleriaResponsiveOptions[]>([]);\r\n\r\n // Display options\r\n showItemNavigators = input<boolean>(true);\r\n showThumbnailNavigators = input<boolean>(true);\r\n showItemNavigatorsOnHover = input<boolean>(false);\r\n showThumbnails = input<boolean>(true);\r\n thumbnailsPosition = input<'bottom' | 'top' | 'left' | 'right'>('bottom');\r\n showIndicators = input<boolean>(false);\r\n showIndicatorsOnItem = input<boolean>(false);\r\n indicatorPosition = input<'bottom' | 'top' | 'left' | 'right'>('bottom');\r\n\r\n // Behavior options\r\n circular = input<boolean>(true);\r\n autoPlay = input<boolean>(false);\r\n transitionInterval = input<number>(4000);\r\n changeItemOnIndicatorHover = input<boolean>(false);\r\n\r\n // Premium features\r\n showFullScreenButton = input<boolean>(true);\r\n showDownloadButton = input<boolean>(true);\r\n showShareButton = input<boolean>(true);\r\n showProgressBar = input<boolean>(true);\r\n showImageCounter = input<boolean>(true);\r\n showPlayPauseButton = input<boolean>(true);\r\n\r\n // Advanced features\r\n enableZoom = input<boolean>(true);\r\n maxZoomLevel = input<number>(3);\r\n enableSwipe = input<boolean>(true);\r\n enableKeyboardNavigation = input<boolean>(true);\r\n enableDoubleClickZoom = input<boolean>(true);\r\n enablePinchZoom = input<boolean>(true);\r\n\r\n // Transitions & effects\r\n transitionEffect = input<'fade' | 'slide' | 'zoom' | 'flip'>('fade');\r\n transitionDuration = input<number>(500);\r\n\r\n // Loading & performance\r\n lazyLoad = input<boolean>(true);\r\n preloadRange = input<number>(2);\r\n showLoadingSpinner = input<boolean>(true);\r\n\r\n // Captions & metadata\r\n captionPosition = input<'bottom' | 'overlay' | 'outside'>('overlay');\r\n showCaption = input<boolean>(true);\r\n\r\n // Presentation mode\r\n allowPresentationMode = input<boolean>(true);\r\n presentationAutoPlay = input<boolean>(true);\r\n\r\n // Styling\r\n containerStyle = input<any>();\r\n containerClass = input<string | undefined>();\r\n theme = input<'light' | 'dark' | 'auto'>('dark');\r\n accentColor = input<string>('#3b82f6');\r\n width = input<string | undefined>();\r\n\r\n // Outputs\r\n // activeIndexChange is handled by model() signal `activeIndex`\r\n onImageClick = output<any>();\r\n onFullScreenChange = output<boolean>();\r\n onImageLoad = output<any>();\r\n onImageError = output<any>();\r\n onShare = output<any>();\r\n onDownload = output<any>();\r\n\r\n // Queries\r\n templates = contentChildren(TemplateRef);\r\n containerRef = viewChild<ElementRef>('galleriaContainer');\r\n currentImageRef = viewChild<ElementRef>('currentImage');\r\n\r\n // Templates Inputs\r\n itemTemplateRef = input<TemplateRef<any> | undefined>();\r\n thumbnailTemplateRef = input<TemplateRef<any> | undefined>();\r\n captionTemplateRef = input<TemplateRef<any> | undefined>();\r\n\r\n // Internal Signals\r\n isFullscreen = signal<boolean>(false);\r\n isZoomed = signal<boolean>(false);\r\n zoomLevel = signal<number>(1);\r\n progressValue = signal<number>(0);\r\n isHovering = signal<boolean>(false);\r\n isPlaying = signal<boolean>(false);\r\n presentationMode = signal<boolean>(false);\r\n isLoading = signal<boolean>(false);\r\n loadedImages = signal<Set<number>>(new Set());\r\n\r\n // Zoom & pan\r\n private panX = signal<number>(0);\r\n private panY = signal<number>(0);\r\n private isPanning = false;\r\n private lastPanX = 0;\r\n private lastPanY = 0;\r\n\r\n // Touch/Swipe\r\n private touchStartX: number = 0;\r\n private touchEndX: number = 0;\r\n private touchStartY: number = 0;\r\n private touchEndY: number = 0;\r\n private minSwipeDistance = 50;\r\n private pinchDistance = 0;\r\n\r\n // Intervals\r\n interval: any;\r\n progressInterval: any;\r\n\r\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\r\n\r\n ngOnInit() {\r\n // Initial sync not strictly needed with model(), but if logic depends on side effects, use effect()\r\n if (this.autoPlay()) {\r\n this.startSlideShow();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.applyTheme();\r\n }\r\n\r\n // Computed properties\r\n activeItem = computed(() => {\r\n const val = this.value();\r\n const idx = this.activeIndex();\r\n return val && val.length > 0 ? val[idx] : undefined;\r\n });\r\n\r\n imageCounter = computed(() => {\r\n const total = this.value() ? this.value().length : 0;\r\n return `${this.activeIndex() + 1} / ${total}`;\r\n });\r\n\r\n canGoPrev = computed(() => {\r\n return this.circular() || this.activeIndex() > 0;\r\n });\r\n\r\n canGoNext = computed(() => {\r\n const val = this.value();\r\n if (!val || val.length === 0) return false;\r\n return this.circular() || this.activeIndex() < val.length - 1;\r\n });\r\n\r\n transformStyle = computed(() => {\r\n const zoom = this.zoomLevel();\r\n const panX = this.panX();\r\n const panY = this.panY();\r\n return `scale(${zoom}) translate(${panX}px, ${panY}px)`;\r\n });\r\n\r\n // Navigation\r\n next() {\r\n const val = this.value();\r\n if (!this.canGoNext() || !val || val.length === 0) return;\r\n\r\n let nextIndex = this.activeIndex() + 1;\r\n if (nextIndex >= val.length) {\r\n nextIndex = this.circular() ? 0 : val.length - 1;\r\n }\r\n this.navigateToIndex(nextIndex);\r\n }\r\n\r\n prev() {\r\n const val = this.value();\r\n if (!this.canGoPrev() || !val || val.length === 0) return;\r\n\r\n let prevIndex = this.activeIndex() - 1;\r\n if (prevIndex < 0) {\r\n prevIndex = this.circular() ? val.length - 1 : 0;\r\n }\r\n this.navigateToIndex(prevIndex);\r\n }\r\n\r\n navigateToIndex(index: number) {\r\n if (index === this.activeIndex()) return;\r\n\r\n this.resetZoom();\r\n this.activeIndex.set(index);\r\n // Model automatically emits activeIndexChange to parent if bound\r\n\r\n this.resetProgress();\r\n this.preloadNearbyImages(index);\r\n }\r\n\r\n onThumbnailClick(index: number) {\r\n const wasPlaying = this.isPlaying();\r\n this.stopSlideShow();\r\n this.navigateToIndex(index);\r\n if (wasPlaying && this.autoPlay()) {\r\n this.startSlideShow();\r\n }\r\n }\r\n\r\n onIndicatorClick(index: number) {\r\n const wasPlaying = this.isPlaying();\r\n this.stopSlideShow();\r\n this.navigateToIndex(index);\r\n if (wasPlaying && this.autoPlay()) {\r\n this.startSlideShow();\r\n }\r\n }\r\n\r\n onItemClick(item: any) {\r\n this.onImageClick.emit({ item, index: this.activeIndex() });\r\n }\r\n\r\n // Slideshow control\r\n startSlideShow() {\r\n this.stopSlideShow();\r\n this.isPlaying.set(true);\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.resetProgress();\r\n\r\n if (this.showProgressBar()) {\r\n const interval = this.transitionInterval();\r\n const progressStep = 100 / (interval / 50);\r\n this.progressInterval = setInterval(() => {\r\n const current = this.progressValue();\r\n if (current >= 100) {\r\n this.progressValue.set(0);\r\n } else {\r\n this.progressValue.set(current + progressStep);\r\n }\r\n }, 50);\r\n }\r\n\r\n this.interval = setInterval(() => {\r\n this.next();\r\n }, this.transitionInterval());\r\n }\r\n }\r\n\r\n stopSlideShow() {\r\n this.isPlaying.set(false);\r\n if (this.interval) {\r\n clearInterval(this.interval);\r\n this.interval = null;\r\n }\r\n if (this.progressInterval) {\r\n clearInterval(this.progressInterval);\r\n this.progressInterval = null;\r\n }\r\n }\r\n\r\n togglePlayPause() {\r\n if (this.isPlaying()) {\r\n this.stopSlideShow();\r\n } else {\r\n this.startSlideShow();\r\n }\r\n }\r\n\r\n resetProgress() {\r\n this.progressValue.set(0);\r\n }\r\n\r\n // Fullscreen\r\n toggleFullScreen() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const newState = !this.isFullscreen();\r\n this.isFullscreen.set(newState);\r\n this.onFullScreenChange.emit(newState);\r\n\r\n if (newState) {\r\n const elem = this.containerRef()?.nativeElement;\r\n if (elem?.requestFullscreen) {\r\n elem.requestFullscreen();\r\n } else if (elem?.webkitRequestFullscreen) {\r\n elem.webkitRequestFullscreen();\r\n } else if (elem?.mozRequestFullScreen) {\r\n elem.mozRequestFullScreen();\r\n }\r\n } else {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n } else if ((document as any).webkitExitFullscreen) {\r\n (document as any).webkitExitFullscreen();\r\n } else if ((document as any).mozCancelFullScreen) {\r\n (document as any).mozCancelFullScreen();\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Presentation mode\r\n togglePresentationMode() {\r\n if (!this.allowPresentationMode()) return;\r\n\r\n const newState = !this.presentationMode();\r\n this.presentationMode.set(newState);\r\n\r\n if (newState) {\r\n this.toggleFullScreen();\r\n if (this.presentationAutoPlay()) {\r\n this.startSlideShow();\r\n }\r\n } else {\r\n if (this.isFullscreen()) {\r\n this.toggleFullScreen();\r\n }\r\n this.stopSlideShow();\r\n }\r\n }\r\n\r\n // Zoom functionality\r\n toggleZoom() {\r\n if (!this.enableZoom()) return;\r\n\r\n const currentZoom = this.zoomLevel();\r\n if (currentZoom === 1) {\r\n this.zoomLevel.set(2);\r\n this.isZoomed.set(true);\r\n } else {\r\n this.resetZoom();\r\n }\r\n }\r\n\r\n zoomIn() {\r\n if (!this.enableZoom()) return;\r\n const current = this.zoomLevel();\r\n const max = this.maxZoomLevel();\r\n if (current < max) {\r\n this.zoomLevel.set(Math.min(current + 0.5, max));\r\n this.isZoomed.set(true);\r\n }\r\n }\r\n\r\n zoomOut() {\r\n if (!this.enableZoom()) return;\r\n const current = this.zoomLevel();\r\n if (current > 1) {\r\n this.zoomLevel.set(Math.max(current - 0.5, 1));\r\n if (this.zoomLevel() === 1) {\r\n this.isZoomed.set(false);\r\n this.resetPan();\r\n }\r\n }\r\n }\r\n\r\n resetZoom() {\r\n this.zoomLevel.set(1);\r\n this.isZoomed.set(false);\r\n this.resetPan();\r\n }\r\n\r\n resetPan() {\r\n this.panX.set(0);\r\n this.panY.set(0);\r\n }\r\n\r\n onImageDoubleClick() {\r\n if (this.enableDoubleClickZoom()) {\r\n this.toggleZoom();\r\n }\r\n }\r\n\r\n // Mouse pan for zoomed images\r\n onMouseDown(event: MouseEvent) {\r\n if (this.isZoomed()) {\r\n this.isPanning = true;\r\n this.lastPanX = event.clientX;\r\n this.lastPanY = event.clientY;\r\n }\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.isPanning && this.isZoomed()) {\r\n const deltaX = event.clientX - this.lastPanX;\r\n const deltaY = event.clientY - this.lastPanY;\r\n\r\n this.panX.set(this.panX() + deltaX);\r\n this.panY.set(this.panY() + deltaY);\r\n\r\n this.lastPanX = event.clientX;\r\n this.lastPanY = event.clientY;\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n this.isPanning = false;\r\n }\r\n\r\n // Keyboard navigation\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n if (!this.enableKeyboardNavigation()) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.prev();\r\n break;\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.next();\r\n break;\r\n case 'Escape':\r\n if (this.presentationMode()) {\r\n this.togglePresentationMode();\r\n } else if (this.isFullscreen()) {\r\n this.toggleFullScreen();\r\n }\r\n if (this.isZoomed()) {\r\n this.resetZoom();\r\n }\r\n break;\r\n case ' ':\r\n event.preventDefault();\r\n this.togglePlayPause();\r\n break;\r\n case '+':\r\n case '=':\r\n event.preventDefault();\r\n this.zoomIn();\r\n break;\r\n case '-':\r\n case '_':\r\n event.preventDefault();\r\n this.zoomOut();\r\n break;\r\n case '0':\r\n event.preventDefault();\r\n this.resetZoom();\r\n break;\r\n case 'f':\r\n case 'F':\r\n event.preventDefault();\r\n this.toggleFullScreen();\r\n break;\r\n case 'p':\r\n case 'P':\r\n event.preventDefault();\r\n this.togglePresentationMode();\r\n break;\r\n }\r\n }\r\n\r\n @HostListener('document:fullscreenchange')\r\n onFullScreenChangeHandler() {\r\n const isFull = !!document.fullscreenElement;\r\n this.isFullscreen.set(isFull);\r\n\r\n // If we exited fullscreen and we were in presentation mode, exit presentation mode too\r\n if (!isFull && this.presentationMode()) {\r\n this.presentationMode.set(false);\r\n this.stopSlideShow();\r\n }\r\n }\r\n\r\n // Touch/Swipe support\r\n onTouchStart(event: TouchEvent) {\r\n if (!this.enableSwipe()) return;\r\n\r\n if (event.touches.length === 1) {\r\n this.touchStartX = event.touches[0].clientX;\r\n this.touchStartY = event.touches[0].clientY;\r\n } else if (event.touches.length === 2 && this.enablePinchZoom()) {\r\n const touch1 = event.touches[0];\r\n const touch2 = event.touches[1];\r\n this.pinchDistance = Math.hypot(\r\n touch2.clientX - touch1.clientX,\r\n touch2.clientY - touch1.clientY,\r\n );\r\n }\r\n }\r\n\r\n onTouchMove(event: TouchEvent) {\r\n if (\r\n event.touches.length === 2 &&\r\n this.enablePinchZoom() &&\r\n this.isZoomed()\r\n ) {\r\n event.preventDefault();\r\n const touch1 = event.touches[0];\r\n const touch2 = event.touches[1];\r\n const distance = Math.hypot(\r\n touch2.clientX - touch1.clientX,\r\n touch2.clientY - touch1.clientY,\r\n );\r\n\r\n const scale = distance / this.pinchDistance;\r\n const newZoom = this.zoomLevel() * scale;\r\n // maxZoomLevel()\r\n this.zoomLevel.set(Math.max(1, Math.min(newZoom, this.maxZoomLevel())));\r\n this.pinchDistance = distance;\r\n }\r\n }\r\n\r\n onTouchEnd(event: TouchEvent) {\r\n if (!this.enableSwipe() || event.touches.length > 0) return;\r\n\r\n this.touchEndX = event.changedTouches[0].clientX;\r\n this.touchEndY = event.changedTouches[0].clientY;\r\n this.handleSwipe();\r\n }\r\n\r\n handleSwipe() {\r\n const diffX = this.touchStartX - this.touchEndX;\r\n const diffY = this.touchStartY - this.touchEndY;\r\n\r\n if (\r\n Math.abs(diffX) > Math.abs(diffY) &&\r\n Math.abs(diffX) > this.minSwipeDistance\r\n ) {\r\n if (diffX > 0) {\r\n this.next();\r\n } else {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n // Share functionality\r\n async shareImage() {\r\n const item = this.activeItem();\r\n if (!item) return;\r\n\r\n this.onShare.emit({ item, index: this.activeIndex() });\r\n\r\n if (isPlatformBrowser(this.platformId) && (navigator as any).share) {\r\n try {\r\n await (navigator as any).share({\r\n title: item.title || 'Image',\r\n text: item.description || '',\r\n url: item.src,\r\n });\r\n } catch (err) {\r\n console.log('Share cancelled or failed');\r\n }\r\n } else {\r\n // Fallback: copy to clipboard\r\n this.copyToClipboard(item.src);\r\n }\r\n }\r\n\r\n // Download functionality\r\n downloadImage() {\r\n const item = this.activeItem();\r\n if (!item) return;\r\n\r\n this.onDownload.emit({ item, index: this.activeIndex() });\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n const link = document.createElement('a');\r\n link.href = item.src;\r\n link.download = item.title || `image-${this.activeIndex() + 1}`;\r\n link.click();\r\n }\r\n }\r\n\r\n copyToClipboard(text: string) {\r\n if (isPlatformBrowser(this.platformId) && navigator.clipboard) {\r\n navigator.clipboard.writeText(text);\r\n }\r\n }\r\n\r\n // Lazy loading\r\n shouldLoadImage(index: number): boolean {\r\n if (!this.lazyLoad() || !this.value()) return true;\r\n if (this.loadedImages().has(index)) return true;\r\n\r\n const currentIndex = this.activeIndex();\r\n return Math.abs(index - currentIndex) <= this.preloadRange();\r\n }\r\n\r\n preloadNearbyImages(centerIndex: number) {\r\n if (!this.lazyLoad() || !this.value()) return;\r\n\r\n const loaded = new Set(this.loadedImages());\r\n for (let i = -this.preloadRange(); i <= this.preloadRange(); i++) {\r\n const index = centerIndex + i;\r\n if (index >= 0 && index < this.value().length) {\r\n loaded.add(index);\r\n }\r\n }\r\n this.loadedImages.set(loaded);\r\n }\r\n\r\n onImageLoadSuccess(index: number) {\r\n this.isLoading.set(false);\r\n if (this.value() && this.value()[index]) {\r\n this.onImageLoad.emit({ index, item: this.value()[index] });\r\n }\r\n }\r\n\r\n onImageLoadError(index: number) {\r\n this.isLoading.set(false);\r\n if (this.value() && this.value()[index]) {\r\n this.onImageError.emit({ index, item: this.value()[index] });\r\n }\r\n }\r\n\r\n // Hover state\r\n onMouseEnter() {\r\n this.isHovering.set(true);\r\n if (\r\n this.showItemNavigatorsOnHover() &&\r\n this.autoPlay() &&\r\n !this.presentationMode()\r\n ) {\r\n this.stopSlideShow();\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n this.isHovering.set(false);\r\n if (\r\n this.showItemNavigatorsOnHover() &&\r\n this.autoPlay() &&\r\n !this.presentationMode()\r\n ) {\r\n this.startSlideShow();\r\n }\r\n }\r\n\r\n // Theme\r\n applyTheme() {\r\n if (isPlatformBrowser(this.platformId) && this.containerRef()) {\r\n const element = this.containerRef()!.nativeElement;\r\n element.style.setProperty('--galleria-accent-color', this.accentColor());\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stopSlideShow();\r\n }\r\n}\r\n","<div #galleriaContainer class=\"galleria-container\" [ngStyle]=\"containerStyle()\">\r\n <!-- Main Item Display -->\r\n <div\r\n class=\"galleria-item-wrapper\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n (touchstart)=\"onTouchStart($event)\"\r\n (touchmove)=\"onTouchMove($event)\"\r\n (touchend)=\"onTouchEnd($event)\"\r\n >\r\n <!-- Progress Bar -->\r\n @if (showProgressBar() && isPlaying()) {\r\n <div class=\"galleria-progress\">\r\n <div\r\n class=\"galleria-progress-bar\"\r\n [style.width.%]=\"progressValue()\"\r\n ></div>\r\n </div>\r\n }\r\n\r\n <!-- Image Counter -->\r\n @if (showImageCounter() && !presentationMode()) {\r\n <div class=\"galleria-counter\">\r\n {{ imageCounter() }}\r\n </div>\r\n }\r\n\r\n <!-- Control Buttons -->\r\n @if (!presentationMode()) {\r\n <div class=\"galleria-controls\">\r\n <!-- Play/Pause -->\r\n @if (showPlayPauseButton() && autoPlay()) {\r\n <button\r\n class=\"galleria-control-button\"\r\n [class.playing]=\"isPlaying()\"\r\n (click)=\"togglePlayPause()\"\r\n [attr.aria-label]=\"isPlaying() ? 'Pause' : 'Play'\"\r\n >\r\n @if (isPlaying()) {\r\n <lucide-icon name=\"pause\"></lucide-icon>\r\n }\r\n @if (!isPlaying()) {\r\n <lucide-icon name=\"play\"></lucide-icon>\r\n }\r\n </button>\r\n }\r\n\r\n <!-- Presentation Mode -->\r\n @if (allowPresentationMode()) {\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"togglePresentationMode()\"\r\n aria-label=\"Presentation mode\"\r\n title=\"Presentation mode (P)\"\r\n >\r\n <lucide-icon name=\"monitor-play\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n <!-- Share -->\r\n @if (showShareButton()) {\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"shareImage()\"\r\n aria-label=\"Share\"\r\n title=\"Share image\"\r\n >\r\n <lucide-icon name=\"share-2\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n <!-- Download -->\r\n @if (showDownloadButton()) {\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"downloadImage()\"\r\n aria-label=\"Download\"\r\n title=\"Download image\"\r\n >\r\n <lucide-icon name=\"download\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n <!-- Fullscreen -->\r\n @if (showFullScreenButton()) {\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"toggleFullScreen()\"\r\n [attr.aria-label]=\"\r\n isFullscreen() ? 'Exit fullscreen' : 'Fullscreen'\r\n \"\r\n title=\"Fullscreen (F)\"\r\n >\r\n @if (isFullscreen()) {\r\n <lucide-icon name=\"minimize\"></lucide-icon>\r\n }\r\n @if (!isFullscreen()) {\r\n <lucide-icon name=\"maximize\"></lucide-icon>\r\n }\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Zoom Controls -->\r\n @if (enableZoom() && isZoomed()) {\r\n <div class=\"galleria-zoom-controls\">\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"zoomIn()\"\r\n [disabled]=\"zoomLevel() >= maxZoomLevel()\"\r\n aria-label=\"Zoom in\"\r\n title=\"Zoom in (+)\"\r\n >\r\n <lucide-icon name=\"zoom-in\"></lucide-icon>\r\n </button>\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"zoomOut()\"\r\n [disabled]=\"zoomLevel() <= 1\"\r\n aria-label=\"Zoom out\"\r\n title=\"Zoom out (-)\"\r\n >\r\n <lucide-icon name=\"zoom-out\"></lucide-icon>\r\n </button>\r\n <button\r\n class=\"galleria-control-button\"\r\n (click)=\"resetZoom()\"\r\n aria-label=\"Reset zoom\"\r\n title=\"Reset zoom (0)\"\r\n >\r\n <lucide-icon name=\"rotate-ccw\"></lucide-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- Item Container -->\r\n <div class=\"galleria-item-container\">\r\n <!-- Loading Spinner -->\r\n @if (isLoading()) {\r\n <div class=\"galleria-loading\"></div>\r\n }\r\n\r\n <!-- Navigation Buttons -->\r\n @if (\r\n showItemNavigators() && (!showItemNavigatorsOnHover() || isHovering())\r\n ) {\r\n <button\r\n class=\"galleria-item-nav galleria-item-prev\"\r\n (click)=\"prev()\"\r\n [disabled]=\"!canGoPrev()\"\r\n aria-label=\"Previous\"\r\n >\r\n <lucide-icon name=\"chevron-left\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n @if (\r\n showItemNavigators() && (!showItemNavigatorsOnHover() || isHovering())\r\n ) {\r\n <button\r\n class=\"galleria-item-nav galleria-item-next\"\r\n (click)=\"next()\"\r\n [disabled]=\"!canGoNext()\"\r\n aria-label=\"Next\"\r\n >\r\n <lucide-icon name=\"chevron-right\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n <!-- Active Item Display -->\r\n <div\r\n class=\"galleria-item\"\r\n [class.transition-fade]=\"transitionEffect() === 'fade'\"\r\n [class.transition-slide]=\"transitionEffect() === 'slide'\"\r\n [class.transition-zoom]=\"transitionEffect() === 'zoom'\"\r\n [class.transition-flip]=\"transitionEffect() === 'flip'\"\r\n >\r\n <!-- Custom Template -->\r\n @if (itemTemplateRef()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplateRef();\r\n context: { $implicit: activeItem(), index: activeIndex() }\r\n \"\r\n ></ng-container>\r\n }\r\n\r\n <!-- Default Image/Video Display -->\r\n @if (!itemTemplateRef() && activeItem()) {\r\n <ng-container>\r\n <!-- Image -->\r\n @if (!activeItem()?.type || activeItem()?.type === \"image\") {\r\n <img\r\n #currentImage\r\n [src]=\"activeItem()?.src\"\r\n [alt]=\"\r\n activeItem()?.alt || activeItem()?.title || 'Gallery image'\r\n \"\r\n [class.zoomed]=\"isZoomed()\"\r\n [style.transform]=\"transformStyle()\"\r\n (click)=\"onItemClick(activeItem())\"\r\n (dblclick)=\"onImageDoubleClick()\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (load)=\"onImageLoadSuccess(activeIndex())\"\r\n (error)=\"onImageLoadError(activeIndex())\"\r\n draggable=\"false\"\r\n />\r\n }\r\n\r\n <!-- Video -->\r\n @if (activeItem()?.type === \"video\") {\r\n <video\r\n [src]=\"activeItem()?.videoUrl || activeItem()?.src\"\r\n controls\r\n [poster]=\"activeItem()?.thumbnail || activeItem()?.src\"\r\n (loadeddata)=\"onImageLoadSuccess(activeIndex())\"\r\n (error)=\"onImageLoadError(activeIndex())\"\r\n ></video>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n\r\n <!-- Caption Overlay -->\r\n <!-- Complex condition simplified logic: activeItem is verified -->\r\n @if (\r\n showCaption() &&\r\n activeItem() &&\r\n (activeItem()?.title || activeItem()?.description) &&\r\n captionPosition() !== \"outside\"\r\n ) {\r\n <div\r\n class=\"galleria-caption\"\r\n [class.caption-overlay]=\"captionPosition() === 'overlay'\"\r\n >\r\n @if (captionTemplateRef()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n captionTemplateRef();\r\n context: { $implicit: activeItem(), index: activeIndex() }\r\n \"\r\n ></ng-container>\r\n }\r\n\r\n @if (!captionTemplateRef()) {\r\n <ng-container>\r\n @if (activeItem()?.title) {\r\n <div class=\"caption-title\">\r\n {{ activeItem()?.title }}\r\n </div>\r\n }\r\n @if (activeItem()?.description) {\r\n <div class=\"caption-description\">\r\n {{ activeItem()?.description }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Indicators on Item -->\r\n @if (showIndicators() && showIndicatorsOnItem()) {\r\n <ul class=\"galleria-indicators\">\r\n @for (item of value(); track $index; let i = $index) {\r\n <li\r\n [class.galleria-indicator-active]=\"i === activeIndex()\"\r\n (click)=\"onIndicatorClick(i)\"\r\n (mouseenter)=\"\r\n changeItemOnIndicatorHover() ? onIndicatorClick(i) : null\r\n \"\r\n >\r\n <button\r\n class=\"galleria-indicator-button\"\r\n [attr.aria-label]=\"'Go to image ' + (i + 1)\"\r\n [attr.aria-current]=\"i === activeIndex() ? 'true' : 'false'\"\r\n ></button>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n\r\n <!-- Caption Outside -->\r\n @if (\r\n showCaption() &&\r\n activeItem() &&\r\n (activeItem()?.title || activeItem()?.description) &&\r\n captionPosition() === \"outside\"\r\n ) {\r\n <div class=\"galleria-caption caption-outside\">\r\n @if (captionTemplateRef()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n captionTemplateRef();\r\n context: { $implicit: activeItem(), index: activeIndex() }\r\n \"\r\n ></ng-container>\r\n }\r\n\r\n @if (!captionTemplateRef()) {\r\n <ng-container>\r\n @if (activeItem()?.title) {\r\n <div class=\"caption-title\">\r\n {{ activeItem()?.title }}\r\n </div>\r\n }\r\n @if (activeItem()?.description) {\r\n <div class=\"caption-description\">\r\n {{ activeItem()?.description }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Indicators Below Item -->\r\n @if (showIndicators() && !showIndicatorsOnItem()) {\r\n <ul\r\n class=\"galleria-indicators\"\r\n [style.position]=\"'relative'\"\r\n [style.bottom]=\"'auto'\"\r\n [style.padding]=\"'1rem'\"\r\n [style.background]=\"'var(--surface-50, #f9fafb)'\"\r\n >\r\n @for (item of value(); track $index; let i = $index) {\r\n <li\r\n [class.galleria-indicator-active]=\"i === activeIndex()\"\r\n (click)=\"onIndicatorClick(i)\"\r\n (mouseenter)=\"\r\n changeItemOnIndicatorHover() ? onIndicatorClick(i) : null\r\n \"\r\n >\r\n <button\r\n class=\"galleria-indicator-button\"\r\n [attr.aria-label]=\"'Go to image ' + (i + 1)\"\r\n [attr.aria-current]=\"i === activeIndex() ? 'true' : 'false'\"\r\n ></button>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n\r\n <!-- Thumbnails -->\r\n @if (showThumbnails() && value() && value().length > 1) {\r\n <div class=\"galleria-thumbnail-wrapper\">\r\n <div class=\"galleria-thumbnail-container\">\r\n <div class=\"galleria-thumbnail-items\">\r\n @for (item of value(); track $index; let i = $index) {\r\n <div\r\n class=\"galleria-thumbnail-item\"\r\n [class.galleria-thumbnail-item-active]=\"i === activeIndex()\"\r\n (click)=\"onThumbnailClick(i)\"\r\n [attr.aria-label]=\"'Thumbnail ' + (i + 1)\"\r\n [attr.aria-current]=\"i === activeIndex() ? 'true' : 'false'\"\r\n >\r\n @if (thumbnailTemplateRef()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n thumbnailTemplateRef();\r\n context: { $implicit: item, index: i }\r\n \"\r\n ></ng-container>\r\n }\r\n\r\n @if (!thumbnailTemplateRef()) {\r\n <div class=\"galleria-thumbnail-content\">\r\n @if (\r\n shouldLoadImage(i) && (!item.type || item.type === \"image\")\r\n ) {\r\n <img\r\n [src]=\"item.thumbnail || item.src\"\r\n [alt]=\"item.alt || item.title || 'Thumbnail ' + (i + 1)\"\r\n draggable=\"false\"\r\n />\r\n }\r\n @if (shouldLoadImage(i) && item.type === \"video\") {\r\n <video\r\n [poster]=\"item.thumbnail || item.src\"\r\n draggable=\"false\"\r\n ></video>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n viewChild,\r\n viewChildren,\r\n contentChild,\r\n effect,\r\n signal,\r\n computed,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n DestroyRef,\r\n inject,\r\n PLATFORM_ID,\r\n ElementRef,\r\n TemplateRef,\r\n OnInit,\r\n afterNextRender,\r\n NgModule,\r\n untracked,\r\n QueryList,\r\n Renderer2,\r\n booleanAttribute,\r\n numberAttribute,\r\n AfterViewInit,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent, merge, interval } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n filter,\r\n switchMap,\r\n map,\r\n throttleTime,\r\n} from 'rxjs/operators';\r\nimport {\r\n LucideAngularModule,\r\n ChevronLeft,\r\n ChevronRight,\r\n ChevronUp,\r\n ChevronDown,\r\n} from 'lucide-angular';\r\nimport { MagaryButton } from '../../Button/button/button';\r\n\r\n@NgModule({\r\n imports: [\r\n LucideAngularModule.pick({\r\n ChevronLeft,\r\n ChevronRight,\r\n ChevronUp,\r\n ChevronDown,\r\n }),\r\n ],\r\n exports: [LucideAngularModule],\r\n})\r\nexport class CarouselIconsModule {}\r\n\r\n/**\r\n * Carousel responsive breakpoint options\r\n */\r\nexport interface CarouselResponsiveOptions {\r\n breakpoint: number | string;\r\n numVisible?: number;\r\n numScroll?: number;\r\n spaceBetween?: number;\r\n showNavigators?: boolean;\r\n showIndicators?: boolean;\r\n}\r\n\r\n/**\r\n * Item template context with enhanced data\r\n */\r\nexport interface CarouselItemContext<T> {\r\n $implicit: T;\r\n index: number;\r\n count: number;\r\n isActive: boolean;\r\n isVisible: boolean;\r\n progress: number;\r\n}\r\n\r\n/**\r\n * Carousel orientation\r\n */\r\nexport type CarouselOrientation = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * Carousel transition effects\r\n */\r\nexport type CarouselEffect =\r\n | 'slide'\r\n | 'fade'\r\n | 'cube'\r\n | 'flip'\r\n | 'coverflow'\r\n | 'cards';\r\n\r\n/**\r\n * Carousel indicator styles\r\n */\r\nexport type CarouselIndicatorStyle =\r\n | 'dots'\r\n | 'lines'\r\n | 'thumbnails'\r\n | 'fraction'\r\n | 'progress';\r\n\r\n/**\r\n * Navigation button styles\r\n */\r\nexport type CarouselNavStyle = 'default' | 'minimal' | 'large' | 'outside';\r\n\r\n/**\r\n * Navigation button position\r\n */\r\nexport type CarouselNavPosition =\r\n | 'default'\r\n | 'top'\r\n | 'bottom'\r\n | 'center'\r\n | 'outside';\r\n\r\n/**\r\n * Indicator position\r\n */\r\nexport type CarouselIndicatorPosition =\r\n | 'bottom'\r\n | 'top'\r\n | 'left'\r\n | 'right'\r\n | 'inside'\r\n | 'outside';\r\n\r\n/**\r\n * Autoplay direction\r\n */\r\nexport type CarouselAutoplayDirection = 'forward' | 'backward' | 'alternate';\r\n\r\n/**\r\n * Preload strategy\r\n */\r\nexport type CarouselPreloadStrategy = 'eager' | 'lazy' | 'none';\r\n\r\n/**\r\n * Carousel event data\r\n */\r\nexport interface CarouselSlideEvent<T> {\r\n currentIndex: number;\r\n previousIndex: number;\r\n currentItem: T | null;\r\n previousItem: T | null;\r\n direction: 'forward' | 'backward';\r\n}\r\n\r\n/**\r\n * MagaryCarousel v2.0 - Enterprise-grade carousel component\r\n *\r\n * @description\r\n * Feature-complete carousel with 100+ improvements including:\r\n * - Multiple transition effects (slide, fade, cube, flip, coverflow, cards)\r\n * - Advanced autoplay with direction control and visual progress\r\n * - Virtual scrolling for large datasets\r\n * - Full keyboard navigation and accessibility\r\n * - Responsive configuration per breakpoint\r\n * - Touch gestures with momentum and resistance\r\n * - ControlValueAccessor for forms integration\r\n * - Multiple indicator styles (dots, lines, thumbnails, fraction, progress)\r\n * - Lazy loading and prefetch strategies\r\n * - RTL support\r\n * - Dark mode theming\r\n *\r\n * @example\r\n * ```html\r\n * <magary-carousel\r\n * [(page)]=\"currentPage\"\r\n * [value]=\"products\"\r\n * [numVisible]=\"3\"\r\n * [effect]=\"'coverflow'\"\r\n * [autoplayInterval]=\"5000\"\r\n * [showProgress]=\"true\"\r\n * [loop]=\"true\"\r\n * (slideChange)=\"onSlideChange($event)\">\r\n *\r\n * <ng-template #item let-product let-index=\"index\">\r\n * <div class=\"product-card\">\r\n * <img [src]=\"product.image\" [alt]=\"product.name\">\r\n * <h3>{{ product.name }}</h3>\r\n * </div>\r\n * </ng-template>\r\n * </magary-carousel>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'magary-carousel',\r\n standalone: true,\r\n imports: [CommonModule, MagaryButton, CarouselIconsModule],\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: MagaryCarouselComponent,\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n class: 'magary-carousel',\r\n '[class.magary-carousel-vertical]': 'isVertical()',\r\n '[class.magary-carousel-horizontal]': '!isVertical()',\r\n '[class.magary-carousel-rtl]': 'direction() === \"rtl\"',\r\n '[class.magary-carousel-loop]': 'loop()',\r\n '[class.magary-carousel-circular]': 'circular()',\r\n '[class.magary-carousel-autoplay]': 'autoplayInterval() > 0',\r\n '[class.magary-carousel-free-mode]': 'freeMode()',\r\n '[class.magary-carousel-center-mode]': 'centerMode()',\r\n '[class.magary-carousel-grab-cursor]': 'grabCursor() && swipeable()',\r\n '[class.magary-carousel-peek-mode]': 'peekMode()',\r\n '[class.is-animating]': '_isAnimating()',\r\n '[class.is-dragging]': '_isDragging()',\r\n '[class.is-beginning]': '_currentPage() === 0',\r\n '[class.is-end]': '_currentPage() === totalPages() - 1',\r\n '[class.has-hover]': '_isHovered()',\r\n '[class.magary-carousel-nav-outside]': 'navPosition() === \"outside\"',\r\n '[class.magary-carousel-nav-top]': 'navPosition() === \"top\"',\r\n '[class.magary-carousel-nav-bottom]': 'navPosition() === \"bottom\"',\r\n '[attr.data-effect]': 'effect()',\r\n '[attr.data-nav-style]': 'navStyle()',\r\n '[attr.data-indicator-style]': 'indicatorStyle()',\r\n '[attr.data-nav-position]': 'navPosition()',\r\n '[attr.role]': '\"region\"',\r\n '[attr.aria-label]': 'ariaLabel() || \"Carousel\"',\r\n '[attr.aria-roledescription]': '\"carousel\"',\r\n '[attr.aria-live]': 'autoplayInterval() > 0 ? \"off\" : \"polite\"',\r\n '[attr.dir]': 'direction()',\r\n '[style.width]': '\"100%\"',\r\n '[style.max-width]': 'width()',\r\n '[style.paddingLeft]': 'navPosition() === \"outside\" ? \"4rem\" : null',\r\n '[style.paddingRight]': 'navPosition() === \"outside\" ? \"4rem\" : null',\r\n '(keydown)': 'onKeyDown($event)',\r\n },\r\n})\r\nexport class MagaryCarouselComponent<T>\r\n implements OnInit, AfterViewInit, ControlValueAccessor\r\n{\r\n protected readonly Math = Math;\r\n // ============================================================================\r\n // CORE INPUTS\r\n // ============================================================================\r\n\r\n /** Array of items to display */\r\n readonly value = input<T[]>([]);\r\n\r\n /** Current page (two-way binding support with model) */\r\n readonly page = model<number>(0);\r\n\r\n /** Initial slide to show on mount */\r\n readonly initialSlide = input<number>(0);\r\n\r\n /** Number of items visible at once */\r\n readonly numVisible = input<number, number | string>(1, {\r\n transform: (v) => {\r\n if (v === 'auto') return -1;\r\n return typeof v === 'string' ? parseInt(v, 10) : v;\r\n },\r\n });\r\n\r\n /** Number of items to scroll per navigation */\r\n readonly numScroll = input<number, number | string>(1, {\r\n transform: (v) => (typeof v === 'string' ? parseInt(v, 10) : v),\r\n });\r\n\r\n /** Number of items to highlight as active */\r\n readonly numActive = input(1, { transform: numberAttribute });\r\n\r\n /** Gap between items in pixels */\r\n readonly spaceBetween = input(0, { transform: numberAttribute });\r\n\r\n /** Responsive configuration per breakpoint */\r\n readonly responsiveOptions = input<CarouselResponsiveOptions[]>([]);\r\n\r\n // ============================================================================\r\n // LAYOUT & APPEARANCE\r\n // ============================================================================\r\n\r\n /** Carousel orientation */\r\n readonly orientation = input<CarouselOrientation>('horizontal');\r\n\r\n /** Text direction (LTR/RTL) */\r\n readonly direction = input<'ltr' | 'rtl'>('ltr');\r\n\r\n /** Height for vertical carousels */\r\n readonly verticalViewPortHeight = input<string>('300px');\r\n\r\n /** Width constraint */\r\n readonly width = input<string | undefined>(undefined);\r\n\r\n /** Custom CSS class for content wrapper */\r\n readonly contentClass = input<string>('');\r\n\r\n /** Custom CSS class for indicators */\r\n readonly indicatorsContentClass = input<string>('');\r\n\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n\r\n /** Theme variant */\r\n readonly theme = input<'modern' | 'minimal' | 'classic' | 'ios' | 'material'>(\r\n 'modern',\r\n );\r\n\r\n // ============================================================================\r\n // TRANSITION & EFFECTS\r\n // ============================================================================\r\n\r\n /** Visual effect type */\r\n readonly effect = input<CarouselEffect>('slide');\r\n\r\n /** Transition duration in milliseconds */\r\n readonly transitionDuration = input(300, { transform: numberAttribute });\r\n\r\n /** Transition easing function */\r\n readonly transitionTimingFunction = input<string>(\r\n 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n );\r\n\r\n /** Enable free mode (no snapping) */\r\n readonly freeMode = input(false, { transform: booleanAttribute });\r\n\r\n /** Resistance ratio for edge bounce effect (0-1) */\r\n readonly resistance = input(0.85);\r\n\r\n /** Enable will-change optimization during animation only */\r\n readonly optimizePerformance = input(true, { transform: booleanAttribute });\r\n\r\n // ============================================================================\r\n // NAVIGATION BEHAVIOR\r\n // ============================================================================\r\n\r\n /** Enable circular/infinite scrolling (jumps to start/end) */\r\n readonly circular = input(false, { transform: booleanAttribute });\r\n\r\n /** Enable true loop (duplicates items for seamless infinite scroll) */\r\n readonly loop = input(false, { transform: booleanAttribute });\r\n\r\n /** Center the active slide */\r\n readonly centerMode = input(false, { transform: booleanAttribute });\r\n\r\n /** Show partially next/previous slides (peek effect) */\r\n readonly peekMode = input(false, { transform: booleanAttribute });\r\n\r\n /** Peek amount in percentage */\r\n readonly peekAmount = input(10, { transform: numberAttribute });\r\n\r\n /** Show/hide navigation buttons */\r\n readonly showNavigators = input(true, { transform: booleanAttribute });\r\n\r\n /** Navigation button style */\r\n readonly navStyle = input<CarouselNavStyle>('default');\r\n\r\n /** Navigation button position */\r\n readonly navPosition = input<CarouselNavPosition>('default');\r\n\r\n /** Custom CSS class for previous button */\r\n readonly prevButtonClass = input<string>('');\r\n\r\n /** Custom CSS class for next button */\r\n readonly nextButtonClass = input<string>('');\r\n\r\n /** Show/hide page indicators */\r\n readonly showIndicators = input(true, { transform: booleanAttribute });\r\n\r\n /** Indicator style */\r\n readonly indicatorStyle = input<CarouselIndicatorStyle>('dots');\r\n\r\n /** Indicator position */\r\n readonly indicatorPosition = input<CarouselIndicatorPosition>('bottom');\r\n\r\n // ============================================================================\r\n // INTERACTION\r\n // ============================================================================\r\n\r\n /** Enable touch/mouse swipe */\r\n readonly swipeable = input(true, { transform: booleanAttribute });\r\n\r\n /** Touch sensitivity ratio (1 = 1:1, 0.5 = half speed) */\r\n readonly touchRatio = input(1);\r\n\r\n /** Minimum pixels to trigger swipe */\r\n readonly threshold = input(10, { transform: numberAttribute });\r\n\r\n /** Show grab cursor on hover */\r\n readonly grabCursor = input(true, { transform: booleanAttribute });\r\n\r\n /** Enable mousewheel navigation */\r\n readonly mousewheel = input(false, { transform: booleanAttribute });\r\n\r\n /** Enable keyboard navigation */\r\n readonly keyboard = input(true, { transform: booleanAttribute });\r\n\r\n /** Allow momentum scrolling */\r\n readonly momentum = input(true, { transform: booleanAttribute });\r\n\r\n /** Momentum deceleration */\r\n readonly momentumRatio = input(0.95);\r\n\r\n /** Enable haptic feedback on mobile (if supported) */\r\n readonly hapticFeedback = input(false, { transform: booleanAttribute });\r\n\r\n // ============================================================================\r\n // AUTOPLAY\r\n // ============================================================================\r\n\r\n /** Autoplay interval in milliseconds (0 = disabled) */\r\n readonly autoplayInterval = input(0, { transform: numberAttribute });\r\n\r\n /** Autoplay direction */\r\n readonly autoplayDirection = input<CarouselAutoplayDirection>('forward');\r\n\r\n /** Pause autoplay on hover */\r\n readonly pauseOnHover = input(true, { transform: booleanAttribute });\r\n\r\n /** Pause autoplay on interaction */\r\n readonly pauseOnInteraction = input(true, { transform: booleanAttribute });\r\n\r\n /** Show autoplay progress indicator */\r\n readonly showProgress = input(false, { transform: booleanAttribute });\r\n\r\n /** Progress indicator style: 'bar' | 'circular' */\r\n readonly progressStyle = input<'bar' | 'circular'>('bar');\r\n\r\n /** Disable autoplay when carousel is not in viewport */\r\n readonly autoplayOnlyInView = input(false, { transform: booleanAttribute });\r\n\r\n /** Resume autoplay after interaction delay (ms) */\r\n readonly autoplayResumeDelay = input(3000, { transform: numberAttribute });\r\n\r\n // ============================================================================\r\n // PERFORMANCE & LOADING\r\n // ============================================================================\r\n\r\n /** Enable virtual scrolling for large datasets */\r\n readonly virtual = input(false, { transform: booleanAttribute });\r\n\r\n /** Virtual buffer size (items to render outside viewport) */\r\n readonly virtualBuffer = input(2, { transform: numberAttribute });\r\n\r\n /** Preload strategy for items */\r\n readonly preloadStrategy = input<CarouselPreloadStrategy>('lazy');\r\n\r\n /** Prefetch adjacent items */\r\n readonly prefetchAdjacent = input(true, { transform: booleanAttribute });\r\n\r\n /** Respect prefers-reduced-motion */\r\n readonly respectReducedMotion = input(true, { transform: booleanAttribute });\r\n\r\n // ============================================================================\r\n // ADVANCED FEATURES\r\n // ============================================================================\r\n\r\n /** Enable hash navigation (URL sync) */\r\n readonly hashNavigation = input(false, { transform: booleanAttribute });\r\n\r\n /** Hash prefix for URL */\r\n readonly hashPrefix = input<string>('slide-');\r\n\r\n /** Enable browser history integration */\r\n readonly history = input(false, { transform: booleanAttribute });\r\n\r\n /** Track item view time for analytics */\r\n readonly trackViewTime = input(false, { transform: booleanAttribute });\r\n\r\n /** Enable zoom on item click */\r\n readonly zoomOnClick = input(false, { transform: booleanAttribute });\r\n\r\n /** Zoom scale factor */\r\n readonly zoomScale = input<number>(1.5);\r\n\r\n /** Watch slides progress for parallax effects */\r\n readonly watchSlidesProgress = input(false, { transform: booleanAttribute });\r\n\r\n // ============================================================================\r\n // TEMPLATE REFS\r\n // ============================================================================\r\n\r\n readonly itemTemplate =\r\n contentChild<TemplateRef<CarouselItemContext<T>>>('item');\r\n readonly headerTemplate = contentChild<TemplateRef<void>>('header');\r\n readonly footerTemplate = contentChild<TemplateRef<void>>('footer');\r\n readonly prevButtonTemplate = contentChild<TemplateRef<void>>('prevButton');\r\n readonly nextButtonTemplate = contentChild<TemplateRef<void>>('nextButton');\r\n readonly indicatorTemplate =\r\n contentChild<TemplateRef<{ index: number; active: boolean }>>('indicator');\r\n readonly loadingTemplate = contentChild<TemplateRef<void>>('loading');\r\n readonly emptyTemplate = contentChild<TemplateRef<void>>('empty');\r\n readonly progressTemplate =\r\n contentChild<TemplateRef<{ progress: number }>>('progress');\r\n\r\n // ============================================================================\r\n // VIEW CHILDREN\r\n // ============================================================================\r\n\r\n readonly itemsContainer =\r\n viewChild<ElementRef<HTMLDivElement>>('itemsContainer');\r\n readonly carouselWrapper =\r\n viewChild<ElementRef<HTMLDivElement>>('carouselWrapper');\r\n readonly trackElement = viewChild<ElementRef<HTMLDivElement>>('trackElement');\r\n readonly itemElements =\r\n viewChildren<ElementRef<HTMLDivElement>>('carouselItem');\r\n\r\n // ============================================================================\r\n // OUTPUTS\r\n // ============================================================================\r\n\r\n /** Emitted when page changes */\r\n readonly pageChange = output<number>();\r\n\r\n /** Emitted before slide change (cancelable) */\r\n readonly slideChange = output<CarouselSlideEvent<T>>();\r\n\r\n /** Emitted after slide change completes */\r\n readonly slideChanged = output<CarouselSlideEvent<T>>();\r\n\r\n /** Emitted when reaching beginning */\r\n readonly reachBeginning = output<void>();\r\n\r\n /** Emitted when reaching end */\r\n readonly reachEnd = output<void>();\r\n\r\n /** Emitted on scroll progress (0-1) */\r\n readonly progressChange = output<number>();\r\n\r\n /** Emitted when item is clicked */\r\n readonly itemClick = output<{ item: T; index: number }>();\r\n\r\n /** Emitted when item comes into view */\r\n readonly itemView = output<{ item: T; index: number; duration: number }>();\r\n\r\n /** Autoplay lifecycle events */\r\n readonly autoplayStart = output<void>();\r\n readonly autoplayStop = output<void>();\r\n readonly autoplayPause = output<void>();\r\n readonly autoplayResume = output<void>();\r\n\r\n /** Touch/Drag events */\r\n readonly touchStart = output<TouchEvent | MouseEvent>();\r\n readonly touchMove = output<TouchEvent | MouseEvent>();\r\n readonly touchEnd = output<TouchEvent | MouseEvent>();\r\n\r\n /** Swipe direction detected */\r\n readonly swipeDirection = output<'left' | 'right' | 'up' | 'down'>();\r\n\r\n // ============================================================================\r\n // INTERNAL STATE SIGNALS\r\n // ============================================================================\r\n\r\n protected readonly _currentPage = signal<number>(0);\r\n protected readonly _activeNumVisible = signal<number>(1);\r\n protected readonly _activeNumScroll = signal<number>(1);\r\n protected readonly _activeSpaceBetween = signal<number>(0);\r\n protected readonly _isAnimating = signal<boolean>(false);\r\n protected readonly _isHovered = signal<boolean>(false);\r\n protected readonly _isInView = signal<boolean>(true);\r\n protected readonly _isDragging = signal<boolean>(false);\r\n protected readonly _autoplayProgress = signal<number>(0);\r\n protected readonly _itemViewTimes = signal<Map<number, number>>(new Map());\r\n protected readonly _reducedMotion = signal<boolean>(false);\r\n protected readonly _touchStart = signal<{\r\n x: number;\r\n y: number;\r\n time: number;\r\n } | null>(null);\r\n protected readonly _touchCurrent = signal<{ x: number; y: number } | null>(\r\n null,\r\n );\r\n protected readonly _dragOffset = signal<number>(0);\r\n protected readonly _momentum = signal<number>(0);\r\n protected readonly _zoomedIndex = signal<number>(-1);\r\n protected readonly _slideProgress = signal<Map<number, number>>(new Map());\r\n\r\n // Autoplay state\r\n private autoplayTimer: any;\r\n private autoplayProgressInterval: any;\r\n private autoplayPaused = false;\r\n private autoplayReversed = false;\r\n private autoplayResumeTimer: any;\r\n\r\n // Intersection observer for viewport detection\r\n private intersectionObserver: IntersectionObserver | null = null;\r\n\r\n // Animation frame for momentum\r\n private momentumRAF: number | null = null;\r\n\r\n // View time tracking\r\n private viewTimeStartMap = new Map<number, number>();\r\n\r\n // ControlValueAccessor implementation\r\n private onChange: (value: number) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private disabled = false;\r\n\r\n // ============================================================================\r\n // INJECTION\r\n // ============================================================================\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private readonly elementRef = inject(ElementRef);\r\n private readonly renderer = inject(Renderer2);\r\n\r\n // ============================================================================\r\n // COMPUTED SIGNALS\r\n // ============================================================================\r\n\r\n readonly isVertical = computed(() => this.orientation() === 'vertical');\r\n readonly isRTL = computed(() => this.direction() === 'rtl');\r\n readonly totalItems = computed(() => this.value()?.length ?? 0);\r\n readonly isEmpty = computed(() => this.totalItems() === 0);\r\n\r\n readonly effectiveNumVisible = computed(() => {\r\n const num = this._activeNumVisible();\r\n const total = this.totalItems();\r\n\r\n if (num === -1) {\r\n // TODO: Auto calculation based on container width\r\n return Math.min(3, total);\r\n }\r\n\r\n return Math.max(1, Math.min(num, total || 1));\r\n });\r\n\r\n readonly totalPages = computed(() => {\r\n const items = this.totalItems();\r\n const visible = this.effectiveNumVisible();\r\n const scroll = Math.max(1, this._activeNumScroll());\r\n\r\n if (items === 0 || visible === 0) return 0;\r\n if (this.freeMode()) return items;\r\n\r\n // Calculate pages based on scroll amount\r\n const remainingItems = items - visible;\r\n if (remainingItems <= 0) return 1;\r\n\r\n return Math.ceil(remainingItems / scroll) + 1;\r\n });\r\n\r\n readonly pages = computed(() =>\r\n Array.from({ length: this.totalPages() }, (_, i) => i),\r\n );\r\n\r\n readonly canNavigateForward = computed(() => {\r\n const total = this.totalPages();\r\n if (total <= 1) return false;\r\n if (this.loop() || this.circular()) return true;\r\n return this._currentPage() < total - 1;\r\n });\r\n\r\n readonly canNavigateBackward = computed(() => {\r\n const total = this.totalPages();\r\n if (total <= 1) return false;\r\n if (this.loop() || this.circular()) return true;\r\n return this._currentPage() > 0;\r\n });\r\n\r\n readonly currentSlideInfo = computed(() => {\r\n const page = this._currentPage();\r\n const scroll = this._activeNumScroll();\r\n const visible = this.effectiveNumVisible();\r\n const total = this.totalItems();\r\n\r\n const startIndex = page * scroll;\r\n const endIndex = Math.min(startIndex + visible, total);\r\n\r\n return {\r\n page,\r\n startIndex,\r\n endIndex,\r\n visibleCount: endIndex - startIndex,\r\n total,\r\n };\r\n });\r\n\r\n readonly transformStyle = computed(() => {\r\n if (this.effect() === 'fade') {\r\n return { transform: 'none' };\r\n }\r\n\r\n const page = this._currentPage();\r\n const scroll = this._activeNumScroll();\r\n const visible = this.effectiveNumVisible();\r\n const isVert = this.isVertical();\r\n const rtl = this.isRTL();\r\n const centerMode = this.centerMode();\r\n const dragOffset = this._dragOffset();\r\n const spaceBetween = this._activeSpaceBetween();\r\n\r\n // Base calculation\r\n const percentagePerItem = 100 / visible;\r\n const itemsToShift = page * scroll;\r\n\r\n let translatePct = -(itemsToShift * percentagePerItem);\r\n let translatePx = -(itemsToShift * spaceBetween);\r\n\r\n // Center mode adjustment\r\n if (centerMode && visible > 1) {\r\n const centerOffset = (visible - 1) / 2;\r\n translatePct += centerOffset * percentagePerItem;\r\n translatePx += centerOffset * spaceBetween;\r\n }\r\n\r\n // RTL adjustment\r\n if (rtl && !isVert) {\r\n translatePct = -translatePct;\r\n translatePx = -translatePx;\r\n }\r\n\r\n // Add drag offset\r\n translatePx += dragOffset;\r\n\r\n const translateVal = `calc(${translatePct}% + ${translatePx}px)`;\r\n const x = !isVert ? translateVal : '0';\r\n const y = isVert ? translateVal : '0';\r\n\r\n return {\r\n transform: `translate3d(${x}, ${y}, 0)`,\r\n transitionDuration: this._isDragging()\r\n ? '0ms'\r\n : `${this.transitionDuration()}ms`,\r\n transitionTimingFunction: this.transitionTimingFunction(),\r\n };\r\n });\r\n\r\n readonly icons = { ChevronLeft, ChevronRight };\r\n\r\n // ============================================================================\r\n // LIFECYCLE\r\n // ============================================================================\r\n\r\n constructor() {\r\n // Sync page input with model\r\n effect(\r\n () => {\r\n const inputPage = this.page();\r\n untracked(() => {\r\n if (inputPage !== this._currentPage() && inputPage >= 0) {\r\n this.goToPage(inputPage, false);\r\n }\r\n });\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n\r\n // Sync configuration inputs\r\n effect(\r\n () => {\r\n this._activeNumVisible.set(Math.max(1, this.numVisible()));\r\n this._activeNumScroll.set(Math.max(1, this.numScroll()));\r\n this._activeSpaceBetween.set(this.spaceBetween());\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n\r\n // Responsive options\r\n effect(\r\n () => {\r\n if (\r\n isPlatformBrowser(this.platformId) &&\r\n this.responsiveOptions().length > 0\r\n ) {\r\n this.applyResponsiveOptions();\r\n }\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n\r\n // Autoplay management\r\n effect(() => {\r\n const interval = this.autoplayInterval();\r\n const hovered = this._isHovered();\r\n const pauseOnHover = this.pauseOnHover();\r\n const inView = this._isInView();\r\n const onlyInView = this.autoplayOnlyInView();\r\n\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n\r\n if (interval > 0) {\r\n // Check if should pause\r\n const shouldPause =\r\n (hovered && pauseOnHover) || (onlyInView && !inView);\r\n\r\n if (shouldPause) {\r\n this.pauseAutoplay();\r\n } else if (!this.autoplayPaused) {\r\n this.startAutoplay();\r\n }\r\n } else {\r\n this.stopAutoplay();\r\n }\r\n });\r\n\r\n // Check for reduced motion preference\r\n if (isPlatformBrowser(this.platformId)) {\r\n afterNextRender(() => {\r\n this.setupEventListeners();\r\n this.applyResponsiveOptions();\r\n this.checkReducedMotion();\r\n this.setupIntersectionObserver();\r\n\r\n // Set initial slide\r\n const initial = this.initialSlide();\r\n if (initial > 0 && initial < this.totalPages()) {\r\n this.goToPage(initial, false);\r\n }\r\n\r\n // Hash navigation\r\n if (this.hashNavigation()) {\r\n this.initHashNavigation();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // Initial setup handled in constructor effects\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // View queries are ready\r\n }\r\n\r\n // ============================================================================\r\n // PUBLIC API METHODS\r\n // ============================================================================\r\n\r\n /**\r\n * Navigate to next slide\r\n */\r\n next(event?: Event): void {\r\n event?.preventDefault();\r\n if (!this.canNavigateForward() || this._isAnimating()) return;\r\n\r\n this.handleNavigation(true);\r\n }\r\n\r\n /**\r\n * Navigate to previous slide\r\n */\r\n previous(event?: Event): void {\r\n event?.preventDefault();\r\n if (!this.canNavigateBackward() || this._isAnimating()) return;\r\n\r\n this.handleNavigation(false);\r\n }\r\n\r\n /**\r\n * Navigate to specific page\r\n * @param pageIndex Target page index\r\n * @param emit Whether to emit events\r\n * @param speed Optional custom transition speed\r\n */\r\n goToPage(pageIndex: number, emit: boolean = true, speed?: number): void {\r\n const total = this.totalPages();\r\n if (total === 0) return;\r\n\r\n let targetPage = pageIndex;\r\n\r\n // Handle circular wrapping\r\n if (this.circular() || this.loop()) {\r\n if (pageIndex < 0) targetPage = total - 1;\r\n if (pageIndex >= total) targetPage = 0;\r\n } else {\r\n targetPage = Math.max(0, Math.min(pageIndex, total - 1));\r\n }\r\n\r\n if (targetPage === this._currentPage()) return;\r\n\r\n const previousPage = this._currentPage();\r\n const direction: 'forward' | 'backward' =\r\n targetPage > previousPage ? 'forward' : 'backward';\r\n\r\n // Emit before-change event\r\n if (emit) {\r\n const slideEvent: CarouselSlideEvent<T> = {\r\n currentIndex: targetPage,\r\n previousIndex: previousPage,\r\n currentItem: this.getItemAtPage(targetPage),\r\n previousItem: this.getItemAtPage(previousPage),\r\n direction,\r\n };\r\n this.slideChange.emit(slideEvent);\r\n }\r\n\r\n // Update page\r\n this._currentPage.set(targetPage);\r\n this.page.set(targetPage);\r\n\r\n if (emit) {\r\n this.pageChange.emit(targetPage);\r\n this.onChange(targetPage);\r\n }\r\n\r\n // Check boundaries\r\n if (targetPage === 0) {\r\n this.reachBeginning.emit();\r\n }\r\n if (targetPage === total - 1) {\r\n this.reachEnd.emit();\r\n }\r\n\r\n // Calculate and emit progress\r\n const progress = total > 1 ? targetPage / (total - 1) : 0;\r\n this.progressChange.emit(progress);\r\n\r\n // Update hash if enabled\r\n if (this.hashNavigation()) {\r\n this.updateHash(targetPage);\r\n }\r\n\r\n // Reset autoplay\r\n if (this.pauseOnInteraction()) {\r\n this.pauseAutoplay();\r\n this.scheduleAutoplayResume();\r\n } else {\r\n this.resetAutoplay();\r\n }\r\n\r\n // Handle animation state\r\n this._isAnimating.set(true);\r\n setTimeout(() => {\r\n this._isAnimating.set(false);\r\n\r\n // Emit after-change event\r\n if (emit) {\r\n const slideEvent: CarouselSlideEvent<T> = {\r\n currentIndex: targetPage,\r\n previousIndex: previousPage,\r\n currentItem: this.getItemAtPage(targetPage),\r\n previousItem: this.getItemAtPage(previousPage),\r\n direction,\r\n };\r\n this.slideChanged.emit(slideEvent);\r\n }\r\n }, speed ?? this.transitionDuration());\r\n\r\n // Track view time\r\n if (this.trackViewTime()) {\r\n this.recordViewTime(previousPage);\r\n this.startViewTimeTracking(targetPage);\r\n }\r\n }\r\n\r\n /**\r\n * Navigate to specific slide with speed control\r\n */\r\n slideTo(index: number, speed?: number, runCallbacks: boolean = true): void {\r\n this.goToPage(index, runCallbacks, speed);\r\n }\r\n\r\n /**\r\n * Navigate to next slide with speed control\r\n */\r\n slideNext(speed?: number): void {\r\n if (!this.canNavigateForward()) return;\r\n const nextPage = this._currentPage() + 1;\r\n this.slideTo(nextPage, speed);\r\n }\r\n\r\n /**\r\n * Navigate to previous slide with speed control\r\n */\r\n slidePrev(speed?: number): void {\r\n if (!this.canNavigateBackward()) return;\r\n const prevPage = this._currentPage() - 1;\r\n this.slideTo(prevPage, speed);\r\n }\r\n\r\n /**\r\n * Update carousel (recalculate dimensions and state)\r\n */\r\n update(): void {\r\n this.applyResponsiveOptions();\r\n\r\n // Validate current page is still valid\r\n const currentPage = this._currentPage();\r\n const totalPages = this.totalPages();\r\n\r\n if (currentPage >= totalPages && totalPages > 0) {\r\n this.goToPage(totalPages - 1, false);\r\n }\r\n }\r\n\r\n /**\r\n * Destroy carousel and cleanup\r\n */\r\n destroy(): void {\r\n this.stopAutoplay();\r\n this.detachEvents();\r\n\r\n if (this.intersectionObserver) {\r\n this.intersectionObserver.disconnect();\r\n this.intersectionObserver = null;\r\n }\r\n\r\n if (this.momentumRAF) {\r\n cancelAnimationFrame(this.momentumRAF);\r\n this.momentumRAF = null;\r\n }\r\n }\r\n\r\n /**\r\n * Append slide dynamically\r\n */\r\n appendSlide(item: T): void {\r\n const currentValue = this.value();\r\n // Since value is an input signal, we can't mutate it directly\r\n // User should handle this externally by updating the array\r\n console.warn('appendSlide: Please update the value input array externally');\r\n }\r\n\r\n /**\r\n * Prepend slide dynamically\r\n */\r\n prependSlide(item: T): void {\r\n console.warn(\r\n 'prependSlide: Please update the value input array externally',\r\n );\r\n }\r\n\r\n /**\r\n * Remove slide at index\r\n */\r\n removeSlide(index: number): void {\r\n console.warn('removeSlide: Please update the value input array externally');\r\n }\r\n\r\n /**\r\n * Detach all event listeners\r\n */\r\n detachEvents(): void {\r\n // Events are handled via takeUntilDestroyed, so they clean up automatically\r\n }\r\n\r\n /**\r\n * Attach event listeners (re-enable after detaching)\r\n */\r\n attachEvents(): void {\r\n // Re-setup would require re-running afterNextRender logic\r\n this.setupEventListeners();\r\n }\r\n\r\n // ============================================================================\r\n // ITEM INTERACTION\r\n // ============================================================================\r\n\r\n onItemClick(item: T, index: number, event?: Event): void {\r\n this.itemClick.emit({ item, index });\r\n\r\n if (this.zoomOnClick()) {\r\n this.toggleZoom(index);\r\n }\r\n }\r\n\r\n toggleZoom(index: number): void {\r\n const current = this._zoomedIndex();\r\n this._zoomedIndex.set(current === index ? -1 : index);\r\n }\r\n\r\n // ============================================================================\r\n // KEYBOARD NAVIGATION\r\n // ============================================================================\r\n\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (!this.keyboard()) return;\r\n\r\n const { key } = event;\r\n const isVert = this.isVertical();\r\n const rtl = this.isRTL();\r\n\r\n let handled = false;\r\n\r\n switch (key) {\r\n case 'ArrowLeft':\r\n if (!isVert) {\r\n rtl ? this.next() : this.previous();\r\n handled = true;\r\n }\r\n break;\r\n\r\n case 'ArrowRight':\r\n if (!isVert) {\r\n rtl ? this.previous() : this.next();\r\n handled = true;\r\n }\r\n break;\r\n\r\n case 'ArrowUp':\r\n if (isVert) {\r\n this.previous();\r\n handled = true;\r\n }\r\n break;\r\n\r\n case 'ArrowDown':\r\n if (isVert) {\r\n this.next();\r\n handled = true;\r\n }\r\n break;\r\n\r\n case 'Home':\r\n this.goToPage(0);\r\n handled = true;\r\n break;\r\n\r\n case 'End':\r\n this.goToPage(this.totalPages() - 1);\r\n handled = true;\r\n break;\r\n\r\n case 'PageUp':\r\n this.goToPage(Math.max(0, this._currentPage() - 3));\r\n handled = true;\r\n break;\r\n\r\n case 'PageDown':\r\n this.goToPage(Math.min(this.totalPages() - 1, this._currentPage() + 3));\r\n handled = true;\r\n break;\r\n\r\n case ' ':\r\n case 'Enter':\r\n // Toggle autoplay on spacebar\r\n if (this.autoplayInterval() > 0) {\r\n this.autoplayPaused ? this.resumeAutoplay() : this.pauseAutoplay();\r\n handled = true;\r\n }\r\n break;\r\n }\r\n\r\n if (handled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.onTouched();\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // INTERNAL NAVIGATION LOGIC\r\n // ============================================================================\r\n\r\n private handleNavigation(forward: boolean): void {\r\n const total = this.totalPages();\r\n const current = this._currentPage();\r\n const direction = this.autoplayDirection();\r\n\r\n let next: number;\r\n\r\n if (forward) {\r\n if (this.loop() || this.circular()) {\r\n next = current === total - 1 ? 0 : current + 1;\r\n } else {\r\n next = Math.min(current + 1, total - 1);\r\n }\r\n } else {\r\n if (this.loop() || this.circular()) {\r\n next = current === 0 ? total - 1 : current - 1;\r\n } else {\r\n next = Math.max(current - 1, 0);\r\n }\r\n }\r\n\r\n this.goToPage(next);\r\n }\r\n\r\n private getItemAtPage(pageIndex: number): T | null {\r\n const scroll = this._activeNumScroll();\r\n const itemIndex = pageIndex * scroll;\r\n const items = this.value();\r\n return items[itemIndex] ?? null;\r\n }\r\n\r\n // ============================================================================\r\n // AUTOPLAY\r\n // ============================================================================\r\n\r\n private startAutoplay(): void {\r\n if (this.autoplayTimer || this.autoplayInterval() <= 0) return;\r\n\r\n const interval = this.autoplayInterval();\r\n const direction = this.autoplayDirection();\r\n\r\n this.autoplayPaused = false;\r\n this.autoplayStart.emit();\r\n\r\n // Start progress animation\r\n if (this.showProgress()) {\r\n this.startProgressAnimation();\r\n }\r\n\r\n this.autoplayTimer = setInterval(() => {\r\n // Determine direction\r\n let shouldGoForward = direction === 'forward';\r\n\r\n if (direction === 'alternate') {\r\n // Alternate direction at boundaries\r\n if (this.autoplayReversed) {\r\n shouldGoForward = false;\r\n if (this._currentPage() === 0) {\r\n this.autoplayReversed = false;\r\n }\r\n } else {\r\n shouldGoForward = true;\r\n if (this._currentPage() === this.totalPages() - 1) {\r\n this.autoplayReversed = true;\r\n }\r\n }\r\n }\r\n\r\n // Navigate\r\n if (shouldGoForward) {\r\n if (this.canNavigateForward()) {\r\n this.next();\r\n } else if (this.circular() || this.loop()) {\r\n this.goToPage(0);\r\n }\r\n } else {\r\n if (this.canNavigateBackward()) {\r\n this.previous();\r\n } else if (this.circular() || this.loop()) {\r\n this.goToPage(this.totalPages() - 1);\r\n }\r\n }\r\n }, interval);\r\n }\r\n\r\n private stopAutoplay(): void {\r\n if (this.autoplayTimer) {\r\n clearInterval(this.autoplayTimer);\r\n this.autoplayTimer = null;\r\n this.autoplayPaused = false;\r\n this.autoplayStop.emit();\r\n }\r\n\r\n this.stopProgressAnimation();\r\n\r\n if (this.autoplayResumeTimer) {\r\n clearTimeout(this.autoplayResumeTimer);\r\n this.autoplayResumeTimer = null;\r\n }\r\n }\r\n\r\n private pauseAutoplay(): void {\r\n if (!this.autoplayTimer || this.autoplayPaused) return;\r\n\r\n clearInterval(this.autoplayTimer);\r\n this.autoplayTimer = null;\r\n this.autoplayPaused = true;\r\n this.autoplayPause.emit();\r\n this.stopProgressAnimation();\r\n }\r\n\r\n private resumeAutoplay(): void {\r\n if (!this.autoplayPaused) return;\r\n\r\n this.autoplayPaused = false;\r\n this.autoplayResume.emit();\r\n this.startAutoplay();\r\n }\r\n\r\n private resetAutoplay(): void {\r\n if (this.autoplayInterval() > 0) {\r\n this.stopAutoplay();\r\n this.startAutoplay();\r\n }\r\n }\r\n\r\n private scheduleAutoplayResume(): void {\r\n if (this.autoplayResumeTimer) {\r\n clearTimeout(this.autoplayResumeTimer);\r\n }\r\n\r\n const delay = this.autoplayResumeDelay();\r\n if (delay > 0) {\r\n this.autoplayResumeTimer = setTimeout(() => {\r\n this.resumeAutoplay();\r\n }, delay);\r\n }\r\n }\r\n\r\n private startProgressAnimation(): void {\r\n this.stopProgressAnimation();\r\n\r\n const interval = this.autoplayInterval();\r\n const updateFrequency = 16; // ~60fps\r\n const totalSteps = interval / updateFrequency;\r\n let currentStep = 0;\r\n\r\n this._autoplayProgress.set(0);\r\n\r\n this.autoplayProgressInterval = setInterval(() => {\r\n currentStep++;\r\n const progress = Math.min((currentStep / totalSteps) * 100, 100);\r\n this._autoplayProgress.set(progress);\r\n\r\n if (progress >= 100) {\r\n this.stopProgressAnimation();\r\n }\r\n }, updateFrequency);\r\n }\r\n\r\n private stopProgressAnimation(): void {\r\n if (this.autoplayProgressInterval) {\r\n clearInterval(this.autoplayProgressInterval);\r\n this.autoplayProgressInterval = null;\r\n this._autoplayProgress.set(0);\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // RESPONSIVE\r\n // ============================================================================\r\n\r\n private applyResponsiveOptions(): void {\r\n if (!this.responsiveOptions().length) {\r\n // Reset to defaults\r\n this._activeNumVisible.set(this.numVisible());\r\n this._activeNumScroll.set(this.numScroll());\r\n this._activeSpaceBetween.set(this.spaceBetween());\r\n return;\r\n }\r\n\r\n const windowWidth = window.innerWidth;\r\n const sortedOptions = [...this.responsiveOptions()].sort((a, b) => {\r\n const bpA =\r\n typeof a.breakpoint === 'string'\r\n ? parseInt(a.breakpoint)\r\n : a.breakpoint;\r\n const bpB =\r\n typeof b.breakpoint === 'string'\r\n ? parseInt(b.breakpoint)\r\n : b.breakpoint;\r\n return bpB - bpA; // Descending order\r\n });\r\n\r\n let matchedOption: CarouselResponsiveOptions | null = null;\r\n\r\n for (const option of sortedOptions) {\r\n const bp =\r\n typeof option.breakpoint === 'string'\r\n ? parseInt(option.breakpoint)\r\n : option.breakpoint;\r\n\r\n if (windowWidth <= bp) {\r\n matchedOption = option;\r\n }\r\n }\r\n\r\n if (matchedOption) {\r\n if (matchedOption.numVisible !== undefined) {\r\n this._activeNumVisible.set(matchedOption.numVisible);\r\n }\r\n if (matchedOption.numScroll !== undefined) {\r\n this._activeNumScroll.set(matchedOption.numScroll);\r\n }\r\n if (matchedOption.spaceBetween !== undefined) {\r\n this._activeSpaceBetween.set(matchedOption.spaceBetween);\r\n }\r\n } else {\r\n // No match, use defaults\r\n this._activeNumVisible.set(this.numVisible());\r\n this._activeNumScroll.set(this.numScroll());\r\n this._activeSpaceBetween.set(this.spaceBetween());\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // EVENT LISTENERS\r\n // ============================================================================\r\n\r\n private setupEventListeners(): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n // Hover state\r\n if (this.pauseOnHover() || this.grabCursor()) {\r\n merge(\r\n fromEvent(element, 'mouseenter').pipe(map(() => true)),\r\n fromEvent(element, 'mouseleave').pipe(map(() => false)),\r\n )\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((isHovered) => this._isHovered.set(isHovered));\r\n }\r\n\r\n // Touch/Swipe\r\n if (this.swipeable()) {\r\n this.setupTouchEvents();\r\n }\r\n\r\n // Mousewheel\r\n if (this.mousewheel()) {\r\n this.setupMousewheelEvents();\r\n }\r\n\r\n // Resize\r\n fromEvent(window, 'resize')\r\n .pipe(debounceTime(150), takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.applyResponsiveOptions();\r\n this.update();\r\n });\r\n }\r\n\r\n private setupTouchEvents(): void {\r\n const container = this.itemsContainer();\r\n if (!container) return;\r\n\r\n const element = container.nativeElement;\r\n\r\n // Touch start\r\n merge(\r\n fromEvent<TouchEvent>(element, 'touchstart', { passive: false }),\r\n fromEvent<MouseEvent>(element, 'mousedown'),\r\n )\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((e) => {\r\n this.onDragStart(e);\r\n });\r\n\r\n // Touch move\r\n merge(\r\n fromEvent<TouchEvent>(document, 'touchmove', { passive: false }),\r\n fromEvent<MouseEvent>(document, 'mousemove'),\r\n )\r\n .pipe(\r\n filter(() => this._isDragging()),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe((e) => {\r\n this.onDragMove(e);\r\n });\r\n\r\n // Touch end\r\n merge(\r\n fromEvent<TouchEvent>(document, 'touchend'),\r\n fromEvent<MouseEvent>(document, 'mouseup'),\r\n )\r\n .pipe(\r\n filter(() => this._isDragging()),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe((e) => {\r\n this.onDragEnd(e);\r\n });\r\n }\r\n\r\n private setupMousewheelEvents(): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n fromEvent<WheelEvent>(element, 'wheel', { passive: false })\r\n .pipe(throttleTime(100), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((e) => {\r\n e.preventDefault();\r\n\r\n const delta = e.deltaY || e.deltaX;\r\n\r\n if (delta > 0) {\r\n this.next();\r\n } else if (delta < 0) {\r\n this.previous();\r\n }\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // DRAG/SWIPE HANDLING\r\n // ============================================================================\r\n\r\n private onDragStart(event: TouchEvent | MouseEvent): void {\r\n // Prevent if disabled or already animating\r\n if (this.disabled || this._isAnimating()) return;\r\n\r\n const point = this.getEventPoint(event);\r\n if (!point) return;\r\n\r\n this._isDragging.set(true);\r\n this._touchStart.set({\r\n x: point.x,\r\n y: point.y,\r\n time: Date.now(),\r\n });\r\n this._touchCurrent.set(point);\r\n this._dragOffset.set(0);\r\n\r\n this.touchStart.emit(event);\r\n\r\n // Cancel momentum if any\r\n if (this.momentumRAF) {\r\n cancelAnimationFrame(this.momentumRAF);\r\n this.momentumRAF = null;\r\n }\r\n }\r\n\r\n private onDragMove(event: TouchEvent | MouseEvent): void {\r\n const start = this._touchStart();\r\n if (!start) return;\r\n\r\n const point = this.getEventPoint(event);\r\n if (!point) return;\r\n\r\n this._touchCurrent.set(point);\r\n\r\n const isVert = this.isVertical();\r\n const diff = isVert ? point.y - start.y : point.x - start.x;\r\n const threshold = this.threshold();\r\n\r\n // Only prevent default if we've moved past threshold\r\n if (Math.abs(diff) > 10 && event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n // Calculate drag offset as percentage\r\n const container = this.itemsContainer();\r\n if (!container) return;\r\n\r\n const containerSize = isVert\r\n ? container.nativeElement.offsetHeight\r\n : container.nativeElement.offsetWidth;\r\n\r\n const visible = this.effectiveNumVisible();\r\n const touchRatio = this.touchRatio();\r\n\r\n // Convert pixels to percentage based on visible items\r\n const dragPercentage = (diff / containerSize) * 100 * touchRatio;\r\n\r\n // Apply resistance at boundaries\r\n const currentPage = this._currentPage();\r\n const totalPages = this.totalPages();\r\n const atStart = currentPage === 0 && dragPercentage > 0;\r\n const atEnd = currentPage === totalPages - 1 && dragPercentage < 0;\r\n\r\n let finalOffset = dragPercentage;\r\n\r\n if ((atStart || atEnd) && !this.loop() && !this.circular()) {\r\n const resistance = this.resistance();\r\n finalOffset = dragPercentage * resistance;\r\n }\r\n\r\n this._dragOffset.set(finalOffset);\r\n this.touchMove.emit(event);\r\n }\r\n\r\n private onDragEnd(event: TouchEvent | MouseEvent): void {\r\n const start = this._touchStart();\r\n const current = this._touchCurrent();\r\n\r\n if (!start || !current) return;\r\n\r\n this._isDragging.set(false);\r\n\r\n const isVert = this.isVertical();\r\n const diff = isVert ? current.y - start.y : current.x - start.x;\r\n const threshold = this.threshold();\r\n const timeDiff = Date.now() - start.time;\r\n\r\n // Calculate velocity for momentum\r\n const velocity = Math.abs(diff / timeDiff);\r\n\r\n this.touchEnd.emit(event);\r\n\r\n // Determine if swipe was significant\r\n const isSignificantSwipe = Math.abs(diff) > threshold || velocity > 0.5;\r\n\r\n if (isSignificantSwipe) {\r\n // Emit swipe direction\r\n let direction: 'left' | 'right' | 'up' | 'down';\r\n\r\n if (isVert) {\r\n direction = diff > 0 ? 'down' : 'up';\r\n } else {\r\n direction = diff > 0 ? 'right' : 'left';\r\n }\r\n\r\n this.swipeDirection.emit(direction);\r\n\r\n // Navigate based on swipe\r\n const rtl = this.isRTL();\r\n const shouldGoNext = isVert ? diff < 0 : rtl ? diff > 0 : diff < 0;\r\n\r\n if (shouldGoNext) {\r\n this.next();\r\n } else {\r\n this.previous();\r\n }\r\n\r\n // Haptic feedback\r\n if (this.hapticFeedback() && 'vibrate' in navigator) {\r\n navigator.vibrate(10);\r\n }\r\n } else {\r\n // Snap back to current position\r\n this._dragOffset.set(0);\r\n }\r\n\r\n // Apply momentum if enabled\r\n if (this.momentum() && velocity > 0.3) {\r\n this.applyMomentum(velocity, diff > 0);\r\n }\r\n\r\n // Reset\r\n this._touchStart.set(null);\r\n this._touchCurrent.set(null);\r\n\r\n // Reset autoplay\r\n if (this.pauseOnInteraction()) {\r\n this.scheduleAutoplayResume();\r\n }\r\n }\r\n\r\n private getEventPoint(\r\n event: TouchEvent | MouseEvent,\r\n ): { x: number; y: number } | null {\r\n if ('touches' in event) {\r\n const touch = event.touches[0];\r\n return touch ? { x: touch.clientX, y: touch.clientY } : null;\r\n }\r\n return { x: event.clientX, y: event.clientY };\r\n }\r\n\r\n private applyMomentum(initialVelocity: number, forward: boolean): void {\r\n let velocity = initialVelocity;\r\n const ratio = this.momentumRatio();\r\n const minVelocity = 0.01;\r\n\r\n const animate = () => {\r\n velocity *= ratio;\r\n\r\n if (velocity < minVelocity) {\r\n this._momentum.set(0);\r\n return;\r\n }\r\n\r\n this._momentum.set(velocity * (forward ? 1 : -1));\r\n this.momentumRAF = requestAnimationFrame(animate);\r\n };\r\n\r\n this.momentumRAF = requestAnimationFrame(animate);\r\n }\r\n\r\n // ============================================================================\r\n // INTERSECTION OBSERVER\r\n // ============================================================================\r\n\r\n private setupIntersectionObserver(): void {\r\n if (!this.autoplayOnlyInView()) return;\r\n\r\n this.intersectionObserver = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n this._isInView.set(entry.isIntersecting);\r\n });\r\n },\r\n { threshold: 0.5 },\r\n );\r\n\r\n this.intersectionObserver.observe(this.elementRef.nativeElement);\r\n }\r\n\r\n // ============================================================================\r\n // ACCESSIBILITY\r\n // ============================================================================\r\n\r\n private checkReducedMotion(): void {\r\n if (!this.respectReducedMotion()) return;\r\n\r\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n this._reducedMotion.set(mediaQuery.matches);\r\n\r\n // Listen for changes\r\n mediaQuery.addEventListener('change', (e) => {\r\n this._reducedMotion.set(e.matches);\r\n });\r\n }\r\n\r\n private announceSlideChange(pageIndex: number): void {\r\n // Create or update live region for screen readers\r\n const total = this.totalPages();\r\n const message = `Slide ${pageIndex + 1} of ${total}`;\r\n\r\n // This would need a dedicated live region element in the template\r\n // Implementation depends on template structure\r\n }\r\n\r\n // ============================================================================\r\n // VIEW TIME TRACKING\r\n // ============================================================================\r\n\r\n private startViewTimeTracking(pageIndex: number): void {\r\n if (!this.trackViewTime()) return;\r\n this.viewTimeStartMap.set(pageIndex, Date.now());\r\n }\r\n\r\n private recordViewTime(pageIndex: number): void {\r\n if (!this.trackViewTime()) return;\r\n\r\n const startTime = this.viewTimeStartMap.get(pageIndex);\r\n if (!startTime) return;\r\n\r\n const duration = Date.now() - startTime;\r\n const item = this.getItemAtPage(pageIndex);\r\n\r\n if (item) {\r\n this.itemView.emit({ item, index: pageIndex, duration });\r\n }\r\n\r\n this.viewTimeStartMap.delete(pageIndex);\r\n }\r\n\r\n // ============================================================================\r\n // HASH NAVIGATION\r\n // ============================================================================\r\n\r\n private initHashNavigation(): void {\r\n const hash = window.location.hash;\r\n const prefix = this.hashPrefix();\r\n\r\n if (hash.startsWith(`#${prefix}`)) {\r\n const slideNum = parseInt(hash.replace(`#${prefix}`, ''), 10);\r\n if (!isNaN(slideNum) && slideNum >= 0 && slideNum < this.totalPages()) {\r\n this.goToPage(slideNum, false);\r\n }\r\n }\r\n\r\n // Listen to hash changes\r\n fromEvent(window, 'hashchange')\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n const newHash = window.location.hash;\r\n if (newHash.startsWith(`#${prefix}`)) {\r\n const slideNum = parseInt(newHash.replace(`#${prefix}`, ''), 10);\r\n if (!isNaN(slideNum)) {\r\n this.goToPage(slideNum, false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private updateHash(pageIndex: number): void {\r\n const prefix = this.hashPrefix();\r\n const newHash = `#${prefix}${pageIndex}`;\r\n\r\n if (this.history()) {\r\n window.history.pushState(null, '', newHash);\r\n } else {\r\n window.location.hash = newHash;\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // TEMPLATE HELPERS\r\n // ============================================================================\r\n\r\n getItemContext(item: T, index: number): CarouselItemContext<T> {\r\n const slideInfo = this.currentSlideInfo();\r\n const isActive =\r\n index >= slideInfo.startIndex && index < slideInfo.endIndex;\r\n const isVisible = this.virtual()\r\n ? this.isItemInVirtualRange(index)\r\n : isActive;\r\n\r\n const progress = this._slideProgress().get(index) ?? 0;\r\n\r\n return {\r\n $implicit: item,\r\n index,\r\n count: this.totalItems(),\r\n isActive,\r\n isVisible,\r\n progress,\r\n };\r\n }\r\n\r\n trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n isItemActive(index: number): boolean {\r\n const slideInfo = this.currentSlideInfo();\r\n return index >= slideInfo.startIndex && index < slideInfo.endIndex;\r\n }\r\n\r\n isItemInVirtualRange(index: number): boolean {\r\n if (!this.virtual()) return true;\r\n\r\n const slideInfo = this.currentSlideInfo();\r\n const buffer = this.virtualBuffer();\r\n const start = Math.max(0, slideInfo.startIndex - buffer);\r\n const end = Math.min(this.totalItems(), slideInfo.endIndex + buffer);\r\n\r\n return index >= start && index < end;\r\n }\r\n\r\n shouldRenderItem(index: number): boolean {\r\n return !this.virtual() || this.isItemInVirtualRange(index);\r\n }\r\n\r\n // ============================================================================\r\n // CONTROL VALUE ACCESSOR\r\n // ============================================================================\r\n\r\n writeValue(value: number): void {\r\n if (value !== this._currentPage()) {\r\n this.goToPage(value, false);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: number) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<div\r\n #carouselWrapper\r\n class=\"magary-carousel-wrapper\"\r\n [ngClass]=\"contentClass()\"\r\n [attr.aria-live]=\"autoplayInterval() > 0 ? 'off' : 'polite'\"\r\n [attr.tabindex]=\"0\"\r\n>\r\n <!-- Header Template -->\r\n @if (headerTemplate()) {\r\n <div class=\"magary-carousel-header\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\r\n </div>\r\n }\r\n\r\n <!-- Main Carousel Content -->\r\n <div\r\n class=\"magary-carousel-content\"\r\n [class.magary-carousel-content-vertical]=\"isVertical()\"\r\n [style.height]=\"isVertical() ? verticalViewPortHeight() : 'auto'\"\r\n >\r\n <!-- Loading State -->\r\n @if (isEmpty() && loadingTemplate()) {\r\n <div class=\"magary-carousel-loading\">\r\n <ng-container *ngTemplateOutlet=\"loadingTemplate()!\" />\r\n </div>\r\n }\r\n\r\n <!-- Empty State -->\r\n @if (isEmpty() && !loadingTemplate() && emptyTemplate()) {\r\n <div class=\"magary-carousel-empty\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate()!\" />\r\n </div>\r\n }\r\n\r\n <!-- Items Wrapper -->\r\n @if (!isEmpty()) {\r\n <div\r\n class=\"magary-carousel-items-wrapper\"\r\n [class.has-navigators]=\"showNavigators() && totalPages() > 1\"\r\n [attr.data-nav-position]=\"navPosition()\"\r\n >\r\n <!-- Previous Button -->\r\n @if (showNavigators() && totalPages() > 1) {\r\n <div\r\n [class]=\"\r\n 'magary-carousel-nav magary-carousel-nav-prev ' +\r\n prevButtonClass()\r\n \"\r\n >\r\n @if (prevButtonTemplate()) {\r\n <ng-container *ngTemplateOutlet=\"prevButtonTemplate()!\" />\r\n } @else {\r\n <magary-button\r\n [variant]=\"navStyle() === 'minimal' ? 'text' : 'solid'\"\r\n [severity]=\"'secondary'\"\r\n [rounded]=\"true\"\r\n [size]=\"navStyle() === 'large' ? 'large' : 'normal'\"\r\n [icon]=\"\r\n isVertical()\r\n ? 'chevron-up'\r\n : isRTL()\r\n ? 'chevron-right'\r\n : 'chevron-left'\r\n \"\r\n [disabled]=\"!canNavigateBackward()\"\r\n [attr.aria-label]=\"\r\n isVertical() ? 'Previous slide (Up)' : 'Previous slide'\r\n \"\r\n (buttonClick)=\"previous($event)\"\r\n ></magary-button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Viewport Container -->\r\n <div\r\n #itemsContainer\r\n class=\"magary-carousel-viewport\"\r\n [class.magary-carousel-viewport-center]=\"centerMode()\"\r\n [class.magary-carousel-viewport-peek]=\"peekMode()\"\r\n [attr.aria-label]=\"\r\n 'Slide ' + (_currentPage() + 1) + ' of ' + totalPages()\r\n \"\r\n >\r\n <!-- Track (Slides Container) -->\r\n <div\r\n #trackElement\r\n class=\"magary-carousel-track\"\r\n [ngStyle]=\"transformStyle()\"\r\n [class.is-dragging]=\"_isDragging()\"\r\n [style.gap]=\"_activeSpaceBetween() + 'px'\"\r\n [attr.role]=\"'group'\"\r\n [attr.aria-roledescription]=\"'slide'\"\r\n >\r\n <!-- Individual Items -->\r\n @for (item of value(); track trackByIndex($index)) {\r\n @if (shouldRenderItem($index)) {\r\n <div\r\n #carouselItem\r\n class=\"magary-carousel-item\"\r\n [class.is-active]=\"isItemActive($index)\"\r\n [class.is-zoomed]=\"_zoomedIndex() === $index\"\r\n [style.flex-basis]=\"\r\n effect() === 'fade'\r\n ? '100%'\r\n : 'calc((100% - ' +\r\n (effectiveNumVisible() - 1) * _activeSpaceBetween() +\r\n 'px) / ' +\r\n effectiveNumVisible() +\r\n ')'\r\n \"\r\n [style.min-width]=\"\r\n !isVertical() && effect() !== 'fade'\r\n ? 'calc((100% - ' +\r\n (effectiveNumVisible() - 1) * _activeSpaceBetween() +\r\n 'px) / ' +\r\n effectiveNumVisible() +\r\n ')'\r\n : 'auto'\r\n \"\r\n [style.width]=\"\r\n isVertical() || effect() === 'fade' ? '100%' : null\r\n \"\r\n [style.min-height]=\"\r\n isVertical() && effect() !== 'fade'\r\n ? 'calc((100% - ' +\r\n (effectiveNumVisible() - 1) * _activeSpaceBetween() +\r\n 'px) / ' +\r\n effectiveNumVisible() +\r\n ')'\r\n : 'auto'\r\n \"\r\n [attr.aria-hidden]=\"!isItemActive($index)\"\r\n [attr.data-index]=\"$index\"\r\n (click)=\"onItemClick(item, $index, $event)\"\r\n >\r\n <!-- Custom Item Template -->\r\n @if (itemTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate()!;\r\n context: getItemContext(item, $index)\r\n \"\r\n />\r\n } @else {\r\n <!-- Default Item Rendering -->\r\n <div class=\"magary-carousel-item-default\">\r\n {{ item }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Autoplay Progress Bar -->\r\n @if (\r\n showProgress() &&\r\n autoplayInterval() > 0 &&\r\n progressStyle() === \"bar\"\r\n ) {\r\n <div class=\"magary-carousel-progress-bar\">\r\n <div\r\n class=\"magary-carousel-progress-bar-fill\"\r\n [style.width]=\"_autoplayProgress() + '%'\"\r\n ></div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Next Button -->\r\n @if (showNavigators() && totalPages() > 1) {\r\n <div\r\n [class]=\"\r\n 'magary-carousel-nav magary-carousel-nav-next ' +\r\n nextButtonClass()\r\n \"\r\n >\r\n @if (nextButtonTemplate()) {\r\n <ng-container *ngTemplateOutlet=\"nextButtonTemplate()!\" />\r\n } @else {\r\n <magary-button\r\n [variant]=\"navStyle() === 'minimal' ? 'text' : 'solid'\"\r\n [severity]=\"'secondary'\"\r\n [rounded]=\"true\"\r\n [size]=\"navStyle() === 'large' ? 'large' : 'normal'\"\r\n [icon]=\"\r\n isVertical()\r\n ? 'chevron-down'\r\n : isRTL()\r\n ? 'chevron-left'\r\n : 'chevron-right'\r\n \"\r\n [disabled]=\"!canNavigateForward()\"\r\n [attr.aria-label]=\"\r\n isVertical() ? 'Next slide (Down)' : 'Next slide'\r\n \"\r\n (buttonClick)=\"next($event)\"\r\n ></magary-button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Circular Progress (Alternative) -->\r\n @if (\r\n showProgress() &&\r\n autoplayInterval() > 0 &&\r\n progressStyle() === \"circular\"\r\n ) {\r\n <div class=\"magary-carousel-progress-circular\">\r\n <svg viewBox=\"0 0 36 36\" class=\"circular-chart\">\r\n <path\r\n class=\"circle-bg\"\r\n d=\"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\"\r\n />\r\n <path\r\n class=\"circle\"\r\n [attr.stroke-dasharray]=\"_autoplayProgress() + ', 100'\"\r\n d=\"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\"\r\n />\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Indicators -->\r\n @if (showIndicators() && totalPages() > 1) {\r\n <div\r\n class=\"magary-carousel-indicators\"\r\n [ngClass]=\"indicatorsContentClass()\"\r\n [attr.data-style]=\"indicatorStyle()\"\r\n [attr.data-position]=\"indicatorPosition()\"\r\n role=\"tablist\"\r\n [attr.aria-label]=\"'Carousel pagination'\"\r\n >\r\n <!-- Dots Style -->\r\n @if (indicatorStyle() === \"dots\") {\r\n @for (pageIndex of pages(); track $index) {\r\n @if (indicatorTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n indicatorTemplate()!;\r\n context: {\r\n index: $index,\r\n active: _currentPage() === $index,\r\n }\r\n \"\r\n />\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"magary-carousel-indicator\"\r\n [class.magary-carousel-indicator-active]=\"\r\n _currentPage() === $index\r\n \"\r\n [attr.aria-label]=\"'Go to slide ' + ($index + 1)\"\r\n [attr.aria-selected]=\"_currentPage() === $index\"\r\n [attr.aria-current]=\"\r\n _currentPage() === $index ? 'true' : 'false'\r\n \"\r\n [attr.role]=\"'tab'\"\r\n (click)=\"goToPage($index)\"\r\n ></button>\r\n }\r\n }\r\n }\r\n\r\n <!-- Lines Style -->\r\n @if (indicatorStyle() === \"lines\") {\r\n @for (pageIndex of pages(); track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"magary-carousel-indicator magary-carousel-indicator-line\"\r\n [class.magary-carousel-indicator-active]=\"\r\n _currentPage() === $index\r\n \"\r\n [attr.aria-label]=\"'Go to slide ' + ($index + 1)\"\r\n [attr.aria-selected]=\"_currentPage() === $index\"\r\n (click)=\"goToPage($index)\"\r\n ></button>\r\n }\r\n }\r\n\r\n <!-- Fraction Style -->\r\n @if (indicatorStyle() === \"fraction\") {\r\n <div class=\"magary-carousel-indicator-fraction\">\r\n <span class=\"current\">{{ _currentPage() + 1 }}</span>\r\n <span class=\"separator\">/</span>\r\n <span class=\"total\">{{ totalPages() }}</span>\r\n </div>\r\n }\r\n\r\n <!-- Progress Bar Style -->\r\n @if (indicatorStyle() === \"progress\") {\r\n <div class=\"magary-carousel-indicator-progress\">\r\n <div\r\n class=\"magary-carousel-indicator-progress-bar\"\r\n [style.width]=\"\r\n ((_currentPage() + 1) / totalPages()) * 100 + '%'\r\n \"\r\n ></div>\r\n </div>\r\n }\r\n\r\n <!-- Thumbnails Style -->\r\n @if (indicatorStyle() === \"thumbnails\" && itemTemplate()) {\r\n <div class=\"magary-carousel-indicator-thumbnails\">\r\n @for (item of value(); track trackByIndex($index)) {\r\n <button\r\n type=\"button\"\r\n class=\"magary-carousel-indicator-thumbnail\"\r\n [class.is-active]=\"\r\n _currentPage() === Math.floor($index / _activeNumScroll())\r\n \"\r\n [attr.aria-label]=\"\r\n 'Go to slide ' +\r\n (Math.floor($index / _activeNumScroll()) + 1)\r\n \"\r\n (click)=\"goToPage(Math.floor($index / _activeNumScroll()))\"\r\n >\r\n <div class=\"thumbnail-preview\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate()!;\r\n context: getItemContext(item, $index)\r\n \"\r\n />\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Footer Template -->\r\n @if (footerTemplate()) {\r\n <div class=\"magary-carousel-footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\r\n </div>\r\n }\r\n\r\n <!-- Custom Progress Template -->\r\n @if (progressTemplate() && showProgress() && autoplayInterval() > 0) {\r\n <div class=\"magary-carousel-progress-custom\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n progressTemplate()!;\r\n context: { progress: _autoplayProgress() }\r\n \"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Accessibility Live Region -->\r\n <div\r\n class=\"magary-carousel-live-region\"\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n style=\"\r\n position: absolute;\r\n left: -10000px;\r\n width: 1px;\r\n height: 1px;\r\n overflow: hidden;\r\n \"\r\n >\r\n Slide {{ _currentPage() + 1 }} of {{ totalPages() }}\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n computed,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MenuItem } from '../api/menu.interface';\r\n\r\nexport interface MenuItemClickEvent {\r\n item: MenuItem;\r\n level: number;\r\n path: string[];\r\n}\r\nexport interface MenuToggleEvent {\r\n isOpen: boolean;\r\n menuTitle: string;\r\n}\r\n@Component({\r\n selector: 'magary-panelmenu',\r\n imports: [CommonModule, RouterModule, LucideAngularModule],\r\n templateUrl: './panelmenu.html',\r\n styleUrl: './panelmenu.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryPanelmenu {\r\n public title = input<string>('Panel Menu');\r\n public icon = input<string>();\r\n public iconClass = input<string>('');\r\n public items = input<MenuItem[]>([]);\r\n public backgroundColor = input<string>('#f9fafb');\r\n public textColor = input<string>('#1f2937');\r\n public borderRadius = input<string>('8px');\r\n public shadow = input<number>(0);\r\n public width = input<string>('100%');\r\n public hoverColor = input<string>('#007bff');\r\n public allowMultipleExpanded = input<boolean>(false);\r\n public defaultOpen = input<boolean>(false);\r\n public collapsed = input<boolean>(false);\r\n public menuToggle = output<MenuToggleEvent>();\r\n public itemClick = output<MenuItemClickEvent>();\r\n public itemExpand = output<{ item: MenuItem; expanded: boolean }>();\r\n public expandSidebar = output<void>();\r\n public isOpen = signal(this.defaultOpen());\r\n public hoveredItem = signal<string | null>(null);\r\n public hoveredHeader = signal<boolean>(false);\r\n public expandedItems = signal<Set<string>>(new Set());\r\n public panelStyles = computed(() => ({\r\n '--panel-bg': this.backgroundColor(),\r\n '--panel-text': this.textColor(),\r\n '--panel-hover': this.hoverColor(),\r\n '--panel-radius': this.borderRadius(),\r\n width: this.width(),\r\n }));\r\n constructor() {\r\n if (this.defaultOpen()) {\r\n this.isOpen.set(true);\r\n }\r\n }\r\n toggle(): void {\r\n if (this.collapsed()) {\r\n this.expandSidebar.emit();\r\n // Also open the menu so user sees contents immediately\r\n this.isOpen.set(true);\r\n return;\r\n }\r\n\r\n const newOpenState = !this.isOpen();\r\n this.isOpen.set(newOpenState);\r\n this.menuToggle.emit({\r\n isOpen: newOpenState,\r\n menuTitle: this.title(),\r\n });\r\n }\r\n toggleSubItem(itemKey: string, item?: MenuItem): void {\r\n // Hybrid behavior: If collapsed and item has children, request sidebar expansion\r\n if (this.collapsed() && item && this.hasChildren(item)) {\r\n this.expandSidebar.emit();\r\n // Optionally, we can also expand the item internally so it's open when sidebar expands\r\n // But let's just emit for now and let the user click again or handle it in parent\r\n // Actually, better UX: Expand it internally too so it appears open immediately\r\n }\r\n\r\n this.expandedItems.update((expanded) => {\r\n const newSet = new Set(expanded);\r\n if (!this.allowMultipleExpanded() && !newSet.has(itemKey)) {\r\n const currentLevel = itemKey.split('/').length;\r\n for (const key of newSet) {\r\n if (key.split('/').length === currentLevel) {\r\n newSet.delete(key);\r\n }\r\n }\r\n }\r\n const wasExpanded = newSet.has(itemKey);\r\n if (wasExpanded) {\r\n newSet.delete(itemKey);\r\n for (const key of newSet) {\r\n if (key.startsWith(itemKey + '/')) {\r\n newSet.delete(key);\r\n }\r\n }\r\n } else {\r\n newSet.add(itemKey);\r\n }\r\n if (item) {\r\n this.itemExpand.emit({\r\n item,\r\n expanded: !wasExpanded,\r\n });\r\n }\r\n return newSet;\r\n });\r\n }\r\n onItemClick(item: MenuItem, level: number = 0, path: string[] = []): void {\r\n if (item.disabled) return;\r\n this.itemClick.emit({\r\n item,\r\n level,\r\n path: [...path, item.label || ''],\r\n });\r\n }\r\n isSubItemExpanded(itemKey: string): boolean {\r\n return this.expandedItems().has(itemKey);\r\n }\r\n hasChildren(item: MenuItem): boolean {\r\n return !!(item.children && item.children.length > 0);\r\n }\r\n onItemHover(itemId: string): void {\r\n this.hoveredItem.set(itemId);\r\n }\r\n onItemLeave(): void {\r\n this.hoveredItem.set(null);\r\n }\r\n onHeaderHover(isHovering: boolean): void {\r\n this.hoveredHeader.set(isHovering);\r\n }\r\n getItemId(item: MenuItem, index: number, parentPath: string = ''): string {\r\n const path = parentPath\r\n ? `${parentPath}-${item.label || ''}-${index}`\r\n : `${item.label || ''}-${index}`;\r\n return path;\r\n }\r\n getUniqueItemKey(item: MenuItem, parentPath: string = ''): string {\r\n return parentPath ? `${parentPath}/${item.label || ''}` : item.label || '';\r\n }\r\n isItemHovered(itemId: string): boolean {\r\n return this.hoveredItem() === itemId;\r\n }\r\n getIconName(icon: string | undefined | null): any {\r\n return icon;\r\n }\r\n\r\n isItemDisabled(item: MenuItem): boolean {\r\n return item.disabled === true;\r\n }\r\n}\r\n","<div\r\n class=\"panel-menu\"\r\n [ngClass]=\"['shadow-' + shadow()]\"\r\n [class.open]=\"isOpen()\"\r\n [class.collapsed]=\"collapsed()\"\r\n [ngStyle]=\"panelStyles()\"\r\n>\r\n <div\r\n class=\"panel-header\"\r\n [class.header-hovered]=\"hoveredHeader()\"\r\n (click)=\"toggle()\"\r\n (mouseenter)=\"onHeaderHover(true)\"\r\n (mouseleave)=\"onHeaderHover(false)\"\r\n >\r\n @if (icon()) {\r\n <span class=\"header-icon {{ iconClass() || '' }}\">\r\n <lucide-icon [name]=\"icon()\"></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"header-title\">{{ title() }}</span>\r\n <span class=\"arrow\" [class.open]=\"isOpen()\">\r\n <lucide-icon name=\"chevron-down\"></lucide-icon>\r\n </span>\r\n </div>\r\n <ul class=\"panel-items\" [class.expanded]=\"isOpen()\">\r\n @for (item of items(); track getItemId(item, $index)) {\r\n <li class=\"menu-item\" [ngClass]=\"item.styleClass\">\r\n @if (hasChildren(item)) {\r\n <div\r\n class=\"category-item\"\r\n [class.item-hovered]=\"isItemHovered(getItemId(item, $index))\"\r\n [class.disabled]=\"isItemDisabled(item)\"\r\n (click)=\"\r\n !isItemDisabled(item) &&\r\n toggleSubItem(getUniqueItemKey(item), item)\r\n \"\r\n (mouseenter)=\"onItemHover(getItemId(item, $index))\"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (item.icon) {\r\n <span class=\"item-icon {{ item.iconClass || '' }}\">\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n [size]=\"item.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{ item.label }}</span>\r\n @if (item.badgeSeverity) {\r\n <span\r\n class=\"menu-badge\"\r\n [class]=\"'badge-' + (item.badgeSeverity || 'info')\"\r\n >{{ item.badgeSeverity }}</span\r\n >\r\n }\r\n <span\r\n class=\"sub-arrow\"\r\n [class.expanded]=\"isSubItemExpanded(getUniqueItemKey(item))\"\r\n >\r\n <lucide-icon\r\n [name]=\"\r\n isSubItemExpanded(getUniqueItemKey(item)) ? 'minus' : 'plus'\r\n \"\r\n ></lucide-icon>\r\n </span>\r\n </div>\r\n <ul\r\n class=\"sub-items\"\r\n [class.expanded]=\"isSubItemExpanded(getUniqueItemKey(item))\"\r\n >\r\n @for (\r\n subItem of item.children;\r\n track subItem.label + \"-\" + $index\r\n ) {\r\n <li [ngClass]=\"subItem.styleClass\">\r\n @if (hasChildren(subItem)) {\r\n <div\r\n class=\"sub-category-item\"\r\n [class.item-hovered]=\"\r\n isItemHovered(subItem.label + '-sub-' + $index)\r\n \"\r\n [class.disabled]=\"isItemDisabled(subItem)\"\r\n (click)=\"\r\n !isItemDisabled(subItem) &&\r\n toggleSubItem(\r\n getUniqueItemKey(subItem, getUniqueItemKey(item)),\r\n subItem\r\n )\r\n \"\r\n (mouseenter)=\"onItemHover(subItem.label + '-sub-' + $index)\"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (subItem.icon) {\r\n <span class=\"item-icon {{ subItem.iconClass || '' }}\">\r\n <lucide-icon\r\n [name]=\"subItem.icon\"\r\n [size]=\"subItem.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{ subItem.label }}</span>\r\n <span\r\n class=\"sub-arrow\"\r\n [class.expanded]=\"\r\n isSubItemExpanded(\r\n getUniqueItemKey(subItem, getUniqueItemKey(item))\r\n )\r\n \"\r\n >\r\n <lucide-icon\r\n [name]=\"\r\n isSubItemExpanded(\r\n getUniqueItemKey(subItem, getUniqueItemKey(item))\r\n )\r\n ? 'minus'\r\n : 'plus'\r\n \"\r\n ></lucide-icon>\r\n </span>\r\n </div>\r\n <ul\r\n class=\"sub-sub-items\"\r\n [class.expanded]=\"\r\n isSubItemExpanded(\r\n getUniqueItemKey(subItem, getUniqueItemKey(item))\r\n )\r\n \"\r\n >\r\n @for (\r\n subSubItem of subItem.children;\r\n track subSubItem.label + \"-\" + $index\r\n ) {\r\n <li [ngClass]=\"subSubItem.styleClass\">\r\n @if (subSubItem.route) {\r\n <a\r\n [routerLink]=\"subSubItem.route\"\r\n [class.item-hovered]=\"\r\n isItemHovered(\r\n subSubItem.label + '-subsub-' + $index\r\n )\r\n \"\r\n [class.disabled]=\"isItemDisabled(subSubItem)\"\r\n (click)=\"\r\n onItemClick(subSubItem, 2, [\r\n item.label || '',\r\n subItem.label || '',\r\n ])\r\n \"\r\n (mouseenter)=\"\r\n onItemHover(\r\n subSubItem.label + '-subsub-' + $index\r\n )\r\n \"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (subSubItem.icon) {\r\n <span\r\n class=\"item-icon {{\r\n subSubItem.iconClass || ''\r\n }}\"\r\n >\r\n <lucide-icon\r\n [name]=\"subSubItem.icon\"\r\n [size]=\"subSubItem.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{\r\n subSubItem.label\r\n }}</span>\r\n </a>\r\n } @else {\r\n <div\r\n class=\"menu-item-base\"\r\n [class.item-hovered]=\"\r\n isItemHovered(\r\n subSubItem.label + '-subsub-' + $index\r\n )\r\n \"\r\n [class.disabled]=\"isItemDisabled(subSubItem)\"\r\n (click)=\"\r\n !isItemDisabled(subSubItem) &&\r\n onItemClick(subSubItem, 2, [\r\n item.label || '',\r\n subItem.label || '',\r\n ])\r\n \"\r\n (mouseenter)=\"\r\n onItemHover(\r\n subSubItem.label + '-subsub-' + $index\r\n )\r\n \"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (subSubItem.icon) {\r\n <span\r\n class=\"item-icon {{\r\n subSubItem.iconClass || ''\r\n }}\"\r\n >\r\n <lucide-icon\r\n [name]=\"subSubItem.icon\"\r\n [size]=\"subSubItem.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{\r\n subSubItem.label\r\n }}</span>\r\n </div>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n } @else {\r\n @if (subItem.route) {\r\n <a\r\n [routerLink]=\"subItem.route\"\r\n [class.item-hovered]=\"\r\n isItemHovered(subItem.label + '-sub-' + $index)\r\n \"\r\n [class.disabled]=\"isItemDisabled(subItem)\"\r\n (click)=\"onItemClick(subItem, 1, [item.label || ''])\"\r\n (mouseenter)=\"\r\n onItemHover(subItem.label + '-sub-' + $index)\r\n \"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (subItem.icon) {\r\n <span class=\"item-icon {{ subItem.iconClass || '' }}\">\r\n <lucide-icon\r\n [name]=\"subItem.icon\"\r\n [size]=\"subItem.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{ subItem.label }}</span>\r\n @if (subItem.badgeSeverity) {\r\n <span\r\n class=\"menu-badge\"\r\n [class]=\"'badge-' + (subItem.badgeSeverity || 'info')\"\r\n >{{ subItem.badgeSeverity }}</span\r\n >\r\n }\r\n </a>\r\n } @else {\r\n <div\r\n class=\"menu-item-base\"\r\n [class.item-hovered]=\"\r\n isItemHovered(subItem.label + '-sub-' + $index)\r\n \"\r\n [class.disabled]=\"isItemDisabled(subItem)\"\r\n (click)=\"\r\n !isItemDisabled(subItem) &&\r\n onItemClick(subItem, 1, [item.label || ''])\r\n \"\r\n (mouseenter)=\"\r\n onItemHover(subItem.label + '-sub-' + $index)\r\n \"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (subItem.icon) {\r\n <span class=\"item-icon {{ subItem.iconClass || '' }}\">\r\n <lucide-icon\r\n [name]=\"subItem.icon\"\r\n [size]=\"subItem.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{ subItem.label }}</span>\r\n </div>\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n } @else {\r\n @if (item.route) {\r\n <a\r\n [routerLink]=\"item.route\"\r\n [class.item-hovered]=\"isItemHovered(getItemId(item, $index))\"\r\n [class.disabled]=\"isItemDisabled(item)\"\r\n (click)=\"onItemClick(item, 0)\"\r\n (mouseenter)=\"onItemHover(getItemId(item, $index))\"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (item.icon) {\r\n <span class=\"item-icon {{ item.iconClass || '' }}\">\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n [size]=\"item.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{ item.label }}</span>\r\n @if (item.badgeSeverity) {\r\n <span\r\n class=\"menu-badge\"\r\n [class]=\"'badge-' + (item.badgeSeverity || 'info')\"\r\n >{{ item.badgeSeverity }}</span\r\n >\r\n }\r\n </a>\r\n } @else {\r\n <div\r\n class=\"menu-item-base\"\r\n [class.item-hovered]=\"isItemHovered(getItemId(item, $index))\"\r\n [class.disabled]=\"isItemDisabled(item)\"\r\n (click)=\"!isItemDisabled(item) && onItemClick(item, 0)\"\r\n (mouseenter)=\"onItemHover(getItemId(item, $index))\"\r\n (mouseleave)=\"onItemLeave()\"\r\n >\r\n @if (item.icon) {\r\n <span class=\"item-icon {{ item.iconClass || '' }}\">\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n [size]=\"item.iconSize || 15\"\r\n ></lucide-icon>\r\n </span>\r\n }\r\n <span class=\"item-label\">{{ item.label }}</span>\r\n </div>\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryPanelmenu } from './panelmenu';\r\nimport { RouterModule } from '@angular/router';\r\n@NgModule({\r\n imports: [CommonModule, MagaryPanelmenu, RouterModule],\r\n exports: [MagaryPanelmenu],\r\n})\r\nexport class MagaryPanelMenuModule {}\r\n","import { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n inject,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { MagaryPanelmenu } from '../panelmenu/panelmenu';\r\nimport { MenuItem } from '../api/menu.interface';\r\nimport {\r\n MagaryAvatar,\r\n BadgeSeverity,\r\n AvatarSize,\r\n AvatarShape,\r\n} from '../../Misc/avatar/avatar';\r\n\r\ninterface SidebarSection {\r\n title: string;\r\n icon?: string;\r\n items: MenuItem[];\r\n backgroundColor?: string;\r\n textColor?: string;\r\n hoverColor?: string;\r\n iconClass?: string;\r\n}\r\n\r\ntype AvatarType = 'image' | 'label' | 'icon';\r\n\r\ninterface AvatarConfig {\r\n type: AvatarType;\r\n size?: AvatarSize;\r\n shape?: AvatarShape;\r\n image?: string;\r\n label?: string;\r\n icon?: string;\r\n badgeValue?: string;\r\n badgeSeverity?: BadgeSeverity | undefined;\r\n}\r\n\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'magary-sidebar',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MagaryPanelmenu,\r\n MagaryAvatar,\r\n NgOptimizedImage,\r\n LucideAngularModule,\r\n ],\r\n templateUrl: './sidebar.html',\r\n styleUrl: './sidebar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class Sidebar implements OnDestroy {\r\n public sections = input<SidebarSection[]>([]);\r\n public menu = input<MenuItem[]>([]);\r\n public menuTitle = input<string>('Menu');\r\n public showUserSection = input<boolean>(false);\r\n public userName = input<string>('John Doe');\r\n public userEmail = input<string>('user@example.com');\r\n public avatarConfig = input<AvatarConfig>({\r\n type: 'label',\r\n label: 'U',\r\n size: 'normal',\r\n shape: 'circle',\r\n badgeSeverity: 'danger',\r\n });\r\n public logoSrc = input<string>('assets/logo.svg');\r\n public appTitle = input<string>('PRIMENG');\r\n public appTitleClass = input<string>('');\r\n public appTitleStyle = input<{ [klass: string]: any } | null>(null);\r\n public menuBackgroundColor = input<string>('var(--surface-50)');\r\n public menuTextColor = input<string>('var(--text-primary)');\r\n public menuHoverColor = input<string>('var(--surface-100)');\r\n public collapsible = input<boolean>(true);\r\n public showToggle = input<boolean>(true);\r\n public showLogo = input<boolean>(true);\r\n public showBrandLogo = input<boolean>(false);\r\n public brandLogoSrc = input<string>('');\r\n public brandLogoPosition = input<'top' | 'bottom' | 'center'>('bottom');\r\n public logoWidth = input<number>(32);\r\n public logoHeight = input<number>(32);\r\n public brandLogoWidth = input<number>(200);\r\n public brandLogoHeight = input<number>(100);\r\n\r\n public isMobileOpen = signal(false);\r\n public isCollapsed = signal(false);\r\n\r\n Logout = output<void>();\r\n closeSidebar = output<void>();\r\n\r\n toggleMobileSidebar() {\r\n this.isMobileOpen.update((open) => !open);\r\n }\r\n\r\n toggleCollapse() {\r\n if (this.collapsible()) {\r\n this.isCollapsed.update((collapsed) => !collapsed);\r\n }\r\n }\r\n\r\n openSidebar() {\r\n this.isCollapsed.set(false);\r\n }\r\n\r\n closeMobileSidebar() {\r\n this.isMobileOpen.set(false);\r\n }\r\n\r\n logout() {\r\n this.Logout.emit();\r\n }\r\n private router = inject(Router);\r\n private routerSubscription: any;\r\n\r\n constructor() {\r\n this.routerSubscription = this.router.events.subscribe(() => {\r\n this.closeMobileSidebar();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.routerSubscription) {\r\n this.routerSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<button class=\"hamburger-button\" (click)=\"toggleMobileSidebar()\">\r\n <lucide-icon name=\"menu\"></lucide-icon>\r\n</button>\r\n@if (isMobileOpen()) {\r\n <div class=\"sidebar-backdrop\" (click)=\"closeMobileSidebar()\"></div>\r\n}\r\n<div\r\n class=\"sidebar\"\r\n [class.open]=\"isMobileOpen()\"\r\n [class.collapsed]=\"isCollapsed()\"\r\n>\r\n <div class=\"sidebar-header\" [class.collapsed-header]=\"isCollapsed()\">\r\n @if (isCollapsed()) {\r\n @if (showToggle() && collapsible()) {\r\n <button class=\"header-toggle collapsed\" (click)=\"toggleCollapse()\">\r\n <lucide-icon name=\"menu\"></lucide-icon>\r\n </button>\r\n } @else {\r\n <!-- If toggle hidden but collapsed, show logo icon? -->\r\n @if (showLogo()) {\r\n <img\r\n [ngSrc]=\"logoSrc()\"\r\n alt=\"Logo\"\r\n class=\"logo collapsed-logo\"\r\n routerLink=\"/\"\r\n style=\"cursor: pointer\"\r\n [width]=\"logoWidth()\"\r\n [height]=\"logoHeight()\"\r\n />\r\n }\r\n }\r\n } @else {\r\n <div class=\"header-brand\" routerLink=\"/\" style=\"cursor: pointer\">\r\n @if (showLogo()) {\r\n <img\r\n [ngSrc]=\"logoSrc()\"\r\n alt=\"Logo\"\r\n class=\"logo\"\r\n [width]=\"logoWidth()\"\r\n [height]=\"logoHeight()\"\r\n priority\r\n />\r\n }\r\n <span\r\n class=\"title\"\r\n [ngClass]=\"appTitleClass()\"\r\n [ngStyle]=\"appTitleStyle()\"\r\n >\r\n {{ appTitle() }}\r\n </span>\r\n </div>\r\n @if (showToggle() && collapsible()) {\r\n <button class=\"header-toggle expanded\" (click)=\"toggleCollapse()\">\r\n <lucide-icon name=\"chevron-left\"></lucide-icon>\r\n </button>\r\n }\r\n }\r\n <button class=\"close-button\" (click)=\"closeMobileSidebar()\">\r\n <lucide-icon name=\"x\"></lucide-icon>\r\n </button>\r\n </div>\r\n <div class=\"sidebar-content\">\r\n @if (showBrandLogo() && brandLogoPosition() === \"top\") {\r\n <div class=\"brand-logo-container top\" [class.collapsed]=\"isCollapsed()\">\r\n <img\r\n [ngSrc]=\"brandLogoSrc()\"\r\n alt=\"Brand Logo\"\r\n class=\"brand-logo\"\r\n [width]=\"brandLogoWidth()\"\r\n [height]=\"brandLogoHeight()\"\r\n />\r\n </div>\r\n }\r\n <div class=\"menu-container\">\r\n @if (sections().length > 0) {\r\n @for (section of sections(); track $index) {\r\n <magary-panelmenu\r\n [title]=\"section.title\"\r\n [icon]=\"section.icon || ''\"\r\n [iconClass]=\"section.iconClass || ''\"\r\n [items]=\"section.items\"\r\n [backgroundColor]=\"section.backgroundColor || menuBackgroundColor()\"\r\n [textColor]=\"section.textColor || menuTextColor()\"\r\n [hoverColor]=\"section.hoverColor || menuHoverColor()\"\r\n [borderRadius]=\"'0.5rem'\"\r\n [shadow]=\"2\"\r\n [width]=\"'100%'\"\r\n [collapsed]=\"isCollapsed()\"\r\n (expandSidebar)=\"openSidebar()\"\r\n />\r\n }\r\n }\r\n @if (menu().length > 0 && sections().length === 0) {\r\n <magary-panelmenu\r\n [title]=\"menuTitle()\"\r\n [items]=\"menu()\"\r\n [backgroundColor]=\"menuBackgroundColor()\"\r\n [textColor]=\"menuTextColor()\"\r\n [hoverColor]=\"menuHoverColor()\"\r\n [borderRadius]=\"'0.5rem'\"\r\n [shadow]=\"2\"\r\n [width]=\"'100%'\"\r\n [collapsed]=\"isCollapsed()\"\r\n (expandSidebar)=\"openSidebar()\"\r\n />\r\n }\r\n </div>\r\n @if (showBrandLogo() && brandLogoPosition() === \"bottom\") {\r\n <div\r\n class=\"brand-logo-container bottom\"\r\n [class.collapsed]=\"isCollapsed()\"\r\n >\r\n <img\r\n [ngSrc]=\"brandLogoSrc()\"\r\n alt=\"Brand Logo\"\r\n class=\"brand-logo\"\r\n [width]=\"brandLogoWidth()\"\r\n [height]=\"brandLogoHeight()\"\r\n />\r\n </div>\r\n }\r\n @if (showUserSection()) {\r\n <div class=\"user-section\">\r\n <div class=\"user-info\">\r\n @switch (avatarConfig().type) {\r\n @case (\"image\") {\r\n <magary-avatar\r\n [image]=\"avatarConfig().image || ''\"\r\n [size]=\"avatarConfig().size || 'normal'\"\r\n [shape]=\"avatarConfig().shape || 'circle'\"\r\n [badgeValue]=\"avatarConfig().badgeValue\"\r\n [badgeSeverity]=\"avatarConfig().badgeSeverity || 'danger'\"\r\n class=\"user-avatar\"\r\n />\r\n }\r\n @case (\"label\") {\r\n <magary-avatar\r\n [label]=\"avatarConfig().label || userName().charAt(0)\"\r\n [size]=\"avatarConfig().size || 'normal'\"\r\n [shape]=\"avatarConfig().shape || 'circle'\"\r\n [badgeValue]=\"avatarConfig().badgeValue\"\r\n [badgeSeverity]=\"avatarConfig().badgeSeverity || 'danger'\"\r\n class=\"user-avatar\"\r\n />\r\n }\r\n @case (\"icon\") {\r\n <magary-avatar\r\n [icon]=\"avatarConfig().icon || 'user'\"\r\n [size]=\"avatarConfig().size || 'normal'\"\r\n [shape]=\"avatarConfig().shape || 'circle'\"\r\n [badgeValue]=\"avatarConfig().badgeValue\"\r\n [badgeSeverity]=\"avatarConfig().badgeSeverity || 'danger'\"\r\n class=\"user-avatar\"\r\n />\r\n }\r\n }\r\n @if (!isCollapsed()) {\r\n <div class=\"user-details\">\r\n <div class=\"username\">{{ userName() }}</div>\r\n <div class=\"email\">{{ userEmail() }}</div>\r\n </div>\r\n }\r\n </div>\r\n @if (!isCollapsed()) {\r\n <button class=\"logout-button\" (click)=\"logout()\">\r\n <lucide-icon name=\"log-out\"></lucide-icon>\r\n Cerrar sesión\r\n </button>\r\n } @else {\r\n <button\r\n class=\"logout-button\"\r\n (click)=\"logout()\"\r\n title=\"Cerrar sesión\"\r\n >\r\n <lucide-icon name=\"log-out\"></lucide-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (showBrandLogo() && brandLogoPosition() === \"center\") {\r\n <div class=\"brand-logo-container center\" [class.collapsed]=\"isCollapsed()\">\r\n <img\r\n [ngSrc]=\"brandLogoSrc()\"\r\n alt=\"Brand Logo\"\r\n class=\"brand-logo\"\r\n [width]=\"brandLogoWidth()\"\r\n [height]=\"brandLogoHeight()\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Sidebar } from './sidebar';\r\nimport { RouterModule } from '@angular/router';\r\n@NgModule({\r\n imports: [CommonModule, Sidebar, RouterModule],\r\n exports: [Sidebar],\r\n})\r\nexport class MagarySidebarModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\nexport interface BreadcrumbItem {\r\n label?: string;\r\n icon?: string;\r\n command?: (event?: { originalEvent: Event; item: BreadcrumbItem }) => void;\r\n url?: string;\r\n routerLink?: any;\r\n queryParams?: { [k: string]: any };\r\n disabled?: boolean;\r\n target?: string;\r\n routerLinkActiveOptions?: any;\r\n style?: any;\r\n styleClass?: string;\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n skipLocationChange?: boolean;\r\n replaceUrl?: boolean;\r\n state?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'magary-breadcrumb',\r\n standalone: true,\r\n imports: [CommonModule, RouterModule, LucideAngularModule],\r\n templateUrl: './breadcrumb.html',\r\n styleUrls: ['./breadcrumb.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryBreadcrumb {\r\n readonly model = input<BreadcrumbItem[]>([]);\r\n readonly home = input<BreadcrumbItem | undefined>(undefined);\r\n readonly style = input<{ [klass: string]: any } | null | undefined>(null);\r\n readonly styleClass = input<string | undefined>(undefined);\r\n\r\n readonly onItemClick = output<{\r\n originalEvent: Event;\r\n item: BreadcrumbItem;\r\n }>();\r\n\r\n itemClick(event: Event, item: BreadcrumbItem) {\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!item.url && !item.routerLink) {\r\n event.preventDefault();\r\n }\r\n\r\n if (item.command) {\r\n item.command({\r\n originalEvent: event,\r\n item: item,\r\n });\r\n }\r\n\r\n this.onItemClick.emit({\r\n originalEvent: event,\r\n item: item,\r\n });\r\n }\r\n}\r\n","<nav [ngClass]=\"styleClass()\" [ngStyle]=\"style() || {}\">\r\n <ol class=\"magary-breadcrumb\">\r\n @if (home(); as homeItem) {\r\n <li class=\"magary-breadcrumb-home\">\r\n <a\r\n [href]=\"homeItem.url || null\"\r\n [routerLink]=\"homeItem.routerLink\"\r\n [queryParams]=\"homeItem.queryParams\"\r\n [routerLinkActive]=\"'magary-menuitem-link-active'\"\r\n [routerLinkActiveOptions]=\"\r\n homeItem.routerLinkActiveOptions || { exact: false }\r\n \"\r\n [target]=\"homeItem.target\"\r\n [fragment]=\"homeItem.fragment\"\r\n [preserveFragment]=\"homeItem.preserveFragment\"\r\n [skipLocationChange]=\"homeItem.skipLocationChange\"\r\n [replaceUrl]=\"homeItem.replaceUrl\"\r\n [state]=\"homeItem.state\"\r\n class=\"magary-menuitem-link\"\r\n (click)=\"itemClick($event, homeItem)\"\r\n [ngClass]=\"{ 'magary-disabled': homeItem.disabled }\"\r\n [attr.tabindex]=\"homeItem.disabled ? null : '0'\"\r\n >\r\n @if (homeItem.icon) {\r\n <lucide-icon [name]=\"homeItem.icon!\" [size]=\"16\"></lucide-icon>\r\n }\r\n </a>\r\n @if (model().length > 0) {\r\n <span class=\"magary-breadcrumb-chevron\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n </span>\r\n }\r\n </li>\r\n }\r\n\r\n @for (item of model(); track item.label; let last = $last) {\r\n <li class=\"magary-breadcrumb-item\">\r\n @if (!item.routerLink && !item.url) {\r\n <span\r\n class=\"magary-menuitem-text\"\r\n (click)=\"itemClick($event, item)\"\r\n [ngClass]=\"{ 'magary-disabled': item.disabled }\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon!\"\r\n [size]=\"16\"\r\n style=\"margin-right: 0.5rem\"\r\n ></lucide-icon>\r\n }\r\n {{ item.label }}\r\n </span>\r\n }\r\n\r\n @if (item.routerLink || item.url) {\r\n <a\r\n [href]=\"item.url || null\"\r\n [routerLink]=\"item.routerLink\"\r\n [queryParams]=\"item.queryParams\"\r\n [routerLinkActive]=\"'magary-menuitem-link-active'\"\r\n [routerLinkActiveOptions]=\"\r\n item.routerLinkActiveOptions || { exact: false }\r\n \"\r\n [target]=\"item.target\"\r\n [fragment]=\"item.fragment\"\r\n [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\"\r\n [replaceUrl]=\"item.replaceUrl\"\r\n [state]=\"item.state\"\r\n class=\"magary-menuitem-link\"\r\n (click)=\"itemClick($event, item)\"\r\n [ngClass]=\"{ 'magary-disabled': item.disabled }\"\r\n [attr.tabindex]=\"item.disabled ? null : '0'\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon!\"\r\n [size]=\"16\"\r\n style=\"margin-right: 0.5rem\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ item.label }}</span>\r\n </a>\r\n }\r\n </li>\r\n @if (!last) {\r\n <li class=\"magary-breadcrumb-chevron\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n </li>\r\n }\r\n }\r\n </ol>\r\n</nav>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n input,\r\n output,\r\n computed,\r\n contentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\nexport interface StepsItem {\r\n label: string;\r\n icon?: string;\r\n command?: (event?: {\r\n originalEvent: Event;\r\n item: StepsItem;\r\n index: number;\r\n }) => void;\r\n url?: string;\r\n routerLink?: any;\r\n queryParams?: { [k: string]: any };\r\n disabled?: boolean;\r\n target?: string;\r\n routerLinkActiveOptions?: any;\r\n style?: any;\r\n styleClass?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'magary-steps',\r\n standalone: true,\r\n imports: [CommonModule, RouterModule, LucideAngularModule],\r\n templateUrl: './steps.html',\r\n styleUrls: ['./steps.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagarySteps {\r\n readonly model = input<StepsItem[]>([]);\r\n readonly activeIndex = input<number>(0);\r\n readonly readonly = input<boolean>(true);\r\n readonly style = input<{ [klass: string]: any } | null | undefined>(null);\r\n readonly styleClass = input<string | undefined>(undefined);\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n // Content Template\r\n readonly template = contentChild(TemplateRef);\r\n\r\n readonly activeIndexChange = output<number>();\r\n\r\n readonly rootClass = computed(() => {\r\n return {\r\n 'magary-steps': true,\r\n 'magary-steps-vertical': this.orientation() === 'vertical',\r\n 'magary-steps-horizontal': this.orientation() === 'horizontal',\r\n [this.styleClass() || '']: !!this.styleClass(),\r\n };\r\n });\r\n\r\n onItemClick(event: Event, item: StepsItem, i: number) {\r\n if (this.readonly() || item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n this.activeIndexChange.emit(i);\r\n\r\n if (item.command) {\r\n item.command({\r\n originalEvent: event,\r\n item: item,\r\n index: i,\r\n });\r\n }\r\n }\r\n\r\n isStepActive(index: number): boolean {\r\n return this.activeIndex() === index;\r\n }\r\n}\r\n","<div [ngClass]=\"rootClass()\" [ngStyle]=\"style() || {}\">\r\n @for (item of model(); track item.label; let i = $index; let last = $last) {\r\n <!-- Step Item -->\r\n <div\r\n [class.magary-steps-item-active]=\"i === activeIndex()\"\r\n [class.magary-steps-item-visited]=\"i < activeIndex()\"\r\n [class.magary-steps-item-disabled]=\"\r\n item.disabled || (readonly() && i !== activeIndex())\r\n \"\r\n class=\"magary-steps-item\"\r\n (click)=\"onItemClick($event, item, i)\"\r\n >\r\n <button class=\"magary-steps-action\" tabindex=\"-1\">\r\n @if (template()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n template();\r\n context: {\r\n $implicit: item,\r\n index: i,\r\n active: i === activeIndex(),\r\n }\r\n \"\r\n ></ng-container>\r\n } @else {\r\n <span class=\"magary-steps-number\">{{ i + 1 }}</span>\r\n <span class=\"magary-steps-title\">{{ item.label }}</span>\r\n }\r\n </button>\r\n </div>\r\n\r\n <!-- Separator (Line) -->\r\n @if (!last) {\r\n <div\r\n class=\"magary-steps-separator\"\r\n [class.magary-steps-separator-active]=\"i < activeIndex()\"\r\n ></div>\r\n }\r\n }\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n OnDestroy,\r\n Renderer2,\r\n ViewChild,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MenuItem } from '../api/menu.interface';\r\n\r\n// --- Helper Directive for Item logic (Hover, etc) ---\r\n@Directive({\r\n selector: '[appTieredMenuItem]',\r\n standalone: true,\r\n})\r\nexport class TieredMenuItemDirective {\r\n item = input.required<MenuItem>();\r\n parent = input.required<MagaryTieredMenu>();\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n if (this.item().disabled) return;\r\n this.parent().onItemHover(this.item());\r\n }\r\n}\r\n\r\n// --- Main Component ---\r\n@Component({\r\n selector: 'magary-tiered-menu',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n LucideAngularModule,\r\n TieredMenuItemDirective,\r\n ], // Add directive\r\n templateUrl: './tiered-menu.html',\r\n styleUrl: './tiered-menu.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryTieredMenu implements OnDestroy {\r\n model = input<MenuItem[]>([]);\r\n popup = input<boolean>(false);\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string>('');\r\n\r\n visible = signal<boolean>(false);\r\n target: any;\r\n\r\n // Track expanded items path to handle closing siblings\r\n // Usually in tiered menu, only one item per level is expanded.\r\n // We can just rely on mutating 'expanded' property on MenuItem for simplicity in UI,\r\n // but better to have local state if possible.\r\n // For library, modifying input model 'expanded' is common pattern but can be dirty.\r\n // We will clone or just modify it for now as it's purely view state.\r\n\r\n // Actually, using a centralized signal for active items path is cleaner.\r\n // activeItemPath = signal<MenuItem[]>([]);\r\n\r\n // Since we modified MenuItem interface to have 'expanded?', we can use it.\r\n // We need to ensure we clear it on hide.\r\n\r\n processedModel = computed(() => {\r\n return this.model();\r\n });\r\n\r\n private documentClickListener: (() => void) | null = null;\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n\r\n constructor() {}\r\n\r\n toggle(event: Event) {\r\n event.stopPropagation(); // Prevent immediate closing by document listener\r\n if (this.visible()) {\r\n this.hide();\r\n } else {\r\n this.show(event);\r\n }\r\n }\r\n\r\n show(event: Event) {\r\n this.target = event.target;\r\n this.visible.set(true);\r\n this.bindDocumentClickListener();\r\n\r\n if (this.popup()) {\r\n this.positionOverlay(event);\r\n }\r\n }\r\n\r\n hide() {\r\n this.visible.set(false);\r\n this.unbindDocumentClickListener();\r\n this.resetExpansion(this.model());\r\n }\r\n\r\n onMouseLeave() {\r\n if (!this.popup()) {\r\n this.resetExpansion(this.model());\r\n }\r\n }\r\n\r\n // Recursive reset\r\n resetExpansion(items: MenuItem[]) {\r\n items.forEach((item) => {\r\n item.expanded = false;\r\n if (item.items) {\r\n this.resetExpansion(item.items);\r\n }\r\n });\r\n }\r\n\r\n onItemClick(event: Event, item: MenuItem) {\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!item.url && !item.routerLink) {\r\n event.preventDefault();\r\n }\r\n\r\n if (item.command) {\r\n item.command({ originalEvent: event, item });\r\n }\r\n\r\n if (item.items) {\r\n // It has children, toggle expansion\r\n if (item.expanded) {\r\n item.expanded = false;\r\n } else {\r\n // Close siblings\r\n // We can't easy access siblings here without parent ref.\r\n // But Hover handles opening. Click usually navigates OR toggles on mobile/touch?\r\n // Desktop TieredMenu usually opens on Hover.\r\n item.expanded = true;\r\n }\r\n } else {\r\n // Leaf node clicked, close menu if popup\r\n if (this.popup()) {\r\n this.hide();\r\n }\r\n }\r\n }\r\n\r\n onItemHover(item: MenuItem) {\r\n if (item.disabled) return;\r\n\r\n // Close all siblings at this level?\r\n // We need to know which level we are in.\r\n // Simplest approach: Close all other items in the whole menu that are NOT parents of this item?\r\n // Or just set 'expanded' = true for this item.\r\n\r\n // Correct Tiered Menu behavior:\r\n // When hovering an item, we show its submenu.\r\n // We should hide submenus of siblings.\r\n\r\n // To do this efficiently, we might need a better structure or just iterate.\r\n // For this iteration, we will implement a simple \"Self Expand\" and rely on CSS/focus?\r\n // No, the HTML relies on `item.expanded`.\r\n // Let's iterate the whole model to find the parent of this item and close others.\r\n // This is expensive recursively.\r\n\r\n // Alternative: pass siblings to the directive?\r\n\r\n // Let's implement a 'closeOtherItems' helper.\r\n this.handleHover(this.model(), item);\r\n }\r\n\r\n handleHover(items: MenuItem[], targetItem: MenuItem): boolean {\r\n let found = false;\r\n for (let item of items) {\r\n if (item === targetItem) {\r\n item.expanded = true;\r\n found = true;\r\n } else {\r\n // If this item contains the target, it should remain expanded.\r\n // If not, it should be collapsed.\r\n if (this.isParentOf(item, targetItem)) {\r\n item.expanded = true;\r\n // Continue down\r\n // We don't need to call handleHover on children because isParentOf check suggests we are on path.\r\n // Actually we DO need to clear *its* other children.\r\n this.handleHover(item.items || [], targetItem);\r\n } else {\r\n item.expanded = false;\r\n }\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n isParentOf(parent: MenuItem, child: MenuItem): boolean {\r\n if (parent.items) {\r\n for (let sub of parent.items) {\r\n if (sub === child) return true;\r\n if (this.isParentOf(sub, child)) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onContainerClick(event: Event) {\r\n // Prevent document click from hiding when clicking inside\r\n event.stopPropagation();\r\n }\r\n\r\n bindDocumentClickListener() {\r\n if (!this.documentClickListener && this.popup()) {\r\n this.documentClickListener = this.renderer.listen(\r\n 'document',\r\n 'click',\r\n () => {\r\n this.hide();\r\n },\r\n );\r\n }\r\n }\r\n\r\n unbindDocumentClickListener() {\r\n if (this.documentClickListener) {\r\n this.documentClickListener();\r\n this.documentClickListener = null;\r\n }\r\n }\r\n\r\n positionOverlay(event: Event) {\r\n // Basic absolute positioning near target\r\n // Ideally usage of Angular CDK Overlay or Floating UI\r\n // For this task, we assume simple relative matching or center.\r\n // Actually, popup menus appear at the element.\r\n const target =\r\n (event.currentTarget as HTMLElement) || (event.target as HTMLElement);\r\n const rect = target.getBoundingClientRect();\r\n\r\n // We set style on the element\r\n this.renderer.setStyle(\r\n this.el.nativeElement.children[0],\r\n 'top',\r\n rect.bottom + 'px',\r\n );\r\n this.renderer.setStyle(\r\n this.el.nativeElement.children[0],\r\n 'left',\r\n rect.left + 'px',\r\n );\r\n // Fixed?\r\n this.renderer.setStyle(\r\n this.el.nativeElement.children[0],\r\n 'position',\r\n 'fixed',\r\n );\r\n this.renderer.setStyle(\r\n this.el.nativeElement.children[0],\r\n 'z-index',\r\n '9999',\r\n );\r\n }\r\n\r\n containerClass() {\r\n return {\r\n 'magary-tieredmenu': true,\r\n [this.styleClass()]: true,\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unbindDocumentClickListener();\r\n }\r\n}\r\n","<div\r\n #container\r\n [ngClass]=\"containerClass()\"\r\n [class.magary-tieredmenu-popup]=\"popup()\"\r\n [class.magary-tieredmenu-visible]=\"visible()\"\r\n [style]=\"style()\"\r\n (click)=\"onContainerClick($event)\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n>\r\n <ul class=\"magary-tieredmenu-root-list\">\r\n @for (item of processedModel(); track item.label) {\r\n <li\r\n appTieredMenuItem\r\n [item]=\"item\"\r\n [parent]=\"this\"\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{\r\n 'magary-menuitem-active': item.expanded,\r\n 'magary-menu-separator': item.separator,\r\n }\"\r\n >\r\n @if (item.separator) {\r\n <!-- Separator rendered via CSS class but we can add accessible role -->\r\n } @else {\r\n <div class=\"magary-menuitem-content\">\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"item.url || '#'\"\r\n [attr.target]=\"item.target\"\r\n (click)=\"onItemClick($event, item)\"\r\n [class.magary-disabled]=\"item.disabled\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ item.label }}</span>\r\n @if (item.items && item.items.length > 0) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </div>\r\n\r\n <!-- Recursive Submenu -->\r\n @if (item.items && item.items.length > 0) {\r\n <ul class=\"magary-submenu\">\r\n <!-- Inline recursion or use template outlet? Template usage is already cleaner here -->\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuTemplate;\r\n context: { $implicit: item.items }\r\n \"\r\n ></ng-container>\r\n </ul>\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n\r\n<!-- Reusable Recursive Template -->\r\n<ng-template #submenuTemplate let-items>\r\n <ul class=\"magary-submenu\">\r\n @for (child of items; track child.label) {\r\n <li\r\n appTieredMenuItem\r\n [item]=\"child\"\r\n [parent]=\"this\"\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{\r\n 'magary-menuitem-active': child.expanded,\r\n 'magary-menu-separator': child.separator,\r\n }\"\r\n >\r\n @if (!child.separator) {\r\n <div class=\"magary-menuitem-content\">\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"child.url || '#'\"\r\n (click)=\"onItemClick($event, child)\"\r\n >\r\n @if (child.icon) {\r\n <lucide-icon\r\n [name]=\"child.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ child.label }}</span>\r\n @if (child.items && child.items.length > 0) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </div>\r\n @if (child.items && child.items.length > 0) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuTemplate;\r\n context: { $implicit: child.items }\r\n \"\r\n ></ng-container>\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>\r\n","import {\r\n Component,\r\n ElementRef,\r\n Renderer2,\r\n inject,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n signal,\r\n OnDestroy,\r\n AfterViewInit,\r\n computed,\r\n ViewChild,\r\n input,\r\n} from '@angular/core';\r\nimport { CommonModule, NgTemplateOutlet, DOCUMENT } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MenuItem } from '../api/menu.interface';\r\n// Actually, TieredMenuItemDirective is specific to TieredMenu interaction (mouseenter/leave).\r\n// ContextMenu items also behave like tiered menu items (hover to expand).\r\n// Let's assume we can reuse the logic or replicate it.\r\n// For simplicity and decoupling, I'll inline the item logic or creating a shared directive later if needed.\r\n// For now, I'll implement the recursive template inline similar to TieredMenu HTML.\r\n\r\n@Component({\r\n selector: 'magary-context-menu',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule, NgTemplateOutlet],\r\n templateUrl: './context-menu.html',\r\n styleUrl: './context-menu.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryContextMenu implements AfterViewInit, OnDestroy {\r\n private el = inject(ElementRef);\r\n private renderer = inject(Renderer2);\r\n\r\n model = input<MenuItem[]>([]);\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string | null>(null);\r\n global = input<boolean>(false);\r\n target = input<any>(null);\r\n\r\n visible = signal<boolean>(false);\r\n // Position\r\n x = signal<number>(0);\r\n y = signal<number>(0);\r\n\r\n @ViewChild('container') containerViewChild!: ElementRef;\r\n\r\n private documentClickListener: (() => void) | null = null;\r\n private documentResizeListener: (() => void) | null = null;\r\n private contextMenuListener: (() => void) | null = null;\r\n\r\n constructor() {}\r\n\r\n ngAfterViewInit() {\r\n if (this.global()) {\r\n this.bindGlobalListeners();\r\n } else if (this.target()) {\r\n this.bindTargetListeners();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unbindListeners();\r\n }\r\n\r\n bindGlobalListeners() {\r\n this.contextMenuListener = this.renderer.listen(\r\n 'document',\r\n 'contextmenu',\r\n (event) => {\r\n this.show(event);\r\n },\r\n );\r\n }\r\n\r\n bindTargetListeners() {\r\n let targetElement = this.getTargetElement();\r\n if (targetElement) {\r\n this.contextMenuListener = this.renderer.listen(\r\n targetElement,\r\n 'contextmenu',\r\n (event) => {\r\n this.show(event);\r\n },\r\n );\r\n }\r\n }\r\n\r\n getTargetElement(): HTMLElement | null {\r\n const target = this.target();\r\n if (typeof target === 'string') {\r\n return document.querySelector(target);\r\n } else if (target instanceof ElementRef) {\r\n return target.nativeElement;\r\n } else {\r\n return target;\r\n }\r\n }\r\n\r\n private document = inject(DOCUMENT);\r\n\r\n show(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n // Position relative to offset parent to scroll with content\r\n const offsetParent =\r\n (this.el.nativeElement.offsetParent as HTMLElement) || this.document.body;\r\n const parentRect = offsetParent.getBoundingClientRect();\r\n\r\n // Calculate local coordinates relative to the offset parent\r\n const x = event.clientX - parentRect.left;\r\n const y = event.clientY - parentRect.top;\r\n\r\n this.x.set(x);\r\n this.y.set(y);\r\n this.visible.set(true);\r\n\r\n this.bindDocumentClickListener();\r\n this.bindDocumentResizeListener();\r\n }\r\n\r\n hide() {\r\n this.visible.set(false);\r\n this.unbindDocumentClickListener();\r\n this.unbindDocumentResizeListener();\r\n this.resetExpansion(this.model());\r\n }\r\n\r\n bindDocumentClickListener() {\r\n if (!this.documentClickListener) {\r\n this.documentClickListener = this.renderer.listen(\r\n 'document',\r\n 'click',\r\n (event) => {\r\n if (\r\n this.visible() &&\r\n this.containerViewChild &&\r\n !this.containerViewChild.nativeElement.contains(event.target)\r\n ) {\r\n this.hide();\r\n }\r\n },\r\n );\r\n }\r\n }\r\n\r\n unbindDocumentClickListener() {\r\n if (this.documentClickListener) {\r\n this.documentClickListener();\r\n this.documentClickListener = null;\r\n }\r\n }\r\n\r\n bindDocumentResizeListener() {\r\n if (!this.documentResizeListener) {\r\n this.documentResizeListener = this.renderer.listen(\r\n 'window',\r\n 'resize',\r\n () => {\r\n if (this.visible()) {\r\n this.hide();\r\n }\r\n },\r\n );\r\n }\r\n }\r\n\r\n unbindDocumentResizeListener() {\r\n if (this.documentResizeListener) {\r\n this.documentResizeListener();\r\n this.documentResizeListener = null;\r\n }\r\n }\r\n\r\n unbindListeners() {\r\n if (this.contextMenuListener) {\r\n this.contextMenuListener();\r\n this.contextMenuListener = null;\r\n }\r\n this.unbindDocumentClickListener();\r\n this.unbindDocumentResizeListener();\r\n }\r\n\r\n onItemClick(event: Event, item: MenuItem) {\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!item.url && !item.routerLink) {\r\n event.preventDefault();\r\n }\r\n\r\n if (item.command) {\r\n item.command({ originalEvent: event, item });\r\n }\r\n\r\n if (item.items) {\r\n item.expanded = !item.expanded;\r\n // Close siblings\r\n this.closeSiblings(item, this.model());\r\n } else {\r\n this.hide();\r\n }\r\n }\r\n\r\n // Helper to process model if needed (like adding ids)\r\n processedModel = computed(() => {\r\n return this.model();\r\n });\r\n\r\n resetExpansion(items: MenuItem[]) {\r\n items.forEach((item) => {\r\n item.expanded = false;\r\n if (item.items) {\r\n this.resetExpansion(item.items);\r\n }\r\n });\r\n }\r\n\r\n closeSiblings(activeItem: MenuItem, parentItems: MenuItem[]) {\r\n parentItems.forEach((item) => {\r\n if (item !== activeItem) {\r\n item.expanded = false;\r\n }\r\n });\r\n }\r\n\r\n containerClass() {\r\n return {\r\n 'magary-contextmenu': true,\r\n [this.styleClass() || '']: true,\r\n };\r\n }\r\n\r\n // Hover handling for submenus\r\n onItemMouseEnter(item: MenuItem, parentItems: MenuItem[]) {\r\n if (item.disabled) return;\r\n\r\n // Close other submenus at this level\r\n this.closeSiblings(item, parentItems);\r\n\r\n if (item.items) {\r\n item.expanded = true;\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n // Optional: auto close? Standard context menus usually stay open until click.\r\n // But submenus should respond to hover.\r\n }\r\n}\r\n","<div\r\n #container\r\n [ngClass]=\"containerClass()\"\r\n [class.magary-contextmenu-visible]=\"visible()\"\r\n [style.left.px]=\"x()\"\r\n [style.top.px]=\"y()\"\r\n [style]=\"style()\"\r\n>\r\n <ul class=\"magary-contextmenu-root-list\">\r\n @for (item of processedModel(); track item.label) {\r\n <li\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{\r\n 'magary-menuitem-active': item.expanded,\r\n 'magary-menu-separator': item.separator,\r\n 'magary-disabled': item.disabled,\r\n }\"\r\n (mouseenter)=\"onItemMouseEnter(item, model())\"\r\n >\r\n @if (item.separator) {\r\n } @else {\r\n <div class=\"magary-menuitem-content\">\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"item.url || '#'\"\r\n [attr.target]=\"item.target\"\r\n (click)=\"onItemClick($event, item)\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ item.label }}</span>\r\n @if (item.items && item.items.length > 0) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </div>\r\n\r\n <!-- Recursive Submenu -->\r\n @if (item.items && item.items.length > 0) {\r\n <ul class=\"magary-submenu\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuTemplate;\r\n context: { $implicit: item.items }\r\n \"\r\n ></ng-container>\r\n </ul>\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n\r\n<!-- Reusable Recursive Template -->\r\n<ng-template #submenuTemplate let-items>\r\n @for (child of items; track child.label) {\r\n <li\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{\r\n 'magary-menuitem-active': child.expanded,\r\n 'magary-menu-separator': child.separator,\r\n 'magary-disabled': child.disabled,\r\n }\"\r\n (mouseenter)=\"onItemMouseEnter(child, items)\"\r\n >\r\n @if (!child.separator) {\r\n <div class=\"magary-menuitem-content\">\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"child.url || '#'\"\r\n (click)=\"onItemClick($event, child)\"\r\n >\r\n @if (child.icon) {\r\n <lucide-icon\r\n [name]=\"child.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ child.label }}</span>\r\n @if (child.items && child.items.length > 0) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </div>\r\n @if (child.items && child.items.length > 0) {\r\n <ul class=\"magary-submenu\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuTemplate;\r\n context: { $implicit: child.items }\r\n \"\r\n ></ng-container>\r\n </ul>\r\n }\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n OnDestroy,\r\n Renderer2,\r\n ViewChild,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MenuItem } from '../api/menu.interface';\r\n\r\n// --- Helper Directive for Item logic (Hover, etc) ---\r\n@Directive({\r\n selector: '[appMenubarItem]',\r\n standalone: true,\r\n})\r\nexport class MenubarItemDirective {\r\n item = input.required<MenuItem>();\r\n parent = input.required<MagaryMenubar>();\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n if (this.item().disabled) return;\r\n this.parent().onItemHover(this.item());\r\n }\r\n}\r\n\r\n// --- Main Component ---\r\n@Component({\r\n selector: 'magary-menubar',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n LucideAngularModule,\r\n MenubarItemDirective,\r\n ],\r\n templateUrl: './menubar.html',\r\n styleUrl: './menubar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryMenubar implements OnDestroy {\r\n model = input<MenuItem[]>([]);\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string>('');\r\n\r\n processedModel = computed(() => {\r\n return this.model();\r\n });\r\n\r\n private documentClickListener: (() => void) | null = null;\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n\r\n constructor() {}\r\n\r\n onItemClick(event: Event, item: MenuItem) {\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!item.url && !item.routerLink) {\r\n event.preventDefault();\r\n }\r\n\r\n if (item.command) {\r\n item.command({ originalEvent: event, item });\r\n }\r\n\r\n if (item.items) {\r\n // It has children, toggle expansion\r\n if (item.expanded) {\r\n item.expanded = false;\r\n this.unbindDocumentClickListener();\r\n } else {\r\n item.expanded = true;\r\n this.bindDocumentClickListener();\r\n }\r\n } else {\r\n // Leaf node clicked, close whole menu\r\n this.resetExpansion(this.model());\r\n this.unbindDocumentClickListener();\r\n }\r\n }\r\n\r\n onItemHover(item: MenuItem) {\r\n if (item.disabled) return;\r\n\r\n // Hover logic:\r\n // If we hover an item that has children, we expand it and close siblings.\r\n // If we hover an item that is a LEAF, strictly speaking in menubar we might keep parent open.\r\n // We reuse the generic \"hover handler\" that closes siblings but keeps path open.\r\n\r\n // HOWEVER, for top-level items, we typically only open on hover IF another item is already open (like native menus),\r\n // OR if we decide to be \"hover-to-open\" always.\r\n // Web standard often is hover-to-open for submenus, but click-to-open for root?\r\n // User requested \"TieredMenu\" logic which is heavily hover-based.\r\n // Let's stick to: Hover opens submenus.\r\n\r\n this.handleHover(this.model(), item);\r\n }\r\n\r\n handleHover(items: MenuItem[], targetItem: MenuItem): boolean {\r\n let found = false;\r\n for (let item of items) {\r\n if (item === targetItem) {\r\n if (item.items) {\r\n item.expanded = true;\r\n this.bindDocumentClickListener();\r\n }\r\n found = true;\r\n } else {\r\n // If this item contains the target, it should remain expanded.\r\n // If not, it should be collapsed.\r\n if (this.isParentOf(item, targetItem)) {\r\n item.expanded = true;\r\n // Continue down\r\n this.handleHover(item.items || [], targetItem);\r\n } else {\r\n item.expanded = false;\r\n }\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n isParentOf(parent: MenuItem, child: MenuItem): boolean {\r\n if (parent.items) {\r\n for (let sub of parent.items) {\r\n if (sub === child) return true;\r\n if (this.isParentOf(sub, child)) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n resetExpansion(items: MenuItem[]) {\r\n items.forEach((item) => {\r\n item.expanded = false;\r\n if (item.items) {\r\n this.resetExpansion(item.items);\r\n }\r\n });\r\n }\r\n\r\n bindDocumentClickListener() {\r\n if (!this.documentClickListener) {\r\n // setTimeout to avoid immediate trigger\r\n setTimeout(() => {\r\n this.documentClickListener = this.renderer.listen(\r\n 'document',\r\n 'click',\r\n (event) => {\r\n // Check if click is inside the menu\r\n if (!this.el.nativeElement.contains(event.target)) {\r\n this.resetExpansion(this.model());\r\n this.unbindDocumentClickListener();\r\n }\r\n },\r\n );\r\n }, 0);\r\n }\r\n }\r\n\r\n unbindDocumentClickListener() {\r\n if (this.documentClickListener) {\r\n this.documentClickListener();\r\n this.documentClickListener = null;\r\n }\r\n }\r\n\r\n containerClass() {\r\n return {\r\n 'magary-menubar': true,\r\n [this.styleClass()]: true,\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unbindDocumentClickListener();\r\n }\r\n}\r\n","<div [ngClass]=\"containerClass()\" [style]=\"style()\">\r\n <ul class=\"magary-menubar-root-list\">\r\n @for (item of processedModel(); track item.label) {\r\n <li\r\n appMenubarItem\r\n [item]=\"item\"\r\n [parent]=\"this\"\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{\r\n 'magary-menuitem-active': item.expanded,\r\n 'magary-menu-separator': item.separator,\r\n }\"\r\n >\r\n @if (item.separator) {\r\n <!-- Separator -->\r\n } @else {\r\n <div class=\"magary-menuitem-content\">\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"item.url || '#'\"\r\n [attr.target]=\"item.target\"\r\n (click)=\"onItemClick($event, item)\"\r\n [class.magary-disabled]=\"item.disabled\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ item.label }}</span>\r\n @if (item.items && item.items.length > 0) {\r\n <lucide-icon\r\n name=\"chevron-down\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </div>\r\n\r\n <!-- Submenu -->\r\n @if (item.items && item.items.length > 0) {\r\n <div\r\n class=\"magary-submenu-container\"\r\n [class.magary-submenu-visible]=\"item.expanded\"\r\n >\r\n <ul class=\"magary-submenu\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuTemplate;\r\n context: { $implicit: item.items }\r\n \"\r\n ></ng-container>\r\n </ul>\r\n </div>\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n\r\n<!-- Recursive Template for Submenus -->\r\n<ng-template #submenuTemplate let-items>\r\n @for (child of items; track child.label) {\r\n <li\r\n appMenubarItem\r\n [item]=\"child\"\r\n [parent]=\"this\"\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{\r\n 'magary-menuitem-active': child.expanded,\r\n 'magary-menu-separator': child.separator,\r\n }\"\r\n >\r\n @if (child.separator) {\r\n <!-- Separator styled via class -->\r\n } @else {\r\n <div class=\"magary-menuitem-content\">\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"child.url || '#'\"\r\n [attr.target]=\"child.target\"\r\n (click)=\"onItemClick($event, child)\"\r\n [class.magary-disabled]=\"child.disabled\"\r\n >\r\n @if (child.icon) {\r\n <lucide-icon\r\n [name]=\"child.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ child.label }}</span>\r\n @if (child.items && child.items.length > 0) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </div>\r\n\r\n @if (child.items && child.items.length > 0) {\r\n <div\r\n class=\"magary-submenu-container\"\r\n [class.magary-submenu-visible]=\"child.expanded\"\r\n >\r\n <ul class=\"magary-submenu\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n submenuTemplate;\r\n context: { $implicit: child.items }\r\n \"\r\n ></ng-container>\r\n </ul>\r\n </div>\r\n }\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n OnDestroy,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MenuItem } from '../api/menu.interface';\r\n\r\n// --- Helper Directive for Item logic (Hover) ---\r\n@Directive({\r\n selector: '[appMegaMenuItem]',\r\n standalone: true,\r\n})\r\nexport class MegaMenuItemDirective {\r\n item = input.required<MenuItem>();\r\n parent = input.required<MagaryMegaMenu>();\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n if (this.item().disabled) return;\r\n this.parent().onItemHover(this.item());\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'magary-megamenu',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n LucideAngularModule,\r\n MegaMenuItemDirective,\r\n ],\r\n templateUrl: './megamenu.html',\r\n styleUrl: './megamenu.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryMegaMenu implements OnDestroy {\r\n model = input<MenuItem[]>([]);\r\n orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string>('');\r\n\r\n processedModel = computed(() => {\r\n return this.model();\r\n });\r\n\r\n private documentClickListener: (() => void) | null = null;\r\n private renderer = inject(Renderer2);\r\n public el = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n constructor() {}\r\n\r\n onItemClick(event: Event, item: MenuItem) {\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!item.url && !item.routerLink) {\r\n event.preventDefault();\r\n }\r\n\r\n if (item.command) {\r\n item.command({ originalEvent: event, item });\r\n }\r\n\r\n // Toggle logic for root items\r\n if (item.items) {\r\n if (item.expanded) {\r\n item.expanded = false;\r\n this.unbindDocumentClickListener();\r\n } else {\r\n // Close others first? Typically yes for horizontal menu.\r\n this.resetExpansion(this.model());\r\n item.expanded = true;\r\n this.bindDocumentClickListener();\r\n }\r\n this.cdr.markForCheck(); // Explicitly mark for check\r\n } else {\r\n // Leaf\r\n this.resetExpansion(this.model());\r\n this.unbindDocumentClickListener();\r\n this.cdr.markForCheck(); // Explicitly mark for check\r\n }\r\n }\r\n\r\n onItemHover(item: MenuItem) {\r\n if (item.disabled) return;\r\n // Hover logic\r\n this.resetExpansion(this.model());\r\n if (item.items) {\r\n item.expanded = true;\r\n this.bindDocumentClickListener();\r\n }\r\n this.cdr.markForCheck(); // Explicitly mark for check\r\n }\r\n\r\n resetExpansion(items: MenuItem[]) {\r\n items.forEach((item) => {\r\n item.expanded = false;\r\n if (item.items) {\r\n this.resetExpansion(item.items);\r\n }\r\n });\r\n }\r\n\r\n // Columns calculation helper could go here if needed,\r\n // but we assume item.items corresponds to columns directly.\r\n\r\n bindDocumentClickListener() {\r\n if (!this.documentClickListener) {\r\n setTimeout(() => {\r\n this.documentClickListener = this.renderer.listen(\r\n 'document',\r\n 'click',\r\n (event) => {\r\n if (!this.el.nativeElement.contains(event.target)) {\r\n this.resetExpansion(this.model());\r\n this.unbindDocumentClickListener();\r\n this.cdr.markForCheck(); // Explicitly mark for check\r\n }\r\n },\r\n );\r\n }, 0);\r\n }\r\n }\r\n\r\n unbindDocumentClickListener() {\r\n if (this.documentClickListener) {\r\n this.documentClickListener();\r\n this.documentClickListener = null;\r\n }\r\n }\r\n\r\n containerClass() {\r\n return {\r\n 'magary-megamenu': true,\r\n 'magary-megamenu-horizontal': this.orientation() === 'horizontal',\r\n 'magary-megamenu-vertical': this.orientation() === 'vertical',\r\n [this.styleClass()]: true,\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unbindDocumentClickListener();\r\n }\r\n}\r\n","<div [ngClass]=\"containerClass()\" [style]=\"style()\">\r\n <ul class=\"magary-megamenu-root-list\">\r\n @for (category of processedModel(); track category.label) {\r\n <li\r\n appMegaMenuItem\r\n [item]=\"category\"\r\n [parent]=\"this\"\r\n class=\"magary-menuitem\"\r\n [ngClass]=\"{ 'magary-menuitem-active': category.expanded }\"\r\n >\r\n <a\r\n class=\"magary-menuitem-link\"\r\n [href]=\"category.url || '#'\"\r\n [attr.target]=\"category.target\"\r\n (click)=\"onItemClick($event, category)\"\r\n [class.magary-disabled]=\"category.disabled\"\r\n >\r\n @if (category.icon) {\r\n <lucide-icon\r\n [name]=\"category.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ category.label }}</span>\r\n @if (category.items) {\r\n <lucide-icon\r\n name=\"chevron-down\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n\r\n @if (category.items && category.expanded) {\r\n <div class=\"magary-megamenu-panel\">\r\n <div class=\"magary-megamenu-grid\">\r\n @for (column of category.items; track column.label) {\r\n <div class=\"magary-megamenu-col\">\r\n <ul class=\"magary-megamenu-submenu\">\r\n <li class=\"magary-megamenu-submenu-header\">\r\n @if (column.icon) {\r\n <lucide-icon\r\n [name]=\"column.icon\"\r\n [size]=\"16\"\r\n class=\"header-icon\"\r\n ></lucide-icon>\r\n }\r\n <span>{{ column.label }}</span>\r\n </li>\r\n\r\n @if (column.items) {\r\n @for (sublink of column.items; track sublink.label) {\r\n <li class=\"magary-menuitem\">\r\n <a\r\n class=\"magary-menuitem-link sublink\"\r\n [href]=\"sublink.url || '#'\"\r\n [attr.target]=\"sublink.target\"\r\n (click)=\"onItemClick($event, sublink)\"\r\n >\r\n @if (sublink.icon) {\r\n <lucide-icon\r\n [name]=\"sublink.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"14\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{\r\n sublink.label\r\n }}</span>\r\n </a>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n signal,\r\n computed,\r\n inject,\r\n ChangeDetectorRef,\r\n input,\r\n effect,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MenuItem } from '../api/menu.interface';\r\nimport {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n query,\r\n group,\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'magary-slidemenu',\r\n standalone: true,\r\n imports: [CommonModule, RouterModule, LucideAngularModule],\r\n templateUrl: './slidemenu.html',\r\n styleUrl: './slidemenu.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('slideAnimation', [\r\n transition(':increment', [\r\n query(':enter', [\r\n style({\r\n transform: 'translateX(100%)',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n }),\r\n ]),\r\n query(':leave', [\r\n style({\r\n transform: 'translateX(0)',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n }),\r\n ]),\r\n group([\r\n query(':leave', [\r\n animate(\r\n '300ms ease-out',\r\n style({ transform: 'translateX(-100%)' }),\r\n ),\r\n ]),\r\n query(':enter', [\r\n animate('300ms ease-out', style({ transform: 'translateX(0)' })),\r\n ]),\r\n ]),\r\n ]),\r\n transition(':decrement', [\r\n query(':enter', [\r\n style({\r\n transform: 'translateX(-100%)',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n }),\r\n ]),\r\n query(':leave', [\r\n style({\r\n transform: 'translateX(0)',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n }),\r\n ]),\r\n group([\r\n query(':leave', [\r\n animate('300ms ease-out', style({ transform: 'translateX(100%)' })),\r\n ]),\r\n query(':enter', [\r\n animate('300ms ease-out', style({ transform: 'translateX(0)' })),\r\n ]),\r\n ]),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagarySlideMenu {\r\n model = input<MenuItem[]>([]);\r\n style = input<{ [klass: string]: any } | null>(null);\r\n styleClass = input<string>('');\r\n menuWidth = input<number | string>(300);\r\n viewportHeight = input<number | string>(400);\r\n viewStack = signal<MenuItem[][]>([]);\r\n currentIndex = signal<number>(0);\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n if (this.viewStack().length === 0 && this.model().length > 0) {\r\n this.viewStack.set([this.model()]);\r\n }\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n }\r\n\r\n get currentItems() {\r\n const stack = this.viewStack();\r\n const index = this.currentIndex();\r\n return stack[index] || [];\r\n }\r\n\r\n headerStack = signal<string[]>(['Main']);\r\n\r\n get currentHeader() {\r\n return this.headerStack()[this.currentIndex()];\r\n }\r\n\r\n onItemClick(event: Event, item: MenuItem) {\r\n if (item.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!item.url && !item.routerLink) {\r\n event.preventDefault();\r\n }\r\n\r\n if (item.command) {\r\n item.command({ originalEvent: event, item });\r\n }\r\n\r\n if (item.items) {\r\n this.viewStack.update((stack) => [...stack, item.items!]);\r\n this.headerStack.update((stack) => [...stack, item.label || 'Submenu']);\r\n this.currentIndex.update((i) => i + 1);\r\n }\r\n }\r\n\r\n goBack() {\r\n if (this.currentIndex() > 0) {\r\n this.currentIndex.update((i) => i - 1);\r\n setTimeout(() => {\r\n this.viewStack.update((stack) =>\r\n stack.slice(0, this.currentIndex() + 1),\r\n );\r\n this.headerStack.update((stack) =>\r\n stack.slice(0, this.currentIndex() + 1),\r\n );\r\n }, 300);\r\n }\r\n }\r\n\r\n containerStyle() {\r\n return {\r\n width:\r\n typeof this.menuWidth() === 'number'\r\n ? this.menuWidth() + 'px'\r\n : this.menuWidth(),\r\n height:\r\n typeof this.viewportHeight() === 'number'\r\n ? this.viewportHeight() + 'px'\r\n : this.viewportHeight(),\r\n ...this.style(),\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"magary-slidemenu\"\r\n [ngClass]=\"styleClass()\"\r\n [ngStyle]=\"containerStyle()\"\r\n>\r\n <div class=\"magary-slidemenu-wrapper\" [@slideAnimation]=\"currentIndex()\">\r\n @for (view of [currentIndex()]; track view) {\r\n <div class=\"magary-slidemenu-content\">\r\n <!-- Header for Back Navigation -->\r\n @if (currentIndex() > 0) {\r\n <div class=\"magary-slidemenu-header\" (click)=\"goBack()\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"16\"></lucide-icon>\r\n <span class=\"back-label\">Back</span>\r\n <span class=\"current-label\">{{ currentHeader }}</span>\r\n </div>\r\n } @else {\r\n <!-- Optional Root Header -->\r\n }\r\n\r\n <ul class=\"magary-slidemenu-list\">\r\n @for (item of currentItems; track item.label) {\r\n <li class=\"magary-menuitem\">\r\n <a\r\n [href]=\"item.url || '#'\"\r\n class=\"magary-menuitem-link\"\r\n [class.magary-disabled]=\"item.disabled\"\r\n [attr.target]=\"item.target\"\r\n (click)=\"onItemClick($event, item)\"\r\n >\r\n @if (item.icon) {\r\n <lucide-icon\r\n [name]=\"item.icon\"\r\n class=\"magary-menuitem-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n <span class=\"magary-menuitem-text\">{{ item.label }}</span>\r\n\r\n @if (item.items) {\r\n <lucide-icon\r\n name=\"chevron-right\"\r\n class=\"magary-submenu-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n }\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { Toast } from './toast.service';\r\n\r\n@Component({\r\n selector: 'magary-toast-item',\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './toast-item.html',\r\n styleUrl: './toast-item.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryToastItem {\r\n toast = input.required<Toast>();\r\n onClose = output<string>();\r\n\r\n iconClass = computed(() => {\r\n const t = this.toast();\r\n if (t.icon) return t.icon;\r\n\r\n switch (t.type) {\r\n case 'success':\r\n return 'circle-check';\r\n case 'error':\r\n return 'circle-x';\r\n case 'warning':\r\n return 'triangle-alert';\r\n case 'info':\r\n return 'info';\r\n default:\r\n return 'info';\r\n }\r\n });\r\n\r\n close() {\r\n const t = this.toast();\r\n if (t.id) {\r\n this.onClose.emit(t.id);\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"magary-toast-item\"\r\n [ngClass]=\"toast().type || 'info'\"\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n aria-atomic=\"true\"\r\n>\r\n <div class=\"toast-icon\">\r\n <lucide-icon [name]=\"iconClass()\"></lucide-icon>\r\n </div>\r\n <div class=\"toast-content\">\r\n @if (toast().title) {\r\n <div class=\"toast-title\">{{ toast().title }}</div>\r\n }\r\n @if (toast().message) {\r\n <div class=\"toast-message\">{{ toast().message }}</div>\r\n }\r\n </div>\r\n <button\r\n class=\"toast-close-btn\"\r\n (click)=\"close()\"\r\n type=\"button\"\r\n aria-label=\"Close\"\r\n >\r\n <lucide-icon name=\"x\"></lucide-icon>\r\n </button>\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nexport interface Toast {\r\n id?: string;\r\n type?: 'success' | 'info' | 'warning' | 'error';\r\n title?: string;\r\n message?: string;\r\n icon?: string;\r\n duration?: number;\r\n life?: number; // alias for duration\r\n sticky?: boolean;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MagaryToastService {\r\n private _toasts = signal<Toast[]>([]);\r\n readonly toasts = this._toasts.asReadonly();\r\n\r\n add(toast: Toast) {\r\n const id = toast.id || this.generateId();\r\n const newToast = { ...toast, id };\r\n\r\n this._toasts.update((current) => [...current, newToast]);\r\n\r\n if (!newToast.sticky) {\r\n const duration = newToast.life || newToast.duration || 3000;\r\n setTimeout(() => {\r\n this.remove(id);\r\n }, duration);\r\n }\r\n }\r\n\r\n remove(id: string) {\r\n this._toasts.update((current) => current.filter((t) => t.id !== id));\r\n }\r\n\r\n clear() {\r\n this._toasts.set([]);\r\n }\r\n\r\n private generateId(): string {\r\n return 'toast-' + Math.random().toString(36).substr(2, 9);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, input, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MagaryToastItem } from './toast-item';\r\nimport { MagaryToastService } from './toast.service';\r\nimport {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n query,\r\n stagger,\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'magary-toast',\r\n imports: [CommonModule, MagaryToastItem],\r\n templateUrl: './toast.html',\r\n styleUrl: './toast.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('toastAnimation', [\r\n transition(':enter', [\r\n style({ transform: 'translateY(20px)', opacity: 0 }),\r\n animate(\r\n '300ms cubic-bezier(0.25, 0.8, 0.25, 1)',\r\n style({ transform: 'translateY(0)', opacity: 1 }),\r\n ),\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '300ms ease-out',\r\n style({ transform: 'translateX(100%)', opacity: 0 }),\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryToast {\r\n private toastService = inject(MagaryToastService);\r\n\r\n position = input<\r\n | 'top-right'\r\n | 'top-left'\r\n | 'bottom-right'\r\n | 'bottom-left'\r\n | 'top-center'\r\n | 'bottom-center'\r\n | 'center'\r\n >('top-right');\r\n baseZIndex = input<number>(1000);\r\n\r\n get toasts() {\r\n return this.toastService.toasts();\r\n }\r\n\r\n onToastClose(id: string) {\r\n this.toastService.remove(id);\r\n }\r\n}\r\n","<div\r\n class=\"magary-toast-container\"\r\n [ngClass]=\"position()\"\r\n [style.zIndex]=\"baseZIndex()\"\r\n>\r\n @for (toast of toasts; track toast.id) {\r\n <magary-toast-item\r\n [@toastAnimation]\r\n [toast]=\"toast\"\r\n (onClose)=\"onToastClose($event)\"\r\n ></magary-toast-item>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryToast } from './toast';\r\nimport { MagaryToastItem } from './toast-item';\r\n\r\n@NgModule({\r\n imports: [MagaryToast, MagaryToastItem],\r\n exports: [MagaryToast, MagaryToastItem],\r\n})\r\nexport class MagaryToastModule {}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n signal,\r\n computed,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n@Component({\r\n selector: 'magary-message',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './message.html',\r\n styleUrls: ['./message.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'magary-message-wrapper',\r\n },\r\n animations: [\r\n trigger('messageAnimation', [\r\n state(\r\n 'visible',\r\n style({\r\n transform: 'translateY(0) scale(1)',\r\n opacity: 1,\r\n height: '*',\r\n marginTop: '*',\r\n marginBottom: '*',\r\n }),\r\n ),\r\n transition('void => *', [\r\n style({\r\n transform: 'translateY(-20px) scale(0.95)',\r\n opacity: 0,\r\n height: 0,\r\n marginTop: 0,\r\n marginBottom: 0,\r\n }),\r\n animate(\r\n '400ms cubic-bezier(0.25, 0.8, 0.25, 1)',\r\n style({\r\n transform: 'translateY(0) scale(1)',\r\n opacity: 1,\r\n height: '*',\r\n marginTop: '*',\r\n marginBottom: '*',\r\n }),\r\n ),\r\n ]),\r\n transition('* => void', [\r\n style({\r\n transform: 'translateY(0) scale(1)',\r\n opacity: 1,\r\n height: '*',\r\n marginTop: '*',\r\n marginBottom: '*',\r\n }),\r\n animate(\r\n '300ms cubic-bezier(0.25, 0.8, 0.25, 1)',\r\n style({\r\n transform: 'translateY(-20px) scale(0.95)',\r\n opacity: 0,\r\n height: 0,\r\n marginTop: 0,\r\n marginBottom: 0,\r\n }),\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryMessage implements OnInit {\r\n severity = input<\r\n 'success' | 'info' | 'warn' | 'error' | 'secondary' | 'contrast'\r\n >('info');\r\n\r\n text = input<string | undefined>(undefined);\r\n\r\n detail = input<string | undefined>(undefined);\r\n\r\n icon = input<string | undefined>(undefined);\r\n\r\n closable = input<boolean>(false);\r\n\r\n life = input<number | undefined>(undefined);\r\n\r\n onClose = output<Event>();\r\n\r\n visible = signal(true);\r\n\r\n ngOnInit() {\r\n const life = this.life();\r\n if (life) {\r\n setTimeout(() => {\r\n this.close(null);\r\n }, life);\r\n }\r\n }\r\n\r\n iconClass = computed(() => {\r\n const icon = this.icon();\r\n if (icon) {\r\n return icon;\r\n }\r\n\r\n switch (this.severity()) {\r\n case 'success':\r\n return 'circle-check';\r\n case 'info':\r\n return 'info';\r\n case 'warn':\r\n return 'triangle-alert';\r\n case 'error':\r\n return 'circle-x';\r\n default:\r\n return 'info';\r\n }\r\n });\r\n\r\n close(event: Event | null) {\r\n this.visible.set(false);\r\n if (event) {\r\n this.onClose.emit(event);\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"magary-message\"\r\n [ngClass]=\"'magary-message-' + severity()\"\r\n role=\"alert\"\r\n [@messageAnimation]\r\n>\r\n @if (visible()) {\r\n <div class=\"magary-message-wrapper\">\r\n <lucide-icon\r\n [name]=\"iconClass()\"\r\n class=\"magary-message-icon\"\r\n ></lucide-icon>\r\n <div class=\"magary-message-text\">\r\n @if (text()) {\r\n <span class=\"magary-message-summary\">{{ text() }}</span>\r\n }\r\n @if (detail()) {\r\n <span class=\"magary-message-detail\">{{ detail() }}</span>\r\n }\r\n </div>\r\n @if (closable()) {\r\n <button\r\n type=\"button\"\r\n class=\"magary-message-close\"\r\n (click)=\"close($event)\"\r\n aria-label=\"Close\"\r\n >\r\n <lucide-icon name=\"x\"></lucide-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryMessage } from './message';\r\n\r\n@NgModule({\r\n imports: [MagaryMessage],\r\n exports: [MagaryMessage],\r\n})\r\nexport class MagaryMessageModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryAvatar } from './avatar';\r\nexport * from './avatar';\r\n@NgModule({\r\n imports: [CommonModule, MagaryAvatar],\r\n exports: [MagaryAvatar],\r\n})\r\nexport class MagaryAvatarModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagarySkeleton } from './skeleton';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MagarySkeleton],\r\n exports: [MagarySkeleton],\r\n})\r\nexport class MagarySkeletonModule {}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport type DividerLayout = 'horizontal' | 'vertical';\r\nexport type DividerAlign = 'left' | 'center' | 'right' | 'top' | 'bottom';\r\nexport type DividerType = 'solid' | 'dashed' | 'dotted';\r\n\r\n@Component({\r\n selector: 'magary-divider',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './divider.html',\r\n styleUrls: ['./divider.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n host: {\r\n class: 'magary-divider',\r\n '[class.magary-divider-horizontal]': 'layout() === \"horizontal\"',\r\n '[class.magary-divider-vertical]': 'layout() === \"vertical\"',\r\n '[class.magary-divider-solid]': 'type() === \"solid\"',\r\n '[class.magary-divider-dashed]': 'type() === \"dashed\"',\r\n '[class.magary-divider-dotted]': 'type() === \"dotted\"',\r\n '[class.magary-divider-left]': 'align() === \"left\"',\r\n '[class.magary-divider-center]': 'align() === \"center\"',\r\n '[class.magary-divider-right]': 'align() === \"right\"',\r\n '[class.magary-divider-top]': 'align() === \"top\"',\r\n '[class.magary-divider-bottom]': 'align() === \"bottom\"',\r\n '[attr.role]': '\"separator\"',\r\n '[attr.aria-orientation]': 'layout()',\r\n },\r\n})\r\nexport class MagaryDivider {\r\n layout = input<DividerLayout>('horizontal');\r\n align = input<DividerAlign>('center');\r\n type = input<DividerType>('solid');\r\n}\r\n","<div class=\"magary-divider-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\n\r\nexport type TagSeverity =\r\n | 'success'\r\n | 'info'\r\n | 'warning'\r\n | 'danger'\r\n | 'secondary'\r\n | 'contrast';\r\n\r\n@Component({\r\n selector: 'magary-tag',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './tag.html',\r\n styleUrls: ['./tag.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n host: {\r\n class: 'magary-tag',\r\n '[class.magary-tag-success]': 'severity() === \"success\"',\r\n '[class.magary-tag-info]': 'severity() === \"info\"',\r\n '[class.magary-tag-warning]': 'severity() === \"warning\"',\r\n '[class.magary-tag-danger]': 'severity() === \"danger\"',\r\n '[class.magary-tag-secondary]': 'severity() === \"secondary\"',\r\n '[class.magary-tag-contrast]': 'severity() === \"contrast\"',\r\n '[class.magary-tag-rounded]': 'rounded()',\r\n },\r\n})\r\nexport class MagaryTag {\r\n severity = input<TagSeverity>('info');\r\n value = input<string | undefined>();\r\n icon = input<string | undefined>();\r\n rounded = input<boolean>(false);\r\n}\r\n","<!-- @if (icon()) {\r\n <lucide-icon\r\n [name]=\"icon()\"\r\n [size]=\"12\"\r\n class=\"magary-tag-icon\"\r\n ></lucide-icon>\r\n} -->\r\n@if (value()) {\r\n <span class=\"magary-tag-value\">{{ value() }}</span>\r\n}\r\n<ng-content></ng-content>\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n OnDestroy,\r\n Renderer2,\r\n Inject,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Directive({\r\n selector: '[magaryTooltip]',\r\n standalone: true,\r\n})\r\nexport class MagaryTooltip implements OnDestroy {\r\n text = input<string | undefined>(undefined, { alias: 'magaryTooltip' });\r\n tooltipPosition = input<'top' | 'bottom' | 'left' | 'right'>('top');\r\n\r\n private tooltipElement: HTMLElement | null = null;\r\n private scrollUnlisten: (() => void) | null = null;\r\n private resizeUnlisten: (() => void) | null = null;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private zone: NgZone,\r\n @Inject(DOCUMENT) private document: Document,\r\n ) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n if (!this.text()) return;\r\n this.show();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave() {\r\n this.hide();\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n if (!this.text()) return;\r\n this.show();\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n this.hide();\r\n }\r\n\r\n show() {\r\n if (this.tooltipElement) return;\r\n\r\n this.create();\r\n this.align();\r\n\r\n // Bind window events to update position or hide\r\n this.bindEvents();\r\n\r\n // Add Fade In class\r\n this.renderer.addClass(this.tooltipElement, 'magary-tooltip-visible');\r\n }\r\n\r\n hide() {\r\n if (!this.tooltipElement) return;\r\n\r\n this.unbindEvents();\r\n this.renderer.removeChild(this.document.body, this.tooltipElement);\r\n this.tooltipElement = null;\r\n }\r\n\r\n create() {\r\n this.tooltipElement = this.renderer.createElement('div');\r\n this.renderer.addClass(this.tooltipElement, 'magary-tooltip');\r\n this.renderer.addClass(\r\n this.tooltipElement,\r\n `magary-tooltip-${this.tooltipPosition()}`,\r\n );\r\n\r\n const textNode = this.renderer.createText(this.text()!);\r\n this.renderer.appendChild(this.tooltipElement, textNode);\r\n\r\n this.renderer.appendChild(this.document.body, this.tooltipElement);\r\n\r\n // Ensure styles are available globally if not encapsulated\r\n // Or we rely on global styles. Since this is a directive appending to body, styles must be global or added via a component.\r\n // For simplicity in this structure, we assume tooltip styles are loaded globally or we'll add them to a global css file.\r\n // Wait, directives can't easily encapsulation styles.\r\n // We will define styles in tooltip.scss and the user must import them or we make a dummy component or use ViewEncapsulation.None on a container?\r\n // Best practice for libs: usually provide a global css or inclusion.\r\n }\r\n\r\n align() {\r\n if (!this.tooltipElement) return;\r\n\r\n const hostRect = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipElement.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n const offset = 8; // gap\r\n\r\n switch (this.tooltipPosition()) {\r\n case 'top':\r\n top = hostRect.top - tooltipRect.height - offset;\r\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'bottom':\r\n top = hostRect.bottom + offset;\r\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'left':\r\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\r\n left = hostRect.left - tooltipRect.width - offset;\r\n break;\r\n case 'right':\r\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\r\n left = hostRect.right + offset;\r\n break;\r\n }\r\n\r\n // Add scroll offset\r\n top += window.scrollY;\r\n left += window.scrollX;\r\n\r\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\r\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\r\n }\r\n\r\n bindEvents() {\r\n this.zone.runOutsideAngular(() => {\r\n this.resizeUnlisten = this.renderer.listen(window, 'resize', () =>\r\n this.hide(),\r\n );\r\n this.scrollUnlisten = this.renderer.listen(window, 'scroll', () =>\r\n this.hide(),\r\n );\r\n });\r\n }\r\n\r\n unbindEvents() {\r\n if (this.resizeUnlisten) {\r\n this.resizeUnlisten();\r\n this.resizeUnlisten = null;\r\n }\r\n if (this.scrollUnlisten) {\r\n this.scrollUnlisten();\r\n this.scrollUnlisten = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.hide();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryTooltip } from './tooltip';\r\n\r\n@NgModule({\r\n imports: [MagaryTooltip],\r\n exports: [MagaryTooltip],\r\n})\r\nexport class MagaryTooltipModule {}\r\n","import {\r\n Component,\r\n ElementRef,\r\n Renderer2,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n computed,\r\n signal,\r\n effect,\r\n model,\r\n booleanAttribute,\r\n input,\r\n output,\r\n viewChild,\r\n inject,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n AnimationEvent,\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'magary-dialog',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './dialog.html',\r\n styleUrls: ['./dialog.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('maskAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('300ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n animate('200ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 })),\r\n ]),\r\n ]),\r\n trigger('dialogAnimation', [\r\n transition(':enter', [\r\n style({ transform: 'scale(0.9)', opacity: 0 }),\r\n animate(\r\n '300ms cubic-bezier(0.25, 0.8, 0.25, 1)',\r\n style({ transform: 'scale(1)', opacity: 1 }),\r\n ),\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '200ms cubic-bezier(0.25, 0.8, 0.25, 1)',\r\n style({ transform: 'scale(0.9)', opacity: 0 }),\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryDialog {\r\n // Model for two-way binding of visibility\r\n visible = model<boolean>(false);\r\n\r\n // Inputs\r\n header = input<string | undefined>(undefined);\r\n draggable = input(true, { transform: booleanAttribute });\r\n resizable = input(false, { transform: booleanAttribute });\r\n modal = input(true, { transform: booleanAttribute });\r\n closeOnEscape = input(true, { transform: booleanAttribute });\r\n dismissableMask = input(false, { transform: booleanAttribute });\r\n maximizable = input(false, { transform: booleanAttribute });\r\n style = input<any>(null);\r\n contentStyle = input<any>(null);\r\n styleClass = input<string | undefined>(undefined);\r\n appendTo = input<'body' | 'local'>('body');\r\n\r\n // Aesthetic Inputs\r\n width = input<string | undefined>(undefined);\r\n height = input<string | undefined>(undefined);\r\n position = input<\r\n | 'center'\r\n | 'top'\r\n | 'bottom'\r\n | 'left'\r\n | 'right'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n >('center');\r\n backgroundColor = input<string | undefined>(undefined);\r\n glass = input(false, { transform: booleanAttribute });\r\n\r\n // Outputs\r\n onShow = output<AnimationEvent>();\r\n onHide = output<AnimationEvent>();\r\n\r\n // ViewChild\r\n containerViewChild =\r\n viewChild.required<ElementRef<HTMLDivElement>>('container');\r\n contentViewChild = viewChild.required<ElementRef<HTMLDivElement>>('content');\r\n headerViewChild =\r\n viewChild.required<ElementRef<HTMLDivElement>>('headerElement');\r\n\r\n // Internal State\r\n maximized = signal(false);\r\n resizing = signal(false);\r\n dragging = signal(false);\r\n\r\n // Drag/Resize State\r\n private lastPageX = 0;\r\n private lastPageY = 0;\r\n private startWidth = 0;\r\n private startHeight = 0;\r\n private startX = 0;\r\n private startY = 0;\r\n\r\n // Listeners\r\n private documentMouseMoveListener: (() => void) | null = null;\r\n private documentMouseUpListener: (() => void) | null = null;\r\n\r\n public el = inject(ElementRef);\r\n public renderer = inject(Renderer2);\r\n\r\n constructor() {\r\n // Effect to handle body scroll locking when modal is visible\r\n effect(() => {\r\n if (this.visible() && this.modal()) {\r\n this.blockBodyScroll();\r\n } else {\r\n this.unblockBodyScroll();\r\n }\r\n });\r\n\r\n // Effect to handle focus trap or other side effects if needed\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.appendTo() === 'body') {\r\n this.renderer.appendChild(document.body, this.el.nativeElement);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // If we moved it to body, Angular should usually handle removal,\r\n // but to be safe and cleaner we can ensure cleanup if needed.\r\n // In standard Angular, removing the component destroys the view and removes the host.\r\n // However, since we moved it, let's explicitely check if we need to remove, though Angular usually tracks the node.\r\n // Actually, simpler: if we moved it, we leave it to Angular to remove.\r\n // But we should unblock scroll just in case.\r\n this.unblockBodyScroll();\r\n }\r\n\r\n // --- Public Methods ---\r\n\r\n close(event: Event) {\r\n this.visible.set(false);\r\n event.preventDefault();\r\n }\r\n\r\n maximize(event: Event) {\r\n if (this.maximizable()) {\r\n this.maximized.update((v) => !v);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onMaskClick(event: MouseEvent) {\r\n if (this.resizing() || this.dragging()) {\r\n return;\r\n }\r\n\r\n if (\r\n this.dismissableMask() &&\r\n this.modal() &&\r\n this.visible() &&\r\n event.target === event.currentTarget\r\n ) {\r\n this.close(event);\r\n }\r\n }\r\n\r\n // --- Dragging Logic ---\r\n\r\n initDrag(event: MouseEvent) {\r\n if (this.draggable() && !this.maximized()) {\r\n this.dragging.set(true);\r\n this.lastPageX = event.pageX;\r\n this.lastPageY = event.pageY;\r\n\r\n const container = this.containerViewChild().nativeElement;\r\n const rect = container.getBoundingClientRect();\r\n this.startX = rect.left;\r\n this.startY = rect.top;\r\n\r\n // Ensure absolute positioning for dragging if likely to move\r\n // Note: Premium libraries often switch to fixed/absolute on first drag\r\n // Here we assume the dialog container might need position styles applied\r\n\r\n this.renderer.addClass(document.body, 'magary-dragging');\r\n this.bindGlobalListeners('drag');\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onDrag(event: MouseEvent) {\r\n if (this.dragging()) {\r\n const deltaX = event.pageX - this.lastPageX;\r\n const deltaY = event.pageY - this.lastPageY;\r\n\r\n const container = this.containerViewChild().nativeElement;\r\n\r\n // We rely on transform for smoother performance\r\n // Get current transform\r\n const computedStyle = getComputedStyle(container);\r\n const matrix = new WebKitCSSMatrix(computedStyle.transform);\r\n const currentX = matrix.m41;\r\n const currentY = matrix.m42;\r\n\r\n const newX = currentX + deltaX;\r\n const newY = currentY + deltaY;\r\n\r\n this.renderer.setStyle(\r\n container,\r\n 'transform',\r\n `translate3d(${newX}px, ${newY}px, 0)`,\r\n );\r\n\r\n this.lastPageX = event.pageX;\r\n this.lastPageY = event.pageY;\r\n }\r\n }\r\n\r\n endDrag() {\r\n this.renderer.removeClass(document.body, 'magary-dragging');\r\n this.unbindGlobalListeners();\r\n setTimeout(() => {\r\n this.dragging.set(false);\r\n }, 50);\r\n }\r\n\r\n // --- Resizing Logic ---\r\n\r\n initResize(event: MouseEvent) {\r\n if (this.resizable() && !this.maximized()) {\r\n this.resizing.set(true);\r\n this.lastPageX = event.pageX;\r\n this.lastPageY = event.pageY;\r\n\r\n const container = this.containerViewChild().nativeElement;\r\n this.startWidth = container.offsetWidth;\r\n this.startHeight = container.offsetHeight;\r\n\r\n this.renderer.addClass(document.body, 'magary-resizing');\r\n this.bindGlobalListeners('resize');\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onResize(event: MouseEvent) {\r\n if (this.resizing()) {\r\n const deltaX = event.pageX - this.lastPageX;\r\n const deltaY = event.pageY - this.lastPageY;\r\n\r\n const container = this.containerViewChild().nativeElement;\r\n const newWidth = Math.max(this.startWidth + deltaX, 300); // Min width constraint\r\n const newHeight = Math.max(this.startHeight + deltaY, 150); // Min height constraint\r\n\r\n this.renderer.setStyle(container, 'width', `${newWidth}px`);\r\n this.renderer.setStyle(container, 'height', `${newHeight}px`);\r\n }\r\n }\r\n\r\n endResize() {\r\n this.renderer.removeClass(document.body, 'magary-resizing');\r\n this.unbindGlobalListeners();\r\n setTimeout(() => {\r\n this.resizing.set(false);\r\n }, 50);\r\n }\r\n\r\n // --- Event Listeners Helpers ---\r\n\r\n private bindGlobalListeners(type: 'drag' | 'resize') {\r\n if (type === 'drag') {\r\n this.documentMouseMoveListener = this.renderer.listen(\r\n 'document',\r\n 'mousemove',\r\n (e) => this.onDrag(e),\r\n );\r\n this.documentMouseUpListener = this.renderer.listen(\r\n 'document',\r\n 'mouseup',\r\n () => this.endDrag(),\r\n );\r\n } else {\r\n this.documentMouseMoveListener = this.renderer.listen(\r\n 'document',\r\n 'mousemove',\r\n (e) => this.onResize(e),\r\n );\r\n this.documentMouseUpListener = this.renderer.listen(\r\n 'document',\r\n 'mouseup',\r\n () => this.endResize(),\r\n );\r\n }\r\n }\r\n\r\n private unbindGlobalListeners() {\r\n if (this.documentMouseMoveListener) {\r\n this.documentMouseMoveListener();\r\n this.documentMouseMoveListener = null;\r\n }\r\n if (this.documentMouseUpListener) {\r\n this.documentMouseUpListener();\r\n this.documentMouseUpListener = null;\r\n }\r\n }\r\n\r\n // --- Utilities ---\r\n\r\n private blockBodyScroll() {\r\n this.renderer.addClass(document.body, 'magary-overflow-hidden');\r\n }\r\n\r\n private unblockBodyScroll() {\r\n this.renderer.removeClass(document.body, 'magary-overflow-hidden');\r\n }\r\n}\r\n","@if (visible()) {\r\n <div\r\n [class]=\"'magary-dialog-mask magary-dialog-' + position()\"\r\n [class.magary-dialog-mask-scrollblocker]=\"modal()\"\r\n [class.magary-dialog-mask-transparent]=\"!modal()\"\r\n [class.magary-dialog-absolute]=\"appendTo() === 'local'\"\r\n [class.magary-dialog-glass-effect]=\"glass()\"\r\n [@maskAnimation]\r\n (click)=\"onMaskClick($event)\"\r\n >\r\n <div\r\n #container\r\n class=\"magary-dialog\"\r\n [ngClass]=\"styleClass()\"\r\n [class.magary-dialog-maximized]=\"maximized()\"\r\n [class.magary-dialog-dragging]=\"dragging()\"\r\n [class.magary-dialog-glass]=\"glass()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [style.background-color]=\"backgroundColor()\"\r\n [ngStyle]=\"style()\"\r\n [@dialogAnimation]\r\n (@dialogAnimation.start)=\"onShow.emit($event)\"\r\n (@dialogAnimation.done)=\"onHide.emit($event)\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n <!-- Header -->\r\n @if (header()) {\r\n <div class=\"magary-dialog-header\" (mousedown)=\"initDrag($event)\">\r\n <span class=\"magary-dialog-title\">{{ header() }}</span>\r\n <div class=\"magary-dialog-header-icons\">\r\n @if (maximizable()) {\r\n <button\r\n type=\"button\"\r\n class=\"magary-dialog-header-icon\"\r\n (click)=\"maximize($event)\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"maximized() ? 'Restore' : 'Maximize'\"\r\n >\r\n <lucide-icon\r\n [name]=\"maximized() ? 'minimize-2' : 'maximize-2'\"\r\n ></lucide-icon>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"magary-dialog-header-icon\"\r\n (click)=\"close($event)\"\r\n tabindex=\"-1\"\r\n aria-label=\"Close\"\r\n >\r\n <lucide-icon name=\"x\"></lucide-icon>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Content -->\r\n <div #content class=\"magary-dialog-content\" [ngStyle]=\"contentStyle()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"magary-dialog-footer\">\r\n <ng-content select=\"[slot=footer]\"></ng-content>\r\n <!-- Fallback for legacy p-footer support or just generic footer content -->\r\n <ng-content select=\"p-footer\"></ng-content>\r\n </div>\r\n\r\n <!-- Resizer -->\r\n @if (resizable() && !maximized()) {\r\n <div\r\n class=\"magary-dialog-resizer\"\r\n (mousedown)=\"initResize($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryDialog } from './dialog';\r\n\r\n@NgModule({\r\n imports: [MagaryDialog],\r\n exports: [MagaryDialog],\r\n})\r\nexport class MagaryDialogModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n inject,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'magary-overlaypanel',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './overlaypanel.html',\r\n styleUrl: './overlaypanel.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\r\n animate(\r\n '120ms cubic-bezier(0, 0, 0.2, 1)',\r\n style({ opacity: 1, transform: 'translateY(0)' }),\r\n ),\r\n ]),\r\n transition(':leave', [animate('100ms linear', style({ opacity: 0 }))]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryOverlayPanel implements OnDestroy {\r\n dismissable = signal(true); // Default true\r\n showCloseIcon = signal(false);\r\n\r\n @Input('dismissable') set _dismissable(val: boolean) {\r\n this.dismissable.set(val);\r\n }\r\n @Input('showCloseIcon') set _showCloseIcon(val: boolean) {\r\n this.showCloseIcon.set(val);\r\n }\r\n\r\n @Output() onShow = new EventEmitter<any>();\r\n @Output() onHide = new EventEmitter<any>();\r\n\r\n @ViewChild('container') container: ElementRef | undefined;\r\n\r\n visible = signal(false);\r\n target: any;\r\n documentClickListener: any;\r\n scrollListener: any;\r\n\r\n cd = inject(ChangeDetectorRef);\r\n renderer = inject(Renderer2);\r\n el = inject(ElementRef);\r\n document = inject(DOCUMENT);\r\n\r\n toggle(event: Event, target?: any) {\r\n if (this.visible()) {\r\n this.hide();\r\n } else {\r\n this.show(event, target);\r\n }\r\n }\r\n\r\n show(event: Event, target?: any) {\r\n this.target = target || event.currentTarget || event.target;\r\n this.visible.set(true);\r\n this.onShow.emit(null);\r\n\r\n // Append to body to avoid z-index/transform issues\r\n // We need to wait for the view to be created by the signal change\r\n setTimeout(() => {\r\n if (this.container) {\r\n this.renderer.appendChild(\r\n this.document.body,\r\n this.container.nativeElement,\r\n );\r\n this.alignWithTarget();\r\n this.bindDocumentClickListener();\r\n this.bindScrollListener();\r\n this.cd.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n hide() {\r\n this.visible.set(false);\r\n this.onHide.emit(null);\r\n this.unbindDocumentClickListener();\r\n this.unbindScrollListener();\r\n this.target = null;\r\n\r\n // Optional: Remove from body immediately or let *ngIf handle it?\r\n // Since we moved the DOM node, *ngIf removing it from its original place in View might not remove it from Body.\r\n // We MUST remove it from body manually if we moved it.\r\n if (\r\n this.container &&\r\n this.container.nativeElement.parentNode === this.document.body\r\n ) {\r\n this.renderer.removeChild(\r\n this.document.body,\r\n this.container.nativeElement,\r\n );\r\n }\r\n }\r\n\r\n alignWithTarget() {\r\n if (!this.target || !this.container) return;\r\n\r\n const targetRect = this.target.getBoundingClientRect();\r\n const containerRect = this.container.nativeElement.getBoundingClientRect();\r\n const scrollY = window.scrollY || this.document.documentElement.scrollTop;\r\n const scrollX = window.scrollX || this.document.documentElement.scrollLeft;\r\n\r\n // Basic positioning: Bottom Left aligned\r\n let top = targetRect.bottom + scrollY + 5; // 5px gap\r\n let left = targetRect.left + scrollX;\r\n\r\n // Viewport check\r\n const viewportWidth = window.innerWidth;\r\n\r\n // If goes off screen right\r\n if (left + containerRect.width > viewportWidth) {\r\n left = targetRect.right + scrollX - containerRect.width;\r\n // If still off screen (element wider than target and aligned right), capped at viewport width\r\n if (left < 0) left = 10;\r\n }\r\n\r\n this.renderer.setStyle(this.container.nativeElement, 'top', `${top}px`);\r\n this.renderer.setStyle(this.container.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(\r\n this.container.nativeElement,\r\n 'position',\r\n 'absolute',\r\n );\r\n this.renderer.setStyle(this.container.nativeElement, 'display', 'block'); // Ensure it's not hidden\r\n }\r\n\r\n bindScrollListener() {\r\n if (!this.scrollListener) {\r\n // Use native addEventListener with capture: true to catch scroll of any parent container\r\n this.scrollListener = () => {\r\n if (this.visible()) {\r\n this.alignWithTarget();\r\n }\r\n };\r\n window.addEventListener('scroll', this.scrollListener, true);\r\n }\r\n }\r\n\r\n unbindScrollListener() {\r\n if (this.scrollListener) {\r\n window.removeEventListener('scroll', this.scrollListener, true);\r\n this.scrollListener = null;\r\n }\r\n }\r\n\r\n bindDocumentClickListener() {\r\n if (!this.dismissable()) return;\r\n\r\n // Unbind existing if any\r\n if (this.documentClickListener) {\r\n this.unbindDocumentClickListener();\r\n }\r\n\r\n // We use a timeout to avoid immediate close if the click that opened it bubbles up\r\n setTimeout(() => {\r\n if (!this.documentClickListener && this.visible()) {\r\n this.documentClickListener = this.renderer.listen(\r\n 'document',\r\n 'click',\r\n (event) => {\r\n if (!this.visible()) {\r\n return;\r\n }\r\n\r\n // Check if click is inside the panel or is the target button\r\n const isTarget =\r\n this.target &&\r\n (this.target === event.target ||\r\n this.target.contains(event.target));\r\n const isOutside =\r\n this.container &&\r\n !this.container.nativeElement.contains(event.target);\r\n\r\n if (isOutside && !isTarget) {\r\n this.hide();\r\n this.cd.markForCheck();\r\n }\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n unbindDocumentClickListener() {\r\n if (this.documentClickListener) {\r\n this.documentClickListener();\r\n this.documentClickListener = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unbindDocumentClickListener();\r\n this.unbindScrollListener();\r\n // Ensure removal from body\r\n if (\r\n this.container &&\r\n this.container.nativeElement.parentNode === this.document.body\r\n ) {\r\n this.renderer.removeChild(\r\n this.document.body,\r\n this.container.nativeElement,\r\n );\r\n }\r\n }\r\n}\r\n","@if (visible()) {\r\n <div\r\n #container\r\n class=\"magary-overlaypanel p-component\"\r\n [@animation]\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"magary-overlaypanel-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (showCloseIcon()) {\r\n <button\r\n class=\"magary-overlaypanel-close\"\r\n (click)=\"hide()\"\r\n aria-label=\"Close\"\r\n >\r\n <lucide-icon name=\"x\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface Confirmation {\r\n message?: string;\r\n key?: string;\r\n icon?: string;\r\n header?: string;\r\n accept?: Function;\r\n reject?: Function;\r\n acceptLabel?: string;\r\n rejectLabel?: string;\r\n acceptVisible?: boolean;\r\n rejectVisible?: boolean;\r\n acceptButtonStyleClass?: string;\r\n rejectButtonStyleClass?: string;\r\n style?: any;\r\n styleClass?: string;\r\n defaultFocus?: 'accept' | 'reject' | 'none';\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MagaryConfirmationService {\r\n private requireConfirmationSource = new Subject<Confirmation>();\r\n private acceptConfirmationSource = new Subject<Confirmation>();\r\n\r\n requireConfirmation$ = this.requireConfirmationSource.asObservable();\r\n acceptConfirmation$ = this.acceptConfirmationSource.asObservable();\r\n\r\n confirm(confirmation: Confirmation) {\r\n this.requireConfirmationSource.next(confirmation);\r\n return this;\r\n }\r\n\r\n close() {\r\n this.requireConfirmationSource.next(null as any);\r\n return this;\r\n }\r\n\r\n onAccept() {\r\n this.acceptConfirmationSource.next(null as any);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n signal,\r\n OnDestroy,\r\n inject,\r\n contentChild,\r\n TemplateRef,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MagaryDialog } from '../dialog/dialog';\r\nimport { MagaryButton } from '../../Button/button/button';\r\nimport {\r\n MagaryConfirmationService,\r\n Confirmation,\r\n} from './confirmation.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'magary-confirm-dialog',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule, MagaryDialog, MagaryButton],\r\n templateUrl: './confirm-dialog.html',\r\n styleUrl: './confirm-dialog.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryConfirmDialog implements OnDestroy {\r\n header = input<string>();\r\n icon = input<string>();\r\n message = input<string>();\r\n key = input<string>();\r\n\r\n acceptLabel = input<string>('Yes');\r\n rejectLabel = input<string>('No');\r\n\r\n acceptIcon = input<string>();\r\n rejectIcon = input<string>();\r\n\r\n acceptVisible = input<boolean>(true);\r\n rejectVisible = input<boolean>(true);\r\n\r\n dismissableMask = input<boolean>(false);\r\n closeOnEscape = input<boolean>(true);\r\n\r\n // State\r\n visible = signal<boolean>(false);\r\n confirmation = signal<Confirmation | null>(null);\r\n\r\n private subscription: Subscription;\r\n private confirmationService = inject(MagaryConfirmationService);\r\n\r\n constructor() {\r\n this.subscription = this.confirmationService.requireConfirmation$.subscribe(\r\n (confirmation) => {\r\n if (!confirmation) {\r\n this.hide();\r\n return;\r\n }\r\n\r\n if (confirmation.key === this.key()) {\r\n this.confirmation.set(confirmation);\r\n this.visible.set(true);\r\n }\r\n },\r\n );\r\n }\r\n\r\n accept() {\r\n if (this.confirmation()?.accept) {\r\n this.confirmation()!.accept!();\r\n }\r\n this.hide();\r\n }\r\n\r\n reject() {\r\n if (this.confirmation()?.reject) {\r\n this.confirmation()!.reject!();\r\n }\r\n this.hide();\r\n }\r\n\r\n hide() {\r\n this.visible.set(false);\r\n this.confirmation.set(null);\r\n }\r\n\r\n // Computed values merging Input defaults with Confirmation object overrides\r\n effectiveHeader = computed(\r\n () => this.confirmation()?.header || this.header(),\r\n );\r\n effectiveMessage = computed(\r\n () => this.confirmation()?.message || this.message(),\r\n );\r\n effectiveIcon = computed(() => this.confirmation()?.icon || this.icon());\r\n effectiveAcceptLabel = computed(\r\n () => this.confirmation()?.acceptLabel || this.acceptLabel(),\r\n );\r\n effectiveRejectLabel = computed(\r\n () => this.confirmation()?.rejectLabel || this.rejectLabel(),\r\n );\r\n effectiveAcceptVisible = computed(() =>\r\n this.confirmation()?.acceptVisible !== undefined\r\n ? this.confirmation()!.acceptVisible\r\n : this.acceptVisible(),\r\n );\r\n effectiveRejectVisible = computed(() =>\r\n this.confirmation()?.rejectVisible !== undefined\r\n ? this.confirmation()!.rejectVisible\r\n : this.rejectVisible(),\r\n );\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<magary-dialog\r\n [(visible)]=\"visible\"\r\n [header]=\"effectiveHeader()\"\r\n [modal]=\"true\"\r\n [dismissableMask]=\"dismissableMask()\"\r\n [closeOnEscape]=\"closeOnEscape()\"\r\n [width]=\"'450px'\"\r\n styleClass=\"magary-confirm-dialog\"\r\n>\r\n <!-- Content -->\r\n <div class=\"magary-confirm-content\">\r\n <lucide-icon\r\n *ngIf=\"effectiveIcon()\"\r\n [name]=\"effectiveIcon()!\"\r\n class=\"magary-confirm-icon\"\r\n [size]=\"32\"\r\n ></lucide-icon>\r\n <span class=\"magary-confirm-message\">{{ effectiveMessage() }}</span>\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"magary-confirm-footer\">\r\n <magary-button\r\n *ngIf=\"effectiveRejectVisible()\"\r\n [label]=\"effectiveRejectLabel()\"\r\n (buttonClick)=\"reject()\"\r\n [icon]=\"rejectIcon()\"\r\n variant=\"text\"\r\n severity=\"secondary\"\r\n class=\"magary-confirm-btn-reject\"\r\n ></magary-button>\r\n\r\n <magary-button\r\n *ngIf=\"effectiveAcceptVisible()\"\r\n [label]=\"effectiveAcceptLabel()\"\r\n (buttonClick)=\"accept()\"\r\n [icon]=\"acceptIcon()\"\r\n severity=\"primary\"\r\n class=\"magary-confirm-btn-accept\"\r\n [shadow]=\"2\"\r\n ></magary-button>\r\n </div>\r\n</magary-dialog>\r\n","import { NgModule } from '@angular/core';\r\nimport { MagaryConfirmDialog } from './confirm-dialog';\r\n\r\n@NgModule({\r\n imports: [MagaryConfirmDialog],\r\n exports: [MagaryConfirmDialog],\r\n})\r\nexport class MagaryConfirmDialogModule {}\r\n","import { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n input,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\ntype ImagePosition = 'left' | 'right' | 'top' | 'bottom';\r\ntype ShadowLevel = 0 | 1 | 2 | 3 | 4 | 5;\r\ntype CardVariant = 'elevated' | 'outlined' | 'filled';\r\n@Component({\r\n selector: 'magary-card',\r\n standalone: true,\r\n imports: [CommonModule, NgOptimizedImage],\r\n templateUrl: './card.html',\r\n styleUrl: './card.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[style.width]': 'width()',\r\n '[style.height]': 'height()',\r\n },\r\n})\r\nexport class MagaryCard {\r\n readonly img = input<string>();\r\n readonly positionImage = input<ImagePosition>('top');\r\n readonly shadow = input<ShadowLevel>(1);\r\n readonly width = input<string>('100%');\r\n readonly height = input<string>('auto');\r\n readonly padding = input<string>('1rem');\r\n readonly gap = input<string>('1rem');\r\n readonly borderRadius = input<string>('0.75rem');\r\n readonly imageSize = input<string>('200px'); // Default adjusted for better initial look\r\n readonly backgroundColor = input<string>();\r\n readonly responsive = input<boolean>(true);\r\n readonly altText = input<string>('Card image');\r\n readonly imageFit = input<\r\n 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\r\n >('cover');\r\n readonly clickable = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly variant = input<CardVariant>('elevated');\r\n readonly loadingText = input<string>('Cargando...');\r\n readonly hoverEffect = input<boolean>(true);\r\n\r\n // New Features\r\n readonly badge = input<string>();\r\n readonly badgeColor = input<string>('var(--primary-500, #0066cc)');\r\n readonly border = input<string>();\r\n\r\n readonly cardClasses = computed(() =>\r\n [\r\n 'card',\r\n `shadow-${this.shadow()}`,\r\n `layout-${this.positionImage()}`,\r\n `variant-${this.variant()}`,\r\n this.responsive() ? 'responsive' : '',\r\n this.clickable() ? 'clickable' : '',\r\n this.loading() ? 'loading' : '',\r\n this.disabled() ? 'disabled' : '',\r\n !this.hoverEffect() ? 'no-hover' : '',\r\n ].filter(Boolean),\r\n );\r\n\r\n readonly cardStyles = computed(() => {\r\n const userBg = this.backgroundColor();\r\n const defaultBg =\r\n this.variant() === 'filled'\r\n ? 'var(--surface-100, #f3f4f6)'\r\n : 'var(--surface-0, #fff)';\r\n\r\n return {\r\n width: this.width(),\r\n height: this.height(),\r\n '--card-bg': userBg ?? defaultBg,\r\n '--card-radius': this.borderRadius(),\r\n '--card-gap': this.gap(),\r\n '--card-padding': this.padding(),\r\n '--img-size': this.imageSize(),\r\n '--badge-color': this.badgeColor(),\r\n ...(this.border() ? { border: this.border() } : {}),\r\n cursor: this.clickable() && !this.disabled() ? 'pointer' : 'default',\r\n opacity: this.disabled() ? '0.6' : '1',\r\n 'pointer-events': this.disabled() ? 'none' : 'auto',\r\n };\r\n });\r\n\r\n readonly imageStyles = computed(() => ({\r\n 'object-fit': this.imageFit(),\r\n }));\r\n\r\n readonly hasImage = computed(() => Boolean(this.img()));\r\n\r\n readonly isHorizontalLayout = computed(\r\n () => this.positionImage() === 'left' || this.positionImage() === 'right',\r\n );\r\n\r\n readonly isInteractive = computed(\r\n () => this.clickable() && !this.disabled() && !this.loading(),\r\n );\r\n\r\n readonly showLoadingOverlay = computed(() => this.loading());\r\n\r\n onCardClick(event: Event) {\r\n if (this.isInteractive()) {\r\n const cardClickEvent = new CustomEvent('cardClick', {\r\n detail: { event },\r\n bubbles: true,\r\n });\r\n (event.target as HTMLElement).dispatchEvent(cardClickEvent);\r\n }\r\n }\r\n\r\n onCardKeydown(event: KeyboardEvent) {\r\n if (this.isInteractive() && (event.key === 'Enter' || event.key === ' ')) {\r\n event.preventDefault();\r\n this.onCardClick(event);\r\n }\r\n }\r\n}\r\n","<article\r\n [ngClass]=\"cardClasses()\"\r\n [ngStyle]=\"cardStyles()\"\r\n [attr.role]=\"clickable() ? 'button' : 'region'\"\r\n [attr.tabindex]=\"isInteractive() ? '0' : null\"\r\n [attr.aria-label]=\"\r\n 'Card with ' +\r\n (hasImage() ? 'image and ' : '') +\r\n 'content' +\r\n (clickable() ? '. Clickable' : '') +\r\n (loading() ? '. Loading' : '') +\r\n (disabled() ? '. Disabled' : '')\r\n \"\r\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\r\n [attr.aria-busy]=\"loading() ? 'true' : null\"\r\n (click)=\"onCardClick($event)\"\r\n (keydown)=\"onCardKeydown($event)\"\r\n>\r\n @if (hasImage()) {\r\n <div class=\"card-image-container\">\r\n <img\r\n class=\"card-img\"\r\n [ngSrc]=\"img() || ''\"\r\n [ngStyle]=\"imageStyles()\"\r\n [alt]=\"altText()\"\r\n fill\r\n />\r\n </div>\r\n }\r\n @if (badge()) {\r\n <span class=\"card-badge\" [style.background-color]=\"badgeColor()\">\r\n {{ badge() }}\r\n </span>\r\n }\r\n <div class=\"card-content\" [attr.aria-label]=\"'Card content'\">\r\n <div class=\"card-body\">\r\n @if (true) {\r\n <header class=\"card-header\" role=\"banner\">\r\n <ng-content select=\"[slot='header']\"></ng-content>\r\n </header>\r\n }\r\n <main class=\"card-main\" role=\"main\">\r\n <ng-content></ng-content>\r\n </main>\r\n @if (true) {\r\n <footer class=\"card-footer\" role=\"contentinfo\">\r\n <ng-content select=\"[slot='footer']\"></ng-content>\r\n </footer>\r\n }\r\n </div>\r\n </div>\r\n @if (showLoadingOverlay()) {\r\n <div\r\n class=\"card-loading-overlay\"\r\n role=\"status\"\r\n [attr.aria-label]=\"loadingText()\"\r\n >\r\n <div class=\"loading-spinner\" aria-hidden=\"true\"></div>\r\n <span class=\"loading-text\">{{ loadingText() }}</span>\r\n </div>\r\n }\r\n</article>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n output,\r\n inject,\r\n signal,\r\n ViewEncapsulation,\r\n ElementRef,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n state,\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'magary-fieldset',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './fieldset.html',\r\n styleUrl: './fieldset.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('fieldsetContent', [\r\n state(\r\n 'hidden',\r\n style({\r\n height: '0',\r\n opacity: 0,\r\n overflow: 'hidden',\r\n }),\r\n ),\r\n state(\r\n 'visible',\r\n style({\r\n height: '*',\r\n opacity: 1,\r\n }),\r\n ),\r\n transition('visible <=> hidden', [\r\n animate('250ms cubic-bezier(0.4, 0.0, 0.2, 1)'),\r\n ]),\r\n transition('void => visible', [\r\n style({ height: '0', opacity: 0 }),\r\n animate('250ms cubic-bezier(0.4, 0.0, 0.2, 1)'),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryFieldset {\r\n legend = input<string>('');\r\n toggleable = input<boolean>(false);\r\n\r\n collapsed = model(false);\r\n\r\n onBeforeToggle = output<any>();\r\n onAfterToggle = output<any>();\r\n\r\n toggle(event: Event) {\r\n if (this.toggleable()) {\r\n event.preventDefault();\r\n\r\n const collapsed = this.collapsed();\r\n this.onBeforeToggle.emit({ originalEvent: event, collapsed: !collapsed });\r\n\r\n this.collapsed.set(!collapsed);\r\n\r\n this.onAfterToggle.emit({ originalEvent: event, collapsed: !collapsed });\r\n }\r\n }\r\n\r\n expand(event: Event) {\r\n if (this.toggleable() && this.collapsed()) {\r\n this.toggle(event);\r\n }\r\n }\r\n\r\n collapse(event: Event) {\r\n if (this.toggleable() && !this.collapsed()) {\r\n this.toggle(event);\r\n }\r\n }\r\n}\r\n","<fieldset\r\n class=\"magary-fieldset\"\r\n [ngClass]=\"{\r\n 'magary-fieldset-toggleable': toggleable(),\r\n 'magary-fieldset-collapsed': collapsed(),\r\n }\"\r\n>\r\n @if (legend()) {\r\n <legend class=\"magary-fieldset-legend\">\r\n @if (toggleable()) {\r\n <a\r\n href=\"#\"\r\n (click)=\"toggle($event)\"\r\n class=\"magary-fieldset-toggler\"\r\n [attr.aria-expanded]=\"!collapsed()\"\r\n [attr.aria-label]=\"legend()\"\r\n tabindex=\"0\"\r\n >\r\n <lucide-icon\r\n [name]=\"collapsed() ? 'plus' : 'minus'\"\r\n class=\"magary-fieldset-toggler-icon\"\r\n [size]=\"16\"\r\n ></lucide-icon>\r\n <span class=\"magary-fieldset-legend-text\">{{ legend() }}</span>\r\n </a>\r\n } @else {\r\n <span class=\"magary-fieldset-legend-text\">{{ legend() }}</span>\r\n }\r\n </legend>\r\n }\r\n <div\r\n class=\"magary-fieldset-content-wrapper\"\r\n [@fieldsetContent]=\"collapsed() ? 'hidden' : 'visible'\"\r\n role=\"region\"\r\n [attr.aria-labelledby]=\"legend()\"\r\n >\r\n <div class=\"magary-fieldset-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</fieldset>\r\n","import {\r\n Component,\r\n input,\r\n signal,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n@Component({\r\n selector: 'magary-tab',\r\n standalone: true,\r\n template: `@if (active()) {\r\n <ng-content style=\"width: 100%;\" />\r\n }`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryTab {\r\n public label = input<string>('');\r\n public active = signal(false);\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n input,\r\n OnInit,\r\n signal,\r\n contentChildren,\r\n viewChild,\r\n viewChildren,\r\n inject,\r\n effect,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MagaryTab } from './tab/tab';\r\n@Component({\r\n selector: 'magary-tabs',\r\n imports: [],\r\n templateUrl: './tabs.html',\r\n styleUrl: './tabs.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryTabs implements OnInit {\r\n tabs = contentChildren(MagaryTab);\r\n headersRef = viewChild<ElementRef<HTMLElement>>('tabHeaders');\r\n buttonsRef = viewChildren<ElementRef<HTMLElement>>('tabButton');\r\n\r\n public activeIndex = signal(0);\r\n public backgroundLine = input<string>('#000');\r\n public positionContent = input<string>('center');\r\n public background = input<string>('var(--surface-0)');\r\n public padding = input<string>('0');\r\n public heightLine = input<string>('5px');\r\n private resizeObserver: ResizeObserver | null = null;\r\n private el = inject(ElementRef);\r\n\r\n constructor() {\r\n effect(() => {\r\n // Auto-select first tab if activeIndex is 0 and tabs change\r\n const tabs = this.tabs();\r\n if (tabs.length > 0) {\r\n tabs.forEach((tab, index) => {\r\n tab.active.set(index === this.activeIndex());\r\n });\r\n }\r\n });\r\n\r\n // Effect to update underline\r\n effect(() => {\r\n this.updateUnderlinePosition(this.activeIndex());\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // Initialize ResizeObserver\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateUnderlinePosition(this.activeIndex());\r\n });\r\n this.resizeObserver.observe(this.el.nativeElement);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n public selectTab(index: number) {\r\n this.activeIndex.set(index);\r\n // Effect will handle the rest (setting active tab and underline)\r\n }\r\n\r\n private updateUnderlinePosition(index: number) {\r\n // Use requestAnimationFrame for smoother updates\r\n requestAnimationFrame(() => {\r\n const buttons = this.buttonsRef();\r\n const activeBtn = buttons[index]?.nativeElement;\r\n const headersEl = this.headersRef()?.nativeElement;\r\n\r\n if (activeBtn && headersEl) {\r\n const left = activeBtn.offsetLeft;\r\n const width = activeBtn.offsetWidth;\r\n headersEl.style.setProperty('--underline-left', `${left}px`);\r\n headersEl.style.setProperty('--underline-width', `${width}px`);\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"tabs\">\r\n <div\r\n class=\"tab-headers\"\r\n #tabHeaders\r\n [style.--background-color-line]=\"backgroundLine()\"\r\n [style.--height-line]=\"heightLine()\"\r\n >\r\n @for (tab of tabs(); track $index) {\r\n <button\r\n #tabButton\r\n (click)=\"selectTab($index)\"\r\n [class.active]=\"activeIndex() === $index\"\r\n >\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n class=\"tab-content\"\r\n [style.--position-content]=\"positionContent()\"\r\n [style.--background]=\"background()\"\r\n [style.--padding]=\"padding()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n input,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'magary-toolbar',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './toolbar.html',\r\n styleUrl: './toolbar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryToolbar {\r\n style = input<any>();\r\n styleClass = input<string>('');\r\n}\r\n","<div\r\n class=\"magary-toolbar\"\r\n [ngClass]=\"styleClass\"\r\n [ngStyle]=\"style\"\r\n role=\"toolbar\"\r\n>\r\n <div class=\"magary-toolbar-group-start\">\r\n <ng-content select=\"[start]\"></ng-content>\r\n </div>\r\n <div class=\"magary-toolbar-group-center\">\r\n <ng-content select=\"[center]\"></ng-content>\r\n </div>\r\n <div class=\"magary-toolbar-group-end\">\r\n <ng-content select=\"[end]\"></ng-content>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n signal,\r\n computed,\r\n booleanAttribute,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { MagaryAccordion } from './accordion';\r\n\r\n@Component({\r\n selector: 'magary-accordion-tab',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n templateUrl: './accordion-tab.html',\r\n styleUrls: ['./accordion.scss'], // Shared styles\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n animations: [\r\n trigger('tabContent', [\r\n state(\r\n 'hidden',\r\n style({\r\n height: '0',\r\n overflow: 'hidden',\r\n paddingTop: '0',\r\n paddingBottom: '0',\r\n opacity: '0',\r\n }),\r\n ),\r\n state(\r\n 'visible',\r\n style({\r\n height: '*',\r\n overflow: 'hidden',\r\n paddingTop: '*',\r\n paddingBottom: '*',\r\n opacity: '1',\r\n }),\r\n ),\r\n transition('hidden <=> visible', [\r\n animate('0.3s cubic-bezier(0.87, 0, 0.13, 1)'),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class MagaryAccordionTab {\r\n header = input<string>();\r\n disabled = input(false, { transform: booleanAttribute });\r\n selected = model(false);\r\n\r\n accordion: MagaryAccordion | undefined;\r\n\r\n toggle(event: Event) {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const newState = !this.selected();\r\n this.selected.set(newState);\r\n\r\n // Notify parent\r\n if (this.accordion) {\r\n this.accordion.handleTabChange(this, newState);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n\r\n close() {\r\n this.selected.set(false);\r\n }\r\n}\r\n","<div\r\n class=\"magary-accordion-item\"\r\n [ngClass]=\"{\r\n 'magary-accordion-item-active': selected(),\r\n 'magary-accordion-item-disabled': disabled(),\r\n }\"\r\n>\r\n <div class=\"magary-accordion-header\">\r\n <button\r\n type=\"button\"\r\n class=\"magary-accordion-header-link\"\r\n (click)=\"toggle($event)\"\r\n [attr.aria-expanded]=\"selected()\"\r\n [attr.tabindex]=\"disabled() ? -1 : 0\"\r\n >\r\n <span class=\"magary-accordion-toggle-icon\">\r\n <!-- Using Lucide icon for chevron -->\r\n <lucide-icon\r\n [name]=\"'chevron-right'\"\r\n [size]=\"16\"\r\n [class.rotate-90]=\"selected()\"\r\n style=\"transition: transform 0.3s\"\r\n >\r\n </lucide-icon>\r\n </span>\r\n\r\n @if (header()) {\r\n <span class=\"magary-accordion-header-text\">{{ header() }}</span>\r\n }\r\n <ng-content select=\"[header]\"></ng-content>\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"magary-accordion-content-wrapper\"\r\n [@tabContent]=\"selected() ? 'visible' : 'hidden'\"\r\n >\r\n <div class=\"magary-accordion-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n input,\r\n output,\r\n contentChildren,\r\n effect,\r\n inject,\r\n Injector,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryAccordionTab } from './accordion-tab';\r\n\r\n@Component({\r\n selector: 'magary-accordion',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './accordion.html',\r\n styleUrls: ['./accordion.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n host: {\r\n class: 'magary-accordion',\r\n },\r\n})\r\nexport class MagaryAccordion {\r\n multiple = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n tabs = contentChildren(MagaryAccordionTab);\r\n\r\n onClose = output<any>();\r\n onOpen = output<any>();\r\n\r\n constructor() {\r\n effect(() => {\r\n // Logic to handle tab state changes if needed.\r\n // However, managing state from parent to children via signals is different.\r\n // Ideally, tabs should drive their own state or use a service/model.\r\n // But keeping existing logic:\r\n const tabs = this.tabs();\r\n tabs.forEach((tab) => {\r\n // We can't subscribe to signals like observables easily here without effects.\r\n // But if AccordionTab uses output() for selection change, we can't easily listen to it via contentChildren.\r\n // The pattern of \"Parent listens to ContentChildren outputs\" is hard with Signals directly.\r\n // Alternative: Pass this Accordion instance to Tabs via Dependency Injection.\r\n tab.accordion = this;\r\n });\r\n });\r\n }\r\n\r\n handleTabChange(changedTab: MagaryAccordionTab, isSelected: boolean) {\r\n if (isSelected) {\r\n this.onOpen.emit({\r\n originalEvent: null,\r\n index: this.findTabIndex(changedTab),\r\n });\r\n\r\n if (!this.multiple()) {\r\n this.tabs().forEach((tab) => {\r\n if (tab !== changedTab && tab.selected()) {\r\n tab.close();\r\n }\r\n });\r\n }\r\n } else {\r\n this.onClose.emit({\r\n originalEvent: null,\r\n index: this.findTabIndex(changedTab),\r\n });\r\n }\r\n }\r\n\r\n findTabIndex(tab: MagaryAccordionTab): number {\r\n return this.tabs().indexOf(tab);\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { Injectable, signal, effect, inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport type Theme = 'light' | 'dark' | 'purple' | 'green';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MagaryThemeService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n // Signal to track current theme\r\n readonly currentTheme = signal<Theme>('light');\r\n\r\n constructor() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.initializeTheme();\r\n }\r\n\r\n // Effect to apply theme whenever signal changes\r\n effect(() => {\r\n const theme = this.currentTheme();\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.applyTheme(theme);\r\n localStorage.setItem('magary-theme', theme);\r\n }\r\n });\r\n }\r\n\r\n private initializeTheme() {\r\n // 1. Check local storage\r\n const savedTheme = localStorage.getItem('magary-theme') as Theme;\r\n if (savedTheme) {\r\n this.currentTheme.set(savedTheme);\r\n return;\r\n }\r\n\r\n // 2. Check system preference\r\n const prefersDark = window.matchMedia(\r\n '(prefers-color-scheme: dark)',\r\n ).matches;\r\n this.currentTheme.set(prefersDark ? 'dark' : 'light');\r\n }\r\n\r\n private applyTheme(theme: Theme) {\r\n const body = document.body;\r\n body.setAttribute('data-theme', theme);\r\n }\r\n\r\n toggleTheme() {\r\n const themes: Theme[] = ['light', 'dark', 'purple', 'green'];\r\n const currentIndex = themes.indexOf(this.currentTheme());\r\n const nextTheme = themes[(currentIndex + 1) % themes.length];\r\n this.setTheme(nextTheme);\r\n }\r\n\r\n setTheme(theme: Theme) {\r\n this.currentTheme.set(theme);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n input,\r\n output,\r\n model,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GridStack, GridStackOptions } from 'gridstack';\r\n\r\n@Component({\r\n selector: 'magary-grid',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './grid.html',\r\n styleUrl: './grid.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MagaryGrid implements AfterViewInit, OnDestroy {\r\n @ViewChild('gridStackContainer') gridStackContainer!: ElementRef;\r\n\r\n options = input<GridStackOptions>({});\r\n\r\n // Event outputs\r\n change = output<any>();\r\n added = output<any>();\r\n removed = output<any>();\r\n\r\n private grid?: GridStack;\r\n\r\n ngAfterViewInit(): void {\r\n // Initialize GridStack with a slight delay to ensure DOM is ready and children are rendered\r\n setTimeout(() => {\r\n this.grid = GridStack.init(\r\n this.options(),\r\n this.gridStackContainer.nativeElement,\r\n );\r\n\r\n // Bind events after initialization\r\n this.bindEvents();\r\n });\r\n }\r\n\r\n private bindEvents(): void {\r\n if (!this.grid) return;\r\n\r\n this.grid.on('change', (event: any, items: any) =>\r\n this.change.emit({ event, items }),\r\n );\r\n this.grid.on('added', (event: any, items: any) =>\r\n this.added.emit({ event, items }),\r\n );\r\n this.grid.on('removed', (event: any, items: any) =>\r\n this.removed.emit({ event, items }),\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.grid) {\r\n this.grid.destroy();\r\n }\r\n }\r\n\r\n getGridInstance(): GridStack | undefined {\r\n return this.grid;\r\n }\r\n\r\n registerWidget(element: HTMLElement) {\r\n if (this.grid) {\r\n // If grid is already initialized, manually register the new widget\r\n // Verify it's not already a widget to avoid double init issues (though makeWidget is usually safe)\r\n if (!element.classList.contains('grid-stack-item-content')) {\r\n // Gridstack requires the element to be the wrapper\r\n this.grid.makeWidget(element);\r\n }\r\n }\r\n // If grid NOT initialized, do nothing. GridStack.init() will pick it up.\r\n }\r\n}\r\n","<div class=\"grid-stack\" #gridStackContainer>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n input,\r\n OnInit,\r\n effect,\r\n ChangeDetectionStrategy,\r\n inject,\r\n forwardRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MagaryGrid } from '../grid/grid';\r\n\r\n@Component({\r\n selector: 'magary-grid-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './grid-item.html',\r\n styleUrl: './grid-item.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MagaryGridItem implements OnInit {\r\n // Gridstack widget properties as Signal Inputs\r\n x = input<number | undefined>(undefined);\r\n y = input<number | undefined>(undefined);\r\n w = input<number | undefined>(undefined);\r\n h = input<number | undefined>(undefined);\r\n\r\n // Custom identifier\r\n id = input<string | undefined>(undefined);\r\n\r\n // Lock properties\r\n noResize = input<boolean>(false);\r\n noMove = input<boolean>(false);\r\n locked = input<boolean>(false);\r\n\r\n // Inject parent grid\r\n private parentGrid = inject(forwardRef(() => MagaryGrid));\r\n\r\n constructor(private el: ElementRef) {\r\n // Reactively update attributes when signals change\r\n effect(() => {\r\n const val = this.x();\r\n if (val !== undefined) this.updateAttribute('gs-x', val);\r\n });\r\n effect(() => {\r\n const val = this.y();\r\n if (val !== undefined) this.updateAttribute('gs-y', val);\r\n });\r\n effect(() => {\r\n const val = this.w();\r\n if (val !== undefined) this.updateAttribute('gs-w', val);\r\n });\r\n effect(() => {\r\n const val = this.h();\r\n if (val !== undefined) this.updateAttribute('gs-h', val);\r\n });\r\n\r\n // Lock/Constraint effects\r\n effect(() => {\r\n if (this.noResize()) this.updateAttribute('gs-no-resize', 'true');\r\n else this.el.nativeElement.removeAttribute('gs-no-resize');\r\n });\r\n effect(() => {\r\n if (this.noMove()) this.updateAttribute('gs-no-move', 'true');\r\n else this.el.nativeElement.removeAttribute('gs-no-move');\r\n });\r\n effect(() => {\r\n if (this.locked()) this.updateAttribute('gs-locked', 'true');\r\n else this.el.nativeElement.removeAttribute('gs-locked');\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n // Add required class for Gridstack item\r\n this.el.nativeElement.classList.add('grid-stack-item');\r\n\r\n if (this.id()) {\r\n this.updateAttribute('gs-id', this.id()!);\r\n }\r\n\r\n // Register self with parent grid (important for dynamic additions)\r\n // We use a small timeout or wait for next tick to ensure we are in DOM\r\n setTimeout(() => {\r\n this.parentGrid.registerWidget(this.el.nativeElement);\r\n });\r\n }\r\n\r\n private updateAttribute(attr: string, value: string | number) {\r\n this.el.nativeElement.setAttribute(attr, String(value));\r\n }\r\n}\r\n","<div class=\"grid-stack-item-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n","// 🔘 Button //\r\nexport * from './Button/button/button';\r\nexport * from './Button/button/button.module';\r\nexport * from './Button/speed-dial/speed-dial';\r\nexport * from './Button/speed-dial/speed-dial.module';\r\nexport * from './Button/speed-dial/speed-dial-item.interface';\r\nexport * from './Button/split-button/split-button';\r\n\r\n// 🗄️ Data //\r\nexport * from './Data/table/table';\r\nexport * from './Data/table/table.module';\r\nexport * from './Data/paginator/paginator';\r\nexport * from './Data/tree/tree';\r\nexport * from './Data/tree/tree-node.interface';\r\nexport * from './Data/tree/uitree-node';\r\nexport * from './Data/timeline/timeline';\r\nexport * from './Data/organizationchart/organizationchart';\r\nexport * from './Data/organizationchart/organizationchart-node';\r\nexport * from './Data/picklist/picklist';\r\nexport * from './Data/orderlist/orderlist';\r\nexport * from './Data/dataview/dataview';\r\n\r\n// 📂 File //\r\nexport * from './File/upload/upload';\r\nexport * from './File/upload/upload.module';\r\n\r\n// 📝 Form //\r\nexport * from './Form/cascade-select/cascade-select';\r\nexport * from './Form/cascade-select/cascade-select.module';\r\nexport * from './Form/input/input';\r\nexport * from './Form/input/input.module';\r\nexport * from './Form/checkbox/checkbox';\r\nexport * from './Form/checkbox/checkbox.module';\r\nexport * from './Form/switch/switch';\r\nexport * from './Form/switch/switch.module';\r\nexport * from './Form/select/select';\r\nexport * from './Form/select/select.module';\r\nexport * from './Form/radio/radio';\r\nexport * from './Form/radio/radio-group';\r\nexport * from './Form/radio/radio.module';\r\nexport * from './Form/textarea/textarea';\r\nexport * from './Form/textarea/textarea.module';\r\nexport * from './Form/datepicker/datepicker';\r\nexport * from './Form/datepicker/datepicker.module';\r\nexport * from './Form/inputnumber/input-number';\r\nexport * from './Form/slider/slider';\r\nexport * from './Form/rating/rating';\r\n\r\n// 🖼️ Media //\r\n// 🖼️ Media //\r\nexport * from './Media/image/image';\r\nexport * from './Media/image/image.module';\r\nexport * from './Media/galleria/galleria';\r\nexport * from './Media/carousel/carousel';\r\nexport { MagaryCarouselComponent as MagaryCarousel } from './Media/carousel/carousel';\r\n\r\n// 📋 Menu //\r\nexport * from './Menu/panelmenu/panelmenu';\r\nexport * from './Menu/panelmenu/panelmenu.module';\r\nexport * from './Menu/sidebar/sidebar';\r\nexport * from './Menu/sidebar/sidebar.module';\r\nexport * from './Menu/breadcrumb/breadcrumb';\r\nexport * from './Menu/steps/steps';\r\nexport * from './Menu/tieredmenu/tiered-menu';\r\nexport * from './Menu/tieredmenu/tiered-menu';\r\nexport * from './Menu/contextmenu/context-menu';\r\nexport * from './Menu/menubar/menubar';\r\nexport * from './Menu/megamenu/megamenu';\r\nexport * from './Menu/slidemenu/slidemenu';\r\nexport * from './Menu/api/menu.interface';\r\n\r\n// 💬 Messages //\r\nexport * from './Misc/toast/toast';\r\nexport * from './Misc/toast/toast.module';\r\nexport * from './Misc/toast/toast-item';\r\nexport * from './Misc/toast/toast.service';\r\nexport * from './Messages/message/message';\r\nexport * from './Messages/message/message.module';\r\n\r\n// 👤 Misc //\r\nexport * from './Misc/avatar/avatar';\r\nexport * from './Misc/avatar/avatar.module';\r\nexport * from './Misc/skeleton/skeleton';\r\nexport * from './Misc/skeleton/skeleton.module';\r\nexport * from './Misc/divider/divider';\r\nexport * from './Misc/tag/tag';\r\n\r\n// 🗂️ Overlay //\r\nexport * from './Overlay/tooltip/tooltip';\r\nexport * from './Overlay/tooltip/tooltip.module';\r\nexport * from './Overlay/dialog/dialog';\r\nexport * from './Overlay/dialog/dialog.module';\r\nexport * from './Overlay/overlaypanel/overlaypanel';\r\n\r\n// ConfirmDialog\r\nexport * from './Overlay/confirm-dialog/confirm-dialog';\r\nexport * from './Overlay/confirm-dialog/confirm-dialog.module';\r\nexport * from './Overlay/confirm-dialog/confirmation.service';\r\n\r\n// 📦 Panel //\r\nexport * from './Panel/card/card';\r\nexport * from './Panel/fieldset/fieldset';\r\nexport * from './Panel/tabs/tabs';\r\nexport * from './Panel/tabs/tab/tab';\r\nexport * from './Panel/toolbar/toolbar';\r\nexport * from './Panel/accordion/accordion';\r\nexport * from './Panel/accordion/accordion-tab';\r\n\r\n// 🛠️ Services //\r\nexport * from './Services/theme.service';\r\n\r\n// 📐 Grid //\r\nexport * from './Grid/grid/grid';\r\nexport * from './Grid/grid-item/grid-item';\r\n","export const MAGARY_VERSION = '0.0.8';\r\n","/*\r\n * Public API Surface of ng-magary\r\n */\r\n\r\nexport * from './lib/ng-magary';\r\nexport * from './lib/version';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}