@umbraco-cms/backoffice 14.0.0--preview005-d8ecd776 → 14.0.0--preview005-b4989b95

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 (31) hide show
  1. package/dist-cms/custom-elements.json +0 -14
  2. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +4 -4
  3. package/dist-cms/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.js +3 -3
  4. package/dist-cms/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.js +4 -5
  5. package/dist-cms/packages/core/components/multiple-text-string-input/input-multiple-text-string.element.js +4 -4
  6. package/dist-cms/packages/core/sorter/sorter.controller.d.ts +18 -6
  7. package/dist-cms/packages/core/sorter/sorter.controller.js +206 -189
  8. package/dist-cms/packages/documents/document-types/workspace/document-type-workspace-sorter.js +8 -8
  9. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.js +4 -4
  10. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.js +4 -4
  11. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.js +4 -4
  12. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +5 -3
  13. package/dist-cms/packages/media/media/components/input-media/input-media.element.js +5 -3
  14. package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-properties.element.js +4 -4
  15. package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-tab.element.js +4 -4
  16. package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit.element.js +4 -4
  17. package/dist-cms/packages/members/members/components/input-member/input-member.element.js +5 -3
  18. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  19. package/dist-cms/vscode-html-custom-data.json +0 -5
  20. package/examples/sorter-with-nested-containers/README.md +3 -0
  21. package/examples/sorter-with-nested-containers/index.ts +15 -0
  22. package/examples/sorter-with-nested-containers/sorter-dashboard.ts +90 -0
  23. package/examples/sorter-with-nested-containers/sorter-group.ts +103 -0
  24. package/examples/sorter-with-nested-containers/sorter-item.ts +58 -0
  25. package/examples/sorter-with-two-containers/README.md +1 -3
  26. package/examples/sorter-with-two-containers/sorter-dashboard.ts +1 -1
  27. package/examples/sorter-with-two-containers/sorter-group.ts +24 -48
  28. package/examples/sorter-with-two-containers/sorter-item.ts +16 -5
  29. package/package.json +2 -2
  30. package/dist-cms/packages/core/sorter/stories/test-sorter-controller.element.d.ts +0 -16
  31. package/dist-cms/packages/core/sorter/stories/test-sorter-controller.element.js +0 -134
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
- var _UmbSorterController_instances, _UmbSorterController_host, _UmbSorterController_config, _UmbSorterController_observer, _UmbSorterController_model, _UmbSorterController_rqaId, _UmbSorterController_containerElement, _UmbSorterController_currentContainerCtrl, _UmbSorterController_currentContainerElement, _UmbSorterController_useContainerShadowRoot, _UmbSorterController_scrollElement, _UmbSorterController_currentElement, _UmbSorterController_currentDragElement, _UmbSorterController_currentDragRect, _UmbSorterController_currentItem, _UmbSorterController_currentIndex, _UmbSorterController_dragX, _UmbSorterController_dragY, _UmbSorterController_lastIndicationContainerCtrl, _UmbSorterController_setupPlaceholderStyle, _UmbSorterController_removePlaceholderStyle, _UmbSorterController_setCurrentElement, _UmbSorterController_handleDragStart, _UmbSorterController_handleDragEnd, _UmbSorterController_handleDragMove, _UmbSorterController_updateDragMove, _UmbSorterController_moveElementTo, _UmbSorterController_autoScrollRAF, _UmbSorterController_autoScrollEl, _UmbSorterController_performAutoScroll, _UmbSorterController_stopAutoScroll;
12
+ var _UmbSorterController_instances, _a, _UmbSorterController_host, _UmbSorterController_config, _UmbSorterController_observer, _UmbSorterController_model, _UmbSorterController_rqaId, _UmbSorterController_containerElement, _UmbSorterController_useContainerShadowRoot, _UmbSorterController_scrollElement, _UmbSorterController_dragX, _UmbSorterController_dragY, _UmbSorterController_lastIndicationContainerCtrl, _UmbSorterController_setupPlaceholderStyle, _UmbSorterController_removePlaceholderStyle, _UmbSorterController_setCurrentElement, _UmbSorterController_handleDragStart, _UmbSorterController_handleDragEnd, _UmbSorterController_handleDragMove, _UmbSorterController_updateDragMove, _UmbSorterController_moveElementTo, _UmbSorterController_autoScrollRAF, _UmbSorterController_autoScrollEl, _UmbSorterController_performAutoScroll, _UmbSorterController_stopAutoScroll;
13
13
  const autoScrollSensitivity = 50;
14
14
  const autoScrollSpeed = 16;
15
15
  function isWithinRect(x, y, rect, modifier = 0) {
@@ -45,9 +45,6 @@ function getParentScrollElement(el, includeSelf) {
45
45
  }
46
46
  return null;
47
47
  }
