ember-sortable 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{_rollupPluginBabelHelpers-7ae2993d.js → _rollupPluginBabelHelpers-839d0adb.js} +15 -15
- package/dist/_rollupPluginBabelHelpers-839d0adb.js.map +1 -0
- package/dist/modifiers/sortable-group.js +6 -10
- package/dist/modifiers/sortable-group.js.map +1 -1
- package/dist/modifiers/sortable-handle.js +1 -1
- package/dist/modifiers/sortable-handle.js.map +1 -1
- package/dist/modifiers/sortable-item.js +9 -5
- package/dist/modifiers/sortable-item.js.map +1 -1
- package/dist/services/ember-sortable-internal-state.js +12 -1
- package/dist/services/ember-sortable-internal-state.js.map +1 -1
- package/dist/system/scroll-container.js.map +1 -1
- package/dist/system/scroll-parent.js.map +1 -1
- package/dist/test-support/helpers/drag.js.map +1 -1
- package/dist/test-support/helpers/reorder.js.map +1 -1
- package/dist/test-support/utils/keyboard.js.map +1 -1
- package/dist/test-support/utils/offset.js.map +1 -1
- package/dist/utils/coordinate.js.map +1 -1
- package/dist/utils/css-calculation.js.map +1 -1
- package/dist/utils/defaults.js.map +1 -1
- package/dist/utils/keyboard.js.map +1 -1
- package/package.json +15 -33
- package/dist/_rollupPluginBabelHelpers-7ae2993d.js.map +0 -1
package/dist/{_rollupPluginBabelHelpers-7ae2993d.js → _rollupPluginBabelHelpers-839d0adb.js}
RENAMED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
function _toPrimitive(t, r) {
|
|
2
|
+
if ("object" != typeof t || !t) return t;
|
|
3
|
+
var e = t[Symbol.toPrimitive];
|
|
4
|
+
if (void 0 !== e) {
|
|
5
|
+
var i = e.call(t, r || "default");
|
|
6
|
+
if ("object" != typeof i) return i;
|
|
7
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
8
|
+
}
|
|
9
|
+
return ("string" === r ? String : Number)(t);
|
|
10
|
+
}
|
|
11
|
+
function _toPropertyKey(t) {
|
|
12
|
+
var i = _toPrimitive(t, "string");
|
|
13
|
+
return "symbol" == typeof i ? i : String(i);
|
|
14
|
+
}
|
|
1
15
|
function _defineProperty(obj, key, value) {
|
|
2
16
|
key = _toPropertyKey(key);
|
|
3
17
|
if (key in obj) {
|
|
@@ -12,20 +26,6 @@ function _defineProperty(obj, key, value) {
|
|
|
12
26
|
}
|
|
13
27
|
return obj;
|
|
14
28
|
}
|
|
15
|
-
function _toPrimitive(input, hint) {
|
|
16
|
-
if (typeof input !== "object" || input === null) return input;
|
|
17
|
-
var prim = input[Symbol.toPrimitive];
|
|
18
|
-
if (prim !== undefined) {
|
|
19
|
-
var res = prim.call(input, hint || "default");
|
|
20
|
-
if (typeof res !== "object") return res;
|
|
21
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
22
|
-
}
|
|
23
|
-
return (hint === "string" ? String : Number)(input);
|
|
24
|
-
}
|
|
25
|
-
function _toPropertyKey(arg) {
|
|
26
|
-
var key = _toPrimitive(arg, "string");
|
|
27
|
-
return typeof key === "symbol" ? key : String(key);
|
|
28
|
-
}
|
|
29
29
|
function _initializerDefineProperty(target, property, descriptor, context) {
|
|
30
30
|
if (!descriptor) return;
|
|
31
31
|
Object.defineProperty(target, property, {
|
|
@@ -60,4 +60,4 @@ function _applyDecoratedDescriptor(target, property, decorators, descriptor, con
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
export { _applyDecoratedDescriptor as _, _defineProperty as a, _initializerDefineProperty as b };
|
|
63
|
-
//# sourceMappingURL=_rollupPluginBabelHelpers-
|
|
63
|
+
//# sourceMappingURL=_rollupPluginBabelHelpers-839d0adb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_rollupPluginBabelHelpers-839d0adb.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-
|
|
1
|
+
import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-839d0adb.js';
|
|
2
2
|
import Modifier from 'ember-modifier';
|
|
3
3
|
import { computed, action, set } from '@ember/object';
|
|
4
4
|
import { isEnterKey, isSpaceKey, isDownArrowKey, isUpArrowKey, isLeftArrowKey, isRightArrowKey, isEscapeKey } from '../utils/keyboard.js';
|
|
@@ -32,15 +32,6 @@ const NO_MODEL = {};
|
|
|
32
32
|
* </ol>
|
|
33
33
|
*/
|
|
34
34
|
let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _dec2 = computed('direction', 'sortedItems'), (_class = class SortableGroupModifier extends Modifier {
|
|
35
|
-
/** Primary keyboard utils */
|
|
36
|
-
// Tracks the currently selected item
|
|
37
|
-
|
|
38
|
-
// Tracks the current move
|
|
39
|
-
|
|
40
|
-
// Tracks the status of keyboard reorder mode
|
|
41
|
-
|
|
42
|
-
// Tracks if we're still performing a programmatic focus.
|
|
43
|
-
|
|
44
35
|
/** End of keyboard utils */
|
|
45
36
|
|
|
46
37
|
get disabled() {
|
|
@@ -640,11 +631,16 @@ let SortableGroupModifier = (_dec = inject('ember-sortable-internal-state'), _de
|
|
|
640
631
|
}
|
|
641
632
|
constructor(owner, args) {
|
|
642
633
|
super(owner, args);
|
|
634
|
+
/** Primary keyboard utils */
|
|
635
|
+
// Tracks the currently selected item
|
|
643
636
|
_defineProperty(this, "_selectedItem", null);
|
|
637
|
+
// Tracks the current move
|
|
644
638
|
_defineProperty(this, "move", null);
|
|
645
639
|
_defineProperty(this, "moves", []);
|
|
640
|
+
// Tracks the status of keyboard reorder mode
|
|
646
641
|
_defineProperty(this, "isKeyboardReorderModeEnabled", false);
|
|
647
642
|
_defineProperty(this, "isKeyDownEnabled", false);
|
|
643
|
+
// Tracks if we're still performing a programmatic focus.
|
|
648
644
|
_defineProperty(this, "isRetainingFocus", false);
|
|
649
645
|
_initializerDefineProperty(this, "sortableService", _descriptor, this);
|
|
650
646
|
_defineProperty(this, "announcer", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-group.js","sources":["../../src/modifiers/sortable-group.js"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\n/* eslint-disable ember/no-incorrect-calls-with-inline-anonymous-functions */\nimport Modifier from 'ember-modifier';\nimport { action, computed, set } from '@ember/object';\nimport {\n isDownArrowKey,\n isEnterKey,\n isEscapeKey,\n isLeftArrowKey,\n isRightArrowKey,\n isSpaceKey,\n isUpArrowKey,\n} from '../utils/keyboard';\nimport { ANNOUNCEMENT_ACTION_TYPES } from '../utils/constant';\nimport { defaultA11yAnnouncementConfig } from '../utils/defaults';\nimport { next, schedule, scheduleOnce, later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport { registerDestructor, isDestroyed } from '@ember/destroyable';\n\nconst NO_MODEL = {};\n\n/**\n * Modifier to apply a11y support to a group container for the Sortable component\n *\n * @param {String} [a11yItemName] A name for each model, used for creating more meaningful a11y announcements.\n * @param {Object} [a11yAnnouncementConfig] A map of action to function to build meaningful a11y announcements.\n * @param {String} [itemVisualClass] A class for styling visual indicators on the yielded `sortable-item`.\n * @param {Object} [handleVisualClass] An object for styling visual indicators on the yielded `sortable-handle` on different `move`.\n * @param {Function} [onChange] An optional callback for when position rearrangements are confirmed.\n *\n * @module drag-drop/draggable-group\n * @example\n * <ol {{sortable-group onChange=this.update a11yAnnouncementConfig=this.myA11yConfig}}>\n * {{#each model.items as |item|}}\n * <li {{sortable-item model=item}}>\n * {{item.name}}\n * <span class=\"handle\" {{sortable-handle}}>↕</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableGroupModifier extends Modifier {\n /** Primary keyboard utils */\n // Tracks the currently selected item\n _selectedItem = null;\n // Tracks the current move\n move = null;\n moves = [];\n\n // Tracks the status of keyboard reorder mode\n isKeyboardReorderModeEnabled = false;\n\n isKeyDownEnabled = false;\n\n // Tracks if we're still performing a programmatic focus.\n isRetainingFocus = false;\n /** End of keyboard utils */\n\n get disabled() {\n return this.named.disabled || false;\n }\n\n /** Start of a11y properties */\n /**\n * @property an object containing different classes for visual indicators\n * @type {Object}\n * @default null\n * @example\n * {\n * UP: 'up'\n * DOWN: 'down',\n * LEFT: 'left',\n * RIGHT: 'right',\n * }\n */\n get handleVisualClass() {\n return this.named.handleVisualClass || NO_MODEL;\n }\n\n /**\n * @property an object containing functions for producing screen reader announcements\n * @type {Object}\n * @example\n * {\n * MOVE: function() {},\n * ACTIVATE: function() {},\n * CONFIRM: function() {},\n * CANCEL: function() {},\n * }\n */\n get a11yAnnouncementConfig() {\n return this.named.a11yAnnouncementConfig || defaultA11yAnnouncementConfig;\n }\n\n get itemVisualClass() {\n return this.named.itemVisualClass || 'is-activated';\n }\n\n get a11yItemName() {\n return this.named.a11yItemName || 'item';\n }\n /** End of a11y properties */\n\n /**\n * Make sure that we cancel any ongoing keyboard operation when the focus is lost from the handle.\n * Because this can be fired pre-maturely, effectively cancelling before other keyboard operations,\n * we need to wait until other operations are completed, so this will cancel properly.\n *\n * @param {Event} event a DOM event.\n */\n @action\n focusOut() {\n if (!this.isRetainingFocus && !this._isElementWithinHandle(document.activeElement)) {\n this.cancelKeyboardSelection();\n }\n }\n\n /**\n * Explanation\n * 1. `KeyboardReorderMode` is disabled: users can activate it via ENTER or SPACE.\n * 2. `KeyboardReorderMode` is enabled: users can reorder via UP or DOWN arrow keys. TODO: Expand to more keys, e.g LEFT, RIGHT\n * 3. `KeyboardReorderMode` is enabled: users can finalize/save the reordering via ENTER or SPACE.\n * 4. `KeyboardReorderMode` is enabled: users can discard the reordering via ESC.\n *\n * @param {Event} event a DOM event\n */\n @action\n keyDown(event) {\n if (!this.isKeyDownEnabled) {\n return;\n }\n\n // Note: If handle is specified, we need to target the keyDown on the handle\n const isKeyboardReorderModeEnabled = this.isKeyboardReorderModeEnabled;\n const _selectedItem = this._selectedItem;\n\n if (!isKeyboardReorderModeEnabled && (isEnterKey(event) || isSpaceKey(event))) {\n this._prepareKeyboardReorderMode();\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.ACTIVATE);\n this._updateItemVisualIndicators(_selectedItem, true);\n this._updateHandleVisualIndicators(_selectedItem, true);\n\n this.isRetainingFocus = true;\n\n scheduleOnce('render', () => {\n this.element.focus();\n this.isRetainingFocus = false;\n });\n\n // Prevent the default scroll\n event.preventDefault();\n return;\n }\n\n if (isKeyboardReorderModeEnabled) {\n this._handleKeyboardReorder(event);\n event.preventDefault();\n }\n }\n\n /**\n * Checks if the given element is a child of a handle.\n *\n * @param {Element} element a DOM element.\n */\n _isElementWithinHandle(element) {\n return element.closest(`[data-sortable-handle]`);\n }\n\n /**\n * Moves an sortedItem from one index to another index, effectively performing an reorder.\n *\n * @param {Integer} fromIndex the original index\n * @param {Integer} toIndex the new index\n */\n _move(fromIndex, toIndex) {\n const direction = this.direction;\n const sortedItems = this.sortedItems;\n const item = sortedItems[fromIndex];\n const nextItem = sortedItems[toIndex];\n\n // switch direction values to notify sortedItems to update, so it sorts by direction.\n let value;\n const dimension = direction === 'y' ? 'height' : 'width';\n // DOWN or RIGHT\n if (toIndex > fromIndex) {\n value = item[direction];\n set(item, direction, nextItem[direction] + (nextItem[dimension] - item[dimension]));\n set(nextItem, direction, value);\n // UP or LEFT\n } else {\n value = nextItem[direction];\n set(nextItem, direction, item[direction] + (item[dimension] - nextItem[dimension]));\n set(item, direction, value);\n }\n }\n\n /**\n * Handles all of the keyboard operations, such as\n * 1. Keyboard navigation for UP, DOWN, LEFT, RIGHT\n * 2. Confirming reorder\n * 3. Discard reorder\n * 4. Also handles refocusing the element that triggered the interaction.\n *\n * @param {Event} event a DOM event.\n */\n _handleKeyboardReorder(event) {\n const direction = this.direction;\n const selectedItem = this._selectedItem;\n\n if (direction === 'y' && isDownArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (direction === 'y' && isUpArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if (direction === 'x' && isLeftArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if (direction === 'x' && isRightArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (isEnterKey(event) || isSpaceKey(event)) {\n // confirm will reset the selectedItem, so caching it here before we remove it.\n const itemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CONFIRM);\n this.confirmKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', () => this._focusItem(itemElement));\n } else if (isEscapeKey(event)) {\n // cancel will reset the selectedItem, so caching it here before we remove it.\n const _selectedItemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CANCEL);\n this.cancelKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', () => {\n const moves = this.moves;\n if (moves && moves.length > 0) {\n const sortedItems = this.sortedItems;\n const itemElement = sortedItems[moves[0].fromIndex].element;\n this._focusItem(itemElement);\n } else {\n this._focusItem(_selectedItemElement);\n }\n this.isRetainingFocus = false;\n });\n }\n }\n\n /**\n * Moves the item to its new position and adds the move to our history.\n *\n * @param {SortableItemModifier} item the item to be moved.\n * @param {Integer} delta how much to move index-wise.\n */\n moveItem(item, delta) {\n const sortedItems = this.sortedItems;\n const moves = this.moves;\n\n const sortedIndex = sortedItems.indexOf(item);\n const newSortedIndex = sortedIndex + delta;\n\n // If out of bounds, we don't do anything.\n if (newSortedIndex < 0 || newSortedIndex >= sortedItems.length) {\n return;\n }\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.MOVE, delta);\n // Guarantees that the before the UI is fully rendered before we move again.\n scheduleOnce('render', () => {\n this._move(sortedIndex, newSortedIndex);\n this._updateHandleVisualIndicators(item, true);\n\n moves.push([sortedIndex, newSortedIndex]);\n });\n }\n\n /**\n * Handles all the necessary operations needed for cancelling the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Undo all of the tracked moves.\n * 3. Tears down the application container, so we are not focus locked within the application.\n * 4. Resets the current selected item.\n */\n @action\n cancelKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n this._disableKeyboardReorderMode();\n // Revert the process by reversing the move.\n const moves = this.moves;\n while (moves.length > 0) {\n const move = moves.pop();\n this._move(move[1], move[0]);\n }\n this._tearDownA11yApplicationContainer();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Handles all th necessary operations needed for confirming the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Tears down the application container, so we are not focus locked within the container.\n * 3. Make sure to update and sync all the internal items and UI.\n * 4. Triggers the `onChange` action if provided.\n * 5. Resets the currently selected item.\n */\n confirmKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n this.moves = [];\n this._disableKeyboardReorderMode();\n this._tearDownA11yApplicationContainer();\n set(_selectedItem, 'wasDropped', true);\n this.commit();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Announces the message constructed from `a11yAnnouncementConfig`.\n *\n * @param {String} type the action type.\n * @param {Number} delta how much distance (item-wise) is being moved.\n */\n _announceAction(type, delta = null) {\n const a11yAnnouncementConfig = this.a11yAnnouncementConfig;\n const a11yItemName = this.a11yItemName;\n\n if (!a11yItemName || !(type in a11yAnnouncementConfig)) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const _selectedItem = this._selectedItem;\n const index = sortedItems.indexOf(_selectedItem);\n const announcer = this.announcer;\n\n const config = {\n a11yItemName,\n index: index,\n maxLength: sortedItems.length,\n direction: this.direction,\n delta,\n };\n\n const message = a11yAnnouncementConfig[type](config);\n announcer.textContent = message;\n\n // Reset the message after the message is announced.\n later(() => {\n announcer.textContent = '';\n }, 1000);\n }\n\n /**\n * Reset the selected item.\n */\n _resetItemSelection() {\n this._selectedItem = null;\n }\n\n /**\n * Updates the selected item's visual indicators.\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {Boolean} isActive to activate or deactivate the class.\n */\n _updateItemVisualIndicators(item, isActive) {\n const itemVisualClass = this.itemVisualClass;\n\n if (!itemVisualClass || !item) {\n return;\n }\n\n if (isActive) {\n item.element.classList.add(itemVisualClass);\n } else {\n item.element.classList.remove(itemVisualClass);\n }\n }\n\n /**\n * Updates the selected item's handle's visual indicators\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {boolean} isUpdate to update or not update.\n */\n _updateHandleVisualIndicators(item, isUpdate) {\n const handleVisualClass = this.handleVisualClass;\n\n if (handleVisualClass === NO_MODEL || !item) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const direction = this.direction;\n const index = sortedItems.indexOf(item);\n const handle = item.element.querySelector('[data-sortable-handle');\n const visualHandle = handle ? handle : item.element;\n const visualKeys = direction === 'y' ? ['UP', 'DOWN'] : ['LEFT', 'RIGHT'];\n\n visualKeys.forEach((visualKey) => {\n visualHandle.classList.remove(handleVisualClass[visualKey]);\n });\n\n if (!isUpdate) {\n return;\n }\n\n if (index > 0) {\n visualHandle.classList.add(handleVisualClass[visualKeys[0]]);\n }\n\n if (index < sortedItems.length - 1) {\n visualHandle.classList.add(handleVisualClass[visualKeys[1]]);\n }\n }\n\n /**\n * Sets focus on the current item or its handle.\n *\n * @param {Element} itemElement an DOM element representing an sortable-item.\n */\n _focusItem(itemElement) {\n const handle = itemElement.querySelector('[data-sortable-handle]');\n if (handle) {\n handle.focus();\n } else {\n // The consumer did not use a handle, so we set focus back to the item.\n itemElement.focus();\n }\n }\n\n /**\n * Enables keyboard reorder mode.\n */\n _enableKeyboardReorderMode() {\n this.isKeyboardReorderModeEnabled = true;\n }\n\n /**\n * Disables keyboard reorder mode\n */\n _disableKeyboardReorderMode() {\n this.isKeyboardReorderModeEnabled = false;\n }\n\n /**\n * Sets up the group as an application and make it programmatically focusable.\n */\n _setupA11yApplicationContainer() {\n this.element.setAttribute('role', 'application');\n this.element.tabIndex = -1;\n }\n\n /**\n * Tears down the `role=application` container.\n */\n _tearDownA11yApplicationContainer() {\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabIndex');\n }\n\n _prepareKeyboardReorderMode() {\n this._enableKeyboardReorderMode();\n this._setupA11yApplicationContainer();\n }\n\n // Begin of API\n\n /**\n @property direction\n @type string\n @default y\n */\n get direction() {\n return this.named.direction || 'y';\n }\n\n /**\n Called when order of items has been changed\n @property onChange\n @type Function\n @param {Object} groupModel group model (omitted if not set)\n @param {Object[]} newModel models in their new order\n @param {Object} itemModel model just dragged\n @default null\n */\n get onChange() {\n return this.named.onChange;\n }\n\n @service('ember-sortable-internal-state')\n sortableService;\n\n /**\n * This is the group name used to keep groups separate if there are more than one on the screen at a time.\n * If no group is assigned a default is used\n *\n * @default \"_EmberSortableGroup\"\n * @returns {*|string}\n */\n get groupName() {\n return this.named.groupName || '_EmberSortableGroup';\n }\n\n /**\n This is an array of SortableItemModifiers\n\n @property items\n @type SortableItemModifier[]\n */\n get items() {\n return this._groupDef.items;\n }\n set(items) {\n this._groupDef.items = items;\n }\n\n /**\n * Announcer element\n *\n * @type {Element}\n */\n announcer = null;\n\n /**\n Position for the first item.\n If spacing is present, first item's position will have to change as well.\n @property firstItemPosition\n @type Number\n */\n @computed('direction', 'sortedItems')\n get firstItemPosition() {\n const direction = this.direction;\n const sortedItems = this.sortedItems;\n\n return sortedItems[0][`${direction}`] - sortedItems[0].spacing;\n }\n\n /**\n An array of DOM elements.\n @property sortedItems\n @type SortableItemModifier[]\n */\n get sortedItems() {\n const direction = this.direction;\n return this.items.sort((a, b) => a[direction] - b[direction]);\n }\n\n /**\n * Enables keyboard navigation\n */\n @action\n activateKeyDown(selectedItem) {\n this._selectedItem = selectedItem;\n this.isKeyDownEnabled = true;\n }\n\n /**\n * Disables keyboard navigation\n * Currently used to handle keydown events bubbling up from\n * elements that aren't meant to invoke keyboard navigation\n * by ignoring them.\n */\n @action\n deactivateKeyDown() {\n this.isKeyDownEnabled = false;\n }\n\n /**\n Register the group with this Sortable.\n @method registerGroup\n @param {SortableGroupModifier} group\n */\n @action\n registerGroup(group) {\n this._group = group;\n }\n\n /**\n De-register the group with this Sortable.\n @method deregisterGroup\n @param {SortableGroupModifier} group\n */\n @action\n deregisterGroup(group) {\n if (this._group === group) {\n this._group = null;\n }\n }\n\n /**\n Prepare for sorting.\n Main purpose is to stash the current firstItemPosition so\n we don’t incur expensive re-layouts.\n @method _prepare\n */\n @action\n prepare() {\n this._firstItemPosition = this.firstItemPosition;\n }\n\n /**\n Update item positions (relatively to the first element position).\n @method update\n */\n @action\n update() {\n let sortedItems = this.sortedItems;\n // Position of the first element\n let position = this._firstItemPosition;\n\n // Just in case we haven’t called prepare first.\n if (position === undefined) {\n position = this.firstItemPosition;\n }\n\n sortedItems.forEach((item) => {\n let dimension;\n let direction = this.direction;\n\n if (!isDestroyed(item) && !item.isDragging) {\n set(item, direction, position);\n }\n\n // add additional spacing around active element\n if (item.isBusy) {\n position += item.spacing * 2;\n }\n\n if (direction === 'x') {\n dimension = 'width';\n }\n if (direction === 'y') {\n dimension = 'height';\n }\n\n position += item[dimension];\n });\n }\n\n /**\n @method _commit\n */\n @action\n commit() {\n const items = this.sortedItems;\n const itemModels = items.map((item) => item.model);\n const draggedItem = items.find((item) => item.wasDropped);\n let draggedModel;\n\n if (draggedItem) {\n draggedItem.wasDropped = false; // Reset\n draggedModel = draggedItem.model;\n }\n\n this._updateItems();\n this._onChange(itemModels, draggedModel);\n }\n\n @action\n _onChange(itemModels, draggedModel) {\n if (this.onChange) {\n this.onChange(itemModels, draggedModel);\n }\n }\n\n /**\n * Keeps the UI in sync with actual changes.\n * Needed for drag and keyboard operations.\n */\n _updateItems() {\n const items = this.sortedItems;\n\n delete this._firstItemPosition;\n\n schedule('render', () => {\n items.forEach((item) => item.freeze());\n });\n\n schedule('afterRender', () => {\n items.forEach((item) => item.reset());\n });\n\n next(() => {\n schedule('render', () => {\n items.forEach((item) => item.thaw());\n });\n });\n }\n\n @action\n _createAnnouncer() {\n const announcer = document.createElement('span');\n announcer.setAttribute('aria-live', 'polite');\n announcer.classList.add('visually-hidden');\n return announcer;\n }\n\n // end of API\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('focusout', this.focusOut);\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('focusout', this.focusOut);\n }\n\n element;\n didSetup = false;\n\n constructor(owner, args) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n modify(element, _positional, named) {\n this.element = element;\n this.named = named;\n\n this.removeEventListener();\n\n if (!this.didSetup) {\n this._groupDef = this.sortableService.fetchGroup(this.groupName);\n this.announcer = this._createAnnouncer();\n this.element.insertAdjacentElement('afterend', this.announcer);\n this.sortableService.registerGroup(this.groupName, this);\n\n this.didSetup = true;\n }\n\n if (this.disabled) {\n return;\n }\n\n this.addEventListener();\n }\n}\n\n/**\n *\n * @param {SortableGroupModifier} instance\n */\nfunction cleanup(instance) {\n // todo cleanup the announcer\n if (instance.announcer.parentNode) {\n instance.announcer.parentNode.removeChild(instance.announcer);\n }\n instance.removeEventListener();\n instance.sortableService.deregisterGroup(instance.groupName, instance);\n}\n"],"names":["NO_MODEL","SortableGroupModifier","service","computed","Modifier","disabled","named","handleVisualClass","a11yAnnouncementConfig","defaultA11yAnnouncementConfig","itemVisualClass","a11yItemName","focusOut","isRetainingFocus","_isElementWithinHandle","document","activeElement","cancelKeyboardSelection","keyDown","event","isKeyDownEnabled","isKeyboardReorderModeEnabled","_selectedItem","isEnterKey","isSpaceKey","_prepareKeyboardReorderMode","_announceAction","ANNOUNCEMENT_ACTION_TYPES","ACTIVATE","_updateItemVisualIndicators","_updateHandleVisualIndicators","scheduleOnce","element","focus","preventDefault","_handleKeyboardReorder","closest","_move","fromIndex","toIndex","direction","sortedItems","item","nextItem","value","dimension","set","selectedItem","isDownArrowKey","moveItem","isUpArrowKey","isLeftArrowKey","isRightArrowKey","itemElement","CONFIRM","confirmKeyboardSelection","_focusItem","isEscapeKey","_selectedItemElement","CANCEL","moves","length","delta","sortedIndex","indexOf","newSortedIndex","MOVE","push","_disableKeyboardReorderMode","move","pop","_tearDownA11yApplicationContainer","_resetItemSelection","commit","type","index","announcer","config","maxLength","message","textContent","later","isActive","classList","add","remove","isUpdate","handle","querySelector","visualHandle","visualKeys","forEach","visualKey","_enableKeyboardReorderMode","_setupA11yApplicationContainer","setAttribute","tabIndex","removeAttribute","onChange","groupName","items","_groupDef","firstItemPosition","spacing","sort","a","b","activateKeyDown","deactivateKeyDown","registerGroup","group","_group","deregisterGroup","prepare","_firstItemPosition","update","position","undefined","isDestroyed","isDragging","isBusy","itemModels","map","model","draggedItem","find","wasDropped","draggedModel","_updateItems","_onChange","schedule","freeze","reset","next","thaw","_createAnnouncer","createElement","addEventListener","removeEventListener","constructor","owner","args","registerDestructor","cleanup","modify","_positional","didSetup","sortableService","fetchGroup","insertAdjacentElement","action","instance","parentNode","removeChild"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,QAAQ,GAAG,EAAE,CAAA;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnBA,IAoBqBC,qBAAqB,IAkcvCC,IAAAA,GAAAA,MAAO,CAAC,+BAA+B,CAAC,UAwCxCC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,GAAA,MAAA,GA1exB,MAAMF,qBAAqB,SAASG,QAAQ,CAAC;AAC1D;AACA;;AAEA;;AAIA;;AAKA;;AAEA;;AAEA,EAAA,IAAIC,QAAQ,GAAG;AACb,IAAA,OAAO,IAAI,CAACC,KAAK,CAACD,QAAQ,IAAI,KAAK,CAAA;AACrC,GAAA;;AAEA;AACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,IAAIE,iBAAiB,GAAG;AACtB,IAAA,OAAO,IAAI,CAACD,KAAK,CAACC,iBAAiB,IAAIP,QAAQ,CAAA;AACjD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,IAAIQ,sBAAsB,GAAG;AAC3B,IAAA,OAAO,IAAI,CAACF,KAAK,CAACE,sBAAsB,IAAIC,6BAA6B,CAAA;AAC3E,GAAA;AAEA,EAAA,IAAIC,eAAe,GAAG;AACpB,IAAA,OAAO,IAAI,CAACJ,KAAK,CAACI,eAAe,IAAI,cAAc,CAAA;AACrD,GAAA;AAEA,EAAA,IAAIC,YAAY,GAAG;AACjB,IAAA,OAAO,IAAI,CAACL,KAAK,CAACK,YAAY,IAAI,MAAM,CAAA;AAC1C,GAAA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAEEC,EAAAA,QAAQ,GAAG;AACT,IAAA,IAAI,CAAC,IAAI,CAACC,gBAAgB,IAAI,CAAC,IAAI,CAACC,sBAAsB,CAACC,QAAQ,CAACC,aAAa,CAAC,EAAE;MAClF,IAAI,CAACC,uBAAuB,EAAE,CAAA;AAChC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAEEC,OAAO,CAACC,KAAK,EAAE;AACb,IAAA,IAAI,CAAC,IAAI,CAACC,gBAAgB,EAAE;AAC1B,MAAA,OAAA;AACF,KAAA;;AAEA;AACA,IAAA,MAAMC,4BAA4B,GAAG,IAAI,CAACA,4BAA4B,CAAA;AACtE,IAAA,MAAMC,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;AAExC,IAAA,IAAI,CAACD,4BAA4B,KAAKE,UAAU,CAACJ,KAAK,CAAC,IAAIK,UAAU,CAACL,KAAK,CAAC,CAAC,EAAE;MAC7E,IAAI,CAACM,2BAA2B,EAAE,CAAA;AAClC,MAAA,IAAI,CAACC,eAAe,CAACC,yBAAyB,CAACC,QAAQ,CAAC,CAAA;AACxD,MAAA,IAAI,CAACC,2BAA2B,CAACP,aAAa,EAAE,IAAI,CAAC,CAAA;AACrD,MAAA,IAAI,CAACQ,6BAA6B,CAACR,aAAa,EAAE,IAAI,CAAC,CAAA;MAEvD,IAAI,CAACT,gBAAgB,GAAG,IAAI,CAAA;MAE5BkB,YAAY,CAAC,QAAQ,EAAE,MAAM;AAC3B,QAAA,IAAI,CAACC,OAAO,CAACC,KAAK,EAAE,CAAA;QACpB,IAAI,CAACpB,gBAAgB,GAAG,KAAK,CAAA;AAC/B,OAAC,CAAC,CAAA;;AAEF;MACAM,KAAK,CAACe,cAAc,EAAE,CAAA;AACtB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIb,4BAA4B,EAAE;AAChC,MAAA,IAAI,CAACc,sBAAsB,CAAChB,KAAK,CAAC,CAAA;MAClCA,KAAK,CAACe,cAAc,EAAE,CAAA;AACxB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACEpB,sBAAsB,CAACkB,OAAO,EAAE;AAC9B,IAAA,OAAOA,OAAO,CAACI,OAAO,CAAE,wBAAuB,CAAC,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,CAACC,SAAS,EAAEC,OAAO,EAAE;AACxB,IAAA,MAAMC,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMC,IAAI,GAAGD,WAAW,CAACH,SAAS,CAAC,CAAA;AACnC,IAAA,MAAMK,QAAQ,GAAGF,WAAW,CAACF,OAAO,CAAC,CAAA;;AAErC;AACA,IAAA,IAAIK,KAAK,CAAA;IACT,MAAMC,SAAS,GAAGL,SAAS,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;AACxD;IACA,IAAID,OAAO,GAAGD,SAAS,EAAE;AACvBM,MAAAA,KAAK,GAAGF,IAAI,CAACF,SAAS,CAAC,CAAA;MACvBM,GAAG,CAACJ,IAAI,EAAEF,SAAS,EAAEG,QAAQ,CAACH,SAAS,CAAC,IAAIG,QAAQ,CAACE,SAAS,CAAC,GAAGH,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC,CAAA;AACnFC,MAAAA,GAAG,CAACH,QAAQ,EAAEH,SAAS,EAAEI,KAAK,CAAC,CAAA;AAC/B;AACF,KAAC,MAAM;AACLA,MAAAA,KAAK,GAAGD,QAAQ,CAACH,SAAS,CAAC,CAAA;MAC3BM,GAAG,CAACH,QAAQ,EAAEH,SAAS,EAAEE,IAAI,CAACF,SAAS,CAAC,IAAIE,IAAI,CAACG,SAAS,CAAC,GAAGF,QAAQ,CAACE,SAAS,CAAC,CAAC,CAAC,CAAA;AACnFC,MAAAA,GAAG,CAACJ,IAAI,EAAEF,SAAS,EAAEI,KAAK,CAAC,CAAA;AAC7B,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACET,sBAAsB,CAAChB,KAAK,EAAE;AAC5B,IAAA,MAAMqB,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMO,YAAY,GAAG,IAAI,CAACzB,aAAa,CAAA;IAEvC,IAAIkB,SAAS,KAAK,GAAG,IAAIQ,cAAc,CAAC7B,KAAK,CAAC,EAAE;AAC9C,MAAA,IAAI,CAAC8B,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAA;KAC/B,MAAM,IAAIP,SAAS,KAAK,GAAG,IAAIU,YAAY,CAAC/B,KAAK,CAAC,EAAE;AACnD,MAAA,IAAI,CAAC8B,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;KAChC,MAAM,IAAIP,SAAS,KAAK,GAAG,IAAIW,cAAc,CAAChC,KAAK,CAAC,EAAE;AACrD,MAAA,IAAI,CAAC8B,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;KAChC,MAAM,IAAIP,SAAS,KAAK,GAAG,IAAIY,eAAe,CAACjC,KAAK,CAAC,EAAE;AACtD,MAAA,IAAI,CAAC8B,QAAQ,CAACF,YAAY,EAAE,CAAC,CAAC,CAAA;KAC/B,MAAM,IAAIxB,UAAU,CAACJ,KAAK,CAAC,IAAIK,UAAU,CAACL,KAAK,CAAC,EAAE;AACjD;AACA,MAAA,MAAMkC,WAAW,GAAGN,YAAY,CAACf,OAAO,CAAA;AACxC,MAAA,IAAI,CAACN,eAAe,CAACC,yBAAyB,CAAC2B,OAAO,CAAC,CAAA;MACvD,IAAI,CAACC,wBAAwB,EAAE,CAAA;MAE/B,IAAI,CAAC1C,gBAAgB,GAAG,IAAI,CAAA;MAC5BkB,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,CAACyB,UAAU,CAACH,WAAW,CAAC,CAAC,CAAA;AAC5D,KAAC,MAAM,IAAII,WAAW,CAACtC,KAAK,CAAC,EAAE;AAC7B;AACA,MAAA,MAAMuC,oBAAoB,GAAGX,YAAY,CAACf,OAAO,CAAA;AACjD,MAAA,IAAI,CAACN,eAAe,CAACC,yBAAyB,CAACgC,MAAM,CAAC,CAAA;MACtD,IAAI,CAAC1C,uBAAuB,EAAE,CAAA;MAE9B,IAAI,CAACJ,gBAAgB,GAAG,IAAI,CAAA;MAC5BkB,YAAY,CAAC,QAAQ,EAAE,MAAM;AAC3B,QAAA,MAAM6B,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,QAAA,IAAIA,KAAK,IAAIA,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;AAC7B,UAAA,MAAMpB,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,UAAA,MAAMY,WAAW,GAAGZ,WAAW,CAACmB,KAAK,CAAC,CAAC,CAAC,CAACtB,SAAS,CAAC,CAACN,OAAO,CAAA;AAC3D,UAAA,IAAI,CAACwB,UAAU,CAACH,WAAW,CAAC,CAAA;AAC9B,SAAC,MAAM;AACL,UAAA,IAAI,CAACG,UAAU,CAACE,oBAAoB,CAAC,CAAA;AACvC,SAAA;QACA,IAAI,CAAC7C,gBAAgB,GAAG,KAAK,CAAA;AAC/B,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEoC,EAAAA,QAAQ,CAACP,IAAI,EAAEoB,KAAK,EAAE;AACpB,IAAA,MAAMrB,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMmB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AAExB,IAAA,MAAMG,WAAW,GAAGtB,WAAW,CAACuB,OAAO,CAACtB,IAAI,CAAC,CAAA;AAC7C,IAAA,MAAMuB,cAAc,GAAGF,WAAW,GAAGD,KAAK,CAAA;;AAE1C;IACA,IAAIG,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAIxB,WAAW,CAACoB,MAAM,EAAE;AAC9D,MAAA,OAAA;AACF,KAAA;IACA,IAAI,CAACnC,eAAe,CAACC,yBAAyB,CAACuC,IAAI,EAAEJ,KAAK,CAAC,CAAA;AAC3D;IACA/B,YAAY,CAAC,QAAQ,EAAE,MAAM;AAC3B,MAAA,IAAI,CAACM,KAAK,CAAC0B,WAAW,EAAEE,cAAc,CAAC,CAAA;AACvC,MAAA,IAAI,CAACnC,6BAA6B,CAACY,IAAI,EAAE,IAAI,CAAC,CAAA;MAE9CkB,KAAK,CAACO,IAAI,CAAC,CAACJ,WAAW,EAAEE,cAAc,CAAC,CAAC,CAAA;AAC3C,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAEEhD,EAAAA,uBAAuB,GAAG;AACxB,IAAA,MAAMK,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;IACxC,IAAI,CAAC8C,2BAA2B,EAAE,CAAA;AAClC;AACA,IAAA,MAAMR,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,IAAA,OAAOA,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;AACvB,MAAA,MAAMQ,IAAI,GAAGT,KAAK,CAACU,GAAG,EAAE,CAAA;AACxB,MAAA,IAAI,CAACjC,KAAK,CAACgC,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,KAAA;IACA,IAAI,CAACE,iCAAiC,EAAE,CAAA;AACxC,IAAA,IAAI,CAAC1C,2BAA2B,CAACP,aAAa,EAAE,KAAK,CAAC,CAAA;AACtD,IAAA,IAAI,CAACQ,6BAA6B,CAACR,aAAa,EAAE,KAAK,CAAC,CAAA;IACxD,IAAI,CAACkD,mBAAmB,EAAE,CAAA;AAC5B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEjB,EAAAA,wBAAwB,GAAG;AACzB,IAAA,MAAMjC,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;IACxC,IAAI,CAACsC,KAAK,GAAG,EAAE,CAAA;IACf,IAAI,CAACQ,2BAA2B,EAAE,CAAA;IAClC,IAAI,CAACG,iCAAiC,EAAE,CAAA;AACxCzB,IAAAA,GAAG,CAACxB,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,CAACmD,MAAM,EAAE,CAAA;AACb,IAAA,IAAI,CAAC5C,2BAA2B,CAACP,aAAa,EAAE,KAAK,CAAC,CAAA;AACtD,IAAA,IAAI,CAACQ,6BAA6B,CAACR,aAAa,EAAE,KAAK,CAAC,CAAA;IACxD,IAAI,CAACkD,mBAAmB,EAAE,CAAA;AAC5B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE9C,EAAAA,eAAe,CAACgD,IAAI,EAAEZ,KAAK,GAAG,IAAI,EAAE;AAClC,IAAA,MAAMtD,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAAA;AAC1D,IAAA,MAAMG,YAAY,GAAG,IAAI,CAACA,YAAY,CAAA;IAEtC,IAAI,CAACA,YAAY,IAAI,EAAE+D,IAAI,IAAIlE,sBAAsB,CAAC,EAAE;AACtD,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMiC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMnB,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;AACxC,IAAA,MAAMqD,KAAK,GAAGlC,WAAW,CAACuB,OAAO,CAAC1C,aAAa,CAAC,CAAA;AAChD,IAAA,MAAMsD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAEhC,IAAA,MAAMC,MAAM,GAAG;MACblE,YAAY;AACZgE,MAAAA,KAAK,EAAEA,KAAK;MACZG,SAAS,EAAErC,WAAW,CAACoB,MAAM;MAC7BrB,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBsB,MAAAA,KAAAA;KACD,CAAA;IAED,MAAMiB,OAAO,GAAGvE,sBAAsB,CAACkE,IAAI,CAAC,CAACG,MAAM,CAAC,CAAA;IACpDD,SAAS,CAACI,WAAW,GAAGD,OAAO,CAAA;;AAE/B;AACAE,IAAAA,KAAK,CAAC,MAAM;MACVL,SAAS,CAACI,WAAW,GAAG,EAAE,CAAA;KAC3B,EAAE,IAAI,CAAC,CAAA;AACV,GAAA;;AAEA;AACF;AACA;AACER,EAAAA,mBAAmB,GAAG;IACpB,IAAI,CAAClD,aAAa,GAAG,IAAI,CAAA;AAC3B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEO,EAAAA,2BAA2B,CAACa,IAAI,EAAEwC,QAAQ,EAAE;AAC1C,IAAA,MAAMxE,eAAe,GAAG,IAAI,CAACA,eAAe,CAAA;AAE5C,IAAA,IAAI,CAACA,eAAe,IAAI,CAACgC,IAAI,EAAE;AAC7B,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIwC,QAAQ,EAAE;MACZxC,IAAI,CAACV,OAAO,CAACmD,SAAS,CAACC,GAAG,CAAC1E,eAAe,CAAC,CAAA;AAC7C,KAAC,MAAM;MACLgC,IAAI,CAACV,OAAO,CAACmD,SAAS,CAACE,MAAM,CAAC3E,eAAe,CAAC,CAAA;AAChD,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEoB,EAAAA,6BAA6B,CAACY,IAAI,EAAE4C,QAAQ,EAAE;AAC5C,IAAA,MAAM/E,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAAA;AAEhD,IAAA,IAAIA,iBAAiB,KAAKP,QAAQ,IAAI,CAAC0C,IAAI,EAAE;AAC3C,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMD,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACpC,IAAA,MAAMD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMmC,KAAK,GAAGlC,WAAW,CAACuB,OAAO,CAACtB,IAAI,CAAC,CAAA;IACvC,MAAM6C,MAAM,GAAG7C,IAAI,CAACV,OAAO,CAACwD,aAAa,CAAC,uBAAuB,CAAC,CAAA;IAClE,MAAMC,YAAY,GAAGF,MAAM,GAAGA,MAAM,GAAG7C,IAAI,CAACV,OAAO,CAAA;AACnD,IAAA,MAAM0D,UAAU,GAAGlD,SAAS,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEzEkD,IAAAA,UAAU,CAACC,OAAO,CAAEC,SAAS,IAAK;MAChCH,YAAY,CAACN,SAAS,CAACE,MAAM,CAAC9E,iBAAiB,CAACqF,SAAS,CAAC,CAAC,CAAA;AAC7D,KAAC,CAAC,CAAA;IAEF,IAAI,CAACN,QAAQ,EAAE;AACb,MAAA,OAAA;AACF,KAAA;IAEA,IAAIX,KAAK,GAAG,CAAC,EAAE;AACbc,MAAAA,YAAY,CAACN,SAAS,CAACC,GAAG,CAAC7E,iBAAiB,CAACmF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,KAAA;AAEA,IAAA,IAAIf,KAAK,GAAGlC,WAAW,CAACoB,MAAM,GAAG,CAAC,EAAE;AAClC4B,MAAAA,YAAY,CAACN,SAAS,CAACC,GAAG,CAAC7E,iBAAiB,CAACmF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACElC,UAAU,CAACH,WAAW,EAAE;AACtB,IAAA,MAAMkC,MAAM,GAAGlC,WAAW,CAACmC,aAAa,CAAC,wBAAwB,CAAC,CAAA;AAClE,IAAA,IAAID,MAAM,EAAE;MACVA,MAAM,CAACtD,KAAK,EAAE,CAAA;AAChB,KAAC,MAAM;AACL;MACAoB,WAAW,CAACpB,KAAK,EAAE,CAAA;AACrB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACE4D,EAAAA,0BAA0B,GAAG;IAC3B,IAAI,CAACxE,4BAA4B,GAAG,IAAI,CAAA;AAC1C,GAAA;;AAEA;AACF;AACA;AACE+C,EAAAA,2BAA2B,GAAG;IAC5B,IAAI,CAAC/C,4BAA4B,GAAG,KAAK,CAAA;AAC3C,GAAA;;AAEA;AACF;AACA;AACEyE,EAAAA,8BAA8B,GAAG;IAC/B,IAAI,CAAC9D,OAAO,CAAC+D,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAChD,IAAA,IAAI,CAAC/D,OAAO,CAACgE,QAAQ,GAAG,CAAC,CAAC,CAAA;AAC5B,GAAA;;AAEA;AACF;AACA;AACEzB,EAAAA,iCAAiC,GAAG;AAClC,IAAA,IAAI,CAACvC,OAAO,CAACiE,eAAe,CAAC,MAAM,CAAC,CAAA;AACpC,IAAA,IAAI,CAACjE,OAAO,CAACiE,eAAe,CAAC,UAAU,CAAC,CAAA;AAC1C,GAAA;AAEAxE,EAAAA,2BAA2B,GAAG;IAC5B,IAAI,CAACoE,0BAA0B,EAAE,CAAA;IACjC,IAAI,CAACC,8BAA8B,EAAE,CAAA;AACvC,GAAA;;AAEA;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,IAAItD,SAAS,GAAG;AACd,IAAA,OAAO,IAAI,CAAClC,KAAK,CAACkC,SAAS,IAAI,GAAG,CAAA;AACpC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,IAAI0D,QAAQ,GAAG;AACb,IAAA,OAAO,IAAI,CAAC5F,KAAK,CAAC4F,QAAQ,CAAA;AAC5B,GAAA;AAKA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,IAAIC,SAAS,GAAG;AACd,IAAA,OAAO,IAAI,CAAC7F,KAAK,CAAC6F,SAAS,IAAI,qBAAqB,CAAA;AACtD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AAEE,EAAA,IAAIC,KAAK,GAAG;AACV,IAAA,OAAO,IAAI,CAACC,SAAS,CAACD,KAAK,CAAA;AAC7B,GAAA;EACAtD,GAAG,CAACsD,KAAK,EAAE;AACT,IAAA,IAAI,CAACC,SAAS,CAACD,KAAK,GAAGA,KAAK,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,IACIE,iBAAiB,GAAG;AACtB,IAAA,MAAM9D,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;AAChC,IAAA,MAAMC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AAEpC,IAAA,OAAOA,WAAW,CAAC,CAAC,CAAC,CAAE,CAAED,EAAAA,SAAU,CAAC,CAAA,CAAC,GAAGC,WAAW,CAAC,CAAC,CAAC,CAAC8D,OAAO,CAAA;AAChE,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI9D,WAAW,GAAG;AAChB,IAAA,MAAMD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;IAChC,OAAO,IAAI,CAAC4D,KAAK,CAACI,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACjE,SAAS,CAAC,GAAGkE,CAAC,CAAClE,SAAS,CAAC,CAAC,CAAA;AAC/D,GAAA;;AAEA;AACF;AACA;EAEEmE,eAAe,CAAC5D,YAAY,EAAE;IAC5B,IAAI,CAACzB,aAAa,GAAGyB,YAAY,CAAA;IACjC,IAAI,CAAC3B,gBAAgB,GAAG,IAAI,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAEEwF,EAAAA,iBAAiB,GAAG;IAClB,IAAI,CAACxF,gBAAgB,GAAG,KAAK,CAAA;AAC/B,GAAA;;AAEA;AACF;AACA;AACA;AACA;EAEEyF,aAAa,CAACC,KAAK,EAAE;IACnB,IAAI,CAACC,MAAM,GAAGD,KAAK,CAAA;AACrB,GAAA;;AAEA;AACF;AACA;AACA;AACA;EAEEE,eAAe,CAACF,KAAK,EAAE;AACrB,IAAA,IAAI,IAAI,CAACC,MAAM,KAAKD,KAAK,EAAE;MACzB,IAAI,CAACC,MAAM,GAAG,IAAI,CAAA;AACpB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAEEE,EAAAA,OAAO,GAAG;AACR,IAAA,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACZ,iBAAiB,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;AAEEa,EAAAA,MAAM,GAAG;AACP,IAAA,IAAI1E,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AAClC;AACA,IAAA,IAAI2E,QAAQ,GAAG,IAAI,CAACF,kBAAkB,CAAA;;AAEtC;IACA,IAAIE,QAAQ,KAAKC,SAAS,EAAE;MAC1BD,QAAQ,GAAG,IAAI,CAACd,iBAAiB,CAAA;AACnC,KAAA;AAEA7D,IAAAA,WAAW,CAACkD,OAAO,CAAEjD,IAAI,IAAK;AAC5B,MAAA,IAAIG,SAAS,CAAA;AACb,MAAA,IAAIL,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;MAE9B,IAAI,CAAC8E,WAAW,CAAC5E,IAAI,CAAC,IAAI,CAACA,IAAI,CAAC6E,UAAU,EAAE;AAC1CzE,QAAAA,GAAG,CAACJ,IAAI,EAAEF,SAAS,EAAE4E,QAAQ,CAAC,CAAA;AAChC,OAAA;;AAEA;MACA,IAAI1E,IAAI,CAAC8E,MAAM,EAAE;AACfJ,QAAAA,QAAQ,IAAI1E,IAAI,CAAC6D,OAAO,GAAG,CAAC,CAAA;AAC9B,OAAA;MAEA,IAAI/D,SAAS,KAAK,GAAG,EAAE;AACrBK,QAAAA,SAAS,GAAG,OAAO,CAAA;AACrB,OAAA;MACA,IAAIL,SAAS,KAAK,GAAG,EAAE;AACrBK,QAAAA,SAAS,GAAG,QAAQ,CAAA;AACtB,OAAA;AAEAuE,MAAAA,QAAQ,IAAI1E,IAAI,CAACG,SAAS,CAAC,CAAA;AAC7B,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACF;AACA;AAEE4B,EAAAA,MAAM,GAAG;AACP,IAAA,MAAM2B,KAAK,GAAG,IAAI,CAAC3D,WAAW,CAAA;IAC9B,MAAMgF,UAAU,GAAGrB,KAAK,CAACsB,GAAG,CAAEhF,IAAI,IAAKA,IAAI,CAACiF,KAAK,CAAC,CAAA;IAClD,MAAMC,WAAW,GAAGxB,KAAK,CAACyB,IAAI,CAAEnF,IAAI,IAAKA,IAAI,CAACoF,UAAU,CAAC,CAAA;AACzD,IAAA,IAAIC,YAAY,CAAA;AAEhB,IAAA,IAAIH,WAAW,EAAE;AACfA,MAAAA,WAAW,CAACE,UAAU,GAAG,KAAK,CAAC;MAC/BC,YAAY,GAAGH,WAAW,CAACD,KAAK,CAAA;AAClC,KAAA;IAEA,IAAI,CAACK,YAAY,EAAE,CAAA;AACnB,IAAA,IAAI,CAACC,SAAS,CAACR,UAAU,EAAEM,YAAY,CAAC,CAAA;AAC1C,GAAA;AAGAE,EAAAA,SAAS,CAACR,UAAU,EAAEM,YAAY,EAAE;IAClC,IAAI,IAAI,CAAC7B,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACA,QAAQ,CAACuB,UAAU,EAAEM,YAAY,CAAC,CAAA;AACzC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,YAAY,GAAG;AACb,IAAA,MAAM5B,KAAK,GAAG,IAAI,CAAC3D,WAAW,CAAA;IAE9B,OAAO,IAAI,CAACyE,kBAAkB,CAAA;IAE9BgB,QAAQ,CAAC,QAAQ,EAAE,MAAM;MACvB9B,KAAK,CAACT,OAAO,CAAEjD,IAAI,IAAKA,IAAI,CAACyF,MAAM,EAAE,CAAC,CAAA;AACxC,KAAC,CAAC,CAAA;IAEFD,QAAQ,CAAC,aAAa,EAAE,MAAM;MAC5B9B,KAAK,CAACT,OAAO,CAAEjD,IAAI,IAAKA,IAAI,CAAC0F,KAAK,EAAE,CAAC,CAAA;AACvC,KAAC,CAAC,CAAA;AAEFC,IAAAA,IAAI,CAAC,MAAM;MACTH,QAAQ,CAAC,QAAQ,EAAE,MAAM;QACvB9B,KAAK,CAACT,OAAO,CAAEjD,IAAI,IAAKA,IAAI,CAAC4F,IAAI,EAAE,CAAC,CAAA;AACtC,OAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CAAA;AACJ,GAAA;AAGAC,EAAAA,gBAAgB,GAAG;AACjB,IAAA,MAAM3D,SAAS,GAAG7D,QAAQ,CAACyH,aAAa,CAAC,MAAM,CAAC,CAAA;AAChD5D,IAAAA,SAAS,CAACmB,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAC7CnB,IAAAA,SAAS,CAACO,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC1C,IAAA,OAAOR,SAAS,CAAA;AAClB,GAAA;;AAEA;;AAEA6D,EAAAA,gBAAgB,GAAG;IACjB,IAAI,CAACzG,OAAO,CAACyG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACvH,OAAO,CAAC,CAAA;IACtD,IAAI,CAACc,OAAO,CAACyG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC7H,QAAQ,CAAC,CAAA;AAC1D,GAAA;AAEA8H,EAAAA,mBAAmB,GAAG;IACpB,IAAI,CAAC1G,OAAO,CAAC0G,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACxH,OAAO,CAAC,CAAA;IACzD,IAAI,CAACc,OAAO,CAAC0G,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC9H,QAAQ,CAAC,CAAA;AAC7D,GAAA;AAKA+H,EAAAA,WAAW,CAACC,KAAK,EAAEC,IAAI,EAAE;AACvB,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC,CAAA;AAAC,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EA/pBL,IAAI,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAEb,IAAI,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EACH,EAAE,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,8BAAA,EAGqB,KAAK,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,kBAAA,EAEjB,KAAK,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,kBAAA,EAGL,KAAK,CAAA,CAAA;AAAA,IAAA,0BAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAodZ,IAAI,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EA6LL,KAAK,CAAA,CAAA;AAIdC,IAAAA,kBAAkB,CAAC,IAAI,EAAEC,OAAO,CAAC,CAAA;AACnC,GAAA;AAEAC,EAAAA,MAAM,CAAChH,OAAO,EAAEiH,WAAW,EAAE3I,KAAK,EAAE;IAClC,IAAI,CAAC0B,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAAC1B,KAAK,GAAGA,KAAK,CAAA;IAElB,IAAI,CAACoI,mBAAmB,EAAE,CAAA;AAE1B,IAAA,IAAI,CAAC,IAAI,CAACQ,QAAQ,EAAE;AAClB,MAAA,IAAI,CAAC7C,SAAS,GAAG,IAAI,CAAC8C,eAAe,CAACC,UAAU,CAAC,IAAI,CAACjD,SAAS,CAAC,CAAA;AAChE,MAAA,IAAI,CAACvB,SAAS,GAAG,IAAI,CAAC2D,gBAAgB,EAAE,CAAA;MACxC,IAAI,CAACvG,OAAO,CAACqH,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAACzE,SAAS,CAAC,CAAA;MAC9D,IAAI,CAACuE,eAAe,CAACtC,aAAa,CAAC,IAAI,CAACV,SAAS,EAAE,IAAI,CAAC,CAAA;MAExD,IAAI,CAAC+C,QAAQ,GAAG,IAAI,CAAA;AACtB,KAAA;IAEA,IAAI,IAAI,CAAC7I,QAAQ,EAAE;AACjB,MAAA,OAAA;AACF,KAAA;IAEA,IAAI,CAACoI,gBAAgB,EAAE,CAAA;AACzB,GAAA;AACF,CAAC,GAtnBEa,yBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,UAAAA,EAAAA,CAAAA,MAAM,CAgBNA,EAAAA,MAAAA,CAAAA,wBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,UAAAA,CAAAA,EAAAA,MAAAA,CAAAA,SAAAA,CAAAA,EAAAA,yBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,CAAAA,MAAM,4JA2JNA,MAAM,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,yBAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAA,WAAA,GAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,IAAA,CAAA,EAAA;AAAA,EAAA,YAAA,EAAA,IAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,QAAA,EAAA,IAAA;AAAA,EAAA,WAAA,EAAA,IAAA;AAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,KAAA,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,CA+QNA,MAAM,CAYNA,EAAAA,MAAAA,CAAAA,wBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,iBAAAA,CAAAA,EAAAA,MAAAA,CAAAA,SAAAA,CAAAA,EAAAA,yBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,mBAAAA,EAAAA,CAAAA,MAAM,CAUNA,EAAAA,MAAAA,CAAAA,wBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,mBAAAA,CAAAA,EAAAA,MAAAA,CAAAA,SAAAA,CAAAA,EAAAA,yBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,eAAAA,EAAAA,CAAAA,MAAM,0JAUNA,MAAM,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,SAAA,EAAA,CAaNA,MAAM,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,QAAA,EAAA,CASNA,MAAM,CAsCNA,EAAAA,MAAAA,CAAAA,wBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,EAAAA,MAAAA,CAAAA,SAAAA,CAAAA,EAAAA,yBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,CAAAA,MAAM,CAgBNA,EAAAA,MAAAA,CAAAA,wBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,EAAAA,MAAAA,CAAAA,SAAAA,CAAAA,EAAAA,yBAAAA,CAAAA,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,CAAAA,MAAM,uJA+BNA,MAAM,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,GAAA,MAAA,CAAA,EAAA;AAmDT;AACA;AACA;AACA;AACA,SAASP,OAAO,CAACQ,QAAQ,EAAE;AACzB;AACA,EAAA,IAAIA,QAAQ,CAAC3E,SAAS,CAAC4E,UAAU,EAAE;IACjCD,QAAQ,CAAC3E,SAAS,CAAC4E,UAAU,CAACC,WAAW,CAACF,QAAQ,CAAC3E,SAAS,CAAC,CAAA;AAC/D,GAAA;EACA2E,QAAQ,CAACb,mBAAmB,EAAE,CAAA;EAC9Ba,QAAQ,CAACJ,eAAe,CAACnC,eAAe,CAACuC,QAAQ,CAACpD,SAAS,EAAEoD,QAAQ,CAAC,CAAA;AACxE;;;;"}
|
|
1
|
+
{"version":3,"file":"sortable-group.js","sources":["../../src/modifiers/sortable-group.js"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\n/* eslint-disable ember/no-incorrect-calls-with-inline-anonymous-functions */\nimport Modifier from 'ember-modifier';\nimport { action, computed, set } from '@ember/object';\nimport {\n isDownArrowKey,\n isEnterKey,\n isEscapeKey,\n isLeftArrowKey,\n isRightArrowKey,\n isSpaceKey,\n isUpArrowKey,\n} from '../utils/keyboard';\nimport { ANNOUNCEMENT_ACTION_TYPES } from '../utils/constant';\nimport { defaultA11yAnnouncementConfig } from '../utils/defaults';\nimport { next, schedule, scheduleOnce, later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport { registerDestructor, isDestroyed } from '@ember/destroyable';\n\nconst NO_MODEL = {};\n\n/**\n * Modifier to apply a11y support to a group container for the Sortable component\n *\n * @param {String} [a11yItemName] A name for each model, used for creating more meaningful a11y announcements.\n * @param {Object} [a11yAnnouncementConfig] A map of action to function to build meaningful a11y announcements.\n * @param {String} [itemVisualClass] A class for styling visual indicators on the yielded `sortable-item`.\n * @param {Object} [handleVisualClass] An object for styling visual indicators on the yielded `sortable-handle` on different `move`.\n * @param {Function} [onChange] An optional callback for when position rearrangements are confirmed.\n *\n * @module drag-drop/draggable-group\n * @example\n * <ol {{sortable-group onChange=this.update a11yAnnouncementConfig=this.myA11yConfig}}>\n * {{#each model.items as |item|}}\n * <li {{sortable-item model=item}}>\n * {{item.name}}\n * <span class=\"handle\" {{sortable-handle}}>↕</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableGroupModifier extends Modifier {\n /** Primary keyboard utils */\n // Tracks the currently selected item\n _selectedItem = null;\n // Tracks the current move\n move = null;\n moves = [];\n\n // Tracks the status of keyboard reorder mode\n isKeyboardReorderModeEnabled = false;\n\n isKeyDownEnabled = false;\n\n // Tracks if we're still performing a programmatic focus.\n isRetainingFocus = false;\n /** End of keyboard utils */\n\n get disabled() {\n return this.named.disabled || false;\n }\n\n /** Start of a11y properties */\n /**\n * @property an object containing different classes for visual indicators\n * @type {Object}\n * @default null\n * @example\n * {\n * UP: 'up'\n * DOWN: 'down',\n * LEFT: 'left',\n * RIGHT: 'right',\n * }\n */\n get handleVisualClass() {\n return this.named.handleVisualClass || NO_MODEL;\n }\n\n /**\n * @property an object containing functions for producing screen reader announcements\n * @type {Object}\n * @example\n * {\n * MOVE: function() {},\n * ACTIVATE: function() {},\n * CONFIRM: function() {},\n * CANCEL: function() {},\n * }\n */\n get a11yAnnouncementConfig() {\n return this.named.a11yAnnouncementConfig || defaultA11yAnnouncementConfig;\n }\n\n get itemVisualClass() {\n return this.named.itemVisualClass || 'is-activated';\n }\n\n get a11yItemName() {\n return this.named.a11yItemName || 'item';\n }\n /** End of a11y properties */\n\n /**\n * Make sure that we cancel any ongoing keyboard operation when the focus is lost from the handle.\n * Because this can be fired pre-maturely, effectively cancelling before other keyboard operations,\n * we need to wait until other operations are completed, so this will cancel properly.\n *\n * @param {Event} event a DOM event.\n */\n @action\n focusOut() {\n if (!this.isRetainingFocus && !this._isElementWithinHandle(document.activeElement)) {\n this.cancelKeyboardSelection();\n }\n }\n\n /**\n * Explanation\n * 1. `KeyboardReorderMode` is disabled: users can activate it via ENTER or SPACE.\n * 2. `KeyboardReorderMode` is enabled: users can reorder via UP or DOWN arrow keys. TODO: Expand to more keys, e.g LEFT, RIGHT\n * 3. `KeyboardReorderMode` is enabled: users can finalize/save the reordering via ENTER or SPACE.\n * 4. `KeyboardReorderMode` is enabled: users can discard the reordering via ESC.\n *\n * @param {Event} event a DOM event\n */\n @action\n keyDown(event) {\n if (!this.isKeyDownEnabled) {\n return;\n }\n\n // Note: If handle is specified, we need to target the keyDown on the handle\n const isKeyboardReorderModeEnabled = this.isKeyboardReorderModeEnabled;\n const _selectedItem = this._selectedItem;\n\n if (!isKeyboardReorderModeEnabled && (isEnterKey(event) || isSpaceKey(event))) {\n this._prepareKeyboardReorderMode();\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.ACTIVATE);\n this._updateItemVisualIndicators(_selectedItem, true);\n this._updateHandleVisualIndicators(_selectedItem, true);\n\n this.isRetainingFocus = true;\n\n scheduleOnce('render', () => {\n this.element.focus();\n this.isRetainingFocus = false;\n });\n\n // Prevent the default scroll\n event.preventDefault();\n return;\n }\n\n if (isKeyboardReorderModeEnabled) {\n this._handleKeyboardReorder(event);\n event.preventDefault();\n }\n }\n\n /**\n * Checks if the given element is a child of a handle.\n *\n * @param {Element} element a DOM element.\n */\n _isElementWithinHandle(element) {\n return element.closest(`[data-sortable-handle]`);\n }\n\n /**\n * Moves an sortedItem from one index to another index, effectively performing an reorder.\n *\n * @param {Integer} fromIndex the original index\n * @param {Integer} toIndex the new index\n */\n _move(fromIndex, toIndex) {\n const direction = this.direction;\n const sortedItems = this.sortedItems;\n const item = sortedItems[fromIndex];\n const nextItem = sortedItems[toIndex];\n\n // switch direction values to notify sortedItems to update, so it sorts by direction.\n let value;\n const dimension = direction === 'y' ? 'height' : 'width';\n // DOWN or RIGHT\n if (toIndex > fromIndex) {\n value = item[direction];\n set(item, direction, nextItem[direction] + (nextItem[dimension] - item[dimension]));\n set(nextItem, direction, value);\n // UP or LEFT\n } else {\n value = nextItem[direction];\n set(nextItem, direction, item[direction] + (item[dimension] - nextItem[dimension]));\n set(item, direction, value);\n }\n }\n\n /**\n * Handles all of the keyboard operations, such as\n * 1. Keyboard navigation for UP, DOWN, LEFT, RIGHT\n * 2. Confirming reorder\n * 3. Discard reorder\n * 4. Also handles refocusing the element that triggered the interaction.\n *\n * @param {Event} event a DOM event.\n */\n _handleKeyboardReorder(event) {\n const direction = this.direction;\n const selectedItem = this._selectedItem;\n\n if (direction === 'y' && isDownArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (direction === 'y' && isUpArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if (direction === 'x' && isLeftArrowKey(event)) {\n this.moveItem(selectedItem, -1);\n } else if (direction === 'x' && isRightArrowKey(event)) {\n this.moveItem(selectedItem, 1);\n } else if (isEnterKey(event) || isSpaceKey(event)) {\n // confirm will reset the selectedItem, so caching it here before we remove it.\n const itemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CONFIRM);\n this.confirmKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', () => this._focusItem(itemElement));\n } else if (isEscapeKey(event)) {\n // cancel will reset the selectedItem, so caching it here before we remove it.\n const _selectedItemElement = selectedItem.element;\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.CANCEL);\n this.cancelKeyboardSelection();\n\n this.isRetainingFocus = true;\n scheduleOnce('render', () => {\n const moves = this.moves;\n if (moves && moves.length > 0) {\n const sortedItems = this.sortedItems;\n const itemElement = sortedItems[moves[0].fromIndex].element;\n this._focusItem(itemElement);\n } else {\n this._focusItem(_selectedItemElement);\n }\n this.isRetainingFocus = false;\n });\n }\n }\n\n /**\n * Moves the item to its new position and adds the move to our history.\n *\n * @param {SortableItemModifier} item the item to be moved.\n * @param {Integer} delta how much to move index-wise.\n */\n moveItem(item, delta) {\n const sortedItems = this.sortedItems;\n const moves = this.moves;\n\n const sortedIndex = sortedItems.indexOf(item);\n const newSortedIndex = sortedIndex + delta;\n\n // If out of bounds, we don't do anything.\n if (newSortedIndex < 0 || newSortedIndex >= sortedItems.length) {\n return;\n }\n this._announceAction(ANNOUNCEMENT_ACTION_TYPES.MOVE, delta);\n // Guarantees that the before the UI is fully rendered before we move again.\n scheduleOnce('render', () => {\n this._move(sortedIndex, newSortedIndex);\n this._updateHandleVisualIndicators(item, true);\n\n moves.push([sortedIndex, newSortedIndex]);\n });\n }\n\n /**\n * Handles all the necessary operations needed for cancelling the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Undo all of the tracked moves.\n * 3. Tears down the application container, so we are not focus locked within the application.\n * 4. Resets the current selected item.\n */\n @action\n cancelKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n this._disableKeyboardReorderMode();\n // Revert the process by reversing the move.\n const moves = this.moves;\n while (moves.length > 0) {\n const move = moves.pop();\n this._move(move[1], move[0]);\n }\n this._tearDownA11yApplicationContainer();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Handles all th necessary operations needed for confirming the current keyboard selection.\n * 1. Disables keyboard reorder mode.\n * 2. Tears down the application container, so we are not focus locked within the container.\n * 3. Make sure to update and sync all the internal items and UI.\n * 4. Triggers the `onChange` action if provided.\n * 5. Resets the currently selected item.\n */\n confirmKeyboardSelection() {\n const _selectedItem = this._selectedItem;\n this.moves = [];\n this._disableKeyboardReorderMode();\n this._tearDownA11yApplicationContainer();\n set(_selectedItem, 'wasDropped', true);\n this.commit();\n this._updateItemVisualIndicators(_selectedItem, false);\n this._updateHandleVisualIndicators(_selectedItem, false);\n this._resetItemSelection();\n }\n\n /**\n * Announces the message constructed from `a11yAnnouncementConfig`.\n *\n * @param {String} type the action type.\n * @param {Number} delta how much distance (item-wise) is being moved.\n */\n _announceAction(type, delta = null) {\n const a11yAnnouncementConfig = this.a11yAnnouncementConfig;\n const a11yItemName = this.a11yItemName;\n\n if (!a11yItemName || !(type in a11yAnnouncementConfig)) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const _selectedItem = this._selectedItem;\n const index = sortedItems.indexOf(_selectedItem);\n const announcer = this.announcer;\n\n const config = {\n a11yItemName,\n index: index,\n maxLength: sortedItems.length,\n direction: this.direction,\n delta,\n };\n\n const message = a11yAnnouncementConfig[type](config);\n announcer.textContent = message;\n\n // Reset the message after the message is announced.\n later(() => {\n announcer.textContent = '';\n }, 1000);\n }\n\n /**\n * Reset the selected item.\n */\n _resetItemSelection() {\n this._selectedItem = null;\n }\n\n /**\n * Updates the selected item's visual indicators.\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {Boolean} isActive to activate or deactivate the class.\n */\n _updateItemVisualIndicators(item, isActive) {\n const itemVisualClass = this.itemVisualClass;\n\n if (!itemVisualClass || !item) {\n return;\n }\n\n if (isActive) {\n item.element.classList.add(itemVisualClass);\n } else {\n item.element.classList.remove(itemVisualClass);\n }\n }\n\n /**\n * Updates the selected item's handle's visual indicators\n *\n * @param {SortableItemModifier} item the selected item.\n * @param {boolean} isUpdate to update or not update.\n */\n _updateHandleVisualIndicators(item, isUpdate) {\n const handleVisualClass = this.handleVisualClass;\n\n if (handleVisualClass === NO_MODEL || !item) {\n return;\n }\n\n const sortedItems = this.sortedItems;\n const direction = this.direction;\n const index = sortedItems.indexOf(item);\n const handle = item.element.querySelector('[data-sortable-handle');\n const visualHandle = handle ? handle : item.element;\n const visualKeys = direction === 'y' ? ['UP', 'DOWN'] : ['LEFT', 'RIGHT'];\n\n visualKeys.forEach((visualKey) => {\n visualHandle.classList.remove(handleVisualClass[visualKey]);\n });\n\n if (!isUpdate) {\n return;\n }\n\n if (index > 0) {\n visualHandle.classList.add(handleVisualClass[visualKeys[0]]);\n }\n\n if (index < sortedItems.length - 1) {\n visualHandle.classList.add(handleVisualClass[visualKeys[1]]);\n }\n }\n\n /**\n * Sets focus on the current item or its handle.\n *\n * @param {Element} itemElement an DOM element representing an sortable-item.\n */\n _focusItem(itemElement) {\n const handle = itemElement.querySelector('[data-sortable-handle]');\n if (handle) {\n handle.focus();\n } else {\n // The consumer did not use a handle, so we set focus back to the item.\n itemElement.focus();\n }\n }\n\n /**\n * Enables keyboard reorder mode.\n */\n _enableKeyboardReorderMode() {\n this.isKeyboardReorderModeEnabled = true;\n }\n\n /**\n * Disables keyboard reorder mode\n */\n _disableKeyboardReorderMode() {\n this.isKeyboardReorderModeEnabled = false;\n }\n\n /**\n * Sets up the group as an application and make it programmatically focusable.\n */\n _setupA11yApplicationContainer() {\n this.element.setAttribute('role', 'application');\n this.element.tabIndex = -1;\n }\n\n /**\n * Tears down the `role=application` container.\n */\n _tearDownA11yApplicationContainer() {\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabIndex');\n }\n\n _prepareKeyboardReorderMode() {\n this._enableKeyboardReorderMode();\n this._setupA11yApplicationContainer();\n }\n\n // Begin of API\n\n /**\n @property direction\n @type string\n @default y\n */\n get direction() {\n return this.named.direction || 'y';\n }\n\n /**\n Called when order of items has been changed\n @property onChange\n @type Function\n @param {Object} groupModel group model (omitted if not set)\n @param {Object[]} newModel models in their new order\n @param {Object} itemModel model just dragged\n @default null\n */\n get onChange() {\n return this.named.onChange;\n }\n\n @service('ember-sortable-internal-state')\n sortableService;\n\n /**\n * This is the group name used to keep groups separate if there are more than one on the screen at a time.\n * If no group is assigned a default is used\n *\n * @default \"_EmberSortableGroup\"\n * @returns {*|string}\n */\n get groupName() {\n return this.named.groupName || '_EmberSortableGroup';\n }\n\n /**\n This is an array of SortableItemModifiers\n\n @property items\n @type SortableItemModifier[]\n */\n get items() {\n return this._groupDef.items;\n }\n set(items) {\n this._groupDef.items = items;\n }\n\n /**\n * Announcer element\n *\n * @type {Element}\n */\n announcer = null;\n\n /**\n Position for the first item.\n If spacing is present, first item's position will have to change as well.\n @property firstItemPosition\n @type Number\n */\n @computed('direction', 'sortedItems')\n get firstItemPosition() {\n const direction = this.direction;\n const sortedItems = this.sortedItems;\n\n return sortedItems[0][`${direction}`] - sortedItems[0].spacing;\n }\n\n /**\n An array of DOM elements.\n @property sortedItems\n @type SortableItemModifier[]\n */\n get sortedItems() {\n const direction = this.direction;\n return this.items.sort((a, b) => a[direction] - b[direction]);\n }\n\n /**\n * Enables keyboard navigation\n */\n @action\n activateKeyDown(selectedItem) {\n this._selectedItem = selectedItem;\n this.isKeyDownEnabled = true;\n }\n\n /**\n * Disables keyboard navigation\n * Currently used to handle keydown events bubbling up from\n * elements that aren't meant to invoke keyboard navigation\n * by ignoring them.\n */\n @action\n deactivateKeyDown() {\n this.isKeyDownEnabled = false;\n }\n\n /**\n Register the group with this Sortable.\n @method registerGroup\n @param {SortableGroupModifier} group\n */\n @action\n registerGroup(group) {\n this._group = group;\n }\n\n /**\n De-register the group with this Sortable.\n @method deregisterGroup\n @param {SortableGroupModifier} group\n */\n @action\n deregisterGroup(group) {\n if (this._group === group) {\n this._group = null;\n }\n }\n\n /**\n Prepare for sorting.\n Main purpose is to stash the current firstItemPosition so\n we don’t incur expensive re-layouts.\n @method _prepare\n */\n @action\n prepare() {\n this._firstItemPosition = this.firstItemPosition;\n }\n\n /**\n Update item positions (relatively to the first element position).\n @method update\n */\n @action\n update() {\n let sortedItems = this.sortedItems;\n // Position of the first element\n let position = this._firstItemPosition;\n\n // Just in case we haven’t called prepare first.\n if (position === undefined) {\n position = this.firstItemPosition;\n }\n\n sortedItems.forEach((item) => {\n let dimension;\n let direction = this.direction;\n\n if (!isDestroyed(item) && !item.isDragging) {\n set(item, direction, position);\n }\n\n // add additional spacing around active element\n if (item.isBusy) {\n position += item.spacing * 2;\n }\n\n if (direction === 'x') {\n dimension = 'width';\n }\n if (direction === 'y') {\n dimension = 'height';\n }\n\n position += item[dimension];\n });\n }\n\n /**\n @method _commit\n */\n @action\n commit() {\n const items = this.sortedItems;\n const itemModels = items.map((item) => item.model);\n const draggedItem = items.find((item) => item.wasDropped);\n let draggedModel;\n\n if (draggedItem) {\n draggedItem.wasDropped = false; // Reset\n draggedModel = draggedItem.model;\n }\n\n this._updateItems();\n this._onChange(itemModels, draggedModel);\n }\n\n @action\n _onChange(itemModels, draggedModel) {\n if (this.onChange) {\n this.onChange(itemModels, draggedModel);\n }\n }\n\n /**\n * Keeps the UI in sync with actual changes.\n * Needed for drag and keyboard operations.\n */\n _updateItems() {\n const items = this.sortedItems;\n\n delete this._firstItemPosition;\n\n schedule('render', () => {\n items.forEach((item) => item.freeze());\n });\n\n schedule('afterRender', () => {\n items.forEach((item) => item.reset());\n });\n\n next(() => {\n schedule('render', () => {\n items.forEach((item) => item.thaw());\n });\n });\n }\n\n @action\n _createAnnouncer() {\n const announcer = document.createElement('span');\n announcer.setAttribute('aria-live', 'polite');\n announcer.classList.add('visually-hidden');\n return announcer;\n }\n\n // end of API\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('focusout', this.focusOut);\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('focusout', this.focusOut);\n }\n\n element;\n didSetup = false;\n\n constructor(owner, args) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n modify(element, _positional, named) {\n this.element = element;\n this.named = named;\n\n this.removeEventListener();\n\n if (!this.didSetup) {\n this._groupDef = this.sortableService.fetchGroup(this.groupName);\n this.announcer = this._createAnnouncer();\n this.element.insertAdjacentElement('afterend', this.announcer);\n this.sortableService.registerGroup(this.groupName, this);\n\n this.didSetup = true;\n }\n\n if (this.disabled) {\n return;\n }\n\n this.addEventListener();\n }\n}\n\n/**\n *\n * @param {SortableGroupModifier} instance\n */\nfunction cleanup(instance) {\n // todo cleanup the announcer\n if (instance.announcer.parentNode) {\n instance.announcer.parentNode.removeChild(instance.announcer);\n }\n instance.removeEventListener();\n instance.sortableService.deregisterGroup(instance.groupName, instance);\n}\n"],"names":["NO_MODEL","SortableGroupModifier","_dec","service","_dec2","computed","_class","Modifier","disabled","named","handleVisualClass","a11yAnnouncementConfig","defaultA11yAnnouncementConfig","itemVisualClass","a11yItemName","focusOut","isRetainingFocus","_isElementWithinHandle","document","activeElement","cancelKeyboardSelection","keyDown","event","isKeyDownEnabled","isKeyboardReorderModeEnabled","_selectedItem","isEnterKey","isSpaceKey","_prepareKeyboardReorderMode","_announceAction","ANNOUNCEMENT_ACTION_TYPES","ACTIVATE","_updateItemVisualIndicators","_updateHandleVisualIndicators","scheduleOnce","element","focus","preventDefault","_handleKeyboardReorder","closest","_move","fromIndex","toIndex","direction","sortedItems","item","nextItem","value","dimension","set","selectedItem","isDownArrowKey","moveItem","isUpArrowKey","isLeftArrowKey","isRightArrowKey","itemElement","CONFIRM","confirmKeyboardSelection","_focusItem","isEscapeKey","_selectedItemElement","CANCEL","moves","length","delta","sortedIndex","indexOf","newSortedIndex","MOVE","push","_disableKeyboardReorderMode","move","pop","_tearDownA11yApplicationContainer","_resetItemSelection","commit","type","index","announcer","config","maxLength","message","textContent","later","isActive","classList","add","remove","isUpdate","handle","querySelector","visualHandle","visualKeys","forEach","visualKey","_enableKeyboardReorderMode","_setupA11yApplicationContainer","setAttribute","tabIndex","removeAttribute","onChange","groupName","items","_groupDef","firstItemPosition","spacing","sort","a","b","activateKeyDown","deactivateKeyDown","registerGroup","group","_group","deregisterGroup","prepare","_firstItemPosition","update","position","undefined","isDestroyed","isDragging","isBusy","itemModels","map","model","draggedItem","find","wasDropped","draggedModel","_updateItems","_onChange","schedule","freeze","reset","next","thaw","_createAnnouncer","createElement","addEventListener","removeEventListener","constructor","owner","args","_defineProperty","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","didSetup","sortableService","fetchGroup","insertAdjacentElement","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","configurable","enumerable","writable","initializer","instance","parentNode","removeChild"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-handle.js","sources":["../../src/modifiers/sortable-handle.js"],"sourcesContent":["import Modifier from 'ember-modifier';\n\n/**\n * Modifier to to mark the handle of an item. If this is not supplied the item will be the handle\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 SortableHandleModifier extends Modifier {\n didSetup = false;\n\n modify(element /*, positional, named*/) {\n if (!this.didSetup) {\n // take the model and look up the registered element, the tell that element you are the handle\n element.dataset.sortableHandle = true;\n element.tabIndex = '0';\n element.setAttribute('role', 'button');\n this.didSetup = true;\n }\n }\n}\n"],"names":["SortableHandleModifier","Modifier","modify","element","didSetup","dataset","sortableHandle","tabIndex","setAttribute"],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMA,sBAAsB,SAASC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"sortable-handle.js","sources":["../../src/modifiers/sortable-handle.js"],"sourcesContent":["import Modifier from 'ember-modifier';\n\n/**\n * Modifier to to mark the handle of an item. If this is not supplied the item will be the handle\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 SortableHandleModifier extends Modifier {\n didSetup = false;\n\n modify(element /*, positional, named*/) {\n if (!this.didSetup) {\n // take the model and look up the registered element, the tell that element you are the handle\n element.dataset.sortableHandle = true;\n element.tabIndex = '0';\n element.setAttribute('role', 'button');\n this.didSetup = true;\n }\n }\n}\n"],"names":["SortableHandleModifier","Modifier","constructor","args","_defineProperty","modify","element","didSetup","dataset","sortableHandle","tabIndex","setAttribute"],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMA,sBAAsB,SAASC,QAAQ,CAAC;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAAAC,IAAAA,eAAA,mBAChD,KAAK,CAAA,CAAA;AAAA,GAAA;EAEhBC,MAAMA,CAACC,OAAO,0BAA0B;AACtC,IAAA,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;AAClB;AACAD,MAAAA,OAAO,CAACE,OAAO,CAACC,cAAc,GAAG,IAAI,CAAA;MACrCH,OAAO,CAACI,QAAQ,GAAG,GAAG,CAAA;AACtBJ,MAAAA,OAAO,CAACK,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;MACtC,IAAI,CAACJ,QAAQ,GAAG,IAAI,CAAA;AACtB,KAAA;AACF,GAAA;AACF;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-
|
|
1
|
+
import { _ as _applyDecoratedDescriptor, a as _defineProperty, b as _initializerDefineProperty } from '../_rollupPluginBabelHelpers-839d0adb.js';
|
|
2
2
|
import Modifier from 'ember-modifier';
|
|
3
3
|
import { defer, Promise as Promise$1 } from 'rsvp';
|
|
4
4
|
import { action, set } from '@ember/object';
|
|
@@ -722,12 +722,13 @@ let SortableItemModifier = (_dec = inject('ember-sortable-internal-state'), (_cl
|
|
|
722
722
|
this.element.removeEventListener('touchstart', this.touchStart);
|
|
723
723
|
this.listenersRegistered = false;
|
|
724
724
|
}
|
|
725
|
-
setupHandleElement() {
|
|
725
|
+
setupHandleElement(disabled = false) {
|
|
726
726
|
this.handleElement = this.element.querySelector(this.handle);
|
|
727
|
+
const touchAction = disabled ? 'initial' : 'none';
|
|
727
728
|
if (this.handleElement) {
|
|
728
|
-
this.handleElement.style['touch-action'] =
|
|
729
|
+
this.handleElement.style['touch-action'] = touchAction;
|
|
729
730
|
} else {
|
|
730
|
-
this.element.style['touch-action'] =
|
|
731
|
+
this.element.style['touch-action'] = touchAction;
|
|
731
732
|
}
|
|
732
733
|
}
|
|
733
734
|
constructor(owner, args) {
|
|
@@ -742,6 +743,9 @@ let SortableItemModifier = (_dec = inject('ember-sortable-internal-state'), (_cl
|
|
|
742
743
|
_defineProperty(this, "maxScrollSpeed", 20);
|
|
743
744
|
_defineProperty(this, "element", void 0);
|
|
744
745
|
_defineProperty(this, "didSetup", false);
|
|
746
|
+
/**
|
|
747
|
+
* tracks if event listeners have been registered. Registering event handlers is unnecessary if item is disabled.
|
|
748
|
+
*/
|
|
745
749
|
_defineProperty(this, "listenersRegistered", false);
|
|
746
750
|
registerDestructor(this, cleanup);
|
|
747
751
|
}
|
|
@@ -752,7 +756,7 @@ let SortableItemModifier = (_dec = inject('ember-sortable-internal-state'), (_cl
|
|
|
752
756
|
|
|
753
757
|
// Instead of using `event.preventDefault()` in the 'primeDrag' event,
|
|
754
758
|
// (doesn't work in Chrome 56), we set touch-action: none as a workaround.
|
|
755
|
-
this.setupHandleElement();
|
|
759
|
+
this.setupHandleElement(this.named.disabled);
|
|
756
760
|
if (!this.didSetup) {
|
|
757
761
|
this.element.dataset.sortableItem = true;
|
|
758
762
|
this.sortableService.registerItem(this.groupName, this);
|
|
@@ -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 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 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 === '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 === '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);\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(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 === '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(dimension) {\n if (!this.isDragging) {\n return;\n }\n let updateInterval = this.updateInterval;\n const groupDirection = this.direction;\n\n if (groupDirection === 'x') {\n this.x = dimension;\n }\n if (groupDirection === 'y') {\n this.y = dimension;\n }\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 set(this, 'isDragging', false);\n set(this, 'isDropping', true);\n\n this.sortableGroup.update();\n transitionPromise.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 _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 let el = this.element;\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\n let marginBottom = parseFloat(getComputedStyle(el).marginBottom);\n height += 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() {\n this.handleElement = this.element.querySelector(this.handle);\n\n if (this.handleElement) {\n this.handleElement.style['touch-action'] = 'none';\n } else {\n this.element.style['touch-action'] = 'none';\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();\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","service","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","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","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","left","getBoundingClientRect","right","top","bottom","leadingEdgeKey","trailingEdgeKey","scrollKey","pageKey","createFakeEvent","_pageX","_pageY","pageX","pageY","clientX","clientY","checkScrollBounds","leadingEdge","trailingEdge","scroll","delta","speed","maxScrollSpeed","min","max","isWindow","requestAnimationFrame","dragOrigin","elementOrigin","scrollOrigin","parentElement","parentNode","x","scrollX","_drag","y","scrollY","_scheduleApplyPosition","scheduleOnce","_applyPosition","offsetLeft","parseFloat","marginLeft","offsetTop","dimension","update","transitionPromise","_waitForTransition","_preventClick","then","_complete","ELEMENT_CLICK_ACTION","_preventClickHandler","e","stopImmediatePropagation","waiterToken","DEBUG","beginAsync","isAnimated","deferred","defer","resolve","promise","finally","duration","transitionDuration","Promise","later","endAsync","commit","transitionProperty","test","rule","match","unit","scrollLeft","offsetWidth","elStyles","marginRight","getBorderSpacing","horizontal","offsetHeight","marginBottom","vertical","listenersRegistered","querySelector","constructor","owner","args","registerDestructor","cleanup","modify","_positional","className","didSetup","dataset","sortableItem","registerItem","action","instance","deregisterItem"],"mappings":"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"}
|
|
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 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 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 === '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 === '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);\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(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 === '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(dimension) {\n if (!this.isDragging) {\n return;\n }\n let updateInterval = this.updateInterval;\n const groupDirection = this.direction;\n\n if (groupDirection === 'x') {\n this.x = dimension;\n }\n if (groupDirection === 'y') {\n this.y = dimension;\n }\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 set(this, 'isDragging', false);\n set(this, 'isDropping', true);\n\n this.sortableGroup.update();\n transitionPromise.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 _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 let el = this.element;\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\n let marginBottom = parseFloat(getComputedStyle(el).marginBottom);\n height += 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","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","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","left","getBoundingClientRect","right","top","bottom","leadingEdgeKey","trailingEdgeKey","scrollKey","pageKey","createFakeEvent","_pageX","_pageY","pageX","pageY","clientX","clientY","checkScrollBounds","leadingEdge","trailingEdge","scroll","delta","speed","maxScrollSpeed","min","max","isWindow","requestAnimationFrame","dragOrigin","elementOrigin","scrollOrigin","parentElement","parentNode","x","scrollX","_drag","y","scrollY","_scheduleApplyPosition","scheduleOnce","_applyPosition","offsetLeft","parseFloat","marginLeft","offsetTop","dimension","update","transitionPromise","_waitForTransition","_preventClick","then","_complete","ELEMENT_CLICK_ACTION","_preventClickHandler","e","stopImmediatePropagation","waiterToken","DEBUG","beginAsync","isAnimated","deferred","defer","resolve","promise","finally","duration","transitionDuration","Promise","later","endAsync","commit","transitionProperty","test","rule","match","unit","scrollLeft","offsetWidth","elStyles","marginRight","getBorderSpacing","horizontal","offsetHeight","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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"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import { a as _defineProperty } from '../_rollupPluginBabelHelpers-
|
|
1
|
+
import { a as _defineProperty } from '../_rollupPluginBabelHelpers-839d0adb.js';
|
|
2
2
|
import Service from '@ember/service';
|
|
3
3
|
|
|
4
4
|
class EmberSortableService extends Service {
|
|
5
5
|
constructor(...args) {
|
|
6
6
|
super(...args);
|
|
7
|
+
/**
|
|
8
|
+
* Internal State for any groups currently in DOM
|
|
9
|
+
*
|
|
10
|
+
* {
|
|
11
|
+
* groupName: {
|
|
12
|
+
* groupModifier: object,
|
|
13
|
+
* items: []
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
* @type {{}}
|
|
17
|
+
*/
|
|
7
18
|
_defineProperty(this, "groups", {});
|
|
8
19
|
}
|
|
9
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ember-sortable-internal-state.js","sources":["../../src/services/ember-sortable-internal-state.js"],"sourcesContent":["import Service from '@ember/service';\n\nexport default class EmberSortableService extends Service {\n /**\n * Internal State for any groups currently in DOM\n *\n * {\n * groupName: {\n * groupModifier: object,\n * items: []\n * }\n * }\n * @type {{}}\n */\n groups = {};\n\n /**\n * Register a new group with the service\n *\n * @param {String} groupName\n * @param {SortableGroupModifier} groupModifier\n */\n registerGroup(groupName, groupModifier) {\n if (this.groups[groupName] === undefined) {\n this.groups[groupName] = {\n groupModifier: groupModifier,\n items: [],\n };\n } else {\n this.groups[groupName].groupModifier = groupModifier;\n }\n }\n\n /**\n * De-register a group with the service\n *\n * @param {String} groupName\n */\n deregisterGroup(groupName) {\n delete this.groups[groupName];\n }\n\n /**\n * Register an item with this group\n *\n * @method registerItem\n * @param {String} groupName\n * @param {SortableItemModifier} item\n */\n registerItem(groupName, item) {\n let groupDef = this.fetchGroup(groupName);\n let items = groupDef.items;\n\n if (items.indexOf(item) === -1) {\n items = [...items, item];\n }\n\n groupDef.items = items;\n }\n\n /**\n De-register an item with this group.\n\n @method deregisterItem\n @param groupName\n @param item\n */\n deregisterItem(groupName, item) {\n let groupDef = this.fetchGroup(groupName);\n let items = groupDef.items;\n\n const index = items.indexOf(item);\n if (index !== -1) {\n let newItems = [...items.slice(0, index), ...items.slice(index + 1)];\n groupDef.items = newItems;\n }\n }\n\n /**\n * Fetch a group definition\n *\n * @param {String} groupName\n * @returns {*}\n */\n fetchGroup(groupName) {\n if (this.groups[groupName] === undefined) {\n this.registerGroup(groupName, undefined);\n }\n\n return this.groups[groupName];\n }\n}\n"],"names":["EmberSortableService","Service","registerGroup","groupName","groupModifier","groups","undefined","items","deregisterGroup","registerItem","item","groupDef","fetchGroup","indexOf","deregisterItem","index","newItems","slice"],"mappings":";;;AAEe,MAAMA,oBAAoB,SAASC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ember-sortable-internal-state.js","sources":["../../src/services/ember-sortable-internal-state.js"],"sourcesContent":["import Service from '@ember/service';\n\nexport default class EmberSortableService extends Service {\n /**\n * Internal State for any groups currently in DOM\n *\n * {\n * groupName: {\n * groupModifier: object,\n * items: []\n * }\n * }\n * @type {{}}\n */\n groups = {};\n\n /**\n * Register a new group with the service\n *\n * @param {String} groupName\n * @param {SortableGroupModifier} groupModifier\n */\n registerGroup(groupName, groupModifier) {\n if (this.groups[groupName] === undefined) {\n this.groups[groupName] = {\n groupModifier: groupModifier,\n items: [],\n };\n } else {\n this.groups[groupName].groupModifier = groupModifier;\n }\n }\n\n /**\n * De-register a group with the service\n *\n * @param {String} groupName\n */\n deregisterGroup(groupName) {\n delete this.groups[groupName];\n }\n\n /**\n * Register an item with this group\n *\n * @method registerItem\n * @param {String} groupName\n * @param {SortableItemModifier} item\n */\n registerItem(groupName, item) {\n let groupDef = this.fetchGroup(groupName);\n let items = groupDef.items;\n\n if (items.indexOf(item) === -1) {\n items = [...items, item];\n }\n\n groupDef.items = items;\n }\n\n /**\n De-register an item with this group.\n\n @method deregisterItem\n @param groupName\n @param item\n */\n deregisterItem(groupName, item) {\n let groupDef = this.fetchGroup(groupName);\n let items = groupDef.items;\n\n const index = items.indexOf(item);\n if (index !== -1) {\n let newItems = [...items.slice(0, index), ...items.slice(index + 1)];\n groupDef.items = newItems;\n }\n }\n\n /**\n * Fetch a group definition\n *\n * @param {String} groupName\n * @returns {*}\n */\n fetchGroup(groupName) {\n if (this.groups[groupName] === undefined) {\n this.registerGroup(groupName, undefined);\n }\n\n return this.groups[groupName];\n }\n}\n"],"names":["EmberSortableService","Service","constructor","args","_defineProperty","registerGroup","groupName","groupModifier","groups","undefined","items","deregisterGroup","registerItem","item","groupDef","fetchGroup","indexOf","deregisterItem","index","newItems","slice"],"mappings":";;;AAEe,MAAMA,oBAAoB,SAASC,OAAO,CAAC;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AACxD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAVEC,eAAA,CAAA,IAAA,EAAA,QAAA,EAWS,EAAE,CAAA,CAAA;AAAA,GAAA;AAEX;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,aAAaA,CAACC,SAAS,EAAEC,aAAa,EAAE;IACtC,IAAI,IAAI,CAACC,MAAM,CAACF,SAAS,CAAC,KAAKG,SAAS,EAAE;AACxC,MAAA,IAAI,CAACD,MAAM,CAACF,SAAS,CAAC,GAAG;AACvBC,QAAAA,aAAa,EAAEA,aAAa;AAC5BG,QAAAA,KAAK,EAAE,EAAA;OACR,CAAA;AACH,KAAC,MAAM;MACL,IAAI,CAACF,MAAM,CAACF,SAAS,CAAC,CAACC,aAAa,GAAGA,aAAa,CAAA;AACtD,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACEI,eAAeA,CAACL,SAAS,EAAE;AACzB,IAAA,OAAO,IAAI,CAACE,MAAM,CAACF,SAAS,CAAC,CAAA;AAC/B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEM,EAAAA,YAAYA,CAACN,SAAS,EAAEO,IAAI,EAAE;AAC5B,IAAA,IAAIC,QAAQ,GAAG,IAAI,CAACC,UAAU,CAACT,SAAS,CAAC,CAAA;AACzC,IAAA,IAAII,KAAK,GAAGI,QAAQ,CAACJ,KAAK,CAAA;IAE1B,IAAIA,KAAK,CAACM,OAAO,CAACH,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9BH,MAAAA,KAAK,GAAG,CAAC,GAAGA,KAAK,EAAEG,IAAI,CAAC,CAAA;AAC1B,KAAA;IAEAC,QAAQ,CAACJ,KAAK,GAAGA,KAAK,CAAA;AACxB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AAEEO,EAAAA,cAAcA,CAACX,SAAS,EAAEO,IAAI,EAAE;AAC9B,IAAA,IAAIC,QAAQ,GAAG,IAAI,CAACC,UAAU,CAACT,SAAS,CAAC,CAAA;AACzC,IAAA,IAAII,KAAK,GAAGI,QAAQ,CAACJ,KAAK,CAAA;AAE1B,IAAA,MAAMQ,KAAK,GAAGR,KAAK,CAACM,OAAO,CAACH,IAAI,CAAC,CAAA;AACjC,IAAA,IAAIK,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAIC,QAAQ,GAAG,CAAC,GAAGT,KAAK,CAACU,KAAK,CAAC,CAAC,EAAEF,KAAK,CAAC,EAAE,GAAGR,KAAK,CAACU,KAAK,CAACF,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;MACpEJ,QAAQ,CAACJ,KAAK,GAAGS,QAAQ,CAAA;AAC3B,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEJ,UAAUA,CAACT,SAAS,EAAE;IACpB,IAAI,IAAI,CAACE,MAAM,CAACF,SAAS,CAAC,KAAKG,SAAS,EAAE;AACxC,MAAA,IAAI,CAACJ,aAAa,CAACC,SAAS,EAAEG,SAAS,CAAC,CAAA;AAC1C,KAAA;AAEA,IAAA,OAAO,IAAI,CAACD,MAAM,CAACF,SAAS,CAAC,CAAA;AAC/B,GAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-container.js","sources":["../../src/system/scroll-container.js"],"sourcesContent":["export default class ScrollContainer {\n constructor(element) {\n this.isWindow = element === document;\n this.element = this.isWindow ? document.documentElement : element;\n\n if (this.isWindow) {\n this.top = 0;\n this.left = 0;\n this.width = document.documentElement.clientWidth;\n this.height = document.documentElement.clientHeight;\n } else {\n // Absolute position in document\n let { top, left } = this.element.getBoundingClientRect();\n this.top = top;\n this.left = left;\n // Viewport size of the container element\n this.width = parseFloat(getComputedStyle(this.element).width);\n this.height = parseFloat(getComputedStyle(this.element).height);\n }\n // Total size of the container element (including scrollable part)\n this.scrollWidth = this.element.scrollWidth;\n this.scrollHeight = this.element.scrollHeight;\n // Max scroll pos\n this.maxScrollTop = this.scrollHeight - this.height;\n this.maxScrollLeft = this.scrollWidth - this.width;\n }\n\n get bottom() {\n return this.top + this.height;\n }\n\n get right() {\n return this.left + this.width;\n }\n\n scrollTop(value) {\n if (value) {\n value = Math.max(0, Math.min(this.maxScrollTop, value));\n this.element.scrollTop = value;\n return value;\n }\n return this.element.scrollTop;\n }\n\n scrollLeft(value) {\n if (value) {\n value = Math.max(0, Math.min(this.maxScrollLeft, value));\n this.element.scrollLeft = value;\n return value;\n }\n return this.element.scrollLeft;\n }\n}\n"],"names":["ScrollContainer","constructor","element","isWindow","document","documentElement","top","left","width","clientWidth","height","clientHeight","getBoundingClientRect","parseFloat","getComputedStyle","scrollWidth","scrollHeight","maxScrollTop","maxScrollLeft","bottom","right","scrollTop","value","Math","max","min","scrollLeft"],"mappings":"AAAe,MAAMA,eAAe,CAAC;EACnCC,
|
|
1
|
+
{"version":3,"file":"scroll-container.js","sources":["../../src/system/scroll-container.js"],"sourcesContent":["export default class ScrollContainer {\n constructor(element) {\n this.isWindow = element === document;\n this.element = this.isWindow ? document.documentElement : element;\n\n if (this.isWindow) {\n this.top = 0;\n this.left = 0;\n this.width = document.documentElement.clientWidth;\n this.height = document.documentElement.clientHeight;\n } else {\n // Absolute position in document\n let { top, left } = this.element.getBoundingClientRect();\n this.top = top;\n this.left = left;\n // Viewport size of the container element\n this.width = parseFloat(getComputedStyle(this.element).width);\n this.height = parseFloat(getComputedStyle(this.element).height);\n }\n // Total size of the container element (including scrollable part)\n this.scrollWidth = this.element.scrollWidth;\n this.scrollHeight = this.element.scrollHeight;\n // Max scroll pos\n this.maxScrollTop = this.scrollHeight - this.height;\n this.maxScrollLeft = this.scrollWidth - this.width;\n }\n\n get bottom() {\n return this.top + this.height;\n }\n\n get right() {\n return this.left + this.width;\n }\n\n scrollTop(value) {\n if (value) {\n value = Math.max(0, Math.min(this.maxScrollTop, value));\n this.element.scrollTop = value;\n return value;\n }\n return this.element.scrollTop;\n }\n\n scrollLeft(value) {\n if (value) {\n value = Math.max(0, Math.min(this.maxScrollLeft, value));\n this.element.scrollLeft = value;\n return value;\n }\n return this.element.scrollLeft;\n }\n}\n"],"names":["ScrollContainer","constructor","element","isWindow","document","documentElement","top","left","width","clientWidth","height","clientHeight","getBoundingClientRect","parseFloat","getComputedStyle","scrollWidth","scrollHeight","maxScrollTop","maxScrollLeft","bottom","right","scrollTop","value","Math","max","min","scrollLeft"],"mappings":"AAAe,MAAMA,eAAe,CAAC;EACnCC,WAAWA,CAACC,OAAO,EAAE;AACnB,IAAA,IAAI,CAACC,QAAQ,GAAGD,OAAO,KAAKE,QAAQ,CAAA;IACpC,IAAI,CAACF,OAAO,GAAG,IAAI,CAACC,QAAQ,GAAGC,QAAQ,CAACC,eAAe,GAAGH,OAAO,CAAA;IAEjE,IAAI,IAAI,CAACC,QAAQ,EAAE;MACjB,IAAI,CAACG,GAAG,GAAG,CAAC,CAAA;MACZ,IAAI,CAACC,IAAI,GAAG,CAAC,CAAA;AACb,MAAA,IAAI,CAACC,KAAK,GAAGJ,QAAQ,CAACC,eAAe,CAACI,WAAW,CAAA;AACjD,MAAA,IAAI,CAACC,MAAM,GAAGN,QAAQ,CAACC,eAAe,CAACM,YAAY,CAAA;AACrD,KAAC,MAAM;AACL;MACA,IAAI;QAAEL,GAAG;AAAEC,QAAAA,IAAAA;AAAK,OAAC,GAAG,IAAI,CAACL,OAAO,CAACU,qBAAqB,EAAE,CAAA;MACxD,IAAI,CAACN,GAAG,GAAGA,GAAG,CAAA;MACd,IAAI,CAACC,IAAI,GAAGA,IAAI,CAAA;AAChB;AACA,MAAA,IAAI,CAACC,KAAK,GAAGK,UAAU,CAACC,gBAAgB,CAAC,IAAI,CAACZ,OAAO,CAAC,CAACM,KAAK,CAAC,CAAA;AAC7D,MAAA,IAAI,CAACE,MAAM,GAAGG,UAAU,CAACC,gBAAgB,CAAC,IAAI,CAACZ,OAAO,CAAC,CAACQ,MAAM,CAAC,CAAA;AACjE,KAAA;AACA;AACA,IAAA,IAAI,CAACK,WAAW,GAAG,IAAI,CAACb,OAAO,CAACa,WAAW,CAAA;AAC3C,IAAA,IAAI,CAACC,YAAY,GAAG,IAAI,CAACd,OAAO,CAACc,YAAY,CAAA;AAC7C;IACA,IAAI,CAACC,YAAY,GAAG,IAAI,CAACD,YAAY,GAAG,IAAI,CAACN,MAAM,CAAA;IACnD,IAAI,CAACQ,aAAa,GAAG,IAAI,CAACH,WAAW,GAAG,IAAI,CAACP,KAAK,CAAA;AACpD,GAAA;EAEA,IAAIW,MAAMA,GAAG;AACX,IAAA,OAAO,IAAI,CAACb,GAAG,GAAG,IAAI,CAACI,MAAM,CAAA;AAC/B,GAAA;EAEA,IAAIU,KAAKA,GAAG;AACV,IAAA,OAAO,IAAI,CAACb,IAAI,GAAG,IAAI,CAACC,KAAK,CAAA;AAC/B,GAAA;EAEAa,SAASA,CAACC,KAAK,EAAE;AACf,IAAA,IAAIA,KAAK,EAAE;AACTA,MAAAA,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,IAAI,CAACR,YAAY,EAAEK,KAAK,CAAC,CAAC,CAAA;AACvD,MAAA,IAAI,CAACpB,OAAO,CAACmB,SAAS,GAAGC,KAAK,CAAA;AAC9B,MAAA,OAAOA,KAAK,CAAA;AACd,KAAA;AACA,IAAA,OAAO,IAAI,CAACpB,OAAO,CAACmB,SAAS,CAAA;AAC/B,GAAA;EAEAK,UAAUA,CAACJ,KAAK,EAAE;AAChB,IAAA,IAAIA,KAAK,EAAE;AACTA,MAAAA,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,IAAI,CAACP,aAAa,EAAEI,KAAK,CAAC,CAAC,CAAA;AACxD,MAAA,IAAI,CAACpB,OAAO,CAACwB,UAAU,GAAGJ,KAAK,CAAA;AAC/B,MAAA,OAAOA,KAAK,CAAA;AACd,KAAA;AACA,IAAA,OAAO,IAAI,CAACpB,OAAO,CAACwB,UAAU,CAAA;AAChC,GAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-parent.js","sources":["../../src/system/scroll-parent.js"],"sourcesContent":["function getParentElements(element) {\n const parentsArray = [];\n\n if (!element) {\n return parentsArray;\n }\n\n let currentParent = element.parentElement;\n\n while (currentParent !== null) {\n parentsArray.push(currentParent);\n currentParent = currentParent.parentElement;\n }\n return parentsArray;\n}\n\nexport default function (element) {\n let position = getComputedStyle(element).position;\n let excludeStaticParent = position === 'absolute';\n let scrollParent = getParentElements(element).filter(function (parent) {\n let parentElemStyles = getComputedStyle(parent);\n if (excludeStaticParent && parentElemStyles.position === 'static') {\n return false;\n }\n let { overflow, overflowX, overflowY } = parentElemStyles;\n return /(auto|scroll)/.test(overflow + overflowX + overflowY);\n })[0];\n\n if (!scrollParent || scrollParent === document.body) {\n scrollParent = document;\n }\n return position === 'fixed' || scrollParent;\n}\n"],"names":["getParentElements","element","parentsArray","currentParent","parentElement","push","position","getComputedStyle","excludeStaticParent","scrollParent","filter","parent","parentElemStyles","overflow","overflowX","overflowY","test","document","body"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"file":"scroll-parent.js","sources":["../../src/system/scroll-parent.js"],"sourcesContent":["function getParentElements(element) {\n const parentsArray = [];\n\n if (!element) {\n return parentsArray;\n }\n\n let currentParent = element.parentElement;\n\n while (currentParent !== null) {\n parentsArray.push(currentParent);\n currentParent = currentParent.parentElement;\n }\n return parentsArray;\n}\n\nexport default function (element) {\n let position = getComputedStyle(element).position;\n let excludeStaticParent = position === 'absolute';\n let scrollParent = getParentElements(element).filter(function (parent) {\n let parentElemStyles = getComputedStyle(parent);\n if (excludeStaticParent && parentElemStyles.position === 'static') {\n return false;\n }\n let { overflow, overflowX, overflowY } = parentElemStyles;\n return /(auto|scroll)/.test(overflow + overflowX + overflowY);\n })[0];\n\n if (!scrollParent || scrollParent === document.body) {\n scrollParent = document;\n }\n return position === 'fixed' || scrollParent;\n}\n"],"names":["getParentElements","element","parentsArray","currentParent","parentElement","push","position","getComputedStyle","excludeStaticParent","scrollParent","filter","parent","parentElemStyles","overflow","overflowX","overflowY","test","document","body"],"mappings":"AAAA,SAASA,iBAAiBA,CAACC,OAAO,EAAE;EAClC,MAAMC,YAAY,GAAG,EAAE,CAAA;EAEvB,IAAI,CAACD,OAAO,EAAE;AACZ,IAAA,OAAOC,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,IAAIC,aAAa,GAAGF,OAAO,CAACG,aAAa,CAAA;EAEzC,OAAOD,aAAa,KAAK,IAAI,EAAE;AAC7BD,IAAAA,YAAY,CAACG,IAAI,CAACF,aAAa,CAAC,CAAA;IAChCA,aAAa,GAAGA,aAAa,CAACC,aAAa,CAAA;AAC7C,GAAA;AACA,EAAA,OAAOF,YAAY,CAAA;AACrB,CAAA;AAEe,qBAAA,EAAUD,OAAO,EAAE;AAChC,EAAA,IAAIK,QAAQ,GAAGC,gBAAgB,CAACN,OAAO,CAAC,CAACK,QAAQ,CAAA;AACjD,EAAA,IAAIE,mBAAmB,GAAGF,QAAQ,KAAK,UAAU,CAAA;EACjD,IAAIG,YAAY,GAAGT,iBAAiB,CAACC,OAAO,CAAC,CAACS,MAAM,CAAC,UAAUC,MAAM,EAAE;AACrE,IAAA,IAAIC,gBAAgB,GAAGL,gBAAgB,CAACI,MAAM,CAAC,CAAA;AAC/C,IAAA,IAAIH,mBAAmB,IAAII,gBAAgB,CAACN,QAAQ,KAAK,QAAQ,EAAE;AACjE,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;IACA,IAAI;MAAEO,QAAQ;MAAEC,SAAS;AAAEC,MAAAA,SAAAA;AAAU,KAAC,GAAGH,gBAAgB,CAAA;IACzD,OAAO,eAAe,CAACI,IAAI,CAACH,QAAQ,GAAGC,SAAS,GAAGC,SAAS,CAAC,CAAA;GAC9D,CAAC,CAAC,CAAC,CAAC,CAAA;EAEL,IAAI,CAACN,YAAY,IAAIA,YAAY,KAAKQ,QAAQ,CAACC,IAAI,EAAE;AACnDT,IAAAA,YAAY,GAAGQ,QAAQ,CAAA;AACzB,GAAA;AACA,EAAA,OAAOX,QAAQ,KAAK,OAAO,IAAIG,YAAY,CAAA;AAC7C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag.js","sources":["../../../src/test-support/helpers/drag.js"],"sourcesContent":["import { triggerEvent, find, settled } from '@ember/test-helpers';\nimport { getOffset } from '../utils/offset';\n\n/**\n Drags elements by an offset specified in pixels.\n\n Examples\n\n drag(\n 'mouse',\n '.some-list li[data-item=uno]',\n function() {\n return { dy: 50, dx: 20 };\n }\n );\n\n @method drag\n @param {'mouse'|'touch'} [mode]\n event mode\n @param {String} [itemSelector]\n selector for the element to drag\n @param {Function} [offsetFn]\n function returning the offset by which to drag\n @param {Object} [callbacks]\n callbacks that are fired at the different stages of the interaction\n @return {Promise}\n*/\n\nexport async function drag(mode, itemSelector, offsetFn, callbacks = {}) {\n let start;\n let move;\n let end;\n let which;\n\n if (mode === 'mouse') {\n start = 'mousedown';\n move = 'mousemove';\n end = 'mouseup';\n which = 1;\n } else if (mode === 'touch') {\n start = 'touchstart';\n move = 'touchmove';\n end = 'touchend';\n } else {\n throw new Error(`Unsupported mode: '${mode}'`);\n }\n\n const itemElement = find(itemSelector);\n const itemOffset = getOffset(itemElement);\n const offset = offsetFn();\n const rect = itemElement.getBoundingClientRect();\n // firefox gives some elements, like <svg>, a clientHeight of 0.\n // we can try to grab it off the parent instead to have a better\n // guess at what the scale is.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=874811#c14\n // https://stackoverflow.com/a/13647345\n // https://stackoverflow.com/a/5042051\n const dx = offset.dx || 0;\n const dy = offset.dy || 0;\n const clientHeight = itemElement.clientHeight || itemElement.offsetHeight || itemElement.parentNode.offsetHeight;\n const scale = clientHeight / (rect.bottom - rect.top);\n const halfwayX = itemOffset.left + (dx * scale) / 2;\n const halfwayY = itemOffset.top + (dy * scale) / 2;\n const targetX = itemOffset.left + dx * scale;\n const targetY = itemOffset.top + dy * scale;\n\n await triggerEvent(itemElement, start, {\n clientX: itemOffset.left,\n clientY: itemOffset.top,\n which,\n });\n\n if (callbacks.dragstart) {\n await callbacks.dragstart();\n await settled();\n }\n\n await triggerEvent(itemElement, move, {\n clientX: itemOffset.left,\n clientY: itemOffset.top,\n });\n\n if (callbacks.dragmove) {\n await callbacks.dragmove();\n await settled();\n }\n\n await triggerEvent(itemElement, move, {\n clientX: halfwayX,\n clientY: halfwayY,\n });\n\n await triggerEvent(itemElement, move, {\n clientX: targetX,\n clientY: targetY,\n });\n\n if (callbacks.beforedragend) {\n await callbacks.beforedragend();\n }\n\n await triggerEvent(itemElement, end, {\n clientX: targetX,\n clientY: targetY,\n });\n\n if (callbacks.dragend) {\n await callbacks.dragend();\n await settled();\n }\n}\n"],"names":["drag","mode","itemSelector","offsetFn","callbacks","start","move","end","which","Error","itemElement","find","itemOffset","getOffset","offset","rect","getBoundingClientRect","dx","dy","clientHeight","offsetHeight","parentNode","scale","bottom","top","halfwayX","left","halfwayY","targetX","targetY","triggerEvent","clientX","clientY","dragstart","settled","dragmove","beforedragend","dragend"],"mappings":";;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,eAAeA,
|
|
1
|
+
{"version":3,"file":"drag.js","sources":["../../../src/test-support/helpers/drag.js"],"sourcesContent":["import { triggerEvent, find, settled } from '@ember/test-helpers';\nimport { getOffset } from '../utils/offset';\n\n/**\n Drags elements by an offset specified in pixels.\n\n Examples\n\n drag(\n 'mouse',\n '.some-list li[data-item=uno]',\n function() {\n return { dy: 50, dx: 20 };\n }\n );\n\n @method drag\n @param {'mouse'|'touch'} [mode]\n event mode\n @param {String} [itemSelector]\n selector for the element to drag\n @param {Function} [offsetFn]\n function returning the offset by which to drag\n @param {Object} [callbacks]\n callbacks that are fired at the different stages of the interaction\n @return {Promise}\n*/\n\nexport async function drag(mode, itemSelector, offsetFn, callbacks = {}) {\n let start;\n let move;\n let end;\n let which;\n\n if (mode === 'mouse') {\n start = 'mousedown';\n move = 'mousemove';\n end = 'mouseup';\n which = 1;\n } else if (mode === 'touch') {\n start = 'touchstart';\n move = 'touchmove';\n end = 'touchend';\n } else {\n throw new Error(`Unsupported mode: '${mode}'`);\n }\n\n const itemElement = find(itemSelector);\n const itemOffset = getOffset(itemElement);\n const offset = offsetFn();\n const rect = itemElement.getBoundingClientRect();\n // firefox gives some elements, like <svg>, a clientHeight of 0.\n // we can try to grab it off the parent instead to have a better\n // guess at what the scale is.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=874811#c14\n // https://stackoverflow.com/a/13647345\n // https://stackoverflow.com/a/5042051\n const dx = offset.dx || 0;\n const dy = offset.dy || 0;\n const clientHeight = itemElement.clientHeight || itemElement.offsetHeight || itemElement.parentNode.offsetHeight;\n const scale = clientHeight / (rect.bottom - rect.top);\n const halfwayX = itemOffset.left + (dx * scale) / 2;\n const halfwayY = itemOffset.top + (dy * scale) / 2;\n const targetX = itemOffset.left + dx * scale;\n const targetY = itemOffset.top + dy * scale;\n\n await triggerEvent(itemElement, start, {\n clientX: itemOffset.left,\n clientY: itemOffset.top,\n which,\n });\n\n if (callbacks.dragstart) {\n await callbacks.dragstart();\n await settled();\n }\n\n await triggerEvent(itemElement, move, {\n clientX: itemOffset.left,\n clientY: itemOffset.top,\n });\n\n if (callbacks.dragmove) {\n await callbacks.dragmove();\n await settled();\n }\n\n await triggerEvent(itemElement, move, {\n clientX: halfwayX,\n clientY: halfwayY,\n });\n\n await triggerEvent(itemElement, move, {\n clientX: targetX,\n clientY: targetY,\n });\n\n if (callbacks.beforedragend) {\n await callbacks.beforedragend();\n }\n\n await triggerEvent(itemElement, end, {\n clientX: targetX,\n clientY: targetY,\n });\n\n if (callbacks.dragend) {\n await callbacks.dragend();\n await settled();\n }\n}\n"],"names":["drag","mode","itemSelector","offsetFn","callbacks","start","move","end","which","Error","itemElement","find","itemOffset","getOffset","offset","rect","getBoundingClientRect","dx","dy","clientHeight","offsetHeight","parentNode","scale","bottom","top","halfwayX","left","halfwayY","targetX","targetY","triggerEvent","clientX","clientY","dragstart","settled","dragmove","beforedragend","dragend"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.js","sources":["../../../src/test-support/helpers/reorder.js"],"sourcesContent":["import { find, findAll } from '@ember/test-helpers';\nimport { drag } from './drag';\nimport { getOffset } from '../utils/offset';\n\nconst OVERSHOOT = 2;\n\n/**\n Reorders elements to the specified state.\n\n Examples\n\n reorder(\n 'mouse',\n '.some-list li',\n '[data-id=\"66278893\"]',\n '[data-id=\"66278894\"]',\n '[data-id=\"66278892\"]'\n );\n\n @method reorder\n @param {'mouse'|'touch'} [mode]\n event mode\n @param {String} [itemSelector]\n selector for all items\n @param {...String} [resultSelectors]\n selectors for the resultant order\n @return {Promise}\n*/\nexport async function reorder(mode, itemSelector, ...resultSelectors) {\n for (let targetIndex = 0; targetIndex < resultSelectors.length; targetIndex++) {\n const items = findAll(itemSelector);\n const sourceElement = find(resultSelectors[targetIndex]);\n const targetElement = items[targetIndex];\n const dx = getOffset(targetElement).left - OVERSHOOT - getOffset(sourceElement).left;\n const dy = getOffset(targetElement).top - OVERSHOOT - getOffset(sourceElement).top;\n\n await drag(mode, sourceElement, () => {\n return { dx: dx, dy: dy };\n });\n }\n}\n"],"names":["OVERSHOOT","reorder","mode","itemSelector","resultSelectors","targetIndex","length","items","findAll","sourceElement","find","targetElement","dx","getOffset","left","dy","top","drag"],"mappings":";;;;AAIA,MAAMA,SAAS,GAAG,CAAC,CAAA;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,
|
|
1
|
+
{"version":3,"file":"reorder.js","sources":["../../../src/test-support/helpers/reorder.js"],"sourcesContent":["import { find, findAll } from '@ember/test-helpers';\nimport { drag } from './drag';\nimport { getOffset } from '../utils/offset';\n\nconst OVERSHOOT = 2;\n\n/**\n Reorders elements to the specified state.\n\n Examples\n\n reorder(\n 'mouse',\n '.some-list li',\n '[data-id=\"66278893\"]',\n '[data-id=\"66278894\"]',\n '[data-id=\"66278892\"]'\n );\n\n @method reorder\n @param {'mouse'|'touch'} [mode]\n event mode\n @param {String} [itemSelector]\n selector for all items\n @param {...String} [resultSelectors]\n selectors for the resultant order\n @return {Promise}\n*/\nexport async function reorder(mode, itemSelector, ...resultSelectors) {\n for (let targetIndex = 0; targetIndex < resultSelectors.length; targetIndex++) {\n const items = findAll(itemSelector);\n const sourceElement = find(resultSelectors[targetIndex]);\n const targetElement = items[targetIndex];\n const dx = getOffset(targetElement).left - OVERSHOOT - getOffset(sourceElement).left;\n const dy = getOffset(targetElement).top - OVERSHOOT - getOffset(sourceElement).top;\n\n await drag(mode, sourceElement, () => {\n return { dx: dx, dy: dy };\n });\n }\n}\n"],"names":["OVERSHOOT","reorder","mode","itemSelector","resultSelectors","targetIndex","length","items","findAll","sourceElement","find","targetElement","dx","getOffset","left","dy","top","drag"],"mappings":";;;;AAIA,MAAMA,SAAS,GAAG,CAAC,CAAA;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,OAAOA,CAACC,IAAI,EAAEC,YAAY,EAAE,GAAGC,eAAe,EAAE;AACpE,EAAA,KAAK,IAAIC,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGD,eAAe,CAACE,MAAM,EAAED,WAAW,EAAE,EAAE;AAC7E,IAAA,MAAME,KAAK,GAAGC,OAAO,CAACL,YAAY,CAAC,CAAA;IACnC,MAAMM,aAAa,GAAGC,IAAI,CAACN,eAAe,CAACC,WAAW,CAAC,CAAC,CAAA;AACxD,IAAA,MAAMM,aAAa,GAAGJ,KAAK,CAACF,WAAW,CAAC,CAAA;AACxC,IAAA,MAAMO,EAAE,GAAGC,SAAS,CAACF,aAAa,CAAC,CAACG,IAAI,GAAGd,SAAS,GAAGa,SAAS,CAACJ,aAAa,CAAC,CAACK,IAAI,CAAA;AACpF,IAAA,MAAMC,EAAE,GAAGF,SAAS,CAACF,aAAa,CAAC,CAACK,GAAG,GAAGhB,SAAS,GAAGa,SAAS,CAACJ,aAAa,CAAC,CAACO,GAAG,CAAA;AAElF,IAAA,MAAMC,IAAI,CAACf,IAAI,EAAEO,aAAa,EAAE,MAAM;MACpC,OAAO;AAAEG,QAAAA,EAAE,EAAEA,EAAE;AAAEG,QAAAA,EAAE,EAAEA,EAAAA;OAAI,CAAA;AAC3B,KAAC,CAAC,CAAA;AACJ,GAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sources":["../../../src/test-support/utils/keyboard.js"],"sourcesContent":["const ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst SPACE_KEY = 'Space';\nconst ARROW_KEYS = {\n LEFT: 'ArrowLeft',\n UP: 'ArrowUp',\n RIGHT: 'ArrowRight',\n DOWN: 'ArrowDown',\n};\nexport const ENTER_KEY_CODE = 13;\nexport const ESCAPE_KEY_CODE = 27;\nexport const SPACE_KEY_CODE = 32;\nexport const ARROW_KEY_CODES = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n};\n\nfunction createKeyTest(key, keyCode) {\n return function isKey(event) {\n return event.key === key || event.keyCode === keyCode;\n };\n}\n\nexport const isEnterKey = createKeyTest(ENTER_KEY, ENTER_KEY_CODE);\nexport const isEscapeKey = createKeyTest(ESCAPE_KEY, ESCAPE_KEY_CODE);\nexport const isSpaceKey = createKeyTest(SPACE_KEY, SPACE_KEY_CODE);\nexport const isLeftArrowKey = createKeyTest(ARROW_KEYS.LEFT, ARROW_KEY_CODES.LEFT);\nexport const isUpArrowKey = createKeyTest(ARROW_KEYS.UP, ARROW_KEY_CODES.UP);\nexport const isRightArrowKey = createKeyTest(ARROW_KEYS.RIGHT, ARROW_KEY_CODES.RIGHT);\nexport const isDownArrowKey = createKeyTest(ARROW_KEYS.DOWN, ARROW_KEY_CODES.DOWN);\n"],"names":["ENTER_KEY","ESCAPE_KEY","SPACE_KEY","ARROW_KEYS","LEFT","UP","RIGHT","DOWN","ENTER_KEY_CODE","ESCAPE_KEY_CODE","SPACE_KEY_CODE","ARROW_KEY_CODES","createKeyTest","key","keyCode","isKey","event","isEnterKey","isEscapeKey","isSpaceKey","isLeftArrowKey","isUpArrowKey","isRightArrowKey","isDownArrowKey"],"mappings":"AAAA,MAAMA,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG,QAAQ,CAAA;AAC3B,MAAMC,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG;AACjBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAA;AACR,CAAC,CAAA;AACM,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG,GAAE;AAC1B,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG;AAC7BP,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,IAAI,EAAE,EAAA;AACR,EAAC;AAED,SAASK,
|
|
1
|
+
{"version":3,"file":"keyboard.js","sources":["../../../src/test-support/utils/keyboard.js"],"sourcesContent":["const ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst SPACE_KEY = 'Space';\nconst ARROW_KEYS = {\n LEFT: 'ArrowLeft',\n UP: 'ArrowUp',\n RIGHT: 'ArrowRight',\n DOWN: 'ArrowDown',\n};\nexport const ENTER_KEY_CODE = 13;\nexport const ESCAPE_KEY_CODE = 27;\nexport const SPACE_KEY_CODE = 32;\nexport const ARROW_KEY_CODES = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n};\n\nfunction createKeyTest(key, keyCode) {\n return function isKey(event) {\n return event.key === key || event.keyCode === keyCode;\n };\n}\n\nexport const isEnterKey = createKeyTest(ENTER_KEY, ENTER_KEY_CODE);\nexport const isEscapeKey = createKeyTest(ESCAPE_KEY, ESCAPE_KEY_CODE);\nexport const isSpaceKey = createKeyTest(SPACE_KEY, SPACE_KEY_CODE);\nexport const isLeftArrowKey = createKeyTest(ARROW_KEYS.LEFT, ARROW_KEY_CODES.LEFT);\nexport const isUpArrowKey = createKeyTest(ARROW_KEYS.UP, ARROW_KEY_CODES.UP);\nexport const isRightArrowKey = createKeyTest(ARROW_KEYS.RIGHT, ARROW_KEY_CODES.RIGHT);\nexport const isDownArrowKey = createKeyTest(ARROW_KEYS.DOWN, ARROW_KEY_CODES.DOWN);\n"],"names":["ENTER_KEY","ESCAPE_KEY","SPACE_KEY","ARROW_KEYS","LEFT","UP","RIGHT","DOWN","ENTER_KEY_CODE","ESCAPE_KEY_CODE","SPACE_KEY_CODE","ARROW_KEY_CODES","createKeyTest","key","keyCode","isKey","event","isEnterKey","isEscapeKey","isSpaceKey","isLeftArrowKey","isUpArrowKey","isRightArrowKey","isDownArrowKey"],"mappings":"AAAA,MAAMA,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG,QAAQ,CAAA;AAC3B,MAAMC,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG;AACjBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAA;AACR,CAAC,CAAA;AACM,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG,GAAE;AAC1B,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG;AAC7BP,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,IAAI,EAAE,EAAA;AACR,EAAC;AAED,SAASK,aAAaA,CAACC,GAAG,EAAEC,OAAO,EAAE;AACnC,EAAA,OAAO,SAASC,KAAKA,CAACC,KAAK,EAAE;IAC3B,OAAOA,KAAK,CAACH,GAAG,KAAKA,GAAG,IAAIG,KAAK,CAACF,OAAO,KAAKA,OAAO,CAAA;GACtD,CAAA;AACH,CAAA;AAEO,MAAMG,UAAU,GAAGL,aAAa,CAACZ,SAAS,EAAEQ,cAAc,EAAC;AAC3D,MAAMU,WAAW,GAAGN,aAAa,CAACX,UAAU,EAAEQ,eAAe,EAAC;AAC9D,MAAMU,UAAU,GAAGP,aAAa,CAACV,SAAS,EAAEQ,cAAc,EAAC;AACrDU,MAAAA,cAAc,GAAGR,aAAa,CAACT,UAAU,CAACC,IAAI,EAAEO,eAAe,CAACP,IAAI,EAAC;AACrEiB,MAAAA,YAAY,GAAGT,aAAa,CAACT,UAAU,CAACE,EAAE,EAAEM,eAAe,CAACN,EAAE,EAAC;AAC/DiB,MAAAA,eAAe,GAAGV,aAAa,CAACT,UAAU,CAACG,KAAK,EAAEK,eAAe,CAACL,KAAK,EAAC;AACxEiB,MAAAA,cAAc,GAAGX,aAAa,CAACT,UAAU,CAACI,IAAI,EAAEI,eAAe,CAACJ,IAAI;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offset.js","sources":["../../../src/test-support/utils/offset.js"],"sourcesContent":["/** Vanilla Javascript equivalent of JQuery's `.offset`.\n * Reference: https://github.com/nefe/You-Dont-Need-jQuery\n *\n * @method getOffset\n * @param {Element} el an element\n */\nexport function getOffset(el) {\n const box = el.getBoundingClientRect();\n\n return {\n top: box.top + window.pageYOffset - document.documentElement.clientTop,\n left: box.left + window.pageXOffset - document.documentElement.clientLeft,\n };\n}\n"],"names":["getOffset","el","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,
|
|
1
|
+
{"version":3,"file":"offset.js","sources":["../../../src/test-support/utils/offset.js"],"sourcesContent":["/** Vanilla Javascript equivalent of JQuery's `.offset`.\n * Reference: https://github.com/nefe/You-Dont-Need-jQuery\n *\n * @method getOffset\n * @param {Element} el an element\n */\nexport function getOffset(el) {\n const box = el.getBoundingClientRect();\n\n return {\n top: box.top + window.pageYOffset - document.documentElement.clientTop,\n left: box.left + window.pageXOffset - document.documentElement.clientLeft,\n };\n}\n"],"names":["getOffset","el","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,CAACC,EAAE,EAAE;AAC5B,EAAA,MAAMC,GAAG,GAAGD,EAAE,CAACE,qBAAqB,EAAE,CAAA;EAEtC,OAAO;AACLC,IAAAA,GAAG,EAAEF,GAAG,CAACE,GAAG,GAAGC,MAAM,CAACC,WAAW,GAAGC,QAAQ,CAACC,eAAe,CAACC,SAAS;AACtEC,IAAAA,IAAI,EAAER,GAAG,CAACQ,IAAI,GAAGL,MAAM,CAACM,WAAW,GAAGJ,QAAQ,CAACC,eAAe,CAACI,UAAAA;GAChE,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate.js","sources":["../../src/utils/coordinate.js"],"sourcesContent":["/**\n Gets the y offset for a given event.\n Work for touch and mouse events.\n @method getY\n @return {Number}\n @private\n*/\nexport function getY(event) {\n let touches = event.changedTouches;\n let touch = touches && touches[0];\n\n if (touch) {\n return touch.screenY;\n } else {\n return event.clientY;\n }\n}\n\n/**\n Gets the x offset for a given event.\n @method getX\n @return {Number}\n @private\n*/\nexport function getX(event) {\n let touches = event.changedTouches;\n let touch = touches && touches[0];\n\n if (touch) {\n return touch.screenX;\n } else {\n return event.clientX;\n }\n}\n"],"names":["getY","event","touches","changedTouches","touch","screenY","clientY","getX","screenX","clientX"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,
|
|
1
|
+
{"version":3,"file":"coordinate.js","sources":["../../src/utils/coordinate.js"],"sourcesContent":["/**\n Gets the y offset for a given event.\n Work for touch and mouse events.\n @method getY\n @return {Number}\n @private\n*/\nexport function getY(event) {\n let touches = event.changedTouches;\n let touch = touches && touches[0];\n\n if (touch) {\n return touch.screenY;\n } else {\n return event.clientY;\n }\n}\n\n/**\n Gets the x offset for a given event.\n @method getX\n @return {Number}\n @private\n*/\nexport function getX(event) {\n let touches = event.changedTouches;\n let touch = touches && touches[0];\n\n if (touch) {\n return touch.screenX;\n } else {\n return event.clientX;\n }\n}\n"],"names":["getY","event","touches","changedTouches","touch","screenY","clientY","getX","screenX","clientX"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,IAAIA,CAACC,KAAK,EAAE;AAC1B,EAAA,IAAIC,OAAO,GAAGD,KAAK,CAACE,cAAc,CAAA;AAClC,EAAA,IAAIC,KAAK,GAAGF,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,CAAA;AAEjC,EAAA,IAAIE,KAAK,EAAE;IACT,OAAOA,KAAK,CAACC,OAAO,CAAA;AACtB,GAAC,MAAM;IACL,OAAOJ,KAAK,CAACK,OAAO,CAAA;AACtB,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAACN,KAAK,EAAE;AAC1B,EAAA,IAAIC,OAAO,GAAGD,KAAK,CAACE,cAAc,CAAA;AAClC,EAAA,IAAIC,KAAK,GAAGF,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,CAAA;AAEjC,EAAA,IAAIE,KAAK,EAAE;IACT,OAAOA,KAAK,CAACI,OAAO,CAAA;AACtB,GAAC,MAAM;IACL,OAAOP,KAAK,CAACQ,OAAO,CAAA;AACtB,GAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-calculation.js","sources":["../../src/utils/css-calculation.js"],"sourcesContent":["/**\n Gets a numeric border-spacing values for a given element.\n\n @method getBorderSpacing\n @param {Element} element\n @return {Object}\n @private\n*/\nexport function getBorderSpacing(el) {\n let css = getComputedStyle(el).borderSpacing; // '0px 0px'\n let [horizontal, vertical] = css.split(' ');\n\n return {\n horizontal: parseFloat(horizontal),\n vertical: parseFloat(vertical),\n };\n}\n"],"names":["getBorderSpacing","el","css","getComputedStyle","borderSpacing","horizontal","vertical","split","parseFloat"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,
|
|
1
|
+
{"version":3,"file":"css-calculation.js","sources":["../../src/utils/css-calculation.js"],"sourcesContent":["/**\n Gets a numeric border-spacing values for a given element.\n\n @method getBorderSpacing\n @param {Element} element\n @return {Object}\n @private\n*/\nexport function getBorderSpacing(el) {\n let css = getComputedStyle(el).borderSpacing; // '0px 0px'\n let [horizontal, vertical] = css.split(' ');\n\n return {\n horizontal: parseFloat(horizontal),\n vertical: parseFloat(vertical),\n };\n}\n"],"names":["getBorderSpacing","el","css","getComputedStyle","borderSpacing","horizontal","vertical","split","parseFloat"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAgBA,CAACC,EAAE,EAAE;EACnC,IAAIC,GAAG,GAAGC,gBAAgB,CAACF,EAAE,CAAC,CAACG,aAAa,CAAC;EAC7C,IAAI,CAACC,UAAU,EAAEC,QAAQ,CAAC,GAAGJ,GAAG,CAACK,KAAK,CAAC,GAAG,CAAC,CAAA;EAE3C,OAAO;AACLF,IAAAA,UAAU,EAAEG,UAAU,CAACH,UAAU,CAAC;IAClCC,QAAQ,EAAEE,UAAU,CAACF,QAAQ,CAAA;GAC9B,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sources":["../../src/utils/defaults.js"],"sourcesContent":["export const defaultA11yAnnouncementConfig = {\n ACTIVATE({ a11yItemName, index, maxLength, direction }) {\n let message = `${a11yItemName} at position, ${index + 1} of ${maxLength}, is activated to be repositioned.`;\n\n if (direction === 'y') {\n message += 'Press up and down keys to change position,';\n } else {\n message += 'Press left and right keys to change position,';\n }\n\n message += ' Space to confirm new position, Escape to cancel.';\n\n return message;\n },\n MOVE({ a11yItemName, index, maxLength, delta }) {\n return `${a11yItemName} is moved to position, ${\n index + 1 + delta\n } of ${maxLength}. Press Space to confirm new position, Escape to cancel.`;\n },\n CONFIRM({ a11yItemName }) {\n return `${a11yItemName} is successfully repositioned.`;\n },\n CANCEL({ a11yItemName }) {\n return `Cancelling ${a11yItemName} repositioning`;\n },\n};\n"],"names":["defaultA11yAnnouncementConfig","ACTIVATE","a11yItemName","index","maxLength","direction","message","MOVE","delta","CONFIRM","CANCEL"],"mappings":"AAAO,MAAMA,6BAA6B,GAAG;AAC3CC,EAAAA,
|
|
1
|
+
{"version":3,"file":"defaults.js","sources":["../../src/utils/defaults.js"],"sourcesContent":["export const defaultA11yAnnouncementConfig = {\n ACTIVATE({ a11yItemName, index, maxLength, direction }) {\n let message = `${a11yItemName} at position, ${index + 1} of ${maxLength}, is activated to be repositioned.`;\n\n if (direction === 'y') {\n message += 'Press up and down keys to change position,';\n } else {\n message += 'Press left and right keys to change position,';\n }\n\n message += ' Space to confirm new position, Escape to cancel.';\n\n return message;\n },\n MOVE({ a11yItemName, index, maxLength, delta }) {\n return `${a11yItemName} is moved to position, ${\n index + 1 + delta\n } of ${maxLength}. Press Space to confirm new position, Escape to cancel.`;\n },\n CONFIRM({ a11yItemName }) {\n return `${a11yItemName} is successfully repositioned.`;\n },\n CANCEL({ a11yItemName }) {\n return `Cancelling ${a11yItemName} repositioning`;\n },\n};\n"],"names":["defaultA11yAnnouncementConfig","ACTIVATE","a11yItemName","index","maxLength","direction","message","MOVE","delta","CONFIRM","CANCEL"],"mappings":"AAAO,MAAMA,6BAA6B,GAAG;AAC3CC,EAAAA,QAAQA,CAAC;IAAEC,YAAY;IAAEC,KAAK;IAAEC,SAAS;AAAEC,IAAAA,SAAAA;AAAU,GAAC,EAAE;IACtD,IAAIC,OAAO,GAAI,CAAA,EAAEJ,YAAa,CAAA,cAAA,EAAgBC,KAAK,GAAG,CAAE,CAAMC,IAAAA,EAAAA,SAAU,CAAmC,kCAAA,CAAA,CAAA;IAE3G,IAAIC,SAAS,KAAK,GAAG,EAAE;AACrBC,MAAAA,OAAO,IAAI,4CAA4C,CAAA;AACzD,KAAC,MAAM;AACLA,MAAAA,OAAO,IAAI,+CAA+C,CAAA;AAC5D,KAAA;AAEAA,IAAAA,OAAO,IAAI,mDAAmD,CAAA;AAE9D,IAAA,OAAOA,OAAO,CAAA;GACf;AACDC,EAAAA,IAAIA,CAAC;IAAEL,YAAY;IAAEC,KAAK;IAAEC,SAAS;AAAEI,IAAAA,KAAAA;AAAM,GAAC,EAAE;IAC9C,OAAQ,CAAA,EAAEN,YAAa,CAAA,uBAAA,EACrBC,KAAK,GAAG,CAAC,GAAGK,KACb,CAAMJ,IAAAA,EAAAA,SAAU,CAAyD,wDAAA,CAAA,CAAA;GAC3E;AACDK,EAAAA,OAAOA,CAAC;AAAEP,IAAAA,YAAAA;AAAa,GAAC,EAAE;IACxB,OAAQ,CAAA,EAAEA,YAAa,CAA+B,8BAAA,CAAA,CAAA;GACvD;AACDQ,EAAAA,MAAMA,CAAC;AAAER,IAAAA,YAAAA;AAAa,GAAC,EAAE;IACvB,OAAQ,CAAA,WAAA,EAAaA,YAAa,CAAe,cAAA,CAAA,CAAA;AACnD,GAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sources":["../../src/utils/keyboard.js"],"sourcesContent":["const ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst SPACE_KEY = 'Space';\nconst ARROW_KEYS = {\n LEFT: 'ArrowLeft',\n UP: 'ArrowUp',\n RIGHT: 'ArrowRight',\n DOWN: 'ArrowDown',\n};\nexport const ENTER_KEY_CODE = 13;\nexport const ESCAPE_KEY_CODE = 27;\nexport const SPACE_KEY_CODE = 32;\nexport const ARROW_KEY_CODES = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n};\n\nfunction createKeyTest(key, keyCode) {\n return function isKey(event) {\n return event.key === key || event.keyCode === keyCode;\n };\n}\n\nexport const isEnterKey = createKeyTest(ENTER_KEY, ENTER_KEY_CODE);\nexport const isEscapeKey = createKeyTest(ESCAPE_KEY, ESCAPE_KEY_CODE);\nexport const isSpaceKey = createKeyTest(SPACE_KEY, SPACE_KEY_CODE);\nexport const isLeftArrowKey = createKeyTest(ARROW_KEYS.LEFT, ARROW_KEY_CODES.LEFT);\nexport const isUpArrowKey = createKeyTest(ARROW_KEYS.UP, ARROW_KEY_CODES.UP);\nexport const isRightArrowKey = createKeyTest(ARROW_KEYS.RIGHT, ARROW_KEY_CODES.RIGHT);\nexport const isDownArrowKey = createKeyTest(ARROW_KEYS.DOWN, ARROW_KEY_CODES.DOWN);\n"],"names":["ENTER_KEY","ESCAPE_KEY","SPACE_KEY","ARROW_KEYS","LEFT","UP","RIGHT","DOWN","ENTER_KEY_CODE","ESCAPE_KEY_CODE","SPACE_KEY_CODE","ARROW_KEY_CODES","createKeyTest","key","keyCode","isKey","event","isEnterKey","isEscapeKey","isSpaceKey","isLeftArrowKey","isUpArrowKey","isRightArrowKey","isDownArrowKey"],"mappings":"AAAA,MAAMA,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG,QAAQ,CAAA;AAC3B,MAAMC,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG;AACjBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAA;AACR,CAAC,CAAA;AACM,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG,GAAE;AAC1B,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG;AAC7BP,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,IAAI,EAAE,EAAA;AACR,EAAC;AAED,SAASK,
|
|
1
|
+
{"version":3,"file":"keyboard.js","sources":["../../src/utils/keyboard.js"],"sourcesContent":["const ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst SPACE_KEY = 'Space';\nconst ARROW_KEYS = {\n LEFT: 'ArrowLeft',\n UP: 'ArrowUp',\n RIGHT: 'ArrowRight',\n DOWN: 'ArrowDown',\n};\nexport const ENTER_KEY_CODE = 13;\nexport const ESCAPE_KEY_CODE = 27;\nexport const SPACE_KEY_CODE = 32;\nexport const ARROW_KEY_CODES = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n};\n\nfunction createKeyTest(key, keyCode) {\n return function isKey(event) {\n return event.key === key || event.keyCode === keyCode;\n };\n}\n\nexport const isEnterKey = createKeyTest(ENTER_KEY, ENTER_KEY_CODE);\nexport const isEscapeKey = createKeyTest(ESCAPE_KEY, ESCAPE_KEY_CODE);\nexport const isSpaceKey = createKeyTest(SPACE_KEY, SPACE_KEY_CODE);\nexport const isLeftArrowKey = createKeyTest(ARROW_KEYS.LEFT, ARROW_KEY_CODES.LEFT);\nexport const isUpArrowKey = createKeyTest(ARROW_KEYS.UP, ARROW_KEY_CODES.UP);\nexport const isRightArrowKey = createKeyTest(ARROW_KEYS.RIGHT, ARROW_KEY_CODES.RIGHT);\nexport const isDownArrowKey = createKeyTest(ARROW_KEYS.DOWN, ARROW_KEY_CODES.DOWN);\n"],"names":["ENTER_KEY","ESCAPE_KEY","SPACE_KEY","ARROW_KEYS","LEFT","UP","RIGHT","DOWN","ENTER_KEY_CODE","ESCAPE_KEY_CODE","SPACE_KEY_CODE","ARROW_KEY_CODES","createKeyTest","key","keyCode","isKey","event","isEnterKey","isEscapeKey","isSpaceKey","isLeftArrowKey","isUpArrowKey","isRightArrowKey","isDownArrowKey"],"mappings":"AAAA,MAAMA,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG,QAAQ,CAAA;AAC3B,MAAMC,SAAS,GAAG,OAAO,CAAA;AACzB,MAAMC,UAAU,GAAG;AACjBC,EAAAA,IAAI,EAAE,WAAW;AACjBC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,KAAK,EAAE,YAAY;AACnBC,EAAAA,IAAI,EAAE,WAAA;AACR,CAAC,CAAA;AACM,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG,GAAE;AAC1B,MAAMC,cAAc,GAAG,GAAE;AACzB,MAAMC,eAAe,GAAG;AAC7BP,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,IAAI,EAAE,EAAA;AACR,EAAC;AAED,SAASK,aAAaA,CAACC,GAAG,EAAEC,OAAO,EAAE;AACnC,EAAA,OAAO,SAASC,KAAKA,CAACC,KAAK,EAAE;IAC3B,OAAOA,KAAK,CAACH,GAAG,KAAKA,GAAG,IAAIG,KAAK,CAACF,OAAO,KAAKA,OAAO,CAAA;GACtD,CAAA;AACH,CAAA;AAEO,MAAMG,UAAU,GAAGL,aAAa,CAACZ,SAAS,EAAEQ,cAAc,EAAC;AAC3D,MAAMU,WAAW,GAAGN,aAAa,CAACX,UAAU,EAAEQ,eAAe,EAAC;AAC9D,MAAMU,UAAU,GAAGP,aAAa,CAACV,SAAS,EAAEQ,cAAc,EAAC;AACrDU,MAAAA,cAAc,GAAGR,aAAa,CAACT,UAAU,CAACC,IAAI,EAAEO,eAAe,CAACP,IAAI,EAAC;AACrEiB,MAAAA,YAAY,GAAGT,aAAa,CAACT,UAAU,CAACE,EAAE,EAAEM,eAAe,CAACN,EAAE,EAAC;AAC/DiB,MAAAA,eAAe,GAAGV,aAAa,CAACT,UAAU,CAACG,KAAK,EAAEK,eAAe,CAACL,KAAK,EAAC;AACxEiB,MAAAA,cAAc,GAAGX,aAAa,CAACT,UAAU,CAACI,IAAI,EAAEI,eAAe,CAACJ,IAAI;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ember-sortable",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"description": "Sortable UI primitives for Ember.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"exports": {
|
|
17
17
|
".": "./dist/index.js",
|
|
18
|
+
"./_app_/*": "./dist/_app_/*.js",
|
|
18
19
|
"./modifiers/*": "./dist/modifiers/*",
|
|
19
20
|
"./services/*": "./dist/services/*",
|
|
20
21
|
"./test-support": "./dist/test-support/index.js",
|
|
@@ -24,21 +25,11 @@
|
|
|
24
25
|
"addon-main.js",
|
|
25
26
|
"dist"
|
|
26
27
|
],
|
|
27
|
-
"scripts": {
|
|
28
|
-
"release": "release-it",
|
|
29
|
-
"build": "rollup --config",
|
|
30
|
-
"prepublishOnly": "rollup --config",
|
|
31
|
-
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"",
|
|
32
|
-
"lint:js": "eslint . --cache",
|
|
33
|
-
"lint:js:fix": "eslint . --fix",
|
|
34
|
-
"start": "rollup --config --watch",
|
|
35
|
-
"test": "echo 'Addon does not have tests, run tests in test-app'"
|
|
36
|
-
},
|
|
37
28
|
"peerDependencies": {
|
|
38
|
-
"ember-modifier": "^3.2.0 ||
|
|
39
|
-
"@ember/test-helpers": "^2.6.0",
|
|
40
|
-
"@ember/test-waiters": "
|
|
41
|
-
"ember-source": "^3.28.0 ||
|
|
29
|
+
"ember-modifier": "^3.2.0 || >= 4.0.0",
|
|
30
|
+
"@ember/test-helpers": "^2.6.0 || >= 3.0.0",
|
|
31
|
+
"@ember/test-waiters": ">= 3.0.1",
|
|
32
|
+
"ember-source": "^3.28.0 || >= 4.0.0"
|
|
42
33
|
},
|
|
43
34
|
"dependencies": {
|
|
44
35
|
"@embroider/addon-shim": "^1.8.4"
|
|
@@ -48,7 +39,6 @@
|
|
|
48
39
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
49
40
|
"@babel/plugin-proposal-decorators": "^7.20.7",
|
|
50
41
|
"@embroider/addon-dev": "^3.0.0",
|
|
51
|
-
"@release-it-plugins/lerna-changelog": "^5.0.0",
|
|
52
42
|
"@rollup/plugin-babel": "^6.0.3",
|
|
53
43
|
"babel-eslint": "^10.0.3",
|
|
54
44
|
"eslint": "^7.32.0",
|
|
@@ -59,28 +49,12 @@
|
|
|
59
49
|
"eslint-plugin-qunit": "^7.2.0",
|
|
60
50
|
"npm-run-all": "^4.1.5",
|
|
61
51
|
"prettier": "^2.5.1",
|
|
62
|
-
"release-it": "^15.6.0",
|
|
63
52
|
"rollup": "^3.10.0",
|
|
64
53
|
"rollup-plugin-copy": "^3.4.0"
|
|
65
54
|
},
|
|
66
55
|
"engines": {
|
|
67
56
|
"node": "14.* || >= 16"
|
|
68
57
|
},
|
|
69
|
-
"release-it": {
|
|
70
|
-
"plugins": {
|
|
71
|
-
"@release-it-plugins/lerna-changelog": {
|
|
72
|
-
"infile": "CHANGELOG.md",
|
|
73
|
-
"launchEditor": false
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
"git": {
|
|
77
|
-
"tagName": "v${version}"
|
|
78
|
-
},
|
|
79
|
-
"github": {
|
|
80
|
-
"release": true,
|
|
81
|
-
"tokenRef": "GITHUB_AUTH"
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
58
|
"publishConfig": {
|
|
85
59
|
"registry": "https://registry.npmjs.org"
|
|
86
60
|
},
|
|
@@ -101,5 +75,13 @@
|
|
|
101
75
|
},
|
|
102
76
|
"volta": {
|
|
103
77
|
"extends": "../package.json"
|
|
78
|
+
},
|
|
79
|
+
"scripts": {
|
|
80
|
+
"build": "rollup --config",
|
|
81
|
+
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"",
|
|
82
|
+
"lint:js": "eslint . --cache",
|
|
83
|
+
"lint:js:fix": "eslint . --fix",
|
|
84
|
+
"start": "rollup --config --watch",
|
|
85
|
+
"test": "echo 'Addon does not have tests, run tests in test-app'"
|
|
104
86
|
}
|
|
105
|
-
}
|
|
87
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers-7ae2993d.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|