@pixzle/react 0.0.30 → 0.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 +57 -2
- package/dist/PixzleImage.d.ts +4 -6
- package/dist/PixzleImage.js +9 -11
- package/dist/PixzleImage.js.map +1 -1
- package/dist/PixzleImages.d.ts +23 -0
- package/dist/PixzleImages.js +39 -0
- package/dist/PixzleImages.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/usePixzleImage.d.ts +31 -3
- package/dist/usePixzleImage.js +91 -33
- package/dist/usePixzleImage.js.map +1 -1
- package/dist/usePixzleImages.d.ts +24 -0
- package/dist/usePixzleImages.js +72 -0
- package/dist/usePixzleImages.js.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +27 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -10,17 +10,72 @@ npm i @pixzle/react
|
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
+
### PixzleImage
|
|
14
|
+
|
|
15
|
+
Single image restoration component.
|
|
16
|
+
|
|
13
17
|
```tsx
|
|
14
18
|
import { PixzleImage } from '@pixzle/react';
|
|
15
19
|
|
|
20
|
+
// Using manifest URL
|
|
21
|
+
const MyComponentWithManifest = () => {
|
|
22
|
+
return (
|
|
23
|
+
<PixzleImage
|
|
24
|
+
manifest="https://example.com/manifest.json"
|
|
25
|
+
image="https://example.com/fragment.png"
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Using manifest data
|
|
31
|
+
const MyComponentWithManifestData = () => {
|
|
32
|
+
return (
|
|
33
|
+
<PixzleImage
|
|
34
|
+
manifestData={manifestData}
|
|
35
|
+
image="https://example.com/fragment.png"
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Using explicit parameters
|
|
16
41
|
const MyComponent = () => {
|
|
17
42
|
return (
|
|
18
43
|
<PixzleImage
|
|
19
44
|
blockSize={2}
|
|
20
45
|
seed={72411}
|
|
21
|
-
imageInfo={ w: 500, h: 500 }
|
|
22
|
-
image="
|
|
46
|
+
imageInfo={{ w: 500, h: 500 }}
|
|
47
|
+
image="https://example.com/fragment.png"
|
|
23
48
|
/>
|
|
24
49
|
);
|
|
25
50
|
};
|
|
26
51
|
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
### PixzleImages
|
|
56
|
+
|
|
57
|
+
Multiple images restoration component using manifest.
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
import { PixzleImages } from '@pixzle/react';
|
|
61
|
+
|
|
62
|
+
const MyGallery = () => {
|
|
63
|
+
return (
|
|
64
|
+
<PixzleImages
|
|
65
|
+
images={[
|
|
66
|
+
'https://example.com/fragment1.png',
|
|
67
|
+
'https://example.com/fragment2.png',
|
|
68
|
+
]}
|
|
69
|
+
manifest="https://example.com/manifest.json"
|
|
70
|
+
>
|
|
71
|
+
{({ sources }) => (
|
|
72
|
+
<div>
|
|
73
|
+
{sources.map((src, i) => (
|
|
74
|
+
<img key={i} src={src} />
|
|
75
|
+
))}
|
|
76
|
+
</div>
|
|
77
|
+
)}
|
|
78
|
+
</PixzleImages>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
```
|
package/dist/PixzleImage.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import type { ImageInfo } from "@pixzle/core";
|
|
2
1
|
import React from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
seed: number;
|
|
6
|
-
imageInfo: ImageInfo;
|
|
7
|
-
image: string | Blob;
|
|
2
|
+
import { type UsePixzleImageProps } from "./usePixzleImage";
|
|
3
|
+
interface PixzleImageBaseProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, "src" | "onError"> {
|
|
8
4
|
/**
|
|
9
5
|
* Element to render while the image is being restored.
|
|
10
6
|
*/
|
|
@@ -23,4 +19,6 @@ export interface PixzleImageProps extends Omit<React.ImgHTMLAttributes<HTMLImage
|
|
|
23
19
|
*/
|
|
24
20
|
onError?: (error: Error) => void;
|
|
25
21
|
}
|
|
22
|
+
export type PixzleImageProps = PixzleImageBaseProps & UsePixzleImageProps;
|
|
26
23
|
export declare const PixzleImage: React.ForwardRefExoticComponent<PixzleImageProps & React.RefAttributes<HTMLImageElement>>;
|
|
24
|
+
export {};
|
package/dist/PixzleImage.js
CHANGED
|
@@ -37,13 +37,11 @@ exports.PixzleImage = void 0;
|
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const usePixzleImage_1 = require("./usePixzleImage");
|
|
40
|
-
exports.PixzleImage = react_1.default.forwardRef((
|
|
41
|
-
const {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
image,
|
|
46
|
-
});
|
|
40
|
+
exports.PixzleImage = react_1.default.forwardRef((props, ref) => {
|
|
41
|
+
const { image, alt = "", fallback = null, errorFallback = null, protected: isProtected = true, onError,
|
|
42
|
+
// Extract variant-specific props to exclude from imgProps
|
|
43
|
+
blockSize: _blockSize, seed: _seed, imageInfo: _imageInfo, manifest: _manifest, manifestData: _manifestData, ...imgProps } = props;
|
|
44
|
+
const { src, isLoading, error } = (0, usePixzleImage_1.usePixzleImage)(props);
|
|
47
45
|
(0, react_1.useEffect)(() => {
|
|
48
46
|
if (error) {
|
|
49
47
|
console.error("PixzleImage restoration error:", error);
|
|
@@ -62,14 +60,14 @@ exports.PixzleImage = react_1.default.forwardRef(({ blockSize, seed, imageInfo,
|
|
|
62
60
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback });
|
|
63
61
|
}
|
|
64
62
|
// biome-ignore lint/a11y/useAltText: alt is passed via props or defaults to empty string
|
|
65
|
-
return ((0, jsx_runtime_1.jsx)("img", { ref: ref, src: src, alt: alt, ...
|
|
63
|
+
return ((0, jsx_runtime_1.jsx)("img", { ref: ref, src: src, alt: alt, ...imgProps, onContextMenu: (e) => {
|
|
66
64
|
if (isProtected)
|
|
67
65
|
e.preventDefault();
|
|
68
|
-
|
|
66
|
+
imgProps.onContextMenu?.(e);
|
|
69
67
|
}, onDragStart: (e) => {
|
|
70
68
|
if (isProtected)
|
|
71
69
|
e.preventDefault();
|
|
72
|
-
|
|
70
|
+
imgProps.onDragStart?.(e);
|
|
73
71
|
}, style: {
|
|
74
72
|
...(isProtected
|
|
75
73
|
? {
|
|
@@ -78,7 +76,7 @@ exports.PixzleImage = react_1.default.forwardRef(({ blockSize, seed, imageInfo,
|
|
|
78
76
|
WebkitTouchCallout: "none",
|
|
79
77
|
}
|
|
80
78
|
: {}),
|
|
81
|
-
...
|
|
79
|
+
...imgProps.style,
|
|
82
80
|
} }));
|
|
83
81
|
});
|
|
84
82
|
exports.PixzleImage.displayName = "PixzleImage";
|
package/dist/PixzleImage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixzleImage.js","sourceRoot":"","sources":["../src/PixzleImage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"PixzleImage.js","sourceRoot":"","sources":["../src/PixzleImage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAyC;AACzC,qDAA4E;AAyB/D,QAAA,WAAW,GAAG,eAAK,CAAC,UAAU,CACzC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,KAAK,EACL,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,IAAI,EACpB,SAAS,EAAE,WAAW,GAAG,IAAI,EAC7B,OAAO;IACP,0DAA0D;IAC1D,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,aAAa,EAC3B,GAAG,QAAQ,EACZ,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IAExD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAErB,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CACL,2DACG,OAAO,aAAa,KAAK,UAAU;oBAClC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;oBACtB,CAAC,CAAC,aAAa,GAChB,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,2DAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,yFAAyF;IACzF,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,KACJ,QAAQ,EACZ,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,WAAW;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACpC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,EACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,WAAW;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,EACD,KAAK,EACH;YACE,GAAG,CAAC,WAAW;gBACb,CAAC,CAAC;oBACE,UAAU,EAAE,MAAM;oBAClB,gBAAgB,EAAE,MAAM;oBACxB,kBAAkB,EAAE,MAAM;iBAC3B;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,QAAQ,CAAC,KAAK;SACK,GAE1B,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,mBAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ManifestData } from "@pixzle/core";
|
|
2
|
+
import type React from "react";
|
|
3
|
+
import { type UsePixzleImagesResult } from "./usePixzleImages";
|
|
4
|
+
export type PixzleImagesChildrenProps = Pick<UsePixzleImagesResult, "sources" | "isLoading" | "error" | "progress">;
|
|
5
|
+
export interface PixzleImagesProps {
|
|
6
|
+
/** Image sources - URLs or Blobs */
|
|
7
|
+
images: (string | Blob)[];
|
|
8
|
+
/** Manifest URL */
|
|
9
|
+
manifest?: string;
|
|
10
|
+
/** Manifest data object (alternative to manifest) */
|
|
11
|
+
manifestData?: ManifestData;
|
|
12
|
+
/** Render function for restored images */
|
|
13
|
+
children: (props: PixzleImagesChildrenProps) => React.ReactNode;
|
|
14
|
+
/** Fallback while loading */
|
|
15
|
+
fallback?: React.ReactNode;
|
|
16
|
+
/** Error fallback */
|
|
17
|
+
errorFallback?: React.ReactNode | ((error: Error) => React.ReactNode);
|
|
18
|
+
/** Error callback */
|
|
19
|
+
onError?: (error: Error) => void;
|
|
20
|
+
/** Load complete callback */
|
|
21
|
+
onLoad?: (sources: string[]) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const PixzleImages: React.FC<PixzleImagesProps>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PixzleImages = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const usePixzleImages_1 = require("./usePixzleImages");
|
|
7
|
+
const PixzleImages = ({ images, manifest, manifestData, children, fallback = null, errorFallback = null, onError, onLoad, }) => {
|
|
8
|
+
const { sources, isLoading, error, progress } = (0, usePixzleImages_1.usePixzleImages)({
|
|
9
|
+
images,
|
|
10
|
+
manifest,
|
|
11
|
+
manifestData,
|
|
12
|
+
});
|
|
13
|
+
(0, react_1.useEffect)(() => {
|
|
14
|
+
if (error) {
|
|
15
|
+
console.error("PixzleImages restoration error:", error);
|
|
16
|
+
onError?.(error);
|
|
17
|
+
}
|
|
18
|
+
}, [error, onError]);
|
|
19
|
+
(0, react_1.useEffect)(() => {
|
|
20
|
+
if (!isLoading && sources.length > 0 && !error) {
|
|
21
|
+
onLoad?.(sources);
|
|
22
|
+
}
|
|
23
|
+
}, [isLoading, sources, error, onLoad]);
|
|
24
|
+
if (error) {
|
|
25
|
+
if (errorFallback) {
|
|
26
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: typeof errorFallback === "function"
|
|
27
|
+
? errorFallback(error)
|
|
28
|
+
: errorFallback }));
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (isLoading) {
|
|
33
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback });
|
|
34
|
+
}
|
|
35
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({ sources, isLoading, error, progress }) });
|
|
36
|
+
};
|
|
37
|
+
exports.PixzleImages = PixzleImages;
|
|
38
|
+
exports.PixzleImages.displayName = "PixzleImages";
|
|
39
|
+
//# sourceMappingURL=PixzleImages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixzleImages.js","sourceRoot":"","sources":["../src/PixzleImages.tsx"],"names":[],"mappings":";;;;AAEA,iCAAkC;AAClC,uDAAgF;AA0BzE,MAAM,YAAY,GAAgC,CAAC,EACxD,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,IAAI,EACpB,OAAO,EACP,MAAM,GACP,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAA,iCAAe,EAAC;QAC9D,MAAM;QACN,QAAQ;QACR,YAAY;KACb,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAErB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAExC,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CACL,2DACG,OAAO,aAAa,KAAK,UAAU;oBAClC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;oBACtB,CAAC,CAAC,aAAa,GAChB,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,2DAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,OAAO,2DAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAI,CAAC;AAClE,CAAC,CAAC;AA/CW,QAAA,YAAY,gBA+CvB;AAEF,oBAAY,CAAC,WAAW,GAAG,cAAc,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,4 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./PixzleImage"), exports);
|
|
18
18
|
__exportStar(require("./usePixzleImage"), exports);
|
|
19
|
+
__exportStar(require("./PixzleImages"), exports);
|
|
20
|
+
__exportStar(require("./usePixzleImages"), exports);
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,oDAAkC"}
|
package/dist/usePixzleImage.d.ts
CHANGED
|
@@ -1,13 +1,41 @@
|
|
|
1
|
-
import type { ImageInfo } from "@pixzle/core";
|
|
2
|
-
|
|
1
|
+
import type { ImageInfo, ManifestData } from "@pixzle/core";
|
|
2
|
+
/**
|
|
3
|
+
* Props for usePixzleImage hook with explicit parameters
|
|
4
|
+
*/
|
|
5
|
+
export interface UsePixzleImageExplicitProps {
|
|
3
6
|
blockSize: number;
|
|
4
7
|
seed: number;
|
|
5
8
|
imageInfo: ImageInfo;
|
|
6
9
|
image: string | Blob;
|
|
10
|
+
manifest?: never;
|
|
11
|
+
manifestData?: never;
|
|
7
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Props for usePixzleImage hook with manifest URL
|
|
15
|
+
*/
|
|
16
|
+
export interface UsePixzleImageManifestUrlProps {
|
|
17
|
+
image: string | Blob;
|
|
18
|
+
manifest: string;
|
|
19
|
+
manifestData?: never;
|
|
20
|
+
blockSize?: never;
|
|
21
|
+
seed?: never;
|
|
22
|
+
imageInfo?: never;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Props for usePixzleImage hook with manifest data
|
|
26
|
+
*/
|
|
27
|
+
export interface UsePixzleImageManifestDataProps {
|
|
28
|
+
image: string | Blob;
|
|
29
|
+
manifestData: ManifestData;
|
|
30
|
+
manifest?: never;
|
|
31
|
+
blockSize?: never;
|
|
32
|
+
seed?: never;
|
|
33
|
+
imageInfo?: never;
|
|
34
|
+
}
|
|
35
|
+
export type UsePixzleImageProps = UsePixzleImageExplicitProps | UsePixzleImageManifestUrlProps | UsePixzleImageManifestDataProps;
|
|
8
36
|
export interface UsePixzleImageResult {
|
|
9
37
|
src: string | undefined;
|
|
10
38
|
isLoading: boolean;
|
|
11
39
|
error: Error | null;
|
|
12
40
|
}
|
|
13
|
-
export declare const usePixzleImage: (
|
|
41
|
+
export declare const usePixzleImage: (props: UsePixzleImageProps) => UsePixzleImageResult;
|
package/dist/usePixzleImage.js
CHANGED
|
@@ -1,54 +1,112 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
36
|
exports.usePixzleImage = void 0;
|
|
7
|
-
const browser_1 =
|
|
37
|
+
const browser_1 = __importStar(require("@pixzle/browser"));
|
|
8
38
|
const react_1 = require("react");
|
|
9
|
-
const
|
|
39
|
+
const utils_1 = require("./utils");
|
|
40
|
+
function isExplicitProps(props) {
|
|
41
|
+
return "blockSize" in props && props.blockSize !== undefined;
|
|
42
|
+
}
|
|
43
|
+
function isManifestUrlProps(props) {
|
|
44
|
+
return "manifest" in props && props.manifest !== undefined;
|
|
45
|
+
}
|
|
46
|
+
function isManifestDataProps(props) {
|
|
47
|
+
return "manifestData" in props && props.manifestData !== undefined;
|
|
48
|
+
}
|
|
49
|
+
const usePixzleImage = (props) => {
|
|
10
50
|
const [src, setSrc] = (0, react_1.useState)(undefined);
|
|
11
51
|
const [error, setError] = (0, react_1.useState)(null);
|
|
12
52
|
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
53
|
+
const { image } = props;
|
|
54
|
+
// Extract dependencies based on props type
|
|
55
|
+
const blockSize = isExplicitProps(props) ? props.blockSize : undefined;
|
|
56
|
+
const seed = isExplicitProps(props) ? props.seed : undefined;
|
|
57
|
+
const imageInfo = isExplicitProps(props) ? props.imageInfo : undefined;
|
|
58
|
+
const manifest = isManifestUrlProps(props) ? props.manifest : undefined;
|
|
59
|
+
const manifestData = isManifestDataProps(props)
|
|
60
|
+
? props.manifestData
|
|
61
|
+
: undefined;
|
|
13
62
|
(0, react_1.useEffect)(() => {
|
|
14
63
|
let active = true;
|
|
15
64
|
setIsLoading(true);
|
|
16
65
|
setError(null);
|
|
17
66
|
const restore = async () => {
|
|
18
67
|
try {
|
|
68
|
+
let resolvedBlockSize;
|
|
69
|
+
let resolvedSeed;
|
|
70
|
+
let resolvedImageInfo;
|
|
71
|
+
if (blockSize !== undefined && seed !== undefined && imageInfo) {
|
|
72
|
+
// Explicit props
|
|
73
|
+
resolvedBlockSize = blockSize;
|
|
74
|
+
resolvedSeed = seed;
|
|
75
|
+
resolvedImageInfo = imageInfo;
|
|
76
|
+
}
|
|
77
|
+
else if (manifest) {
|
|
78
|
+
// Fetch manifest from URL
|
|
79
|
+
const fetchedManifest = await (0, browser_1.fetchManifest)(manifest);
|
|
80
|
+
resolvedBlockSize = fetchedManifest.config.blockSize;
|
|
81
|
+
resolvedSeed = fetchedManifest.config.seed;
|
|
82
|
+
resolvedImageInfo = fetchedManifest.images[0];
|
|
83
|
+
}
|
|
84
|
+
else if (manifestData) {
|
|
85
|
+
// Use provided manifest data
|
|
86
|
+
resolvedBlockSize = manifestData.config.blockSize;
|
|
87
|
+
resolvedSeed = manifestData.config.seed;
|
|
88
|
+
resolvedImageInfo = manifestData.images[0];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw new Error("Either (blockSize, seed, imageInfo) or manifest/manifestData is required");
|
|
92
|
+
}
|
|
19
93
|
const restoredBitmap = await browser_1.default.restoreImage({
|
|
20
94
|
image,
|
|
21
|
-
blockSize,
|
|
22
|
-
seed,
|
|
23
|
-
imageInfo,
|
|
95
|
+
blockSize: resolvedBlockSize,
|
|
96
|
+
seed: resolvedSeed,
|
|
97
|
+
imageInfo: resolvedImageInfo,
|
|
24
98
|
});
|
|
25
99
|
if (!active)
|
|
26
100
|
return;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
ctx.drawImage(restoredBitmap, 0, 0);
|
|
35
|
-
canvas.toBlob((blob) => {
|
|
36
|
-
if (!active)
|
|
37
|
-
return;
|
|
38
|
-
if (blob) {
|
|
39
|
-
const url = URL.createObjectURL(blob);
|
|
40
|
-
setSrc((prev) => {
|
|
41
|
-
if (prev)
|
|
42
|
-
URL.revokeObjectURL(prev);
|
|
43
|
-
return url;
|
|
44
|
-
});
|
|
45
|
-
setIsLoading(false);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
setError(new Error("Failed to create blob from canvas"));
|
|
49
|
-
setIsLoading(false);
|
|
50
|
-
}
|
|
101
|
+
const url = await (0, utils_1.imageBitmapToBlobUrl)(restoredBitmap);
|
|
102
|
+
if (!active)
|
|
103
|
+
return;
|
|
104
|
+
setSrc((prev) => {
|
|
105
|
+
if (prev)
|
|
106
|
+
URL.revokeObjectURL(prev);
|
|
107
|
+
return url;
|
|
51
108
|
});
|
|
109
|
+
setIsLoading(false);
|
|
52
110
|
}
|
|
53
111
|
catch (err) {
|
|
54
112
|
if (active) {
|
|
@@ -61,7 +119,7 @@ const usePixzleImage = ({ blockSize, seed, imageInfo, image, }) => {
|
|
|
61
119
|
return () => {
|
|
62
120
|
active = false;
|
|
63
121
|
};
|
|
64
|
-
}, [blockSize, seed, imageInfo, image]);
|
|
122
|
+
}, [blockSize, seed, imageInfo, image, manifest, manifestData]);
|
|
65
123
|
// Cleanup URL on unmount
|
|
66
124
|
(0, react_1.useEffect)(() => {
|
|
67
125
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePixzleImage.js","sourceRoot":"","sources":["../src/usePixzleImage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePixzleImage.js","sourceRoot":"","sources":["../src/usePixzleImage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ManifestData } from "@pixzle/core";
|
|
2
|
+
export interface UsePixzleImagesProps {
|
|
3
|
+
/** Image sources - URLs or Blobs */
|
|
4
|
+
images: (string | Blob)[];
|
|
5
|
+
/** Manifest URL */
|
|
6
|
+
manifest?: string;
|
|
7
|
+
/** Manifest data object (alternative to manifest) */
|
|
8
|
+
manifestData?: ManifestData;
|
|
9
|
+
/** Whether to auto-start restoration */
|
|
10
|
+
autoRestore?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface UsePixzleImagesResult {
|
|
13
|
+
/** Restored image URLs (object URLs) */
|
|
14
|
+
sources: string[];
|
|
15
|
+
/** Loading state */
|
|
16
|
+
isLoading: boolean;
|
|
17
|
+
/** Error if restoration failed */
|
|
18
|
+
error: Error | null;
|
|
19
|
+
/** Progress (0-1) */
|
|
20
|
+
progress: number;
|
|
21
|
+
/** Manually trigger restoration */
|
|
22
|
+
restore: () => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export declare const usePixzleImages: ({ images, manifest, manifestData, autoRestore, }: UsePixzleImagesProps) => UsePixzleImagesResult;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.usePixzleImages = void 0;
|
|
7
|
+
const browser_1 = __importDefault(require("@pixzle/browser"));
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
const usePixzleImages = ({ images, manifest, manifestData, autoRestore = true, }) => {
|
|
11
|
+
const [sources, setSources] = (0, react_1.useState)([]);
|
|
12
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
13
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
14
|
+
const [progress, setProgress] = (0, react_1.useState)(0);
|
|
15
|
+
const sourcesRef = (0, react_1.useRef)([]);
|
|
16
|
+
// Keep ref in sync with sources state
|
|
17
|
+
(0, react_1.useEffect)(() => {
|
|
18
|
+
sourcesRef.current = sources;
|
|
19
|
+
}, [sources]);
|
|
20
|
+
const restore = (0, react_1.useCallback)(async () => {
|
|
21
|
+
if (!images.length)
|
|
22
|
+
return;
|
|
23
|
+
if (!manifest && !manifestData)
|
|
24
|
+
return;
|
|
25
|
+
setIsLoading(true);
|
|
26
|
+
setError(null);
|
|
27
|
+
setProgress(0);
|
|
28
|
+
try {
|
|
29
|
+
const restoredBitmaps = await browser_1.default.restore({
|
|
30
|
+
images,
|
|
31
|
+
manifest,
|
|
32
|
+
manifestData,
|
|
33
|
+
});
|
|
34
|
+
const urls = [];
|
|
35
|
+
for (let i = 0; i < restoredBitmaps.length; i++) {
|
|
36
|
+
const bitmap = restoredBitmaps[i];
|
|
37
|
+
const url = await (0, utils_1.imageBitmapToBlobUrl)(bitmap);
|
|
38
|
+
urls.push(url);
|
|
39
|
+
setProgress((i + 1) / restoredBitmaps.length);
|
|
40
|
+
}
|
|
41
|
+
// Cleanup old URLs
|
|
42
|
+
setSources((prev) => {
|
|
43
|
+
for (const url of prev) {
|
|
44
|
+
URL.revokeObjectURL(url);
|
|
45
|
+
}
|
|
46
|
+
return urls;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
setIsLoading(false);
|
|
54
|
+
}
|
|
55
|
+
}, [images, manifest, manifestData]);
|
|
56
|
+
(0, react_1.useEffect)(() => {
|
|
57
|
+
if (autoRestore) {
|
|
58
|
+
restore();
|
|
59
|
+
}
|
|
60
|
+
}, [restore, autoRestore]);
|
|
61
|
+
// Cleanup URLs on unmount
|
|
62
|
+
(0, react_1.useEffect)(() => {
|
|
63
|
+
return () => {
|
|
64
|
+
for (const url of sourcesRef.current) {
|
|
65
|
+
URL.revokeObjectURL(url);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}, []);
|
|
69
|
+
return { sources, isLoading, error, progress, restore };
|
|
70
|
+
};
|
|
71
|
+
exports.usePixzleImages = usePixzleImages;
|
|
72
|
+
//# sourceMappingURL=usePixzleImages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePixzleImages.js","sourceRoot":"","sources":["../src/usePixzleImages.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.imageBitmapToBlobUrl = imageBitmapToBlobUrl;
|
|
4
|
+
/**
|
|
5
|
+
* Convert an ImageBitmap to a Blob URL
|
|
6
|
+
* @param bitmap The ImageBitmap to convert
|
|
7
|
+
* @returns Promise resolving to a Blob URL string
|
|
8
|
+
*/
|
|
9
|
+
async function imageBitmapToBlobUrl(bitmap) {
|
|
10
|
+
const canvas = document.createElement("canvas");
|
|
11
|
+
canvas.width = bitmap.width;
|
|
12
|
+
canvas.height = bitmap.height;
|
|
13
|
+
const ctx = canvas.getContext("2d");
|
|
14
|
+
if (!ctx)
|
|
15
|
+
throw new Error("Could not get 2D context");
|
|
16
|
+
ctx.drawImage(bitmap, 0, 0);
|
|
17
|
+
const blob = await new Promise((resolve, reject) => {
|
|
18
|
+
canvas.toBlob((b) => {
|
|
19
|
+
if (b)
|
|
20
|
+
resolve(b);
|
|
21
|
+
else
|
|
22
|
+
reject(new Error("Failed to create blob"));
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
return URL.createObjectURL(blob);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAKA,oDAmBC;AAxBD;;;;GAIG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAmB;IAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEtD,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;gBACb,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixzle/react",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "React components for pixzle",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@pixzle/browser": "0.0
|
|
38
|
-
"@pixzle/core": "0.0
|
|
37
|
+
"@pixzle/browser": "0.1.0",
|
|
38
|
+
"@pixzle/core": "0.1.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=16.8.0",
|