cmat 0.0.87 → 0.0.88

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 (228) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -9
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +26 -34
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +467 -556
  8. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  9. package/fesm2022/cmat-components-cascade.mjs +270 -259
  10. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  11. package/fesm2022/cmat-components-chip-input.mjs +200 -116
  12. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  13. package/fesm2022/cmat-components-code-editor.mjs +85 -38
  14. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/cmat-components-color-picker.mjs +841 -0
  16. package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
  17. package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
  18. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  19. package/fesm2022/cmat-components-data-picker.mjs +996 -0
  20. package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
  21. package/fesm2022/cmat-components-date-range.mjs +310 -264
  22. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  23. package/fesm2022/cmat-components-date-time-display.mjs +16 -20
  24. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  25. package/fesm2022/cmat-components-drawer.mjs +120 -137
  26. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  27. package/fesm2022/cmat-components-empty-state.mjs +17 -24
  28. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  29. package/fesm2022/cmat-components-file-preview.mjs +18 -24
  30. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  31. package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
  32. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  33. package/fesm2022/cmat-components-form-actions.mjs +12 -12
  34. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  35. package/fesm2022/cmat-components-fullscreen.mjs +10 -10
  36. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  37. package/fesm2022/cmat-components-highlight.mjs +48 -41
  38. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  39. package/fesm2022/cmat-components-image-viewer.mjs +104 -107
  40. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  41. package/fesm2022/cmat-components-inline-loading.mjs +12 -15
  42. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  43. package/fesm2022/cmat-components-json-editor.mjs +118 -75
  44. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  45. package/fesm2022/cmat-components-knob-input.mjs +196 -178
  46. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  47. package/fesm2022/cmat-components-masonry.mjs +26 -41
  48. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  49. package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
  50. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  51. package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
  52. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  53. package/fesm2022/cmat-components-navigation.mjs +467 -450
  54. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  55. package/fesm2022/cmat-components-opt-input.mjs +143 -132
  56. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  57. package/fesm2022/cmat-components-org-chart.mjs +68 -83
  58. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  59. package/fesm2022/cmat-components-page-header.mjs +18 -24
  60. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  61. package/fesm2022/cmat-components-pagination.mjs +220 -136
  62. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  63. package/fesm2022/cmat-components-password-strength.mjs +262 -215
  64. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  65. package/fesm2022/cmat-components-popover.mjs +227 -195
  66. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  67. package/fesm2022/cmat-components-progress-bar.mjs +15 -34
  68. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  69. package/fesm2022/cmat-components-qrcode.mjs +95 -88
  70. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  71. package/fesm2022/cmat-components-rating.mjs +70 -67
  72. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  73. package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
  74. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  75. package/fesm2022/cmat-components-select-search.mjs +190 -159
  76. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  77. package/fesm2022/cmat-components-select-table.mjs +276 -213
  78. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  79. package/fesm2022/cmat-components-select-tree.mjs +178 -128
  80. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  81. package/fesm2022/cmat-components-skeleton.mjs +44 -28
  82. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  83. package/fesm2022/cmat-components-speed-dial.mjs +107 -163
  84. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  85. package/fesm2022/cmat-components-status-tag.mjs +29 -36
  86. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  87. package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
  88. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  89. package/fesm2022/cmat-components-timeline.mjs +111 -118
  90. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  91. package/fesm2022/cmat-components-toast.mjs +65 -66
  92. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  93. package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
  94. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  95. package/fesm2022/cmat-components-treetable.mjs +32 -39
  96. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  97. package/fesm2022/cmat-components-upload.mjs +186 -176
  98. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  99. package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
  100. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
  102. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  103. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  104. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  105. package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
  106. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  107. package/fesm2022/cmat-directives-debounce.mjs +16 -19
  108. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  109. package/fesm2022/cmat-directives-digit-only.mjs +60 -69
  110. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  111. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  112. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  113. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
  114. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  115. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  116. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  117. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  118. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  119. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  120. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  121. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  122. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  123. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  124. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  125. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  126. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  127. package/fesm2022/cmat-pipes-secure.mjs +7 -13
  128. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  129. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  130. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  131. package/fesm2022/cmat-services-alert.mjs +26 -27
  132. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  133. package/fesm2022/cmat-services-config.mjs +14 -23
  134. package/fesm2022/cmat-services-config.mjs.map +1 -1
  135. package/fesm2022/cmat-services-confirmation.mjs +8 -8
  136. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  137. package/fesm2022/cmat-services-data.mjs +6 -10
  138. package/fesm2022/cmat-services-data.mjs.map +1 -1
  139. package/fesm2022/cmat-services-export-as.mjs +3 -3
  140. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  141. package/fesm2022/cmat-services-loading.mjs +30 -47
  142. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  143. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  144. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  145. package/fesm2022/cmat-services-media-watcher.mjs +43 -34
  146. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  147. package/fesm2022/cmat-services-platform.mjs +3 -3
  148. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  149. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  150. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  151. package/fesm2022/cmat-services-title.mjs +3 -3
  152. package/fesm2022/cmat-services-title.mjs.map +1 -1
  153. package/fesm2022/cmat-services-translation.mjs +11 -11
  154. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  155. package/fesm2022/cmat-services-utils.mjs +3 -3
  156. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  157. package/fesm2022/cmat.mjs +9228 -7507
  158. package/fesm2022/cmat.mjs.map +1 -1
  159. package/icons/material-icons/heroicons-outline.svg +3 -0
  160. package/icons/material-icons/heroicons-solid.svg +3 -0
  161. package/package.json +10 -1
  162. package/styles/components/bundle.scss +21 -0
  163. package/styles/overrides/angular-material.scss +22 -1
  164. package/tailwind/plugins/theming.js +183 -183
  165. package/types/cmat-components-breadcrumb.d.ts +40 -37
  166. package/types/cmat-components-card.d.ts +11 -13
  167. package/types/cmat-components-carousel.d.ts +87 -113
  168. package/types/cmat-components-cascade.d.ts +84 -65
  169. package/types/cmat-components-chip-input.d.ts +29 -24
  170. package/types/cmat-components-code-editor.d.ts +28 -12
  171. package/types/cmat-components-color-picker.d.ts +236 -0
  172. package/types/cmat-components-custom-formly.d.ts +316 -184
  173. package/types/cmat-components-data-picker.d.ts +372 -0
  174. package/types/cmat-components-date-range.d.ts +31 -36
  175. package/types/cmat-components-date-time-display.d.ts +8 -8
  176. package/types/cmat-components-drawer.d.ts +30 -32
  177. package/types/cmat-components-empty-state.d.ts +9 -10
  178. package/types/cmat-components-file-preview.d.ts +9 -9
  179. package/types/cmat-components-filter-toolbar.d.ts +15 -15
  180. package/types/cmat-components-form-actions.d.ts +5 -5
  181. package/types/cmat-components-fullscreen.d.ts +5 -5
  182. package/types/cmat-components-highlight.d.ts +13 -14
  183. package/types/cmat-components-image-viewer.d.ts +29 -33
  184. package/types/cmat-components-inline-loading.d.ts +6 -6
  185. package/types/cmat-components-json-editor.d.ts +15 -17
  186. package/types/cmat-components-knob-input.d.ts +58 -55
  187. package/types/cmat-components-masonry.d.ts +9 -12
  188. package/types/cmat-components-material-color-picker.d.ts +16 -21
  189. package/types/cmat-components-material-datetimepicker.d.ts +174 -216
  190. package/types/cmat-components-navigation.d.ts +34 -39
  191. package/types/cmat-components-opt-input.d.ts +35 -33
  192. package/types/cmat-components-org-chart.d.ts +8 -9
  193. package/types/cmat-components-page-header.d.ts +9 -9
  194. package/types/cmat-components-pagination.d.ts +36 -40
  195. package/types/cmat-components-password-strength.d.ts +58 -64
  196. package/types/cmat-components-popover.d.ts +22 -32
  197. package/types/cmat-components-progress-bar.d.ts +7 -10
  198. package/types/cmat-components-qrcode.d.ts +22 -22
  199. package/types/cmat-components-rating.d.ts +17 -19
  200. package/types/cmat-components-rich-text-editor.d.ts +11 -12
  201. package/types/cmat-components-select-search.d.ts +48 -36
  202. package/types/cmat-components-select-table.d.ts +38 -34
  203. package/types/cmat-components-select-tree.d.ts +17 -15
  204. package/types/cmat-components-skeleton.d.ts +27 -10
  205. package/types/cmat-components-speed-dial.d.ts +24 -33
  206. package/types/cmat-components-status-tag.d.ts +19 -9
  207. package/types/cmat-components-table-toolbar.d.ts +7 -7
  208. package/types/cmat-components-timeline.d.ts +33 -34
  209. package/types/cmat-components-toast.d.ts +26 -30
  210. package/types/cmat-components-transfer-picker.d.ts +51 -56
  211. package/types/cmat-components-treetable.d.ts +12 -13
  212. package/types/cmat-components-upload.d.ts +33 -38
  213. package/types/cmat-components-x6-angular-shape.d.ts +1 -1
  214. package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
  215. package/types/cmat-directives-arrow-cursor.d.ts +18 -20
  216. package/types/cmat-directives-data-exporter.d.ts +10 -10
  217. package/types/cmat-directives-debounce.d.ts +5 -5
  218. package/types/cmat-directives-digit-only.d.ts +13 -13
  219. package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
  220. package/types/cmat-pipes-secure.d.ts +1 -3
  221. package/types/cmat-services-alert.d.ts +11 -12
  222. package/types/cmat-services-config.d.ts +2 -7
  223. package/types/cmat-services-confirmation.d.ts +2 -2
  224. package/types/cmat-services-data.d.ts +0 -1
  225. package/types/cmat-services-loading.d.ts +14 -22
  226. package/types/cmat-services-media-watcher.d.ts +5 -5
  227. package/types/cmat-services-translation.d.ts +4 -5
  228. package/types/cmat.d.ts +2167 -1746
