ember-sortable 5.1.1 → 5.1.2
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.
package/README.md
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
# ember-sortable
|
|
2
2
|
|
|
3
3
|
[](http://badge.fury.io/js/ember-sortable)
|
|
4
|
-
[](https://github.com/adopted-ember-addons/ember-sortable/actions?query=branch%3Amaster)
|
|
5
5
|
[](http://badge.fury.io/js/ember-sortable)
|
|
6
6
|
[](http://emberobserver.com/addons/ember-sortable)
|
|
7
7
|
[](https://codeclimate.com/github/jgwhite/ember-sortable)
|
|
8
8
|
|
|
9
9
|
Sortable UI primitives for Ember.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
[Check out the demo](https://adopted-ember-addons.github.io/ember-sortable/demo/)
|
|
11
|
+
[Check out the demo](https://ember-sortable.netlify.app/)
|
|
14
12
|
|
|
15
13
|
## Requirements
|
|
16
14
|
|
|
@@ -82,18 +80,22 @@ The modifier version does not support `groupModel`, use the currying of `action`
|
|
|
82
80
|
|
|
83
81
|
### Changing sort direction
|
|
84
82
|
|
|
85
|
-
To change sort direction, define `direction` on `sortable-group`
|
|
83
|
+
To change sort direction, define `direction` on `sortable-group`
|
|
84
|
+
Possible values are:
|
|
85
|
+
- `y` (default): allowes to move items up/down
|
|
86
|
+
- `x`: allowes to move items left/right
|
|
87
|
+
- `grid`: items can be moved in all directions inside a group
|
|
86
88
|
|
|
87
89
|
```hbs
|
|
88
|
-
<ol {{sortable-group direction="x" onChange=
|
|
90
|
+
<ol {{sortable-group direction="x" onChange=this.reorderItems}}>
|
|
89
91
|
```
|
|
90
92
|
|
|
91
93
|
### Changing spacing between currently dragged element and the rest of the group
|
|
92
94
|
|
|
93
|
-
When user starts to drag element, other elements jump back. Works
|
|
95
|
+
When user starts to drag element, other elements jump back. Works for all direction option.
|
|
94
96
|
|
|
95
97
|
In `y` case: elements above current one jump up, and elements below current one - jump down.
|
|
96
|
-
In `x` case: elements before current one jump to the left, and elements after current one - jump to the right.
|
|
98
|
+
In `x` / `grid` case: elements before current one jump to the left, and elements after current one - jump to the right.
|
|
97
99
|
|
|
98
100
|
To change this property, define `spacing` on `sortable-item` (default is `0`):
|
|
99
101
|
|
|
@@ -135,7 +137,7 @@ The classes look like this:
|
|
|
135
137
|
<li class="sortable-item is-activated">...</li>
|
|
136
138
|
```
|
|
137
139
|
|
|
138
|
-
In our [example app.css](
|
|
140
|
+
In our [example app.css](docs/app/styles/app.css) we apply a
|
|
139
141
|
transition of `.125s` in the default case:
|
|
140
142
|
|
|
141
143
|
```css
|
|
@@ -174,7 +176,7 @@ removed. Use this class to add a visual indicator that the item is selected and
|
|
|
174
176
|
### Drag Actions
|
|
175
177
|
|
|
176
178
|
The `onDragStart` and `onDragStop` actions are available for the
|
|
177
|
-
`sortable-item`s. You can provide an action
|
|
179
|
+
`sortable-item`s. You can provide an action to listen to these actions to
|
|
178
180
|
be notified when an item is being dragged or not.
|
|
179
181
|
|
|
180
182
|
When the action is called, the item's model will be provided as the only
|
|
@@ -402,24 +404,30 @@ For modifiers, please read this [migration guide](/MIGRATION_GUIDE_MODIFIERS.md)
|
|
|
402
404
|
|
|
403
405
|
## Developing
|
|
404
406
|
|
|
407
|
+
### Requirement
|
|
408
|
+
|
|
409
|
+
You need to install nodejs and [pnpm](https://pnpm.io/installation).
|
|
410
|
+
The specific versions you need, you can find [here](package.json#L19-L22)
|
|
411
|
+
|
|
405
412
|
### Setup
|
|
406
413
|
|
|
407
414
|
```sh
|
|
408
415
|
$ git clone git@github.com:adopted-ember-addons/ember-sortable
|
|
409
416
|
$ cd ember-sortable
|
|
410
|
-
$
|
|
417
|
+
$ pnpm install
|
|
411
418
|
```
|
|
412
419
|
|
|
413
420
|
### Dev Server
|
|
414
421
|
|
|
415
422
|
```sh
|
|
423
|
+
$ cd test-app
|
|
416
424
|
$ ember serve
|
|
417
425
|
```
|
|
418
426
|
|
|
419
427
|
### Running Tests
|
|
420
428
|
|
|
421
429
|
```sh
|
|
422
|
-
$
|
|
430
|
+
$ pnpm run test
|
|
423
431
|
```
|
|
424
432
|
|
|
425
433
|
### Publishing Demo
|
|
@@ -728,7 +728,7 @@ let SortableItemModifier = (_dec = inject('ember-sortable-internal-state'), (_cl
|
|
|
728
728
|
*/
|
|
729
729
|
get transitionDuration() {
|
|
730
730
|
const items = this.sortableGroup.sortedItems.filter(x => !x.isDragging && !x.isDropping);
|
|
731
|
-
let el = items[0]
|
|
731
|
+
let el = items[0]?.element ?? this.element; // Fallback when only one element is present in list
|
|
732
732
|
let rule = getComputedStyle(el).transitionDuration;
|
|
733
733
|
let match = rule.match(/([\d.]+)([ms]*)/);
|
|
734
734
|
if (match) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-item.js","sources":["../../src/modifiers/sortable-item.js"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\nimport Modifier from 'ember-modifier';\nimport { Promise, defer } from 'rsvp';\nimport { action, set } from '@ember/object';\nimport { DRAG_ACTIONS, ELEMENT_CLICK_ACTION, END_ACTIONS } from '../utils/constant';\nimport { run, throttle, bind, scheduleOnce, later } from '@ember/runloop';\nimport { DEBUG } from '@glimmer/env';\nimport { getX, getY } from '../utils/coordinate';\nimport ScrollContainer from '../system/scroll-container';\nimport scrollParent from '../system/scroll-parent';\nimport { getBorderSpacing } from '../utils/css-calculation';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { inject as service } from '@ember/service';\nimport { assert, deprecate } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\nimport { isTesting } from '@embroider/macros';\n\nconst sortableItemWaiter = buildWaiter('sortable-item-waiter');\n\n/**\n * Modifier to mark an element as an item to be reordered\n *\n * @param {Object} model The model that this item will represent\n * @param {boolean} [disabled=false] Set to true to make this item not sortable\n * @param {Function} [onDragStart] An optional callback for when dragging starts.\n * @param {Function} [onDragStop] An optional callback for when dragging stops.\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}}>↕</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableItemModifier extends Modifier {\n className = 'sortable-item';\n\n @service('ember-sortable-internal-state') sortableService;\n\n _sortableGroup;\n /**\n * The SortableGroupModifier this item belongs to. Assigned by the group\n * when it inspects all the items in the list\n *\n * @type SortableGroupModifier\n */\n get sortableGroup() {\n if (this._sortableGroup === undefined) {\n this._sortableGroup = this.sortableService.fetchGroup(this.groupName);\n assert(\n `No sortable group named ${this.groupName} found. Please check that the groups and items have the same groupName`,\n this._sortableGroup !== undefined\n );\n }\n return this._sortableGroup.groupModifier;\n }\n\n get model() {\n return this.named.model;\n }\n\n get direction() {\n return this.sortableGroup?.direction;\n }\n\n get groupDisabled() {\n return this.sortableGroup?.disabled;\n }\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 The frequency with which the group is informed\n that an update is required.\n @property updateInterval\n @type Number\n @default 125\n */\n get updateInterval() {\n return this.named.updateInterval || 125;\n }\n\n /**\n Additional spacing between active item and the rest of the elements.\n @property spacing\n @type Number\n @default 0[px]\n */\n get spacing() {\n return this.named.spacing || 0;\n }\n\n /**\n Removes the ability for the current item to be sorted\n @property disabled\n @type boolean\n @default false\n */\n get isDisabled() {\n deprecate(\n '\"isDraggingDisabled\" is deprecated. Please migrate to \"disabled\" named argument',\n !('isDraggingDisabled' in this.named),\n {\n id: 'ember-sortable.is-dragging-disabled',\n url: 'https://github.com/adopted-ember-addons/ember-sortable#readme',\n until: '3.0.0',\n for: 'ember-sortable',\n since: {\n available: '2.2.6',\n enabled: '2.2.6',\n },\n }\n );\n\n return this.groupDisabled || this.named.disabled || this.named.isDraggingDisabled || false;\n }\n\n /**\n Selector for the element to use as handle.\n 1. By default, we will hook it the yielded sortable-handle.\n 2. If you don't use the sortable-handle, the entire element will be used as the handle.\n 3. In very rare situations, if you want to use a handle, but not the sortable-handle,\n you can override this class with your own handle's selector. This behavior will be\n synonymous with v1\n @property handle\n @type String\n @default \"[data-sortable-handle]\"\n */\n get handle() {\n return this.named.handle || '[data-sortable-handle]';\n }\n\n handleElement;\n\n /**\n * Tolerance, in pixels, for when sorting should start.\n * If specified, sorting will not start until after mouse\n * is dragged beyond distance. Can be used to allow for clicks\n * on elements within a handle.\n *\n * @property distance\n * @type Integer\n * @default 0\n */\n get distance() {\n return this.named.distance || 0;\n }\n\n /**\n * True if the item is currently being dragged.\n *\n * @property isDragging\n * @type boolean\n * @default false\n * @protected\n */\n _isDragging = false;\n get isDragging() {\n return this._isDragging;\n }\n set isDragging(value) {\n if (value) {\n this.element.classList.add('is-dragging');\n } else {\n this.element.classList.remove('is-dragging');\n }\n this._isDragging = value;\n }\n\n /**\n * Gives info in which direction the element will be moved\n *\n * @property moveDirection\n * @type Object\n */\n get moveDirection() {\n const moveDirection = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n };\n\n if (!this.isDragging) {\n return moveDirection;\n }\n\n const dragOriginX = this._dragOriginX;\n const dragOriginY = this._dragOriginY;\n\n if (dragOriginX > this._pageX) {\n moveDirection.left = true;\n }\n\n if (dragOriginX < this._pageX) {\n moveDirection.right = true;\n }\n\n if (dragOriginY > this._pageY) {\n moveDirection.top = true;\n }\n\n if (dragOriginY < this._pageY) {\n moveDirection.bottom = true;\n }\n\n return moveDirection;\n }\n\n /**\n Action that fires when the item starts being dragged.\n @property onDragStart\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStart() {\n return this.named.onDragStart || ((item) => item);\n }\n\n /**\n Action that fires when the item stops being dragged.\n @property onDragStop\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStop() {\n return this.named.onDragStop || ((item) => item);\n }\n\n /**\n True if the item is currently dropping.\n @property isDropping\n @type Boolean\n @default false\n */\n _isDropping = false;\n get isDropping() {\n return this._isDropping;\n }\n set isDropping(value) {\n if (value) {\n this.element.classList.add('is-dropping');\n } else {\n this.element.classList.remove('is-dropping');\n }\n this._isDropping = value;\n }\n\n /**\n True if the item was dropped during the interaction\n @property wasDropped\n @type Boolean\n @default false\n */\n wasDropped = false;\n\n /**\n @property isBusy\n @type Boolean\n */\n get isBusy() {\n return this.isDragging || this.isDropping;\n }\n\n /**\n @property disableCheckScrollBounds\n */\n get disableCheckScrollBounds() {\n return this.named.disableCheckScrollBounds != undefined ? this.named.disableCheckScrollBounds : isTesting();\n }\n\n /**\n @method mouseDown\n */\n @action\n mouseDown(event) {\n if (event.which !== 1) {\n return;\n }\n if (event.ctrlKey) {\n return;\n }\n\n this._primeDrag(event);\n }\n\n @action\n keyDown(event) {\n if (this.isDisabled) {\n return;\n }\n\n this.setupHandleElement();\n\n // If the event is coming from within the item, we do not want to activate keyboard reorder mode.\n if (event.target === this.handleElement || event.target === this.element) {\n this.sortableGroup.activateKeyDown(this);\n } else {\n this.sortableGroup.deactivateKeyDown();\n }\n }\n\n /**\n @method touchStart\n */\n @action\n touchStart(event) {\n this._primeDrag(event);\n }\n\n /**\n @method freeze\n */\n freeze() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = 'none';\n }\n\n /**\n @method reset\n */\n reset() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n delete this._y;\n delete this._x;\n\n el.style.transform = '';\n }\n\n /**\n @method thaw\n */\n thaw() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = '';\n }\n\n /**\n * Setup event listeners for drag and drop\n *\n * @method _primeDrag\n * @param {Event} startEvent JS Event object\n * @private\n */\n _primeDrag(startEvent) {\n if (this.isDisabled) {\n return;\n }\n\n if (this.handleElement && !startEvent.target.closest(this.handle)) {\n return;\n }\n\n startEvent.preventDefault();\n startEvent.stopPropagation();\n\n this._prepareDragListener = bind(this, this._prepareDrag, startEvent);\n\n DRAG_ACTIONS.forEach((event) => window.addEventListener(event, this._prepareDragListener));\n\n this._cancelStartDragListener = () => {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, this._prepareDragListener));\n };\n\n const selfCancellingCallback = () => {\n END_ACTIONS.forEach((event) => window.removeEventListener(event, selfCancellingCallback));\n this._cancelStartDragListener();\n };\n\n END_ACTIONS.forEach((event) => window.addEventListener(event, selfCancellingCallback));\n }\n\n /**\n * Prepares for the drag event\n *\n * @method _prepareDrag\n * @param {Event} startEvent JS Event object\n * @param {Event} event JS Event object\n * @private\n */\n _prepareDrag(startEvent, event) {\n // Block drag start while any item has busy state\n if (this.sortableGroup.sortedItems.some((x) => x.isBusy)) {\n return;\n }\n let distance = this.distance;\n let dx = Math.abs(getX(startEvent) - getX(event));\n let dy = Math.abs(getY(startEvent) - getY(event));\n\n if (distance <= dx || distance <= dy) {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, this._prepareDragListener));\n this._startDrag(startEvent);\n }\n }\n\n /**\n * Start dragging & setup more event listeners\n *\n * @method _startDrag\n * @param {Event} event JS Event object\n * @private\n */\n _startDrag(event) {\n if (this.isBusy) {\n return;\n }\n\n let drag = this._makeDragHandler(event);\n let dragThrottled = (ev) => throttle(this, drag, ev, 16, false);\n\n let drop = () => {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, dragThrottled));\n END_ACTIONS.forEach((event) => window.removeEventListener(event, drop));\n\n run(() => {\n this._drop();\n });\n };\n\n DRAG_ACTIONS.forEach((event) => window.addEventListener(event, dragThrottled));\n END_ACTIONS.forEach((event) => window.addEventListener(event, drop));\n\n this.sortableGroup.prepare();\n set(this, 'isDragging', true);\n this.onDragStart(this.model);\n this._scrollOnEdges(drag);\n }\n\n /**\n The maximum scroll speed when dragging element.\n @property maxScrollSpeed\n @default 20\n */\n maxScrollSpeed = 20;\n\n _scrollOnEdges(drag) {\n let groupDirection = this.direction;\n let element = this.element;\n let scrollContainer = new ScrollContainer(scrollParent(element));\n let itemContainer = {\n width: parseInt(getComputedStyle(element).width, 10),\n get height() {\n return parseInt(getComputedStyle(element).height, 10);\n },\n get left() {\n return element.getBoundingClientRect().left;\n },\n get right() {\n return this.left + this.width;\n },\n get top() {\n return element.getBoundingClientRect().top;\n },\n get bottom() {\n return this.top + this.height;\n },\n };\n\n let leadingEdgeKey, trailingEdgeKey, scrollKey, pageKey;\n if (groupDirection === 'grid' || groupDirection === 'x') {\n leadingEdgeKey = 'left';\n trailingEdgeKey = 'right';\n scrollKey = 'scrollLeft';\n pageKey = 'pageX';\n } else {\n leadingEdgeKey = 'top';\n trailingEdgeKey = 'bottom';\n scrollKey = 'scrollTop';\n pageKey = 'pageY';\n }\n\n let createFakeEvent = () => {\n if (this._pageX == null && this._pageY == null) {\n return;\n }\n return {\n pageX: this._pageX,\n pageY: this._pageY,\n clientX: this._pageX,\n clientY: this._pageY,\n };\n };\n\n // Set a trigger padding that will start scrolling\n // the box when the item reaches within padding pixels\n // of the edge of the scroll container.\n let checkScrollBounds = () => {\n let leadingEdge = itemContainer[leadingEdgeKey];\n let trailingEdge = itemContainer[trailingEdgeKey];\n let scroll = scrollContainer[scrollKey]();\n\n let delta = 0;\n if (trailingEdge >= scrollContainer[trailingEdgeKey]) {\n delta = trailingEdge - scrollContainer[trailingEdgeKey];\n } else if (leadingEdge <= scrollContainer[leadingEdgeKey]) {\n delta = leadingEdge - scrollContainer[leadingEdgeKey];\n }\n\n if (delta !== 0) {\n let speed = this.maxScrollSpeed;\n delta = Math.min(Math.max(delta, -1 * speed), speed);\n\n delta = scrollContainer[scrollKey](scroll + delta) - scroll;\n\n let event = createFakeEvent();\n if (event) {\n if (scrollContainer.isWindow) {\n event[pageKey] += delta;\n }\n run(() => drag(event));\n }\n }\n if (this.isDragging) {\n requestAnimationFrame(checkScrollBounds);\n }\n };\n\n if (!this.disableCheckScrollBounds) {\n requestAnimationFrame(checkScrollBounds);\n }\n }\n\n /**\n @method _makeDragHandler\n @param {Event} startEvent\n @return {Function}\n @private\n */\n _makeDragHandler(startEvent) {\n const groupDirection = this.direction;\n let dragOrigin;\n let elementOrigin;\n let scrollOrigin;\n let parentElement = this.element.parentNode;\n\n if (groupDirection === 'grid') {\n this.startEvent = startEvent;\n const dragOriginX = getX(startEvent);\n this._dragOriginX = getX(startEvent);\n const elementOriginX = this.x;\n const scrollOriginX = parentElement.getBoundingClientRect().left;\n\n const dragOriginY = getY(startEvent);\n this._dragOriginY = dragOriginY;\n const elementOriginY = this.y;\n const scrollOriginY = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageX = getX(event);\n let dx = this._pageX - dragOriginX;\n let scrollX = parentElement.getBoundingClientRect().left;\n let x = elementOriginX + dx + (scrollOriginX - scrollX);\n\n this._pageY = getY(event);\n let dy = this._pageY - dragOriginY;\n let scrollY = parentElement.getBoundingClientRect().top;\n let y = elementOriginY + dy + (scrollOriginY - scrollY);\n\n this._drag(x, y);\n };\n }\n\n if (groupDirection === 'x') {\n dragOrigin = getX(startEvent);\n elementOrigin = this.x;\n scrollOrigin = parentElement.getBoundingClientRect().left;\n\n return (event) => {\n this._pageX = getX(event);\n let dx = this._pageX - dragOrigin;\n let scrollX = parentElement.getBoundingClientRect().left;\n let x = elementOrigin + dx + (scrollOrigin - scrollX);\n\n this._drag(x, 0);\n };\n }\n\n if (groupDirection === 'y') {\n dragOrigin = getY(startEvent);\n elementOrigin = this.y;\n scrollOrigin = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageY = getY(event);\n let dy = this._pageY - dragOrigin;\n let scrollY = parentElement.getBoundingClientRect().top;\n let y = elementOrigin + dy + (scrollOrigin - scrollY);\n\n this._drag(0, y);\n };\n }\n }\n\n /**\n @method _scheduleApplyPosition\n @private\n */\n _scheduleApplyPosition() {\n scheduleOnce('render', this, '_applyPosition');\n }\n\n /**\n @method _applyPosition\n @private\n */\n _applyPosition() {\n if (!this.element || !this.element) {\n return;\n }\n\n const groupDirection = this.direction;\n\n if (groupDirection === 'grid') {\n let x = this.x;\n let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n let y = this.y;\n let dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translate(${dx}px, ${dy}px)`;\n }\n if (groupDirection === 'x') {\n let x = this.x;\n let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n this.element.style.transform = `translateX(${dx}px)`;\n }\n if (groupDirection === 'y') {\n let y = this.y;\n let dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translateY(${dy}px)`;\n }\n }\n\n /**\n @method _drag\n @private\n */\n _drag(dimensionX, dimensionY) {\n if (!this.isDragging) {\n return;\n }\n let updateInterval = this.updateInterval;\n\n this.x = dimensionX;\n this.y = dimensionY;\n\n throttle(this, this.sortableGroup.update, updateInterval);\n }\n\n /**\n @method _drop\n @private\n */\n _drop() {\n if (!this.element) {\n return;\n }\n\n let transitionPromise = this._waitForTransition();\n\n this._preventClick();\n\n // Get sortableItems before making drop end and pass it to update function\n // This is necessary for direction grid, otherwise ordering is not working correctly (because in sortedItems we check if item isDragged)\n // Calling this getter here, makes no difference for other directions\n const sortedItems = this.sortableGroup.sortedItems;\n\n set(this, 'isDragging', false);\n set(this, 'isDropping', true);\n\n this.sortableGroup.update(sortedItems);\n\n let allTransitionPromise = this._waitForAllTransitions();\n\n Promise.all([transitionPromise, allTransitionPromise]).then(() => this._complete());\n }\n\n /**\n @method _preventClick\n @private\n */\n _preventClick() {\n const selfCancellingCallback = (event) => {\n this.element.removeEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);\n this._preventClickHandler(event);\n };\n\n this.element.addEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);\n }\n\n /**\n @method _preventClickHandler\n @private\n */\n _preventClickHandler(e) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n /**\n @method _waitForTransition\n @private\n @return Promise\n */\n _waitForTransition() {\n let waiterToken;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const deferred = defer();\n this.element.addEventListener('transitionend', deferred.resolve);\n transitionPromise = deferred.promise.finally(() => {\n this.element.removeEventListener('transitionend', deferred.resolve);\n });\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _waitForTransitions\n @private\n @return Promise\n */\n _waitForAllTransitions() {\n let waiterToken;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const animations = this.sortableGroup.sortedItems.map((x) => x.element.getAnimations());\n\n const animationPromises = animations.map((animation) => {\n return animation.finished;\n });\n\n transitionPromise = Promise.all(animationPromises);\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _complete\n @private\n */\n _complete() {\n this.onDragStop(this.model);\n set(this, 'isDropping', false);\n set(this, 'wasDropped', true);\n this.sortableGroup.commit();\n }\n\n get isAnimated() {\n if (!this.element) {\n return undefined;\n }\n\n let el = this.element;\n let transitionProperty = getComputedStyle(el).transitionProperty;\n\n return /all|transform/.test(transitionProperty) && this.transitionDuration > 0;\n }\n\n /**\n The current transition duration in milliseconds.\n @property transitionDuration\n @type Number\n */\n get transitionDuration() {\n const items = this.sortableGroup.sortedItems.filter((x) => !x.isDragging && !x.isDropping);\n let el = items[0].element ?? this.element; // Fallback when only one element is present in list\n let rule = getComputedStyle(el).transitionDuration;\n let match = rule.match(/([\\d.]+)([ms]*)/);\n\n if (match) {\n let value = parseFloat(match[1]);\n let unit = match[2];\n\n if (unit === 's') {\n value = value * 1000;\n }\n\n return value;\n }\n\n return 0;\n }\n\n /**\n Horizontal position of the item.\n @property x\n @type Number\n */\n get x() {\n if (this._x === undefined) {\n let marginLeft = parseFloat(getComputedStyle(this.element).marginLeft);\n this._x = this.element.scrollLeft + this.element.offsetLeft - marginLeft;\n }\n\n return this._x;\n }\n set x(value) {\n if (value !== this._x) {\n this._x = value;\n this._scheduleApplyPosition();\n }\n }\n\n /**\n Vertical position of the item relative to its offset parent.\n @property y\n @type Number\n */\n get y() {\n if (this._y === undefined) {\n this._y = this.element.offsetTop;\n }\n\n return this._y;\n }\n\n set y(value) {\n if (value !== this._y) {\n this._y = value;\n this._scheduleApplyPosition();\n }\n }\n\n /**\n Width of the item.\n @property height\n @type Number\n */\n get width() {\n let el = this.element;\n let width = el.offsetWidth;\n let elStyles = getComputedStyle(el);\n\n width += parseInt(elStyles.marginLeft) + parseInt(elStyles.marginRight); // equal to jQuery.outerWidth(true)\n\n width += getBorderSpacing(el).horizontal;\n\n return width;\n }\n\n /**\n Height of the item including margins.\n @property height\n @type Number\n */\n get height() {\n let el = this.element;\n let height = el.offsetHeight;\n let elStyles = getComputedStyle(el);\n\n // This is needed atm only for grid, to fix jumping on drag-start.\n // In test-app it looks like there is a side-effect when we activate also for direction vertical.\n // If any user will anytime report a jumping in vertical direction, we should activate for every direction and fix our test-app\n if (this.direction === 'grid') {\n height += parseFloat(elStyles.marginTop);\n }\n\n height += parseFloat(elStyles.marginBottom);\n\n height += getBorderSpacing(el).vertical;\n\n return height;\n }\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('mousedown', this.mouseDown);\n this.element.addEventListener('touchstart', this.touchStart);\n this.listenersRegistered = true;\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('mousedown', this.mouseDown);\n this.element.removeEventListener('touchstart', this.touchStart);\n this.listenersRegistered = false;\n }\n\n setupHandleElement(disabled = false) {\n this.handleElement = this.element.querySelector(this.handle);\n\n const touchAction = disabled ? 'initial' : 'none';\n if (this.handleElement) {\n this.handleElement.style['touch-action'] = touchAction;\n } else {\n this.element.style['touch-action'] = touchAction;\n }\n }\n\n element;\n didSetup = false;\n\n /**\n * tracks if event listeners have been registered. Registering event handlers is unnecessary if item is disabled.\n */\n listenersRegistered = 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.element.classList.add(this.className);\n\n // Instead of using `event.preventDefault()` in the 'primeDrag' event,\n // (doesn't work in Chrome 56), we set touch-action: none as a workaround.\n this.setupHandleElement(this.named.disabled);\n\n if (!this.didSetup) {\n this.element.dataset.sortableItem = true;\n this.sortableService.registerItem(this.groupName, this);\n this.didSetup = true;\n }\n\n if (this.named.disabled && this.listenersRegistered) {\n this.removeEventListener();\n } else if (!this.named.disabled && !this.listenersRegistered) {\n this.addEventListener();\n }\n }\n}\n\n/**\n *\n * @param {SortableItemModifier} instance\n */\nfunction cleanup(instance) {\n instance.removeEventListener();\n instance.sortableService.deregisterItem(instance.groupName, instance);\n}\n"],"names":["sortableItemWaiter","buildWaiter","SortableItemModifier","_dec","service","_class","Modifier","sortableGroup","_sortableGroup","undefined","sortableService","fetchGroup","groupName","assert","groupModifier","model","named","direction","groupDisabled","disabled","updateInterval","spacing","isDisabled","deprecate","id","url","until","for","since","available","enabled","isDraggingDisabled","handle","distance","isDragging","_isDragging","value","element","classList","add","remove","moveDirection","left","right","top","bottom","dragOriginX","_dragOriginX","dragOriginY","_dragOriginY","_pageX","_pageY","onDragStart","item","onDragStop","isDropping","_isDropping","isBusy","disableCheckScrollBounds","isTesting","mouseDown","event","which","ctrlKey","_primeDrag","keyDown","setupHandleElement","target","handleElement","activateKeyDown","deactivateKeyDown","touchStart","freeze","el","style","transition","reset","_y","_x","transform","thaw","startEvent","closest","preventDefault","stopPropagation","_prepareDragListener","bind","_prepareDrag","DRAG_ACTIONS","forEach","window","addEventListener","_cancelStartDragListener","removeEventListener","selfCancellingCallback","END_ACTIONS","sortedItems","some","x","dx","Math","abs","getX","dy","getY","_startDrag","drag","_makeDragHandler","dragThrottled","ev","throttle","drop","run","_drop","prepare","set","_scrollOnEdges","groupDirection","scrollContainer","ScrollContainer","scrollParent","itemContainer","width","parseInt","getComputedStyle","height","getBoundingClientRect","leadingEdgeKey","trailingEdgeKey","scrollKey","pageKey","createFakeEvent","pageX","pageY","clientX","clientY","checkScrollBounds","leadingEdge","trailingEdge","scroll","delta","speed","maxScrollSpeed","min","max","isWindow","requestAnimationFrame","dragOrigin","elementOrigin","scrollOrigin","parentElement","parentNode","elementOriginX","scrollOriginX","elementOriginY","y","scrollOriginY","scrollX","scrollY","_drag","_scheduleApplyPosition","scheduleOnce","_applyPosition","offsetLeft","parseFloat","marginLeft","offsetTop","dimensionX","dimensionY","update","transitionPromise","_waitForTransition","_preventClick","allTransitionPromise","_waitForAllTransitions","Promise","all","then","_complete","ELEMENT_CLICK_ACTION","_preventClickHandler","e","stopImmediatePropagation","waiterToken","DEBUG","beginAsync","isAnimated","deferred","defer","resolve","promise","finally","duration","transitionDuration","later","endAsync","animations","map","getAnimations","animationPromises","animation","finished","commit","transitionProperty","test","items","filter","rule","match","unit","scrollLeft","offsetWidth","elStyles","marginRight","getBorderSpacing","horizontal","offsetHeight","marginTop","marginBottom","vertical","listenersRegistered","querySelector","touchAction","constructor","owner","args","_defineProperty","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","className","didSetup","dataset","sortableItem","registerItem","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","instance","deregisterItem"],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,MAAMA,kBAAkB,GAAGC,WAAW,CAAC,sBAAsB,CAAC,CAAA;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlBA,IAmBqBC,oBAAoB,IAAAC,IAAA,GAGtCC,MAAO,CAAC,+BAA+B,CAAC,GAAAC,MAAA,GAH5B,MAAMH,oBAAoB,SAASI,QAAQ,CAAC;AAMzD;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,aAAaA,GAAG;AAClB,IAAA,IAAI,IAAI,CAACC,cAAc,KAAKC,SAAS,EAAE;AACrC,MAAA,IAAI,CAACD,cAAc,GAAG,IAAI,CAACE,eAAe,CAACC,UAAU,CAAC,IAAI,CAACC,SAAS,CAAC,CAAA;AACrEC,MAAAA,MAAM,CACJ,CAAA,wBAAA,EAA2B,IAAI,CAACD,SAAS,CAAA,sEAAA,CAAwE,EACjH,IAAI,CAACJ,cAAc,KAAKC,SAC1B,CAAC,CAAA;AACH,KAAA;AACA,IAAA,OAAO,IAAI,CAACD,cAAc,CAACM,aAAa,CAAA;AAC1C,GAAA;EAEA,IAAIC,KAAKA,GAAG;AACV,IAAA,OAAO,IAAI,CAACC,KAAK,CAACD,KAAK,CAAA;AACzB,GAAA;EAEA,IAAIE,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAACV,aAAa,EAAEU,SAAS,CAAA;AACtC,GAAA;EAEA,IAAIC,aAAaA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACX,aAAa,EAAEY,QAAQ,CAAA;AACrC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIP,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAACI,KAAK,CAACJ,SAAS,IAAI,qBAAqB,CAAA;AACtD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIQ,cAAcA,GAAG;AACnB,IAAA,OAAO,IAAI,CAACJ,KAAK,CAACI,cAAc,IAAI,GAAG,CAAA;AACzC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,OAAOA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACL,KAAK,CAACK,OAAO,IAAI,CAAC,CAAA;AAChC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAG;IACfC,SAAS,CACP,kFAAkF,EAClF,EAAE,oBAAoB,IAAI,IAAI,CAACP,KAAK,CAAC,EACrC;AACEQ,MAAAA,EAAE,EAAE,qCAAqC;AACzCC,MAAAA,GAAG,EAAE,+DAA+D;AACpEC,MAAAA,KAAK,EAAE,OAAO;AACdC,MAAAA,GAAG,EAAE,gBAAgB;AACrBC,MAAAA,KAAK,EAAE;AACLC,QAAAA,SAAS,EAAE,OAAO;AAClBC,QAAAA,OAAO,EAAE,OAAA;AACX,OAAA;AACF,KACF,CAAC,CAAA;AAED,IAAA,OAAO,IAAI,CAACZ,aAAa,IAAI,IAAI,CAACF,KAAK,CAACG,QAAQ,IAAI,IAAI,CAACH,KAAK,CAACe,kBAAkB,IAAI,KAAK,CAAA;AAC5F,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAMA,GAAG;AACX,IAAA,OAAO,IAAI,CAAChB,KAAK,CAACgB,MAAM,IAAI,wBAAwB,CAAA;AACtD,GAAA;AAIA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACjB,KAAK,CAACiB,QAAQ,IAAI,CAAC,CAAA;AACjC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;EAEE,IAAIC,UAAUA,GAAG;IACf,OAAO,IAAI,CAACC,WAAW,CAAA;AACzB,GAAA;EACA,IAAID,UAAUA,CAACE,KAAK,EAAE;AACpB,IAAA,IAAIA,KAAK,EAAE;MACT,IAAI,CAACC,OAAO,CAACC,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC3C,KAAC,MAAM;MACL,IAAI,CAACF,OAAO,CAACC,SAAS,CAACE,MAAM,CAAC,aAAa,CAAC,CAAA;AAC9C,KAAA;IACA,IAAI,CAACL,WAAW,GAAGC,KAAK,CAAA;AAC1B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIK,aAAaA,GAAG;AAClB,IAAA,MAAMA,aAAa,GAAG;AACpBC,MAAAA,IAAI,EAAE,KAAK;AACXC,MAAAA,KAAK,EAAE,KAAK;AACZC,MAAAA,GAAG,EAAE,KAAK;AACVC,MAAAA,MAAM,EAAE,KAAA;KACT,CAAA;AAED,IAAA,IAAI,CAAC,IAAI,CAACX,UAAU,EAAE;AACpB,MAAA,OAAOO,aAAa,CAAA;AACtB,KAAA;AAEA,IAAA,MAAMK,WAAW,GAAG,IAAI,CAACC,YAAY,CAAA;AACrC,IAAA,MAAMC,WAAW,GAAG,IAAI,CAACC,YAAY,CAAA;AAErC,IAAA,IAAIH,WAAW,GAAG,IAAI,CAACI,MAAM,EAAE;MAC7BT,aAAa,CAACC,IAAI,GAAG,IAAI,CAAA;AAC3B,KAAA;AAEA,IAAA,IAAII,WAAW,GAAG,IAAI,CAACI,MAAM,EAAE;MAC7BT,aAAa,CAACE,KAAK,GAAG,IAAI,CAAA;AAC5B,KAAA;AAEA,IAAA,IAAIK,WAAW,GAAG,IAAI,CAACG,MAAM,EAAE;MAC7BV,aAAa,CAACG,GAAG,GAAG,IAAI,CAAA;AAC1B,KAAA;AAEA,IAAA,IAAII,WAAW,GAAG,IAAI,CAACG,MAAM,EAAE;MAC7BV,aAAa,CAACI,MAAM,GAAG,IAAI,CAAA;AAC7B,KAAA;AAEA,IAAA,OAAOJ,aAAa,CAAA;AACtB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIW,WAAWA,GAAG;IAChB,OAAO,IAAI,CAACpC,KAAK,CAACoC,WAAW,KAAMC,IAAI,IAAKA,IAAI,CAAC,CAAA;AACnD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAG;IACf,OAAO,IAAI,CAACtC,KAAK,CAACsC,UAAU,KAAMD,IAAI,IAAKA,IAAI,CAAC,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;;EAEE,IAAIE,UAAUA,GAAG;IACf,OAAO,IAAI,CAACC,WAAW,CAAA;AACzB,GAAA;EACA,IAAID,UAAUA,CAACnB,KAAK,EAAE;AACpB,IAAA,IAAIA,KAAK,EAAE;MACT,IAAI,CAACC,OAAO,CAACC,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC3C,KAAC,MAAM;MACL,IAAI,CAACF,OAAO,CAACC,SAAS,CAACE,MAAM,CAAC,aAAa,CAAC,CAAA;AAC9C,KAAA;IACA,IAAI,CAACgB,WAAW,GAAGpB,KAAK,CAAA;AAC1B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;EACE,IAAIqB,MAAMA,GAAG;AACX,IAAA,OAAO,IAAI,CAACvB,UAAU,IAAI,IAAI,CAACqB,UAAU,CAAA;AAC3C,GAAA;;AAEA;AACF;AACA;EACE,IAAIG,wBAAwBA,GAAG;AAC7B,IAAA,OAAO,IAAI,CAAC1C,KAAK,CAAC0C,wBAAwB,IAAIjD,SAAS,GAAG,IAAI,CAACO,KAAK,CAAC0C,wBAAwB,GAAGC,SAAS,EAAE,CAAA;AAC7G,GAAA;;AAEA;AACF;AACA;EAEEC,SAASA,CAACC,KAAK,EAAE;AACf,IAAA,IAAIA,KAAK,CAACC,KAAK,KAAK,CAAC,EAAE;AACrB,MAAA,OAAA;AACF,KAAA;IACA,IAAID,KAAK,CAACE,OAAO,EAAE;AACjB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,CAACC,UAAU,CAACH,KAAK,CAAC,CAAA;AACxB,GAAA;EAGAI,OAAOA,CAACJ,KAAK,EAAE;IACb,IAAI,IAAI,CAACvC,UAAU,EAAE;AACnB,MAAA,OAAA;AACF,KAAA;IAEA,IAAI,CAAC4C,kBAAkB,EAAE,CAAA;;AAEzB;AACA,IAAA,IAAIL,KAAK,CAACM,MAAM,KAAK,IAAI,CAACC,aAAa,IAAIP,KAAK,CAACM,MAAM,KAAK,IAAI,CAAC9B,OAAO,EAAE;AACxE,MAAA,IAAI,CAAC9B,aAAa,CAAC8D,eAAe,CAAC,IAAI,CAAC,CAAA;AAC1C,KAAC,MAAM;AACL,MAAA,IAAI,CAAC9D,aAAa,CAAC+D,iBAAiB,EAAE,CAAA;AACxC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;EAEEC,UAAUA,CAACV,KAAK,EAAE;AAChB,IAAA,IAAI,CAACG,UAAU,CAACH,KAAK,CAAC,CAAA;AACxB,GAAA;;AAEA;AACF;AACA;AACEW,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAIC,EAAE,GAAG,IAAI,CAACpC,OAAO,CAAA;IACrB,IAAI,CAACoC,EAAE,EAAE;AACP,MAAA,OAAA;AACF,KAAA;AAEAA,IAAAA,EAAE,CAACC,KAAK,CAACC,UAAU,GAAG,MAAM,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACEC,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAIH,EAAE,GAAG,IAAI,CAACpC,OAAO,CAAA;IACrB,IAAI,CAACoC,EAAE,EAAE;AACP,MAAA,OAAA;AACF,KAAA;IAEA,OAAO,IAAI,CAACI,EAAE,CAAA;IACd,OAAO,IAAI,CAACC,EAAE,CAAA;AAEdL,IAAAA,EAAE,CAACC,KAAK,CAACK,SAAS,GAAG,EAAE,CAAA;AACzB,GAAA;;AAEA;AACF;AACA;AACEC,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAIP,EAAE,GAAG,IAAI,CAACpC,OAAO,CAAA;IACrB,IAAI,CAACoC,EAAE,EAAE;AACP,MAAA,OAAA;AACF,KAAA;AAEAA,IAAAA,EAAE,CAACC,KAAK,CAACC,UAAU,GAAG,EAAE,CAAA;AAC1B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEX,UAAUA,CAACiB,UAAU,EAAE;IACrB,IAAI,IAAI,CAAC3D,UAAU,EAAE;AACnB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,IAAI,CAAC8C,aAAa,IAAI,CAACa,UAAU,CAACd,MAAM,CAACe,OAAO,CAAC,IAAI,CAAClD,MAAM,CAAC,EAAE;AACjE,MAAA,OAAA;AACF,KAAA;IAEAiD,UAAU,CAACE,cAAc,EAAE,CAAA;IAC3BF,UAAU,CAACG,eAAe,EAAE,CAAA;AAE5B,IAAA,IAAI,CAACC,oBAAoB,GAAGC,IAAI,CAAC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAEN,UAAU,CAAC,CAAA;AAErEO,IAAAA,YAAY,CAACC,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACC,gBAAgB,CAAC9B,KAAK,EAAE,IAAI,CAACwB,oBAAoB,CAAC,CAAC,CAAA;IAE1F,IAAI,CAACO,wBAAwB,GAAG,MAAM;AACpCJ,MAAAA,YAAY,CAACC,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACG,mBAAmB,CAAChC,KAAK,EAAE,IAAI,CAACwB,oBAAoB,CAAC,CAAC,CAAA;KAC9F,CAAA;IAED,MAAMS,sBAAsB,GAAGA,MAAM;AACnCC,MAAAA,WAAW,CAACN,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACG,mBAAmB,CAAChC,KAAK,EAAEiC,sBAAsB,CAAC,CAAC,CAAA;MACzF,IAAI,CAACF,wBAAwB,EAAE,CAAA;KAChC,CAAA;AAEDG,IAAAA,WAAW,CAACN,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACC,gBAAgB,CAAC9B,KAAK,EAAEiC,sBAAsB,CAAC,CAAC,CAAA;AACxF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEP,EAAAA,YAAYA,CAACN,UAAU,EAAEpB,KAAK,EAAE;AAC9B;AACA,IAAA,IAAI,IAAI,CAACtD,aAAa,CAACyF,WAAW,CAACC,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACzC,MAAM,CAAC,EAAE;AACxD,MAAA,OAAA;AACF,KAAA;AACA,IAAA,IAAIxB,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAA;AAC5B,IAAA,IAAIkE,EAAE,GAAGC,IAAI,CAACC,GAAG,CAACC,IAAI,CAACrB,UAAU,CAAC,GAAGqB,IAAI,CAACzC,KAAK,CAAC,CAAC,CAAA;AACjD,IAAA,IAAI0C,EAAE,GAAGH,IAAI,CAACC,GAAG,CAACG,IAAI,CAACvB,UAAU,CAAC,GAAGuB,IAAI,CAAC3C,KAAK,CAAC,CAAC,CAAA;AAEjD,IAAA,IAAI5B,QAAQ,IAAIkE,EAAE,IAAIlE,QAAQ,IAAIsE,EAAE,EAAE;AACpCf,MAAAA,YAAY,CAACC,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACG,mBAAmB,CAAChC,KAAK,EAAE,IAAI,CAACwB,oBAAoB,CAAC,CAAC,CAAA;AAC7F,MAAA,IAAI,CAACoB,UAAU,CAACxB,UAAU,CAAC,CAAA;AAC7B,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEwB,UAAUA,CAAC5C,KAAK,EAAE;IAChB,IAAI,IAAI,CAACJ,MAAM,EAAE;AACf,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIiD,IAAI,GAAG,IAAI,CAACC,gBAAgB,CAAC9C,KAAK,CAAC,CAAA;AACvC,IAAA,IAAI+C,aAAa,GAAIC,EAAE,IAAKC,QAAQ,CAAC,IAAI,EAAEJ,IAAI,EAAEG,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IAE/D,IAAIE,IAAI,GAAGA,MAAM;AACfvB,MAAAA,YAAY,CAACC,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACG,mBAAmB,CAAChC,KAAK,EAAE+C,aAAa,CAAC,CAAC,CAAA;AACjFb,MAAAA,WAAW,CAACN,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACG,mBAAmB,CAAChC,KAAK,EAAEkD,IAAI,CAAC,CAAC,CAAA;AAEvEC,MAAAA,GAAG,CAAC,MAAM;QACR,IAAI,CAACC,KAAK,EAAE,CAAA;AACd,OAAC,CAAC,CAAA;KACH,CAAA;AAEDzB,IAAAA,YAAY,CAACC,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACC,gBAAgB,CAAC9B,KAAK,EAAE+C,aAAa,CAAC,CAAC,CAAA;AAC9Eb,IAAAA,WAAW,CAACN,OAAO,CAAE5B,KAAK,IAAK6B,MAAM,CAACC,gBAAgB,CAAC9B,KAAK,EAAEkD,IAAI,CAAC,CAAC,CAAA;AAEpE,IAAA,IAAI,CAACxG,aAAa,CAAC2G,OAAO,EAAE,CAAA;AAC5BC,IAAAA,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC/D,WAAW,CAAC,IAAI,CAACrC,KAAK,CAAC,CAAA;AAC5B,IAAA,IAAI,CAACqG,cAAc,CAACV,IAAI,CAAC,CAAA;AAC3B,GAAA;;AAEA;AACF;AACA;AACA;AACA;;EAGEU,cAAcA,CAACV,IAAI,EAAE;AACnB,IAAA,IAAIW,cAAc,GAAG,IAAI,CAACpG,SAAS,CAAA;AACnC,IAAA,IAAIoB,OAAO,GAAG,IAAI,CAACA,OAAO,CAAA;IAC1B,IAAIiF,eAAe,GAAG,IAAIC,eAAe,CAACC,YAAY,CAACnF,OAAO,CAAC,CAAC,CAAA;AAChE,IAAA,IAAIoF,aAAa,GAAG;MAClBC,KAAK,EAAEC,QAAQ,CAACC,gBAAgB,CAACvF,OAAO,CAAC,CAACqF,KAAK,EAAE,EAAE,CAAC;MACpD,IAAIG,MAAMA,GAAG;QACX,OAAOF,QAAQ,CAACC,gBAAgB,CAACvF,OAAO,CAAC,CAACwF,MAAM,EAAE,EAAE,CAAC,CAAA;OACtD;MACD,IAAInF,IAAIA,GAAG;AACT,QAAA,OAAOL,OAAO,CAACyF,qBAAqB,EAAE,CAACpF,IAAI,CAAA;OAC5C;MACD,IAAIC,KAAKA,GAAG;AACV,QAAA,OAAO,IAAI,CAACD,IAAI,GAAG,IAAI,CAACgF,KAAK,CAAA;OAC9B;MACD,IAAI9E,GAAGA,GAAG;AACR,QAAA,OAAOP,OAAO,CAACyF,qBAAqB,EAAE,CAAClF,GAAG,CAAA;OAC3C;MACD,IAAIC,MAAMA,GAAG;AACX,QAAA,OAAO,IAAI,CAACD,GAAG,GAAG,IAAI,CAACiF,MAAM,CAAA;AAC/B,OAAA;KACD,CAAA;AAED,IAAA,IAAIE,cAAc,EAAEC,eAAe,EAAEC,SAAS,EAAEC,OAAO,CAAA;AACvD,IAAA,IAAIb,cAAc,KAAK,MAAM,IAAIA,cAAc,KAAK,GAAG,EAAE;AACvDU,MAAAA,cAAc,GAAG,MAAM,CAAA;AACvBC,MAAAA,eAAe,GAAG,OAAO,CAAA;AACzBC,MAAAA,SAAS,GAAG,YAAY,CAAA;AACxBC,MAAAA,OAAO,GAAG,OAAO,CAAA;AACnB,KAAC,MAAM;AACLH,MAAAA,cAAc,GAAG,KAAK,CAAA;AACtBC,MAAAA,eAAe,GAAG,QAAQ,CAAA;AAC1BC,MAAAA,SAAS,GAAG,WAAW,CAAA;AACvBC,MAAAA,OAAO,GAAG,OAAO,CAAA;AACnB,KAAA;IAEA,IAAIC,eAAe,GAAGA,MAAM;MAC1B,IAAI,IAAI,CAACjF,MAAM,IAAI,IAAI,IAAI,IAAI,CAACC,MAAM,IAAI,IAAI,EAAE;AAC9C,QAAA,OAAA;AACF,OAAA;MACA,OAAO;QACLiF,KAAK,EAAE,IAAI,CAAClF,MAAM;QAClBmF,KAAK,EAAE,IAAI,CAAClF,MAAM;QAClBmF,OAAO,EAAE,IAAI,CAACpF,MAAM;QACpBqF,OAAO,EAAE,IAAI,CAACpF,MAAAA;OACf,CAAA;KACF,CAAA;;AAED;AACA;AACA;IACA,IAAIqF,iBAAiB,GAAGA,MAAM;AAC5B,MAAA,IAAIC,WAAW,GAAGhB,aAAa,CAACM,cAAc,CAAC,CAAA;AAC/C,MAAA,IAAIW,YAAY,GAAGjB,aAAa,CAACO,eAAe,CAAC,CAAA;AACjD,MAAA,IAAIW,MAAM,GAAGrB,eAAe,CAACW,SAAS,CAAC,EAAE,CAAA;MAEzC,IAAIW,KAAK,GAAG,CAAC,CAAA;AACb,MAAA,IAAIF,YAAY,IAAIpB,eAAe,CAACU,eAAe,CAAC,EAAE;AACpDY,QAAAA,KAAK,GAAGF,YAAY,GAAGpB,eAAe,CAACU,eAAe,CAAC,CAAA;OACxD,MAAM,IAAIS,WAAW,IAAInB,eAAe,CAACS,cAAc,CAAC,EAAE;AACzDa,QAAAA,KAAK,GAAGH,WAAW,GAAGnB,eAAe,CAACS,cAAc,CAAC,CAAA;AACvD,OAAA;MAEA,IAAIa,KAAK,KAAK,CAAC,EAAE;AACf,QAAA,IAAIC,KAAK,GAAG,IAAI,CAACC,cAAc,CAAA;AAC/BF,QAAAA,KAAK,GAAGxC,IAAI,CAAC2C,GAAG,CAAC3C,IAAI,CAAC4C,GAAG,CAACJ,KAAK,EAAE,CAAC,CAAC,GAAGC,KAAK,CAAC,EAAEA,KAAK,CAAC,CAAA;QAEpDD,KAAK,GAAGtB,eAAe,CAACW,SAAS,CAAC,CAACU,MAAM,GAAGC,KAAK,CAAC,GAAGD,MAAM,CAAA;AAE3D,QAAA,IAAI9E,KAAK,GAAGsE,eAAe,EAAE,CAAA;AAC7B,QAAA,IAAItE,KAAK,EAAE;UACT,IAAIyD,eAAe,CAAC2B,QAAQ,EAAE;AAC5BpF,YAAAA,KAAK,CAACqE,OAAO,CAAC,IAAIU,KAAK,CAAA;AACzB,WAAA;AACA5B,UAAAA,GAAG,CAAC,MAAMN,IAAI,CAAC7C,KAAK,CAAC,CAAC,CAAA;AACxB,SAAA;AACF,OAAA;MACA,IAAI,IAAI,CAAC3B,UAAU,EAAE;QACnBgH,qBAAqB,CAACV,iBAAiB,CAAC,CAAA;AAC1C,OAAA;KACD,CAAA;AAED,IAAA,IAAI,CAAC,IAAI,CAAC9E,wBAAwB,EAAE;MAClCwF,qBAAqB,CAACV,iBAAiB,CAAC,CAAA;AAC1C,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE7B,gBAAgBA,CAAC1B,UAAU,EAAE;AAC3B,IAAA,MAAMoC,cAAc,GAAG,IAAI,CAACpG,SAAS,CAAA;AACrC,IAAA,IAAIkI,UAAU,CAAA;AACd,IAAA,IAAIC,aAAa,CAAA;AACjB,IAAA,IAAIC,YAAY,CAAA;AAChB,IAAA,IAAIC,aAAa,GAAG,IAAI,CAACjH,OAAO,CAACkH,UAAU,CAAA;IAE3C,IAAIlC,cAAc,KAAK,MAAM,EAAE;MAC7B,IAAI,CAACpC,UAAU,GAAGA,UAAU,CAAA;AAC5B,MAAA,MAAMnC,WAAW,GAAGwD,IAAI,CAACrB,UAAU,CAAC,CAAA;AACpC,MAAA,IAAI,CAAClC,YAAY,GAAGuD,IAAI,CAACrB,UAAU,CAAC,CAAA;AACpC,MAAA,MAAMuE,cAAc,GAAG,IAAI,CAACtD,CAAC,CAAA;MAC7B,MAAMuD,aAAa,GAAGH,aAAa,CAACxB,qBAAqB,EAAE,CAACpF,IAAI,CAAA;AAEhE,MAAA,MAAMM,WAAW,GAAGwD,IAAI,CAACvB,UAAU,CAAC,CAAA;MACpC,IAAI,CAAChC,YAAY,GAAGD,WAAW,CAAA;AAC/B,MAAA,MAAM0G,cAAc,GAAG,IAAI,CAACC,CAAC,CAAA;MAC7B,MAAMC,aAAa,GAAGN,aAAa,CAACxB,qBAAqB,EAAE,CAAClF,GAAG,CAAA;AAE/D,MAAA,OAAQiB,KAAK,IAAK;AAChB,QAAA,IAAI,CAACX,MAAM,GAAGoD,IAAI,CAACzC,KAAK,CAAC,CAAA;AACzB,QAAA,IAAIsC,EAAE,GAAG,IAAI,CAACjD,MAAM,GAAGJ,WAAW,CAAA;QAClC,IAAI+G,OAAO,GAAGP,aAAa,CAACxB,qBAAqB,EAAE,CAACpF,IAAI,CAAA;QACxD,IAAIwD,CAAC,GAAGsD,cAAc,GAAGrD,EAAE,IAAIsD,aAAa,GAAGI,OAAO,CAAC,CAAA;AAEvD,QAAA,IAAI,CAAC1G,MAAM,GAAGqD,IAAI,CAAC3C,KAAK,CAAC,CAAA;AACzB,QAAA,IAAI0C,EAAE,GAAG,IAAI,CAACpD,MAAM,GAAGH,WAAW,CAAA;QAClC,IAAI8G,OAAO,GAAGR,aAAa,CAACxB,qBAAqB,EAAE,CAAClF,GAAG,CAAA;QACvD,IAAI+G,CAAC,GAAGD,cAAc,GAAGnD,EAAE,IAAIqD,aAAa,GAAGE,OAAO,CAAC,CAAA;AAEvD,QAAA,IAAI,CAACC,KAAK,CAAC7D,CAAC,EAAEyD,CAAC,CAAC,CAAA;OACjB,CAAA;AACH,KAAA;IAEA,IAAItC,cAAc,KAAK,GAAG,EAAE;AAC1B8B,MAAAA,UAAU,GAAG7C,IAAI,CAACrB,UAAU,CAAC,CAAA;MAC7BmE,aAAa,GAAG,IAAI,CAAClD,CAAC,CAAA;AACtBmD,MAAAA,YAAY,GAAGC,aAAa,CAACxB,qBAAqB,EAAE,CAACpF,IAAI,CAAA;AAEzD,MAAA,OAAQmB,KAAK,IAAK;AAChB,QAAA,IAAI,CAACX,MAAM,GAAGoD,IAAI,CAACzC,KAAK,CAAC,CAAA;AACzB,QAAA,IAAIsC,EAAE,GAAG,IAAI,CAACjD,MAAM,GAAGiG,UAAU,CAAA;QACjC,IAAIU,OAAO,GAAGP,aAAa,CAACxB,qBAAqB,EAAE,CAACpF,IAAI,CAAA;QACxD,IAAIwD,CAAC,GAAGkD,aAAa,GAAGjD,EAAE,IAAIkD,YAAY,GAAGQ,OAAO,CAAC,CAAA;AAErD,QAAA,IAAI,CAACE,KAAK,CAAC7D,CAAC,EAAE,CAAC,CAAC,CAAA;OACjB,CAAA;AACH,KAAA;IAEA,IAAImB,cAAc,KAAK,GAAG,EAAE;AAC1B8B,MAAAA,UAAU,GAAG3C,IAAI,CAACvB,UAAU,CAAC,CAAA;MAC7BmE,aAAa,GAAG,IAAI,CAACO,CAAC,CAAA;AACtBN,MAAAA,YAAY,GAAGC,aAAa,CAACxB,qBAAqB,EAAE,CAAClF,GAAG,CAAA;AAExD,MAAA,OAAQiB,KAAK,IAAK;AAChB,QAAA,IAAI,CAACV,MAAM,GAAGqD,IAAI,CAAC3C,KAAK,CAAC,CAAA;AACzB,QAAA,IAAI0C,EAAE,GAAG,IAAI,CAACpD,MAAM,GAAGgG,UAAU,CAAA;QACjC,IAAIW,OAAO,GAAGR,aAAa,CAACxB,qBAAqB,EAAE,CAAClF,GAAG,CAAA;QACvD,IAAI+G,CAAC,GAAGP,aAAa,GAAG7C,EAAE,IAAI8C,YAAY,GAAGS,OAAO,CAAC,CAAA;AAErD,QAAA,IAAI,CAACC,KAAK,CAAC,CAAC,EAAEJ,CAAC,CAAC,CAAA;OACjB,CAAA;AACH,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEK,EAAAA,sBAAsBA,GAAG;AACvBC,IAAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChD,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;IACf,IAAI,CAAC,IAAI,CAAC7H,OAAO,IAAI,CAAC,IAAI,CAACA,OAAO,EAAE;AAClC,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMgF,cAAc,GAAG,IAAI,CAACpG,SAAS,CAAA;IAErC,IAAIoG,cAAc,KAAK,MAAM,EAAE;AAC7B,MAAA,IAAInB,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;MACd,IAAIC,EAAE,GAAGD,CAAC,GAAG,IAAI,CAAC7D,OAAO,CAAC8H,UAAU,GAAGC,UAAU,CAACxC,gBAAgB,CAAC,IAAI,CAACvF,OAAO,CAAC,CAACgI,UAAU,CAAC,CAAA;AAE5F,MAAA,IAAIV,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;MACd,IAAIpD,EAAE,GAAGoD,CAAC,GAAG,IAAI,CAACtH,OAAO,CAACiI,SAAS,CAAA;MAEnC,IAAI,CAACjI,OAAO,CAACqC,KAAK,CAACK,SAAS,GAAG,CAAaoB,UAAAA,EAAAA,EAAE,CAAOI,IAAAA,EAAAA,EAAE,CAAK,GAAA,CAAA,CAAA;AAC9D,KAAA;IACA,IAAIc,cAAc,KAAK,GAAG,EAAE;AAC1B,MAAA,IAAInB,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;MACd,IAAIC,EAAE,GAAGD,CAAC,GAAG,IAAI,CAAC7D,OAAO,CAAC8H,UAAU,GAAGC,UAAU,CAACxC,gBAAgB,CAAC,IAAI,CAACvF,OAAO,CAAC,CAACgI,UAAU,CAAC,CAAA;MAE5F,IAAI,CAAChI,OAAO,CAACqC,KAAK,CAACK,SAAS,GAAG,CAAcoB,WAAAA,EAAAA,EAAE,CAAK,GAAA,CAAA,CAAA;AACtD,KAAA;IACA,IAAIkB,cAAc,KAAK,GAAG,EAAE;AAC1B,MAAA,IAAIsC,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;MACd,IAAIpD,EAAE,GAAGoD,CAAC,GAAG,IAAI,CAACtH,OAAO,CAACiI,SAAS,CAAA;MAEnC,IAAI,CAACjI,OAAO,CAACqC,KAAK,CAACK,SAAS,GAAG,CAAcwB,WAAAA,EAAAA,EAAE,CAAK,GAAA,CAAA,CAAA;AACtD,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEwD,EAAAA,KAAKA,CAACQ,UAAU,EAAEC,UAAU,EAAE;AAC5B,IAAA,IAAI,CAAC,IAAI,CAACtI,UAAU,EAAE;AACpB,MAAA,OAAA;AACF,KAAA;AACA,IAAA,IAAId,cAAc,GAAG,IAAI,CAACA,cAAc,CAAA;IAExC,IAAI,CAAC8E,CAAC,GAAGqE,UAAU,CAAA;IACnB,IAAI,CAACZ,CAAC,GAAGa,UAAU,CAAA;IAEnB1D,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACvG,aAAa,CAACkK,MAAM,EAAErJ,cAAc,CAAC,CAAA;AAC3D,GAAA;;AAEA;AACF;AACA;AACA;AACE6F,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAAC,IAAI,CAAC5E,OAAO,EAAE;AACjB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIqI,iBAAiB,GAAG,IAAI,CAACC,kBAAkB,EAAE,CAAA;IAEjD,IAAI,CAACC,aAAa,EAAE,CAAA;;AAEpB;AACA;AACA;AACA,IAAA,MAAM5E,WAAW,GAAG,IAAI,CAACzF,aAAa,CAACyF,WAAW,CAAA;AAElDmB,IAAAA,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;AAC9BA,IAAAA,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;AAE7B,IAAA,IAAI,CAAC5G,aAAa,CAACkK,MAAM,CAACzE,WAAW,CAAC,CAAA;AAEtC,IAAA,IAAI6E,oBAAoB,GAAG,IAAI,CAACC,sBAAsB,EAAE,CAAA;AAExDC,IAAAA,SAAO,CAACC,GAAG,CAAC,CAACN,iBAAiB,EAAEG,oBAAoB,CAAC,CAAC,CAACI,IAAI,CAAC,MAAM,IAAI,CAACC,SAAS,EAAE,CAAC,CAAA;AACrF,GAAA;;AAEA;AACF;AACA;AACA;AACEN,EAAAA,aAAaA,GAAG;IACd,MAAM9E,sBAAsB,GAAIjC,KAAK,IAAK;MACxC,IAAI,CAACxB,OAAO,CAACwD,mBAAmB,CAACsF,oBAAoB,EAAErF,sBAAsB,CAAC,CAAA;AAC9E,MAAA,IAAI,CAACsF,oBAAoB,CAACvH,KAAK,CAAC,CAAA;KACjC,CAAA;IAED,IAAI,CAACxB,OAAO,CAACsD,gBAAgB,CAACwF,oBAAoB,EAAErF,sBAAsB,CAAC,CAAA;AAC7E,GAAA;;AAEA;AACF;AACA;AACA;EACEsF,oBAAoBA,CAACC,CAAC,EAAE;IACtBA,CAAC,CAACjG,eAAe,EAAE,CAAA;IACnBiG,CAAC,CAAClG,cAAc,EAAE,CAAA;IAClBkG,CAAC,CAACC,wBAAwB,EAAE,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACEX,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAIY,WAAW,CAAA;AAEf,IAAA,IAAIC,KAAK,EAAE;AACTD,MAAAA,WAAW,GAAGvL,kBAAkB,CAACyL,UAAU,EAAE,CAAA;AAC/C,KAAA;AAEA,IAAA,IAAIf,iBAAiB,CAAA;IAErB,IAAI,IAAI,CAACgB,UAAU,EAAE;AACnB,MAAA,MAAMC,QAAQ,GAAGC,KAAK,EAAE,CAAA;MACxB,IAAI,CAACvJ,OAAO,CAACsD,gBAAgB,CAAC,eAAe,EAAEgG,QAAQ,CAACE,OAAO,CAAC,CAAA;AAChEnB,MAAAA,iBAAiB,GAAGiB,QAAQ,CAACG,OAAO,CAACC,OAAO,CAAC,MAAM;QACjD,IAAI,CAAC1J,OAAO,CAACwD,mBAAmB,CAAC,eAAe,EAAE8F,QAAQ,CAACE,OAAO,CAAC,CAAA;AACrE,OAAC,CAAC,CAAA;AACJ,KAAC,MAAM;MACL,MAAMG,QAAQ,GAAG,IAAI,CAACN,UAAU,GAAG,IAAI,CAACO,kBAAkB,GAAG,GAAG,CAAA;AAChEvB,MAAAA,iBAAiB,GAAG,IAAIK,SAAO,CAAEc,OAAO,IAAKK,KAAK,CAACL,OAAO,EAAEG,QAAQ,CAAC,CAAC,CAAA;AACxE,KAAA;AAEA,IAAA,IAAIR,KAAK,EAAE;AACTd,MAAAA,iBAAiB,GAAGA,iBAAiB,CAACqB,OAAO,CAAC,MAAM;AAClD/L,QAAAA,kBAAkB,CAACmM,QAAQ,CAACZ,WAAW,CAAC,CAAA;AAC1C,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,OAAOb,iBAAiB,CAAA;AAC1B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACEI,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,IAAIS,WAAW,CAAA;AAEf,IAAA,IAAIC,KAAK,EAAE;AACTD,MAAAA,WAAW,GAAGvL,kBAAkB,CAACyL,UAAU,EAAE,CAAA;AAC/C,KAAA;AAEA,IAAA,IAAIf,iBAAiB,CAAA;IAErB,IAAI,IAAI,CAACgB,UAAU,EAAE;AACnB,MAAA,MAAMU,UAAU,GAAG,IAAI,CAAC7L,aAAa,CAACyF,WAAW,CAACqG,GAAG,CAAEnG,CAAC,IAAKA,CAAC,CAAC7D,OAAO,CAACiK,aAAa,EAAE,CAAC,CAAA;AAEvF,MAAA,MAAMC,iBAAiB,GAAGH,UAAU,CAACC,GAAG,CAAEG,SAAS,IAAK;QACtD,OAAOA,SAAS,CAACC,QAAQ,CAAA;AAC3B,OAAC,CAAC,CAAA;AAEF/B,MAAAA,iBAAiB,GAAGK,SAAO,CAACC,GAAG,CAACuB,iBAAiB,CAAC,CAAA;AACpD,KAAC,MAAM;MACL,MAAMP,QAAQ,GAAG,IAAI,CAACN,UAAU,GAAG,IAAI,CAACO,kBAAkB,GAAG,GAAG,CAAA;AAChEvB,MAAAA,iBAAiB,GAAG,IAAIK,SAAO,CAAEc,OAAO,IAAKK,KAAK,CAACL,OAAO,EAAEG,QAAQ,CAAC,CAAC,CAAA;AACxE,KAAA;AAEA,IAAA,IAAIR,KAAK,EAAE;AACTd,MAAAA,iBAAiB,GAAGA,iBAAiB,CAACqB,OAAO,CAAC,MAAM;AAClD/L,QAAAA,kBAAkB,CAACmM,QAAQ,CAACZ,WAAW,CAAC,CAAA;AAC1C,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,OAAOb,iBAAiB,CAAA;AAC1B,GAAA;;AAEA;AACF;AACA;AACA;AACEQ,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,CAAC5H,UAAU,CAAC,IAAI,CAACvC,KAAK,CAAC,CAAA;AAC3BoG,IAAAA,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;AAC9BA,IAAAA,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC5G,aAAa,CAACmM,MAAM,EAAE,CAAA;AAC7B,GAAA;EAEA,IAAIhB,UAAUA,GAAG;AACf,IAAA,IAAI,CAAC,IAAI,CAACrJ,OAAO,EAAE;AACjB,MAAA,OAAO5B,SAAS,CAAA;AAClB,KAAA;AAEA,IAAA,IAAIgE,EAAE,GAAG,IAAI,CAACpC,OAAO,CAAA;AACrB,IAAA,IAAIsK,kBAAkB,GAAG/E,gBAAgB,CAACnD,EAAE,CAAC,CAACkI,kBAAkB,CAAA;IAEhE,OAAO,eAAe,CAACC,IAAI,CAACD,kBAAkB,CAAC,IAAI,IAAI,CAACV,kBAAkB,GAAG,CAAC,CAAA;AAChF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIA,kBAAkBA,GAAG;IACvB,MAAMY,KAAK,GAAG,IAAI,CAACtM,aAAa,CAACyF,WAAW,CAAC8G,MAAM,CAAE5G,CAAC,IAAK,CAACA,CAAC,CAAChE,UAAU,IAAI,CAACgE,CAAC,CAAC3C,UAAU,CAAC,CAAA;AAC1F,IAAA,IAAIkB,EAAE,GAAGoI,KAAK,CAAC,CAAC,CAAC,CAACxK,OAAO,IAAI,IAAI,CAACA,OAAO,CAAC;AAC1C,IAAA,IAAI0K,IAAI,GAAGnF,gBAAgB,CAACnD,EAAE,CAAC,CAACwH,kBAAkB,CAAA;AAClD,IAAA,IAAIe,KAAK,GAAGD,IAAI,CAACC,KAAK,CAAC,iBAAiB,CAAC,CAAA;AAEzC,IAAA,IAAIA,KAAK,EAAE;MACT,IAAI5K,KAAK,GAAGgI,UAAU,CAAC4C,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,MAAA,IAAIC,IAAI,GAAGD,KAAK,CAAC,CAAC,CAAC,CAAA;MAEnB,IAAIC,IAAI,KAAK,GAAG,EAAE;QAChB7K,KAAK,GAAGA,KAAK,GAAG,IAAI,CAAA;AACtB,OAAA;AAEA,MAAA,OAAOA,KAAK,CAAA;AACd,KAAA;AAEA,IAAA,OAAO,CAAC,CAAA;AACV,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAI8D,CAACA,GAAG;AACN,IAAA,IAAI,IAAI,CAACpB,EAAE,KAAKrE,SAAS,EAAE;AACzB,MAAA,IAAI4J,UAAU,GAAGD,UAAU,CAACxC,gBAAgB,CAAC,IAAI,CAACvF,OAAO,CAAC,CAACgI,UAAU,CAAC,CAAA;AACtE,MAAA,IAAI,CAACvF,EAAE,GAAG,IAAI,CAACzC,OAAO,CAAC6K,UAAU,GAAG,IAAI,CAAC7K,OAAO,CAAC8H,UAAU,GAAGE,UAAU,CAAA;AAC1E,KAAA;IAEA,OAAO,IAAI,CAACvF,EAAE,CAAA;AAChB,GAAA;EACA,IAAIoB,CAACA,CAAC9D,KAAK,EAAE;AACX,IAAA,IAAIA,KAAK,KAAK,IAAI,CAAC0C,EAAE,EAAE;MACrB,IAAI,CAACA,EAAE,GAAG1C,KAAK,CAAA;MACf,IAAI,CAAC4H,sBAAsB,EAAE,CAAA;AAC/B,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIL,CAACA,GAAG;AACN,IAAA,IAAI,IAAI,CAAC9E,EAAE,KAAKpE,SAAS,EAAE;AACzB,MAAA,IAAI,CAACoE,EAAE,GAAG,IAAI,CAACxC,OAAO,CAACiI,SAAS,CAAA;AAClC,KAAA;IAEA,OAAO,IAAI,CAACzF,EAAE,CAAA;AAChB,GAAA;EAEA,IAAI8E,CAACA,CAACvH,KAAK,EAAE;AACX,IAAA,IAAIA,KAAK,KAAK,IAAI,CAACyC,EAAE,EAAE;MACrB,IAAI,CAACA,EAAE,GAAGzC,KAAK,CAAA;MACf,IAAI,CAAC4H,sBAAsB,EAAE,CAAA;AAC/B,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAItC,KAAKA,GAAG;AACV,IAAA,IAAIjD,EAAE,GAAG,IAAI,CAACpC,OAAO,CAAA;AACrB,IAAA,IAAIqF,KAAK,GAAGjD,EAAE,CAAC0I,WAAW,CAAA;AAC1B,IAAA,IAAIC,QAAQ,GAAGxF,gBAAgB,CAACnD,EAAE,CAAC,CAAA;AAEnCiD,IAAAA,KAAK,IAAIC,QAAQ,CAACyF,QAAQ,CAAC/C,UAAU,CAAC,GAAG1C,QAAQ,CAACyF,QAAQ,CAACC,WAAW,CAAC,CAAC;;AAExE3F,IAAAA,KAAK,IAAI4F,gBAAgB,CAAC7I,EAAE,CAAC,CAAC8I,UAAU,CAAA;AAExC,IAAA,OAAO7F,KAAK,CAAA;AACd,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,MAAMA,GAAG;AACX,IAAA,IAAIpD,EAAE,GAAG,IAAI,CAACpC,OAAO,CAAA;AACrB,IAAA,IAAIwF,MAAM,GAAGpD,EAAE,CAAC+I,YAAY,CAAA;AAC5B,IAAA,IAAIJ,QAAQ,GAAGxF,gBAAgB,CAACnD,EAAE,CAAC,CAAA;;AAEnC;AACA;AACA;AACA,IAAA,IAAI,IAAI,CAACxD,SAAS,KAAK,MAAM,EAAE;AAC7B4G,MAAAA,MAAM,IAAIuC,UAAU,CAACgD,QAAQ,CAACK,SAAS,CAAC,CAAA;AAC1C,KAAA;AAEA5F,IAAAA,MAAM,IAAIuC,UAAU,CAACgD,QAAQ,CAACM,YAAY,CAAC,CAAA;AAE3C7F,IAAAA,MAAM,IAAIyF,gBAAgB,CAAC7I,EAAE,CAAC,CAACkJ,QAAQ,CAAA;AAEvC,IAAA,OAAO9F,MAAM,CAAA;AACf,GAAA;AAEAlC,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,CAACtD,OAAO,CAACsD,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC1B,OAAO,CAAC,CAAA;IACtD,IAAI,CAAC5B,OAAO,CAACsD,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC/B,SAAS,CAAC,CAAA;IAC1D,IAAI,CAACvB,OAAO,CAACsD,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACpB,UAAU,CAAC,CAAA;IAC5D,IAAI,CAACqJ,mBAAmB,GAAG,IAAI,CAAA;AACjC,GAAA;AAEA/H,EAAAA,mBAAmBA,GAAG;IACpB,IAAI,CAACxD,OAAO,CAACwD,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC5B,OAAO,CAAC,CAAA;IACzD,IAAI,CAAC5B,OAAO,CAACwD,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACjC,SAAS,CAAC,CAAA;IAC7D,IAAI,CAACvB,OAAO,CAACwD,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACtB,UAAU,CAAC,CAAA;IAC/D,IAAI,CAACqJ,mBAAmB,GAAG,KAAK,CAAA;AAClC,GAAA;AAEA1J,EAAAA,kBAAkBA,CAAC/C,QAAQ,GAAG,KAAK,EAAE;AACnC,IAAA,IAAI,CAACiD,aAAa,GAAG,IAAI,CAAC/B,OAAO,CAACwL,aAAa,CAAC,IAAI,CAAC7L,MAAM,CAAC,CAAA;AAE5D,IAAA,MAAM8L,WAAW,GAAG3M,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACjD,IAAI,IAAI,CAACiD,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACM,KAAK,CAAC,cAAc,CAAC,GAAGoJ,WAAW,CAAA;AACxD,KAAC,MAAM;MACL,IAAI,CAACzL,OAAO,CAACqC,KAAK,CAAC,cAAc,CAAC,GAAGoJ,WAAW,CAAA;AAClD,KAAA;AACF,GAAA;AAUAC,EAAAA,WAAWA,CAACC,KAAK,EAAEC,IAAI,EAAE;AACvB,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC,CAAA;AAACC,IAAAA,eAAA,oBA15BT,eAAe,CAAA,CAAA;AAAAC,IAAAA,0BAAA,0BAAAC,WAAA,EAAA,IAAA,CAAA,CAAA;IAAAF,eAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,sBAkIb,KAAK,CAAA,CAAA;AAAAA,IAAAA,eAAA,sBAiFL,KAAK,CAAA,CAAA;AAAAA,IAAAA,eAAA,qBAmBN,KAAK,CAAA,CAAA;AAAAA,IAAAA,eAAA,yBA+LD,EAAE,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,mBA6eR,KAAK,CAAA,CAAA;AAEhB;AACF;AACA;AAFEA,IAAAA,eAAA,8BAGsB,KAAK,CAAA,CAAA;AAIzBG,IAAAA,kBAAkB,CAAC,IAAI,EAAEC,OAAO,CAAC,CAAA;AACnC,GAAA;AAEAC,EAAAA,MAAMA,CAAClM,OAAO,EAAEmM,WAAW,EAAExN,KAAK,EAAE;IAClC,IAAI,CAACqB,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAACrB,KAAK,GAAGA,KAAK,CAAA;IAElB,IAAI,CAACqB,OAAO,CAACC,SAAS,CAACC,GAAG,CAAC,IAAI,CAACkM,SAAS,CAAC,CAAA;;AAE1C;AACA;IACA,IAAI,CAACvK,kBAAkB,CAAC,IAAI,CAAClD,KAAK,CAACG,QAAQ,CAAC,CAAA;AAE5C,IAAA,IAAI,CAAC,IAAI,CAACuN,QAAQ,EAAE;AAClB,MAAA,IAAI,CAACrM,OAAO,CAACsM,OAAO,CAACC,YAAY,GAAG,IAAI,CAAA;MACxC,IAAI,CAAClO,eAAe,CAACmO,YAAY,CAAC,IAAI,CAACjO,SAAS,EAAE,IAAI,CAAC,CAAA;MACvD,IAAI,CAAC8N,QAAQ,GAAG,IAAI,CAAA;AACtB,KAAA;IAEA,IAAI,IAAI,CAAC1N,KAAK,CAACG,QAAQ,IAAI,IAAI,CAACyM,mBAAmB,EAAE;MACnD,IAAI,CAAC/H,mBAAmB,EAAE,CAAA;AAC5B,KAAC,MAAM,IAAI,CAAC,IAAI,CAAC7E,KAAK,CAACG,QAAQ,IAAI,CAAC,IAAI,CAACyM,mBAAmB,EAAE;MAC5D,IAAI,CAACjI,gBAAgB,EAAE,CAAA;AACzB,KAAA;AACF,GAAA;AACF,CAAC,GAAAyI,WAAA,GAAAU,yBAAA,CAAAzO,MAAA,CAAA0O,SAAA,EAAA,iBAAA,EAAA,CAAA5O,IAAA,CAAA,EAAA;EAAA6O,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAA,CAAA,EAAAL,yBAAA,CAAAzO,MAAA,CAAA0O,SAAA,EAAA,WAAA,EAAA,CA1rBEK,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAjP,MAAA,CAAA0O,SAAA,EAAA,WAAA,CAAA,EAAA1O,MAAA,CAAA0O,SAAA,CAAA,EAAAD,yBAAA,CAAAzO,MAAA,CAAA0O,SAAA,EAAA,SAAA,EAAA,CAYNK,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAjP,MAAA,CAAA0O,SAAA,EAAA,SAAA,CAAA,EAAA1O,MAAA,CAAA0O,SAAA,CAAA,EAAAD,yBAAA,CAAAzO,MAAA,CAAA0O,SAAA,EAAA,YAAA,EAAA,CAmBNK,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAjP,MAAA,CAAA0O,SAAA,EAAA,YAAA,CAAA,EAAA1O,MAAA,CAAA0O,SAAA,CAAA,GAAA1O,MAAA,CAAA,EAAA;AA6pBT;AACA;AACA;AACA;AACA,SAASiO,OAAOA,CAACiB,QAAQ,EAAE;EACzBA,QAAQ,CAAC1J,mBAAmB,EAAE,CAAA;EAC9B0J,QAAQ,CAAC7O,eAAe,CAAC8O,cAAc,CAACD,QAAQ,CAAC3O,SAAS,EAAE2O,QAAQ,CAAC,CAAA;AACvE;;;;"}
|
|
1
|
+
{"version":3,"file":"sortable-item.js","sources":["../../src/modifiers/sortable-item.js"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\nimport Modifier from 'ember-modifier';\nimport { Promise, defer } from 'rsvp';\nimport { action, set } from '@ember/object';\nimport { DRAG_ACTIONS, ELEMENT_CLICK_ACTION, END_ACTIONS } from '../utils/constant';\nimport { run, throttle, bind, scheduleOnce, later } from '@ember/runloop';\nimport { DEBUG } from '@glimmer/env';\nimport { getX, getY } from '../utils/coordinate';\nimport ScrollContainer from '../system/scroll-container';\nimport scrollParent from '../system/scroll-parent';\nimport { getBorderSpacing } from '../utils/css-calculation';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { inject as service } from '@ember/service';\nimport { assert, deprecate } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\nimport { isTesting } from '@embroider/macros';\n\nconst sortableItemWaiter = buildWaiter('sortable-item-waiter');\n\n/**\n * Modifier to mark an element as an item to be reordered\n *\n * @param {Object} model The model that this item will represent\n * @param {boolean} [disabled=false] Set to true to make this item not sortable\n * @param {Function} [onDragStart] An optional callback for when dragging starts.\n * @param {Function} [onDragStop] An optional callback for when dragging stops.\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}}>↕</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableItemModifier extends Modifier {\n className = 'sortable-item';\n\n @service('ember-sortable-internal-state') sortableService;\n\n _sortableGroup;\n /**\n * The SortableGroupModifier this item belongs to. Assigned by the group\n * when it inspects all the items in the list\n *\n * @type SortableGroupModifier\n */\n get sortableGroup() {\n if (this._sortableGroup === undefined) {\n this._sortableGroup = this.sortableService.fetchGroup(this.groupName);\n assert(\n `No sortable group named ${this.groupName} found. Please check that the groups and items have the same groupName`,\n this._sortableGroup !== undefined\n );\n }\n return this._sortableGroup.groupModifier;\n }\n\n get model() {\n return this.named.model;\n }\n\n get direction() {\n return this.sortableGroup?.direction;\n }\n\n get groupDisabled() {\n return this.sortableGroup?.disabled;\n }\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 The frequency with which the group is informed\n that an update is required.\n @property updateInterval\n @type Number\n @default 125\n */\n get updateInterval() {\n return this.named.updateInterval || 125;\n }\n\n /**\n Additional spacing between active item and the rest of the elements.\n @property spacing\n @type Number\n @default 0[px]\n */\n get spacing() {\n return this.named.spacing || 0;\n }\n\n /**\n Removes the ability for the current item to be sorted\n @property disabled\n @type boolean\n @default false\n */\n get isDisabled() {\n deprecate(\n '\"isDraggingDisabled\" is deprecated. Please migrate to \"disabled\" named argument',\n !('isDraggingDisabled' in this.named),\n {\n id: 'ember-sortable.is-dragging-disabled',\n url: 'https://github.com/adopted-ember-addons/ember-sortable#readme',\n until: '3.0.0',\n for: 'ember-sortable',\n since: {\n available: '2.2.6',\n enabled: '2.2.6',\n },\n }\n );\n\n return this.groupDisabled || this.named.disabled || this.named.isDraggingDisabled || false;\n }\n\n /**\n Selector for the element to use as handle.\n 1. By default, we will hook it the yielded sortable-handle.\n 2. If you don't use the sortable-handle, the entire element will be used as the handle.\n 3. In very rare situations, if you want to use a handle, but not the sortable-handle,\n you can override this class with your own handle's selector. This behavior will be\n synonymous with v1\n @property handle\n @type String\n @default \"[data-sortable-handle]\"\n */\n get handle() {\n return this.named.handle || '[data-sortable-handle]';\n }\n\n handleElement;\n\n /**\n * Tolerance, in pixels, for when sorting should start.\n * If specified, sorting will not start until after mouse\n * is dragged beyond distance. Can be used to allow for clicks\n * on elements within a handle.\n *\n * @property distance\n * @type Integer\n * @default 0\n */\n get distance() {\n return this.named.distance || 0;\n }\n\n /**\n * True if the item is currently being dragged.\n *\n * @property isDragging\n * @type boolean\n * @default false\n * @protected\n */\n _isDragging = false;\n get isDragging() {\n return this._isDragging;\n }\n set isDragging(value) {\n if (value) {\n this.element.classList.add('is-dragging');\n } else {\n this.element.classList.remove('is-dragging');\n }\n this._isDragging = value;\n }\n\n /**\n * Gives info in which direction the element will be moved\n *\n * @property moveDirection\n * @type Object\n */\n get moveDirection() {\n const moveDirection = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n };\n\n if (!this.isDragging) {\n return moveDirection;\n }\n\n const dragOriginX = this._dragOriginX;\n const dragOriginY = this._dragOriginY;\n\n if (dragOriginX > this._pageX) {\n moveDirection.left = true;\n }\n\n if (dragOriginX < this._pageX) {\n moveDirection.right = true;\n }\n\n if (dragOriginY > this._pageY) {\n moveDirection.top = true;\n }\n\n if (dragOriginY < this._pageY) {\n moveDirection.bottom = true;\n }\n\n return moveDirection;\n }\n\n /**\n Action that fires when the item starts being dragged.\n @property onDragStart\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStart() {\n return this.named.onDragStart || ((item) => item);\n }\n\n /**\n Action that fires when the item stops being dragged.\n @property onDragStop\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStop() {\n return this.named.onDragStop || ((item) => item);\n }\n\n /**\n True if the item is currently dropping.\n @property isDropping\n @type Boolean\n @default false\n */\n _isDropping = false;\n get isDropping() {\n return this._isDropping;\n }\n set isDropping(value) {\n if (value) {\n this.element.classList.add('is-dropping');\n } else {\n this.element.classList.remove('is-dropping');\n }\n this._isDropping = value;\n }\n\n /**\n True if the item was dropped during the interaction\n @property wasDropped\n @type Boolean\n @default false\n */\n wasDropped = false;\n\n /**\n @property isBusy\n @type Boolean\n */\n get isBusy() {\n return this.isDragging || this.isDropping;\n }\n\n /**\n @property disableCheckScrollBounds\n */\n get disableCheckScrollBounds() {\n return this.named.disableCheckScrollBounds != undefined ? this.named.disableCheckScrollBounds : isTesting();\n }\n\n /**\n @method mouseDown\n */\n @action\n mouseDown(event) {\n if (event.which !== 1) {\n return;\n }\n if (event.ctrlKey) {\n return;\n }\n\n this._primeDrag(event);\n }\n\n @action\n keyDown(event) {\n if (this.isDisabled) {\n return;\n }\n\n this.setupHandleElement();\n\n // If the event is coming from within the item, we do not want to activate keyboard reorder mode.\n if (event.target === this.handleElement || event.target === this.element) {\n this.sortableGroup.activateKeyDown(this);\n } else {\n this.sortableGroup.deactivateKeyDown();\n }\n }\n\n /**\n @method touchStart\n */\n @action\n touchStart(event) {\n this._primeDrag(event);\n }\n\n /**\n @method freeze\n */\n freeze() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = 'none';\n }\n\n /**\n @method reset\n */\n reset() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n delete this._y;\n delete this._x;\n\n el.style.transform = '';\n }\n\n /**\n @method thaw\n */\n thaw() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = '';\n }\n\n /**\n * Setup event listeners for drag and drop\n *\n * @method _primeDrag\n * @param {Event} startEvent JS Event object\n * @private\n */\n _primeDrag(startEvent) {\n if (this.isDisabled) {\n return;\n }\n\n if (this.handleElement && !startEvent.target.closest(this.handle)) {\n return;\n }\n\n startEvent.preventDefault();\n startEvent.stopPropagation();\n\n this._prepareDragListener = bind(this, this._prepareDrag, startEvent);\n\n DRAG_ACTIONS.forEach((event) => window.addEventListener(event, this._prepareDragListener));\n\n this._cancelStartDragListener = () => {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, this._prepareDragListener));\n };\n\n const selfCancellingCallback = () => {\n END_ACTIONS.forEach((event) => window.removeEventListener(event, selfCancellingCallback));\n this._cancelStartDragListener();\n };\n\n END_ACTIONS.forEach((event) => window.addEventListener(event, selfCancellingCallback));\n }\n\n /**\n * Prepares for the drag event\n *\n * @method _prepareDrag\n * @param {Event} startEvent JS Event object\n * @param {Event} event JS Event object\n * @private\n */\n _prepareDrag(startEvent, event) {\n // Block drag start while any item has busy state\n if (this.sortableGroup.sortedItems.some((x) => x.isBusy)) {\n return;\n }\n let distance = this.distance;\n let dx = Math.abs(getX(startEvent) - getX(event));\n let dy = Math.abs(getY(startEvent) - getY(event));\n\n if (distance <= dx || distance <= dy) {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, this._prepareDragListener));\n this._startDrag(startEvent);\n }\n }\n\n /**\n * Start dragging & setup more event listeners\n *\n * @method _startDrag\n * @param {Event} event JS Event object\n * @private\n */\n _startDrag(event) {\n if (this.isBusy) {\n return;\n }\n\n let drag = this._makeDragHandler(event);\n let dragThrottled = (ev) => throttle(this, drag, ev, 16, false);\n\n let drop = () => {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, dragThrottled));\n END_ACTIONS.forEach((event) => window.removeEventListener(event, drop));\n\n run(() => {\n this._drop();\n });\n };\n\n DRAG_ACTIONS.forEach((event) => window.addEventListener(event, dragThrottled));\n END_ACTIONS.forEach((event) => window.addEventListener(event, drop));\n\n this.sortableGroup.prepare();\n set(this, 'isDragging', true);\n this.onDragStart(this.model);\n this._scrollOnEdges(drag);\n }\n\n /**\n The maximum scroll speed when dragging element.\n @property maxScrollSpeed\n @default 20\n */\n maxScrollSpeed = 20;\n\n _scrollOnEdges(drag) {\n let groupDirection = this.direction;\n let element = this.element;\n let scrollContainer = new ScrollContainer(scrollParent(element));\n let itemContainer = {\n width: parseInt(getComputedStyle(element).width, 10),\n get height() {\n return parseInt(getComputedStyle(element).height, 10);\n },\n get left() {\n return element.getBoundingClientRect().left;\n },\n get right() {\n return this.left + this.width;\n },\n get top() {\n return element.getBoundingClientRect().top;\n },\n get bottom() {\n return this.top + this.height;\n },\n };\n\n let leadingEdgeKey, trailingEdgeKey, scrollKey, pageKey;\n if (groupDirection === 'grid' || groupDirection === 'x') {\n leadingEdgeKey = 'left';\n trailingEdgeKey = 'right';\n scrollKey = 'scrollLeft';\n pageKey = 'pageX';\n } else {\n leadingEdgeKey = 'top';\n trailingEdgeKey = 'bottom';\n scrollKey = 'scrollTop';\n pageKey = 'pageY';\n }\n\n let createFakeEvent = () => {\n if (this._pageX == null && this._pageY == null) {\n return;\n }\n return {\n pageX: this._pageX,\n pageY: this._pageY,\n clientX: this._pageX,\n clientY: this._pageY,\n };\n };\n\n // Set a trigger padding that will start scrolling\n // the box when the item reaches within padding pixels\n // of the edge of the scroll container.\n let checkScrollBounds = () => {\n let leadingEdge = itemContainer[leadingEdgeKey];\n let trailingEdge = itemContainer[trailingEdgeKey];\n let scroll = scrollContainer[scrollKey]();\n\n let delta = 0;\n if (trailingEdge >= scrollContainer[trailingEdgeKey]) {\n delta = trailingEdge - scrollContainer[trailingEdgeKey];\n } else if (leadingEdge <= scrollContainer[leadingEdgeKey]) {\n delta = leadingEdge - scrollContainer[leadingEdgeKey];\n }\n\n if (delta !== 0) {\n let speed = this.maxScrollSpeed;\n delta = Math.min(Math.max(delta, -1 * speed), speed);\n\n delta = scrollContainer[scrollKey](scroll + delta) - scroll;\n\n let event = createFakeEvent();\n if (event) {\n if (scrollContainer.isWindow) {\n event[pageKey] += delta;\n }\n run(() => drag(event));\n }\n }\n if (this.isDragging) {\n requestAnimationFrame(checkScrollBounds);\n }\n };\n\n if (!this.disableCheckScrollBounds) {\n requestAnimationFrame(checkScrollBounds);\n }\n }\n\n /**\n @method _makeDragHandler\n @param {Event} startEvent\n @return {Function}\n @private\n */\n _makeDragHandler(startEvent) {\n const groupDirection = this.direction;\n let dragOrigin;\n let elementOrigin;\n let scrollOrigin;\n let parentElement = this.element.parentNode;\n\n if (groupDirection === 'grid') {\n this.startEvent = startEvent;\n const dragOriginX = getX(startEvent);\n this._dragOriginX = getX(startEvent);\n const elementOriginX = this.x;\n const scrollOriginX = parentElement.getBoundingClientRect().left;\n\n const dragOriginY = getY(startEvent);\n this._dragOriginY = dragOriginY;\n const elementOriginY = this.y;\n const scrollOriginY = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageX = getX(event);\n let dx = this._pageX - dragOriginX;\n let scrollX = parentElement.getBoundingClientRect().left;\n let x = elementOriginX + dx + (scrollOriginX - scrollX);\n\n this._pageY = getY(event);\n let dy = this._pageY - dragOriginY;\n let scrollY = parentElement.getBoundingClientRect().top;\n let y = elementOriginY + dy + (scrollOriginY - scrollY);\n\n this._drag(x, y);\n };\n }\n\n if (groupDirection === 'x') {\n dragOrigin = getX(startEvent);\n elementOrigin = this.x;\n scrollOrigin = parentElement.getBoundingClientRect().left;\n\n return (event) => {\n this._pageX = getX(event);\n let dx = this._pageX - dragOrigin;\n let scrollX = parentElement.getBoundingClientRect().left;\n let x = elementOrigin + dx + (scrollOrigin - scrollX);\n\n this._drag(x, 0);\n };\n }\n\n if (groupDirection === 'y') {\n dragOrigin = getY(startEvent);\n elementOrigin = this.y;\n scrollOrigin = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageY = getY(event);\n let dy = this._pageY - dragOrigin;\n let scrollY = parentElement.getBoundingClientRect().top;\n let y = elementOrigin + dy + (scrollOrigin - scrollY);\n\n this._drag(0, y);\n };\n }\n }\n\n /**\n @method _scheduleApplyPosition\n @private\n */\n _scheduleApplyPosition() {\n scheduleOnce('render', this, '_applyPosition');\n }\n\n /**\n @method _applyPosition\n @private\n */\n _applyPosition() {\n if (!this.element || !this.element) {\n return;\n }\n\n const groupDirection = this.direction;\n\n if (groupDirection === 'grid') {\n let x = this.x;\n let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n let y = this.y;\n let dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translate(${dx}px, ${dy}px)`;\n }\n if (groupDirection === 'x') {\n let x = this.x;\n let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n this.element.style.transform = `translateX(${dx}px)`;\n }\n if (groupDirection === 'y') {\n let y = this.y;\n let dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translateY(${dy}px)`;\n }\n }\n\n /**\n @method _drag\n @private\n */\n _drag(dimensionX, dimensionY) {\n if (!this.isDragging) {\n return;\n }\n let updateInterval = this.updateInterval;\n\n this.x = dimensionX;\n this.y = dimensionY;\n\n throttle(this, this.sortableGroup.update, updateInterval);\n }\n\n /**\n @method _drop\n @private\n */\n _drop() {\n if (!this.element) {\n return;\n }\n\n let transitionPromise = this._waitForTransition();\n\n this._preventClick();\n\n // Get sortableItems before making drop end and pass it to update function\n // This is necessary for direction grid, otherwise ordering is not working correctly (because in sortedItems we check if item isDragged)\n // Calling this getter here, makes no difference for other directions\n const sortedItems = this.sortableGroup.sortedItems;\n\n set(this, 'isDragging', false);\n set(this, 'isDropping', true);\n\n this.sortableGroup.update(sortedItems);\n\n let allTransitionPromise = this._waitForAllTransitions();\n\n Promise.all([transitionPromise, allTransitionPromise]).then(() => this._complete());\n }\n\n /**\n @method _preventClick\n @private\n */\n _preventClick() {\n const selfCancellingCallback = (event) => {\n this.element.removeEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);\n this._preventClickHandler(event);\n };\n\n this.element.addEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);\n }\n\n /**\n @method _preventClickHandler\n @private\n */\n _preventClickHandler(e) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n /**\n @method _waitForTransition\n @private\n @return Promise\n */\n _waitForTransition() {\n let waiterToken;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const deferred = defer();\n this.element.addEventListener('transitionend', deferred.resolve);\n transitionPromise = deferred.promise.finally(() => {\n this.element.removeEventListener('transitionend', deferred.resolve);\n });\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _waitForTransitions\n @private\n @return Promise\n */\n _waitForAllTransitions() {\n let waiterToken;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const animations = this.sortableGroup.sortedItems.map((x) => x.element.getAnimations());\n\n const animationPromises = animations.map((animation) => {\n return animation.finished;\n });\n\n transitionPromise = Promise.all(animationPromises);\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _complete\n @private\n */\n _complete() {\n this.onDragStop(this.model);\n set(this, 'isDropping', false);\n set(this, 'wasDropped', true);\n this.sortableGroup.commit();\n }\n\n get isAnimated() {\n if (!this.element) {\n return undefined;\n }\n\n let el = this.element;\n let transitionProperty = getComputedStyle(el).transitionProperty;\n\n return /all|transform/.test(transitionProperty) && this.transitionDuration > 0;\n }\n\n /**\n The current transition duration in milliseconds.\n @property transitionDuration\n @type Number\n */\n get transitionDuration() {\n const items = this.sortableGroup.sortedItems.filter((x) => !x.isDragging && !x.isDropping);\n let el = items[0]?.element ?? this.element; // Fallback when only one element is present in list\n let rule = getComputedStyle(el).transitionDuration;\n let match = rule.match(/([\\d.]+)([ms]*)/);\n\n if (match) {\n let value = parseFloat(match[1]);\n let unit = match[2];\n\n if (unit === 's') {\n value = value * 1000;\n }\n\n return value;\n }\n\n return 0;\n }\n\n /**\n Horizontal position of the item.\n @property x\n @type Number\n */\n get x() {\n if (this._x === undefined) {\n let marginLeft = parseFloat(getComputedStyle(this.element).marginLeft);\n this._x = this.element.scrollLeft + this.element.offsetLeft - marginLeft;\n }\n\n return this._x;\n }\n set x(value) {\n if (value !== this._x) {\n this._x = value;\n this._scheduleApplyPosition();\n }\n }\n\n /**\n Vertical position of the item relative to its offset parent.\n @property y\n @type Number\n */\n get y() {\n if (this._y === undefined) {\n this._y = this.element.offsetTop;\n }\n\n return this._y;\n }\n\n set y(value) {\n if (value !== this._y) {\n this._y = value;\n this._scheduleApplyPosition();\n }\n }\n\n /**\n Width of the item.\n @property height\n @type Number\n */\n get width() {\n let el = this.element;\n let width = el.offsetWidth;\n let elStyles = getComputedStyle(el);\n\n width += parseInt(elStyles.marginLeft) + parseInt(elStyles.marginRight); // equal to jQuery.outerWidth(true)\n\n width += getBorderSpacing(el).horizontal;\n\n return width;\n }\n\n /**\n Height of the item including margins.\n @property height\n @type Number\n */\n get height() {\n let el = this.element;\n let height = el.offsetHeight;\n let elStyles = getComputedStyle(el);\n\n // This is needed atm only for grid, to fix jumping on drag-start.\n // In test-app it looks like there is a side-effect when we activate also for direction vertical.\n // If any user will anytime report a jumping in vertical direction, we should activate for every direction and fix our test-app\n if (this.direction === 'grid') {\n height += parseFloat(elStyles.marginTop);\n }\n\n height += parseFloat(elStyles.marginBottom);\n\n height += getBorderSpacing(el).vertical;\n\n return height;\n }\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('mousedown', this.mouseDown);\n this.element.addEventListener('touchstart', this.touchStart);\n this.listenersRegistered = true;\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('mousedown', this.mouseDown);\n this.element.removeEventListener('touchstart', this.touchStart);\n this.listenersRegistered = false;\n }\n\n setupHandleElement(disabled = false) {\n this.handleElement = this.element.querySelector(this.handle);\n\n const touchAction = disabled ? 'initial' : 'none';\n if (this.handleElement) {\n this.handleElement.style['touch-action'] = touchAction;\n } else {\n this.element.style['touch-action'] = touchAction;\n }\n }\n\n element;\n didSetup = false;\n\n /**\n * tracks if event listeners have been registered. Registering event handlers is unnecessary if item is disabled.\n */\n listenersRegistered = 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.element.classList.add(this.className);\n\n // Instead of using `event.preventDefault()` in the 'primeDrag' event,\n // (doesn't work in Chrome 56), we set touch-action: none as a workaround.\n this.setupHandleElement(this.named.disabled);\n\n if (!this.didSetup) {\n this.element.dataset.sortableItem = true;\n this.sortableService.registerItem(this.groupName, this);\n this.didSetup = true;\n }\n\n if (this.named.disabled && this.listenersRegistered) {\n this.removeEventListener();\n } else if (!this.named.disabled && !this.listenersRegistered) {\n this.addEventListener();\n }\n }\n}\n\n/**\n *\n * @param {SortableItemModifier} instance\n */\nfunction cleanup(instance) {\n instance.removeEventListener();\n instance.sortableService.deregisterItem(instance.groupName, instance);\n}\n"],"names":["sortableItemWaiter","buildWaiter","SortableItemModifier","_dec","service","_class","Modifier","sortableGroup","_sortableGroup","undefined","sortableService","fetchGroup","groupName","assert","groupModifier","model","named","direction","groupDisabled","disabled","updateInterval","spacing","isDisabled","deprecate","id","url","until","for","since","available","enabled","isDraggingDisabled","handle","distance","isDragging","_isDragging","value","element","classList","add","remove","moveDirection","left","right","top","bottom","dragOriginX","_dragOriginX","dragOriginY","_dragOriginY","_pageX","_pageY","onDragStart","item","onDragStop","isDropping","_isDropping","isBusy","disableCheckScrollBounds","isTesting","mouseDown","event","which","ctrlKey","_primeDrag","keyDown","setupHandleElement","target","handleElement","activateKeyDown","deactivateKeyDown","touchStart","freeze","el","style","transition","reset","_y","_x","transform","thaw","startEvent","closest","preventDefault","stopPropagation","_prepareDragListener","bind","_prepareDrag","DRAG_ACTIONS","forEach","window","addEventListener","_cancelStartDragListener","removeEventListener","selfCancellingCallback","END_ACTIONS","sortedItems","some","x","dx","Math","abs","getX","dy","getY","_startDrag","drag","_makeDragHandler","dragThrottled","ev","throttle","drop","run","_drop","prepare","set","_scrollOnEdges","groupDirection","scrollContainer","ScrollContainer","scrollParent","itemContainer","width","parseInt","getComputedStyle","height","getBoundingClientRect","leadingEdgeKey","trailingEdgeKey","scrollKey","pageKey","createFakeEvent","pageX","pageY","clientX","clientY","checkScrollBounds","leadingEdge","trailingEdge","scroll","delta","speed","maxScrollSpeed","min","max","isWindow","requestAnimationFrame","dragOrigin","elementOrigin","scrollOrigin","parentElement","parentNode","elementOriginX","scrollOriginX","elementOriginY","y","scrollOriginY","scrollX","scrollY","_drag","_scheduleApplyPosition","scheduleOnce","_applyPosition","offsetLeft","parseFloat","marginLeft","offsetTop","dimensionX","dimensionY","update","transitionPromise","_waitForTransition","_preventClick","allTransitionPromise","_waitForAllTransitions","Promise","all","then","_complete","ELEMENT_CLICK_ACTION","_preventClickHandler","e","stopImmediatePropagation","waiterToken","DEBUG","beginAsync","isAnimated","deferred","defer","resolve","promise","finally","duration","transitionDuration","later","endAsync","animations","map","getAnimations","animationPromises","animation","finished","commit","transitionProperty","test","items","filter","rule","match","unit","scrollLeft","offsetWidth","elStyles","marginRight","getBorderSpacing","horizontal","offsetHeight","marginTop","marginBottom","vertical","listenersRegistered","querySelector","touchAction","constructor","owner","args","_defineProperty","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","className","didSetup","dataset","sortableItem","registerItem","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","instance","deregisterItem"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ember-sortable",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.2",
|
|
4
4
|
"description": "Sortable UI primitives for Ember.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"main": "addon-main.js",
|
|
66
66
|
"type": "addon",
|
|
67
67
|
"version": 2,
|
|
68
|
-
"demoURL": "https://
|
|
68
|
+
"demoURL": "https://ember-sortable.netlify.app/",
|
|
69
69
|
"app-js": {
|
|
70
70
|
"./modifiers/sortable-group.js": "./dist/_app_/modifiers/sortable-group.js",
|
|
71
71
|
"./modifiers/sortable-handle.js": "./dist/_app_/modifiers/sortable-handle.js",
|