labellife-design-tool 1.0.9 → 1.1.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/README.md CHANGED
@@ -119,6 +119,31 @@ The `CanvasEditorRef` interface provides the following properties and methods:
119
119
  - `setCanvasSize(width, height)`: Set the canvas dimensions programmatically
120
120
  - `loadDesign(jsonData)`: Load a design from JSON data (Promise-based)
121
121
 
122
+ ### Export Helpers (JSON object + Base64)
123
+
124
+ In addition to the UI download helpers, the library also provides functions that return data directly (no file download):
125
+
126
+ ```ts
127
+ import { exportToJSONObject, canvasToDataURL } from 'labellife-design-tool';
128
+ ```
129
+
130
+ #### Get a JSON-safe design object
131
+
132
+ ```ts
133
+ const designObject = exportToJSONObject(editorRef.current.getDesign());
134
+ // designObject is a plain JSON-compatible object you can send to an API
135
+ ```
136
+
137
+ #### Get a base64 data URL of the canvas
138
+
139
+ ```ts
140
+ const stage = editorRef.current.stage;
141
+ if (stage) {
142
+ const dataUrl = canvasToDataURL(stage, 'png', { pixelRatio: 2 });
143
+ // dataUrl is like: "data:image/png;base64,iVBORw0..."
144
+ }
145
+ ```
146
+
122
147
  ### Canvas Size Management
123
148
 
124
149
  The `setCanvasSize` method allows you to programmatically change the canvas dimensions. This is useful for responsive designs, template switching, or custom size inputs.
@@ -2552,6 +2552,9 @@ var exportToJPG = (stage, design) => {
2552
2552
  document.body.removeChild(link);
2553
2553
  }
2554
2554
  };