@@ -1,153 +1,156 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, inject, DOCUMENT, DestroyRef, HostListener, Output, Input, Directive } from '@angular/core';
3
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
+ import { input, output, signal, inject, DOCUMENT, computed, HostListener, Directive } from '@angular/core';
4
3
  import { CmatMediaWatcherService } from 'cmat/services/media-watcher';
5
4
 
6
5
  class CmatArrowCursorDirective {
7
6
  constructor() {
8
- this.animationDuration = 0.3;
9
- this.orientation = 'horizontal';
10
- this.enabled = false;
11
- this.selector = '.carousel-arrow-cursor';
12
- this.clickEvent = new EventEmitter();
13
- this.cursorAnimationFrame = null;
14
- this.isPhone = false;
15
- this.arrowCursor = null;
16
- this.cursorClientX = 0;
17
- this.cursorClientY = 0;
18
- this.cursorIcon = null;
19
- this.cursorSide = null;
20
- this.oldCursorSide = null;
7
+ this.animationDuration = input(0.3, /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "animationDuration" }] : /* istanbul ignore next */ []));
9
+ this.orientation = input('horizontal', /* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
11
+ this.enabled = input(false, /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []));
13
+ this.selector = input('.carousel-arrow-cursor', /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "selector" }] : /* istanbul ignore next */ []));
15
+ this.clickEvent = output();
16
+ this._arrowCursor = null;
17
+ this._cursorAnimationFrame = signal(null, /* @ts-ignore */
18
+ ...(ngDevMode ? [{ debugName: "_cursorAnimationFrame" }] : /* istanbul ignore next */ []));
19
+ this._cursorClientX = signal(0, /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "_cursorClientX" }] : /* istanbul ignore next */ []));
21
+ this._cursorClientY = signal(0, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "_cursorClientY" }] : /* istanbul ignore next */ []));
23
+ this._cursorSide = signal(null, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "_cursorSide" }] : /* istanbul ignore next */ []));
25
+ this._oldCursorSide = signal(null, /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "_oldCursorSide" }] : /* istanbul ignore next */ []));
21
27
  this._document = inject(DOCUMENT);
22
28
  this._cmatMediaWatcherService = inject(CmatMediaWatcherService);
23
- this._destroyRef = inject(DestroyRef);
24
29
  this._isCursorActive = false;
