@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.
@@ -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, elRef: sceneRef, children: (0, jsx_runtime_1.jsx)(WebGLContextManagerContext_1.WebglContextManagerContext.Provider, { value: webglContextManager, children: article.sections.map((section, i) => {
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 === el.scrollWidth;
162
+ return el.scrollLeft + el.clientWidth === window.innerWidth;
163
163
  }
164
164
  }
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { Article as TArticle } from '../../../sdk/types/article/Article';
3
+ interface Props {
4
+ article: TArticle;
5
+ container: HTMLElement | null;
6
+ }
7
+ export declare const Sections: FC<Props>;
8
+ export {};
@@ -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)(fixedLayerRef);
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
- }, [articleRectObserver, fixedLayerRef, exemplary]);
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gxpl/sdk",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "description": "Generic SDK for use in public websites.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",