48
- function preventDragOver(e) {
49
- e.preventDefault();
50
- }
51
48
  function setupIgnorerElements(element, ignorerSelectors) {
52
49
  ignorerSelectors.split(',').forEach(function (criteria) {
53
50
  element.querySelectorAll(criteria.trim()).forEach(setupPreventEvent);
@@ -72,6 +69,10 @@ function destroyPreventEvent(element) {
72
69
  */
73
70
  export class UmbSorterController {
74
71
  get controllerAlias() {
72
+ // We only support one Sorter Controller pr. Controller Host.
73
+ return 'umbSorterController';
74
+ }
75
+ get identifier() {
75
76
  return __classPrivateFieldGet(this, _UmbSorterController_config, "f").identifier;
76
77
  }
77
78
  constructor(host, config) {
@@ -82,15 +83,8 @@ export class UmbSorterController {
82
83
  _UmbSorterController_model.set(this, []);
83
84
  _UmbSorterController_rqaId.set(this, void 0);
84
85
  _UmbSorterController_containerElement.set(this, void 0);
85
- _UmbSorterController_currentContainerCtrl.set(this, this);
86
- _UmbSorterController_currentContainerElement.set(this, null);
87
86
  _UmbSorterController_useContainerShadowRoot.set(this, void 0);
88
87
  _UmbSorterController_scrollElement.set(this, void 0);
89
- _UmbSorterController_currentElement.set(this, void 0);
90
- _UmbSorterController_currentDragElement.set(this, void 0);
91
- _UmbSorterController_currentDragRect.set(this, void 0);
92
- _UmbSorterController_currentItem.set(this, void 0);
93
- _UmbSorterController_currentIndex.set(this, void 0);
94
88
  _UmbSorterController_dragX.set(this, 0);
95
89
  _UmbSorterController_dragY.set(this, 0);
96
90
  _UmbSorterController_lastIndicationContainerCtrl.set(this, null);
@@ -100,17 +94,12 @@ export class UmbSorterController {
100
94
  : __classPrivateFieldGet(this, _UmbSorterController_host, "f")) ?? __classPrivateFieldGet(this, _UmbSorterController_host, "f");
101
95
  __classPrivateFieldSet(this, _UmbSorterController_containerElement, containerEl, "f");
102
96
  __classPrivateFieldSet(this, _UmbSorterController_useContainerShadowRoot, __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f") === __classPrivateFieldGet(this, _UmbSorterController_host, "f"), "f");
103
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f") || __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f") === __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")) {
104
- __classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, containerEl, "f");
105
- }
106
97
  // Only look at the shadowRoot if the containerElement is host.
107
98
  const containerElement = __classPrivateFieldGet(this, _UmbSorterController_useContainerShadowRoot, "f")
108
99
  ? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")
109
100
  : __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f");
110
- containerElement.addEventListener('dragover', preventDragOver);
111
- __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")['__umbBlockGridSorterController'] = () => {
112
- return this;
113
- };
101
+ containerElement.addEventListener('dragover', this._itemDraggedOver);
102
+ // TODO: Do we need to handle dragleave?
114
103
  __classPrivateFieldGet(this, _UmbSorterController_observer, "f").disconnect();
115
104
  containerElement.querySelectorAll(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector).forEach((child) => {
116
105
  if (child.matches && child.matches(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector)) {
@@ -122,151 +111,130 @@ export class UmbSorterController {
122
111
  subtree: false,
123
112
  });
124
113
  };
114
+ this._itemDraggedOver = (e) => {
115
+ //if(UmbSorterController.activeSorter === this) return;
116
+ const dropSorter = _a.dropSorter;
117
+ if (!dropSorter || dropSorter.identifier !== this.identifier)
118
+ return;
119
+ if (dropSorter === this) {
120
+ e.preventDefault();
121
+ if (e.dataTransfer) {
122
+ e.dataTransfer.dropEffect = 'move';
123
+ }
124
+ // Do nothing as we are the active sorter.
125
+ __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_handleDragMove).call(this, e);
126
+ // Maybe we need to stop the event in this case.
127
+ // Do not bubble up to parent sorters:
128
+ e.stopPropagation();
129
+ return;
130
+ }
131
+ else {
132
+ // TODO: Check if dropping here is okay..
133
+ // If so lets set the approaching sorter:
134
+ _a.dropSorter = this;
135
+ // Do not bubble up to parent sorters:
136
+ e.stopPropagation();
137
+ }
138
+ };
125
139
  _UmbSorterController_handleDragStart.set(this, (event) => {
126
140
  const element = event.target.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector);
127
141
  if (!element)
128
142
  return;
129
- if (__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") && __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") !== element) {
143
+ if (_a.activeElement && _a.activeElement !== element) {
144
+ // TODO: Remove this console log at one point.
145
+ console.log("drag start realized that something was already active, so we'll end it. -------!!!!#€#%#€");
130
146
  __classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f").call(this);
131
147
  }
132
148
  event.stopPropagation();
133
149
  if (event.dataTransfer) {
134
- event.dataTransfer.effectAllowed = 'move'; // copyMove when we enhance the drag with clipboard data.
135
- event.dataTransfer.dropEffect = 'none'; // visual feedback when dropped.
150
+ event.dataTransfer.effectAllowed = 'all'; // copyMove when we enhance the drag with clipboard data.// defaults to 'all'
136
151
  }
137
152
  if (!__classPrivateFieldGet(this, _UmbSorterController_scrollElement, "f")) {
138
153
  __classPrivateFieldSet(this, _UmbSorterController_scrollElement, getParentScrollElement(__classPrivateFieldGet(this, _UmbSorterController_containerElement, "f"), true), "f");
139
154
  }
140
155
  __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setCurrentElement).call(this, element);
141
- __classPrivateFieldSet(this, _UmbSorterController_currentDragRect, __classPrivateFieldGet(this, _UmbSorterController_currentDragElement, "f")?.getBoundingClientRect(), "f");
142
- __classPrivateFieldSet(this, _UmbSorterController_currentItem, this.getItemOfElement(__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")), "f");
143
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")) {
156
+ _a.activeItem = this.getItemOfElement(_a.activeElement);
157
+ _a.originalSorter = this;
158
+ _a.originalIndex = __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(_a.activeItem);
159
+ if (!_a.activeItem) {
144
160
  console.error('Could not find item related to this element.');
145
161
  return;
146
162
  }
147
163
  // Get the current index of the item:
148
- __classPrivateFieldSet(this, _UmbSorterController_currentIndex, __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")), "f");
149
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f").style.transform = 'translateZ(0)'; // Solves problem with FireFox and ShadowDom in the drag-image.
164
+ _a.activeIndex = __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(_a.activeItem);
165
+ _a.activeElement.style.transform = 'translateZ(0)'; // Solves problem with FireFox and ShadowDom in the drag-image.
150
166
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").dataTransferResolver) {
151
- __classPrivateFieldGet(this, _UmbSorterController_config, "f").dataTransferResolver(event.dataTransfer, __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"));
167
+ __classPrivateFieldGet(this, _UmbSorterController_config, "f").dataTransferResolver(event.dataTransfer, _a.activeItem);
152
168
  }
153
169
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onStart) {
154
- __classPrivateFieldGet(this, _UmbSorterController_config, "f").onStart({ item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"), element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") });
170
+ __classPrivateFieldGet(this, _UmbSorterController_config, "f").onStart({
171
+ item: _a.activeItem,
172
+ element: _a.activeElement,
173
+ });
155
174
  }
156
- window.addEventListener('dragover', __classPrivateFieldGet(this, _UmbSorterController_handleDragMove, "f"));
157
- window.addEventListener('dragend', __classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f"));
175
+ // Assuming we can only drag one thing at the time.
176
+ _a.activeSorter = this;
177
+ _a.dropSorter = this;
158
178
  // We must wait one frame before changing the look of the block.
159
179
  __classPrivateFieldSet(this, _UmbSorterController_rqaId, requestAnimationFrame(() => {
160
180
  // It should be okay to use the same rqaId, as the move does not, or is okay not, to happen on first frame/drag-move.
161
181
  __classPrivateFieldSet(this, _UmbSorterController_rqaId, undefined, "f");
162
- if (__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
163
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f").style.transform = '';
164
- __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setupPlaceholderStyle).call(this);
182
+ if (_a.activeElement) {
183
+ _a.activeElement.style.transform = '';
165
184
  }
166
185
  }), "f");
186
+ return true;
167
187
  });
168
- _UmbSorterController_handleDragEnd.set(this, async () => {
169
- window.removeEventListener('dragover', __classPrivateFieldGet(this, _UmbSorterController_handleDragMove, "f"));
170
- window.removeEventListener('dragend', __classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f"));
171
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") || !__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")) {
188
+ _UmbSorterController_handleDragEnd.set(this, async (event) => {
189
+ // If not good drop, revert model?
190
+ if (!_a.activeElement || !_a.activeItem) {
172
191
  return;
173
192
  }
174
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f").style.transform = '';
193
+ if (_a.originalSorter && event?.dataTransfer != null && event.dataTransfer.dropEffect === 'none') {
194
+ // Revert move, to start position.
195
+ _a.originalSorter.moveItemInModel(_a.originalIndex ?? 0, _a.activeSorter);
196
+ }
197
+ _a.activeElement.style.transform = '';
175
198
  __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_removePlaceholderStyle).call(this);
176
199
  __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_stopAutoScroll).call(this);
177
200
  this.removeAllowIndication();
178
201
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onEnd) {
179
- __classPrivateFieldGet(this, _UmbSorterController_config, "f").onEnd({ item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"), element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") });
202
+ __classPrivateFieldGet(this, _UmbSorterController_config, "f").onEnd({
203
+ item: _a.activeItem,
204
+ element: _a.activeElement,
205
+ });
180
206
  }
181
207
  if (__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f")) {
182
208
  cancelAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f"));
183
209
  __classPrivateFieldSet(this, _UmbSorterController_rqaId, undefined, "f");
184
210
  }
185
- __classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f"), "f");
186
- __classPrivateFieldSet(this, _UmbSorterController_currentContainerCtrl, this, "f");
187
- __classPrivateFieldSet(this, _UmbSorterController_currentItem, undefined, "f");
188
- __classPrivateFieldSet(this, _UmbSorterController_currentElement, undefined, "f");
189
- __classPrivateFieldSet(this, _UmbSorterController_currentDragElement, undefined, "f");
190
- __classPrivateFieldSet(this, _UmbSorterController_currentDragRect, undefined, "f");
211
+ _a.activeItem = undefined;
212
+ _a.activeElement = undefined;
213
+ _a.activeDragElement = undefined;
214
+ _a.activeSorter = undefined;
215
+ _a.dropSorter = undefined;
216
+ _a.originalIndex = undefined;
217
+ _a.originalSorter = undefined;
191
218
  __classPrivateFieldSet(this, _UmbSorterController_dragX, 0, "f");
192
219
  __classPrivateFieldSet(this, _UmbSorterController_dragY, 0, "f");
193
220
  });
194
- _UmbSorterController_handleDragMove.set(this, (event) => {
195
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
196
- return;
197
- }
198
- const clientX = event.touches
199
- ? event.touches[0].clientX
200
- : event.clientX;
201
- const clientY = event.touches
202
- ? event.touches[0].clientY
203
- : event.clientY;
204
- if (clientX !== 0 && clientY !== 0) {
205
- if (__classPrivateFieldGet(this, _UmbSorterController_dragX, "f") === clientX && __classPrivateFieldGet(this, _UmbSorterController_dragY, "f") === clientY) {
206
- return;
207
- }
208
- __classPrivateFieldSet(this, _UmbSorterController_dragX, clientX, "f");
209
- __classPrivateFieldSet(this, _UmbSorterController_dragY, clientY, "f");
210
- this.handleAutoScroll(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"));
211
- __classPrivateFieldSet(this, _UmbSorterController_currentDragRect, __classPrivateFieldGet(this, _UmbSorterController_currentDragElement, "f").getBoundingClientRect(), "f");
212
- const insideCurrentRect = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), __classPrivateFieldGet(this, _UmbSorterController_currentDragRect, "f"));
213
- if (!insideCurrentRect) {
214
- if (__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f") === undefined) {
215
- __classPrivateFieldSet(this, _UmbSorterController_rqaId, requestAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_updateDragMove, "f")), "f");
216
- }
217
- }
218
- }
219
- });
220
221
  _UmbSorterController_updateDragMove.set(this, () => {
221
222
  __classPrivateFieldSet(this, _UmbSorterController_rqaId, undefined, "f");
222
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") || !__classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f") || !__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")) {
223
+ if (!_a.activeElement || !_a.activeItem) {
223
224
  return;
224
225
  }
225
- const currentElementRect = __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f").getBoundingClientRect();
226
+ // Maybe no need to check this twice, like we do it before the RAF an inside it, I think its fine to choose one of them.
227
+ const currentElementRect = _a.activeElement.getBoundingClientRect();
226
228
  const insideCurrentRect = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), currentElementRect);
