@edv4h/usketch-plugin-shape-image 3.0.6 → 3.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.
@@ -1,4 +1,7 @@
1
+ import type { AssetStore } from "@edv4h/usketch-plugin-asset-store";
1
2
  import type { ExternalContentHandler, ExternalContentOf } from "@edv4h/usketch-shared";
3
+ /** Resolve the shared asset store lazily (undefined if the plugin isn't wired). */
4
+ export type GetAssetStore = () => AssetStore | undefined;
2
5
  export interface ImageFileHandlerOptions {
3
6
  /**
4
7
  * Max accepted size per file. Default 4 (MB). Larger files are rejected and
@@ -25,6 +28,6 @@ export interface ImageFileHandlerOptions {
25
28
  * point — handlers decide their own placement strategy. A future canvas-engine
26
29
  * read API may expose the last pointer position for handlers that want it.
27
30
  */
28
- export declare function createImageFileHandler(options?: ImageFileHandlerOptions): ExternalContentHandler<"file">;
31
+ export declare function createImageFileHandler(options?: ImageFileHandlerOptions, getAssets?: GetAssetStore): ExternalContentHandler<"file">;
29
32
  export type ImageFileContent = ExternalContentOf<"file">;
30
33
  //# sourceMappingURL=external-content-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-content-handler.d.ts","sourceRoot":"","sources":["../src/external-content-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,sBAAsB,EAEtB,iBAAiB,EACjB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,GAAE,uBAA4B,GACnC,sBAAsB,CAAC,MAAM,CAAC,CA6BhC;AA6FD,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"external-content-handler.d.ts","sourceRoot":"","sources":["../src/external-content-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EACX,sBAAsB,EAEtB,iBAAiB,EACjB,MAAM,uBAAuB,CAAC;AAI/B,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,MAAM,UAAU,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,GAAE,uBAA4B,EACrC,SAAS,CAAC,EAAE,aAAa,GACvB,sBAAsB,CAAC,MAAM,CAAC,CA8BhC;AAgHD,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC"}
@@ -10,7 +10,7 @@ import { fileToBase64, getImageDimensions, resizeImage, validateImage } from "./
10
10
  * point — handlers decide their own placement strategy. A future canvas-engine
11
11
  * read API may expose the last pointer position for handlers that want it.
12
12
  */
13
- export function createImageFileHandler(options = {}) {
13
+ export function createImageFileHandler(options = {}, getAssets) {
14
14
  const { maxSizeMB = 4, maxDimension = 2048, order = 0, maxRenderedSize = 400, gap = 20, } = options;
15
15
  return {
16
16
  id: "usketch-plugin-shape-image:image-file",
@@ -26,6 +26,7 @@ export function createImageFileHandler(options = {}) {
26
26
  maxSizeMB,
27
27
  maxDimension,
28
28
  maxRenderedSize,
29
+ assets: getAssets?.(),
29
30
  });
30
31
  offsetX += maxRenderedSize + gap;
31
32
  }
@@ -80,6 +81,23 @@ async function placeImageShape(file, ctx, opts) {
80
81
  const scale = Math.min(opts.maxRenderedSize / dimensions.width, opts.maxRenderedSize / dimensions.height, 1);
81
82
  const w = Math.round(dimensions.width * scale);
82
83
  const h = Math.round(dimensions.height * scale);
84
+ // Prefer the content-addressed asset store: the shape holds only an assetId,
85
+ // so duplicating it reuses the same asset (no base64 duplication, synced once).
86
+ // Falls back to an inline data URL when no asset store is wired.
87
+ let assetId;
88
+ if (opts.assets) {
89
+ try {
90
+ assetId = await opts.assets.upload("image", dataUrl, {
91
+ w: dimensions.width,
92
+ h: dimensions.height,
93
+ mimeType: file.type,
94
+ size: file.size,
95
+ });
96
+ }
97
+ catch {
98
+ assetId = undefined; // fall back to inline src below
99
+ }
100
+ }
83
101
  const id = generateId();
84
102
  const shape = {
85
103
  id,
@@ -94,7 +112,8 @@ async function placeImageShape(file, ctx, opts) {
94
112
  strokeWidth: 1,
95
113
  opacity: 1,
96
114
  },
97
- src: dataUrl,
115
+ src: assetId ? "" : dataUrl,
116
+ ...(assetId ? { assetId } : {}),
98
117
  };
99
118
  ctx.commands.execute({
100
119
  execute: () => ctx.store.addShape(shape),
@@ -1 +1 @@
1
- {"version":3,"file":"external-content-handler.js","sourceRoot":"","sources":["../src/external-content-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-content-handler.js","sourceRoot":"","sources":["../src/external-content-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAON,KAAK,aAAa,EAElB,MAAM,uBAAuB,CAAC;AA8I/B,wBAAgB,sBAAsB,IAAI,aAAa,CA6BtD"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AACA,OAAO,EAON,KAAK,aAAa,EAElB,MAAM,uBAAuB,CAAC;AA+J/B,wBAAgB,sBAAsB,IAAI,aAAa,CAoCtD"}
package/dist/plugin.js CHANGED
@@ -1,9 +1,22 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getAssetStore } from "@edv4h/usketch-plugin-asset-store";
2
3
  import { DEFAULT_STYLE, withRotation, } from "@edv4h/usketch-shared";
4
+ import { useCallback, useSyncExternalStore } from "react";
3
5
  import { createImageFileHandler } from "./external-content-handler.js";
4
- function render(shape) {
5
- const data = shape;
6
- const src = data.src || undefined;
6
+ // Lazily resolves the shared asset store at render/serialize time (these run
7
+ // without a PluginContext). Set in setup, so it's order-independent.
8
+ let getAssets = null;
9
+ /** The usable src for an image shape: resolve its assetId, else the inline src. */
10
+ function resolveSrc(data) {
11
+ if (data.assetId)
12
+ return getAssets?.()?.resolve(data.assetId);
13
+ return data.src || undefined;
14
+ }
15
+ /** Image body — subscribes to the asset store so a late-arriving (remote) asset re-renders. */
16
+ function ImageView({ data }) {
17
+ const assets = getAssets?.();
18
+ const subscribe = useCallback((cb) => assets?.subscribe(cb) ?? (() => { }), [assets]);
19
+ const src = useSyncExternalStore(subscribe, () => resolveSrc(data));
7
20
  return (_jsx("div", { style: {
8
21
  width: "100%",
9
22
  height: "100%",
@@ -23,6 +36,9 @@ function render(shape) {
23
36
  pointerEvents: "none",
24
37
  } })) : (_jsx("span", { style: { color: "#999", fontSize: 13, fontFamily: "system-ui" }, children: "No image" })) }));
25
38
  }
39
+ function render(shape) {
40
+ return _jsx(ImageView, { data: shape });
41
+ }
26
42
  function getBounds(data) {
27
43
  return { x: data.x, y: data.y, width: data.width, height: data.height };
28
44
  }
@@ -85,18 +101,18 @@ function createDefault(params) {
85
101
  };
86
102
  }
87
103
  function serializeForAi(shape) {
88
- const data = shape;
89
- if (!data.src)
104
+ const src = resolveSrc(shape);
105
+ if (!src)
90
106
  return {};
91
107
  // Image `src` can be a base64 Data URL that easily blows past LLM token
92
108
  // budgets (and may leak embedded image bytes into prompts). Return a small
93
109
  // summary instead — the shape's `type === "image"` already tells the AI
94
110
  // this is an image; consumers who actually need pixel data should use
95
111
  // `serializeForRecognition`.
96
- const isDataUrl = data.src.startsWith("data:");
112
+ const isDataUrl = src.startsWith("data:");
97
113
  return isDataUrl
98
- ? { srcKind: "data", srcLength: data.src.length }
99
- : { srcKind: "url", srcOrigin: safeOrigin(data.src) };
114
+ ? { srcKind: "data", srcLength: src.length }
115
+ : { srcKind: "url", srcOrigin: safeOrigin(src) };
100
116
  }
101
117
  function safeOrigin(url) {
102
118
  try {
@@ -107,14 +123,14 @@ function safeOrigin(url) {
107
123
  }
108
124
  }
109
125
  function serializeForRecognition(shape) {
110
- const data = shape;
111
- if (!data.src)
126
+ const src = resolveSrc(shape);
127
+ if (!src)
112
128
  return null;
113
- return { kind: "image", src: data.src };
129
+ return { kind: "image", src };
114
130
  }
115
131
  function debugFields(shape) {
116
132
  const data = shape;
117
- return { src: data.src ?? "" };
133
+ return { assetId: data.assetId ?? "", src: resolveSrc(data) ?? "" };
118
134
  }
119
135
  export function createImageShapePlugin() {
120
136
  return {
@@ -133,12 +149,16 @@ export function createImageShapePlugin() {
133
149
  serializeForRecognition,
134
150
  debugFields,
135
151
  });
152
+ // Resolve the asset store lazily at render/serialize time (order-independent).
153
+ getAssets = () => getAssetStore(ctx);
136
154
  // Self-register the default "image file → image shape" external-content
137
155
  // handler at order 0. Apps and third-party plugins can override by
138
- // registering a higher-`order` `kind: "file"` handler.
139
- const unregisterHandler = ctx.externalContent.register(createImageFileHandler());
156
+ // registering a higher-`order` `kind: "file"` handler. The handler stores
157
+ // imported images in the asset store (content-addressed) when available.
158
+ const unregisterHandler = ctx.externalContent.register(createImageFileHandler({}, () => getAssetStore(ctx)));
140
159
  return () => {
141
160
  unregisterHandler();
161
+ getAssets = null;
142
162
  };
143
163
  },
144
164
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,15 @@
1
1
  import type { ShapeData } from "@edv4h/usketch-shared";
2
2
  /** Image shape extension: intrinsic data for the `image` shape. */
3
3
  export interface ImageShapeData extends ShapeData {
4
+ /**
5
+ * Inline source (data URL or external URL). Kept for backward compatibility
6
+ * and external links. New imports leave this empty and use {@link assetId}.
7
+ */
4
8
  src: string;
9
+ /**
10
+ * Content-addressed asset id (resolved via the asset store). Preferred over
11
+ * `src`: duplicating the shape reuses the same asset (no data duplication).
12
+ */
13
+ assetId?: string;
5
14
  }
6
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,mEAAmE;AACnE,MAAM,WAAW,cAAe,SAAQ,SAAS;IAChD,GAAG,EAAE,MAAM,CAAC;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,mEAAmE;AACnE,MAAM,WAAW,cAAe,SAAQ,SAAS;IAChD;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edv4h/usketch-plugin-shape-image",
3
- "version": "3.0.6",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,6 +12,7 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
+ "@edv4h/usketch-plugin-asset-store": "0.1.0",
15
16
  "@edv4h/usketch-shared": "4.5.0"
16
17
  },
17
18
  "peerDependencies": {