@lincle/react-native-interactive 0.4.0-next.17 → 0.4.0-next.19
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/dist/cjs/base.js +12 -0
- package/dist/cjs/base.js.map +1 -0
- package/dist/cjs/components/Edge/Path/index.js +6 -0
- package/dist/cjs/components/Edge/Path/index.js.map +1 -0
- package/dist/cjs/components/Edge/index.js +8 -0
- package/dist/cjs/components/Edge/index.js.map +1 -0
- package/dist/cjs/components/Edges/Connections/index.js +50 -0
- package/dist/cjs/components/Edges/Connections/index.js.map +1 -0
- package/dist/cjs/components/Edges/index.js +27 -0
- package/dist/cjs/components/Edges/index.js.map +1 -0
- package/dist/cjs/components/Graph/Grid/index.js +59 -0
- package/dist/cjs/components/Graph/Grid/index.js.map +1 -0
- package/dist/cjs/components/Graph/index.js +23 -0
- package/dist/cjs/components/Graph/index.js.map +1 -0
- package/dist/cjs/components/Interaction/index.js +111 -0
- package/dist/cjs/components/Interaction/index.js.map +1 -0
- package/dist/cjs/components/Node/Draggable.js +281 -0
- package/dist/cjs/components/Node/Draggable.js.map +1 -0
- package/dist/cjs/components/Node/MoveNode/index.js +66 -0
- package/dist/cjs/components/Node/MoveNode/index.js.map +1 -0
- package/dist/cjs/components/Node/PullNode/index.js +129 -0
- package/dist/cjs/components/Node/PullNode/index.js.map +1 -0
- package/dist/cjs/components/Node/index.js +143 -0
- package/dist/cjs/components/Node/index.js.map +1 -0
- package/dist/cjs/components/Nodes/Interaction/index.js +33 -0
- package/dist/cjs/components/Nodes/Interaction/index.js.map +1 -0
- package/dist/cjs/components/Nodes/index.js +15 -0
- package/dist/cjs/components/Nodes/index.js.map +1 -0
- package/dist/cjs/components/index.js +22 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/index.js +19 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/shared.js +34 -0
- package/dist/cjs/shared.js.map +1 -0
- package/dist/{base.js → esm/base.js} +1 -0
- package/dist/esm/base.js.map +1 -0
- package/dist/{components → esm/components}/Edge/Path/index.js +1 -0
- package/dist/esm/components/Edge/Path/index.js.map +1 -0
- package/dist/{components → esm/components}/Edge/index.js +1 -0
- package/dist/esm/components/Edge/index.js.map +1 -0
- package/dist/{components → esm/components}/Edges/Connections/index.js +2 -1
- package/dist/esm/components/Edges/Connections/index.js.map +1 -0
- package/dist/esm/components/Edges/index.js +21 -0
- package/dist/esm/components/Edges/index.js.map +1 -0
- package/dist/{components → esm/components}/Graph/Grid/index.js +1 -0
- package/dist/esm/components/Graph/Grid/index.js.map +1 -0
- package/dist/{components → esm/components}/Graph/index.js +1 -0
- package/dist/esm/components/Graph/index.js.map +1 -0
- package/dist/{components → esm/components}/Interaction/index.js +3 -3
- package/dist/esm/components/Interaction/index.js.map +1 -0
- package/dist/{components → esm/components}/Node/Draggable.js +16 -9
- package/dist/esm/components/Node/Draggable.js.map +1 -0
- package/dist/{components → esm/components}/Node/MoveNode/index.js +2 -1
- package/dist/esm/components/Node/MoveNode/index.js.map +1 -0
- package/dist/{components → esm/components}/Node/PullNode/index.js +12 -8
- package/dist/esm/components/Node/PullNode/index.js.map +1 -0
- package/dist/{components → esm/components}/Node/index.js +13 -13
- package/dist/esm/components/Node/index.js.map +1 -0
- package/dist/{components → esm/components}/Nodes/Interaction/index.js +5 -1
- package/dist/esm/components/Nodes/Interaction/index.js.map +1 -0
- package/dist/esm/components/Nodes/index.js +9 -0
- package/dist/esm/components/Nodes/index.js.map +1 -0
- package/dist/{components → esm/components}/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/{index.js → esm/index.js} +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{shared.js → esm/shared.js} +1 -0
- package/dist/esm/shared.js.map +1 -0
- package/package.json +30 -27
- package/dist/components/Edges/index.js +0 -32
- package/dist/components/Nodes/index.js +0 -20
- /package/dist/{base.d.ts → esm/base.d.ts} +0 -0
- /package/dist/{components → esm/components}/Edge/Path/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Edge/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Edges/Connections/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Edges/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Graph/Grid/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Graph/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Interaction/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Node/Draggable.d.ts +0 -0
- /package/dist/{components → esm/components}/Node/MoveNode/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Node/PullNode/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Node/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Nodes/Interaction/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Nodes/index.d.ts +0 -0
- /package/dist/{components → esm/components}/index.d.ts +0 -0
- /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
- /package/dist/{shared.d.ts → esm/shared.d.ts} +0 -0
package/dist/cjs/base.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Path = exports.Nodes = exports.Node = exports.Grid = exports.Graph = exports.Edges = exports.Edge = void 0;
|
|
4
|
+
var react_native_base_1 = require("@lincle/react-native-base");
|
|
5
|
+
Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return react_native_base_1.Edge; } });
|
|
6
|
+
Object.defineProperty(exports, "Edges", { enumerable: true, get: function () { return react_native_base_1.Edges; } });
|
|
7
|
+
Object.defineProperty(exports, "Graph", { enumerable: true, get: function () { return react_native_base_1.Graph; } });
|
|
8
|
+
Object.defineProperty(exports, "Grid", { enumerable: true, get: function () { return react_native_base_1.Grid; } });
|
|
9
|
+
Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return react_native_base_1.Node; } });
|
|
10
|
+
Object.defineProperty(exports, "Nodes", { enumerable: true, get: function () { return react_native_base_1.Nodes; } });
|
|
11
|
+
Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return react_native_base_1.Path; } });
|
|
12
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":";;;AAAA,+DAQmC;AAPjC,yGAAA,IAAI,OAAA;AACJ,0GAAA,KAAK,OAAA;AACL,0GAAA,KAAK,OAAA;AACL,yGAAA,IAAI,OAAA;AACJ,yGAAA,IAAI,OAAA;AACJ,0GAAA,KAAK,OAAA;AACL,yGAAA,IAAI,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Path = void 0;
|
|
4
|
+
var base_1 = require("../../../base");
|
|
5
|
+
Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return base_1.Path; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Edge/Path/index.tsx"],"names":[],"mappings":";;;AAAA,sCAEuB;AADrB,4FAAA,IAAI,OAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Path = exports.Edge = void 0;
|
|
4
|
+
var base_1 = require("../../base");
|
|
5
|
+
Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return base_1.Edge; } });
|
|
6
|
+
var Path_1 = require("./Path");
|
|
7
|
+
Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return Path_1.Path; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Edge/index.tsx"],"names":[],"mappings":";;;AAAA,mCAEoB;AADlB,4FAAA,IAAI,OAAA;AAEN,+BAEgB;AADd,4FAAA,IAAI,OAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const shared_1 = require("../../../shared");
|
|
5
|
+
const Edge_1 = require("../../Edge");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const react_native_1 = require("react-native");
|
|
8
|
+
const react_native_svg_1 = require("react-native-svg");
|
|
9
|
+
const { svgStyle } = react_native_1.StyleSheet.create({
|
|
10
|
+
svgStyle: {
|
|
11
|
+
height: '100%',
|
|
12
|
+
overflow: 'visible',
|
|
13
|
+
pointerEvents: 'box-none',
|
|
14
|
+
position: 'absolute',
|
|
15
|
+
width: '100%',
|
|
16
|
+
zIndex: 1
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const isConnecting = {
|
|
20
|
+
x: 0,
|
|
21
|
+
y: 0
|
|
22
|
+
};
|
|
23
|
+
const Connections = ({ scale = 1, translate = {
|
|
24
|
+
x: 0,
|
|
25
|
+
y: 0
|
|
26
|
+
} }) => {
|
|
27
|
+
const connections = (0, shared_1.useConnections)();
|
|
28
|
+
const paths = (0, react_1.useMemo)(() => {
|
|
29
|
+
return Object.keys(connections).map((sourceId) => {
|
|
30
|
+
const { line, source, target } = connections[sourceId] ?? {};
|
|
31
|
+
return ((0, jsx_runtime_1.jsx)(Edge_1.Path, { edgeId: sourceId + 'temp', isConnecting: isConnecting, line: line, source: source, target: target }, sourceId));
|
|
32
|
+
});
|
|
33
|
+
}, [
|
|
34
|
+
connections
|
|
35
|
+
]);
|
|
36
|
+
const translateXYZ = (0, react_1.useMemo)(() => {
|
|
37
|
+
const tx = translate.x;
|
|
38
|
+
const ty = translate.y;
|
|
39
|
+
const tz = scale;
|
|
40
|
+
return `translate(${tx}, ${ty}) scale(${tz})`;
|
|
41
|
+
}, [
|
|
42
|
+
translate.x,
|
|
43
|
+
translate.y,
|
|
44
|
+
scale
|
|
45
|
+
]);
|
|
46
|
+
return ((0, jsx_runtime_1.jsx)(react_native_svg_1.Svg, { style: svgStyle, children: (0, jsx_runtime_1.jsxs)(react_native_svg_1.G, { transform: translateXYZ, children: [(0, jsx_runtime_1.jsx)(react_native_svg_1.Defs, { children: (0, jsx_runtime_1.jsx)(shared_1.Marker, {}) }), paths] }) }));
|
|
47
|
+
};
|
|
48
|
+
Connections.displayName = 'LincleInteractiveConnections';
|
|
49
|
+
exports.default = Connections;
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Edges/Connections/index.tsx"],"names":[],"mappings":";;;AAAA,4CAIyB;AACzB,qCAEoB;AACpB,iCAGe;AACf,+CAEsB;AACtB,uDAI0B;AAE1B,MAAM,EACJ,QAAQ,EACT,GAAG,yBAAU,CAAC,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,SAAS;QACnB,aAAa,EAAE,UAAU;QACzB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC;KACV;CACF,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG;IACnB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,WAAW,GAAwC,CAAC,EACxD,KAAK,GAAG,CAAC,EACT,SAAS,GAAG;IACV,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,EACF,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAC;IAErC,MAAM,KAAK,GAAG,IAAA,eAAO,EACnB,GAAG,EAAE;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CACjC,CACE,QAAQ,EACR,EAAE;YACF,MAAM,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACP,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEhC,OAAO,CACL,uBAAC,WAAI,IACH,MAAM,EAAE,QAAQ,GAAG,MAAM,EACzB,YAAY,EAAE,YAAY,EAE1B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,IAHT,QAAQ,CAIb,CACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC,EACD;QACE,WAAW;KACZ,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,eAAO,EAC1B,GAAG,EAAE;QACH,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC;QAEjB,OAAO,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC;IAChD,CAAC,EACD;QACE,SAAS,CAAC,CAAC;QACX,SAAS,CAAC,CAAC;QACX,KAAK;KACN,CACF,CAAC;IAEF,OAAO,CACL,uBAAC,sBAAG,IACF,KAAK,EAAE,QAAQ,YAEf,wBAAC,oBAAC,IACA,SAAS,EAAE,YAAY,aAEvB,uBAAC,uBAAI,cACH,uBAAC,eAAM,KAAG,GACL,EACN,KAAK,IACJ,GACA,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,8BAA8B,CAAC;AAEzD,kBAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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.Edges = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const base_1 = require("../../base");
|
|
9
|
+
const shared_1 = require("../../shared");
|
|
10
|
+
const Connections_1 = __importDefault(require("./Connections"));
|
|
11
|
+
const react_native_1 = require("react-native");
|
|
12
|
+
const { edgesStyle } = react_native_1.StyleSheet.create({
|
|
13
|
+
edgesStyle: {
|
|
14
|
+
height: '100%',
|
|
15
|
+
pointerEvents: 'box-none',
|
|
16
|
+
position: 'absolute',
|
|
17
|
+
width: '100%'
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const Edges = ({ children, ...props }) => {
|
|
21
|
+
const scale = (0, shared_1.useScale)();
|
|
22
|
+
const translate = (0, shared_1.useTranslate)();
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { style: edgesStyle, children: [(0, jsx_runtime_1.jsx)(base_1.Edges, { scale: scale, translate: translate, ...props, children: children }), (0, jsx_runtime_1.jsx)(Connections_1.default, { scale: scale, translate: translate })] }));
|
|
24
|
+
};
|
|
25
|
+
exports.Edges = Edges;
|
|
26
|
+
Edges.displayName = 'LincleInteractiveEdges';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Edges/index.tsx"],"names":[],"mappings":";;;;;;;AAAA,qCAEoB;AACpB,yCAIsB;AACtB,gEAAwC;AAIxC,+CAGsB;AAEtB,MAAM,EACJ,UAAU,EACX,GAAG,yBAAU,CAAC,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,UAAU;QACzB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC;AAEH,MAAM,KAAK,GAAkC,CAAC,EAC5C,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,qBAAY,GAAE,CAAC;IAEjC,OAAO,CACL,wBAAC,mBAAI,IACH,KAAK,EAAE,UAAU,aAEjB,uBAAC,YAAS,IACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,KAChB,KAAK,YAER,QAAQ,GACC,EACZ,uBAAC,qBAAW,IACV,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,GACpB,IACG,CACR,CAAC;AACJ,CAAC,CAAC;AAKA,sBAAK;AAHP,KAAK,CAAC,WAAW,GAAG,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const base_1 = require("../../../base");
|
|
5
|
+
const shared_1 = require("../../../shared");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const react_native_svg_1 = require("react-native-svg");
|
|
8
|
+
const WIDTH = 0.4;
|
|
9
|
+
const Grid = ({ children }) => {
|
|
10
|
+
const scale = (0, shared_1.useScale)();
|
|
11
|
+
const translate = (0, shared_1.useTranslate)();
|
|
12
|
+
const mode = (0, shared_1.useMode)();
|
|
13
|
+
const line = (0, react_1.useMemo)(() => {
|
|
14
|
+
const t1 = 1 + scale;
|
|
15
|
+
const t2 = 4 * scale;
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)(react_native_svg_1.Line, { stroke: 'black', strokeWidth: WIDTH, x1: t1, x2: t2, y1: t1, y2: t2 }));
|
|
17
|
+
}, [
|
|
18
|
+
scale
|
|
19
|
+
]);
|
|
20
|
+
const plus = (0, react_1.useMemo)(() => {
|
|
21
|
+
const t1 = scale;
|
|
22
|
+
const t2 = 4 * scale;
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_native_svg_1.Line, { stroke: 'black', strokeWidth: WIDTH, x1: t1, x2: t2, y1: t2, y2: t2 }), (0, jsx_runtime_1.jsx)(react_native_svg_1.Line, { stroke: 'black', strokeWidth: WIDTH, x1: t2, x2: t2, y1: t1, y2: t2 })] }));
|
|
24
|
+
}, [
|
|
25
|
+
scale
|
|
26
|
+
]);
|
|
27
|
+
const circle = (0, react_1.useMemo)(() => {
|
|
28
|
+
const t2 = 4 * scale;
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)(react_native_svg_1.Circle, { cx: t2, cy: t2, fill: 'black', r: WIDTH }));
|
|
30
|
+
}, [
|
|
31
|
+
scale
|
|
32
|
+
]);
|
|
33
|
+
const child = (0, react_1.useMemo)(() => {
|
|
34
|
+
if (!children) {
|
|
35
|
+
switch (mode) {
|
|
36
|
+
case 'move': {
|
|
37
|
+
return circle;
|
|
38
|
+
}
|
|
39
|
+
case 'pull': {
|
|
40
|
+
return line;
|
|
41
|
+
}
|
|
42
|
+
case 'select': {
|
|
43
|
+
return plus;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return children;
|
|
48
|
+
}, [
|
|
49
|
+
children,
|
|
50
|
+
circle,
|
|
51
|
+
line,
|
|
52
|
+
mode,
|
|
53
|
+
plus
|
|
54
|
+
]);
|
|
55
|
+
return ((0, jsx_runtime_1.jsx)(base_1.Grid, { scale: scale, xOffset: translate.x, yOffset: translate.y, children: child }));
|
|
56
|
+
};
|
|
57
|
+
Grid.displayName = 'LincleInteractiveGrid';
|
|
58
|
+
exports.default = Grid;
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Graph/Grid/index.tsx"],"names":[],"mappings":";;;AAAA,wCAEuB;AACvB,4CAKyB;AACzB,iCAGe;AACf,uDAG0B;AAE1B,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,MAAM,IAAI,GAAiC,CAAC,EAC1C,QAAQ,EACT,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,qBAAY,GAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAA,gBAAO,GAAE,CAAC;IAEvB,MAAM,IAAI,GAAG,IAAA,eAAO,EAClB,GAAG,EAAE;QACH,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QAErB,OAAO,CACL,uBAAC,uBAAI,IACH,MAAM,EAAC,OAAO,EACd,WAAW,EAAE,KAAK,EAClB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,GACN,CACH,CAAC;IACJ,CAAC,EACD;QACE,KAAK;KACN,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,eAAO,EAClB,GAAG,EAAE;QACH,MAAM,EAAE,GAAG,KAAK,CAAC;QACjB,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QAErB,OAAO,CACL,6DACE,uBAAC,uBAAI,IACH,MAAM,EAAC,OAAO,EACd,WAAW,EAAE,KAAK,EAClB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,GACN,EACF,uBAAC,uBAAI,IACH,MAAM,EAAC,OAAO,EACd,WAAW,EAAE,KAAK,EAClB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,GACN,IACD,CACJ,CAAC;IACJ,CAAC,EACD;QACE,KAAK;KACN,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,eAAO,EACpB,GAAG,EAAE;QACH,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QAErB,OAAO,CACL,uBAAC,yBAAM,IACL,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,OAAO,EACZ,CAAC,EAAE,KAAK,GACR,CACH,CAAC;IACJ,CAAC,EACD;QACE,KAAK;KACN,CACF,CAAC;IAEF,MAAM,KAAK,GAAG,IAAA,eAAO,EAEnB,GAAG,EAAE;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEd,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD;QACE,QAAQ;QACR,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CACF,CAAC;IAEF,OAAO,CACL,uBAAC,WAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,CAAC,CAAC,EACpB,OAAO,EAAE,SAAS,CAAC,CAAC,YAEnB,KAAK,GACG,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC;AAE3C,kBAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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.Graph = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const shared_1 = require("../../shared");
|
|
9
|
+
const Interaction_1 = __importDefault(require("../Interaction"));
|
|
10
|
+
const Grid_1 = __importDefault(require("./Grid"));
|
|
11
|
+
const Graph = ({ children, edgeFrequency, grid, id, line, maxScale, minScale, mode, move, nodeFrequency, nodeHeight, nodeWidth, onNodeDrag, onNodeEdgeDrop, onNodeSelect, onNodeStart, onNodeStop, onScale, onTranslate, pan, pull, scale, shape, showGrid, snap, translate, zoom }) => {
|
|
12
|
+
if (!id) {
|
|
13
|
+
console.error('No ID provided to @lincle/interactive Graph!');
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const gird = showGrid === false ?
|
|
17
|
+
null :
|
|
18
|
+
(0, jsx_runtime_1.jsx)(Grid_1.default, {});
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)(shared_1.GraphBase, { edgeFrequency: edgeFrequency, grid: grid, id: id, line: line, nodeFrequency: nodeFrequency, nodeHeight: nodeHeight, nodeWidth: nodeWidth, shape: shape, showGrid: false, children: (0, jsx_runtime_1.jsxs)(shared_1.Providers, { maxScale: maxScale, minScale: minScale, mode: mode, move: move, onNodeDrag: onNodeDrag, onNodeEdgeDrop: onNodeEdgeDrop, onNodeSelect: onNodeSelect, onNodeStart: onNodeStart, onNodeStop: onNodeStop, onScale: onScale, onTranslate: onTranslate, pan: pan, pull: pull, scale: scale, snap: snap, translate: translate, zoom: zoom, children: [gird, (0, jsx_runtime_1.jsx)(Interaction_1.default, {}), children] }) }));
|
|
20
|
+
};
|
|
21
|
+
exports.Graph = Graph;
|
|
22
|
+
Graph.displayName = 'LincleInteractiveGraph';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Graph/index.tsx"],"names":[],"mappings":";;;;;;;AAAA,yCAIsB;AACtB,iEAAyC;AACzC,kDAA0B;AAK1B,MAAM,KAAK,GAAkC,CAAC,EAC5C,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACX,GAAG,EACH,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,IAAI,EACL,EAAE,EAAE;IACH,IACE,CAAC,EAAE,EACH,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC;QACN,uBAAC,cAAI,KAAG,CAAC;IAEX,OAAO,CACL,uBAAC,kBAAS,IACR,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,YAEf,wBAAC,kBAAS,IACR,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,aAET,IAAI,EACL,uBAAC,qBAAW,KAAG,EACd,QAAQ,IACC,GACF,CACb,CAAC;AACJ,CAAC,CAAC;AAKA,sBAAK;AAHP,KAAK,CAAC,WAAW,GAAG,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const shared_1 = require("../../shared");
|
|
5
|
+
const react_native_zoomable_view_1 = require("@openspacelabs/react-native-zoomable-view");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const react_native_1 = require("react-native");
|
|
8
|
+
const CLICK_TIME = 500;
|
|
9
|
+
const useDoubleTap = () => {
|
|
10
|
+
const timer = (0, react_1.useRef)(null);
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
return () => {
|
|
13
|
+
if (timer.current) {
|
|
14
|
+
clearTimeout(timer.current);
|
|
15
|
+
timer.current = null;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}, []);
|
|
19
|
+
return (0, react_1.useCallback)((callback, threshold = CLICK_TIME) => {
|
|
20
|
+
if (timer.current) {
|
|
21
|
+
clearTimeout(timer.current);
|
|
22
|
+
timer.current = null;
|
|
23
|
+
callback();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
timer.current = setTimeout(() => {
|
|
27
|
+
timer.current = null;
|
|
28
|
+
}, threshold);
|
|
29
|
+
}
|
|
30
|
+
}, []);
|
|
31
|
+
};
|
|
32
|
+
const styles = react_native_1.StyleSheet.create({
|
|
33
|
+
container: {
|
|
34
|
+
bottom: 0,
|
|
35
|
+
height: '100%',
|
|
36
|
+
left: 0,
|
|
37
|
+
overflow: 'visible',
|
|
38
|
+
position: 'absolute',
|
|
39
|
+
right: 0,
|
|
40
|
+
top: 0,
|
|
41
|
+
width: '100%'
|
|
42
|
+
},
|
|
43
|
+
zoomable: {
|
|
44
|
+
overflow: 'visible'
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const Interaction = ({ onPointerUp }) => {
|
|
48
|
+
const scale = (0, shared_1.useScale)();
|
|
49
|
+
const translate = (0, shared_1.useTranslate)();
|
|
50
|
+
const onScale = (0, shared_1.useOnScale)();
|
|
51
|
+
const onTranslateThrottle = (0, shared_1.useOnTranslateThrottle)();
|
|
52
|
+
const graphMode = (0, shared_1.useMode)() ?? 'move';
|
|
53
|
+
const onMode = (0, shared_1.useOnMode)();
|
|
54
|
+
const handleDoubleTap = useDoubleTap();
|
|
55
|
+
const handleOnTransform = (0, react_1.useCallback)((event) => {
|
|
56
|
+
const { offsetX, offsetY, originalHeight, originalWidth, zoomLevel } = event;
|
|
57
|
+
onTranslateThrottle(originalWidth, originalHeight, offsetX, offsetY, zoomLevel);
|
|
58
|
+
}, [
|
|
59
|
+
onTranslateThrottle
|
|
60
|
+
]);
|
|
61
|
+
const handleZoom = (0, react_1.useCallback)((_event, _gestureState, zoomableViewEventObject) => {
|
|
62
|
+
const { offsetX, offsetY, originalHeight, originalWidth, zoomLevel } = zoomableViewEventObject;
|
|
63
|
+
onTranslateThrottle(originalWidth, originalHeight, offsetX, offsetY, zoomLevel);
|
|
64
|
+
if (onScale) {
|
|
65
|
+
onScale(zoomLevel);
|
|
66
|
+
}
|
|
67
|
+
}, [
|
|
68
|
+
onScale,
|
|
69
|
+
onTranslateThrottle
|
|
70
|
+
]);
|
|
71
|
+
const handleTapEnd = (0, react_1.useCallback)(() => {
|
|
72
|
+
if (onMode) {
|
|
73
|
+
switch (graphMode) {
|
|
74
|
+
case 'move': {
|
|
75
|
+
handleDoubleTap(() => {
|
|
76
|
+
onMode('pull');
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
case 'pull': {
|
|
81
|
+
handleDoubleTap(() => {
|
|
82
|
+
onMode('select');
|
|
83
|
+
});
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
case 'select': {
|
|
87
|
+
handleDoubleTap(() => {
|
|
88
|
+
onMode('move');
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}, [
|
|
94
|
+
graphMode,
|
|
95
|
+
handleDoubleTap,
|
|
96
|
+
onMode
|
|
97
|
+
]);
|
|
98
|
+
const handlePointerUp = (0, react_1.useCallback)((event) => {
|
|
99
|
+
handleTapEnd();
|
|
100
|
+
if (onPointerUp) {
|
|
101
|
+
onPointerUp(event);
|
|
102
|
+
}
|
|
103
|
+
}, [
|
|
104
|
+
handleTapEnd,
|
|
105
|
+
onPointerUp
|
|
106
|
+
]);
|
|
107
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: styles.container, children: (0, jsx_runtime_1.jsx)(react_native_zoomable_view_1.ReactNativeZoomableView, { bindToBorders: false, doubleTapDelay: 1, doubleTapZoomToCenter: false, initialOffsetX: translate.x, initialOffsetY: translate.y, initialZoom: scale, maxZoom: 1.5, minZoom: 0.5, movementSensibility: 1, onSingleTap: handlePointerUp, onTransform: handleOnTransform, onZoomAfter: handleZoom, panEnabled: true, style: styles.zoomable, visualTouchFeedbackEnabled: false, zoomStep: 0.5 }) }));
|
|
108
|
+
};
|
|
109
|
+
Interaction.displayName = 'LincleInteractiveInteraction';
|
|
110
|
+
exports.default = Interaction;
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Interaction/index.tsx"],"names":[],"mappings":";;;AAAA,yCAQsB;AACtB,0FAGmD;AACnD,iCAKe;AACf,+CAKsB;AAEtB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,KAAK,GAAG,IAAA,cAAM,EAAgC,IAAI,CAAC,CAAC;IAE1D,IAAA,iBAAS,EACP,GAAG,EAAE;QACH,OAAO,GAAG,EAAE;YACV,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO,IAAA,mBAAW,EAChB,CACE,QAAoB,EAEpB,SAAS,GAAG,UAAU,EACtB,EAAE;QACF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YAGrB,QAAQ,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE;gBACH,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,CAAC,EACD,SAAS,CACV,CAAC;QACJ,CAAC;IACH,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,MAAM;KACd;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAwC,CAAC,EACxD,WAAW,EACZ,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,qBAAY,GAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC7B,MAAM,mBAAmB,GAAG,IAAA,+BAAsB,GAAE,CAAC;IACrD,MAAM,SAAS,GAAG,IAAA,gBAAO,GAAE,IAAI,MAAM,CAAC;IACtC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,eAAe,GAAG,YAAY,EAAE,CAAC;IAEvC,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EACnC,CAAC,KAAwB,EAAE,EAAE;QAC3B,MAAM,EACJ,OAAO,EACP,OAAO,EACP,cAAc,EACd,aAAa,EACb,SAAS,EACV,GAAG,KAAK,CAAC;QAEV,mBAAmB,CACjB,aAAa,EACb,cAAc,EACd,OAAO,EACP,OAAO,EACP,SAAS,CACV,CAAC;IACJ,CAAC,EACD;QACE,mBAAmB;KACpB,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,mBAAW,EAC5B,CACE,MAAoC,EACpC,aAA8C,EAC9C,uBAA0C,EAC1C,EAAE;QACF,MAAM,EACJ,OAAO,EACP,OAAO,EACP,cAAc,EACd,aAAa,EACb,SAAS,EACV,GAAG,uBAAuB,CAAC;QAE5B,mBAAmB,CACjB,aAAa,EACb,cAAc,EACd,OAAO,EACP,OAAO,EACP,SAAS,CACV,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EACD;QACE,OAAO;QACP,mBAAmB;KACpB,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,GAAG,EAAE;QACH,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,eAAe,CACb,GAAG,EAAE;wBACH,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjB,CAAC,CACF,CAAC;oBAEF,OAAO;gBACT,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,eAAe,CACb,GAAG,EAAE;wBACH,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACnB,CAAC,CACF,CAAC;oBAEF,OAAO;gBACT,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,eAAe,CACb,GAAG,EAAE;wBACH,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjB,CAAC,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EACD;QACE,SAAS;QACT,eAAe;QACf,MAAM;KACP,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CACE,KAA4B,EAC5B,EAAE;QACF,YAAY,EAAE,CAAC;QAEf,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EACD;QACE,YAAY;QACZ,WAAW;KACZ,CACF,CAAC;IAEF,OAAO,CACL,uBAAC,mBAAI,IACH,KAAK,EAAE,MAAM,CAAC,SAAS,YAEvB,uBAAC,oDAAuB,IACtB,aAAa,EAAE,KAAK,EACpB,cAAc,EAAE,CAAC,EACjB,qBAAqB,EAAE,KAAK,EAC5B,cAAc,EAAE,SAAS,CAAC,CAAC,EAC3B,cAAc,EAAE,SAAS,CAAC,CAAC,EAC3B,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,mBAAmB,EAAE,CAAC,EACtB,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,iBAAiB,EAC9B,WAAW,EAAE,UAAU,EACvB,UAAU,QACV,KAAK,EAAE,MAAM,CAAC,QAAQ,EACtB,0BAA0B,EAAE,KAAK,EACjC,QAAQ,EAAE,GAAG,GACb,GACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,8BAA8B,CAAC;AAEzD,kBAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const clamp = (number, min, max) => {
|
|
7
|
+
return Math.max(min, Math.min(number, max));
|
|
8
|
+
};
|
|
9
|
+
const styles = react_native_1.StyleSheet.create({
|
|
10
|
+
debugView: {
|
|
11
|
+
backgroundColor: '#ff000044',
|
|
12
|
+
borderColor: '#fced0ecc',
|
|
13
|
+
borderWidth: 4,
|
|
14
|
+
position: 'absolute'
|
|
15
|
+
},
|
|
16
|
+
text: {
|
|
17
|
+
color: '#fff',
|
|
18
|
+
textAlign: 'center'
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const Draggable = ({ animatedViewProps, children, debug = false, disabled = false, imageSource, isCircle, maxX, maxY, minX, minY, onDrag, onDragRelease, onLongPress, onPressIn, onPressOut, onRelease, onShortPressRelease, renderColor, renderSize = 36, renderText = '+', scale = 1, shouldReverse = false, touchableOpacityProps, x = 0, y = 0, zIndex = 1 }) => {
|
|
22
|
+
const pan = (0, react_1.useRef)(new react_native_1.Animated.ValueXY());
|
|
23
|
+
const offsetFromStart = (0, react_1.useRef)({
|
|
24
|
+
x: 0,
|
|
25
|
+
y: 0
|
|
26
|
+
});
|
|
27
|
+
const childSize = (0, react_1.useRef)({
|
|
28
|
+
x: renderSize,
|
|
29
|
+
y: renderSize
|
|
30
|
+
});
|
|
31
|
+
const startBounds = (0, react_1.useRef)({
|
|
32
|
+
bottom: 0,
|
|
33
|
+
left: 0,
|
|
34
|
+
right: 0,
|
|
35
|
+
top: 0
|
|
36
|
+
});
|
|
37
|
+
const isDragging = (0, react_1.useRef)(false);
|
|
38
|
+
const getBounds = (0, react_1.useCallback)(() => {
|
|
39
|
+
const left = x + offsetFromStart.current.x;
|
|
40
|
+
const top = y + offsetFromStart.current.y;
|
|
41
|
+
return {
|
|
42
|
+
bottom: top + childSize.current.y,
|
|
43
|
+
left,
|
|
44
|
+
right: left + childSize.current.x,
|
|
45
|
+
top
|
|
46
|
+
};
|
|
47
|
+
}, [
|
|
48
|
+
x,
|
|
49
|
+
y
|
|
50
|
+
]);
|
|
51
|
+
const shouldStartDrag = (0, react_1.useCallback)((gs) => {
|
|
52
|
+
return !disabled && (Math.abs(gs.dx) > 2 || Math.abs(gs.dy) > 2);
|
|
53
|
+
}, [
|
|
54
|
+
disabled
|
|
55
|
+
]);
|
|
56
|
+
const reversePosition = (0, react_1.useCallback)(() => {
|
|
57
|
+
react_native_1.Animated.spring(pan.current, {
|
|
58
|
+
toValue: {
|
|
59
|
+
x: 0,
|
|
60
|
+
y: 0
|
|
61
|
+
},
|
|
62
|
+
useNativeDriver: false
|
|
63
|
+
}).start();
|
|
64
|
+
}, [
|
|
65
|
+
pan
|
|
66
|
+
]);
|
|
67
|
+
const onPanResponderRelease = (0, react_1.useCallback)((event, gestureState) => {
|
|
68
|
+
isDragging.current = false;
|
|
69
|
+
if (onDragRelease) {
|
|
70
|
+
onDragRelease(event, gestureState, getBounds());
|
|
71
|
+
if (onRelease) {
|
|
72
|
+
onRelease(event, true);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (shouldReverse) {
|
|
76
|
+
reversePosition();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
pan.current.flattenOffset();
|
|
80
|
+
}
|
|
81
|
+
}, [
|
|
82
|
+
getBounds,
|
|
83
|
+
onDragRelease,
|
|
84
|
+
onRelease,
|
|
85
|
+
reversePosition,
|
|
86
|
+
shouldReverse
|
|
87
|
+
]);
|
|
88
|
+
const onPanResponderGrant = (0, react_1.useCallback)((_event, _gestureState) => {
|
|
89
|
+
startBounds.current = getBounds();
|
|
90
|
+
isDragging.current = true;
|
|
91
|
+
if (!shouldReverse) {
|
|
92
|
+
pan.current.setOffset(offsetFromStart.current);
|
|
93
|
+
pan.current.setValue({
|
|
94
|
+
x: 0,
|
|
95
|
+
y: 0
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}, [
|
|
99
|
+
getBounds,
|
|
100
|
+
shouldReverse
|
|
101
|
+
]);
|
|
102
|
+
const handleOnDrag = (0, react_1.useCallback)((event, gestureState) => {
|
|
103
|
+
const { dx, dy } = gestureState;
|
|
104
|
+
const { bottom, left, right, top } = startBounds.current;
|
|
105
|
+
const far = 999999999;
|
|
106
|
+
const changeX = clamp(dx, Number.isFinite(minX) ?
|
|
107
|
+
minX - left :
|
|
108
|
+
-far, Number.isFinite(maxX) ?
|
|
109
|
+
maxX - right :
|
|
110
|
+
far);
|
|
111
|
+
const changeY = clamp(dy, Number.isFinite(minY) ?
|
|
112
|
+
minY - top :
|
|
113
|
+
-far, Number.isFinite(maxY) ?
|
|
114
|
+
maxY - bottom :
|
|
115
|
+
far);
|
|
116
|
+
pan.current.setValue({
|
|
117
|
+
x: changeX / scale,
|
|
118
|
+
y: changeY / scale
|
|
119
|
+
});
|
|
120
|
+
if (onDrag) {
|
|
121
|
+
onDrag(event, {
|
|
122
|
+
...gestureState,
|
|
123
|
+
dx: changeX / scale,
|
|
124
|
+
dy: changeY / scale
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}, [
|
|
128
|
+
maxX,
|
|
129
|
+
maxY,
|
|
130
|
+
minX,
|
|
131
|
+
minY,
|
|
132
|
+
onDrag,
|
|
133
|
+
scale
|
|
134
|
+
]);
|
|
135
|
+
const panResponder = (0, react_1.useMemo)(() => {
|
|
136
|
+
return react_native_1.PanResponder.create({
|
|
137
|
+
onMoveShouldSetPanResponder: (_, gestureState) => {
|
|
138
|
+
return shouldStartDrag(gestureState);
|
|
139
|
+
},
|
|
140
|
+
onMoveShouldSetPanResponderCapture: (_, gestureState) => {
|
|
141
|
+
return shouldStartDrag(gestureState);
|
|
142
|
+
},
|
|
143
|
+
onPanResponderGrant,
|
|
144
|
+
onPanResponderMove: react_native_1.Animated.event([], {
|
|
145
|
+
listener: handleOnDrag,
|
|
146
|
+
useNativeDriver: false
|
|
147
|
+
}),
|
|
148
|
+
onPanResponderRelease
|
|
149
|
+
});
|
|
150
|
+
}, [
|
|
151
|
+
handleOnDrag,
|
|
152
|
+
onPanResponderGrant,
|
|
153
|
+
onPanResponderRelease,
|
|
154
|
+
shouldStartDrag
|
|
155
|
+
]);
|
|
156
|
+
(0, react_1.useEffect)(() => {
|
|
157
|
+
const currentPan = pan.current;
|
|
158
|
+
if (!shouldReverse) {
|
|
159
|
+
currentPan.addListener((cp) => {
|
|
160
|
+
offsetFromStart.current = cp;
|
|
161
|
+
return offsetFromStart.current;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return () => {
|
|
165
|
+
currentPan.removeAllListeners();
|
|
166
|
+
};
|
|
167
|
+
}, [
|
|
168
|
+
shouldReverse
|
|
169
|
+
]);
|
|
170
|
+
const positionCss = (0, react_1.useMemo)(() => {
|
|
171
|
+
const Window = react_native_1.Dimensions.get('window');
|
|
172
|
+
return {
|
|
173
|
+
height: Window.height,
|
|
174
|
+
left: 0,
|
|
175
|
+
position: 'absolute',
|
|
176
|
+
top: 0,
|
|
177
|
+
width: Window.width
|
|
178
|
+
};
|
|
179
|
+
}, []);
|
|
180
|
+
const hasChildren = Boolean(children);
|
|
181
|
+
const dragItemCss = (0, react_1.useMemo)(() => {
|
|
182
|
+
const style = {
|
|
183
|
+
elevation: zIndex,
|
|
184
|
+
left: x,
|
|
185
|
+
top: y,
|
|
186
|
+
zIndex
|
|
187
|
+
};
|
|
188
|
+
if (renderColor) {
|
|
189
|
+
style.backgroundColor = renderColor;
|
|
190
|
+
}
|
|
191
|
+
if (isCircle) {
|
|
192
|
+
style.borderRadius = renderSize;
|
|
193
|
+
}
|
|
194
|
+
if (hasChildren) {
|
|
195
|
+
style.alignSelf = 'baseline';
|
|
196
|
+
return style;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
style.height = renderSize;
|
|
200
|
+
style.justifyContent = 'center';
|
|
201
|
+
style.width = renderSize;
|
|
202
|
+
return style;
|
|
203
|
+
}
|
|
204
|
+
}, [
|
|
205
|
+
hasChildren,
|
|
206
|
+
isCircle,
|
|
207
|
+
renderColor,
|
|
208
|
+
renderSize,
|
|
209
|
+
x,
|
|
210
|
+
y,
|
|
211
|
+
zIndex
|
|
212
|
+
]);
|
|
213
|
+
const touchableContent = (0, react_1.useMemo)(() => {
|
|
214
|
+
if (imageSource) {
|
|
215
|
+
const style = {
|
|
216
|
+
height: renderSize,
|
|
217
|
+
width: renderSize
|
|
218
|
+
};
|
|
219
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.Image, { source: imageSource, style: style }));
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.text, children: renderText }));
|
|
223
|
+
}
|
|
224
|
+
}, [
|
|
225
|
+
imageSource,
|
|
226
|
+
renderSize,
|
|
227
|
+
renderText
|
|
228
|
+
]);
|
|
229
|
+
const handleOnLayout = (0, react_1.useCallback)((event) => {
|
|
230
|
+
const { height, width } = event.nativeEvent.layout;
|
|
231
|
+
childSize.current = {
|
|
232
|
+
x: width,
|
|
233
|
+
y: height
|
|
234
|
+
};
|
|
235
|
+
}, []);
|
|
236
|
+
const handlePressOut = (0, react_1.useCallback)((event) => {
|
|
237
|
+
if (onPressOut) {
|
|
238
|
+
onPressOut(event);
|
|
239
|
+
}
|
|
240
|
+
if (!isDragging.current &&
|
|
241
|
+
onRelease) {
|
|
242
|
+
onRelease(event, false);
|
|
243
|
+
}
|
|
244
|
+
}, [
|
|
245
|
+
onPressOut,
|
|
246
|
+
onRelease
|
|
247
|
+
]);
|
|
248
|
+
const getDebugView = (0, react_1.useCallback)(() => {
|
|
249
|
+
const { height, width } = react_native_1.Dimensions.get('window');
|
|
250
|
+
const far = 9999;
|
|
251
|
+
const constrained = minX ?? maxX ?? minY ?? maxY;
|
|
252
|
+
if (!constrained) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
const left = minX ?? -far;
|
|
256
|
+
const right = maxX ?
|
|
257
|
+
width - maxX :
|
|
258
|
+
-far;
|
|
259
|
+
const top = minY ?? -far;
|
|
260
|
+
const bottom = maxY ?
|
|
261
|
+
height - maxY :
|
|
262
|
+
-far;
|
|
263
|
+
const style = {
|
|
264
|
+
bottom,
|
|
265
|
+
left,
|
|
266
|
+
right,
|
|
267
|
+
top,
|
|
268
|
+
...styles.debugView
|
|
269
|
+
};
|
|
270
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { pointerEvents: 'box-none', style: style }));
|
|
271
|
+
}, [
|
|
272
|
+
maxX,
|
|
273
|
+
maxY,
|
|
274
|
+
minX,
|
|
275
|
+
minY
|
|
276
|
+
]);
|
|
277
|
+
return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { pointerEvents: 'box-none', style: positionCss, children: [debug && getDebugView(), (0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { pointerEvents: 'box-none', ...animatedViewProps, ...panResponder.panHandlers, style: pan.current.getLayout(), children: (0, jsx_runtime_1.jsx)(react_native_1.TouchableOpacity, { ...touchableOpacityProps, activeOpacity: 1, disabled: disabled, onLayout: handleOnLayout, onLongPress: onLongPress, onPress: onShortPressRelease, onPressIn: onPressIn, onPressOut: handlePressOut, style: dragItemCss, children: children ?? touchableContent }) })] }));
|
|
278
|
+
};
|
|
279
|
+
Draggable.displayName = 'ReactNativeDraggable';
|
|
280
|
+
exports.default = Draggable;
|
|
281
|
+
//# sourceMappingURL=Draggable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Draggable.js","sourceRoot":"","sources":["../../../../src/components/Node/Draggable.tsx"],"names":[],"mappings":";;;AAIA,iCAMe;AACf,+CAcsB;AAEtB,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,GAAW,EAAE,EAAE;IACzD,OAAO,IAAI,CAAC,GAAG,CACb,GAAG,EACH,IAAI,CAAC,GAAG,CACN,MAAM,EACN,GAAG,CACJ,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,UAAU;KACrB;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC,CAAC;AAEH,MAAM,SAAS,GAA8B,CAAC,EAC5C,iBAAiB,EACjB,QAAQ,EACR,KAAK,GAAG,KAAK,EACb,QAAQ,GAAG,KAAK,EAChB,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,UAAU,GAAG,EAAE,EACf,UAAU,GAAG,GAAG,EAChB,KAAK,GAAG,CAAC,EACT,aAAa,GAAG,KAAK,EACrB,qBAAqB,EACrB,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,MAAM,GAAG,CAAC,EACX,EAAE,EAAE;IAEH,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,uBAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAG3C,MAAM,eAAe,GAAG,IAAA,cAAM,EAAC;QAC7B,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;KACL,CAAC,CAAC;IAGH,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC;QACvB,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,UAAU;KACd,CAAC,CAAC;IAGH,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC;QACzB,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IAGH,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,GAAG,EAAE;QACH,MAAM,IAAI,GAAG,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,OAAO;YACL,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI;YACJ,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YACjC,GAAG;SACJ,CAAC;IACJ,CAAC,EACD;QACE,CAAC;QACD,CAAC;KACF,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CACE,EAGC,EACD,EAAE;QACF,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC,EACD;QACE,QAAQ;KACT,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,GAAG,EAAE;QACH,uBAAQ,CAAC,MAAM,CACb,GAAG,CAAC,OAAO,EACX;YACE,OAAO,EAAE;gBACP,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACL;YACD,eAAe,EAAE,KAAK;SACvB,CACF,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC,EACD;QACE,GAAG;KACJ,CACF,CAAC;IAEF,MAAM,qBAAqB,GAAG,IAAA,mBAAW,EACvC,CACE,KAA4B,EAC5B,YAAsC,EACtC,EAAE;QACF,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAE3B,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CACX,KAAK,EACL,YAAY,EACZ,SAAS,EAAE,CACZ,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CACP,KAAK,EACL,IAAI,CACL,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,EACD;QACE,SAAS;QACT,aAAa;QACb,SAAS;QACT,eAAe;QACf,aAAa;KACd,CACF,CAAC;IAEF,MAAM,mBAAmB,GAAG,IAAA,mBAAW,EACrC,CAEE,MAA6B,EAE7B,aAAuC,EACvC,EAAE;QACF,WAAW,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;QAClC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/C,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACnB,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EACD;QACE,SAAS;QACT,aAAa;KACd,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,CACE,KAA4B,EAC5B,YAAsC,EACtC,EAAE;QACF,MAAM,EACJ,EAAE,EACF,EAAE,EACH,GAAG,YAAY,CAAC;QAEjB,MAAM,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,EACJ,GAAG,WAAW,CAAC,OAAO,CAAC;QAExB,MAAM,GAAG,GAAG,SAAW,CAAC;QAExB,MAAM,OAAO,GAAG,KAAK,CACnB,EAAE,EACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAGrB,IAAI,GAAG,IAAI,CAAC,CAAC;YACb,CAAC,GAAG,EACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAGrB,IAAI,GAAG,KAAK,CAAC,CAAC;YACd,GAAG,CACN,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,CACnB,EAAE,EACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAGrB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,CAAC,GAAG,EACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAGrB,IAAI,GAAG,MAAM,CAAC,CAAC;YACf,GAAG,CACN,CAAC;QAEF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnB,CAAC,EAAE,OAAO,GAAG,KAAK;YAClB,CAAC,EAAE,OAAO,GAAG,KAAK;SACnB,CAAC,CAAC;QAEH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CACJ,KAAK,EACL;gBACE,GAAG,YAAY;gBACf,EAAE,EAAE,OAAO,GAAG,KAAK;gBACnB,EAAE,EAAE,OAAO,GAAG,KAAK;aACpB,CACF,CAAC;QACJ,CAAC;IACH,CAAC,EACD;QACE,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,KAAK;KACN,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,eAAO,EAC1B,GAAG,EAAE;QACH,OAAO,2BAAY,CAAC,MAAM,CAAC;YACzB,2BAA2B,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;gBAC/C,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;YACvC,CAAC;YACD,kCAAkC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;gBACtD,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;YACvC,CAAC;YACD,mBAAmB;YACnB,kBAAkB,EAAE,uBAAQ,CAAC,KAAK,CAChC,EAAE,EACF;gBAIE,QAAQ,EAAE,YAAY;gBACtB,eAAe,EAAE,KAAK;aACvB,CACF;YACD,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC,EACD;QACE,YAAY;QACZ,mBAAmB;QACnB,qBAAqB;QACrB,eAAe;KAChB,CACF,CAAC;IAKF,IAAA,iBAAS,EACP,GAAG,EAAE;QAEH,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,UAAU,CAAC,WAAW,CACpB,CAAC,EAAE,EAAE,EAAE;gBACL,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;gBAE7B,OAAO,eAAe,CAAC,OAAO,CAAC;YACjC,CAAC,CACF,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,EAAE;YAEV,UAAU,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EACD;QACE,aAAa;KACd,CACF,CAAC;IAEF,MAAM,WAAW,GAAyB,IAAA,eAAO,EAC/C,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,yBAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;IACJ,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAG,IAAA,eAAO,EACzB,GAAG,EAAE;QACH,MAAM,KAAK,GAAyB;YAClC,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,MAAM;SACP,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,eAAe,GAAG,WAAW,CAAC;QACtC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;QAClC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;YAE7B,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;YAC1B,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;YAChC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;YAEzB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EACD;QACE,WAAW;QACX,QAAQ;QACR,WAAW;QACX,UAAU;QACV,CAAC;QACD,CAAC;QACD,MAAM;KACP,CACF,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAA,eAAO,EAC9B,GAAG,EAAE;QACH,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG;gBACZ,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,UAAU;aAClB,CAAC;YAEF,OAAO,CACL,uBAAC,oBAAK,IACJ,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CACL,uBAAC,mBAAI,IACH,KAAK,EAAE,MAAM,CAAC,IAAI,YAEjB,UAAU,GACN,CACR,CAAC;QACJ,CAAC;IACH,CAAC,EACD;QACE,WAAW;QACX,UAAU;QACV,UAAU;KACX,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,CAAC,KAAwB,EAAE,EAAE;QAC3B,MAAM,EACJ,MAAM,EACN,KAAK,EACN,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7B,SAAS,CAAC,OAAO,GAAG;YAClB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,MAAM;SACV,CAAC;IACJ,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,CAAC,KAA4B,EAAE,EAAE;QAC/B,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,IACE,CAAC,UAAU,CAAC,OAAO;YACnB,SAAS,EACT,CAAC;YACD,SAAS,CACP,KAAK,EACL,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC,EACD;QACE,UAAU;QACV,SAAS;KACV,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,GAAG,EAAE;QACH,MAAM,EACJ,MAAM,EACN,KAAK,EACN,GAAG,yBAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAK,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC,CAAC;YACd,CAAC,GAAG,CAAC;QACP,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC;YACnB,MAAM,GAAG,IAAI,CAAC,CAAC;YACf,CAAC,GAAG,CAAC;QAEP,MAAM,KAAK,GAAG;YACZ,MAAM;YACN,IAAI;YACJ,KAAK;YACL,GAAG;YACH,GAAG,MAAM,CAAC,SAAS;SACpB,CAAC;QAEF,OAAO,CACL,uBAAC,mBAAI,IACH,aAAa,EAAC,UAAU,EACxB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC;IACJ,CAAC,EACD;QACE,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CACF,CAAC;IAEF,OAAO,CACL,wBAAC,mBAAI,IAAC,aAAa,EAAC,UAAU,EAAC,KAAK,EAAE,WAAW,aAC9C,KAAK,IAAI,YAAY,EAAE,EACxB,uBAAC,uBAAQ,CAAC,IAAI,IACZ,aAAa,EAAC,UAAU,KACpB,iBAAiB,KACjB,YAAY,CAAC,WAAW,EAC5B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,YAE9B,uBAAC,+BAAgB,OACX,qBAAqB,EACzB,aAAa,EAAE,CAAC,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,WAAW,YAEjB,QAAQ,IAAI,gBAAgB,GACZ,GACL,IACX,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAE/C,kBAAe,SAAS,CAAC"}
|