django-vue3-admin-web/node_modules/@interactjs/dev-tools/plugin.js
2025-10-20 21:21:14 +08:00

148 lines
4.6 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 domObjects from "../utils/domObjects.js";
import { parentNode } from "../utils/domUtils.js";
import extend from "../utils/extend.js";
import is from "../utils/is.js";
import isNonNativeEvent from "../utils/isNonNativeEvent.js";
import normalizeListeners from "../utils/normalizeListeners.js";
import * as win from "../utils/window.js";
var CheckName = /*#__PURE__*/function (CheckName) {
CheckName["touchAction"] = "touchAction";
CheckName["boxSizing"] = "boxSizing";
CheckName["noListeners"] = "noListeners";
return CheckName;
}(CheckName || {});
const prefix = '[interact.js] ';
const links = {
touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',
boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'
};
function install(scope) {
let {
logger
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
const {
Interactable,
defaults
} = scope;
scope.logger = logger || console;
defaults.base.devTools = {
ignore: {}
};
Interactable.prototype.devTools = function (options) {
if (options) {
extend(this.options.devTools, options);
return this;
}
return this.options.devTools;
};
// can't set native events on non string targets without `addEventListener` prop
const {
_onOff
} = Interactable.prototype;
Interactable.prototype._onOff = function (method, typeArg, listenerArg, options, filter) {
if (is.string(this.target) || this.target.addEventListener) {
return _onOff.call(this, method, typeArg, listenerArg, options, filter);
}
if (is.object(typeArg) && !is.array(typeArg)) {
options = listenerArg;
listenerArg = null;
}
const normalizedListeners = normalizeListeners(typeArg, listenerArg, filter);
for (const type in normalizedListeners) {
if (isNonNativeEvent(type, scope.actions)) continue;
scope.logger.warn(prefix + `Can't add native "${type}" event listener to target without \`addEventListener(type, listener, options)\` prop.`);
}
return _onOff.call(this, method, normalizedListeners, options);
};
}
const checks = [{
name: CheckName.touchAction,
perform(_ref) {
let {
element
} = _ref;
return !!element && !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);
},
getInfo(_ref2) {
let {
element
} = _ref2;
return [element, links.touchAction];
},
text: 'Consider adding CSS "touch-action: none" to this element\n'
}, {
name: CheckName.boxSizing,
perform(interaction) {
const {
element
} = interaction;
return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);
},
text: 'Consider adding CSS "box-sizing: border-box" to this resizable element',
getInfo(_ref3) {
let {
element
} = _ref3;
return [element, links.boxSizing];
}
}, {
name: CheckName.noListeners,
perform(interaction) {
var _interaction$interact;
const actionName = interaction.prepared.name;
const moveListeners = ((_interaction$interact = interaction.interactable) == null ? void 0 : _interaction$interact.events.types[`${actionName}move`]) || [];
return !moveListeners.length;
},
getInfo(interaction) {
return [interaction.prepared.name, interaction.interactable];
},
text: 'There are no listeners set for this action'
}];
function hasStyle(element, prop, styleRe) {
const value = element.style[prop] || win.window.getComputedStyle(element)[prop];
return styleRe.test((value || '').toString());
}
function parentHasStyle(element, prop, styleRe) {
let parent = element;
while (is.element(parent)) {
if (hasStyle(parent, prop, styleRe)) {
return true;
}
parent = parentNode(parent);
}
return false;
}
const id = 'dev-tools';
const defaultExport = {
id,
install,
listeners: {
'interactions:action-start': (_ref4, scope) => {
let {
interaction
} = _ref4;
for (const check of checks) {
const options = interaction.interactable && interaction.interactable.options;
if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {
scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));
}
}
}
},
checks,
CheckName,
links,
prefix
};
export { defaultExport as default };
//# sourceMappingURL=plugin.js.map