ember-sortable 5.4.0 → 5.5.0
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/declarations/modifiers/sortable-group.d.ts +16 -12
- package/declarations/modifiers/sortable-item.d.ts +3 -3
- package/dist/{_rollupPluginBabelHelpers-a7bede49.js → _rollupPluginBabelHelpers-060f9720.js} +6 -6
- package/dist/_rollupPluginBabelHelpers-060f9720.js.map +1 -0
- package/dist/modifiers/sortable-group.js +221 -222
- package/dist/modifiers/sortable-group.js.map +1 -1
- package/dist/modifiers/sortable-handle.js +1 -1
- package/dist/modifiers/sortable-item.js +37 -37
- package/dist/modifiers/sortable-item.js.map +1 -1
- package/dist/services/ember-sortable-internal-state.js +1 -1
- package/package.json +1 -1
- package/dist/_rollupPluginBabelHelpers-a7bede49.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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 { 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 { macroCondition, isDevelopingApp } from '@embroider/macros';\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 * as s 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 service = s.service ?? s.inject;\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 if (!this.sortableGroup) return;\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 (macroCondition(isDevelopingApp())) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n transitionPromise = new Promise<void>((resolve) => {\n let resolved = false;\n\n const handler = () => {\n if (resolved) return;\n resolved = true;\n this.element.removeEventListener('transitionend', handler);\n resolve();\n };\n\n this.element.addEventListener('transitionend', handler);\n\n const duration = this.transitionDuration;\n\n // When transition is ended before we have added the event (found this issue already with 125ms), the dragging is blocked, since fully page refresh\n // To ensure that this would never happen, we need an later, to resolve the promise, when it wasn't resolved by transitionEnd\n // The duration addition with 200ms is just a choice (taken from else case), its just a way to let transitionend a little bit more time\n // Note: Unfortunately this issue is also not solvable with Element.getAnimations(), getAnimations brings no active animation at this point\n later(() => {\n handler();\n }, duration + 200);\n });\n } else {\n transitionPromise = new Promise((resolve) => later(resolve, 200));\n }\n\n if (macroCondition(isDevelopingApp())) {\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 (macroCondition(isDevelopingApp())) {\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.flatMap((animationList) => {\n return animationList.map((animation) =>\n // A cancelled animation (e.g. one interrupted by the re-render that\n // happens mid-drop) rejects `finished` with an AbortError. Treat it\n // as finished so the drop still completes, instead of leaving this\n // promise chain unhandled and blocking all subsequent drag/drop.\n // Re-throw anything else. See #641.\n animation.finished.catch((error: unknown) => {\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n throw error;\n }),\n );\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 (macroCondition(isDevelopingApp())) {\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\n // `offsetWidth` rounds to the nearest integer; summing rounded widths\n // across items can drift enough to break the grid direction's wrap check.\n let width = el.getBoundingClientRect().width;\n const elStyles = getComputedStyle(el);\n\n width += parseFloat(elStyles.marginLeft) + parseFloat(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\n // See `width` above for why this avoids the rounded `offsetHeight`.\n let height = el.getBoundingClientRect().height;\n const elStyles = getComputedStyle(el);\n const marginTop = parseFloat(elStyles.marginTop);\n const marginBottom = parseFloat(elStyles.marginBottom);\n\n // Adjacent margins only collapse (to their max) in normal block flow;\n // flex/grid parents (needed for `gap` support) keep both in full.\n const parentDisplay = el.parentElement && getComputedStyle(el.parentElement).display;\n\n if (parentDisplay === 'block') {\n height += Math.max(marginTop, marginBottom);\n } else {\n height += marginTop + marginBottom;\n }\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","service","s","inject","sortableItemWaiter","buildWaiter","SortableItemModifier","_dec","_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","macroCondition","isDevelopingApp","beginAsync","isAnimated","resolve","resolved","handler","duration","transitionDuration","later","finally","endAsync","animations","map","getAnimations","animationPromises","flatMap","animationList","animation","finished","catch","error","DOMException","name","commit","transitionProperty","items","rule","match","unit","elStyles","marginRight","getBorderSpacing","horizontal","marginTop","marginBottom","parentDisplay","display","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
|
+
{"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 { DRAG_ACTIONS, ELEMENT_CLICK_ACTION, END_ACTIONS } from '../utils/constant.ts';\nimport { run, throttle, bind, scheduleOnce, later } from '@ember/runloop';\nimport { macroCondition, isDevelopingApp } from '@embroider/macros';\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 * as s 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 service = s.service ?? s.inject;\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 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 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 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 if (!this.sortableGroup) return;\n\n this.sortableGroup.prepare();\n 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\n if (delta !== 0) {\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 this.isDragging = false;\n 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 (macroCondition(isDevelopingApp())) {\n waiterToken = sortableItemWaiter.beginAsync();\n }\n\n let transitionPromise;\n\n if (this.isAnimated) {\n transitionPromise = new Promise<void>((resolve) => {\n let resolved = false;\n\n const handler = () => {\n if (resolved) return;\n resolved = true;\n this.element.removeEventListener('transitionend', handler);\n resolve();\n };\n\n this.element.addEventListener('transitionend', handler);\n\n const duration = this.transitionDuration;\n\n // When transition is ended before we have added the event (found this issue already with 125ms), the dragging is blocked, since fully page refresh\n // To ensure that this would never happen, we need an later, to resolve the promise, when it wasn't resolved by transitionEnd\n // The duration addition with 200ms is just a choice (taken from else case), its just a way to let transitionend a little bit more time\n // Note: Unfortunately this issue is also not solvable with Element.getAnimations(), getAnimations brings no active animation at this point\n later(() => {\n handler();\n }, duration + 200);\n });\n } else {\n transitionPromise = new Promise((resolve) => later(resolve, 200));\n }\n\n if (macroCondition(isDevelopingApp())) {\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 (macroCondition(isDevelopingApp())) {\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.flatMap((animationList) => {\n return animationList.map((animation) =>\n // A cancelled animation (e.g. one interrupted by the re-render that\n // happens mid-drop) rejects `finished` with an AbortError. Treat it\n // as finished so the drop still completes, instead of leaving this\n // promise chain unhandled and blocking all subsequent drag/drop.\n // Re-throw anything else. See #641.\n animation.finished.catch((error: unknown) => {\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n throw error;\n }),\n );\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 (macroCondition(isDevelopingApp())) {\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 this.isDropping = false;\n 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\n // `offsetWidth` rounds to the nearest integer; summing rounded widths\n // across items can drift enough to break the grid direction's wrap check.\n let width = el.getBoundingClientRect().width;\n const elStyles = getComputedStyle(el);\n\n width += parseFloat(elStyles.marginLeft) + parseFloat(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\n // See `width` above for why this avoids the rounded `offsetHeight`.\n let height = el.getBoundingClientRect().height;\n const elStyles = getComputedStyle(el);\n const marginTop = parseFloat(elStyles.marginTop);\n const marginBottom = parseFloat(elStyles.marginBottom);\n\n // Adjacent margins only collapse (to their max) in normal block flow;\n // flex/grid parents (needed for `gap` support) keep both in full.\n const parentDisplay = el.parentElement && getComputedStyle(el.parentElement).display;\n\n if (parentDisplay === 'block') {\n height += Math.max(marginTop, marginBottom);\n } else {\n height += marginTop + marginBottom;\n }\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","service","s","inject","sortableItemWaiter","buildWaiter","SortableItemModifier","_dec","_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","freeze","el","style","transition","reset","_y","_x","transform","thaw","_primeDrag","startEvent","handleElement","target","closest","preventDefault","stopPropagation","_prepareDragListener","bind","_prepareDrag","DRAG_ACTIONS","forEach","event","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","_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","macroCondition","isDevelopingApp","beginAsync","isAnimated","resolve","resolved","handler","duration","transitionDuration","later","finally","endAsync","animations","map","getAnimations","animationPromises","flatMap","animationList","animation","finished","catch","error","DOMException","name","wasDropped","commit","transitionProperty","items","rule","match","unit","elStyles","marginRight","getBorderSpacing","horizontal","marginTop","marginBottom","parentDisplay","display","vertical","keyDown","mouseDown","touchStart","listenersRegistered","setupHandleElement","querySelector","touchAction","owner","args","_initializerDefineProperty","_descriptor","which","ctrlKey","activateKeyDown","deactivateKeyDown","registerDestructor","cleanup","modify","_positional","className","didSetup","dataset","registerItem","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","instance","deregisterItem"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers-a7bede49.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|