@fxhash/params 0.0.4 → 0.0.7
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/BaseInput.cjs +13 -0
- package/dist/BaseInput.cjs.map +1 -0
- package/dist/BaseInput.css +112 -0
- package/dist/BaseInput.css.map +1 -0
- package/dist/BaseInput.d.ts +12 -0
- package/dist/BaseInput.js +13 -0
- package/dist/BaseInput.js.map +1 -0
- package/dist/Context.cjs +49 -0
- package/dist/Context.cjs.map +1 -0
- package/dist/Context.d.ts +19 -0
- package/dist/Context.js +49 -0
- package/dist/Context.js.map +1 -0
- package/dist/Controller/BigInt.cjs +10 -0
- package/dist/Controller/BigInt.cjs.map +1 -0
- package/dist/Controller/BigInt.css +183 -0
- package/dist/Controller/BigInt.css.map +1 -0
- package/dist/Controller/BigInt.d.ts +8 -0
- package/dist/Controller/BigInt.js +10 -0
- package/dist/Controller/BigInt.js.map +1 -0
- package/dist/Controller/Boolean.cjs +9 -0
- package/dist/Controller/Boolean.cjs.map +1 -0
- package/dist/Controller/Boolean.css +183 -0
- package/dist/Controller/Boolean.css.map +1 -0
- package/dist/Controller/Boolean.d.ts +8 -0
- package/dist/Controller/Boolean.js +9 -0
- package/dist/Controller/Boolean.js.map +1 -0
- package/dist/Controller/Bytes.cjs +9 -0
- package/dist/Controller/Bytes.cjs.map +1 -0
- package/dist/Controller/Bytes.css +191 -0
- package/dist/Controller/Bytes.css.map +1 -0
- package/dist/Controller/Bytes.d.ts +8 -0
- package/dist/Controller/Bytes.js +9 -0
- package/dist/Controller/Bytes.js.map +1 -0
- package/dist/Controller/Color.cjs +10 -0
- package/dist/Controller/Color.cjs.map +1 -0
- package/dist/Controller/Color.css +227 -0
- package/dist/Controller/Color.css.map +1 -0
- package/dist/Controller/Color.d.ts +8 -0
- package/dist/Controller/Color.js +10 -0
- package/dist/Controller/Color.js.map +1 -0
- package/dist/Controller/Controller.cjs +14 -0
- package/dist/Controller/Controller.cjs.map +1 -0
- package/dist/Controller/Controller.css +183 -0
- package/dist/Controller/Controller.css.map +1 -0
- package/dist/Controller/Controller.d.ts +41 -0
- package/dist/Controller/Controller.js +14 -0
- package/dist/Controller/Controller.js.map +1 -0
- package/dist/Controller/Invalid.cjs +7 -0
- package/dist/Controller/Invalid.cjs.map +1 -0
- package/dist/Controller/Invalid.css +48 -0
- package/dist/Controller/Invalid.css.map +1 -0
- package/dist/Controller/Invalid.d.ts +11 -0
- package/dist/Controller/Invalid.js +7 -0
- package/dist/Controller/Invalid.js.map +1 -0
- package/dist/Controller/Number.cjs +9 -0
- package/dist/Controller/Number.cjs.map +1 -0
- package/dist/Controller/Number.css +183 -0
- package/dist/Controller/Number.css.map +1 -0
- package/dist/Controller/Number.d.ts +8 -0
- package/dist/Controller/Number.js +9 -0
- package/dist/Controller/Number.js.map +1 -0
- package/dist/Controller/Param.cjs +21 -0
- package/dist/Controller/Param.cjs.map +1 -0
- package/dist/Controller/Param.css +283 -0
- package/dist/Controller/Param.css.map +1 -0
- package/dist/Controller/Param.d.ts +25 -0
- package/dist/Controller/Param.js +21 -0
- package/dist/Controller/Param.js.map +1 -0
- package/dist/Controller/Select.cjs +9 -0
- package/dist/Controller/Select.cjs.map +1 -0
- package/dist/Controller/Select.css +183 -0
- package/dist/Controller/Select.css.map +1 -0
- package/dist/Controller/Select.d.ts +8 -0
- package/dist/Controller/Select.js +9 -0
- package/dist/Controller/Select.js.map +1 -0
- package/dist/Controller/String.cjs +9 -0
- package/dist/Controller/String.cjs.map +1 -0
- package/dist/Controller/String.css +183 -0
- package/dist/Controller/String.css.map +1 -0
- package/dist/Controller/String.d.ts +8 -0
- package/dist/Controller/String.js +9 -0
- package/dist/Controller/String.js.map +1 -0
- package/dist/Controls.cjs +102 -0
- package/dist/Controls.cjs.map +1 -0
- package/dist/Controls.css +304 -0
- package/dist/Controls.css.map +1 -0
- package/dist/Controls.d.ts +17 -0
- package/dist/Controls.js +102 -0
- package/dist/Controls.js.map +1 -0
- package/dist/LockButton/LockButton.cjs +8 -0
- package/dist/LockButton/LockButton.cjs.map +1 -0
- package/dist/LockButton/LockButton.css +117 -0
- package/dist/LockButton/LockButton.css.map +1 -0
- package/dist/LockButton/LockButton.d.ts +11 -0
- package/dist/LockButton/LockButton.js +8 -0
- package/dist/LockButton/LockButton.js.map +1 -0
- package/dist/ParamsHistory.cjs +89 -0
- package/dist/ParamsHistory.cjs.map +1 -0
- package/dist/ParamsHistory.d.ts +22 -0
- package/dist/ParamsHistory.js +89 -0
- package/dist/ParamsHistory.js.map +1 -0
- package/dist/RuntimeContext.cjs +10 -0
- package/dist/RuntimeContext.cjs.map +1 -0
- package/dist/RuntimeContext.d.ts +44 -0
- package/dist/RuntimeContext.js +10 -0
- package/dist/RuntimeContext.js.map +1 -0
- package/dist/chunk-2BHABOFI.js +43 -0
- package/dist/chunk-2BHABOFI.js.map +1 -0
- package/dist/chunk-2QIAF3U7.js +39 -0
- package/dist/chunk-2QIAF3U7.js.map +1 -0
- package/dist/chunk-2QU65L2O.cjs +399 -0
- package/dist/chunk-2QU65L2O.cjs.map +1 -0
- package/dist/chunk-4FX3ATAX.js +110 -0
- package/dist/chunk-4FX3ATAX.js.map +1 -0
- package/dist/chunk-4OV7OX5A.js +37 -0
- package/dist/chunk-4OV7OX5A.js.map +1 -0
- package/dist/chunk-6VMIOQSE.js +34 -0
- package/dist/chunk-6VMIOQSE.js.map +1 -0
- package/dist/chunk-7NOMBXLG.js +120 -0
- package/dist/chunk-7NOMBXLG.js.map +1 -0
- package/dist/chunk-CE3TPOSO.js +135 -0
- package/dist/chunk-CE3TPOSO.js.map +1 -0
- package/dist/chunk-D4RVVQC7.cjs +23 -0
- package/dist/chunk-D4RVVQC7.cjs.map +1 -0
- package/dist/chunk-DP5CBORY.cjs +46 -0
- package/dist/chunk-DP5CBORY.cjs.map +1 -0
- package/dist/chunk-EACKNC6C.cjs +103 -0
- package/dist/chunk-EACKNC6C.cjs.map +1 -0
- package/dist/chunk-EIQHQNZJ.js +115 -0
- package/dist/chunk-EIQHQNZJ.js.map +1 -0
- package/dist/chunk-FDUCXROE.cjs +120 -0
- package/dist/chunk-FDUCXROE.cjs.map +1 -0
- package/dist/chunk-H5IMTNFG.js +44 -0
- package/dist/chunk-H5IMTNFG.js.map +1 -0
- package/dist/chunk-HJBHIE5T.cjs +135 -0
- package/dist/chunk-HJBHIE5T.cjs.map +1 -0
- package/dist/chunk-JAU4ONF2.cjs +24 -0
- package/dist/chunk-JAU4ONF2.cjs.map +1 -0
- package/dist/chunk-K4EW6YY3.cjs +34 -0
- package/dist/chunk-K4EW6YY3.cjs.map +1 -0
- package/dist/chunk-MWP7SJWC.js +103 -0
- package/dist/chunk-MWP7SJWC.js.map +1 -0
- package/dist/chunk-OFUKQ2TB.cjs +43 -0
- package/dist/chunk-OFUKQ2TB.cjs.map +1 -0
- package/dist/chunk-PTXBICTZ.js +67 -0
- package/dist/chunk-PTXBICTZ.js.map +1 -0
- package/dist/chunk-QM6EKPI6.cjs +67 -0
- package/dist/chunk-QM6EKPI6.cjs.map +1 -0
- package/dist/chunk-SDPENM2L.js +399 -0
- package/dist/chunk-SDPENM2L.js.map +1 -0
- package/dist/chunk-TKKYM77A.cjs +44 -0
- package/dist/chunk-TKKYM77A.cjs.map +1 -0
- package/dist/chunk-VED7SCYX.cjs +39 -0
- package/dist/chunk-VED7SCYX.cjs.map +1 -0
- package/dist/chunk-WQVPKBSN.cjs +110 -0
- package/dist/chunk-WQVPKBSN.cjs.map +1 -0
- package/dist/chunk-X4O42D2P.cjs +37 -0
- package/dist/chunk-X4O42D2P.cjs.map +1 -0
- package/dist/chunk-YBV33YPC.cjs +115 -0
- package/dist/chunk-YBV33YPC.cjs.map +1 -0
- package/dist/chunk-YOS2HCIS.js +23 -0
- package/dist/chunk-YOS2HCIS.js.map +1 -0
- package/dist/chunk-YYEIYDDF.js +24 -0
- package/dist/chunk-YYEIYDDF.js.map +1 -0
- package/dist/chunk-ZUITF5XX.js +46 -0
- package/dist/chunk-ZUITF5XX.js.map +1 -0
- package/dist/hooks.cjs +29 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.ts +6 -0
- package/dist/hooks.js +29 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.cjs +7 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +112 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/types.cjs +1 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.ts +100 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.cjs +33 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.ts +50 -0
- package/dist/utils.js +33 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.cjs +9 -0
- package/dist/validation.cjs.map +1 -0
- package/dist/validation.d.ts +241 -0
- package/dist/validation.js +9 -0
- package/dist/validation.js.map +1 -0
- package/package.json +1 -1
@@ -0,0 +1,89 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
2
|
+
|
3
|
+
var _chunkYBV33YPCcjs = require('./chunk-YBV33YPC.cjs');
|
4
|
+
|
5
|
+
|
6
|
+
var _chunk2QU65L2Ocjs = require('./chunk-2QU65L2O.cjs');
|
7
|
+
|
8
|
+
// src/ParamsHistory.tsx
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
var _react = require('react');
|
16
|
+
|
17
|
+
var _lodashdebounce = require('lodash.debounce'); var _lodashdebounce2 = _interopRequireDefault(_lodashdebounce);
|
18
|
+
var _jsxruntime = require('react/jsx-runtime');
|
19
|
+
var isEqual = (a, b) => _chunk2QU65L2Ocjs.stringifyParamsData.call(void 0, a) === _chunk2QU65L2Ocjs.stringifyParamsData.call(void 0, b);
|
20
|
+
var defaultParamsHistoryContext = {
|
21
|
+
history: [],
|
22
|
+
pushHistory: () => {
|
23
|
+
},
|
24
|
+
offset: 0,
|
25
|
+
setOffset: () => {
|
26
|
+
},
|
27
|
+
undo: () => {
|
28
|
+
},
|
29
|
+
redo: () => {
|
30
|
+
}
|
31
|
+
};
|
32
|
+
var ParamsHistoryContext = _react.createContext.call(void 0, defaultParamsHistoryContext);
|
33
|
+
function ParamsHistoryProvider({ children }) {
|
34
|
+
const lastActionData = _react.useRef.call(void 0, null);
|
35
|
+
const runtime = _react.useContext.call(void 0, _chunkYBV33YPCcjs.RuntimeContext);
|
36
|
+
const [history, setHistory] = _react.useState.call(void 0, []);
|
37
|
+
const [offset, setOffset] = _react.useState.call(void 0, 0);
|
38
|
+
const historyActions = {
|
39
|
+
"params-update": (entry) => {
|
40
|
+
runtime.state.update({ params: entry.data });
|
41
|
+
}
|
42
|
+
};
|
43
|
+
const pushHistory = _react.useCallback.call(void 0,
|
44
|
+
_lodashdebounce2.default.call(void 0, (entry) => {
|
45
|
+
setHistory((prev) => [entry, ...prev]);
|
46
|
+
setOffset(0);
|
47
|
+
lastActionData.current = entry.data;
|
48
|
+
}, 200),
|
49
|
+
[]
|
50
|
+
);
|
51
|
+
const undo = () => {
|
52
|
+
if (offset >= history.length)
|
53
|
+
return;
|
54
|
+
setOffset(offset + 1);
|
55
|
+
};
|
56
|
+
const redo = () => {
|
57
|
+
if (offset <= 0)
|
58
|
+
return;
|
59
|
+
setOffset(offset - 1);
|
60
|
+
};
|
61
|
+
_react.useEffect.call(void 0, () => {
|
62
|
+
const currentEntry = _optionalChain([history, 'optionalAccess', _ => _[offset]]);
|
63
|
+
_optionalChain([historyActions, 'access', _2 => _2[_optionalChain([currentEntry, 'optionalAccess', _3 => _3.type])], 'optionalCall', _4 => _4(
|
64
|
+
currentEntry
|
65
|
+
)]);
|
66
|
+
lastActionData.current = _optionalChain([currentEntry, 'optionalAccess', _5 => _5.data]);
|
67
|
+
}, [offset]);
|
68
|
+
_react.useEffect.call(void 0, () => {
|
69
|
+
if (isEqual(runtime.state.params, _optionalChain([lastActionData, 'optionalAccess', _6 => _6.current])))
|
70
|
+
return;
|
71
|
+
if (!runtime.state.params)
|
72
|
+
return;
|
73
|
+
pushHistory({ type: "params-update", data: runtime.state.params });
|
74
|
+
}, [runtime.state.params, lastActionData.current]);
|
75
|
+
const context = {
|
76
|
+
history,
|
77
|
+
pushHistory,
|
78
|
+
offset,
|
79
|
+
setOffset,
|
80
|
+
undo,
|
81
|
+
redo
|
82
|
+
};
|
83
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ParamsHistoryContext.Provider, { value: context, children });
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
exports.ParamsHistoryContext = ParamsHistoryContext; exports.ParamsHistoryProvider = ParamsHistoryProvider;
|
89
|
+
//# sourceMappingURL=ParamsHistory.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/ParamsHistory.tsx"],"names":[],"mappings":";;;;;;;;AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,OAAO,cAAc;AA+FjB;AA3FJ,IAAM,UAAU,CAAC,GAAQ,MACvB,oBAAoB,CAAC,MAAM,oBAAoB,CAAC;AAoBlD,IAAM,8BAAqD;AAAA,EACzD,SAAS,CAAC;AAAA,EACV,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB,QAAQ;AAAA,EACR,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,MAAM,MAAM;AAAA,EAAC;AACf;AAEO,IAAM,uBAAuB,cAAc,2BAA2B;AAItE,SAAS,sBAAsB,EAAE,SAAS,GAAU;AACzD,QAAM,iBAAiB,OAAO,IAAI;AAClC,QAAM,UAAU,WAAW,cAAc;AACzC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAgC,CAAC,CAAC;AAChE,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,CAAC;AAE9C,QAAM,iBAAuE;AAAA,IAC3E,iBAAiB,CAAC,UAA+B;AAC/C,cAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,KAAK,CAAC;AAAA,IAC7C;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAClB,SAAS,CAAC,UAA+B;AACvC,iBAAW,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;AACrC,gBAAU,CAAC;AACX,qBAAe,UAAU,MAAM;AAAA,IACjC,GAAG,GAAG;AAAA,IACN,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,MAAM;AACjB,QAAI,UAAU,QAAQ;AAAQ;AAC9B,cAAU,SAAS,CAAC;AAAA,EACtB;AAEA,QAAM,OAAO,MAAM;AACjB,QAAI,UAAU;AAAG;AACjB,cAAU,SAAS,CAAC;AAAA,EACtB;AAGA,YAAU,MAAM;AACd,UAAM,eAAe,UAAU,MAAM;AACrC,mBAAe,cAAc,IAA+B;AAAA,MAC1D;AAAA,IACF;AACA,mBAAe,UAAU,cAAc;AAAA,EACzC,GAAG,CAAC,MAAM,CAAC;AAGX,YAAU,MAAM;AACd,QAAI,QAAQ,QAAQ,MAAM,QAAQ,gBAAgB,OAAO;AAAG;AAC5D,QAAI,CAAC,QAAQ,MAAM;AAAQ;AAC3B,gBAAY,EAAE,MAAM,iBAAiB,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EACnE,GAAG,CAAC,QAAQ,MAAM,QAAQ,eAAe,OAAO,CAAC;AAEjD,QAAM,UAAiC;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,SACnC,UACH;AAEJ","sourcesContent":["import {\n PropsWithChildren,\n useContext,\n useEffect,\n useState,\n useCallback,\n useRef,\n} from \"react\"\nimport { createContext } from \"react\"\nimport debounce from \"lodash.debounce\"\nimport { stringifyParamsData } from \"./utils\"\nimport { RuntimeContext } from \"./RuntimeContext\"\n\nconst isEqual = (a: any, b: any) =>\n stringifyParamsData(a) === stringifyParamsData(b)\n\ntype ParamsHistoryActionType = \"params-update\"\n\ninterface IParamsHistoryEntry {\n type: ParamsHistoryActionType\n data: any\n}\n\ntype ParamsHistoryAction = (entry: IParamsHistoryEntry) => void\n\nexport interface IParamsHistoryContext {\n history: IParamsHistoryEntry[]\n pushHistory: (entry: IParamsHistoryEntry) => void\n offset: number\n setOffset: (o: number) => void\n undo: () => void\n redo: () => void\n}\n\nconst defaultParamsHistoryContext: IParamsHistoryContext = {\n history: [],\n pushHistory: () => {},\n offset: 0,\n setOffset: () => {},\n undo: () => {},\n redo: () => {},\n}\n\nexport const ParamsHistoryContext = createContext(defaultParamsHistoryContext)\n\ntype Props = PropsWithChildren<any>\n\nexport function ParamsHistoryProvider({ children }: Props) {\n const lastActionData = useRef(null)\n const runtime = useContext(RuntimeContext)\n const [history, setHistory] = useState<IParamsHistoryEntry[]>([])\n const [offset, setOffset] = useState<number>(0)\n\n const historyActions: Record<ParamsHistoryActionType, ParamsHistoryAction> = {\n \"params-update\": (entry: IParamsHistoryEntry) => {\n runtime.state.update({ params: entry.data })\n },\n }\n\n const pushHistory = useCallback(\n debounce((entry: IParamsHistoryEntry) => {\n setHistory((prev) => [entry, ...prev])\n setOffset(0)\n lastActionData.current = entry.data\n }, 200),\n []\n )\n\n const undo = () => {\n if (offset >= history.length) return\n setOffset(offset + 1)\n }\n\n const redo = () => {\n if (offset <= 0) return\n setOffset(offset - 1)\n }\n\n // when offset change apply action based on history entry\n useEffect(() => {\n const currentEntry = history?.[offset]\n historyActions[currentEntry?.type as ParamsHistoryActionType]?.(\n currentEntry\n )\n lastActionData.current = currentEntry?.data\n }, [offset])\n\n // observe data changes and add them to history\n useEffect(() => {\n if (isEqual(runtime.state.params, lastActionData?.current)) return\n if (!runtime.state.params) return\n pushHistory({ type: \"params-update\", data: runtime.state.params })\n }, [runtime.state.params, lastActionData.current])\n\n const context: IParamsHistoryContext = {\n history,\n pushHistory,\n offset,\n setOffset,\n undo,\n redo,\n }\n\n return (\n <ParamsHistoryContext.Provider value={context}>\n {children}\n </ParamsHistoryContext.Provider>\n )\n}\n"]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
2
|
+
import * as react from 'react';
|
3
|
+
import { PropsWithChildren } from 'react';
|
4
|
+
|
5
|
+
type ParamsHistoryActionType = "params-update";
|
6
|
+
interface IParamsHistoryEntry {
|
7
|
+
type: ParamsHistoryActionType;
|
8
|
+
data: any;
|
9
|
+
}
|
10
|
+
interface IParamsHistoryContext {
|
11
|
+
history: IParamsHistoryEntry[];
|
12
|
+
pushHistory: (entry: IParamsHistoryEntry) => void;
|
13
|
+
offset: number;
|
14
|
+
setOffset: (o: number) => void;
|
15
|
+
undo: () => void;
|
16
|
+
redo: () => void;
|
17
|
+
}
|
18
|
+
declare const ParamsHistoryContext: react.Context<IParamsHistoryContext>;
|
19
|
+
type Props = PropsWithChildren<any>;
|
20
|
+
declare function ParamsHistoryProvider({ children }: Props): react_jsx_runtime.JSX.Element;
|
21
|
+
|
22
|
+
export { IParamsHistoryContext, ParamsHistoryContext, ParamsHistoryProvider };
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import {
|
2
|
+
RuntimeContext
|
3
|
+
} from "./chunk-EIQHQNZJ.js";
|
4
|
+
import {
|
5
|
+
stringifyParamsData
|
6
|
+
} from "./chunk-SDPENM2L.js";
|
7
|
+
|
8
|
+
// src/ParamsHistory.tsx
|
9
|
+
import {
|
10
|
+
useContext,
|
11
|
+
useEffect,
|
12
|
+
useState,
|
13
|
+
useCallback,
|
14
|
+
useRef
|
15
|
+
} from "react";
|
16
|
+
import { createContext } from "react";
|
17
|
+
import debounce from "lodash.debounce";
|
18
|
+
import { jsx } from "react/jsx-runtime";
|
19
|
+
var isEqual = (a, b) => stringifyParamsData(a) === stringifyParamsData(b);
|
20
|
+
var defaultParamsHistoryContext = {
|
21
|
+
history: [],
|
22
|
+
pushHistory: () => {
|
23
|
+
},
|
24
|
+
offset: 0,
|
25
|
+
setOffset: () => {
|
26
|
+
},
|
27
|
+
undo: () => {
|
28
|
+
},
|
29
|
+
redo: () => {
|
30
|
+
}
|
31
|
+
};
|
32
|
+
var ParamsHistoryContext = createContext(defaultParamsHistoryContext);
|
33
|
+
function ParamsHistoryProvider({ children }) {
|
34
|
+
const lastActionData = useRef(null);
|
35
|
+
const runtime = useContext(RuntimeContext);
|
36
|
+
const [history, setHistory] = useState([]);
|
37
|
+
const [offset, setOffset] = useState(0);
|
38
|
+
const historyActions = {
|
39
|
+
"params-update": (entry) => {
|
40
|
+
runtime.state.update({ params: entry.data });
|
41
|
+
}
|
42
|
+
};
|
43
|
+
const pushHistory = useCallback(
|
44
|
+
debounce((entry) => {
|
45
|
+
setHistory((prev) => [entry, ...prev]);
|
46
|
+
setOffset(0);
|
47
|
+
lastActionData.current = entry.data;
|
48
|
+
}, 200),
|
49
|
+
[]
|
50
|
+
);
|
51
|
+
const undo = () => {
|
52
|
+
if (offset >= history.length)
|
53
|
+
return;
|
54
|
+
setOffset(offset + 1);
|
55
|
+
};
|
56
|
+
const redo = () => {
|
57
|
+
if (offset <= 0)
|
58
|
+
return;
|
59
|
+
setOffset(offset - 1);
|
60
|
+
};
|
61
|
+
useEffect(() => {
|
62
|
+
const currentEntry = history?.[offset];
|
63
|
+
historyActions[currentEntry?.type]?.(
|
64
|
+
currentEntry
|
65
|
+
);
|
66
|
+
lastActionData.current = currentEntry?.data;
|
67
|
+
}, [offset]);
|
68
|
+
useEffect(() => {
|
69
|
+
if (isEqual(runtime.state.params, lastActionData?.current))
|
70
|
+
return;
|
71
|
+
if (!runtime.state.params)
|
72
|
+
return;
|
73
|
+
pushHistory({ type: "params-update", data: runtime.state.params });
|
74
|
+
}, [runtime.state.params, lastActionData.current]);
|
75
|
+
const context = {
|
76
|
+
history,
|
77
|
+
pushHistory,
|
78
|
+
offset,
|
79
|
+
setOffset,
|
80
|
+
undo,
|
81
|
+
redo
|
82
|
+
};
|
83
|
+
return /* @__PURE__ */ jsx(ParamsHistoryContext.Provider, { value: context, children });
|
84
|
+
}
|
85
|
+
export {
|
86
|
+
ParamsHistoryContext,
|
87
|
+
ParamsHistoryProvider
|
88
|
+
};
|
89
|
+
//# sourceMappingURL=ParamsHistory.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/ParamsHistory.tsx"],"sourcesContent":["import {\n PropsWithChildren,\n useContext,\n useEffect,\n useState,\n useCallback,\n useRef,\n} from \"react\"\nimport { createContext } from \"react\"\nimport debounce from \"lodash.debounce\"\nimport { stringifyParamsData } from \"./utils\"\nimport { RuntimeContext } from \"./RuntimeContext\"\n\nconst isEqual = (a: any, b: any) =>\n stringifyParamsData(a) === stringifyParamsData(b)\n\ntype ParamsHistoryActionType = \"params-update\"\n\ninterface IParamsHistoryEntry {\n type: ParamsHistoryActionType\n data: any\n}\n\ntype ParamsHistoryAction = (entry: IParamsHistoryEntry) => void\n\nexport interface IParamsHistoryContext {\n history: IParamsHistoryEntry[]\n pushHistory: (entry: IParamsHistoryEntry) => void\n offset: number\n setOffset: (o: number) => void\n undo: () => void\n redo: () => void\n}\n\nconst defaultParamsHistoryContext: IParamsHistoryContext = {\n history: [],\n pushHistory: () => {},\n offset: 0,\n setOffset: () => {},\n undo: () => {},\n redo: () => {},\n}\n\nexport const ParamsHistoryContext = createContext(defaultParamsHistoryContext)\n\ntype Props = PropsWithChildren<any>\n\nexport function ParamsHistoryProvider({ children }: Props) {\n const lastActionData = useRef(null)\n const runtime = useContext(RuntimeContext)\n const [history, setHistory] = useState<IParamsHistoryEntry[]>([])\n const [offset, setOffset] = useState<number>(0)\n\n const historyActions: Record<ParamsHistoryActionType, ParamsHistoryAction> = {\n \"params-update\": (entry: IParamsHistoryEntry) => {\n runtime.state.update({ params: entry.data })\n },\n }\n\n const pushHistory = useCallback(\n debounce((entry: IParamsHistoryEntry) => {\n setHistory((prev) => [entry, ...prev])\n setOffset(0)\n lastActionData.current = entry.data\n }, 200),\n []\n )\n\n const undo = () => {\n if (offset >= history.length) return\n setOffset(offset + 1)\n }\n\n const redo = () => {\n if (offset <= 0) return\n setOffset(offset - 1)\n }\n\n // when offset change apply action based on history entry\n useEffect(() => {\n const currentEntry = history?.[offset]\n historyActions[currentEntry?.type as ParamsHistoryActionType]?.(\n currentEntry\n )\n lastActionData.current = currentEntry?.data\n }, [offset])\n\n // observe data changes and add them to history\n useEffect(() => {\n if (isEqual(runtime.state.params, lastActionData?.current)) return\n if (!runtime.state.params) return\n pushHistory({ type: \"params-update\", data: runtime.state.params })\n }, [runtime.state.params, lastActionData.current])\n\n const context: IParamsHistoryContext = {\n history,\n pushHistory,\n offset,\n setOffset,\n undo,\n redo,\n }\n\n return (\n <ParamsHistoryContext.Provider value={context}>\n {children}\n </ParamsHistoryContext.Provider>\n )\n}\n"],"mappings":";;;;;;;;AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,OAAO,cAAc;AA+FjB;AA3FJ,IAAM,UAAU,CAAC,GAAQ,MACvB,oBAAoB,CAAC,MAAM,oBAAoB,CAAC;AAoBlD,IAAM,8BAAqD;AAAA,EACzD,SAAS,CAAC;AAAA,EACV,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB,QAAQ;AAAA,EACR,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,MAAM,MAAM;AAAA,EAAC;AAAA,EACb,MAAM,MAAM;AAAA,EAAC;AACf;AAEO,IAAM,uBAAuB,cAAc,2BAA2B;AAItE,SAAS,sBAAsB,EAAE,SAAS,GAAU;AACzD,QAAM,iBAAiB,OAAO,IAAI;AAClC,QAAM,UAAU,WAAW,cAAc;AACzC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAgC,CAAC,CAAC;AAChE,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,CAAC;AAE9C,QAAM,iBAAuE;AAAA,IAC3E,iBAAiB,CAAC,UAA+B;AAC/C,cAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,KAAK,CAAC;AAAA,IAC7C;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAClB,SAAS,CAAC,UAA+B;AACvC,iBAAW,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;AACrC,gBAAU,CAAC;AACX,qBAAe,UAAU,MAAM;AAAA,IACjC,GAAG,GAAG;AAAA,IACN,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,MAAM;AACjB,QAAI,UAAU,QAAQ;AAAQ;AAC9B,cAAU,SAAS,CAAC;AAAA,EACtB;AAEA,QAAM,OAAO,MAAM;AACjB,QAAI,UAAU;AAAG;AACjB,cAAU,SAAS,CAAC;AAAA,EACtB;AAGA,YAAU,MAAM;AACd,UAAM,eAAe,UAAU,MAAM;AACrC,mBAAe,cAAc,IAA+B;AAAA,MAC1D;AAAA,IACF;AACA,mBAAe,UAAU,cAAc;AAAA,EACzC,GAAG,CAAC,MAAM,CAAC;AAGX,YAAU,MAAM;AACd,QAAI,QAAQ,QAAQ,MAAM,QAAQ,gBAAgB,OAAO;AAAG;AAC5D,QAAI,CAAC,QAAQ,MAAM;AAAQ;AAC3B,gBAAY,EAAE,MAAM,iBAAiB,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EACnE,GAAG,CAAC,QAAQ,MAAM,QAAQ,eAAe,OAAO,CAAC;AAEjD,QAAM,UAAiC;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,SACnC,UACH;AAEJ;","names":[]}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
2
|
+
|
3
|
+
|
4
|
+
var _chunkYBV33YPCcjs = require('./chunk-YBV33YPC.cjs');
|
5
|
+
require('./chunk-2QU65L2O.cjs');
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
exports.RuntimeContext = _chunkYBV33YPCcjs.RuntimeContext; exports.RuntimeProvider = _chunkYBV33YPCcjs.RuntimeProvider;
|
10
|
+
//# sourceMappingURL=RuntimeContext.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
2
|
+
import * as react from 'react';
|
3
|
+
import { PropsWithChildren } from 'react';
|
4
|
+
import { FxParamsData, FxParamDefinition, FxParamType } from './types.js';
|
5
|
+
|
6
|
+
type TUpdateStateFn<T> = (data: Partial<T>) => void;
|
7
|
+
type TUpdateableState<T> = T & {
|
8
|
+
update: TUpdateStateFn<T>;
|
9
|
+
};
|
10
|
+
/**
|
11
|
+
* The Runtime Context is responsible for managing the state of a project ran
|
12
|
+
* in a frame. It centralizes any source of data to derive the project and
|
13
|
+
* facilitate their manipulation from the outside.
|
14
|
+
*
|
15
|
+
* See comments on IRuntimeContext for more details.
|
16
|
+
*/
|
17
|
+
type TExecutionContext = "minting" | "standalone" | "capture";
|
18
|
+
interface RuntimeState {
|
19
|
+
hash: string;
|
20
|
+
minter: string;
|
21
|
+
params: FxParamsData;
|
22
|
+
iteration: number;
|
23
|
+
context: TExecutionContext;
|
24
|
+
}
|
25
|
+
interface RuntimeDefinition {
|
26
|
+
params: FxParamDefinition<FxParamType>[] | null;
|
27
|
+
version: string | null;
|
28
|
+
}
|
29
|
+
interface IRuntimeContext {
|
30
|
+
state: TUpdateableState<RuntimeState>;
|
31
|
+
definition: TUpdateableState<RuntimeDefinition>;
|
32
|
+
details: {
|
33
|
+
paramsByteSize: number;
|
34
|
+
stateHash: {
|
35
|
+
soft: string;
|
36
|
+
hard: string;
|
37
|
+
};
|
38
|
+
};
|
39
|
+
}
|
40
|
+
declare const RuntimeContext: react.Context<IRuntimeContext>;
|
41
|
+
type Props = PropsWithChildren<any>;
|
42
|
+
declare function RuntimeProvider({ children }: Props): react_jsx_runtime.JSX.Element;
|
43
|
+
|
44
|
+
export { IRuntimeContext, RuntimeContext, RuntimeDefinition, RuntimeProvider, RuntimeState, TExecutionContext, TUpdateStateFn, TUpdateableState };
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
// src/BaseInput.module.scss
|
2
|
+
var BaseInput_module_default = {
|
3
|
+
"baseInput": "_baseInput_jtvfw_1",
|
4
|
+
"baseSelect": "_baseSelect_jtvfw_1",
|
5
|
+
"baseButton": "_baseButton_jtvfw_1",
|
6
|
+
"color-secondary": "_color-secondary_jtvfw_37",
|
7
|
+
"iconButton": "_iconButton_jtvfw_47"
|
8
|
+
};
|
9
|
+
|
10
|
+
// src/BaseInput.tsx
|
11
|
+
import cx from "classnames";
|
12
|
+
import { jsx } from "react/jsx-runtime";
|
13
|
+
function BaseInput(props) {
|
14
|
+
const { className, ...rest } = props;
|
15
|
+
return /* @__PURE__ */ jsx("input", { className: cx(BaseInput_module_default.baseInput, className), ...rest });
|
16
|
+
}
|
17
|
+
function BaseSelect(props) {
|
18
|
+
const { className, ...rest } = props;
|
19
|
+
return /* @__PURE__ */ jsx("select", { className: cx(BaseInput_module_default.baseSelect, className), ...rest });
|
20
|
+
}
|
21
|
+
function BaseButton(props) {
|
22
|
+
const { className, color = "primary", ...rest } = props;
|
23
|
+
return /* @__PURE__ */ jsx(
|
24
|
+
"button",
|
25
|
+
{
|
26
|
+
type: "button",
|
27
|
+
className: cx(BaseInput_module_default.baseButton, BaseInput_module_default[`color-${color}`], className),
|
28
|
+
...rest
|
29
|
+
}
|
30
|
+
);
|
31
|
+
}
|
32
|
+
function IconButton(props) {
|
33
|
+
const { className, ...rest } = props;
|
34
|
+
return /* @__PURE__ */ jsx(BaseButton, { className: cx(BaseInput_module_default.iconButton, className), ...rest });
|
35
|
+
}
|
36
|
+
|
37
|
+
export {
|
38
|
+
BaseInput,
|
39
|
+
BaseSelect,
|
40
|
+
BaseButton,
|
41
|
+
IconButton
|
42
|
+
};
|
43
|
+
//# sourceMappingURL=chunk-2BHABOFI.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/BaseInput.module.scss","../src/BaseInput.tsx"],"sourcesContent":["import 'css-chunk:src/BaseInput.module.scss';export default {\n \"baseInput\": \"_baseInput_jtvfw_1\",\n \"baseSelect\": \"_baseSelect_jtvfw_1\",\n \"baseButton\": \"_baseButton_jtvfw_1\",\n \"color-secondary\": \"_color-secondary_jtvfw_37\",\n \"iconButton\": \"_iconButton_jtvfw_47\"\n};","import {\n ButtonHTMLAttributes,\n HtmlHTMLAttributes,\n InputHTMLAttributes,\n SelectHTMLAttributes,\n} from \"react\"\nimport classes from \"./BaseInput.module.scss\"\nimport cx from \"classnames\"\n\nexport function BaseInput(props: InputHTMLAttributes<HTMLInputElement>) {\n const { className, ...rest } = props\n return <input className={cx(classes.baseInput, className)} {...rest} />\n}\n\nexport function BaseSelect(props: SelectHTMLAttributes<HTMLSelectElement>) {\n const { className, ...rest } = props\n return <select className={cx(classes.baseSelect, className)} {...rest} />\n}\n\nexport interface BaseButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement> {\n color?: \"primary\" | \"secondary\" | undefined\n}\n\nexport function BaseButton(props: BaseButtonProps) {\n const { className, color = \"primary\", ...rest } = props\n return (\n <button\n type=\"button\"\n className={cx(classes.baseButton, classes[`color-${color}`], className)}\n {...rest}\n />\n )\n}\n\nexport function IconButton(props: BaseButtonProps) {\n const { className, ...rest } = props\n return <BaseButton className={cx(classes.iconButton, className)} {...rest} />\n}\n"],"mappings":";AAA6C,IAAO,2BAAQ;AAAA,EAC1D,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,cAAc;AAChB;;;ACCA,OAAO,QAAQ;AAIN;AAFF,SAAS,UAAU,OAA8C;AACtE,QAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,SAAO,oBAAC,WAAM,WAAW,GAAG,yBAAQ,WAAW,SAAS,GAAI,GAAG,MAAM;AACvE;AAEO,SAAS,WAAW,OAAgD;AACzE,QAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,SAAO,oBAAC,YAAO,WAAW,GAAG,yBAAQ,YAAY,SAAS,GAAI,GAAG,MAAM;AACzE;AAOO,SAAS,WAAW,OAAwB;AACjD,QAAM,EAAE,WAAW,QAAQ,WAAW,GAAG,KAAK,IAAI;AAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,GAAG,yBAAQ,YAAY,yBAAQ,SAAS,OAAO,GAAG,SAAS;AAAA,MACrE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,WAAW,OAAwB;AACjD,QAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,SAAO,oBAAC,cAAW,WAAW,GAAG,yBAAQ,YAAY,SAAS,GAAI,GAAG,MAAM;AAC7E;","names":[]}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import {
|
2
|
+
Controller
|
3
|
+
} from "./chunk-CE3TPOSO.js";
|
4
|
+
|
5
|
+
// src/Controller/Bytes.tsx
|
6
|
+
import { useMemo } from "react";
|
7
|
+
|
8
|
+
// src/Controller/Bytes.module.scss
|
9
|
+
var Bytes_module_default = {
|
10
|
+
"root": "_root_1qszq_1"
|
11
|
+
};
|
12
|
+
|
13
|
+
// src/Controller/Bytes.tsx
|
14
|
+
import { jsx } from "react/jsx-runtime";
|
15
|
+
function BytesController(props) {
|
16
|
+
const { options } = props;
|
17
|
+
const hex = useMemo(() => {
|
18
|
+
let out = "";
|
19
|
+
for (const v of props.value) {
|
20
|
+
out += v.toString(16).padStart(2, "0");
|
21
|
+
}
|
22
|
+
return out;
|
23
|
+
}, [props.value]);
|
24
|
+
return /* @__PURE__ */ jsx(
|
25
|
+
Controller,
|
26
|
+
{
|
27
|
+
id: props.id,
|
28
|
+
label: props.label,
|
29
|
+
layout: props.layout,
|
30
|
+
isCodeDriven: props.isCodeDriven,
|
31
|
+
children: /* @__PURE__ */ jsx("div", { className: Bytes_module_default.root, children: /* @__PURE__ */ jsx("div", { className: Bytes_module_default.wrapper, children: hex }) })
|
32
|
+
}
|
33
|
+
);
|
34
|
+
}
|
35
|
+
|
36
|
+
export {
|
37
|
+
BytesController
|
38
|
+
};
|
39
|
+
//# sourceMappingURL=chunk-2QIAF3U7.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/Controller/Bytes.tsx","../src/Controller/Bytes.module.scss"],"sourcesContent":["import { useMemo } from \"react\"\nimport css from \"./Bytes.module.scss\"\nimport {\n Controller,\n FxParamControllerProps,\n HTMLInputController,\n} from \"./Controller\"\n\nexport function BytesController(props: FxParamControllerProps<\"bytes\">) {\n const { options } = props\n\n const hex = useMemo<string>(() => {\n let out = \"\"\n for (const v of props.value) {\n out += v.toString(16).padStart(2, \"0\")\n }\n return out\n }, [props.value])\n\n return (\n <Controller\n id={props.id}\n label={props.label}\n layout={props.layout}\n isCodeDriven={props.isCodeDriven}\n >\n <div className={css.root}>\n <div className={css.wrapper}>{hex}</div>\n </div>\n </Controller>\n )\n}\n","import 'css-chunk:src/Controller/Bytes.module.scss';export default {\n \"root\": \"_root_1qszq_1\"\n};"],"mappings":";;;;;AAAA,SAAS,eAAe;;;ACA4B,IAAO,uBAAQ;AAAA,EACjE,QAAQ;AACV;;;ADyBQ;AAnBD,SAAS,gBAAgB,OAAwC;AACtE,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,MAAM,QAAgB,MAAM;AAChC,QAAI,MAAM;AACV,eAAW,KAAK,MAAM,OAAO;AAC3B,aAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,IACvC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,MAAM;AAAA,MACV,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,MACd,cAAc,MAAM;AAAA,MAEpB,8BAAC,SAAI,WAAW,qBAAI,MAClB,8BAAC,SAAI,WAAW,qBAAI,SAAU,eAAI,GACpC;AAAA;AAAA,EACF;AAEJ;","names":[]}
|