@ngxsmk/cdk 1.3.1 → 2.0.0

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 (179) hide show
  1. package/README.md +1 -1
  2. package/cva-base/cva-base.d.ts +34 -0
  3. package/cva-base/cva-base.d.ts.map +1 -0
  4. package/cva-base/index.d.ts +2 -0
  5. package/cva-base/index.d.ts.map +1 -0
  6. package/cva-base/ngxsmk-cdk-cva-base.d.ts.map +1 -0
  7. package/esm2022/cva-base/cva-base.mjs +45 -0
  8. package/esm2022/cva-base/index.mjs +2 -0
  9. package/esm2022/cva-base/ngxsmk-cdk-cva-base.mjs +5 -0
  10. package/esm2022/input-group/index.mjs +3 -0
  11. package/esm2022/input-group/input-group-engine.mjs +219 -0
  12. package/esm2022/input-group/models/index.mjs +2 -0
  13. package/esm2022/input-group/models/input-group.model.mjs +2 -0
  14. package/esm2022/input-group/ngxsmk-cdk-input-group.mjs +5 -0
  15. package/esm2022/listbox-keyboard/index.mjs +2 -0
  16. package/esm2022/listbox-keyboard/listbox-keyboard.mjs +145 -0
  17. package/esm2022/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.mjs +5 -0
  18. package/esm2022/public-api.mjs +10 -1
  19. package/esm2022/scheduler/index.mjs +5 -0
  20. package/esm2022/scheduler/models/date-range.mjs +2 -0
  21. package/esm2022/scheduler/models/event.model.mjs +2 -0
  22. package/esm2022/scheduler/models/index.mjs +6 -0
  23. package/esm2022/scheduler/models/resource.model.mjs +5 -0
  24. package/esm2022/scheduler/models/selection.model.mjs +7 -0
  25. package/esm2022/scheduler/models/view.model.mjs +7 -0
  26. package/esm2022/scheduler/ngxsmk-cdk-scheduler.mjs +5 -0
  27. package/esm2022/scheduler/plugin/drag-plugin.mjs +82 -0
  28. package/esm2022/scheduler/plugin/index.mjs +8 -0
  29. package/esm2022/scheduler/plugin/keyboard-plugin.mjs +150 -0
  30. package/esm2022/scheduler/plugin/plugin-host.mjs +48 -0
  31. package/esm2022/scheduler/plugin/plugin.types.mjs +2 -0
  32. package/esm2022/scheduler/plugin/resize-plugin.mjs +74 -0
  33. package/esm2022/scheduler/plugin/selection-plugin.mjs +84 -0
  34. package/esm2022/scheduler/plugin/tooltip-plugin.mjs +103 -0
  35. package/esm2022/scheduler/scheduler-engine.mjs +316 -0
  36. package/esm2022/scheduler/utils/date-utils.mjs +131 -0
  37. package/esm2022/scheduler/utils/index.mjs +3 -0
  38. package/esm2022/scheduler/utils/snap.mjs +24 -0
  39. package/esm2022/spreadsheet/index.mjs +5 -0
  40. package/esm2022/spreadsheet/models/cell.model.mjs +2 -0
  41. package/esm2022/spreadsheet/models/column.model.mjs +2 -0
  42. package/esm2022/spreadsheet/models/filter.model.mjs +2 -0
  43. package/esm2022/spreadsheet/models/formula.model.mjs +2 -0
  44. package/esm2022/spreadsheet/models/index.mjs +8 -0
  45. package/esm2022/spreadsheet/models/row.model.mjs +2 -0
  46. package/esm2022/spreadsheet/models/selection.model.mjs +2 -0
  47. package/esm2022/spreadsheet/models/sort.model.mjs +2 -0
  48. package/esm2022/spreadsheet/ngxsmk-cdk-spreadsheet.mjs +5 -0
  49. package/esm2022/spreadsheet/plugin/clipboard-plugin.mjs +171 -0
  50. package/esm2022/spreadsheet/plugin/filter-plugin.mjs +87 -0
  51. package/esm2022/spreadsheet/plugin/formula-plugin.mjs +456 -0
  52. package/esm2022/spreadsheet/plugin/index.mjs +10 -0
  53. package/esm2022/spreadsheet/plugin/plugin-host.mjs +188 -0
  54. package/esm2022/spreadsheet/plugin/plugin.types.mjs +2 -0
  55. package/esm2022/spreadsheet/plugin/selection-plugin.mjs +114 -0
  56. package/esm2022/spreadsheet/plugin/sort-plugin.mjs +63 -0
  57. package/esm2022/spreadsheet/plugin/undo-plugin.mjs +138 -0
  58. package/esm2022/spreadsheet/plugin/validation-plugin.mjs +71 -0
  59. package/esm2022/spreadsheet/spreadsheet-engine.mjs +547 -0
  60. package/esm2022/spreadsheet/utils/cell-utils.mjs +129 -0
  61. package/esm2022/spreadsheet/utils/index.mjs +2 -0
  62. package/esm2022/testing/a11y.mjs +6 -3
  63. package/fesm2022/ngxsmk-cdk-cva-base.mjs +52 -0
  64. package/fesm2022/ngxsmk-cdk-cva-base.mjs.map +1 -0
  65. package/fesm2022/ngxsmk-cdk-input-group.mjs +226 -0
  66. package/fesm2022/ngxsmk-cdk-input-group.mjs.map +1 -0
  67. package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs +152 -0
  68. package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs.map +1 -0
  69. package/fesm2022/ngxsmk-cdk-scheduler.mjs +1035 -0
  70. package/fesm2022/ngxsmk-cdk-scheduler.mjs.map +1 -0
  71. package/fesm2022/ngxsmk-cdk-spreadsheet.mjs +1969 -0
  72. package/fesm2022/ngxsmk-cdk-spreadsheet.mjs.map +1 -0
  73. package/fesm2022/ngxsmk-cdk-testing.mjs +5 -2
  74. package/fesm2022/ngxsmk-cdk-testing.mjs.map +1 -1
  75. package/fesm2022/ngxsmk-cdk.mjs +5 -0
  76. package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
  77. package/input-group/index.d.ts +3 -0
  78. package/input-group/index.d.ts.map +1 -0
  79. package/input-group/input-group-engine.d.ts +88 -0
  80. package/input-group/input-group-engine.d.ts.map +1 -0
  81. package/input-group/models/index.d.ts +2 -0
  82. package/input-group/models/index.d.ts.map +1 -0
  83. package/input-group/models/input-group.model.d.ts +114 -0
  84. package/input-group/models/input-group.model.d.ts.map +1 -0
  85. package/input-group/ngxsmk-cdk-input-group.d.ts.map +1 -0
  86. package/listbox-keyboard/index.d.ts +2 -0
  87. package/listbox-keyboard/index.d.ts.map +1 -0
  88. package/listbox-keyboard/listbox-keyboard.d.ts +60 -0
  89. package/listbox-keyboard/listbox-keyboard.d.ts.map +1 -0
  90. package/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.d.ts.map +1 -0
  91. package/package.json +40 -1
  92. package/public-api.d.ts +8 -0
  93. package/public-api.d.ts.map +1 -1
  94. package/scheduler/index.d.ts +5 -0
  95. package/scheduler/index.d.ts.map +1 -0
  96. package/scheduler/models/date-range.d.ts +6 -0
  97. package/scheduler/models/date-range.d.ts.map +1 -0
  98. package/scheduler/models/event.model.d.ts +50 -0
  99. package/scheduler/models/event.model.d.ts.map +1 -0
  100. package/scheduler/models/index.d.ts +6 -0
  101. package/scheduler/models/index.d.ts.map +1 -0
  102. package/scheduler/models/resource.model.d.ts +16 -0
  103. package/scheduler/models/resource.model.d.ts.map +1 -0
  104. package/scheduler/models/selection.model.d.ts +12 -0
  105. package/scheduler/models/selection.model.d.ts.map +1 -0
  106. package/scheduler/models/view.model.d.ts +21 -0
  107. package/scheduler/models/view.model.d.ts.map +1 -0
  108. package/scheduler/ngxsmk-cdk-scheduler.d.ts.map +1 -0
  109. package/scheduler/plugin/drag-plugin.d.ts +28 -0
  110. package/scheduler/plugin/drag-plugin.d.ts.map +1 -0
  111. package/scheduler/plugin/index.d.ts +8 -0
  112. package/scheduler/plugin/index.d.ts.map +1 -0
  113. package/scheduler/plugin/keyboard-plugin.d.ts +24 -0
  114. package/scheduler/plugin/keyboard-plugin.d.ts.map +1 -0
  115. package/scheduler/plugin/plugin-host.d.ts +16 -0
  116. package/scheduler/plugin/plugin-host.d.ts.map +1 -0
  117. package/scheduler/plugin/plugin.types.d.ts +9 -0
  118. package/scheduler/plugin/plugin.types.d.ts.map +1 -0
  119. package/scheduler/plugin/resize-plugin.d.ts +26 -0
  120. package/scheduler/plugin/resize-plugin.d.ts.map +1 -0
  121. package/scheduler/plugin/selection-plugin.d.ts +40 -0
  122. package/scheduler/plugin/selection-plugin.d.ts.map +1 -0
  123. package/scheduler/plugin/tooltip-plugin.d.ts +41 -0
  124. package/scheduler/plugin/tooltip-plugin.d.ts.map +1 -0
  125. package/scheduler/scheduler-engine.d.ts +95 -0
  126. package/scheduler/scheduler-engine.d.ts.map +1 -0
  127. package/scheduler/utils/date-utils.d.ts +26 -0
  128. package/scheduler/utils/date-utils.d.ts.map +1 -0
  129. package/scheduler/utils/index.d.ts +3 -0
  130. package/scheduler/utils/index.d.ts.map +1 -0
  131. package/scheduler/utils/snap.d.ts +7 -0
  132. package/scheduler/utils/snap.d.ts.map +1 -0
  133. package/spreadsheet/index.d.ts +5 -0
  134. package/spreadsheet/index.d.ts.map +1 -0
  135. package/spreadsheet/models/cell.model.d.ts +44 -0
  136. package/spreadsheet/models/cell.model.d.ts.map +1 -0
  137. package/spreadsheet/models/column.model.d.ts +77 -0
  138. package/spreadsheet/models/column.model.d.ts.map +1 -0
  139. package/spreadsheet/models/filter.model.d.ts +15 -0
  140. package/spreadsheet/models/filter.model.d.ts.map +1 -0
  141. package/spreadsheet/models/formula.model.d.ts +65 -0
  142. package/spreadsheet/models/formula.model.d.ts.map +1 -0
  143. package/spreadsheet/models/index.d.ts +8 -0
  144. package/spreadsheet/models/index.d.ts.map +1 -0
  145. package/spreadsheet/models/row.model.d.ts +33 -0
  146. package/spreadsheet/models/row.model.d.ts.map +1 -0
  147. package/spreadsheet/models/selection.model.d.ts +18 -0
  148. package/spreadsheet/models/selection.model.d.ts.map +1 -0
  149. package/spreadsheet/models/sort.model.d.ts +14 -0
  150. package/spreadsheet/models/sort.model.d.ts.map +1 -0
  151. package/spreadsheet/ngxsmk-cdk-spreadsheet.d.ts.map +1 -0
  152. package/spreadsheet/plugin/clipboard-plugin.d.ts +24 -0
  153. package/spreadsheet/plugin/clipboard-plugin.d.ts.map +1 -0
  154. package/spreadsheet/plugin/filter-plugin.d.ts +21 -0
  155. package/spreadsheet/plugin/filter-plugin.d.ts.map +1 -0
  156. package/spreadsheet/plugin/formula-plugin.d.ts +39 -0
  157. package/spreadsheet/plugin/formula-plugin.d.ts.map +1 -0
  158. package/spreadsheet/plugin/index.d.ts +10 -0
  159. package/spreadsheet/plugin/index.d.ts.map +1 -0
  160. package/spreadsheet/plugin/plugin-host.d.ts +66 -0
  161. package/spreadsheet/plugin/plugin-host.d.ts.map +1 -0
  162. package/spreadsheet/plugin/plugin.types.d.ts +58 -0
  163. package/spreadsheet/plugin/plugin.types.d.ts.map +1 -0
  164. package/spreadsheet/plugin/selection-plugin.d.ts +28 -0
  165. package/spreadsheet/plugin/selection-plugin.d.ts.map +1 -0
  166. package/spreadsheet/plugin/sort-plugin.d.ts +18 -0
  167. package/spreadsheet/plugin/sort-plugin.d.ts.map +1 -0
  168. package/spreadsheet/plugin/undo-plugin.d.ts +40 -0
  169. package/spreadsheet/plugin/undo-plugin.d.ts.map +1 -0
  170. package/spreadsheet/plugin/validation-plugin.d.ts +29 -0
  171. package/spreadsheet/plugin/validation-plugin.d.ts.map +1 -0
  172. package/spreadsheet/spreadsheet-engine.d.ts +194 -0
  173. package/spreadsheet/spreadsheet-engine.d.ts.map +1 -0
  174. package/spreadsheet/utils/cell-utils.d.ts +26 -0
  175. package/spreadsheet/utils/cell-utils.d.ts.map +1 -0
  176. package/spreadsheet/utils/index.d.ts +2 -0
  177. package/spreadsheet/utils/index.d.ts.map +1 -0
  178. package/testing/a11y.d.ts +5 -1
  179. package/testing/a11y.d.ts.map +1 -1
