ember-sortable 5.1.2 → 5.2.1

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 (64) hide show
  1. package/{addon-main.js → addon-main.cjs} +2 -0
  2. package/declarations/modifiers/sortable-group.d.ts +326 -0
  3. package/declarations/modifiers/sortable-group.d.ts.map +1 -0
  4. package/declarations/modifiers/sortable-handle.d.ts +24 -0
  5. package/declarations/modifiers/sortable-handle.d.ts.map +1 -0
  6. package/declarations/modifiers/sortable-item.d.ts +346 -0
  7. package/declarations/modifiers/sortable-item.d.ts.map +1 -0
  8. package/declarations/services/ember-sortable-internal-state.d.ts +58 -0
  9. package/declarations/services/ember-sortable-internal-state.d.ts.map +1 -0
  10. package/declarations/system/scroll-container.d.ts +18 -0
  11. package/declarations/system/scroll-container.d.ts.map +1 -0
  12. package/declarations/system/scroll-parent.d.ts +2 -0
  13. package/declarations/system/scroll-parent.d.ts.map +1 -0
  14. package/declarations/template-registry.d.ts +9 -0
  15. package/declarations/template-registry.d.ts.map +1 -0
  16. package/declarations/test-support/helpers/drag.d.ts +37 -0
  17. package/declarations/test-support/helpers/drag.d.ts.map +1 -0
  18. package/declarations/test-support/helpers/reorder.d.ts +25 -0
  19. package/declarations/test-support/helpers/reorder.d.ts.map +1 -0
  20. package/declarations/test-support/index.d.ts +5 -0
  21. package/declarations/test-support/index.d.ts.map +1 -0
  22. package/declarations/test-support/utils/keyboard.d.ts +17 -0
  23. package/declarations/test-support/utils/keyboard.d.ts.map +1 -0
  24. package/declarations/test-support/utils/offset.d.ts +11 -0
  25. package/declarations/test-support/utils/offset.d.ts.map +1 -0
  26. package/declarations/utils/constant.d.ts +11 -0
  27. package/declarations/utils/constant.d.ts.map +1 -0
  28. package/declarations/utils/coordinate.d.ts +17 -0
  29. package/declarations/utils/coordinate.d.ts.map +1 -0
  30. package/declarations/utils/css-calculation.d.ts +13 -0
  31. package/declarations/utils/css-calculation.d.ts.map +1 -0
  32. package/declarations/utils/defaults.d.ts +23 -0
  33. package/declarations/utils/defaults.d.ts.map +1 -0
  34. package/declarations/utils/keyboard.d.ts +17 -0
  35. package/declarations/utils/keyboard.d.ts.map +1 -0
  36. package/dist/{_rollupPluginBabelHelpers-543b1c36.js → _rollupPluginBabelHelpers-a7bede49.js} +2 -2
  37. package/dist/_rollupPluginBabelHelpers-a7bede49.js.map +1 -0
  38. package/dist/modifiers/sortable-group.js +63 -30
  39. package/dist/modifiers/sortable-group.js.map +1 -1
  40. package/dist/modifiers/sortable-handle.js +4 -4
  41. package/dist/modifiers/sortable-handle.js.map +1 -1
  42. package/dist/modifiers/sortable-item.js +187 -80
  43. package/dist/modifiers/sortable-item.js.map +1 -1
  44. package/dist/services/ember-sortable-internal-state.js +11 -5
  45. package/dist/services/ember-sortable-internal-state.js.map +1 -1
  46. package/dist/test-support/helpers/drag.js +4 -1
  47. package/dist/test-support/helpers/drag.js.map +1 -1
  48. package/dist/test-support/helpers/reorder.js +12 -2
  49. package/dist/test-support/helpers/reorder.js.map +1 -1
  50. package/dist/test-support/utils/keyboard.js.map +1 -1
  51. package/dist/test-support/utils/offset.js.map +1 -1
  52. package/dist/utils/constant.js.map +1 -1
  53. package/dist/utils/coordinate.js +4 -4
  54. package/dist/utils/coordinate.js.map +1 -1
  55. package/dist/utils/css-calculation.js +4 -4
  56. package/dist/utils/css-calculation.js.map +1 -1
  57. package/dist/utils/defaults.js.map +1 -1
  58. package/dist/utils/keyboard.js.map +1 -1
  59. package/package.json +103 -29
  60. package/dist/_rollupPluginBabelHelpers-543b1c36.js.map +0 -1
  61. package/dist/system/scroll-container.js +0 -54
  62. package/dist/system/scroll-container.js.map +0 -1
  63. package/dist/system/scroll-parent.js +0 -35
  64. package/dist/system/scroll-parent.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ export declare const ENTER_KEY_CODE = 13;
2
+ export declare const ESCAPE_KEY_CODE = 27;
3
+ export declare const SPACE_KEY_CODE = 32;
4
+ export declare const ARROW_KEY_CODES: {
5
+ LEFT: number;
6
+ UP: number;
7
+ RIGHT: number;
8
+ DOWN: number;
9
+ };
10
+ export declare const isEnterKey: (event: KeyboardEvent) => boolean;
11
+ export declare const isEscapeKey: (event: KeyboardEvent) => boolean;
12
+ export declare const isSpaceKey: (event: KeyboardEvent) => boolean;
13
+ export declare const isLeftArrowKey: (event: KeyboardEvent) => boolean;
14
+ export declare const isUpArrowKey: (event: KeyboardEvent) => boolean;
15
+ export declare const isRightArrowKey: (event: KeyboardEvent) => boolean;
16
+ export declare const isDownArrowKey: (event: KeyboardEvent) => boolean;
17
+ //# sourceMappingURL=keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/utils/keyboard.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAQF,eAAO,MAAM,UAAU,UANuC,aAAa,KAAK,OAMd,CAAC;AACnE,eAAO,MAAM,WAAW,UAPsC,aAAa,KAAK,OAOX,CAAC;AACtE,eAAO,MAAM,UAAU,UARuC,aAAa,KAAK,OAQd,CAAC;AACnE,eAAO,MAAM,cAAc,UATmC,aAAa,KAAK,OASE,CAAC;AACnF,eAAO,MAAM,YAAY,UAVqC,aAAa,KAAK,OAUJ,CAAC;AAC7E,eAAO,MAAM,eAAe,UAXkC,aAAa,KAAK,OAWK,CAAC;AACtF,eAAO,MAAM,cAAc,UAZmC,aAAa,KAAK,OAYE,CAAC"}
@@ -4,7 +4,7 @@ function _applyDecoratedDescriptor(i, e, r, n, l) {
4
4
  a[i] = n[i];
5
5
  }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) {
6
6
  return n(i, e, r) || r;
7
- }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer && (Object.defineProperty(i, e, a), a = null), a;
7
+ }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a;
8
8
  }
