layershift 0.2.0 → 0.2.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/README.md +119 -60
- package/dist/components/layershift.js +28 -28
- package/dist/npm/layershift.es.js +895 -851
- package/dist/types/components/layershift/layershift-element.d.ts +8 -7
- package/dist/types/components/layershift/layershift-element.d.ts.map +1 -1
- package/dist/types/components/layershift/lifecycle.d.ts +77 -0
- package/dist/types/components/layershift/lifecycle.d.ts.map +1 -0
- package/dist/types/components/layershift/portal-element.d.ts +8 -7
- package/dist/types/components/layershift/portal-element.d.ts.map +1 -1
- package/dist/types/parallax-renderer.d.ts.map +1 -1
- package/dist/types/portal-renderer.d.ts +1 -0
- package/dist/types/portal-renderer.d.ts.map +1 -1
- package/package.json +15 -1
|
@@ -12,18 +12,19 @@
|
|
|
12
12
|
* depth-meta="depth-meta.json"
|
|
13
13
|
* ></layershift-parallax>
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
import type { ManagedElement } from './lifecycle';
|
|
16
|
+
export declare class LayershiftElement extends HTMLElement implements ManagedElement {
|
|
16
17
|
static readonly TAG_NAME = "layershift-parallax";
|
|
17
18
|
static get observedAttributes(): string[];
|
|
19
|
+
readonly reinitAttributes: string[];
|
|
18
20
|
private shadow;
|
|
19
21
|
private container;
|
|
20
22
|
private renderer;
|
|
21
23
|
private inputHandler;
|
|
22
24
|
private depthWorker;
|
|
23
25
|
private video;
|
|
24
|
-
private initialized;
|
|
25
|
-
private abortController;
|
|
26
26
|
private loopCount;
|
|
27
|
+
private readonly lifecycle;
|
|
27
28
|
constructor();
|
|
28
29
|
private getAttrFloat;
|
|
29
30
|
private getAttrBool;
|
|
@@ -47,10 +48,10 @@ export declare class LayershiftElement extends HTMLElement {
|
|
|
47
48
|
private attachVideoEventListeners;
|
|
48
49
|
connectedCallback(): void;
|
|
49
50
|
disconnectedCallback(): void;
|
|
50
|
-
attributeChangedCallback(
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
|
|
52
|
+
setupShadowDOM(): void;
|
|
53
|
+
doInit(signal: AbortSignal): Promise<void>;
|
|
53
54
|
private createVideoElement;
|
|
54
|
-
|
|
55
|
+
doDispose(): void;
|
|
55
56
|
}
|
|
56
57
|
//# sourceMappingURL=layershift-element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layershift-element.d.ts","sourceRoot":"","sources":["../../../../src/components/layershift/layershift-element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"layershift-element.d.ts","sourceRoot":"","sources":["../../../../src/components/layershift/layershift-element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAoBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkKlD,qBAAa,iBAAkB,SAAQ,WAAY,YAAW,cAAc;IAC1E,MAAM,CAAC,QAAQ,CAAC,QAAQ,yBAAyB;IAEjD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAOxC;IAED,QAAQ,CAAC,gBAAgB,WAAsC;IAE/D,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;;IAU7C,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;IASnB,OAAO,KAAK,SAAS,GAA0E;IAC/F,OAAO,KAAK,SAAS,GAA0E;IAC/F,OAAO,KAAK,WAAW,GAA8E;IACrG,OAAO,KAAK,QAAQ,GAAuE;IAC3F,OAAO,KAAK,cAAc,GAAuE;IACjG,OAAO,KAAK,UAAU,GAA+D;IACrF,OAAO,KAAK,UAAU,GAAiE;IAIvF;;;;OAIG;IACH,OAAO,CAAC,IAAI;IAUZ;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA2BjC,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAI5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAM1F,cAAc,IAAI,IAAI;IAkChB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAmJlC,kBAAkB;IAuChC,SAAS,IAAI,IAAI;CAsBlB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared lifecycle management for Layershift Web Components.
|
|
3
|
+
*
|
|
4
|
+
* Solves the fundamental tension between Custom Element lifecycle callbacks
|
|
5
|
+
* (synchronous, DOM-driven) and React 19's rendering model (asynchronous
|
|
6
|
+
* attribute setting via useEffect, Strict Mode double-invoke).
|
|
7
|
+
*
|
|
8
|
+
* ## Problems solved:
|
|
9
|
+
*
|
|
10
|
+
* 1. **Premature init**: `connectedCallback` fires before React sets attrs
|
|
11
|
+
* via `useEffect`. The element must NOT init until all required attrs exist.
|
|
12
|
+
*
|
|
13
|
+
* 2. **Concurrent inits**: Multiple `attributeChangedCallback` calls during
|
|
14
|
+
* a single React render cycle can each trigger `init()`. Without a guard,
|
|
15
|
+
* multiple async inits run concurrently, each creating WebGL contexts.
|
|
16
|
+
*
|
|
17
|
+
* 3. **Stale abort controller**: React Strict Mode unmount calls `dispose()`,
|
|
18
|
+
* nulling the abort controller. But the first init's Promise.all is still
|
|
19
|
+
* in flight. When it resumes, it checks `this.abortController` which now
|
|
20
|
+
* points to a NEW controller from the second init — the check passes
|
|
21
|
+
* incorrectly. Fix: per-invocation abort tokens.
|
|
22
|
+
*
|
|
23
|
+
* 4. **WebGL context leaks**: Renderers create WebGL contexts but `dispose()`
|
|
24
|
+
* never explicitly releases them. Orphaned contexts accumulate until the
|
|
25
|
+
* browser forcibly evicts the oldest, causing GL_INVALID_FRAMEBUFFER errors.
|
|
26
|
+
* Fix: explicit `WEBGL_lose_context.loseContext()` + canvas removal.
|
|
27
|
+
*
|
|
28
|
+
* 5. **Duplicate init on same-value setAttribute**: React Strict Mode
|
|
29
|
+
* remount sets the same attribute values, triggering `attributeChangedCallback`
|
|
30
|
+
* even though nothing changed. Fix: early return when oldVal === newVal.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Interface that Layershift elements must implement to use the lifecycle
|
|
34
|
+
* manager. The lifecycle manager calls these methods at the right time.
|
|
35
|
+
*/
|
|
36
|
+
export interface ManagedElement {
|
|
37
|
+
/** The attributes that trigger re-initialization when changed. */
|
|
38
|
+
readonly reinitAttributes: string[];
|
|
39
|
+
/** Set up the Shadow DOM structure (style + container). */
|
|
40
|
+
setupShadowDOM(): void;
|
|
41
|
+
/**
|
|
42
|
+
* The actual initialization logic. Receives a per-invocation AbortSignal
|
|
43
|
+
* that the element MUST check after every async operation. If the signal
|
|
44
|
+
* is aborted, clean up partial state and return.
|
|
45
|
+
*/
|
|
46
|
+
doInit(signal: AbortSignal): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Clean up all resources: renderers, workers, video elements, etc.
|
|
49
|
+
* Called by the lifecycle manager before re-init and on disconnect.
|
|
50
|
+
* Does NOT need to handle the abort controller — the manager owns that.
|
|
51
|
+
*/
|
|
52
|
+
doDispose(): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Lifecycle state managed on behalf of the element. Attached as a private
|
|
56
|
+
* field on each element instance.
|
|
57
|
+
*/
|
|
58
|
+
export declare class LifecycleManager {
|
|
59
|
+
private abortController;
|
|
60
|
+
private initialized;
|
|
61
|
+
private initializing;
|
|
62
|
+
private element;
|
|
63
|
+
constructor(element: HTMLElement & ManagedElement);
|
|
64
|
+
onConnected(): void;
|
|
65
|
+
onDisconnected(): void;
|
|
66
|
+
onAttributeChanged(name: string, oldVal: string | null, newVal: string | null): void;
|
|
67
|
+
get isInitialized(): boolean;
|
|
68
|
+
markInitialized(): void;
|
|
69
|
+
private tryInit;
|
|
70
|
+
private cancelInit;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Release a WebGL context explicitly to free GPU resources.
|
|
74
|
+
* Call this in renderer dispose() methods.
|
|
75
|
+
*/
|
|
76
|
+
export declare function releaseWebGLContext(gl: WebGL2RenderingContext | WebGLRenderingContext | null): void;
|
|
77
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/components/layershift/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAEpC,2DAA2D;IAC3D,cAAc,IAAI,IAAI,CAAC;IAEvB;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;OAIG;IACH,SAAS,IAAI,IAAI,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAA+B;gBAElC,OAAO,EAAE,WAAW,GAAG,cAAc;IAMjD,WAAW,IAAI,IAAI;IAKnB,cAAc,IAAI,IAAI;IAMtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAepF,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,eAAe,IAAI,IAAI;YAOT,OAAO;IA4BrB,OAAO,CAAC,UAAU;CAKnB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,sBAAsB,GAAG,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAInG"}
|
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
* logo-src="logo.svg"
|
|
15
15
|
* ></layershift-portal>
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
import type { ManagedElement } from './lifecycle';
|
|
18
|
+
export declare class LayershiftPortalElement extends HTMLElement implements ManagedElement {
|
|
18
19
|
static readonly TAG_NAME = "layershift-portal";
|
|
19
20
|
static get observedAttributes(): string[];
|
|
21
|
+
readonly reinitAttributes: string[];
|
|
20
22
|
private shadow;
|
|
21
23
|
private container;
|
|
22
24
|
private renderer;
|
|
@@ -24,9 +26,8 @@ export declare class LayershiftPortalElement extends HTMLElement {
|
|
|
24
26
|
private depthWorker;
|
|
25
27
|
private video;
|
|
26
28
|
private mesh;
|
|
27
|
-
private initialized;
|
|
28
|
-
private abortController;
|
|
29
29
|
private loopCount;
|
|
30
|
+
private readonly lifecycle;
|
|
30
31
|
constructor();
|
|
31
32
|
private getAttrFloat;
|
|
32
33
|
private getAttrBool;
|
|
@@ -79,10 +80,10 @@ export declare class LayershiftPortalElement extends HTMLElement {
|
|
|
79
80
|
private attachVideoEventListeners;
|
|
80
81
|
connectedCallback(): void;
|
|
81
82
|
disconnectedCallback(): void;
|
|
82
|
-
attributeChangedCallback(
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
|
|
84
|
+
setupShadowDOM(): void;
|
|
85
|
+
doInit(signal: AbortSignal): Promise<void>;
|
|
85
86
|
private createVideoElement;
|
|
86
|
-
|
|
87
|
+
doDispose(): void;
|
|
87
88
|
}
|
|
88
89
|
//# sourceMappingURL=portal-element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-element.d.ts","sourceRoot":"","sources":["../../../../src/components/layershift/portal-element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"portal-element.d.ts","sourceRoot":"","sources":["../../../../src/components/layershift/portal-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallax-renderer.d.ts","sourceRoot":"","sources":["../../src/parallax-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkPrD,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiHD,qBAAa,gBAAgB;IAC3B,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAO;IAEjD,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAM;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,EAAE,CAAuC;IACjD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,GAAG,CAAuC;IAClD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IAGxC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAK;IAGxB,OAAO,CAAC,WAAW,CAAU;IAG7B,OAAO,CAAC,SAAS,CAAkD;IACnE,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,aAAa,CAAiC;IAEtD;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAqE;IAGzF,OAAO,CAAC,oBAAoB,CAAK;IAEjC,uDAAuD;IACvD,OAAO,CAAC,UAAU,CAAK;IAEvB,8DAA8D;IAC9D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAU;IAEzB,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD;;;;;;;OAOG;gBAED,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,sBAAsB;IAiDhC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAwDlF;;;;;;;;;OASG;IACH,KAAK,CACH,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,EAC1C,SAAS,EAAE,MAAM,aAAa,EAC9B,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,GAChE,IAAI;IAoBP,oDAAoD;IACpD,IAAI,IAAI,IAAI;IAmBZ,oDAAoD;IACpD,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"parallax-renderer.d.ts","sourceRoot":"","sources":["../../src/parallax-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal-renderer.d.ts","sourceRoot":"","sources":["../../src/portal-renderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"portal-renderer.d.ts","sourceRoot":"","sources":["../../src/portal-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "layershift",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Embeddable video effects as Web Components. Drop-in parallax, depth-aware motion, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/components/layershift.js",
|
|
@@ -62,16 +62,30 @@
|
|
|
62
62
|
"homepage": "https://layershift.io",
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@playwright/test": "^1.58.2",
|
|
65
|
+
"@tailwindcss/vite": "^4.2.0",
|
|
65
66
|
"@types/jsdom": "^27.0.0",
|
|
67
|
+
"@types/react": "^19.2.14",
|
|
68
|
+
"@types/react-dom": "^19.2.3",
|
|
69
|
+
"@vitejs/plugin-react": "^5.1.4",
|
|
66
70
|
"@vitest/browser": "^4.0.18",
|
|
67
71
|
"@xenova/transformers": "^2.17.2",
|
|
68
72
|
"happy-dom": "^20.6.1",
|
|
69
73
|
"jsdom": "^28.1.0",
|
|
70
74
|
"playwright": "^1.58.2",
|
|
71
75
|
"sharp": "^0.34.5",
|
|
76
|
+
"tailwindcss": "^4.2.0",
|
|
72
77
|
"tsx": "^4.21.0",
|
|
73
78
|
"typescript": "^5.9.3",
|
|
74
79
|
"vite": "^7.3.1",
|
|
75
80
|
"vitest": "^4.0.18"
|
|
81
|
+
},
|
|
82
|
+
"dependencies": {
|
|
83
|
+
"class-variance-authority": "^0.7.1",
|
|
84
|
+
"clsx": "^2.1.1",
|
|
85
|
+
"lucide-react": "^0.574.0",
|
|
86
|
+
"react": "^19.2.4",
|
|
87
|
+
"react-dom": "^19.2.4",
|
|
88
|
+
"tailwind-merge": "^3.5.0",
|
|
89
|
+
"zustand": "^5.0.11"
|
|
76
90
|
}
|
|
77
91
|
}
|