@heartlandone/vega 2.74.0-RTE-table-preview → 2.75.0-RTE-table-preview

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 (595) hide show
  1. package/dist/cjs/{app-globals-be2e868e.js → app-globals-6c9a0e62.js} +11 -10
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-536d29fc.js → child-nodes-event-prevent-slimmer-aca87dac.js} +1 -1
  3. package/dist/cjs/click-outside-only-to-dismiss-strategy-407f6d1e.js +32 -0
  4. package/dist/cjs/{code-block-22ee2550.js → code-block-d9001f03.js} +2 -2
  5. package/dist/cjs/{component-value-history-controller-slimmer.abstract-3486cbc0.js → component-value-history-controller-slimmer.abstract-b00e9f58.js} +4 -4
  6. package/dist/cjs/{content-state-0be6fda3.js → content-state-466f277f.js} +3 -3
  7. package/dist/cjs/{date-required-rule-99cca681.js → date-required-rule-30ee62d0.js} +1 -1
  8. package/dist/cjs/{design-token-505997df.js → design-token-a569577e.js} +2 -2
  9. package/dist/cjs/{dom-node-subject-observer-factory-1c8f7880.js → dom-node-subject-observer-factory-b5e71bf6.js} +4 -0
  10. package/dist/cjs/{element-appender-slimmer-26420c09.js → element-appender-slimmer-b7fdd82e.js} +160 -36
  11. package/dist/cjs/{event-emit-slimmer-6a591353.js → event-emit-slimmer-2dacabbd.js} +2 -2
  12. package/dist/cjs/{form-field-controller-slimmer-56c551ea.js → form-field-controller-slimmer-3ea2464a.js} +2 -2
  13. package/dist/cjs/{image-annotation-action-462fd073.js → image-annotation-action-4435d531.js} +3 -31
  14. package/dist/cjs/{index-fc538f17.js → index-19e5b936.js} +1 -1
  15. package/dist/cjs/index.cjs.js +22 -22
  16. package/dist/cjs/{inject-keyboard-manager-a6101379.js → inject-keyboard-manager-d21b4387.js} +1 -1
  17. package/dist/cjs/{internal-vega-event-manager-d587a33c.js → internal-vega-event-manager-6befeb34.js} +13 -2
  18. package/dist/cjs/{keyboard-manager-d8adb0ed.js → keyboard-manager-3dea6b28.js} +1 -1
  19. package/dist/cjs/{keyboard-manager-slimmer-15e65357.js → keyboard-manager-slimmer-0d45f944.js} +1 -1
  20. package/dist/cjs/{language-extension-414149c2.js → language-extension-26331915.js} +2 -2
  21. package/dist/cjs/loader.cjs.js +15 -15
  22. package/dist/cjs/{month-view-generator-706c5477.js → month-view-generator-49cc5fc2.js} +1 -1
  23. package/dist/cjs/{public-rules-2d18cf41.js → public-rules-942bd931.js} +7 -7
  24. package/dist/cjs/{range-439a0c0c.js → range-cafe69a9.js} +1 -1
  25. package/dist/cjs/{responsive-format-facade-0ececeb3.js → responsive-format-facade-6c22bbbd.js} +5 -4
  26. package/dist/cjs/{rich-text-editor-required-rule-5a4f3626.js → rich-text-editor-required-rule-0dcb08c8.js} +1 -1
  27. package/dist/cjs/sanitize-fb222510.js +131 -0
  28. package/dist/cjs/{styles.constants-3aff0b56.js → split-cell-operation-9930fde8.js} +1230 -403
  29. package/dist/cjs/{string-format-strategy.abstract-a8264fca.js → string-format-strategy.abstract-63514c60.js} +1 -1
  30. package/dist/cjs/{string-input-formatter-slimmer-a8f4a9b1.js → string-input-formatter-slimmer-655d0322.js} +3 -3
  31. package/dist/cjs/{string-mask-strategy-4e7d3780.js → string-mask-strategy-d23ac21a.js} +2 -2
  32. package/dist/cjs/{style-formatter-142500c0.js → style-formatter-0e0ae896.js} +2 -2
  33. package/dist/cjs/{sub-state-notify-slimmer-011866d9.js → sub-state-notify-slimmer-3fa87162.js} +1 -1
  34. package/dist/cjs/{sub-state-observer-slimmer-23d43f1e.js → sub-state-observer-slimmer-77deba40.js} +1 -1
  35. package/dist/cjs/{table-extension-2a20da57.js → table-extension-5f27207f.js} +676 -373
  36. package/dist/cjs/{time-required-rule-9d39a620.js → time-required-rule-c96ecdc9.js} +1 -1
  37. package/dist/cjs/{type-guard-69d2cf01.js → type-guard-a0f026d8.js} +12 -0
  38. package/dist/cjs/{valid-credit-card-number-rule-9f40d1d9.js → valid-credit-card-number-rule-c854bed9.js} +1 -1
  39. package/dist/cjs/vega-accordion.cjs.entry.js +12 -12
  40. package/dist/cjs/vega-app-header-button.cjs.entry.js +13 -13
  41. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  42. package/dist/cjs/vega-box.cjs.entry.js +12 -12
  43. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  44. package/dist/cjs/vega-button-circle.cjs.entry.js +12 -12
  45. package/dist/cjs/vega-button-group_2.cjs.entry.js +6 -6
  46. package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
  47. package/dist/cjs/vega-button.cjs.entry.js +11 -11
  48. package/dist/cjs/vega-calendar_4.cjs.entry.js +8 -8
  49. package/dist/cjs/vega-card.cjs.entry.js +12 -12
  50. package/dist/cjs/vega-carousel.cjs.entry.js +11 -11
  51. package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
  52. package/dist/cjs/vega-chip.cjs.entry.js +13 -13
  53. package/dist/cjs/vega-code-block.cjs.entry.js +10 -10
  54. package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
  55. package/dist/cjs/vega-combo-box.cjs.entry.js +11 -10
  56. package/dist/cjs/vega-date-picker_2.cjs.entry.js +392 -345
  57. package/dist/cjs/vega-dialog_2.cjs.entry.js +14 -14
  58. package/dist/cjs/vega-divider.cjs.entry.js +13 -13
  59. package/dist/cjs/vega-dropdown_5.cjs.entry.js +40 -22
  60. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  61. package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
  62. package/dist/cjs/vega-file-uploader.cjs.entry.js +5 -5
  63. package/dist/cjs/vega-flag-icon.cjs.entry.js +11 -11
  64. package/dist/cjs/vega-flex.cjs.entry.js +13 -13
  65. package/dist/cjs/vega-font.cjs.entry.js +12 -12
  66. package/dist/cjs/vega-form.cjs.entry.js +8 -8
  67. package/dist/cjs/vega-grid.cjs.entry.js +12 -12
  68. package/dist/cjs/vega-icon.cjs.entry.js +12 -12
  69. package/dist/cjs/vega-image-uploader.cjs.entry.js +14 -14
  70. package/dist/cjs/vega-input-credit-card.cjs.entry.js +10 -10
  71. package/dist/cjs/vega-input-numeric.cjs.entry.js +10 -10
  72. package/dist/cjs/vega-input-passcode.cjs.entry.js +9 -9
  73. package/dist/cjs/vega-input-phone-number.cjs.entry.js +14 -14
  74. package/dist/cjs/vega-input-range.cjs.entry.js +6 -6
  75. package/dist/cjs/vega-input-select.cjs.entry.js +21 -16
  76. package/dist/cjs/vega-input.cjs.entry.js +339 -98
  77. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  78. package/dist/cjs/vega-left-nav_5.cjs.entry.js +12 -12
  79. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +13 -13
  80. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  81. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +3 -3
  82. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +1 -1
  83. package/dist/cjs/vega-pagination.cjs.entry.js +13 -13
  84. package/dist/cjs/vega-popover_2.cjs.entry.js +15 -15
  85. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +12 -12
  86. package/dist/cjs/vega-radio_2.cjs.entry.js +9 -9
  87. package/dist/cjs/vega-rich-text-content.cjs.entry.js +13 -16
  88. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +143 -194
  89. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +312 -104
  90. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  91. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +14 -14
  92. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +7 -7
  93. package/dist/cjs/vega-sidenav_3.cjs.entry.js +15 -15
  94. package/dist/cjs/vega-signature-capture.cjs.entry.js +14 -14
  95. package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
  96. package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
  97. package/dist/cjs/vega-table_11.cjs.entry.js +13 -13
  98. package/dist/cjs/vega-textarea.cjs.entry.js +6 -6
  99. package/dist/cjs/vega-time-picker_2.cjs.entry.js +19 -18
  100. package/dist/cjs/vega-toggle-switch.cjs.entry.js +5 -5
  101. package/dist/cjs/vega-tooltip_2.cjs.entry.js +14 -14
  102. package/dist/cjs/vega.cjs.js +15 -15
  103. package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +1 -1
  104. package/dist/collection/components/vega-button-group/vega-button-group-item/vega-button-group-item.js +1 -1
  105. package/dist/collection/components/vega-calendar/vega-calendar.js +1 -1
  106. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +2 -1
  107. package/dist/collection/components/vega-date-picker/assets/icons.js +4 -1
  108. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-calendar-open-state-controller.js +2 -1
  109. package/dist/collection/components/vega-date-picker/slimmers/renderers/vega-date-picker-calendar-renderer.js +2 -2
  110. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.js +109 -0
  111. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.js +4 -0
  112. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.js +42 -70
  113. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.js +12 -56
  114. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.css +435 -108
  115. package/dist/collection/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.js +5 -0
  116. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-search-controller.js +5 -1
  117. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.js +7 -0
  118. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +3 -2
  119. package/dist/collection/components/vega-dropdown/vega-dropdown.js +21 -6
  120. package/dist/collection/components/vega-field-label/vega-field-label.js +1 -1
  121. package/dist/collection/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.js +51 -0
  122. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-renderer.js +6 -0
  123. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +142 -0
  124. package/dist/collection/components/vega-input/slimmers/renderers/vega-input-renderer.js +12 -1
  125. package/dist/collection/components/vega-input/vega-input.js +200 -3
  126. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +8 -3
  127. package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.js +9 -1
  128. package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.js +0 -10
  129. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-row-strategy.js +74 -28
  130. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/merge-cells-strategy.js +120 -0
  131. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/split-cell-horizontally-strategy.js +143 -0
  132. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/split-cell-vertically-strategy.js +80 -0
  133. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/update-table-cell-properties-strategy.js +2 -1
  134. package/dist/collection/components/vega-rich-text-editor/extensions/table/action-handler-strategies/update-table-properties-strategy.js +2 -2
  135. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/merge-cells-action.js +17 -0
  136. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/split-cell-horizontally-action.js +12 -0
  137. package/dist/collection/components/vega-rich-text-editor/extensions/table/actions/split-cell-vertically-action.js +12 -0
  138. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.js +9 -30
  139. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotation-handler/table-cell-annotation-handler.js +26 -0
  140. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-annotation.js +26 -11
  141. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-cell-annotation.js +52 -12
  142. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-color-annotation.js +66 -0
  143. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotations/table-head-cell-annotation.js +11 -6
  144. package/dist/collection/components/vega-rich-text-editor/extensions/table/constants/styles.constants.js +8 -8
  145. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-block.js +1 -1
  146. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-cell-block.js +32 -1
  147. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-head-cell-block.js +1 -1
  148. package/dist/collection/components/vega-rich-text-editor/extensions/table/element-to-dto-strategies/td-to-table-cell-block-strategy.js +1 -1
  149. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.js +3 -1
  150. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +2 -9
  151. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.js +4 -0
  152. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/cell-properties.js +19 -15
  153. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/merge-cells-operation.js +100 -0
  154. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/setting-event-handler.abstract.js +1 -0
  155. package/dist/collection/components/vega-rich-text-editor/extensions/table/setting-event-handlers/split-cell-operation.js +57 -0
  156. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +14 -2
  157. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js +102 -13
  158. package/dist/collection/components/vega-rich-text-editor/extensions/table/utils/table-color-manager.js +51 -0
  159. package/dist/collection/components/vega-rich-text-editor/extensions/table/utils/utils.js +253 -0
  160. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/controllers/vega-rich-text-table-properties-color-controller.js +33 -2
  161. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-cell-properties-form-field-renderer.js +1 -1
  162. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.js +38 -6
  163. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-form-field-renderer.js +1 -1
  164. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-form-renderer.js +20 -2
  165. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.css +1 -0
  166. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.js +24 -14
  167. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/vega-rich-text-table-selection-widget.js +2 -2
  168. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +117 -0
  169. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +6 -4
  170. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.js +6 -1
  171. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.js +15 -8
  172. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/annotation-handler/table-annotation-handler.test.js +41 -46
  173. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/annotation-handler/table-cell-annotation-handler.test.js +69 -48
  174. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/annotation-handler/table-head-cell-annotation-handler.test.js +50 -54
  175. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-annotation.test.js +106 -14
  176. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-cell-annotation.test.js +204 -9
  177. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-color-annotation.test.js +32 -0
  178. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-dto.test.js +583 -6
  179. package/dist/collection/components/vega-rich-text-editor/test/extensions/table/table-element-to-dto-strategies.test.js +114 -25
  180. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +0 -5
  181. package/dist/collection/components/vega-selection-chip/vega-selection-chip.js +1 -1
  182. package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.js +2 -1
  183. package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.js +2 -1
  184. package/dist/collection/constants/ui.js +2 -0
  185. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +13 -2
  186. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +2 -0
  187. package/dist/collection/helpers/event-manager/test/component-event-id-map.test.js +3 -1
  188. package/dist/collection/helpers/event-manager/test/vega-event-manager.test.js +3 -1
  189. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +60 -32
  190. package/dist/collection/helpers/slimmers/element-appender/test/element-appender-slimmer.test.js +3 -2
  191. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy.js +28 -0
  192. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/click-trigger-strategy.js +33 -0
  193. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/hover-trigger-strategy.js +42 -0
  194. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/none-trigger-strategy.js +22 -0
  195. package/dist/collection/helpers/slimmers/element-appender/trigger-strategies/trigger-strategy.interface.js +1 -0
  196. package/dist/collection/types/test/type-guard.test.js +8 -1
  197. package/dist/collection/types/type-guard.js +11 -0
  198. package/dist/collection/utils/sanitize.js +126 -0
  199. package/dist/collection/utils/test/sanitize.test.js +65 -0
  200. package/dist/esm/{app-globals-8b873b6f.js → app-globals-4146c01c.js} +9 -8
  201. package/dist/esm/{child-nodes-event-prevent-slimmer-a6afdb1e.js → child-nodes-event-prevent-slimmer-225e7b58.js} +1 -1
  202. package/dist/esm/click-outside-only-to-dismiss-strategy-3d286c1b.js +30 -0
  203. package/dist/esm/{code-block-76b29be1.js → code-block-36393b45.js} +3 -3
  204. package/dist/esm/{component-value-history-controller-slimmer.abstract-e1b0e163.js → component-value-history-controller-slimmer.abstract-82339b2b.js} +4 -4
  205. package/dist/esm/{content-state-03f1d302.js → content-state-e8ef033a.js} +3 -3
  206. package/dist/esm/{date-required-rule-a9980386.js → date-required-rule-47ecc28f.js} +1 -1
  207. package/dist/esm/{design-token-8fedb532.js → design-token-c57a58b4.js} +2 -2
  208. package/dist/esm/{dom-node-subject-observer-factory-e998eba4.js → dom-node-subject-observer-factory-d4e16f66.js} +3 -1
  209. package/dist/esm/{element-appender-slimmer-7b9326e2.js → element-appender-slimmer-a7341fc1.js} +160 -36
  210. package/dist/esm/{event-emit-slimmer-bbf6668c.js → event-emit-slimmer-1bb4b533.js} +2 -2
  211. package/dist/esm/{form-field-controller-slimmer-a0cff4d3.js → form-field-controller-slimmer-907bf7c2.js} +2 -2
  212. package/dist/esm/{image-annotation-action-47cdc068.js → image-annotation-action-82cef6e4.js} +4 -31
  213. package/dist/esm/{index-da7e5fe5.js → index-2466b0c0.js} +1 -1
  214. package/dist/esm/index.js +21 -21
  215. package/dist/esm/{inject-keyboard-manager-9241968c.js → inject-keyboard-manager-83d76ff5.js} +1 -1
  216. package/dist/esm/{internal-vega-event-manager-e799c54a.js → internal-vega-event-manager-2cbb828a.js} +13 -2
  217. package/dist/esm/{keyboard-manager-89acac79.js → keyboard-manager-c92808d8.js} +1 -1
  218. package/dist/esm/{keyboard-manager-slimmer-e303cb7d.js → keyboard-manager-slimmer-79c78ce8.js} +1 -1
  219. package/dist/esm/{language-extension-de6e6caf.js → language-extension-dcc43702.js} +2 -2
  220. package/dist/esm/loader.js +15 -15
  221. package/dist/esm/{month-view-generator-4bec99fd.js → month-view-generator-16192182.js} +1 -1
  222. package/dist/esm/{public-rules-c48cc5c9.js → public-rules-b8ea651f.js} +7 -7
  223. package/dist/esm/{range-af6150a8.js → range-872aad9f.js} +1 -1
  224. package/dist/esm/{responsive-format-facade-16da4623.js → responsive-format-facade-9278eae4.js} +5 -4
  225. package/dist/esm/{rich-text-editor-required-rule-7255832e.js → rich-text-editor-required-rule-36dd4242.js} +1 -1
  226. package/dist/esm/sanitize-fd0cb40d.js +129 -0
  227. package/dist/esm/{styles.constants-0dd6f7fa.js → split-cell-operation-6749f654.js} +1218 -405
  228. package/dist/esm/{string-format-strategy.abstract-75540c16.js → string-format-strategy.abstract-fc60db79.js} +1 -1
  229. package/dist/esm/{string-input-formatter-slimmer-82f85b0b.js → string-input-formatter-slimmer-7a1e8754.js} +3 -3
  230. package/dist/esm/{string-mask-strategy-4a18ed1a.js → string-mask-strategy-0b0accaa.js} +2 -2
  231. package/dist/esm/{style-formatter-6ca58f6b.js → style-formatter-e937952a.js} +2 -2
  232. package/dist/esm/{sub-state-notify-slimmer-4060c333.js → sub-state-notify-slimmer-2ecdba12.js} +1 -1
  233. package/dist/esm/{sub-state-observer-slimmer-bfa5e63e.js → sub-state-observer-slimmer-2d5dba8d.js} +1 -1
  234. package/dist/esm/{table-extension-c83b7a56.js → table-extension-6b31754b.js} +587 -283
  235. package/dist/esm/{time-required-rule-8ec1faf5.js → time-required-rule-5fa43804.js} +1 -1
  236. package/dist/esm/{type-guard-b48aec98.js → type-guard-c65a227d.js} +12 -1
  237. package/dist/esm/{valid-credit-card-number-rule-96eaf9b1.js → valid-credit-card-number-rule-666c415d.js} +1 -1
  238. package/dist/esm/vega-accordion.entry.js +12 -12
  239. package/dist/esm/vega-app-header-button.entry.js +13 -13
  240. package/dist/esm/vega-banner.entry.js +3 -3
  241. package/dist/esm/vega-box.entry.js +12 -12
  242. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  243. package/dist/esm/vega-button-circle.entry.js +12 -12
  244. package/dist/esm/vega-button-group_2.entry.js +6 -6
  245. package/dist/esm/vega-button-link.entry.js +4 -4
  246. package/dist/esm/vega-button.entry.js +11 -11
  247. package/dist/esm/vega-calendar_4.entry.js +8 -8
  248. package/dist/esm/vega-card.entry.js +12 -12
  249. package/dist/esm/vega-carousel.entry.js +11 -11
  250. package/dist/esm/vega-checkbox_2.entry.js +6 -6
  251. package/dist/esm/vega-chip.entry.js +13 -13
  252. package/dist/esm/vega-code-block.entry.js +10 -10
  253. package/dist/esm/vega-color-picker.entry.js +5 -5
  254. package/dist/esm/vega-combo-box.entry.js +11 -10
  255. package/dist/esm/vega-date-picker_2.entry.js +392 -345
  256. package/dist/esm/vega-dialog_2.entry.js +14 -14
  257. package/dist/esm/vega-divider.entry.js +13 -13
  258. package/dist/esm/vega-dropdown_5.entry.js +40 -22
  259. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  260. package/dist/esm/vega-field-label.entry.js +3 -3
  261. package/dist/esm/vega-file-uploader.entry.js +5 -5
  262. package/dist/esm/vega-flag-icon.entry.js +11 -11
  263. package/dist/esm/vega-flex.entry.js +13 -13
  264. package/dist/esm/vega-font.entry.js +12 -12
  265. package/dist/esm/vega-form.entry.js +8 -8
  266. package/dist/esm/vega-grid.entry.js +12 -12
  267. package/dist/esm/vega-icon.entry.js +12 -12
  268. package/dist/esm/vega-image-uploader.entry.js +14 -14
  269. package/dist/esm/vega-input-credit-card.entry.js +10 -10
  270. package/dist/esm/vega-input-numeric.entry.js +10 -10
  271. package/dist/esm/vega-input-passcode.entry.js +9 -9
  272. package/dist/esm/vega-input-phone-number.entry.js +14 -14
  273. package/dist/esm/vega-input-range.entry.js +6 -6
  274. package/dist/esm/vega-input-select.entry.js +21 -16
  275. package/dist/esm/vega-input.entry.js +340 -99
  276. package/dist/esm/vega-item-toggle.entry.js +3 -3
  277. package/dist/esm/vega-left-nav_5.entry.js +12 -12
  278. package/dist/esm/vega-loader-wrapper_2.entry.js +13 -13
  279. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  280. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -3
  281. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +1 -1
  282. package/dist/esm/vega-pagination.entry.js +13 -13
  283. package/dist/esm/vega-popover_2.entry.js +15 -15
  284. package/dist/esm/vega-progress-tracker_2.entry.js +12 -12
  285. package/dist/esm/vega-radio_2.entry.js +9 -9
  286. package/dist/esm/vega-rich-text-content.entry.js +14 -17
  287. package/dist/esm/vega-rich-text-editor_4.entry.js +144 -195
  288. package/dist/esm/vega-rich-text-table-properties_3.entry.js +293 -85
  289. package/dist/esm/vega-segment-control.entry.js +3 -3
  290. package/dist/esm/vega-selection-chip_2.entry.js +14 -14
  291. package/dist/esm/vega-selection-tile_2.entry.js +7 -7
  292. package/dist/esm/vega-sidenav_3.entry.js +15 -15
  293. package/dist/esm/vega-signature-capture.entry.js +14 -14
  294. package/dist/esm/vega-stepper.entry.js +6 -6
  295. package/dist/esm/vega-tab-group_2.entry.js +4 -4
  296. package/dist/esm/vega-table_11.entry.js +13 -13
  297. package/dist/esm/vega-textarea.entry.js +6 -6
  298. package/dist/esm/vega-time-picker_2.entry.js +19 -18
  299. package/dist/esm/vega-toggle-switch.entry.js +5 -5
  300. package/dist/esm/vega-tooltip_2.entry.js +14 -14
  301. package/dist/esm/vega.js +15 -15
  302. package/dist/sri/vega-sri-manifest.json +339 -715
  303. package/dist/types/components/vega-date-picker/assets/icons.d.ts +1 -1
  304. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-header-render.d.ts +20 -0
  305. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-renderer.d.ts +1 -0
  306. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-calendar-year-month-switcher-renderer.d.ts +4 -11
  307. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/slimmers/renderers/vega-date-picker-month-item-renderer.d.ts +4 -9
  308. package/dist/types/components/vega-date-picker/vega-date-picker-calendar/vega-date-picker-calendar.d.ts +2 -0
  309. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.d.ts +2 -0
  310. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +9 -4
  311. package/dist/types/components/vega-input/slimmers/controllers/vega-input-render-mode-controller.d.ts +27 -0
  312. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-renderer.d.ts +1 -0
  313. package/dist/types/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.d.ts +40 -0
  314. package/dist/types/components/vega-input/slimmers/renderers/vega-input-renderer.d.ts +3 -0
  315. package/dist/types/components/vega-input/types.d.ts +4 -0
  316. package/dist/types/components/vega-input/vega-input.d.ts +55 -1
  317. package/dist/types/components/vega-rich-text-content/vega-rich-text-content.d.ts +3 -0
  318. package/dist/types/components/vega-rich-text-editor/dto/annotations/custom-attribute-annotation.d.ts +1 -1
  319. package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.d.ts +0 -2
  320. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/insert-table-row-strategy.d.ts +17 -0
  321. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/merge-cells-strategy.d.ts +38 -0
  322. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/split-cell-horizontally-strategy.d.ts +43 -0
  323. package/dist/types/components/vega-rich-text-editor/extensions/table/action-handler-strategies/split-cell-vertically-strategy.d.ts +27 -0
  324. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/merge-cells-action.d.ts +33 -0
  325. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/split-cell-horizontally-action.d.ts +10 -0
  326. package/dist/types/components/vega-rich-text-editor/extensions/table/actions/split-cell-vertically-action.d.ts +10 -0
  327. package/dist/types/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.d.ts +0 -7
  328. package/dist/types/components/vega-rich-text-editor/extensions/table/annotation-handler/table-cell-annotation-handler.d.ts +14 -0
  329. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-annotation.d.ts +15 -6
  330. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-cell-annotation.d.ts +11 -2
  331. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-color-annotation.d.ts +43 -0
  332. package/dist/types/components/vega-rich-text-editor/extensions/table/annotations/table-head-cell-annotation.d.ts +2 -2
  333. package/dist/types/components/vega-rich-text-editor/extensions/table/constants/styles.constants.d.ts +2 -2
  334. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-cell-block.d.ts +19 -0
  335. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.d.ts +2 -2
  336. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.d.ts +1 -8
  337. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/merge-cells-operation.d.ts +44 -0
  338. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/setting-event-handler.abstract.d.ts +2 -1
  339. package/dist/types/components/vega-rich-text-editor/extensions/table/setting-event-handlers/split-cell-operation.d.ts +31 -0
  340. package/dist/types/components/vega-rich-text-editor/extensions/table/table-extension.d.ts +3 -3
  341. package/dist/types/components/vega-rich-text-editor/extensions/table/table-selection.d.ts +15 -0
  342. package/dist/types/components/vega-rich-text-editor/extensions/table/utils/table-color-manager.d.ts +26 -0
  343. package/dist/types/components/vega-rich-text-editor/extensions/table/utils/utils.d.ts +102 -2
  344. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/controllers/vega-rich-text-table-properties-color-controller.d.ts +16 -1
  345. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.d.ts +18 -6
  346. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-form-renderer.d.ts +7 -1
  347. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.d.ts +14 -11
  348. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/vega-rich-text-table-selection-widget.d.ts +3 -3
  349. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.d.ts +23 -0
  350. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.d.ts +1 -0
  351. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.d.ts +9 -6
  352. package/dist/types/components/vega-rich-text-editor/interface.d.ts +0 -5
  353. package/dist/types/components/vega-rich-text-editor/test/extensions/table/annotation-handler/table-cell-annotation-handler.test.d.ts +8 -1
  354. package/dist/types/components/vega-rich-text-editor/test/extensions/table/table-color-annotation.test.d.ts +1 -0
  355. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +0 -2
  356. package/dist/types/components.d.ts +72 -30
  357. package/dist/types/constants/ui.d.ts +1 -1
  358. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +2 -0
  359. package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +4 -9
  360. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/click-outside-only-to-dismiss-strategy.d.ts +21 -0
  361. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/click-trigger-strategy.d.ts +21 -0
  362. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/hover-trigger-strategy.d.ts +22 -0
  363. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/none-trigger-strategy.d.ts +18 -0
  364. package/dist/types/helpers/slimmers/element-appender/trigger-strategies/trigger-strategy.interface.d.ts +37 -0
  365. package/dist/types/types/components.type.d.ts +3 -1
  366. package/dist/types/types/type-guard.d.ts +8 -0
  367. package/dist/types/types/ui.type.d.ts +9 -0
  368. package/dist/types/utils/sanitize.d.ts +71 -0
  369. package/dist/types/utils/spec-utils.d.ts +2 -0
  370. package/dist/types/utils/test/sanitize.test.d.ts +1 -0
  371. package/dist/vega/index.esm.js +1 -57
  372. package/dist/vega/{p-780cbfb0.entry.js → p-01dc2e48.entry.js} +1 -1
  373. package/dist/vega/p-0459a474.entry.js +1 -0
  374. package/dist/vega/p-0770a0eb.entry.js +1 -0
  375. package/dist/vega/{p-a924c1e2.entry.js → p-0bf4a3a7.entry.js} +1 -1
  376. package/dist/vega/{p-ff9a0e6e.js → p-0d57293b.js} +1 -1
  377. package/dist/vega/{p-22da15d7.entry.js → p-1199ebf6.entry.js} +1 -1
  378. package/dist/vega/p-11a6c1b7.js +1 -0
  379. package/dist/vega/{p-79e8236a.entry.js → p-1415d93b.entry.js} +1 -1
  380. package/dist/vega/p-1431c8b9.js +1 -0
  381. package/dist/vega/p-18560714.entry.js +1 -0
  382. package/dist/vega/{p-a007b493.entry.js → p-1a161082.entry.js} +1 -1
  383. package/dist/vega/{p-161b9c5b.js → p-1f83cebf.js} +1 -1
  384. package/dist/vega/{p-16af7681.js → p-20010bd6.js} +1 -1
  385. package/dist/vega/p-205d8401.js +1 -0
  386. package/dist/vega/{p-29a9c8f5.entry.js → p-20a98a99.entry.js} +1 -1
  387. package/dist/vega/{p-86caa739.entry.js → p-228784f7.entry.js} +1 -1
  388. package/dist/vega/{p-b91c2c9d.js → p-22989693.js} +1 -1
  389. package/dist/vega/{p-1bda4016.entry.js → p-273911b2.entry.js} +1 -1
  390. package/dist/vega/{p-e797bf8d.entry.js → p-28e630b2.entry.js} +1 -1
  391. package/dist/vega/{p-d466baf7.js → p-29f6b2d5.js} +1 -1
  392. package/dist/vega/{p-6d9731c1.entry.js → p-2af2e1ad.entry.js} +1 -1
  393. package/dist/vega/{p-d55365b9.entry.js → p-2af78c38.entry.js} +1 -1
  394. package/dist/vega/{p-c3d388b5.entry.js → p-2c830cba.entry.js} +1 -1
  395. package/dist/vega/{p-61ae4e9c.entry.js → p-3224d794.entry.js} +1 -1
  396. package/dist/vega/{p-216f3436.entry.js → p-326b5392.entry.js} +1 -1
  397. package/dist/vega/{p-69af3422.entry.js → p-3413a678.entry.js} +1 -1
  398. package/dist/vega/p-3532aa12.js +1 -0
  399. package/dist/vega/p-395cdd84.entry.js +1 -0
  400. package/dist/vega/{p-9aac9879.entry.js → p-3a6ff599.entry.js} +1 -1
  401. package/dist/vega/p-3be82c0f.entry.js +1 -0
  402. package/dist/vega/p-3c0f55f7.entry.js +1 -0
  403. package/dist/vega/{p-10ffb765.js → p-3e30567a.js} +1 -1
  404. package/dist/vega/p-3e5f362f.js +1 -0
  405. package/dist/vega/p-42cd1fde.js +1 -0
  406. package/dist/vega/p-476a173a.js +1 -0
  407. package/dist/vega/p-4b6c60cb.entry.js +1 -0
  408. package/dist/vega/{p-12a97dad.entry.js → p-4c36b528.entry.js} +1 -1
  409. package/dist/vega/{p-fa34ace2.entry.js → p-4ecf0ee7.entry.js} +1 -1
  410. package/dist/vega/{p-813b2915.entry.js → p-4f4c7593.entry.js} +1 -1
  411. package/dist/vega/p-585edae4.entry.js +1 -0
  412. package/dist/vega/{p-39d56e3d.js → p-5b048141.js} +1 -1
  413. package/dist/vega/p-5f377954.js +1 -1
  414. package/dist/vega/{p-63246470.js → p-5fdb9047.js} +1 -1
  415. package/dist/vega/{p-d4e35d2e.entry.js → p-60483e3d.entry.js} +1 -1
  416. package/dist/vega/{p-de70aac1.js → p-60851f9d.js} +1 -1
  417. package/dist/vega/{p-73688c4e.entry.js → p-61145506.entry.js} +1 -1
  418. package/dist/vega/{p-8162980c.js → p-61ddae59.js} +1 -1
  419. package/dist/vega/{p-98b78c75.entry.js → p-64386be8.entry.js} +1 -1
  420. package/dist/vega/{p-73689ec0.entry.js → p-6490b69a.entry.js} +1 -1
  421. package/dist/vega/{p-50a506ea.entry.js → p-6bc1552e.entry.js} +1 -1
  422. package/dist/vega/{p-206245d2.entry.js → p-6e4e7192.entry.js} +1 -1
  423. package/dist/vega/{p-8ac453cb.entry.js → p-76d144f5.entry.js} +1 -1
  424. package/dist/vega/{p-dc2813eb.entry.js → p-76eb9cd0.entry.js} +1 -1
  425. package/dist/vega/{p-e788598a.entry.js → p-77c9949d.entry.js} +1 -1
  426. package/dist/vega/p-8187878e.js +1 -0
  427. package/dist/vega/p-8198a77c.js +1 -0
  428. package/dist/vega/{p-0e4cecbd.entry.js → p-82ad1006.entry.js} +1 -1
  429. package/dist/vega/{p-8a4d8139.entry.js → p-839c9d62.entry.js} +1 -1
  430. package/dist/vega/{p-d07d04e0.entry.js → p-849f78a7.entry.js} +1 -1
  431. package/dist/vega/{p-ac4bd1f8.js → p-85bfa0f7.js} +1 -1
  432. package/dist/vega/{p-dd5d917b.entry.js → p-87764570.entry.js} +1 -1
  433. package/dist/vega/{p-abf871cd.entry.js → p-88c894e8.entry.js} +1 -1
  434. package/dist/vega/{p-c00adad9.js → p-89083d63.js} +1 -1
  435. package/dist/vega/{p-a8dad05d.js → p-920719ad.js} +1 -1
  436. package/dist/vega/p-9472d19a.js +1 -0
  437. package/dist/vega/{p-c6d98c60.entry.js → p-96657262.entry.js} +1 -1
  438. package/dist/vega/p-979e4bd4.entry.js +1 -0
  439. package/dist/vega/{p-f6eab527.entry.js → p-9c624e03.entry.js} +1 -1
  440. package/dist/vega/{p-088f4613.entry.js → p-a01f985f.entry.js} +1 -1
  441. package/dist/vega/{p-a4ec6575.js → p-a2aeb646.js} +1 -1
  442. package/dist/vega/{p-22c76be7.entry.js → p-a495463f.entry.js} +1 -1
  443. package/dist/vega/p-b4ea3fad.js +1 -0
  444. package/dist/vega/{p-151b1deb.js → p-b56b0b89.js} +1 -1
  445. package/dist/vega/{p-3bc7e162.entry.js → p-b5b75a2f.entry.js} +1 -1
  446. package/dist/vega/{p-d991fb11.js → p-badad9ed.js} +1 -1
  447. package/dist/vega/{p-24766b9d.entry.js → p-bccaf3d2.entry.js} +1 -1
  448. package/dist/vega/{p-e13c163c.entry.js → p-bde5c990.entry.js} +1 -1
  449. package/dist/vega/{p-ab0e013c.entry.js → p-beb6c1ce.entry.js} +1 -1
  450. package/dist/vega/{p-068ee55e.entry.js → p-c02b01ec.entry.js} +1 -1
  451. package/dist/vega/p-c1fdcb62.js +1 -0
  452. package/dist/vega/{p-5d2704c1.entry.js → p-c5e7035b.entry.js} +1 -1
  453. package/dist/vega/{p-5367eaab.js → p-c841be8d.js} +1 -1
  454. package/dist/vega/{p-6f08e3e1.entry.js → p-cd078909.entry.js} +1 -1
  455. package/dist/vega/{p-d1d0f08a.js → p-d0e31633.js} +1 -1
  456. package/dist/vega/{p-a439e59b.entry.js → p-d5c09a94.entry.js} +1 -1
  457. package/dist/vega/{p-c8ad47c9.js → p-d907f8a2.js} +1 -1
  458. package/dist/vega/{p-6c1ef2ed.js → p-dd11f735.js} +1 -1
  459. package/dist/vega/{p-c9541fc2.entry.js → p-de850e98.entry.js} +1 -1
  460. package/dist/vega/{p-3d85411d.js → p-e16b3adf.js} +1 -1
  461. package/dist/vega/{p-34a994a1.entry.js → p-e1dd23f8.entry.js} +1 -1
  462. package/dist/vega/{p-7ca9f6f1.js → p-e1de1cdc.js} +1 -1
  463. package/dist/vega/{p-1f4a814e.entry.js → p-e7cfb6b6.entry.js} +1 -1
  464. package/dist/vega/{p-ddf81373.js → p-e819940c.js} +1 -1
  465. package/dist/vega/{p-e0cefd90.entry.js → p-e95ed6f3.entry.js} +1 -1
  466. package/dist/vega/p-ebb14c84.js +1 -0
  467. package/dist/vega/{p-f519cdc3.entry.js → p-f0a8aed3.entry.js} +1 -1
  468. package/dist/vega/p-f2b8abd3.entry.js +1 -0
  469. package/dist/vega/{p-d4719c14.entry.js → p-fb238751.entry.js} +1 -1
  470. package/dist/vega/p-fdebc47f.entry.js +1 -0
  471. package/dist/vega/vega.esm.js +1 -172
  472. package/package.json +1 -1
  473. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/text-node-color-controller.js +0 -51
  474. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/text-node-rendering-registry.js +0 -26
  475. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/text-node-color-controller.d.ts +0 -22
  476. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/text-node-rendering-registry.d.ts +0 -22
  477. package/dist/vega/app-globals-955a2b3b.js +0 -427
  478. package/dist/vega/child-nodes-event-prevent-slimmer-a604a6dd.js +0 -156
  479. package/dist/vega/design-token-56b26205.js +0 -402
  480. package/dist/vega/element-appender-slimmer-8355fb28.js +0 -1508
  481. package/dist/vega/event-emit-slimmer-7a14f5e9.js +0 -265
  482. package/dist/vega/internal-vega-event-manager-8c62c88e.js +0 -458
  483. package/dist/vega/p-08b4d097.entry.js +0 -1
  484. package/dist/vega/p-207cfa6a.js +0 -1
  485. package/dist/vega/p-213be5e9.entry.js +0 -1
  486. package/dist/vega/p-224a4f3f.entry.js +0 -1
  487. package/dist/vega/p-40660c09.js +0 -1
  488. package/dist/vega/p-550ce71a.entry.js +0 -1
  489. package/dist/vega/p-6665d083.entry.js +0 -1
  490. package/dist/vega/p-7172332a.entry.js +0 -1
  491. package/dist/vega/p-82ec9721.entry.js +0 -1
  492. package/dist/vega/p-99e3dcab.js +0 -1
  493. package/dist/vega/p-9a83a6b0.js +0 -1
  494. package/dist/vega/p-a4d0ab07.js +0 -1
  495. package/dist/vega/p-a6e03df4.entry.js +0 -1
  496. package/dist/vega/p-c335088c.js +0 -1
  497. package/dist/vega/p-c674b07c.js +0 -1
  498. package/dist/vega/p-d1349401.entry.js +0 -1
  499. package/dist/vega/p-d2033624.js +0 -1
  500. package/dist/vega/p-db482ee1.js +0 -1
  501. package/dist/vega/p-f4b46f6b.entry.js +0 -1
  502. package/dist/vega/p-fbfb4c70.entry.js +0 -1
  503. package/dist/vega/p-ff57c872.js +0 -1
  504. package/dist/vega/p-ff921d10.js +0 -1
  505. package/dist/vega/public-api-8dd022fa.js +0 -6043
  506. package/dist/vega/public-api-baaf7593.js +0 -4
  507. package/dist/vega/responsive-format-facade-98596535.js +0 -913
  508. package/dist/vega/style-formatter-0ae102e9.js +0 -32
  509. package/dist/vega/vega-accordion.entry.js +0 -291
  510. package/dist/vega/vega-app-header-button.entry.js +0 -452
  511. package/dist/vega/vega-banner.entry.js +0 -351
  512. package/dist/vega/vega-box.entry.js +0 -353
  513. package/dist/vega/vega-breadcrumb.entry.js +0 -249
  514. package/dist/vega/vega-button-circle.entry.js +0 -245
  515. package/dist/vega/vega-button-group.entry.js +0 -203
  516. package/dist/vega/vega-button-link.entry.js +0 -226
  517. package/dist/vega/vega-button.entry.js +0 -259
  518. package/dist/vega/vega-calendar.entry.js +0 -3884
  519. package/dist/vega/vega-card.entry.js +0 -226
  520. package/dist/vega/vega-carousel.entry.js +0 -540
  521. package/dist/vega/vega-checkbox-group.entry.js +0 -266
  522. package/dist/vega/vega-checkbox.entry.js +0 -335
  523. package/dist/vega/vega-chip.entry.js +0 -321
  524. package/dist/vega/vega-code-block.entry.js +0 -4372
  525. package/dist/vega/vega-color-picker.entry.js +0 -258
  526. package/dist/vega/vega-combo-box.entry.js +0 -748
  527. package/dist/vega/vega-date-picker-calendar.entry.js +0 -1381
  528. package/dist/vega/vega-date-picker.entry.js +0 -1646
  529. package/dist/vega/vega-dialog.entry.js +0 -158
  530. package/dist/vega/vega-divider.entry.js +0 -179
  531. package/dist/vega/vega-dropdown-content-box.entry.js +0 -57
  532. package/dist/vega/vega-dropdown-item.entry.js +0 -352
  533. package/dist/vega/vega-dropdown.entry.js +0 -2136
  534. package/dist/vega/vega-field-label.entry.js +0 -182
  535. package/dist/vega/vega-file-uploader.entry.js +0 -751
  536. package/dist/vega/vega-flag-icon.entry.js +0 -216
  537. package/dist/vega/vega-flex.entry.js +0 -224
  538. package/dist/vega/vega-font.entry.js +0 -327
  539. package/dist/vega/vega-form.entry.js +0 -1008
  540. package/dist/vega/vega-grid.entry.js +0 -129
  541. package/dist/vega/vega-icon.entry.js +0 -256
  542. package/dist/vega/vega-image-uploader.entry.js +0 -977
  543. package/dist/vega/vega-input-credit-card.entry.js +0 -549
  544. package/dist/vega/vega-input-numeric.entry.js +0 -471
  545. package/dist/vega/vega-input-passcode.entry.js +0 -728
  546. package/dist/vega/vega-input-phone-number.entry.js +0 -9143
  547. package/dist/vega/vega-input-range.entry.js +0 -693
  548. package/dist/vega/vega-input-select.entry.js +0 -1268
  549. package/dist/vega/vega-input.entry.js +0 -1735
  550. package/dist/vega/vega-item-toggle.entry.js +0 -190
  551. package/dist/vega/vega-left-nav-group.entry.js +0 -433
  552. package/dist/vega/vega-left-nav-link.entry.js +0 -317
  553. package/dist/vega/vega-left-nav-section.entry.js +0 -97
  554. package/dist/vega/vega-left-nav.entry.js +0 -654
  555. package/dist/vega/vega-loading-indicator.entry.js +0 -209
  556. package/dist/vega/vega-modal.entry.js +0 -1287
  557. package/dist/vega/vega-nav-card.entry.js +0 -163
  558. package/dist/vega/vega-pagination-page-selector-mobile.entry.js +0 -214
  559. package/dist/vega/vega-pagination.entry.js +0 -629
  560. package/dist/vega/vega-popover-content-box.entry.js +0 -101
  561. package/dist/vega/vega-popover.entry.js +0 -362
  562. package/dist/vega/vega-progress-tracker.entry.js +0 -757
  563. package/dist/vega/vega-radio-group.entry.js +0 -496
  564. package/dist/vega/vega-radio.entry.js +0 -272
  565. package/dist/vega/vega-rich-text-editor-toolbar-button.entry.js +0 -169
  566. package/dist/vega/vega-rich-text-editor.entry.js +0 -4107
  567. package/dist/vega/vega-rich-text-image-editor.entry.js +0 -216
  568. package/dist/vega/vega-rich-text-link-editor.entry.js +0 -238
  569. package/dist/vega/vega-rich-text-table-properties.entry.js +0 -641
  570. package/dist/vega/vega-rich-text-table-setting.entry.js +0 -525
  571. package/dist/vega/vega-segment-control.entry.js +0 -350
  572. package/dist/vega/vega-selection-chip-group.entry.js +0 -447
  573. package/dist/vega/vega-selection-chip.entry.js +0 -443
  574. package/dist/vega/vega-selection-tile-group.entry.js +0 -438
  575. package/dist/vega/vega-selection-tile.entry.js +0 -409
  576. package/dist/vega/vega-sidenav-link.entry.js +0 -160
  577. package/dist/vega/vega-sidenav.entry.js +0 -766
  578. package/dist/vega/vega-signature-capture.entry.js +0 -589
  579. package/dist/vega/vega-stepper.entry.js +0 -292
  580. package/dist/vega/vega-tab-group-panel.entry.js +0 -79
  581. package/dist/vega/vega-tab-group.entry.js +0 -1281
  582. package/dist/vega/vega-table-body.entry.js +0 -48
  583. package/dist/vega/vega-table-cell.entry.js +0 -243
  584. package/dist/vega/vega-table-foot-cell.entry.js +0 -169
  585. package/dist/vega/vega-table-foot-row.entry.js +0 -219
  586. package/dist/vega/vega-table-foot.entry.js +0 -136
  587. package/dist/vega/vega-table-head-cell.entry.js +0 -339
  588. package/dist/vega/vega-table-head-row.entry.js +0 -416
  589. package/dist/vega/vega-table-head.entry.js +0 -113
  590. package/dist/vega/vega-table-row.entry.js +0 -666
  591. package/dist/vega/vega-table.entry.js +0 -3707
  592. package/dist/vega/vega-textarea.entry.js +0 -329
  593. package/dist/vega/vega-time-picker.entry.js +0 -2039
  594. package/dist/vega/vega-toggle-switch.entry.js +0 -194
  595. package/dist/vega/vega-tooltip.entry.js +0 -339