2555
+ var exportToJSONObject = (design) => {
2556
+ return JSON.parse(JSON.stringify(design));
2557
+ };
2555
2558
  var exportToJSON = (design) => {
2556
2559
  const json = JSON.stringify(design, null, 2);
2557
2560
  const blob = new Blob([json], { type: "application/json" });
@@ -2564,6 +2567,22 @@ var exportToJSON = (design) => {
2564
2567
  document.body.removeChild(link);
2565
2568
  URL.revokeObjectURL(url);
2566
2569
  };
2570
+ var canvasToDataURL = (stage, format = "png", options) => {
2571
+ if (!stage) {
2572
+ throw new Error("Stage is required");
2573
+ }
2574
+ const oldScale = stage.scaleX();
2575
+ stage.scale({ x: 1, y: 1 });
2576
+ const pixelRatio = options?.pixelRatio ?? 2;
2577
+ const quality = options?.quality ?? 0.9;
2578
+ const dataUrl = stage.toDataURL({
2579
+ pixelRatio,
2580
+ mimeType: format === "jpg" ? "image/jpeg" : "image/png",
2581
+ quality: format === "jpg" ? quality : undefined
2582
+ });
2583
+ stage.scale({ x: oldScale, y: oldScale });
2584
+ return dataUrl;
2585
+ };
2567
2586
  var canvasToBlob = (stage, format = "png", options) => {
2568
2587
  if (!stage) {
2569
2588
  return Promise.reject(new Error("Stage is required"));
@@ -3927,9 +3946,11 @@ export {
3927
3946
  getUnsplashAccessKey,
3928
3947
  findRequiredInputs,
3929
3948
  exportToPNG,
3949
+ exportToJSONObject,
3930
3950
  exportToJSON,
3931
3951
  exportToJPG,
3932
3952
  convertTemplateToCanvasDesign,
3953
+ canvasToDataURL,
3933
3954
  canvasToBlob,
3934
3955
  UrlImageElement,
3935
3956
  ShapeElement,
@@ -2552,6 +2552,9 @@ var exportToJPG = (stage, design) => {
2552
2552
  document.body.removeChild(link);
2553
2553
  }
2554
2554
  };
2555
+ var exportToJSONObject = (design) => {
2556
+ return JSON.parse(JSON.stringify(design));
2557
+ };
2555
2558
  var exportToJSON = (design) => {
2556
2559
  const json = JSON.stringify(design, null, 2);
2557
2560
  const blob = new Blob([json], { type: "application/json" });
@@ -2564,6 +2567,22 @@ var exportToJSON = (design) => {
2564
2567
  document.body.removeChild(link);
2565
2568
  URL.revokeObjectURL(url);
2566
2569
  };
2570
+ var canvasToDataURL = (stage, format = "png", options) => {
2571
+ if (!stage) {
2572
+ throw new Error("Stage is required");
2573
+ }
2574
+ const oldScale = stage.scaleX();
2575
+ stage.scale({ x: 1, y: 1 });
2576
+ const pixelRatio = options?.pixelRatio ?? 2;
2577
+ const quality = options?.quality ?? 0.9;
2578
+ const dataUrl = stage.toDataURL({
2579
+ pixelRatio,
2580
+ mimeType: format === "jpg" ? "image/jpeg" : "image/png",
2581
+ quality: format === "jpg" ? quality : undefined
2582
+ });
2583
+ stage.scale({ x: oldScale, y: oldScale });
2584
+ return dataUrl;
2585
+ };
2567
2586
  var canvasToBlob = (stage, format = "png", options) => {
2568
2587
  if (!stage) {
2569
2588
  return Promise.reject(new Error("Stage is required"));
@@ -3980,9 +3999,11 @@ export {
3980
3999
  getUnsplashAccessKey,
3981
4000
  findRequiredInputs,
3982
4001
  exportToPNG,
4002
+ exportToJSONObject,
3983
4003
  exportToJSON,
3984
4004
  exportToJPG,
3985
4005
  convertTemplateToCanvasDesign,
4006
+ canvasToDataURL,
3986
4007
  canvasToBlob,
3987
4008
  UrlImageElement,
3988
4009
  ShapeElement,
@@ -15,9 +15,9 @@ export interface CanvasEditorRef {
15
15
  }
16
16
  export { default as CanvasEditor } from '../CanvasEditor';
17
17
  export * from '../types';
18
- export { exportToPNG, exportToJPG, exportToJSON, importFromJSON, importFromJSONData, // Import JSON data directly (no file needed)
18
+ export { exportToPNG, exportToJPG, exportToJSON, exportToJSONObject, importFromJSON, importFromJSONData, // Import JSON data directly (no file needed)
19
19
  loadTemplateFromJSON, // Simplified template loading utility
20
- findRequiredInputs, replaceUserInputs, convertTemplateToCanvasDesign, canvasToBlob, } from '../utils/exportImportUtils';
20
+ findRequiredInputs, replaceUserInputs, convertTemplateToCanvasDesign, canvasToDataURL, canvasToBlob, } from '../utils/exportImportUtils';
21
21
  export * from '../elements';
22
22
  export { FONT_FAMILIES, DEFAULT_COLORS, CANVAS_PRESETS } from '../constants';
23
23
  export { setUnsplashAccessKey, getUnsplashAccessKey } from '../config';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AASxC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,YAAY,CAAC;IAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAGD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG1D,cAAc,UAAU,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAAE,6CAA6C;AACjE,oBAAoB,EAAE,sCAAsC;AAC5D,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,YAAY,GACb,MAAM,4BAA4B,CAAC;AAGpC,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AASxC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,YAAY,CAAC;IAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAGD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG1D,cAAc,UAAU,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAAE,6CAA6C;AACjE,oBAAoB,EAAE,sCAAsC;AAC5D,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,eAAe,EACf,YAAY,GACb,MAAM,4BAA4B,CAAC;AAGpC,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
@@ -20,6 +20,7 @@ export declare function findRequiredInputs(design: CanvasDesign): UserInputItem[
20
20
  export declare function replaceUserInputs(design: CanvasDesign, collectedInputs: Record<string, any>): CanvasDesign;
21
21
  export declare const exportToPNG: (stage: Konva.Stage, design: CanvasDesign) => void;
22
22
  export declare const exportToJPG: (stage: Konva.Stage, design: CanvasDesign) => void;
23
+ export declare const exportToJSONObject: (design: CanvasDesign) => CanvasDesign;
23
24
  export declare const exportToJSON: (design: CanvasDesign) => void;
24
25
  /**
25
26
  * Converts the canvas to a Blob that can be used for various purposes
@@ -28,6 +29,10 @@ export declare const exportToJSON: (design: CanvasDesign) => void;
28
29
  * @param options - Additional options for conversion
29
30
  * @returns Promise that resolves with a Blob
30
31
  */
32
+ export declare const canvasToDataURL: (stage: Konva.Stage, format?: "png" | "jpg", options?: {
33
+ quality?: number;
34
+ pixelRatio?: number;
35
+ }) => string;
31
36
  export declare const canvasToBlob: (stage: Konva.Stage, format?: "png" | "jpg", options?: {
32
37
  quality?: number;
33
38
  pixelRatio?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"exportImportUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/exportImportUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAuHrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,CAsHxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACrC,YAAY,CA6Nd;AAGD,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,CAAC,KAAK,EAAE,QAAQ,YAAY,SAanE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,CAAC,KAAK,EAAE,QAAQ,YAAY,SAiBnE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,SAWhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACrB,OAAO,KAAK,CAAC,KAAK,EAClB,SAAQ,KAAK,GAAG,KAAa,EAC7B,UAAU;IACN,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,KACF,OAAO,CAAC,IAAI,CAsCd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,GAC/B,iBAAiB,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,EACjD,UAAU,GAAG,KACZ,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC3B,UAAU,GAAG,EACb,QAAQ,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACtC,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI,SAuB1G,CAAC;AAEF,eAAO,MAAM,cAAc,GACvB,OAAO,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAC1C,QAAQ,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACtC,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI,SA0C1G,CAAC"}
1
+ {"version":3,"file":"exportImportUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/exportImportUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAuHrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,CAsHxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACrC,YAAY,CA6Nd;AAGD,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,CAAC,KAAK,EAAE,QAAQ,YAAY,SAanE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,CAAC,KAAK,EAAE,QAAQ,YAAY,SAiBnE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,KAAG,YAEzD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,SAWhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GACxB,OAAO,KAAK,CAAC,KAAK,EAClB,SAAQ,KAAK,GAAG,KAAa,EAC7B,UAAU;IACN,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,KACF,MAoBF,CAAC;AAEF,eAAO,MAAM,YAAY,GACrB,OAAO,KAAK,CAAC,KAAK,EAClB,SAAQ,KAAK,GAAG,KAAa,EAC7B,UAAU;IACN,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,KACF,OAAO,CAAC,IAAI,CAsCd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,GAC/B,iBAAiB,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,EACjD,UAAU,GAAG,KACZ,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC3B,UAAU,GAAG,EACb,QAAQ,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACtC,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI,SAuB1G,CAAC;AAEF,eAAO,MAAM,cAAc,GACvB,OAAO,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAC1C,QAAQ,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACtC,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI,SA0C1G,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "labellife-design-tool",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "description": "Professional canvas editor built with React, TypeScript, and Konva",
5
5
  "main": "./dist/lib/index.js",
6
6
  "module": "./dist/lib/index.js",