drp-imagesdk 2.0.0
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/LICENSE +21 -0
- package/README.md +665 -0
- package/dist/adjustments.d.ts +3 -0
- package/dist/adjustments.d.ts.map +1 -0
- package/dist/adjustments.js +57 -0
- package/dist/adjustments.js.map +1 -0
- package/dist/batch.d.ts +27 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +99 -0
- package/dist/batch.js.map +1 -0
- package/dist/compress.d.ts +11 -0
- package/dist/compress.d.ts.map +1 -0
- package/dist/compress.js +273 -0
- package/dist/compress.js.map +1 -0
- package/dist/convert.d.ts +8 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +116 -0
- package/dist/convert.js.map +1 -0
- package/dist/crop.d.ts +4 -0
- package/dist/crop.d.ts.map +1 -0
- package/dist/crop.js +32 -0
- package/dist/crop.js.map +1 -0
- package/dist/drp-class.d.ts +58 -0
- package/dist/drp-class.d.ts.map +1 -0
- package/dist/drp-class.js +191 -0
- package/dist/drp-class.js.map +1 -0
- package/dist/drp.d.ts +14 -0
- package/dist/drp.d.ts.map +1 -0
- package/dist/drp.js +23 -0
- package/dist/drp.js.map +1 -0
- package/dist/editor.d.ts +24 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +153 -0
- package/dist/editor.js.map +1 -0
- package/dist/filters.d.ts +19 -0
- package/dist/filters.d.ts.map +1 -0
- package/dist/filters.js +207 -0
- package/dist/filters.js.map +1 -0
- package/dist/image-sdk.iife.js +1979 -0
- package/dist/image-sdk.iife.js.map +1 -0
- package/dist/image-sdk.min.js +1978 -0
- package/dist/image-sdk.umd.js +1980 -0
- package/dist/image-sdk.umd.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/layers.d.ts +12 -0
- package/dist/layers.d.ts.map +1 -0
- package/dist/layers.js +174 -0
- package/dist/layers.js.map +1 -0
- package/dist/loader.d.ts +10 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +114 -0
- package/dist/loader.js.map +1 -0
- package/dist/metadata.d.ts +6 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +127 -0
- package/dist/metadata.js.map +1 -0
- package/dist/presets.d.ts +11 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +28 -0
- package/dist/presets.js.map +1 -0
- package/dist/resize.d.ts +4 -0
- package/dist/resize.d.ts.map +1 -0
- package/dist/resize.js +68 -0
- package/dist/resize.js.map +1 -0
- package/dist/transform.d.ts +6 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +94 -0
- package/dist/transform.js.map +1 -0
- package/dist/types.d.ts +153 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +8 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +124 -0
- package/dist/worker.js.map +1 -0
- package/dist/zoom.d.ts +14 -0
- package/dist/zoom.d.ts.map +1 -0
- package/dist/zoom.js +55 -0
- package/dist/zoom.js.map +1 -0
- package/package.json +92 -0
package/dist/metadata.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export async function readMetadata(file) {
|
|
2
|
+
const metadata = {};
|
|
3
|
+
if (file.type === 'image/jpeg') {
|
|
4
|
+
try {
|
|
5
|
+
metadata.exif = await readExifData(file);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
metadata.exif = undefined;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return metadata;
|
|
12
|
+
}
|
|
13
|
+
async function readExifData(file) {
|
|
14
|
+
const buffer = await file.arrayBuffer();
|
|
15
|
+
const view = new DataView(buffer);
|
|
16
|
+
if (view.getUint16(0, false) !== 0xffd8) {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
const metadata = {};
|
|
20
|
+
let offset = 2;
|
|
21
|
+
while (offset < buffer.byteLength) {
|
|
22
|
+
const marker = view.getUint16(offset, false);
|
|
23
|
+
offset += 2;
|
|
24
|
+
if (marker === 0xffe1) {
|
|
25
|
+
const length = view.getUint16(offset, false);
|
|
26
|
+
const exifData = parseExif(view, offset + 2, length - 2);
|
|
27
|
+
Object.assign(metadata, exifData);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
if ((marker & 0xff00) === 0xff00) {
|
|
31
|
+
const length = view.getUint16(offset, false);
|
|
32
|
+
offset += length;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return metadata;
|
|
39
|
+
}
|
|
40
|
+
function parseExif(view, start, _length) {
|
|
41
|
+
const metadata = {};
|
|
42
|
+
const header = String.fromCharCode(view.getUint8(start), view.getUint8(start + 1), view.getUint8(start + 2), view.getUint8(start + 3));
|
|
43
|
+
if (header !== 'Exif') {
|
|
44
|
+
return metadata;
|
|
45
|
+
}
|
|
46
|
+
const byteOrder = view.getUint16(start + 4, false);
|
|
47
|
+
const littleEndian = byteOrder === 0x4949;
|
|
48
|
+
metadata.byteOrder = littleEndian ? 'Little-endian' : 'Big-endian';
|
|
49
|
+
return metadata;
|
|
50
|
+
}
|
|
51
|
+
export function generateCustomMetadata(options) {
|
|
52
|
+
const custom = {};
|
|
53
|
+
if (options.custom) {
|
|
54
|
+
Object.assign(custom, options.custom);
|
|
55
|
+
}
|
|
56
|
+
custom.application = '@our-org/image-sdk';
|
|
57
|
+
custom.exportedAt = new Date().toISOString();
|
|
58
|
+
return custom;
|
|
59
|
+
}
|
|
60
|
+
export async function exportWithMetadata(blob, format, metadata) {
|
|
61
|
+
if (!metadata) {
|
|
62
|
+
return blob;
|
|
63
|
+
}
|
|
64
|
+
if (format === 'png') {
|
|
65
|
+
return addPngTextChunk(blob, metadata);
|
|
66
|
+
}
|
|
67
|
+
return blob;
|
|
68
|
+
}
|
|
69
|
+
async function addPngTextChunk(blob, metadata) {
|
|
70
|
+
const buffer = await blob.arrayBuffer();
|
|
71
|
+
const view = new DataView(buffer);
|
|
72
|
+
if (view.getUint32(0, false) !== 0x89504e47) {
|
|
73
|
+
return blob;
|
|
74
|
+
}
|
|
75
|
+
const chunks = [];
|
|
76
|
+
chunks.push(buffer.slice(0, 8));
|
|
77
|
+
let offset = 8;
|
|
78
|
+
while (offset < buffer.byteLength) {
|
|
79
|
+
const chunkLength = view.getUint32(offset, false);
|
|
80
|
+
const chunkType = String.fromCharCode(view.getUint8(offset + 4), view.getUint8(offset + 5), view.getUint8(offset + 6), view.getUint8(offset + 7));
|
|
81
|
+
if (chunkType === 'IEND') {
|
|
82
|
+
const textData = createPngTextData(metadata);
|
|
83
|
+
if (textData) {
|
|
84
|
+
const textChunk = createPngChunk('tEXt', textData);
|
|
85
|
+
chunks.push(textChunk);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
chunks.push(buffer.slice(offset, offset + 12 + chunkLength));
|
|
89
|
+
offset += 12 + chunkLength;
|
|
90
|
+
}
|
|
91
|
+
const totalLength = chunks.reduce((acc, chunk) => acc + chunk.byteLength, 0);
|
|
92
|
+
const result = new Uint8Array(totalLength);
|
|
93
|
+
let resultOffset = 0;
|
|
94
|
+
for (const chunk of chunks) {
|
|
95
|
+
result.set(new Uint8Array(chunk), resultOffset);
|
|
96
|
+
resultOffset += chunk.byteLength;
|
|
97
|
+
}
|
|
98
|
+
return new Blob([result], { type: 'image/png' });
|
|
99
|
+
}
|
|
100
|
+
function createPngTextData(metadata) {
|
|
101
|
+
const custom = generateCustomMetadata(metadata);
|
|
102
|
+
const text = JSON.stringify(custom);
|
|
103
|
+
const encoder = new TextEncoder();
|
|
104
|
+
return encoder.encode(`Comment\0${text}`);
|
|
105
|
+
}
|
|
106
|
+
function createPngChunk(type, data) {
|
|
107
|
+
const length = data.byteLength;
|
|
108
|
+
const chunk = new ArrayBuffer(12 + length);
|
|
109
|
+
const view = new DataView(chunk);
|
|
110
|
+
view.setUint32(0, length, false);
|
|
111
|
+
const typeBytes = new TextEncoder().encode(type);
|
|
112
|
+
new Uint8Array(chunk).set(typeBytes, 4);
|
|
113
|
+
new Uint8Array(chunk).set(data, 8);
|
|
114
|
+
let crc = 0xffffffff;
|
|
115
|
+
for (let i = 4; i < 8 + length; i++) {
|
|
116
|
+
crc ^= new Uint8Array(chunk)[i];
|
|
117
|
+
for (let j = 0; j < 8; j++) {
|
|
118
|
+
crc = (crc >>> 1) ^ (crc & 1 ? 0xedb88320 : 0);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
view.setUint32(8 + length, (crc ^ 0xffffffff) >>> 0, false);
|
|
122
|
+
return chunk;
|
|
123
|
+
}
|
|
124
|
+
export function removeMetadata(blob) {
|
|
125
|
+
return blob;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ExportPreset {
|
|
2
|
+
name: string;
|
|
3
|
+
label: string;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
category: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const EXPORT_PRESETS: ExportPreset[];
|
|
9
|
+
export declare function getExportPreset(name: string): ExportPreset | undefined;
|
|
10
|
+
export declare function getPresetsByCategory(): Record<string, ExportPreset[]>;
|
|
11
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EAcxC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAQrE"}
|
package/dist/presets.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const EXPORT_PRESETS = [
|
|
2
|
+
{ name: 'instagram-post', label: 'Instagram Post', width: 1080, height: 1080, category: 'Instagram' },
|
|
3
|
+
{ name: 'instagram-story', label: 'Instagram Story', width: 1080, height: 1920, category: 'Instagram' },
|
|
4
|
+
{ name: 'instagram-reel', label: 'Instagram Reel', width: 1080, height: 1920, category: 'Instagram' },
|
|
5
|
+
{ name: 'twitter-post', label: 'Twitter/X Post', width: 1200, height: 675, category: 'Twitter' },
|
|
6
|
+
{ name: 'twitter-header', label: 'Twitter/X Header', width: 1500, height: 500, category: 'Twitter' },
|
|
7
|
+
{ name: 'facebook-post', label: 'Facebook Post', width: 1200, height: 630, category: 'Facebook' },
|
|
8
|
+
{ name: 'facebook-cover', label: 'Facebook Cover', width: 820, height: 312, category: 'Facebook' },
|
|
9
|
+
{ name: 'youtube-thumbnail', label: 'YouTube Thumbnail', width: 1280, height: 720, category: 'YouTube' },
|
|
10
|
+
{ name: 'youtube-banner', label: 'YouTube Banner', width: 2560, height: 1440, category: 'YouTube' },
|
|
11
|
+
{ name: 'linkedin-post', label: 'LinkedIn Post', width: 1200, height: 627, category: 'LinkedIn' },
|
|
12
|
+
{ name: 'linkedin-cover', label: 'LinkedIn Cover', width: 1584, height: 396, category: 'LinkedIn' },
|
|
13
|
+
{ name: 'pinterest-pin', label: 'Pinterest Pin', width: 1000, height: 1500, category: 'Pinterest' },
|
|
14
|
+
{ name: 'tiktok', label: 'TikTok', width: 1080, height: 1920, category: 'TikTok' },
|
|
15
|
+
];
|
|
16
|
+
export function getExportPreset(name) {
|
|
17
|
+
return EXPORT_PRESETS.find((p) => p.name === name);
|
|
18
|
+
}
|
|
19
|
+
export function getPresetsByCategory() {
|
|
20
|
+
return EXPORT_PRESETS.reduce((acc, preset) => {
|
|
21
|
+
if (!acc[preset.category]) {
|
|
22
|
+
acc[preset.category] = [];
|
|
23
|
+
}
|
|
24
|
+
acc[preset.category].push(preset);
|
|
25
|
+
return acc;
|
|
26
|
+
}, {});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE;IACrG,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE;IACvG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE;IACrG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;IAChG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;IACpG,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE;IAClG,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;IACxG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE;IACnG,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE;IACnG,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE;IACnG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;CACnF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAoC,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/resize.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ResizeOptions } from './types';
|
|
2
|
+
export declare function resizeImage(source: HTMLImageElement | HTMLCanvasElement | string | File, options: ResizeOptions): Promise<HTMLCanvasElement>;
|
|
3
|
+
export declare function resizeCanvas(canvas: HTMLCanvasElement, options: ResizeOptions): HTMLCanvasElement;
|
|
4
|
+
//# sourceMappingURL=resize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../src/resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAsCxC,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,IAAI,EAC5D,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,aAAa,GACrB,iBAAiB,CAanB"}
|
package/dist/resize.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { loadImage } from './loader';
|
|
2
|
+
function calculateDimensions(originalWidth, originalHeight, options) {
|
|
3
|
+
let { width, height } = options;
|
|
4
|
+
const maintainAspectRatio = options.maintainAspectRatio ?? true;
|
|
5
|
+
if (!width && !height) {
|
|
6
|
+
return { width: originalWidth, height: originalHeight };
|
|
7
|
+
}
|
|
8
|
+
if (maintainAspectRatio) {
|
|
9
|
+
const aspectRatio = originalWidth / originalHeight;
|
|
10
|
+
if (width && !height) {
|
|
11
|
+
height = Math.round(width / aspectRatio);
|
|
12
|
+
}
|
|
13
|
+
else if (!width && height) {
|
|
14
|
+
width = Math.round(height * aspectRatio);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
const targetRatio = width / height;
|
|
18
|
+
if (targetRatio > aspectRatio) {
|
|
19
|
+
width = Math.round(height * aspectRatio);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
height = Math.round(width / aspectRatio);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
width = width ?? originalWidth;
|
|
28
|
+
height = height ?? originalHeight;
|
|
29
|
+
}
|
|
30
|
+
return { width: width, height: height };
|
|
31
|
+
}
|
|
32
|
+
export async function resizeImage(source, options) {
|
|
33
|
+
let img;
|
|
34
|
+
if (typeof source === 'string' || source instanceof File) {
|
|
35
|
+
img = await loadImage(source);
|
|
36
|
+
}
|
|
37
|
+
else if (source instanceof HTMLImageElement) {
|
|
38
|
+
img = source;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
img = new Image();
|
|
42
|
+
img.src = source.toDataURL();
|
|
43
|
+
await new Promise((resolve) => {
|
|
44
|
+
img.onload = () => resolve();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const { width, height } = calculateDimensions(img.width, img.height, options);
|
|
48
|
+
const canvas = document.createElement('canvas');
|
|
49
|
+
canvas.width = width;
|
|
50
|
+
canvas.height = height;
|
|
51
|
+
const ctx = canvas.getContext('2d');
|
|
52
|
+
ctx.imageSmoothingEnabled = true;
|
|
53
|
+
ctx.imageSmoothingQuality = 'high';
|
|
54
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
55
|
+
return canvas;
|
|
56
|
+
}
|
|
57
|
+
export function resizeCanvas(canvas, options) {
|
|
58
|
+
const { width, height } = calculateDimensions(canvas.width, canvas.height, options);
|
|
59
|
+
const resized = document.createElement('canvas');
|
|
60
|
+
resized.width = width;
|
|
61
|
+
resized.height = height;
|
|
62
|
+
const ctx = resized.getContext('2d');
|
|
63
|
+
ctx.imageSmoothingEnabled = true;
|
|
64
|
+
ctx.imageSmoothingQuality = 'high';
|
|
65
|
+
ctx.drawImage(canvas, 0, 0, width, height);
|
|
66
|
+
return resized;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=resize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.js","sourceRoot":"","sources":["../src/resize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RotateOptions, FlipOptions } from './types';
|
|
2
|
+
export declare function rotateImage(source: HTMLImageElement | HTMLCanvasElement | string | File, options: RotateOptions): Promise<HTMLCanvasElement>;
|
|
3
|
+
export declare function flipImage(source: HTMLImageElement | HTMLCanvasElement | string | File, options: FlipOptions): Promise<HTMLCanvasElement>;
|
|
4
|
+
export declare function rotateCanvas(canvas: HTMLCanvasElement, options: RotateOptions): HTMLCanvasElement;
|
|
5
|
+
export declare function flipCanvas(canvas: HTMLCanvasElement, options: FlipOptions): HTMLCanvasElement;
|
|
6
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGrD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,IAAI,EAC5D,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAkC5B;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,IAAI,EAC5D,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAiC5B;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,aAAa,GACrB,iBAAiB,CAuBnB;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,GACnB,iBAAiB,CAsBnB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { imageToCanvas, loadImage } from './loader';
|
|
2
|
+
export async function rotateImage(source, options) {
|
|
3
|
+
let canvas;
|
|
4
|
+
if (typeof source === 'string' || source instanceof File) {
|
|
5
|
+
const img = await loadImage(source);
|
|
6
|
+
canvas = imageToCanvas(img);
|
|
7
|
+
}
|
|
8
|
+
else if (source instanceof HTMLImageElement) {
|
|
9
|
+
canvas = imageToCanvas(source);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
canvas = source;
|
|
13
|
+
}
|
|
14
|
+
const { degrees, backgroundColor = 'transparent' } = options;
|
|
15
|
+
const radians = (degrees * Math.PI) / 180;
|
|
16
|
+
const sin = Math.abs(Math.sin(radians));
|
|
17
|
+
const cos = Math.abs(Math.cos(radians));
|
|
18
|
+
const newWidth = Math.round(canvas.width * cos + canvas.height * sin);
|
|
19
|
+
const newHeight = Math.round(canvas.width * sin + canvas.height * cos);
|
|
20
|
+
const rotated = document.createElement('canvas');
|
|
21
|
+
rotated.width = newWidth;
|
|
22
|
+
rotated.height = newHeight;
|
|
23
|
+
const ctx = rotated.getContext('2d');
|
|
24
|
+
ctx.fillStyle = backgroundColor;
|
|
25
|
+
ctx.fillRect(0, 0, newWidth, newHeight);
|
|
26
|
+
ctx.translate(newWidth / 2, newHeight / 2);
|
|
27
|
+
ctx.rotate(radians);
|
|
28
|
+
ctx.drawImage(canvas, -canvas.width / 2, -canvas.height / 2);
|
|
29
|
+
return rotated;
|
|
30
|
+
}
|
|
31
|
+
export async function flipImage(source, options) {
|
|
32
|
+
let canvas;
|
|
33
|
+
if (typeof source === 'string' || source instanceof File) {
|
|
34
|
+
const img = await loadImage(source);
|
|
35
|
+
canvas = imageToCanvas(img);
|
|
36
|
+
}
|
|
37
|
+
else if (source instanceof HTMLImageElement) {
|
|
38
|
+
canvas = imageToCanvas(source);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
canvas = source;
|
|
42
|
+
}
|
|
43
|
+
const { horizontal = false, vertical = false } = options;
|
|
44
|
+
const flipped = document.createElement('canvas');
|
|
45
|
+
flipped.width = canvas.width;
|
|
46
|
+
flipped.height = canvas.height;
|
|
47
|
+
const ctx = flipped.getContext('2d');
|
|
48
|
+
if (horizontal) {
|
|
49
|
+
ctx.translate(canvas.width, 0);
|
|
50
|
+
ctx.scale(-1, 1);
|
|
51
|
+
}
|
|
52
|
+
if (vertical) {
|
|
53
|
+
ctx.translate(0, canvas.height);
|
|
54
|
+
ctx.scale(1, -1);
|
|
55
|
+
}
|
|
56
|
+
ctx.drawImage(canvas, 0, 0);
|
|
57
|
+
return flipped;
|
|
58
|
+
}
|
|
59
|
+
export function rotateCanvas(canvas, options) {
|
|
60
|
+
const { degrees, backgroundColor = 'transparent' } = options;
|
|
61
|
+
const radians = (degrees * Math.PI) / 180;
|
|
62
|
+
const sin = Math.abs(Math.sin(radians));
|
|
63
|
+
const cos = Math.abs(Math.cos(radians));
|
|
64
|
+
const newWidth = Math.round(canvas.width * cos + canvas.height * sin);
|
|
65
|
+
const newHeight = Math.round(canvas.width * sin + canvas.height * cos);
|
|
66
|
+
const rotated = document.createElement('canvas');
|
|
67
|
+
rotated.width = newWidth;
|
|
68
|
+
rotated.height = newHeight;
|
|
69
|
+
const ctx = rotated.getContext('2d');
|
|
70
|
+
ctx.fillStyle = backgroundColor;
|
|
71
|
+
ctx.fillRect(0, 0, newWidth, newHeight);
|
|
72
|
+
ctx.translate(newWidth / 2, newHeight / 2);
|
|
73
|
+
ctx.rotate(radians);
|
|
74
|
+
ctx.drawImage(canvas, -canvas.width / 2, -canvas.height / 2);
|
|
75
|
+
return rotated;
|
|
76
|
+
}
|
|
77
|
+
export function flipCanvas(canvas, options) {
|
|
78
|
+
const { horizontal = false, vertical = false } = options;
|
|
79
|
+
const flipped = document.createElement('canvas');
|
|
80
|
+
flipped.width = canvas.width;
|
|
81
|
+
flipped.height = canvas.height;
|
|
82
|
+
const ctx = flipped.getContext('2d');
|
|
83
|
+
if (horizontal) {
|
|
84
|
+
ctx.translate(canvas.width, 0);
|
|
85
|
+
ctx.scale(-1, 1);
|
|
86
|
+
}
|
|
87
|
+
if (vertical) {
|
|
88
|
+
ctx.translate(0, canvas.height);
|
|
89
|
+
ctx.scale(1, -1);
|
|
90
|
+
}
|
|
91
|
+
ctx.drawImage(canvas, 0, 0);
|
|
92
|
+
return flipped;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA4D,EAC5D,OAAsB;IAEtB,IAAI,MAAyB,CAAC;IAE9B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QAC9C,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAE3B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IACtC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;IAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAExC,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC3C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpB,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAA4D,EAC5D,OAAoB;IAEpB,IAAI,MAAyB,CAAC;IAE9B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QAC9C,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IAEtC,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAAyB,EACzB,OAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAE3B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IACtC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;IAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAExC,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC3C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpB,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,MAAyB,EACzB,OAAoB;IAEpB,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IAEtC,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
export declare const VERSION = "1.0.0";
|
|
2
|
+
export type ImageFormat = 'jpeg' | 'png' | 'webp' | 'avif' | 'gif' | 'bmp';
|
|
3
|
+
export interface ImageData {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
data: Uint8ClampedArray;
|
|
7
|
+
}
|
|
8
|
+
export interface ImageInfo {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
format: ImageFormat;
|
|
12
|
+
size: number;
|
|
13
|
+
metadata?: MetadataInfo;
|
|
14
|
+
}
|
|
15
|
+
export interface MetadataInfo {
|
|
16
|
+
exif?: Record<string, unknown>;
|
|
17
|
+
xmp?: Record<string, unknown>;
|
|
18
|
+
custom?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface ExportOptions {
|
|
21
|
+
format: ImageFormat;
|
|
22
|
+
quality?: number;
|
|
23
|
+
width?: number;
|
|
24
|
+
height?: number;
|
|
25
|
+
maintainAspectRatio?: boolean;
|
|
26
|
+
metadata?: MetadataOptions;
|
|
27
|
+
onProgress?: ProgressCallback;
|
|
28
|
+
}
|
|
29
|
+
export interface MetadataOptions {
|
|
30
|
+
preserve?: boolean;
|
|
31
|
+
remove?: boolean;
|
|
32
|
+
custom?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
export interface ResizeOptions {
|
|
35
|
+
width?: number;
|
|
36
|
+
height?: number;
|
|
37
|
+
maintainAspectRatio?: boolean;
|
|
38
|
+
fit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside';
|
|
39
|
+
}
|
|
40
|
+
export interface CropOptions {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
width: number;
|
|
44
|
+
height: number;
|
|
45
|
+
}
|
|
46
|
+
export interface RotateOptions {
|
|
47
|
+
degrees: number;
|
|
48
|
+
backgroundColor?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface FlipOptions {
|
|
51
|
+
horizontal?: boolean;
|
|
52
|
+
vertical?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface Adjustments {
|
|
55
|
+
brightness?: number;
|
|
56
|
+
contrast?: number;
|
|
57
|
+
saturation?: number;
|
|
58
|
+
exposure?: number;
|
|
59
|
+
highlights?: number;
|
|
60
|
+
shadows?: number;
|
|
61
|
+
temperature?: number;
|
|
62
|
+
tint?: number;
|
|
63
|
+
sharpness?: number;
|
|
64
|
+
blur?: number;
|
|
65
|
+
opacity?: number;
|
|
66
|
+
grayscale?: boolean;
|
|
67
|
+
sepia?: boolean;
|
|
68
|
+
}
|
|
69
|
+
export type FilterPreset = 'original' | 'vintage' | 'blackAndWhite' | 'warm' | 'cool' | 'cinematic' | 'fade' | 'dramatic' | 'soft' | 'highContrast';
|
|
70
|
+
export interface Layer {
|
|
71
|
+
id: string;
|
|
72
|
+
type: 'background' | 'image' | 'text' | 'shape';
|
|
73
|
+
name: string;
|
|
74
|
+
visible: boolean;
|
|
75
|
+
locked: boolean;
|
|
76
|
+
opacity: number;
|
|
77
|
+
x: number;
|
|
78
|
+
y: number;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
rotation: number;
|
|
82
|
+
zIndex: number;
|
|
83
|
+
}
|
|
84
|
+
export interface TextLayer extends Layer {
|
|
85
|
+
type: 'text';
|
|
86
|
+
content: string;
|
|
87
|
+
fontFamily: string;
|
|
88
|
+
fontSize: number;
|
|
89
|
+
fontWeight: string;
|
|
90
|
+
color: string;
|
|
91
|
+
alignment: 'left' | 'center' | 'right';
|
|
92
|
+
letterSpacing: number;
|
|
93
|
+
lineHeight: number;
|
|
94
|
+
}
|
|
95
|
+
export interface ShapeLayer extends Layer {
|
|
96
|
+
type: 'shape';
|
|
97
|
+
shapeType: 'rectangle' | 'circle' | 'line';
|
|
98
|
+
fill: string;
|
|
99
|
+
stroke: string;
|
|
100
|
+
strokeWidth: number;
|
|
101
|
+
}
|
|
102
|
+
export interface ImageLayer extends Layer {
|
|
103
|
+
type: 'image';
|
|
104
|
+
imageElement: HTMLImageElement;
|
|
105
|
+
originalWidth: number;
|
|
106
|
+
originalHeight: number;
|
|
107
|
+
}
|
|
108
|
+
export interface EditorState {
|
|
109
|
+
width: number;
|
|
110
|
+
height: number;
|
|
111
|
+
layers: Layer[];
|
|
112
|
+
adjustments: Adjustments;
|
|
113
|
+
filter: FilterPreset;
|
|
114
|
+
history: EditorState[];
|
|
115
|
+
historyIndex: number;
|
|
116
|
+
}
|
|
117
|
+
export interface ProgressEvent {
|
|
118
|
+
phase: string;
|
|
119
|
+
percent: number;
|
|
120
|
+
message: string;
|
|
121
|
+
}
|
|
122
|
+
export type ProgressCallback = (event: ProgressEvent) => void;
|
|
123
|
+
export interface CompressionTargetOptions extends ExportOptions {
|
|
124
|
+
targetSize?: number;
|
|
125
|
+
tolerance?: number;
|
|
126
|
+
maxFileSize?: number;
|
|
127
|
+
maxDimension?: number;
|
|
128
|
+
}
|
|
129
|
+
export interface CompressionPreview {
|
|
130
|
+
originalWidth: number;
|
|
131
|
+
originalHeight: number;
|
|
132
|
+
originalSize: number;
|
|
133
|
+
estimatedSize: number;
|
|
134
|
+
estimatedSavingsPercent: number;
|
|
135
|
+
recommendedFormat: ImageFormat;
|
|
136
|
+
recommendedQuality: number;
|
|
137
|
+
}
|
|
138
|
+
export interface CompressionResult {
|
|
139
|
+
blob: Blob;
|
|
140
|
+
actualSize: number;
|
|
141
|
+
targetSize?: number;
|
|
142
|
+
withinTarget: boolean;
|
|
143
|
+
quality: number;
|
|
144
|
+
format: ImageFormat;
|
|
145
|
+
}
|
|
146
|
+
export type CompressionPreset = 'web' | 'email' | 'print' | 'thumbnail';
|
|
147
|
+
export interface ValidationResult {
|
|
148
|
+
valid: boolean;
|
|
149
|
+
size: number;
|
|
150
|
+
maxSize?: number;
|
|
151
|
+
message: string;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface WorkerOperation {
|
|
2
|
+
type: string;
|
|
3
|
+
payload: unknown;
|
|
4
|
+
}
|
|
5
|
+
export declare function isWorkerSupported(): boolean;
|
|
6
|
+
export declare function processInWorker(operation: WorkerOperation): Promise<unknown>;
|
|
7
|
+
export declare function terminateWorker(): void;
|
|
8
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AA+GD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAYlF;AAED,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
|