@@ -1,3884 +0,0 @@
1
- import { h, F as Fragment, f as forceUpdate, r as registerInstance, e as createEvent, g as Host, i as getElement } from './index-01a2f9c9.js';
2
- import { s as sanitizeVegaComponent } from './component-0cff85cf.js';
3
- import { V as VegaSlimmer, b as MapToComponentField, M as MapToComponentMethod, L as LogUtility, m as methodPlaceholder, e as InjectVegaGlobalSlimmer, a as InjectVegaSlimmer } from './vega-slimmer-core-83fd0e22.js';
4
- import { D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-3b49c6b3.js';
5
- import { a as VegaClick, h as VegaChange, V as VegaDropdownClick, c as VegaPopoverHide, i as VegaEventClick, j as VegaDateDblClick, k as VegaMoreActionClick, l as VegaDateClick } from './vega-event-id-61c8bd9f.js';
6
- import { a as VegaInternalIconManager } from './internal-icon-manager-9279071a.js';
7
- import { c as createEnterKeyHandlerToTriggerClick } from './accessibility-e5fd0fab.js';
8
- import { Z as pad, _ as MonthViewGenerator, $ as WeekViewGenerator, a0 as DayViewGenerator, a1 as getClosestWorkday, a2 as DayPeriod, a3 as WeekPeriod, a4 as MonthPeriod, a5 as CalendarDate, a6 as WeekdayLongNames, a7 as getSystemTimezone, a8 as CalendarTime, a9 as CalendarDateTime, aa as getCalendarEventSlotName, ab as getTimeIndex } from './type-guard-09acedc9.js';
9
- import { c as createEventEmitSlimmer } from './event-emit-slimmer-61db3eef.js';
10
- import { C as ChildNodesEventPreventSlimmer } from './child-nodes-event-prevent-slimmer-fcfc9c8b.js';
11
- import { j as VegaInternalCalendarMonthEventsChange, k as VegaInternalCalendarEventPreviewHide, l as VegaInternalCalendarEventPreviewClear, m as VegaInternalCalendarEventPreviewUpdate } from './vega-internal-event-id-b65a01a3.js';
12
- import { O as Observer } from './observer-3959f9dd.js';
13
- import { C as ChangeManager } from './change-manager-b115783e.js';
14
- import { d as domNodeSubjectFactory } from './dom-node-subject-factory-5798693b.js';
15
- import { V as VegaInternalTranslation } from './index-81ce67e2.js';
16
- import { f as flatNestedArray } from './array-a1d98264.js';
17
- import { g as generateUUID } from './create-public-api-runtime-metrics-slimmer-8565f08b.js';
18
- import { P as PageResizeObserverSlimmer } from './page-resize-observer-slimmer-ee8774a6.js';
19
- import { d as debounce } from './timer-9321173b.js';
20
- import { V as VegaComponentUsageRuntimeMetricsSlimmer } from './component-usage-runtime-metrics-0513698f.js';
21
- import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-2c2e1a57.js';
22
- import './index-9fdb7060.js';
23
- import { T as TranslationSlimmer } from './translation-slimmer-3c4e2876.js';
24
- import './breakpoints-d9faf11c.js';
25
- import './ui-189dae23.js';
26
- import './typography-396de03f.js';
27
- import './internal-vega-event-manager-826279b7.js';
28
- import './try-get-document-bef0f526.js';
29
- import './vega-env-manager-8f8dc473.js';
30
- import './feature-flag-controller-24b9f956.js';
31
- import './index-1f9eab8f.js';
32
- import './_commonjsHelpers-2088bffa.js';
33
- import './ui-5f775fd9.js';
34
- import './static-subject-title-6fdf8c8b.js';
35
- import './number-4398f2e1.js';
36
-
37
- var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
41
- return c > 3 && r && Object.defineProperty(target, key, r), r;
42
- };
43
- /** The `VegaCalendarRenderer` class in TypeScript React renders switch panel and view components for a calendar using VegaSlimmer. */
44
- class VegaCalendarRenderer extends VegaSlimmer {
45
- getEventPreviewRef() {
46
- return this.eventPreviewRef;
47
- }
48
- /**
49
- * The render function returns a Fragment containing the rendered output of switchPanelRenderer and viewRenderer components.
50
- *
51
- * @returns {HTMLElement} An HTMLElement containing the rendered output of the switchPanelRenderer and viewRenderer components.
52
- */
53
- render() {
54
- return (h(Fragment, null,
55
- this.switchPanelRenderer.render(),
56
- this.viewRenderer.render(),
57
- h("vega-calendar-event-preview", { ref: (el) => {
58
- this.eventPreviewRef = el;
59
- } })));
60
- }
61
- }
62
- __decorate$m([
63
- MapToComponentField()
64
- ], VegaCalendarRenderer.prototype, "host", void 0);
65
- __decorate$m([
66
- MapToComponentField()
67
- ], VegaCalendarRenderer.prototype, "switchPanelRenderer", void 0);
68
- __decorate$m([
69
- MapToComponentField()
70
- ], VegaCalendarRenderer.prototype, "viewRenderer", void 0);
71
-
72
- const chevronRight = {
73
- icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"/></svg>`,
74
- };
75
-
76
- const chevronLeft = {
77
- icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"/></svg>`,
78
- };
79
-
80
- const ellipsisVertical = {
81
- icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M48 464a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm0-160a48 48 0 1 1 0-96 48 48 0 1 1 0 96zM0 96a48 48 0 1 1 96 0A48 48 0 1 1 0 96z"/></svg>`,
82
- };
83
-
84
- var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
85
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
86
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
87
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
88
- return c > 3 && r && Object.defineProperty(target, key, r), r;
89
- };
90
- /** The `VegaCalendarSwitchPanelRenderer` class in TypeScript React renders a calendar switch panel with date navigation, view selection, and action buttons. */
91
- class VegaCalendarSwitchPanelRenderer extends VegaSlimmer {
92
- constructor() {
93
- super(...arguments);
94
- /**
95
- * This function is responsible for updating the `viewMode` property of the `VegaCalendarSwitchPanelRenderer` class with the value extracted from the `input` parameter.
96
- *
97
- * @param {NotifyObserverPayload<VegaCalendarViewModeType>} input mark which view should be selected
98
- */
99
- this.handleViewChange = (input) => {
100
- this.currentPeriodController.updateCalendarPeriod(input.detail, this.postOperationDate);
101
- };
102
- /**
103
- * reset view content to today
104
- */
105
- this.todayButtonClick = () => {
106
- this.currentPeriodController.setCurrentPeriod(this.currentPeriod.now());
107
- };
108
- /**
109
- * update view content after click next button
110
- */
111
- this.nextButtonClick = () => {
112
- this.currentPeriodController.setCurrentPeriod(this.currentPeriod.next());
113
- };
114
- /**
115
- * update view content after click previous button
116
- */
117
- this.prevButtonClick = () => {
118
- this.currentPeriodController.setCurrentPeriod(this.currentPeriod.previous());
119
- };
120
- /**
121
- * The more action menu item click
122
- *
123
- * @param {NotifyObserverPayload<string>} payload The object contains the menu item key
124
- */
125
- this.moreActionMenuClick = (payload) => {
126
- this.moreActionClickEmitter.emit(payload.detail);
127
- };
128
- }
129
- /**
130
- * get the switch panel container element
131
- *
132
- * @returns {HTMLVegaFlexElement} container element
133
- */
134
- getSwitchPanelRef() {
135
- return this.switchPanelRef;
136
- }
137
- /**
138
- * calendar switch panel with date switch, view switch, add new button, and more action components.
139
- *
140
- * @returns {HTMLElement} html element
141
- */
142
- render() {
143
- return (h("vega-flex", { direction: "row", gap: "size-16", justifyContent: "space-between", alignItems: "center", class: "calendar-switch-panel", ref: (node) => (this.switchPanelRef = node) },
144
- this.renderDateSwitch(),
145
- h("div", { class: "calendar-view-switch-container" },
146
- this.showSwitchView ? this.renderViewSwitch() : null,
147
- this.renderMoreActionMenu())));
148
- }
149
- /**
150
- * The `renderDateSwitch` function returns a container with buttons for switching dates and displaying the current date.
151
- *
152
- * @returns {HTMLDivElement} action button elements container.
153
- */
154
- renderDateSwitch() {
155
- return (h("div", { class: "calendar-date-switch-container" },
156
- h("vega-button", { variant: "secondary", size: "small", ref: (button) => {
157
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(button, VegaClick, this.todayButtonClick);
158
- }, label: this.translationSlimmer.t('Today') }),
159
- h("vega-button-circle", { variant: "secondary", size: "small", icon: VegaInternalIconManager.getIconKey('chevron-left'), label: "previous", showTooltip: false, ref: (button) => {
160
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(button, VegaClick, this.prevButtonClick);
161
- } }),
162
- h("vega-button-circle", { variant: "secondary", size: "small", icon: VegaInternalIconManager.getIconKey('chevron-right'), label: "next", showTooltip: false, ref: (button) => {
163
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(button, VegaClick, this.nextButtonClick);
164
- } }),
165
- this.renderCurrentPeriod()));
166
- }
167
- /**
168
- * The function `renderCurrentPeriod` returns an HTML element displaying the view date content summary info.
169
- *
170
- * @returns {HTMLVegaFontElement} The text content inside the element is "Current Date Test".
171
- */
172
- renderCurrentPeriod() {
173
- return (h("vega-font", { class: "calendar-current-date", variant: "font-field-label", color: "text-primary" }, this.getViewDateSummary()));
174
- }
175
- /**
176
- * The function `renderViewSwitch` returns a JSX element for rendering a segment control component in a TypeScript React application.
177
- *
178
- * @returns {HTMLElement} An HTMLElement containing a vega-segment-control element with specific attributes and event handling.
179
- */
180
- renderViewSwitch() {
181
- return (h("vega-segment-control", { segments: VegaCalendarSwitchPanelRenderer.views.map((item) => (Object.assign(Object.assign({}, item), { text: this.translationSlimmer.t(item.text) }))), size: "small", variant: "text-only", selected: this.viewMode, ref: (node) => {
182
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(node, VegaChange, this.handleViewChange);
183
- } }));
184
- }
185
- /**
186
- * Render an more action button if dropdown source is not empty
187
- *
188
- * @returns {Nullable<HTMLElement>} the additional element
189
- */
190
- renderMoreActionMenu() {
191
- var _a, _b;
192
- if ((_b = (_a = this.moreActionDropdownProps) === null || _a === void 0 ? void 0 : _a.source) === null || _b === void 0 ? void 0 : _b.length) {
193
- return (h("vega-dropdown", Object.assign({ alignment: "end", trigger: "click" }, this.moreActionDropdownProps, { ref: (node) => {
194
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(node, VegaDropdownClick, this.moreActionMenuClick);
195
- } }),
196
- h("vega-button-circle", { size: "small", icon: VegaInternalIconManager.getIconKey('ellipsis-vertical'), variant: "icon-only" })));
197
- }
198
- }
199
- /**
200
- * Get the view content date summary info, such as `January, 2024` or `10 January, 2024` or `28 December, 2023 - 3 January, 2024`
201
- *
202
- * @returns {string} string
203
- */
204
- getViewDateSummary() {
205
- const currentDate = this.currentPeriod.current;
206
- let result = '';
207
- switch (this.viewMode) {
208
- case 'day': {
209
- const monthName = this.translationSlimmer.t(currentDate.getMonthName());
210
- result = `${currentDate.date} ${monthName}, ${currentDate.year}`;
211
- break;
212
- }
213
- case 'week': {
214
- const weekItems = this.calendarView.dateItems[0];
215
- const start = weekItems[0];
216
- const end = weekItems[weekItems.length - 1];
217
- const [startMonthName, endMonthName] = [start, end].map((item) => this.translationSlimmer.t(item.getMonthName()));
218
- result = `${start.date} ${startMonthName}${start.year === end.year ? '' : ', ' + start.year} - ${end.date} ${endMonthName}, ${end.year}`;
219
- break;
220
- }
221
- case 'month': {
222
- const monthName = this.translationSlimmer.t(currentDate.getMonthName());
223
- result = `${monthName}, ${currentDate.year}`;
224
- break;
225
- }
226
- }
227
- return result;
228
- }
229
- }
230
- (() => {
231
- VegaInternalIconManager.register({
232
- 'chevron-right': chevronRight,
233
- 'chevron-left': chevronLeft,
234
- 'ellipsis-vertical': ellipsisVertical,
235
- });
236
- })();
237
- VegaCalendarSwitchPanelRenderer.views = [
238
- { text: 'Day', key: 'day' },
239
- { text: 'Week', key: 'week' },
240
- { text: 'Month', key: 'month' },
241
- ];
242
- __decorate$l([
243
- MapToComponentField()
244
- ], VegaCalendarSwitchPanelRenderer.prototype, "viewMode", void 0);
245
- __decorate$l([
246
- MapToComponentField()
247
- ], VegaCalendarSwitchPanelRenderer.prototype, "calendarView", void 0);
248
- __decorate$l([
249
- MapToComponentField()
250
- ], VegaCalendarSwitchPanelRenderer.prototype, "currentPeriod", void 0);
251
- __decorate$l([
252
- MapToComponentField()
253
- ], VegaCalendarSwitchPanelRenderer.prototype, "moreActionDropdownProps", void 0);
254
- __decorate$l([
255
- MapToComponentField()
256
- ], VegaCalendarSwitchPanelRenderer.prototype, "moreActionClickEmitter", void 0);
257
- __decorate$l([
258
- MapToComponentField()
259
- ], VegaCalendarSwitchPanelRenderer.prototype, "currentPeriodController", void 0);
260
- __decorate$l([
261
- MapToComponentField()
262
- ], VegaCalendarSwitchPanelRenderer.prototype, "calendarViewController", void 0);
263
- __decorate$l([
264
- MapToComponentField()
265
- ], VegaCalendarSwitchPanelRenderer.prototype, "translationSlimmer", void 0);
266
- __decorate$l([
267
- MapToComponentField()
268
- ], VegaCalendarSwitchPanelRenderer.prototype, "postOperationDate", void 0);
269
- __decorate$l([
270
- MapToComponentField()
271
- ], VegaCalendarSwitchPanelRenderer.prototype, "showSwitchView", void 0);
272
-
273
- var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
274
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
275
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
276
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
277
- return c > 3 && r && Object.defineProperty(target, key, r), r;
278
- };
279
- /** renders different views based on the specified view mode using month, week, and day view render. */
280
- class VegaCalendarViewRenderer extends VegaSlimmer {
281
- /**
282
- * Get the calendar view content element ref
283
- *
284
- * @returns {Nullable<HTMLElement>} The div element.
285
- */
286
- getCalendarViewElementRef() {
287
- return this.calendarViewElementRef;
288
- }
289
- /**
290
- * render the calendar month/week/day view
291
- *
292
- * @returns {HTMLElement} html element
293
- */
294
- render() {
295
- return (h("div", { class: `calendar-view calendar-view-${this.viewMode} ${this.showWeekends === false ? 'calendar-hide-weekends' : ''}`, ref: (node) => (this.calendarViewElementRef = node) }, this.viewMode === 'month'
296
- ? this.monthViewRenderer.render()
297
- : this.viewWithTimeRenderer.render()));
298
- }
299
- }
300
- __decorate$k([
301
- MapToComponentField()
302
- ], VegaCalendarViewRenderer.prototype, "viewMode", void 0);
303
- __decorate$k([
304
- MapToComponentField()
305
- ], VegaCalendarViewRenderer.prototype, "showWeekends", void 0);
306
- __decorate$k([
307
- MapToComponentField()
308
- ], VegaCalendarViewRenderer.prototype, "monthViewRenderer", void 0);
309
- __decorate$k([
310
- MapToComponentField()
311
- ], VegaCalendarViewRenderer.prototype, "viewWithTimeRenderer", void 0);
312
-
313
- var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
314
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
315
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
316
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
317
- return c > 3 && r && Object.defineProperty(target, key, r), r;
318
- };
319
- /**
320
- * Provides an abstract base class for rendering date blocks in a calendar component.
321
- * This class handles click and double-click events on date blocks and emits the appropriate events.
322
- */
323
- class VegaCalendarDateBlockRenderer extends VegaSlimmer {
324
- /**
325
- * Handles the date click or double-click event and emits the appropriate event based on the `enableDateClick` property.
326
- *
327
- * @param {MouseEvent} event - The mouse event triggered by the user.
328
- * @param {VegaCalendarDateClickInfo} eventInfo - Information about the clicked calendar date.
329
- */
330
- emit(event, eventInfo) {
331
- if (this.shouldHandleClickEvent(event)) {
332
- this.dateClickEmitter.emit(eventInfo);
333
- }
334
- else if (this.shouldHandleDblClickEvent(event)) {
335
- this.dateDblClickEmitter.emit(eventInfo);
336
- }
337
- }
338
- /**
339
- * Checks if the click event should be handled based on the `enableDateClick` property and the event type.
340
- *
341
- * @param {MouseEvent} event - The mouse event to check.
342
- * @returns {boolean} - True if the event should be handled, false otherwise.
343
- */
344
- shouldHandleClickEvent(event) {
345
- return this.enableDateClick === true && event.type === 'click';
346
- }
347
- /**
348
- * Checks if the double-click event should be handled based on the `enableDateClick` property and the event type.
349
- *
350
- * @param {MouseEvent} event - The mouse event to check.
351
- * @returns {boolean} - True if the event should be handled, false otherwise.
352
- */
353
- shouldHandleDblClickEvent(event) {
354
- return this.enableDateClick !== true && event.type === 'dblclick';
355
- }
356
- /**
357
- * Generate the properties for rendering a date block based on its disabled state and calendar date.
358
- *
359
- * @param {boolean} isDisabled - Indicates if the date block is disabled.
360
- * @param {CalendarDate} calendarDate - The calendar date object.
361
- * @param {number} index - The index of the date block.
362
- * @returns {DateBlockRenderProps} - The properties for rendering the date block.
363
- */
364
- generateDateBlockRenderProps(isDisabled, calendarDate, index) {
365
- const result = {};
366
- if (!isDisabled) {
367
- if (this.enableDateClick) {
368
- result.tabIndex = 0;
369
- result.role = 'button';
370
- result.onClick = (e) => {
371
- this.handleDateBlockClick(e, calendarDate, index);
372
- };
373
- result.onKeyDown = createEnterKeyHandlerToTriggerClick();
374
- }
375
- else {
376
- result.onDblClick = (e) => {
377
- this.handleDateBlockClick(e, calendarDate, index);
378
- };
379
- }
380
- }
381
- return result;
382
- }
383
- }
384
- __decorate$j([
385
- MapToComponentField()
386
- ], VegaCalendarDateBlockRenderer.prototype, "enableDateClick", void 0);
387
- __decorate$j([
388
- MapToComponentField()
389
- ], VegaCalendarDateBlockRenderer.prototype, "dateClickEmitter", void 0);
390
- __decorate$j([
391
- MapToComponentField()
392
- ], VegaCalendarDateBlockRenderer.prototype, "dateDblClickEmitter", void 0);
393
-
394
- var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
395
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
396
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
397
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
398
- return c > 3 && r && Object.defineProperty(target, key, r), r;
399
- };
400
- /** The code provided is defining a TypeScript class called `VegaCalendarMonthViewRenderer` that extends `VegaSlimmer`. This class is responsible for rendering a month view of a calendar component. */
401
- class VegaCalendarMonthViewRenderer extends VegaCalendarDateBlockRenderer {
402
- /**
403
- * the HTML elements that represent the month view of a calendar component.
404
- *
405
- * @returns {HTMLElement} the month view calendar content
406
- */
407
- render() {
408
- const weekHead = this.calendarView.weekdays;
409
- return (h("div", { class: "calendar-view-month-container" },
410
- h("div", { class: "calendar-view-row calendar-view-title border-divider-bottom" }, weekHead.map((title) => (h("div", { key: title }, this.translationSlimmer.t(title))))),
411
- this.renderMonthViewContent()));
412
- }
413
- /**
414
- * emit vega click event when click the date block
415
- *
416
- * @param {MouseEvent} e the mouse event object
417
- * @param {CalendarDate} calendarDate the calendar date object
418
- */
419
- handleDateBlockClick(e, calendarDate) {
420
- const { target, clientX, clientY } = e;
421
- if (this.isMonthBlockBlankArea(target)) {
422
- const { year, month, date } = calendarDate;
423
- const eventInfo = {
424
- year,
425
- month,
426
- date,
427
- hour: 0,
428
- mouseEventInfo: { clientX, clientY },
429
- };
430
- this.emit(e, eventInfo);
431
- }
432
- }
433
- /**
434
- * generating the HTML elements that represent the content of the month view in a calendar component
435
- *
436
- * @returns {HTMLElement[]} month view content and event content
437
- */
438
- renderMonthViewContent() {
439
- const monthSource = this.calendarView.dateItems;
440
- const currentDate = this.currentPeriod.current;
441
- return monthSource.map((dateArray, index) => {
442
- const eventsArray = this.monthEventRenderer.getCurrentRowEvents(dateArray);
443
- const displayEventsArray = this.monthEventRenderer.filterRowDisplayEvents(eventsArray);
444
- return (h("div", { key: index, class: "calendar-view-row border-divider-bottom" }, dateArray.map((item, itemIndex) => {
445
- var _a;
446
- const isDisabled = (_a = this.isDateDisabled) === null || _a === void 0 ? void 0 : _a.call(this, item.toDate());
447
- const renderProps = this.generateDateBlockRenderProps(isDisabled, item);
448
- return (h("div", Object.assign({ class: {
449
- 'row-cell border-divider-right': true,
450
- 'current-month-day': item.compare(currentDate).inMonth,
451
- 'active': item.isToday(this.timezone),
452
- 'disabled': isDisabled,
453
- }, key: `${item.month}-${item.date}` }, renderProps),
454
- this.renderDateBlock(item),
455
- this.monthEventRenderer.render(item, eventsArray[itemIndex], displayEventsArray[itemIndex], itemIndex)));
456
- })));
457
- });
458
- }
459
- /**
460
- * It takes a `CalendarDate` object as a parameter and returns an HTML element representing a date block in the calendar view.
461
- *
462
- * @param {CalendarDate} item the day object
463
- * @returns {HTMLElement} the date block element
464
- */
465
- renderDateBlock(item) {
466
- const isMonthFirstDay = item.date === 1;
467
- return (h("div", { class: "date" },
468
- isMonthFirstDay && h("div", { class: "month-block" }, item.getMonthName(true)),
469
- h("div", { role: "button", tabIndex: 0, class: "grid-col",
470
- // eslint-disable-next-line react/jsx-no-bind
471
- onDblClick: (e) => {
472
- this.handleDateLabelClick(e, item);
473
- },
474
- // eslint-disable-next-line react/jsx-no-bind
475
- onClick: (e) => {
476
- this.handleDateLabelClick(e, item);
477
- }, onKeyDown: createEnterKeyHandlerToTriggerClick() }, item.date)));
478
- }
479
- /**
480
- * switch to current date day view
481
- *
482
- * @param {CalendarDate} calendarDate the calendar date object
483
- */
484
- goToCurrentDayView(calendarDate) {
485
- this.currentPeriodController.updateCalendarPeriod('day', calendarDate);
486
- }
487
- /**
488
- * Handler for clicking on the date label.
489
- *
490
- * @param {MouseEvent} e - the mouse event object
491
- * @param {CalendarDate} calendarDate - the calendar date object
492
- */
493
- handleDateLabelClick(e, calendarDate) {
494
- e.stopPropagation();
495
- // only when showSwitchView is true, the double click event can switch to day view
496
- if (!this.showSwitchView)
497
- return;
498
- if (this.shouldHandleClickEvent(e)) {
499
- this.goToCurrentDayView(calendarDate);
500
- }
501
- else if (this.shouldHandleDblClickEvent(e)) {
502
- this.goToCurrentDayView(calendarDate);
503
- }
504
- }
505
- /**
506
- * determine if the clicked element is blank area
507
- *
508
- * @param {HTMLElement} element the target element
509
- * @returns {boolean} true or false
510
- */
511
- isMonthBlockBlankArea(element) {
512
- // the more button and the calendar event component should not trigger dateDblClick event
513
- return !element.classList.contains('more-button') && element.tagName !== 'VEGA-CALENDAR-EVENT';
514
- }
515
- }
516
- __decorate$i([
517
- MapToComponentField()
518
- ], VegaCalendarMonthViewRenderer.prototype, "viewMode", void 0);
519
- __decorate$i([
520
- MapToComponentField()
521
- ], VegaCalendarMonthViewRenderer.prototype, "calendarView", void 0);
522
- __decorate$i([
523
- MapToComponentField()
524
- ], VegaCalendarMonthViewRenderer.prototype, "currentPeriod", void 0);
525
- __decorate$i([
526
- MapToComponentField()
527
- ], VegaCalendarMonthViewRenderer.prototype, "currentPeriodController", void 0);
528
- __decorate$i([
529
- MapToComponentField()
530
- ], VegaCalendarMonthViewRenderer.prototype, "monthEventRenderer", void 0);
531
- __decorate$i([
532
- MapToComponentField()
533
- ], VegaCalendarMonthViewRenderer.prototype, "translationSlimmer", void 0);
534
- __decorate$i([
535
- MapToComponentField()
536
- ], VegaCalendarMonthViewRenderer.prototype, "isDateDisabled", void 0);
537
- __decorate$i([
538
- MapToComponentField()
539
- ], VegaCalendarMonthViewRenderer.prototype, "showSwitchView", void 0);
540
- __decorate$i([
541
- MapToComponentField()
542
- ], VegaCalendarMonthViewRenderer.prototype, "timezone", void 0);
543
-
544
- var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
545
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
546
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
547
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
548
- return c > 3 && r && Object.defineProperty(target, key, r), r;
549
- };
550
- /** The `VegaCalendarViewWithTimeRenderer` class in TypeScript React renders a day view for a calendar component with title, content, and hour blocks. */
551
- class VegaCalendarViewWithTimeRenderer extends VegaCalendarDateBlockRenderer {
552
- /**
553
- * The render function in TypeScript React returns an array of HTMLElements containing the week calendar view for a specific day.
554
- *
555
- * @returns {HTMLElement} An array of HTMLElement elements containing the rendered content of a calendar view for a
556
- * specific day in the week. The content includes the title and the main content of the calendar view
557
- * for that day.
558
- */
559
- render() {
560
- return (h("div", { class: "calendar-view-container" },
561
- this.renderViewTitle(),
562
- this.renderViewContent()));
563
- }
564
- /**
565
- * emit vega click event when click the date block
566
- *
567
- * @param {CalendarDate} calendarDate the calendar date object
568
- */
569
- handleDateBlockClick(e, calendarDate, hour) {
570
- const { year, month, date } = calendarDate;
571
- const { clientX, clientY } = e;
572
- const eventInfo = {
573
- year,
574
- month,
575
- date,
576
- hour,
577
- mouseEventInfo: { clientX, clientY },
578
- };
579
- this.emit(e, eventInfo);
580
- }
581
- /**
582
- * The function `renderViewTitle` renders a calendar view title and events based on the provided source data.
583
- *
584
- * @returns {HTMLElement} The `renderViewTitle` function returns an HTML element (HTMLElement) that contains a calendar view title container with rows for each day's information.
585
- */
586
- renderViewTitle() {
587
- const source = this.calendarView.dateItems[0];
588
- const weekHead = this.calendarView.weekdays;
589
- return (h("div", { class: "calendar-view-title-container" },
590
- h("div", { class: "calendar-view-row" },
591
- h("div", { class: "time-line-empty" }),
592
- h("div", { class: "calendar-view-title" }, source.map((item, index) => (h("div", { key: item.date, class: { active: item.isToday(this.timezone) } },
593
- h("div", null, this.translationSlimmer.t(weekHead[index])),
594
- h("div", { class: "week-day" }, item.date)))))),
595
- h("div", { class: "calendar-view-row calendar-view-event-all-container border-divider-bottom" },
596
- h("div", { class: "time-line-all" }, this.translationSlimmer.t('All Day')),
597
- this.dayViewFullDayEventRenderer.render())));
598
- }
599
- /**
600
- * The `renderViewContent` function in TypeScript React renders a calendar view with day blocks and time markers based on the provided data.
601
- *
602
- * @returns {HTMLElement} An HTMLElement containing a calendar view row with day containers, a timeline renderer, a content container, a day list, and hour blocks for each item in the source array.
603
- */
604
- renderViewContent() {
605
- const source = this.calendarView.dateItems[0];
606
- return (h("div", { class: "calendar-view-row calendar-view-day-container" },
607
- this.timeLineRenderer.render(),
608
- h("div", { class: "calendar-view-content-container" },
609
- h("div", { class: "calendar-view-content" }, source.map((item) => {
610
- var _a;
611
- const isDisabled = (_a = this.isDateDisabled) === null || _a === void 0 ? void 0 : _a.call(this, item.toDate());
612
- return (h("div", { class: {
613
- 'grid-col border-divider-left': true,
614
- 'disabled': isDisabled,
615
- }, key: item.date },
616
- h("div", { class: "hour-empty border-divider-top" }),
617
- this.renderHourBlock(item, isDisabled)));
618
- })),
619
- this.dayViewTimedEventRenderer.render(),
620
- this.timeMarkerRenderer.render(source))));
621
- }
622
- /**
623
- * The function `renderHourBlock` returns an array of HTML elements representing hour blocks with time information.
624
- *
625
- * @param {CalendarDate} calendarDate then current calendar date object
626
- * @returns {HTMLElement[]} An array of HTMLElements is being returned. Each HTMLElement represents an hour block with a time value inside a div element.
627
- */
628
- renderHourBlock(calendarDate, isDisabled) {
629
- const timeLineSource = Array(24).fill('');
630
- return timeLineSource.map((_item, index) => {
631
- var _a;
632
- let isHourDisabled = false;
633
- if (!isDisabled) {
634
- const dateWithHour = new Date(calendarDate.toDate().setHours(index));
635
- isHourDisabled = (_a = this.isDateDisabled) === null || _a === void 0 ? void 0 : _a.call(this, dateWithHour);
636
- }
637
- const renderProps = this.generateDateBlockRenderProps(isDisabled || isHourDisabled, calendarDate, index);
638
- return (h("div", Object.assign({ key: index, class: {
639
- 'grid-cell border-divider-top': true,
640
- 'disabled': isDisabled || isHourDisabled,
641
- } }, renderProps)));
642
- });
643
- }
644
- }
645
- __decorate$h([
646
- MapToComponentField()
647
- ], VegaCalendarViewWithTimeRenderer.prototype, "viewMode", void 0);
648
- __decorate$h([
649
- MapToComponentField()
650
- ], VegaCalendarViewWithTimeRenderer.prototype, "timeLineRenderer", void 0);
651
- __decorate$h([
652
- MapToComponentField()
653
- ], VegaCalendarViewWithTimeRenderer.prototype, "timeMarkerRenderer", void 0);
654
- __decorate$h([
655
- MapToComponentField()
656
- ], VegaCalendarViewWithTimeRenderer.prototype, "dayViewTimedEventRenderer", void 0);
657
- __decorate$h([
658
- MapToComponentField()
659
- ], VegaCalendarViewWithTimeRenderer.prototype, "dayViewFullDayEventRenderer", void 0);
660
- __decorate$h([
661
- MapToComponentField()
662
- ], VegaCalendarViewWithTimeRenderer.prototype, "calendarView", void 0);
663
- __decorate$h([
664
- MapToComponentField()
665
- ], VegaCalendarViewWithTimeRenderer.prototype, "translationSlimmer", void 0);
666
- __decorate$h([
667
- MapToComponentField()
668
- ], VegaCalendarViewWithTimeRenderer.prototype, "isDateDisabled", void 0);
669
- __decorate$h([
670
- MapToComponentField()
671
- ], VegaCalendarViewWithTimeRenderer.prototype, "enableDateClick", void 0);
672
- __decorate$h([
673
- MapToComponentField()
674
- ], VegaCalendarViewWithTimeRenderer.prototype, "timezone", void 0);
675
-
676
- var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
677
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
678
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
679
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
680
- return c > 3 && r && Object.defineProperty(target, key, r), r;
681
- };
682
- /** The `VegaCalendarTimeLineRenderer` class in TypeScript React renders a time line with custom time format options and includes methods for rendering time markers and the time line itself. */
683
- class VegaCalendarTimeLineRenderer extends VegaSlimmer {
684
- /**
685
- * rendering the time line component as an HTML element
686
- *
687
- * @returns {HTMLElement} the html element
688
- */
689
- render() {
690
- const timeLineSource = this.getTimeLineTitles();
691
- return (h("div", { class: "time-line" },
692
- h("div", { class: "hour-empty" }),
693
- timeLineSource.map((time, index) => {
694
- return (h("div", { key: time },
695
- h("div", { class: "time-text", "data-time": index === 0 ? 24 : index }, time)));
696
- })));
697
- }
698
- /**
699
- * The function `getTimeLineTitles` generates a time line array based on the specified time format (24-hour) and stores it in the `timeLineSource` property.
700
- *
701
- * @returns {string[]} returns an array of strings representing the time line
702
- */
703
- getTimeLineTitles() {
704
- const timeLine = [];
705
- if (this.timeFormat === '12-hour') {
706
- timeLine.push('12 AM');
707
- for (let i = 1; i < 12; i++) {
708
- timeLine.push(`${i} AM`);
709
- }
710
- timeLine.push('12 PM');
711
- for (let i = 1; i < 12; i++) {
712
- timeLine.push(`${i} PM`);
713
- }
714
- }
715
- else {
716
- for (let i = 0; i < 24; i++) {
717
- timeLine.push(`${pad(i)}`);
718
- }
719
- }
720
- return timeLine;
721
- }
722
- }
723
- __decorate$g([
724
- MapToComponentField()
725
- ], VegaCalendarTimeLineRenderer.prototype, "timeFormat", void 0);
726
-
727
- var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
728
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
729
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
730
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
731
- return c > 3 && r && Object.defineProperty(target, key, r), r;
732
- };
733
- /** The `VegaCalendarViewController` class manages the calendar view based on the current period and view mode in TypeScript. */
734
- class VegaCalendarViewController extends VegaSlimmer {
735
- constructor() {
736
- super(...arguments);
737
- this.monthViewGenerator = new MonthViewGenerator();
738
- this.weekViewGenerator = new WeekViewGenerator();
739
- this.dayViewGenerator = new DayViewGenerator();
740
- }
741
- /**
742
- * set default calendar view
743
- */
744
- initialCalendarView() {
745
- this.setCalendarView(this.getCalendarViewByPeriod(this.currentPeriod));
746
- }
747
- /**
748
- * generator new calendar view if the calendar current period changes
749
- *
750
- * @param {CalendarPeriod} newValue the new calendar period
751
- */
752
- generateCalendarView(newValue) {
753
- this.setCalendarView(this.getCalendarViewByPeriod(newValue));
754
- }
755
- /**
756
- * The function `getCalendarViewByPeriod` returns a specific calendar view based on the current period.
757
- *
758
- * @param {CalendarPeriod} newPeriod the new period
759
- * @returns {CalendarView} get the match calendar view by the period
760
- */
761
- getCalendarViewByPeriod(newPeriod) {
762
- switch (newPeriod.type) {
763
- case 'week':
764
- return this.weekViewGenerator.generate(newPeriod);
765
- case 'day':
766
- return this.dayViewGenerator.generate(newPeriod);
767
- default:
768
- return this.monthViewGenerator.generate(newPeriod);
769
- }
770
- }
771
- /**
772
- * update the calendar view
773
- *
774
- * @param {CalendarView} newView new calendar view
775
- */
776
- setCalendarView(newView) {
777
- this.calendarView = newView;
778
- }
779
- }
780
- __decorate$f([
781
- MapToComponentField({ writable: true })
782
- ], VegaCalendarViewController.prototype, "calendarView", void 0);
783
- __decorate$f([
784
- MapToComponentField()
785
- ], VegaCalendarViewController.prototype, "currentPeriod", void 0);
786
- __decorate$f([
787
- MapToComponentField()
788
- ], VegaCalendarViewController.prototype, "showWeekends", void 0);
789
- __decorate$f([
790
- MapToComponentField()
791
- ], VegaCalendarViewController.prototype, "currentPeriodController", void 0);
792
- __decorate$f([
793
- MapToComponentMethod('componentWillLoad')
794
- ], VegaCalendarViewController.prototype, "initialCalendarView", null);
795
- __decorate$f([
796
- MapToComponentMethod('watchCurrentPeriodChange')
797
- ], VegaCalendarViewController.prototype, "generateCalendarView", null);
798
-
799
- var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
800
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
801
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
802
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
803
- return c > 3 && r && Object.defineProperty(target, key, r), r;
804
- };
805
- /** This TypeScript class `VegaCalendarCurrentPeriodController` updates the current period based on the view mode in a calendar component. */
806
- class VegaCalendarCurrentPeriodController extends VegaSlimmer {
807
- /**
808
- * set new current period
809
- *
810
- * @param {CalendarPeriod} newPeriod new value
811
- */
812
- setCurrentPeriod(newPeriod) {
813
- this.currentPeriod = newPeriod;
814
- }
815
- /**
816
- * set new current period by the view mode and the current date
817
- *
818
- * @param {VegaCalendarViewModeType} viewMode view mode value
819
- * @param {CalendarDate} date current date
820
- */
821
- updateCalendarPeriod(viewMode, date) {
822
- switch (viewMode) {
823
- case 'month':
824
- this.setCurrentPeriod(new MonthPeriod(date, this.showWeekends, this.timezone));
825
- break;
826
- case 'week':
827
- this.setCurrentPeriod(new WeekPeriod(date, this.showWeekends, this.timezone));
828
- break;
829
- case 'day':
830
- date = this.showWeekends === false ? getClosestWorkday(date) : date;
831
- this.setCurrentPeriod(new DayPeriod(date, this.showWeekends, this.timezone));
832
- break;
833
- }
834
- }
835
- /**
836
- * default current period is month period, re-create period if the default view mode is not month
837
- * set default calendar view
838
- */
839
- initialCurrentPeriod() {
840
- this.updateCalendarPeriod(this.viewMode, CalendarDate.from(new Date(), this.timezone));
841
- }
842
- /**
843
- * emit period change event
844
- *
845
- * @param {CalendarPeriod} newValue the new calendar period
846
- * @param {CalendarPeriod} oldValue the prev calendar period
847
- */
848
- emitChangeEvent(newValue, oldValue) {
849
- if (newValue &&
850
- oldValue &&
851
- newValue.startDate.equal(oldValue.startDate) &&
852
- newValue.endDate.equal(oldValue.endDate)) {
853
- return;
854
- }
855
- if (newValue && newValue.type !== this.viewMode) {
856
- this.viewMode = newValue.type;
857
- }
858
- this.changeEventEmitter.emit({
859
- viewMode: newValue.type,
860
- currentPeriod: this.getCurrentPeriodSummary(),
861
- });
862
- }
863
- /**
864
- * update the current period when view mode change
865
- *
866
- * @param {VegaCalendarViewModeType} viewMode new view mode value
867
- */
868
- updateCurrentPeriodByViewMode(viewMode) {
869
- if (this.currentPeriod && viewMode !== this.currentPeriod.type) {
870
- this.updateCalendarPeriod(viewMode, this.currentPeriod.current);
871
- }
872
- }
873
- /**
874
- * The calendar period should update when the property showWeekends change
875
- */
876
- updateCurrentPeriodAfterHideWeekEndsChange() {
877
- this.updateCalendarPeriod(this.viewMode, this.currentPeriod.current);
878
- }
879
- /**
880
- * The function `getStartDateAndEndDate` returns an array of `VegaCalendarDateType` objects based on the `startDate` and `endDate` properties of the `currentPeriod` object.
881
- *
882
- * @returns {VegaCalendarChangeEventType['currentPeriod']} An array of objects containing the date, month, and year properties of the currentPeriod's
883
- * start date and end date.
884
- */
885
- getCurrentPeriodSummary() {
886
- const { current, startDate, endDate } = this.currentPeriod;
887
- return {
888
- year: current.year,
889
- month: current.month,
890
- startDate: {
891
- date: startDate.date,
892
- month: startDate.month,
893
- year: startDate.year,
894
- },
895
- endDate: {
896
- date: endDate.date,
897
- month: endDate.month,
898
- year: endDate.year,
899
- },
900
- };
901
- }
902
- }
903
- __decorate$e([
904
- MapToComponentField({ writable: true })
905
- ], VegaCalendarCurrentPeriodController.prototype, "currentPeriod", void 0);
906
- __decorate$e([
907
- MapToComponentField()
908
- ], VegaCalendarCurrentPeriodController.prototype, "changeEventEmitter", void 0);
909
- __decorate$e([
910
- MapToComponentField({ writable: true })
911
- ], VegaCalendarCurrentPeriodController.prototype, "viewMode", void 0);
912
- __decorate$e([
913
- MapToComponentField()
914
- ], VegaCalendarCurrentPeriodController.prototype, "showWeekends", void 0);
915
- __decorate$e([
916
- MapToComponentField()
917
- ], VegaCalendarCurrentPeriodController.prototype, "timezone", void 0);
918
- __decorate$e([
919
- MapToComponentMethod('componentWillLoad')
920
- ], VegaCalendarCurrentPeriodController.prototype, "initialCurrentPeriod", null);
921
- __decorate$e([
922
- MapToComponentMethod('watchCurrentPeriodChange')
923
- ], VegaCalendarCurrentPeriodController.prototype, "emitChangeEvent", null);
924
- __decorate$e([
925
- MapToComponentMethod('watchViewModeChange')
926
- ], VegaCalendarCurrentPeriodController.prototype, "updateCurrentPeriodByViewMode", null);
927
- __decorate$e([
928
- MapToComponentMethod('watchShowWeekendsChange')
929
- ], VegaCalendarCurrentPeriodController.prototype, "updateCurrentPeriodAfterHideWeekEndsChange", null);
930
-
931
- var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
932
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
933
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
934
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
935
- return c > 3 && r && Object.defineProperty(target, key, r), r;
936
- };
937
- /** This code snippet defines a TypeScript class `VegaCalendarMonthEventRenderer` that extends `VegaSlimmer`. Here's a breakdown of what the class and its methods are doing: */
938
- class VegaCalendarMonthEventRenderer extends VegaSlimmer {
939
- constructor() {
940
- super(...arguments);
941
- this.maxMonthDisplayEventsCount = 2;
942
- this.popoverHideObserver = null;
943
- }
944
- /**
945
- * current row dates all events.
946
- *
947
- * @param {CalendarDate[]} rowDate the current view date object
948
- * @returns {Nullable<CalendarEvent>[][]} the current view events
949
- */
950
- getCurrentRowEvents(rowDate) {
951
- const result = [];
952
- rowDate.forEach((item) => {
953
- const currentDateEvents = this.calendarEventController.getCurrentDateEvents(item);
954
- result.push(currentDateEvents);
955
- });
956
- return this.fullDayEventLayoutRenderer.sortLongEvents(result);
957
- }
958
- /**
959
- * The function filterRowDisplayEvents processes a 2D array of CalendarEvent objects to limit the number of events displayed per row.
960
- *
961
- * @param {(CalendarEvent|null)[][]} rowEvents - `rowEvents` is an array of arrays of `CalendarEvent` objects. Each inner array represents events for a specific row in a calendar display.
962
- * @returns {Nullable<CalendarEvent>[][]} the current row should display events array
963
- */
964
- filterRowDisplayEvents(rowEvents) {
965
- const result = [];
966
- rowEvents.forEach((events) => {
967
- const displayEvents = events.length > this.maxMonthDisplayEventsCount
968
- ? events.slice(0, this.maxMonthDisplayEventsCount - 1)
969
- : events;
970
- result.push(displayEvents);
971
- });
972
- return this.hideTheCutOffEvents(rowEvents, result);
973
- }
974
- /**
975
- * Get the month event container element ref
976
- *
977
- * @returns {HTMLDivElement} the container element
978
- */
979
- getMonthEventContainerRef() {
980
- return this.eventContainerRef;
981
- }
982
- /**
983
- * render the current date events
984
- *
985
- * @param {CalendarDate} calendarDate current day
986
- * @param {Nullable<CalendarEvent>[]} allEvents current row events
987
- * @param {Nullable<CalendarEvent>[]} displayEvents current row should display events
988
- * @param {number} currentViewIndex current day index of week
989
- * @returns {HTMLDivElement} the events container
990
- */
991
- render(calendarDate, allEvents, displayEvents, currentViewIndex) {
992
- const hiddenEventsLength = allEvents
993
- .slice(displayEvents.length)
994
- .filter((item) => item).length;
995
- return (h("div", { class: "events-container", ref: (node) => (this.eventContainerRef = node) },
996
- h("div", { class: "event-list" }, this.fullDayEventLayoutRenderer.render(displayEvents, currentViewIndex, calendarDate)),
997
- this.renderMoreButton(allEvents, hiddenEventsLength, calendarDate)));
998
- }
999
- /**
1000
- * Add a month event display count change observer, than update the component
1001
- */
1002
- addMaxDisplayCountChange() {
1003
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(this.host, VegaInternalCalendarMonthEventsChange, (payload) => {
1004
- if (this.maxMonthDisplayEventsCount !== payload.detail) {
1005
- this.maxMonthDisplayEventsCount = payload.detail;
1006
- if (this.viewMode === 'month') {
1007
- forceUpdate(this.host);
1008
- }
1009
- }
1010
- });
1011
- }
1012
- /**
1013
- * Render the event more button if there is no enough space to display all event
1014
- *
1015
- * @param {Nullable<CalendarEvent>[]} events all event list array
1016
- * @param {number} moreItemsLength popover events length
1017
- * @param {CalendarDate} calendarDate current date
1018
- * @returns {Nullable<HTMLDivElement>} the more button or null
1019
- */
1020
- renderMoreButton(events, moreItemsLength, calendarDate) {
1021
- if (moreItemsLength) {
1022
- const backgroundColorEvents = events.filter((eventItem) => {
1023
- return eventItem && (eventItem.isAllDayEvent || eventItem.isGroupEvent());
1024
- });
1025
- const otherEvents = events.filter((eventItem) => {
1026
- return eventItem && !eventItem.isAllDayEvent && !eventItem.isGroupEvent();
1027
- });
1028
- return (h("div", { class: "month-event-more" },
1029
- h("vega-popover", { trigger: "click", placement: "right", padding: '0', ref: (el) => {
1030
- this.setPopoverHideObserver(el);
1031
- }, isScreenPosition: true },
1032
- h("div", { tabIndex: 0, slot: "popover-content", role: "button", class: "more-button", onKeyDown: createEnterKeyHandlerToTriggerClick() }, `${moreItemsLength} More`),
1033
- h("vega-flex", { slot: "popover" },
1034
- h("vega-box", { padding: 'size-12', width: 256 },
1035
- h("vega-flex", { direction: "col", gap: "0", class: "group-events" },
1036
- h("vega-font", { textAlign: "center", variant: "font-field-label", color: "text-primary", style: { padding: '4px 0', marginBottom: '8px' } }, `${calendarDate.date} ${calendarDate.getMonthName()} ${calendarDate.year}`),
1037
- h("vega-box", { maxHeight: 'calc(60vh - 6px)', style: { overflowY: 'auto' }, padding: 'size-4' },
1038
- h("vega-flex", { direction: "col", gap: "size-4", style: { paddingBottom: otherEvents.length ? '4px' : '0px' } }, backgroundColorEvents.map((item) => {
1039
- return this.eventItemRenderer.render(item, {
1040
- 'month-event': true,
1041
- 'calendar-event-large-size': true,
1042
- 'calendar-event-in-popover': true,
1043
- }, calendarDate, true);
1044
- })),
1045
- otherEvents.map((item) => {
1046
- return this.eventItemRenderer.render(item, {
1047
- 'month-event': true,
1048
- 'calendar-event-large-size': true,
1049
- 'calendar-event-in-popover': true,
1050
- }, calendarDate, true);
1051
- })))),
1052
- h("div", { class: "preview-container", ref: (el) => {
1053
- el
1054
- ? this.eventPreviewPopoverController.setEventPreviewContainerMap(events, calendarDate, el)
1055
- : this.eventPreviewPopoverController.deleteEventPreviewContainer(events, calendarDate);
1056
- } })))));
1057
- }
1058
- }
1059
- /*
1060
- * The below method is e2e-test covered in
1061
- * @see{module:vega-calendar-render-full-day-event-correct}
1062
- */
1063
- /* istanbul ignore next */
1064
- /**
1065
- * The `hideTheCutOffEvents` method in the `VegaCalendarMonthEventRenderer` class is responsible for removing any cut-off events from the displayed events in each row
1066
- *
1067
- * @param {Nullable<CalendarEvent>[][]} allEvents the all events
1068
- * @param {Nullable<CalendarEvent>[][]} rowEvents the display events
1069
- * @returns {Nullable<CalendarEvent>[][]} new event array
1070
- */
1071
- hideTheCutOffEvents(allEvents, rowEvents) {
1072
- const result = [];
1073
- const removeItems = [];
1074
- const shouldCheckEvents = rowEvents
1075
- .map((items) => items[items.length - 1])
1076
- .filter((item) => item && item.isGroupEvent());
1077
- if (shouldCheckEvents.length) {
1078
- shouldCheckEvents.forEach((checkItem) => {
1079
- if (allEvents.filter((items) => items.includes(checkItem)).length >
1080
- rowEvents.filter((items) => items.includes(checkItem)).length) {
1081
- removeItems.push(checkItem);
1082
- }
1083
- });
1084
- }
1085
- if (removeItems.length) {
1086
- rowEvents.forEach((items) => {
1087
- if (items.length &&
1088
- items[items.length - 1] &&
1089
- removeItems.includes(items[items.length - 1])) {
1090
- result.push(items.slice(0, items.length - 1));
1091
- }
1092
- else {
1093
- result.push(items);
1094
- }
1095
- });
1096
- return result;
1097
- }
1098
- return rowEvents;
1099
- }
1100
- setPopoverHideObserver(popover) {
1101
- if (popover) {
1102
- this.popoverHideObserver = new Observer((_payload) => true, async () => await popover.hide());
1103
- ChangeManager.register(domNodeSubjectFactory.getSubject(this.host, VegaInternalCalendarEventPreviewHide), this.popoverHideObserver);
1104
- }
1105
- else if (this.popoverHideObserver) {
1106
- ChangeManager.unregister(domNodeSubjectFactory.getSubject(this.host, VegaInternalCalendarEventPreviewHide), this.popoverHideObserver);
1107
- }
1108
- // we should clear current event in vega-calendar-event-preview when popover hide
1109
- popover &&
1110
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(popover, VegaPopoverHide, () => {
1111
- ChangeManager.notify(domNodeSubjectFactory.getSubject(this.renderer.getEventPreviewRef(), VegaInternalCalendarEventPreviewClear), {});
1112
- });
1113
- }
1114
- }
1115
- __decorate$d([
1116
- MapToComponentField()
1117
- ], VegaCalendarMonthEventRenderer.prototype, "viewMode", void 0);
1118
- __decorate$d([
1119
- MapToComponentField()
1120
- ], VegaCalendarMonthEventRenderer.prototype, "host", void 0);
1121
- __decorate$d([
1122
- MapToComponentField()
1123
- ], VegaCalendarMonthEventRenderer.prototype, "calendarEventController", void 0);
1124
- __decorate$d([
1125
- MapToComponentField()
1126
- ], VegaCalendarMonthEventRenderer.prototype, "eventItemRenderer", void 0);
1127
- __decorate$d([
1128
- MapToComponentField()
1129
- ], VegaCalendarMonthEventRenderer.prototype, "fullDayEventLayoutRenderer", void 0);
1130
- __decorate$d([
1131
- MapToComponentField()
1132
- ], VegaCalendarMonthEventRenderer.prototype, "eventPreviewPopoverRenderer", void 0);
1133
- __decorate$d([
1134
- MapToComponentField()
1135
- ], VegaCalendarMonthEventRenderer.prototype, "renderer", void 0);
1136
- __decorate$d([
1137
- MapToComponentField()
1138
- ], VegaCalendarMonthEventRenderer.prototype, "eventPreviewPopoverController", void 0);
1139
- __decorate$d([
1140
- MapToComponentMethod('componentWillLoad')
1141
- ], VegaCalendarMonthEventRenderer.prototype, "addMaxDisplayCountChange", null);
1142
-
1143
- /** The above code defines an abstract class `CalendarEventBaseRepeatPattern` in TypeScript that represents a repeat pattern for calendar events. Here is a summary of what the code is doing: */
1144
- class CalendarEventBaseRepeatPattern {
1145
- /**
1146
- * The constructor initializes the current date for a given date range and interval.
1147
- *
1148
- * @param {CalendarDate} repeatStartDate - The `repeatStartDate` parameter represents the starting date of a
1149
- * calendar event or interval. It is of type `CalendarDate`, which likely contains information such as
1150
- * the year, month, and day of the event.
1151
- * @param {number} interval - The `interval` parameter represents the frequency at which the event
1152
- * occurs. For example, if the interval is set to 2, it means the event occurs every 2 units of time
1153
- * (e.g., every 2 days, weeks, months, etc.).
1154
- * @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the event. If `count`
1155
- * is provided, the event will repeat `count` times within the specified interval. If `count` is
1156
- * `null`, the event will repeat indefinitely until the `until` date is reached.
1157
- * @param {Nullable<CalendarDate>} until - The `until` parameter in the constructor represents a date until which the recurring
1158
- * event will occur. If this date is reached, the recurring event will stop.
1159
- */
1160
- constructor(repeatStartDate, interval, count, until) {
1161
- this.repeatStartDate = repeatStartDate;
1162
- this.interval = interval;
1163
- this.count = count;
1164
- this.until = until;
1165
- }
1166
- /**
1167
- * The function `getRepeatSeries` retrieves a series of repeated events within a specified calendar period.
1168
- *
1169
- * @param {CalendarPeriod} period - The `period` parameter in the `getRepeatSeries` method represents
1170
- * a specific time period in the form of a `CalendarPeriod` object. This object typically contains a
1171
- * `startDate` and an `endDate`, which define the range of dates for which you want to generate repeat series.
1172
- * @param {number} eventSpansDays - the current repeat series cross days, default value is one
1173
- * @returns {CalendarDate[]} repeat start date array
1174
- */
1175
- getRepeatSeries(period, eventSpansDays = 1) {
1176
- this.generateRepeatDateCacheUntilEndDate(period.endDate);
1177
- return this.cache.filter((item) => {
1178
- return this.isSeriesInPeriod(item, eventSpansDays, period);
1179
- });
1180
- }
1181
- /**
1182
- * The function `isSeriesInPeriod` checks if a series of dates falls within a specified date range.
1183
- *
1184
- * @param {CalendarDate} series - The `series` parameter represents a specific date in the form of a
1185
- * `CalendarDate` object.
1186
- * @param {number} seriesSpansDays - The `seriesSpansDays` parameter represents the number of days
1187
- * that the series spans. It is used to calculate the end date of the series based on the start date.
1188
- * @param {CalendarPeriod} period - Date period
1189
- * @returns {boolean} a boolean value indicating whether the given series falls within the specified date
1190
- * range.
1191
- */
1192
- isSeriesInPeriod(series, seriesSpansDays, period) {
1193
- const seriesStart = series.toDate();
1194
- const seriesEnd = new Date(series.year, series.month - 1, series.date + seriesSpansDays - 1);
1195
- const { startDate, endDate } = period;
1196
- const rangeStart = startDate.toDate();
1197
- const rangeEnd = endDate.toDate();
1198
- return ((seriesStart >= rangeStart && seriesStart <= rangeEnd) ||
1199
- (seriesEnd >= rangeStart && seriesEnd <= rangeEnd) ||
1200
- (seriesStart <= rangeStart && seriesEnd >= rangeEnd));
1201
- }
1202
- /**
1203
- * The function generates a string representation of the end condition for a repeating event,
1204
- * either by a specific date or after a certain number of occurrences.
1205
- *
1206
- * @returns {string} a string representing the end condition of a repeating event.
1207
- */
1208
- generateRepeatEndsString() {
1209
- if (this.until) {
1210
- return ` ${VegaInternalTranslation.t('until {0}', `${this.until.getMonthName()} ${this.until.date}, ${this.until.year}`)}`;
1211
- }
1212
- else if (this.count) {
1213
- return ` ${VegaInternalTranslation.t('after {0} occurrences', this.count)}`;
1214
- }
1215
- return '';
1216
- }
1217
- }
1218
- CalendarEventBaseRepeatPattern.daySeconds = 24 * 60 * 60 * 1000;
1219
-
1220
- /** The `CalendarEventDailyRepeatPattern` class in TypeScript represents a daily repeating pattern for calendar events. */
1221
- class CalendarEventDailyRepeatPattern extends CalendarEventBaseRepeatPattern {
1222
- /**
1223
- * The constructor initializes the current date for a given date range and interval.
1224
- *
1225
- * @param {CalendarDate} startDate - The `startDate` parameter is of type `CalendarDate` and represents the starting date for a specific interval or range.
1226
- * @param {number} interval - The `interval` parameter represents the frequency at which the event
1227
- * occurs. For example, if the interval is set to 1, it means the event occurs every day. If the
1228
- * interval is set to 2, it means the event occurs every other day.
1229
- * @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the event. If `count`
1230
- * is provided, the event will repeat `count` times within the specified interval. If `count` is
1231
- * `null`, the event will repeat indefinitely until the `until` date is reached.
1232
- * @param {Nullable<CalendarDate>} until - The `until` parameter in the constructor is of type `Nullable<CalendarDate>`, which
1233
- * means it can either accept a `CalendarDate` object or be `null`. This parameter is used to specify
1234
- * a date until which the recurring event should repeat. If `until` is provided, the event
1235
- */
1236
- constructor(startDate, interval, count, until) {
1237
- super(startDate, interval, count, until);
1238
- this.initCache();
1239
- }
1240
- /**
1241
- * Generate repeat display string.
1242
- *
1243
- * @returns {string} repeat display string
1244
- */
1245
- generateRepeatString() {
1246
- const repeatString = this.interval > 1
1247
- ? VegaInternalTranslation.t('Repeat every {0} days', this.interval)
1248
- : VegaInternalTranslation.t('Repeat daily');
1249
- return repeatString + this.generateRepeatEndsString();
1250
- }
1251
- /**
1252
- * The function generates and caches repeated dates before a specified end date.
1253
- *
1254
- * @param {CalendarDate} endDate - The `endDate` parameter represents the date until which you want to
1255
- * generate repeat dates in the cache. The function `generateRepeatDateCacheBeforeEndDate` is
1256
- * responsible for populating the cache with repeat dates until the specified `endDate`. It checks the
1257
- * last date in the cache and generates subsequent repeat dates until
1258
- */
1259
- generateRepeatDateCacheUntilEndDate(endDate) {
1260
- const lastMatchDate = this.cache[this.cache.length - 1];
1261
- if (lastMatchDate.toDate() < endDate.toDate() &&
1262
- (!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
1263
- let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
1264
- while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
1265
- const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
1266
- //The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
1267
- if (newNextMatchDate && newNextMatchDate.toDate() <= nextMatchDate.toDate()) {
1268
- this.cache.pop();
1269
- break;
1270
- }
1271
- nextMatchDate = newNextMatchDate;
1272
- if (typeof this.count === 'number' && this.cache.length >= this.count) {
1273
- break;
1274
- }
1275
- }
1276
- }
1277
- }
1278
- /**
1279
- * The function `initCache` initializes a cache array with the `startDate` value.
1280
- */
1281
- initCache() {
1282
- this.cache = [this.repeatStartDate];
1283
- }
1284
- /**
1285
- * The function getNextRepeatStartDate calculates the next repeat start date based on a given date and certain conditions.
1286
- *
1287
- * @param {CalendarDate} date - The `date` parameter represents the current date for which you want to
1288
- * calculate the next repeat start date. It is an instance of the `CalendarDate` class.
1289
- * @returns {Nullable<CalendarDate>} The function `getNextRepeatStartDate` returns either a `CalendarDate` object if certain
1290
- * conditions are met, or `null` if the conditions are not met.
1291
- */
1292
- getNextRepeatStartDate(date) {
1293
- const nextDate = new Date(date.year, date.month - 1, date.date + this.interval);
1294
- const nextCalendarDate = CalendarDate.from(nextDate);
1295
- if ((this.until && nextDate > this.until.toDate()) ||
1296
- (typeof this.count === 'number' && this.cache.length >= this.count)) {
1297
- return null;
1298
- }
1299
- else {
1300
- this.cache.push(nextCalendarDate);
1301
- return nextCalendarDate;
1302
- }
1303
- }
1304
- }
1305
-
1306
- /** The `CalendarEventMonthlyRepeatPattern` class in TypeScript represents a monthly repeat pattern for calendar events. */
1307
- class CalendarEventMonthlyRepeatPattern extends CalendarEventBaseRepeatPattern {
1308
- /**
1309
- * The constructor initializes the event with specified start and end dates, interval, count, and until date, and sets the byMonthDay property to the start date's day.
1310
- *
1311
- * @param {CalendarDate} startDate - The `startDate` parameter represents the starting date of the
1312
- * event or interval. It is of type `CalendarDate`, which likely includes the year, month, and day
1313
- * components of the date.
1314
- * @param {number} interval - The `interval` parameter specifies the frequency of the recurring
1315
- * events. For example, if the interval is set to 2, the event will occur every 2 units of time (days,
1316
- * weeks, months, etc.).
1317
- * @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the event. If `count`
1318
- * is provided, the event will repeat `count` times within the specified interval. If `count` is not
1319
- * provided (or is `null`), the event will repeat indefinitely based on the other parameters like `
1320
- * @param {Nullable<CalendarDate>} until - The `until` parameter is a nullable `CalendarDate` that specifies the end date for
1321
- * the recurring event. If provided, the event will repeat until this date. If not provided, the event
1322
- * will repeat indefinitely based on the other parameters like `count` or `endDate`.
1323
- */
1324
- constructor(startDate, interval, count, until) {
1325
- super(startDate, interval, count, until);
1326
- this.byMonthDay = this.repeatStartDate.date;
1327
- this.initCache();
1328
- }
1329
- /**
1330
- * Generate repeat display string.
1331
- *
1332
- * @returns {string} repeat display string
1333
- */
1334
- generateRepeatString() {
1335
- const repeatString = this.interval > 1
1336
- ? VegaInternalTranslation.t('Repeat every {0} months on day {1}', this.interval, this.byMonthDay)
1337
- : VegaInternalTranslation.t('Repeat monthly on day {0}', this.byMonthDay);
1338
- return repeatString + this.generateRepeatEndsString();
1339
- }
1340
- /**
1341
- * This function generates and caches repeated dates before a specified end date.
1342
- *
1343
- * @param {CalendarDate} endDate - The `endDate` parameter in the
1344
- * `generateRepeatDateCacheUntilEndDate` function is a CalendarDate object that represents the end
1345
- * date until which the repeat dates need to be generated and cached. The function checks if the last
1346
- * cached date is before the `endDate` and generates additional repeat dates until it reaches
1347
- */
1348
- generateRepeatDateCacheUntilEndDate(endDate) {
1349
- const lastMatchDate = this.cache[this.cache.length - 1];
1350
- if (lastMatchDate.toDate() < endDate.toDate() &&
1351
- (!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
1352
- let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
1353
- while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
1354
- const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
1355
- //The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
1356
- if (newNextMatchDate && newNextMatchDate.toDate() <= nextMatchDate.toDate()) {
1357
- this.cache.pop();
1358
- break;
1359
- }
1360
- nextMatchDate = newNextMatchDate;
1361
- if (typeof this.count === 'number' && this.cache.length >= this.count) {
1362
- break;
1363
- }
1364
- }
1365
- }
1366
- }
1367
- /**
1368
- * The function `initCache` initializes a cache array with the startDate value.
1369
- */
1370
- initCache() {
1371
- this.cache = [this.repeatStartDate];
1372
- }
1373
- /**
1374
- * The getNextRepeatStartDate function calculates the next start date based on a given date and interval, considering constraints such as end date and count limit.
1375
- *
1376
- * @param {CalendarDate} date - The `date` parameter represents the current date for which you want to
1377
- * calculate the next repeat start date. It is of type `CalendarDate`.
1378
- * @returns {Nullable<CalendarDate>} The function `getNextRepeatStartDate` returns a nullable `CalendarDate`. It either returns
1379
- * the next calculated `CalendarDate` based on the input date and interval, or it returns `null` if
1380
- * certain conditions are met (such as reaching the specified end date or count limit).
1381
- */
1382
- getNextRepeatStartDate(date) {
1383
- const nextDate = this.getNextStartDate(date.year, date.month - 1 + this.interval);
1384
- const nextCalendarDate = CalendarDate.from(nextDate);
1385
- if ((this.until && nextDate > this.until.toDate()) ||
1386
- (typeof this.count === 'number' && this.cache.length >= this.count)) {
1387
- return null;
1388
- }
1389
- else {
1390
- this.cache.push(nextCalendarDate);
1391
- return nextCalendarDate;
1392
- }
1393
- }
1394
- /**
1395
- * get the new date with fixed date, if the date.getDate() not equal the fixed date, find the next month
1396
- *
1397
- * @param {number} year year
1398
- * @param {number} month month
1399
- * @returns {Date} the new date
1400
- */
1401
- getNextStartDate(year, month) {
1402
- const nextDate = new Date(year, month, this.byMonthDay);
1403
- if (nextDate.getDate() === this.byMonthDay) {
1404
- return nextDate;
1405
- }
1406
- else {
1407
- return this.getNextStartDate(year, month + 1);
1408
- }
1409
- }
1410
- }
1411
-
1412
- /** The `CalendarEventWeeklyRepeatPattern` class in TypeScript represents a weekly repeat pattern for calendar events, allowing for matching dates based on specific weekdays and generating future dates with optional constraints. */
1413
- class CalendarEventWeeklyRepeatPattern extends CalendarEventBaseRepeatPattern {
1414
- /**
1415
- * This TypeScript constructor initializes a calendar date range with specified parameters including start date, end date, interval, count, until date, and an array of week days.
1416
- *
1417
- * @param {CalendarDate} startDate - The `startDate` parameter represents the starting date of the
1418
- * calendar event or schedule. It is of type `CalendarDate`, which likely includes the year, month, and day components of a date.
1419
- * @param {number} interval - The `interval` parameter represents the frequency of the recurrence. For
1420
- * example, if `interval` is set to 1, the event will occur every week. If it's set to 2, the event
1421
- * will occur every two weeks.
1422
- * @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the rule. If `count` is
1423
- * provided, the recurrence will generate at most that many occurrences. If `count` is not provided,
1424
- * the recurrence will continue indefinitely based on other parameters like `endDate` or `until`.
1425
- * @param {Nullable<CalendarDate>} until - The `until` parameter specifies the end date for the recurrence rule. If provided,
1426
- * the recurrence will continue until this date. If not provided, the recurrence will continue
1427
- * indefinitely based on other parameters like `count` or `interval`.
1428
- * @param {Nullable<VegaCalendarWeekDayType[]>} byWeekDay - The `byWeekDay` parameter is an array of
1429
- * `VegaCalendarWeekDayType` values, which represent the days of the week for which the event should occur.
1430
- */
1431
- constructor(startDate, interval, count, until, byWeekDay) {
1432
- super(startDate, interval, count, until);
1433
- this.byWeekDay = this.sortWeekDay(byWeekDay);
1434
- this.initCache();
1435
- }
1436
- /**
1437
- * The function `getRepeatSeries` retrieves a series of repeated events within a specified calendar period.
1438
- *
1439
- * @param {CalendarPeriod} period - The `period` parameter in the `getRepeatSeries` method represents
1440
- * a specific time period in the form of a `CalendarPeriod` object. This object typically contains a
1441
- * `startDate` and an `endDate`, which define the range of dates for which you want to generate repeat series.
1442
- * @param {number} eventSpansDays - the current repeat series cross days, default value is one
1443
- * @returns {CalendarDate[]} repeat start date array
1444
- */
1445
- getRepeatSeries(period, eventSpansDays = 1) {
1446
- this.generateRepeatDateCacheUntilEndDate(period.endDate);
1447
- return this.getValidCache().filter((item) => {
1448
- return this.isSeriesInPeriod(item, eventSpansDays, period);
1449
- });
1450
- }
1451
- /**
1452
- * Generate repeat display string.
1453
- *
1454
- * @returns {string} repeat display string
1455
- */
1456
- generateRepeatString() {
1457
- const weekDays = this.byWeekDay.map((weekDay) => VegaInternalTranslation.t(WeekdayLongNames[weekDay]));
1458
- const repeatString = this.interval > 1
1459
- ? VegaInternalTranslation.t('Repeat every {0} weeks on {1}', this.interval, weekDays.join(', '))
1460
- : VegaInternalTranslation.t('Repeat weekly on {0}', weekDays.join(', '));
1461
- return repeatString + this.generateRepeatEndsString();
1462
- }
1463
- /**
1464
- * This function generates repeated dates and caches them until a specified end date.
1465
- *
1466
- * @param {CalendarDate} endDate - The `endDate` parameter is a `CalendarDate` object that represents
1467
- * the date until which the repeat date cache needs to be generated. The function
1468
- * `generateRepeatDateCacheUntilEndDate` generates repeat dates until this specified end date.
1469
- */
1470
- generateRepeatDateCacheUntilEndDate(endDate) {
1471
- const lastMatchDate = this.cache[this.cache.length - 1];
1472
- if (lastMatchDate[0].toDate() < endDate.toDate() &&
1473
- (!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
1474
- let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
1475
- while (nextMatchDate && nextMatchDate[0].toDate() < endDate.toDate()) {
1476
- const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
1477
- //The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
1478
- if (newNextMatchDate &&
1479
- newNextMatchDate[0] &&
1480
- newNextMatchDate[0].toDate() <= nextMatchDate[0].toDate()) {
1481
- this.cache.pop();
1482
- break;
1483
- }
1484
- nextMatchDate = newNextMatchDate;
1485
- if (typeof this.count === 'number' && this.getValidCache().length >= this.count) {
1486
- break;
1487
- }
1488
- }
1489
- }
1490
- }
1491
- /**
1492
- * The function getNextRepeatStartDate calculates the next start dates based on a given array of CalendarDate objects and returns them if certain conditions are met.
1493
- *
1494
- * @param {CalendarDate[]} dates - The `dates` parameter is an array of `CalendarDate` objects.
1495
- * @returns {Nullable<CalendarDate[]>} The `getNextRepeatStartDate` function returns a nullable array of `CalendarDate` objects.
1496
- * If there are no next dates available or if the cache count exceeds a specified limit, it returns
1497
- * `null`. Otherwise, it returns an array of `CalendarDate` objects representing the next start dates.
1498
- */
1499
- getNextRepeatStartDate(dates) {
1500
- const nextDate = this.getNextStartDates(dates);
1501
- if (nextDate.length === 0 ||
1502
- (typeof this.count === 'number' && this.getValidCache().length >= this.count)) {
1503
- return null;
1504
- }
1505
- else {
1506
- const nextCalendarDates = nextDate.map((item) => CalendarDate.from(item));
1507
- this.cache.push(nextCalendarDates);
1508
- return nextCalendarDates;
1509
- }
1510
- }
1511
- /**
1512
- * The function `getNextStartDates` takes an array of `CalendarDate` objects, calculates the next dates based on a specified interval, and filters out dates that are after a specified end date.
1513
- *
1514
- * @param {CalendarDate[]} dates - The `dates` parameter is an array of `CalendarDate` objects
1515
- * representing specific dates in a calendar. Each `CalendarDate` object has properties for the year,
1516
- * month, and date.
1517
- * @returns {Date[]} The `getNextStartDates` function returns an array of `Date` objects representing the next
1518
- * start dates based on the input `CalendarDate` array. The function calculates the next start dates
1519
- * by adding a specific interval (multiplied by 7 to represent weeks) to each date in the input array.
1520
- * Finally, it filters out any dates that are after a specified `until` date, if provided.
1521
- */
1522
- getNextStartDates(dates) {
1523
- const nextDates = dates.map((dateItem) => new Date(dateItem.year, dateItem.month - 1, dateItem.date + this.interval * 7));
1524
- return nextDates.filter((item) => !this.until || item <= this.until.toDate());
1525
- }
1526
- /**
1527
- * The `initCache` function initializes a cache of calendar dates based on the start date and weekly repeat pattern.
1528
- */
1529
- initCache() {
1530
- const result = [];
1531
- const currentWeekDayIndex = this.getCurrentDayIndex(this.repeatStartDate);
1532
- this.byWeekDay.forEach((day) => {
1533
- const index = CalendarEventWeeklyRepeatPattern.weekDay.indexOf(day);
1534
- const days = index - currentWeekDayIndex;
1535
- const { year, month, date } = this.repeatStartDate;
1536
- const dateItem = CalendarDate.from(new Date(year, month - 1, date + days));
1537
- if (!this.until || dateItem.toDate() <= this.until.toDate()) {
1538
- result.push(dateItem);
1539
- }
1540
- });
1541
- this.cache = [result];
1542
- }
1543
- /**
1544
- * The function `sortWeekDay` sorts an array of week days based on their position in a predefined list.
1545
- *
1546
- * @param {boolean} weekDay - The `weekDay` parameter is an array of week day values that need to be sorted in a
1547
- * specific order. The function `sortWeekDay` takes this array and sorts it based on a predefined
1548
- * order specified in `CalendarEventWeeklyRepeatPattern.weekDay`.
1549
- * @returns {VegaCalendarWeekDayType[]} The `sortWeekDay` function is returning the `weekDay` array sorted based on the index of
1550
- * each `VegaCalendarWeekDayType` item in the `CalendarEventWeeklyRepeatPattern.weekDay` array.
1551
- */
1552
- sortWeekDay(weekDay) {
1553
- if (weekDay && weekDay.length) {
1554
- return weekDay
1555
- .map((item) => item.toLocaleLowerCase())
1556
- .sort((itemA, itemB) => {
1557
- return (CalendarEventWeeklyRepeatPattern.weekDay.indexOf(itemA) -
1558
- CalendarEventWeeklyRepeatPattern.weekDay.indexOf(itemB));
1559
- });
1560
- }
1561
- else {
1562
- return [CalendarEventWeeklyRepeatPattern.weekDay[this.getCurrentDayIndex(this.repeatStartDate)]];
1563
- }
1564
- }
1565
- /**
1566
- * This function returns the index of the current day in a week, with Sunday represented as 0.
1567
- *
1568
- * @param {CalendarDate} date - The `date` parameter in the `getCurrentDayIndex` function is of type
1569
- * `CalendarDate`, which is a custom data type representing a date in a calendar.
1570
- * @returns {number} The function `getCurrentDayIndex` returns the index of the current day in the week, with
1571
- * Sunday being represented as 0 and Saturday being represented as 6.
1572
- */
1573
- getCurrentDayIndex(date) {
1574
- return date.toDate().getDay();
1575
- }
1576
- /**
1577
- * The function `getValidCache` returns a filtered and concatenated array of CalendarDate objects from the cache based on a start date.
1578
- *
1579
- * @returns {CalendarDate[]} The `getValidCache` method returns an array of `CalendarDate` objects that meet the
1580
- * condition of having a date greater than or equal to the `startDate` property. The method first
1581
- * flattens a nested array of `CalendarDate` objects stored in the `cache` property, then filters out
1582
- * the `CalendarDate` objects that do not meet the condition, and finally concatenates the filtered
1583
- * array
1584
- */
1585
- getValidCache() {
1586
- const flatArr = flatNestedArray(this.cache.slice(1));
1587
- return this.cache[0]
1588
- .filter((item) => item.toDate() >= this.repeatStartDate.toDate())
1589
- .concat(flatArr)
1590
- .slice(0, typeof this.count === 'number' ? this.count : undefined);
1591
- }
1592
- }
1593
- CalendarEventWeeklyRepeatPattern.weekDay = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map((item) => item.toLowerCase());
1594
-
1595
- /** The `CalendarEventYearlyRepeatPattern` class defines a yearly repeat pattern for calendar events, checking for matches and generating future dates based on specified criteria. */
1596
- class CalendarEventYearlyRepeatPattern extends CalendarEventBaseRepeatPattern {
1597
- /**
1598
- * The constructor initializes a new instance with specified start and end dates, interval, count, and until date.
1599
- *
1600
- * @param {CalendarDate} startDate - The `startDate` parameter is of type `CalendarDate` and
1601
- * represents the starting date of a calendar event or interval.
1602
- * @param {number} interval - The `interval` parameter represents the frequency at which the event
1603
- * occurs. For example, if the interval is set to 2, the event will occur every 2 units of time (days,
1604
- * weeks, months, etc.).
1605
- * @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the event. If `count`
1606
- * is provided, the event will repeat `count` times within the specified interval. If `count` is not
1607
- * provided, the event will repeat indefinitely based on the other parameters like `endDate` or
1608
- * `until`.
1609
- * @param {Nullable<CalendarDate>} until - The `until` parameter in the constructor is of type `Nullable<CalendarDate>`. This
1610
- * means that it can either accept a `CalendarDate` object or be `null`. It is used to specify a date
1611
- * until which the recurring event should repeat. If `until` is provided, the event
1612
- */
1613
- constructor(startDate, interval, count, until) {
1614
- super(startDate, interval, count, until);
1615
- this.matchDay = this.repeatStartDate.date;
1616
- this.matchMonth = this.repeatStartDate.month;
1617
- this.initCache();
1618
- }
1619
- /**
1620
- * Generate repeat display string.
1621
- *
1622
- * @returns {string} repeat display string
1623
- */
1624
- generateRepeatString() {
1625
- const monthName = VegaInternalTranslation.t(this.repeatStartDate.getMonthName());
1626
- const repeatString = this.interval > 1
1627
- ? VegaInternalTranslation.t('Repeat every {0} years on {1} {2}', this.interval, monthName, this.matchDay)
1628
- : VegaInternalTranslation.t('Repeat yearly on {0} {1}', monthName, this.matchDay);
1629
- return repeatString + this.generateRepeatEndsString();
1630
- }
1631
- /**
1632
- * The function generates repeat dates and caches them until reaching the specified end date.
1633
- *
1634
- * @param {CalendarDate} endDate - The `endDate` parameter in the
1635
- * `generateRepeatDateCacheUntilEndDate` function is a CalendarDate object that represents the date
1636
- * until which the repeat date cache should be generated. The function checks if the last date in the
1637
- * cache is before the `endDate`, and if so, it generates additional repeat dates
1638
- */
1639
- generateRepeatDateCacheUntilEndDate(endDate) {
1640
- const lastMatchDate = this.cache[this.cache.length - 1];
1641
- if (lastMatchDate.toDate() < endDate.toDate() &&
1642
- (!this.count || (typeof this.count === 'number' && this.cache.length < this.count))) {
1643
- let nextMatchDate = this.getNextRepeatStartDate(lastMatchDate);
1644
- while (nextMatchDate && nextMatchDate.toDate() < endDate.toDate()) {
1645
- const newNextMatchDate = this.getNextRepeatStartDate(nextMatchDate);
1646
- //The below if block is used to break the infinite loop when the `getNextRepeatStartDate` method return unexpected result. such as when the date is greater than a certain value, it will be returned back 1900.
1647
- if (newNextMatchDate && newNextMatchDate.toDate() <= nextMatchDate.toDate()) {
1648
- this.cache.pop();
1649
- break;
1650
- }
1651
- nextMatchDate = newNextMatchDate;
1652
- if (typeof this.count === 'number' && this.cache.length >= this.count) {
1653
- break;
1654
- }
1655
- }
1656
- }
1657
- }
1658
- /**
1659
- * The function getNextRepeatStartDate calculates the next repeat start date based on a given date and certain conditions.
1660
- *
1661
- * @param {CalendarDate} date - The `date` parameter represents the current date for which you want to
1662
- * calculate the next repeat start date. It is of type `CalendarDate`, which seems to be a custom
1663
- * class or structure that holds year, month, and day information.
1664
- * @returns {Nullable<CalendarDate>} The function `getNextRepeatStartDate` returns either a `CalendarDate` object or `null`
1665
- * based on certain conditions. If the next date exceeds the `until` date or the count limit has been
1666
- * reached, it returns `null`. Otherwise, it adds the next date to the cache and returns it as a
1667
- * `CalendarDate`.
1668
- */
1669
- getNextRepeatStartDate(date) {
1670
- const nextDate = this.getNextStartDate(date.year + this.interval);
1671
- const nextCalendarDate = CalendarDate.from(nextDate);
1672
- if ((this.until && nextDate > this.until.toDate()) ||
1673
- (typeof this.count === 'number' && this.cache.length >= this.count)) {
1674
- return null;
1675
- }
1676
- else {
1677
- this.cache.push(nextCalendarDate);
1678
- return nextCalendarDate;
1679
- }
1680
- }
1681
- /**
1682
- * get the new date with fixed month and fixed date, if the date.getDate() not equal the fixed date or fixed month, find the next year
1683
- *
1684
- * @param {number} year year
1685
- * @returns {Date} the new date
1686
- */
1687
- getNextStartDate(year) {
1688
- const nextDate = new Date(year, this.matchMonth - 1, this.matchDay);
1689
- if (nextDate.getDate() === this.matchDay && nextDate.getMonth() + 1 === this.matchMonth) {
1690
- return nextDate;
1691
- }
1692
- else {
1693
- return this.getNextStartDate(year + 1);
1694
- }
1695
- }
1696
- /**
1697
- * The function `initCache` initializes a cache array with the `startDate` value.
1698
- */
1699
- initCache() {
1700
- this.cache = [this.repeatStartDate];
1701
- }
1702
- }
1703
-
1704
- /** This code snippet defines a TypeScript class `CalendarEventRepeatPatternFactory` that serves as a factory for creating different types of repeat patterns for calendar events. Here's a breakdown of what the class and its methods are doing: */
1705
- class CalendarEventRepeatPatternFactory {
1706
- /**
1707
- * This `getPattern` method within the `CalendarEventRepeatPatternFactory` class is a public method that is responsible for creating and returning a specific type of repeat pattern for a calendar event based on the input parameters provided. Here's a breakdown of what this method is doing:
1708
- *
1709
- * @param {Date} startDate repeat start date
1710
- * @param {VegaCalendarEventRepeatOptions|undefined} repeatOptions repeat options
1711
- * @param {string} timezone The timezone identifier (e.g., America/New_York).
1712
- * @returns {CalendarEventBaseRepeatPattern} the match repeat pattern
1713
- */
1714
- getPattern(startDate, repeatOptions, timezone = getSystemTimezone()) {
1715
- const repeatStartDate = CalendarDate.from(startDate);
1716
- const { frequency, interval = 1, byWeekDay, until, count, } = repeatOptions;
1717
- const repeatEndDate = this.initDate(until, timezone);
1718
- return this.initRepeatPattern(frequency, repeatStartDate, interval < 1 ? 1 : interval, count, repeatEndDate, byWeekDay);
1719
- }
1720
- /**
1721
- * The `initDate` function initializes a `CalendarDate` object based on the input date string or Date object provided.
1722
- *
1723
- * @param {Nullable<string | Date>} date - The `date` parameter can be either a string or a Date object.
1724
- * @param {string} timezone The timezone identifier (e.g., 'America/New_York').
1725
- * @returns {Nullable<CalendarDate>} The function `initDate` returns a `Nullable<CalendarDate>`, which means it can return either a `CalendarDate` object or `null`.
1726
- */
1727
- initDate(date, timezone) {
1728
- if (date) {
1729
- return CalendarDate.from(new Date(date), timezone);
1730
- }
1731
- }
1732
- /**
1733
- * The function `initRepeatPattern` initializes a repeat pattern based on the frequency specified for a calendar event.
1734
- *
1735
- * @param {VegaCalendarEventRepeatType} frequency event frequency
1736
- * @param {CalendarDate} repeatStartDate event start date
1737
- * @param {number} interval event repeat interval
1738
- * @param {Nullable<number>} count the event repeat count
1739
- * @param {Nullable<CalendarDate>} repeatEndDate repeat end date
1740
- * @param {Nullable<VegaCalendarWeekDayType[]>} byWeekDay weekly week days
1741
- * @returns {CalendarEventBaseRepeatPattern} calendar event repeat pattern instance
1742
- */
1743
- initRepeatPattern(frequency, repeatStartDate, interval, count, repeatEndDate, byWeekDay) {
1744
- switch (frequency) {
1745
- case 'daily':
1746
- return new CalendarEventDailyRepeatPattern(repeatStartDate, interval, count, repeatEndDate);
1747
- case 'weekly':
1748
- return new CalendarEventWeeklyRepeatPattern(repeatStartDate, interval, count, repeatEndDate, byWeekDay);
1749
- case 'monthly':
1750
- return new CalendarEventMonthlyRepeatPattern(repeatStartDate, interval, count, repeatEndDate);
1751
- default:
1752
- return new CalendarEventYearlyRepeatPattern(repeatStartDate, interval, count, repeatEndDate);
1753
- }
1754
- }
1755
- }
1756
- const calendarEventRepeatPatternFactory = new CalendarEventRepeatPatternFactory();
1757
-
1758
- const CalendarDateFormatReg = /^\d{1,2}\/\d{1,2}\/\d{4}/;
1759
- const CalendarTimeFormatReg = /^\d{1,2}:\d{1,2}/;
1760
- /** The `CalendarEvent` class in TypeScript represents a calendar event with methods to validate required fields, initialize dates and times, and determine if it is a group event. */
1761
- class CalendarEvent {
1762
- /**
1763
- * The constructor initializes a VegaCalendarRawEvent object and performs validation checks on required fields.
1764
- *
1765
- * @param {VegaCalendarRawEvent} eventOptions - The `eventOptions` parameter in the constructor
1766
- * represents the raw event data for a Vega calendar event. It contains information such as the event
1767
- * title, start and end dates, location, description, and any other relevant details about the event.
1768
- * @param {string} eventKey If a value is not provided for `eventKey`, a UUID (Universally
1769
- * Unique Identifier) will be generated as a default value. This identifier is used to distinguish
1770
- * different events and can be helpful for tracking
1771
- * @param {string} timezone - Optional timezone identifier for timezone-aware date calculations
1772
- */
1773
- constructor(eventOptions, eventKey, timezone) {
1774
- // the default value is 1 when the event end date is same as start date
1775
- this._eventSpansDays = 1;
1776
- this.repeatPattern = null;
1777
- this._event = eventOptions;
1778
- this._eventKey = eventKey || generateUUID();
1779
- this._timezone = timezone || getSystemTimezone();
1780
- this.checkEventRequireField(eventOptions);
1781
- this.initDate(eventOptions);
1782
- this.initEventSpansDays();
1783
- this.initRepeatPattern();
1784
- }
1785
- /**
1786
- * The function returns the raw event data for a VegaCalendar event.
1787
- *
1788
- * @returns {VegaCalendarRawEvent} The `get event()` method is returning a `VegaCalendarRawEvent` object, which is stored in the `_event` property.
1789
- */
1790
- get event() {
1791
- return this._event;
1792
- }
1793
- /**
1794
- * This function returns the key of an event in TypeScript.
1795
- *
1796
- * @returns {string} event key
1797
- */
1798
- get eventKey() {
1799
- return this._eventKey;
1800
- }
1801
- /**
1802
- * This function returns the title of an event in TypeScript.
1803
- *
1804
- * @returns {string} The title of the event.
1805
- */
1806
- get title() {
1807
- return this._event.title;
1808
- }
1809
- /**
1810
- * This function returns the disabled of an event in TypeScript.
1811
- *
1812
- * @returns {boolean} The disabled of the event.
1813
- */
1814
- get disabled() {
1815
- return !!this._event.disabled;
1816
- }
1817
- /**
1818
- * This function returns the variant of an event in TypeScript.
1819
- *
1820
- * @returns {Nullable<VegaCalendarEventVariantType>} The variant of the event.
1821
- */
1822
- get variant() {
1823
- return this._event.variant;
1824
- }
1825
- /**
1826
- * This function returns the color of an event in TypeScript.
1827
- *
1828
- * @returns {Nullable<string>} The color of the event.
1829
- */
1830
- get color() {
1831
- return this._event.color;
1832
- }
1833
- /**
1834
- * The function isAllDayEvent returns a boolean value indicating whether the event is an all-day event.
1835
- *
1836
- * @returns {boolean} The method `isAllDayEvent()` is returning a boolean value indicating whether the event is an all-day event or not. It returns `true` if the event is an all-day event, and `false` if it is not.
1837
- */
1838
- get isAllDayEvent() {
1839
- return !!this._event.isAllDay;
1840
- }
1841
- /**
1842
- * The function isRepeatEvent returns a boolean value based on whether the event's repeatOptions property is not equal to 'none'.
1843
- *
1844
- * @returns {boolean} The method `isRepeatEvent` returns a boolean value indicating whether the `_event` has a repeat value other than 'none'.
1845
- */
1846
- get isRepeatEvent() {
1847
- return this.repeatPattern !== null;
1848
- }
1849
- /**
1850
- * The function returns the start date property of an object.
1851
- *
1852
- * @returns {Date} The `startDate` property of type `Date` is being returned.
1853
- */
1854
- get startDate() {
1855
- return this._startDateTime.toDate();
1856
- }
1857
- /**
1858
- * The function returns the end date property of an object.
1859
- *
1860
- * @returns {Date} The `endDate` property of type `Date` is being returned.
1861
- */
1862
- get endDate() {
1863
- return this._endDateTime.toDate();
1864
- }
1865
- /**
1866
- * This function returns the start time as a CalendarTime.
1867
- *
1868
- * @returns {CalendarTime} The event start time.
1869
- */
1870
- get startTime() {
1871
- return this._startDateTime.calendarTime;
1872
- }
1873
- /**
1874
- * This function returns the end time as a CalendarTime.
1875
- *
1876
- * @returns {CalendarTime} The event end time.
1877
- */
1878
- get endTime() {
1879
- return this._endDateTime.calendarTime;
1880
- }
1881
- /**
1882
- * This function returns the number of days that an event spans.
1883
- *
1884
- * @returns {number} The method `get eventSpansDays()` is returning the value of the property
1885
- * `_eventSpansDays`, which is of type `number`.
1886
- */
1887
- get eventSpansDays() {
1888
- return this._eventSpansDays;
1889
- }
1890
- /**
1891
- * The function `copyTo` copies a calendar event with updated start and end dates.
1892
- *
1893
- * @param {string} eventKey - The `eventKey` parameter in the `copyTo` function is a string that represents the key or identifier of the new calendar event that will be created.
1894
- * @param {CalendarDate} startDate - The `startDate` parameter in the `copyTo` function represents
1895
- * the starting date of a calendar event. It is of type `CalendarDate`, which may contain information such as the day, month, and year of the event.
1896
- * @returns {CalendarEvent} A new `CalendarEvent` object is being returned with the properties from the original
1897
- * `_event` object (excluding `repeatOptions`) and the `startDate` and `endDate` properties set to
1898
- * the `toDate()` values of the `startDate` and `endDate` parameters.
1899
- */
1900
- copyTo(eventKey, startDate) {
1901
- const endDate = this._eventSpansDays > 1
1902
- ? new Date(startDate.year, startDate.month - 1, startDate.date + (this._eventSpansDays - 1))
1903
- : startDate.toDate();
1904
- const result = new CalendarEvent(Object.assign(Object.assign({}, this._event), { startDate: startDate.toDate(), endDate: endDate, startTime: this.startTime.toString(), endTime: this.endTime.toString() }), eventKey);
1905
- return result;
1906
- }
1907
- /**
1908
- * Check the event is a group event or not
1909
- *
1910
- * @returns {boolean} true or false
1911
- */
1912
- isGroupEvent() {
1913
- return this._eventSpansDays > 1;
1914
- }
1915
- /**
1916
- * This TypeScript function checks if a given date falls within the range of a calendar event based on its start and end dates, considering different repeat types like daily, weekly, monthly, and yearly.
1917
- *
1918
- * @param {CalendarDate} date - The `date` parameter represents the current date for which you want to
1919
- * check if it falls within the range of the `calendarEvent`. It is of type `CalendarDate`.
1920
- * @returns {boolean} a boolean value, either `true` or `false`, based on whether the `calendarEvent` falls on the `date` provided.
1921
- */
1922
- isCurrentDayEvent(date) {
1923
- const { startDate, endDate } = this;
1924
- const startCalendarDate = CalendarDate.from(startDate);
1925
- const endCalendarDate = CalendarDate.from(new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate() + 1));
1926
- const currentDate = date.toDate();
1927
- return startCalendarDate.toDate() <= currentDate && endCalendarDate.toDate() > currentDate;
1928
- }
1929
- /**
1930
- * Generate repeat display string.
1931
- *
1932
- * @returns {string} repeat display string
1933
- */
1934
- generateRepeatString() {
1935
- var _a;
1936
- return ((_a = this.repeatPattern) === null || _a === void 0 ? void 0 : _a.generateRepeatString()) || '';
1937
- }
1938
- /**
1939
- * Generate date display string.
1940
- *
1941
- * @param {CalendarDate} viewDate - The `date` to display
1942
- * @param {TimeFormat} timeFormat - The `timeFormat` to use
1943
- * @returns {string} repeat display string
1944
- */
1945
- generateDateTimeString(viewDate, timeFormat) {
1946
- const weekDay = VegaInternalTranslation.t(Object.values(WeekdayLongNames)[viewDate.toDate().getDay()]);
1947
- const startTime = this.startTime.toString(timeFormat);
1948
- const endTime = this.endTime.toString(timeFormat);
1949
- return `${weekDay}, ${viewDate.date} ${viewDate.getMonthName(true)} ${viewDate.year} ${startTime} - ${endTime}`;
1950
- }
1951
- /**
1952
- * Get the number of minutes the event lasted
1953
- *
1954
- * @returns {number} the minutes
1955
- */
1956
- getEventMinutes() {
1957
- return CalendarTime.calculateDuration(this.startTime, this.endTime, 'minutes');
1958
- }
1959
- /**
1960
- * This function returns an array of repeat series based on a given calendar period.
1961
- *
1962
- * @param {CalendarPeriod} period - The `period` parameter in the `getRepeatSeries` method is of type
1963
- * `CalendarPeriod`. It represents a specific time period within a calendar, typically defined by a
1964
- * start date and an end date. The method uses this period to generate a series of repeated events
1965
- * based on a daily repeat pattern specified
1966
- * @returns {CalendarDate[]} repeat start date array
1967
- */
1968
- getRepeatSeries(period) {
1969
- if (this.repeatPattern) {
1970
- return this.repeatPattern.getRepeatSeries(period, this._eventSpansDays);
1971
- }
1972
- return [];
1973
- }
1974
- /**
1975
- * Refresh event dates and related properties when timezone changes
1976
- *
1977
- * @param {string} timezone - The new timezone to apply to the event
1978
- */
1979
- updateTimezone(timezone) {
1980
- this._timezone = timezone;
1981
- this._startDateTime.setTimezone(timezone);
1982
- this._endDateTime.setTimezone(timezone);
1983
- }
1984
- /**
1985
- * The function `checkEventRequireField` validates the required fields of a calendar event item in TypeScript.
1986
- *
1987
- * @param {VegaCalendarRawEvent} eventOptions - The `eventOptions` parameter is an object of type
1988
- * `VegaCalendarRawEvent` that contains information about a calendar event
1989
- */
1990
- checkEventRequireField(eventOptions) {
1991
- const { title, startDate, endDate, startTime, endTime } = eventOptions;
1992
- if ((startDate && typeof startDate === 'string' && !CalendarDateFormatReg.test(startDate)) ||
1993
- (endDate && typeof endDate === 'string' && !CalendarDateFormatReg.test(endDate))) {
1994
- throw new Error('Invalid calendar event item, the date format should be MM/DD/YYYY!');
1995
- }
1996
- if ((startTime && typeof startTime === 'string' && !CalendarTimeFormatReg.test(startTime)) ||
1997
- (endTime && typeof endTime === 'string' && !CalendarTimeFormatReg.test(endTime))) {
1998
- throw new Error('Invalid calendar event item, the time format should be HH:mm!');
1999
- }
2000
- if (!title || !startDate || (!endDate && !endTime)) {
2001
- throw new Error('Invalid calendar event item, the required field should not empty!');
2002
- }
2003
- }
2004
- /**
2005
- * The `initDate` function in TypeScript initializes start and end dates and times for a calendar event based on the provided options.
2006
- *
2007
- * @param {VegaCalendarRawEvent} eventOptions - The `initDate` method you provided is used to
2008
- * initialize the start and end dates for a calendar event based on the options provided in the
2009
- * `eventOptions` object. The `eventOptions` object contains properties such as `startDate`,
2010
- * `startTime`, `endDate`, and `endTime` which are used
2011
- */
2012
- initDate(eventOptions) {
2013
- const { startDate, startTime, endDate, endTime } = eventOptions;
2014
- this.processStartDate(startDate, startTime);
2015
- this.processEndDate(endDate, endTime, startDate);
2016
- }
2017
- /**
2018
- * Parse the supplied start date/time, normalize into calendar wrappers.
2019
- *
2020
- * @param {string | Date} startDate - Raw start date value from the event payload.
2021
- * @param {string} startTime - Optional textual time component to parse.
2022
- */
2023
- processStartDate(startDate, startTime) {
2024
- this._startDateTime = CalendarDateTime.fromInitDataSource(startDate, {
2025
- timezone: this._timezone,
2026
- time: startTime,
2027
- });
2028
- }
2029
- /**
2030
- * Parse the supplied end date/time, normalize into calendar wrappers.
2031
- *
2032
- * @param {string | Date | undefined} endDate - The raw end date value from the event payload.
2033
- * @param {string | undefined} endTime - The optional textual end time component to parse.
2034
- * @param {string | Date} originStartDate - The start date value to use as fallback if endDate is missing.
2035
- */
2036
- processEndDate(endDate, endTime, originStartDate) {
2037
- this._endDateTime = CalendarDateTime.fromInitDataSource(endDate || originStartDate, {
2038
- timezone: this._timezone,
2039
- time: endTime,
2040
- endTimeMissing: !endTime && !endDate,
2041
- });
2042
- }
2043
- /**
2044
- * The function initializes a repeat pattern controller for a calendar event with specified start and end dates and repeat options.
2045
- */
2046
- initRepeatPattern() {
2047
- if (this._event.repeatOptions && this._event.repeatOptions.frequency) {
2048
- this.repeatPattern = calendarEventRepeatPatternFactory.getPattern(this.startDate, this._event.repeatOptions, this._timezone);
2049
- }
2050
- }
2051
- /**
2052
- * Initializes the event cross days by the event start date and end date.
2053
- */
2054
- initEventSpansDays() {
2055
- const start = CalendarDate.from(this.startDate);
2056
- const end = CalendarDate.from(this.endDate);
2057
- this._eventSpansDays =
2058
- (end.toDate().valueOf() - start.toDate().valueOf()) / (24 * 60 * 60 * 1000) + 1;
2059
- }
2060
- }
2061
-
2062
- var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2063
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2064
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2065
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2066
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2067
- };
2068
- /** The `VegaCalendarEventController` class in TypeScript manages calendar events, initializes event layouts, retrieves events for the current date, and checks if a date falls within the range of a calendar event. */
2069
- class VegaCalendarEventController extends VegaSlimmer {
2070
- constructor() {
2071
- super(...arguments);
2072
- // This map is cache for newly generated calendar events
2073
- this.repeatEventMap = new Map();
2074
- }
2075
- /**
2076
- * The function `getCurrentDateEvent` returns an array of calendar events for the current date, including both normal events and group events.
2077
- *
2078
- * @param {CalendarDate} date - The `date` parameter in the `getCurrentDateEvent` function is of type `CalendarDate`, which is used to represent a specific date with properties for year, month, and date.
2079
- * @returns {CalendarEvent[]} The `getCurrentDateEvent` function returns an array of `CalendarEvent` objects. It
2080
- * first retrieves all group events and normal events for the specified date, then filters out the
2081
- * events that are specific to the current day. Finally, it concatenates the current day events with
2082
- * the group events and returns the combined array.
2083
- */
2084
- getCurrentDateEvents(date) {
2085
- const allEvents = this.createRepeatEvents();
2086
- return allEvents.filter((item) => item.isCurrentDayEvent(date));
2087
- }
2088
- /**
2089
- * initial calendar events when component props events change
2090
- *
2091
- * @param {VegaCalendarRawEvent[]} newEvents new event options array
2092
- */
2093
- updateAfterEventChange(newEvents) {
2094
- this.initCalendarEvents(newEvents);
2095
- this.repeatEventMap.clear();
2096
- }
2097
- /**
2098
- * initial calendar events in first time
2099
- */
2100
- updateWhenComponentWillLoad() {
2101
- this.initCalendarEvents(this.events);
2102
- }
2103
- /**
2104
- * Handle timezone changes by updating all calendar events
2105
- *
2106
- */
2107
- updateAfterTimezoneChange() {
2108
- if (this.calendarEvents.length > 0) {
2109
- this.calendarEvents.forEach((event) => event.updateTimezone(this.timezone));
2110
- }
2111
- ChangeManager.notify(domNodeSubjectFactory.getSubject(this.host, VegaInternalCalendarEventPreviewHide), {});
2112
- this.repeatEventMap.clear();
2113
- }
2114
- /**
2115
- * initial calendar events
2116
- *
2117
- * @param {VegaCalendarRawEvent[]} newEvents new event options array
2118
- */
2119
- initCalendarEvents(newEvents) {
2120
- const result = [];
2121
- if (newEvents) {
2122
- newEvents.forEach((item) => {
2123
- try {
2124
- const calendarEvent = new CalendarEvent(item, undefined, this.timezone);
2125
- result.push(calendarEvent);
2126
- }
2127
- catch (_a) {
2128
- LogUtility.warn('Invalid calendar event item:', item);
2129
- }
2130
- });
2131
- }
2132
- this.calendarEvents = result;
2133
- }
2134
- /**
2135
- * We need generate new calendar event from the full-day repeat calendar event, so we can render those event as normal full-day event
2136
- *
2137
- * @returns {CalendarEvent[]} The `handleRepeatEvents` method returns an array of `CalendarEvent` objects.
2138
- */
2139
- createRepeatEvents() {
2140
- const allEvents = this.calendarEvents;
2141
- const otherEvents = [];
2142
- const newRepeatEvents = [];
2143
- allEvents.forEach((item) => {
2144
- if (item.isRepeatEvent) {
2145
- const repeatSeries = item.getRepeatSeries(this.currentPeriod);
2146
- repeatSeries.forEach((series) => {
2147
- newRepeatEvents.push(this.generateCalendarEventByRepeatSeries(item, series));
2148
- });
2149
- }
2150
- else {
2151
- otherEvents.push(item);
2152
- }
2153
- });
2154
- return newRepeatEvents.concat(otherEvents);
2155
- }
2156
- /**
2157
- * This function generates a calendar event based on a repeat series and stores it in a map to avoid duplicate creation.
2158
- *
2159
- * @param {CalendarEvent} calendarEvent - The `calendarEvent` parameter represents a single event on
2160
- * a calendar. It contains information such as the event's start date, end date, and other details.
2161
- * @param {CalendarDate} series - The repeat start date
2162
- * @returns {CalendarEvent} The function `generateCalendarEventByRepeatSeries` returns a `CalendarEvent` object. If
2163
- * the event key already exists in the `repeatEventMap`, it returns the corresponding `CalendarEvent`
2164
- * object from the map. Otherwise, it creates a new `CalendarEvent` object based on the input
2165
- * `calendarEvent` and `series` parameters, adds it to the `repeatEventMap`, and then
2166
- */
2167
- generateCalendarEventByRepeatSeries(calendarEvent, series) {
2168
- const eventKey = `${calendarEvent.eventKey}-${series.year}${series.month}${series.date}`;
2169
- if (this.repeatEventMap.has(eventKey)) {
2170
- return this.repeatEventMap.get(eventKey);
2171
- }
2172
- else {
2173
- const result = calendarEvent.copyTo(eventKey, series);
2174
- this.repeatEventMap.set(eventKey, result);
2175
- return result;
2176
- }
2177
- }
2178
- }
2179
- __decorate$c([
2180
- MapToComponentField()
2181
- ], VegaCalendarEventController.prototype, "host", void 0);
2182
- __decorate$c([
2183
- MapToComponentField({ writable: true })
2184
- ], VegaCalendarEventController.prototype, "calendarEvents", void 0);
2185
- __decorate$c([
2186
- MapToComponentField()
2187
- ], VegaCalendarEventController.prototype, "currentPeriod", void 0);
2188
- __decorate$c([
2189
- MapToComponentField()
2190
- ], VegaCalendarEventController.prototype, "events", void 0);
2191
- __decorate$c([
2192
- MapToComponentField()
2193
- ], VegaCalendarEventController.prototype, "timezone", void 0);
2194
- __decorate$c([
2195
- MapToComponentMethod('watchEventsChange')
2196
- ], VegaCalendarEventController.prototype, "updateAfterEventChange", null);
2197
- __decorate$c([
2198
- MapToComponentMethod('componentWillLoad')
2199
- ], VegaCalendarEventController.prototype, "updateWhenComponentWillLoad", null);
2200
- __decorate$c([
2201
- MapToComponentMethod('watchTimezoneChange')
2202
- ], VegaCalendarEventController.prototype, "updateAfterTimezoneChange", null);
2203
-
2204
- var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2205
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2206
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2207
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2208
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2209
- };
2210
- /** The `VegaCalendarEventItemRenderer` class in TypeScript React is used for rendering calendar event items with specific layout and styling properties. */
2211
- class VegaCalendarEventItemRenderer extends VegaSlimmer {
2212
- /**
2213
- * render event component
2214
- *
2215
- * @param {CalendarEvent} item the calendar event object
2216
- * @param {Record<string,boolean>} classMap the class name map
2217
- * @param {CalendarDate} targetCalendarViewDate the target calendar view date
2218
- * @returns {HTMLVegaCalendarEventElement} calendar event element
2219
- */
2220
- render(item, classMap, targetCalendarViewDate, isGroupEvent = false) {
2221
- return (h("vega-calendar-event", { "data-calendar-ref": this.host, key: `${item.eventKey}-${item.startTime.toString()}-${item.endTime.toString()}`, calendarEvent: item, class: classMap, onKeyDown: createEnterKeyHandlerToTriggerClick(),
2222
- // eslint-disable-next-line react/jsx-no-bind
2223
- onClick: () => {
2224
- this.handleEventClick(item);
2225
- this.enabledEventPreview &&
2226
- this.setupPreviewContainer(item, targetCalendarViewDate, isGroupEvent);
2227
- } }, !item.isRepeatEvent && h("slot", { name: getCalendarEventSlotName(item.event.key) })));
2228
- }
2229
- /**
2230
- * emit vega click event
2231
- *
2232
- * @param {CalendarEvent} eventItem the event item
2233
- */
2234
- handleEventClick(eventItem) {
2235
- this.eventClickEmitter.emit({ rawEvent: eventItem.event });
2236
- }
2237
- setupPreviewContainer(event, targetCalendarViewDate, isGroupEvent) {
2238
- const previewContainer = this.eventPreviewPopoverController.getEventPreviewContainer(event, targetCalendarViewDate, isGroupEvent);
2239
- if (previewContainer) {
2240
- const preview = this.renderer.getEventPreviewRef();
2241
- if (isGroupEvent) {
2242
- preview.classList.remove('single-event-preview');
2243
- preview.classList.add('group-event-preview');
2244
- }
2245
- else {
2246
- preview.classList.remove('group-event-preview');
2247
- preview.classList.add('single-event-preview');
2248
- }
2249
- // Step 1: notify preview component to update data
2250
- ChangeManager.notify(domNodeSubjectFactory.getSubject(preview, VegaInternalCalendarEventPreviewUpdate), {
2251
- event,
2252
- targetCalendarViewDate,
2253
- timeFormat: this.timeFormat,
2254
- });
2255
- // Step 2: append preview additional fields slot to preview component.
2256
- const additionalFieldsSlot = this.host.querySelector('[slot=event-preview-additional-fields]');
2257
- additionalFieldsSlot && preview.append(additionalFieldsSlot);
2258
- // Step 3: append event slot to preview component.
2259
- const eventSlotName = getCalendarEventSlotName(event.event.key);
2260
- const eventSlot = this.host.querySelector(`[slot=${eventSlotName}]`);
2261
- const previewEventSlot = preview.querySelector(`[slot=${eventSlotName}]`);
2262
- // Since event slot is used by vega-calendar-event, we should clone it to avoid remove from original position.
2263
- eventSlot && !previewEventSlot && preview.append(eventSlot.cloneNode(true));
2264
- // Step 4: append preview component to popover container to display.
2265
- previewContainer.append(preview);
2266
- }
2267
- }
2268
- }
2269
- VegaCalendarEventItemRenderer.backgroundColorModeEventHeight = 18;
2270
- __decorate$b([
2271
- MapToComponentField()
2272
- ], VegaCalendarEventItemRenderer.prototype, "host", void 0);
2273
- __decorate$b([
2274
- MapToComponentField()
2275
- ], VegaCalendarEventItemRenderer.prototype, "calendarView", void 0);
2276
- __decorate$b([
2277
- MapToComponentField()
2278
- ], VegaCalendarEventItemRenderer.prototype, "eventClickEmitter", void 0);
2279
- __decorate$b([
2280
- MapToComponentField()
2281
- ], VegaCalendarEventItemRenderer.prototype, "timeFormat", void 0);
2282
- __decorate$b([
2283
- MapToComponentField()
2284
- ], VegaCalendarEventItemRenderer.prototype, "enabledEventPreview", void 0);
2285
- __decorate$b([
2286
- MapToComponentField()
2287
- ], VegaCalendarEventItemRenderer.prototype, "renderer", void 0);
2288
- __decorate$b([
2289
- MapToComponentField()
2290
- ], VegaCalendarEventItemRenderer.prototype, "eventPreviewPopoverController", void 0);
2291
-
2292
- var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2293
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2294
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2295
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2296
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2297
- };
2298
- /** The `VegaCalendarEventResponsiveController` class extends `PageResizeObserverSlimmer` and updates the max display count of month events with debounce in a VegaCalendar component. */
2299
- class VegaCalendarEventResponsiveController extends PageResizeObserverSlimmer {
2300
- /**
2301
- * update the event view when the calendar layout update
2302
- */
2303
- constructor() {
2304
- super({
2305
- // eslint-disable-next-line jsdoc/require-jsdoc
2306
- target: /* istanbul ignore next */ () => this.host,
2307
- // eslint-disable-next-line jsdoc/require-jsdoc
2308
- callback: /* istanbul ignore next */ () => this.updateMaxDisplayCountWithDebounce(),
2309
- });
2310
- this.updateMaxDisplayCountWithDebounce = debounce(this.updateMaxDisplayCount, 500, this);
2311
- }
2312
- /**
2313
- * Update the month event display items.
2314
- */
2315
- updateMaxDisplayCount() {
2316
- // The debounce method will case this method called after component disconnect, then the slimmer will get issue to get viewMode from component class, this issue will catch in spec.ts
2317
- try {
2318
- const eventContainerRef = this.monthEventRenderer.getMonthEventContainerRef();
2319
- if (this.viewMode === 'month' && eventContainerRef && eventContainerRef.parentElement) {
2320
- const maxContainerHeight = eventContainerRef.parentElement.getBoundingClientRect().height;
2321
- const count = Math.floor((maxContainerHeight - VegaCalendarEventResponsiveController.monthDateTitleHeight) /
2322
- VegaCalendarEventItemRenderer.backgroundColorModeEventHeight);
2323
- ChangeManager.notify(domNodeSubjectFactory.getSubject(this.host, VegaInternalCalendarMonthEventsChange), {
2324
- host: this.host,
2325
- detail: count,
2326
- });
2327
- }
2328
- // eslint-disable-next-line no-empty
2329
- }
2330
- catch (_a) { }
2331
- }
2332
- /**
2333
- * update the max display count when switch view mode
2334
- *
2335
- * @param {VegaCalendarViewModeType} viewMode new view mode value
2336
- */
2337
- updateMaxDisplayCountAfterSwitchToMonthView(viewMode) {
2338
- if (viewMode === 'month') {
2339
- this.updateMaxDisplayCountWithDebounce();
2340
- }
2341
- }
2342
- }
2343
- VegaCalendarEventResponsiveController.monthDateTitleHeight = 26;
2344
- __decorate$a([
2345
- MapToComponentField()
2346
- ], VegaCalendarEventResponsiveController.prototype, "host", void 0);
2347
- __decorate$a([
2348
- MapToComponentField()
2349
- ], VegaCalendarEventResponsiveController.prototype, "monthEventRenderer", void 0);
2350
- __decorate$a([
2351
- MapToComponentField()
2352
- ], VegaCalendarEventResponsiveController.prototype, "viewMode", void 0);
2353
- __decorate$a([
2354
- MapToComponentMethod('componentDidLoad')
2355
- ], VegaCalendarEventResponsiveController.prototype, "updateMaxDisplayCount", null);
2356
- __decorate$a([
2357
- MapToComponentMethod('watchViewModeChange')
2358
- ], VegaCalendarEventResponsiveController.prototype, "updateMaxDisplayCountAfterSwitchToMonthView", null);
2359
-
2360
- var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2361
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2362
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2363
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2364
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2365
- };
2366
- /** renders all-day events in a calendar view, with options to display a limited number of events and show a "more" button for additional events. */
2367
- class VegaCalendarFullDayEventRenderer extends VegaSlimmer {
2368
- /**
2369
- * render current preiod all day events
2370
- *
2371
- * @returns {HTMLElement} event element
2372
- */
2373
- render() {
2374
- const viewSource = this.calendarView.dateItems[0];
2375
- const events = viewSource.map((calendarDate) => {
2376
- return this.calendarEventController
2377
- .getCurrentDateEvents(calendarDate)
2378
- .filter((eventItem) => eventItem.isAllDayEvent || eventItem.isGroupEvent());
2379
- });
2380
- const orderEvents = this.fullDayEventLayoutRenderer.sortLongEvents(events);
2381
- const displayEvents = this.filterDisplayEvents(orderEvents);
2382
- return (h("div", { class: "calendar-view-event-all" }, viewSource.map((item, index) => (h("div", { class: "event-all-col border-divider-left", key: item.date }, this.renderCurrentFullDayEvents(displayEvents[index], index, orderEvents[index], item))))));
2383
- }
2384
- /**
2385
- * render current date all day events
2386
- *
2387
- * @param {Nullable<CalendarEvent>[]} events displayed calendar events
2388
- * @param {number} currentViewIndex the current date index of the array
2389
- * @param {Nullable<CalendarEvent>[]} allEvents all calendar events
2390
- * @returns {HTMLVegaCalendarEventElement[]} event component array
2391
- */
2392
- renderCurrentFullDayEvents(events, currentViewIndex, allEvents, targetCalendarViewDate) {
2393
- const height = events.length * VegaCalendarEventItemRenderer.backgroundColorModeEventHeight - 2;
2394
- const hideEventsLength = allEvents.slice(events.length).filter(Boolean).length;
2395
- return (h(Fragment, null,
2396
- h("div", { class: "placeholder-block", style: { height: height + 'px' } },
2397
- h("span", null,
2398
- events.length,
2399
- " events")),
2400
- this.fullDayEventLayoutRenderer.render(events, currentViewIndex, targetCalendarViewDate),
2401
- hideEventsLength > 0 && this.dayViewFullDayEventMoreButtonRenderer.render(hideEventsLength)));
2402
- }
2403
- /**
2404
- * Get the display events base on the show all events flag
2405
- *
2406
- * @param {Nullable<CalendarEvent>[][]} rowEvents row events array
2407
- * @returns {Nullable<CalendarEvent>[][]} the part of the events or the whole events
2408
- */
2409
- filterDisplayEvents(rowEvents) {
2410
- if (!this.showAllEventsInDayOrWeekView) {
2411
- const result = [];
2412
- const maxLength = VegaCalendarFullDayEventRenderer.maxDisplayEventLength;
2413
- rowEvents.forEach((events) => {
2414
- const displayEvents = events.length > maxLength ? events.slice(0, maxLength) : events;
2415
- result.push(displayEvents);
2416
- });
2417
- return result;
2418
- }
2419
- else {
2420
- return rowEvents;
2421
- }
2422
- }
2423
- }
2424
- VegaCalendarFullDayEventRenderer.maxDisplayEventLength = 2;
2425
- __decorate$9([
2426
- MapToComponentField()
2427
- ], VegaCalendarFullDayEventRenderer.prototype, "calendarView", void 0);
2428
- __decorate$9([
2429
- MapToComponentField()
2430
- ], VegaCalendarFullDayEventRenderer.prototype, "calendarEventController", void 0);
2431
- __decorate$9([
2432
- MapToComponentField()
2433
- ], VegaCalendarFullDayEventRenderer.prototype, "eventItemRenderer", void 0);
2434
- __decorate$9([
2435
- MapToComponentField()
2436
- ], VegaCalendarFullDayEventRenderer.prototype, "fullDayEventLayoutRenderer", void 0);
2437
- __decorate$9([
2438
- MapToComponentField()
2439
- ], VegaCalendarFullDayEventRenderer.prototype, "showAllEventsInDayOrWeekView", void 0);
2440
- __decorate$9([
2441
- MapToComponentField()
2442
- ], VegaCalendarFullDayEventRenderer.prototype, "dayViewFullDayEventMoreButtonRenderer", void 0);
2443
-
2444
- var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2445
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2446
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2447
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2448
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2449
- };
2450
- /** The `VegaCalendarDayViewEventLayoutRenderer` class in TypeScript React renders event layouts for a day view calendar. */
2451
- class VegaCalendarDayViewEventLayoutRenderer extends VegaSlimmer {
2452
- /**
2453
- * The `render` function in TypeScript React renders a layout of calendar events for a day view.
2454
- *
2455
- * @param {VegaCalendarDayViewTimedEventLayout} layout - The `layout` parameter in the `render` function is
2456
- * of type `VegaCalendarDayViewTimedEventLayout`, which contains information about the layout of events for
2457
- * a day view in a calendar. It has properties like `eventLayoutColumns`, which is an array of `VegaCalendarDayViewEvent
2458
- * @returns {HTMLElement[]} An array of HTMLElements representing the rendered event nodes based on the provided layout and event data.
2459
- */
2460
- render(layout, targetCalendarViewDate) {
2461
- const layoutColumns = layout.eventLayoutCells;
2462
- const eventNodes = [];
2463
- layoutColumns.forEach((columns, index) => {
2464
- let renderEvent = columns.getEventBySlotIndex(0);
2465
- let start = 0;
2466
- for (let i = 0; i <= VegaCalendarDayViewEventLayoutRenderer.TOTAL_NUMBER_OF_CELLS; i++) {
2467
- const currentEvent = columns.getEventBySlotIndex(i);
2468
- if (currentEvent !== renderEvent) {
2469
- if (renderEvent) {
2470
- eventNodes.push(h("div", { key: index, class: "time-event-block", style: this.getTimeEventStyle(start, i, index, layout.getEventColumnsSpannedCount(renderEvent)) }, this.eventPreviewPopoverRenderer.render(renderEvent, targetCalendarViewDate, {
2471
- 'day-event': true,
2472
- 'bg-shadow': index > 0,
2473
- })));
2474
- }
2475
- renderEvent = currentEvent;
2476
- start = i;
2477
- }
2478
- }
2479
- });
2480
- return eventNodes;
2481
- }
2482
- /*
2483
- * The below method is e2e-test covered in
2484
- * @see{module:vega-calendar-render-timed-event-correct}
2485
- */
2486
- /* istanbul ignore next */
2487
- /**
2488
- * This function calculates and returns the style properties for positioning and sizing a calendar event within a grid layout.
2489
- *
2490
- * @param {number} startIndex - The `startIndex` parameter represents the index of the starting cell for the time event in the calendar grid.
2491
- * @param {number} endIndex - The `endIndex` parameter represents the index of the end position of the time event within a column. It indicates where the time event ends vertically within the column layout.
2492
- * @param {number} columnIndex - The `columnIndex` parameter represents the index of the column in which the event is being displayed. It is used to calculate the `left` position of the event element within the container based on the total number of columns spanned by the event.
2493
- * @param {number} columnsSpannedCount - The `columnsSpannedCount` parameter represents the number of columns spanned by the event in a calendar layout. It is used to calculate the left position of the event within the calendar grid.
2494
- * @returns {VegaCalendarEventStyle} The function `getTimeEventStyle` returns an object of type `VegaCalendarEventStyle` with properties for position, left, top, width, height, and zIndex.
2495
- */
2496
- getTimeEventStyle(startIndex, endIndex, columnIndex, columnsSpannedCount) {
2497
- const left = columnIndex * (1 / columnsSpannedCount);
2498
- return {
2499
- position: 'absolute',
2500
- left: `${left * 100}%`,
2501
- top: `${(100 / VegaCalendarDayViewEventLayoutRenderer.TOTAL_NUMBER_OF_CELLS) * startIndex}%`,
2502
- width: `calc(100% - ${left * 100}%)`,
2503
- height: `${(100 / VegaCalendarDayViewEventLayoutRenderer.TOTAL_NUMBER_OF_CELLS) * (endIndex - startIndex)}%`,
2504
- zIndex: columnIndex > 0 ? `${columnIndex}` : undefined,
2505
- };
2506
- }
2507
- }
2508
- VegaCalendarDayViewEventLayoutRenderer.TOTAL_NUMBER_OF_CELLS = 24 * 4;
2509
- __decorate$8([
2510
- MapToComponentField()
2511
- ], VegaCalendarDayViewEventLayoutRenderer.prototype, "eventItemRenderer", void 0);
2512
- __decorate$8([
2513
- MapToComponentField()
2514
- ], VegaCalendarDayViewEventLayoutRenderer.prototype, "eventPreviewPopoverRenderer", void 0);
2515
-
2516
- /** This code snippet is defining an abstract class named `VegaCalendarBaseEventLayoutGenerator` in TypeScript. The class contains an abstract method `generate` that must be implemented by any class that extends `VegaCalendarBaseEventLayoutGenerator`. */
2517
- class VegaCalendarBaseEventLayoutGenerator {
2518
- /**
2519
- * The function `addCurrentEventToLayout` adds a long event view to a layout row without overlapping with existing events.
2520
- *
2521
- * @param {VegaCalendarBaseEventLayoutCell[]} layoutCells - The `layoutCells` parameter is an array of
2522
- * `VegaCalendarBaseEventLayoutCell` objects. These objects represent rows in a layout where long events are displayed without overlapping each other.
2523
- * @param {unknown} input - The `currentView` parameter represents the current long event view that you want to add to the layout rows without overlapping with existing events. The function `addCurrentEventToLayoutRow` searches for a layout row that does not have any overlap with the current view. If such a row is found,
2524
- */
2525
- addCurrentEventToLayout(layoutCells, input) {
2526
- let noOverlapCell = layoutCells.find((layoutCell) => {
2527
- return !layoutCell.hasOverlapEvent(input);
2528
- });
2529
- if (!noOverlapCell) {
2530
- noOverlapCell = this.createNewLayoutCell();
2531
- noOverlapCell.updateSlots(input);
2532
- layoutCells.push(noOverlapCell);
2533
- }
2534
- else {
2535
- noOverlapCell.updateSlots(input);
2536
- }
2537
- }
2538
- }
2539
-
2540
- /** This TypeScript code snippet defines an abstract class `VegaCalendarBaseEventLayout` that serves as a base for event layout functionality in a calendar application. */
2541
- class VegaCalendarBaseEventLayout {
2542
- /**
2543
- * The function returns an array of VegaCalendarBaseEventLayoutCell objects.
2544
- *
2545
- * @returns {VegaCalendarBaseEventLayoutCell[]} An array of VegaCalendarLongEventLayoutRow objects is being returned.
2546
- */
2547
- get eventLayoutCells() {
2548
- return this.cells;
2549
- }
2550
- }
2551
-
2552
- /** This TypeScript class, VegaCalendarDayViewTimedEventLayout, manages the layout of events in a day view calendar. */
2553
- class VegaCalendarDayViewTimedEventLayout extends VegaCalendarBaseEventLayout {
2554
- /**
2555
- * The constructor function initializes the columns property with the provided array of VegaCalendarDayViewTimedEventLayoutColumn objects.
2556
- *
2557
- * @param {VegaCalendarDayViewTimedEventLayoutColumn[]} columns - An array of VegaCalendarDayViewTimedEventLayoutColumn objects.
2558
- */
2559
- constructor(columns) {
2560
- super();
2561
- this.cells = columns;
2562
- }
2563
- /**
2564
- * The function `getEventColumnsSpannedCount` calculates the number of columns spanned by a given calendar event in a day view layout.
2565
- *
2566
- * @param {CalendarEvent} eventItem - The `getEventColumnsSpannedCount` function takes a `CalendarEvent` object as the `eventItem` parameter. This function calculates the number of columns spanned by the given event within the calendar view.
2567
- * @returns {number} The function `getEventColumnsSpannedCount` returns the number of columns spanned by the given `eventItem` in the `VegaCalendarDayViewTimedEventLayoutColumn` array `columns`.
2568
- */
2569
- getEventColumnsSpannedCount(eventItem) {
2570
- const eventColumnIndex = this.cells.findIndex((column) => {
2571
- return column.getEventStartIndex(eventItem) >= 0;
2572
- });
2573
- let count = eventColumnIndex + 1;
2574
- if (eventColumnIndex < this.cells.length - 1) {
2575
- this.cells
2576
- .slice(eventColumnIndex + 1)
2577
- .forEach((column) => {
2578
- if (column.hasOverlapEvent(eventItem)) {
2579
- count++;
2580
- }
2581
- });
2582
- }
2583
- return count;
2584
- }
2585
- }
2586
-
2587
- /** This code snippet is defining an abstract class named `VegaCalendarBaseEventLayoutCell`. Here's a breakdown of what it does: */
2588
- class VegaCalendarBaseEventLayoutCell {
2589
- /**
2590
- * This function retrieves a calendar event based on the slot index provided.
2591
- *
2592
- * @param {number} index - The `index` parameter is a number that represents the position of a slot in an array.
2593
- * @returns {Nullable<CalendarEvent>} The `getEventBySlotIndex` method is returning a `CalendarEvent` object from the `slots` array at the specified `index`.
2594
- */
2595
- getEventBySlotIndex(index) {
2596
- return this.slots[index];
2597
- }
2598
- /**
2599
- * The function `getEventStartIndex` returns the index of a given `CalendarEvent` object within an array of `CalendarEvent` objects.
2600
- *
2601
- * @param {CalendarEvent} eventItem - CalendarEvent
2602
- * @returns {number} The function `getEventStartIndex` returns the index of the `eventItem` within the `slots` array.
2603
- */
2604
- getEventStartIndex(eventItem) {
2605
- return this.slots.findIndex((item) => item === eventItem);
2606
- }
2607
- /**
2608
- * This TypeScript function calculates the end index of a calendar event within a specified range of slots.
2609
- *
2610
- * @param {CalendarEvent} eventItem - CalendarEvent - the event item for which we want to find the end index in the calendar.
2611
- * @returns {number} The `getEventEndIndex` function returns the index of the end of the calendar event in the `VegaCalendarLongEventLayoutRow.defaultSlots` array.
2612
- */
2613
- getEventEndIndex(eventItem) {
2614
- const startIndex = this.getEventStartIndex(eventItem);
2615
- let endIndex = startIndex;
2616
- if (startIndex >= 0) {
2617
- for (let i = startIndex + 1; i < this.slots.length; i++) {
2618
- if (this.slots[i] !== eventItem) {
2619
- endIndex = i - 1;
2620
- break;
2621
- }
2622
- else if (i === this.slots.length - 1) {
2623
- endIndex = i;
2624
- }
2625
- }
2626
- }
2627
- return endIndex;
2628
- }
2629
- }
2630
-
2631
- /** The class `VegaCalendarDayViewEventLayoutColumn` manages the layout of events in a day view calendar by storing event slots and providing methods to interact with them. */
2632
- class VegaCalendarDayViewTimedEventLayoutColumn extends VegaCalendarBaseEventLayoutCell {
2633
- constructor() {
2634
- super(...arguments);
2635
- this.slots = VegaCalendarDayViewTimedEventLayoutColumn.defaultSlots;
2636
- }
2637
- /**
2638
- * The function `hasOverlapEvent` checks if a given calendar event overlaps with existing events in the calendar.
2639
- *
2640
- * @param {CalendarEvent} eventItem - The `eventItem` parameter in the `hasOverlapEvent` function represents a `CalendarEvent` object that contains information about an event such as its start time, end time, and possibly other details related to the event.
2641
- * @returns {boolean} The function `hasOverlapEvent` returns a boolean value indicating whether there is an overlap in the calendar event slots. If there is an overlap, it returns `true`, otherwise it returns `false`.
2642
- */
2643
- hasOverlapEvent(eventItem) {
2644
- const [start, end] = this.getIndexRangeFromEvent(eventItem);
2645
- let overlapFlag = false;
2646
- for (let i = start; i < end; i++) {
2647
- if (this.slots[i]) {
2648
- overlapFlag = true;
2649
- break;
2650
- }
2651
- }
2652
- return overlapFlag;
2653
- }
2654
- /**
2655
- * The function `updateColumnSlots` updates the slots array by replacing a range of elements with a given event item.
2656
- *
2657
- * @param {CalendarEvent} eventItem - The `eventItem` parameter is a `CalendarEvent` object that represents an event in a calendar.
2658
- */
2659
- updateSlots(eventItem) {
2660
- const [start, end] = this.getIndexRangeFromEvent(eventItem);
2661
- if (end > start) {
2662
- this.slots = this.slots
2663
- .slice(0, start)
2664
- .concat(Array(end - start).fill(eventItem), this.slots.slice(end));
2665
- }
2666
- }
2667
- /**
2668
- * The function `getIndexRangeFromEvent` takes a `CalendarEvent` object and returns an array of time indices based on the start and end times of the event.
2669
- *
2670
- * @param {CalendarEvent} eventItem - A CalendarEvent object containing information about a specific event in a calendar, such as its start time and end time.
2671
- * @returns {number[]} An array of two numbers representing the index range of the start and end times of the given CalendarEvent.
2672
- */
2673
- getIndexRangeFromEvent(eventItem) {
2674
- const { startTime, endTime } = eventItem;
2675
- const startIndex = getTimeIndex(startTime.toString());
2676
- const endIndex = getTimeIndex(endTime.toString());
2677
- return [startIndex, Math.max(endIndex, startIndex + 1)];
2678
- }
2679
- }
2680
- VegaCalendarDayViewTimedEventLayoutColumn.defaultSlots = Array(96).fill(null);
2681
-
2682
- /** The `VegaCalendarDayViewEventLayoutGenerator` class in TypeScript generates a layout for calendar events in a day view. */
2683
- class VegaCalendarDayViewTimedEventLayoutGenerator extends VegaCalendarBaseEventLayoutGenerator {
2684
- /**
2685
- * The function generates a layout for displaying calendar events in a day view.
2686
- *
2687
- * @param {CalendarEvent[]} calendarEvents - CalendarEvent[] - an array of calendar events containing information such as event title, start time, end time, and other relevant details.
2688
- * @returns {VegaCalendarDayViewTimedEventLayout} A `VegaCalendarDayViewTimedEventLayout` object is being returned, which is constructed using the `layoutColumns` array containing `VegaCalendarDayViewTimedEventLayoutColumn` objects.
2689
- */
2690
- generate(calendarEvents) {
2691
- const layoutColumns = [
2692
- new VegaCalendarDayViewTimedEventLayoutColumn(),
2693
- ];
2694
- calendarEvents.forEach((eventItem) => {
2695
- this.addCurrentEventToLayout(layoutColumns, eventItem);
2696
- });
2697
- return new VegaCalendarDayViewTimedEventLayout(layoutColumns);
2698
- }
2699
- /**
2700
- * The function creates a new instance of VegaCalendarDayViewTimedEventLayoutColumn.
2701
- *
2702
- * @returns {VegaCalendarDayViewTimedEventLayoutColumn} An instance of the class `VegaCalendarDayViewTimedEventLayoutColumn` is being returned.
2703
- */
2704
- createNewLayoutCell() {
2705
- return new VegaCalendarDayViewTimedEventLayoutColumn();
2706
- }
2707
- }
2708
-
2709
- /** The VegaCalendarEventSorter class in TypeScript provides a sort method to sort an array of CalendarEvent objects. */
2710
- class VegaCalendarEventSorter {
2711
- /**
2712
- * The function "sort" takes an array of CalendarEvent objects and returns the same array without performing any sorting.
2713
- *
2714
- * @param {CalendarEvent[]} events - CalendarEvent[] - an array of CalendarEvent objects that need to be sorted.
2715
- * @param {number} currentViewIndex - The current index of the row
2716
- * @param {VegaCalendarFullDayEventLayout} fullDayEventLayout - The current row all long event layout
2717
- * @returns {Nullable<CalendarEvent>[]} The `sort` function is currently returning the input array of `CalendarEvent` objects as is, without performing any sorting operation.
2718
- */
2719
- sort(events, currentViewIndex, fullDayEventLayout) {
2720
- const allDayEvents = [];
2721
- const groupEvents = [];
2722
- const otherEvents = [];
2723
- for (let i = 0; i < events.length; i++) {
2724
- const currentEvent = events[i];
2725
- if (currentEvent) {
2726
- if (currentEvent.isGroupEvent()) {
2727
- groupEvents.push(currentEvent);
2728
- }
2729
- else if (currentEvent.isAllDayEvent) {
2730
- allDayEvents.push(currentEvent);
2731
- }
2732
- else {
2733
- otherEvents.push(currentEvent);
2734
- }
2735
- }
2736
- }
2737
- let result = allDayEvents.concat(this.sortCalendarEventByTime(otherEvents));
2738
- let currentViewOrderGroupEvents = fullDayEventLayout.getEventsByIndex(currentViewIndex);
2739
- const currentEvents = currentViewOrderGroupEvents.filter((item) => item);
2740
- result = groupEvents
2741
- .filter((groupEvent) => {
2742
- return currentEvents.findIndex((item) => item === groupEvent) < 0;
2743
- })
2744
- .concat(result);
2745
- if (currentViewOrderGroupEvents.length > currentEvents.length) {
2746
- const insertItems = result.slice(0, currentViewOrderGroupEvents.length - currentEvents.length);
2747
- result = result.slice(currentViewOrderGroupEvents.length - currentEvents.length);
2748
- currentViewOrderGroupEvents = this.insertEventsToEmptyPosition(currentViewOrderGroupEvents, insertItems);
2749
- }
2750
- result = currentViewOrderGroupEvents.concat(result);
2751
- return result;
2752
- }
2753
- /**
2754
- * The function `sortCalendarEventByTime` sorts an array of `CalendarEvent` objects based on their start and end times.
2755
- *
2756
- * @param {CalendarEvent[]} events - An array of CalendarEvent objects. Each CalendarEvent object contains information about a specific event, such as startTime and endTime.
2757
- * @returns {CalendarEvent[]} The `sortCalendarEventByTime` function is returning an array of `CalendarEvent` objects sorted by their start time and end time. The events are sorted in ascending order based on their start time, and if two events have the same start time, they are further sorted in descending order based on their end time.
2758
- */
2759
- sortCalendarEventByTime(events) {
2760
- return events.sort((eventA, eventB) => {
2761
- const eventAStartIndex = getTimeIndex(eventA.startTime.toString());
2762
- const eventBStartIndex = getTimeIndex(eventB.startTime.toString());
2763
- if (eventAStartIndex === eventBStartIndex) {
2764
- return getTimeIndex(eventB.endTime.toString()) - getTimeIndex(eventA.endTime.toString());
2765
- }
2766
- else {
2767
- return eventAStartIndex - eventBStartIndex;
2768
- }
2769
- });
2770
- }
2771
- /**
2772
- * The function inserts events from a given array into empty positions in another array of events.
2773
- *
2774
- * @param {Nullable<CalendarEvent>[]} viewEvents - `viewEvents` is an array of nullable
2775
- * `CalendarEvent` objects representing the events currently displayed in the calendar view. Each
2776
- * element in the array can either be a `CalendarEvent` object or `null`.
2777
- * @param {CalendarEvent[]} events - The `events` parameter in the `insertEventsToEmptyPosition`
2778
- * function represents an array of `CalendarEvent` objects that need to be inserted into the
2779
- * `viewEvents` array at empty positions. The function iterates over the `viewEvents` array and
2780
- * inserts events from the `events` array
2781
- * @returns {Nullable<CalendarEvent>[]} The `insertEventsToEmptyPosition` function returns an array of `Nullable<CalendarEvent>`
2782
- * where events from the `events` array are inserted into empty positions in the `viewEvents` array.
2783
- * If there are no empty positions in `viewEvents`, the function returns the original `viewEvents`
2784
- * array.
2785
- */
2786
- insertEventsToEmptyPosition(viewEvents, events) {
2787
- return viewEvents.map((item) => {
2788
- if (events.length && !item) {
2789
- const insertItem = events[0];
2790
- events = events.slice(1);
2791
- return insertItem;
2792
- }
2793
- else {
2794
- return item;
2795
- }
2796
- });
2797
- }
2798
- }
2799
-
2800
- var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2801
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2802
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2803
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2804
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2805
- };
2806
- /** The `VegaCalendarTimedEventRenderer` class in TypeScript React renders timed events for a calendar view based on the current day's events. timed events render for day view and week view */
2807
- class VegaCalendarTimedEventRenderer extends VegaSlimmer {
2808
- constructor() {
2809
- super(...arguments);
2810
- this.calendarEventSorter = new VegaCalendarEventSorter();
2811
- this.dayViewTimedEventLayoutGenerator = new VegaCalendarDayViewTimedEventLayoutGenerator();
2812
- }
2813
- /**
2814
- * render current preiod normal events
2815
- *
2816
- * @returns {HTMLElement} events element
2817
- */
2818
- render() {
2819
- const viewSource = this.calendarView.dateItems[0];
2820
- return (h("div", { class: "day-event-container" }, viewSource.map((item) => {
2821
- return (h("div", { key: `${item.month}-${item.date}`, class: "day-event-col" }, this.renderTimedEvents(item)));
2822
- })));
2823
- }
2824
- /**
2825
- * render current day events
2826
- *
2827
- * @param {CalendarDate} date calendar Date
2828
- * @returns {HTMLElement[]} event elements
2829
- */
2830
- renderTimedEvents(date) {
2831
- const events = this.calendarEventController
2832
- .getCurrentDateEvents(date)
2833
- .filter((eventItem) => !eventItem.isAllDayEvent && !eventItem.isGroupEvent());
2834
- const sortEvents = this.calendarEventSorter.sortCalendarEventByTime(events);
2835
- const layout = this.dayViewTimedEventLayoutGenerator.generate(sortEvents);
2836
- return this.dayViewEventLayoutRenderer.render(layout, date);
2837
- }
2838
- }
2839
- __decorate$7([
2840
- MapToComponentField()
2841
- ], VegaCalendarTimedEventRenderer.prototype, "calendarView", void 0);
2842
- __decorate$7([
2843
- MapToComponentField()
2844
- ], VegaCalendarTimedEventRenderer.prototype, "calendarEventController", void 0);
2845
- __decorate$7([
2846
- MapToComponentField()
2847
- ], VegaCalendarTimedEventRenderer.prototype, "dayViewEventLayoutRenderer", void 0);
2848
-
2849
- /** The VegaCalendarLongEventLayout class manages the layout of long events in a calendar by organizing them into rows. */
2850
- class VegaCalendarFullDayEventLayout extends VegaCalendarBaseEventLayout {
2851
- /**
2852
- * The constructor function initializes a VegaCalendarFullDayEventLayoutRow array in TypeScript.
2853
- *
2854
- * @param {VegaCalendarFullDayEventLayoutRow[]} rows - An array of VegaCalendarFullDayEventLayoutRow objects.
2855
- */
2856
- constructor(rows) {
2857
- super();
2858
- this.cells = rows;
2859
- }
2860
- /**
2861
- * This TypeScript function returns the index of a row containing a specific calendar event.
2862
- *
2863
- * @param {CalendarEvent} eventItem - The `eventItem` parameter is a `CalendarEvent` object that represents an event in a calendar.
2864
- * @returns {number} The function `getEventRowsIndex` returns the index of the row in the `rows` array where the `eventItem` is found based on the condition specified in the `findIndex` method.
2865
- */
2866
- getEventRowsIndex(eventItem) {
2867
- return this.cells.findIndex((row) => row.getEventStartIndex(eventItem) >= 0);
2868
- }
2869
- /**
2870
- * This function retrieves CalendarEvents from each row in a calendar layout based on a specified index.
2871
- *
2872
- * @param {number} index - The `index` parameter in the `getEventsByIndex` method is a number that
2873
- * represents the slot index for which you want to retrieve calendar events. The method iterates
2874
- * through each row in the `rows` array and retrieves the calendar event at the specified slot index from each row. The method
2875
- * @returns {Nullable<CalendarEvent>[]} An array of CalendarEvent objects is being returned.
2876
- */
2877
- getEventsByIndex(index) {
2878
- const result = [];
2879
- let lastItemIndex = 0;
2880
- this.cells.forEach((row, rowIndex) => {
2881
- const currentEvent = row.getEventBySlotIndex(index);
2882
- result.push(currentEvent);
2883
- if (currentEvent) {
2884
- lastItemIndex = rowIndex;
2885
- }
2886
- });
2887
- return result.slice(0, lastItemIndex + 1);
2888
- }
2889
- }
2890
-
2891
- /** The `VegaCalendarLongEventLayoutRow` class in TypeScript manages the layout of long events in a calendar by updating slots and checking for overlaps. */
2892
- class VegaCalendarFullDayEventLayoutRow extends VegaCalendarBaseEventLayoutCell {
2893
- constructor() {
2894
- super(...arguments);
2895
- this.slots = VegaCalendarFullDayEventLayoutRow.defaultSlots;
2896
- }
2897
- /**
2898
- * The function `updateRowSlots` updates a row of slots in a calendar view with a long event.
2899
- *
2900
- * @param {VegaCalendarFullDayEventView} eventView - The `eventView` parameter in the `updateRowSlots` method is of type `VegaCalendarFullDayEventView`. It contains information about a long event in a
2901
- */
2902
- updateSlots(eventView) {
2903
- const { start, end } = eventView;
2904
- this.slots = this.slots
2905
- .slice(0, start)
2906
- .concat(Array(end - start + 1).fill(eventView.event), this.slots.slice(end + 1));
2907
- }
2908
- /**
2909
- * The function checks if a given event overlaps with existing events in a calendar view.
2910
- *
2911
- * @param {VegaCalendarFullDayEventView} eventView - The `eventView` parameter in the `hasOverlapEvent`
2912
- * function represents a view of a long event in a Vega calendar. It contains the `start` and `end`
2913
- * properties which specify the start and end times of the event. The function checks if there is any
2914
- * overlap with existing events in
2915
- * @returns {boolean} The function `hasOverlapEvent` returns a boolean value indicating whether there is an
2916
- * overlap in the slots between the start and end times of the given `VegaCalendarFullDayEventView` event.
2917
- */
2918
- hasOverlapEvent(eventView) {
2919
- const { start, end } = eventView;
2920
- let overlapFlag = false;
2921
- for (let i = start; i < end + 1; i++) {
2922
- if (this.slots[i]) {
2923
- overlapFlag = true;
2924
- break;
2925
- }
2926
- }
2927
- return overlapFlag;
2928
- }
2929
- }
2930
- VegaCalendarFullDayEventLayoutRow.defaultSlots = Array(7).fill(null);
2931
-
2932
- /** The `VegaCalendarLongEventLayoutGenerator` class in TypeScript generates a layout for long calendar events with overlapping prevention logic. */
2933
- class VegaCalendarFullDayEventLayoutGenerator extends VegaCalendarBaseEventLayoutGenerator {
2934
- /**
2935
- * The function generates a long event layout for a calendar based on the input calendar events.
2936
- *
2937
- * @param {CalendarEvent[][]} calendarEvents - CalendarEvent[][] is a two-dimensional array where each
2938
- * element represents a day in the calendar and contains an array of CalendarEvent objects representing events on that day.
2939
- * @returns {VegaCalendarFullDayEventLayout} A new instance of `VegaCalendarFullDayEventLayout` is being returned, which is constructed
2940
- * using the `layoutRows` array containing `VegaCalendarFullDayEventLayoutRow` objects.
2941
- */
2942
- generate(calendarEvents) {
2943
- const allShouldOrderLongEvents = this.collectAllShouldOrderLongEvents(calendarEvents);
2944
- const layoutRows = [this.createNewLayoutCell()];
2945
- allShouldOrderLongEvents.forEach((eventView) => {
2946
- this.addCurrentEventToLayout(layoutRows, eventView);
2947
- });
2948
- return new VegaCalendarFullDayEventLayout(layoutRows);
2949
- }
2950
- /**
2951
- * The function creates a new instance of VegaCalendarFullDayEventLayoutRow.
2952
- *
2953
- * @returns {VegaCalendarFullDayEventLayoutRow} An instance of the class `VegaCalendarFullDayEventLayoutRow` is being returned.
2954
- */
2955
- createNewLayoutCell() {
2956
- return new VegaCalendarFullDayEventLayoutRow();
2957
- }
2958
- /**
2959
- * Filter the all should order group event from event list
2960
- *
2961
- * @param {CalendarEvent[][]} allEvents all event list
2962
- * @returns {VegaCalendarFullDayEventView[]} the group event view list
2963
- */
2964
- collectAllShouldOrderLongEvents(allEvents) {
2965
- const allLongEventViews = {};
2966
- allEvents.forEach((items, index) => {
2967
- const longEvents = items.filter((item) => item && item.isGroupEvent());
2968
- longEvents.forEach((groupEvent) => {
2969
- if (!allLongEventViews[groupEvent.eventKey]) {
2970
- allLongEventViews[groupEvent.eventKey] = {
2971
- start: index,
2972
- end: index,
2973
- event: groupEvent,
2974
- };
2975
- }
2976
- else {
2977
- allLongEventViews[groupEvent.eventKey] = Object.assign(Object.assign({}, allLongEventViews[groupEvent.eventKey]), { end: index, start: index - allLongEventViews[groupEvent.eventKey].end !== 1
2978
- ? index
2979
- : allLongEventViews[groupEvent.eventKey].start });
2980
- }
2981
- });
2982
- });
2983
- const shouldSortLongEventViews = Object.values(allLongEventViews);
2984
- return this.sortLongEventViews(shouldSortLongEventViews);
2985
- }
2986
- /**
2987
- * This function sorts an array of VegaCalendarFullDayEventView objects based on their start and end times.
2988
- *
2989
- * @param {VegaCalendarFullDayEventView[]} eventViews - The `eventViews` parameter is an array of
2990
- * `VegaCalendarFullDayEventView` objects that represent long events in a calendar. The function
2991
- * `sortLongEventViews` takes this array as input and sorts it based on the start and end times of the events.
2992
- * @returns {VegaCalendarFullDayEventView[]} The function `sortLongEventViews` is returning an array of `VegaCalendarFullDayEventView`
2993
- * objects that have been sorted based on the comparison logic provided in the sorting function. The sorting is done based on the `start` and `end` properties of the objects in the array.
2994
- */
2995
- sortLongEventViews(eventViews) {
2996
- return eventViews.sort((itemA, itemB) => {
2997
- const { startDate: startA, endDate: endA } = itemA.event;
2998
- const { startDate: startB, endDate: endB } = itemB.event;
2999
- startA.setHours(0, 0, 0);
3000
- startB.setHours(0, 0, 0);
3001
- endA.setHours(23, 59, 59);
3002
- endB.setHours(23, 59, 59);
3003
- const num = endB.valueOf() - startB.valueOf() - (endA.valueOf() - startA.valueOf());
3004
- if (startA.valueOf() !== startB.valueOf()) {
3005
- return startA.valueOf() - startB.valueOf();
3006
- }
3007
- else {
3008
- return num;
3009
- }
3010
- });
3011
- }
3012
- }
3013
-
3014
- var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3015
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3016
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3017
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3018
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3019
- };
3020
- /** This code snippet defines a TypeScript class `VegaCalendarFullDayEventLayoutRenderer` that extends `VegaSlimmer`. Here's a breakdown of what the class and its methods are doing: */
3021
- class VegaCalendarFullDayEventLayoutRenderer extends VegaSlimmer {
3022
- constructor() {
3023
- super(...arguments);
3024
- this.longEventLayoutGenerator = new VegaCalendarFullDayEventLayoutGenerator();
3025
- this.calendarEventSorter = new VegaCalendarEventSorter();
3026
- }
3027
- /**
3028
- * The function `sortLongEvents` sorts calendar events based on a fixed layout generated by `longEventLayoutGenerator`.
3029
- *
3030
- * @param {CalendarEvent[][]} calendarEvents - calendar current row all events
3031
- * @returns {Nullable<CalendarEvent>[][]} the events after sorter
3032
- */
3033
- sortLongEvents(calendarEvents) {
3034
- this.fullDayEventLayout = this.longEventLayoutGenerator.generate(calendarEvents);
3035
- return calendarEvents.map((items, index) => {
3036
- return this.calendarEventSorter.sort(items, index, this.fullDayEventLayout);
3037
- });
3038
- }
3039
- /**
3040
- * render the month view or week view long events
3041
- *
3042
- * @param {Nullable<CalendarEvent>[]} calendarEvents current events
3043
- * @param {currentViewIndex} currentViewIndex the current index of the row
3044
- * @returns {HTMLElement[]} event elements
3045
- */
3046
- render(calendarEvents, currentViewIndex, targetCalendarViewDate) {
3047
- return calendarEvents.map((item, index) => {
3048
- if (item) {
3049
- return (h("div", { key: item.eventKey, class: this.viewMode === 'month' ? 'month-event-block' : 'day-event-block', style: this.getEventStyle(item, currentViewIndex, index, this.viewMode === 'month'
3050
- ? VegaCalendarFullDayEventLayoutRenderer.monthViewEventOffsetTop
3051
- : 0) }, this.eventPreviewPopoverRenderer.render(item, targetCalendarViewDate, {
3052
- 'month-event': this.viewMode === 'month',
3053
- 'day-event': this.viewMode !== 'month',
3054
- })));
3055
- }
3056
- });
3057
- }
3058
- /*
3059
- * The below method is e2e-test covered in
3060
- * @see{module:vega-calendar-render-full-day-event-correct}
3061
- */
3062
- /* istanbul ignore next */
3063
- /**
3064
- * Get the current event layout style from the params
3065
- *
3066
- * @param {CalendarEvent} calendarEvent current event item
3067
- * @param {number} currentViewIndex the current date index of the row
3068
- * @param {number} itemIndex the current event index of the event array
3069
- * @param {number} offsetTop the default offset top for the event
3070
- * @returns {VegaCalendarEventStyle} layout style object
3071
- */
3072
- getEventStyle(calendarEvent, currentViewIndex, itemIndex, offsetTop) {
3073
- const cellCount = this.calendarView.weekdays.length;
3074
- const start = currentViewIndex;
3075
- let end = currentViewIndex + 1;
3076
- const top = itemIndex;
3077
- let visible = true;
3078
- const order = this.fullDayEventLayout.getEventRowsIndex(calendarEvent);
3079
- if (order >= 0) {
3080
- const startIndex = this.fullDayEventLayout.eventLayoutCells[order].getEventStartIndex(calendarEvent);
3081
- const endIndex = this.fullDayEventLayout.eventLayoutCells[order].getEventEndIndex(calendarEvent);
3082
- if (startIndex === currentViewIndex) {
3083
- end = endIndex + 1;
3084
- }
3085
- else {
3086
- visible = false;
3087
- }
3088
- }
3089
- return {
3090
- position: 'absolute',
3091
- left: `${(100 / cellCount) * start}%`,
3092
- top: `${top * VegaCalendarEventItemRenderer.backgroundColorModeEventHeight + offsetTop}px`,
3093
- width: `${(100 / cellCount) * (end - start)}%`,
3094
- opacity: visible ? '1' : '0',
3095
- };
3096
- }
3097
- }
3098
- VegaCalendarFullDayEventLayoutRenderer.monthViewEventOffsetTop = 26;
3099
- __decorate$6([
3100
- MapToComponentField()
3101
- ], VegaCalendarFullDayEventLayoutRenderer.prototype, "eventItemRenderer", void 0);
3102
- __decorate$6([
3103
- MapToComponentField()
3104
- ], VegaCalendarFullDayEventLayoutRenderer.prototype, "viewMode", void 0);
3105
- __decorate$6([
3106
- MapToComponentField()
3107
- ], VegaCalendarFullDayEventLayoutRenderer.prototype, "calendarView", void 0);
3108
- __decorate$6([
3109
- MapToComponentField()
3110
- ], VegaCalendarFullDayEventLayoutRenderer.prototype, "eventPreviewPopoverRenderer", void 0);
3111
-
3112
- var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3113
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3114
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3115
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3116
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3117
- };
3118
- class VegaCalendarFullDayEventMoreButtonRenderer extends VegaSlimmer {
3119
- constructor() {
3120
- super(...arguments);
3121
- /**
3122
- * Update the show all flag to true when click the more button
3123
- *
3124
- * @param {MouseEvent} e event object
3125
- */
3126
- this.updateShowAllFlag = (e) => {
3127
- e.stopPropagation();
3128
- this.showAllEventsInDayOrWeekView = true;
3129
- };
3130
- }
3131
- /**
3132
- * Render the more button element
3133
- *
3134
- * @param {number} count the hidden elements count
3135
- * @returns {Nullable<HTMLElement>} more button
3136
- */
3137
- render(count) {
3138
- if (!this.showAllEventsInDayOrWeekView) {
3139
- return (h("div", { tabIndex: 0, role: "button", class: "more-button", onKeyDown: createEnterKeyHandlerToTriggerClick(), onClick: this.updateShowAllFlag }, `${count} More`));
3140
- }
3141
- }
3142
- /**
3143
- * Reset the show all event flag when view mode change
3144
- */
3145
- resetShowAllFlag() {
3146
- this.showAllEventsInDayOrWeekView = false;
3147
- }
3148
- }
3149
- __decorate$5([
3150
- MapToComponentField({ writable: true })
3151
- ], VegaCalendarFullDayEventMoreButtonRenderer.prototype, "showAllEventsInDayOrWeekView", void 0);
3152
- __decorate$5([
3153
- MapToComponentMethod('watchViewModeChange')
3154
- ], VegaCalendarFullDayEventMoreButtonRenderer.prototype, "resetShowAllFlag", null);
3155
-
3156
- var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3157
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3158
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3159
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3160
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3161
- };
3162
- /**
3163
- * Render a red line that representing the current time
3164
- */
3165
- class VegaCalendarTimeMarkerRenderer extends VegaSlimmer {
3166
- /**
3167
- * takes an array of `CalendarDate` objects as input and returns an HTML element
3168
- *
3169
- * @param {CalendarDate[]} source
3170
- * @returns {HTMLElement} the html element
3171
- */
3172
- render(source) {
3173
- const isVisible = source.findIndex((calendarDate) => calendarDate.isToday(this.timezone)) >= 0;
3174
- return (h("div", { class: {
3175
- 'time-marker-container': true,
3176
- 'hidden': !isVisible,
3177
- } },
3178
- h("div", { class: "time-marker", style: { top: this.getTimeMarkerPosition() }, ref: (div) => (this.timeMarkerRef = div) }, source.map((item) => {
3179
- return h("div", { key: item.date, class: { active: item.isToday(this.timezone) } });
3180
- }))));
3181
- }
3182
- /**
3183
- * scroll to current time line block if change view mode to week or day
3184
- *
3185
- * @param {VegaCalendarViewModeType} viewMode the view mode
3186
- */
3187
- updateTimeLine(viewMode) {
3188
- this.scrollToTargetTimeBlock(viewMode);
3189
- this.syncTimeMarkerPosition(viewMode);
3190
- }
3191
- /**
3192
- * remove setInterval when component destroy
3193
- */
3194
- clearTimer() {
3195
- clearInterval(this.timeMarkerPositionTimer);
3196
- }
3197
- /**
3198
- * Add the time mark position update logic if the component add back to page
3199
- */
3200
- updateTimeLineIfComponentAddBack() {
3201
- this.syncTimeMarkerPosition(this.viewMode);
3202
- }
3203
- /**
3204
- * Should display the current time block in the view if the default view mode is not month
3205
- */
3206
- displayCurrentTimeBlockByDefault() {
3207
- this.scrollToTargetTimeBlock(this.viewMode);
3208
- }
3209
- /**
3210
- * The function `getTimeMarkerPosition` calculates the position of the current time marker as a percentage of the day.
3211
- *
3212
- * @returns {string} a string representing the current time marker position as a percentage of the day.
3213
- */
3214
- getTimeMarkerPosition() {
3215
- const now = new Date();
3216
- const minutesOneDay = 24 * 60;
3217
- if (this.timezone && this.timezone !== getSystemTimezone()) {
3218
- try {
3219
- const formatter = new Intl.DateTimeFormat([], {
3220
- timeZone: this.timezone,
3221
- hour: '2-digit',
3222
- minute: '2-digit',
3223
- hour12: false,
3224
- });
3225
- const parts = formatter.formatToParts(now);
3226
- const hourPart = parts.find((part) => part.type === 'hour');
3227
- const minutePart = parts.find((part) => part.type === 'minute');
3228
- if (hourPart !== undefined && minutePart !== undefined) {
3229
- const hours = parseInt(hourPart.value, 10);
3230
- const minutes = parseInt(minutePart.value, 10);
3231
- return ((hours * 60 + minutes) / minutesOneDay) * 100 + '%';
3232
- }
3233
- }
3234
- catch (_a) {
3235
- LogUtility.warn('Invalid timezone:', this.timezone);
3236
- }
3237
- }
3238
- return ((now.getHours() * 60 + now.getMinutes()) / minutesOneDay) * 100 + '%';
3239
- }
3240
- /*
3241
- * The below method is e2e-test covered in
3242
- * @see{module:vega-calendar-scroll-to-current-time}
3243
- */
3244
- /* istanbul ignore next */
3245
- /**
3246
- * Update the time marker position with the time
3247
- *
3248
- * @param {VegaCalendarViewModeType} viewMode view mode value
3249
- */
3250
- syncTimeMarkerPosition(viewMode) {
3251
- clearInterval(this.timeMarkerPositionTimer);
3252
- if (viewMode !== 'month') {
3253
- this.timeMarkerPositionTimer = setInterval(() => {
3254
- if (this.timeMarkerRef) {
3255
- this.timeMarkerRef.style.top = this.getTimeMarkerPosition();
3256
- }
3257
- }, 60 * 1000);
3258
- }
3259
- }
3260
- /*
3261
- * The below method is e2e-test covered in
3262
- * @see{module:vega-calendar-scroll-to-current-time}
3263
- * @see{module:vega-calendar-scroll-to-center-position}
3264
- */
3265
- /* istanbul ignore next */
3266
- /**
3267
- * scroll the time line in to current view
3268
- *
3269
- * @param {VegaCalendarViewModeType} viewMode view mode value
3270
- */
3271
- scrollToTargetTimeBlock(viewMode) {
3272
- if (viewMode !== 'month') {
3273
- // add setTimeout here to make sure call the scroll into view after time line rendered.
3274
- const oneFrame = 16;
3275
- setTimeout(() => {
3276
- const calendarViewElement = this.viewRenderer.getCalendarViewElementRef();
3277
- const top = Math.max(0, this.getViewCenterPosition());
3278
- if (calendarViewElement && top) {
3279
- calendarViewElement.scrollTo({ top });
3280
- }
3281
- }, oneFrame);
3282
- }
3283
- }
3284
- /*
3285
- * The below method is e2e-test covered in
3286
- * @see{module:vega-calendar-scroll-to-current-time}
3287
- * @see{module:vega-calendar-scroll-to-center-position}
3288
- */
3289
- /* istanbul ignore next */
3290
- /**
3291
- * Get the center position of the display area.
3292
- * <div class='calendar-view'>
3293
- * <div class='calendar-view-title-container'></div>
3294
- * <div class='display-view'>
3295
- * <div class='empty-space'></div>
3296
- * <div class='time-marker'></div>
3297
- * </div>
3298
- * </div>
3299
- *
3300
- * @returns {number}
3301
- */
3302
- getViewCenterPosition() {
3303
- const calendarViewElement = this.viewRenderer.getCalendarViewElementRef();
3304
- if (calendarViewElement) {
3305
- const fixedWeekHeader = calendarViewElement.querySelector('.calendar-view-title-container');
3306
- const weekHeaderHeight = fixedWeekHeader ? fixedWeekHeader.offsetHeight : 0;
3307
- const viewHeight = typeof calendarViewElement.offsetHeight === 'number' ? calendarViewElement.offsetHeight : 0;
3308
- const displayViewHeight = Math.max(viewHeight - weekHeaderHeight, 0);
3309
- const halfDisplayViewHeight = displayViewHeight / 2;
3310
- const viewScrollHeight = typeof calendarViewElement.scrollHeight === 'number' ? calendarViewElement.scrollHeight : 0;
3311
- const emptySpace = 16;
3312
- const timeMarkerTop = (Number(this.getTimeMarkerPosition().replace('%', '')) / 100) *
3313
- Math.max(viewScrollHeight - emptySpace - weekHeaderHeight, 0);
3314
- if (!isNaN(halfDisplayViewHeight) && timeMarkerTop && timeMarkerTop > halfDisplayViewHeight) {
3315
- return timeMarkerTop - halfDisplayViewHeight + emptySpace;
3316
- }
3317
- }
3318
- return 0;
3319
- }
3320
- }
3321
- __decorate$4([
3322
- MapToComponentField()
3323
- ], VegaCalendarTimeMarkerRenderer.prototype, "viewMode", void 0);
3324
- __decorate$4([
3325
- MapToComponentField()
3326
- ], VegaCalendarTimeMarkerRenderer.prototype, "viewRenderer", void 0);
3327
- __decorate$4([
3328
- MapToComponentField()
3329
- ], VegaCalendarTimeMarkerRenderer.prototype, "timezone", void 0);
3330
- __decorate$4([
3331
- MapToComponentMethod('watchViewModeChange')
3332
- ], VegaCalendarTimeMarkerRenderer.prototype, "updateTimeLine", null);
3333
- __decorate$4([
3334
- MapToComponentMethod('disconnectedCallback')
3335
- ], VegaCalendarTimeMarkerRenderer.prototype, "clearTimer", null);
3336
- __decorate$4([
3337
- MapToComponentMethod('connectedCallback')
3338
- ], VegaCalendarTimeMarkerRenderer.prototype, "updateTimeLineIfComponentAddBack", null);
3339
- __decorate$4([
3340
- MapToComponentMethod('componentDidLoad')
3341
- ], VegaCalendarTimeMarkerRenderer.prototype, "displayCurrentTimeBlockByDefault", null);
3342
-
3343
- var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3344
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3345
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3346
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3347
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3348
- };
3349
- /**
3350
- * Controller for managing the post-operation date in the Vega Calendar.
3351
- */
3352
- class VegaCalendarPostOperationDateController extends VegaSlimmer {
3353
- /**
3354
- * Set new current date
3355
- *
3356
- * @param {CalendarDate} currentDate new value
3357
- */
3358
- setPostOperationDate(currentDate) {
3359
- this.postOperationDate = currentDate;
3360
- }
3361
- /**
3362
- * Set post operation Date when the current period changes
3363
- *
3364
- * @param {CalendarPeriod} newValue the new calendar period
3365
- * @param {CalendarPeriod} oldValue the prev calendar period
3366
- */
3367
- setDate(newValue, oldValue) {
3368
- if (newValue.current !== this.postOperationDate) {
3369
- if (this.shouldSetCurrentDateToFirstDayOfMonth(newValue, oldValue)) {
3370
- const currentDate = newValue.current.toDate();
3371
- if (currentDate) {
3372
- currentDate.setDate(1);
3373
- this.setPostOperationDate(CalendarDate.from(currentDate));
3374
- }
3375
- }
3376
- else {
3377
- this.setPostOperationDate(CalendarDate.from(newValue.current.toDate()));
3378
- }
3379
- }
3380
- }
3381
- /**
3382
- * Handle timezone changes by updating postOperationDate
3383
- *
3384
- */
3385
- updateAfterTimezoneChange() {
3386
- this.postOperationDate = CalendarDate.from(new Date(), this.timezone);
3387
- }
3388
- /**
3389
- * Check if the first date should be set
3390
- * Both the new and old values are of the month type.
3391
- * The new date is not equal to the current date.
3392
- *
3393
- * @param {CalendarPeriod} newValue The new calendar period
3394
- * @param {CalendarPeriod} oldValue The old calendar period
3395
- * @returns {boolean} True if the first date should be set, false otherwise
3396
- */
3397
- shouldSetCurrentDateToFirstDayOfMonth(newValue, oldValue) {
3398
- return (newValue.type === 'month' &&
3399
- (oldValue === null || oldValue === void 0 ? void 0 : oldValue.type) === 'month' &&
3400
- !newValue.current.equal(CalendarDate.from(new Date(), this.timezone)));
3401
- }
3402
- }
3403
- __decorate$3([
3404
- MapToComponentField({ writable: true })
3405
- ], VegaCalendarPostOperationDateController.prototype, "postOperationDate", void 0);
3406
- __decorate$3([
3407
- MapToComponentField()
3408
- ], VegaCalendarPostOperationDateController.prototype, "timezone", void 0);
3409
- __decorate$3([
3410
- MapToComponentMethod('watchCurrentPeriodChange')
3411
- ], VegaCalendarPostOperationDateController.prototype, "setDate", null);
3412
- __decorate$3([
3413
- MapToComponentMethod('watchTimezoneChange')
3414
- ], VegaCalendarPostOperationDateController.prototype, "updateAfterTimezoneChange", null);
3415
-
3416
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3417
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3418
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3419
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3420
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3421
- };
3422
- class VegaCalendarEventPreviewPopoverRenderer extends VegaSlimmer {
3423
- constructor() {
3424
- super(...arguments);
3425
- this.popoverHideObserver = null;
3426
- }
3427
- render(event, targetCalendarViewDate, classMap) {
3428
- return this.enabledEventPreview
3429
- ? this.renderPreviewPopover(event, classMap, targetCalendarViewDate)
3430
- : this.eventItemRenderer.render(event, classMap, targetCalendarViewDate);
3431
- }
3432
- renderPreviewPopover(event, classMap, targetCalendarViewDate) {
3433
- return (h("vega-popover", { placement: this.viewMode === 'day' ? 'top' : 'right', alignment: "center", class: {
3434
- 'event-preview-popover': true,
3435
- 'block': true,
3436
- }, padding: "0", size: VegaCalendarEventPreviewPopoverRenderer.SINGLE_EVENT_PREVIEW_WIDTH, ref: (el) => {
3437
- this.setPopoverHideObserver(el);
3438
- } },
3439
- h("div", { slot: "popover-content", class: "event-preview-popover-content" }, this.eventItemRenderer.render(event, classMap, targetCalendarViewDate)),
3440
- h("div", { slot: "popover" },
3441
- h("div", { class: "preview-container", ref: (el) => {
3442
- el
3443
- ? this.eventPreviewPopoverController.setEventPreviewContainerMap(event, targetCalendarViewDate, el)
3444
- : this.eventPreviewPopoverController.deleteEventPreviewContainer(event, targetCalendarViewDate);
3445
- } }))));
3446
- }
3447
- setPopoverHideObserver(popover) {
3448
- if (popover) {
3449
- this.popoverHideObserver = new Observer((_payload) => true, async () => await popover.hide());
3450
- ChangeManager.register(domNodeSubjectFactory.getSubject(this.host, VegaInternalCalendarEventPreviewHide), this.popoverHideObserver);
3451
- }
3452
- else if (this.popoverHideObserver) {
3453
- ChangeManager.unregister(domNodeSubjectFactory.getSubject(this.host, VegaInternalCalendarEventPreviewHide), this.popoverHideObserver);
3454
- }
3455
- }
3456
- }
3457
- VegaCalendarEventPreviewPopoverRenderer.SINGLE_EVENT_PREVIEW_WIDTH = 400;
3458
- __decorate$2([
3459
- MapToComponentField()
3460
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "host", void 0);
3461
- __decorate$2([
3462
- MapToComponentField()
3463
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "renderer", void 0);
3464
- __decorate$2([
3465
- MapToComponentField()
3466
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "viewMode", void 0);
3467
- __decorate$2([
3468
- MapToComponentField()
3469
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "timeFormat", void 0);
3470
- __decorate$2([
3471
- MapToComponentField()
3472
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "eventItemRenderer", void 0);
3473
- __decorate$2([
3474
- MapToComponentField()
3475
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "enabledEventPreview", void 0);
3476
- __decorate$2([
3477
- MapToComponentField()
3478
- ], VegaCalendarEventPreviewPopoverRenderer.prototype, "eventPreviewPopoverController", void 0);
3479
-
3480
- var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3481
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3482
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3483
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3484
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3485
- };
3486
- /** Event preview popover controller */
3487
- class VegaCalendarEventPreviewPopoverController extends VegaSlimmer {
3488
- constructor() {
3489
- super(...arguments);
3490
- this.singleEventPreviewContainerMap = new Map();
3491
- this.groupEventsPreviewContainerMap = new Map();
3492
- }
3493
- /**
3494
- * Set the event preview container for the given events
3495
- *
3496
- * @param {Nullable<CalendarEvent>[] | CalendarEvent} events - The calendar event(s)
3497
- * @param {CalendarDate} viewDate - The current date
3498
- * @param {HTMLElement} container - The HTML element to be used as the preview container
3499
- */
3500
- setEventPreviewContainerMap(events, viewDate, container) {
3501
- const map = Array.isArray(events)
3502
- ? this.groupEventsPreviewContainerMap
3503
- : this.singleEventPreviewContainerMap;
3504
- map.set(this.generateMapKey(events, viewDate), container);
3505
- }
3506
- /**
3507
- * Delete the event preview container for the given events
3508
- *
3509
- * @param {Nullable<CalendarEvent>[] | CalendarEvent} events - The calendar event(s)
3510
- * @param {CalendarDate} viewDate - The current date
3511
- */
3512
- deleteEventPreviewContainer(events, viewDate) {
3513
- const map = Array.isArray(events)
3514
- ? this.groupEventsPreviewContainerMap
3515
- : this.singleEventPreviewContainerMap;
3516
- map.delete(this.generateMapKey(events, viewDate));
3517
- }
3518
- /**
3519
- * Get the event preview container for the given event
3520
- *
3521
- * @param {CalendarEvent} event - The calendar event
3522
- * @param {CalendarDate} viewDate - The current date
3523
- * @param {boolean} isGroup - Whether the event is part of a group
3524
- * @returns {Nullable<HTMLElement>} - The HTML element used as the preview container, or null if not found
3525
- */
3526
- getEventPreviewContainer(event, viewDate, isGroup) {
3527
- const map = isGroup
3528
- ? this.groupEventsPreviewContainerMap
3529
- : this.singleEventPreviewContainerMap;
3530
- const singleKey = this.generateMapKey(event, viewDate);
3531
- if (map.has(singleKey)) {
3532
- return map.get(singleKey);
3533
- }
3534
- else {
3535
- const dateString = this.getDateString(viewDate);
3536
- const groupKey = Array.from(map.keys()).find((key) => key.includes(event.eventKey) && key.endsWith(dateString));
3537
- if (groupKey) {
3538
- return map.get(groupKey);
3539
- }
3540
- }
3541
- }
3542
- /**
3543
- * clear all preview container maps when timezone changes
3544
- *
3545
- */
3546
- clearAllPreviewContainers() {
3547
- this.singleEventPreviewContainerMap.clear();
3548
- this.groupEventsPreviewContainerMap.clear();
3549
- }
3550
- /**
3551
- * Generate a unique key for the given events
3552
- *
3553
- * @param {Nullable<CalendarEvent>[] | CalendarEvent} events - The calendar event(s)
3554
- * @param {CalendarDate} viewDate - The current date
3555
- * @returns {string} - A unique string key representing the event(s)
3556
- */
3557
- generateMapKey(events, viewDate) {
3558
- const dateString = this.getDateString(viewDate);
3559
- return Array.isArray(events)
3560
- ? events
3561
- .filter((event) => event)
3562
- .map((event) => event.eventKey)
3563
- .join('-') + dateString
3564
- : events.eventKey + dateString;
3565
- }
3566
- /**
3567
- * Get a date string in the format "-YYYY-M-D" for the given date
3568
- *
3569
- * @param {CalendarDate} viewDate - The date object
3570
- * @returns {string} - The formatted date string, or an empty string if the date is null
3571
- */
3572
- getDateString(viewDate) {
3573
- return `-${viewDate.year}-${viewDate.month}-${viewDate.date}`;
3574
- }
3575
- }
3576
- __decorate$1([
3577
- MapToComponentMethod('watchTimezoneChange')
3578
- ], VegaCalendarEventPreviewPopoverController.prototype, "clearAllPreviewContainers", null);
3579
-
3580
- const vegaCalendarCss = ".border-divider-top{border:1px solid rgba(var(--v-border-divider-secondary, 199, 217, 229, 1));border-left-width:0px;border-right-width:0px;border-bottom-width:0px}.border-divider-top.disabled{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1))}.border-divider-left{border:1px solid rgba(var(--v-border-divider-secondary, 199, 217, 229, 1));border-top-width:0px;border-right-width:0px;border-bottom-width:0px}.border-divider-left.disabled{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1))}.border-divider-right{border:1px solid rgba(var(--v-border-divider-secondary, 199, 217, 229, 1));border-top-width:0px;border-left-width:0px;border-bottom-width:0px}.border-divider-bottom{border:1px solid rgba(var(--v-border-divider-secondary, 199, 217, 229, 1));border-top-width:0px;border-left-width:0px;border-right-width:0px}:host{display:flex;flex-direction:column;border-radius:12px;border:1px solid rgba(var(--v-border-divider, 171, 198, 216, 1));background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));overflow:hidden;width:100%;height:100%;box-sizing:border-box;max-height:1966px}.calendar-switch-panel{padding:24px;border-bottom-width:1px;border-top-width:0px;border-left-width:0px;border-right-width:0px;border-style:solid;border-color:rgba(var(--v-border-color-divider, 171, 198, 216, 1));flex-shrink:0;width:100%;box-sizing:border-box}.calendar-switch-panel .calendar-date-switch-container{display:flex;gap:8px;align-items:center;flex-direction:row}.calendar-switch-panel .calendar-view-switch-container{display:flex;gap:16px;align-items:center;flex-direction:row}.calendar-switch-panel .calendar-current-date{padding-left:8px}.calendar-view{width:100%;position:relative;flex-grow:1;overflow-y:auto;overflow-x:hidden;--calendar-weekday-columns:7}.calendar-view.calendar-hide-weekends{--calendar-weekday-columns:5}.calendar-view-month .calendar-view-month-container{width:100%;display:grid;min-height:100%;grid-template-rows:43px repeat(6, minmax(64px, 1fr))}.calendar-view-month .calendar-view-title{background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));top:0;left:0;z-index:62}.calendar-view-month .calendar-view-title div{padding-top:12px;padding-bottom:12px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1));font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px;text-align:center}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-month .calendar-view-title div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-month .calendar-view-title div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-month .calendar-view-title div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}.calendar-view-month .calendar-view-row{position:relative;display:grid;grid-template-rows:1fr;grid-template-columns:repeat(var(--calendar-weekday-columns), minmax(64px, 1fr))}.calendar-view-month .calendar-view-row.calendar-view-title{position:sticky}.calendar-view-month .calendar-view-row:last-child{border-bottom-width:0px}.calendar-view-month .calendar-view-row .row-cell{overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.calendar-view-month .calendar-view-row .row-cell:last-child{border-right-width:0px}.calendar-view-month .calendar-view-row .row-cell .date{padding-top:4px;padding-bottom:4px;padding-right:12px;padding-left:8px}.calendar-view-month .calendar-view-row .row-cell .date>div{display:inline-block;color:rgba(var(--v-text-secondary, 107, 116, 125, 1));font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-month .calendar-view-row .row-cell .date>div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-month .calendar-view-row .row-cell .date>div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-month .calendar-view-row .row-cell .date>div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}.calendar-view-month .calendar-view-row .row-cell .date .month-block{margin-right:2px}.calendar-view-month .calendar-view-row .row-cell .date .grid-col{text-align:center;border-top-left-radius:9999px;border-bottom-left-radius:9999px;border-top-right-radius:9999px;border-bottom-right-radius:9999px;cursor:pointer;width:18px;height:18px;line-height:18px}.calendar-view-month .calendar-view-row .row-cell .date .grid-col:hover{background-color:rgba(var(--v-bg-action-secondary-hover, 4, 112, 236, 0.1))}.calendar-view-month .calendar-view-row .row-cell .date .grid-col:active{background-color:rgba(var(--v-bg-action-secondary-active, 29, 65, 195, 0.1))}.calendar-view-month .calendar-view-row .row-cell .date .grid-col:focus-visible{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:2px}.calendar-view-month .calendar-view-row .row-cell.current-month-day .date>div{color:rgba(var(--v-text-primary, 32, 54, 69, 1))}.calendar-view-month .calendar-view-row .row-cell.disabled{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1))}.calendar-view-month .calendar-view-row .row-cell.disabled .date>div{color:rgba(var(--v-text-disabled, 176, 180, 181, 1))}.calendar-view-month .calendar-view-row .row-cell.active .date .grid-col{background-color:rgba(var(--v-bg-action, 19, 98, 226, 1));border-top-left-radius:9999px;border-bottom-left-radius:9999px;color:rgba(var(--v-text-on-action, 252, 252, 252, 1))}.calendar-view-month .calendar-view-row .row-cell.active .date .grid-col:hover{background-color:rgba(var(--v-bg-action-hover, 4, 112, 236, 1))}.calendar-view-month .calendar-view-row .row-cell.active .date .grid-col:active{background-color:rgba(var(--v-bg-action-active, 29, 65, 195, 1))}.calendar-view-month .calendar-view-row .row-cell.active .date .grid-col:focus-visible{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:2px}.calendar-view-container{width:100%}.calendar-view-container .calendar-view-title-container{background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));position:sticky;top:0;left:0;z-index:62}.calendar-view-container .calendar-view-row{box-sizing:border-box;width:100%;display:flex;flex-direction:row}.calendar-view-container .calendar-view-row .time-line,.calendar-view-container .calendar-view-row .time-line-empty,.calendar-view-container .calendar-view-row .time-line-all{width:72px;text-align:right;padding-right:8px;box-sizing:border-box;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));flex-shrink:0}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-container .calendar-view-row .time-line,.calendar-view-container .calendar-view-row .time-line-empty,.calendar-view-container .calendar-view-row .time-line-all{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-container .calendar-view-row .time-line,.calendar-view-container .calendar-view-row .time-line-empty,.calendar-view-container .calendar-view-row .time-line-all{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-container .calendar-view-row .time-line,.calendar-view-container .calendar-view-row .time-line-empty,.calendar-view-container .calendar-view-row .time-line-all{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px}}.calendar-view-container .calendar-view-title{width:100%}.calendar-view-container .calendar-view-title>div{padding:12px;padding-bottom:8px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1));font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px;text-align:center;display:flex;flex-direction:column;gap:8px}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-container .calendar-view-title>div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-container .calendar-view-title>div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-container .calendar-view-title>div{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}.calendar-view-container .calendar-view-title .week-day{color:rgba(var(--v-text-primary, 32, 54, 69, 1));font-family:\"Inter\", sans-serif;font-size:20px;font-weight:500;line-height:24px;letter-spacing:0px}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-container .calendar-view-title .week-day{font-family:\"Inter\", sans-serif;font-size:20px;font-weight:500;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-container .calendar-view-title .week-day{font-family:\"Inter\", sans-serif;font-size:20px;font-weight:500;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-container .calendar-view-title .week-day{font-family:\"Inter\", sans-serif;font-size:20px;font-weight:500;line-height:24px;letter-spacing:0px}}.calendar-view-container .calendar-view-title .active div{color:rgba(var(--v-text-link, 19, 98, 226, 1))}.calendar-view-container .calendar-view-event-all-container{align-items:center}.calendar-view-container .calendar-view-event-all{display:grid;grid-template-rows:1fr;flex-grow:1;min-height:18px}.calendar-view-container .calendar-view-day-container .time-line{display:grid;grid-template-rows:16px repeat(24, minmax(74px, 1fr))}.calendar-view-container .calendar-view-day-container .time-line .time-text{margin-top:-9px}.calendar-view-container .calendar-view-day-container .calendar-view-content{width:100%}.calendar-view-container .calendar-view-day-container .calendar-view-content .grid-col{display:grid;grid-template-rows:16px repeat(24, minmax(74px, 1fr));grid-template-columns:minmax(64px, 1fr)}.calendar-view-container .calendar-view-day-container .calendar-view-content .grid-col>.border-divider-top:first-child{border-top-width:0px}.calendar-view-container .calendar-view-content-container{width:100%;position:relative}.calendar-view-week .calendar-view-container{min-height:100%}.calendar-view-week .calendar-view-container .calendar-view-title{display:grid;grid-template-rows:1fr;grid-template-columns:repeat(var(--calendar-weekday-columns), minmax(64px, 1fr))}.calendar-view-week .calendar-view-container .calendar-view-event-all{grid-template-columns:repeat(var(--calendar-weekday-columns), minmax(64px, 1fr))}.calendar-view-week .calendar-view-container .calendar-view-day-container .calendar-view-content{display:grid;grid-template-columns:repeat(var(--calendar-weekday-columns), minmax(64px, 1fr))}.calendar-view-week .time-marker-container .time-marker{display:grid;grid-template-columns:repeat(var(--calendar-weekday-columns), minmax(64px, 1fr))}.calendar-view-week .day-event-container{display:grid;grid-template-columns:repeat(var(--calendar-weekday-columns), minmax(64px, 1fr))}.calendar-view-day .calendar-view-container{min-height:100%}.time-marker-container{position:absolute;min-width:100%;left:0;top:16px;height:calc(100% - 16px);pointer-events:none}.time-marker-container.hidden{display:none}.time-marker-container .time-marker{position:absolute;height:2px;display:grid;min-width:100%;left:0;top:0;z-index:61}.time-marker-container .time-marker div{width:100%;height:2px;background-color:rgba(var(--v-bg-status-error, 255, 110, 139, 1));opacity:0.3}.time-marker-container .time-marker div.active{opacity:1;position:relative}.time-marker-container .time-marker div.active::before{content:\"\";display:block;border-top-left-radius:9999px;border-bottom-left-radius:9999px;border-top-right-radius:9999px;border-bottom-right-radius:9999px;position:absolute;width:8px;height:8px;background-color:rgba(var(--v-bg-status-error, 255, 110, 139, 1));top:-3px;left:-4px}.day-event-container{position:absolute;min-width:100%;left:0;top:16px;height:calc(100% - 16px);pointer-events:none}.day-event-container .day-event-col{height:100%;overflow:hidden}.day-event-container vega-calendar-event{pointer-events:auto;height:100%}.calendar-view-month .month-event-row{position:absolute;width:100%;overflow:hidden;height:calc(100% - 26px);left:0;bottom:0}.calendar-view-month .events-container{width:100%;box-sizing:border-box;overflow:hidden;padding:2px;display:flex;flex-direction:column;gap:2px;justify-content:space-between;flex-grow:1}.calendar-view-month .events-container .event-list{display:flex;flex-direction:column;gap:2px;flex-grow:1}.calendar-view-month .events-container .event-list .month-event-block{box-sizing:border-box;padding-left:2px;padding-right:3px}.calendar-view-month .events-container .month-event-more .more-button{display:inline-block;height:16px;font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px;color:rgba(var(--v-text-link, 19, 98, 226, 1));cursor:pointer;border-radius:2px}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-month .events-container .month-event-more .more-button{font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-month .events-container .month-event-more .more-button{font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-month .events-container .month-event-more .more-button{font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px}}.calendar-view-month .events-container .month-event-more .more-button:focus-visible{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:0px}.calendar-view-container .calendar-view-event-all{position:relative}.calendar-view-container .calendar-view-event-all .placeholder-block{padding-top:2px;padding-bottom:2px;box-sizing:content-box}.calendar-view-container .calendar-view-event-all .placeholder-block span{display:none}.calendar-view-container .calendar-view-event-all .day-event-block{padding-top:2px;padding-right:2px;box-sizing:border-box;padding-left:3px}.calendar-view-container .calendar-view-event-all .more-button{display:inline-block;height:16px;font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px;color:rgba(var(--v-text-link, 19, 98, 226, 1));cursor:pointer;border-radius:2px;margin-left:2px;padding:2px}@media screen and (min-width: 768px) and (max-width: 1023px){.calendar-view-container .calendar-view-event-all .more-button{font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.calendar-view-container .calendar-view-event-all .more-button{font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.calendar-view-container .calendar-view-event-all .more-button{font-family:\"Inter\", sans-serif;font-size:12px;font-weight:700;line-height:16px;letter-spacing:0px}}.calendar-view-container .calendar-view-event-all .more-button:focus-visible{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:0px}.calendar-view-container .calendar-view-event-all .event-all-col{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start}.calendar-view-container .day-event-col{position:relative}.calendar-view-container .day-event-col .time-event-block{box-sizing:border-box;padding-right:8px;padding-bottom:2px;padding-top:3px}.calendar-view-container .day-event-col .time-event-block vega-calendar-event.bg-shadow::part(event-container):not(:focus){outline:2px solid rgba(var(--v-bg-primary, 252, 252, 252, 1))}.calendar-view-container .day-event-col .time-event-block:focus-within{z-index:60 !important}.calendar-event-slot-container{display:none}.event-preview-popover{height:100%}.event-preview-popover.block{display:block}.event-preview-popover .event-preview-popover-content{height:100%}";
3581
-
3582
- var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3583
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3584
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
3585
- r = Reflect.decorate(decorators, target, key, desc);
3586
- else
3587
- for (var i = decorators.length - 1; i >= 0; i--)
3588
- if (d = decorators[i])
3589
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3590
- return c > 3 && r && Object.defineProperty(target, key, r), r;
3591
- };
3592
- const VegaCalendar = class {
3593
- constructor(hostRef) {
3594
- registerInstance(this, hostRef);
3595
- this.vegaChange = createEvent(this, "vegaChange", 7);
3596
- this.change = createEvent(this, "change", 7);
3597
- this.vegaEventClick = createEvent(this, "vegaEventClick", 7);
3598
- this.eventClick = createEvent(this, "eventClick", 7);
3599
- this.vegaDateDblClick = createEvent(this, "vegaDateDblClick", 7);
3600
- this.dateDblClick = createEvent(this, "dateDblClick", 7);
3601
- this.vegaDateClick = createEvent(this, "vegaDateClick", 7);
3602
- this.dateClick = createEvent(this, "dateClick", 7);
3603
- this.vegaMoreActionClick = createEvent(this, "vegaMoreActionClick", 7);
3604
- this.moreActionClick = createEvent(this, "moreActionClick", 7);
3605
- this.globalSlimmer = {};
3606
- this.translationSlimmer = new TranslationSlimmer();
3607
- this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
3608
- this.renderer = new VegaCalendarRenderer();
3609
- this.switchPanelRenderer = new VegaCalendarSwitchPanelRenderer();
3610
- this.viewRenderer = new VegaCalendarViewRenderer();
3611
- this.monthViewRenderer = new VegaCalendarMonthViewRenderer();
3612
- this.viewWithTimeRenderer = new VegaCalendarViewWithTimeRenderer();
3613
- this.timeLineRenderer = new VegaCalendarTimeLineRenderer();
3614
- this.timeMarkerRenderer = new VegaCalendarTimeMarkerRenderer();
3615
- this.monthEventRenderer = new VegaCalendarMonthEventRenderer();
3616
- // The current period controller should be before the calendar view controller because the initial current period should be before the initial calendar view
3617
- this.currentPeriodController = new VegaCalendarCurrentPeriodController();
3618
- this.calendarViewController = new VegaCalendarViewController();
3619
- // Date after recording the operation
3620
- this.postOperationDateController = new VegaCalendarPostOperationDateController();
3621
- this.dayViewFullDayEventRenderer = new VegaCalendarFullDayEventRenderer();
3622
- this.eventPreviewPopoverController = new VegaCalendarEventPreviewPopoverController();
3623
- this.dayViewFullDayEventMoreButtonRenderer = new VegaCalendarFullDayEventMoreButtonRenderer();
3624
- this.dayViewTimedEventRenderer = new VegaCalendarTimedEventRenderer();
3625
- this.eventItemRenderer = new VegaCalendarEventItemRenderer();
3626
- this.dayViewEventLayoutRenderer = new VegaCalendarDayViewEventLayoutRenderer();
3627
- this.fullDayEventLayoutRenderer = new VegaCalendarFullDayEventLayoutRenderer();
3628
- this.eventPreviewPopoverRenderer = new VegaCalendarEventPreviewPopoverRenderer();
3629
- this.calendarEventController = new VegaCalendarEventController();
3630
- this.eventResponsiveController = new VegaCalendarEventResponsiveController();
3631
- this.changeEventEmitter = createEventEmitSlimmer(VegaCalendar, VegaChange);
3632
- this.eventClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaEventClick);
3633
- this.dateDblClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaDateDblClick);
3634
- this.moreActionClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaMoreActionClick);
3635
- this.dateClickEmitter = createEventEmitSlimmer(VegaCalendar, VegaDateClick);
3636
- this.changeEventPrevent = new ChildNodesEventPreventSlimmer([VegaChange], () => this.switchPanelRenderer.getSwitchPanelRef());
3637
- this.timeFormatNotifySlimmer = createSubStateNotifySlimmer(VegaCalendar, 'timeFormat', 'watchTimeFormat');
3638
- this.showEventColorBarNotifySlimmer = createSubStateNotifySlimmer(VegaCalendar, 'showEventColorBar', 'watchShowEventColorBar');
3639
- /**
3640
- * This postOperationDate will record the time after the operation, which will affect the calculation of day/week/month, making the generated interval accurate
3641
- *
3642
- * @type {CalendarDate}
3643
- */
3644
- this.postOperationDate = this.getInitialPostOperationDate();
3645
- this.showAllEventsInDayOrWeekView = false;
3646
- this.calendarEvents = [];
3647
- /**
3648
- * Specifies the current view mode of the calendar.
3649
- *
3650
- * @vegaVersion 2.14.0
3651
- */
3652
- /* eslint-disable-next-line @stencil/strict-mutable */
3653
- this.viewMode = 'month';
3654
- /**
3655
- * Specifies the time format of the calendar.
3656
- *
3657
- * @vegaVersion 2.14.0
3658
- */
3659
- this.timeFormat = '24-hour';
3660
- /**
3661
- * Specifies a predicate function that determines whether a given date in the calendar should be disabled (non-interactive).
3662
- *
3663
- * The function is called for each date cell before rendering.
3664
- *
3665
- * Return `true` to disable the cell, or false to keep it selectable.
3666
- * Default behavior: always returns `false` (no cells are disabled).
3667
- *
3668
- * @param date - The `Date` object for the cell being evaluated.
3669
- * @returns `true` if the cell should be disabled; otherwise `false`.
3670
- * @vegaVersion 2.56.0
3671
- */
3672
- this.isDateDisabled = () => false;
3673
- /**
3674
- * Controls the visibility of the calendar's event color bar.
3675
- *
3676
- * @vegaVersion 2.21.0
3677
- */
3678
- this.showEventColorBar = true;
3679
- /**
3680
- * Controls whether the switch view is displayed.
3681
- *
3682
- * @vegaVersion 2.58.0
3683
- */
3684
- this.showSwitchView = true;
3685
- /**
3686
- * Controls whether clicking on a calendar date triggers the `vegaDateClick` event. When enabled, it disables the `vegaDateDblClick` event to prevent conflicts.
3687
- *
3688
- * @vegaVersion 2.61.0
3689
- */
3690
- this.enableDateClick = false;
3691
- /**
3692
- * Controls the visibility of the weekend columns in the calendar.
3693
- *
3694
- * @vegaVersion 2.28.0
3695
- */
3696
- this.showWeekends = true;
3697
- /**
3698
- * Controls the visibility of the event preview popover while click event.
3699
- *
3700
- * @vegaVersion 2.59.0
3701
- */
3702
- this.enabledEventPreview = true;
3703
- /**
3704
- * Specifies the IANA time zone or Etc/GMT±n format.
3705
- * It accepts values such as "America/New_York" or "Etc/GMT+12".
3706
- * If not set, the component defaults to the system's time zone.
3707
- * For a complete list of IANA time zones, see Time Zone DB(https://timezonedb.com/time-zones).
3708
- *
3709
- * @vegaVersion 2.65.0
3710
- */
3711
- this.timezone = getSystemTimezone();
3712
- }
3713
- /**
3714
- * Tracks changes to the current period state.
3715
- *
3716
- * @param {CalendarPeriod} newValue Specifies the new calendar period.
3717
- * @param {CalendarPeriod} oldValue Specifies the old calendar period.
3718
- */
3719
- watchCurrentPeriodChange(newValue, oldValue) {
3720
- methodPlaceholder(newValue, oldValue);
3721
- }
3722
- /**
3723
- * Watch the view mode change
3724
- *
3725
- * @param {VegaCalendarViewModeType} newValue the new value of view mode
3726
- */
3727
- watchViewModeChange(newValue) {
3728
- methodPlaceholder(newValue);
3729
- }
3730
- /**
3731
- * Watch the calendar events change
3732
- *
3733
- * @param {VegaCalendarRawEvent[]} newValue
3734
- */
3735
- watchEventsChange(newValue) {
3736
- methodPlaceholder(newValue);
3737
- }
3738
- /**
3739
- * Watches changes in the calendar's time format.
3740
- *
3741
- * @param {TimeFormat} newValue
3742
- */
3743
- watchTimeFormat(newValue) {
3744
- methodPlaceholder(newValue);
3745
- }
3746
- /**
3747
- * Monitors changes in the visibility of the calendar's event color bar.
3748
- *
3749
- * @param {boolean} newValue
3750
- */
3751
- watchShowEventColorBar(newValue) {
3752
- methodPlaceholder(newValue);
3753
- }
3754
- /**
3755
- * Monitors changes in the visibility of the weekend columns in the calendar.
3756
- */
3757
- watchShowWeekendsChange() {
3758
- methodPlaceholder();
3759
- }
3760
- /**
3761
- * Monitors changes in the timezone prop for the calendar.
3762
- */
3763
- watchTimezoneChange() {
3764
- methodPlaceholder();
3765
- }
3766
- render() {
3767
- return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
3768
- }
3769
- /**
3770
- * Get initial post operation date considering timezone
3771
- */
3772
- getInitialPostOperationDate() {
3773
- return CalendarDate.from(new Date(), this.timezone);
3774
- }
3775
- get host() { return getElement(this); }
3776
- static get watchers() { return {
3777
- "currentPeriod": ["watchCurrentPeriodChange"],
3778
- "viewMode": ["watchViewModeChange"],
3779
- "events": ["watchEventsChange"],
3780
- "timeFormat": ["watchTimeFormat"],
3781
- "showEventColorBar": ["watchShowEventColorBar"],
3782
- "showWeekends": ["watchShowWeekendsChange"],
3783
- "timezone": ["watchTimezoneChange"]
3784
- }; }
3785
- };
3786
- __decorate([
3787
- InjectVegaGlobalSlimmer()
3788
- ], VegaCalendar.prototype, "globalSlimmer", void 0);
3789
- __decorate([
3790
- InjectVegaSlimmer()
3791
- ], VegaCalendar.prototype, "translationSlimmer", void 0);
3792
- __decorate([
3793
- InjectVegaSlimmer()
3794
- ], VegaCalendar.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
3795
- __decorate([
3796
- InjectVegaSlimmer()
3797
- ], VegaCalendar.prototype, "renderer", void 0);
3798
- __decorate([
3799
- InjectVegaSlimmer()
3800
- ], VegaCalendar.prototype, "switchPanelRenderer", void 0);
3801
- __decorate([
3802
- InjectVegaSlimmer()
3803
- ], VegaCalendar.prototype, "viewRenderer", void 0);
3804
- __decorate([
3805
- InjectVegaSlimmer()
3806
- ], VegaCalendar.prototype, "monthViewRenderer", void 0);
3807
- __decorate([
3808
- InjectVegaSlimmer()
3809
- ], VegaCalendar.prototype, "viewWithTimeRenderer", void 0);
3810
- __decorate([
3811
- InjectVegaSlimmer()
3812
- ], VegaCalendar.prototype, "timeLineRenderer", void 0);
3813
- __decorate([
3814
- InjectVegaSlimmer()
3815
- ], VegaCalendar.prototype, "timeMarkerRenderer", void 0);
3816
- __decorate([
3817
- InjectVegaSlimmer()
3818
- ], VegaCalendar.prototype, "monthEventRenderer", void 0);
3819
- __decorate([
3820
- InjectVegaSlimmer()
3821
- ], VegaCalendar.prototype, "currentPeriodController", void 0);
3822
- __decorate([
3823
- InjectVegaSlimmer()
3824
- ], VegaCalendar.prototype, "calendarViewController", void 0);
3825
- __decorate([
3826
- InjectVegaSlimmer()
3827
- ], VegaCalendar.prototype, "postOperationDateController", void 0);
3828
- __decorate([
3829
- InjectVegaSlimmer()
3830
- ], VegaCalendar.prototype, "dayViewFullDayEventRenderer", void 0);
3831
- __decorate([
3832
- InjectVegaSlimmer()
3833
- ], VegaCalendar.prototype, "eventPreviewPopoverController", void 0);
3834
- __decorate([
3835
- InjectVegaSlimmer()
3836
- ], VegaCalendar.prototype, "dayViewFullDayEventMoreButtonRenderer", void 0);
3837
- __decorate([
3838
- InjectVegaSlimmer()
3839
- ], VegaCalendar.prototype, "dayViewTimedEventRenderer", void 0);
3840
- __decorate([
3841
- InjectVegaSlimmer()
3842
- ], VegaCalendar.prototype, "eventItemRenderer", void 0);
3843
- __decorate([
3844
- InjectVegaSlimmer()
3845
- ], VegaCalendar.prototype, "dayViewEventLayoutRenderer", void 0);
3846
- __decorate([
3847
- InjectVegaSlimmer()
3848
- ], VegaCalendar.prototype, "fullDayEventLayoutRenderer", void 0);
3849
- __decorate([
3850
- InjectVegaSlimmer()
3851
- ], VegaCalendar.prototype, "eventPreviewPopoverRenderer", void 0);
3852
- __decorate([
3853
- InjectVegaSlimmer()
3854
- ], VegaCalendar.prototype, "calendarEventController", void 0);
3855
- __decorate([
3856
- InjectVegaSlimmer()
3857
- ], VegaCalendar.prototype, "eventResponsiveController", void 0);
3858
- __decorate([
3859
- InjectVegaSlimmer()
3860
- ], VegaCalendar.prototype, "changeEventEmitter", void 0);
3861
- __decorate([
3862
- InjectVegaSlimmer()
3863
- ], VegaCalendar.prototype, "eventClickEmitter", void 0);
3864
- __decorate([
3865
- InjectVegaSlimmer()
3866
- ], VegaCalendar.prototype, "dateDblClickEmitter", void 0);
3867
- __decorate([
3868
- InjectVegaSlimmer()
3869
- ], VegaCalendar.prototype, "moreActionClickEmitter", void 0);
3870
- __decorate([
3871
- InjectVegaSlimmer()
3872
- ], VegaCalendar.prototype, "dateClickEmitter", void 0);
3873
- __decorate([
3874
- InjectVegaSlimmer()
3875
- ], VegaCalendar.prototype, "changeEventPrevent", void 0);
3876
- __decorate([
3877
- InjectVegaSlimmer()
3878
- ], VegaCalendar.prototype, "timeFormatNotifySlimmer", void 0);
3879
- __decorate([
3880
- InjectVegaSlimmer()
3881
- ], VegaCalendar.prototype, "showEventColorBarNotifySlimmer", void 0);
3882
- VegaCalendar.style = vegaCalendarCss;
3883
-
3884
- export { VegaCalendar as vega_calendar };