@gxpl/sdk 0.0.30 → 0.0.32
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/lib/sdk-nextjs/components/Article.js +4 -16
- package/lib/sdk-nextjs/components/Scene.js +2 -2
- package/lib/sdk-nextjs/components/Section/Sections.d.ts +8 -0
- package/lib/sdk-nextjs/components/Section/Sections.js +31 -0
- package/lib/sdk-nextjs/components/fixedLayers/FixedLayer.js +3 -3
- package/lib/sdk-nextjs/utils/ArticleRectManager/ArticleRectObserver.js +2 -2
- package/lib/sdk-nextjs/utils/ArticleRectManager/useArticleRectObserver.js +0 -5
- package/package.json +1 -1
|
@@ -7,9 +7,6 @@ exports.Article = void 0;
|
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const react_1 = require("react");
|
|
9
9
|
const style_1 = __importDefault(require("styled-jsx/style"));
|
|
10
|
-
const Section_1 = require("./Section/Section");
|
|
11
|
-
const Item_1 = require("./items/Item");
|
|
12
|
-
const useArticleRectObserver_1 = require("../utils/ArticleRectManager/useArticleRectObserver");
|
|
13
10
|
const ArticleRectContext_1 = require("../provider/ArticleRectContext");
|
|
14
11
|
const Scene_1 = require("./Scene");
|
|
15
12
|
const InteractionsContext_1 = require("../provider/InteractionsContext");
|
|
@@ -17,24 +14,15 @@ const WebGLContextManagerContext_1 = require("../provider/WebGLContextManagerCon
|
|
|
17
14
|
const effects_1 = require("@cntrl-site/effects");
|
|
18
15
|
const KeyframesContext_1 = require("../provider/KeyframesContext");
|
|
19
16
|
const Keyframes_1 = require("../provider/Keyframes");
|
|
17
|
+
const Sections_1 = require("./Section/Sections");
|
|
18
|
+
const useArticleRectObserver_1 = require("../utils/ArticleRectManager/useArticleRectObserver");
|
|
20
19
|
const Article = ({ article, styles, keyframes }) => {
|
|
20
|
+
const articleRectObserver = (0, useArticleRectObserver_1.useArticleRectObserver)();
|
|
21
21
|
const sceneRef = (0, react_1.useRef)(null);
|
|
22
|
-
const articleRectObserver = (0, useArticleRectObserver_1.useArticleRectObserver)(sceneRef.current);
|
|
23
22
|
const id = (0, react_1.useId)();
|
|
24
|
-
const [articleHeight, setArticleHeight] = (0, react_1.useState)(1);
|
|
25
23
|
const keyframesRepo = (0, react_1.useMemo)(() => new Keyframes_1.Keyframes(keyframes), [keyframes]);
|
|
26
|
-
(0, react_1.useEffect)(() => {
|
|
27
|
-
if (!articleRectObserver)
|
|
28
|
-
return;
|
|
29
|
-
return articleRectObserver.on('resize', (rect) => {
|
|
30
|
-
setArticleHeight(rect.height / rect.width);
|
|
31
|
-
});
|
|
32
|
-
}, [articleRectObserver]);
|
|
33
24
|
const webglContextManager = (0, react_1.useMemo)(() => new effects_1.WebGLContextManager(), []);
|
|
34
|
-
return ((0, jsx_runtime_1.jsx)(ArticleRectContext_1.ArticleRectContext.Provider, { value: articleRectObserver, children: (0, jsx_runtime_1.jsxs)(InteractionsContext_1.InteractionsProvider, { article: article, children: [(0, jsx_runtime_1.jsx)(KeyframesContext_1.KeyframesContext.Provider, { value: keyframesRepo, children: (0, jsx_runtime_1.jsx)(Scene_1.Scene, { id: article.id, styles: styles,
|
|
35
|
-
const data = {};
|
|
36
|
-
return ((0, jsx_runtime_1.jsx)(Section_1.Section, { section: section, data: data, children: article.sections[i].items.map(item => ((0, jsx_runtime_1.jsx)(Item_1.Item, { item: item, sectionId: section.id, articleHeight: articleHeight }, item.id))) }, section.id));
|
|
37
|
-
}) }) }) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
|
|
25
|
+
return ((0, jsx_runtime_1.jsx)(ArticleRectContext_1.ArticleRectContext.Provider, { value: articleRectObserver, children: (0, jsx_runtime_1.jsxs)(InteractionsContext_1.InteractionsProvider, { article: article, children: [(0, jsx_runtime_1.jsx)(KeyframesContext_1.KeyframesContext.Provider, { value: keyframesRepo, children: (0, jsx_runtime_1.jsx)(Scene_1.Scene, { elRef: sceneRef, id: article.id, styles: styles, children: (0, jsx_runtime_1.jsx)(WebGLContextManagerContext_1.WebglContextManagerContext.Provider, { value: webglContextManager, children: (0, jsx_runtime_1.jsx)(Sections_1.Sections, { article: article, container: sceneRef.current }) }) }) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
|
|
38
26
|
.article {
|
|
39
27
|
position: relative;
|
|
40
28
|
overflow: clip;
|
|
@@ -135,7 +135,7 @@ const Scene = ({ children, id, styles: sceneStyles, elRef }) => {
|
|
|
135
135
|
}, [isTransitioning, actorRef, id]);
|
|
136
136
|
const isFixed = isControlledTransitioning || isSettling || isInstantTransitioning;
|
|
137
137
|
const transitionStyle = type === 'slide' ? 'transform' : 'opacity';
|
|
138
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("div", { ref: elRef, className: "article-wrapper", style: Object.assign(Object.assign({}, layoutDeviationStyle), { width: '100vw', height: '100%', position: isFixed ? 'fixed' : 'absolute', transform: sceneStyles && (sceneStyles.x !== 0 || sceneStyles.y !== 0) ? `translate(${sceneStyles.x}px, ${sceneStyles.y}px)` : 'none', transition: isSettling || isInstantTransitioning ? `${transitionStyle} 0.25s ease-out` : 'none', overflowY: isFixed ? 'hidden' : 'scroll', opacity: (_a = sceneStyles === null || sceneStyles === void 0 ? void 0 : sceneStyles.opacity) !== null && _a !== void 0 ? _a : 1, 'WebkitOverflowScrolling': 'touch' // prevent glitch on Safari (fast scroll to top/bottom sides)
|
|
138
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("div", { ref: elRef, className: "article-wrapper", style: Object.assign(Object.assign({}, layoutDeviationStyle), { width: '100vw', height: '100%', position: isFixed ? 'fixed' : 'absolute', transform: sceneStyles && (sceneStyles.x !== 0 || sceneStyles.y !== 0) ? `translate(${sceneStyles.x}px, ${sceneStyles.y}px)` : 'none', transition: isSettling || isInstantTransitioning ? `${transitionStyle} 0.25s ease-out` : 'none', overflowY: isFixed ? 'hidden' : 'scroll', overflowX: 'clip', opacity: (_a = sceneStyles === null || sceneStyles === void 0 ? void 0 : sceneStyles.opacity) !== null && _a !== void 0 ? _a : 1, 'WebkitOverflowScrolling': 'touch' // prevent glitch on Safari (fast scroll to top/bottom sides)
|
|
139
139
|
}), children: children }) }));
|
|
140
140
|
};
|
|
141
141
|
exports.Scene = Scene;
|
|
@@ -159,6 +159,6 @@ function canTransition(direction, el) {
|
|
|
159
159
|
case 'west':
|
|
160
160
|
return el.scrollLeft === 0;
|
|
161
161
|
case 'east':
|
|
162
|
-
return el.scrollLeft + el.clientWidth ===
|
|
162
|
+
return el.scrollLeft + el.clientWidth === window.innerWidth;
|
|
163
163
|
}
|
|
164
164
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Sections = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const ArticleRectContext_1 = require("../../provider/ArticleRectContext");
|
|
7
|
+
const Section_1 = require("./Section");
|
|
8
|
+
const Item_1 = require("../items/Item");
|
|
9
|
+
const Sections = ({ article, container }) => {
|
|
10
|
+
const articleRectObserver = (0, react_1.useContext)(ArticleRectContext_1.ArticleRectContext);
|
|
11
|
+
const [articleHeight, setArticleHeight] = (0, react_1.useState)(1);
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
if (!articleRectObserver || !container)
|
|
14
|
+
return;
|
|
15
|
+
const rect = container.getBoundingClientRect();
|
|
16
|
+
setArticleHeight(container.scrollHeight / rect.width);
|
|
17
|
+
return articleRectObserver.init(container);
|
|
18
|
+
}, [articleRectObserver || !container]);
|
|
19
|
+
(0, react_1.useEffect)(() => {
|
|
20
|
+
if (!articleRectObserver || !container)
|
|
21
|
+
return;
|
|
22
|
+
return articleRectObserver.on('resize', (rect) => {
|
|
23
|
+
setArticleHeight(container.scrollHeight / rect.width);
|
|
24
|
+
});
|
|
25
|
+
}, [articleRectObserver, container]);
|
|
26
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: article.sections.map((section, i) => {
|
|
27
|
+
const data = {};
|
|
28
|
+
return ((0, jsx_runtime_1.jsx)(Section_1.Section, { section: section, data: data, children: article.sections[i].items.map(item => ((0, jsx_runtime_1.jsx)(Item_1.Item, { item: item, sectionId: section.id, articleHeight: articleHeight }, item.id))) }, section.id));
|
|
29
|
+
}) }));
|
|
30
|
+
};
|
|
31
|
+
exports.Sections = Sections;
|
|
@@ -7,19 +7,19 @@ exports.FixedLayer = void 0;
|
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const react_1 = require("react");
|
|
9
9
|
const ArticleRectContext_1 = require("../../provider/ArticleRectContext");
|
|
10
|
-
const useArticleRectObserver_1 = require("../../utils/ArticleRectManager/useArticleRectObserver");
|
|
11
10
|
const WebGLContextManagerContext_1 = require("../../provider/WebGLContextManagerContext");
|
|
12
11
|
const effects_1 = require("@cntrl-site/effects");
|
|
13
12
|
const style_1 = __importDefault(require("styled-jsx/style"));
|
|
14
13
|
const Item_1 = require("../items/Item");
|
|
15
14
|
const FixedLayerTransitionsProvider_1 = require("../../fixedLayers/FixedLayerTransitionsProvider");
|
|
16
15
|
const useCntrlContext_1 = require("../../provider/useCntrlContext");
|
|
16
|
+
const useArticleRectObserver_1 = require("../../utils/ArticleRectManager/useArticleRectObserver");
|
|
17
17
|
const FixedLayer = ({ layer, type }) => {
|
|
18
18
|
const [fixedLayerRef, setFixedLayerRef] = (0, react_1.useState)(null);
|
|
19
19
|
const { exemplary } = (0, useCntrlContext_1.useCntrlContext)();
|
|
20
20
|
const id = (0, react_1.useId)();
|
|
21
21
|
const [deviation, setDeviation] = (0, react_1.useState)(1);
|
|
22
|
-
const articleRectObserver = (0, useArticleRectObserver_1.useArticleRectObserver)(
|
|
22
|
+
const articleRectObserver = (0, useArticleRectObserver_1.useArticleRectObserver)();
|
|
23
23
|
const webglContextManager = (0, react_1.useMemo)(() => new effects_1.WebGLContextManager(), []);
|
|
24
24
|
(0, react_1.useEffect)(() => {
|
|
25
25
|
if (!fixedLayerRef)
|
|
@@ -32,7 +32,7 @@ const FixedLayer = ({ layer, type }) => {
|
|
|
32
32
|
});
|
|
33
33
|
observer.observe(fixedLayerRef);
|
|
34
34
|
return () => observer.unobserve(fixedLayerRef);
|
|
35
|
-
}, [
|
|
35
|
+
}, [fixedLayerRef, exemplary]);
|
|
36
36
|
const layoutDeviationStyle = { '--layout-deviation': deviation };
|
|
37
37
|
return ((0, jsx_runtime_1.jsx)(ArticleRectContext_1.ArticleRectContext.Provider, { value: articleRectObserver, children: (0, jsx_runtime_1.jsx)(FixedLayerTransitionsProvider_1.FixedLayerTransitionsProvider, { fixedLayer: layer, children: (0, jsx_runtime_1.jsxs)(WebGLContextManagerContext_1.WebglContextManagerContext.Provider, { value: webglContextManager, children: [(0, jsx_runtime_1.jsx)("div", { className: `fixed-layer-${type}`, ref: setFixedLayerRef, style: layoutDeviationStyle, children: layer.items.map(item => ((0, jsx_runtime_1.jsx)(Item_1.Item, { isInFixedLayer: true, item: item, sectionId: layer.id }, item.id))) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
|
|
38
38
|
.fixed-layer-${type} {
|
|
@@ -63,7 +63,7 @@ class ArticleRectObserver extends EventEmitter_1.EventEmitter {
|
|
|
63
63
|
if (!el)
|
|
64
64
|
continue;
|
|
65
65
|
const rect = el.getBoundingClientRect();
|
|
66
|
-
this.sectionsScrollMap.set(sectionId, rect.top - parentBoundary.top);
|
|
66
|
+
this.sectionsScrollMap.set(sectionId, rect.top - parentBoundary.top + this.parent.scrollTop);
|
|
67
67
|
}
|
|
68
68
|
this.isInitialized = true;
|
|
69
69
|
this.emit('init', undefined);
|
|
@@ -105,7 +105,7 @@ class ArticleRectObserver extends EventEmitter_1.EventEmitter {
|
|
|
105
105
|
if (!el)
|
|
106
106
|
continue;
|
|
107
107
|
const rect = el.getBoundingClientRect();
|
|
108
|
-
this.sectionsScrollMap.set(sectionId, rect.top - parentBoundary.top);
|
|
108
|
+
this.sectionsScrollMap.set(sectionId, rect.top - parentBoundary.top - this.parent.scrollTop);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
;
|
|
@@ -8,11 +8,6 @@ const useArticleRectObserver = (el) => {
|
|
|
8
8
|
(0, react_1.useEffect)(() => {
|
|
9
9
|
setArticleRectObserver(new ArticleRectObserver_1.ArticleRectObserver());
|
|
10
10
|
}, []);
|
|
11
|
-
(0, react_1.useEffect)(() => {
|
|
12
|
-
if (!el || !articleRectObserver)
|
|
13
|
-
return;
|
|
14
|
-
return articleRectObserver.init(el);
|
|
15
|
-
}, [el, articleRectObserver]);
|
|
16
11
|
return articleRectObserver;
|
|
17
12
|
};
|
|
18
13
|
exports.useArticleRectObserver = useArticleRectObserver;
|