@shival99/z-ui 2.4.2 → 2.4.4

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 (132) hide show
  1. package/assets/css/base.css +2 -1
  2. package/assets/css/global.css +23 -2
  3. package/assets/css/tailwind.css +7 -4
  4. package/fesm2022/shival99-z-ui-components-z-accordion.mjs +6 -6
  5. package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-audio-player.mjs +3 -3
  7. package/fesm2022/shival99-z-ui-components-z-audio-player.mjs.map +1 -1
  8. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +27 -12
  9. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-avatar.mjs +6 -6
  11. package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +3 -3
  13. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
  14. package/fesm2022/shival99-z-ui-components-z-button-group.mjs +11 -11
  15. package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
  16. package/fesm2022/shival99-z-ui-components-z-button.mjs +3 -3
  17. package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
  18. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +40 -40
  19. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  20. package/fesm2022/shival99-z-ui-components-z-card.mjs +7 -7
  21. package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
  22. package/fesm2022/shival99-z-ui-components-z-chat.mjs +4 -4
  23. package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
  24. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +3 -3
  25. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
  26. package/fesm2022/shival99-z-ui-components-z-code.mjs +58 -19
  27. package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
  28. package/fesm2022/shival99-z-ui-components-z-command.mjs +6 -5
  29. package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
  30. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +17 -17
  31. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
  32. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +12 -4
  33. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  34. package/fesm2022/shival99-z-ui-components-z-editor.mjs +6 -6
  35. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  36. package/fesm2022/shival99-z-ui-components-z-empty.mjs +3 -3
  37. package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
  38. package/fesm2022/shival99-z-ui-components-z-filter.mjs +27 -27
  39. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  40. package/fesm2022/shival99-z-ui-components-z-gallery.mjs +42 -34
  41. package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
  42. package/fesm2022/shival99-z-ui-components-z-hover-glide.mjs +221 -0
  43. package/fesm2022/shival99-z-ui-components-z-hover-glide.mjs.map +1 -0
  44. package/fesm2022/shival99-z-ui-components-z-icon.mjs +3 -3
  45. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
  46. package/fesm2022/shival99-z-ui-components-z-input.mjs +5 -5
  47. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  48. package/fesm2022/shival99-z-ui-components-z-kanban.mjs +4 -4
  49. package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
  50. package/fesm2022/shival99-z-ui-components-z-loading.mjs +18 -4
  51. package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
  52. package/fesm2022/shival99-z-ui-components-z-marquee.mjs +3 -3
  53. package/fesm2022/shival99-z-ui-components-z-marquee.mjs.map +1 -1
  54. package/fesm2022/shival99-z-ui-components-z-media-player.mjs +346 -956
  55. package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
  56. package/fesm2022/shival99-z-ui-components-z-menu.mjs +8 -8
  57. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  58. package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +5 -5
  59. package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
  60. package/fesm2022/shival99-z-ui-components-z-modal.mjs +17 -17
  61. package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
  62. package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs +352 -0
  63. package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs.map +1 -0
  64. package/fesm2022/shival99-z-ui-components-z-overlay.mjs +9 -9
  65. package/fesm2022/shival99-z-ui-components-z-overlay.mjs.map +1 -1
  66. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +4 -4
  67. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
  68. package/fesm2022/shival99-z-ui-components-z-popover.mjs +14 -14
  69. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  70. package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +32 -8
  71. package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +1 -1
  72. package/fesm2022/shival99-z-ui-components-z-radio.mjs +3 -3
  73. package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
  74. package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +3 -3
  75. package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +1 -1
  76. package/fesm2022/shival99-z-ui-components-z-select.mjs +181 -26
  77. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  78. package/fesm2022/shival99-z-ui-components-z-show-more.mjs +3 -3
  79. package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +1 -1
  80. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +4 -4
  81. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -1
  82. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +5 -5
  83. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
  84. package/fesm2022/shival99-z-ui-components-z-steps.mjs +4 -4
  85. package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
  86. package/fesm2022/shival99-z-ui-components-z-switch.mjs +5 -5
  87. package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
  88. package/fesm2022/shival99-z-ui-components-z-table.mjs +107 -105
  89. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  90. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +327 -31
  91. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  92. package/fesm2022/shival99-z-ui-components-z-tags.mjs +15 -15
  93. package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
  94. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +4 -4
  95. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
  96. package/fesm2022/shival99-z-ui-components-z-toast.mjs +10 -9
  97. package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
  98. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +11 -11
  99. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
  100. package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -3
  101. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  102. package/fesm2022/shival99-z-ui-i18n.mjs +6 -26
  103. package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
  104. package/fesm2022/shival99-z-ui-pipes.mjs +18 -18
  105. package/fesm2022/shival99-z-ui-pipes.mjs.map +1 -1
  106. package/fesm2022/shival99-z-ui-services.mjs +31 -31
  107. package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
  108. package/package.json +21 -1
  109. package/types/shival99-z-ui-components-z-autocomplete.d.ts +6 -2
  110. package/types/shival99-z-ui-components-z-calendar.d.ts +4 -4
  111. package/types/shival99-z-ui-components-z-card.d.ts +21 -21
  112. package/types/shival99-z-ui-components-z-code.d.ts +16 -3
  113. package/types/shival99-z-ui-components-z-drawer.d.ts +1 -1
  114. package/types/shival99-z-ui-components-z-editor.d.ts +8 -8
  115. package/types/shival99-z-ui-components-z-gallery.d.ts +8 -5
  116. package/types/shival99-z-ui-components-z-hover-glide.d.ts +48 -0
  117. package/types/shival99-z-ui-components-z-loading.d.ts +9 -2
  118. package/types/shival99-z-ui-components-z-media-player.d.ts +102 -172
  119. package/types/shival99-z-ui-components-z-metric-card.d.ts +19 -19
  120. package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
  121. package/types/shival99-z-ui-components-z-number-ticker.d.ts +110 -0
  122. package/types/shival99-z-ui-components-z-overlay.d.ts +3 -3
  123. package/types/shival99-z-ui-components-z-popover.d.ts +11 -8
  124. package/types/shival99-z-ui-components-z-qrcode.d.ts +4 -1
  125. package/types/shival99-z-ui-components-z-select.d.ts +45 -7
  126. package/types/shival99-z-ui-components-z-switch.d.ts +22 -21
  127. package/types/shival99-z-ui-components-z-table.d.ts +1 -1
  128. package/types/shival99-z-ui-components-z-tabs.d.ts +59 -7
  129. package/types/shival99-z-ui-components-z-toast.d.ts +1 -1
  130. package/types/shival99-z-ui-components-z-tooltip.d.ts +2 -2
  131. package/types/shival99-z-ui-components-z-upload.d.ts +3 -3
  132. package/types/shival99-z-ui-services.d.ts +10 -10
@@ -1,7 +1,8 @@
1
1
  @import './global.css';
2
2
 
3
3
  :root {
4
- --font-sans: 'Be Vietnam Pro', system-ui, -apple-system, sans-serif;
4
+ --radius: 0.625rem;
5
+ --font-sans: 'Outfit', system-ui, -apple-system, sans-serif;
5
6
  --shadow-0: 0px 4px 8px 0px #02020312;
6
7
  --shadow-1: 0px 4px 8px 0px #02020329;
7
8
  --shadow-2: 0px 8px 16px 0px #02020352;
@@ -1,7 +1,28 @@
1
+ /* Univer sheet renders its DOM outside Angular's template compiler (z-gallery excel preview),
2
+ so its CSS must stay global — Angular's emulated view encapsulation would otherwise scope
3
+ these selectors with an attribute that never lands on Univer's own elements. */
4
+ @import '@univerjs/presets/lib/styles/preset-sheets-core.css';
5
+ @import 'vidstack/player/styles/base.css';
6
+ @import 'vidstack/player/styles/default/theme.css';
7
+ @import 'vidstack/player/styles/default/layouts/video.css';
8
+ @import 'vidstack/player/styles/default/layouts/audio.css';
9
+ @import 'vidstack/player/styles/plyr/theme.css';
10
+
11
+ /* Hover-glide items (see components/z-hover-glide): pin each item to its own stable GPU layer so
12
+ the sliding highlight beneath/behind it — which does animate `transform` — never forces Chromium
13
+ to squash the item's text into that same compositing layer for the duration of the glide. Without
14
+ this, the text visibly flashes blurry (GPU-rasterized) then sharp (reverted to native text
15
+ rendering) each time the highlight passes under it, even though the text itself never moves. */
16
+ [data-glide-item] {
17
+ transform: translateZ(0);
18
+ -webkit-font-smoothing: antialiased;
19
+ -moz-osx-font-smoothing: grayscale;
20
+ }
21
+
1
22
  /* CDK drag-drop */
2
23
  .cdk-drag-preview {
3
24
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.15);
4
- border-radius: 6px;
25
+ border-radius: var(--radius-md);
5
26
  background-color: var(--card);
6
27
  z-index: 10000 !important;
7
28
  pointer-events: none;
@@ -17,7 +38,7 @@
17
38
  .cdk-drag-placeholder {
18
39
  background-color: color-mix(in srgb, var(--primary) 12%, transparent);
19
40
  border: 2px dashed var(--primary);
20
- border-radius: 6px;
41
+ border-radius: var(--radius-md);
21
42
  opacity: 0.8;
22
43
  visibility: visible;
23
44
  }
@@ -46,8 +46,11 @@
46
46
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
47
47
  --color-sidebar-border: var(--sidebar-border);
48
48
  --color-sidebar-ring: var(--sidebar-ring);
49
- --radius-sm: 0.3125rem;
50
- --radius-md: 0.375rem;
51
- --radius-lg: 0.5rem;
52
- --radius-xl: 0.625rem;
49
+ --radius-xs: max(0px, calc(var(--radius) - 6px));
50
+ --radius-sm: max(0px, calc(var(--radius) - 4px));
51
+ --radius-md: max(0px, calc(var(--radius) - 2px));
52
+ --radius-lg: var(--radius);
53
+ --radius-xl: calc(var(--radius) * 1.2);
54
+ --radius-2xl: calc(var(--radius) * 1.4);
55
+ --radius-pill: calc(infinity * 1px);
53
56
  }
