119 lines
3.1 KiB
JavaScript
119 lines
3.1 KiB
JavaScript
/**
|
|
* interact.js 1.10.27
|
|
*
|
|
* Copyright (c) 2012-present Taye Adeyemi <dev@taye.me>
|
|
* Released under the MIT License.
|
|
* https://raw.github.com/taye/interact.js/main/LICENSE
|
|
*/
|
|
|
|
import { Modification } from './Modification.js';
|
|
import "../utils/clone.js";
|
|
import "../utils/extend.js";
|
|
import "../utils/rect.js";
|
|
function makeModifier(module, name) {
|
|
const {
|
|
defaults
|
|
} = module;
|
|
const methods = {
|
|
start: module.start,
|
|
set: module.set,
|
|
beforeEnd: module.beforeEnd,
|
|
stop: module.stop
|
|
};
|
|
const modifier = _options => {
|
|
const options = _options || {};
|
|
options.enabled = options.enabled !== false;
|
|
|
|
// add missing defaults to options
|
|
for (const prop in defaults) {
|
|
if (!(prop in options)) {
|
|
options[prop] = defaults[prop];
|
|
}
|
|
}
|
|
const m = {
|
|
options,
|
|
methods,
|
|
name,
|
|
enable: () => {
|
|
options.enabled = true;
|
|
return m;
|
|
},
|
|
disable: () => {
|
|
options.enabled = false;
|
|
return m;
|
|
}
|
|
};
|
|
return m;
|
|
};
|
|
if (name && typeof name === 'string') {
|
|
// for backwrads compatibility
|
|
modifier._defaults = defaults;
|
|
modifier._methods = methods;
|
|
}
|
|
return modifier;
|
|
}
|
|
function addEventModifiers(_ref) {
|
|
let {
|
|
iEvent,
|
|
interaction
|
|
} = _ref;
|
|
const result = interaction.modification.result;
|
|
if (result) {
|
|
iEvent.modifiers = result.eventProps;
|
|
}
|
|
}
|
|
const modifiersBase = {
|
|
id: 'modifiers/base',
|
|
before: ['actions'],
|
|
install: scope => {
|
|
scope.defaults.perAction.modifiers = [];
|
|
},
|
|
listeners: {
|
|
'interactions:new': _ref2 => {
|
|
let {
|
|
interaction
|
|
} = _ref2;
|
|
interaction.modification = new Modification(interaction);
|
|
},
|
|
'interactions:before-action-start': arg => {
|
|
const {
|
|
interaction
|
|
} = arg;
|
|
const modification = arg.interaction.modification;
|
|
modification.start(arg, interaction.coords.start.page);
|
|
interaction.edges = modification.edges;
|
|
modification.applyToInteraction(arg);
|
|
},
|
|
'interactions:before-action-move': arg => {
|
|
const {
|
|
interaction
|
|
} = arg;
|
|
const {
|
|
modification
|
|
} = interaction;
|
|
const ret = modification.setAndApply(arg);
|
|
interaction.edges = modification.edges;
|
|
return ret;
|
|
},
|
|
'interactions:before-action-end': arg => {
|
|
const {
|
|
interaction
|
|
} = arg;
|
|
const {
|
|
modification
|
|
} = interaction;
|
|
const ret = modification.beforeEnd(arg);
|
|
interaction.edges = modification.startEdges;
|
|
return ret;
|
|
},
|
|
'interactions:action-start': addEventModifiers,
|
|
'interactions:action-move': addEventModifiers,
|
|
'interactions:action-end': addEventModifiers,
|
|
'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),
|
|
'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),
|
|
'interactions:stop': arg => arg.interaction.modification.stop(arg)
|
|
}
|
|
};
|
|
export { addEventModifiers, modifiersBase as default, makeModifier };
|
|
//# sourceMappingURL=base.js.map
|