25
30
  this._boundMoveCursor = this.moveCursor.bind(this);
31
+ // eslint-disable-next-line @typescript-eslint/member-ordering
32
+ this.isPhone = computed(() => {
33
+ return !this._cmatMediaWatcherService.mediaChange().matchingAliases.includes('lg');
34
+ }, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "isPhone" }] : /* istanbul ignore next */ []));
26
36
  }
27
37
  onMouseEnter(event) {
28
- if (!this.isPhone && this.enabled) {
29
- this.arrowCursor ??= this._document.querySelector(this.selector);
30
- if (this.cursorIcon == null) {
31
- this.cursorIcon = this.arrowCursor?.querySelector('.arrow-cursor-icon') ?? null;
32
- this.cursorSide = null;
33
- if (this.cursorIcon) {
34
- this.cursorIcon.style.transform = 'rotate3d(0,0,1,-135deg) scale3d(0.5,0.5,1)';
35
- this.cursorIcon.style.opacity = '0';
38
+ if (!this.isPhone() && this.enabled()) {
39
+ this._arrowCursor = this._document.querySelector(this.selector());
40
+ if (this._cursorIcon == null) {
41
+ this._cursorIcon = this._arrowCursor?.querySelector('.arrow-cursor-icon') ?? null;
42
+ this._cursorSide.set(null);
43
+ if (this._cursorIcon) {
44
+ this._cursorIcon.style.transform = 'rotate3d(0,0,1,-135deg) scale3d(0.5,0.5,1)';
45
+ this._cursorIcon.style.opacity = '0';
36
46
  }
37
47
  }
38
- this.cursorClientX = event.clientX;
39
- this.cursorClientY = event.clientY;
48
+ this._cursorClientX.set(event.clientX);
49
+ this._cursorClientY.set(event.clientY);
40
50
  let t;
41
- if (this.orientation === 'horizontal') {
42
- this.cursorSide = this.cursorClientX > window.innerWidth / 2 ? 'right' : 'left';
51
+ if (this.orientation() === 'horizontal') {
52
+ this._cursorSide.set(this._cursorClientX() > window.innerWidth / 2 ? 'right' : 'left');
43
53
  const target = event.target;
44
54
  if (target) {
45
- t = (this.cursorClientY < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))
55
+ t = (this._cursorClientY() < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))
46
56
  ? -135
47
- : (this.cursorSide === 'right' ? 135 : -315);
57
+ : (this._cursorSide() === 'right' ? 135 : -315);
48
58
  }
49
59
  else {
50
60
  t = -135;
51
61
  }
52
62
  }
53
63
  else {
54
- this.cursorSide = this.cursorClientY > window.innerHeight / 2 ? 'down' : 'up';
64
+ this._cursorSide.set(this._cursorClientY() > window.innerHeight / 2 ? 'down' : 'up');
55
65
  const target = event.target;
56
66
  if (target) {
57
- t = (this.cursorClientX < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))
67
+ t = (this._cursorClientX() < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))
58
68
  ? 135
59
- : (this.cursorSide === 'down' ? -135 : 45);
69
+ : (this._cursorSide() === 'down' ? -135 : 45);
60
70
  }
61
71
  else {
62
72
  t = 135;
63
73
  }
64
74
  }
65
- if (this.cursorIcon) {
66
- this.cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg)';
67
- this.cursorIcon.style.transition = this.animationDuration + 's';
68
- this._applyCursorRotation(this.cursorSide);
69
- this.cursorIcon.style.opacity = '1';
75
+ if (this._cursorIcon) {
76
+ this._cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg)';
77
+ this._cursorIcon.style.transition = this.animationDuration() + 's';
78
+ this._applyCursorRotation(this._cursorSide());
79
+ this._cursorIcon.style.opacity = '1';
70
80
  }
71
81
  this._startCursorLoop();
72
82
  }
73
83
  }
74
84
  onMouseLeave(event) {
75
- if (!this.isPhone && this.enabled) {
85
+ if (!this.isPhone() && this.enabled()) {
76
86
  let t;
77
87
  const target = event.target;
78
88
  if (!target) {
79
89
  return;
80
90
  }
81
- if (this.orientation === 'horizontal') {
82
- t = (this.cursorClientY < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))
83
- ? (('right' === this.cursorSide) ? -135 : -45)
84
- : (('right' === this.cursorSide) ? 135 : -315);
91
+ if (this.orientation() === 'horizontal') {
92
+ t = (this._cursorClientY() < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))
93
+ ? (('right' === this._cursorSide()) ? -135 : -45)
94
+ : (('right' === this._cursorSide()) ? 135 : -315);
85
95
  }
86
96
  else {
87
- t = (this.cursorClientX < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))
88
- ? (('down' === this.cursorSide) ? 225 : -225)
89
- : (('down' === this.cursorSide) ? -45 : 45);
97
+ t = (this._cursorClientX() < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))
98
+ ? (('down' === this._cursorSide()) ? 225 : -225)
99
+ : (('down' === this._cursorSide()) ? -45 : 45);
90
100
  }
91
- if (this.cursorIcon) {
92
- this.cursorIcon.style.transition = this.animationDuration + 's';
93
- this.cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg) scale3d(0.3,0.3,1)';
94
- this.cursorIcon.style.opacity = '0';
101
+ if (this._cursorIcon) {
102
+ this._cursorIcon.style.transition = this.animationDuration() + 's';
103
+ this._cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg) scale3d(0.3,0.3,1)';
104
+ this._cursorIcon.style.opacity = '0';
95
105
  }
96
106
  this._stopCursorLoop();
97
107
  }
98
108
  }