227
229
  if (insideCurrentRect) {
228
230
  return;
229
231
  }
230
- let toBeCurrentContainerCtrl = undefined;
231
- // If we have a boundarySelector, try it. If we didn't get anything fall back to currentContainerElement:
232
- const currentBoundaryElement = (__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector
233
- ? __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f").closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector)
234
- : __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f")) ?? __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f");
235
- const currentBoundaryRect = currentBoundaryElement.getBoundingClientRect();
236
- const currentContainerHasItems = __classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f").hasOtherItemsThan(__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"));
237
- // if empty we will be move likely to accept an item (add 20px to the bounding box)
238
- // If we have items we must be 10px within the container to accept the move.
239
- const offsetEdge = currentContainerHasItems ? -10 : 20;
240
- if (!isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), currentBoundaryRect, offsetEdge)) {
241
- // we are outside the current container boundary, so lets see if there is a parent we can move to.
242
- const parentNode = __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f").parentNode;
243
- if (parentNode && __classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector) {
244
- // TODO: support multiple parent shadowDOMs?
245
- const parentContainer = parentNode.host
246
- ? parentNode.host.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector)
247
- : parentNode.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector);
248
- if (parentContainer) {
249
- const parentContainerCtrl = parentContainer['__umbBlockGridSorterController']();
250
- if (parentContainerCtrl.unique === this.controllerAlias) {
251
- __classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, parentContainer, "f");
252
- toBeCurrentContainerCtrl = parentContainerCtrl;
253
- if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange) {
254
- __classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange({
255
- item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"),
256
- element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"),
257
- //ownerVM: this.#currentContainerVM.ownerVM,
258
- });
259
- }
260
- }
261
- }
262
- }
263
- }
264
232
  const containerElement = __classPrivateFieldGet(this, _UmbSorterController_useContainerShadowRoot, "f")
