nicecode-v2/packages/meta/lib/ImageEditor/utils.js
2024-01-10 15:15:12 +08:00

150 lines
4.4 KiB
JavaScript

var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/ImageEditor/utils.ts
var utils_exports = {};
__export(utils_exports, {
HAS_POINTER_EVENT: () => HAS_POINTER_EVENT,
IS_BROWSER: () => IS_BROWSER,
IS_TOUCH_DEVICE: () => IS_TOUCH_DEVICE,
Mixin: () => Mixin,
WINDOW: () => WINDOW,
dispatchEvent: () => dispatchEvent,
getData: () => getData,
getOffset: () => getOffset,
getPointer: () => getPointer,
getTransforms: () => getTransforms,
toParamCase: () => toParamCase,
toggleClass: () => toggleClass
});
module.exports = __toCommonJS(utils_exports);
var import_func = require("@zhst/func");
var import_class = require("rc-util/lib/Dom/class");
var IS_BROWSER = typeof window !== "undefined" && typeof window.document !== "undefined";
var WINDOW = IS_BROWSER ? window : {};
var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? "ontouchstart" in WINDOW.document.documentElement : false;
var HAS_POINTER_EVENT = IS_BROWSER ? "PointerEvent" in WINDOW : false;
function toHump(name) {
return name.replace(/\-(\w)/g, function(all, letter) {
return letter.toUpperCase();
});
}
var REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g;
function toParamCase(value) {
return value.replace(REGEXP_CAMEL_CASE, "$1-$2").toLowerCase();
}
function getData(element, name) {
if ((0, import_func.isObject)(element[name])) {
return element[name];
}
if (element.dataset) {
return element.dataset[toHump(name)];
}
return element.getAttribute(`data-${toParamCase(name)}`);
}
function toggleClass(node, className) {
if ((0, import_class.hasClass)(node, className)) {
(0, import_class.addClass)(node, className);
} else {
(0, import_class.removeClass)(node, className);
}
}
function getPointer({ pageX, pageY }, endOnly) {
const end = {
endX: pageX,
endY: pageY
};
return endOnly ? end : {
startX: pageX,
startY: pageY,
...end
};
}
function getOffset(element) {
const box = element.getBoundingClientRect();
return {
left: box.left + (window.pageXOffset - document.documentElement.clientLeft),
top: box.top + (window.pageYOffset - document.documentElement.clientTop)
};
}
function getTransforms({
rotate,
scaleX,
scaleY,
translateX,
translateY
}) {
const values = [];
if ((0, import_func.isNumber)(translateX) && translateX !== 0) {
values.push(`translateX(${translateX}px)`);
}
if ((0, import_func.isNumber)(translateY) && translateY !== 0) {
values.push(`translateY(${translateY}px)`);
}
if ((0, import_func.isNumber)(rotate) && rotate !== 0) {
values.push(`rotate(${rotate}deg)`);
}
if ((0, import_func.isNumber)(scaleX) && scaleX !== 1) {
values.push(`scaleX(${scaleX})`);
}
if ((0, import_func.isNumber)(scaleY) && scaleY !== 1) {
values.push(`scaleY(${scaleY})`);
}
const transform = values.length ? values.join(" ") : "none";
return {
WebkitTransform: transform,
msTransform: transform,
transform
};
}
function Mixin(...srcs) {
return (target) => {
(0, import_func.assign)(target.prototype, ...srcs);
return target;
};
}
function dispatchEvent(element, type, data) {
let event;
if ((0, import_func.isFunction)(Event) && (0, import_func.isFunction)(CustomEvent)) {
event = new CustomEvent(type, {
detail: data,
bubbles: true,
cancelable: true
});
} else {
event = document.createEvent("CustomEvent");
event.initCustomEvent(type, true, true, data);
}
return element.dispatchEvent(event);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
HAS_POINTER_EVENT,
IS_BROWSER,
IS_TOUCH_DEVICE,
Mixin,
WINDOW,
dispatchEvent,
getData,
getOffset,
getPointer,
getTransforms,
toParamCase,
toggleClass
});