@deck.gl/react 9.0.0-alpha.7 → 9.0.0-beta.10
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/{typed → dist}/deckgl.d.ts +2 -2
- package/dist/deckgl.d.ts.map +1 -0
- package/dist/deckgl.js +174 -0
- package/dist/index.cjs +381 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/utils/evaluate-children.js +34 -0
- package/dist/utils/extract-jsx-layers.js +84 -0
- package/dist/utils/extract-styles.js +32 -0
- package/dist/utils/inherits-from.js +10 -0
- package/dist/utils/position-children-under-views.js +80 -0
- package/dist/{esm/utils → utils}/use-isomorphic-layout-effect.js +2 -1
- package/package.json +22 -12
- package/dist/es5/deckgl.js +0 -212
- package/dist/es5/deckgl.js.map +0 -1
- package/dist/es5/index.js +0 -22
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/utils/evaluate-children.js +0 -59
- package/dist/es5/utils/evaluate-children.js.map +0 -1
- package/dist/es5/utils/extract-jsx-layers.js +0 -109
- package/dist/es5/utils/extract-jsx-layers.js.map +0 -1
- package/dist/es5/utils/extract-styles.js +0 -43
- package/dist/es5/utils/extract-styles.js.map +0 -1
- package/dist/es5/utils/inherits-from.js +0 -19
- package/dist/es5/utils/inherits-from.js.map +0 -1
- package/dist/es5/utils/position-children-under-views.js +0 -138
- package/dist/es5/utils/position-children-under-views.js.map +0 -1
- package/dist/es5/utils/use-isomorphic-layout-effect.js +0 -13
- package/dist/es5/utils/use-isomorphic-layout-effect.js.map +0 -1
- package/dist/esm/deckgl.js +0 -173
- package/dist/esm/deckgl.js.map +0 -1
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/utils/evaluate-children.js +0 -42
- package/dist/esm/utils/evaluate-children.js.map +0 -1
- package/dist/esm/utils/extract-jsx-layers.js +0 -89
- package/dist/esm/utils/extract-jsx-layers.js.map +0 -1
- package/dist/esm/utils/extract-styles.js +0 -37
- package/dist/esm/utils/extract-styles.js.map +0 -1
- package/dist/esm/utils/inherits-from.js +0 -12
- package/dist/esm/utils/inherits-from.js.map +0 -1
- package/dist/esm/utils/position-children-under-views.js +0 -106
- package/dist/esm/utils/position-children-under-views.js.map +0 -1
- package/dist/esm/utils/use-isomorphic-layout-effect.js.map +0 -1
- package/typed/deckgl.d.ts.map +0 -1
- package/typed/index.d.ts +0 -5
- package/typed/index.d.ts.map +0 -1
- /package/{typed → dist}/utils/evaluate-children.d.ts +0 -0
- /package/{typed → dist}/utils/evaluate-children.d.ts.map +0 -0
- /package/{typed → dist}/utils/extract-jsx-layers.d.ts +0 -0
- /package/{typed → dist}/utils/extract-jsx-layers.d.ts.map +0 -0
- /package/{typed → dist}/utils/extract-styles.d.ts +0 -0
- /package/{typed → dist}/utils/extract-styles.d.ts.map +0 -0
- /package/{typed → dist}/utils/inherits-from.d.ts +0 -0
- /package/{typed → dist}/utils/inherits-from.d.ts.map +0 -0
- /package/{typed → dist}/utils/position-children-under-views.d.ts +0 -0
- /package/{typed → dist}/utils/position-children-under-views.d.ts.map +0 -0
- /package/{typed → dist}/utils/use-isomorphic-layout-effect.d.ts +0 -0
- /package/{typed → dist}/utils/use-isomorphic-layout-effect.d.ts.map +0 -0
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { createElement } from 'react';
|
|
3
|
-
import { inheritsFrom } from './inherits-from';
|
|
4
|
-
import { Layer, View } from '@deck.gl/core';
|
|
5
|
-
import { isComponent } from './evaluate-children';
|
|
6
|
-
|
|
7
|
-
function wrapInView(node) {
|
|
8
|
-
if (typeof node === 'function') {
|
|
9
|
-
return createElement(View, {}, node);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (Array.isArray(node)) {
|
|
13
|
-
return node.map(wrapInView);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if (isComponent(node)) {
|
|
17
|
-
if (node.type === React.Fragment) {
|
|
18
|
-
return wrapInView(node.props.children);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (inheritsFrom(node.type, View)) {
|
|
22
|
-
return node;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return node;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default function extractJSXLayers({
|
|
30
|
-
children,
|
|
31
|
-
layers = [],
|
|
32
|
-
views = null
|
|
33
|
-
}) {
|
|
34
|
-
const reactChildren = [];
|
|
35
|
-
const jsxLayers = [];
|
|
36
|
-
const jsxViews = {};
|
|
37
|
-
React.Children.forEach(wrapInView(children), reactElement => {
|
|
38
|
-
if (isComponent(reactElement)) {
|
|
39
|
-
const ElementType = reactElement.type;
|
|
40
|
-
|
|
41
|
-
if (inheritsFrom(ElementType, Layer)) {
|
|
42
|
-
const layer = createLayer(ElementType, reactElement.props);
|
|
43
|
-
jsxLayers.push(layer);
|
|
44
|
-
} else {
|
|
45
|
-
reactChildren.push(reactElement);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (inheritsFrom(ElementType, View) && ElementType !== View && reactElement.props.id) {
|
|
49
|
-
const view = new ElementType(reactElement.props);
|
|
50
|
-
jsxViews[view.id] = view;
|
|
51
|
-
}
|
|
52
|
-
} else if (reactElement) {
|
|
53
|
-
reactChildren.push(reactElement);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
if (Object.keys(jsxViews).length > 0) {
|
|
58
|
-
if (Array.isArray(views)) {
|
|
59
|
-
views.forEach(view => {
|
|
60
|
-
jsxViews[view.id] = view;
|
|
61
|
-
});
|
|
62
|
-
} else if (views) {
|
|
63
|
-
jsxViews[views.id] = views;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
views = Object.values(jsxViews);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
layers = jsxLayers.length > 0 ? [...jsxLayers, ...layers] : layers;
|
|
70
|
-
return {
|
|
71
|
-
layers,
|
|
72
|
-
children: reactChildren,
|
|
73
|
-
views
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function createLayer(LayerType, reactProps) {
|
|
78
|
-
const props = {};
|
|
79
|
-
const defaultProps = LayerType.defaultProps || {};
|
|
80
|
-
|
|
81
|
-
for (const key in reactProps) {
|
|
82
|
-
if (defaultProps[key] !== reactProps[key]) {
|
|
83
|
-
props[key] = reactProps[key];
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return new LayerType(props);
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=extract-jsx-layers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/extract-jsx-layers.ts"],"names":["React","createElement","inheritsFrom","Layer","View","isComponent","wrapInView","node","Array","isArray","map","type","Fragment","props","children","extractJSXLayers","layers","views","reactChildren","jsxLayers","jsxViews","Children","forEach","reactElement","ElementType","layer","createLayer","push","id","view","Object","keys","length","values","LayerType","reactProps","defaultProps","key"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {createElement} from 'react';\nimport {inheritsFrom} from './inherits-from';\nimport {Layer, View} from '@deck.gl/core';\nimport {isComponent} from './evaluate-children';\nimport type {LayersList, Viewport} from '@deck.gl/core';\n\nexport type DeckGLRenderCallbackArgs = {\n /**\n * the left offset of the current view, in pixels\n */\n x: number;\n /**\n * the top offset of the current view, in pixels\n */\n y: number;\n /**\n * the width of the current view, in pixels\n */\n width: number;\n /**\n * the height of the current view, in pixels\n */\n height: number;\n /**\n * the view state of the current view\n */\n viewState: any;\n /**\n * the `Viewport` instance of the current view\n */\n viewport: Viewport;\n};\n\nexport type DeckGLRenderCallback = (args: DeckGLRenderCallbackArgs) => React.ReactNode;\n\n// recursively wrap render callbacks in `View`\nfunction wrapInView(node: React.ReactNode | DeckGLRenderCallback): React.ReactNode {\n if (typeof node === 'function') {\n // React.Children does not traverse functions.\n // All render callbacks must be protected under a <View>\n // @ts-expect-error View is not a ReactJSXElement constructor. Only used as a temporary wrapper and will be removed in extractJSXLayers\n return createElement(View, {}, node);\n }\n if (Array.isArray(node)) {\n return node.map(wrapInView);\n }\n if (isComponent(node)) {\n if (node.type === React.Fragment) {\n return wrapInView(node.props.children);\n }\n if (inheritsFrom(node.type, View)) {\n return node;\n }\n }\n return node;\n}\n\n// extracts any deck.gl layers masquerading as react elements from props.children\nexport default function extractJSXLayers({\n children,\n layers = [],\n views = null\n}: {\n children?: React.ReactNode | DeckGLRenderCallback;\n layers?: LayersList;\n views?: View | View[] | null;\n}): {\n children: React.ReactNode[];\n layers: LayersList;\n views: View | View[] | null;\n} {\n const reactChildren: React.ReactNode[] = []; // extract real react elements (i.e. not deck.gl layers)\n const jsxLayers: LayersList = []; // extracted layer from react children, will add to deck.gl layer array\n const jsxViews: Record<string, View> = {};\n\n // React.children\n React.Children.forEach(wrapInView(children), reactElement => {\n if (isComponent(reactElement)) {\n // For some reason Children.forEach doesn't filter out `null`s\n const ElementType = reactElement.type;\n if (inheritsFrom(ElementType, Layer)) {\n const layer = createLayer(ElementType, reactElement.props);\n jsxLayers.push(layer);\n } else {\n reactChildren.push(reactElement);\n }\n\n // empty id => default view\n if (inheritsFrom(ElementType, View) && ElementType !== View && reactElement.props.id) {\n // @ts-ignore Cannot instantiate an abstract class (View)\n const view = new ElementType(reactElement.props);\n jsxViews[view.id] = view;\n }\n } else if (reactElement) {\n reactChildren.push(reactElement);\n }\n });\n\n // Avoid modifying views if no JSX views were found\n if (Object.keys(jsxViews).length > 0) {\n // If a view is specified in both views prop and JSX, use the one in views\n if (Array.isArray(views)) {\n views.forEach(view => {\n jsxViews[view.id] = view;\n });\n } else if (views) {\n jsxViews[views.id] = views;\n }\n views = Object.values(jsxViews);\n }\n\n // Avoid modifying layers array if no JSX layers were found\n layers = jsxLayers.length > 0 ? [...jsxLayers, ...layers] : layers;\n\n return {layers, children: reactChildren, views};\n}\n\nfunction createLayer(LayerType: typeof Layer, reactProps: any): Layer {\n const props = {};\n // Layer.defaultProps is treated as ReactElement.defaultProps and merged into react props\n // Remove them\n const defaultProps = LayerType.defaultProps || {};\n for (const key in reactProps) {\n if (defaultProps[key] !== reactProps[key]) {\n props[key] = reactProps[key];\n }\n }\n // @ts-ignore Cannot instantiate an abstract class (Layer)\n return new LayerType(props);\n}\n"],"file":"extract-jsx-layers.js"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const CANVAS_ONLY_STYLES = {
|
|
2
|
-
mixBlendMode: null
|
|
3
|
-
};
|
|
4
|
-
export default function extractStyles({
|
|
5
|
-
width,
|
|
6
|
-
height,
|
|
7
|
-
style
|
|
8
|
-
}) {
|
|
9
|
-
const containerStyle = {
|
|
10
|
-
position: 'absolute',
|
|
11
|
-
zIndex: 0,
|
|
12
|
-
left: 0,
|
|
13
|
-
top: 0,
|
|
14
|
-
width,
|
|
15
|
-
height
|
|
16
|
-
};
|
|
17
|
-
const canvasStyle = {
|
|
18
|
-
left: 0,
|
|
19
|
-
top: 0
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
if (style) {
|
|
23
|
-
for (const key in style) {
|
|
24
|
-
if (key in CANVAS_ONLY_STYLES) {
|
|
25
|
-
canvasStyle[key] = style[key];
|
|
26
|
-
} else {
|
|
27
|
-
containerStyle[key] = style[key];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
containerStyle,
|
|
34
|
-
canvasStyle
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=extract-styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/extract-styles.ts"],"names":["CANVAS_ONLY_STYLES","mixBlendMode","extractStyles","width","height","style","containerStyle","position","zIndex","left","top","canvasStyle","key"],"mappings":"AAEA,MAAMA,kBAAkB,GAAG;AACzBC,EAAAA,YAAY,EAAE;AADW,CAA3B;AAIA,eAAe,SAASC,aAAT,CAAuB;AACpCC,EAAAA,KADoC;AAEpCC,EAAAA,MAFoC;AAGpCC,EAAAA;AAHoC,CAAvB,EAWb;AAEA,QAAMC,cAAmC,GAAG;AAC1CC,IAAAA,QAAQ,EAAE,UADgC;AAE1CC,IAAAA,MAAM,EAAE,CAFkC;AAG1CC,IAAAA,IAAI,EAAE,CAHoC;AAI1CC,IAAAA,GAAG,EAAE,CAJqC;AAK1CP,IAAAA,KAL0C;AAM1CC,IAAAA;AAN0C,GAA5C;AAUA,QAAMO,WAAgC,GAAG;AACvCF,IAAAA,IAAI,EAAE,CADiC;AAEvCC,IAAAA,GAAG,EAAE;AAFkC,GAAzC;;AAKA,MAAIL,KAAJ,EAAW;AACT,SAAK,MAAMO,GAAX,IAAkBP,KAAlB,EAAyB;AACvB,UAAIO,GAAG,IAAIZ,kBAAX,EAA+B;AAE7BW,QAAAA,WAAW,CAACC,GAAD,CAAX,GAAmBP,KAAK,CAACO,GAAD,CAAxB;AACD,OAHD,MAGO;AAELN,QAAAA,cAAc,CAACM,GAAD,CAAd,GAAsBP,KAAK,CAACO,GAAD,CAA3B;AACD;AACF;AACF;;AAED,SAAO;AAACN,IAAAA,cAAD;AAAiBK,IAAAA;AAAjB,GAAP;AACD","sourcesContent":["import * as React from 'react';\n\nconst CANVAS_ONLY_STYLES = {\n mixBlendMode: null\n};\n\nexport default function extractStyles({\n width,\n height,\n style\n}: {\n width?: string | number;\n height?: string | number;\n style?: Partial<CSSStyleDeclaration> | null;\n}): {\n containerStyle: React.CSSProperties;\n canvasStyle: React.CSSProperties;\n} {\n // This styling is enforced for correct positioning with children\n const containerStyle: React.CSSProperties = {\n position: 'absolute',\n zIndex: 0,\n left: 0,\n top: 0,\n width,\n height\n };\n\n // Fill the container\n const canvasStyle: React.CSSProperties = {\n left: 0,\n top: 0\n };\n\n if (style) {\n for (const key in style) {\n if (key in CANVAS_ONLY_STYLES) {\n // apply style to the canvas, but not deck's children, e.g. mix-blend-mode\n canvasStyle[key] = style[key];\n } else {\n // apply style to the container, e.g. position/flow settings\n containerStyle[key] = style[key];\n }\n }\n }\n\n return {containerStyle, canvasStyle};\n}\n"],"file":"extract-styles.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/inherits-from.ts"],"names":["inheritsFrom","Type","ParentType","Object","getPrototypeOf"],"mappings":"AACA,OAAO,SAASA,YAAT,CAAyBC,IAAzB,EAAoCC,UAApC,EAA8D;AACnE,SAAOD,IAAP,EAAa;AACX,QAAIA,IAAI,KAAKC,UAAb,EAAyB;AACvB,aAAO,IAAP;AACD;;AACDD,IAAAA,IAAI,GAAGE,MAAM,CAACC,cAAP,CAAsBH,IAAtB,CAAP;AACD;;AACD,SAAO,KAAP;AACD","sourcesContent":["// Check if one JavaScript class inherits from another\nexport function inheritsFrom<T>(Type: any, ParentType: T): Type is T {\n while (Type) {\n if (Type === ParentType) {\n return true;\n }\n Type = Object.getPrototypeOf(Type);\n }\n return false;\n}\n"],"file":"inherits-from.js"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { createElement } from 'react';
|
|
2
|
-
import { View } from '@deck.gl/core';
|
|
3
|
-
import { inheritsFrom } from './inherits-from';
|
|
4
|
-
import evaluateChildren, { isComponent } from './evaluate-children';
|
|
5
|
-
export default function positionChildrenUnderViews({
|
|
6
|
-
children,
|
|
7
|
-
deck,
|
|
8
|
-
ContextProvider
|
|
9
|
-
}) {
|
|
10
|
-
const {
|
|
11
|
-
viewManager
|
|
12
|
-
} = deck || {};
|
|
13
|
-
|
|
14
|
-
if (!viewManager || !viewManager.views.length) {
|
|
15
|
-
return [];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const views = {};
|
|
19
|
-
const defaultViewId = viewManager.views[0].id;
|
|
20
|
-
|
|
21
|
-
for (const child of children) {
|
|
22
|
-
let viewId = defaultViewId;
|
|
23
|
-
let viewChildren = child;
|
|
24
|
-
|
|
25
|
-
if (isComponent(child) && inheritsFrom(child.type, View)) {
|
|
26
|
-
viewId = child.props.id || defaultViewId;
|
|
27
|
-
viewChildren = child.props.children;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const viewport = viewManager.getViewport(viewId);
|
|
31
|
-
const viewState = viewManager.getViewState(viewId);
|
|
32
|
-
|
|
33
|
-
if (viewport) {
|
|
34
|
-
viewState.padding = viewport.padding;
|
|
35
|
-
const {
|
|
36
|
-
x,
|
|
37
|
-
y,
|
|
38
|
-
width,
|
|
39
|
-
height
|
|
40
|
-
} = viewport;
|
|
41
|
-
viewChildren = evaluateChildren(viewChildren, {
|
|
42
|
-
x,
|
|
43
|
-
y,
|
|
44
|
-
width,
|
|
45
|
-
height,
|
|
46
|
-
viewport,
|
|
47
|
-
viewState
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
if (!views[viewId]) {
|
|
51
|
-
views[viewId] = {
|
|
52
|
-
viewport,
|
|
53
|
-
children: []
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
views[viewId].children.push(viewChildren);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return Object.keys(views).map(viewId => {
|
|
62
|
-
const {
|
|
63
|
-
viewport,
|
|
64
|
-
children: viewChildren
|
|
65
|
-
} = views[viewId];
|
|
66
|
-
const {
|
|
67
|
-
x,
|
|
68
|
-
y,
|
|
69
|
-
width,
|
|
70
|
-
height
|
|
71
|
-
} = viewport;
|
|
72
|
-
const style = {
|
|
73
|
-
position: 'absolute',
|
|
74
|
-
left: x,
|
|
75
|
-
top: y,
|
|
76
|
-
width,
|
|
77
|
-
height
|
|
78
|
-
};
|
|
79
|
-
const key = `view-${viewId}`;
|
|
80
|
-
const viewElement = createElement('div', {
|
|
81
|
-
key,
|
|
82
|
-
id: key,
|
|
83
|
-
style
|
|
84
|
-
}, ...viewChildren);
|
|
85
|
-
|
|
86
|
-
if (ContextProvider) {
|
|
87
|
-
const contextValue = {
|
|
88
|
-
viewport,
|
|
89
|
-
container: deck.canvas.offsetParent,
|
|
90
|
-
eventManager: deck.eventManager,
|
|
91
|
-
onViewStateChange: params => {
|
|
92
|
-
params.viewId = viewId;
|
|
93
|
-
|
|
94
|
-
deck._onViewStateChange(params);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
return createElement(ContextProvider, {
|
|
98
|
-
key,
|
|
99
|
-
value: contextValue
|
|
100
|
-
}, viewElement);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return viewElement;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=position-children-under-views.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/position-children-under-views.ts"],"names":["createElement","View","inheritsFrom","evaluateChildren","isComponent","positionChildrenUnderViews","children","deck","ContextProvider","viewManager","views","length","defaultViewId","id","child","viewId","viewChildren","type","props","viewport","getViewport","viewState","getViewState","padding","x","y","width","height","push","Object","keys","map","style","position","left","top","key","viewElement","contextValue","container","canvas","offsetParent","eventManager","onViewStateChange","params","_onViewStateChange","value"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {createElement} from 'react';\nimport {View} from '@deck.gl/core';\nimport {inheritsFrom} from './inherits-from';\nimport evaluateChildren, {isComponent} from './evaluate-children';\n\nimport type {Deck, DeckProps, Viewport} from '@deck.gl/core';\nimport type {EventManager} from 'mjolnir.js';\n\nexport type DeckGLContextValue = {\n viewport: Viewport;\n container: HTMLElement;\n eventManager: EventManager;\n onViewStateChange: DeckProps['onViewStateChange'];\n};\n\n// Iterate over views and reposition children associated with views\n// TODO - Can we supply a similar function for the non-React case?\nexport default function positionChildrenUnderViews({\n children,\n deck,\n ContextProvider\n}: {\n children: React.ReactNode[];\n deck?: Deck;\n ContextProvider?: React.Context<DeckGLContextValue>['Provider'];\n}): React.ReactNode[] {\n // @ts-expect-error accessing protected property\n const {viewManager} = deck || {};\n\n if (!viewManager || !viewManager.views.length) {\n return [];\n }\n\n const views: Record<\n string,\n {\n viewport: Viewport;\n children: React.ReactNode[];\n }\n > = {};\n const defaultViewId = (viewManager.views[0] as View).id;\n\n // Sort children by view id\n for (const child of children) {\n // Unless child is a View, position / render as part of the default view\n let viewId = defaultViewId;\n let viewChildren = child;\n\n if (isComponent(child) && inheritsFrom(child.type, View)) {\n viewId = child.props.id || defaultViewId;\n viewChildren = child.props.children;\n }\n\n const viewport = viewManager.getViewport(viewId) as Viewport;\n const viewState = viewManager.getViewState(viewId);\n\n // Drop (auto-hide) elements with viewId that are not matched by any current view\n if (viewport) {\n viewState.padding = viewport.padding;\n const {x, y, width, height} = viewport;\n // Resolve potentially relative dimensions using the deck.gl container size\n viewChildren = evaluateChildren(viewChildren, {\n x,\n y,\n width,\n height,\n viewport,\n viewState\n });\n\n if (!views[viewId]) {\n views[viewId] = {\n viewport,\n children: []\n };\n }\n views[viewId].children.push(viewChildren);\n }\n }\n\n // Render views\n return Object.keys(views).map(viewId => {\n const {viewport, children: viewChildren} = views[viewId];\n const {x, y, width, height} = viewport;\n const style = {\n position: 'absolute',\n left: x,\n top: y,\n width,\n height\n };\n\n const key = `view-${viewId}`;\n // If children is passed as an array, React will throw the \"each element in a list needs\n // a key\" warning. Sending each child as separate arguments removes this requirement.\n const viewElement = createElement('div', {key, id: key, style}, ...viewChildren);\n\n if (ContextProvider) {\n const contextValue: DeckGLContextValue = {\n viewport,\n // @ts-expect-error accessing protected property\n container: deck.canvas.offsetParent,\n // @ts-expect-error accessing protected property\n eventManager: deck.eventManager,\n onViewStateChange: params => {\n params.viewId = viewId;\n // @ts-expect-error accessing protected method\n deck._onViewStateChange(params);\n }\n };\n return createElement(ContextProvider, {key, value: contextValue}, viewElement);\n }\n\n return viewElement;\n });\n}\n"],"file":"position-children-under-views.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/use-isomorphic-layout-effect.ts"],"names":["useEffect","useLayoutEffect","useIsomorphicLayoutEffect","window"],"mappings":"AAEA,SAAQA,SAAR,EAAmBC,eAAnB,QAAyC,OAAzC;AAEA,MAAMC,yBAAyB,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCF,eAAhC,GAAkDD,SAApF;AAEA,eAAeE,yBAAf","sourcesContent":["// From https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts\n// useLayoutEffect but does not trigger warning in server-side rendering\nimport {useEffect, useLayoutEffect} from 'react';\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport default useIsomorphicLayoutEffect;\n"],"file":"use-isomorphic-layout-effect.js"}
|
package/typed/deckgl.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deckgl.d.ts","sourceRoot":"","sources":["../src/deckgl.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AAGnC,OAAyB,EAAC,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AAIlF,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAC,SAAS,EAAW,MAAM,eAAe,CAAC;AAevD,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,SAAS,EACT,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAClE,GAAG;IACF,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,oBAAoB,CAAC;IAClD,eAAe,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;CAClD,CAAC;AAqDF,QAAA,MAAM,MAAM;;;;eA9DC,MAAM,SAAS,GAAG,oBAAoB;;mCAwNjD,CAAC;AAIH,eAAe,MAAM,CAAC"}
|
package/typed/index.d.ts
DELETED
package/typed/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAGjC,YAAY,EAAC,kBAAkB,EAAC,MAAM,uCAAuC,CAAC;AAC9E,YAAY,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|