@codingfactory/mediables-vue 2.19.0 → 2.19.2
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/dist/{PixiFrameExporter-CL1sPbnw.js → PixiFrameExporter-CRe8z6ua.js} +2 -2
- package/dist/{PixiFrameExporter-CL1sPbnw.js.map → PixiFrameExporter-CRe8z6ua.js.map} +1 -1
- package/dist/{PixiFrameExporter-nFehBjPQ.cjs → PixiFrameExporter-R6iQjzVw.cjs} +2 -2
- package/dist/{PixiFrameExporter-nFehBjPQ.cjs.map → PixiFrameExporter-R6iQjzVw.cjs.map} +1 -1
- package/dist/components/MediaFilterChips.vue.d.ts +10 -0
- package/dist/components/MediaInspectorPanel.vue.d.ts +13 -0
- package/dist/components/MediaLibraryShell.vue.d.ts +21 -0
- package/dist/components/MediaManagementView.vue.d.ts +1 -0
- package/dist/components/MediaTrashWorkspace.vue.d.ts +5 -0
- package/dist/composables/useMediaDeletion.d.ts +20 -0
- package/dist/composables/useMediaLibraryVisibility.d.ts +37 -0
- package/dist/composables/useMediaMetadata.d.ts +24 -0
- package/dist/editor-BQ_nY4P6.js +4302 -0
- package/dist/editor-BQ_nY4P6.js.map +1 -0
- package/dist/editor-CUV1pIsV.cjs +2 -0
- package/dist/editor-CUV1pIsV.cjs.map +1 -0
- package/dist/imageEditorState-BNQEZoCF.js +81 -0
- package/dist/imageEditorState-BNQEZoCF.js.map +1 -0
- package/dist/imageEditorState-PrcqbsfM.cjs +2 -0
- package/dist/imageEditorState-PrcqbsfM.cjs.map +1 -0
- package/dist/{index-BR0szJau.js → index-B8LxZ37n.js} +16860 -15559
- package/dist/index-B8LxZ37n.js.map +1 -0
- package/dist/index-Dae8SHT7.js +6557 -0
- package/dist/index-Dae8SHT7.js.map +1 -0
- package/dist/index-DutUeSES.cjs +357 -0
- package/dist/index-DutUeSES.cjs.map +1 -0
- package/dist/index-QOKC8XA_.cjs +2 -0
- package/dist/index-QOKC8XA_.cjs.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/mediables-primitives.cjs +2 -0
- package/dist/mediables-primitives.cjs.map +1 -0
- package/dist/mediables-primitives.mjs +21 -0
- package/dist/mediables-primitives.mjs.map +1 -0
- package/dist/mediables-vanilla.cjs +1 -1
- package/dist/mediables-vanilla.mjs +8 -7
- package/dist/mediables-vanilla.mjs.map +1 -1
- package/dist/mediables-vue.cjs +1 -1
- package/dist/mediables-vue.mjs +74 -70
- package/dist/mediables-vue.mjs.map +1 -1
- package/dist/primitives-exports.d.ts +37 -0
- package/dist/style.css +1 -1
- package/dist/types/media.d.ts +2 -0
- package/dist/types/mediaLibraryPicker.d.ts +5 -0
- package/dist/utils/focus.d.ts +4 -0
- package/dist/vanilla-editor/core/EventEmitter.d.ts +8 -8
- package/dist/vanilla-editor/core/State.d.ts +441 -95
- package/package.json +8 -2
- package/dist/editor-D85y_zTO.cjs +0 -2
- package/dist/editor-D85y_zTO.cjs.map +0 -1
- package/dist/editor-DAJxTvzM.js +0 -10873
- package/dist/editor-DAJxTvzM.js.map +0 -1
- package/dist/index-BR0szJau.js.map +0 -1
- package/dist/index-CKYVSPfs.cjs +0 -357
- package/dist/index-CKYVSPfs.cjs.map +0 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const m = /* @__PURE__ */ new Set(["free", "square", "circle"]);
|
|
2
|
+
function E(e) {
|
|
3
|
+
if (typeof e != "number" || !Number.isFinite(e)) return 0;
|
|
4
|
+
const t = e % 360;
|
|
5
|
+
return t < 0 ? t + 360 : t;
|
|
6
|
+
}
|
|
7
|
+
function S(e) {
|
|
8
|
+
const t = typeof e;
|
|
9
|
+
return t === "string" || t === "number" || t === "boolean";
|
|
10
|
+
}
|
|
11
|
+
function h(e) {
|
|
12
|
+
if (!e || typeof e != "object") return !1;
|
|
13
|
+
const t = e;
|
|
14
|
+
return typeof t.x == "number" && typeof t.y == "number" && typeof t.width == "number" && typeof t.height == "number";
|
|
15
|
+
}
|
|
16
|
+
function p(e) {
|
|
17
|
+
if (!e || typeof e != "object") return null;
|
|
18
|
+
const t = e;
|
|
19
|
+
if (t.version !== 1) return null;
|
|
20
|
+
const r = t.crop, l = r && h(r.rect) ? { ...r.rect } : null, y = r && typeof r.shape == "string" && m.has(r.shape) ? r.shape : "free", R = r && typeof r.aspectRatio == "string" ? r.aspectRatio : "free", i = t.transform, d = E(i == null ? void 0 : i.rotation), c = t.filters, a = [];
|
|
21
|
+
if (Array.isArray(c))
|
|
22
|
+
for (const s of c) {
|
|
23
|
+
if (!s || typeof s != "object") continue;
|
|
24
|
+
const n = s;
|
|
25
|
+
if (typeof n.id != "string") continue;
|
|
26
|
+
const f = {}, o = n.values;
|
|
27
|
+
if (o && typeof o == "object" && !Array.isArray(o))
|
|
28
|
+
for (const [b, u] of Object.entries(o))
|
|
29
|
+
S(u) && (f[b] = u);
|
|
30
|
+
a.push({
|
|
31
|
+
id: n.id,
|
|
32
|
+
enabled: n.enabled !== !1,
|
|
33
|
+
values: f
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
version: 1,
|
|
38
|
+
crop: {
|
|
39
|
+
rect: l,
|
|
40
|
+
aspectRatio: R,
|
|
41
|
+
shape: y
|
|
42
|
+
},
|
|
43
|
+
transform: {
|
|
44
|
+
rotation: d
|
|
45
|
+
},
|
|
46
|
+
filters: a
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function N(e) {
|
|
50
|
+
const t = p(e);
|
|
51
|
+
return t ? JSON.stringify(t) : null;
|
|
52
|
+
}
|
|
53
|
+
function A(e) {
|
|
54
|
+
try {
|
|
55
|
+
const t = JSON.parse(e);
|
|
56
|
+
return p(t);
|
|
57
|
+
} catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function O() {
|
|
62
|
+
return {
|
|
63
|
+
version: 1,
|
|
64
|
+
crop: {
|
|
65
|
+
rect: null,
|
|
66
|
+
aspectRatio: "free",
|
|
67
|
+
shape: "free"
|
|
68
|
+
},
|
|
69
|
+
transform: {
|
|
70
|
+
rotation: 0
|
|
71
|
+
},
|
|
72
|
+
filters: []
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
O as c,
|
|
77
|
+
A as d,
|
|
78
|
+
p as n,
|
|
79
|
+
N as s
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=imageEditorState-BNQEZoCF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageEditorState-BNQEZoCF.js","sources":["../resources/js/utils/imageEditorState.ts"],"sourcesContent":["/**\n * Canonical Image Editor State normalizer/serializer.\n * Single source of truth for converting between internal editor state\n * and the canonical ImageEditorSessionState persistence format.\n */\nimport type {\n ImageEditorSessionState,\n ImageEditorFilterState,\n ImageEditorPrimitive,\n CropRect,\n} from '../types/editor';\n\nconst CURRENT_VERSION = 1 as const;\n\nconst VALID_SHAPES = new Set(['free', 'square', 'circle']);\n\nfunction normalizeRotation(value: unknown): number {\n if (typeof value !== 'number' || !Number.isFinite(value)) return 0;\n const normalized = value % 360;\n return normalized < 0 ? normalized + 360 : normalized;\n}\n\n/**\n * Validate that a value is an ImageEditorPrimitive.\n */\nfunction isPrimitive(value: unknown): value is ImageEditorPrimitive {\n const t = typeof value;\n return t === 'string' || t === 'number' || t === 'boolean';\n}\n\n/**\n * Validate a CropRect-like object.\n */\nfunction isValidCropRect(rect: unknown): rect is CropRect {\n if (!rect || typeof rect !== 'object') return false;\n const r = rect as Record<string, unknown>;\n return (\n typeof r['x'] === 'number' &&\n typeof r['y'] === 'number' &&\n typeof r['width'] === 'number' &&\n typeof r['height'] === 'number'\n );\n}\n\n/**\n * Normalize and validate an ImageEditorSessionState object.\n * Strips invalid data and returns a clean, safe-to-persist state.\n * Returns null if the input is fundamentally invalid.\n */\nexport function normalizeEditorState(\n raw: unknown\n): ImageEditorSessionState | null {\n if (!raw || typeof raw !== 'object') return null;\n\n const input = raw as Record<string, unknown>;\n\n // Version check\n if (input['version'] !== CURRENT_VERSION) return null;\n\n // Normalize crop\n const rawCrop = input['crop'] as Record<string, unknown> | undefined;\n const cropRect = rawCrop && isValidCropRect(rawCrop['rect'])\n ? { ...rawCrop['rect'] as CropRect }\n : null;\n const cropShape = rawCrop && typeof rawCrop['shape'] === 'string' && VALID_SHAPES.has(rawCrop['shape'])\n ? rawCrop['shape'] as 'free' | 'square' | 'circle'\n : 'free';\n const cropAspectRatio = rawCrop && typeof rawCrop['aspectRatio'] === 'string'\n ? rawCrop['aspectRatio']\n : 'free';\n\n const rawTransform = input['transform'] as Record<string, unknown> | undefined;\n const rotation = normalizeRotation(rawTransform?.['rotation']);\n\n // Normalize filters\n const rawFilters = input['filters'];\n const filters: ImageEditorFilterState[] = [];\n\n if (Array.isArray(rawFilters)) {\n for (const rawFilter of rawFilters) {\n if (!rawFilter || typeof rawFilter !== 'object') continue;\n const f = rawFilter as Record<string, unknown>;\n\n if (typeof f['id'] !== 'string') continue;\n\n const values: Record<string, ImageEditorPrimitive> = {};\n const rawValues = f['values'];\n if (rawValues && typeof rawValues === 'object' && !Array.isArray(rawValues)) {\n for (const [key, val] of Object.entries(rawValues as Record<string, unknown>)) {\n if (isPrimitive(val)) {\n values[key] = val;\n }\n }\n }\n\n filters.push({\n id: f['id'] as string,\n enabled: f['enabled'] !== false,\n values,\n });\n }\n }\n\n return {\n version: CURRENT_VERSION,\n crop: {\n rect: cropRect,\n aspectRatio: cropAspectRatio,\n shape: cropShape,\n },\n transform: {\n rotation,\n },\n filters,\n };\n}\n\n/**\n * Serialize an ImageEditorSessionState to a JSON string.\n * Normalizes first to ensure only valid data is serialized.\n */\nexport function serializeEditorState(\n state: ImageEditorSessionState\n): string | null {\n const normalized = normalizeEditorState(state);\n if (!normalized) return null;\n return JSON.stringify(normalized);\n}\n\n/**\n * Deserialize a JSON string to an ImageEditorSessionState.\n * Returns null if the JSON is invalid or doesn't pass validation.\n */\nexport function deserializeEditorState(\n json: string\n): ImageEditorSessionState | null {\n try {\n const parsed: unknown = JSON.parse(json);\n return normalizeEditorState(parsed);\n } catch {\n return null;\n }\n}\n\n/**\n * Create an empty default ImageEditorSessionState.\n */\nexport function createEmptyEditorState(): ImageEditorSessionState {\n return {\n version: CURRENT_VERSION,\n crop: {\n rect: null,\n aspectRatio: 'free',\n shape: 'free',\n },\n transform: {\n rotation: 0,\n },\n filters: [],\n };\n}\n"],"names":["VALID_SHAPES","normalizeRotation","value","normalized","isPrimitive","isValidCropRect","rect","r","normalizeEditorState","raw","input","rawCrop","cropRect","cropShape","cropAspectRatio","rawTransform","rotation","rawFilters","filters","rawFilter","f","values","rawValues","key","val","serializeEditorState","state","deserializeEditorState","json","parsed","createEmptyEditorState"],"mappings":"AAcA,MAAMA,IAAe,oBAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,CAAC;AAEzD,SAASC,EAAkBC,GAAwB;AACjD,MAAI,OAAOA,KAAU,YAAY,CAAC,OAAO,SAASA,CAAK,EAAG,QAAO;AACjE,QAAMC,IAAaD,IAAQ;AAC3B,SAAOC,IAAa,IAAIA,IAAa,MAAMA;AAC7C;AAKA,SAASC,EAAYF,GAA+C;AAClE,QAAM,IAAI,OAAOA;AACjB,SAAO,MAAM,YAAY,MAAM,YAAY,MAAM;AACnD;AAKA,SAASG,EAAgBC,GAAiC;AACxD,MAAI,CAACA,KAAQ,OAAOA,KAAS,SAAU,QAAO;AAC9C,QAAMC,IAAID;AACV,SACE,OAAOC,EAAE,KAAS,YAClB,OAAOA,EAAE,KAAS,YAClB,OAAOA,EAAE,SAAa,YACtB,OAAOA,EAAE,UAAc;AAE3B;AAOO,SAASC,EACdC,GACgC;AAChC,MAAI,CAACA,KAAO,OAAOA,KAAQ,SAAU,QAAO;AAE5C,QAAMC,IAAQD;AAGd,MAAIC,EAAM,YAAe,EAAiB,QAAO;AAGjD,QAAMC,IAAUD,EAAM,MAChBE,IAAWD,KAAWN,EAAgBM,EAAQ,IAAO,IACvD,EAAE,GAAGA,EAAQ,KAAM,IACnB,MACEE,IAAYF,KAAW,OAAOA,EAAQ,SAAa,YAAYX,EAAa,IAAIW,EAAQ,KAAQ,IAClGA,EAAQ,QACR,QACEG,IAAkBH,KAAW,OAAOA,EAAQ,eAAmB,WACjEA,EAAQ,cACR,QAEEI,IAAeL,EAAM,WACrBM,IAAWf,EAAkBc,KAAA,gBAAAA,EAAe,QAAW,GAGvDE,IAAaP,EAAM,SACnBQ,IAAoC,CAAA;AAE1C,MAAI,MAAM,QAAQD,CAAU;AAC1B,eAAWE,KAAaF,GAAY;AAClC,UAAI,CAACE,KAAa,OAAOA,KAAc,SAAU;AACjD,YAAMC,IAAID;AAEV,UAAI,OAAOC,EAAE,MAAU,SAAU;AAEjC,YAAMC,IAA+C,CAAA,GAC/CC,IAAYF,EAAE;AACpB,UAAIE,KAAa,OAAOA,KAAc,YAAY,CAAC,MAAM,QAAQA,CAAS;AACxE,mBAAW,CAACC,GAAKC,CAAG,KAAK,OAAO,QAAQF,CAAoC;AAC1E,UAAIlB,EAAYoB,CAAG,MACjBH,EAAOE,CAAG,IAAIC;AAKpB,MAAAN,EAAQ,KAAK;AAAA,QACX,IAAIE,EAAE;AAAA,QACN,SAASA,EAAE,YAAe;AAAA,QAC1B,QAAAC;AAAA,MAAA,CACD;AAAA,IACH;AAGF,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,MAAMT;AAAA,MACN,aAAaE;AAAA,MACb,OAAOD;AAAA,IAAA;AAAA,IAET,WAAW;AAAA,MACT,UAAAG;AAAA,IAAA;AAAA,IAEF,SAAAE;AAAA,EAAA;AAEJ;AAMO,SAASO,EACdC,GACe;AACf,QAAMvB,IAAaK,EAAqBkB,CAAK;AAC7C,SAAKvB,IACE,KAAK,UAAUA,CAAU,IADR;AAE1B;AAMO,SAASwB,EACdC,GACgC;AAChC,MAAI;AACF,UAAMC,IAAkB,KAAK,MAAMD,CAAI;AACvC,WAAOpB,EAAqBqB,CAAM;AAAA,EACpC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAKO,SAASC,IAAkD;AAChE,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa;AAAA,MACb,OAAO;AAAA,IAAA;AAAA,IAET,WAAW;AAAA,MACT,UAAU;AAAA,IAAA;AAAA,IAEZ,SAAS,CAAA;AAAA,EAAC;AAEd;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const S=new Set(["free","square","circle"]);function m(e){if(typeof e!="number"||!Number.isFinite(e))return 0;const t=e%360;return t<0?t+360:t}function b(e){const t=typeof e;return t==="string"||t==="number"||t==="boolean"}function h(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.x=="number"&&typeof t.y=="number"&&typeof t.width=="number"&&typeof t.height=="number"}function a(e){if(!e||typeof e!="object")return null;const t=e;if(t.version!==1)return null;const r=t.crop,l=r&&h(r.rect)?{...r.rect}:null,y=r&&typeof r.shape=="string"&&S.has(r.shape)?r.shape:"free",d=r&&typeof r.aspectRatio=="string"?r.aspectRatio:"free",i=t.transform,R=m(i==null?void 0:i.rotation),c=t.filters,f=[];if(Array.isArray(c))for(const s of c){if(!s||typeof s!="object")continue;const o=s;if(typeof o.id!="string")continue;const u={},n=o.values;if(n&&typeof n=="object"&&!Array.isArray(n))for(const[E,p]of Object.entries(n))b(p)&&(u[E]=p);f.push({id:o.id,enabled:o.enabled!==!1,values:u})}return{version:1,crop:{rect:l,aspectRatio:d,shape:y},transform:{rotation:R},filters:f}}function N(e){const t=a(e);return t?JSON.stringify(t):null}function z(e){try{const t=JSON.parse(e);return a(t)}catch{return null}}function A(){return{version:1,crop:{rect:null,aspectRatio:"free",shape:"free"},transform:{rotation:0},filters:[]}}exports.createEmptyEditorState=A;exports.deserializeEditorState=z;exports.normalizeEditorState=a;exports.serializeEditorState=N;
|
|
2
|
+
//# sourceMappingURL=imageEditorState-PrcqbsfM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageEditorState-PrcqbsfM.cjs","sources":["../resources/js/utils/imageEditorState.ts"],"sourcesContent":["/**\n * Canonical Image Editor State normalizer/serializer.\n * Single source of truth for converting between internal editor state\n * and the canonical ImageEditorSessionState persistence format.\n */\nimport type {\n ImageEditorSessionState,\n ImageEditorFilterState,\n ImageEditorPrimitive,\n CropRect,\n} from '../types/editor';\n\nconst CURRENT_VERSION = 1 as const;\n\nconst VALID_SHAPES = new Set(['free', 'square', 'circle']);\n\nfunction normalizeRotation(value: unknown): number {\n if (typeof value !== 'number' || !Number.isFinite(value)) return 0;\n const normalized = value % 360;\n return normalized < 0 ? normalized + 360 : normalized;\n}\n\n/**\n * Validate that a value is an ImageEditorPrimitive.\n */\nfunction isPrimitive(value: unknown): value is ImageEditorPrimitive {\n const t = typeof value;\n return t === 'string' || t === 'number' || t === 'boolean';\n}\n\n/**\n * Validate a CropRect-like object.\n */\nfunction isValidCropRect(rect: unknown): rect is CropRect {\n if (!rect || typeof rect !== 'object') return false;\n const r = rect as Record<string, unknown>;\n return (\n typeof r['x'] === 'number' &&\n typeof r['y'] === 'number' &&\n typeof r['width'] === 'number' &&\n typeof r['height'] === 'number'\n );\n}\n\n/**\n * Normalize and validate an ImageEditorSessionState object.\n * Strips invalid data and returns a clean, safe-to-persist state.\n * Returns null if the input is fundamentally invalid.\n */\nexport function normalizeEditorState(\n raw: unknown\n): ImageEditorSessionState | null {\n if (!raw || typeof raw !== 'object') return null;\n\n const input = raw as Record<string, unknown>;\n\n // Version check\n if (input['version'] !== CURRENT_VERSION) return null;\n\n // Normalize crop\n const rawCrop = input['crop'] as Record<string, unknown> | undefined;\n const cropRect = rawCrop && isValidCropRect(rawCrop['rect'])\n ? { ...rawCrop['rect'] as CropRect }\n : null;\n const cropShape = rawCrop && typeof rawCrop['shape'] === 'string' && VALID_SHAPES.has(rawCrop['shape'])\n ? rawCrop['shape'] as 'free' | 'square' | 'circle'\n : 'free';\n const cropAspectRatio = rawCrop && typeof rawCrop['aspectRatio'] === 'string'\n ? rawCrop['aspectRatio']\n : 'free';\n\n const rawTransform = input['transform'] as Record<string, unknown> | undefined;\n const rotation = normalizeRotation(rawTransform?.['rotation']);\n\n // Normalize filters\n const rawFilters = input['filters'];\n const filters: ImageEditorFilterState[] = [];\n\n if (Array.isArray(rawFilters)) {\n for (const rawFilter of rawFilters) {\n if (!rawFilter || typeof rawFilter !== 'object') continue;\n const f = rawFilter as Record<string, unknown>;\n\n if (typeof f['id'] !== 'string') continue;\n\n const values: Record<string, ImageEditorPrimitive> = {};\n const rawValues = f['values'];\n if (rawValues && typeof rawValues === 'object' && !Array.isArray(rawValues)) {\n for (const [key, val] of Object.entries(rawValues as Record<string, unknown>)) {\n if (isPrimitive(val)) {\n values[key] = val;\n }\n }\n }\n\n filters.push({\n id: f['id'] as string,\n enabled: f['enabled'] !== false,\n values,\n });\n }\n }\n\n return {\n version: CURRENT_VERSION,\n crop: {\n rect: cropRect,\n aspectRatio: cropAspectRatio,\n shape: cropShape,\n },\n transform: {\n rotation,\n },\n filters,\n };\n}\n\n/**\n * Serialize an ImageEditorSessionState to a JSON string.\n * Normalizes first to ensure only valid data is serialized.\n */\nexport function serializeEditorState(\n state: ImageEditorSessionState\n): string | null {\n const normalized = normalizeEditorState(state);\n if (!normalized) return null;\n return JSON.stringify(normalized);\n}\n\n/**\n * Deserialize a JSON string to an ImageEditorSessionState.\n * Returns null if the JSON is invalid or doesn't pass validation.\n */\nexport function deserializeEditorState(\n json: string\n): ImageEditorSessionState | null {\n try {\n const parsed: unknown = JSON.parse(json);\n return normalizeEditorState(parsed);\n } catch {\n return null;\n }\n}\n\n/**\n * Create an empty default ImageEditorSessionState.\n */\nexport function createEmptyEditorState(): ImageEditorSessionState {\n return {\n version: CURRENT_VERSION,\n crop: {\n rect: null,\n aspectRatio: 'free',\n shape: 'free',\n },\n transform: {\n rotation: 0,\n },\n filters: [],\n };\n}\n"],"names":["VALID_SHAPES","normalizeRotation","value","normalized","isPrimitive","isValidCropRect","rect","r","normalizeEditorState","raw","input","rawCrop","cropRect","cropShape","cropAspectRatio","rawTransform","rotation","rawFilters","filters","rawFilter","f","values","rawValues","key","val","serializeEditorState","state","deserializeEditorState","json","parsed","createEmptyEditorState"],"mappings":"aAcA,MAAMA,EAAe,IAAI,IAAI,CAAC,OAAQ,SAAU,QAAQ,CAAC,EAEzD,SAASC,EAAkBC,EAAwB,CACjD,GAAI,OAAOA,GAAU,UAAY,CAAC,OAAO,SAASA,CAAK,EAAG,MAAO,GACjE,MAAMC,EAAaD,EAAQ,IAC3B,OAAOC,EAAa,EAAIA,EAAa,IAAMA,CAC7C,CAKA,SAASC,EAAYF,EAA+C,CAClE,MAAM,EAAI,OAAOA,EACjB,OAAO,IAAM,UAAY,IAAM,UAAY,IAAM,SACnD,CAKA,SAASG,EAAgBC,EAAiC,CACxD,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAAU,MAAO,GAC9C,MAAMC,EAAID,EACV,OACE,OAAOC,EAAE,GAAS,UAClB,OAAOA,EAAE,GAAS,UAClB,OAAOA,EAAE,OAAa,UACtB,OAAOA,EAAE,QAAc,QAE3B,CAOO,SAASC,EACdC,EACgC,CAChC,GAAI,CAACA,GAAO,OAAOA,GAAQ,SAAU,OAAO,KAE5C,MAAMC,EAAQD,EAGd,GAAIC,EAAM,UAAe,EAAiB,OAAO,KAGjD,MAAMC,EAAUD,EAAM,KAChBE,EAAWD,GAAWN,EAAgBM,EAAQ,IAAO,EACvD,CAAE,GAAGA,EAAQ,IAAM,EACnB,KACEE,EAAYF,GAAW,OAAOA,EAAQ,OAAa,UAAYX,EAAa,IAAIW,EAAQ,KAAQ,EAClGA,EAAQ,MACR,OACEG,EAAkBH,GAAW,OAAOA,EAAQ,aAAmB,SACjEA,EAAQ,YACR,OAEEI,EAAeL,EAAM,UACrBM,EAAWf,EAAkBc,GAAA,YAAAA,EAAe,QAAW,EAGvDE,EAAaP,EAAM,QACnBQ,EAAoC,CAAA,EAE1C,GAAI,MAAM,QAAQD,CAAU,EAC1B,UAAWE,KAAaF,EAAY,CAClC,GAAI,CAACE,GAAa,OAAOA,GAAc,SAAU,SACjD,MAAMC,EAAID,EAEV,GAAI,OAAOC,EAAE,IAAU,SAAU,SAEjC,MAAMC,EAA+C,CAAA,EAC/CC,EAAYF,EAAE,OACpB,GAAIE,GAAa,OAAOA,GAAc,UAAY,CAAC,MAAM,QAAQA,CAAS,EACxE,SAAW,CAACC,EAAKC,CAAG,IAAK,OAAO,QAAQF,CAAoC,EACtElB,EAAYoB,CAAG,IACjBH,EAAOE,CAAG,EAAIC,GAKpBN,EAAQ,KAAK,CACX,GAAIE,EAAE,GACN,QAASA,EAAE,UAAe,GAC1B,OAAAC,CAAA,CACD,CACH,CAGF,MAAO,CACL,QAAS,EACT,KAAM,CACJ,KAAMT,EACN,YAAaE,EACb,MAAOD,CAAA,EAET,UAAW,CACT,SAAAG,CAAA,EAEF,QAAAE,CAAA,CAEJ,CAMO,SAASO,EACdC,EACe,CACf,MAAMvB,EAAaK,EAAqBkB,CAAK,EAC7C,OAAKvB,EACE,KAAK,UAAUA,CAAU,EADR,IAE1B,CAMO,SAASwB,EACdC,EACgC,CAChC,GAAI,CACF,MAAMC,EAAkB,KAAK,MAAMD,CAAI,EACvC,OAAOpB,EAAqBqB,CAAM,CACpC,MAAQ,CACN,OAAO,IACT,CACF,CAKO,SAASC,GAAkD,CAChE,MAAO,CACL,QAAS,EACT,KAAM,CACJ,KAAM,KACN,YAAa,OACb,MAAO,MAAA,EAET,UAAW,CACT,SAAU,CAAA,EAEZ,QAAS,CAAA,CAAC,CAEd"}
|