ember-sortable 5.1.2 → 5.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{addon-main.js → addon-main.cjs} +2 -0
- package/declarations/modifiers/sortable-group.d.ts +326 -0
- package/declarations/modifiers/sortable-group.d.ts.map +1 -0
- package/declarations/modifiers/sortable-handle.d.ts +24 -0
- package/declarations/modifiers/sortable-handle.d.ts.map +1 -0
- package/declarations/modifiers/sortable-item.d.ts +346 -0
- package/declarations/modifiers/sortable-item.d.ts.map +1 -0
- package/declarations/services/ember-sortable-internal-state.d.ts +58 -0
- package/declarations/services/ember-sortable-internal-state.d.ts.map +1 -0
- package/declarations/system/scroll-container.d.ts +18 -0
- package/declarations/system/scroll-container.d.ts.map +1 -0
- package/declarations/system/scroll-parent.d.ts +2 -0
- package/declarations/system/scroll-parent.d.ts.map +1 -0
- package/declarations/template-registry.d.ts +9 -0
- package/declarations/template-registry.d.ts.map +1 -0
- package/declarations/test-support/helpers/drag.d.ts +37 -0
- package/declarations/test-support/helpers/drag.d.ts.map +1 -0
- package/declarations/test-support/helpers/reorder.d.ts +25 -0
- package/declarations/test-support/helpers/reorder.d.ts.map +1 -0
- package/declarations/test-support/index.d.ts +5 -0
- package/declarations/test-support/index.d.ts.map +1 -0
- package/declarations/test-support/utils/keyboard.d.ts +17 -0
- package/declarations/test-support/utils/keyboard.d.ts.map +1 -0
- package/declarations/test-support/utils/offset.d.ts +11 -0
- package/declarations/test-support/utils/offset.d.ts.map +1 -0
- package/declarations/utils/constant.d.ts +11 -0
- package/declarations/utils/constant.d.ts.map +1 -0
- package/declarations/utils/coordinate.d.ts +17 -0
- package/declarations/utils/coordinate.d.ts.map +1 -0
- package/declarations/utils/css-calculation.d.ts +13 -0
- package/declarations/utils/css-calculation.d.ts.map +1 -0
- package/declarations/utils/defaults.d.ts +23 -0
- package/declarations/utils/defaults.d.ts.map +1 -0
- package/declarations/utils/keyboard.d.ts +17 -0
- package/declarations/utils/keyboard.d.ts.map +1 -0
- package/dist/{_rollupPluginBabelHelpers-543b1c36.js → _rollupPluginBabelHelpers-a7bede49.js} +2 -2
- package/dist/_rollupPluginBabelHelpers-a7bede49.js.map +1 -0
- package/dist/modifiers/sortable-group.js +63 -30
- package/dist/modifiers/sortable-group.js.map +1 -1
- package/dist/modifiers/sortable-handle.js +4 -4
- package/dist/modifiers/sortable-handle.js.map +1 -1
- package/dist/modifiers/sortable-item.js +187 -80
- package/dist/modifiers/sortable-item.js.map +1 -1
- package/dist/services/ember-sortable-internal-state.js +11 -5
- package/dist/services/ember-sortable-internal-state.js.map +1 -1
- package/dist/test-support/helpers/drag.js +4 -1
- package/dist/test-support/helpers/drag.js.map +1 -1
- package/dist/test-support/helpers/reorder.js +12 -2
- 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/constant.js.map +1 -1
- package/dist/utils/coordinate.js +4 -4
- package/dist/utils/coordinate.js.map +1 -1
- package/dist/utils/css-calculation.js +4 -4
- 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 +103 -29
- package/dist/_rollupPluginBabelHelpers-543b1c36.js.map +0 -1
- package/dist/system/scroll-container.js +0 -54
- package/dist/system/scroll-container.js.map +0 -1
- package/dist/system/scroll-parent.js +0 -35
- package/dist/system/scroll-parent.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-item.js","sources":["../../src/modifiers/sortable-item.js"],"sourcesContent":["/* eslint-disable ember/no-computed-properties-in-native-classes */\nimport Modifier from 'ember-modifier';\nimport { Promise, defer } from 'rsvp';\nimport { action, set } from '@ember/object';\nimport { DRAG_ACTIONS, ELEMENT_CLICK_ACTION, END_ACTIONS } from '../utils/constant';\nimport { run, throttle, bind, scheduleOnce, later } from '@ember/runloop';\nimport { DEBUG } from '@glimmer/env';\nimport { getX, getY } from '../utils/coordinate';\nimport ScrollContainer from '../system/scroll-container';\nimport scrollParent from '../system/scroll-parent';\nimport { getBorderSpacing } from '../utils/css-calculation';\nimport { buildWaiter } from '@ember/test-waiters';\nimport { inject as service } from '@ember/service';\nimport { assert, deprecate } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\nimport { isTesting } from '@embroider/macros';\n\nconst sortableItemWaiter = buildWaiter('sortable-item-waiter');\n\n/**\n * Modifier to mark an element as an item to be reordered\n *\n * @param {Object} model The model that this item will represent\n * @param {boolean} [disabled=false] Set to true to make this item not sortable\n * @param {Function} [onDragStart] An optional callback for when dragging starts.\n * @param {Function} [onDragStop] An optional callback for when dragging stops.\n *\n * @module drag-drop/draggable-group\n * @example\n * <ol {{sortable-group onChange=this.update a11yAnnouncementConfig=this.myA11yConfig}}>\n * {{#each model.items as |item|}}\n * <li {{sortable-item model=item}}>\n * {{item.name}}\n * <span class=\"handle\" {{sortable-handle}}>↕</span>\n * </li>\n * {{/each}}\n * </ol>\n */\nexport default class SortableItemModifier extends Modifier {\n className = 'sortable-item';\n\n @service('ember-sortable-internal-state') sortableService;\n\n _sortableGroup;\n /**\n * The SortableGroupModifier this item belongs to. Assigned by the group\n * when it inspects all the items in the list\n *\n * @type SortableGroupModifier\n */\n get sortableGroup() {\n if (this._sortableGroup === undefined) {\n this._sortableGroup = this.sortableService.fetchGroup(this.groupName);\n assert(\n `No sortable group named ${this.groupName} found. Please check that the groups and items have the same groupName`,\n this._sortableGroup !== undefined\n );\n }\n return this._sortableGroup.groupModifier;\n }\n\n get model() {\n return this.named.model;\n }\n\n get direction() {\n return this.sortableGroup?.direction;\n }\n\n get groupDisabled() {\n return this.sortableGroup?.disabled;\n }\n\n /**\n * This is the group name used to keep groups separate if there are more than one on the screen at a time.\n * If no group is assigned a default is used\n *\n * @default \"_EmberSortableGroup\"\n * @returns {*|string}\n */\n get groupName() {\n return this.named.groupName || '_EmberSortableGroup';\n }\n\n /**\n The frequency with which the group is informed\n that an update is required.\n @property updateInterval\n @type Number\n @default 125\n */\n get updateInterval() {\n return this.named.updateInterval || 125;\n }\n\n /**\n Additional spacing between active item and the rest of the elements.\n @property spacing\n @type Number\n @default 0[px]\n */\n get spacing() {\n return this.named.spacing || 0;\n }\n\n /**\n Removes the ability for the current item to be sorted\n @property disabled\n @type boolean\n @default false\n */\n get isDisabled() {\n deprecate(\n '\"isDraggingDisabled\" is deprecated. Please migrate to \"disabled\" named argument',\n !('isDraggingDisabled' in this.named),\n {\n id: 'ember-sortable.is-dragging-disabled',\n url: 'https://github.com/adopted-ember-addons/ember-sortable#readme',\n until: '3.0.0',\n for: 'ember-sortable',\n since: {\n available: '2.2.6',\n enabled: '2.2.6',\n },\n }\n );\n\n return this.groupDisabled || this.named.disabled || this.named.isDraggingDisabled || false;\n }\n\n /**\n Selector for the element to use as handle.\n 1. By default, we will hook it the yielded sortable-handle.\n 2. If you don't use the sortable-handle, the entire element will be used as the handle.\n 3. In very rare situations, if you want to use a handle, but not the sortable-handle,\n you can override this class with your own handle's selector. This behavior will be\n synonymous with v1\n @property handle\n @type String\n @default \"[data-sortable-handle]\"\n */\n get handle() {\n return this.named.handle || '[data-sortable-handle]';\n }\n\n handleElement;\n\n /**\n * Tolerance, in pixels, for when sorting should start.\n * If specified, sorting will not start until after mouse\n * is dragged beyond distance. Can be used to allow for clicks\n * on elements within a handle.\n *\n * @property distance\n * @type Integer\n * @default 0\n */\n get distance() {\n return this.named.distance || 0;\n }\n\n /**\n * True if the item is currently being dragged.\n *\n * @property isDragging\n * @type boolean\n * @default false\n * @protected\n */\n _isDragging = false;\n get isDragging() {\n return this._isDragging;\n }\n set isDragging(value) {\n if (value) {\n this.element.classList.add('is-dragging');\n } else {\n this.element.classList.remove('is-dragging');\n }\n this._isDragging = value;\n }\n\n /**\n * Gives info in which direction the element will be moved\n *\n * @property moveDirection\n * @type Object\n */\n get moveDirection() {\n const moveDirection = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n };\n\n if (!this.isDragging) {\n return moveDirection;\n }\n\n const dragOriginX = this._dragOriginX;\n const dragOriginY = this._dragOriginY;\n\n if (dragOriginX > this._pageX) {\n moveDirection.left = true;\n }\n\n if (dragOriginX < this._pageX) {\n moveDirection.right = true;\n }\n\n if (dragOriginY > this._pageY) {\n moveDirection.top = true;\n }\n\n if (dragOriginY < this._pageY) {\n moveDirection.bottom = true;\n }\n\n return moveDirection;\n }\n\n /**\n Action that fires when the item starts being dragged.\n @property onDragStart\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStart() {\n return this.named.onDragStart || ((item) => item);\n }\n\n /**\n Action that fires when the item stops being dragged.\n @property onDragStop\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStop() {\n return this.named.onDragStop || ((item) => item);\n }\n\n /**\n True if the item is currently dropping.\n @property isDropping\n @type Boolean\n @default false\n */\n _isDropping = false;\n get isDropping() {\n return this._isDropping;\n }\n set isDropping(value) {\n if (value) {\n this.element.classList.add('is-dropping');\n } else {\n this.element.classList.remove('is-dropping');\n }\n this._isDropping = value;\n }\n\n /**\n True if the item was dropped during the interaction\n @property wasDropped\n @type Boolean\n @default false\n */\n wasDropped = false;\n\n /**\n @property isBusy\n @type Boolean\n */\n get isBusy() {\n return this.isDragging || this.isDropping;\n }\n\n /**\n @property disableCheckScrollBounds\n */\n get disableCheckScrollBounds() {\n return this.named.disableCheckScrollBounds != undefined ? this.named.disableCheckScrollBounds : isTesting();\n }\n\n /**\n @method mouseDown\n */\n @action\n mouseDown(event) {\n if (event.which !== 1) {\n return;\n }\n if (event.ctrlKey) {\n return;\n }\n\n this._primeDrag(event);\n }\n\n @action\n keyDown(event) {\n if (this.isDisabled) {\n return;\n }\n\n this.setupHandleElement();\n\n // If the event is coming from within the item, we do not want to activate keyboard reorder mode.\n if (event.target === this.handleElement || event.target === this.element) {\n this.sortableGroup.activateKeyDown(this);\n } else {\n this.sortableGroup.deactivateKeyDown();\n }\n }\n\n /**\n @method touchStart\n */\n @action\n touchStart(event) {\n this._primeDrag(event);\n }\n\n /**\n @method freeze\n */\n freeze() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = 'none';\n }\n\n /**\n @method reset\n */\n reset() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n delete this._y;\n delete this._x;\n\n el.style.transform = '';\n }\n\n /**\n @method thaw\n */\n thaw() {\n let el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = '';\n }\n\n /**\n * Setup event listeners for drag and drop\n *\n * @method _primeDrag\n * @param {Event} startEvent JS Event object\n * @private\n */\n _primeDrag(startEvent) {\n if (this.isDisabled) {\n return;\n }\n\n if (this.handleElement && !startEvent.target.closest(this.handle)) {\n return;\n }\n\n startEvent.preventDefault();\n startEvent.stopPropagation();\n\n this._prepareDragListener = bind(this, this._prepareDrag, startEvent);\n\n DRAG_ACTIONS.forEach((event) => window.addEventListener(event, this._prepareDragListener));\n\n this._cancelStartDragListener = () => {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, this._prepareDragListener));\n };\n\n const selfCancellingCallback = () => {\n END_ACTIONS.forEach((event) => window.removeEventListener(event, selfCancellingCallback));\n this._cancelStartDragListener();\n };\n\n END_ACTIONS.forEach((event) => window.addEventListener(event, selfCancellingCallback));\n }\n\n /**\n * Prepares for the drag event\n *\n * @method _prepareDrag\n * @param {Event} startEvent JS Event object\n * @param {Event} event JS Event object\n * @private\n */\n _prepareDrag(startEvent, event) {\n // Block drag start while any item has busy state\n if (this.sortableGroup.sortedItems.some((x) => x.isBusy)) {\n return;\n }\n let distance = this.distance;\n let dx = Math.abs(getX(startEvent) - getX(event));\n let dy = Math.abs(getY(startEvent) - getY(event));\n\n if (distance <= dx || distance <= dy) {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, this._prepareDragListener));\n this._startDrag(startEvent);\n }\n }\n\n /**\n * Start dragging & setup more event listeners\n *\n * @method _startDrag\n * @param {Event} event JS Event object\n * @private\n */\n _startDrag(event) {\n if (this.isBusy) {\n return;\n }\n\n let drag = this._makeDragHandler(event);\n let dragThrottled = (ev) => throttle(this, drag, ev, 16, false);\n\n let drop = () => {\n DRAG_ACTIONS.forEach((event) => window.removeEventListener(event, dragThrottled));\n END_ACTIONS.forEach((event) => window.removeEventListener(event, drop));\n\n run(() => {\n this._drop();\n });\n };\n\n DRAG_ACTIONS.forEach((event) => window.addEventListener(event, dragThrottled));\n END_ACTIONS.forEach((event) => window.addEventListener(event, drop));\n\n this.sortableGroup.prepare();\n set(this, 'isDragging', true);\n this.onDragStart(this.model);\n this._scrollOnEdges(drag);\n }\n\n /**\n The maximum scroll speed when dragging element.\n @property maxScrollSpeed\n @default 20\n */\n maxScrollSpeed = 20;\n\n _scrollOnEdges(drag) {\n let groupDirection = this.direction;\n let element = this.element;\n let scrollContainer = new ScrollContainer(scrollParent(element));\n let itemContainer = {\n width: parseInt(getComputedStyle(element).width, 10),\n get height() {\n return parseInt(getComputedStyle(element).height, 10);\n },\n get left() {\n return element.getBoundingClientRect().left;\n },\n get right() {\n return this.left + this.width;\n },\n get top() {\n return element.getBoundingClientRect().top;\n },\n get bottom() {\n return this.top + this.height;\n },\n };\n\n let leadingEdgeKey, trailingEdgeKey, scrollKey, pageKey;\n if (groupDirection === 'grid' || groupDirection === 'x') {\n leadingEdgeKey = 'left';\n trailingEdgeKey = 'right';\n scrollKey = 'scrollLeft';\n pageKey = 'pageX';\n } else {\n leadingEdgeKey = 'top';\n trailingEdgeKey = 'bottom';\n scrollKey = 'scrollTop';\n pageKey = 'pageY';\n }\n\n let createFakeEvent = () => {\n if (this._pageX == null && this._pageY == null) {\n return;\n }\n return {\n pageX: this._pageX,\n pageY: this._pageY,\n clientX: this._pageX,\n clientY: this._pageY,\n };\n };\n\n // Set a trigger padding that will start scrolling\n // the box when the item reaches within padding pixels\n // of the edge of the scroll container.\n let checkScrollBounds = () => {\n let leadingEdge = itemContainer[leadingEdgeKey];\n let trailingEdge = itemContainer[trailingEdgeKey];\n let scroll = scrollContainer[scrollKey]();\n\n let delta = 0;\n if (trailingEdge >= scrollContainer[trailingEdgeKey]) {\n delta = trailingEdge - scrollContainer[trailingEdgeKey];\n } else if (leadingEdge <= scrollContainer[leadingEdgeKey]) {\n delta = leadingEdge - scrollContainer[leadingEdgeKey];\n }\n\n if (delta !== 0) {\n let speed = this.maxScrollSpeed;\n delta = Math.min(Math.max(delta, -1 * speed), speed);\n\n delta = scrollContainer[scrollKey](scroll + delta) - scroll;\n\n let event = createFakeEvent();\n if (event) {\n if (scrollContainer.isWindow) {\n event[pageKey] += delta;\n }\n run(() => drag(event));\n }\n }\n if (this.isDragging) {\n requestAnimationFrame(checkScrollBounds);\n }\n };\n\n if (!this.disableCheckScrollBounds) {\n requestAnimationFrame(checkScrollBounds);\n }\n }\n\n /**\n @method _makeDragHandler\n @param {Event} startEvent\n @return {Function}\n @private\n */\n _makeDragHandler(startEvent) {\n const groupDirection = this.direction;\n let dragOrigin;\n let elementOrigin;\n let scrollOrigin;\n let parentElement = this.element.parentNode;\n\n if (groupDirection === 'grid') {\n this.startEvent = startEvent;\n const dragOriginX = getX(startEvent);\n this._dragOriginX = getX(startEvent);\n const elementOriginX = this.x;\n const scrollOriginX = parentElement.getBoundingClientRect().left;\n\n const dragOriginY = getY(startEvent);\n this._dragOriginY = dragOriginY;\n const elementOriginY = this.y;\n const scrollOriginY = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageX = getX(event);\n let dx = this._pageX - dragOriginX;\n let scrollX = parentElement.getBoundingClientRect().left;\n let x = elementOriginX + dx + (scrollOriginX - scrollX);\n\n this._pageY = getY(event);\n let dy = this._pageY - dragOriginY;\n let scrollY = parentElement.getBoundingClientRect().top;\n let y = elementOriginY + dy + (scrollOriginY - scrollY);\n\n this._drag(x, y);\n };\n }\n\n if (groupDirection === 'x') {\n dragOrigin = getX(startEvent);\n elementOrigin = this.x;\n scrollOrigin = parentElement.getBoundingClientRect().left;\n\n return (event) => {\n this._pageX = getX(event);\n let dx = this._pageX - dragOrigin;\n let scrollX = parentElement.getBoundingClientRect().left;\n let x = elementOrigin + dx + (scrollOrigin - scrollX);\n\n this._drag(x, 0);\n };\n }\n\n if (groupDirection === 'y') {\n dragOrigin = getY(startEvent);\n elementOrigin = this.y;\n scrollOrigin = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageY = getY(event);\n let dy = this._pageY - dragOrigin;\n let scrollY = parentElement.getBoundingClientRect().top;\n let y = elementOrigin + dy + (scrollOrigin - scrollY);\n\n this._drag(0, y);\n };\n }\n }\n\n /**\n @method _scheduleApplyPosition\n @private\n */\n _scheduleApplyPosition() {\n scheduleOnce('render', this, '_applyPosition');\n }\n\n /**\n @method _applyPosition\n @private\n */\n _applyPosition() {\n if (!this.element || !this.element) {\n return;\n }\n\n const groupDirection = this.direction;\n\n if (groupDirection === 'grid') {\n let x = this.x;\n let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n let y = this.y;\n let dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translate(${dx}px, ${dy}px)`;\n }\n if (groupDirection === 'x') {\n let x = this.x;\n let dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n this.element.style.transform = `translateX(${dx}px)`;\n }\n if (groupDirection === 'y') {\n let y = this.y;\n let dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translateY(${dy}px)`;\n }\n }\n\n /**\n @method _drag\n @private\n */\n _drag(dimensionX, dimensionY) {\n if (!this.isDragging) {\n return;\n }\n let updateInterval = this.updateInterval;\n\n this.x = dimensionX;\n this.y = dimensionY;\n\n throttle(this, this.sortableGroup.update, updateInterval);\n }\n\n /**\n @method _drop\n @private\n */\n _drop() {\n if (!this.element) {\n return;\n }\n\n let transitionPromise = this._waitForTransition();\n\n this._preventClick();\n\n // Get sortableItems before making drop end and pass it to update function\n // This is necessary for direction grid, otherwise ordering is not working correctly (because in sortedItems we check if item isDragged)\n // Calling this getter here, makes no difference for other directions\n const sortedItems = this.sortableGroup.sortedItems;\n\n set(this, 'isDragging', false);\n set(this, 'isDropping', true);\n\n this.sortableGroup.update(sortedItems);\n\n let allTransitionPromise = this._waitForAllTransitions();\n\n Promise.all([transitionPromise, allTransitionPromise]).then(() => this._complete());\n }\n\n /**\n @method _preventClick\n @private\n */\n _preventClick() {\n const selfCancellingCallback = (event) => {\n this.element.removeEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);\n this._preventClickHandler(event);\n };\n\n this.element.addEventListener(ELEMENT_CLICK_ACTION, selfCancellingCallback);\n }\n\n /**\n @method _preventClickHandler\n @private\n */\n _preventClickHandler(e) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n /**\n @method _waitForTransition\n @private\n @return Promise\n */\n _waitForTransition() {\n let waiterToken;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const deferred = defer();\n this.element.addEventListener('transitionend', deferred.resolve);\n transitionPromise = deferred.promise.finally(() => {\n this.element.removeEventListener('transitionend', deferred.resolve);\n });\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _waitForTransitions\n @private\n @return Promise\n */\n _waitForAllTransitions() {\n let waiterToken;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const animations = this.sortableGroup.sortedItems.map((x) => x.element.getAnimations());\n\n const animationPromises = animations.map((animation) => {\n return animation.finished;\n });\n\n transitionPromise = Promise.all(animationPromises);\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _complete\n @private\n */\n _complete() {\n this.onDragStop(this.model);\n set(this, 'isDropping', false);\n set(this, 'wasDropped', true);\n this.sortableGroup.commit();\n }\n\n get isAnimated() {\n if (!this.element) {\n return undefined;\n }\n\n let el = this.element;\n let transitionProperty = getComputedStyle(el).transitionProperty;\n\n return /all|transform/.test(transitionProperty) && this.transitionDuration > 0;\n }\n\n /**\n The current transition duration in milliseconds.\n @property transitionDuration\n @type Number\n */\n get transitionDuration() {\n const items = this.sortableGroup.sortedItems.filter((x) => !x.isDragging && !x.isDropping);\n let el = items[0]?.element ?? this.element; // Fallback when only one element is present in list\n let rule = getComputedStyle(el).transitionDuration;\n let match = rule.match(/([\\d.]+)([ms]*)/);\n\n if (match) {\n let value = parseFloat(match[1]);\n let unit = match[2];\n\n if (unit === 's') {\n value = value * 1000;\n }\n\n return value;\n }\n\n return 0;\n }\n\n /**\n Horizontal position of the item.\n @property x\n @type Number\n */\n get x() {\n if (this._x === undefined) {\n let marginLeft = parseFloat(getComputedStyle(this.element).marginLeft);\n this._x = this.element.scrollLeft + this.element.offsetLeft - marginLeft;\n }\n\n return this._x;\n }\n set x(value) {\n if (value !== this._x) {\n this._x = value;\n this._scheduleApplyPosition();\n }\n }\n\n /**\n Vertical position of the item relative to its offset parent.\n @property y\n @type Number\n */\n get y() {\n if (this._y === undefined) {\n this._y = this.element.offsetTop;\n }\n\n return this._y;\n }\n\n set y(value) {\n if (value !== this._y) {\n this._y = value;\n this._scheduleApplyPosition();\n }\n }\n\n /**\n Width of the item.\n @property height\n @type Number\n */\n get width() {\n let el = this.element;\n let width = el.offsetWidth;\n let elStyles = getComputedStyle(el);\n\n width += parseInt(elStyles.marginLeft) + parseInt(elStyles.marginRight); // equal to jQuery.outerWidth(true)\n\n width += getBorderSpacing(el).horizontal;\n\n return width;\n }\n\n /**\n Height of the item including margins.\n @property height\n @type Number\n */\n get height() {\n let el = this.element;\n let height = el.offsetHeight;\n let elStyles = getComputedStyle(el);\n\n // This is needed atm only for grid, to fix jumping on drag-start.\n // In test-app it looks like there is a side-effect when we activate also for direction vertical.\n // If any user will anytime report a jumping in vertical direction, we should activate for every direction and fix our test-app\n if (this.direction === 'grid') {\n height += parseFloat(elStyles.marginTop);\n }\n\n height += parseFloat(elStyles.marginBottom);\n\n height += getBorderSpacing(el).vertical;\n\n return height;\n }\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('mousedown', this.mouseDown);\n this.element.addEventListener('touchstart', this.touchStart);\n this.listenersRegistered = true;\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('mousedown', this.mouseDown);\n this.element.removeEventListener('touchstart', this.touchStart);\n this.listenersRegistered = false;\n }\n\n setupHandleElement(disabled = false) {\n this.handleElement = this.element.querySelector(this.handle);\n\n const touchAction = disabled ? 'initial' : 'none';\n if (this.handleElement) {\n this.handleElement.style['touch-action'] = touchAction;\n } else {\n this.element.style['touch-action'] = touchAction;\n }\n }\n\n element;\n didSetup = false;\n\n /**\n * tracks if event listeners have been registered. Registering event handlers is unnecessary if item is disabled.\n */\n listenersRegistered = false;\n\n constructor(owner, args) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n modify(element, _positional, named) {\n this.element = element;\n this.named = named;\n\n this.element.classList.add(this.className);\n\n // Instead of using `event.preventDefault()` in the 'primeDrag' event,\n // (doesn't work in Chrome 56), we set touch-action: none as a workaround.\n this.setupHandleElement(this.named.disabled);\n\n if (!this.didSetup) {\n this.element.dataset.sortableItem = true;\n this.sortableService.registerItem(this.groupName, this);\n this.didSetup = true;\n }\n\n if (this.named.disabled && this.listenersRegistered) {\n this.removeEventListener();\n } else if (!this.named.disabled && !this.listenersRegistered) {\n this.addEventListener();\n }\n }\n}\n\n/**\n *\n * @param {SortableItemModifier} instance\n */\nfunction cleanup(instance) {\n instance.removeEventListener();\n instance.sortableService.deregisterItem(instance.groupName, instance);\n}\n"],"names":["sortableItemWaiter","buildWaiter","SortableItemModifier","_dec","service","_class","Modifier","sortableGroup","_sortableGroup","undefined","sortableService","fetchGroup","groupName","assert","groupModifier","model","named","direction","groupDisabled","disabled","updateInterval","spacing","isDisabled","deprecate","id","url","until","for","since","available","enabled","isDraggingDisabled","handle","distance","isDragging","_isDragging","value","element","classList","add","remove","moveDirection","left","right","top","bottom","dragOriginX","_dragOriginX","dragOriginY","_dragOriginY","_pageX","_pageY","onDragStart","item","onDragStop","isDropping","_isDropping","isBusy","disableCheckScrollBounds","isTesting","mouseDown","event","which","ctrlKey","_primeDrag","keyDown","setupHandleElement","target","handleElement","activateKeyDown","deactivateKeyDown","touchStart","freeze","el","style","transition","reset","_y","_x","transform","thaw","startEvent","closest","preventDefault","stopPropagation","_prepareDragListener","bind","_prepareDrag","DRAG_ACTIONS","forEach","window","addEventListener","_cancelStartDragListener","removeEventListener","selfCancellingCallback","END_ACTIONS","sortedItems","some","x","dx","Math","abs","getX","dy","getY","_startDrag","drag","_makeDragHandler","dragThrottled","ev","throttle","drop","run","_drop","prepare","set","_scrollOnEdges","groupDirection","scrollContainer","ScrollContainer","scrollParent","itemContainer","width","parseInt","getComputedStyle","height","getBoundingClientRect","leadingEdgeKey","trailingEdgeKey","scrollKey","pageKey","createFakeEvent","pageX","pageY","clientX","clientY","checkScrollBounds","leadingEdge","trailingEdge","scroll","delta","speed","maxScrollSpeed","min","max","isWindow","requestAnimationFrame","dragOrigin","elementOrigin","scrollOrigin","parentElement","parentNode","elementOriginX","scrollOriginX","elementOriginY","y","scrollOriginY","scrollX","scrollY","_drag","_scheduleApplyPosition","scheduleOnce","_applyPosition","offsetLeft","parseFloat","marginLeft","offsetTop","dimensionX","dimensionY","update","transitionPromise","_waitForTransition","_preventClick","allTransitionPromise","_waitForAllTransitions","Promise","all","then","_complete","ELEMENT_CLICK_ACTION","_preventClickHandler","e","stopImmediatePropagation","waiterToken","DEBUG","beginAsync","isAnimated","deferred","defer","resolve","promise","finally","duration","transitionDuration","later","endAsync","animations","map","getAnimations","animationPromises","animation","finished","commit","transitionProperty","test","items","filter","rule","match","unit","scrollLeft","offsetWidth","elStyles","marginRight","getBorderSpacing","horizontal","offsetHeight","marginTop","marginBottom","vertical","listenersRegistered","querySelector","touchAction","constructor","owner","args","_defineProperty","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","className","didSetup","dataset","sortableItem","registerItem","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","instance","deregisterItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sortable-item.js","sources":["../../src/system/scroll-container.ts","../../src/system/scroll-parent.ts","../../src/modifiers/sortable-item.ts"],"sourcesContent":["export default class ScrollContainer {\n element: HTMLElement;\n isWindow: boolean;\n top: number;\n left: number;\n width: number;\n height: number;\n scrollWidth: number;\n scrollHeight: number;\n maxScrollTop: number;\n maxScrollLeft: number;\n\n constructor(element: HTMLElement | Document) {\n this.isWindow = element === document;\n this.element = this.isWindow ? document.documentElement : (element as HTMLElement);\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 const { 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?: number) {\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?: number) {\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","function getParentElements(element: HTMLElement): HTMLElement[] {\n const parentsArray: HTMLElement[] = [];\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: HTMLElement): HTMLElement | Document {\n const position = getComputedStyle(element).position;\n const excludeStaticParent = position === 'absolute';\n let scrollParent: HTMLElement | Document | undefined = getParentElements(element).filter(function (parent) {\n const parentElemStyles = getComputedStyle(parent);\n if (excludeStaticParent && parentElemStyles.position === 'static') {\n return false;\n }\n const { 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 scrollParent;\n}\n","/* 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.ts';\nimport { run, throttle, bind, scheduleOnce, later } from '@ember/runloop';\nimport { DEBUG } from '@glimmer/env';\nimport { getX, getY } from '../utils/coordinate.ts';\nimport ScrollContainer from '../system/scroll-container.ts';\nimport scrollParent from '../system/scroll-parent.ts';\nimport { getBorderSpacing } from '../utils/css-calculation.ts';\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';\nimport type { ArgsFor, PositionalArgs, NamedArgs } from 'ember-modifier';\nimport type EmberSortableService from '../services/ember-sortable-internal-state.ts';\nimport type Owner from '@ember/owner';\nimport type { Group } from '../services/ember-sortable-internal-state.ts';\nimport type SortableGroupModifier from './sortable-group.ts';\nimport type { TDirection } from './sortable-group.ts';\n\nconst sortableItemWaiter = buildWaiter('sortable-item-waiter');\n\nexport interface MoveDirection {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n}\n\ninterface ItemContainer {\n width: number;\n readonly height: number;\n readonly left: number;\n readonly right: number;\n readonly top: number;\n readonly bottom: number;\n}\n\nexport interface FakeEvent {\n pageX: number;\n pageY: number;\n clientX: number;\n clientY: number;\n}\n\nexport interface SortableItemModifierSignature<T> {\n Args: {\n Named: {\n model: T;\n groupName?: string;\n disabled?: boolean;\n updateInterval?: number;\n spacing?: number;\n isDraggingDisabled?: boolean;\n handle?: string;\n distance?: number;\n disableCheckScrollBounds?: boolean;\n onDragStart?: (item: T) => void;\n onDragStop?: (item: T) => void;\n };\n };\n Element: HTMLElement;\n}\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<T> extends Modifier<SortableItemModifierSignature<T>> {\n className = 'sortable-item';\n\n @service('ember-sortable-internal-state') declare sortableService: EmberSortableService<T>;\n\n startEvent?: FakeEvent | Event;\n\n _sortableGroup?: Group<T>;\n _x?: number;\n _y?: number;\n _dragOriginX?: number;\n _dragOriginY?: number;\n _pageX?: number;\n _pageY?: number;\n\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(): SortableGroupModifier<T> {\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(): T {\n return this.named.model;\n }\n\n get direction(): TDirection {\n return this.sortableGroup?.direction;\n }\n\n get groupDisabled(): boolean {\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(): string {\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(): number {\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(): number {\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(): boolean {\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?: HTMLElement | null;\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(): number {\n return this.named.distance || 0;\n }\n\n /**\n * True if the item is currently being dragged.\n *\n * @property isDragging\n * @type boolean\n * @default false\n * @protected\n */\n _isDragging = false;\n get isDragging() {\n return this._isDragging;\n }\n set isDragging(value) {\n if (value) {\n this.element.classList.add('is-dragging');\n } else {\n this.element.classList.remove('is-dragging');\n }\n this._isDragging = value;\n }\n\n /**\n * Gives info in which direction the element will be moved\n *\n * @property moveDirection\n * @type Object\n */\n get moveDirection(): MoveDirection {\n const moveDirection = {\n left: false,\n right: false,\n top: false,\n bottom: false,\n };\n\n if (!this.isDragging) {\n return moveDirection;\n }\n\n const dragOriginX = this._dragOriginX;\n const dragOriginY = this._dragOriginY;\n\n if (dragOriginX && this._pageX && dragOriginX > this._pageX) {\n moveDirection.left = true;\n }\n\n if (dragOriginX && this._pageX && dragOriginX < this._pageX) {\n moveDirection.right = true;\n }\n\n if (dragOriginY && this._pageY && dragOriginY > this._pageY) {\n moveDirection.top = true;\n }\n\n if (dragOriginY && this._pageY && dragOriginY < this._pageY) {\n moveDirection.bottom = true;\n }\n\n return moveDirection;\n }\n\n /**\n Action that fires when the item starts being dragged.\n @property onDragStart\n @type Function\n @param {Object} item model\n @default null\n */\n get onDragStart(): (item: T) => void {\n return this.named.onDragStart || ((item: T) => 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(): (item: T) => void {\n return this.named.onDragStop || ((item: T) => 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(): boolean {\n return this._isDropping;\n }\n set isDropping(value: boolean) {\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(): boolean {\n return this.isDragging || this.isDropping;\n }\n\n /**\n @property disableCheckScrollBounds\n */\n get disableCheckScrollBounds(): boolean {\n return this.named.disableCheckScrollBounds !== undefined ? this.named.disableCheckScrollBounds : isTesting();\n }\n\n /**\n @method mouseDown\n */\n @action\n mouseDown(event: MouseEvent) {\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: 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: TouchEvent) {\n this._primeDrag(event);\n }\n\n /**\n @method freeze\n */\n freeze(): void {\n const el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = 'none';\n }\n\n /**\n @method reset\n */\n reset(): void {\n const 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(): void {\n const el = this.element;\n if (!el) {\n return;\n }\n\n el.style.transition = '';\n }\n\n _prepareDragListener!: () => void;\n _cancelStartDragListener!: () => void;\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: Event) {\n if (this.isDisabled) {\n return;\n }\n\n if (this.handleElement && !(startEvent.target as HTMLElement | null)?.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: MouseEvent, event: MouseEvent) {\n // Block drag start while any item has busy state\n if (this.sortableGroup.sortedItems.some((x) => x.isBusy)) {\n return;\n }\n const distance = this.distance;\n const dx = Math.abs(getX(startEvent) - getX(event));\n const 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: MouseEvent | TouchEvent) {\n if (this.isBusy) {\n return;\n }\n\n const drag = this._makeDragHandler(event);\n const dragThrottled = (ev: Event) => throttle(this, drag, ev, 16, false);\n\n const 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: (event: FakeEvent | Event) => void) {\n const groupDirection = this.direction;\n const element = this.element;\n const scrollContainer = new ScrollContainer(scrollParent(element));\n const itemContainer: 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: keyof ItemContainer,\n trailingEdgeKey: keyof ItemContainer,\n scrollKey: keyof ScrollContainer,\n pageKey: keyof FakeEvent;\n if (groupDirection === 'grid' || groupDirection === 'x') {\n leadingEdgeKey = 'left';\n trailingEdgeKey = 'right';\n scrollKey = 'scrollLeft';\n pageKey = 'pageX';\n } else {\n leadingEdgeKey = 'top';\n trailingEdgeKey = 'bottom';\n scrollKey = 'scrollTop';\n pageKey = 'pageY';\n }\n\n const createFakeEvent = (): FakeEvent | void => {\n if (this._pageX == null && this._pageY == null) {\n return;\n }\n return {\n pageX: this._pageX ?? 0,\n pageY: this._pageY ?? 0,\n clientX: this._pageX ?? 0,\n clientY: this._pageY ?? 0,\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 const checkScrollBounds = () => {\n const leadingEdge = itemContainer[leadingEdgeKey];\n const trailingEdge = itemContainer[trailingEdgeKey];\n const 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 const speed = this.maxScrollSpeed;\n delta = Math.min(Math.max(delta, -1 * speed), speed);\n\n delta = scrollContainer[scrollKey](scroll + delta) - scroll;\n\n const 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: FakeEvent | Event): (event: FakeEvent | Event) => void {\n const groupDirection = this.direction;\n let dragOrigin: number;\n let elementOrigin: number;\n let scrollOrigin: number;\n const parentElement = this.element.parentNode as HTMLElement | null;\n\n if (!parentElement) {\n return () => {};\n }\n\n if (groupDirection === 'grid') {\n this.startEvent = startEvent;\n const dragOriginX = getX(startEvent);\n this._dragOriginX = getX(startEvent);\n const elementOriginX = this.x;\n const scrollOriginX = parentElement.getBoundingClientRect().left;\n\n const dragOriginY = getY(startEvent);\n this._dragOriginY = dragOriginY;\n const elementOriginY = this.y;\n const scrollOriginY = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageX = getX(event);\n const dx = this._pageX - dragOriginX;\n const scrollX = parentElement.getBoundingClientRect().left;\n const x = elementOriginX + dx + (scrollOriginX - scrollX);\n\n this._pageY = getY(event);\n const dy = this._pageY - dragOriginY;\n const scrollY = parentElement.getBoundingClientRect().top;\n const y = elementOriginY + dy + (scrollOriginY - scrollY);\n\n this._drag(x, y);\n };\n }\n\n if (groupDirection === 'x') {\n dragOrigin = getX(startEvent);\n elementOrigin = this.x;\n scrollOrigin = parentElement.getBoundingClientRect().left;\n\n return (event) => {\n this._pageX = getX(event);\n const dx = this._pageX - dragOrigin;\n const scrollX = parentElement.getBoundingClientRect().left;\n const x = elementOrigin + dx + (scrollOrigin - scrollX);\n\n this._drag(x, 0);\n };\n }\n\n if (groupDirection === 'y') {\n dragOrigin = getY(startEvent);\n elementOrigin = this.y;\n scrollOrigin = parentElement.getBoundingClientRect().top;\n\n return (event) => {\n this._pageY = getY(event);\n const dy = this._pageY - dragOrigin;\n const scrollY = parentElement.getBoundingClientRect().top;\n const y = elementOrigin + dy + (scrollOrigin - scrollY);\n\n this._drag(0, y);\n };\n }\n\n return () => {};\n }\n\n /**\n @method _scheduleApplyPosition\n @private\n */\n _scheduleApplyPosition(): void {\n scheduleOnce('render', this, this._applyPosition);\n }\n\n /**\n @method _applyPosition\n @private\n */\n _applyPosition(): void {\n if (!this.element || !this.element) {\n return;\n }\n\n const groupDirection = this.direction;\n\n if (groupDirection === 'grid') {\n const x = this.x;\n const dx = x - this.element.offsetLeft + parseFloat(getComputedStyle(this.element).marginLeft);\n\n const y = this.y;\n const dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translate(${dx}px, ${dy}px)`;\n }\n if (groupDirection === 'x') {\n const x = this.x;\n const 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 const y = this.y;\n const dy = y - this.element.offsetTop;\n\n this.element.style.transform = `translateY(${dy}px)`;\n }\n }\n\n /**\n @method _drag\n @private\n */\n _drag(dimensionX: number, dimensionY: number) {\n if (!this.isDragging) {\n return;\n }\n const updateInterval = this.updateInterval;\n\n this.x = dimensionX;\n this.y = dimensionY;\n\n // @ts-expect-error Argument of type 'this' is not assignable to parameter of type 'AnyFn'.\n throttle(this, this.sortableGroup.update, updateInterval);\n }\n\n /**\n @method _drop\n @private\n */\n _drop(): void {\n if (!this.element) {\n return;\n }\n\n const transitionPromise = this._waitForTransition();\n\n this._preventClick();\n\n // Get sortableItems before making drop end and pass it to update function\n // This is necessary for direction grid, otherwise ordering is not working correctly (because in sortedItems we check if item isDragged)\n // Calling this getter here, makes no difference for other directions\n const sortedItems = this.sortableGroup.sortedItems;\n\n set(this, 'isDragging', false);\n set(this, 'isDropping', true);\n\n this.sortableGroup.update(sortedItems);\n\n const allTransitionPromise = this._waitForAllTransitions();\n\n Promise.all([transitionPromise, allTransitionPromise]).then(() => this._complete());\n }\n\n /**\n @method _preventClick\n @private\n */\n _preventClick(): void {\n const selfCancellingCallback = (event: 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: Event): void {\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: unknown;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const deferred = defer();\n this.element.addEventListener('transitionend', deferred.resolve);\n transitionPromise = deferred.promise.finally(() => {\n this.element.removeEventListener('transitionend', deferred.resolve);\n });\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _waitForTransitions\n @private\n @return Promise\n */\n _waitForAllTransitions() {\n let waiterToken: unknown;\n\n if (DEBUG) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n const animations = this.sortableGroup.sortedItems.map((x) => x.element.getAnimations());\n\n const animationPromises = animations.map((animation) => {\n return animation.every((x) => x.finished);\n });\n\n transitionPromise = Promise.all(animationPromises);\n } else {\n const duration = this.isAnimated ? this.transitionDuration : 200;\n transitionPromise = new Promise((resolve) => later(resolve, duration));\n }\n\n if (DEBUG) {\n transitionPromise = transitionPromise.finally(() => {\n sortableItemWaiter.endAsync(waiterToken);\n });\n }\n\n return transitionPromise;\n }\n\n /**\n @method _complete\n @private\n */\n _complete(): void {\n this.onDragStop(this.model);\n set(this, 'isDropping', false);\n set(this, 'wasDropped', true);\n this.sortableGroup.commit();\n }\n\n get isAnimated(): boolean | undefined {\n if (!this.element) {\n return undefined;\n }\n\n const el = this.element;\n const 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(): number {\n const items = this.sortableGroup.sortedItems.filter((x) => !x.isDragging && !x.isDropping);\n const el = items[0]?.element ?? this.element; // Fallback when only one element is present in list\n const rule = getComputedStyle(el).transitionDuration;\n const match = rule.match(/([\\d.]+)([ms]*)/);\n\n if (match) {\n let value = parseFloat(match[1] ?? '');\n const 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(): number {\n if (this._x === undefined) {\n const 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: number) {\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(): number {\n if (this._y === undefined) {\n this._y = this.element.offsetTop;\n }\n\n return this._y;\n }\n\n set y(value: number) {\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(): number {\n const el = this.element;\n let width = el.offsetWidth;\n const 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(): number {\n const el = this.element;\n let height = el.offsetHeight;\n const elStyles = getComputedStyle(el);\n\n // This is needed atm only for grid, to fix jumping on drag-start.\n // In test-app it looks like there is a side-effect when we activate also for direction vertical.\n // If any user will anytime report a jumping in vertical direction, we should activate for every direction and fix our test-app\n if (this.direction === 'grid') {\n height += parseFloat(elStyles.marginTop);\n }\n\n height += parseFloat(elStyles.marginBottom);\n\n height += getBorderSpacing(el).vertical;\n\n return height;\n }\n\n addEventListener() {\n this.element.addEventListener('keydown', this.keyDown);\n this.element.addEventListener('mousedown', this.mouseDown);\n this.element.addEventListener('touchstart', this.touchStart);\n this.listenersRegistered = true;\n }\n\n removeEventListener() {\n this.element.removeEventListener('keydown', this.keyDown);\n this.element.removeEventListener('mousedown', this.mouseDown);\n this.element.removeEventListener('touchstart', this.touchStart);\n this.listenersRegistered = false;\n }\n\n setupHandleElement(disabled = false) {\n this.handleElement = this.element.querySelector(this.handle);\n\n const touchAction = disabled ? 'initial' : 'none';\n if (this.handleElement) {\n this.handleElement.style['touchAction'] = touchAction;\n } else {\n this.element.style['touchAction'] = touchAction;\n }\n }\n\n element!: HTMLElement;\n didSetup = false;\n named!: NamedArgs<SortableItemModifierSignature<T>>;\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: Owner, args: ArgsFor<SortableItemModifierSignature<T>>) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n override modify(\n element: HTMLElement,\n _positional: PositionalArgs<SortableItemModifierSignature<T>>,\n named: NamedArgs<SortableItemModifierSignature<T>>,\n ) {\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<T>(instance: SortableItemModifier<T>) {\n instance.removeEventListener();\n instance.sortableService.deregisterItem(instance.groupName, instance);\n}\n"],"names":["ScrollContainer","constructor","element","_defineProperty","isWindow","document","documentElement","top","left","width","clientWidth","height","clientHeight","getBoundingClientRect","parseFloat","getComputedStyle","scrollWidth","scrollHeight","maxScrollTop","maxScrollLeft","bottom","right","scrollTop","value","Math","max","min","scrollLeft","getParentElements","parentsArray","currentParent","parentElement","push","position","excludeStaticParent","scrollParent","filter","parent","parentElemStyles","overflow","overflowX","overflowY","test","body","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","classList","add","remove","moveDirection","dragOriginX","_dragOriginX","dragOriginY","_dragOriginY","_pageX","_pageY","onDragStart","item","onDragStop","isDropping","_isDropping","isBusy","disableCheckScrollBounds","isTesting","mouseDown","event","which","ctrlKey","_primeDrag","keyDown","setupHandleElement","target","handleElement","activateKeyDown","deactivateKeyDown","touchStart","freeze","el","style","transition","reset","_y","_x","transform","thaw","startEvent","closest","preventDefault","stopPropagation","_prepareDragListener","bind","_prepareDrag","DRAG_ACTIONS","forEach","window","addEventListener","_cancelStartDragListener","removeEventListener","selfCancellingCallback","END_ACTIONS","sortedItems","some","x","dx","abs","getX","dy","getY","_startDrag","drag","_makeDragHandler","dragThrottled","ev","throttle","drop","run","_drop","prepare","set","_scrollOnEdges","groupDirection","scrollContainer","itemContainer","parseInt","leadingEdgeKey","trailingEdgeKey","scrollKey","pageKey","createFakeEvent","pageX","pageY","clientX","clientY","checkScrollBounds","leadingEdge","trailingEdge","scroll","delta","speed","maxScrollSpeed","requestAnimationFrame","dragOrigin","elementOrigin","scrollOrigin","parentNode","elementOriginX","scrollOriginX","elementOriginY","y","scrollOriginY","scrollX","scrollY","_drag","_scheduleApplyPosition","scheduleOnce","_applyPosition","offsetLeft","marginLeft","offsetTop","dimensionX","dimensionY","update","transitionPromise","_waitForTransition","_preventClick","allTransitionPromise","_waitForAllTransitions","Promise","all","then","_complete","ELEMENT_CLICK_ACTION","_preventClickHandler","e","stopImmediatePropagation","waiterToken","DEBUG","beginAsync","isAnimated","deferred","defer","resolve","promise","finally","duration","transitionDuration","later","endAsync","animations","map","getAnimations","animationPromises","animation","every","finished","commit","transitionProperty","items","rule","match","unit","offsetWidth","elStyles","marginRight","getBorderSpacing","horizontal","offsetHeight","marginTop","marginBottom","vertical","listenersRegistered","querySelector","touchAction","owner","args","_initializerDefineProperty","_descriptor","registerDestructor","cleanup","modify","_positional","className","didSetup","dataset","registerItem","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","instance","deregisterItem"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as _defineProperty } from '../_rollupPluginBabelHelpers-
|
|
1
|
+
import { a as _defineProperty } from '../_rollupPluginBabelHelpers-a7bede49.js';
|
|
2
2
|
import Service from '@ember/service';
|
|
3
3
|
|
|
4
4
|
class EmberSortableService extends Service {
|
|
@@ -51,7 +51,10 @@ class EmberSortableService extends Service {
|
|
|
51
51
|
* @param {SortableItemModifier} item
|
|
52
52
|
*/
|
|
53
53
|
registerItem(groupName, item) {
|
|
54
|
-
|
|
54
|
+
const groupDef = this.fetchGroup(groupName);
|
|
55
|
+
if (!groupDef) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
55
58
|
let items = groupDef.items;
|
|
56
59
|
if (items.indexOf(item) === -1) {
|
|
57
60
|
items = [...items, item];
|
|
@@ -66,11 +69,14 @@ class EmberSortableService extends Service {
|
|
|
66
69
|
@param item
|
|
67
70
|
*/
|
|
68
71
|
deregisterItem(groupName, item) {
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
const groupDef = this.fetchGroup(groupName);
|
|
73
|
+
if (!groupDef) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const items = groupDef.items;
|
|
71
77
|
const index = items.indexOf(item);
|
|
72
78
|
if (index !== -1) {
|
|
73
|
-
|
|
79
|
+
const newItems = [...items.slice(0, index), ...items.slice(index + 1)];
|
|
74
80
|
groupDef.items = newItems;
|
|
75
81
|
}
|
|
76
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ember-sortable-internal-state.js","sources":["../../src/services/ember-sortable-internal-state.
|
|
1
|
+
{"version":3,"file":"ember-sortable-internal-state.js","sources":["../../src/services/ember-sortable-internal-state.ts"],"sourcesContent":["import Service from '@ember/service';\nimport type SortableGroupModifier from '../modifiers/sortable-group';\nimport type SortableItemModifier from '../modifiers/sortable-item';\n\nexport interface Group<T> {\n groupModifier: SortableGroupModifier<T> | undefined;\n items: SortableItemModifier<T>[];\n}\n\nexport default class EmberSortableService<T> 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: Record<string, Group<T>> = {};\n\n /**\n * Register a new group with the service\n *\n * @param {String} groupName\n * @param {SortableGroupModifier} groupModifier\n */\n registerGroup(groupName: string, groupModifier: SortableGroupModifier<T> | undefined) {\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: string): void {\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: string, item: SortableItemModifier<T>): void {\n const groupDef = this.fetchGroup(groupName);\n\n if (!groupDef) {\n return;\n }\n\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: string, item: SortableItemModifier<T>): void {\n const groupDef = this.fetchGroup(groupName);\n\n if (!groupDef) {\n return;\n }\n\n const items = groupDef.items;\n\n const index = items.indexOf(item);\n if (index !== -1) {\n const 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: string): Group<T> {\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":";;;AASe,MAAMA,oBAAoB,SAAYC,OAAO,CAAC;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAC3D;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAVEC,eAAA,CAAA,IAAA,EAAA,QAAA,EAWmC,EAAE,CAAA,CAAA;AAAA,GAAA;AAErC;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,aAAaA,CAACC,SAAiB,EAAEC,aAAmD,EAAE;IACpF,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,SAAiB,EAAQ;AACvC,IAAA,OAAO,IAAI,CAACE,MAAM,CAACF,SAAS,CAAC,CAAA;AAC/B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEM,EAAAA,YAAYA,CAACN,SAAiB,EAAEO,IAA6B,EAAQ;AACnE,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACC,UAAU,CAACT,SAAS,CAAC,CAAA;IAE3C,IAAI,CAACQ,QAAQ,EAAE;AACb,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIJ,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,SAAiB,EAAEO,IAA6B,EAAQ;AACrE,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACC,UAAU,CAACT,SAAS,CAAC,CAAA;IAE3C,IAAI,CAACQ,QAAQ,EAAE;AACb,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMJ,KAAK,GAAGI,QAAQ,CAACJ,KAAK,CAAA;AAE5B,IAAA,MAAMQ,KAAK,GAAGR,KAAK,CAACM,OAAO,CAACH,IAAI,CAAC,CAAA;AACjC,IAAA,IAAIK,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,MAAMC,QAAQ,GAAG,CAAC,GAAGT,KAAK,CAACU,KAAK,CAAC,CAAC,EAAEF,KAAK,CAAC,EAAE,GAAGR,KAAK,CAACU,KAAK,CAACF,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;MACtEJ,QAAQ,CAACJ,KAAK,GAAGS,QAAQ,CAAA;AAC3B,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEJ,UAAUA,CAACT,SAAiB,EAAY;IACtC,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;;;;"}
|
|
@@ -44,6 +44,9 @@ async function drag(mode, itemSelector, offsetFn, callbacks = {}) {
|
|
|
44
44
|
throw new Error(`Unsupported mode: '${mode}'`);
|
|
45
45
|
}
|
|
46
46
|
const itemElement = find(itemSelector);
|
|
47
|
+
if (!itemElement) {
|
|
48
|
+
throw new Error(`Element with selector '${itemSelector}' not found!`);
|
|
49
|
+
}
|
|
47
50
|
const itemOffset = getOffset(itemElement);
|
|
48
51
|
const offset = offsetFn();
|
|
49
52
|
const rect = itemElement.getBoundingClientRect();
|
|
@@ -55,7 +58,7 @@ async function drag(mode, itemSelector, offsetFn, callbacks = {}) {
|
|
|
55
58
|
// https://stackoverflow.com/a/5042051
|
|
56
59
|
const dx = offset.dx || 0;
|
|
57
60
|
const dy = offset.dy || 0;
|
|
58
|
-
const clientHeight = itemElement.clientHeight || itemElement.offsetHeight || itemElement.parentNode
|
|
61
|
+
const clientHeight = itemElement.clientHeight || itemElement.offsetHeight || itemElement.parentNode?.offsetHeight || 0;
|
|
59
62
|
const scale = clientHeight / (rect.bottom - rect.top);
|
|
60
63
|
const halfwayX = itemOffset.left + dx * scale / 2;
|
|
61
64
|
const halfwayY = itemOffset.top + dy * scale / 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag.js","sources":["../../../src/test-support/helpers/drag.
|
|
1
|
+
{"version":3,"file":"drag.js","sources":["../../../src/test-support/helpers/drag.ts"],"sourcesContent":["import { triggerEvent, find, settled, waitUntil } from '@ember/test-helpers';\nimport { getOffset } from '../utils/offset.ts';\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 type TMode = 'mouse' | 'touch';\n\ninterface Callbacks {\n dragstart?: () => Promise<void>;\n dragmove?: () => Promise<void>;\n beforedragend?: () => Promise<void>;\n dragend?: () => Promise<void>;\n}\n\nexport async function drag(\n mode: TMode,\n itemSelector: string,\n offsetFn: () => { dx: number; dy: number },\n callbacks: Callbacks = {},\n) {\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\n if (!itemElement) {\n throw new Error(`Element with selector '${itemSelector}' not found!`);\n }\n\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 =\n itemElement.clientHeight ||\n (itemElement as HTMLElement).offsetHeight ||\n (itemElement.parentNode as HTMLElement | null)?.offsetHeight ||\n 0;\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 await waitUntil(\n () => {\n return !find('.is-dropping');\n },\n { timeout: 2000 },\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","waitUntil","timeout"],"mappings":"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"}
|
|
@@ -29,11 +29,21 @@ const OVERSHOOT = 2;
|
|
|
29
29
|
async function reorder(mode, itemSelector, ...resultSelectors) {
|
|
30
30
|
for (let targetIndex = 0; targetIndex < resultSelectors.length; targetIndex++) {
|
|
31
31
|
const items = findAll(itemSelector);
|
|
32
|
-
const
|
|
32
|
+
const result = resultSelectors[targetIndex];
|
|
33
|
+
if (!result) {
|
|
34
|
+
throw new Error(`Element on position ${targetIndex} not found!`);
|
|
35
|
+
}
|
|
36
|
+
const sourceElement = find(result);
|
|
37
|
+
if (!sourceElement) {
|
|
38
|
+
throw new Error(`SourceElement with selector '${result}' not found!`);
|
|
39
|
+
}
|
|
33
40
|
const targetElement = items[targetIndex];
|
|
41
|
+
if (!targetElement) {
|
|
42
|
+
throw new Error(`TargetElement not found! Selector '${result}' has no element on index ${targetIndex}!`);
|
|
43
|
+
}
|
|
34
44
|
const dx = getOffset(targetElement).left - OVERSHOOT - getOffset(sourceElement).left;
|
|
35
45
|
const dy = getOffset(targetElement).top - OVERSHOOT - getOffset(sourceElement).top;
|
|
36
|
-
await drag(mode,
|
|
46
|
+
await drag(mode, result, () => {
|
|
37
47
|
return {
|
|
38
48
|
dx: dx,
|
|
39
49
|
dy: dy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.js","sources":["../../../src/test-support/helpers/reorder.
|
|
1
|
+
{"version":3,"file":"reorder.js","sources":["../../../src/test-support/helpers/reorder.ts"],"sourcesContent":["import { find, findAll } from '@ember/test-helpers';\nimport { drag, type TMode } from './drag.ts';\nimport { getOffset } from '../utils/offset.ts';\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<T extends keyof HTMLElementTagNameMap>(\n mode: TMode,\n itemSelector: string,\n ...resultSelectors: T[]\n) {\n for (let targetIndex = 0; targetIndex < resultSelectors.length; targetIndex++) {\n const items = findAll(itemSelector);\n const result = resultSelectors[targetIndex];\n if (!result) {\n throw new Error(`Element on position ${targetIndex} not found!`);\n }\n\n const sourceElement = find(result);\n\n if (!sourceElement) {\n throw new Error(`SourceElement with selector '${result}' not found!`);\n }\n\n const targetElement = items[targetIndex];\n\n if (!targetElement) {\n throw new Error(`TargetElement not found! Selector '${result}' has no element on index ${targetIndex}!`);\n }\n\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, result, () => {\n return { dx: dx, dy: dy };\n });\n }\n}\n"],"names":["OVERSHOOT","reorder","mode","itemSelector","resultSelectors","targetIndex","length","items","findAll","result","Error","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,CAC3BC,IAAW,EACXC,YAAoB,EACpB,GAAGC,eAAoB,EACvB;AACA,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;AACnC,IAAA,MAAMM,MAAM,GAAGL,eAAe,CAACC,WAAW,CAAC,CAAA;IAC3C,IAAI,CAACI,MAAM,EAAE;AACX,MAAA,MAAM,IAAIC,KAAK,CAAC,CAAuBL,oBAAAA,EAAAA,WAAW,aAAa,CAAC,CAAA;AAClE,KAAA;AAEA,IAAA,MAAMM,aAAa,GAAGC,IAAI,CAACH,MAAM,CAAC,CAAA;IAElC,IAAI,CAACE,aAAa,EAAE;AAClB,MAAA,MAAM,IAAID,KAAK,CAAC,CAAgCD,6BAAAA,EAAAA,MAAM,cAAc,CAAC,CAAA;AACvE,KAAA;AAEA,IAAA,MAAMI,aAAa,GAAGN,KAAK,CAACF,WAAW,CAAC,CAAA;IAExC,IAAI,CAACQ,aAAa,EAAE;MAClB,MAAM,IAAIH,KAAK,CAAC,CAAA,mCAAA,EAAsCD,MAAM,CAA6BJ,0BAAAA,EAAAA,WAAW,GAAG,CAAC,CAAA;AAC1G,KAAA;AAEA,IAAA,MAAMS,EAAE,GAAGC,SAAS,CAACF,aAAa,CAAC,CAACG,IAAI,GAAGhB,SAAS,GAAGe,SAAS,CAACJ,aAAa,CAAC,CAACK,IAAI,CAAA;AACpF,IAAA,MAAMC,EAAE,GAAGF,SAAS,CAACF,aAAa,CAAC,CAACK,GAAG,GAAGlB,SAAS,GAAGe,SAAS,CAACJ,aAAa,CAAC,CAACO,GAAG,CAAA;AAElF,IAAA,MAAMC,IAAI,CAACjB,IAAI,EAAEO,MAAM,EAAE,MAAM;MAC7B,OAAO;AAAEK,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.
|
|
1
|
+
{"version":3,"file":"keyboard.js","sources":["../../../src/test-support/utils/keyboard.ts"],"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: string, keyCode: number) {\n return function isKey(event: KeyboardEvent) {\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,GAAW,EAAEC,OAAe,EAAE;AACnD,EAAA,OAAO,SAASC,KAAKA,CAACC,KAAoB,EAAE;IAC1C,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.
|
|
1
|
+
{"version":3,"file":"offset.js","sources":["../../../src/test-support/utils/offset.ts"],"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: Element) {\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,EAAW,EAAE;AACrC,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":"constant.js","sources":["../../src/utils/constant.
|
|
1
|
+
{"version":3,"file":"constant.js","sources":["../../src/utils/constant.ts"],"sourcesContent":["import type { A11yAnnouncementConfig } from './defaults';\n\nexport const DRAG_ACTIONS: (keyof WindowEventMap)[] = ['mousemove', 'touchmove'];\nexport const ELEMENT_CLICK_ACTION = 'click';\nexport const END_ACTIONS = ['click', 'mouseup', 'touchend'];\nexport const ANNOUNCEMENT_ACTION_TYPES: {\n ACTIVATE: keyof A11yAnnouncementConfig;\n MOVE: keyof A11yAnnouncementConfig;\n CONFIRM: keyof A11yAnnouncementConfig;\n CANCEL: keyof A11yAnnouncementConfig;\n} = {\n ACTIVATE: 'ACTIVATE',\n MOVE: 'MOVE',\n CONFIRM: 'CONFIRM',\n CANCEL: 'CANCEL',\n};\n"],"names":["DRAG_ACTIONS","ELEMENT_CLICK_ACTION","END_ACTIONS","ANNOUNCEMENT_ACTION_TYPES","ACTIVATE","MOVE","CONFIRM","CANCEL"],"mappings":"MAEaA,YAAsC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAC;AACzE,MAAMC,oBAAoB,GAAG,QAAO;AACpC,MAAMC,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAC;AACpD,MAAMC,yBAKZ,GAAG;AACFC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,MAAM,EAAE,QAAA;AACV;;;;"}
|
package/dist/utils/coordinate.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
@private
|
|
7
7
|
*/
|
|
8
8
|
function getY(event) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const touches = event.changedTouches;
|
|
10
|
+
const touch = touches && touches[0];
|
|
11
11
|
if (touch) {
|
|
12
12
|
return touch.screenY;
|
|
13
13
|
} else {
|
|
@@ -22,8 +22,8 @@ function getY(event) {
|
|
|
22
22
|
@private
|
|
23
23
|
*/
|
|
24
24
|
function getX(event) {
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const touches = event.changedTouches;
|
|
26
|
+
const touch = touches && touches[0];
|
|
27
27
|
if (touch) {
|
|
28
28
|
return touch.screenX;
|
|
29
29
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate.js","sources":["../../src/utils/coordinate.
|
|
1
|
+
{"version":3,"file":"coordinate.js","sources":["../../src/utils/coordinate.ts"],"sourcesContent":["import type { FakeEvent } from '../modifiers/sortable-item';\n\n/**\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: FakeEvent | Event): number {\n const touches = (event as TouchEvent).changedTouches;\n const touch = touches && touches[0];\n\n if (touch) {\n return touch.screenY;\n } else {\n return (event as MouseEvent).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: FakeEvent | Event): number {\n const touches = (event as TouchEvent).changedTouches;\n const touch = touches && touches[0];\n\n if (touch) {\n return touch.screenX;\n } else {\n return (event as MouseEvent).clientX;\n }\n}\n"],"names":["getY","event","touches","changedTouches","touch","screenY","clientY","getX","screenX","clientX"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,IAAIA,CAACC,KAAwB,EAAU;AACrD,EAAA,MAAMC,OAAO,GAAID,KAAK,CAAgBE,cAAc,CAAA;AACpD,EAAA,MAAMC,KAAK,GAAGF,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnC,EAAA,IAAIE,KAAK,EAAE;IACT,OAAOA,KAAK,CAACC,OAAO,CAAA;AACtB,GAAC,MAAM;IACL,OAAQJ,KAAK,CAAgBK,OAAO,CAAA;AACtC,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAACN,KAAwB,EAAU;AACrD,EAAA,MAAMC,OAAO,GAAID,KAAK,CAAgBE,cAAc,CAAA;AACpD,EAAA,MAAMC,KAAK,GAAGF,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnC,EAAA,IAAIE,KAAK,EAAE;IACT,OAAOA,KAAK,CAACI,OAAO,CAAA;AACtB,GAAC,MAAM;IACL,OAAQP,KAAK,CAAgBQ,OAAO,CAAA;AACtC,GAAA;AACF;;;;"}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
@private
|
|
8
8
|
*/
|
|
9
9
|
function getBorderSpacing(el) {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const css = getComputedStyle(el).borderSpacing; // '0px 0px'
|
|
11
|
+
const [horizontal, vertical] = css.split(' ');
|
|
12
12
|
return {
|
|
13
|
-
horizontal: parseFloat(horizontal),
|
|
14
|
-
vertical: parseFloat(vertical)
|
|
13
|
+
horizontal: parseFloat(horizontal ?? ''),
|
|
14
|
+
vertical: parseFloat(vertical ?? '')
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-calculation.js","sources":["../../src/utils/css-calculation.
|
|
1
|
+
{"version":3,"file":"css-calculation.js","sources":["../../src/utils/css-calculation.ts"],"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: Element) {\n const css = getComputedStyle(el).borderSpacing; // '0px 0px'\n const [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,EAAW,EAAE;EAC5C,MAAMC,GAAG,GAAGC,gBAAgB,CAACF,EAAE,CAAC,CAACG,aAAa,CAAC;EAC/C,MAAM,CAACC,UAAU,EAAEC,QAAQ,CAAC,GAAGJ,GAAG,CAACK,KAAK,CAAC,GAAG,CAAC,CAAA;EAE7C,OAAO;AACLF,IAAAA,UAAU,EAAEG,UAAU,CAACH,UAAU,IAAI,EAAE,CAAC;AACxCC,IAAAA,QAAQ,EAAEE,UAAU,CAACF,QAAQ,IAAI,EAAE,CAAA;GACpC,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sources":["../../src/utils/defaults.
|
|
1
|
+
{"version":3,"file":"defaults.js","sources":["../../src/utils/defaults.ts"],"sourcesContent":["import type { TDirection } from '../modifiers/sortable-group.ts';\n\nexport interface A11yAnnouncementConfig {\n ACTIVATE: ({\n a11yItemName,\n index,\n maxLength,\n direction,\n }: {\n a11yItemName: string;\n index: number;\n maxLength: number;\n direction: TDirection;\n }) => string;\n MOVE: ({\n a11yItemName,\n index,\n maxLength,\n delta,\n }: {\n a11yItemName: string;\n index: number;\n maxLength: number;\n delta: number;\n }) => string;\n CONFIRM: ({ a11yItemName }: { a11yItemName: string }) => string;\n CANCEL: ({ a11yItemName }: { a11yItemName: string }) => string;\n}\n\nexport const defaultA11yAnnouncementConfig: A11yAnnouncementConfig = {\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":"AA6BO,MAAMA,6BAAqD,GAAG;AACnEC,EAAAA,QAAQA,CAAC;IAAEC,YAAY;IAAEC,KAAK;IAAEC,SAAS;AAAEC,IAAAA,SAAAA;AAAU,GAAC,EAAE;IACtD,IAAIC,OAAO,GAAG,CAAA,EAAGJ,YAAY,CAAA,cAAA,EAAiBC,KAAK,GAAG,CAAC,CAAOC,IAAAA,EAAAA,SAAS,CAAoC,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,OAAO,CAAA,EAAGN,YAAY,CAAA,uBAAA,EACpBC,KAAK,GAAG,CAAC,GAAGK,KAAK,CACZJ,IAAAA,EAAAA,SAAS,CAA0D,wDAAA,CAAA,CAAA;GAC3E;AACDK,EAAAA,OAAOA,CAAC;AAAEP,IAAAA,YAAAA;AAAa,GAAC,EAAE;IACxB,OAAO,CAAA,EAAGA,YAAY,CAAgC,8BAAA,CAAA,CAAA;GACvD;AACDQ,EAAAA,MAAMA,CAAC;AAAER,IAAAA,YAAAA;AAAa,GAAC,EAAE;IACvB,OAAO,CAAA,WAAA,EAAcA,YAAY,CAAgB,cAAA,CAAA,CAAA;AACnD,GAAA;AACF;;;;"}
|