265
- ? __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f")
266
- : __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f");
233
+ ? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")
234
+ : __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f");
267
235
  // We want to retrieve the children of the container, every time to ensure we got the right order and index
268
236
  const orderedContainerElements = Array.from(containerElement.querySelectorAll(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector));
269
- const currentContainerRect = __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f").getBoundingClientRect();
237
+ const currentContainerRect = __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").getBoundingClientRect();
270
238
  // gather elements on the same row.
271
239
  const elementsInSameRow = [];
272
240
  let placeholderIsInThisRow = false;
@@ -277,7 +245,7 @@ export class UmbSorterController {
277
245
  const dragElement = __classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector ? el.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector) : el;
278
246
  if (dragElement) {
279
247
  const dragElementRect = dragElement.getBoundingClientRect();
280
- if (el !== __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
248
+ if (el !== _a.activeElement) {
281
249
  elementsInSameRow.push({ el: el, dragRect: dragElementRect });
282
250
  }
283
251
  else {
@@ -302,54 +270,19 @@ export class UmbSorterController {
302
270
  });
303
271
  if (foundEl) {
304
272
  // If we are on top or closest to our self, we should not do anything.
305
- if (foundEl === __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
273
+ if (foundEl === _a.activeElement) {
306
274
  return;
307
275
  }
308
- const isInsideFound = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), foundElDragRect, 0);
309
- // If we are inside the found element, lets look for sub containers.
310
- // use the itemHasNestedContainersResolver, if not configured fallback to looking for the existence of a container via DOM.
311
- // TODO: Ability to look into shadowDOMs for sub containers?
312
- if (isInsideFound && __classPrivateFieldGet(this, _UmbSorterController_config, "f").itemHasNestedContainersResolver
313
- ? __classPrivateFieldGet(this, _UmbSorterController_config, "f").itemHasNestedContainersResolver(foundEl)
314
- : foundEl.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector)) {
315
- // Find all sub containers:
316
- const subLayouts = foundEl.querySelectorAll(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector);
317
- for (const subLayoutEl of subLayouts) {
318
- // Use boundary element or fallback to container element.
319
- const subBoundaryElement = (__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector ? subLayoutEl.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector) : subLayoutEl) ||
320
- subLayoutEl;
321
- const subBoundaryRect = subBoundaryElement.getBoundingClientRect();
322
- const subContainerHasItems = subLayoutEl.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector + ':not(.' + __classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass + ')');
323
- // gather elements on the same row.
324
- const subOffsetEdge = subContainerHasItems ? -10 : 20;
325
- if (isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), subBoundaryRect, subOffsetEdge)) {
326
- const subCtrl = subLayoutEl['__umbBlockGridSorterController']();
327
- if (subCtrl.unique === this.controllerAlias) {
328
- __classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, subLayoutEl, "f");
329
- toBeCurrentContainerCtrl = subCtrl;
330
- if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange) {
331
- __classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange({
332
- item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"),
333
- element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"),
334
- //ownerVM: this.#currentContainerVM.ownerVM,
335
- });
336
- }
337
- __classPrivateFieldGet(this, _UmbSorterController_updateDragMove, "f").call(this);
338
- return;
339
- }
340
- }
341
- }
342
- }
343
276
  // Indication if drop is good:
