@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.
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-4OV7OX5A.js +37 -0
  112. package/dist/chunk-4OV7OX5A.js.map +1 -0
  113. package/dist/chunk-57UENWLF.js +110 -0
  114. package/dist/chunk-57UENWLF.js.map +1 -0
  115. package/dist/chunk-6VMIOQSE.js +34 -0
  116. package/dist/chunk-6VMIOQSE.js.map +1 -0
  117. package/dist/chunk-C6GTVBY6.cjs +46 -0
  118. package/dist/chunk-C6GTVBY6.cjs.map +1 -0
  119. package/dist/chunk-CE3TPOSO.js +135 -0
  120. package/dist/chunk-CE3TPOSO.js.map +1 -0
  121. package/dist/chunk-D4RVVQC7.cjs +23 -0
  122. package/dist/chunk-D4RVVQC7.cjs.map +1 -0
  123. package/dist/chunk-EACKNC6C.cjs +103 -0
  124. package/dist/chunk-EACKNC6C.cjs.map +1 -0
  125. package/dist/chunk-FZWZHHQ2.js +398 -0
  126. package/dist/chunk-FZWZHHQ2.js.map +1 -0
  127. package/dist/chunk-H5IMTNFG.js +44 -0
  128. package/dist/chunk-H5IMTNFG.js.map +1 -0
  129. package/dist/chunk-HJBHIE5T.cjs +135 -0
  130. package/dist/chunk-HJBHIE5T.cjs.map +1 -0
  131. package/dist/chunk-JAU4ONF2.cjs +24 -0
  132. package/dist/chunk-JAU4ONF2.cjs.map +1 -0
  133. package/dist/chunk-K4EW6YY3.cjs +34 -0
  134. package/dist/chunk-K4EW6YY3.cjs.map +1 -0
  135. package/dist/chunk-KZMSUHQX.cjs +120 -0
  136. package/dist/chunk-KZMSUHQX.cjs.map +1 -0
  137. package/dist/chunk-LX23UR4X.cjs +115 -0
  138. package/dist/chunk-LX23UR4X.cjs.map +1 -0
  139. package/dist/chunk-MWP7SJWC.js +103 -0
  140. package/dist/chunk-MWP7SJWC.js.map +1 -0
  141. package/dist/chunk-OFUKQ2TB.cjs +43 -0
  142. package/dist/chunk-OFUKQ2TB.cjs.map +1 -0
  143. package/dist/chunk-P77D7XSP.js +46 -0
  144. package/dist/chunk-P77D7XSP.js.map +1 -0
  145. package/dist/chunk-PTXBICTZ.js +67 -0
  146. package/dist/chunk-PTXBICTZ.js.map +1 -0
  147. package/dist/chunk-QDLMFMLL.cjs +398 -0
  148. package/dist/chunk-QDLMFMLL.cjs.map +1 -0
  149. package/dist/chunk-QM6EKPI6.cjs +67 -0
  150. package/dist/chunk-QM6EKPI6.cjs.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-X4O42D2P.cjs +37 -0
  156. package/dist/chunk-X4O42D2P.cjs.map +1 -0
  157. package/dist/chunk-YOS2HCIS.js +23 -0
  158. package/dist/chunk-YOS2HCIS.js.map +1 -0
  159. package/dist/chunk-YXDLGCFJ.cjs +110 -0
  160. package/dist/chunk-YXDLGCFJ.cjs.map +1 -0
  161. package/dist/chunk-YYEIYDDF.js +24 -0
  162. package/dist/chunk-YYEIYDDF.js.map +1 -0
  163. package/dist/chunk-Z7K2LNS2.js +115 -0
  164. package/dist/chunk-Z7K2LNS2.js.map +1 -0
  165. package/dist/chunk-ZG3OT7LF.js +120 -0
  166. package/dist/chunk-ZG3OT7LF.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 _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,10 @@
1
+ import {
2
+ RuntimeContext,
3
+ RuntimeProvider
4
+ } from "./chunk-Z7K2LNS2.js";
5
+ import "./chunk-FZWZHHQ2.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":[]}
@@ -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"]}