diff options
author | Mario <mario@mariovavti.com> | 2021-09-08 07:43:40 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2021-09-08 07:43:40 +0000 |
commit | 4c5f0a05c75cc66113f589a3ffe6df351abb1273 (patch) | |
tree | 15148d08a99f8375992e554a90e6d4333286a7cc /library/Sortable/src/EventDispatcher.js | |
parent | 952407363e245d41986cfb90e4ccf509bddc7322 (diff) | |
parent | 977a55eb8423745e4d88257b704d3e36f7337b9f (diff) | |
download | volse-hubzilla-6.2.tar.gz volse-hubzilla-6.2.tar.bz2 volse-hubzilla-6.2.zip |
Merge branch '6.2RC'6.2
Diffstat (limited to 'library/Sortable/src/EventDispatcher.js')
-rw-r--r-- | library/Sortable/src/EventDispatcher.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/library/Sortable/src/EventDispatcher.js b/library/Sortable/src/EventDispatcher.js new file mode 100644 index 000000000..e47cb5809 --- /dev/null +++ b/library/Sortable/src/EventDispatcher.js @@ -0,0 +1,57 @@ +import { IE11OrLess, Edge } from './BrowserInfo.js'; +import { expando } from './utils.js'; +import PluginManager from './PluginManager.js'; + +export default function dispatchEvent( + { + sortable, rootEl, name, + targetEl, cloneEl, toEl, fromEl, + oldIndex, newIndex, + oldDraggableIndex, newDraggableIndex, + originalEvent, putSortable, extraEventProperties + } +) { + sortable = (sortable || (rootEl && rootEl[expando])); + if (!sortable) return; + + let evt, + options = sortable.options, + onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); + // Support for new CustomEvent feature + if (window.CustomEvent && !IE11OrLess && !Edge) { + evt = new CustomEvent(name, { + bubbles: true, + cancelable: true + }); + } else { + evt = document.createEvent('Event'); + evt.initEvent(name, true, true); + } + + evt.to = toEl || rootEl; + evt.from = fromEl || rootEl; + evt.item = targetEl || rootEl; + evt.clone = cloneEl; + + evt.oldIndex = oldIndex; + evt.newIndex = newIndex; + + evt.oldDraggableIndex = oldDraggableIndex; + evt.newDraggableIndex = newDraggableIndex; + + evt.originalEvent = originalEvent; + evt.pullMode = putSortable ? putSortable.lastPutMode : undefined; + + let allEventProperties = { ...extraEventProperties, ...PluginManager.getEventProperties(name, sortable) }; + for (let option in allEventProperties) { + evt[option] = allEventProperties[option]; + } + + if (rootEl) { + rootEl.dispatchEvent(evt); + } + + if (options[onName]) { + options[onName].call(sortable, evt); + } +} |