@@ -11,8 +11,17 @@ export * from '@ngxsmk/cdk/visually-hidden';
11
11
  export * from '@ngxsmk/cdk/intersection-observer';
12
12
  export * from '@ngxsmk/cdk/resize-observer';
13
13
  export * from '@ngxsmk/cdk/autofocus';
14
+ export * from '@ngxsmk/cdk/cva-base';
15
+ export * from '@ngxsmk/cdk/listbox-keyboard';
16
+ export * from '@ngxsmk/cdk/scheduler';
17
+ // Spreadsheet — selective re-exports to avoid name collisions with scheduler
18
+ export { SpreadsheetEngine, } from '@ngxsmk/cdk/spreadsheet';
19
+ export { PluginHost as SpreadsheetPluginHost, SortPlugin, FilterPlugin, SelectionPlugin as SpreadsheetSelectionPlugin, FormulaPlugin, ClipboardPlugin, UndoPlugin, ValidationPlugin, } from '@ngxsmk/cdk/spreadsheet';
20
+ export { colIndexToLetter, colLetterToIndex, cellRef, parseCellRef, normalizeRange, isCellInRange, cellsInRange, formatCellValue, createEmptyRow, generateRowId, cloneRow, pinnedWidth, } from '@ngxsmk/cdk/spreadsheet';
21
+ // Input Group — no naming collisions, re-export everything
22
+ export * from '@ngxsmk/cdk/input-group';
14
23
  // NOTE: '@ngxsmk/cdk/testing' is intentionally NOT re-exported here. It pulls in
15
24
  // axe-core (a CommonJS dependency) which would otherwise leak into every runtime
16
25
  // bundle that imports the main '@ngxsmk/cdk' barrel. Import test helpers directly
