@fxhash/params 0.0.5 → 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.
Files changed (194) hide show
  1. package/dist/BaseInput.cjs +13 -0
  2. package/dist/BaseInput.cjs.map +1 -0
  3. package/dist/BaseInput.css +112 -0
  4. package/dist/BaseInput.css.map +1 -0
  5. package/dist/BaseInput.d.ts +12 -0
  6. package/dist/BaseInput.js +13 -0
  7. package/dist/BaseInput.js.map +1 -0
  8. package/dist/Context.cjs +49 -0
  9. package/dist/Context.cjs.map +1 -0
  10. package/dist/Context.d.ts +19 -0
  11. package/dist/Context.js +49 -0
  12. package/dist/Context.js.map +1 -0
  13. package/dist/Controller/BigInt.cjs +10 -0
  14. package/dist/Controller/BigInt.cjs.map +1 -0
  15. package/dist/Controller/BigInt.css +183 -0
  16. package/dist/Controller/BigInt.css.map +1 -0
  17. package/dist/Controller/BigInt.d.ts +8 -0
  18. package/dist/Controller/BigInt.js +10 -0
  19. package/dist/Controller/BigInt.js.map +1 -0
  20. package/dist/Controller/Boolean.cjs +9 -0
  21. package/dist/Controller/Boolean.cjs.map +1 -0
  22. package/dist/Controller/Boolean.css +183 -0
  23. package/dist/Controller/Boolean.css.map +1 -0
  24. package/dist/Controller/Boolean.d.ts +8 -0
  25. package/dist/Controller/Boolean.js +9 -0
  26. package/dist/Controller/Boolean.js.map +1 -0
  27. package/dist/Controller/Bytes.cjs +9 -0
  28. package/dist/Controller/Bytes.cjs.map +1 -0
  29. package/dist/Controller/Bytes.css +191 -0
  30. package/dist/Controller/Bytes.css.map +1 -0
  31. package/dist/Controller/Bytes.d.ts +8 -0
  32. package/dist/Controller/Bytes.js +9 -0
  33. package/dist/Controller/Bytes.js.map +1 -0
  34. package/dist/Controller/Color.cjs +10 -0
  35. package/dist/Controller/Color.cjs.map +1 -0
  36. package/dist/Controller/Color.css +227 -0
  37. package/dist/Controller/Color.css.map +1 -0
  38. package/dist/Controller/Color.d.ts +8 -0
  39. package/dist/Controller/Color.js +10 -0
  40. package/dist/Controller/Color.js.map +1 -0
  41. package/dist/Controller/Controller.cjs +14 -0
  42. package/dist/Controller/Controller.cjs.map +1 -0
  43. package/dist/Controller/Controller.css +183 -0
  44. package/dist/Controller/Controller.css.map +1 -0
  45. package/dist/Controller/Controller.d.ts +41 -0
  46. package/dist/Controller/Controller.js +14 -0
  47. package/dist/Controller/Controller.js.map +1 -0
  48. package/dist/Controller/Invalid.cjs +7 -0
  49. package/dist/Controller/Invalid.cjs.map +1 -0
  50. package/dist/Controller/Invalid.css +48 -0
  51. package/dist/Controller/Invalid.css.map +1 -0
  52. package/dist/Controller/Invalid.d.ts +11 -0
  53. package/dist/Controller/Invalid.js +7 -0
  54. package/dist/Controller/Invalid.js.map +1 -0
  55. package/dist/Controller/Number.cjs +9 -0
  56. package/dist/Controller/Number.cjs.map +1 -0
  57. package/dist/Controller/Number.css +183 -0
  58. package/dist/Controller/Number.css.map +1 -0
  59. package/dist/Controller/Number.d.ts +8 -0
  60. package/dist/Controller/Number.js +9 -0
  61. package/dist/Controller/Number.js.map +1 -0
  62. package/dist/Controller/Param.cjs +21 -0
  63. package/dist/Controller/Param.cjs.map +1 -0
  64. package/dist/Controller/Param.css +283 -0
  65. package/dist/Controller/Param.css.map +1 -0
  66. package/dist/Controller/Param.d.ts +25 -0
  67. package/dist/Controller/Param.js +21 -0
  68. package/dist/Controller/Param.js.map +1 -0
  69. package/dist/Controller/Select.cjs +9 -0
  70. package/dist/Controller/Select.cjs.map +1 -0
  71. package/dist/Controller/Select.css +183 -0
  72. package/dist/Controller/Select.css.map +1 -0
  73. package/dist/Controller/Select.d.ts +8 -0
  74. package/dist/Controller/Select.js +9 -0
  75. package/dist/Controller/Select.js.map +1 -0
  76. package/dist/Controller/String.cjs +9 -0
  77. package/dist/Controller/String.cjs.map +1 -0
  78. package/dist/Controller/String.css +183 -0
  79. package/dist/Controller/String.css.map +1 -0
  80. package/dist/Controller/String.d.ts +8 -0
  81. package/dist/Controller/String.js +9 -0
  82. package/dist/Controller/String.js.map +1 -0
  83. package/dist/Controls.cjs +102 -0
  84. package/dist/Controls.cjs.map +1 -0
  85. package/dist/Controls.css +304 -0
  86. package/dist/Controls.css.map +1 -0
  87. package/dist/Controls.d.ts +17 -0
  88. package/dist/Controls.js +102 -0
  89. package/dist/Controls.js.map +1 -0
  90. package/dist/LockButton/LockButton.cjs +8 -0
  91. package/dist/LockButton/LockButton.cjs.map +1 -0
  92. package/dist/LockButton/LockButton.css +117 -0
  93. package/dist/LockButton/LockButton.css.map +1 -0
  94. package/dist/LockButton/LockButton.d.ts +11 -0
  95. package/dist/LockButton/LockButton.js +8 -0
  96. package/dist/LockButton/LockButton.js.map +1 -0
  97. package/dist/ParamsHistory.cjs +89 -0
  98. package/dist/ParamsHistory.cjs.map +1 -0
  99. package/dist/ParamsHistory.d.ts +22 -0
  100. package/dist/ParamsHistory.js +89 -0
  101. package/dist/ParamsHistory.js.map +1 -0
  102. package/dist/RuntimeContext.cjs +10 -0
  103. package/dist/RuntimeContext.cjs.map +1 -0
  104. package/dist/RuntimeContext.d.ts +44 -0
  105. package/dist/RuntimeContext.js +10 -0
  106. package/dist/RuntimeContext.js.map +1 -0
  107. package/dist/chunk-2BHABOFI.js +43 -0
  108. package/dist/chunk-2BHABOFI.js.map +1 -0
  109. package/dist/chunk-2QIAF3U7.js +39 -0
  110. package/dist/chunk-2QIAF3U7.js.map +1 -0
  111. package/dist/chunk-2QU65L2O.cjs +399 -0
  112. package/dist/chunk-2QU65L2O.cjs.map +1 -0
  113. package/dist/chunk-4FX3ATAX.js +110 -0
  114. package/dist/chunk-4FX3ATAX.js.map +1 -0
  115. package/dist/chunk-4OV7OX5A.js +37 -0
  116. package/dist/chunk-4OV7OX5A.js.map +1 -0
  117. package/dist/chunk-6VMIOQSE.js +34 -0
  118. package/dist/chunk-6VMIOQSE.js.map +1 -0
  119. package/dist/chunk-7NOMBXLG.js +120 -0
  120. package/dist/chunk-7NOMBXLG.js.map +1 -0
  121. package/dist/chunk-CE3TPOSO.js +135 -0
  122. package/dist/chunk-CE3TPOSO.js.map +1 -0
  123. package/dist/chunk-D4RVVQC7.cjs +23 -0
  124. package/dist/chunk-D4RVVQC7.cjs.map +1 -0
  125. package/dist/chunk-DP5CBORY.cjs +46 -0
  126. package/dist/chunk-DP5CBORY.cjs.map +1 -0
  127. package/dist/chunk-EACKNC6C.cjs +103 -0
  128. package/dist/chunk-EACKNC6C.cjs.map +1 -0
  129. package/dist/chunk-EIQHQNZJ.js +115 -0
  130. package/dist/chunk-EIQHQNZJ.js.map +1 -0
  131. package/dist/chunk-FDUCXROE.cjs +120 -0
  132. package/dist/chunk-FDUCXROE.cjs.map +1 -0
  133. package/dist/chunk-H5IMTNFG.js +44 -0
  134. package/dist/chunk-H5IMTNFG.js.map +1 -0
  135. package/dist/chunk-HJBHIE5T.cjs +135 -0
  136. package/dist/chunk-HJBHIE5T.cjs.map +1 -0
  137. package/dist/chunk-JAU4ONF2.cjs +24 -0
  138. package/dist/chunk-JAU4ONF2.cjs.map +1 -0
  139. package/dist/chunk-K4EW6YY3.cjs +34 -0
  140. package/dist/chunk-K4EW6YY3.cjs.map +1 -0
  141. package/dist/chunk-MWP7SJWC.js +103 -0
  142. package/dist/chunk-MWP7SJWC.js.map +1 -0
  143. package/dist/chunk-OFUKQ2TB.cjs +43 -0
  144. package/dist/chunk-OFUKQ2TB.cjs.map +1 -0
  145. package/dist/chunk-PTXBICTZ.js +67 -0
  146. package/dist/chunk-PTXBICTZ.js.map +1 -0
  147. package/dist/chunk-QM6EKPI6.cjs +67 -0
  148. package/dist/chunk-QM6EKPI6.cjs.map +1 -0
  149. package/dist/chunk-SDPENM2L.js +399 -0
  150. package/dist/chunk-SDPENM2L.js.map +1 -0
  151. package/dist/chunk-TKKYM77A.cjs +44 -0
  152. package/dist/chunk-TKKYM77A.cjs.map +1 -0
  153. package/dist/chunk-VED7SCYX.cjs +39 -0
  154. package/dist/chunk-VED7SCYX.cjs.map +1 -0
  155. package/dist/chunk-WQVPKBSN.cjs +110 -0
  156. package/dist/chunk-WQVPKBSN.cjs.map +1 -0
  157. package/dist/chunk-X4O42D2P.cjs +37 -0
  158. package/dist/chunk-X4O42D2P.cjs.map +1 -0
  159. package/dist/chunk-YBV33YPC.cjs +115 -0
  160. package/dist/chunk-YBV33YPC.cjs.map +1 -0
  161. package/dist/chunk-YOS2HCIS.js +23 -0
  162. package/dist/chunk-YOS2HCIS.js.map +1 -0
  163. package/dist/chunk-YYEIYDDF.js +24 -0
  164. package/dist/chunk-YYEIYDDF.js.map +1 -0
  165. package/dist/chunk-ZUITF5XX.js +46 -0
  166. package/dist/chunk-ZUITF5XX.js.map +1 -0
  167. package/dist/hooks.cjs +29 -0
  168. package/dist/hooks.cjs.map +1 -0
  169. package/dist/hooks.d.ts +6 -0
  170. package/dist/hooks.js +29 -0
  171. package/dist/hooks.js.map +1 -0
  172. package/dist/index.cjs +7 -0
  173. package/dist/index.cjs.map +1 -0
  174. package/dist/index.css +112 -0
  175. package/dist/index.css.map +1 -0
  176. package/dist/index.d.ts +3 -0
  177. package/dist/index.js +7 -0
  178. package/dist/index.js.map +1 -0
  179. package/dist/types.cjs +1 -0
  180. package/dist/types.cjs.map +1 -0
  181. package/dist/types.d.ts +100 -0
  182. package/dist/types.js +1 -0
  183. package/dist/types.js.map +1 -0
  184. package/dist/utils.cjs +33 -0
  185. package/dist/utils.cjs.map +1 -0
  186. package/dist/utils.d.ts +50 -0
  187. package/dist/utils.js +33 -0
  188. package/dist/utils.js.map +1 -0
  189. package/dist/validation.cjs +9 -0
  190. package/dist/validation.cjs.map +1 -0
  191. package/dist/validation.d.ts +241 -0
  192. package/dist/validation.js +9 -0
  193. package/dist/validation.js.map +1 -0
  194. 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,10 @@
1
+ import {
2
+ RuntimeContext,
3
+ RuntimeProvider
4
+ } from "./chunk-EIQHQNZJ.js";
5
+ import "./chunk-SDPENM2L.js";
6
+ export {
7
+ RuntimeContext,
8
+ RuntimeProvider
9
+ };
10
+ //# sourceMappingURL=RuntimeContext.js.map
@@ -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":[]}