99
109
  onMouseOver(event) {
100
- if (!this.isPhone && this.cursorIcon && this.enabled) {
101
- this.cursorClientX = event.clientX;
102
- this.cursorClientY = event.clientY;
103
- if (this.orientation === 'horizontal') {
104
- this.cursorSide = this.cursorClientX > window.innerWidth / 2 ? 'right' : 'left';
110
+ if (!this.isPhone() && this._cursorIcon && this.enabled()) {
111
+ this._cursorClientX.set(event.clientX);
112
+ this._cursorClientY.set(event.clientY);
113
+ if (this.orientation() === 'horizontal') {
114
+ this._cursorSide.set(this._cursorClientX() > window.innerWidth / 2 ? 'right' : 'left');
105
115
  }
106
116
  else {
107
- this.cursorSide = this.cursorClientY > window.innerHeight / 2 ? 'down' : 'up';
117
+ this._cursorSide.set(this._cursorClientY() > window.innerHeight / 2 ? 'down' : 'up');
108
118
  }
109
- if (this.oldCursorSide !== this.cursorSide) {
110
- this.cursorIcon.style.transition = this.animationDuration + 's';
111
- this._applyCursorRotation(this.cursorSide);
112
- this.oldCursorSide = this.cursorSide;
119
+ if (this._oldCursorSide() !== this._cursorSide()) {
120
+ this._cursorIcon.style.transition = this.animationDuration() + 's';
121
+ this._applyCursorRotation(this._cursorSide());
122
+ this._oldCursorSide.set(this._cursorSide());
113
123
  }
114
124
  }
115
125
  }
116
126
  onClick(event) {
117
- if (!this.isPhone && this.cursorIcon && this.enabled) {
118
- this.clickEvent.emit(this.cursorSide);
127
+ if (!this.isPhone() && this._cursorIcon && this.enabled()) {
128
+ this.clickEvent.emit(this._cursorSide());
119
129
  event.stopPropagation();
120
130
  }
121
131
  }
122
- ngAfterViewInit() {
123
- this._cmatMediaWatcherService.onMediaChange$
124
- .pipe(takeUntilDestroyed(this._destroyRef))
125
- .subscribe(({ matchingAliases }) => {
126
- this.isPhone = !matchingAliases.includes('lg');
127
- });
128
- }
129
132
  ngOnDestroy() {
130
133
  this._stopCursorLoop();
131
134
  }
132
135
  moveCursor() {
133
- if (this._isCursorActive && this.arrowCursor) {
134
- this.arrowCursor.style.transform = 'translate3d(' + this.cursorClientX + 'px,' + this.cursorClientY + 'px,0px)';
135
- this.cursorAnimationFrame = requestAnimationFrame(this._boundMoveCursor);
136
+ if (this._isCursorActive && this._arrowCursor) {
137
+ this._arrowCursor.style.transform = 'translate3d(' + this._cursorClientX() + 'px,' + this._cursorClientY() + 'px,0px)';
138
+ this._cursorAnimationFrame.set(requestAnimationFrame(this._boundMoveCursor));
136
139
  }
137
140
  }
138
141
  _startCursorLoop() {
139
142
  this._isCursorActive = true;
140
- this.cursorAnimationFrame = requestAnimationFrame(this._boundMoveCursor);
143
+ this._cursorAnimationFrame.set(requestAnimationFrame(this._boundMoveCursor));
141
144
  }
142
145
  _stopCursorLoop() {
143
146
  this._isCursorActive = false;
144
- if (this.cursorAnimationFrame !== null) {
145
- window.cancelAnimationFrame(this.cursorAnimationFrame);
146
- this.cursorAnimationFrame = null;
147
+ if (this._cursorAnimationFrame() !== null) {
148
+ window.cancelAnimationFrame(this._cursorAnimationFrame() ?? 0);
149
+ this._cursorAnimationFrame.set(null);
147
150
  }
148
151
  }
149
152
  _applyCursorRotation(side) {
150
- if (!this.cursorIcon) {
153
+ if (!this._cursorIcon) {
151
154
  return;
152
155
  }
153
156
  const rotationMap = {
@@ -158,28 +161,18 @@ class CmatArrowCursorDirective {
158
161
  };
159
162
  const transform = side ? rotationMap[side] : null;
160
163
  if (transform) {
161
- this.cursorIcon.style.transform = transform;
164
+ this._cursorIcon.style.transform = transform;
162
165
  }
163
166
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatArrowCursorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
165
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: CmatArrowCursorDirective, isStandalone: true, selector: "[cmatArrowCursor]", inputs: { animationDuration: "animationDuration", orientation: "orientation", enabled: "enabled", selector: "selector" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "mousemove": "onMouseOver($event)", "click": "onClick($event)" } }, ngImport: i0 }); }
167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatArrowCursorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
168
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: CmatArrowCursorDirective, isStandalone: true, selector: "[cmatArrowCursor]", inputs: { animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, selector: { classPropertyName: "selector", publicName: "selector", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "mousemove": "onMouseOver($event)", "click": "onClick($event)" } }, ngImport: i0 }); }
166
169
  }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatArrowCursorDirective, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatArrowCursorDirective, decorators: [{
168
171
  type: Directive,
169
172
  args: [{
170
173
  selector: '[cmatArrowCursor]'
171
174
  }]
172
- }], propDecorators: { animationDuration: [{
173
- type: Input
174
- }], orientation: [{
175
- type: Input
176
- }], enabled: [{
177
- type: Input
178
- }], selector: [{
179
- type: Input
180
- }], clickEvent: [{
181
- type: Output
182
- }], onMouseEnter: [{
175
+ }], propDecorators: { animationDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDuration", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], enabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "enabled", required: false }] }], selector: [{ type: i0.Input, args: [{ isSignal: true, alias: "selector", required: false }] }], clickEvent: [{ type: i0.Output, args: ["clickEvent"] }], onMouseEnter: [{
183
176
  type: HostListener,
184
177
  args: ['mouseenter', ['$event']]
185
178
  }], onMouseLeave: [{
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-directives-arrow-cursor.mjs","sources":["../../../projects/cmat/directives/arrow-cursor/arrow-cursor.directive.ts","../../../projects/cmat/directives/arrow-cursor/cmat-directives-arrow-cursor.ts"],"sourcesContent":["import { Directive, AfterViewInit, DestroyRef, EventEmitter, HostListener, Input, OnDestroy, Output, DOCUMENT, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CmatMediaWatcherService } from 'cmat/services/media-watcher';\r\n\r\n@Directive({\r\n selector: '[cmatArrowCursor]'\r\n})\r\nexport class CmatArrowCursorDirective implements AfterViewInit, OnDestroy {\r\n @Input() animationDuration: number = 0.3;\r\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() enabled: boolean = false;\r\n @Input() selector: string = '.carousel-arrow-cursor';\r\n @Output() clickEvent: EventEmitter<string | null> = new EventEmitter<string | null>();\r\n\r\n cursorAnimationFrame: number | null = null;\r\n isPhone = false;\r\n arrowCursor: HTMLDivElement | null = null;\r\n cursorClientX = 0;\r\n cursorClientY = 0;\r\n cursorIcon: SVGElement | null = null;\r\n cursorSide: string | null = null;\r\n oldCursorSide: string | null = null;\r\n\r\n private _document = inject<Document>(DOCUMENT);\r\n private _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private _isCursorActive = false;\r\n private readonly _boundMoveCursor = this.moveCursor.bind(this);\r\n\r\n @HostListener('mouseenter', ['$event'])\r\n public onMouseEnter(event: MouseEvent): void {\r\n if (!this.isPhone && this.enabled) {\r\n this.arrowCursor ??= this._document.querySelector(this.selector);\r\n if (this.cursorIcon == null) {\r\n this.cursorIcon = this.arrowCursor?.querySelector('.arrow-cursor-icon') ?? null;\r\n this.cursorSide = null;\r\n\r\n if (this.cursorIcon) {\r\n this.cursorIcon.style.transform = 'rotate3d(0,0,1,-135deg) scale3d(0.5,0.5,1)';\r\n this.cursorIcon.style.opacity = '0';\r\n }\r\n }\r\n\r\n this.cursorClientX = event.clientX;\r\n this.cursorClientY = event.clientY;\r\n\r\n let t;\r\n\r\n if (this.orientation === 'horizontal') {\r\n this.cursorSide = this.cursorClientX > window.innerWidth / 2 ? 'right' : 'left';\r\n\r\n const target = event.target as HTMLElement | null;\r\n if (target) {\r\n t = (this.cursorClientY < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))\r\n ? -135\r\n : (this.cursorSide === 'right' ? 135 : -315);\r\n } else {\r\n t = -135;\r\n }\r\n } else {\r\n this.cursorSide = this.cursorClientY > window.innerHeight / 2 ? 'down' : 'up';\r\n\r\n const target = event.target as HTMLElement | null;\r\n if (target) {\r\n t = (this.cursorClientX < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))\r\n ? 135\r\n : (this.cursorSide === 'down' ? -135 : 45);\r\n } else {\r\n t = 135;\r\n }\r\n }\r\n\r\n if (this.cursorIcon) {\r\n this.cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg)';\r\n this.cursorIcon.style.transition = this.animationDuration + 's';\r\n this._applyCursorRotation(this.cursorSide);\r\n this.cursorIcon.style.opacity = '1';\r\n }\r\n\r\n this._startCursorLoop();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave', ['$event'])\r\n public onMouseLeave(event: MouseEvent): void {\r\n if (!this.isPhone && this.enabled) {\r\n let t;\r\n\r\n const target = event.target as HTMLElement | null;\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (this.orientation === 'horizontal') {\r\n t = (this.cursorClientY < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))\r\n ? (('right' === this.cursorSide) ? -135 : -45)\r\n : (('right' === this.cursorSide) ? 135 : -315);\r\n } else {\r\n t = (this.cursorClientX < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))\r\n ? (('down' === this.cursorSide) ? 225 : -225)\r\n : (('down' === this.cursorSide) ? -45 : 45);\r\n }\r\n\r\n if (this.cursorIcon) {\r\n this.cursorIcon.style.transition = this.animationDuration + 's';\r\n this.cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg) scale3d(0.3,0.3,1)';\r\n this.cursorIcon.style.opacity = '0';\r\n }\r\n\r\n this._stopCursorLoop();\r\n }\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n public onMouseOver(event: MouseEvent): void {\r\n if (!this.isPhone && this.cursorIcon && this.enabled) {\r\n this.cursorClientX = event.clientX;\r\n this.cursorClientY = event.clientY;\r\n\r\n if (this.orientation === 'horizontal') {\r\n this.cursorSide = this.cursorClientX > window.innerWidth / 2 ? 'right' : 'left';\r\n } else {\r\n this.cursorSide = this.cursorClientY > window.innerHeight / 2 ? 'down' : 'up';\r\n }\r\n\r\n if (this.oldCursorSide !== this.cursorSide) {\r\n this.cursorIcon.style.transition = this.animationDuration + 's';\r\n this._applyCursorRotation(this.cursorSide);\r\n this.oldCursorSide = this.cursorSide;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: Event): void {\r\n if (!this.isPhone && this.cursorIcon && this.enabled) {\r\n this.clickEvent.emit(this.cursorSide);\r\n\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._cmatMediaWatcherService.onMediaChange$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(({ matchingAliases }) => {\r\n this.isPhone = !matchingAliases.includes('lg');\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._stopCursorLoop();\r\n }\r\n\r\n moveCursor(): void {\r\n if (this._isCursorActive && this.arrowCursor) {\r\n this.arrowCursor.style.transform = 'translate3d(' + this.cursorClientX + 'px,' + this.cursorClientY + 'px,0px)';\r\n this.cursorAnimationFrame = requestAnimationFrame(this._boundMoveCursor);\r\n }\r\n }\r\n\r\n private _startCursorLoop(): void {\r\n this._isCursorActive = true;\r\n this.cursorAnimationFrame = requestAnimationFrame(this._boundMoveCursor);\r\n }\r\n\r\n private _stopCursorLoop(): void {\r\n this._isCursorActive = false;\r\n if (this.cursorAnimationFrame !== null) {\r\n window.cancelAnimationFrame(this.cursorAnimationFrame);\r\n this.cursorAnimationFrame = null;\r\n }\r\n }\r\n\r\n private _applyCursorRotation(side: string | null): void {\r\n if (!this.cursorIcon) {\r\n return;\r\n }\r\n const rotationMap: Record<string, string> = {\r\n 'left': 'rotate3d(0,0,1,-180deg)',\r\n 'up': 'rotate3d(0,0,1,-90deg)',\r\n 'right': 'rotate3d(0,0,1,0deg)',\r\n 'down': 'rotate3d(0,0,1,90deg)'\r\n };\r\n const transform = side ? rotationMap[side] : null;\r\n if (transform) {\r\n this.cursorIcon.style.transform = transform;\r\n }\r\n }\r\n\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-directives-arrow-cursor.mjs","sources":["../../../projects/cmat/directives/arrow-cursor/arrow-cursor.directive.ts","../../../projects/cmat/directives/arrow-cursor/cmat-directives-arrow-cursor.ts"],"sourcesContent":["import {\r\n Directive,\r\n HostListener,\r\n DOCUMENT,\r\n inject,\r\n input,\r\n output,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n} from '@angular/core';\r\nimport { CmatMediaWatcherService } from 'cmat/services/media-watcher';\r\n\r\n@Directive({\r\n selector: '[cmatArrowCursor]'\r\n})\r\nexport class CmatArrowCursorDirective implements OnDestroy {\r\n readonly animationDuration = input<number>(0.3);\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n readonly enabled = input<boolean>(false);\r\n readonly selector = input<string>('.carousel-arrow-cursor');\r\n\r\n readonly clickEvent = output<string | null>();\r\n\r\n private _arrowCursor: HTMLDivElement | null = null;\r\n private _cursorIcon: SVGElement | null;\r\n\r\n private readonly _cursorAnimationFrame = signal<number | null>(null);\r\n private readonly _cursorClientX = signal(0);\r\n private readonly _cursorClientY = signal(0);\r\n private readonly _cursorSide = signal<string | null>(null);\r\n private readonly _oldCursorSide = signal<string | null>(null);\r\n\r\n private _document = inject<Document>(DOCUMENT);\r\n private _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private _isCursorActive = false;\r\n private readonly _boundMoveCursor = this.moveCursor.bind(this);\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n readonly isPhone = computed(() => {\r\n return !this._cmatMediaWatcherService.mediaChange().matchingAliases.includes('lg')\r\n });\r\n\r\n @HostListener('mouseenter', ['$event'])\r\n public onMouseEnter(event: MouseEvent): void {\r\n if (!this.isPhone() && this.enabled()) {\r\n this._arrowCursor = this._document.querySelector(this.selector());\r\n if (this._cursorIcon == null) {\r\n this._cursorIcon = this._arrowCursor?.querySelector('.arrow-cursor-icon') ?? null;\r\n this._cursorSide.set(null);\r\n\r\n if (this._cursorIcon) {\r\n this._cursorIcon.style.transform = 'rotate3d(0,0,1,-135deg) scale3d(0.5,0.5,1)';\r\n this._cursorIcon.style.opacity = '0';\r\n }\r\n }\r\n\r\n this._cursorClientX.set(event.clientX);\r\n this._cursorClientY.set(event.clientY);\r\n\r\n let t;\r\n\r\n if (this.orientation() === 'horizontal') {\r\n this._cursorSide.set(this._cursorClientX() > window.innerWidth / 2 ? 'right' : 'left');\r\n\r\n const target = event.target as HTMLElement | null;\r\n if (target) {\r\n t = (this._cursorClientY() < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))\r\n ? -135\r\n : (this._cursorSide() === 'right' ? 135 : -315);\r\n } else {\r\n t = -135;\r\n }\r\n } else {\r\n this._cursorSide.set(this._cursorClientY() > window.innerHeight / 2 ? 'down' : 'up');\r\n\r\n const target = event.target as HTMLElement | null;\r\n if (target) {\r\n t = (this._cursorClientX() < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))\r\n ? 135\r\n : (this._cursorSide() === 'down' ? -135 : 45);\r\n } else {\r\n t = 135;\r\n }\r\n }\r\n\r\n if (this._cursorIcon) {\r\n this._cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg)';\r\n this._cursorIcon.style.transition = this.animationDuration() + 's';\r\n this._applyCursorRotation(this._cursorSide());\r\n this._cursorIcon.style.opacity = '1';\r\n }\r\n\r\n this._startCursorLoop();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave', ['$event'])\r\n public onMouseLeave(event: MouseEvent): void {\r\n if (!this.isPhone() && this.enabled()) {\r\n let t;\r\n\r\n const target = event.target as HTMLElement | null;\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (this.orientation() === 'horizontal') {\r\n t = (this._cursorClientY() < (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2))\r\n ? (('right' === this._cursorSide()) ? -135 : -45)\r\n : (('right' === this._cursorSide()) ? 135 : -315);\r\n } else {\r\n t = (this._cursorClientX() < (target.getBoundingClientRect().left + target.getBoundingClientRect().width / 2))\r\n ? (('down' === this._cursorSide()) ? 225 : -225)\r\n : (('down' === this._cursorSide()) ? -45 : 45);\r\n }\r\n\r\n if (this._cursorIcon) {\r\n this._cursorIcon.style.transition = this.animationDuration() + 's';\r\n this._cursorIcon.style.transform = 'rotate3d(0,0,1,' + t + 'deg) scale3d(0.3,0.3,1)';\r\n this._cursorIcon.style.opacity = '0';\r\n }\r\n\r\n this._stopCursorLoop();\r\n }\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n public onMouseOver(event: MouseEvent): void {\r\n if (!this.isPhone() && this._cursorIcon && this.enabled()) {\r\n this._cursorClientX.set(event.clientX);\r\n this._cursorClientY.set(event.clientY);\r\n\r\n if (this.orientation() === 'horizontal') {\r\n this._cursorSide.set(this._cursorClientX() > window.innerWidth / 2 ? 'right' : 'left');\r\n } else {\r\n this._cursorSide.set(this._cursorClientY() > window.innerHeight / 2 ? 'down' : 'up');\r\n }\r\n\r\n if (this._oldCursorSide() !== this._cursorSide()) {\r\n this._cursorIcon.style.transition = this.animationDuration() + 's';\r\n this._applyCursorRotation(this._cursorSide());\r\n this._oldCursorSide.set(this._cursorSide());\r\n }\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: Event): void {\r\n if (!this.isPhone() && this._cursorIcon && this.enabled()) {\r\n this.clickEvent.emit(this._cursorSide());\r\n\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._stopCursorLoop();\r\n }\r\n\r\n moveCursor(): void {\r\n if (this._isCursorActive && this._arrowCursor) {\r\n this._arrowCursor.style.transform = 'translate3d(' + this._cursorClientX() + 'px,' + this._cursorClientY() + 'px,0px)';\r\n this._cursorAnimationFrame.set(requestAnimationFrame(this._boundMoveCursor));\r\n }\r\n }\r\n\r\n private _startCursorLoop(): void {\r\n this._isCursorActive = true;\r\n this._cursorAnimationFrame.set(requestAnimationFrame(this._boundMoveCursor));\r\n }\r\n\r\n private _stopCursorLoop(): void {\r\n this._isCursorActive = false;\r\n if (this._cursorAnimationFrame() !== null) {\r\n window.cancelAnimationFrame(this._cursorAnimationFrame() ?? 0);\r\n this._cursorAnimationFrame.set(null);\r\n }\r\n }\r\n\r\n private _applyCursorRotation(side: string | null): void {\r\n if (!this._cursorIcon) {\r\n return;\r\n }\r\n const rotationMap: Record<string, string> = {\r\n 'left': 'rotate3d(0,0,1,-180deg)',\r\n 'up': 'rotate3d(0,0,1,-90deg)',\r\n 'right': 'rotate3d(0,0,1,0deg)',\r\n 'down': 'rotate3d(0,0,1,90deg)'\r\n };\r\n const transform = side ? rotationMap[side] : null;\r\n if (transform) {\r\n this._cursorIcon.style.transform = transform;\r\n }\r\n }\r\n\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -8,10 +8,10 @@ class CmatAutofocusDirective {
8
8
  this.element.nativeElement.focus();
9
9
  }, 0);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatAutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: CmatAutofocusDirective, isStandalone: true, selector: "[cmatAutofocus]", ngImport: i0 }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatAutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: CmatAutofocusDirective, isStandalone: true, selector: "[cmatAutofocus]", ngImport: i0 }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatAutofocusDirective, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatAutofocusDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{
17
17
  selector: '[cmatAutofocus]'
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-directives-autofocus.mjs","sources":["../../../projects/cmat/directives/autofocus/autofocus.directive.ts","../../../projects/cmat/directives/autofocus/cmat-directives-autofocus.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cmatAutofocus]'\r\n})\r\nexport class CmatAutofocusDirective {\r\n element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n constructor() {\r\n setTimeout(() => {\r\n this.element.nativeElement.focus();\r\n }, 0);\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAKa,sBAAsB,CAAA;AAGjC,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC;QAGnD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC,CAAC,EAAE,CAAC,CAAC;IAEP;+GARW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACJD;;AAEG;;;;"}
1
+ {"version":3,"file":"cmat-directives-autofocus.mjs","sources":["../../../projects/cmat/directives/autofocus/autofocus.directive.ts","../../../projects/cmat/directives/autofocus/cmat-directives-autofocus.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cmatAutofocus]'\r\n})\r\nexport class CmatAutofocusDirective {\r\n element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n constructor() {\r\n setTimeout(() => {\r\n this.element.nativeElement.focus();\r\n }, 0);\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAKa,sBAAsB,CAAA;AAGjC,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC;QAGnD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC,CAAC,EAAE,CAAC,CAAC;IAEP;8GARW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACJD;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, Injector, Input, Directive } from '@angular/core';
2
+ import { Injectable, inject, Injector, input, Directive } from '@angular/core';
3
3
  import dayjs from 'dayjs';
4
4
  import * as FileSaver from 'file-saver-es';
5
5
 
@@ -107,10 +107,10 @@ class CsvExporterService extends WorksheetExporter {
107
107
  getMimeType() {
108
108
  return MIME_CSV;
109
109
  }
110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CsvExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
111
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CsvExporterService, providedIn: 'root' }); }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CsvExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
111
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CsvExporterService, providedIn: 'root' }); }
112
112
  }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CsvExporterService, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CsvExporterService, decorators: [{
114
114
  type: Injectable,
115
115
  args: [{
116
116
  providedIn: 'root'
@@ -131,10 +131,10 @@ class JsonExporterService extends FileExporter {
131
131
  getMimeType() {
132
132
  return MIME_JSON;
133
133
  }
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
135
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonExporterService, providedIn: 'root' }); }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: JsonExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
135
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: JsonExporterService, providedIn: 'root' }); }
136
136
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonExporterService, decorators: [{
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: JsonExporterService, decorators: [{
138
138
  type: Injectable,
139
139
  args: [{
140
140
  providedIn: 'root'
@@ -165,10 +165,10 @@ class TxtExporterService extends FileExporter {
165
165
  return TAB;
166
166
  }
167
167
  }
168
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TxtExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
169
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TxtExporterService, providedIn: 'root' }); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: TxtExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
169
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: TxtExporterService, providedIn: 'root' }); }
170
170
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TxtExporterService, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: TxtExporterService, decorators: [{
172
172
  type: Injectable,
173
173
  args: [{
174
174
  providedIn: 'root'
@@ -212,10 +212,10 @@ class XlsExporterService extends WorksheetExporter {
212
212
  _convertToWch(columnWidths) {
213
213
  return columnWidths.map(width => ({ wch: width }));
214
214
  }
215
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: XlsExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
216
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: XlsExporterService, providedIn: 'root' }); }
215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: XlsExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
216
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: XlsExporterService, providedIn: 'root' }); }
217
217
  }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: XlsExporterService, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: XlsExporterService, decorators: [{
219
219
  type: Injectable,
220
220
  args: [{
221
221
  providedIn: 'root'
@@ -229,10 +229,10 @@ class XlsxExporterService extends XlsExporterService {
229
229
  getMimeType() {
230
230
  return MIME_EXCEL_XLSX;
231
231
  }
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: XlsxExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
233
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: XlsxExporterService, providedIn: 'root' }); }
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: XlsxExporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
233
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: XlsxExporterService, providedIn: 'root' }); }
234
234
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: XlsxExporterService, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: XlsxExporterService, decorators: [{
236
236
  type: Injectable,
237
237
  args: [{
238
238
  providedIn: 'root'
@@ -264,10 +264,10 @@ class ServiceLocatorService {
264
264
  return this._injector.get(XlsxExporterService);
265
265
  }
266
266
  }
267
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ServiceLocatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
268
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ServiceLocatorService, providedIn: 'root' }); }
267
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ServiceLocatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
268
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ServiceLocatorService, providedIn: 'root' }); }
269
269
  }
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ServiceLocatorService, decorators: [{
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ServiceLocatorService, decorators: [{
271
271
  type: Injectable,
272
272
  args: [{
273
273
  providedIn: 'root'
@@ -276,67 +276,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
276
276
 
277
277
  class CmatDataExporterDirective {
278
278
  constructor() {
279
- this.transformBoolean = true;
280
- this.transformDate = true;
281
- this.dateFormat = 'YYYY-MM-DD';
279
+ this.dataSource = input([], /* @ts-ignore */
280
+ ...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
281
+ this.exportColumns = input([], /* @ts-ignore */
282
+ ...(ngDevMode ? [{ debugName: "exportColumns" }] : /* istanbul ignore next */ []));
283
+ this.options = input(/* @ts-ignore */
284
+ ...(ngDevMode ? [undefined, { debugName: "options" }] : /* istanbul ignore next */ []));
285
+ this.exportType = input('xlsx', /* @ts-ignore */
286
+ ...(ngDevMode ? [{ debugName: "exportType" }] : /* istanbul ignore next */ []));
287
+ this.transformBoolean = input(true, /* @ts-ignore */
288
+ ...(ngDevMode ? [{ debugName: "transformBoolean" }] : /* istanbul ignore next */ []));
289
+ this.transformDate = input(true, /* @ts-ignore */
290
+ ...(ngDevMode ? [{ debugName: "transformDate" }] : /* istanbul ignore next */ []));
291
+ this.dateFormat = input('YYYY-MM-DD', /* @ts-ignore */
292
+ ...(ngDevMode ? [{ debugName: "dateFormat" }] : /* istanbul ignore next */ []));
282
293
  this._serviceLocator = inject(ServiceLocatorService);
283
294
  }
284
295
  ngOnChanges(changes) {
285
296
  if (changes.dataSource) {
286
- if (this.dataSource?.length > 0) {
297
+ if (this.dataSource()?.length > 0) {
287
298
  this._data = [];
288
- this._loadExporter(this.exportType);
299
+ this._loadExporter(this.exportType());
289
300
  this._data = [
290
- this.exportColumns.map(column => ({ [column.code]: column.label }))
301
+ this.exportColumns()
302
+ .map(column => ({ [column.code]: column.label }))
291
303
  .reduce((acc, curr) => ({ ...acc, ...curr }), {}),
292
- ...this.dataSource.map(user => this.exportColumns.reduce((acc, column) => {
304
+ ...this.dataSource().map(user => this.exportColumns().reduce((acc, column) => {
293
305
  let value = user[column.code];
294
- if (this.transformBoolean && typeof value === 'boolean') {
306
+ if (this.transformBoolean() && typeof value === 'boolean') {
295
307
  value = value ? '是' : '否';
296
308
  }
297
- else if (this.transformDate && (value instanceof Date || typeof value === 'string')) {
309
+ else if (this.transformDate() &&
310
+ (value instanceof Date || typeof value === 'string')) {
298
311
  const datePattern = /^\d{4}[-/]\d{1,2}[-/]\d{1,2}/;
299
312
  if (typeof value === 'string' && !datePattern.test(value)) {
300
313
  return { ...acc, [column.code]: value };
301
314
  }
302
315
  const dateValue = dayjs(value);
303
316
  if (dateValue.isValid()) {
304
- value = dateValue.format(this.dateFormat);
317
+ value = dateValue.format(this.dateFormat());
305
318
  }
306
319
  }
307
320
  return { ...acc, [column.code]: value };
308
- }, {}))
321
+ }, {})),
309
322
  ];
310
- this._exporterService.export(this._data, this.options);
323
+ this._exporterService.export(this._data, this.options());
311
324
  }
312
325
  }
313
326
  }
314
327
  _loadExporter(exportType) {
315
328
  this._exporterService = this._serviceLocator.getService(exportType);
316
329
  }
317
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatDataExporterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
318
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: CmatDataExporterDirective, isStandalone: true, selector: "button[cmatDataExporter]", inputs: { dataSource: "dataSource", exportColumns: "exportColumns", options: "options", exportType: "exportType", transformBoolean: "transformBoolean", transformDate: "transformDate", dateFormat: "dateFormat" }, usesOnChanges: true, ngImport: i0 }); }
330
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatDataExporterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
331
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: CmatDataExporterDirective, isStandalone: true, selector: "button[cmatDataExporter]", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, exportColumns: { classPropertyName: "exportColumns", publicName: "exportColumns", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, exportType: { classPropertyName: "exportType", publicName: "exportType", isSignal: true, isRequired: false, transformFunction: null }, transformBoolean: { classPropertyName: "transformBoolean", publicName: "transformBoolean", isSignal: true, isRequired: false, transformFunction: null }, transformDate: { classPropertyName: "transformDate", publicName: "transformDate", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }
319
332
  }
320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CmatDataExporterDirective, decorators: [{
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatDataExporterDirective, decorators: [{
321
334
  type: Directive,
322
335
  args: [{
323
- selector: 'button[cmatDataExporter]'
336
+ selector: 'button[cmatDataExporter]',
324
337
  }]
325
- }], propDecorators: { dataSource: [{
326
- type: Input
327
- }], exportColumns: [{
328
- type: Input
329
- }], options: [{
330
- type: Input
331
- }], exportType: [{
332
- type: Input
333
- }], transformBoolean: [{
334
- type: Input
335
- }], transformDate: [{
336
- type: Input
337
- }], dateFormat: [{
338
- type: Input
339
- }] } });
338
+ }], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: false }] }], exportColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "exportColumns", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], exportType: [{ type: i0.Input, args: [{ isSignal: true, alias: "exportType", required: false }] }], transformBoolean: [{ type: i0.Input, args: [{ isSignal: true, alias: "transformBoolean", required: false }] }], transformDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "transformDate", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }] } });
340
339
 
341
340
  /**
342
341
  * Generated bundle index. Do not edit.