@fxhash/params 0.0.5 → 0.0.8
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-4OV7OX5A.js +37 -0
- package/dist/chunk-4OV7OX5A.js.map +1 -0
- package/dist/chunk-57UENWLF.js +110 -0
- package/dist/chunk-57UENWLF.js.map +1 -0
- package/dist/chunk-6VMIOQSE.js +34 -0
- package/dist/chunk-6VMIOQSE.js.map +1 -0
- package/dist/chunk-C6GTVBY6.cjs +46 -0
- package/dist/chunk-C6GTVBY6.cjs.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-EACKNC6C.cjs +103 -0
- package/dist/chunk-EACKNC6C.cjs.map +1 -0
- package/dist/chunk-FZWZHHQ2.js +398 -0
- package/dist/chunk-FZWZHHQ2.js.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-KZMSUHQX.cjs +120 -0
- package/dist/chunk-KZMSUHQX.cjs.map +1 -0
- package/dist/chunk-LX23UR4X.cjs +115 -0
- package/dist/chunk-LX23UR4X.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-P77D7XSP.js +46 -0
- package/dist/chunk-P77D7XSP.js.map +1 -0
- package/dist/chunk-PTXBICTZ.js +67 -0
- package/dist/chunk-PTXBICTZ.js.map +1 -0
- package/dist/chunk-QDLMFMLL.cjs +398 -0
- package/dist/chunk-QDLMFMLL.cjs.map +1 -0
- package/dist/chunk-QM6EKPI6.cjs +67 -0
- package/dist/chunk-QM6EKPI6.cjs.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-X4O42D2P.cjs +37 -0
- package/dist/chunk-X4O42D2P.cjs.map +1 -0
- package/dist/chunk-YOS2HCIS.js +23 -0
- package/dist/chunk-YOS2HCIS.js.map +1 -0
- package/dist/chunk-YXDLGCFJ.cjs +110 -0
- package/dist/chunk-YXDLGCFJ.cjs.map +1 -0
- package/dist/chunk-YYEIYDDF.js +24 -0
- package/dist/chunk-YYEIYDDF.js.map +1 -0
- package/dist/chunk-Z7K2LNS2.js +115 -0
- package/dist/chunk-Z7K2LNS2.js.map +1 -0
- package/dist/chunk-ZG3OT7LF.js +120 -0
- package/dist/chunk-ZG3OT7LF.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 _chunkLX23UR4Xcjs = require('./chunk-LX23UR4X.cjs');
|
4
|
+
|
5
|
+
|
6
|
+
var _chunkQDLMFMLLcjs = require('./chunk-QDLMFMLL.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) => _chunkQDLMFMLLcjs.stringifyParamsData.call(void 0, a) === _chunkQDLMFMLLcjs.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, _chunkLX23UR4Xcjs.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-Z7K2LNS2.js";
|
4
|
+
import {
|
5
|
+
stringifyParamsData
|
6
|
+
} from "./chunk-FZWZHHQ2.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 _chunkLX23UR4Xcjs = require('./chunk-LX23UR4X.cjs');
|
5
|
+
require('./chunk-QDLMFMLL.cjs');
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
exports.RuntimeContext = _chunkLX23UR4Xcjs.RuntimeContext; exports.RuntimeProvider = _chunkLX23UR4Xcjs.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":[]}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import {
|
2
|
+
IconButton
|
3
|
+
} from "./chunk-2BHABOFI.js";
|
4
|
+
|
5
|
+
// src/LockButton/LockButton.tsx
|
6
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
7
|
+
|
8
|
+
// src/LockButton/LockButton.module.scss
|
9
|
+
var LockButton_module_default = {
|
10
|
+
"lockButton": "_lockButton_1bbiz_1"
|
11
|
+
};
|
12
|
+
|
13
|
+
// src/LockButton/LockButton.tsx
|
14
|
+
import { faLock, faLockOpen } from "@fortawesome/free-solid-svg-icons";
|
15
|
+
import cx from "classnames";
|
16
|
+
import { jsx } from "react/jsx-runtime";
|
17
|
+
function LockButton(props) {
|
18
|
+
const { isLocked, className, ...rest } = props;
|
19
|
+
return /* @__PURE__ */ jsx(
|
20
|
+
IconButton,
|
21
|
+
{
|
22
|
+
color: "secondary",
|
23
|
+
className: cx(
|
24
|
+
LockButton_module_default.lockButton,
|
25
|
+
{ [LockButton_module_default.isOpen]: !isLocked },
|
26
|
+
className
|
27
|
+
),
|
28
|
+
...rest,
|
29
|
+
children: /* @__PURE__ */ jsx(FontAwesomeIcon, { icon: isLocked ? faLock : faLockOpen })
|
30
|
+
}
|
31
|
+
);
|
32
|
+
}
|
33
|
+
|
34
|
+
export {
|
35
|
+
LockButton
|
36
|
+
};
|
37
|
+
//# sourceMappingURL=chunk-4OV7OX5A.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/LockButton/LockButton.tsx","../src/LockButton/LockButton.module.scss"],"sourcesContent":["import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { BaseButtonProps, IconButton } from \"../BaseInput\"\nimport classes from \"./LockButton.module.scss\"\nimport { faLock, faLockOpen } from \"@fortawesome/free-solid-svg-icons\"\nimport cx from \"classnames\"\ninterface LockButtonProps extends BaseButtonProps {\n isLocked?: boolean\n className?: string\n}\n\nexport function LockButton(props: LockButtonProps) {\n const { isLocked, className, ...rest } = props\n return (\n <IconButton\n color=\"secondary\"\n className={cx(\n classes.lockButton,\n { [classes.isOpen]: !isLocked },\n className\n )}\n {...rest}\n >\n <FontAwesomeIcon icon={isLocked ? faLock : faLockOpen} />\n </IconButton>\n )\n}\n","import 'css-chunk:src/LockButton/LockButton.module.scss';export default {\n \"lockButton\": \"_lockButton_1bbiz_1\"\n};"],"mappings":";;;;;AAAA,SAAS,uBAAuB;;;ACAyB,IAAO,4BAAQ;AAAA,EACtE,cAAc;AAChB;;;ADCA,SAAS,QAAQ,kBAAkB;AACnC,OAAO,QAAQ;AAkBT;AAZC,SAAS,WAAW,OAAwB;AACjD,QAAM,EAAE,UAAU,WAAW,GAAG,KAAK,IAAI;AACzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAW;AAAA,QACT,0BAAQ;AAAA,QACR,EAAE,CAAC,0BAAQ,MAAM,GAAG,CAAC,SAAS;AAAA,QAC9B;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAC,mBAAgB,MAAM,WAAW,SAAS,YAAY;AAAA;AAAA,EACzD;AAEJ;","names":[]}
|
@@ -0,0 +1,110 @@
|
|
1
|
+
import {
|
2
|
+
NumberController
|
3
|
+
} from "./chunk-H5IMTNFG.js";
|
4
|
+
import {
|
5
|
+
SelectController
|
6
|
+
} from "./chunk-6VMIOQSE.js";
|
7
|
+
import {
|
8
|
+
StringController
|
9
|
+
} from "./chunk-YYEIYDDF.js";
|
10
|
+
import {
|
11
|
+
validateParameterDefinition
|
12
|
+
} from "./chunk-MWP7SJWC.js";
|
13
|
+
import {
|
14
|
+
BigIntController
|
15
|
+
} from "./chunk-P77D7XSP.js";
|
16
|
+
import {
|
17
|
+
BooleanController
|
18
|
+
} from "./chunk-YOS2HCIS.js";
|
19
|
+
import {
|
20
|
+
BytesController
|
21
|
+
} from "./chunk-2QIAF3U7.js";
|
22
|
+
import {
|
23
|
+
ColorController
|
24
|
+
} from "./chunk-ZG3OT7LF.js";
|
25
|
+
import {
|
26
|
+
ControllerInvalid
|
27
|
+
} from "./chunk-PTXBICTZ.js";
|
28
|
+
|
29
|
+
// src/Controller/Param.tsx
|
30
|
+
import { useMemo } from "react";
|
31
|
+
import { jsx } from "react/jsx-runtime";
|
32
|
+
var controllerDefinitions = {
|
33
|
+
number: {
|
34
|
+
type: "number",
|
35
|
+
controller: NumberController,
|
36
|
+
handler: (e) => Number(e.target.value)
|
37
|
+
},
|
38
|
+
bigint: {
|
39
|
+
type: "bigint",
|
40
|
+
controller: BigIntController,
|
41
|
+
handler: (e) => BigInt(e.target.value)
|
42
|
+
},
|
43
|
+
string: {
|
44
|
+
type: "string",
|
45
|
+
controller: StringController,
|
46
|
+
handler: (e) => e.target.value
|
47
|
+
},
|
48
|
+
bytes: {
|
49
|
+
type: "bytes",
|
50
|
+
controller: BytesController,
|
51
|
+
handler: (e) => e.target.value
|
52
|
+
},
|
53
|
+
boolean: {
|
54
|
+
type: "boolean",
|
55
|
+
controller: BooleanController,
|
56
|
+
handler: (e) => e.target.checked
|
57
|
+
},
|
58
|
+
color: {
|
59
|
+
type: "color",
|
60
|
+
controller: ColorController,
|
61
|
+
handler: (v) => v
|
62
|
+
},
|
63
|
+
select: {
|
64
|
+
type: "select",
|
65
|
+
controller: SelectController,
|
66
|
+
handler: (e) => e.target.value
|
67
|
+
}
|
68
|
+
};
|
69
|
+
function ParameterController(props) {
|
70
|
+
const { parameter, onChange, parsed } = props;
|
71
|
+
const parsedDefinition = useMemo(
|
72
|
+
() => parsed || validateParameterDefinition(parameter),
|
73
|
+
[parameter, parsed]
|
74
|
+
);
|
75
|
+
const { controller: Controller, handler } = useMemo(
|
76
|
+
() => controllerDefinitions[parameter.type],
|
77
|
+
[parameter.type]
|
78
|
+
);
|
79
|
+
const handleChangeParam = (e) => {
|
80
|
+
const value = handler(e);
|
81
|
+
onChange(parameter.id, value);
|
82
|
+
};
|
83
|
+
if (parsedDefinition && parsedDefinition.success === false) {
|
84
|
+
return /* @__PURE__ */ jsx(
|
85
|
+
ControllerInvalid,
|
86
|
+
{
|
87
|
+
definition: parameter,
|
88
|
+
error: parsedDefinition.error
|
89
|
+
}
|
90
|
+
);
|
91
|
+
}
|
92
|
+
const isCodeDriven = parameter.update === "code-driven";
|
93
|
+
return /* @__PURE__ */ jsx(
|
94
|
+
Controller,
|
95
|
+
{
|
96
|
+
id: parameter.id,
|
97
|
+
label: parameter.name,
|
98
|
+
value: props.value,
|
99
|
+
onChange: handleChangeParam,
|
100
|
+
options: parameter.options,
|
101
|
+
isCodeDriven
|
102
|
+
}
|
103
|
+
);
|
104
|
+
}
|
105
|
+
|
106
|
+
export {
|
107
|
+
controllerDefinitions,
|
108
|
+
ParameterController
|
109
|
+
};
|
110
|
+
//# sourceMappingURL=chunk-57UENWLF.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/Controller/Param.tsx"],"sourcesContent":["import { useMemo, ReactElement } from \"react\"\nimport { FxParamDefinition, FxParamType } from \"../types\"\nimport { FxParamInputChangeHandler, FxParamControllerProps } from \"./Controller\"\nimport { BooleanController } from \"./Boolean\"\nimport { ColorController } from \"./Color\"\nimport { NumberController } from \"./Number\"\nimport { BigIntController } from \"./BigInt\"\nimport { SelectController } from \"./Select\"\nimport { StringController } from \"./String\"\nimport {\n validateParameterDefinition,\n ControllerDefinitionSchemaType,\n} from \"../validation\"\nimport { SafeParseError, SafeParseSuccess, z } from \"zod\"\nimport { ControllerInvalid } from \"./Invalid\"\nimport { BytesController } from \"./Bytes\"\n\ninterface FxParamControllerDefiniton<Type extends FxParamType> {\n type: Type\n controller: (props: FxParamControllerProps<Type>) => ReactElement\n handler: FxParamInputChangeHandler\n}\n\nexport type FxParamControllerDefinitions = {\n [T in FxParamType]: FxParamControllerDefiniton<T>\n}\n\nexport const controllerDefinitions: FxParamControllerDefinitions = {\n number: {\n type: \"number\",\n controller: NumberController,\n handler: (e) => Number(e.target.value),\n },\n bigint: {\n type: \"bigint\",\n controller: BigIntController,\n handler: (e) => BigInt(e.target.value),\n },\n string: {\n type: \"string\",\n controller: StringController,\n handler: (e) => e.target.value,\n },\n bytes: {\n type: \"bytes\",\n controller: BytesController,\n handler: (e) => e.target.value,\n },\n boolean: {\n type: \"boolean\",\n controller: BooleanController,\n handler: (e) => (e as React.ChangeEvent<HTMLInputElement>).target.checked,\n },\n color: {\n type: \"color\",\n controller: ColorController,\n handler: (v) => v,\n },\n select: {\n type: \"select\",\n controller: SelectController,\n handler: (e) => e.target.value,\n },\n}\n\nexport interface ParameterControllerProps {\n parameter: FxParamDefinition<FxParamType>\n value: any\n onChange: (id: string, value: any) => void\n parsed?:\n | SafeParseError<ControllerDefinitionSchemaType>\n | SafeParseSuccess<ControllerDefinitionSchemaType>\n}\n\nexport function ParameterController(props: ParameterControllerProps) {\n const { parameter, onChange, parsed } = props\n\n const parsedDefinition = useMemo(\n () => parsed || validateParameterDefinition(parameter),\n [parameter, parsed]\n )\n const { controller: Controller, handler } = useMemo(\n () => controllerDefinitions[parameter.type],\n [parameter.type]\n )\n\n const handleChangeParam = (e: any) => {\n const value = handler(e)\n onChange(parameter.id, value)\n }\n\n if (parsedDefinition && parsedDefinition.success === false) {\n return (\n <ControllerInvalid\n definition={parameter}\n error={parsedDefinition.error}\n />\n )\n }\n\n const isCodeDriven = parameter.update === \"code-driven\"\n\n return (\n <Controller\n id={parameter.id}\n label={parameter.name}\n value={props.value}\n onChange={handleChangeParam}\n // TODO: This should be properly casted\n options={parameter.options as any}\n isCodeDriven={isCodeDriven}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAA6B;AA6FhC;AAlEC,IAAM,wBAAsD;AAAA,EACjE,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAM,OAAO,EAAE,OAAO,KAAK;AAAA,EACvC;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAM,OAAO,EAAE,OAAO,KAAK;AAAA,EACvC;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAM,EAAE,OAAO;AAAA,EAC3B;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAM,EAAE,OAAO;AAAA,EAC3B;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAO,EAA0C,OAAO;AAAA,EACpE;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAM;AAAA,EAClB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAAS,CAAC,MAAM,EAAE,OAAO;AAAA,EAC3B;AACF;AAWO,SAAS,oBAAoB,OAAiC;AACnE,QAAM,EAAE,WAAW,UAAU,OAAO,IAAI;AAExC,QAAM,mBAAmB;AAAA,IACvB,MAAM,UAAU,4BAA4B,SAAS;AAAA,IACrD,CAAC,WAAW,MAAM;AAAA,EACpB;AACA,QAAM,EAAE,YAAY,YAAY,QAAQ,IAAI;AAAA,IAC1C,MAAM,sBAAsB,UAAU,IAAI;AAAA,IAC1C,CAAC,UAAU,IAAI;AAAA,EACjB;AAEA,QAAM,oBAAoB,CAAC,MAAW;AACpC,UAAM,QAAQ,QAAQ,CAAC;AACvB,aAAS,UAAU,IAAI,KAAK;AAAA,EAC9B;AAEA,MAAI,oBAAoB,iBAAiB,YAAY,OAAO;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,YAAY;AAAA,QACZ,OAAO,iBAAiB;AAAA;AAAA,IAC1B;AAAA,EAEJ;AAEA,QAAM,eAAe,UAAU,WAAW;AAE1C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,UAAU;AAAA,MACd,OAAO,UAAU;AAAA,MACjB,OAAO,MAAM;AAAA,MACb,UAAU;AAAA,MAEV,SAAS,UAAU;AAAA,MACnB;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import {
|
2
|
+
Controller
|
3
|
+
} from "./chunk-CE3TPOSO.js";
|
4
|
+
import {
|
5
|
+
BaseSelect
|
6
|
+
} from "./chunk-2BHABOFI.js";
|
7
|
+
|
8
|
+
// src/Controller/Select.tsx
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
10
|
+
function SelectController({
|
11
|
+
id,
|
12
|
+
label,
|
13
|
+
value,
|
14
|
+
onChange,
|
15
|
+
options,
|
16
|
+
isCodeDriven
|
17
|
+
}) {
|
18
|
+
return /* @__PURE__ */ jsx(Controller, { id, label, isCodeDriven, children: /* @__PURE__ */ jsx(
|
19
|
+
BaseSelect,
|
20
|
+
{
|
21
|
+
name: id,
|
22
|
+
id,
|
23
|
+
onChange,
|
24
|
+
value,
|
25
|
+
disabled: isCodeDriven,
|
26
|
+
children: options?.options.map((o) => /* @__PURE__ */ jsx("option", { value: o, children: o }, o))
|
27
|
+
}
|
28
|
+
) });
|
29
|
+
}
|
30
|
+
|
31
|
+
export {
|
32
|
+
SelectController
|
33
|
+
};
|
34
|
+
//# sourceMappingURL=chunk-6VMIOQSE.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/Controller/Select.tsx"],"sourcesContent":["import { Controller, FxParamControllerProps } from \"./Controller\"\nimport { BaseSelect } from \"../BaseInput\"\n\nexport function SelectController({\n id,\n label,\n value,\n onChange,\n options,\n isCodeDriven,\n}: FxParamControllerProps<\"select\">) {\n return (\n <Controller id={id} label={label} isCodeDriven={isCodeDriven}>\n <BaseSelect\n name={id}\n id={id}\n onChange={onChange}\n value={value}\n disabled={isCodeDriven}\n >\n {options?.options.map((o) => (\n <option key={o} value={o}>\n {o}\n </option>\n ))}\n </BaseSelect>\n </Controller>\n )\n}\n"],"mappings":";;;;;;;;AAqBU;AAlBH,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqC;AACnC,SACE,oBAAC,cAAW,IAAQ,OAAc,cAChC;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MAET,mBAAS,QAAQ,IAAI,CAAC,MACrB,oBAAC,YAAe,OAAO,GACpB,eADU,CAEb,CACD;AAAA;AAAA,EACH,GACF;AAEJ;","names":[]}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
|
+
|
4
|
+
var _chunkHJBHIE5Tcjs = require('./chunk-HJBHIE5T.cjs');
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
var _chunkQDLMFMLLcjs = require('./chunk-QDLMFMLL.cjs');
|
9
|
+
|
10
|
+
// src/Controller/BigInt.tsx
|
11
|
+
var _react = require('react');
|
12
|
+
var _jsxruntime = require('react/jsx-runtime');
|
13
|
+
function BigIntController(props) {
|
14
|
+
const { options, value } = props;
|
15
|
+
const min = _react.useMemo.call(void 0, () => {
|
16
|
+
if (typeof _optionalChain([options, 'optionalAccess', _ => _.min]) === "undefined")
|
17
|
+
return _chunkQDLMFMLLcjs.MIN_SAFE_INT64;
|
18
|
+
return options.min;
|
19
|
+
}, [_optionalChain([options, 'optionalAccess', _2 => _2.min])]);
|
20
|
+
const max = _react.useMemo.call(void 0, () => {
|
21
|
+
if (typeof _optionalChain([options, 'optionalAccess', _3 => _3.max]) === "undefined")
|
22
|
+
return _chunkQDLMFMLLcjs.MAX_SAFE_INT64;
|
23
|
+
return options.max;
|
24
|
+
}, [_optionalChain([options, 'optionalAccess', _4 => _4.max])]);
|
25
|
+
const stringValue = `${value}`;
|
26
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
27
|
+
_chunkHJBHIE5Tcjs.HTMLInputControllerWithTextInput,
|
28
|
+
{
|
29
|
+
type: "range",
|
30
|
+
inputProps: { min: `${min}`, max: `${max}` },
|
31
|
+
textInputProps: {
|
32
|
+
type: "number",
|
33
|
+
min: `${min}`,
|
34
|
+
max: `${max}`,
|
35
|
+
className: _chunkHJBHIE5Tcjs.Controller_module_default.numberInput
|
36
|
+
},
|
37
|
+
...props,
|
38
|
+
value: stringValue
|
39
|
+
}
|
40
|
+
);
|
41
|
+
}
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
exports.BigIntController = BigIntController;
|
46
|
+
//# sourceMappingURL=chunk-C6GTVBY6.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/Controller/BigInt.tsx"],"names":[],"mappings":";;;;;;;;;;AAMA,SAAS,eAAe;AAcpB;AAZG,SAAS,iBAAiB,OAAyC;AACxE,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,MAAM,QAAQ,MAAM;AACxB,QAAI,OAAO,SAAS,QAAQ;AAAa,aAAO;AAChD,WAAO,QAAQ;AAAA,EACjB,GAAG,CAAC,SAAS,GAAG,CAAC;AACjB,QAAM,MAAM,QAAQ,MAAM;AACxB,QAAI,OAAO,SAAS,QAAQ;AAAa,aAAO;AAChD,WAAO,QAAQ;AAAA,EACjB,GAAG,CAAC,SAAS,GAAG,CAAC;AACjB,QAAM,cAAc,GAAG;AACvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAY,EAAE,KAAK,GAAG,OAAO,KAAK,GAAG,MAAM;AAAA,MAC3C,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,KAAK,GAAG;AAAA,QACR,KAAK,GAAG;AAAA,QACR,WAAW,0BAAQ;AAAA,MACrB;AAAA,MACC,GAAG;AAAA,MACJ,OAAO;AAAA;AAAA,EACT;AAEJ","sourcesContent":["import {\n FxParamControllerProps,\n HTMLInputControllerWithTextInput,\n} from \"./Controller\"\nimport classes from \"./Controller.module.scss\"\nimport { MAX_SAFE_INT64, MIN_SAFE_INT64 } from \"../utils\"\nimport { useMemo } from \"react\"\n\nexport function BigIntController(props: FxParamControllerProps<\"bigint\">) {\n const { options, value } = props\n const min = useMemo(() => {\n if (typeof options?.min === \"undefined\") return MIN_SAFE_INT64\n return options.min\n }, [options?.min])\n const max = useMemo(() => {\n if (typeof options?.max === \"undefined\") return MAX_SAFE_INT64\n return options.max\n }, [options?.max])\n const stringValue = `${value}`\n return (\n <HTMLInputControllerWithTextInput\n type=\"range\"\n inputProps={{ min: `${min}`, max: `${max}` }}\n textInputProps={{\n type: \"number\",\n min: `${min}`,\n max: `${max}`,\n className: classes.numberInput,\n }}\n {...props}\n value={stringValue}\n />\n )\n}\n"]}
|