@@ -198,10 +198,10 @@ class ZAccordionItemComponent {
198
198
  }
199
199
  this._accordion.toggleItem(this.zId());
200
200
  }
201
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
202
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: ZAccordionItemComponent, isStandalone: true, selector: "z-accordion-item", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zId: { classPropertyName: "zId", publicName: "zId", isSignal: true, isRequired: true, transformFunction: null }, zTitle: { classPropertyName: "zTitle", publicName: "zTitle", isSignal: true, isRequired: true, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "itemClasses()" } }, ngImport: i0, template: "<div\n [class]=\"triggerClasses()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"isOpen()\">\n <span [class]=\"titleWrapperClasses()\">\n <ng-content select=\"[zAccordionIcon]\" />\n <span>{{ zTitle() }}</span>\n </span>\n <z-icon [zType]=\"iconType()\" zSize=\"16\" [class]=\"iconClasses()\" />\n</div>\n\n<div [class]=\"contentClasses()\" class=\"z-accordion-content\" [class.z-accordion-content-open]=\"isOpen()\">\n <div class=\"z-accordion-content-inner\">\n <div [class]=\"contentInnerClasses()\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [".z-accordion-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out}.z-accordion-content.z-accordion-content-open{grid-template-rows:1fr}.z-accordion-content>.z-accordion-content-inner{overflow:hidden;min-height:0}\n"], dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
201
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
202
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: ZAccordionItemComponent, isStandalone: true, selector: "z-accordion-item", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zId: { classPropertyName: "zId", publicName: "zId", isSignal: true, isRequired: true, transformFunction: null }, zTitle: { classPropertyName: "zTitle", publicName: "zTitle", isSignal: true, isRequired: true, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "itemClasses()" } }, ngImport: i0, template: "<div\n [class]=\"triggerClasses()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"isOpen()\">\n <span [class]=\"titleWrapperClasses()\">\n <ng-content select=\"[zAccordionIcon]\" />\n <span>{{ zTitle() }}</span>\n </span>\n <z-icon [zType]=\"iconType()\" zSize=\"16\" [class]=\"iconClasses()\" />\n</div>\n\n<div [class]=\"contentClasses()\" class=\"z-accordion-content\" [class.z-accordion-content-open]=\"isOpen()\">\n <div class=\"z-accordion-content-inner\">\n <div [class]=\"contentInnerClasses()\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [".z-accordion-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out}.z-accordion-content.z-accordion-content-open{grid-template-rows:1fr}.z-accordion-content>.z-accordion-content-inner{overflow:hidden;min-height:0}\n"], dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
203
203
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZAccordionItemComponent, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZAccordionItemComponent, decorators: [{
205
205
  type: Component,
206
206
  args: [{ selector: 'z-accordion-item', imports: [ZIconComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
207
207
  '[class]': 'itemClasses()',
@@ -263,10 +263,10 @@ class ZAccordionComponent {
263
263
  }
264
264
  this._openItems.set(new Set());
265
265
  }
266
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
267
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: ZAccordionComponent, isStandalone: true, selector: "z-accordion", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zMultiple: { classPropertyName: "zMultiple", publicName: "zMultiple", isSignal: true, isRequired: false, transformFunction: null }, zCollapsible: { classPropertyName: "zCollapsible", publicName: "zCollapsible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "zClasses()" } }, queries: [{ propertyName: "items", predicate: ZAccordionItemComponent, isSignal: true }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [".z-accordion-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out}.z-accordion-content.z-accordion-content-open{grid-template-rows:1fr}.z-accordion-content>.z-accordion-content-inner{overflow:hidden;min-height:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
266
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
267
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: ZAccordionComponent, isStandalone: true, selector: "z-accordion", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zMultiple: { classPropertyName: "zMultiple", publicName: "zMultiple", isSignal: true, isRequired: false, transformFunction: null }, zCollapsible: { classPropertyName: "zCollapsible", publicName: "zCollapsible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "zClasses()" } }, queries: [{ propertyName: "items", predicate: ZAccordionItemComponent, isSignal: true }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [".z-accordion-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out}.z-accordion-content.z-accordion-content-open{grid-template-rows:1fr}.z-accordion-content>.z-accordion-content-inner{overflow:hidden;min-height:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
268
268
  }
269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZAccordionComponent, decorators: [{
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZAccordionComponent, decorators: [{
270
270
  type: Component,
271
271
  args: [{ selector: 'z-accordion', standalone: true, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
272
272
  '[class]': 'zClasses()',
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-accordion.mjs","sources":["../../../../libs/core-ui/components/z-accordion/z-accordion.variants.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.html","../../../../libs/core-ui/components/z-accordion/z-accordion.component.ts","../../../../libs/core-ui/components/z-accordion/shival99-z-ui-components-z-accordion.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zAccordionVariants = cva(['block w-full'], {\n variants: {\n zType: {\n default: 'border border-border rounded-md overflow-hidden',\n ghost: '',\n outline: 'border border-border rounded-md overflow-hidden',\n card: '',\n elevated: 'space-y-2',\n 'icon-list': '',\n bordered: 'rounded-md border border-border',\n separated: 'space-y-2',\n },\n },\n defaultVariants: {\n zType: 'default',\n },\n});\n\nexport const zAccordionItemVariants = cva(['block group transition-[box-shadow,background-color] duration-200'], {\n variants: {\n zType: {\n default: 'border-b border-border last:border-b-0',\n ghost: 'border-b border-border last:border-b-0',\n outline: 'border-b border-border last:border-b-0',\n card: 'last:border-b-0 rounded-md px-4 transition-colors duration-200',\n elevated: 'last:border-b-0 rounded-md border-b-0 bg-card shadow-md',\n 'icon-list': 'border-b border-border last:border-b-0',\n bordered: 'border-b border-border last:border-b-0',\n separated: 'border border-border rounded-md',\n },\n isDisabled: {\n true: 'cursor-not-allowed pointer-events-none opacity-50',\n false: '',\n },\n isOpen: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n zType: 'card',\n isOpen: true,\n class: 'bg-background ring-1 ring-border shadow-md',\n },\n {\n zType: 'elevated',\n isOpen: true,\n class: 'shadow-lg',\n },\n ],\n defaultVariants: {\n zType: 'default',\n isDisabled: false,\n isOpen: false,\n },\n});\n\nexport const zAccordionTriggerVariants = cva(\n [\n 'flex w-full select-none items-center justify-between gap-4 text-sm font-medium text-left',\n 'cursor-pointer transition-[color,background-color,text-decoration-color] duration-200',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ],\n {\n variants: {\n zType: {\n default: 'px-4 py-4 hover:bg-muted/50',\n ghost: 'px-4 py-4 hover:bg-muted/50',\n outline: 'px-4 py-4 hover:bg-muted/50',\n card: 'rounded-md py-4',\n elevated: 'items-start rounded-md px-4 py-4 hover:underline',\n 'icon-list': 'items-start px-4 py-4 [&[aria-expanded=true]>svg]:rotate-45',\n bordered: 'items-start px-5 py-4 hover:underline [&[aria-expanded=true]>svg]:rotate-180',\n separated: 'items-start px-5 py-4 hover:underline [&[aria-expanded=true]>svg]:rotate-180',\n },\n isOpen: {\n true: 'text-foreground',\n false: 'text-foreground',\n },\n },\n defaultVariants: {\n zType: 'default',\n isOpen: false,\n },\n }\n);\n\nexport const zAccordionContentVariants = cva(['overflow-hidden text-sm'], {\n variants: {\n zType: {\n default: '',\n ghost: '',\n outline: '',\n card: 'text-muted-foreground',\n elevated: 'text-muted-foreground',\n 'icon-list': 'text-muted-foreground',\n bordered: 'text-muted-foreground',\n separated: 'text-muted-foreground',\n },\n isOpen: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n zType: 'default',\n isOpen: false,\n },\n});\n\nexport type ZAccordionVariants = VariantProps<typeof zAccordionVariants>;\nexport type ZAccordionItemVariants = VariantProps<typeof zAccordionItemVariants>;\nexport type ZAccordionTriggerVariants = VariantProps<typeof zAccordionTriggerVariants>;\nexport type ZAccordionContentVariants = VariantProps<typeof zAccordionContentVariants>;\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionComponent } from './z-accordion.component';\nimport { zAccordionContentVariants, zAccordionItemVariants, zAccordionTriggerVariants } from './z-accordion.variants';\n\n@Component({\n selector: 'z-accordion-item',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-accordion-item.component.html',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'itemClasses()',\n },\n})\nexport class ZAccordionItemComponent {\n private readonly _accordion = inject(ZAccordionComponent);\n\n public readonly class = input<ClassValue>('');\n public readonly zId = input.required<string>();\n public readonly zTitle = input.required<string>();\n public readonly zDisabled = input(false, { transform: zTransform });\n\n protected readonly isOpen = computed(() => this._accordion.isItemOpen(this.zId()));\n protected readonly accordionType = this._accordion.zType;\n\n protected readonly itemClasses = computed(() =>\n zMergeClasses(\n zAccordionItemVariants({\n zType: this.accordionType(),\n isDisabled: this.zDisabled(),\n isOpen: this.isOpen(),\n }),\n this.class()\n )\n );\n\n protected readonly triggerClasses = computed(() =>\n zAccordionTriggerVariants({\n zType: this.accordionType(),\n isOpen: this.isOpen(),\n })\n );\n\n protected readonly contentClasses = computed(() =>\n zAccordionContentVariants({\n zType: this.accordionType(),\n isOpen: this.isOpen(),\n })\n );\n\n protected readonly contentInnerClasses = computed(() => {\n if (this.accordionType() === 'card') {\n return 'pt-0 pb-4';\n }\n\n if (this.accordionType() === 'elevated') {\n return 'px-4 pt-0 pb-4';\n }\n\n if (this.accordionType() === 'icon-list') {\n return 'px-4 pt-0 pb-4 pl-12 text-muted-foreground';\n }\n\n if (this.accordionType() === 'bordered' || this.accordionType() === 'separated') {\n return 'px-5 pt-0 pb-4 text-muted-foreground';\n }\n\n return 'mt-2 px-4 pb-4';\n });\n\n protected readonly iconType = computed(() => {\n if (this.accordionType() === 'card') {\n return this.isOpen() ? 'lucideMinus' : 'lucidePlus';\n }\n\n if (this.accordionType() === 'elevated') {\n return 'lucideChevronDown';\n }\n\n if (this.accordionType() === 'icon-list') {\n return 'lucidePlus';\n }\n\n if (this.accordionType() === 'bordered' || this.accordionType() === 'separated') {\n return 'lucideChevronDown';\n }\n\n return 'lucideChevronDown';\n });\n\n protected readonly iconClasses = computed(() => {\n if (this.accordionType() === 'card') {\n return 'text-muted-foreground pointer-events-none shrink-0';\n }\n\n if (this.accordionType() === 'elevated') {\n return zMergeClasses(\n 'text-muted-foreground pointer-events-none shrink-0 translate-y-0.5 transition-transform duration-200',\n this.isOpen() ? 'rotate-0' : 'rotate-90'\n );\n }\n\n if (this.accordionType() === 'icon-list') {\n return zMergeClasses(\n 'text-muted-foreground pointer-events-none shrink-0 transition-transform duration-200',\n this.isOpen() ? 'rotate-45' : 'rotate-0'\n );\n }\n\n if (this.accordionType() === 'bordered' || this.accordionType() === 'separated') {\n return 'text-muted-foreground pointer-events-none shrink-0 translate-y-0.5 transition-transform duration-200';\n }\n\n return zMergeClasses(\n 'text-muted-foreground shrink-0 transition-transform duration-200',\n this.isOpen() ? 'rotate-180' : ''\n );\n });\n\n protected readonly titleWrapperClasses = computed(() => {\n if (this.accordionType() === 'icon-list') {\n return 'flex items-center gap-4';\n }\n\n return 'flex items-center gap-2';\n });\n\n protected toggle(): void {\n if (this.zDisabled()) {\n return;\n }\n this._accordion.toggleItem(this.zId());\n }\n}\n","<div\n [class]=\"triggerClasses()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"isOpen()\">\n <span [class]=\"titleWrapperClasses()\">\n <ng-content select=\"[zAccordionIcon]\" />\n <span>{{ zTitle() }}</span>\n </span>\n <z-icon [zType]=\"iconType()\" zSize=\"16\" [class]=\"iconClasses()\" />\n</div>\n\n<div [class]=\"contentClasses()\" class=\"z-accordion-content\" [class.z-accordion-content-open]=\"isOpen()\">\n <div class=\"z-accordion-content-inner\">\n <div [class]=\"contentInnerClasses()\">\n <ng-content />\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionItemComponent } from './z-accordion-item.component';\nimport { zAccordionVariants, type ZAccordionVariants } from './z-accordion.variants';\n\n@Component({\n selector: 'z-accordion',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n },\n})\nexport class ZAccordionComponent {\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZAccordionVariants['zType']>('default');\n public readonly zMultiple = input(false, { transform: zTransform });\n public readonly zCollapsible = input(true, { transform: zTransform });\n\n protected readonly items = contentChildren(ZAccordionItemComponent);\n private readonly _openItems = signal<Set<string>>(new Set());\n\n protected readonly zClasses = computed(() =>\n zMergeClasses(zAccordionVariants({ zType: this.zType() }), this.class())\n );\n\n public isItemOpen(itemId: string): boolean {\n return this._openItems().has(itemId);\n }\n\n public toggleItem(itemId: string): void {\n const current = new Set(this._openItems());\n const isCurrentlyOpen = current.has(itemId);\n\n if (isCurrentlyOpen && this.zCollapsible()) {\n current.delete(itemId);\n this._openItems.set(current);\n return;\n }\n\n if (isCurrentlyOpen) {\n return;\n }\n\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public openItem(itemId: string): void {\n const current = new Set(this._openItems());\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public closeItem(itemId: string): void {\n if (!this.zCollapsible()) {\n return;\n }\n const current = new Set(this._openItems());\n current.delete(itemId);\n this._openItems.set(current);\n }\n\n public closeAll(): void {\n if (!this.zCollapsible()) {\n return;\n }\n this._openItems.set(new Set());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-accordion.mjs","sources":["../../../../libs/core-ui/components/z-accordion/z-accordion.variants.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.html","../../../../libs/core-ui/components/z-accordion/z-accordion.component.ts","../../../../libs/core-ui/components/z-accordion/shival99-z-ui-components-z-accordion.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zAccordionVariants = cva(['block w-full'], {\n variants: {\n zType: {\n default: 'border border-border rounded-md overflow-hidden',\n ghost: '',\n outline: 'border border-border rounded-md overflow-hidden',\n card: '',\n elevated: 'space-y-2',\n 'icon-list': '',\n bordered: 'rounded-md border border-border',\n separated: 'space-y-2',\n },\n },\n defaultVariants: {\n zType: 'default',\n },\n});\n\nexport const zAccordionItemVariants = cva(['block group transition-[box-shadow,background-color] duration-200'], {\n variants: {\n zType: {\n default: 'border-b border-border last:border-b-0',\n ghost: 'border-b border-border last:border-b-0',\n outline: 'border-b border-border last:border-b-0',\n card: 'last:border-b-0 rounded-md px-4 transition-colors duration-200',\n elevated: 'last:border-b-0 rounded-md border-b-0 bg-card shadow-md',\n 'icon-list': 'border-b border-border last:border-b-0',\n bordered: 'border-b border-border last:border-b-0',\n separated: 'border border-border rounded-md',\n },\n isDisabled: {\n true: 'cursor-not-allowed pointer-events-none opacity-50',\n false: '',\n },\n isOpen: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n zType: 'card',\n isOpen: true,\n class: 'bg-background ring-1 ring-border shadow-md',\n },\n {\n zType: 'elevated',\n isOpen: true,\n class: 'shadow-lg',\n },\n ],\n defaultVariants: {\n zType: 'default',\n isDisabled: false,\n isOpen: false,\n },\n});\n\nexport const zAccordionTriggerVariants = cva(\n [\n 'flex w-full select-none items-center justify-between gap-4 text-sm font-medium text-left',\n 'cursor-pointer transition-[color,background-color,text-decoration-color] duration-200',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ],\n {\n variants: {\n zType: {\n default: 'px-4 py-4 hover:bg-muted/50',\n ghost: 'px-4 py-4 hover:bg-muted/50',\n outline: 'px-4 py-4 hover:bg-muted/50',\n card: 'rounded-md py-4',\n elevated: 'items-start rounded-md px-4 py-4 hover:underline',\n 'icon-list': 'items-start px-4 py-4 [&[aria-expanded=true]>svg]:rotate-45',\n bordered: 'items-start px-5 py-4 hover:underline [&[aria-expanded=true]>svg]:rotate-180',\n separated: 'items-start px-5 py-4 hover:underline [&[aria-expanded=true]>svg]:rotate-180',\n },\n isOpen: {\n true: 'text-foreground',\n false: 'text-foreground',\n },\n },\n defaultVariants: {\n zType: 'default',\n isOpen: false,\n },\n }\n);\n\nexport const zAccordionContentVariants = cva(['overflow-hidden text-sm'], {\n variants: {\n zType: {\n default: '',\n ghost: '',\n outline: '',\n card: 'text-muted-foreground',\n elevated: 'text-muted-foreground',\n 'icon-list': 'text-muted-foreground',\n bordered: 'text-muted-foreground',\n separated: 'text-muted-foreground',\n },\n isOpen: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n zType: 'default',\n isOpen: false,\n },\n});\n\nexport type ZAccordionVariants = VariantProps<typeof zAccordionVariants>;\nexport type ZAccordionItemVariants = VariantProps<typeof zAccordionItemVariants>;\nexport type ZAccordionTriggerVariants = VariantProps<typeof zAccordionTriggerVariants>;\nexport type ZAccordionContentVariants = VariantProps<typeof zAccordionContentVariants>;\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionComponent } from './z-accordion.component';\nimport { zAccordionContentVariants, zAccordionItemVariants, zAccordionTriggerVariants } from './z-accordion.variants';\n\n@Component({\n selector: 'z-accordion-item',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-accordion-item.component.html',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'itemClasses()',\n },\n})\nexport class ZAccordionItemComponent {\n private readonly _accordion = inject(ZAccordionComponent);\n\n public readonly class = input<ClassValue>('');\n public readonly zId = input.required<string>();\n public readonly zTitle = input.required<string>();\n public readonly zDisabled = input(false, { transform: zTransform });\n\n protected readonly isOpen = computed(() => this._accordion.isItemOpen(this.zId()));\n protected readonly accordionType = this._accordion.zType;\n\n protected readonly itemClasses = computed(() =>\n zMergeClasses(\n zAccordionItemVariants({\n zType: this.accordionType(),\n isDisabled: this.zDisabled(),\n isOpen: this.isOpen(),\n }),\n this.class()\n )\n );\n\n protected readonly triggerClasses = computed(() =>\n zAccordionTriggerVariants({\n zType: this.accordionType(),\n isOpen: this.isOpen(),\n })\n );\n\n protected readonly contentClasses = computed(() =>\n zAccordionContentVariants({\n zType: this.accordionType(),\n isOpen: this.isOpen(),\n })\n );\n\n protected readonly contentInnerClasses = computed(() => {\n if (this.accordionType() === 'card') {\n return 'pt-0 pb-4';\n }\n\n if (this.accordionType() === 'elevated') {\n return 'px-4 pt-0 pb-4';\n }\n\n if (this.accordionType() === 'icon-list') {\n return 'px-4 pt-0 pb-4 pl-12 text-muted-foreground';\n }\n\n if (this.accordionType() === 'bordered' || this.accordionType() === 'separated') {\n return 'px-5 pt-0 pb-4 text-muted-foreground';\n }\n\n return 'mt-2 px-4 pb-4';\n });\n\n protected readonly iconType = computed(() => {\n if (this.accordionType() === 'card') {\n return this.isOpen() ? 'lucideMinus' : 'lucidePlus';\n }\n\n if (this.accordionType() === 'elevated') {\n return 'lucideChevronDown';\n }\n\n if (this.accordionType() === 'icon-list') {\n return 'lucidePlus';\n }\n\n if (this.accordionType() === 'bordered' || this.accordionType() === 'separated') {\n return 'lucideChevronDown';\n }\n\n return 'lucideChevronDown';\n });\n\n protected readonly iconClasses = computed(() => {\n if (this.accordionType() === 'card') {\n return 'text-muted-foreground pointer-events-none shrink-0';\n }\n\n if (this.accordionType() === 'elevated') {\n return zMergeClasses(\n 'text-muted-foreground pointer-events-none shrink-0 translate-y-0.5 transition-transform duration-200',\n this.isOpen() ? 'rotate-0' : 'rotate-90'\n );\n }\n\n if (this.accordionType() === 'icon-list') {\n return zMergeClasses(\n 'text-muted-foreground pointer-events-none shrink-0 transition-transform duration-200',\n this.isOpen() ? 'rotate-45' : 'rotate-0'\n );\n }\n\n if (this.accordionType() === 'bordered' || this.accordionType() === 'separated') {\n return 'text-muted-foreground pointer-events-none shrink-0 translate-y-0.5 transition-transform duration-200';\n }\n\n return zMergeClasses(\n 'text-muted-foreground shrink-0 transition-transform duration-200',\n this.isOpen() ? 'rotate-180' : ''\n );\n });\n\n protected readonly titleWrapperClasses = computed(() => {\n if (this.accordionType() === 'icon-list') {\n return 'flex items-center gap-4';\n }\n\n return 'flex items-center gap-2';\n });\n\n protected toggle(): void {\n if (this.zDisabled()) {\n return;\n }\n this._accordion.toggleItem(this.zId());\n }\n}\n","<div\n [class]=\"triggerClasses()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"isOpen()\">\n <span [class]=\"titleWrapperClasses()\">\n <ng-content select=\"[zAccordionIcon]\" />\n <span>{{ zTitle() }}</span>\n </span>\n <z-icon [zType]=\"iconType()\" zSize=\"16\" [class]=\"iconClasses()\" />\n</div>\n\n<div [class]=\"contentClasses()\" class=\"z-accordion-content\" [class.z-accordion-content-open]=\"isOpen()\">\n <div class=\"z-accordion-content-inner\">\n <div [class]=\"contentInnerClasses()\">\n <ng-content />\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionItemComponent } from './z-accordion-item.component';\nimport { zAccordionVariants, type ZAccordionVariants } from './z-accordion.variants';\n\n@Component({\n selector: 'z-accordion',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n },\n})\nexport class ZAccordionComponent {\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZAccordionVariants['zType']>('default');\n public readonly zMultiple = input(false, { transform: zTransform });\n public readonly zCollapsible = input(true, { transform: zTransform });\n\n protected readonly items = contentChildren(ZAccordionItemComponent);\n private readonly _openItems = signal<Set<string>>(new Set());\n\n protected readonly zClasses = computed(() =>\n zMergeClasses(zAccordionVariants({ zType: this.zType() }), this.class())\n );\n\n public isItemOpen(itemId: string): boolean {\n return this._openItems().has(itemId);\n }\n\n public toggleItem(itemId: string): void {\n const current = new Set(this._openItems());\n const isCurrentlyOpen = current.has(itemId);\n\n if (isCurrentlyOpen && this.zCollapsible()) {\n current.delete(itemId);\n this._openItems.set(current);\n return;\n }\n\n if (isCurrentlyOpen) {\n return;\n }\n\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public openItem(itemId: string): void {\n const current = new Set(this._openItems());\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public closeItem(itemId: string): void {\n if (!this.zCollapsible()) {\n return;\n }\n const current = new Set(this._openItems());\n current.delete(itemId);\n this._openItems.set(current);\n }\n\n public closeAll(): void {\n if (!this.zCollapsible()) {\n return;\n }\n this._openItems.set(new Set());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -192,10 +192,10 @@ class ZAudioPlayerComponent {
192
192
  .padStart(2, '0');
193
193
  return `${minutes}:${seconds}`;
194
194
  }
195
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZAudioPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
196
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: ZAudioPlayerComponent, isStandalone: true, selector: "z-audio-player", inputs: { zSrc: { classPropertyName: "zSrc", publicName: "zSrc", isSignal: true, isRequired: true, transformFunction: null }, zTitle: { classPropertyName: "zTitle", publicName: "zTitle", isSignal: true, isRequired: false, transformFunction: null }, zTags: { classPropertyName: "zTags", publicName: "zTags", isSignal: true, isRequired: false, transformFunction: null }, zDownload: { classPropertyName: "zDownload", publicName: "zDownload", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zLoaded: "zLoaded", zError: "zError", zPlay: "zPlay" }, host: { classAttribute: "block w-full min-w-0" }, viewQueries: [{ propertyName: "audio", first: true, predicate: ["audio"], descendants: true, isSignal: true }], ngImport: i0, template: "<section\n class=\"border-border bg-card text-foreground relative overflow-hidden rounded-lg border shadow-sm\"\n [attr.aria-label]=\"title() || ('i18n_z_ui_gallery_preview' | translate)\">\n <audio\n #audio\n class=\"sr-only\"\n [src]=\"zSrc()\"\n preload=\"metadata\"\n (loadstart)=\"onLoadStart()\"\n (play)=\"onPlayStateChange(true)\"\n (pause)=\"onPlayStateChange(false)\"\n (loadedmetadata)=\"onLoadedMetadata()\"\n (timeupdate)=\"onTimeUpdate()\"\n (ended)=\"onEnded()\"\n (error)=\"onError()\"></audio>\n\n <div\n class=\"focus-visible:outline-ring relative h-[7.5rem] cursor-pointer touch-none overflow-hidden px-4 py-5 select-none [background:color-mix(in_oklab,var(--primary)_8%,var(--card))] focus-visible:outline-2 focus-visible:outline-offset-[-2px] max-[30rem]:h-24\"\n role=\"slider\"\n tabindex=\"0\"\n [attr.aria-label]=\"'i18n_z_ui_audio_player_seek' | translate\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"duration()\"\n [attr.aria-valuenow]=\"currentTime()\"\n (pointerdown)=\"onWaveformPointerDown($event)\"\n (pointermove)=\"onWaveformPointerMove($event)\"\n (pointerup)=\"onWaveformPointerUp($event)\"\n (pointercancel)=\"onWaveformPointerUp($event)\"\n (keydown)=\"onWaveformKeydown($event)\">\n <div\n class=\"z-audio-player__waveform-track absolute inset-[1.25rem_1rem] flex cursor-pointer items-center gap-[0.2rem] overflow-hidden\">\n @for (bar of waveform; track $index) {\n <span\n class=\"max-h-full min-h-[0.1rem] min-w-[0.1rem] flex-1 rounded-full\"\n [style.background]=\"\n ($index + 0.5) / waveform.length < progress()\n ? 'var(--primary)'\n : 'color-mix(in oklab, var(--muted-foreground) 42%, transparent)'\n \"\n [style.height.%]=\"bar\"></span>\n }\n <span\n class=\"bg-foreground pointer-events-none absolute top-0 bottom-0 z-[1] w-[3px] -translate-x-1/2 translate-z-0 [box-shadow:0_0_0_1px_color-mix(in_oklab,var(--foreground)_24%,transparent)]\"\n [style.left.%]=\"progress() * 100\">\n <span class=\"bg-foreground absolute top-[-0.2rem] left-1/2 size-[0.55rem] -translate-x-1/2 rounded-full\"></span>\n </span>\n </div>\n </div>\n\n <div\n class=\"flex min-w-0 items-end justify-between gap-4 p-4 max-[30rem]:flex-col max-[30rem]:items-start max-[30rem]:gap-3 max-[30rem]:pr-4\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-2\">\n <span class=\"min-w-0 overflow-hidden text-base font-semibold text-ellipsis whitespace-nowrap\">{{ title() }}</span>\n @if (tags().length) {\n <div class=\"flex flex-wrap gap-[0.35rem]\">\n @for (tag of tags(); track tag) {\n <span class=\"bg-muted text-muted-foreground rounded-md px-2 py-1 text-xs leading-none\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"flex flex-none items-center gap-2\">\n <span class=\"text-muted-foreground text-sm tabular-nums\">{{ currentTimeLabel() }} / {{ durationLabel() }}</span>\n @if (zDownload()) {\n <a\n z-button\n zType=\"default\"\n zSize=\"sm\"\n zShape=\"circle\"\n [zWave]=\"false\"\n [href]=\"zSrc()\"\n [download]=\"title() || null\"\n [attr.aria-label]=\"'i18n_z_ui_gallery_download' | translate\"\n [title]=\"'i18n_z_ui_gallery_download' | translate\"\n class=\"inline-flex items-center justify-center no-underline\">\n <z-icon zType=\"lucideDownload\" zSize=\"16\" />\n </a>\n }\n </div>\n </div>\n\n <button\n z-button\n zType=\"default\"\n zSize=\"xl\"\n zShape=\"circle\"\n [zWave]=\"false\"\n type=\"button\"\n class=\"absolute top-20 right-4 z-[1] shadow-md max-[30rem]:top-16\"\n [attr.aria-label]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n [title]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n (click)=\"togglePlay()\">\n <z-icon\n [zType]=\"isPlaying() ? 'tablerPlayerPauseFill' : 'tablerPlayerPlayFill'\"\n zSize=\"24\"\n [class.translate-x-px]=\"!isPlaying()\" />\n </button>\n</section>\n", dependencies: [{ kind: "component", type: ZButtonComponent, selector: "z-button, button[z-button], a[z-button]", inputs: ["class", "zType", "zSize", "zShape", "zLabel", "zLoading", "zDisabled", "zTypeIcon", "zAnimatedTypeIcon", "zAnimateIcon", "zAnimationTriggerIcon", "zSizeIcon", "zStrokeWidthIcon", "zWave"], exportAs: ["zButton"] }, { kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZAudioPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: ZAudioPlayerComponent, isStandalone: true, selector: "z-audio-player", inputs: { zSrc: { classPropertyName: "zSrc", publicName: "zSrc", isSignal: true, isRequired: true, transformFunction: null }, zTitle: { classPropertyName: "zTitle", publicName: "zTitle", isSignal: true, isRequired: false, transformFunction: null }, zTags: { classPropertyName: "zTags", publicName: "zTags", isSignal: true, isRequired: false, transformFunction: null }, zDownload: { classPropertyName: "zDownload", publicName: "zDownload", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zLoaded: "zLoaded", zError: "zError", zPlay: "zPlay" }, host: { classAttribute: "block w-full min-w-0" }, viewQueries: [{ propertyName: "audio", first: true, predicate: ["audio"], descendants: true, isSignal: true }], ngImport: i0, template: "<section\n class=\"border-border bg-card text-foreground relative overflow-hidden rounded-lg border shadow-sm\"\n [attr.aria-label]=\"title() || ('i18n_z_ui_gallery_preview' | translate)\">\n <audio\n #audio\n class=\"sr-only\"\n [src]=\"zSrc()\"\n preload=\"metadata\"\n (loadstart)=\"onLoadStart()\"\n (play)=\"onPlayStateChange(true)\"\n (pause)=\"onPlayStateChange(false)\"\n (loadedmetadata)=\"onLoadedMetadata()\"\n (timeupdate)=\"onTimeUpdate()\"\n (ended)=\"onEnded()\"\n (error)=\"onError()\"></audio>\n\n <div\n class=\"focus-visible:outline-ring relative h-[7.5rem] cursor-pointer touch-none overflow-hidden px-4 py-5 select-none [background:color-mix(in_oklab,var(--primary)_8%,var(--card))] focus-visible:outline-2 focus-visible:outline-offset-[-2px] max-[30rem]:h-24\"\n role=\"slider\"\n tabindex=\"0\"\n [attr.aria-label]=\"'i18n_z_ui_audio_player_seek' | translate\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"duration()\"\n [attr.aria-valuenow]=\"currentTime()\"\n (pointerdown)=\"onWaveformPointerDown($event)\"\n (pointermove)=\"onWaveformPointerMove($event)\"\n (pointerup)=\"onWaveformPointerUp($event)\"\n (pointercancel)=\"onWaveformPointerUp($event)\"\n (keydown)=\"onWaveformKeydown($event)\">\n <div\n class=\"z-audio-player__waveform-track absolute inset-[1.25rem_1rem] flex cursor-pointer items-center gap-[0.2rem] overflow-hidden\">\n @for (bar of waveform; track $index) {\n <span\n class=\"max-h-full min-h-[0.1rem] min-w-[0.1rem] flex-1 rounded-full\"\n [style.background]=\"\n ($index + 0.5) / waveform.length < progress()\n ? 'var(--primary)'\n : 'color-mix(in oklab, var(--muted-foreground) 42%, transparent)'\n \"\n [style.height.%]=\"bar\"></span>\n }\n <span\n class=\"bg-foreground pointer-events-none absolute top-0 bottom-0 z-[1] w-[3px] -translate-x-1/2 translate-z-0 [box-shadow:0_0_0_1px_color-mix(in_oklab,var(--foreground)_24%,transparent)]\"\n [style.left.%]=\"progress() * 100\">\n <span class=\"bg-foreground absolute top-[-0.2rem] left-1/2 size-[0.55rem] -translate-x-1/2 rounded-full\"></span>\n </span>\n </div>\n </div>\n\n <div\n class=\"flex min-w-0 items-end justify-between gap-4 p-4 max-[30rem]:flex-col max-[30rem]:items-start max-[30rem]:gap-3 max-[30rem]:pr-4\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-2\">\n <span class=\"min-w-0 overflow-hidden text-base font-semibold text-ellipsis whitespace-nowrap\">{{ title() }}</span>\n @if (tags().length) {\n <div class=\"flex flex-wrap gap-[0.35rem]\">\n @for (tag of tags(); track tag) {\n <span class=\"bg-muted text-muted-foreground rounded-md px-2 py-1 text-xs leading-none\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"flex flex-none items-center gap-2\">\n <span class=\"text-muted-foreground text-sm tabular-nums\">{{ currentTimeLabel() }} / {{ durationLabel() }}</span>\n @if (zDownload()) {\n <a\n z-button\n zType=\"default\"\n zSize=\"sm\"\n zShape=\"circle\"\n [zWave]=\"false\"\n [href]=\"zSrc()\"\n [download]=\"title() || null\"\n [attr.aria-label]=\"'i18n_z_ui_gallery_download' | translate\"\n [title]=\"'i18n_z_ui_gallery_download' | translate\"\n class=\"inline-flex items-center justify-center no-underline\">\n <z-icon zType=\"lucideDownload\" zSize=\"16\" />\n </a>\n }\n </div>\n </div>\n\n <button\n z-button\n zType=\"default\"\n zSize=\"xl\"\n zShape=\"circle\"\n [zWave]=\"false\"\n type=\"button\"\n class=\"absolute top-20 right-4 z-[1] shadow-md max-[30rem]:top-16\"\n [attr.aria-label]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n [title]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n (click)=\"togglePlay()\">\n <z-icon\n [zType]=\"isPlaying() ? 'tablerPlayerPauseFill' : 'tablerPlayerPlayFill'\"\n zSize=\"24\"\n [class.translate-x-px]=\"!isPlaying()\" />\n </button>\n</section>\n", dependencies: [{ kind: "component", type: ZButtonComponent, selector: "z-button, button[z-button], a[z-button]", inputs: ["class", "zType", "zSize", "zShape", "zLabel", "zLoading", "zDisabled", "zTypeIcon", "zAnimatedTypeIcon", "zAnimateIcon", "zAnimationTriggerIcon", "zSizeIcon", "zStrokeWidthIcon", "zWave"], exportAs: ["zButton"] }, { kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
197
197
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZAudioPlayerComponent, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZAudioPlayerComponent, decorators: [{
199
199
  type: Component,
200
200
  args: [{ selector: 'z-audio-player', standalone: true, imports: [TranslatePipe, ZButtonComponent, ZIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
201
201
  class: 'block w-full min-w-0',
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-audio-player.mjs","sources":["../../../../libs/core-ui/components/z-audio-player/z-audio-player.define.ts","../../../../libs/core-ui/components/z-audio-player/z-audio-player.component.ts","../../../../libs/core-ui/components/z-audio-player/z-audio-player.component.html","../../../../libs/core-ui/components/z-audio-player/shival99-z-ui-components-z-audio-player.ts"],"sourcesContent":["export const Z_AUDIO_PLAYER_WAVEFORM = [\n 28, 42, 34, 56, 38, 66, 45, 32, 52, 72, 46, 58, 36, 78, 48, 64, 40, 30, 54, 70, 44, 60, 35, 50, 76, 42, 58, 38, 68,\n 46, 34, 56, 74, 40, 62, 36, 52, 70, 44, 30, 48, 64, 38, 58, 76, 42, 54, 34, 66, 46, 72, 40, 56, 32, 68, 48, 60, 36,\n 74, 44, 52, 30, 64, 42, 78, 46, 58, 34, 70, 40, 54, 32, 66, 48, 62, 38, 72, 44, 56, 30, 68, 42, 60, 36, 76, 46, 54,\n 34, 64, 40, 70, 48, 58, 32, 66, 44, 74, 38, 52, 30, 62, 46, 68, 36, 56, 78, 42, 60, 34, 72, 48, 54, 38, 66, 44, 76,\n 40, 58, 32, 70, 46, 62, 36, 74, 48, 56, 30, 64, 42, 68, 38, 52, 72, 44, 60, 34, 76, 46, 54, 32, 66, 40, 58, 74, 36,\n 62, 48, 70, 42, 56, 30, 68, 44, 60, 38, 74, 46, 54, 32, 66, 40, 58, 72, 36, 62, 48, 70, 42, 56, 34, 76, 44, 60, 38,\n 68, 46, 52, 30, 64, 42, 74, 36, 58, 48, 70, 40, 54, 32, 66, 44, 60, 38, 76, 46, 56, 34, 68, 42, 72, 48, 58,\n] as const;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n type ElementRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { Z_AUDIO_PLAYER_WAVEFORM } from './z-audio-player.define';\n\n@Component({\n selector: 'z-audio-player',\n standalone: true,\n imports: [TranslatePipe, ZButtonComponent, ZIconComponent],\n templateUrl: './z-audio-player.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block w-full min-w-0',\n },\n})\nexport class ZAudioPlayerComponent {\n private readonly _destroyRef = inject(DestroyRef);\n private _animationFrameId: number | null = null;\n private _isSeeking = false;\n\n constructor() {\n this._destroyRef.onDestroy(() => this._stopPlaybackFrame());\n }\n\n public readonly zSrc = input.required<string>();\n public readonly zTitle = input('');\n public readonly zTags = input<readonly string[]>([]);\n public readonly zDownload = input(true);\n public readonly zLoaded = output<void>();\n public readonly zError = output<Error>();\n public readonly zPlay = output<boolean>();\n\n protected readonly audio = viewChild.required<ElementRef<HTMLAudioElement>>('audio');\n protected readonly isPlaying = signal(false);\n protected readonly currentTime = signal(0);\n protected readonly duration = signal(0);\n protected readonly waveform = Z_AUDIO_PLAYER_WAVEFORM;\n protected readonly title = this.zTitle;\n protected readonly tags = this.zTags;\n\n protected readonly progress = computed(() => {\n const duration = this.duration();\n return duration > 0 ? this.currentTime() / duration : 0;\n });\n\n protected readonly currentTimeLabel = computed(() => this._formatTime(this.currentTime()));\n protected readonly durationLabel = computed(() => this._formatTime(this.duration()));\n\n protected async togglePlay(): Promise<void> {\n const audio = this.audio().nativeElement;\n if (audio.paused) {\n await audio.play();\n return;\n }\n\n audio.pause();\n }\n\n protected onWaveformPointerDown(event: PointerEvent): void {\n if (event.button !== 0 || !(event.currentTarget instanceof HTMLElement)) {\n return;\n }\n\n this._isSeeking = true;\n event.currentTarget.setPointerCapture(event.pointerId);\n this._seekToPointerPosition(event);\n }\n\n protected onWaveformPointerMove(event: PointerEvent): void {\n if (!this._isSeeking) {\n return;\n }\n\n this._seekToPointerPosition(event);\n }\n\n protected onWaveformPointerUp(event: PointerEvent): void {\n if (!(event.currentTarget instanceof HTMLElement)) {\n return;\n }\n\n this._isSeeking = false;\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n }\n\n private _seekToPointerPosition(event: PointerEvent): void {\n if (!(event.currentTarget instanceof HTMLElement)) {\n return;\n }\n\n const duration = this.duration();\n const track = event.currentTarget.querySelector<HTMLElement>('.z-audio-player__waveform-track');\n const bounds = track?.getBoundingClientRect();\n if (!bounds) {\n return;\n }\n\n const width = bounds.width;\n if (duration <= 0 || width <= 0) {\n return;\n }\n\n const offset = Math.min(Math.max(event.clientX - bounds.left, 0), width);\n this._seekToTime((offset / width) * duration);\n }\n\n protected onWaveformKeydown(event: KeyboardEvent): void {\n const duration = this.duration();\n if (duration <= 0) {\n return;\n }\n\n const step = event.shiftKey ? 10 : 5;\n const currentTime = this.currentTime();\n const nextTime = {\n ArrowLeft: currentTime - step,\n ArrowRight: currentTime + step,\n Home: 0,\n End: duration,\n }[event.key];\n\n if (nextTime === undefined) {\n return;\n }\n\n event.preventDefault();\n this._seekToTime(nextTime);\n }\n\n protected onLoadedMetadata(): void {\n this.duration.set(Number.isFinite(this.audio().nativeElement.duration) ? this.audio().nativeElement.duration : 0);\n this.zLoaded.emit();\n }\n\n protected onLoadStart(): void {\n this._stopPlaybackFrame();\n this.currentTime.set(0);\n this.duration.set(0);\n this.isPlaying.set(false);\n }\n\n protected onTimeUpdate(): void {\n if (this._animationFrameId === null) {\n this.currentTime.set(this.audio().nativeElement.currentTime);\n }\n }\n\n protected onEnded(): void {\n this._stopPlaybackFrame();\n this.currentTime.set(this.audio().nativeElement.currentTime);\n this.isPlaying.set(false);\n this.zPlay.emit(false);\n }\n\n protected onError(): void {\n this.isPlaying.set(false);\n this.zError.emit(new Error('i18n_z_ui_gallery_preview_load_error'));\n }\n\n protected onPlayStateChange(isPlaying: boolean): void {\n this.isPlaying.set(isPlaying);\n this.zPlay.emit(isPlaying);\n\n if (isPlaying) {\n this._startPlaybackFrame();\n return;\n }\n\n this._stopPlaybackFrame();\n this.currentTime.set(this.audio().nativeElement.currentTime);\n }\n\n private _seekToTime(time: number): void {\n const audio = this.audio().nativeElement;\n const nextTime = Math.min(Math.max(time, 0), this.duration());\n audio.currentTime = nextTime;\n this.currentTime.set(audio.currentTime);\n }\n\n private _startPlaybackFrame(): void {\n if (this._animationFrameId !== null) {\n return;\n }\n\n const update = (): void => {\n const audio = this.audio().nativeElement;\n this.currentTime.set(audio.currentTime);\n\n if (!audio.paused && !audio.ended) {\n this._animationFrameId = window.requestAnimationFrame(update);\n return;\n }\n\n this._animationFrameId = null;\n };\n\n this._animationFrameId = window.requestAnimationFrame(update);\n }\n\n private _stopPlaybackFrame(): void {\n if (this._animationFrameId === null) {\n return;\n }\n\n window.cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n }\n\n private _formatTime(value: number): string {\n if (!Number.isFinite(value) || value < 0) {\n return '0:00';\n }\n\n const minutes = Math.floor(value / 60);\n const seconds = Math.floor(value % 60)\n .toString()\n .padStart(2, '0');\n return `${minutes}:${seconds}`;\n }\n}\n","<section\n class=\"border-border bg-card text-foreground relative overflow-hidden rounded-lg border shadow-sm\"\n [attr.aria-label]=\"title() || ('i18n_z_ui_gallery_preview' | translate)\">\n <audio\n #audio\n class=\"sr-only\"\n [src]=\"zSrc()\"\n preload=\"metadata\"\n (loadstart)=\"onLoadStart()\"\n (play)=\"onPlayStateChange(true)\"\n (pause)=\"onPlayStateChange(false)\"\n (loadedmetadata)=\"onLoadedMetadata()\"\n (timeupdate)=\"onTimeUpdate()\"\n (ended)=\"onEnded()\"\n (error)=\"onError()\"></audio>\n\n <div\n class=\"focus-visible:outline-ring relative h-[7.5rem] cursor-pointer touch-none overflow-hidden px-4 py-5 select-none [background:color-mix(in_oklab,var(--primary)_8%,var(--card))] focus-visible:outline-2 focus-visible:outline-offset-[-2px] max-[30rem]:h-24\"\n role=\"slider\"\n tabindex=\"0\"\n [attr.aria-label]=\"'i18n_z_ui_audio_player_seek' | translate\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"duration()\"\n [attr.aria-valuenow]=\"currentTime()\"\n (pointerdown)=\"onWaveformPointerDown($event)\"\n (pointermove)=\"onWaveformPointerMove($event)\"\n (pointerup)=\"onWaveformPointerUp($event)\"\n (pointercancel)=\"onWaveformPointerUp($event)\"\n (keydown)=\"onWaveformKeydown($event)\">\n <div\n class=\"z-audio-player__waveform-track absolute inset-[1.25rem_1rem] flex cursor-pointer items-center gap-[0.2rem] overflow-hidden\">\n @for (bar of waveform; track $index) {\n <span\n class=\"max-h-full min-h-[0.1rem] min-w-[0.1rem] flex-1 rounded-full\"\n [style.background]=\"\n ($index + 0.5) / waveform.length < progress()\n ? 'var(--primary)'\n : 'color-mix(in oklab, var(--muted-foreground) 42%, transparent)'\n \"\n [style.height.%]=\"bar\"></span>\n }\n <span\n class=\"bg-foreground pointer-events-none absolute top-0 bottom-0 z-[1] w-[3px] -translate-x-1/2 translate-z-0 [box-shadow:0_0_0_1px_color-mix(in_oklab,var(--foreground)_24%,transparent)]\"\n [style.left.%]=\"progress() * 100\">\n <span class=\"bg-foreground absolute top-[-0.2rem] left-1/2 size-[0.55rem] -translate-x-1/2 rounded-full\"></span>\n </span>\n </div>\n </div>\n\n <div\n class=\"flex min-w-0 items-end justify-between gap-4 p-4 max-[30rem]:flex-col max-[30rem]:items-start max-[30rem]:gap-3 max-[30rem]:pr-4\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-2\">\n <span class=\"min-w-0 overflow-hidden text-base font-semibold text-ellipsis whitespace-nowrap\">{{ title() }}</span>\n @if (tags().length) {\n <div class=\"flex flex-wrap gap-[0.35rem]\">\n @for (tag of tags(); track tag) {\n <span class=\"bg-muted text-muted-foreground rounded-md px-2 py-1 text-xs leading-none\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"flex flex-none items-center gap-2\">\n <span class=\"text-muted-foreground text-sm tabular-nums\">{{ currentTimeLabel() }} / {{ durationLabel() }}</span>\n @if (zDownload()) {\n <a\n z-button\n zType=\"default\"\n zSize=\"sm\"\n zShape=\"circle\"\n [zWave]=\"false\"\n [href]=\"zSrc()\"\n [download]=\"title() || null\"\n [attr.aria-label]=\"'i18n_z_ui_gallery_download' | translate\"\n [title]=\"'i18n_z_ui_gallery_download' | translate\"\n class=\"inline-flex items-center justify-center no-underline\">\n <z-icon zType=\"lucideDownload\" zSize=\"16\" />\n </a>\n }\n </div>\n </div>\n\n <button\n z-button\n zType=\"default\"\n zSize=\"xl\"\n zShape=\"circle\"\n [zWave]=\"false\"\n type=\"button\"\n class=\"absolute top-20 right-4 z-[1] shadow-md max-[30rem]:top-16\"\n [attr.aria-label]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n [title]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n (click)=\"togglePlay()\">\n <z-icon\n [zType]=\"isPlaying() ? 'tablerPlayerPauseFill' : 'tablerPlayerPlayFill'\"\n zSize=\"24\"\n [class.translate-x-px]=\"!isPlaying()\" />\n </button>\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAO,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EA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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-audio-player.mjs","sources":["../../../../libs/core-ui/components/z-audio-player/z-audio-player.define.ts","../../../../libs/core-ui/components/z-audio-player/z-audio-player.component.ts","../../../../libs/core-ui/components/z-audio-player/z-audio-player.component.html","../../../../libs/core-ui/components/z-audio-player/shival99-z-ui-components-z-audio-player.ts"],"sourcesContent":["export const Z_AUDIO_PLAYER_WAVEFORM = [\n 28, 42, 34, 56, 38, 66, 45, 32, 52, 72, 46, 58, 36, 78, 48, 64, 40, 30, 54, 70, 44, 60, 35, 50, 76, 42, 58, 38, 68,\n 46, 34, 56, 74, 40, 62, 36, 52, 70, 44, 30, 48, 64, 38, 58, 76, 42, 54, 34, 66, 46, 72, 40, 56, 32, 68, 48, 60, 36,\n 74, 44, 52, 30, 64, 42, 78, 46, 58, 34, 70, 40, 54, 32, 66, 48, 62, 38, 72, 44, 56, 30, 68, 42, 60, 36, 76, 46, 54,\n 34, 64, 40, 70, 48, 58, 32, 66, 44, 74, 38, 52, 30, 62, 46, 68, 36, 56, 78, 42, 60, 34, 72, 48, 54, 38, 66, 44, 76,\n 40, 58, 32, 70, 46, 62, 36, 74, 48, 56, 30, 64, 42, 68, 38, 52, 72, 44, 60, 34, 76, 46, 54, 32, 66, 40, 58, 74, 36,\n 62, 48, 70, 42, 56, 30, 68, 44, 60, 38, 74, 46, 54, 32, 66, 40, 58, 72, 36, 62, 48, 70, 42, 56, 34, 76, 44, 60, 38,\n 68, 46, 52, 30, 64, 42, 74, 36, 58, 48, 70, 40, 54, 32, 66, 44, 60, 38, 76, 46, 56, 34, 68, 42, 72, 48, 58,\n] as const;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n type ElementRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { Z_AUDIO_PLAYER_WAVEFORM } from './z-audio-player.define';\n\n@Component({\n selector: 'z-audio-player',\n standalone: true,\n imports: [TranslatePipe, ZButtonComponent, ZIconComponent],\n templateUrl: './z-audio-player.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block w-full min-w-0',\n },\n})\nexport class ZAudioPlayerComponent {\n private readonly _destroyRef = inject(DestroyRef);\n private _animationFrameId: number | null = null;\n private _isSeeking = false;\n\n constructor() {\n this._destroyRef.onDestroy(() => this._stopPlaybackFrame());\n }\n\n public readonly zSrc = input.required<string>();\n public readonly zTitle = input('');\n public readonly zTags = input<readonly string[]>([]);\n public readonly zDownload = input(true);\n public readonly zLoaded = output<void>();\n public readonly zError = output<Error>();\n public readonly zPlay = output<boolean>();\n\n protected readonly audio = viewChild.required<ElementRef<HTMLAudioElement>>('audio');\n protected readonly isPlaying = signal(false);\n protected readonly currentTime = signal(0);\n protected readonly duration = signal(0);\n protected readonly waveform = Z_AUDIO_PLAYER_WAVEFORM;\n protected readonly title = this.zTitle;\n protected readonly tags = this.zTags;\n\n protected readonly progress = computed(() => {\n const duration = this.duration();\n return duration > 0 ? this.currentTime() / duration : 0;\n });\n\n protected readonly currentTimeLabel = computed(() => this._formatTime(this.currentTime()));\n protected readonly durationLabel = computed(() => this._formatTime(this.duration()));\n\n protected async togglePlay(): Promise<void> {\n const audio = this.audio().nativeElement;\n if (audio.paused) {\n await audio.play();\n return;\n }\n\n audio.pause();\n }\n\n protected onWaveformPointerDown(event: PointerEvent): void {\n if (event.button !== 0 || !(event.currentTarget instanceof HTMLElement)) {\n return;\n }\n\n this._isSeeking = true;\n event.currentTarget.setPointerCapture(event.pointerId);\n this._seekToPointerPosition(event);\n }\n\n protected onWaveformPointerMove(event: PointerEvent): void {\n if (!this._isSeeking) {\n return;\n }\n\n this._seekToPointerPosition(event);\n }\n\n protected onWaveformPointerUp(event: PointerEvent): void {\n if (!(event.currentTarget instanceof HTMLElement)) {\n return;\n }\n\n this._isSeeking = false;\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n }\n\n private _seekToPointerPosition(event: PointerEvent): void {\n if (!(event.currentTarget instanceof HTMLElement)) {\n return;\n }\n\n const duration = this.duration();\n const track = event.currentTarget.querySelector<HTMLElement>('.z-audio-player__waveform-track');\n const bounds = track?.getBoundingClientRect();\n if (!bounds) {\n return;\n }\n\n const width = bounds.width;\n if (duration <= 0 || width <= 0) {\n return;\n }\n\n const offset = Math.min(Math.max(event.clientX - bounds.left, 0), width);\n this._seekToTime((offset / width) * duration);\n }\n\n protected onWaveformKeydown(event: KeyboardEvent): void {\n const duration = this.duration();\n if (duration <= 0) {\n return;\n }\n\n const step = event.shiftKey ? 10 : 5;\n const currentTime = this.currentTime();\n const nextTime = {\n ArrowLeft: currentTime - step,\n ArrowRight: currentTime + step,\n Home: 0,\n End: duration,\n }[event.key];\n\n if (nextTime === undefined) {\n return;\n }\n\n event.preventDefault();\n this._seekToTime(nextTime);\n }\n\n protected onLoadedMetadata(): void {\n this.duration.set(Number.isFinite(this.audio().nativeElement.duration) ? this.audio().nativeElement.duration : 0);\n this.zLoaded.emit();\n }\n\n protected onLoadStart(): void {\n this._stopPlaybackFrame();\n this.currentTime.set(0);\n this.duration.set(0);\n this.isPlaying.set(false);\n }\n\n protected onTimeUpdate(): void {\n if (this._animationFrameId === null) {\n this.currentTime.set(this.audio().nativeElement.currentTime);\n }\n }\n\n protected onEnded(): void {\n this._stopPlaybackFrame();\n this.currentTime.set(this.audio().nativeElement.currentTime);\n this.isPlaying.set(false);\n this.zPlay.emit(false);\n }\n\n protected onError(): void {\n this.isPlaying.set(false);\n this.zError.emit(new Error('i18n_z_ui_gallery_preview_load_error'));\n }\n\n protected onPlayStateChange(isPlaying: boolean): void {\n this.isPlaying.set(isPlaying);\n this.zPlay.emit(isPlaying);\n\n if (isPlaying) {\n this._startPlaybackFrame();\n return;\n }\n\n this._stopPlaybackFrame();\n this.currentTime.set(this.audio().nativeElement.currentTime);\n }\n\n private _seekToTime(time: number): void {\n const audio = this.audio().nativeElement;\n const nextTime = Math.min(Math.max(time, 0), this.duration());\n audio.currentTime = nextTime;\n this.currentTime.set(audio.currentTime);\n }\n\n private _startPlaybackFrame(): void {\n if (this._animationFrameId !== null) {\n return;\n }\n\n const update = (): void => {\n const audio = this.audio().nativeElement;\n this.currentTime.set(audio.currentTime);\n\n if (!audio.paused && !audio.ended) {\n this._animationFrameId = window.requestAnimationFrame(update);\n return;\n }\n\n this._animationFrameId = null;\n };\n\n this._animationFrameId = window.requestAnimationFrame(update);\n }\n\n private _stopPlaybackFrame(): void {\n if (this._animationFrameId === null) {\n return;\n }\n\n window.cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n }\n\n private _formatTime(value: number): string {\n if (!Number.isFinite(value) || value < 0) {\n return '0:00';\n }\n\n const minutes = Math.floor(value / 60);\n const seconds = Math.floor(value % 60)\n .toString()\n .padStart(2, '0');\n return `${minutes}:${seconds}`;\n }\n}\n","<section\n class=\"border-border bg-card text-foreground relative overflow-hidden rounded-lg border shadow-sm\"\n [attr.aria-label]=\"title() || ('i18n_z_ui_gallery_preview' | translate)\">\n <audio\n #audio\n class=\"sr-only\"\n [src]=\"zSrc()\"\n preload=\"metadata\"\n (loadstart)=\"onLoadStart()\"\n (play)=\"onPlayStateChange(true)\"\n (pause)=\"onPlayStateChange(false)\"\n (loadedmetadata)=\"onLoadedMetadata()\"\n (timeupdate)=\"onTimeUpdate()\"\n (ended)=\"onEnded()\"\n (error)=\"onError()\"></audio>\n\n <div\n class=\"focus-visible:outline-ring relative h-[7.5rem] cursor-pointer touch-none overflow-hidden px-4 py-5 select-none [background:color-mix(in_oklab,var(--primary)_8%,var(--card))] focus-visible:outline-2 focus-visible:outline-offset-[-2px] max-[30rem]:h-24\"\n role=\"slider\"\n tabindex=\"0\"\n [attr.aria-label]=\"'i18n_z_ui_audio_player_seek' | translate\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"duration()\"\n [attr.aria-valuenow]=\"currentTime()\"\n (pointerdown)=\"onWaveformPointerDown($event)\"\n (pointermove)=\"onWaveformPointerMove($event)\"\n (pointerup)=\"onWaveformPointerUp($event)\"\n (pointercancel)=\"onWaveformPointerUp($event)\"\n (keydown)=\"onWaveformKeydown($event)\">\n <div\n class=\"z-audio-player__waveform-track absolute inset-[1.25rem_1rem] flex cursor-pointer items-center gap-[0.2rem] overflow-hidden\">\n @for (bar of waveform; track $index) {\n <span\n class=\"max-h-full min-h-[0.1rem] min-w-[0.1rem] flex-1 rounded-full\"\n [style.background]=\"\n ($index + 0.5) / waveform.length < progress()\n ? 'var(--primary)'\n : 'color-mix(in oklab, var(--muted-foreground) 42%, transparent)'\n \"\n [style.height.%]=\"bar\"></span>\n }\n <span\n class=\"bg-foreground pointer-events-none absolute top-0 bottom-0 z-[1] w-[3px] -translate-x-1/2 translate-z-0 [box-shadow:0_0_0_1px_color-mix(in_oklab,var(--foreground)_24%,transparent)]\"\n [style.left.%]=\"progress() * 100\">\n <span class=\"bg-foreground absolute top-[-0.2rem] left-1/2 size-[0.55rem] -translate-x-1/2 rounded-full\"></span>\n </span>\n </div>\n </div>\n\n <div\n class=\"flex min-w-0 items-end justify-between gap-4 p-4 max-[30rem]:flex-col max-[30rem]:items-start max-[30rem]:gap-3 max-[30rem]:pr-4\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-2\">\n <span class=\"min-w-0 overflow-hidden text-base font-semibold text-ellipsis whitespace-nowrap\">{{ title() }}</span>\n @if (tags().length) {\n <div class=\"flex flex-wrap gap-[0.35rem]\">\n @for (tag of tags(); track tag) {\n <span class=\"bg-muted text-muted-foreground rounded-md px-2 py-1 text-xs leading-none\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"flex flex-none items-center gap-2\">\n <span class=\"text-muted-foreground text-sm tabular-nums\">{{ currentTimeLabel() }} / {{ durationLabel() }}</span>\n @if (zDownload()) {\n <a\n z-button\n zType=\"default\"\n zSize=\"sm\"\n zShape=\"circle\"\n [zWave]=\"false\"\n [href]=\"zSrc()\"\n [download]=\"title() || null\"\n [attr.aria-label]=\"'i18n_z_ui_gallery_download' | translate\"\n [title]=\"'i18n_z_ui_gallery_download' | translate\"\n class=\"inline-flex items-center justify-center no-underline\">\n <z-icon zType=\"lucideDownload\" zSize=\"16\" />\n </a>\n }\n </div>\n </div>\n\n <button\n z-button\n zType=\"default\"\n zSize=\"xl\"\n zShape=\"circle\"\n [zWave]=\"false\"\n type=\"button\"\n class=\"absolute top-20 right-4 z-[1] shadow-md max-[30rem]:top-16\"\n [attr.aria-label]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n [title]=\"(isPlaying() ? 'i18n_z_ui_media_player_pause' : 'i18n_z_ui_media_player_play') | translate\"\n (click)=\"togglePlay()\">\n <z-icon\n [zType]=\"isPlaying() ? 'tablerPlayerPauseFill' : 'tablerPlayerPlayFill'\"\n zSize=\"24\"\n [class.translate-x-px]=\"!isPlaying()\" />\n </button>\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAO,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClH,EA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"}