344
- if (this.updateAllowIndication(toBeCurrentContainerCtrl ?? __classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f"), __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")) === false) {
277
+ if (this.updateAllowIndication(_a.activeItem) === false) {
345
278
  return;
346
279
  }
347
280
  const verticalDirection = __classPrivateFieldGet(this, _UmbSorterController_config, "f").resolveVerticalDirection
348
281
  ? __classPrivateFieldGet(this, _UmbSorterController_config, "f").resolveVerticalDirection({
349
- containerElement: __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f"),
282
+ containerElement: __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f"),
350
283
  containerRect: currentContainerRect,
351
- item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"),
352
- element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"),
284
+ item: _a.activeItem,
285
+ element: _a.activeElement,
353
286
  elementRect: currentElementRect,
354
287
  relatedElement: foundEl,
355
288
  relatedRect: foundElDragRect,
@@ -386,19 +319,23 @@ export class UmbSorterController {
386
319
  }
387
320
  const foundElIndex = orderedContainerElements.indexOf(foundEl);
388
321
  const newIndex = placeAfter ? foundElIndex + 1 : foundElIndex;
389
- __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, toBeCurrentContainerCtrl, newIndex);
322
+ __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, newIndex);
390
323
  return;
391
324
  }
392
- // We skipped the above part cause we are above or below container:
325
+ // We skipped the above part cause we are above or below container, or within an empty container:
393
326
  // Indication if drop is good:
394
- if (this.updateAllowIndication(toBeCurrentContainerCtrl ?? __classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f"), __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")) === false) {
327
+ if (this.updateAllowIndication(_a.activeItem) === false) {
395
328
  return;
396
329
  }
397
- if (__classPrivateFieldGet(this, _UmbSorterController_dragY, "f") < currentContainerRect.top) {
398
- __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, toBeCurrentContainerCtrl, 0);
330
+ if (__classPrivateFieldGet(this, _UmbSorterController_model, "f").length === 0) {
331
+ // Here is no items, so we should just move into the top of the container.
332
+ __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, 0);
333
+ }
334
+ else if (__classPrivateFieldGet(this, _UmbSorterController_dragY, "f") < currentContainerRect.top) {
335
+ __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, 0);
399
336
  }
400
337
  else if (__classPrivateFieldGet(this, _UmbSorterController_dragY, "f") > currentContainerRect.bottom) {
401
- __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, toBeCurrentContainerCtrl, -1);
338
+ __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, -1);
402
339
  }
403
340
  });
404
341
  // TODO: Move auto scroll into its own class?
@@ -413,6 +350,7 @@ export class UmbSorterController {
413
350
  });
414
351
  __classPrivateFieldSet(this, _UmbSorterController_host, host, "f");
415
352
  // Set defaults:
353
+ config.identifier ?? (config.identifier = Symbol());
416
354
  config.ignorerSelector ?? (config.ignorerSelector = 'a, img, iframe');
417
355
  if (!config.placeholderClass && !config.placeholderAttr) {
418
356
  config.placeholderAttr = 'drag-placeholder';
@@ -440,15 +378,24 @@ export class UmbSorterController {
440
378
  }
441
379
  __classPrivateFieldSet(this, _UmbSorterController_model, model, "f");
442
380
  }