17
26
  // from the dedicated entry point instead: `import { ... } from '@ngxsmk/cdk/testing'`.
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxpRkFBaUY7QUFDakYsaUZBQWlGO0FBQ2pGLGtGQUFrRjtBQUNsRix1RkFBdUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBuZ3hzbWsvY2RrXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvY2xpY2stb3V0c2lkZSc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9mb2N1c2FibGUnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvZm9jdXMtdHJhcCc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9saXZlLWFubm91bmNlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9tZWRpYS1xdWVyeSc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9zY3JvbGwtbG9jayc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay92aXN1YWxseS1oaWRkZW4nO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Jlc2l6ZS1vYnNlcnZlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9hdXRvZm9jdXMnO1xuXG4vLyBOT1RFOiAnQG5neHNtay9jZGsvdGVzdGluZycgaXMgaW50ZW50aW9uYWxseSBOT1QgcmUtZXhwb3J0ZWQgaGVyZS4gSXQgcHVsbHMgaW5cbi8vIGF4ZS1jb3JlIChhIENvbW1vbkpTIGRlcGVuZGVuY3kpIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBsZWFrIGludG8gZXZlcnkgcnVudGltZVxuLy8gYnVuZGxlIHRoYXQgaW1wb3J0cyB0aGUgbWFpbiAnQG5neHNtay9jZGsnIGJhcnJlbC4gSW1wb3J0IHRlc3QgaGVscGVycyBkaXJlY3RseVxuLy8gZnJvbSB0aGUgZGVkaWNhdGVkIGVudHJ5IHBvaW50IGluc3RlYWQ6IGBpbXBvcnQgeyAuLi4gfSBmcm9tICdAbmd4c21rL2Nkay90ZXN0aW5nJ2AuXG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1QkFBdUIsQ0FBQztBQUV0Qyw2RUFBNkU7QUFDN0UsT0FBTyxFQUNMLGlCQUFpQixHQUlsQixNQUFNLHlCQUF5QixDQUFDO0FBNEJqQyxPQUFPLEVBQ0wsVUFBVSxJQUFJLHFCQUFxQixFQUNuQyxVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsSUFBSSwwQkFBMEIsRUFDN0MsYUFBYSxFQUNiLGVBQWUsRUFDZixVQUFVLEVBQ1YsZ0JBQWdCLEdBRWpCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLGFBQWEsRUFDYixRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0seUJBQXlCLENBQUM7QUFFakMsMkRBQTJEO0FBQzNELGNBQWMseUJBQXlCLENBQUM7QUFFeEMsaUZBQWlGO0FBQ2pGLGlGQUFpRjtBQUNqRixrRkFBa0Y7QUFDbEYsdUZBQXVGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAbmd4c21rL2Nka1xuICovXG5cbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2NsaWNrLW91dHNpZGUnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvZm9jdXNhYmxlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ZvY3VzLXRyYXAnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbGl2ZS1hbm5vdW5jZXInO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbWVkaWEtcXVlcnknO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvc2Nyb2xsLWxvY2snO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvdmlzdWFsbHktaGlkZGVuJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9yZXNpemUtb2JzZXJ2ZXInO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvYXV0b2ZvY3VzJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2N2YS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2xpc3Rib3gta2V5Ym9hcmQnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvc2NoZWR1bGVyJztcblxuLy8gU3ByZWFkc2hlZXQg4oCUIHNlbGVjdGl2ZSByZS1leHBvcnRzIHRvIGF2b2lkIG5hbWUgY29sbGlzaW9ucyB3aXRoIHNjaGVkdWxlclxuZXhwb3J0IHtcbiAgU3ByZWFkc2hlZXRFbmdpbmUsXG4gIHR5cGUgU3ByZWFkc2hlZXRDb25maWcsXG4gIHR5cGUgU3ByZWFkc2hlZXREZW5zaXR5LFxuICB0eXBlIFNwcmVhZHNoZWV0TGlmZWN5Y2xlSG9va3MsXG59IGZyb20gJ0BuZ3hzbWsvY2RrL3NwcmVhZHNoZWV0JztcbmV4cG9ydCB0eXBlIHtcbiAgQ2VsbCxcbiAgQ2VsbFZhbHVlLFxuICBDZWxsVHlwZSxcbiAgQ2VsbE1ldGEsXG4gIENlbGxFZGl0U3RhdGUsXG4gIENlbGxBZGRyZXNzLFxuICBDZWxsUmFuZ2UsXG4gIENvbHVtbkRlZixcbiAgQ29sdW1uU3RhdGUsXG4gIFNvcnREaXJlY3Rpb24sXG4gIENvbHVtbldpZHRoUHJlc2V0LFxuICBSb3dEZWYsXG4gIFJvd0RhdGEsXG4gIFN1bW1hcnlSb3csXG4gIFNlbGVjdGlvblN0YXRlIGFzIFNwcmVhZHNoZWV0U2VsZWN0aW9uU3RhdGUsXG4gIFNlbGVjdGlvbk1vZGUsXG4gIFNvcnRDcml0ZXJpb24sXG4gIFNvcnRTdGF0ZSxcbiAgRmlsdGVyQ3JpdGVyaW9uLFxuICBGaWx0ZXJPcGVyYXRvcixcbiAgRmlsdGVyU3RhdGUsXG4gIEZvcm11bGFOb2RlLFxuICBGb3JtdWxhUmVzdWx0LFxuICBGb3JtdWxhRGVwZW5kZW5jeSxcbiAgRm9ybXVsYUZ1bmN0aW9uLFxufSBmcm9tICdAbmd4c21rL2Nkay9zcHJlYWRzaGVldCc7XG5leHBvcnQge1xuICBQbHVnaW5Ib3N0IGFzIFNwcmVhZHNoZWV0UGx1Z2luSG9zdCxcbiAgU29ydFBsdWdpbixcbiAgRmlsdGVyUGx1Z2luLFxuICBTZWxlY3Rpb25QbHVnaW4gYXMgU3ByZWFkc2hlZXRTZWxlY3Rpb25QbHVnaW4sXG4gIEZvcm11bGFQbHVnaW4sXG4gIENsaXBib2FyZFBsdWdpbixcbiAgVW5kb1BsdWdpbixcbiAgVmFsaWRhdGlvblBsdWdpbixcbiAgdHlwZSBTcHJlYWRzaGVldFBsdWdpbixcbn0gZnJvbSAnQG5neHNtay9jZGsvc3ByZWFkc2hlZXQnO1xuZXhwb3J0IHtcbiAgY29sSW5kZXhUb0xldHRlcixcbiAgY29sTGV0dGVyVG9JbmRleCxcbiAgY2VsbFJlZixcbiAgcGFyc2VDZWxsUmVmLFxuICBub3JtYWxpemVSYW5nZSxcbiAgaXNDZWxsSW5SYW5nZSxcbiAgY2VsbHNJblJhbmdlLFxuICBmb3JtYXRDZWxsVmFsdWUsXG4gIGNyZWF0ZUVtcHR5Um93LFxuICBnZW5lcmF0ZVJvd0lkLFxuICBjbG9uZVJvdyxcbiAgcGlubmVkV2lkdGgsXG59IGZyb20gJ0BuZ3hzbWsvY2RrL3NwcmVhZHNoZWV0JztcblxuLy8gSW5wdXQgR3JvdXAg4oCUIG5vIG5hbWluZyBjb2xsaXNpb25zLCByZS1leHBvcnQgZXZlcnl0aGluZ1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvaW5wdXQtZ3JvdXAnO1xuXG4vLyBOT1RFOiAnQG5neHNtay9jZGsvdGVzdGluZycgaXMgaW50ZW50aW9uYWxseSBOT1QgcmUtZXhwb3J0ZWQgaGVyZS4gSXQgcHVsbHMgaW5cbi8vIGF4ZS1jb3JlIChhIENvbW1vbkpTIGRlcGVuZGVuY3kpIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBsZWFrIGludG8gZXZlcnkgcnVudGltZVxuLy8gYnVuZGxlIHRoYXQgaW1wb3J0cyB0aGUgbWFpbiAnQG5neHNtay9jZGsnIGJhcnJlbC4gSW1wb3J0IHRlc3QgaGVscGVycyBkaXJlY3RseVxuLy8gZnJvbSB0aGUgZGVkaWNhdGVkIGVudHJ5IHBvaW50IGluc3RlYWQ6IGBpbXBvcnQgeyAuLi4gfSBmcm9tICdAbmd4c21rL2Nkay90ZXN0aW5nJ2AuXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './scheduler-engine';
2
+ export * from './models';
3
+ export * from './plugin';
4
+ export * from './utils';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjaGVkdWxlci1lbmdpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY2hlZHVsZXIvbW9kZWxzL2RhdGUtcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlIHtcbiAgc3RhcnQ6IERhdGU7XG4gIGVuZDogRGF0ZTtcbiAgcmVzb3VyY2VJZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL21vZGVscy9ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJFdmVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXJ0OiBEYXRlO1xuICBlbmQ6IERhdGU7XG4gIGFsbERheT86IGJvb2xlYW47XG4gIGNvbG9yPzogc3RyaW5nO1xuICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGJhZGdlPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICByZXNvdXJjZUlkPzogc3RyaW5nO1xuICByZWN1cnJlbmNlPzogUmVjdXJyZW5jZVJ1bGU7XG4gIG1ldGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWN1cnJlbmNlUnVsZSB7XG4gIGZyZXF1ZW5jeTogJ0RBSUxZJyB8ICdXRUVLTFknIHwgJ01PTlRITFknIHwgJ1lFQVJMWSc7XG4gIGludGVydmFsPzogbnVtYmVyO1xuICBjb3VudD86IG51bWJlcjtcbiAgdW50aWw/OiBEYXRlO1xuICBieURheT86IHN0cmluZ1tdO1xuICBieU1vbnRoPzogbnVtYmVyW107XG4gIGJ5TW9udGhEYXk/OiBudW1iZXJbXTtcbiAgZXhjZXB0aW9ucz86IERhdGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJNb3ZlIHtcbiAgZXZlbnQ6IFNjaGVkdWxlckV2ZW50O1xuICBmcm9tOiBEYXRlO1xuICB0bzogRGF0ZTtcbiAgbmV3U3RhcnQ6IERhdGU7XG4gIG5ld0VuZDogRGF0ZTtcbiAgcmVzb3VyY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJDcmVhdGUge1xuICBldmVudDogU2NoZWR1bGVyRXZlbnQ7XG4gIGRheTogRGF0ZTtcbiAgc3RhcnQ6IERhdGU7XG4gIGVuZDogRGF0ZTtcbiAgcmVzb3VyY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJSZXNpemUge1xuICBldmVudDogU2NoZWR1bGVyRXZlbnQ7XG4gIG9sZEVuZDogRGF0ZTtcbiAgbmV3RW5kOiBEYXRlO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ export * from './event.model';
2
+ export * from './resource.model';
3
+ export * from './view.model';
4
+ export * from './selection.model';
5
+ export * from './date-range';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V2ZW50Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS1yYW5nZSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export const DEFAULT_WORKING_HOURS = {
2
+ days: [1, 2, 3, 4, 5],
3
+ ranges: [[480, 1020]],
4
+ };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL21vZGVscy9yZXNvdXJjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWlCO0lBQ2pELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVyUmVzb3VyY2Uge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XG4gIHdvcmtpbmdIb3Vycz86IFdvcmtpbmdIb3VycztcbiAgY2FwYWNpdHk/OiBudW1iZXI7XG4gIG1ldGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JraW5nSG91cnMge1xuICBkYXlzOiBudW1iZXJbXTtcbiAgcmFuZ2VzOiBbbnVtYmVyLCBudW1iZXJdW107XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dPUktJTkdfSE9VUlM6IFdvcmtpbmdIb3VycyA9IHtcbiAgZGF5czogWzEsIDIsIDMsIDQsIDVdLFxuICByYW5nZXM6IFtbNDgwLCAxMDIwXV0sXG59O1xuIl19
@@ -0,0 +1,7 @@
1
+ export const DEFAULT_SELECTION = {
2
+ selectedEventIds: new Set(),
3
+ selectedRange: null,
4
+ multiSelect: false,
5
+ focusedCell: null,
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NjaGVkdWxlci9tb2RlbHMvc2VsZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFtQjtJQUMvQyxnQkFBZ0IsRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUMzQixhQUFhLEVBQUUsSUFBSTtJQUNuQixXQUFXLEVBQUUsS0FBSztJQUNsQixXQUFXLEVBQUUsSUFBSTtDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRlUmFuZ2UgfSBmcm9tICcuL2RhdGUtcmFuZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvblN0YXRlIHtcbiAgc2VsZWN0ZWRFdmVudElkczogU2V0PHN0cmluZz47XG4gIHNlbGVjdGVkUmFuZ2U6IERhdGVSYW5nZSB8IG51bGw7XG4gIG11bHRpU2VsZWN0OiBib29sZWFuO1xuICBmb2N1c2VkQ2VsbDogeyBkYXRlOiBEYXRlOyByZXNvdXJjZUlkPzogc3RyaW5nIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRUxFQ1RJT046IFNlbGVjdGlvblN0YXRlID0ge1xuICBzZWxlY3RlZEV2ZW50SWRzOiBuZXcgU2V0KCksXG4gIHNlbGVjdGVkUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBmYWxzZSxcbiAgZm9jdXNlZENlbGw6IG51bGwsXG59O1xuIl19
@@ -0,0 +1,7 @@
1
+ export function isTimeGridView(view) {
2
+ return view.startsWith('timeGrid');
3
+ }
4
+ export function isDayGridView(view) {
5
+ return view.startsWith('dayGrid');
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY2hlZHVsZXIvbW9kZWxzL3ZpZXcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEJBLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBYztJQUMzQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBYztJQUMxQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFZpZXdUeXBlID1cbiAgfCAnZGF5R3JpZERheSdcbiAgfCAnZGF5R3JpZFdlZWsnXG4gIHwgJ2RheUdyaWRNb250aCdcbiAgfCAndGltZUdyaWREYXknXG4gIHwgJ3RpbWVHcmlkV2VlaydcbiAgfCAndGltZUdyaWRXb3JrV2VlaydcbiAgfCAndGltZUdyaWQzRGF5J1xuICB8ICdhZ2VuZGEnXG4gIHwgJ3RpbWVsaW5lJztcblxuZXhwb3J0IHR5cGUgRGVuc2l0eSA9ICdjb21wYWN0JyB8ICdjb21mb3J0YWJsZScgfCAnZGVuc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdTdGF0ZSB7XG4gIHR5cGU6IFZpZXdUeXBlO1xuICBkYXRlOiBEYXRlO1xuICByYW5nZVN0YXJ0OiBEYXRlO1xuICByYW5nZUVuZDogRGF0ZTtcbiAgc2xvdER1cmF0aW9uOiBudW1iZXI7XG4gIHNuYXBEdXJhdGlvbjogbnVtYmVyO1xuICB2aXNpYmxlSG91cnM6IFtudW1iZXIsIG51bWJlcl07XG4gIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXI7XG4gIGxvY2FsZTogc3RyaW5nO1xuICBydGw6IGJvb2xlYW47XG4gIGRlbnNpdHk6IERlbnNpdHk7XG4gIHNob3dBbGxEYXk6IGJvb2xlYW47XG4gIHNob3dXZWVrZW5kczogYm9vbGVhbjtcbiAgc2hvd0N1cnJlbnRUaW1lOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUaW1lR3JpZFZpZXcodmlldzogVmlld1R5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZpZXcuc3RhcnRzV2l0aCgndGltZUdyaWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF5R3JpZFZpZXcodmlldzogVmlld1R5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZpZXcuc3RhcnRzV2l0aCgnZGF5R3JpZCcpO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1zY2hlZHVsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL25neHNtay1jZGstc2NoZWR1bGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,82 @@
1
+ export class DragPlugin {
2
+ constructor(options = {}) {
3
+ this.name = 'drag';
4
+ this.priority = 10;
5
+ this._dragging = null;
6
+ this._options = options;
7
+ }
8
+ onInit(engine) {
9
+ this._engine = engine;
10
+ }
11
+ onDestroy() {
12
+ this._dragging = null;
13
+ }
14
+ startDrag(eventId, pointerY, dayEl, day) {
15
+ const event = this._engine.events().find((e) => e.id === eventId);
16
+ if (!event || event.draggable === false)
17
+ return false;
18
+ if (this._options.onDragStart && !this._options.onDragStart(event))
19
+ return false;
20
+ const scrollTop = dayEl.closest('.ngxsmk-sch__scroll')?.scrollTop ?? 0;
21
+ const colTop = dayEl.getBoundingClientRect().top;
22
+ const eventTop = this._engine.eventTop(event);
23
+ const offsetY = pointerY - colTop - eventTop + scrollTop;
24
+ this._dragging = {
25
+ eventId,
26
+ offsetY,
27
+ startTop: eventTop,
28
+ originDay: day,
29
+ };
30
+ return true;
31
+ }
32
+ moveDrag(pointerY, dayEl, day) {
33
+ if (!this._dragging)
34
+ return null;
35
+ const hh = this._engine.hourHeight();
36
+ const scrollTop = dayEl.closest('.ngxsmk-sch__scroll')?.scrollTop ?? 0;
37
+ const colTop = dayEl.getBoundingClientRect().top;
38
+ const rawY = pointerY - colTop + scrollTop - this._dragging.offsetY;
39
+ const snap = this._options.snapDuration ?? this._engine.viewState().snapDuration;
40
+ const snapPx = (snap / 60) * hh;
41
+ const top = Math.max(0, Math.round(rawY / snapPx) * snapPx);
42
+ return { top, day };
43
+ }
44
+ endDrag(top, day) {
45
+ if (!this._dragging)
46
+ return null;
47
+ const event = this._engine.events().find((e) => e.id === this._dragging.eventId);
48
+ if (!event) {
49
+ this._dragging = null;
50
+ return null;
51
+ }
52
+ const hh = this._engine.hourHeight();
53
+ const minutes = (top / hh) * 60;
54
+ const durationMs = event.end.getTime() - event.start.getTime();
55
+ const newStart = new Date(day);
56
+ newStart.setHours(0, 0, 0, 0);
57
+ newStart.setMinutes(minutes);
58
+ const newEnd = new Date(newStart.getTime() + durationMs);
59
+ const move = {
60
+ event,
61
+ from: event.start,
62
+ to: day,
63
+ newStart,
64
+ newEnd,
65
+ resourceId: event.resourceId,
66
+ };
67
+ this._engine.moveEvent(event.id, newStart, newEnd);
68
+ this._options.onDragEnd?.(move);
69
+ this._dragging = null;
70
+ return move;
71
+ }
72
+ cancelDrag() {
73
+ this._dragging = null;
74
+ }
75
+ get dragging() {
76
+ return this._dragging !== null;
77
+ }
78
+ get draggingEventId() {
79
+ return this._dragging?.eventId ?? null;
80
+ }
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL3BsdWdpbi9kcmFnLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQU8sVUFBVTtJQWFyQixZQUFZLFVBQTZCLEVBQUU7UUFabEMsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFJZixjQUFTLEdBS04sSUFBSSxDQUFDO1FBR2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUF1QjtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZSxFQUFFLFFBQWdCLEVBQUUsS0FBa0IsRUFBRSxHQUFTO1FBQ3hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRWpGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFFekQsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLE9BQU87WUFDUCxPQUFPO1lBQ1AsUUFBUSxFQUFFLFFBQVE7WUFDbEIsU0FBUyxFQUFFLEdBQUc7U0FDZixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQWdCLEVBQUUsS0FBa0IsRUFBRSxHQUFTO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWpDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDdkUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2pELE1BQU0sSUFBSSxHQUFHLFFBQVEsR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBQ2pGLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUU1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLEdBQVM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFNBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUV6RCxNQUFNLElBQUksR0FBa0I7WUFDMUIsS0FBSztZQUNMLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSztZQUNqQixFQUFFLEVBQUUsR0FBRztZQUNQLFFBQVE7WUFDUixNQUFNO1lBQ04sVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQzdCLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2NoZWR1bGVyRW5naW5lIH0gZnJvbSAnLi4vc2NoZWR1bGVyLWVuZ2luZSc7XG5pbXBvcnQgdHlwZSB7IFNjaGVkdWxlckV2ZW50LCBTY2hlZHVsZXJNb3ZlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4udHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyYWdQbHVnaW5PcHRpb25zIHtcbiAgc25hcER1cmF0aW9uPzogbnVtYmVyO1xuICBvbkRyYWdTdGFydD86IChldmVudDogU2NoZWR1bGVyRXZlbnQpID0+IGJvb2xlYW47XG4gIG9uRHJhZ0VuZD86IChtb3ZlOiBTY2hlZHVsZXJNb3ZlKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRHJhZ1BsdWdpbiBpbXBsZW1lbnRzIFNjaGVkdWxlclBsdWdpbiB7XG4gIHJlYWRvbmx5IG5hbWUgPSAnZHJhZyc7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gMTA7XG5cbiAgcHJpdmF0ZSBfZW5naW5lITogU2NoZWR1bGVyRW5naW5lO1xuICBwcml2YXRlIF9vcHRpb25zOiBEcmFnUGx1Z2luT3B0aW9ucztcbiAgcHJpdmF0ZSBfZHJhZ2dpbmc6IHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgb2Zmc2V0WTogbnVtYmVyO1xuICAgIHN0YXJ0VG9wOiBudW1iZXI7XG4gICAgb3JpZ2luRGF5OiBEYXRlO1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogRHJhZ1BsdWdpbk9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgb25Jbml0KGVuZ2luZTogU2NoZWR1bGVyRW5naW5lKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lID0gZW5naW5lO1xuICB9XG5cbiAgb25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RyYWdnaW5nID0gbnVsbDtcbiAgfVxuXG4gIHN0YXJ0RHJhZyhldmVudElkOiBzdHJpbmcsIHBvaW50ZXJZOiBudW1iZXIsIGRheUVsOiBIVE1MRWxlbWVudCwgZGF5OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9lbmdpbmUuZXZlbnRzKCkuZmluZCgoZSkgPT4gZS5pZCA9PT0gZXZlbnRJZCk7XG4gICAgaWYgKCFldmVudCB8fCBldmVudC5kcmFnZ2FibGUgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMub25EcmFnU3RhcnQgJiYgIXRoaXMuX29wdGlvbnMub25EcmFnU3RhcnQoZXZlbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBzY3JvbGxUb3AgPSBkYXlFbC5jbG9zZXN0KCcubmd4c21rLXNjaF9fc2Nyb2xsJyk/LnNjcm9sbFRvcCA/PyAwO1xuICAgIGNvbnN0IGNvbFRvcCA9IGRheUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICBjb25zdCBldmVudFRvcCA9IHRoaXMuX2VuZ2luZS5ldmVudFRvcChldmVudCk7XG4gICAgY29uc3Qgb2Zmc2V0WSA9IHBvaW50ZXJZIC0gY29sVG9wIC0gZXZlbnRUb3AgKyBzY3JvbGxUb3A7XG5cbiAgICB0aGlzLl9kcmFnZ2luZyA9IHtcbiAgICAgIGV2ZW50SWQsXG4gICAgICBvZmZzZXRZLFxuICAgICAgc3RhcnRUb3A6IGV2ZW50VG9wLFxuICAgICAgb3JpZ2luRGF5OiBkYXksXG4gICAgfTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG1vdmVEcmFnKHBvaW50ZXJZOiBudW1iZXIsIGRheUVsOiBIVE1MRWxlbWVudCwgZGF5OiBEYXRlKTogeyB0b3A6IG51bWJlcjsgZGF5OiBEYXRlIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX2RyYWdnaW5nKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGhoID0gdGhpcy5fZW5naW5lLmhvdXJIZWlnaHQoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBkYXlFbC5jbG9zZXN0KCcubmd4c21rLXNjaF9fc2Nyb2xsJyk/LnNjcm9sbFRvcCA/PyAwO1xuICAgIGNvbnN0IGNvbFRvcCA9IGRheUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICBjb25zdCByYXdZID0gcG9pbnRlclkgLSBjb2xUb3AgKyBzY3JvbGxUb3AgLSB0aGlzLl9kcmFnZ2luZy5vZmZzZXRZO1xuICAgIGNvbnN0IHNuYXAgPSB0aGlzLl9vcHRpb25zLnNuYXBEdXJhdGlvbiA/PyB0aGlzLl9lbmdpbmUudmlld1N0YXRlKCkuc25hcER1cmF0aW9uO1xuICAgIGNvbnN0IHNuYXBQeCA9IChzbmFwIC8gNjApICogaGg7XG4gICAgY29uc3QgdG9wID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChyYXdZIC8gc25hcFB4KSAqIHNuYXBQeCk7XG5cbiAgICByZXR1cm4geyB0b3AsIGRheSB9O1xuICB9XG5cbiAgZW5kRHJhZyh0b3A6IG51bWJlciwgZGF5OiBEYXRlKTogU2NoZWR1bGVyTW92ZSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fZHJhZ2dpbmcpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9lbmdpbmUuZXZlbnRzKCkuZmluZCgoZSkgPT4gZS5pZCA9PT0gdGhpcy5fZHJhZ2dpbmchLmV2ZW50SWQpO1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHRoaXMuX2RyYWdnaW5nID0gbnVsbDtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGhoID0gdGhpcy5fZW5naW5lLmhvdXJIZWlnaHQoKTtcbiAgICBjb25zdCBtaW51dGVzID0gKHRvcCAvIGhoKSAqIDYwO1xuICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBldmVudC5lbmQuZ2V0VGltZSgpIC0gZXZlbnQuc3RhcnQuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG5ld1N0YXJ0ID0gbmV3IERhdGUoZGF5KTtcbiAgICBuZXdTdGFydC5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICBuZXdTdGFydC5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuICAgIGNvbnN0IG5ld0VuZCA9IG5ldyBEYXRlKG5ld1N0YXJ0LmdldFRpbWUoKSArIGR1cmF0aW9uTXMpO1xuXG4gICAgY29uc3QgbW92ZTogU2NoZWR1bGVyTW92ZSA9IHtcbiAgICAgIGV2ZW50LFxuICAgICAgZnJvbTogZXZlbnQuc3RhcnQsXG4gICAgICB0bzogZGF5LFxuICAgICAgbmV3U3RhcnQsXG4gICAgICBuZXdFbmQsXG4gICAgICByZXNvdXJjZUlkOiBldmVudC5yZXNvdXJjZUlkLFxuICAgIH07XG5cbiAgICB0aGlzLl9lbmdpbmUubW92ZUV2ZW50KGV2ZW50LmlkLCBuZXdTdGFydCwgbmV3RW5kKTtcbiAgICB0aGlzLl9vcHRpb25zLm9uRHJhZ0VuZD8uKG1vdmUpO1xuICAgIHRoaXMuX2RyYWdnaW5nID0gbnVsbDtcbiAgICByZXR1cm4gbW92ZTtcbiAgfVxuXG4gIGNhbmNlbERyYWcoKTogdm9pZCB7XG4gICAgdGhpcy5fZHJhZ2dpbmcgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGRyYWdnaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnZ2luZyAhPT0gbnVsbDtcbiAgfVxuXG4gIGdldCBkcmFnZ2luZ0V2ZW50SWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RyYWdnaW5nPy5ldmVudElkID8/IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export * from './plugin.types';
2
+ export * from './plugin-host';
3
+ export * from './drag-plugin';
4
+ export * from './resize-plugin';
5
+ export * from './selection-plugin';
6
+ export * from './tooltip-plugin';
7
+ export * from './keyboard-plugin';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL3BsdWdpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BsdWdpbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbi1ob3N0JztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1wbHVnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNpemUtcGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLXBsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2x0aXAtcGx1Z2luJztcbmV4cG9ydCAqIGZyb20gJy4va2V5Ym9hcmQtcGx1Z2luJztcbiJdfQ==
@@ -0,0 +1,150 @@
1
+ import { addDays, addMinutes } from '../utils/date-utils';
2
+ export class KeyboardPlugin {
3
+ constructor(options = {}) {
4
+ this.name = 'keyboard';
5
+ this.priority = 20;
6
+ this._handler = null;
7
+ this._options = options;
8
+ }
9
+ onInit(engine) {
10
+ this._engine = engine;
11
+ if (typeof document !== 'undefined') {
12
+ this._handler = (e) => this._onKeyDown(e);
13
+ document.addEventListener('keydown', this._handler);
14
+ }
15
+ }
16
+ onDestroy() {
17
+ if (this._handler) {
18
+ document.removeEventListener('keydown', this._handler);
19
+ this._handler = null;
20
+ }
21
+ }
22
+ _onKeyDown(e) {
23
+ const target = e.target;
24
+ if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable)
25
+ return;
26
+ switch (e.key) {
27
+ case 'ArrowRight':
28
+ e.preventDefault();
29
+ this._moveFocus(1);
30
+ break;
31
+ case 'ArrowLeft':
32
+ e.preventDefault();
33
+ this._moveFocus(-1);
34
+ break;
35
+ case 'ArrowUp':
36
+ e.preventDefault();
37
+ this._moveFocusTime(-30);
38
+ break;
39
+ case 'ArrowDown':
40
+ e.preventDefault();
41
+ this._moveFocusTime(30);
42
+ break;
43
+ case 'Enter':
44
+ case ' ':
45
+ e.preventDefault();
46
+ this._activateFocused();
47
+ break;
48
+ case 'Delete':
49
+ case 'Backspace':
50
+ e.preventDefault();
51
+ this._deleteSelected();
52
+ break;
53
+ case 'Escape':
54
+ e.preventDefault();
55
+ this._deselect();
56
+ this._options.onKeyAction?.('escape');
57
+ break;
58
+ case 'a':
59
+ if (e.ctrlKey || e.metaKey) {
60
+ e.preventDefault();
61
+ this._selectAll();
62
+ }
63
+ break;
64
+ case 't':
65
+ if (!e.ctrlKey && !e.metaKey && !e.altKey) {
66
+ e.preventDefault();
67
+ this._goToday();
68
+ }
69
+ break;
70
+ }
71
+ }
72
+ _moveFocus(deltaDays) {
73
+ const sel = this._engine.selection();
74
+ const focused = sel.focusedCell;
75
+ if (focused) {
76
+ const newDate = addDays(focused.date, deltaDays);
77
+ this._engine.selection.update((s) => ({
78
+ ...s,
79
+ focusedCell: { date: newDate, resourceId: focused.resourceId },
80
+ }));
81
+ }
82
+ else {
83
+ const vs = this._engine.viewState();
84
+ this._engine.selection.update((s) => ({
85
+ ...s,
86
+ focusedCell: { date: vs.date },
87
+ }));
88
+ }
89
+ this._options.onKeyAction?.('moveFocus');
90
+ }
91
+ _moveFocusTime(deltaMinutes) {
92
+ const sel = this._engine.selection();
93
+ const focused = sel.focusedCell;
94
+ if (focused) {
95
+ const newDate = addMinutes(focused.date, deltaMinutes);
96
+ this._engine.selection.update((s) => ({
97
+ ...s,
98
+ focusedCell: { date: newDate, resourceId: focused.resourceId },
99
+ }));
100
+ }
101
+ else {
102
+ this._moveFocus(0);
103
+ }
104
+ this._options.onKeyAction?.('moveFocusTime');
105
+ }
106
+ _activateFocused() {
107
+ const sel = this._engine.selection();
108
+ const ids = sel.selectedEventIds;
109
+ if (ids.size === 1) {
110
+ const eventId = Array.from(ids)[0];
111
+ const event = this._engine.events().find((e) => e.id === eventId);
112
+ if (event)
113
+ this._options.onKeyAction?.('activate');
114
+ }
115
+ else {
116
+ const focused = sel.focusedCell;
117
+ if (focused) {
118
+ const dayEvents = this._engine.eventsForDay(focused.date);
119
+ if (dayEvents.length > 0) {
120
+ this._engine.selectEvent(dayEvents[0].id);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ _deleteSelected() {
126
+ if (this._options.onKeyAction?.('delete') === false)
127
+ return;
128
+ const ids = this._engine.selection().selectedEventIds;
129
+ for (const id of ids) {
130
+ this._engine.removeEvent(id);
131
+ }
132
+ this._engine.clearSelection();
133
+ }
134
+ _deselect() {
135
+ this._engine.clearSelection();
136
+ }
137
+ _selectAll() {
138
+ const events = this._engine.events();
139
+ this._engine.selection.update((s) => ({
140
+ ...s,
141
+ selectedEventIds: new Set(events.map((e) => e.id)),
142
+ }));
143
+ this._options.onKeyAction?.('selectAll');
144
+ }
145
+ _goToday() {
146
+ this._engine.today();
147
+ this._options.onKeyAction?.('today');
148
+ }
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NjaGVkdWxlci9wbHVnaW4va2V5Ym9hcmQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNMUQsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBWSxVQUFpQyxFQUFFO1FBUHRDLFNBQUksR0FBRyxVQUFVLENBQUM7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUlmLGFBQVEsR0FBd0MsSUFBSSxDQUFDO1FBRzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBdUI7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFnQjtRQUNqQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBcUIsQ0FBQztRQUN2QyxJQUFJLE1BQU0sQ0FBQyxP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LGNBQWMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsQ0FBQztZQUNKLGdCQUFnQixFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFbmdpbmUgfSBmcm9tICcuLi9zY2hlZHVsZXItZW5naW5lJztcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4udHlwZXMnO1xuaW1wb3J0IHsgYWRkRGF5cywgYWRkTWludXRlcyB9IGZyb20gJy4uL3V0aWxzL2RhdGUtdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleWJvYXJkUGx1Z2luT3B0aW9ucyB7XG4gIG9uS2V5QWN0aW9uPzogKGFjdGlvbjogc3RyaW5nKSA9PiBib29sZWFuIHwgdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIEtleWJvYXJkUGx1Z2luIGltcGxlbWVudHMgU2NoZWR1bGVyUGx1Z2luIHtcbiAgcmVhZG9ubHkgbmFtZSA9ICdrZXlib2FyZCc7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gMjA7XG5cbiAgcHJpdmF0ZSBfZW5naW5lITogU2NoZWR1bGVyRW5naW5lO1xuICBwcml2YXRlIF9vcHRpb25zOiBLZXlib2FyZFBsdWdpbk9wdGlvbnM7XG4gIHByaXZhdGUgX2hhbmRsZXI6ICgoZTogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBLZXlib2FyZFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgb25Jbml0KGVuZ2luZTogU2NoZWR1bGVyRW5naW5lKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lID0gZW5naW5lO1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVyID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX29uS2V5RG93bihlKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9oYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2hhbmRsZXIpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9oYW5kbGVyKTtcbiAgICAgIHRoaXMuX2hhbmRsZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8IHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSlcbiAgICAgIHJldHVybjtcblxuICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX21vdmVGb2N1cygxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX21vdmVGb2N1cygtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fbW92ZUZvY3VzVGltZSgtMzApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fbW92ZUZvY3VzVGltZSgzMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVGb2N1c2VkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fZGVsZXRlU2VsZWN0ZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX2Rlc2VsZWN0KCk7XG4gICAgICAgIHRoaXMuX29wdGlvbnMub25LZXlBY3Rpb24/LignZXNjYXBlJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuX3NlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndCc6XG4gICAgICAgIGlmICghZS5jdHJsS2V5ICYmICFlLm1ldGFLZXkgJiYgIWUuYWx0S2V5KSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuX2dvVG9kYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9tb3ZlRm9jdXMoZGVsdGFEYXlzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uKCk7XG4gICAgY29uc3QgZm9jdXNlZCA9IHNlbC5mb2N1c2VkQ2VsbDtcblxuICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gYWRkRGF5cyhmb2N1c2VkLmRhdGUsIGRlbHRhRGF5cyk7XG4gICAgICB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uLnVwZGF0ZSgocykgPT4gKHtcbiAgICAgICAgLi4ucyxcbiAgICAgICAgZm9jdXNlZENlbGw6IHsgZGF0ZTogbmV3RGF0ZSwgcmVzb3VyY2VJZDogZm9jdXNlZC5yZXNvdXJjZUlkIH0sXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZzID0gdGhpcy5fZW5naW5lLnZpZXdTdGF0ZSgpO1xuICAgICAgdGhpcy5fZW5naW5lLnNlbGVjdGlvbi51cGRhdGUoKHMpID0+ICh7XG4gICAgICAgIC4uLnMsXG4gICAgICAgIGZvY3VzZWRDZWxsOiB7IGRhdGU6IHZzLmRhdGUgfSxcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgdGhpcy5fb3B0aW9ucy5vbktleUFjdGlvbj8uKCdtb3ZlRm9jdXMnKTtcbiAgfVxuXG4gIHByaXZhdGUgX21vdmVGb2N1c1RpbWUoZGVsdGFNaW51dGVzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uKCk7XG4gICAgY29uc3QgZm9jdXNlZCA9IHNlbC5mb2N1c2VkQ2VsbDtcblxuICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gYWRkTWludXRlcyhmb2N1c2VkLmRhdGUsIGRlbHRhTWludXRlcyk7XG4gICAgICB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uLnVwZGF0ZSgocykgPT4gKHtcbiAgICAgICAgLi4ucyxcbiAgICAgICAgZm9jdXNlZENlbGw6IHsgZGF0ZTogbmV3RGF0ZSwgcmVzb3VyY2VJZDogZm9jdXNlZC5yZXNvdXJjZUlkIH0sXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21vdmVGb2N1cygwKTtcbiAgICB9XG4gICAgdGhpcy5fb3B0aW9ucy5vbktleUFjdGlvbj8uKCdtb3ZlRm9jdXNUaW1lJyk7XG4gIH1cblxuICBwcml2YXRlIF9hY3RpdmF0ZUZvY3VzZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsID0gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGlkcyA9IHNlbC5zZWxlY3RlZEV2ZW50SWRzO1xuICAgIGlmIChpZHMuc2l6ZSA9PT0gMSkge1xuICAgICAgY29uc3QgZXZlbnRJZCA9IEFycmF5LmZyb20oaWRzKVswXTtcbiAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5fZW5naW5lLmV2ZW50cygpLmZpbmQoKGUpID0+IGUuaWQgPT09IGV2ZW50SWQpO1xuICAgICAgaWYgKGV2ZW50KSB0aGlzLl9vcHRpb25zLm9uS2V5QWN0aW9uPy4oJ2FjdGl2YXRlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZvY3VzZWQgPSBzZWwuZm9jdXNlZENlbGw7XG4gICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICBjb25zdCBkYXlFdmVudHMgPSB0aGlzLl9lbmdpbmUuZXZlbnRzRm9yRGF5KGZvY3VzZWQuZGF0ZSk7XG4gICAgICAgIGlmIChkYXlFdmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuX2VuZ2luZS5zZWxlY3RFdmVudChkYXlFdmVudHNbMF0uaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVsZXRlU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMub25LZXlBY3Rpb24/LignZGVsZXRlJykgPT09IGZhbHNlKSByZXR1cm47XG4gICAgY29uc3QgaWRzID0gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpLnNlbGVjdGVkRXZlbnRJZHM7XG4gICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcbiAgICAgIHRoaXMuX2VuZ2luZS5yZW1vdmVFdmVudChpZCk7XG4gICAgfVxuICAgIHRoaXMuX2VuZ2luZS5jbGVhclNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lLmNsZWFyU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRzID0gdGhpcy5fZW5naW5lLmV2ZW50cygpO1xuICAgIHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24udXBkYXRlKChzKSA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIHNlbGVjdGVkRXZlbnRJZHM6IG5ldyBTZXQoZXZlbnRzLm1hcCgoZSkgPT4gZS5pZCkpLFxuICAgIH0pKTtcbiAgICB0aGlzLl9vcHRpb25zLm9uS2V5QWN0aW9uPy4oJ3NlbGVjdEFsbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ29Ub2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmdpbmUudG9kYXkoKTtcbiAgICB0aGlzLl9vcHRpb25zLm9uS2V5QWN0aW9uPy4oJ3RvZGF5Jyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,48 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class PluginHost {
4
+ constructor() {
5
+ this._plugins = new Map();
6
+ this._engine = null;
7
+ }
8
+ register(engine, plugins) {
9
+ this._engine = engine;
10
+ const sorted = [...plugins].sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100));
11
+ for (const plugin of sorted) {
12
+ if (this._plugins.has(plugin.name))
13
+ continue;
14
+ this._plugins.set(plugin.name, plugin);
15
+ plugin.onInit?.(engine);
16
+ }
17
+ }
18
+ unregister(name) {
19
+ const plugin = this._plugins.get(name);
20
+ if (plugin) {
21
+ plugin.onDestroy?.();
22
+ this._plugins.delete(name);
23
+ }
24
+ }
25
+ notifyRender() {
26
+ for (const plugin of this._plugins.values()) {
27
+ plugin.onRender?.();
28
+ }
29
+ }
30
+ destroy() {
31
+ for (const plugin of this._plugins.values()) {
32
+ plugin.onDestroy?.();
33
+ }
34
+ this._plugins.clear();
35
+ }
36
+ has(name) {
37
+ return this._plugins.has(name);
38
+ }
39
+ get(name) {
40
+ return this._plugins.get(name);
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginHost, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginHost }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginHost, decorators: [{
46
+ type: Injectable
47
+ }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL3BsdWdpbi9wbHVnaW4taG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVVLGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUM5QyxZQUFPLEdBQTJCLElBQUksQ0FBQztLQXdDaEQ7SUF0Q0MsUUFBUSxDQUFDLE1BQXVCLEVBQUUsT0FBMEI7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFBRSxTQUFTO1lBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQXpDVSxVQUFVO2tIQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJQbHVnaW4gfSBmcm9tICcuL3BsdWdpbi50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IHtcbiAgcHJpdmF0ZSBfcGx1Z2lucyA9IG5ldyBNYXA8c3RyaW5nLCBTY2hlZHVsZXJQbHVnaW4+KCk7XG4gIHByaXZhdGUgX2VuZ2luZTogU2NoZWR1bGVyRW5naW5lIHwgbnVsbCA9IG51bGw7XG5cbiAgcmVnaXN0ZXIoZW5naW5lOiBTY2hlZHVsZXJFbmdpbmUsIHBsdWdpbnM6IFNjaGVkdWxlclBsdWdpbltdKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lID0gZW5naW5lO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5wbHVnaW5zXS5zb3J0KChhLCBiKSA9PiAoYS5wcmlvcml0eSA/PyAxMDApIC0gKGIucHJpb3JpdHkgPz8gMTAwKSk7XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2Ygc29ydGVkKSB7XG4gICAgICBpZiAodGhpcy5fcGx1Z2lucy5oYXMocGx1Z2luLm5hbWUpKSBjb250aW51ZTtcbiAgICAgIHRoaXMuX3BsdWdpbnMuc2V0KHBsdWdpbi5uYW1lLCBwbHVnaW4pO1xuICAgICAgcGx1Z2luLm9uSW5pdD8uKGVuZ2luZSk7XG4gICAgfVxuICB9XG5cbiAgdW5yZWdpc3RlcihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLl9wbHVnaW5zLmdldChuYW1lKTtcbiAgICBpZiAocGx1Z2luKSB7XG4gICAgICBwbHVnaW4ub25EZXN0cm95Py4oKTtcbiAgICAgIHRoaXMuX3BsdWdpbnMuZGVsZXRlKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmeVJlbmRlcigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLl9wbHVnaW5zLnZhbHVlcygpKSB7XG4gICAgICBwbHVnaW4ub25SZW5kZXI/LigpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdGhpcy5fcGx1Z2lucy52YWx1ZXMoKSkge1xuICAgICAgcGx1Z2luLm9uRGVzdHJveT8uKCk7XG4gICAgfVxuICAgIHRoaXMuX3BsdWdpbnMuY2xlYXIoKTtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGx1Z2lucy5oYXMobmFtZSk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogU2NoZWR1bGVyUGx1Z2luIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGx1Z2lucy5nZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NjaGVkdWxlci9wbHVnaW4vcGx1Z2luLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlclBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIG9uSW5pdD8oZW5naW5lOiBTY2hlZHVsZXJFbmdpbmUpOiB2b2lkO1xuICBvbkRlc3Ryb3k/KCk6IHZvaWQ7XG4gIG9uUmVuZGVyPygpOiB2b2lkO1xufVxuIl19
@@ -0,0 +1,74 @@
1
+ export class ResizePlugin {
2
+ constructor(options = {}) {
3
+ this.name = 'resize';
4
+ this.priority = 11;
5
+ this._resizing = null;
6
+ this._options = options;
7
+ }
8
+ onInit(engine) {
9
+ this._engine = engine;
10
+ }
11
+ onDestroy() {
12
+ this._resizing = null;
13
+ }
14
+ startResize(eventId) {
15
+ const event = this._engine.events().find((e) => e.id === eventId);
16
+ if (!event || event.resizable === false)
17
+ return false;
18
+ if (this._options.onResizeStart && !this._options.onResizeStart(event))
19
+ return false;
20
+ this._resizing = { eventId, originEnd: new Date(event.end) };
21
+ return true;
22
+ }
23
+ moveResize(pointerY, dayEl) {
24
+ if (!this._resizing)
25
+ return null;
26
+ const event = this._engine.events().find((e) => e.id === this._resizing.eventId);
27
+ if (!event)
28
+ return null;
29
+ const hh = this._engine.hourHeight();
30
+ const scrollTop = dayEl.closest('.ngxsmk-sch__scroll')?.scrollTop ?? 0;
31
+ const colTop = dayEl.getBoundingClientRect().top;
32
+ const rawY = pointerY - colTop + scrollTop;
33
+ const snap = this._options.snapDuration ?? this._engine.viewState().snapDuration;
34
+ const snapPx = (snap / 60) * hh;
35
+ const y = Math.max(this._engine.eventTop(event) + snapPx, Math.round(rawY / snapPx) * snapPx);
36
+ const minutes = (y / hh) * 60;
37
+ const newEnd = new Date(event.start);
38
+ newEnd.setHours(0, 0, 0, 0);
39
+ newEnd.setMinutes(minutes);
40
+ const minDur = this._options.minDuration ?? 15;
41
+ if (newEnd.getTime() - event.start.getTime() < minDur * 60_000) {
42
+ newEnd.setTime(event.start.getTime() + minDur * 60_000);
43
+ }
44
+ return newEnd;
45
+ }
46
+ endResize() {
47
+ if (!this._resizing)
48
+ return null;
49
+ const event = this._engine.events().find((e) => e.id === this._resizing.eventId);
50
+ if (!event) {
51
+ this._resizing = null;
52
+ return null;
53
+ }
54
+ const resize = {
55
+ event,
56
+ oldEnd: this._resizing.originEnd,
57
+ newEnd: event.end,
58
+ };
59
+ this._engine.resizeEvent(event.id, event.end);
60
+ this._options.onResizeEnd?.(resize);
61
+ this._resizing = null;
62
+ return resize;
63
+ }
64
+ cancelResize() {
65
+ this._resizing = null;
66
+ }
67
+ get resizing() {
68
+ return this._resizing !== null;
69
+ }
70
+ get resizingEventId() {
71
+ return this._resizing?.eventId ?? null;
72
+ }
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY2hlZHVsZXIvcGx1Z2luL3Jlc2l6ZS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLFlBQVk7SUFXdkIsWUFBWSxVQUErQixFQUFFO1FBVnBDLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUlmLGNBQVMsR0FHTixJQUFJLENBQUM7UUFHZCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXVCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXJGLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVE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QUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFdmVudCwgU2NoZWR1bGVyUmVzaXplIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4udHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZVBsdWdpbk9wdGlvbnMge1xuICBzbmFwRHVyYXRpb24/OiBudW1iZXI7XG4gIG1pbkR1cmF0aW9uPzogbnVtYmVyO1xuICBvblJlc2l6ZVN0YXJ0PzogKGV2ZW50OiBTY2hlZHVsZXJFdmVudCkgPT4gYm9vbGVhbjtcbiAgb25SZXNpemVFbmQ/OiAocmVzaXplOiBTY2hlZHVsZXJSZXNpemUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSZXNpemVQbHVnaW4gaW1wbGVtZW50cyBTY2hlZHVsZXJQbHVnaW4ge1xuICByZWFkb25seSBuYW1lID0gJ3Jlc2l6ZSc7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gMTE7XG5cbiAgcHJpdmF0ZSBfZW5naW5lITogU2NoZWR1bGVyRW5naW5lO1xuICBwcml2YXRlIF9vcHRpb25zOiBSZXNpemVQbHVnaW5PcHRpb25zO1xuICBwcml2YXRlIF9yZXNpemluZzoge1xuICAgIGV2ZW50SWQ6IHN0cmluZztcbiAgICBvcmlnaW5FbmQ6IERhdGU7XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBSZXNpemVQbHVnaW5PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIG9uSW5pdChlbmdpbmU6IFNjaGVkdWxlckVuZ2luZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZ2luZSA9IGVuZ2luZTtcbiAgfVxuXG4gIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNpemluZyA9IG51bGw7XG4gIH1cblxuICBzdGFydFJlc2l6ZShldmVudElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBldmVudCA9IHRoaXMuX2VuZ2luZS5ldmVudHMoKS5maW5kKChlKSA9PiBlLmlkID09PSBldmVudElkKTtcbiAgICBpZiAoIWV2ZW50IHx8IGV2ZW50LnJlc2l6YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5vblJlc2l6ZVN0YXJ0ICYmICF0aGlzLl9vcHRpb25zLm9uUmVzaXplU3RhcnQoZXZlbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLl9yZXNpemluZyA9IHsgZXZlbnRJZCwgb3JpZ2luRW5kOiBuZXcgRGF0ZShldmVudC5lbmQpIH07XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBtb3ZlUmVzaXplKHBvaW50ZXJZOiBudW1iZXIsIGRheUVsOiBIVE1MRWxlbWVudCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3Jlc2l6aW5nKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5fZW5naW5lLmV2ZW50cygpLmZpbmQoKGUpID0+IGUuaWQgPT09IHRoaXMuX3Jlc2l6aW5nIS5ldmVudElkKTtcbiAgICBpZiAoIWV2ZW50KSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGhoID0gdGhpcy5fZW5naW5lLmhvdXJIZWlnaHQoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBkYXlFbC5jbG9zZXN0KCcubmd4c21rLXNjaF9fc2Nyb2xsJyk/LnNjcm9sbFRvcCA/PyAwO1xuICAgIGNvbnN0IGNvbFRvcCA9IGRheUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICBjb25zdCByYXdZID0gcG9pbnRlclkgLSBjb2xUb3AgKyBzY3JvbGxUb3A7XG4gICAgY29uc3Qgc25hcCA9IHRoaXMuX29wdGlvbnMuc25hcER1cmF0aW9uID8/IHRoaXMuX2VuZ2luZS52aWV3U3RhdGUoKS5zbmFwRHVyYXRpb247XG4gICAgY29uc3Qgc25hcFB4ID0gKHNuYXAgLyA2MCkgKiBoaDtcbiAgICBjb25zdCB5ID0gTWF0aC5tYXgodGhpcy5fZW5naW5lLmV2ZW50VG9wKGV2ZW50KSArIHNuYXBQeCwgTWF0aC5yb3VuZChyYXdZIC8gc25hcFB4KSAqIHNuYXBQeCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gKHkgLyBoaCkgKiA2MDtcbiAgICBjb25zdCBuZXdFbmQgPSBuZXcgRGF0ZShldmVudC5zdGFydCk7XG4gICAgbmV3RW5kLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIG5ld0VuZC5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuXG4gICAgY29uc3QgbWluRHVyID0gdGhpcy5fb3B0aW9ucy5taW5EdXJhdGlvbiA/PyAxNTtcbiAgICBpZiAobmV3RW5kLmdldFRpbWUoKSAtIGV2ZW50LnN0YXJ0LmdldFRpbWUoKSA8IG1pbkR1ciAqIDYwXzAwMCkge1xuICAgICAgbmV3RW5kLnNldFRpbWUoZXZlbnQuc3RhcnQuZ2V0VGltZSgpICsgbWluRHVyICogNjBfMDAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3RW5kO1xuICB9XG5cbiAgZW5kUmVzaXplKCk6IFNjaGVkdWxlclJlc2l6ZSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcmVzaXppbmcpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9lbmdpbmUuZXZlbnRzKCkuZmluZCgoZSkgPT4gZS5pZCA9PT0gdGhpcy5fcmVzaXppbmchLmV2ZW50SWQpO1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHRoaXMuX3Jlc2l6aW5nID0gbnVsbDtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZTogU2NoZWR1bGVyUmVzaXplID0ge1xuICAgICAgZXZlbnQsXG4gICAgICBvbGRFbmQ6IHRoaXMuX3Jlc2l6aW5nLm9yaWdpbkVuZCxcbiAgICAgIG5ld0VuZDogZXZlbnQuZW5kLFxuICAgIH07XG5cbiAgICB0aGlzLl9lbmdpbmUucmVzaXplRXZlbnQoZXZlbnQuaWQsIGV2ZW50LmVuZCk7XG4gICAgdGhpcy5fb3B0aW9ucy5vblJlc2l6ZUVuZD8uKHJlc2l6ZSk7XG4gICAgdGhpcy5fcmVzaXppbmcgPSBudWxsO1xuICAgIHJldHVybiByZXNpemU7XG4gIH1cblxuICBjYW5jZWxSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzaXppbmcgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHJlc2l6aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXNpemluZyAhPT0gbnVsbDtcbiAgfVxuXG4gIGdldCByZXNpemluZ0V2ZW50SWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc2l6aW5nPy5ldmVudElkID8/IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,84 @@
1
+ export class SelectionPlugin {
2
+ constructor(options = {}) {
3
+ this.name = 'selection';
4
+ this.priority = 5;
5
+ this._rangeSelecting = false;
6
+ this._rangeStart = null;
7
+ this._options = options;
8
+ }
9
+ onInit(engine) {
10
+ this._engine = engine;
11
+ if (this._options.multiSelect) {
12
+ this._engine.selection.update((s) => ({ ...s, multiSelect: true }));
13
+ }
14
+ }
15
+ onDestroy() {
16
+ this._rangeSelecting = false;
17
+ this._rangeStart = null;
18
+ }
19
+ toggleEvent(eventId, modifierKey = false) {
20
+ const multi = this._options.multiSelect && modifierKey;
21
+ this._engine.selectEvent(eventId, multi);
22
+ const selectedIds = this._engine.selection().selectedEventIds;
23
+ const selectedEvents = this._engine.events().filter((e) => selectedIds.has(e.id));
24
+ if (selectedIds.has(eventId)) {
25
+ this._options.onSelect?.(selectedEvents);
26
+ }
27
+ else {
28
+ this._options.onDeselect?.(selectedEvents);
29
+ }
30
+ }
31
+ selectOnly(eventId) {
32
+ this._engine.clearSelection();
33
+ this._engine.selectEvent(eventId);
34
+ const event = this._engine.events().find((e) => e.id === eventId);
35
+ if (event)
36
+ this._options.onSelect?.([event]);
37
+ }
38
+ selectRange(start, end) {
39
+ this._engine.selectRange(start, end);
40
+ this._options.onRangeSelect?.(start, end);
41
+ }
42
+ startRangeSelect(date) {
43
+ this._rangeSelecting = true;
44
+ this._rangeStart = date;
45
+ }
46
+ updateRangeSelect(date) {
47
+ if (!this._rangeSelecting || !this._rangeStart)
48
+ return;
49
+ const s = this._rangeStart < date ? this._rangeStart : date;
50
+ const e = this._rangeStart < date ? date : this._rangeStart;
51
+ this._engine.selectRange(s, e);
52
+ }
53
+ endRangeSelect() {
54
+ if (!this._rangeSelecting || !this._rangeStart)
55
+ return null;
56
+ const range = this._engine.selection().selectedRange;
57
+ this._rangeSelecting = false;
58
+ this._rangeStart = null;
59
+ return range;
60
+ }
61
+ selectAll() {
62
+ const all = this._engine.events();
63
+ this._engine.selection.update((s) => ({
64
+ ...s,
65
+ selectedEventIds: new Set(all.map((e) => e.id)),
66
+ }));
67
+ }
68
+ clearSelection() {
69
+ this._engine.clearSelection();
70
+ }
71
+ get selectedIds() {
72
+ return this._engine.selection().selectedEventIds;
73
+ }
74
+ get selectedCount() {
75
+ return this._engine.selection().selectedEventIds.size;
76
+ }
77
+ get hasSelection() {
78
+ return this._engine.selection().selectedEventIds.size > 0;
79
+ }
80
+ get isRangeSelecting() {
81
+ return this._rangeSelecting;
82
+ }
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY2hlZHVsZXIvcGx1Z2luL3NlbGVjdGlvbi1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxPQUFPLGVBQWU7SUFTMUIsWUFBWSxVQUFrQyxFQUFFO1FBUnZDLFNBQUksR0FBRyxXQUFXLENBQUM7UUFDbkIsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUlkLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUd0QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXVCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZSxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9B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QUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFbmdpbmUgfSBmcm9tICcuLi9zY2hlZHVsZXItZW5naW5lJztcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJQbHVnaW4gfSBmcm9tICcuL3BsdWdpbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUGx1Z2luT3B0aW9ucyB7XG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICBvblNlbGVjdD86IChldmVudHM6IFNjaGVkdWxlckV2ZW50W10pID0+IHZvaWQ7XG4gIG9uRGVzZWxlY3Q/OiAoZXZlbnRzOiBTY2hlZHVsZXJFdmVudFtdKSA9PiB2b2lkO1xuICBvblJhbmdlU2VsZWN0PzogKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25QbHVnaW4gaW1wbGVtZW50cyBTY2hlZHVsZXJQbHVnaW4ge1xuICByZWFkb25seSBuYW1lID0gJ3NlbGVjdGlvbic7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gNTtcblxuICBwcml2YXRlIF9lbmdpbmUhOiBTY2hlZHVsZXJFbmdpbmU7XG4gIHByaXZhdGUgX29wdGlvbnM6IFNlbGVjdGlvblBsdWdpbk9wdGlvbnM7XG4gIHByaXZhdGUgX3JhbmdlU2VsZWN0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX3JhbmdlU3RhcnQ6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTZWxlY3Rpb25QbHVnaW5PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIG9uSW5pdChlbmdpbmU6IFNjaGVkdWxlckVuZ2luZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZ2luZSA9IGVuZ2luZTtcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5tdWx0aVNlbGVjdCkge1xuICAgICAgdGhpcy5fZW5naW5lLnNlbGVjdGlvbi51cGRhdGUoKHMpID0+ICh7IC4uLnMsIG11bHRpU2VsZWN0OiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmFuZ2VTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yYW5nZVN0YXJ0ID0gbnVsbDtcbiAgfVxuXG4gIHRvZ2dsZUV2ZW50KGV2ZW50SWQ6IHN0cmluZywgbW9kaWZpZXJLZXkgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IG11bHRpID0gdGhpcy5fb3B0aW9ucy5tdWx0aVNlbGVjdCAmJiBtb2RpZmllcktleTtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0RXZlbnQoZXZlbnRJZCwgbXVsdGkpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRFdmVudElkcztcbiAgICBjb25zdCBzZWxlY3RlZEV2ZW50cyA9IHRoaXMuX2VuZ2luZS5ldmVudHMoKS5maWx0ZXIoKGUpID0+IHNlbGVjdGVkSWRzLmhhcyhlLmlkKSk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJZHMuaGFzKGV2ZW50SWQpKSB7XG4gICAgICB0aGlzLl9vcHRpb25zLm9uU2VsZWN0Py4oc2VsZWN0ZWRFdmVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vcHRpb25zLm9uRGVzZWxlY3Q/LihzZWxlY3RlZEV2ZW50cyk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T25seShldmVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmdpbmUuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0RXZlbnQoZXZlbnRJZCk7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9lbmdpbmUuZXZlbnRzKCkuZmluZCgoZSkgPT4gZS5pZCA9PT0gZXZlbnRJZCk7XG4gICAgaWYgKGV2ZW50KSB0aGlzLl9vcHRpb25zLm9uU2VsZWN0Py4oW2V2ZW50XSk7XG4gIH1cblxuICBzZWxlY3RSYW5nZShzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lLnNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIHRoaXMuX29wdGlvbnMub25SYW5nZVNlbGVjdD8uKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgc3RhcnRSYW5nZVNlbGVjdChkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fcmFuZ2VTZWxlY3RpbmcgPSB0cnVlO1xuICAgIHRoaXMuX3JhbmdlU3RhcnQgPSBkYXRlO1xuICB9XG5cbiAgdXBkYXRlUmFuZ2VTZWxlY3QoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcmFuZ2VTZWxlY3RpbmcgfHwgIXRoaXMuX3JhbmdlU3RhcnQpIHJldHVybjtcbiAgICBjb25zdCBzID0gdGhpcy5fcmFuZ2VTdGFydCA8IGRhdGUgPyB0aGlzLl9yYW5nZVN0YXJ0IDogZGF0ZTtcbiAgICBjb25zdCBlID0gdGhpcy5fcmFuZ2VTdGFydCA8IGRhdGUgPyBkYXRlIDogdGhpcy5fcmFuZ2VTdGFydDtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0UmFuZ2UocywgZSk7XG4gIH1cblxuICBlbmRSYW5nZVNlbGVjdCgpOiBEYXRlUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3JhbmdlU2VsZWN0aW5nIHx8ICF0aGlzLl9yYW5nZVN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJhbmdlO1xuICAgIHRoaXMuX3JhbmdlU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmFuZ2VTdGFydCA9IG51bGw7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9XG5cbiAgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFsbCA9IHRoaXMuX2VuZ2luZS5ldmVudHMoKTtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uLnVwZGF0ZSgocykgPT4gKHtcbiAgICAgIC4uLnMsXG4gICAgICBzZWxlY3RlZEV2ZW50SWRzOiBuZXcgU2V0KGFsbC5tYXAoKGUpID0+IGUuaWQpKSxcbiAgICB9KSk7XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmdpbmUuY2xlYXJTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZElkcygpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKS5zZWxlY3RlZEV2ZW50SWRzO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpLnNlbGVjdGVkRXZlbnRJZHMuc2l6ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKS5zZWxlY3RlZEV2ZW50SWRzLnNpemUgPiAwO1xuICB9XG5cbiAgZ2V0IGlzUmFuZ2VTZWxlY3RpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlU2VsZWN0aW5nO1xuICB9XG59XG5cbmludGVyZmFjZSBEYXRlUmFuZ2Uge1xuICBzdGFydDogRGF0ZTtcbiAgZW5kOiBEYXRlO1xuICByZXNvdXJjZUlkPzogc3RyaW5nO1xufVxuIl19