9
9
  function _defineProperty(e, r, t) {
10
10
  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
@@ -38,4 +38,4 @@ function _toPropertyKey(t) {
38
38
  }
39
39
 
40
40
  export { _applyDecoratedDescriptor as _, _defineProperty as a, _initializerDefineProperty as b };
41
- //# sourceMappingURL=_rollupPluginBabelHelpers-543b1c36.js.map
41
+ //# sourceMappingURL=_rollupPluginBabelHelpers-a7bede49.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_rollupPluginBabelHelpers-a7bede49.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-543b1c36.js';
1
+ import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-a7bede49.js';
2
2
  import Modifier from 'ember-modifier';
3
3
  import { computed, action, set } from '@ember/object';
4
4
  import { isEnterKey, isSpaceKey, isDownArrowKey, isUpArrowKey, isLeftArrowKey, isRightArrowKey, isEscapeKey } from '../utils/keyboard.js';
@@ -10,7 +10,6 @@ import { isDestroyed, registerDestructor } from '@ember/destroyable';
10
10
 
11
11
  var _dec, _dec2, _class, _descriptor;
12
12
  const NO_MODEL = {};
13
-
14
13
  /**
15
14
  * Modifier to apply a11y support to a group container for the Sortable component
16
15
  *
@@ -31,7 +30,7 @@ const NO_MODEL = {};
31
30
  * {{/each}}
32
31
  * </ol>
33
32
  */
34
- let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _dec2 = computed('direction', 'sortedItems'), (_class = class SortableGroupModifier extends Modifier {
33
+ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _dec2 = computed('direction', 'sortedItems'), _class = class SortableGroupModifier extends Modifier {
35
34
  /** End of keyboard utils */
36
35
 
37
36
  get disabled() {
@@ -106,14 +105,17 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
106
105
 
107
106
  // Note: If handle is specified, we need to target the keyDown on the handle
108
107
  const isKeyboardReorderModeEnabled = this.isKeyboardReorderModeEnabled;
109
- const _selectedItem = this._selectedItem;
110
108
  if (!isKeyboardReorderModeEnabled && (isEnterKey(event) || isSpaceKey(event))) {
109
+ const _selectedItem = this._selectedItem;
110
+ if (!_selectedItem) {
111
+ return;
112
+ }
111
113
  this._prepareKeyboardReorderMode();
112
114
  this._announceAction(ANNOUNCEMENT_ACTION_TYPES.ACTIVATE);
113
115
  this._updateItemVisualIndicators(_selectedItem, true);
114
116
  this._updateHandleVisualIndicators(_selectedItem, true);
115
117
  this.isRetainingFocus = true;
116
- scheduleOnce('render', () => {
118
+ scheduleOnce('render', this, () => {
117
119
  this.element.focus();
118
120
  this.isRetainingFocus = false;
119
121
  });
@@ -134,7 +136,7 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
134
136
  * @param {Element} element a DOM element.
135
137
  */
136
138
  _isElementWithinHandle(element) {
137
- return element.closest(`[data-sortable-handle]`);
139
+ return !!element?.closest(`[data-sortable-handle]`);
138
140
  }
139
141
 
140
142
  /**
@@ -148,6 +150,9 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
148
150
  const sortedItems = this.sortedItems;
149
151
  const item = sortedItems[fromIndex];
150
152
  const nextItem = sortedItems[toIndex];
153
+ if (!nextItem || !item) {
154
+ return;
155
+ }
151
156
 
152
157
  // switch direction values to notify sortedItems to update, so it sorts by direction.
153
158
  let value;
@@ -195,6 +200,9 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
195
200
  _handleKeyboardReorder(event) {
196
201
  const direction = this.direction;
197
202
  const selectedItem = this._selectedItem;
203
+ if (!selectedItem) {
204
+ return;
205
+ }
198
206
  if (direction === 'y' && isDownArrowKey(event)) {
199
207
  this.moveItem(selectedItem, 1);
200
208
  } else if (direction === 'y' && isUpArrowKey(event)) {
@@ -209,19 +217,22 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
209
217
  this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CONFIRM);
210
218
  this.confirmKeyboardSelection();
211
219
  this.isRetainingFocus = true;
212
- scheduleOnce('render', () => this._focusItem(itemElement));
220
+ scheduleOnce('render', this, () => this._focusItem(itemElement));
213
221
  } else if (isEscapeKey(event)) {
214
222
  // cancel will reset the selectedItem, so caching it here before we remove it.
215
223
  const _selectedItemElement = selectedItem.element;
216
224
  this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CANCEL);
217
225
  this.cancelKeyboardSelection();
218
226
  this.isRetainingFocus = true;
219
- scheduleOnce('render', () => {
227
+ scheduleOnce('render', this, () => {
220
228
  const moves = this.moves;
221
- if (moves && moves.length > 0) {
229
+ if (moves && moves[0]) {
222
230
  const sortedItems = this.sortedItems;
223
- const itemElement = sortedItems[moves[0].fromIndex].element;
224
- this._focusItem(itemElement);
231
+ const fromIndex = moves[0][1];
232
+ const itemElement = sortedItems[fromIndex]?.element;
233
+ if (itemElement) {
234
+ this._focusItem(itemElement);
235
+ }
225
236
  } else {
226
237
  this._focusItem(_selectedItemElement);
227
238
  }
@@ -248,7 +259,7 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
248
259
  }
249
260
  this._announceAction(ANNOUNCEMENT_ACTION_TYPES.MOVE, delta);
250
261
  // Guarantees that the before the UI is fully rendered before we move again.
251
- scheduleOnce('render', () => {
262
+ scheduleOnce('render', this, () => {
252
263
  this._move(sortedIndex, newSortedIndex);
253
264
  this._updateHandleVisualIndicators(item, true);
254
265
  moves.push([sortedIndex, newSortedIndex]);
@@ -264,12 +275,17 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
264
275
  */
265
276
  cancelKeyboardSelection() {
266
277
  const _selectedItem = this._selectedItem;
278
+ if (!_selectedItem) {
279
+ return;
280
+ }
267
281
  this._disableKeyboardReorderMode();
268
282
  // Revert the process by reversing the move.
269
283
  const moves = this.moves;
270
284
  while (moves.length > 0) {
271
285
  const move = moves.pop();
272
- this._move(move[1], move[0]);
286
+ const fromIndex = move ? move[1] : 0;
287
+ const toIndex = move ? move[0] : 0;
288
+ this._move(fromIndex, toIndex);
273
289
  }
274
290
  this._tearDownA11yApplicationContainer();
275
291
  this._updateItemVisualIndicators(_selectedItem, false);
@@ -287,6 +303,9 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
287
303
  */
288
304
  confirmKeyboardSelection() {
289
305
  const _selectedItem = this._selectedItem;
306
+ if (!_selectedItem) {
307
+ return;
308
+ }
290
309
  this.moves = [];
291
310
  this._disableKeyboardReorderMode();
292
311
  this._tearDownA11yApplicationContainer();
@@ -303,7 +322,7 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
303
322
  * @param {String} type the action type.
304
323
  * @param {Number} delta how much distance (item-wise) is being moved.
305
324
  */
306
- _announceAction(type, delta = null) {
325
+ _announceAction(type, delta = 0) {
307
326
  const a11yAnnouncementConfig = this.a11yAnnouncementConfig;
308
327
  const a11yItemName = this.a11yItemName;
309
328
  if (!a11yItemName || !(type in a11yAnnouncementConfig)) {
@@ -311,8 +330,14 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
311
330
  }
312
331
  const sortedItems = this.sortedItems;
313
332
  const _selectedItem = this._selectedItem;
333
+ if (!_selectedItem) {
334
+ return;
335
+ }
314
336
  const index = sortedItems.indexOf(_selectedItem);
315
337
  const announcer = this.announcer;
338
+ if (!announcer) {
339
+ return;
340
+ }
316
341
  const config = {
317
342
  a11yItemName,
318
343
  index: index,
@@ -372,16 +397,16 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
372
397
  const visualHandle = handle ? handle : item.element;
373
398
  const visualKeys = direction === 'y' ? ['UP', 'DOWN'] : ['LEFT', 'RIGHT'];
374
399
  visualKeys.forEach(visualKey => {
375
- visualHandle.classList.remove(handleVisualClass[visualKey]);
400
+ visualHandle.classList.remove(handleVisualClass[visualKey] ?? '');
376
401
  });
377
402
  if (!isUpdate) {
378
403
  return;
379
404
  }
380
- if (index > 0) {
381
- visualHandle.classList.add(handleVisualClass[visualKeys[0]]);
405
+ if (index > 0 && visualKeys[0]) {
406
+ visualHandle.classList.add(handleVisualClass[visualKeys[0]] ?? '');
382
407
  }
383
- if (index < sortedItems.length - 1) {
384
- visualHandle.classList.add(handleVisualClass[visualKeys[1]]);
408
+ if (index < sortedItems.length - 1 && visualKeys[1]) {
409
+ visualHandle.classList.add(handleVisualClass[visualKeys[1]] ?? '');
385
410
  }
386
411
  }
387
412
 
@@ -495,6 +520,12 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
495
520
  get firstItemPosition() {
496
521
  const sortedItems = this.sortedItems;
497
522
  const item = sortedItems[0];
523
+ if (!item) {
524
+ return {
525
+ x: 0,
526
+ y: 0
527
+ };
528
+ }
498
529
  return {
499
530
  x: item.x - item.spacing,
500
531
  y: item.y - item.spacing
@@ -512,7 +543,7 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
512
543
  const groupWidth = parseFloat(groupStyles.width);
513
544
  return this.items.sort((a, b) => {
514
545
  if (direction === 'grid') {
515
- let {
546
+ const {
516
547
  ax,
517
548
  ay,
518
549
  bx,
@@ -590,7 +621,7 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
590
621
  if (axis === undefined) {
591
622
  axis = this.firstItemPosition;
592
623
  }
593
- let direction = this.direction;
624
+ const direction = this.direction;
594
625
  let position = 0;
595
626
  let groupPositionRight = 0;
596
627
  let lastTopOffset = 0;
@@ -622,20 +653,18 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
622
653
  if (item.isBusy) {
623
654
  position += item.spacing * 2;
624
655
  }
625
- let dimension;
626
656
  if (direction === 'grid') {
627
- dimension = 'width';
628
657
  if (item.height > maxPrevHeight) {
629
658
  maxPrevHeight = item.height;
630
659
  }
660
+ position += item.width;
631
661
  }
632
662
  if (direction === 'x') {
633
- dimension = 'width';
663
+ position += item.height;
634
664
  }
635
665
  if (direction === 'y') {
636
- dimension = 'height';
666
+ position += item.height;
637
667
  }
638
- position += item[dimension];
639
668
  });
640
669
  }
641
670
 
@@ -773,6 +802,9 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
773
802
  /** Primary keyboard utils */
774
803
  // Tracks the currently selected item
775
804
  _defineProperty(this, "_selectedItem", null);
805
+ _defineProperty(this, "_group", null);
806
+ _defineProperty(this, "_firstItemPosition", void 0);
807
+ _defineProperty(this, "_groupDef", void 0);
776
808
  // Tracks the current move
777
809
  _defineProperty(this, "move", null);
778
810
  _defineProperty(this, "moves", []);
@@ -785,6 +817,7 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
785
817
  _defineProperty(this, "announcer", null);
786
818
  _defineProperty(this, "element", void 0);
787
819
  _defineProperty(this, "didSetup", false);
820
+ _defineProperty(this, "named", void 0);
788
821
  registerDestructor(this, cleanup);
789
822
  }
790
823
  modify(element, _positional, named) {
@@ -803,23 +836,23 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
803
836
  }
804
837
  this.addEventListener();
805
838
  }
806
- }, (_applyDecoratedDescriptor(_class.prototype, "focusOut", [action], Object.getOwnPropertyDescriptor(_class.prototype, "focusOut"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "keyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "keyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "cancelKeyboardSelection", [action], Object.getOwnPropertyDescriptor(_class.prototype, "cancelKeyboardSelection"), _class.prototype), _descriptor = _applyDecoratedDescriptor(_class.prototype, "sortableService", [_dec], {
839
+ }, _applyDecoratedDescriptor(_class.prototype, "focusOut", [action], Object.getOwnPropertyDescriptor(_class.prototype, "focusOut"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "keyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "keyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "cancelKeyboardSelection", [action], Object.getOwnPropertyDescriptor(_class.prototype, "cancelKeyboardSelection"), _class.prototype), _descriptor = _applyDecoratedDescriptor(_class.prototype, "sortableService", [_dec], {
807
840
  configurable: true,
808
841
  enumerable: true,
809
842
  writable: true,
810
843
  initializer: null
811
- }), _applyDecoratedDescriptor(_class.prototype, "firstItemPosition", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "firstItemPosition"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "activateKeyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "activateKeyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "deactivateKeyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "deactivateKeyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "registerGroup", [action], Object.getOwnPropertyDescriptor(_class.prototype, "registerGroup"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "deregisterGroup", [action], Object.getOwnPropertyDescriptor(_class.prototype, "deregisterGroup"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "prepare", [action], Object.getOwnPropertyDescriptor(_class.prototype, "prepare"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "update", [action], Object.getOwnPropertyDescriptor(_class.prototype, "update"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "commit", [action], Object.getOwnPropertyDescriptor(_class.prototype, "commit"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_onChange", [action], Object.getOwnPropertyDescriptor(_class.prototype, "_onChange"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_createAnnouncer", [action], Object.getOwnPropertyDescriptor(_class.prototype, "_createAnnouncer"), _class.prototype)), _class));
844
+ }), _applyDecoratedDescriptor(_class.prototype, "firstItemPosition", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "firstItemPosition"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "activateKeyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "activateKeyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "deactivateKeyDown", [action], Object.getOwnPropertyDescriptor(_class.prototype, "deactivateKeyDown"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "registerGroup", [action], Object.getOwnPropertyDescriptor(_class.prototype, "registerGroup"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "deregisterGroup", [action], Object.getOwnPropertyDescriptor(_class.prototype, "deregisterGroup"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "prepare", [action], Object.getOwnPropertyDescriptor(_class.prototype, "prepare"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "update", [action], Object.getOwnPropertyDescriptor(_class.prototype, "update"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "commit", [action], Object.getOwnPropertyDescriptor(_class.prototype, "commit"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_onChange", [action], Object.getOwnPropertyDescriptor(_class.prototype, "_onChange"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_createAnnouncer", [action], Object.getOwnPropertyDescriptor(_class.prototype, "_createAnnouncer"), _class.prototype), _class);
812
845
  /**
813
846
  *
814
847
  * @param {SortableGroupModifier} instance
815
848
  */
816
849
  function cleanup(instance) {
817
850
  // todo cleanup the announcer
818
- if (instance.announcer.parentNode) {
851
+ if (instance.announcer?.parentNode) {
819
852
  instance.announcer.parentNode.removeChild(instance.announcer);
820
853
  }
821
854
  instance.removeEventListener();
822
- instance.sortableService.deregisterGroup(instance.groupName, instance);
855
+ instance.sortableService.deregisterGroup(instance.groupName);
823
856
  }
824
857
 
825
858
  export { SortableGroupModifier as default };
@@ -1 +1 @@
1
- {"version":3,"file":"sortable-group.js","sources":["../../src/modifiers/sortable-group.js"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\n/* eslint-disable ember/no-incorrect-calls-with-inline-anonymous-functions */\nimport Modifier from 'ember-modifier';\nimport { action, computed, set } from '@ember/object';\nimport {\n isDownArrowKey,\n isEnterKey,\n isEscapeKey,\n isLeftArrowKey,\n isRightArrowKey,\n isSpaceKey,\n isUpArrowKey,\n} from '../utils/keyboard';\nimport { ANNOUNCEMENT_ACTION_TYPES } from '../utils/constant';\nimport { defaultA11yAnnouncementConfig } from '../utils/defaults';\nimport { next, schedule, scheduleOnce, later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport { registerDestructor, isDestroyed } from '@ember/destroyable';\n\nconst NO_MODEL = {};\n\n/**\n * Modifier to apply a11y support to a group container for the Sortable component\n *\n * @param {String} [a11yItemName] A name for each model, used for creating more meaningful a11y announcements.\n * @param {Object} [a11yAnnouncementConfig] A map of action to function to build meaningful a11y announcements.\n * @param {String} [itemVisualClass] A class for styling visual indicators on the yielded `sortable-item`.\n * @param {Object} [handleVisualClass] An object for styling visual indicators on the yielded `sortable-handle` on different `move`.\n * @param {Function} [onChange] An optional callback for when position rearrangements are confirmed.\n *\n * @module drag-drop/draggable-group\n * @example\n * <ol {{sortable-group onChange=this.update a11yAnnouncementConfig=this.myA11yConfig}}>\n * {{#each model.items as |item|}}\n * <li {{sortable-item model=item}}>\n * {{item.name}}\n * <span class=\"handle\" {{sortable-handle}}>&varr;</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableGroupModifier extends Modifier {\n /** Primary keyboard utils */\n // Tracks the currently selected item\n _selectedItem = null;\n // Tracks the current move\n move = null;\n moves = [];\n\n // Tracks the status of keyboard reorder mode\n isKeyboardReorderModeEnabled = false;\n\n isKeyDownEnabled = false;\n\n // Tracks if we're still performing a programmatic focus.\n isRetainingFocus = false;\n /** End of keyboard utils */\n\n get disabled() {\n return this.named.disabled || false;\n }\n\n /** Start of a11y properties */\n /**\n * @property an object containing different classes for visual indicators\n * @type {Object}\n * @default null\n * @example\n * {\n * UP: 'up'\n * DOWN: 'down',\n * LEFT: 'left',\n * RIGHT: 'right',\n * }\n */\n get handleVisualClass() {\n return this.named.handleVisualClass || NO_MODEL;\n }\n\n /**\n * @property an object containing functions for producing screen reader announcements\n * @type {Object}\n * @example\n * {\n * MOVE: function() {},\n * ACTIVATE: function() {},\n * CONFIRM: function() {},\n * CANCEL: function() {},\n * }\n */\n get a11yAnnouncementConfig() {\n return this.named.a11yAnnouncementConfig || defaultA11yAnnouncementConfig;\n }\n\n get itemVisualClass() {\n return this.named.itemVisualClass || 'is-activated';\n }\n\n get a11yItemName() {\n return this.named.a11yItemName || 'item';\n }\n /** End of a11y properties */\n\n /**\n * Make sure that we cancel any ongoing keyboard operation when the focus is lost from the handle.\n * Because this can be fired pre-maturely, effectively cancelling before other keyboard operations,\n * we need to wait until other operations are completed, so this will cancel properly.\n *\n * @param {Event} event a DOM event.\n */\n @action\n focusOut() {\n if (!this.isRetainingFocus && !this._isElementWithinHandle(document.activeElement)) {\n this.cancelKeyboardSelection();\n }\n }\n\n /**\n * Explanation\n * 1. `KeyboardReorderMode` is disabled: users can activate it via ENTER or SPACE.\n * 2. `KeyboardReorderMode` is enabled: users can reorder via UP or DOWN arrow keys. TODO: Expand to more keys, e.g LEFT, RIGHT\n * 3. `KeyboardReorderMode` is enabled: users can finalize/save the reordering via ENTER or SPACE.\n * 4. `KeyboardReorderMode` is enabled: users can discard the reordering via ESC.\n *\n * @param {Event} event a DOM event\n */\n @action\n keyDown(event) {\n if (!this.isKeyDownEnabled) {\n return;\n }\n\n // Note: If handle is specified, we need to target the keyDown on the handle\n const isKeyboardReorderModeEnabled = this.isKeyboardReorderModeEnabled;\n const _selectedItem = this._selectedItem;\n\n if (!isKeyboardReorderModeEnabled && (isEnterKey(event) || isSpaceKey(event))) {\n this._prepareKeyboardReorderMode();\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.ACTIVATE);\n this._updateItemVisualIndicators(_selectedItem, true);\n this._updateHandleVisualIndicators(_selectedItem, true);\n\n this.isRetainingFocus = true;\n\n scheduleOnce('render', () => {\n this.element.focus();\n this.isRetainingFocus = false;\n });\n\n // Prevent the default scroll\n event.preventDefault();\n return;\n }\n\n if (isKeyboardReorderModeEnabled) {\n this._handleKeyboardReorder(event);\n event.preventDefault();\n }\n }\n\n /**\n * Checks if the given element is a child of a handle.\n *\n * @param {Element} element a DOM element.\n */\n _isElementWithinHandle(element) {\n return element.closest(`[data-sortable-handle]`);\n }\n\n /**\n * Moves an sortedItem from one index to another index, effectively performing an reorder.\n *\n * @param {Integer} fromIndex the original index\n * @param {Integer} toIndex the new index\n */\n _move(fromIndex, toIndex) {\n const direction = this.direction;\n const sortedItems = this.sortedItems;\n const item = sortedItems[fromIndex];\n const nextItem = sortedItems[toIndex];\n\n // switch direction values to notify sortedItems to update, so it sorts by direction.\n let value;\n const dimension = direction === 'y' ? 'height' : 'width';\n // DOWN or RIGHT\n if (toIndex > fromIndex) {\n if (direction === 'grid') {\n const valueX = item.x;\n const valueY = item.y;\n item.x = nextItem.x + (nextItem.width - item.width);\n item.y = nextItem.y + (nextItem.height - item.height);\n nextItem.x = valueX;\n nextItem.y = valueY;\n } else {\n value = item[direction];\n set(item, direction, nextItem[direction] + (nextItem[dimension] - item[dimension]));\n set(nextItem, direction, value);\n }\n // UP or LEFT\n } else {\n if (direction === 'grid') {\n const valueX = nextItem.x;\n const valueY = nextItem.y;\n nextItem.x = item.x + (item.width - nextItem.width);\n nextItem.y = item.y + (item.height - nextItem.height);\n item.x = valueX;\n item.y = valueY;\n } else {\n value = nextItem[direction];\n set(nextItem, direction, item[direction] + (item[dimension] - nextItem[dimension]));\n set(item, direction, value);\n }\n }\n }\n\n /**\n * Handles all of the keyboard operations, such as\n * 1. Keyboard navigation for UP, DOWN, LEFT, RIGHT\n * 2. Confirming reorder\n * 3. Discard reorder\n * 4. Also handles refocusing the element that triggered the interaction.\n *\n * @param {Event} event a DOM event.\n */\n _handleKeyboardReorder(event) {\n const direction = this.direction;\n const selectedItem = this._selectedItem;\n\n if (direction === 'y' && isDownArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (direction === 'y' && isUpArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if ((direction === 'x' || direction === 'grid') && isLeftArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if ((direction === 'x' || direction === 'grid') && isRightArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (isEnterKey(event) || isSpaceKey(event)) {\n // confirm will reset the selectedItem, so caching it here before we remove it.\n const itemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CONFIRM);\n this.confirmKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', () => this._focusItem(itemElement));\n } else if (isEscapeKey(event)) {\n // cancel will reset the selectedItem, so caching it here before we remove it.\n const _selectedItemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CANCEL);\n this.cancelKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', () => {\n const moves = this.moves;\n if (moves && moves.length > 0) {\n const sortedItems = this.sortedItems;\n const itemElement = sortedItems[moves[0].fromIndex].element;\n this._focusItem(itemElement);\n } else {\n this._focusItem(_selectedItemElement);\n }\n this.isRetainingFocus = false;\n });\n }\n }\n\n /**\n * Moves the item to its new position and adds the move to our history.\n *\n * @param {SortableItemModifier} item the item to be moved.\n * @param {Integer} delta how much to move index-wise.\n */\n moveItem(item, delta) {\n const sortedItems = this.sortedItems;\n const moves = this.moves;\n\n const sortedIndex = sortedItems.indexOf(item);\n const newSortedIndex = sortedIndex + delta;\n\n // If out of bounds, we don't do anything.\n if (newSortedIndex < 0 || newSortedIndex >= sortedItems.length) {\n return;\n }\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.MOVE, delta);\n // Guarantees that the before the UI is fully rendered before we move again.\n scheduleOnce('render', () => {\n this._move(sortedIndex, newSortedIndex);\n this._updateHandleVisualIndicators(item, true);\n\n moves.push([sortedIndex, newSortedIndex]);\n });\n }\n\n /**\n * Handles all the necessary operations needed for cancelling the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Undo all of the tracked moves.\n * 3. Tears down the application container, so we are not focus locked within the application.\n * 4. Resets the current selected item.\n */\n @action\n cancelKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n this._disableKeyboardReorderMode();\n // Revert the process by reversing the move.\n const moves = this.moves;\n while (moves.length > 0) {\n const move = moves.pop();\n this._move(move[1], move[0]);\n }\n this._tearDownA11yApplicationContainer();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Handles all th necessary operations needed for confirming the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Tears down the application container, so we are not focus locked within the container.\n * 3. Make sure to update and sync all the internal items and UI.\n * 4. Triggers the `onChange` action if provided.\n * 5. Resets the currently selected item.\n */\n confirmKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n this.moves = [];\n this._disableKeyboardReorderMode();\n this._tearDownA11yApplicationContainer();\n set(_selectedItem, 'wasDropped', true);\n this.commit();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Announces the message constructed from `a11yAnnouncementConfig`.\n *\n * @param {String} type the action type.\n * @param {Number} delta how much distance (item-wise) is being moved.\n */\n _announceAction(type, delta = null) {\n const a11yAnnouncementConfig = this.a11yAnnouncementConfig;\n const a11yItemName = this.a11yItemName;\n\n if (!a11yItemName || !(type in a11yAnnouncementConfig)) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const _selectedItem = this._selectedItem;\n const index = sortedItems.indexOf(_selectedItem);\n const announcer = this.announcer;\n\n const config = {\n a11yItemName,\n index: index,\n maxLength: sortedItems.length,\n direction: this.direction,\n delta,\n };\n\n const message = a11yAnnouncementConfig[type](config);\n announcer.textContent = message;\n\n // Reset the message after the message is announced.\n later(() => {\n announcer.textContent = '';\n }, 1000);\n }\n\n /**\n * Reset the selected item.\n */\n _resetItemSelection() {\n this._selectedItem = null;\n }\n\n /**\n * Updates the selected item's visual indicators.\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {Boolean} isActive to activate or deactivate the class.\n */\n _updateItemVisualIndicators(item, isActive) {\n const itemVisualClass = this.itemVisualClass;\n\n if (!itemVisualClass || !item) {\n return;\n }\n\n if (isActive) {\n item.element.classList.add(itemVisualClass);\n } else {\n item.element.classList.remove(itemVisualClass);\n }\n }\n\n /**\n * Updates the selected item's handle's visual indicators\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {boolean} isUpdate to update or not update.\n */\n _updateHandleVisualIndicators(item, isUpdate) {\n const handleVisualClass = this.handleVisualClass;\n\n if (handleVisualClass === NO_MODEL || !item) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const direction = this.direction;\n const index = sortedItems.indexOf(item);\n const handle = item.element.querySelector('[data-sortable-handle');\n const visualHandle = handle ? handle : item.element;\n const visualKeys = direction === 'y' ? ['UP', 'DOWN'] : ['LEFT', 'RIGHT'];\n\n visualKeys.forEach((visualKey) => {\n visualHandle.classList.remove(handleVisualClass[visualKey]);\n });\n\n if (!isUpdate) {\n return;\n }\n\n if (index > 0) {\n visualHandle.classList.add(handleVisualClass[visualKeys[0]]);\n }\n\n if (index < sortedItems.length - 1) {\n visualHandle.classList.add(handleVisualClass[visualKeys[1]]);\n }\n }\n\n /**\n * Sets focus on the current item or its handle.\n *\n * @param {Element} itemElement an DOM element representing an sortable-item.\n */\n _focusItem(itemElement) {\n const handle = itemElement.querySelector('[data-sortable-handle]');\n if (handle) {\n handle.focus();\n } else {\n // The consumer did not use a handle, so we set focus back to the item.\n itemElement.focus();\n }\n }\n\n /**\n * Enables keyboard reorder mode.\n */\n _enableKeyboardReorderMode() {\n this.isKeyboardReorderModeEnabled = true;\n }\n\n /**\n * Disables keyboard reorder mode\n */\n _disableKeyboardReorderMode() {\n this.isKeyboardReorderModeEnabled = false;\n }\n\n /**\n * Sets up the group as an application and make it programmatically focusable.\n */\n _setupA11yApplicationContainer() {\n this.element.setAttribute('role', 'application');\n this.element.tabIndex = -1;\n }\n\n /**\n * Tears down the `role=application` container.\n */\n _tearDownA11yApplicationContainer() {\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabIndex');\n }\n\n _prepareKeyboardReorderMode() {\n this._enableKeyboardReorderMode();\n this._setupA11yApplicationContainer();\n }\n\n // Begin of API\n\n /**\n @property direction\n @type string\n @default y\n */\n get direction() {\n return this.named.direction || 'y';\n }\n\n /**\n Called when order of items has been changed\n @property onChange\n @type Function\n @param {Object} groupModel group model (omitted if not set)\n @param {Object[]} newModel models in their new order\n @param {Object} itemModel model just dragged\n @default null\n */\n get onChange() {\n return this.named.onChange;\n }\n\n @service('ember-sortable-internal-state')\n sortableService;\n\n /**\n * This is the group name used to keep groups separate if there are more than one on the screen at a time.\n * If no group is assigned a default is used\n *\n * @default \"_EmberSortableGroup\"\n * @returns {*|string}\n */\n get groupName() {\n return this.named.groupName || '_EmberSortableGroup';\n }\n\n /**\n This is an array of SortableItemModifiers\n\n @property items\n @type SortableItemModifier[]\n */\n get items() {\n return this._groupDef.items;\n }\n set(items) {\n this._groupDef.items = items;\n }\n\n /**\n * Announcer element\n *\n * @type {Element}\n */\n announcer = null;\n\n /**\n Position for the first item.\n If spacing is present, first item's position will have to change as well.\n @property firstItemPosition\n @type Number\n */\n @computed('direction', 'sortedItems')\n get firstItemPosition() {\n const sortedItems = this.sortedItems;\n\n const item = sortedItems[0];\n\n return {\n x: item.x - item.spacing,\n y: item.y - item.spacing,\n };\n }\n\n /**\n An array of DOM elements.\n @property sortedItems\n @type SortableItemModifier[]\n */\n get sortedItems() {\n const direction = this.direction;\n\n const groupStyles = getComputedStyle(this.element);\n const groupWidth = parseFloat(groupStyles.width);\n\n return this.items.sort((a, b) => {\n if (direction === 'grid') {\n let { ax, ay, bx, by } = this._calculateGridPosition(a, b, groupWidth);\n if (ay == by) return ax - bx;\n return ay - by;\n }\n return a[direction] - b[direction];\n });\n }\n\n /**\n * Enables keyboard navigation\n */\n @action\n activateKeyDown(selectedItem) {\n this._selectedItem = selectedItem;\n this.isKeyDownEnabled = true;\n }\n\n /**\n * Disables keyboard navigation\n * Currently used to handle keydown events bubbling up from\n * elements that aren't meant to invoke keyboard navigation\n * by ignoring them.\n */\n @action\n deactivateKeyDown() {\n this.isKeyDownEnabled = false;\n }\n\n /**\n Register the group with this Sortable.\n @method registerGroup\n @param {SortableGroupModifier} group\n */\n @action\n registerGroup(group) {\n this._group = group;\n }\n\n /**\n De-register the group with this Sortable.\n @method deregisterGroup\n @param {SortableGroupModifier} group\n */\n @action\n deregisterGroup(group) {\n if (this._group === group) {\n this._group = null;\n }\n }\n\n /**\n Prepare for sorting.\n Main purpose is to stash the current firstItemPosition so\n we don’t incur expensive re-layouts.\n @method _prepare\n */\n @action\n prepare() {\n this._firstItemPosition = this.firstItemPosition;\n }\n\n /**\n Update item positions (relatively to the first element position).\n @method update\n @param {SortableItemModifier[]} sortedItems\n */\n @action\n update(sortedItems) {\n if (!sortedItems) {\n sortedItems = this.sortedItems;\n }\n\n // Position of the first element\n let axis = this._firstItemPosition;\n\n // Just in case we haven’t called prepare first.\n if (axis === undefined) {\n axis = this.firstItemPosition;\n }\n\n let direction = this.direction;\n\n let position = 0;\n let groupPositionRight = 0;\n let lastTopOffset = 0;\n let maxPrevHeight = 0;\n\n if (direction === 'grid') {\n position = axis.x;\n lastTopOffset = axis.y;\n const groupStyles = getComputedStyle(this.element);\n groupPositionRight = position + parseFloat(groupStyles.width);\n } else {\n position = axis[direction];\n }\n\n sortedItems.forEach((item) => {\n if (direction === 'grid' && position + item.width > groupPositionRight) {\n lastTopOffset = lastTopOffset + maxPrevHeight;\n position = axis.x;\n maxPrevHeight = 0;\n }\n\n if (!isDestroyed(item) && !item.isDragging) {\n if (direction === 'grid') {\n item.x = position;\n item.y = lastTopOffset;\n } else {\n set(item, direction, position);\n }\n }\n\n // add additional spacing around active element\n if (item.isBusy) {\n position += item.spacing * 2;\n }\n\n let dimension;\n\n if (direction === 'grid') {\n dimension = 'width';\n\n if (item.height > maxPrevHeight) {\n maxPrevHeight = item.height;\n }\n }\n if (direction === 'x') {\n dimension = 'width';\n }\n if (direction === 'y') {\n dimension = 'height';\n }\n\n position += item[dimension];\n });\n }\n\n /**\n @method _commit\n */\n @action\n commit() {\n const items = this.sortedItems;\n const itemModels = items.map((item) => item.model);\n const draggedItem = items.find((item) => item.wasDropped);\n let draggedModel;\n\n if (draggedItem) {\n draggedItem.wasDropped = false; // Reset\n draggedModel = draggedItem.model;\n }\n\n this._updateItems();\n this._onChange(itemModels, draggedModel);\n }\n\n @action\n _onChange(itemModels, draggedModel) {\n if (this.onChange) {\n this.onChange(itemModels, draggedModel);\n }\n }\n\n /**\n * Keeps the UI in sync with actual changes.\n * Needed for drag and keyboard operations.\n */\n _updateItems() {\n const items = this.sortedItems;\n\n delete this._firstItemPosition;\n\n schedule('render', () => {\n items.forEach((item) => item.freeze());\n });\n\n schedule('afterRender', () => {\n items.forEach((item) => item.reset());\n });\n\n next(() => {\n schedule('render', () => {\n items.forEach((item) => item.thaw());\n });\n });\n }\n\n @action\n _createAnnouncer() {\n const announcer = document.createElement('span');\n announcer.setAttribute('aria-live', 'polite');\n announcer.classList.add('visually-hidden');\n return announcer;\n }\n\n _calculateGridPosition(a, b, groupWidth) {\n const groupTopPos = a.element.parentNode?.offsetTop ?? 0;\n const groupLeftPos = a.element.parentNode?.offsetLeft ?? 0;\n\n const position = {\n ax: a.x,\n ay: a.y,\n bx: b.x,\n by: b.y,\n };\n\n if (a.isDragging) {\n const dragItemPos = this._calculateGridDragItemPos(\n position.ax,\n position.ay,\n position.bx,\n position.by,\n b.width,\n b.height,\n a.moveDirection,\n groupTopPos,\n groupLeftPos,\n groupWidth\n );\n position.ax = dragItemPos.x;\n position.ay = dragItemPos.y;\n } else if (b.isDragging) {\n const dragItemPos = this._calculateGridDragItemPos(\n position.bx,\n position.by,\n position.ax,\n position.ay,\n a.width,\n a.height,\n b.moveDirection,\n groupTopPos,\n groupLeftPos,\n groupWidth\n );\n position.bx = dragItemPos.x;\n position.by = dragItemPos.y;\n }\n\n // Math.hypot needs always a positive number (-5 = 5 in hypot).\n // As a negative number will be positive, we need to fake position from non dragged element\n if (a.isDragging && position.ax <= 0) {\n position.ax = 0;\n position.bx = 1;\n }\n\n if (b.isDragging && position.bx <= 0) {\n position.bx = 0;\n position.ax = 1;\n }\n\n return position;\n }\n\n _calculateGridDragItemPos(x, y, otherX, otherY, width, height, moveDirection, groupTopPos, groupLeftPos, groupWidth) {\n const toleranceWidth = width / 4;\n const initialX = x;\n\n if (moveDirection.left) {\n x = x - toleranceWidth;\n }\n\n if (moveDirection.right) {\n x = x + toleranceWidth;\n // Calculate the maximum of items in row & the maximal x-position of last item\n const itemsPerRow = Math.floor(groupWidth / width);\n const possibleLastItemPos = (itemsPerRow - 1) * width + groupLeftPos;\n if (otherX > initialX && x + width > possibleLastItemPos - 1) {\n // Removing one pixel is necessary to move drag item before other element\n x = possibleLastItemPos - 1;\n }\n }\n\n if (y < groupTopPos) {\n y = groupTopPos;\n }\n\n const toleranceHeight = height / 4;\n\n // When item is moved a quarter of height to top, user wants to move up\n if (moveDirection.top && y - height + toleranceHeight <= otherY && y >= otherY) {\n y = otherY;\n // tolerance that it doesn't jump directly in previews line\n } else if (moveDirection.top && y >= otherY - toleranceHeight && y <= otherY) {\n y = otherY;\n }\n\n // When item is moved a quarter of height to bottom, user wants to move down\n if (moveDirection.bottom && y <= otherY + height - toleranceHeight && y >= otherY) {\n y = otherY;\n // tolerance that it doesn't jump directly in next line\n } else if (moveDirection.bottom && y > otherY - toleranceHeight && y <= otherY) {\n y = otherY;\n }\n\n return {\n x: x,\n y: y,\n };\n }\n\n // end of API\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('focusout', this.focusOut);\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('focusout', this.focusOut);\n }\n\n element;\n didSetup = false;\n\n constructor(owner, args) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n modify(element, _positional, named) {\n this.element = element;\n this.named = named;\n\n this.removeEventListener();\n\n if (!this.didSetup) {\n this._groupDef = this.sortableService.fetchGroup(this.groupName);\n this.announcer = this._createAnnouncer();\n this.element.insertAdjacentElement('afterend', this.announcer);\n this.sortableService.registerGroup(this.groupName, this);\n\n this.didSetup = true;\n }\n\n if (this.disabled) {\n return;\n }\n\n this.addEventListener();\n }\n}\n\n/**\n *\n * @param {SortableGroupModifier} instance\n */\nfunction cleanup(instance) {\n // todo cleanup the announcer\n if (instance.announcer.parentNode) {\n instance.announcer.parentNode.removeChild(instance.announcer);\n }\n instance.removeEventListener();\n instance.sortableService.deregisterGroup(instance.groupName, instance);\n}\n"],"names":["NO_MODEL","SortableGroupModifier","_dec","service","_dec2","computed","_class","Modifier","disabled","named","handleVisualClass","a11yAnnouncementConfig","defaultA11yAnnouncementConfig","itemVisualClass","a11yItemName","focusOut","isRetainingFocus","_isElementWithinHandle","document","activeElement","cancelKeyboardSelection","keyDown","event","isKeyDownEnabled","isKeyboardReorderModeEnabled","_selectedItem","isEnterKey","isSpaceKey","_prepareKeyboardReorderMode","_announceAction","ANNOUNCEMENT_ACTION_TYPES","ACTIVATE","_updateItemVisualIndicators","_updateHandleVisualIndicators","scheduleOnce","element","focus","preventDefault","_handleKeyboardReorder","closest","_move","fromIndex","toIndex","direction","sortedItems","item","nextItem","value","dimension","valueX","x","valueY","y","width","height","set","selectedItem","isDownArrowKey","moveItem","isUpArrowKey","isLeftArrowKey","isRightArrowKey","itemElement","CONFIRM","confirmKeyboardSelection","_focusItem","isEscapeKey","_selectedItemElement","CANCEL","moves","length","delta","sortedIndex","indexOf","newSortedIndex","MOVE","push","_disableKeyboardReorderMode","move","pop","_tearDownA11yApplicationContainer","_resetItemSelection","commit","type","index","announcer","config","maxLength","message","textContent","later","isActive","classList","add","remove","isUpdate","handle","querySelector","visualHandle","visualKeys","forEach","visualKey","_enableKeyboardReorderMode","_setupA11yApplicationContainer","setAttribute","tabIndex","removeAttribute","onChange","groupName","items","_groupDef","firstItemPosition","spacing","groupStyles","getComputedStyle","groupWidth","parseFloat","sort","a","b","ax","ay","bx","by","_calculateGridPosition","activateKeyDown","deactivateKeyDown","registerGroup","group","_group","deregisterGroup","prepare","_firstItemPosition","update","axis","undefined","position","groupPositionRight","lastTopOffset","maxPrevHeight","isDestroyed","isDragging","isBusy","itemModels","map","model","draggedItem","find","wasDropped","draggedModel","_updateItems","_onChange","schedule","freeze","reset","next","thaw","_createAnnouncer","createElement","groupTopPos","parentNode","offsetTop","groupLeftPos","offsetLeft","dragItemPos","_calculateGridDragItemPos","moveDirection","otherX","otherY","toleranceWidth","initialX","left","right","itemsPerRow","Math","floor","possibleLastItemPos","toleranceHeight","top","bottom","addEventListener","removeEventListener","constructor","owner","args","_defineProperty","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","didSetup","sortableService","fetchGroup","insertAdjacentElement","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","configurable","enumerable","writable","initializer","instance","removeChild"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,QAAQ,GAAG,EAAE,CAAA;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACqBC,IAAAA,qBAAqB,IAAAC,IAAA,GAodvCC,MAAO,CAAC,+BAA+B,CAAC,EAAAC,KAAA,GAwCxCC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,GAAAC,MAAA,GA5fxB,MAAML,qBAAqB,SAASM,QAAQ,CAAC;AAe1D;;EAEA,IAAIC,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACC,KAAK,CAACD,QAAQ,IAAI,KAAK,CAAA;AACrC,GAAA;;AAEA;AACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIE,iBAAiBA,GAAG;AACtB,IAAA,OAAO,IAAI,CAACD,KAAK,CAACC,iBAAiB,IAAIV,QAAQ,CAAA;AACjD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIW,sBAAsBA,GAAG;AAC3B,IAAA,OAAO,IAAI,CAACF,KAAK,CAACE,sBAAsB,IAAIC,6BAA6B,CAAA;AAC3E,GAAA;EAEA,IAAIC,eAAeA,GAAG;AACpB,IAAA,OAAO,IAAI,CAACJ,KAAK,CAACI,eAAe,IAAI,cAAc,CAAA;AACrD,GAAA;EAEA,IAAIC,YAAYA,GAAG;AACjB,IAAA,OAAO,IAAI,CAACL,KAAK,CAACK,YAAY,IAAI,MAAM,CAAA;AAC1C,GAAA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAEEC,EAAAA,QAAQA,GAAG;AACT,IAAA,IAAI,CAAC,IAAI,CAACC,gBAAgB,IAAI,CAAC,IAAI,CAACC,sBAAsB,CAACC,QAAQ,CAACC,aAAa,CAAC,EAAE;MAClF,IAAI,CAACC,uBAAuB,EAAE,CAAA;AAChC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAEEC,OAAOA,CAACC,KAAK,EAAE;AACb,IAAA,IAAI,CAAC,IAAI,CAACC,gBAAgB,EAAE;AAC1B,MAAA,OAAA;AACF,KAAA;;AAEA;AACA,IAAA,MAAMC,4BAA4B,GAAG,IAAI,CAACA,4BAA4B,CAAA;AACtE,IAAA,MAAMC,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;AAExC,IAAA,IAAI,CAACD,4BAA4B,KAAKE,UAAU,CAACJ,KAAK,CAAC,IAAIK,UAAU,CAACL,KAAK,CAAC,CAAC,EAAE;MAC7E,IAAI,CAACM,2BAA2B,EAAE,CAAA;AAClC,MAAA,IAAI,CAACC,eAAe,CAACC,yBAAyB,CAACC,QAAQ,CAAC,CAAA;AACxD,MAAA,IAAI,CAACC,2BAA2B,CAACP,aAAa,EAAE,IAAI,CAAC,CAAA;AACrD,MAAA,IAAI,CAACQ,6BAA6B,CAACR,aAAa,EAAE,IAAI,CAAC,CAAA;MAEvD,IAAI,CAACT,gBAAgB,GAAG,IAAI,CAAA;MAE5BkB,YAAY,CAAC,QAAQ,EAAE,MAAM;AAC3B,QAAA,IAAI,CAACC,OAAO,CAACC,KAAK,EAAE,CAAA;QACpB,IAAI,CAACpB,gBAAgB,GAAG,KAAK,CAAA;AAC/B,OAAC,CAAC,CAAA;;AAEF;MACAM,KAAK,CAACe,cAAc,EAAE,CAAA;AACtB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIb,4BAA4B,EAAE;AAChC,MAAA,IAAI,CAACc,sBAAsB,CAAChB,KAAK,CAAC,CAAA;MAClCA,KAAK,CAACe,cAAc,EAAE,CAAA;AACxB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACEpB,sBAAsBA,CAACkB,OAAO,EAAE;AAC9B,IAAA,OAAOA,OAAO,CAACI,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAKA,CAACC,SAAS,EAAEC,OAAO,EAAE;AACxB,IAAA,MAAMC,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMC,IAAI,GAAGD,WAAW,CAACH,SAAS,CAAC,CAAA;AACnC,IAAA,MAAMK,QAAQ,GAAGF,WAAW,CAACF,OAAO,CAAC,CAAA;;AAErC;AACA,IAAA,IAAIK,KAAK,CAAA;IACT,MAAMC,SAAS,GAAGL,SAAS,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;AACxD;IACA,IAAID,OAAO,GAAGD,SAAS,EAAE;MACvB,IAAIE,SAAS,KAAK,MAAM,EAAE;AACxB,QAAA,MAAMM,MAAM,GAAGJ,IAAI,CAACK,CAAC,CAAA;AACrB,QAAA,MAAMC,MAAM,GAAGN,IAAI,CAACO,CAAC,CAAA;AACrBP,QAAAA,IAAI,CAACK,CAAC,GAAGJ,QAAQ,CAACI,CAAC,IAAIJ,QAAQ,CAACO,KAAK,GAAGR,IAAI,CAACQ,KAAK,CAAC,CAAA;AACnDR,QAAAA,IAAI,CAACO,CAAC,GAAGN,QAAQ,CAACM,CAAC,IAAIN,QAAQ,CAACQ,MAAM,GAAGT,IAAI,CAACS,MAAM,CAAC,CAAA;QACrDR,QAAQ,CAACI,CAAC,GAAGD,MAAM,CAAA;QACnBH,QAAQ,CAACM,CAAC,GAAGD,MAAM,CAAA;AACrB,OAAC,MAAM;AACLJ,QAAAA,KAAK,GAAGF,IAAI,CAACF,SAAS,CAAC,CAAA;QACvBY,GAAG,CAACV,IAAI,EAAEF,SAAS,EAAEG,QAAQ,CAACH,SAAS,CAAC,IAAIG,QAAQ,CAACE,SAAS,CAAC,GAAGH,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC,CAAA;AACnFO,QAAAA,GAAG,CAACT,QAAQ,EAAEH,SAAS,EAAEI,KAAK,CAAC,CAAA;AACjC,OAAA;AACA;AACF,KAAC,MAAM;MACL,IAAIJ,SAAS,KAAK,MAAM,EAAE;AACxB,QAAA,MAAMM,MAAM,GAAGH,QAAQ,CAACI,CAAC,CAAA;AACzB,QAAA,MAAMC,MAAM,GAAGL,QAAQ,CAACM,CAAC,CAAA;AACzBN,QAAAA,QAAQ,CAACI,CAAC,GAAGL,IAAI,CAACK,CAAC,IAAIL,IAAI,CAACQ,KAAK,GAAGP,QAAQ,CAACO,KAAK,CAAC,CAAA;AACnDP,QAAAA,QAAQ,CAACM,CAAC,GAAGP,IAAI,CAACO,CAAC,IAAIP,IAAI,CAACS,MAAM,GAAGR,QAAQ,CAACQ,MAAM,CAAC,CAAA;QACrDT,IAAI,CAACK,CAAC,GAAGD,MAAM,CAAA;QACfJ,IAAI,CAACO,CAAC,GAAGD,MAAM,CAAA;AACjB,OAAC,MAAM;AACLJ,QAAAA,KAAK,GAAGD,QAAQ,CAACH,SAAS,CAAC,CAAA;QAC3BY,GAAG,CAACT,QAAQ,EAAEH,SAAS,EAAEE,IAAI,CAACF,SAAS,CAAC,IAAIE,IAAI,CAACG,SAAS,CAAC,GAAGF,QAAQ,CAACE,SAAS,CAAC,CAAC,CAAC,CAAA;AACnFO,QAAAA,GAAG,CAACV,IAAI,EAAEF,SAAS,EAAEI,KAAK,CAAC,CAAA;AAC7B,OAAA;AACF,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACET,sBAAsBA,CAAChB,KAAK,EAAE;AAC5B,IAAA,MAAMqB,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMa,YAAY,GAAG,IAAI,CAAC/B,aAAa,CAAA;IAEvC,IAAIkB,SAAS,KAAK,GAAG,IAAIc,cAAc,CAACnC,KAAK,CAAC,EAAE;AAC9C,MAAA,IAAI,CAACoC,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAA;KAC/B,MAAM,IAAIb,SAAS,KAAK,GAAG,IAAIgB,YAAY,CAACrC,KAAK,CAAC,EAAE;AACnD,MAAA,IAAI,CAACoC,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,KAAC,MAAM,IAAI,CAACb,SAAS,KAAK,GAAG,IAAIA,SAAS,KAAK,MAAM,KAAKiB,cAAc,CAACtC,KAAK,CAAC,EAAE;AAC/E,MAAA,IAAI,CAACoC,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,KAAC,MAAM,IAAI,CAACb,SAAS,KAAK,GAAG,IAAIA,SAAS,KAAK,MAAM,KAAKkB,eAAe,CAACvC,KAAK,CAAC,EAAE;AAChF,MAAA,IAAI,CAACoC,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAA;KAC/B,MAAM,IAAI9B,UAAU,CAACJ,KAAK,CAAC,IAAIK,UAAU,CAACL,KAAK,CAAC,EAAE;AACjD;AACA,MAAA,MAAMwC,WAAW,GAAGN,YAAY,CAACrB,OAAO,CAAA;AACxC,MAAA,IAAI,CAACN,eAAe,CAACC,yBAAyB,CAACiC,OAAO,CAAC,CAAA;MACvD,IAAI,CAACC,wBAAwB,EAAE,CAAA;MAE/B,IAAI,CAAChD,gBAAgB,GAAG,IAAI,CAAA;MAC5BkB,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC+B,UAAU,CAACH,WAAW,CAAC,CAAC,CAAA;AAC5D,KAAC,MAAM,IAAII,WAAW,CAAC5C,KAAK,CAAC,EAAE;AAC7B;AACA,MAAA,MAAM6C,oBAAoB,GAAGX,YAAY,CAACrB,OAAO,CAAA;AACjD,MAAA,IAAI,CAACN,eAAe,CAACC,yBAAyB,CAACsC,MAAM,CAAC,CAAA;MACtD,IAAI,CAAChD,uBAAuB,EAAE,CAAA;MAE9B,IAAI,CAACJ,gBAAgB,GAAG,IAAI,CAAA;MAC5BkB,YAAY,CAAC,QAAQ,EAAE,MAAM;AAC3B,QAAA,MAAMmC,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,QAAA,IAAIA,KAAK,IAAIA,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;AAC7B,UAAA,MAAM1B,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,UAAA,MAAMkB,WAAW,GAAGlB,WAAW,CAACyB,KAAK,CAAC,CAAC,CAAC,CAAC5B,SAAS,CAAC,CAACN,OAAO,CAAA;AAC3D,UAAA,IAAI,CAAC8B,UAAU,CAACH,WAAW,CAAC,CAAA;AAC9B,SAAC,MAAM;AACL,UAAA,IAAI,CAACG,UAAU,CAACE,oBAAoB,CAAC,CAAA;AACvC,SAAA;QACA,IAAI,CAACnD,gBAAgB,GAAG,KAAK,CAAA;AAC/B,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE0C,EAAAA,QAAQA,CAACb,IAAI,EAAE0B,KAAK,EAAE;AACpB,IAAA,MAAM3B,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMyB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AAExB,IAAA,MAAMG,WAAW,GAAG5B,WAAW,CAAC6B,OAAO,CAAC5B,IAAI,CAAC,CAAA;AAC7C,IAAA,MAAM6B,cAAc,GAAGF,WAAW,GAAGD,KAAK,CAAA;;AAE1C;IACA,IAAIG,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAI9B,WAAW,CAAC0B,MAAM,EAAE;AAC9D,MAAA,OAAA;AACF,KAAA;IACA,IAAI,CAACzC,eAAe,CAACC,yBAAyB,CAAC6C,IAAI,EAAEJ,KAAK,CAAC,CAAA;AAC3D;IACArC,YAAY,CAAC,QAAQ,EAAE,MAAM;AAC3B,MAAA,IAAI,CAACM,KAAK,CAACgC,WAAW,EAAEE,cAAc,CAAC,CAAA;AACvC,MAAA,IAAI,CAACzC,6BAA6B,CAACY,IAAI,EAAE,IAAI,CAAC,CAAA;MAE9CwB,KAAK,CAACO,IAAI,CAAC,CAACJ,WAAW,EAAEE,cAAc,CAAC,CAAC,CAAA;AAC3C,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAEEtD,EAAAA,uBAAuBA,GAAG;AACxB,IAAA,MAAMK,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;IACxC,IAAI,CAACoD,2BAA2B,EAAE,CAAA;AAClC;AACA,IAAA,MAAMR,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,IAAA,OAAOA,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;AACvB,MAAA,MAAMQ,IAAI,GAAGT,KAAK,CAACU,GAAG,EAAE,CAAA;AACxB,MAAA,IAAI,CAACvC,KAAK,CAACsC,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,KAAA;IACA,IAAI,CAACE,iCAAiC,EAAE,CAAA;AACxC,IAAA,IAAI,CAAChD,2BAA2B,CAACP,aAAa,EAAE,KAAK,CAAC,CAAA;AACtD,IAAA,IAAI,CAACQ,6BAA6B,CAACR,aAAa,EAAE,KAAK,CAAC,CAAA;IACxD,IAAI,CAACwD,mBAAmB,EAAE,CAAA;AAC5B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEjB,EAAAA,wBAAwBA,GAAG;AACzB,IAAA,MAAMvC,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;IACxC,IAAI,CAAC4C,KAAK,GAAG,EAAE,CAAA;IACf,IAAI,CAACQ,2BAA2B,EAAE,CAAA;IAClC,IAAI,CAACG,iCAAiC,EAAE,CAAA;AACxCzB,IAAAA,GAAG,CAAC9B,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,CAACyD,MAAM,EAAE,CAAA;AACb,IAAA,IAAI,CAAClD,2BAA2B,CAACP,aAAa,EAAE,KAAK,CAAC,CAAA;AACtD,IAAA,IAAI,CAACQ,6BAA6B,CAACR,aAAa,EAAE,KAAK,CAAC,CAAA;IACxD,IAAI,CAACwD,mBAAmB,EAAE,CAAA;AAC5B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEpD,EAAAA,eAAeA,CAACsD,IAAI,EAAEZ,KAAK,GAAG,IAAI,EAAE;AAClC,IAAA,MAAM5D,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAAA;AAC1D,IAAA,MAAMG,YAAY,GAAG,IAAI,CAACA,YAAY,CAAA;IAEtC,IAAI,CAACA,YAAY,IAAI,EAAEqE,IAAI,IAAIxE,sBAAsB,CAAC,EAAE;AACtD,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMiC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMnB,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;AACxC,IAAA,MAAM2D,KAAK,GAAGxC,WAAW,CAAC6B,OAAO,CAAChD,aAAa,CAAC,CAAA;AAChD,IAAA,MAAM4D,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAEhC,IAAA,MAAMC,MAAM,GAAG;MACbxE,YAAY;AACZsE,MAAAA,KAAK,EAAEA,KAAK;MACZG,SAAS,EAAE3C,WAAW,CAAC0B,MAAM;MAC7B3B,SAAS,EAAE,IAAI,CAACA,SAAS;AACzB4B,MAAAA,KAAAA;KACD,CAAA;IAED,MAAMiB,OAAO,GAAG7E,sBAAsB,CAACwE,IAAI,CAAC,CAACG,MAAM,CAAC,CAAA;IACpDD,SAAS,CAACI,WAAW,GAAGD,OAAO,CAAA;;AAE/B;AACAE,IAAAA,KAAK,CAAC,MAAM;MACVL,SAAS,CAACI,WAAW,GAAG,EAAE,CAAA;KAC3B,EAAE,IAAI,CAAC,CAAA;AACV,GAAA;;AAEA;AACF;AACA;AACER,EAAAA,mBAAmBA,GAAG;IACpB,IAAI,CAACxD,aAAa,GAAG,IAAI,CAAA;AAC3B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEO,EAAAA,2BAA2BA,CAACa,IAAI,EAAE8C,QAAQ,EAAE;AAC1C,IAAA,MAAM9E,eAAe,GAAG,IAAI,CAACA,eAAe,CAAA;AAE5C,IAAA,IAAI,CAACA,eAAe,IAAI,CAACgC,IAAI,EAAE;AAC7B,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAI8C,QAAQ,EAAE;MACZ9C,IAAI,CAACV,OAAO,CAACyD,SAAS,CAACC,GAAG,CAAChF,eAAe,CAAC,CAAA;AAC7C,KAAC,MAAM;MACLgC,IAAI,CAACV,OAAO,CAACyD,SAAS,CAACE,MAAM,CAACjF,eAAe,CAAC,CAAA;AAChD,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEoB,EAAAA,6BAA6BA,CAACY,IAAI,EAAEkD,QAAQ,EAAE;AAC5C,IAAA,MAAMrF,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAAA;AAEhD,IAAA,IAAIA,iBAAiB,KAAKV,QAAQ,IAAI,CAAC6C,IAAI,EAAE;AAC3C,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMD,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMyC,KAAK,GAAGxC,WAAW,CAAC6B,OAAO,CAAC5B,IAAI,CAAC,CAAA;IACvC,MAAMmD,MAAM,GAAGnD,IAAI,CAACV,OAAO,CAAC8D,aAAa,CAAC,uBAAuB,CAAC,CAAA;IAClE,MAAMC,YAAY,GAAGF,MAAM,GAAGA,MAAM,GAAGnD,IAAI,CAACV,OAAO,CAAA;AACnD,IAAA,MAAMgE,UAAU,GAAGxD,SAAS,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEzEwD,IAAAA,UAAU,CAACC,OAAO,CAAEC,SAAS,IAAK;MAChCH,YAAY,CAACN,SAAS,CAACE,MAAM,CAACpF,iBAAiB,CAAC2F,SAAS,CAAC,CAAC,CAAA;AAC7D,KAAC,CAAC,CAAA;IAEF,IAAI,CAACN,QAAQ,EAAE;AACb,MAAA,OAAA;AACF,KAAA;IAEA,IAAIX,KAAK,GAAG,CAAC,EAAE;AACbc,MAAAA,YAAY,CAACN,SAAS,CAACC,GAAG,CAACnF,iBAAiB,CAACyF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,KAAA;AAEA,IAAA,IAAIf,KAAK,GAAGxC,WAAW,CAAC0B,MAAM,GAAG,CAAC,EAAE;AAClC4B,MAAAA,YAAY,CAACN,SAAS,CAACC,GAAG,CAACnF,iBAAiB,CAACyF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACElC,UAAUA,CAACH,WAAW,EAAE;AACtB,IAAA,MAAMkC,MAAM,GAAGlC,WAAW,CAACmC,aAAa,CAAC,wBAAwB,CAAC,CAAA;AAClE,IAAA,IAAID,MAAM,EAAE;MACVA,MAAM,CAAC5D,KAAK,EAAE,CAAA;AAChB,KAAC,MAAM;AACL;MACA0B,WAAW,CAAC1B,KAAK,EAAE,CAAA;AACrB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACEkE,EAAAA,0BAA0BA,GAAG;IAC3B,IAAI,CAAC9E,4BAA4B,GAAG,IAAI,CAAA;AAC1C,GAAA;;AAEA;AACF;AACA;AACEqD,EAAAA,2BAA2BA,GAAG;IAC5B,IAAI,CAACrD,4BAA4B,GAAG,KAAK,CAAA;AAC3C,GAAA;;AAEA;AACF;AACA;AACE+E,EAAAA,8BAA8BA,GAAG;IAC/B,IAAI,CAACpE,OAAO,CAACqE,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAChD,IAAA,IAAI,CAACrE,OAAO,CAACsE,QAAQ,GAAG,CAAC,CAAC,CAAA;AAC5B,GAAA;;AAEA;AACF;AACA;AACEzB,EAAAA,iCAAiCA,GAAG;AAClC,IAAA,IAAI,CAAC7C,OAAO,CAACuE,eAAe,CAAC,MAAM,CAAC,CAAA;AACpC,IAAA,IAAI,CAACvE,OAAO,CAACuE,eAAe,CAAC,UAAU,CAAC,CAAA;AAC1C,GAAA;AAEA9E,EAAAA,2BAA2BA,GAAG;IAC5B,IAAI,CAAC0E,0BAA0B,EAAE,CAAA;IACjC,IAAI,CAACC,8BAA8B,EAAE,CAAA;AACvC,GAAA;;AAEA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAI5D,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAAClC,KAAK,CAACkC,SAAS,IAAI,GAAG,CAAA;AACpC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIgE,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAAClG,KAAK,CAACkG,QAAQ,CAAA;AAC5B,GAAA;AAKA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAACnG,KAAK,CAACmG,SAAS,IAAI,qBAAqB,CAAA;AACtD,GAAA;;AAEA;AACF;AACA;AACA;AACA;EAEE,IAAIC,KAAKA,GAAG;AACV,IAAA,OAAO,IAAI,CAACC,SAAS,CAACD,KAAK,CAAA;AAC7B,GAAA;EACAtD,GAAGA,CAACsD,KAAK,EAAE;AACT,IAAA,IAAI,CAACC,SAAS,CAACD,KAAK,GAAGA,KAAK,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;AACA;EACE,IACIE,iBAAiBA,GAAG;AACtB,IAAA,MAAMnE,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AAEpC,IAAA,MAAMC,IAAI,GAAGD,WAAW,CAAC,CAAC,CAAC,CAAA;IAE3B,OAAO;AACLM,MAAAA,CAAC,EAAEL,IAAI,CAACK,CAAC,GAAGL,IAAI,CAACmE,OAAO;AACxB5D,MAAAA,CAAC,EAAEP,IAAI,CAACO,CAAC,GAAGP,IAAI,CAACmE,OAAAA;KAClB,CAAA;AACH,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIpE,WAAWA,GAAG;AAChB,IAAA,MAAMD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAEhC,IAAA,MAAMsE,WAAW,GAAGC,gBAAgB,CAAC,IAAI,CAAC/E,OAAO,CAAC,CAAA;AAClD,IAAA,MAAMgF,UAAU,GAAGC,UAAU,CAACH,WAAW,CAAC5D,KAAK,CAAC,CAAA;IAEhD,OAAO,IAAI,CAACwD,KAAK,CAACQ,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;MAC/B,IAAI5E,SAAS,KAAK,MAAM,EAAE;QACxB,IAAI;UAAE6E,EAAE;UAAEC,EAAE;UAAEC,EAAE;AAAEC,UAAAA,EAAAA;SAAI,GAAG,IAAI,CAACC,sBAAsB,CAACN,CAAC,EAAEC,CAAC,EAAEJ,UAAU,CAAC,CAAA;AACtE,QAAA,IAAIM,EAAE,IAAIE,EAAE,EAAE,OAAOH,EAAE,GAAGE,EAAE,CAAA;QAC5B,OAAOD,EAAE,GAAGE,EAAE,CAAA;AAChB,OAAA;MACA,OAAOL,CAAC,CAAC3E,SAAS,CAAC,GAAG4E,CAAC,CAAC5E,SAAS,CAAC,CAAA;AACpC,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACF;AACA;EAEEkF,eAAeA,CAACrE,YAAY,EAAE;IAC5B,IAAI,CAAC/B,aAAa,GAAG+B,YAAY,CAAA;IACjC,IAAI,CAACjC,gBAAgB,GAAG,IAAI,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAEEuG,EAAAA,iBAAiBA,GAAG;IAClB,IAAI,CAACvG,gBAAgB,GAAG,KAAK,CAAA;AAC/B,GAAA;;AAEA;AACF;AACA;AACA;AACA;EAEEwG,aAAaA,CAACC,KAAK,EAAE;IACnB,IAAI,CAACC,MAAM,GAAGD,KAAK,CAAA;AACrB,GAAA;;AAEA;AACF;AACA;AACA;AACA;EAEEE,eAAeA,CAACF,KAAK,EAAE;AACrB,IAAA,IAAI,IAAI,CAACC,MAAM,KAAKD,KAAK,EAAE;MACzB,IAAI,CAACC,MAAM,GAAG,IAAI,CAAA;AACpB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAEEE,EAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACrB,iBAAiB,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;AACA;EAEEsB,MAAMA,CAACzF,WAAW,EAAE;IAClB,IAAI,CAACA,WAAW,EAAE;MAChBA,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AAChC,KAAA;;AAEA;AACA,IAAA,IAAI0F,IAAI,GAAG,IAAI,CAACF,kBAAkB,CAAA;;AAElC;IACA,IAAIE,IAAI,KAAKC,SAAS,EAAE;MACtBD,IAAI,GAAG,IAAI,CAACvB,iBAAiB,CAAA;AAC/B,KAAA;AAEA,IAAA,IAAIpE,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;IAE9B,IAAI6F,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAIC,kBAAkB,GAAG,CAAC,CAAA;IAC1B,IAAIC,aAAa,GAAG,CAAC,CAAA;IACrB,IAAIC,aAAa,GAAG,CAAC,CAAA;IAErB,IAAIhG,SAAS,KAAK,MAAM,EAAE;MACxB6F,QAAQ,GAAGF,IAAI,CAACpF,CAAC,CAAA;MACjBwF,aAAa,GAAGJ,IAAI,CAAClF,CAAC,CAAA;AACtB,MAAA,MAAM6D,WAAW,GAAGC,gBAAgB,CAAC,IAAI,CAAC/E,OAAO,CAAC,CAAA;MAClDsG,kBAAkB,GAAGD,QAAQ,GAAGpB,UAAU,CAACH,WAAW,CAAC5D,KAAK,CAAC,CAAA;AAC/D,KAAC,MAAM;AACLmF,MAAAA,QAAQ,GAAGF,IAAI,CAAC3F,SAAS,CAAC,CAAA;AAC5B,KAAA;AAEAC,IAAAA,WAAW,CAACwD,OAAO,CAAEvD,IAAI,IAAK;MAC5B,IAAIF,SAAS,KAAK,MAAM,IAAI6F,QAAQ,GAAG3F,IAAI,CAACQ,KAAK,GAAGoF,kBAAkB,EAAE;QACtEC,aAAa,GAAGA,aAAa,GAAGC,aAAa,CAAA;QAC7CH,QAAQ,GAAGF,IAAI,CAACpF,CAAC,CAAA;AACjByF,QAAAA,aAAa,GAAG,CAAC,CAAA;AACnB,OAAA;MAEA,IAAI,CAACC,WAAW,CAAC/F,IAAI,CAAC,IAAI,CAACA,IAAI,CAACgG,UAAU,EAAE;QAC1C,IAAIlG,SAAS,KAAK,MAAM,EAAE;UACxBE,IAAI,CAACK,CAAC,GAAGsF,QAAQ,CAAA;UACjB3F,IAAI,CAACO,CAAC,GAAGsF,aAAa,CAAA;AACxB,SAAC,MAAM;AACLnF,UAAAA,GAAG,CAACV,IAAI,EAAEF,SAAS,EAAE6F,QAAQ,CAAC,CAAA;AAChC,SAAA;AACF,OAAA;;AAEA;MACA,IAAI3F,IAAI,CAACiG,MAAM,EAAE;AACfN,QAAAA,QAAQ,IAAI3F,IAAI,CAACmE,OAAO,GAAG,CAAC,CAAA;AAC9B,OAAA;AAEA,MAAA,IAAIhE,SAAS,CAAA;MAEb,IAAIL,SAAS,KAAK,MAAM,EAAE;AACxBK,QAAAA,SAAS,GAAG,OAAO,CAAA;AAEnB,QAAA,IAAIH,IAAI,CAACS,MAAM,GAAGqF,aAAa,EAAE;UAC/BA,aAAa,GAAG9F,IAAI,CAACS,MAAM,CAAA;AAC7B,SAAA;AACF,OAAA;MACA,IAAIX,SAAS,KAAK,GAAG,EAAE;AACrBK,QAAAA,SAAS,GAAG,OAAO,CAAA;AACrB,OAAA;MACA,IAAIL,SAAS,KAAK,GAAG,EAAE;AACrBK,QAAAA,SAAS,GAAG,QAAQ,CAAA;AACtB,OAAA;AAEAwF,MAAAA,QAAQ,IAAI3F,IAAI,CAACG,SAAS,CAAC,CAAA;AAC7B,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACF;AACA;AAEEkC,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAM2B,KAAK,GAAG,IAAI,CAACjE,WAAW,CAAA;IAC9B,MAAMmG,UAAU,GAAGlC,KAAK,CAACmC,GAAG,CAAEnG,IAAI,IAAKA,IAAI,CAACoG,KAAK,CAAC,CAAA;IAClD,MAAMC,WAAW,GAAGrC,KAAK,CAACsC,IAAI,CAAEtG,IAAI,IAAKA,IAAI,CAACuG,UAAU,CAAC,CAAA;AACzD,IAAA,IAAIC,YAAY,CAAA;AAEhB,IAAA,IAAIH,WAAW,EAAE;AACfA,MAAAA,WAAW,CAACE,UAAU,GAAG,KAAK,CAAC;MAC/BC,YAAY,GAAGH,WAAW,CAACD,KAAK,CAAA;AAClC,KAAA;IAEA,IAAI,CAACK,YAAY,EAAE,CAAA;AACnB,IAAA,IAAI,CAACC,SAAS,CAACR,UAAU,EAAEM,YAAY,CAAC,CAAA;AAC1C,GAAA;AAGAE,EAAAA,SAASA,CAACR,UAAU,EAAEM,YAAY,EAAE;IAClC,IAAI,IAAI,CAAC1C,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACA,QAAQ,CAACoC,UAAU,EAAEM,YAAY,CAAC,CAAA;AACzC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,YAAYA,GAAG;AACb,IAAA,MAAMzC,KAAK,GAAG,IAAI,CAACjE,WAAW,CAAA;IAE9B,OAAO,IAAI,CAACwF,kBAAkB,CAAA;IAE9BoB,QAAQ,CAAC,QAAQ,EAAE,MAAM;MACvB3C,KAAK,CAACT,OAAO,CAAEvD,IAAI,IAAKA,IAAI,CAAC4G,MAAM,EAAE,CAAC,CAAA;AACxC,KAAC,CAAC,CAAA;IAEFD,QAAQ,CAAC,aAAa,EAAE,MAAM;MAC5B3C,KAAK,CAACT,OAAO,CAAEvD,IAAI,IAAKA,IAAI,CAAC6G,KAAK,EAAE,CAAC,CAAA;AACvC,KAAC,CAAC,CAAA;AAEFC,IAAAA,IAAI,CAAC,MAAM;MACTH,QAAQ,CAAC,QAAQ,EAAE,MAAM;QACvB3C,KAAK,CAACT,OAAO,CAAEvD,IAAI,IAAKA,IAAI,CAAC+G,IAAI,EAAE,CAAC,CAAA;AACtC,OAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CAAA;AACJ,GAAA;AAGAC,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,MAAMxE,SAAS,GAAGnE,QAAQ,CAAC4I,aAAa,CAAC,MAAM,CAAC,CAAA;AAChDzE,IAAAA,SAAS,CAACmB,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAC7CnB,IAAAA,SAAS,CAACO,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC1C,IAAA,OAAOR,SAAS,CAAA;AAClB,GAAA;AAEAuC,EAAAA,sBAAsBA,CAACN,CAAC,EAAEC,CAAC,EAAEJ,UAAU,EAAE;IACvC,MAAM4C,WAAW,GAAGzC,CAAC,CAACnF,OAAO,CAAC6H,UAAU,EAAEC,SAAS,IAAI,CAAC,CAAA;IACxD,MAAMC,YAAY,GAAG5C,CAAC,CAACnF,OAAO,CAAC6H,UAAU,EAAEG,UAAU,IAAI,CAAC,CAAA;AAE1D,IAAA,MAAM3B,QAAQ,GAAG;MACfhB,EAAE,EAAEF,CAAC,CAACpE,CAAC;MACPuE,EAAE,EAAEH,CAAC,CAAClE,CAAC;MACPsE,EAAE,EAAEH,CAAC,CAACrE,CAAC;MACPyE,EAAE,EAAEJ,CAAC,CAACnE,CAAAA;KACP,CAAA;IAED,IAAIkE,CAAC,CAACuB,UAAU,EAAE;AAChB,MAAA,MAAMuB,WAAW,GAAG,IAAI,CAACC,yBAAyB,CAChD7B,QAAQ,CAAChB,EAAE,EACXgB,QAAQ,CAACf,EAAE,EACXe,QAAQ,CAACd,EAAE,EACXc,QAAQ,CAACb,EAAE,EACXJ,CAAC,CAAClE,KAAK,EACPkE,CAAC,CAACjE,MAAM,EACRgE,CAAC,CAACgD,aAAa,EACfP,WAAW,EACXG,YAAY,EACZ/C,UACF,CAAC,CAAA;AACDqB,MAAAA,QAAQ,CAAChB,EAAE,GAAG4C,WAAW,CAAClH,CAAC,CAAA;AAC3BsF,MAAAA,QAAQ,CAACf,EAAE,GAAG2C,WAAW,CAAChH,CAAC,CAAA;AAC7B,KAAC,MAAM,IAAImE,CAAC,CAACsB,UAAU,EAAE;AACvB,MAAA,MAAMuB,WAAW,GAAG,IAAI,CAACC,yBAAyB,CAChD7B,QAAQ,CAACd,EAAE,EACXc,QAAQ,CAACb,EAAE,EACXa,QAAQ,CAAChB,EAAE,EACXgB,QAAQ,CAACf,EAAE,EACXH,CAAC,CAACjE,KAAK,EACPiE,CAAC,CAAChE,MAAM,EACRiE,CAAC,CAAC+C,aAAa,EACfP,WAAW,EACXG,YAAY,EACZ/C,UACF,CAAC,CAAA;AACDqB,MAAAA,QAAQ,CAACd,EAAE,GAAG0C,WAAW,CAAClH,CAAC,CAAA;AAC3BsF,MAAAA,QAAQ,CAACb,EAAE,GAAGyC,WAAW,CAAChH,CAAC,CAAA;AAC7B,KAAA;;AAEA;AACA;IACA,IAAIkE,CAAC,CAACuB,UAAU,IAAIL,QAAQ,CAAChB,EAAE,IAAI,CAAC,EAAE;MACpCgB,QAAQ,CAAChB,EAAE,GAAG,CAAC,CAAA;MACfgB,QAAQ,CAACd,EAAE,GAAG,CAAC,CAAA;AACjB,KAAA;IAEA,IAAIH,CAAC,CAACsB,UAAU,IAAIL,QAAQ,CAACd,EAAE,IAAI,CAAC,EAAE;MACpCc,QAAQ,CAACd,EAAE,GAAG,CAAC,CAAA;MACfc,QAAQ,CAAChB,EAAE,GAAG,CAAC,CAAA;AACjB,KAAA;AAEA,IAAA,OAAOgB,QAAQ,CAAA;AACjB,GAAA;EAEA6B,yBAAyBA,CAACnH,CAAC,EAAEE,CAAC,EAAEmH,MAAM,EAAEC,MAAM,EAAEnH,KAAK,EAAEC,MAAM,EAAEgH,aAAa,EAAEP,WAAW,EAAEG,YAAY,EAAE/C,UAAU,EAAE;AACnH,IAAA,MAAMsD,cAAc,GAAGpH,KAAK,GAAG,CAAC,CAAA;IAChC,MAAMqH,QAAQ,GAAGxH,CAAC,CAAA;IAElB,IAAIoH,aAAa,CAACK,IAAI,EAAE;MACtBzH,CAAC,GAAGA,CAAC,GAAGuH,cAAc,CAAA;AACxB,KAAA;IAEA,IAAIH,aAAa,CAACM,KAAK,EAAE;MACvB1H,CAAC,GAAGA,CAAC,GAAGuH,cAAc,CAAA;AACtB;MACA,MAAMI,WAAW,GAAGC,IAAI,CAACC,KAAK,CAAC5D,UAAU,GAAG9D,KAAK,CAAC,CAAA;MAClD,MAAM2H,mBAAmB,GAAG,CAACH,WAAW,GAAG,CAAC,IAAIxH,KAAK,GAAG6G,YAAY,CAAA;MACpE,IAAIK,MAAM,GAAGG,QAAQ,IAAIxH,CAAC,GAAGG,KAAK,GAAG2H,mBAAmB,GAAG,CAAC,EAAE;AAC5D;QACA9H,CAAC,GAAG8H,mBAAmB,GAAG,CAAC,CAAA;AAC7B,OAAA;AACF,KAAA;IAEA,IAAI5H,CAAC,GAAG2G,WAAW,EAAE;AACnB3G,MAAAA,CAAC,GAAG2G,WAAW,CAAA;AACjB,KAAA;AAEA,IAAA,MAAMkB,eAAe,GAAG3H,MAAM,GAAG,CAAC,CAAA;;AAElC;AACA,IAAA,IAAIgH,aAAa,CAACY,GAAG,IAAI9H,CAAC,GAAGE,MAAM,GAAG2H,eAAe,IAAIT,MAAM,IAAIpH,CAAC,IAAIoH,MAAM,EAAE;AAC9EpH,MAAAA,CAAC,GAAGoH,MAAM,CAAA;AACV;AACF,KAAC,MAAM,IAAIF,aAAa,CAACY,GAAG,IAAI9H,CAAC,IAAIoH,MAAM,GAAGS,eAAe,IAAI7H,CAAC,IAAIoH,MAAM,EAAE;AAC5EpH,MAAAA,CAAC,GAAGoH,MAAM,CAAA;AACZ,KAAA;;AAEA;AACA,IAAA,IAAIF,aAAa,CAACa,MAAM,IAAI/H,CAAC,IAAIoH,MAAM,GAAGlH,MAAM,GAAG2H,eAAe,IAAI7H,CAAC,IAAIoH,MAAM,EAAE;AACjFpH,MAAAA,CAAC,GAAGoH,MAAM,CAAA;AACV;AACF,KAAC,MAAM,IAAIF,aAAa,CAACa,MAAM,IAAI/H,CAAC,GAAGoH,MAAM,GAAGS,eAAe,IAAI7H,CAAC,IAAIoH,MAAM,EAAE;AAC9EpH,MAAAA,CAAC,GAAGoH,MAAM,CAAA;AACZ,KAAA;IAEA,OAAO;AACLtH,MAAAA,CAAC,EAAEA,CAAC;AACJE,MAAAA,CAAC,EAAEA,CAAAA;KACJ,CAAA;AACH,GAAA;;AAEA;;AAEAgI,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,CAACjJ,OAAO,CAACiJ,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC/J,OAAO,CAAC,CAAA;IACtD,IAAI,CAACc,OAAO,CAACiJ,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACrK,QAAQ,CAAC,CAAA;AAC1D,GAAA;AAEAsK,EAAAA,mBAAmBA,GAAG;IACpB,IAAI,CAAClJ,OAAO,CAACkJ,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAChK,OAAO,CAAC,CAAA;IACzD,IAAI,CAACc,OAAO,CAACkJ,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACtK,QAAQ,CAAC,CAAA;AAC7D,GAAA;AAKAuK,EAAAA,WAAWA,CAACC,KAAK,EAAEC,IAAI,EAAE;AACvB,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC,CAAA;AAh1BpB;AACA;AAAAC,IAAAA,eAAA,wBACgB,IAAI,CAAA,CAAA;AACpB;AAAAA,IAAAA,eAAA,eACO,IAAI,CAAA,CAAA;AAAAA,IAAAA,eAAA,gBACH,EAAE,CAAA,CAAA;AAEV;AAAAA,IAAAA,eAAA,uCAC+B,KAAK,CAAA,CAAA;AAAAA,IAAAA,eAAA,2BAEjB,KAAK,CAAA,CAAA;AAExB;AAAAA,IAAAA,eAAA,2BACmB,KAAK,CAAA,CAAA;AAAAC,IAAAA,0BAAA,0BAAAC,WAAA,EAAA,IAAA,CAAA,CAAA;AAAAF,IAAAA,eAAA,oBAseZ,IAAI,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,mBA0VL,KAAK,CAAA,CAAA;AAIdG,IAAAA,kBAAkB,CAAC,IAAI,EAAEC,OAAO,CAAC,CAAA;AACnC,GAAA;AAEAC,EAAAA,MAAMA,CAAC3J,OAAO,EAAE4J,WAAW,EAAEtL,KAAK,EAAE;IAClC,IAAI,CAAC0B,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAAC1B,KAAK,GAAGA,KAAK,CAAA;IAElB,IAAI,CAAC4K,mBAAmB,EAAE,CAAA;AAE1B,IAAA,IAAI,CAAC,IAAI,CAACW,QAAQ,EAAE;AAClB,MAAA,IAAI,CAAClF,SAAS,GAAG,IAAI,CAACmF,eAAe,CAACC,UAAU,CAAC,IAAI,CAACtF,SAAS,CAAC,CAAA;AAChE,MAAA,IAAI,CAACvB,SAAS,GAAG,IAAI,CAACwE,gBAAgB,EAAE,CAAA;MACxC,IAAI,CAAC1H,OAAO,CAACgK,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC9G,SAAS,CAAC,CAAA;MAC9D,IAAI,CAAC4G,eAAe,CAAClE,aAAa,CAAC,IAAI,CAACnB,SAAS,EAAE,IAAI,CAAC,CAAA;MAExD,IAAI,CAACoF,QAAQ,GAAG,IAAI,CAAA;AACtB,KAAA;IAEA,IAAI,IAAI,CAACxL,QAAQ,EAAE;AACjB,MAAA,OAAA;AACF,KAAA;IAEA,IAAI,CAAC4K,gBAAgB,EAAE,CAAA;AACzB,GAAA;AACF,CAAC,GAAAgB,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAA,UAAA,EAAA,CAryBEC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA/L,UAAAA,CAAAA,EAAAA,MAAA,CAAA+L,SAAA,CAAAD,EAAAA,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAA,SAAA,EAAA,CAgBNC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA/L,SAAAA,CAAAA,EAAAA,MAAA,CAAA+L,SAAA,GAAAD,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAA,yBAAA,EAAA,CA6KNC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA/L,yBAAAA,CAAAA,EAAAA,MAAA,CAAA+L,SAAA,CAAA,EAAAV,WAAA,GAAAS,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,sBAAAnM,IAAA,CAAA,EAAA;EAAAuM,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAAR,CAAAA,EAAAA,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAAjM,mBAAAA,EAAAA,CAAAA,KAAA,GAAAmM,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA,mBAAA,CAAA,EAAA/L,MAAA,CAAA+L,SAAA,CAAAD,EAAAA,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAA,iBAAA,EAAA,CA8RNC,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA,iBAAA,CAAA,EAAA/L,MAAA,CAAA+L,SAAA,GAAAD,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAYNC,mBAAAA,EAAAA,CAAAA,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,wBAAA/L,MAAA,CAAA+L,SAAA,CAAAD,EAAAA,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAUNC,eAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA/L,eAAAA,CAAAA,EAAAA,MAAA,CAAA+L,SAAA,CAAA,EAAAD,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAUNC,iBAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA,iBAAA,CAAA,EAAA/L,MAAA,CAAA+L,SAAA,CAAA,EAAAD,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAA,SAAA,EAAA,CAaNC,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,cAAA/L,MAAA,CAAA+L,SAAA,CAAAD,EAAAA,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,aAUNC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA,QAAA,CAAA,EAAA/L,MAAA,CAAA+L,SAAA,CAAAD,EAAAA,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EA0ENC,QAAAA,EAAAA,CAAAA,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA/L,QAAAA,CAAAA,EAAAA,MAAA,CAAA+L,SAAA,CAAA,EAAAD,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EAAA,WAAA,EAAA,CAgBNC,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,EAAA,WAAA,CAAA,EAAA/L,MAAA,CAAA+L,SAAA,GAAAD,yBAAA,CAAA9L,MAAA,CAAA+L,SAAA,EA+BNC,kBAAAA,EAAAA,CAAAA,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAlM,MAAA,CAAA+L,SAAA,uBAAA/L,MAAA,CAAA+L,SAAA,CAAA,GAAA/L,MAAA,CAAA,EAAA;AA4JT;AACA;AACA;AACA;AACA,SAASuL,OAAOA,CAACgB,QAAQ,EAAE;AACzB;AACA,EAAA,IAAIA,QAAQ,CAACxH,SAAS,CAAC2E,UAAU,EAAE;IACjC6C,QAAQ,CAACxH,SAAS,CAAC2E,UAAU,CAAC8C,WAAW,CAACD,QAAQ,CAACxH,SAAS,CAAC,CAAA;AAC/D,GAAA;EACAwH,QAAQ,CAACxB,mBAAmB,EAAE,CAAA;EAC9BwB,QAAQ,CAACZ,eAAe,CAAC/D,eAAe,CAAC2E,QAAQ,CAACjG,SAAS,EAAEiG,QAAQ,CAAC,CAAA;AACxE;;;;"}
1
+ {"version":3,"file":"sortable-group.js","sources":["../../src/modifiers/sortable-group.ts"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\n/* eslint-disable ember/no-incorrect-calls-with-inline-anonymous-functions */\nimport Modifier from 'ember-modifier';\nimport { action, computed, set } from '@ember/object';\nimport {\n isDownArrowKey,\n isEnterKey,\n isEscapeKey,\n isLeftArrowKey,\n isRightArrowKey,\n isSpaceKey,\n isUpArrowKey,\n} from '../utils/keyboard.ts';\nimport { ANNOUNCEMENT_ACTION_TYPES } from '../utils/constant.ts';\nimport { defaultA11yAnnouncementConfig, type A11yAnnouncementConfig } from '../utils/defaults.ts';\nimport { next, schedule, scheduleOnce, later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport { registerDestructor, isDestroyed } from '@ember/destroyable';\nimport type { ArgsFor, PositionalArgs, NamedArgs } from 'ember-modifier';\nimport type Owner from '@ember/owner';\nimport type EmberSortableService from '../services/ember-sortable-internal-state.ts';\nimport type { Group } from '../services/ember-sortable-internal-state.ts';\nimport type SortableItemModifier from './sortable-item.ts';\nimport type { MoveDirection } from './sortable-item.ts';\n\nconst NO_MODEL: HandleVisualClass = {};\n\nexport interface HandleVisualClass {\n UP?: string;\n DOWN?: string;\n LEFT?: string;\n RIGHT?: string;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\nexport type TDirection = 'x' | 'y' | 'grid';\n\ninterface SortableGroupModifierSignature<T> {\n Args: {\n Named: {\n direction?: TDirection;\n groupName?: string;\n disabled?: boolean;\n handleVisualClass?: HandleVisualClass;\n a11yAnnouncementConfig?: A11yAnnouncementConfig;\n itemVisualClass?: string;\n a11yItemName?: string;\n onChange: (itemModels: T[], draggedModel: T | undefined) => void;\n };\n Positional: unknown[];\n };\n Element: HTMLElement;\n}\n\n/**\n * Modifier to apply a11y support to a group container for the Sortable component\n *\n * @param {String} [a11yItemName] A name for each model, used for creating more meaningful a11y announcements.\n * @param {Object} [a11yAnnouncementConfig] A map of action to function to build meaningful a11y announcements.\n * @param {String} [itemVisualClass] A class for styling visual indicators on the yielded `sortable-item`.\n * @param {Object} [handleVisualClass] An object for styling visual indicators on the yielded `sortable-handle` on different `move`.\n * @param {Function} [onChange] An optional callback for when position rearrangements are confirmed.\n *\n * @module drag-drop/draggable-group\n * @example\n * <ol {{sortable-group onChange=this.update a11yAnnouncementConfig=this.myA11yConfig}}>\n * {{#each model.items as |item|}}\n * <li {{sortable-item model=item}}>\n * {{item.name}}\n * <span class=\"handle\" {{sortable-handle}}>&varr;</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableGroupModifier<T> extends Modifier<SortableGroupModifierSignature<T>> {\n /** Primary keyboard utils */\n // Tracks the currently selected item\n _selectedItem: SortableItemModifier<T> | null = null;\n _group: SortableGroupModifier<T> | null = null;\n _firstItemPosition?: Position;\n _groupDef!: Group<T>;\n\n // Tracks the current move\n move = null;\n moves: [number, number][] = [];\n\n // Tracks the status of keyboard reorder mode\n isKeyboardReorderModeEnabled = false;\n\n isKeyDownEnabled = false;\n\n // Tracks if we're still performing a programmatic focus.\n isRetainingFocus = false;\n /** End of keyboard utils */\n\n get disabled() {\n return this.named.disabled || false;\n }\n\n /** Start of a11y properties */\n /**\n * @property an object containing different classes for visual indicators\n * @type {Object}\n * @default null\n * @example\n * {\n * UP: 'up'\n * DOWN: 'down',\n * LEFT: 'left',\n * RIGHT: 'right',\n * }\n */\n get handleVisualClass(): HandleVisualClass {\n return this.named.handleVisualClass || NO_MODEL;\n }\n\n /**\n * @property an object containing functions for producing screen reader announcements\n * @type {Object}\n * @example\n * {\n * MOVE: function() {},\n * ACTIVATE: function() {},\n * CONFIRM: function() {},\n * CANCEL: function() {},\n * }\n */\n get a11yAnnouncementConfig(): A11yAnnouncementConfig {\n return this.named.a11yAnnouncementConfig || defaultA11yAnnouncementConfig;\n }\n\n get itemVisualClass(): string {\n return this.named.itemVisualClass || 'is-activated';\n }\n\n get a11yItemName(): string {\n return this.named.a11yItemName || 'item';\n }\n /** End of a11y properties */\n\n /**\n * Make sure that we cancel any ongoing keyboard operation when the focus is lost from the handle.\n * Because this can be fired pre-maturely, effectively cancelling before other keyboard operations,\n * we need to wait until other operations are completed, so this will cancel properly.\n *\n * @param {Event} event a DOM event.\n */\n @action\n focusOut() {\n if (!this.isRetainingFocus && !this._isElementWithinHandle(document.activeElement)) {\n this.cancelKeyboardSelection();\n }\n }\n\n /**\n * Explanation\n * 1. `KeyboardReorderMode` is disabled: users can activate it via ENTER or SPACE.\n * 2. `KeyboardReorderMode` is enabled: users can reorder via UP or DOWN arrow keys. TODO: Expand to more keys, e.g LEFT, RIGHT\n * 3. `KeyboardReorderMode` is enabled: users can finalize/save the reordering via ENTER or SPACE.\n * 4. `KeyboardReorderMode` is enabled: users can discard the reordering via ESC.\n *\n * @param {Event} event a DOM event\n */\n @action\n keyDown(event: KeyboardEvent) {\n if (!this.isKeyDownEnabled) {\n return;\n }\n\n // Note: If handle is specified, we need to target the keyDown on the handle\n const isKeyboardReorderModeEnabled = this.isKeyboardReorderModeEnabled;\n\n if (!isKeyboardReorderModeEnabled && (isEnterKey(event) || isSpaceKey(event))) {\n const _selectedItem = this._selectedItem;\n\n if (!_selectedItem) {\n return;\n }\n\n this._prepareKeyboardReorderMode();\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.ACTIVATE);\n this._updateItemVisualIndicators(_selectedItem, true);\n this._updateHandleVisualIndicators(_selectedItem, true);\n\n this.isRetainingFocus = true;\n\n scheduleOnce('render', this, () => {\n this.element.focus();\n this.isRetainingFocus = false;\n });\n\n // Prevent the default scroll\n event.preventDefault();\n return;\n }\n\n if (isKeyboardReorderModeEnabled) {\n this._handleKeyboardReorder(event);\n event.preventDefault();\n }\n }\n\n /**\n * Checks if the given element is a child of a handle.\n *\n * @param {Element} element a DOM element.\n */\n _isElementWithinHandle(element: Element | null): boolean {\n return !!element?.closest(`[data-sortable-handle]`);\n }\n\n /**\n * Moves an sortedItem from one index to another index, effectively performing an reorder.\n *\n * @param {Integer} fromIndex the original index\n * @param {Integer} toIndex the new index\n */\n _move(fromIndex: number, toIndex: number) {\n const direction = this.direction;\n const sortedItems = this.sortedItems;\n const item = sortedItems[fromIndex];\n const nextItem = sortedItems[toIndex];\n\n if (!nextItem || !item) {\n return;\n }\n\n // switch direction values to notify sortedItems to update, so it sorts by direction.\n let value;\n const dimension = direction === 'y' ? 'height' : 'width';\n // DOWN or RIGHT\n if (toIndex > fromIndex) {\n if (direction === 'grid') {\n const valueX = item.x;\n const valueY = item.y;\n item.x = nextItem.x + (nextItem.width - item.width);\n item.y = nextItem.y + (nextItem.height - item.height);\n nextItem.x = valueX;\n nextItem.y = valueY;\n } else {\n value = item[direction];\n set(item, direction, nextItem[direction] + (nextItem[dimension] - item[dimension]));\n set(nextItem, direction, value);\n }\n // UP or LEFT\n } else {\n if (direction === 'grid') {\n const valueX = nextItem.x;\n const valueY = nextItem.y;\n nextItem.x = item.x + (item.width - nextItem.width);\n nextItem.y = item.y + (item.height - nextItem.height);\n item.x = valueX;\n item.y = valueY;\n } else {\n value = nextItem[direction];\n set(nextItem, direction, item[direction] + (item[dimension] - nextItem[dimension]));\n set(item, direction, value);\n }\n }\n }\n\n /**\n * Handles all of the keyboard operations, such as\n * 1. Keyboard navigation for UP, DOWN, LEFT, RIGHT\n * 2. Confirming reorder\n * 3. Discard reorder\n * 4. Also handles refocusing the element that triggered the interaction.\n *\n * @param {Event} event a DOM event.\n */\n _handleKeyboardReorder(event: KeyboardEvent) {\n const direction = this.direction;\n const selectedItem = this._selectedItem;\n\n if (!selectedItem) {\n return;\n }\n\n if (direction === 'y' && isDownArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (direction === 'y' && isUpArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if ((direction === 'x' || direction === 'grid') && isLeftArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if ((direction === 'x' || direction === 'grid') && isRightArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (isEnterKey(event) || isSpaceKey(event)) {\n // confirm will reset the selectedItem, so caching it here before we remove it.\n const itemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CONFIRM);\n this.confirmKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', this, () => this._focusItem(itemElement));\n } else if (isEscapeKey(event)) {\n // cancel will reset the selectedItem, so caching it here before we remove it.\n const _selectedItemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CANCEL);\n this.cancelKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', this, () => {\n const moves = this.moves;\n if (moves && moves[0]) {\n const sortedItems = this.sortedItems;\n const fromIndex = moves[0][1];\n const itemElement = sortedItems[fromIndex]?.element;\n if (itemElement) {\n this._focusItem(itemElement);\n }\n } else {\n this._focusItem(_selectedItemElement);\n }\n this.isRetainingFocus = false;\n });\n }\n }\n\n /**\n * Moves the item to its new position and adds the move to our history.\n *\n * @param {SortableItemModifier} item the item to be moved.\n * @param {Integer} delta how much to move index-wise.\n */\n moveItem(item: SortableItemModifier<T>, delta: number) {\n const sortedItems = this.sortedItems;\n const moves = this.moves;\n\n const sortedIndex = sortedItems.indexOf(item);\n const newSortedIndex = sortedIndex + delta;\n\n // If out of bounds, we don't do anything.\n if (newSortedIndex < 0 || newSortedIndex >= sortedItems.length) {\n return;\n }\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.MOVE, delta);\n // Guarantees that the before the UI is fully rendered before we move again.\n scheduleOnce('render', this, () => {\n this._move(sortedIndex, newSortedIndex);\n this._updateHandleVisualIndicators(item, true);\n\n moves.push([sortedIndex, newSortedIndex]);\n });\n }\n\n /**\n * Handles all the necessary operations needed for cancelling the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Undo all of the tracked moves.\n * 3. Tears down the application container, so we are not focus locked within the application.\n * 4. Resets the current selected item.\n */\n @action\n cancelKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n\n if (!_selectedItem) {\n return;\n }\n\n this._disableKeyboardReorderMode();\n // Revert the process by reversing the move.\n const moves = this.moves;\n while (moves.length > 0) {\n const move = moves.pop();\n const fromIndex = move ? move[1] : 0;\n const toIndex = move ? move[0] : 0;\n this._move(fromIndex, toIndex);\n }\n this._tearDownA11yApplicationContainer();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Handles all th necessary operations needed for confirming the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Tears down the application container, so we are not focus locked within the container.\n * 3. Make sure to update and sync all the internal items and UI.\n * 4. Triggers the `onChange` action if provided.\n * 5. Resets the currently selected item.\n */\n confirmKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n\n if (!_selectedItem) {\n return;\n }\n\n this.moves = [];\n this._disableKeyboardReorderMode();\n this._tearDownA11yApplicationContainer();\n set(_selectedItem, 'wasDropped', true);\n this.commit();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Announces the message constructed from `a11yAnnouncementConfig`.\n *\n * @param {String} type the action type.\n * @param {Number} delta how much distance (item-wise) is being moved.\n */\n _announceAction(type: keyof A11yAnnouncementConfig, delta: number = 0): void {\n const a11yAnnouncementConfig = this.a11yAnnouncementConfig;\n const a11yItemName = this.a11yItemName;\n\n if (!a11yItemName || !(type in a11yAnnouncementConfig)) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const _selectedItem = this._selectedItem;\n\n if (!_selectedItem) {\n return;\n }\n\n const index = sortedItems.indexOf(_selectedItem);\n const announcer = this.announcer;\n\n if (!announcer) {\n return;\n }\n\n const config = {\n a11yItemName,\n index: index,\n maxLength: sortedItems.length,\n direction: this.direction,\n delta,\n };\n\n const message = a11yAnnouncementConfig[type](config);\n announcer.textContent = message;\n\n // Reset the message after the message is announced.\n later(() => {\n announcer.textContent = '';\n }, 1000);\n }\n\n /**\n * Reset the selected item.\n */\n _resetItemSelection(): void {\n this._selectedItem = null;\n }\n\n /**\n * Updates the selected item's visual indicators.\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {Boolean} isActive to activate or deactivate the class.\n */\n _updateItemVisualIndicators(item: SortableItemModifier<T>, isActive: boolean) {\n const itemVisualClass = this.itemVisualClass;\n\n if (!itemVisualClass || !item) {\n return;\n }\n\n if (isActive) {\n item.element.classList.add(itemVisualClass);\n } else {\n item.element.classList.remove(itemVisualClass);\n }\n }\n\n /**\n * Updates the selected item's handle's visual indicators\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {boolean} isUpdate to update or not update.\n */\n _updateHandleVisualIndicators(item: SortableItemModifier<T>, isUpdate: boolean) {\n const handleVisualClass = this.handleVisualClass;\n\n if (handleVisualClass === NO_MODEL || !item) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const direction = this.direction;\n const index = sortedItems.indexOf(item);\n const handle = item.element.querySelector('[data-sortable-handle');\n const visualHandle = handle ? handle : item.element;\n const visualKeys: (keyof HandleVisualClass)[] = direction === 'y' ? ['UP', 'DOWN'] : ['LEFT', 'RIGHT'];\n\n visualKeys.forEach((visualKey) => {\n visualHandle.classList.remove(handleVisualClass[visualKey] ?? '');\n });\n\n if (!isUpdate) {\n return;\n }\n\n if (index > 0 && visualKeys[0]) {\n visualHandle.classList.add(handleVisualClass[visualKeys[0]] ?? '');\n }\n\n if (index < sortedItems.length - 1 && visualKeys[1]) {\n visualHandle.classList.add(handleVisualClass[visualKeys[1]] ?? '');\n }\n }\n\n /**\n * Sets focus on the current item or its handle.\n *\n * @param {Element} itemElement an DOM element representing an sortable-item.\n */\n _focusItem(itemElement: HTMLElement): void {\n const handle = itemElement.querySelector('[data-sortable-handle]') as HTMLElement | null;\n if (handle) {\n handle.focus();\n } else {\n // The consumer did not use a handle, so we set focus back to the item.\n itemElement.focus();\n }\n }\n\n /**\n * Enables keyboard reorder mode.\n */\n _enableKeyboardReorderMode(): void {\n this.isKeyboardReorderModeEnabled = true;\n }\n\n /**\n * Disables keyboard reorder mode\n */\n _disableKeyboardReorderMode(): void {\n this.isKeyboardReorderModeEnabled = false;\n }\n\n /**\n * Sets up the group as an application and make it programmatically focusable.\n */\n _setupA11yApplicationContainer(): void {\n this.element.setAttribute('role', 'application');\n this.element.tabIndex = -1;\n }\n\n /**\n * Tears down the `role=application` container.\n */\n _tearDownA11yApplicationContainer(): void {\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabIndex');\n }\n\n _prepareKeyboardReorderMode(): void {\n this._enableKeyboardReorderMode();\n this._setupA11yApplicationContainer();\n }\n\n // Begin of API\n\n /**\n @property direction\n @type string\n @default y\n */\n get direction() {\n return this.named.direction || 'y';\n }\n\n /**\n Called when order of items has been changed\n @property onChange\n @type Function\n @param {Object} groupModel group model (omitted if not set)\n @param {Object[]} newModel models in their new order\n @param {Object} itemModel model just dragged\n @default null\n */\n get onChange() {\n return this.named.onChange;\n }\n\n @service('ember-sortable-internal-state')\n declare sortableService: EmberSortableService<T>;\n\n /**\n * This is the group name used to keep groups separate if there are more than one on the screen at a time.\n * If no group is assigned a default is used\n *\n * @default \"_EmberSortableGroup\"\n * @returns {*|string}\n */\n get groupName(): string {\n return this.named.groupName || '_EmberSortableGroup';\n }\n\n /**\n This is an array of SortableItemModifiers\n\n @property items\n @type SortableItemModifier[]\n */\n get items(): SortableItemModifier<T>[] {\n return this._groupDef.items;\n }\n set(items: SortableItemModifier<T>[]) {\n this._groupDef.items = items;\n }\n\n /**\n * Announcer element\n *\n * @type {Element}\n */\n announcer: Element | null = null;\n\n /**\n Position for the first item.\n If spacing is present, first item's position will have to change as well.\n @property firstItemPosition\n @type Number\n */\n @computed('direction', 'sortedItems')\n get firstItemPosition(): Position {\n const sortedItems = this.sortedItems;\n\n const item = sortedItems[0];\n\n if (!item) {\n return {\n x: 0,\n y: 0,\n };\n }\n\n return {\n x: item.x - item.spacing,\n y: item.y - item.spacing,\n };\n }\n\n /**\n An array of DOM elements.\n @property sortedItems\n @type SortableItemModifier[]\n */\n get sortedItems(): SortableItemModifier<T>[] {\n const direction = this.direction;\n\n const groupStyles = getComputedStyle(this.element);\n const groupWidth = parseFloat(groupStyles.width);\n\n return this.items.sort((a, b) => {\n if (direction === 'grid') {\n const { ax, ay, bx, by } = this._calculateGridPosition(a, b, groupWidth);\n if (ay == by) return ax - bx;\n return ay - by;\n }\n return a[direction] - b[direction];\n });\n }\n\n /**\n * Enables keyboard navigation\n */\n @action\n activateKeyDown(selectedItem: SortableItemModifier<T>): void {\n this._selectedItem = selectedItem;\n this.isKeyDownEnabled = true;\n }\n\n /**\n * Disables keyboard navigation\n * Currently used to handle keydown events bubbling up from\n * elements that aren't meant to invoke keyboard navigation\n * by ignoring them.\n */\n @action\n deactivateKeyDown(): void {\n this.isKeyDownEnabled = false;\n }\n\n /**\n Register the group with this Sortable.\n @method registerGroup\n @param {SortableGroupModifier} group\n */\n @action\n registerGroup(group: SortableGroupModifier<T>): void {\n this._group = group;\n }\n\n /**\n De-register the group with this Sortable.\n @method deregisterGroup\n @param {SortableGroupModifier} group\n */\n @action\n deregisterGroup(group: SortableGroupModifier<T>) {\n if (this._group === group) {\n this._group = null;\n }\n }\n\n /**\n Prepare for sorting.\n Main purpose is to stash the current firstItemPosition so\n we don’t incur expensive re-layouts.\n @method _prepare\n */\n @action\n prepare() {\n this._firstItemPosition = this.firstItemPosition;\n }\n\n /**\n Update item positions (relatively to the first element position).\n @method update\n @param {SortableItemModifier[]} sortedItems\n */\n @action\n update(sortedItems: SortableItemModifier<T>[]): void {\n if (!sortedItems) {\n sortedItems = this.sortedItems;\n }\n\n // Position of the first element\n let axis = this._firstItemPosition;\n\n // Just in case we haven’t called prepare first.\n if (axis === undefined) {\n axis = this.firstItemPosition;\n }\n\n const direction = this.direction;\n\n let position = 0;\n let groupPositionRight = 0;\n let lastTopOffset = 0;\n let maxPrevHeight = 0;\n\n if (direction === 'grid') {\n position = axis.x;\n lastTopOffset = axis.y;\n const groupStyles = getComputedStyle(this.element);\n groupPositionRight = position + parseFloat(groupStyles.width);\n } else {\n position = axis[direction];\n }\n\n sortedItems.forEach((item) => {\n if (direction === 'grid' && position + item.width > groupPositionRight) {\n lastTopOffset = lastTopOffset + maxPrevHeight;\n position = axis.x;\n maxPrevHeight = 0;\n }\n\n if (!isDestroyed(item) && !item.isDragging) {\n if (direction === 'grid') {\n item.x = position;\n item.y = lastTopOffset;\n } else {\n set(item, direction, position);\n }\n }\n\n // add additional spacing around active element\n if (item.isBusy) {\n position += item.spacing * 2;\n }\n\n if (direction === 'grid') {\n if (item.height > maxPrevHeight) {\n maxPrevHeight = item.height;\n }\n\n position += item.width;\n }\n if (direction === 'x') {\n position += item.height;\n }\n if (direction === 'y') {\n position += item.height;\n }\n });\n }\n\n /**\n @method _commit\n */\n @action\n commit(): void {\n const items = this.sortedItems;\n const itemModels = items.map((item) => item.model);\n const draggedItem = items.find((item) => item.wasDropped);\n let draggedModel;\n\n if (draggedItem) {\n draggedItem.wasDropped = false; // Reset\n draggedModel = draggedItem.model;\n }\n\n this._updateItems();\n this._onChange(itemModels, draggedModel);\n }\n\n @action\n _onChange(itemModels: T[], draggedModel: T | undefined): void {\n if (this.onChange) {\n this.onChange(itemModels, draggedModel);\n }\n }\n\n /**\n * Keeps the UI in sync with actual changes.\n * Needed for drag and keyboard operations.\n */\n _updateItems(): void {\n const items = this.sortedItems;\n\n delete this._firstItemPosition;\n\n schedule('render', () => {\n items.forEach((item) => item.freeze());\n });\n\n schedule('afterRender', () => {\n items.forEach((item) => item.reset());\n });\n\n next(() => {\n schedule('render', () => {\n items.forEach((item) => item.thaw());\n });\n });\n }\n\n @action\n _createAnnouncer(): HTMLSpanElement {\n const announcer = document.createElement('span');\n announcer.setAttribute('aria-live', 'polite');\n announcer.classList.add('visually-hidden');\n return announcer;\n }\n\n _calculateGridPosition(\n a: SortableItemModifier<T>,\n b: SortableItemModifier<T>,\n groupWidth: number,\n ): {\n ax: number;\n ay: number;\n bx: number;\n by: number;\n } {\n const groupTopPos = (a.element.parentNode as HTMLElement | null)?.offsetTop ?? 0;\n const groupLeftPos = (a.element.parentNode as HTMLElement | null)?.offsetLeft ?? 0;\n\n const position = {\n ax: a.x,\n ay: a.y,\n bx: b.x,\n by: b.y,\n };\n\n if (a.isDragging) {\n const dragItemPos = this._calculateGridDragItemPos(\n position.ax,\n position.ay,\n position.bx,\n position.by,\n b.width,\n b.height,\n a.moveDirection,\n groupTopPos,\n groupLeftPos,\n groupWidth,\n );\n position.ax = dragItemPos.x;\n position.ay = dragItemPos.y;\n } else if (b.isDragging) {\n const dragItemPos = this._calculateGridDragItemPos(\n position.bx,\n position.by,\n position.ax,\n position.ay,\n a.width,\n a.height,\n b.moveDirection,\n groupTopPos,\n groupLeftPos,\n groupWidth,\n );\n position.bx = dragItemPos.x;\n position.by = dragItemPos.y;\n }\n\n // Math.hypot needs always a positive number (-5 = 5 in hypot).\n // As a negative number will be positive, we need to fake position from non dragged element\n if (a.isDragging && position.ax <= 0) {\n position.ax = 0;\n position.bx = 1;\n }\n\n if (b.isDragging && position.bx <= 0) {\n position.bx = 0;\n position.ax = 1;\n }\n\n return position;\n }\n\n _calculateGridDragItemPos(\n x: number,\n y: number,\n otherX: number,\n otherY: number,\n width: number,\n height: number,\n moveDirection: MoveDirection,\n groupTopPos: number,\n groupLeftPos: number,\n groupWidth: number,\n ): Position {\n const toleranceWidth = width / 4;\n const initialX = x;\n\n if (moveDirection.left) {\n x = x - toleranceWidth;\n }\n\n if (moveDirection.right) {\n x = x + toleranceWidth;\n // Calculate the maximum of items in row & the maximal x-position of last item\n const itemsPerRow = Math.floor(groupWidth / width);\n const possibleLastItemPos = (itemsPerRow - 1) * width + groupLeftPos;\n if (otherX > initialX && x + width > possibleLastItemPos - 1) {\n // Removing one pixel is necessary to move drag item before other element\n x = possibleLastItemPos - 1;\n }\n }\n\n if (y < groupTopPos) {\n y = groupTopPos;\n }\n\n const toleranceHeight = height / 4;\n\n // When item is moved a quarter of height to top, user wants to move up\n if (moveDirection.top && y - height + toleranceHeight <= otherY && y >= otherY) {\n y = otherY;\n // tolerance that it doesn't jump directly in previews line\n } else if (moveDirection.top && y >= otherY - toleranceHeight && y <= otherY) {\n y = otherY;\n }\n\n // When item is moved a quarter of height to bottom, user wants to move down\n if (moveDirection.bottom && y <= otherY + height - toleranceHeight && y >= otherY) {\n y = otherY;\n // tolerance that it doesn't jump directly in next line\n } else if (moveDirection.bottom && y > otherY - toleranceHeight && y <= otherY) {\n y = otherY;\n }\n\n return {\n x: x,\n y: y,\n };\n }\n\n // end of API\n\n addEventListener(): void {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('focusout', this.focusOut);\n }\n\n removeEventListener(): void {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('focusout', this.focusOut);\n }\n\n element!: HTMLElement;\n didSetup = false;\n named!: NamedArgs<SortableGroupModifierSignature<T>>;\n\n constructor(owner: Owner, args: ArgsFor<SortableGroupModifierSignature<T>>) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n override modify(\n element: HTMLElement,\n _positional: PositionalArgs<SortableGroupModifierSignature<T>>,\n named: NamedArgs<SortableGroupModifierSignature<T>>,\n ) {\n this.element = element;\n this.named = named;\n\n this.removeEventListener();\n\n if (!this.didSetup) {\n this._groupDef = this.sortableService.fetchGroup(this.groupName);\n this.announcer = this._createAnnouncer();\n this.element.insertAdjacentElement('afterend', this.announcer);\n this.sortableService.registerGroup(this.groupName, this);\n\n this.didSetup = true;\n }\n\n if (this.disabled) {\n return;\n }\n\n this.addEventListener();\n }\n}\n\n/**\n *\n * @param {SortableGroupModifier} instance\n */\nfunction cleanup<T>(instance: SortableGroupModifier<T>) {\n // todo cleanup the announcer\n if (instance.announcer?.parentNode) {\n instance.announcer.parentNode.removeChild(instance.announcer);\n }\n instance.removeEventListener();\n instance.sortableService.deregisterGroup(instance.groupName);\n}\n"],"names":["NO_MODEL","SortableGroupModifier","_dec","service","_dec2","computed","_class","Modifier","disabled","named","handleVisualClass","a11yAnnouncementConfig","defaultA11yAnnouncementConfig","itemVisualClass","a11yItemName","focusOut","isRetainingFocus","_isElementWithinHandle","document","activeElement","cancelKeyboardSelection","keyDown","event","isKeyDownEnabled","isKeyboardReorderModeEnabled","isEnterKey","isSpaceKey","_selectedItem","_prepareKeyboardReorderMode","_announceAction","ANNOUNCEMENT_ACTION_TYPES","ACTIVATE","_updateItemVisualIndicators","_updateHandleVisualIndicators","scheduleOnce","element","focus","preventDefault","_handleKeyboardReorder","closest","_move","fromIndex","toIndex","direction","sortedItems","item","nextItem","value","dimension","valueX","x","valueY","y","width","height","set","selectedItem","isDownArrowKey","moveItem","isUpArrowKey","isLeftArrowKey","isRightArrowKey","itemElement","CONFIRM","confirmKeyboardSelection","_focusItem","isEscapeKey","_selectedItemElement","CANCEL","moves","delta","sortedIndex","indexOf","newSortedIndex","length","MOVE","push","_disableKeyboardReorderMode","move","pop","_tearDownA11yApplicationContainer","_resetItemSelection","commit","type","index","announcer","config","maxLength","message","textContent","later","isActive","classList","add","remove","isUpdate","handle","querySelector","visualHandle","visualKeys","forEach","visualKey","_enableKeyboardReorderMode","_setupA11yApplicationContainer","setAttribute","tabIndex","removeAttribute","onChange","groupName","items","_groupDef","firstItemPosition","spacing","groupStyles","getComputedStyle","groupWidth","parseFloat","sort","a","b","ax","ay","bx","by","_calculateGridPosition","activateKeyDown","deactivateKeyDown","registerGroup","group","_group","deregisterGroup","prepare","_firstItemPosition","update","axis","undefined","position","groupPositionRight","lastTopOffset","maxPrevHeight","isDestroyed","isDragging","isBusy","itemModels","map","model","draggedItem","find","wasDropped","draggedModel","_updateItems","_onChange","schedule","freeze","reset","next","thaw","_createAnnouncer","createElement","groupTopPos","parentNode","offsetTop","groupLeftPos","offsetLeft","dragItemPos","_calculateGridDragItemPos","moveDirection","otherX","otherY","toleranceWidth","initialX","left","right","itemsPerRow","Math","floor","possibleLastItemPos","toleranceHeight","top","bottom","addEventListener","removeEventListener","constructor","owner","args","_defineProperty","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","didSetup","sortableService","fetchGroup","insertAdjacentElement","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","configurable","enumerable","writable","initializer","instance","removeChild"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as _defineProperty } from '../_rollupPluginBabelHelpers-543b1c36.js';
1
+ import { a as _defineProperty } from '../_rollupPluginBabelHelpers-a7bede49.js';
2
2
  import Modifier from 'ember-modifier';
3
3
 
4
4
  /**
@@ -20,11 +20,11 @@ class SortableHandleModifier extends Modifier {
20
20
  super(...args);
21
21
  _defineProperty(this, "didSetup", false);
22
22
  }
23
- modify(element /*, positional, named*/) {
23
+ modify(element) {
24
24
  if (!this.didSetup) {
25
25
  // take the model and look up the registered element, the tell that element you are the handle
26
- element.dataset.sortableHandle = true;
27
- element.tabIndex = '0';
26
+ element.dataset['sortableHandle'] = 'true';
27
+ element.setAttribute('tabIndex', '0');
28
28
  element.setAttribute('role', 'button');
29
29
  this.didSetup = true;
30
30
  }