381
+ hasItem(unique) {
382
+ return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((x) => __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(x) === unique) !== undefined;
383
+ }
384
+ getItem(unique) {
385
+ return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((x) => __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(x) === unique);
386
+ }
443
387
  hostConnected() {
444
388
  requestAnimationFrame(this._onFirstRender);
445
389
  }
446
390
  hostDisconnected() {
447
- // TODO: Clean up??
391
+ // TODO: Is there more clean up to do??
448
392
  __classPrivateFieldGet(this, _UmbSorterController_observer, "f").disconnect();
449
393
  if (__classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")) {
450
- __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")['__umbBlockGridSorterController'] = undefined;
451
- __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").removeEventListener('dragover', preventDragOver);
394
+ // Only look at the shadowRoot if the containerElement is host.
395
+ const containerElement = __classPrivateFieldGet(this, _UmbSorterController_useContainerShadowRoot, "f")
396
+ ? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")
397
+ : __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f");
398
+ containerElement.removeEventListener('dragover', this._itemDraggedOver);
452
399
  __classPrivateFieldSet(this, _UmbSorterController_containerElement, undefined, "f");
453
400
  }
454
401
  }
@@ -459,11 +406,12 @@ export class UmbSorterController {
459
406
  if (!__classPrivateFieldGet(this, _UmbSorterController_config, "f").disabledItemSelector || !element.matches(__classPrivateFieldGet(this, _UmbSorterController_config, "f").disabledItemSelector)) {
460
407
  element.draggable = true;
461
408
  element.addEventListener('dragstart', __classPrivateFieldGet(this, _UmbSorterController_handleDragStart, "f"));
409
+ element.addEventListener('dragend', __classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f"));
462
410
  }
463
411
  // If we have a currentItem and the element matches, we should set the currentElement to this element.
464
- if (__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f") && __classPrivateFieldGet(this, _UmbSorterController_config, "f").compareElementToModel(element, __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"))) {
465
- if (__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") !== element) {
466
- console.log('THIS ACTUALLY HAPPENED... NOTICE THIS!');
412
+ if (_a.activeItem &&
413
+ __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfElement(element) === __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(_a.activeItem)) {
414
+ if (_a.activeElement !== element) {
467
415
  __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setCurrentElement).call(this, element);
468
416
  }
469
417
  }
@@ -473,13 +421,20 @@ export class UmbSorterController {
473
421
  destroyIgnorerElements(element, __classPrivateFieldGet(this, _UmbSorterController_config, "f").ignorerSelector);
474
422
  }
475
423
  element.removeEventListener('dragstart', __classPrivateFieldGet(this, _UmbSorterController_handleDragStart, "f"));
424
+ // We are not ready to remove the dragend or drop, as this is might be the active one just moving container:
425
+ //element.removeEventListener('dragend', this.#handleDragEnd);
426
+ //element.addEventListener('drop', this.#handleDrop);
476
427
  }
477
428
  /** Management methods: */
478
429
  getItemOfElement(element) {
479
430
  if (!element) {
480
- return undefined;
431
+ throw new Error('Element was not defined');
481
432
  }
482
- return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((entry) => __classPrivateFieldGet(this, _UmbSorterController_config, "f").compareElementToModel(element, entry));
433
+ const elementUnique = __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfElement(element);
434
+ if (!elementUnique) {
435
+ throw new Error('Could not find unique of element');
436
+ }
437
+ return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((entry) => elementUnique === __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(entry));
483
438
  }
484
439
  async removeItem(item) {
485
440
  if (!item) {
@@ -500,11 +455,32 @@ export class UmbSorterController {
500
455
  }
501
456
  return false;
502
457
  }
458
+ /*
459
+ public async insertItem(item: T, newIndex: number = 0) {
460
+ if (!item) {
461
+ return false;
462
+ }
463
+
464
+ if (this.#config.performItemInsert) {
465
+ const result = await this.#config.performItemInsert({ item, newIndex });
466
+ if (result === false) {
467
+ return false;
468
+ }
469
+ } else {
470
+ const newModel = [...this.#model];
471
+ newModel.splice(newIndex, 0, item);
472
+ this.#model = newModel;
473
+ this.#config.onChange?.({ model: newModel, item });
474
+ }
475
+ return false;
476
+ }
477
+ */
503
478
  hasOtherItemsThan(item) {
504
479
  return __classPrivateFieldGet(this, _UmbSorterController_model, "f").filter((x) => x !== item).length > 0;
505
480
  }
506
- async moveItemInModel(newIndex, element, fromCtrl) {
507
- const item = fromCtrl.getItemOfElement(element);
481
+ // TODO: Could get item via attr.
482
+ async moveItemInModel(newIndex, fromCtrl) {
483
+ const item = _a.activeItem;
508
484
  if (!item) {
509
485
  console.error('Could not find item of sync item');
510
486
  return false;
@@ -517,6 +493,10 @@ export class UmbSorterController {
517
493
  // Local move:
518
494
  // TODO: Maybe this should be replaceable/configurable:
519
495
  const oldIndex = __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(item);
496
+ if (oldIndex === -1) {
497
+ console.error('Could not find item in model');
498
+ return false;
499
+ }
520
500
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").performItemMove) {
521
501
  const result = await __classPrivateFieldGet(this, _UmbSorterController_config, "f").performItemMove({ item, newIndex, oldIndex });
522
502
  if (result === false) {
@@ -533,6 +513,7 @@ export class UmbSorterController {
533
513
  __classPrivateFieldSet(this, _UmbSorterController_model, newModel, "f");
534
514
  __classPrivateFieldGet(this, _UmbSorterController_config, "f").onChange?.({ model: newModel, item });
535
515
  }
516
+ _a.activeIndex = newIndex;
536
517
  }
537
518
  else {
538
519
  // Not a local move:
@@ -552,21 +533,30 @@ export class UmbSorterController {
552
533
  __classPrivateFieldSet(this, _UmbSorterController_model, newModel, "f");
553
534
  __classPrivateFieldGet(this, _UmbSorterController_config, "f").onChange?.({ model: newModel, item });
554
535
  }
536
+ // If everything went well, we can set new activeSorter to this:
537
+ _a.activeSorter = this;
538
+ _a.activeIndex = newIndex;
555
539
  }
556
540
  return true;
557
541
  }
558
- updateAllowIndication(controller, item) {
542
+ updateAllowIndication(item) {
543
+ // TODO: Allow indication.
544
+ /*
559
545
  // Remove old indication:
560
- if (__classPrivateFieldGet(this, _UmbSorterController_lastIndicationContainerCtrl, "f") !== null && __classPrivateFieldGet(this, _UmbSorterController_lastIndicationContainerCtrl, "f") !== controller) {
561
- __classPrivateFieldGet(this, _UmbSorterController_lastIndicationContainerCtrl, "f").notifyAllowed();
546
+ if (this.#lastIndicationContainerCtrl !== null && this.#lastIndicationContainerCtrl !== controller) {
547
+ this.#lastIndicationContainerCtrl.notifyAllowed();
562
548
  }
563
- __classPrivateFieldSet(this, _UmbSorterController_lastIndicationContainerCtrl, controller, "f");
549
+ this.#lastIndicationContainerCtrl = controller;
550
+
564
551
  if (controller.notifyRequestDrop({ item: item }) === true) {
565
552
  controller.notifyAllowed();
566
553
  return true;
567
554
  }
555
+
568
556
  controller.notifyDisallowed(); // This block is not accepted to we will indicate that its not allowed.
569
557
  return false;
558
+ */
559
+ return true;
570
560
  }
571
561
  removeAllowIndication() {
572
562
  // Remove old indication:
@@ -633,7 +623,7 @@ export class UmbSorterController {
633
623
  }
634
624
  destroy() {
635
625
  // Do something when host element is destroyed.
636
- if (__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
626
+ if (_a.activeElement) {
637
627
  __classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f").call(this);
638
628
  }
639
629
  __classPrivateFieldSet(this, _UmbSorterController_lastIndicationContainerCtrl, null, "f");
@@ -643,44 +633,71 @@ export class UmbSorterController {
643
633
  __classPrivateFieldSet(this, _UmbSorterController_scrollElement, null, "f");
644
634
  }
645
635
  }
646
- _UmbSorterController_host = new WeakMap(), _UmbSorterController_config = new WeakMap(), _UmbSorterController_observer = new WeakMap(), _UmbSorterController_model = new WeakMap(), _UmbSorterController_rqaId = new WeakMap(), _UmbSorterController_containerElement = new WeakMap(), _UmbSorterController_currentContainerCtrl = new WeakMap(), _UmbSorterController_currentContainerElement = new WeakMap(), _UmbSorterController_useContainerShadowRoot = new WeakMap(), _UmbSorterController_scrollElement = new WeakMap(), _UmbSorterController_currentElement = new WeakMap(), _UmbSorterController_currentDragElement = new WeakMap(), _UmbSorterController_currentDragRect = new WeakMap(), _UmbSorterController_currentItem = new WeakMap(), _UmbSorterController_currentIndex = new WeakMap(), _UmbSorterController_dragX = new WeakMap(), _UmbSorterController_dragY = new WeakMap(), _UmbSorterController_lastIndicationContainerCtrl = new WeakMap(), _UmbSorterController_handleDragStart = new WeakMap(), _UmbSorterController_handleDragEnd = new WeakMap(), _UmbSorterController_handleDragMove = new WeakMap(), _UmbSorterController_updateDragMove = new WeakMap(), _UmbSorterController_autoScrollRAF = new WeakMap(), _UmbSorterController_autoScrollEl = new WeakMap(), _UmbSorterController_performAutoScroll = new WeakMap(), _UmbSorterController_instances = new WeakSet(), _UmbSorterController_setupPlaceholderStyle = function _UmbSorterController_setupPlaceholderStyle() {
636
+ _a = UmbSorterController, _UmbSorterController_host = new WeakMap(), _UmbSorterController_config = new WeakMap(), _UmbSorterController_observer = new WeakMap(), _UmbSorterController_model = new WeakMap(), _UmbSorterController_rqaId = new WeakMap(), _UmbSorterController_containerElement = new WeakMap(), _UmbSorterController_useContainerShadowRoot = new WeakMap(), _UmbSorterController_scrollElement = new WeakMap(), _UmbSorterController_dragX = new WeakMap(), _UmbSorterController_dragY = new WeakMap(), _UmbSorterController_lastIndicationContainerCtrl = new WeakMap(), _UmbSorterController_handleDragStart = new WeakMap(), _UmbSorterController_handleDragEnd = new WeakMap(), _UmbSorterController_updateDragMove = new WeakMap(), _UmbSorterController_autoScrollRAF = new WeakMap(), _UmbSorterController_autoScrollEl = new WeakMap(), _UmbSorterController_performAutoScroll = new WeakMap(), _UmbSorterController_instances = new WeakSet(), _UmbSorterController_setupPlaceholderStyle = function _UmbSorterController_setupPlaceholderStyle() {
647
637
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass) {
648
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")?.classList.add(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass);
638
+ _a.activeElement?.classList.add(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass);
649
639
  }
650
640
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr) {
651
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")?.setAttribute(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr, '');
641
+ _a.activeElement?.setAttribute(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr, '');
652
642
  }
653
643
  }, _UmbSorterController_removePlaceholderStyle = function _UmbSorterController_removePlaceholderStyle() {
654
644
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass) {
655
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")?.classList.remove(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass);
645
+ _a.activeElement?.classList.remove(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass);
656
646
  }
657
647
  if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr) {
658
- __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")?.removeAttribute(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr);
648
+ _a.activeElement?.removeAttribute(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr);
659
649
  }
660
650
  }, _UmbSorterController_setCurrentElement = function _UmbSorterController_setCurrentElement(element) {
661
- __classPrivateFieldSet(this, _UmbSorterController_currentElement, element, "f");
662
- __classPrivateFieldSet(this, _UmbSorterController_currentDragElement, __classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector
651
+ _a.activeElement = element;
652
+ _a.activeDragElement = __classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector
663
653
  ? element.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector) ?? undefined
664
- : element, "f");
665
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentDragElement, "f")) {
654
+ : element;
655
+ if (!_a.activeDragElement) {
666
656
  throw new Error('Could not find drag element, query was made with the `draggableSelector` of "' +
667
657
  __classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector +
668
658
  '"');
669
659
  return;
670
660
  }
671
661
  __classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setupPlaceholderStyle).call(this);
672
- }, _UmbSorterController_moveElementTo = async function _UmbSorterController_moveElementTo(containerCtrl, newIndex) {
673
- if (!__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
662
+ }, _UmbSorterController_handleDragMove = function _UmbSorterController_handleDragMove(event) {
663
+ if (!_a.activeElement) {
674
664
  return;
675
665
  }
676
- containerCtrl ?? (containerCtrl = this);
677
- // If same container and same index, do nothing:
678
- if (__classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f") === containerCtrl && __classPrivateFieldGet(this, _UmbSorterController_currentIndex, "f") === newIndex)
666
+ const clientX = event.touches
667
+ ? event.touches[0].clientX
668
+ : event.clientX;
669
+ const clientY = event.touches
670
+ ? event.touches[0].clientY
671
+ : event.clientY;
672
+ if (clientX !== 0 && clientY !== 0) {
673
+ if (__classPrivateFieldGet(this, _UmbSorterController_dragX, "f") === clientX && __classPrivateFieldGet(this, _UmbSorterController_dragY, "f") === clientY) {
674
+ return;
675
+ }
676
+ __classPrivateFieldSet(this, _UmbSorterController_dragX, clientX, "f");
677
+ __classPrivateFieldSet(this, _UmbSorterController_dragY, clientY, "f");
678
+ this.handleAutoScroll(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"));
679
+ const activeDragRect = _a.activeDragElement.getBoundingClientRect();
680
+ const insideCurrentRect = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), activeDragRect);
681
+ if (!insideCurrentRect) {
682
+ if (__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f") === undefined) {
683
+ __classPrivateFieldSet(this, _UmbSorterController_rqaId, requestAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_updateDragMove, "f")), "f");
684
+ }
685
+ }
686
+ }
687
+ }, _UmbSorterController_moveElementTo =
688
+ //
689
+ async function _UmbSorterController_moveElementTo(newIndex) {
690
+ if (!_a.activeElement || !_a.activeSorter) {
679
691
  return;
680
- if (await containerCtrl.moveItemInModel(newIndex, __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"), __classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f"))) {
681
- __classPrivateFieldSet(this, _UmbSorterController_currentContainerCtrl, containerCtrl, "f");
682
- __classPrivateFieldSet(this, _UmbSorterController_currentIndex, newIndex, "f");
683
692
  }
693
+ const requestingSorter = _a.dropSorter;
694
+ if (!requestingSorter) {
695
+ throw new Error('Could not find requestingSorter');
696
+ }
697
+ // If same container and same index, do nothing:
698
+ if (requestingSorter === _a.activeSorter && _a.activeIndex === newIndex)
699
+ return;
700
+ await requestingSorter.moveItemInModel(newIndex, _a.activeSorter);
684
701
  }, _UmbSorterController_stopAutoScroll = function _UmbSorterController_stopAutoScroll() {
685
702
  cancelAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_autoScrollRAF, "f"));
686
703
  __classPrivateFieldSet(this, _UmbSorterController_autoScrollRAF, null, "f");