@fxhash/params 0.0.8 → 0.0.10

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 (136) hide show
  1. package/README.md +2 -2
  2. package/dist/BaseInput.cjs +2 -2
  3. package/dist/BaseInput.css +24 -24
  4. package/dist/BaseInput.css.map +1 -1
  5. package/dist/BaseInput.js +1 -1
  6. package/dist/Context.cjs +2 -2
  7. package/dist/Context.js +1 -1
  8. package/dist/Controller/BigInt.cjs +5 -5
  9. package/dist/Controller/BigInt.css +48 -48
  10. package/dist/Controller/BigInt.css.map +1 -1
  11. package/dist/Controller/BigInt.js +4 -4
  12. package/dist/Controller/Boolean.cjs +4 -4
  13. package/dist/Controller/Boolean.css +48 -48
  14. package/dist/Controller/Boolean.css.map +1 -1
  15. package/dist/Controller/Boolean.js +3 -3
  16. package/dist/Controller/Bytes.cjs +4 -4
  17. package/dist/Controller/Bytes.css +49 -49
  18. package/dist/Controller/Bytes.css.map +1 -1
  19. package/dist/Controller/Bytes.js +3 -3
  20. package/dist/Controller/Color.cjs +5 -5
  21. package/dist/Controller/Color.css +58 -58
  22. package/dist/Controller/Color.css.map +1 -1
  23. package/dist/Controller/Color.js +4 -4
  24. package/dist/Controller/Controller.cjs +3 -3
  25. package/dist/Controller/Controller.css +48 -48
  26. package/dist/Controller/Controller.css.map +1 -1
  27. package/dist/Controller/Controller.js +2 -2
  28. package/dist/Controller/Invalid.cjs +2 -2
  29. package/dist/Controller/Invalid.css +9 -9
  30. package/dist/Controller/Invalid.css.map +1 -1
  31. package/dist/Controller/Invalid.js +1 -1
  32. package/dist/Controller/Number.cjs +4 -4
  33. package/dist/Controller/Number.css +48 -48
  34. package/dist/Controller/Number.css.map +1 -1
  35. package/dist/Controller/Number.js +3 -3
  36. package/dist/Controller/Param.cjs +13 -13
  37. package/dist/Controller/Param.css +68 -68
  38. package/dist/Controller/Param.css.map +1 -1
  39. package/dist/Controller/Param.js +12 -12
  40. package/dist/Controller/Select.cjs +4 -4
  41. package/dist/Controller/Select.css +48 -48
  42. package/dist/Controller/Select.css.map +1 -1
  43. package/dist/Controller/Select.js +3 -3
  44. package/dist/Controller/String.cjs +4 -4
  45. package/dist/Controller/String.css +48 -48
  46. package/dist/Controller/String.css.map +1 -1
  47. package/dist/Controller/String.js +3 -3
  48. package/dist/Controls.cjs +19 -19
  49. package/dist/Controls.cjs.map +1 -1
  50. package/dist/Controls.css +72 -72
  51. package/dist/Controls.css.map +1 -1
  52. package/dist/Controls.js +15 -15
  53. package/dist/Controls.js.map +1 -1
  54. package/dist/LockButton/LockButton.cjs +3 -3
  55. package/dist/LockButton/LockButton.css +25 -25
  56. package/dist/LockButton/LockButton.css.map +1 -1
  57. package/dist/LockButton/LockButton.js +2 -2
  58. package/dist/ParamsHistory.cjs +4 -4
  59. package/dist/ParamsHistory.cjs.map +1 -1
  60. package/dist/ParamsHistory.js +2 -2
  61. package/dist/ParamsHistory.js.map +1 -1
  62. package/dist/RuntimeContext.cjs +3 -3
  63. package/dist/RuntimeContext.js +2 -2
  64. package/dist/{chunk-CE3TPOSO.js → chunk-2SARESCF.js} +8 -8
  65. package/dist/{chunk-CE3TPOSO.js.map → chunk-2SARESCF.js.map} +1 -1
  66. package/dist/{chunk-D4RVVQC7.cjs → chunk-2XWOWIXK.cjs} +3 -3
  67. package/dist/{chunk-YXDLGCFJ.cjs → chunk-3OF5LR4Y.cjs} +17 -17
  68. package/dist/chunk-3OF5LR4Y.cjs.map +1 -0
  69. package/dist/{chunk-VED7SCYX.cjs → chunk-3QFEC7SK.cjs} +4 -4
  70. package/dist/{chunk-VED7SCYX.cjs.map → chunk-3QFEC7SK.cjs.map} +1 -1
  71. package/dist/{chunk-ZG3OT7LF.js → chunk-4OKETOHR.js} +11 -11
  72. package/dist/chunk-4OKETOHR.js.map +1 -0
  73. package/dist/{chunk-FZWZHHQ2.js → chunk-7H32FZ35.js} +14 -8
  74. package/dist/chunk-7H32FZ35.js.map +1 -0
  75. package/dist/{chunk-C6GTVBY6.cjs → chunk-AMJCUB2I.cjs} +7 -7
  76. package/dist/{chunk-2BHABOFI.js → chunk-BEDRMOBJ.js} +6 -6
  77. package/dist/{chunk-2BHABOFI.js.map → chunk-BEDRMOBJ.js.map} +1 -1
  78. package/dist/{chunk-OFUKQ2TB.cjs → chunk-CVLSVTCX.cjs} +6 -6
  79. package/dist/{chunk-OFUKQ2TB.cjs.map → chunk-CVLSVTCX.cjs.map} +1 -1
  80. package/dist/{chunk-PTXBICTZ.js → chunk-GDSG5VLX.js} +6 -6
  81. package/dist/{chunk-PTXBICTZ.js.map → chunk-GDSG5VLX.js.map} +1 -1
  82. package/dist/{chunk-P77D7XSP.js → chunk-GXCX5YCI.js} +3 -3
  83. package/dist/{chunk-2QIAF3U7.js → chunk-HIC6NEI2.js} +3 -3
  84. package/dist/{chunk-2QIAF3U7.js.map → chunk-HIC6NEI2.js.map} +1 -1
  85. package/dist/{chunk-Z7K2LNS2.js → chunk-JSFJKANM.js} +2 -2
  86. package/dist/chunk-JSFJKANM.js.map +1 -0
  87. package/dist/{chunk-JAU4ONF2.cjs → chunk-K22KNCGR.cjs} +3 -3
  88. package/dist/{chunk-LX23UR4X.cjs → chunk-K6UPSPM5.cjs} +4 -4
  89. package/dist/chunk-K6UPSPM5.cjs.map +1 -0
  90. package/dist/{chunk-TKKYM77A.cjs → chunk-LTIGECX6.cjs} +4 -4
  91. package/dist/{chunk-QDLMFMLL.cjs → chunk-LVN3UGUH.cjs} +14 -8
  92. package/dist/chunk-LVN3UGUH.cjs.map +1 -0
  93. package/dist/{chunk-HJBHIE5T.cjs → chunk-M7HJ2CKM.cjs} +9 -9
  94. package/dist/{chunk-HJBHIE5T.cjs.map → chunk-M7HJ2CKM.cjs.map} +1 -1
  95. package/dist/{chunk-YYEIYDDF.js → chunk-NBDFYP3Y.js} +2 -2
  96. package/dist/{chunk-6VMIOQSE.js → chunk-SOEAQVIE.js} +3 -3
  97. package/dist/{chunk-6VMIOQSE.js.map → chunk-SOEAQVIE.js.map} +1 -1
  98. package/dist/{chunk-QM6EKPI6.cjs → chunk-TQGOPELV.cjs} +6 -6
  99. package/dist/chunk-TQGOPELV.cjs.map +1 -0
  100. package/dist/{chunk-K4EW6YY3.cjs → chunk-WHVPVEYH.cjs} +5 -5
  101. package/dist/chunk-WHVPVEYH.cjs.map +1 -0
  102. package/dist/{chunk-57UENWLF.js → chunk-X4GS3I5P.js} +9 -9
  103. package/dist/chunk-X4GS3I5P.js.map +1 -0
  104. package/dist/{chunk-4OV7OX5A.js → chunk-XYWE6TCQ.js} +3 -3
  105. package/dist/{chunk-4OV7OX5A.js.map → chunk-XYWE6TCQ.js.map} +1 -1
  106. package/dist/{chunk-KZMSUHQX.cjs → chunk-YLZI7BR5.cjs} +16 -16
  107. package/dist/chunk-YLZI7BR5.cjs.map +1 -0
  108. package/dist/{chunk-H5IMTNFG.js → chunk-YNPYJVNU.js} +2 -2
  109. package/dist/{chunk-X4O42D2P.cjs → chunk-Z5Z6AKH7.cjs} +4 -4
  110. package/dist/{chunk-X4O42D2P.cjs.map → chunk-Z5Z6AKH7.cjs.map} +1 -1
  111. package/dist/{chunk-YOS2HCIS.js → chunk-ZALRIFOG.js} +2 -2
  112. package/dist/index.cjs +2 -2
  113. package/dist/index.css +24 -24
  114. package/dist/index.css.map +1 -1
  115. package/dist/index.js +1 -1
  116. package/dist/utils.cjs +2 -2
  117. package/dist/utils.js +1 -1
  118. package/package.json +5 -4
  119. package/dist/chunk-57UENWLF.js.map +0 -1
  120. package/dist/chunk-FZWZHHQ2.js.map +0 -1
  121. package/dist/chunk-K4EW6YY3.cjs.map +0 -1
  122. package/dist/chunk-KZMSUHQX.cjs.map +0 -1
  123. package/dist/chunk-LX23UR4X.cjs.map +0 -1
  124. package/dist/chunk-QDLMFMLL.cjs.map +0 -1
  125. package/dist/chunk-QM6EKPI6.cjs.map +0 -1
  126. package/dist/chunk-YXDLGCFJ.cjs.map +0 -1
  127. package/dist/chunk-Z7K2LNS2.js.map +0 -1
  128. package/dist/chunk-ZG3OT7LF.js.map +0 -1
  129. /package/dist/{chunk-D4RVVQC7.cjs.map → chunk-2XWOWIXK.cjs.map} +0 -0
  130. /package/dist/{chunk-C6GTVBY6.cjs.map → chunk-AMJCUB2I.cjs.map} +0 -0
  131. /package/dist/{chunk-P77D7XSP.js.map → chunk-GXCX5YCI.js.map} +0 -0
  132. /package/dist/{chunk-JAU4ONF2.cjs.map → chunk-K22KNCGR.cjs.map} +0 -0
  133. /package/dist/{chunk-TKKYM77A.cjs.map → chunk-LTIGECX6.cjs.map} +0 -0
  134. /package/dist/{chunk-YYEIYDDF.js.map → chunk-NBDFYP3Y.js.map} +0 -0
  135. /package/dist/{chunk-H5IMTNFG.js.map → chunk-YNPYJVNU.js.map} +0 -0
  136. /package/dist/{chunk-YOS2HCIS.js.map → chunk-ZALRIFOG.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import {\n hexString,\n FxParamDefinition,\n FxParamProcessor,\n FxParamProcessors,\n FxParamTypeMap,\n FxParamType,\n FxParamsData,\n FxParamValue,\n FxParamTranformType,\n FxParamTransformationTypeMap,\n FxParamProcessorTransformer,\n} from \"./types\"\n\nexport function rgbaToHex(r: number, g: number, b: number, a: number): string {\n const outParts = [\n r.toString(16),\n g.toString(16),\n b.toString(16),\n Math.round(a * 255)\n .toString(16)\n .substring(0, 2),\n ]\n\n // Pad single-digit output values\n outParts.forEach(function (part, i) {\n if (part.length === 1) {\n outParts[i] = \"0\" + part\n }\n })\n\n return \"#\" + outParts.join(\"\")\n}\n\nfunction completeHexColor(hexCode: hexString | string): string {\n let hex = hexCode.replace(\"#\", \"\")\n if (hex.length === 6) {\n hex = `${hex}ff`\n }\n if (hex.length === 3) {\n hex = `${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}ff`\n }\n return hex\n}\n\nexport function hexToRgba(hexCode: hexString) {\n const hex = completeHexColor(hexCode)\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n const a =\n Math.round(\n (parseInt(hex.substring(6, 8), 16) / 255 + Number.EPSILON) * 100\n ) / 100\n\n return { r, g, b, a }\n}\n\nconst stringToHex = function (s: string) {\n let rtn = \"\"\n for (let i = 0; i < s.length; i++) {\n rtn += s.charCodeAt(i).toString(16).padStart(4, \"0\")\n }\n return rtn\n}\nconst hexToString = function (h: string) {\n const hx = h.match(/.{1,4}/g) || []\n let rtn = \"\"\n for (let i = 0; i < hx.length; i++) {\n const int = parseInt(hx[i], 16)\n if (int === 0) break\n rtn += String.fromCharCode(int)\n }\n return rtn\n}\n\nexport const MIN_SAFE_INT64 = BigInt(\"-9223372036854775808\")\nexport const MAX_SAFE_INT64 = BigInt(\"9223372036854775807\")\n\nexport const ParameterProcessors: FxParamProcessors = {\n number: {\n serialize: input => {\n const view = new DataView(new ArrayBuffer(8))\n view.setFloat64(0, input)\n return view.getBigUint64(0).toString(16).padStart(16, \"0\")\n },\n deserialize: input => {\n const view = new DataView(new ArrayBuffer(8))\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, parseInt(input.substring(i * 2, i * 2 + 2), 16))\n }\n return view.getFloat64(0)\n },\n bytesLength: () => 8,\n constrain: (value, definition) => {\n let min = Number.MIN_SAFE_INTEGER\n if (typeof definition.options?.min !== \"undefined\")\n min = Number(definition.options.min)\n let max = Number.MAX_SAFE_INTEGER\n if (typeof definition.options?.max !== \"undefined\")\n max = Number(definition.options.max)\n max = Math.min(max, Number.MAX_SAFE_INTEGER)\n min = Math.max(min, Number.MIN_SAFE_INTEGER)\n const v = Math.min(Math.max(value, min), max)\n if (definition?.options?.step) {\n const t = 1.0 / definition?.options?.step\n return Math.round(v * t) / t\n }\n return v\n },\n random: definition => {\n let min = Number.MIN_SAFE_INTEGER\n if (typeof definition.options?.min !== \"undefined\")\n min = Number(definition.options.min)\n let max = Number.MAX_SAFE_INTEGER\n if (typeof definition.options?.max !== \"undefined\")\n max = Number(definition.options.max)\n max = Math.min(max, Number.MAX_SAFE_INTEGER)\n min = Math.max(min, Number.MIN_SAFE_INTEGER)\n const v = Math.random() * (max - min) + min\n if (definition?.options?.step) {\n const t = 1.0 / definition?.options?.step\n return Math.round(v * t) / t\n }\n return v\n },\n },\n bigint: {\n serialize: (input: any) => {\n const view = new DataView(new ArrayBuffer(8))\n view.setBigInt64(0, BigInt(input))\n return view.getBigUint64(0).toString(16).padStart(16, \"0\")\n },\n deserialize: (input: any) => {\n const view = new DataView(new ArrayBuffer(8))\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, parseInt(input.substring(i * 2, i * 2 + 2), 16))\n }\n return view.getBigInt64(0)\n },\n bytesLength: () => 8,\n random: definition => {\n let min = MIN_SAFE_INT64\n let max = MAX_SAFE_INT64\n if (typeof definition.options?.min !== \"undefined\")\n min = BigInt(definition.options.min)\n if (typeof definition.options?.max !== \"undefined\")\n max = BigInt(definition.options.max)\n const range = max - min\n const bits = range.toString(2).length\n let random\n do {\n random = BigInt(\n \"0b\" +\n Array.from(\n crypto.getRandomValues(new Uint8Array(Math.ceil(bits / 8)))\n )\n .map(b => b.toString(2).padStart(8, \"0\"))\n .join(\"\")\n )\n } while (random > range)\n return random + min\n },\n },\n boolean: {\n serialize: input => {\n return typeof input === \"boolean\"\n ? input\n ? \"01\"\n : \"00\"\n : typeof input === \"string\"\n ? input === \"true\"\n ? \"01\"\n : \"00\"\n : \"00\"\n },\n deserialize: input => {\n return input === \"00\" ? false : true\n },\n bytesLength: () => 1,\n random: () => Math.random() < 0.5,\n },\n\n color: {\n serialize: (input: string) => {\n return completeHexColor(input)\n },\n\n deserialize: (input): hexString => {\n return input as hexString\n },\n bytesLength: () => 4,\n transform: (input: string) => {\n const color = completeHexColor(input)\n const r = parseInt(color.slice(0, 2), 16)\n const g = parseInt(color.slice(2, 4), 16)\n const b = parseInt(color.slice(4, 6), 16)\n const a = parseInt(color.slice(6, 8), 16)\n return {\n hex: {\n rgb: \"#\" + input.slice(0, 6),\n rgba: \"#\" + input,\n },\n obj: {\n rgb: { r, g, b },\n rgba: { r, g, b, a },\n },\n arr: {\n rgb: [r, g, b],\n rgba: [r, g, b, a],\n },\n }\n },\n constrain: value => {\n const hex = value.replace(\"#\", \"\")\n return hex.slice(0, 8).padEnd(8, \"f\")\n },\n random: () =>\n `${[...Array(8)]\n .map(() => Math.floor(Math.random() * 16).toString(16))\n .join(\"\")}`,\n },\n\n string: {\n serialize: (input, def) => {\n if (!def.version) {\n let hex = stringToHex(input.substring(0, 64))\n hex = hex.padEnd(64 * 4, \"0\")\n return hex\n }\n let max = 64\n if (typeof def.options?.maxLength !== \"undefined\")\n max = Number(def.options.maxLength)\n let hex = stringToHex(input.substring(0, max))\n hex = hex.padEnd(max * 4, \"0\")\n return hex\n },\n deserialize: input => {\n return hexToString(input)\n },\n\n bytesLength: def => {\n if (!def.version) {\n return 64 * 2\n }\n if (typeof def.options?.maxLength !== \"undefined\")\n return Number(def.options.maxLength) * 2\n return 64 * 2\n },\n random: definition => {\n let min = 0\n if (typeof definition.options?.minLength !== \"undefined\")\n min = definition.options.minLength\n let max = 64\n if (typeof definition.options?.maxLength !== \"undefined\")\n max = definition.options.maxLength\n const length = Math.round(Math.random() * (max - min) + min)\n return [...Array(length)]\n .map(i => (~~(Math.random() * 36)).toString(36))\n .join(\"\")\n },\n constrain: (value, definition) => {\n let min = 0\n if (typeof definition.options?.minLength !== \"undefined\")\n min = definition.options.minLength\n let max = 64\n if (typeof definition.options?.maxLength !== \"undefined\")\n max = definition.options.maxLength\n const v = value.slice(0, max)\n if (v.length < min) {\n return v.padEnd(min)\n }\n return v\n },\n },\n\n bytes: {\n serialize: (input, def) => {\n return Array.from(input)\n .map(i => i.toString(16).padStart(2, \"0\"))\n .join(\"\")\n },\n deserialize: (input, def) => {\n const len = input.length / 2\n const uint8 = new Uint8Array(len)\n let idx\n for (let i = 0; i < len; i++) {\n idx = i * 2\n uint8[i] = parseInt(`${input[idx]}${input[idx + 1]}`, 16)\n }\n return uint8\n },\n bytesLength: def => def.options.length,\n random: def => {\n const len = def.options?.length || 0\n const uint8 = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n uint8[i] = (Math.random() * 255) | 0\n }\n return uint8\n },\n },\n\n select: {\n serialize: (input, def) => {\n // find the index of the input in the array of options\n return Math.min(255, def.options?.options?.indexOf(input) || 0)\n .toString(16)\n .padStart(2, \"0\")\n },\n\n deserialize: (input, def) => {\n // get the index, which is the input\n const idx = parseInt(input, 16)\n return def.options?.options?.[idx] || def.options?.options?.[0] || \"\"\n },\n\n bytesLength: () => 1, // index between 0 and 255\n constrain: (value, definition) => {\n if (definition.options.options.includes(value)) {\n return value\n }\n return definition.options.options[0]\n },\n random: definition => {\n const index = Math.round(\n Math.random() * (definition.options.options.length - 1) + 0\n )\n return definition?.options?.options[index]\n },\n },\n}\n\n// params are injected into the piece using the binary representation of the\n// numbers, to keep precision\nexport function serializeParams(\n params: any,\n definition: FxParamDefinition<any>[]\n) {\n // a single hex string will be used for all the params\n let bytes = \"\"\n if (!definition) return bytes\n // loop through each parameter from the definition to find the associated\n // parameter as set on the UI\n for (const def of definition) {\n const { id, type } = def\n const processor = ParameterProcessors[\n type as FxParamType\n ] as FxParamProcessor<any>\n // if the param is definined in the object\n\n const v = params[id] as FxParamTypeMap[]\n const val =\n typeof v !== \"undefined\"\n ? v\n : typeof def.default !== \"undefined\"\n ? def.default\n : processor.random(def)\n const serialized = processor.serialize(val, def)\n bytes += serialized\n }\n\n return bytes\n}\n\n// takes an array of bytes, in hexadecimal format, and a parametric space\n// definition and outputs an array of parameters, mapping the definition and\n// validating input based on the definition constraints\nexport function deserializeParams(\n bytes: string,\n definition: FxParamDefinition<FxParamType>[],\n options: { withTransform?: boolean; transformType?: FxParamTranformType }\n) {\n const params: Record<\n string,\n FxParamValue<FxParamType> | FxParamTransformationTypeMap[FxParamType]\n > = {}\n for (const def of definition) {\n const processor = ParameterProcessors[\n def.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n const transformer =\n options.withTransform &&\n (processor[\n options.transformType || \"transform\"\n ] as FxParamProcessorTransformer<FxParamType>)\n if (!bytes) {\n let v\n if (typeof def.default === \"undefined\") v = processor.random(def)\n else v = def.default\n params[def.id] = transformer ? transformer(v, def) : v\n continue\n }\n // extract the length from the bytes & shift the initial bytes string\n const bytesLen = processor.bytesLength(def)\n const valueBytes = bytes.substring(0, bytesLen * 2)\n bytes = bytes.substring(bytesLen * 2)\n // deserialize the bytes into the params\n const val = processor.deserialize(\n valueBytes,\n def\n ) as FxParamValue<FxParamType>\n params[def.id] = transformer ? transformer(val, def) : val\n }\n return params\n}\n\n// Consolidates parameters from both a params object provided by the token\n// and the dat object of params, which is stored by the controls component.\nexport function consolidateParams(params: any, data: any) {\n if (!params) return []\n\n const rtn = [...params]\n\n for (const p in rtn) {\n const definition = rtn[p]\n const { id, type, default: def } = definition\n if (data && data.hasOwnProperty(id)) {\n rtn[p].value = data[id]\n } else {\n const processor = ParameterProcessors[\n type as FxParamType\n ] as FxParamProcessor<any>\n let v\n if (typeof def === \"undefined\") v = processor.random(definition)\n else v = def\n rtn[p].value = processor.transform?.(v) || v\n }\n }\n\n return rtn\n}\n\nexport function getRandomParamValues(\n params: FxParamDefinition<FxParamType>[],\n options?: { noTransform: boolean }\n): any {\n return params.reduce(\n (acc, definition) => {\n const processor = ParameterProcessors[\n definition.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n const v = processor.random(definition) as FxParamType\n acc[definition.id] = options?.noTransform\n ? v\n : processor.transform?.(v) || v\n return acc\n },\n {} as Record<string, any>\n )\n}\n\nexport function sumBytesParams(\n definitions: FxParamDefinition<FxParamType>[]\n): number {\n return (\n definitions?.reduce(\n (acc, def) =>\n acc +\n (\n ParameterProcessors[\n def.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n ).bytesLength(def),\n 0\n ) || 0\n )\n}\n\nexport function stringifyParamsData(data: FxParamsData) {\n return JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value\n })\n}\n\nexport function jsonStringifyBigint(data: any): string {\n return JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value\n })\n}\n\nexport const processParam = (\n paramId: string,\n value: FxParamValue<FxParamType>,\n definitions: FxParamDefinition<FxParamType>[],\n transformType: FxParamTranformType\n): FxParamValue<FxParamType> | FxParamTransformationTypeMap[FxParamType] => {\n const definition = definitions.find(d => d.id === paramId)\n const processor = ParameterProcessors[definition.type]\n const transformer = processor[\n transformType\n ] as FxParamProcessorTransformer<FxParamType>\n return transformer?.(value, definition) || value\n}\n\nexport const processParams = (\n values: FxParamsData,\n definitions: FxParamDefinition<FxParamType>[],\n transformType: FxParamTranformType\n) => {\n const paramValues = {}\n for (const definition of definitions) {\n const processor = ParameterProcessors[definition.type]\n const value = values[definition.id]\n // deserialize the bytes into the params\n const transformer = processor[\n transformType\n ] as FxParamProcessorTransformer<FxParamType>\n paramValues[definition.id] = transformer?.(value, definition) || value\n }\n return paramValues\n}\n"],"mappings":"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","names":["hex"]}
@@ -1,11 +1,11 @@
1
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
2
 
3
3
 
4
- var _chunkHJBHIE5Tcjs = require('./chunk-HJBHIE5T.cjs');
4
+ var _chunkM7HJ2CKMcjs = require('./chunk-M7HJ2CKM.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkQDLMFMLLcjs = require('./chunk-QDLMFMLL.cjs');
8
+ var _chunkLVN3UGUHcjs = require('./chunk-LVN3UGUH.cjs');
9
9
 
10
10
  // src/Controller/BigInt.tsx
11
11
  var _react = require('react');
@@ -14,17 +14,17 @@ function BigIntController(props) {
14
14
  const { options, value } = props;
15
15
  const min = _react.useMemo.call(void 0, () => {
16
16
  if (typeof _optionalChain([options, 'optionalAccess', _ => _.min]) === "undefined")
17
- return _chunkQDLMFMLLcjs.MIN_SAFE_INT64;
17
+ return _chunkLVN3UGUHcjs.MIN_SAFE_INT64;
18
18
  return options.min;
19
19
  }, [_optionalChain([options, 'optionalAccess', _2 => _2.min])]);
20
20
  const max = _react.useMemo.call(void 0, () => {
21
21
  if (typeof _optionalChain([options, 'optionalAccess', _3 => _3.max]) === "undefined")
22
- return _chunkQDLMFMLLcjs.MAX_SAFE_INT64;
22
+ return _chunkLVN3UGUHcjs.MAX_SAFE_INT64;
23
23
  return options.max;
24
24
  }, [_optionalChain([options, 'optionalAccess', _4 => _4.max])]);
25
25
  const stringValue = `${value}`;
26
26
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27
- _chunkHJBHIE5Tcjs.HTMLInputControllerWithTextInput,
27
+ _chunkM7HJ2CKMcjs.HTMLInputControllerWithTextInput,
28
28
  {
29
29
  type: "range",
30
30
  inputProps: { min: `${min}`, max: `${max}` },
@@ -32,7 +32,7 @@ function BigIntController(props) {
32
32
  type: "number",
33
33
  min: `${min}`,
34
34
  max: `${max}`,
35
- className: _chunkHJBHIE5Tcjs.Controller_module_default.numberInput
35
+ className: _chunkM7HJ2CKMcjs.Controller_module_default.numberInput
36
36
  },
37
37
  ...props,
38
38
  value: stringValue
@@ -43,4 +43,4 @@ function BigIntController(props) {
43
43
 
44
44
 
45
45
  exports.BigIntController = BigIntController;
46
- //# sourceMappingURL=chunk-C6GTVBY6.cjs.map
46
+ //# sourceMappingURL=chunk-AMJCUB2I.cjs.map
@@ -1,10 +1,10 @@
1
1
  // src/BaseInput.module.scss
2
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"
3
+ "baseInput": "_baseInput_13ljm_1",
4
+ "baseSelect": "_baseSelect_13ljm_2",
5
+ "baseButton": "_baseButton_13ljm_3",
6
+ "color-secondary": "_color-secondary_13ljm_45",
7
+ "iconButton": "_iconButton_13ljm_55"
8
8
  };
9
9
 
10
10
  // src/BaseInput.tsx
@@ -40,4 +40,4 @@ export {
40
40
  BaseButton,
41
41
  IconButton
42
42
  };
43
- //# sourceMappingURL=chunk-2BHABOFI.js.map
43
+ //# sourceMappingURL=chunk-BEDRMOBJ.js.map
@@ -1 +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":[]}
1
+ {"version":3,"sources":["../src/BaseInput.module.scss","../src/BaseInput.tsx"],"sourcesContent":["import 'css-chunk:src/BaseInput.module.scss';export default {\n \"baseInput\": \"_baseInput_13ljm_1\",\n \"baseSelect\": \"_baseSelect_13ljm_2\",\n \"baseButton\": \"_baseButton_13ljm_3\",\n \"color-secondary\": \"_color-secondary_13ljm_45\",\n \"iconButton\": \"_iconButton_13ljm_55\"\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":[]}
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/BaseInput.module.scss
2
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"
3
+ "baseInput": "_baseInput_13ljm_1",
4
+ "baseSelect": "_baseSelect_13ljm_2",
5
+ "baseButton": "_baseButton_13ljm_3",
6
+ "color-secondary": "_color-secondary_13ljm_45",
7
+ "iconButton": "_iconButton_13ljm_55"
8
8
  };
9
9
 
10
10
  // src/BaseInput.tsx
@@ -40,4 +40,4 @@ function IconButton(props) {
40
40
 
41
41
 
42
42
  exports.BaseInput = BaseInput; exports.BaseSelect = BaseSelect; exports.BaseButton = BaseButton; exports.IconButton = IconButton;
43
- //# sourceMappingURL=chunk-OFUKQ2TB.cjs.map
43
+ //# sourceMappingURL=chunk-CVLSVTCX.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/BaseInput.module.scss","../src/BaseInput.tsx"],"names":[],"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","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"]}
1
+ {"version":3,"sources":["../src/BaseInput.module.scss","../src/BaseInput.tsx"],"names":[],"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","sourcesContent":["import 'css-chunk:src/BaseInput.module.scss';export default {\n \"baseInput\": \"_baseInput_13ljm_1\",\n \"baseSelect\": \"_baseSelect_13ljm_2\",\n \"baseButton\": \"_baseButton_13ljm_3\",\n \"color-secondary\": \"_color-secondary_13ljm_45\",\n \"iconButton\": \"_iconButton_13ljm_55\"\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"]}
@@ -3,11 +3,11 @@ import { useState } from "react";
3
3
 
4
4
  // src/Controller/Invalid.module.scss
5
5
  var Invalid_module_default = {
6
- "invalid": "_invalid_9fznv_1",
7
- "isOpen": "_isOpen_9fznv_30",
8
- "errorsWrapper": "_errorsWrapper_9fznv_34",
9
- "attributes": "_attributes_9fznv_40",
10
- "issue": "_issue_9fznv_44"
6
+ "invalid": "_invalid_u8v12_1",
7
+ "isOpen": "_isOpen_u8v12_30",
8
+ "errorsWrapper": "_errorsWrapper_u8v12_34",
9
+ "attributes": "_attributes_u8v12_40",
10
+ "issue": "_issue_u8v12_44"
11
11
  };
12
12
 
13
13
  // src/Controller/Invalid.tsx
@@ -64,4 +64,4 @@ function ControllerInvalid(props) {
64
64
  export {
65
65
  ControllerInvalid
66
66
  };
67
- //# sourceMappingURL=chunk-PTXBICTZ.js.map
67
+ //# sourceMappingURL=chunk-GDSG5VLX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Controller/Invalid.tsx","../src/Controller/Invalid.module.scss"],"sourcesContent":["import { useState } from \"react\"\nimport { FxParamDefinition, FxParamType } from \"../types\"\nimport { ZodError, ZodIssue } from \"zod\"\nimport classes from \"./Invalid.module.scss\"\nimport cx from \"classnames\"\n\ninterface IssueProps {\n issue: ZodIssue\n}\n\nfunction Issue(props: IssueProps) {\n const { issue } = props\n return (\n <li className={classes.issue}>\n <h3>\n {issue.code} at {issue.path.join(\".\")}\n </h3>\n <p>{issue.message}</p>\n </li>\n )\n}\n\ninterface AttributeProps {\n id: keyof FxParamDefinition<FxParamType>\n definition: FxParamDefinition<FxParamType>\n}\n\nfunction Attribute(props: AttributeProps) {\n const { id, definition } = props\n if (!definition[id]) return null\n return (\n <h4>\n <>\n {id}: {definition[id]}\n </>\n </h4>\n )\n}\n\nexport interface ControllerInvalidProps {\n definition: FxParamDefinition<FxParamType>\n error: ZodError\n}\n\nexport function ControllerInvalid(props: ControllerInvalidProps) {\n const { definition, error } = props\n\n const [showIssues, setShowIssues] = useState(false)\n\n const handleToggleShowIssues = () => {\n setShowIssues(!showIssues)\n }\n\n return (\n <div className={cx(classes.invalid)}>\n <label onClick={handleToggleShowIssues}>\n Invalid parameter definition\n <i className={cx({ [classes.isOpen]: showIssues })}>\n {showIssues ? \"-\" : \"+\"}\n </i>\n </label>\n {showIssues && (\n <div className={classes.errorsWrapper}>\n <div className={classes.attributes}>\n <Attribute definition={definition} id=\"id\" />\n <Attribute definition={definition} id=\"name\" />\n </div>\n <ul className={cx(classes.issues, { [classes.isOpen]: showIssues })}>\n {error.issues.map((issue) => (\n <Issue\n key={`${issue.code}-${issue.path.join(\"-\")}`}\n issue={issue}\n />\n ))}\n </ul>\n </div>\n )}\n </div>\n )\n}\n","import 'css-chunk:src/Controller/Invalid.module.scss';export default {\n \"invalid\": \"_invalid_9fznv_1\",\n \"isOpen\": \"_isOpen_9fznv_30\",\n \"errorsWrapper\": \"_errorsWrapper_9fznv_34\",\n \"attributes\": \"_attributes_9fznv_40\",\n \"issue\": \"_issue_9fznv_44\"\n};"],"mappings":";AAAA,SAAS,gBAAgB;;;ACA6B,IAAO,yBAAQ;AAAA,EACnE,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,SAAS;AACX;;;ADFA,OAAO,QAAQ;AAUT,SAkBA,UAfA,KAHA;AAJN,SAAS,MAAM,OAAmB;AAChC,QAAM,EAAE,MAAM,IAAI;AAClB,SACE,qBAAC,QAAG,WAAW,uBAAQ,OACrB;AAAA,yBAAC,QACE;AAAA,YAAM;AAAA,MAAK;AAAA,MAAK,MAAM,KAAK,KAAK,GAAG;AAAA,OACtC;AAAA,IACA,oBAAC,OAAG,gBAAM,SAAQ;AAAA,KACpB;AAEJ;AAOA,SAAS,UAAU,OAAuB;AACxC,QAAM,EAAE,IAAI,WAAW,IAAI;AAC3B,MAAI,CAAC,WAAW,EAAE;AAAG,WAAO;AAC5B,SACE,oBAAC,QACC,2CACG;AAAA;AAAA,IAAG;AAAA,IAAG,WAAW,EAAE;AAAA,KACtB,GACF;AAEJ;AAOO,SAAS,kBAAkB,OAA+B;AAC/D,QAAM,EAAE,YAAY,MAAM,IAAI;AAE9B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,yBAAyB,MAAM;AACnC,kBAAc,CAAC,UAAU;AAAA,EAC3B;AAEA,SACE,qBAAC,SAAI,WAAW,GAAG,uBAAQ,OAAO,GAChC;AAAA,yBAAC,WAAM,SAAS,wBAAwB;AAAA;AAAA,MAEtC,oBAAC,OAAE,WAAW,GAAG,EAAE,CAAC,uBAAQ,MAAM,GAAG,WAAW,CAAC,GAC9C,uBAAa,MAAM,KACtB;AAAA,OACF;AAAA,IACC,cACC,qBAAC,SAAI,WAAW,uBAAQ,eACtB;AAAA,2BAAC,SAAI,WAAW,uBAAQ,YACtB;AAAA,4BAAC,aAAU,YAAwB,IAAG,MAAK;AAAA,QAC3C,oBAAC,aAAU,YAAwB,IAAG,QAAO;AAAA,SAC/C;AAAA,MACA,oBAAC,QAAG,WAAW,GAAG,uBAAQ,QAAQ,EAAE,CAAC,uBAAQ,MAAM,GAAG,WAAW,CAAC,GAC/D,gBAAM,OAAO,IAAI,CAAC,UACjB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA;AAAA,QADK,GAAG,MAAM,QAAQ,MAAM,KAAK,KAAK,GAAG;AAAA,MAE3C,CACD,GACH;AAAA,OACF;AAAA,KAEJ;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../src/Controller/Invalid.tsx","../src/Controller/Invalid.module.scss"],"sourcesContent":["import { useState } from \"react\"\nimport { FxParamDefinition, FxParamType } from \"../types\"\nimport { ZodError, ZodIssue } from \"zod\"\nimport classes from \"./Invalid.module.scss\"\nimport cx from \"classnames\"\n\ninterface IssueProps {\n issue: ZodIssue\n}\n\nfunction Issue(props: IssueProps) {\n const { issue } = props\n return (\n <li className={classes.issue}>\n <h3>\n {issue.code} at {issue.path.join(\".\")}\n </h3>\n <p>{issue.message}</p>\n </li>\n )\n}\n\ninterface AttributeProps {\n id: keyof FxParamDefinition<FxParamType>\n definition: FxParamDefinition<FxParamType>\n}\n\nfunction Attribute(props: AttributeProps) {\n const { id, definition } = props\n if (!definition[id]) return null\n return (\n <h4>\n <>\n {id}: {definition[id]}\n </>\n </h4>\n )\n}\n\nexport interface ControllerInvalidProps {\n definition: FxParamDefinition<FxParamType>\n error: ZodError\n}\n\nexport function ControllerInvalid(props: ControllerInvalidProps) {\n const { definition, error } = props\n\n const [showIssues, setShowIssues] = useState(false)\n\n const handleToggleShowIssues = () => {\n setShowIssues(!showIssues)\n }\n\n return (\n <div className={cx(classes.invalid)}>\n <label onClick={handleToggleShowIssues}>\n Invalid parameter definition\n <i className={cx({ [classes.isOpen]: showIssues })}>\n {showIssues ? \"-\" : \"+\"}\n </i>\n </label>\n {showIssues && (\n <div className={classes.errorsWrapper}>\n <div className={classes.attributes}>\n <Attribute definition={definition} id=\"id\" />\n <Attribute definition={definition} id=\"name\" />\n </div>\n <ul className={cx(classes.issues, { [classes.isOpen]: showIssues })}>\n {error.issues.map(issue => (\n <Issue\n key={`${issue.code}-${issue.path.join(\"-\")}`}\n issue={issue}\n />\n ))}\n </ul>\n </div>\n )}\n </div>\n )\n}\n","import 'css-chunk:src/Controller/Invalid.module.scss';export default {\n \"invalid\": \"_invalid_u8v12_1\",\n \"isOpen\": \"_isOpen_u8v12_30\",\n \"errorsWrapper\": \"_errorsWrapper_u8v12_34\",\n \"attributes\": \"_attributes_u8v12_40\",\n \"issue\": \"_issue_u8v12_44\"\n};"],"mappings":";AAAA,SAAS,gBAAgB;;;ACA6B,IAAO,yBAAQ;AAAA,EACnE,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,SAAS;AACX;;;ADFA,OAAO,QAAQ;AAUT,SAkBA,UAfA,KAHA;AAJN,SAAS,MAAM,OAAmB;AAChC,QAAM,EAAE,MAAM,IAAI;AAClB,SACE,qBAAC,QAAG,WAAW,uBAAQ,OACrB;AAAA,yBAAC,QACE;AAAA,YAAM;AAAA,MAAK;AAAA,MAAK,MAAM,KAAK,KAAK,GAAG;AAAA,OACtC;AAAA,IACA,oBAAC,OAAG,gBAAM,SAAQ;AAAA,KACpB;AAEJ;AAOA,SAAS,UAAU,OAAuB;AACxC,QAAM,EAAE,IAAI,WAAW,IAAI;AAC3B,MAAI,CAAC,WAAW,EAAE;AAAG,WAAO;AAC5B,SACE,oBAAC,QACC,2CACG;AAAA;AAAA,IAAG;AAAA,IAAG,WAAW,EAAE;AAAA,KACtB,GACF;AAEJ;AAOO,SAAS,kBAAkB,OAA+B;AAC/D,QAAM,EAAE,YAAY,MAAM,IAAI;AAE9B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,yBAAyB,MAAM;AACnC,kBAAc,CAAC,UAAU;AAAA,EAC3B;AAEA,SACE,qBAAC,SAAI,WAAW,GAAG,uBAAQ,OAAO,GAChC;AAAA,yBAAC,WAAM,SAAS,wBAAwB;AAAA;AAAA,MAEtC,oBAAC,OAAE,WAAW,GAAG,EAAE,CAAC,uBAAQ,MAAM,GAAG,WAAW,CAAC,GAC9C,uBAAa,MAAM,KACtB;AAAA,OACF;AAAA,IACC,cACC,qBAAC,SAAI,WAAW,uBAAQ,eACtB;AAAA,2BAAC,SAAI,WAAW,uBAAQ,YACtB;AAAA,4BAAC,aAAU,YAAwB,IAAG,MAAK;AAAA,QAC3C,oBAAC,aAAU,YAAwB,IAAG,QAAO;AAAA,SAC/C;AAAA,MACA,oBAAC,QAAG,WAAW,GAAG,uBAAQ,QAAQ,EAAE,CAAC,uBAAQ,MAAM,GAAG,WAAW,CAAC,GAC/D,gBAAM,OAAO,IAAI,WAChB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA;AAAA,QADK,GAAG,MAAM,QAAQ,MAAM,KAAK,KAAK,GAAG;AAAA,MAE3C,CACD,GACH;AAAA,OACF;AAAA,KAEJ;AAEJ;","names":[]}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  Controller_module_default,
3
3
  HTMLInputControllerWithTextInput
4
- } from "./chunk-CE3TPOSO.js";
4
+ } from "./chunk-2SARESCF.js";
5
5
  import {
6
6
  MAX_SAFE_INT64,
7
7
  MIN_SAFE_INT64
8
- } from "./chunk-FZWZHHQ2.js";
8
+ } from "./chunk-7H32FZ35.js";
9
9
 
10
10
  // src/Controller/BigInt.tsx
11
11
  import { useMemo } from "react";
@@ -43,4 +43,4 @@ function BigIntController(props) {
43
43
  export {
44
44
  BigIntController
45
45
  };
46
- //# sourceMappingURL=chunk-P77D7XSP.js.map
46
+ //# sourceMappingURL=chunk-GXCX5YCI.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  Controller
3
- } from "./chunk-CE3TPOSO.js";
3
+ } from "./chunk-2SARESCF.js";
4
4
 
5
5
  // src/Controller/Bytes.tsx
6
6
  import { useMemo } from "react";
7
7
 
8
8
  // src/Controller/Bytes.module.scss
9
9
  var Bytes_module_default = {
10
- "root": "_root_1qszq_1"
10
+ "root": "_root_sy7al_1"
11
11
  };
12
12
 
13
13
  // src/Controller/Bytes.tsx
@@ -36,4 +36,4 @@ function BytesController(props) {
36
36
  export {
37
37
  BytesController
38
38
  };
39
- //# sourceMappingURL=chunk-2QIAF3U7.js.map
39
+ //# sourceMappingURL=chunk-HIC6NEI2.js.map
@@ -1 +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":[]}
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_sy7al_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":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  jsonStringifyBigint,
3
3
  sumBytesParams
4
- } from "./chunk-FZWZHHQ2.js";
4
+ } from "./chunk-7H32FZ35.js";
5
5
 
6
6
  // src/RuntimeContext.tsx
7
7
  import { useMemo, useState } from "react";
@@ -112,4 +112,4 @@ export {
112
112
  RuntimeContext,
113
113
  RuntimeProvider
114
114
  };
115
- //# sourceMappingURL=chunk-Z7K2LNS2.js.map
115
+ //# sourceMappingURL=chunk-JSFJKANM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/RuntimeContext.tsx"],"sourcesContent":["import { FxParamDefinition, FxParamType, FxParamsData } from \"types\"\nimport { PropsWithChildren, useMemo, useState } from \"react\"\nimport { createContext } from \"react\"\nimport sha1 from \"sha1\"\nimport { jsonStringifyBigint, sumBytesParams } from \"utils\"\n\nexport type TUpdateStateFn<T> = (data: Partial<T>) => void\n\nexport type TUpdateableState<T> = T & {\n update: TUpdateStateFn<T>\n}\n/**\n * The Runtime Context is responsible for managing the state of a project ran\n * in a frame. It centralizes any source of data to derive the project and\n * facilitate their manipulation from the outside.\n *\n * See comments on IRuntimeContext for more details.\n */\n\nexport type TExecutionContext = \"minting\" | \"standalone\" | \"capture\"\n\nexport interface RuntimeState {\n hash: string\n minter: string\n params: FxParamsData\n iteration: number\n context: TExecutionContext\n}\n\nexport interface RuntimeDefinition {\n params: FxParamDefinition<FxParamType>[] | null\n version: string | null\n}\n\n/**\n * Hashes a runtime state using sha1\n */\nfunction hashRuntimeState(state: RuntimeState): string {\n return sha1(jsonStringifyBigint(state))\n}\n\n/**\n * Hashes the hard-refresh properties of a runtime state:\n * - hash\n * - minter address\n * - params in update mode \"page-reload\"\n */\nfunction hashRuntimeHardState(\n state: RuntimeState,\n definition: FxParamDefinition<FxParamType>[] | null\n): string {\n const staticParams: FxParamsData = {}\n for (const id in state.params) {\n const def = definition?.find(def => def.id === id)\n // if no definition, or update == \"page-reload\" (which is default value)\n if (!def || !def.update || def.update === \"page-reload\") {\n staticParams[id] = state.params[id]\n }\n }\n return hashRuntimeState({\n ...state,\n params: staticParams,\n })\n}\n\nexport interface IRuntimeContext {\n // the base state of the runtime\n state: TUpdateableState<RuntimeState>\n // definitions, used to manipulate the state\n definition: TUpdateableState<RuntimeDefinition>\n // extra details derived from the state & definition\n details: {\n paramsByteSize: number\n stateHash: {\n soft: string\n hard: string\n }\n }\n}\n\nconst defaultRuntimeContext: IRuntimeContext = {\n state: {\n hash: \"\",\n minter: \"\",\n params: {},\n update: () => {},\n iteration: 1,\n context: \"standalone\",\n },\n definition: {\n params: null,\n version: null,\n update: () => {},\n },\n details: {\n paramsByteSize: 0,\n stateHash: {\n soft: \"\",\n hard: \"\",\n },\n },\n}\n\nexport const RuntimeContext = createContext(defaultRuntimeContext)\n\ntype Props = PropsWithChildren<any>\nexport function RuntimeProvider({ children }: Props) {\n const [state, setState] = useState<RuntimeState>({\n hash: \"\",\n minter: \"\",\n params: {},\n iteration: 1,\n context:\n (new URLSearchParams(window.location.search).get(\n \"fxcontext\"\n ) as TExecutionContext) || \"standalone\",\n })\n const [definition, setDefinition] = useState<RuntimeDefinition>({\n params: null,\n version: null,\n })\n\n const update: TUpdateStateFn<RuntimeState> = data => {\n setState(lastState => ({\n ...lastState,\n ...data,\n }))\n }\n\n const updateDefinition: TUpdateStateFn<RuntimeDefinition> = data => {\n setDefinition(lastDefinition => ({\n ...lastDefinition,\n ...data,\n }))\n }\n\n // enhance each param definition with the version (useful for serialization)\n const definitionEnhanced = useMemo(\n () => ({\n ...definition,\n params:\n definition.params?.map((p: FxParamDefinition<FxParamType>) => ({\n ...p,\n version: definition.version || \"0\",\n })) || null,\n }),\n [definition]\n )\n\n const ctx: IRuntimeContext = {\n state: {\n ...state,\n update,\n },\n definition: {\n ...definitionEnhanced,\n update: updateDefinition,\n },\n details: useMemo(\n () => ({\n paramsByteSize: sumBytesParams(definition.params || []),\n stateHash: {\n soft: hashRuntimeState(state),\n hard: hashRuntimeHardState(state, definition.params),\n },\n }),\n [state, definition.params]\n ),\n }\n\n return (\n <RuntimeContext.Provider value={ctx}>{children}</RuntimeContext.Provider>\n )\n}\n"],"mappings":";;;;;;AACA,SAA4B,SAAS,gBAAgB;AACrD,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAwKb;AAtIJ,SAAS,iBAAiB,OAA6B;AACrD,SAAO,KAAK,oBAAoB,KAAK,CAAC;AACxC;AAQA,SAAS,qBACP,OACA,YACQ;AACR,QAAM,eAA6B,CAAC;AACpC,aAAW,MAAM,MAAM,QAAQ;AAC7B,UAAM,MAAM,YAAY,KAAK,CAAAA,SAAOA,KAAI,OAAO,EAAE;AAEjD,QAAI,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,WAAW,eAAe;AACvD,mBAAa,EAAE,IAAI,MAAM,OAAO,EAAE;AAAA,IACpC;AAAA,EACF;AACA,SAAO,iBAAiB;AAAA,IACtB,GAAG;AAAA,IACH,QAAQ;AAAA,EACV,CAAC;AACH;AAiBA,IAAM,wBAAyC;AAAA,EAC7C,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,QAAQ,MAAM;AAAA,IAAC;AAAA,IACf,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ,MAAM;AAAA,IAAC;AAAA,EACjB;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,cAAc,qBAAqB;AAG1D,SAAS,gBAAgB,EAAE,SAAS,GAAU;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB;AAAA,IAC/C,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,WAAW;AAAA,IACX,SACG,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAAA,MAC3C;AAAA,IACF,KAA2B;AAAA,EAC/B,CAAC;AACD,QAAM,CAAC,YAAY,aAAa,IAAI,SAA4B;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,CAAC;AAED,QAAM,SAAuC,UAAQ;AACnD,aAAS,gBAAc;AAAA,MACrB,GAAG;AAAA,MACH,GAAG;AAAA,IACL,EAAE;AAAA,EACJ;AAEA,QAAM,mBAAsD,UAAQ;AAClE,kBAAc,qBAAmB;AAAA,MAC/B,GAAG;AAAA,MACH,GAAG;AAAA,IACL,EAAE;AAAA,EACJ;AAGA,QAAM,qBAAqB;AAAA,IACzB,OAAO;AAAA,MACL,GAAG;AAAA,MACH,QACE,WAAW,QAAQ,IAAI,CAAC,OAAuC;AAAA,QAC7D,GAAG;AAAA,QACH,SAAS,WAAW,WAAW;AAAA,MACjC,EAAE,KAAK;AAAA,IACX;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,MAAuB;AAAA,IAC3B,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,QACL,gBAAgB,eAAe,WAAW,UAAU,CAAC,CAAC;AAAA,QACtD,WAAW;AAAA,UACT,MAAM,iBAAiB,KAAK;AAAA,UAC5B,MAAM,qBAAqB,OAAO,WAAW,MAAM;AAAA,QACrD;AAAA,MACF;AAAA,MACA,CAAC,OAAO,WAAW,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,SACE,oBAAC,eAAe,UAAf,EAAwB,OAAO,KAAM,UAAS;AAEnD;","names":["def"]}
@@ -1,6 +1,6 @@
1
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
2
 
3
- var _chunkHJBHIE5Tcjs = require('./chunk-HJBHIE5T.cjs');
3
+ var _chunkM7HJ2CKMcjs = require('./chunk-M7HJ2CKM.cjs');
4
4
 
5
5
  // src/Controller/String.tsx
6
6
  var _jsxruntime = require('react/jsx-runtime');
@@ -9,7 +9,7 @@ function StringController(props) {
9
9
  const minLength = Number(_optionalChain([options, 'optionalAccess', _ => _.minLength])) || 0;
10
10
  const maxLength = Number(_optionalChain([options, 'optionalAccess', _2 => _2.maxLength])) || 64;
11
11
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12
- _chunkHJBHIE5Tcjs.HTMLInputController,
12
+ _chunkM7HJ2CKMcjs.HTMLInputController,
13
13
  {
14
14
  type: "text",
15
15
  inputProps: { minLength, maxLength },
@@ -21,4 +21,4 @@ function StringController(props) {
21
21
 
22
22
 
23
23
  exports.StringController = StringController;
24
- //# sourceMappingURL=chunk-JAU4ONF2.cjs.map
24
+ //# sourceMappingURL=chunk-K22KNCGR.cjs.map
@@ -1,7 +1,7 @@
1
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
2
 
3
3
 
4
- var _chunkQDLMFMLLcjs = require('./chunk-QDLMFMLL.cjs');
4
+ var _chunkLVN3UGUHcjs = require('./chunk-LVN3UGUH.cjs');
5
5
 
6
6
  // src/RuntimeContext.tsx
7
7
  var _react = require('react');
@@ -9,7 +9,7 @@ var _react = require('react');
9
9
  var _sha1 = require('sha1'); var _sha12 = _interopRequireDefault(_sha1);
10
10
  var _jsxruntime = require('react/jsx-runtime');
11
11
  function hashRuntimeState(state) {
12
- return _sha12.default.call(void 0, _chunkQDLMFMLLcjs.jsonStringifyBigint.call(void 0, state));
12
+ return _sha12.default.call(void 0, _chunkLVN3UGUHcjs.jsonStringifyBigint.call(void 0, state));
13
13
  }
14
14
  function hashRuntimeHardState(state, definition) {
15
15
  const staticParams = {};
@@ -96,7 +96,7 @@ function RuntimeProvider({ children }) {
96
96
  },
97
97
  details: _react.useMemo.call(void 0,
98
98
  () => ({
99
- paramsByteSize: _chunkQDLMFMLLcjs.sumBytesParams.call(void 0, definition.params || []),
99
+ paramsByteSize: _chunkLVN3UGUHcjs.sumBytesParams.call(void 0, definition.params || []),
100
100
  stateHash: {
101
101
  soft: hashRuntimeState(state),
102
102
  hard: hashRuntimeHardState(state, definition.params)
@@ -112,4 +112,4 @@ function RuntimeProvider({ children }) {
112
112
 
113
113
 
114
114
  exports.RuntimeContext = RuntimeContext; exports.RuntimeProvider = RuntimeProvider;
115
- //# sourceMappingURL=chunk-LX23UR4X.cjs.map
115
+ //# sourceMappingURL=chunk-K6UPSPM5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/RuntimeContext.tsx"],"names":["def"],"mappings":";;;;;;AACA,SAA4B,SAAS,gBAAgB;AACrD,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAwKb;AAtIJ,SAAS,iBAAiB,OAA6B;AACrD,SAAO,KAAK,oBAAoB,KAAK,CAAC;AACxC;AAQA,SAAS,qBACP,OACA,YACQ;AACR,QAAM,eAA6B,CAAC;AACpC,aAAW,MAAM,MAAM,QAAQ;AAC7B,UAAM,MAAM,YAAY,KAAK,CAAAA,SAAOA,KAAI,OAAO,EAAE;AAEjD,QAAI,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,WAAW,eAAe;AACvD,mBAAa,EAAE,IAAI,MAAM,OAAO,EAAE;AAAA,IACpC;AAAA,EACF;AACA,SAAO,iBAAiB;AAAA,IACtB,GAAG;AAAA,IACH,QAAQ;AAAA,EACV,CAAC;AACH;AAiBA,IAAM,wBAAyC;AAAA,EAC7C,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,QAAQ,MAAM;AAAA,IAAC;AAAA,IACf,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ,MAAM;AAAA,IAAC;AAAA,EACjB;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,cAAc,qBAAqB;AAG1D,SAAS,gBAAgB,EAAE,SAAS,GAAU;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB;AAAA,IAC/C,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,WAAW;AAAA,IACX,SACG,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE;AAAA,MAC3C;AAAA,IACF,KAA2B;AAAA,EAC/B,CAAC;AACD,QAAM,CAAC,YAAY,aAAa,IAAI,SAA4B;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,CAAC;AAED,QAAM,SAAuC,UAAQ;AACnD,aAAS,gBAAc;AAAA,MACrB,GAAG;AAAA,MACH,GAAG;AAAA,IACL,EAAE;AAAA,EACJ;AAEA,QAAM,mBAAsD,UAAQ;AAClE,kBAAc,qBAAmB;AAAA,MAC/B,GAAG;AAAA,MACH,GAAG;AAAA,IACL,EAAE;AAAA,EACJ;AAGA,QAAM,qBAAqB;AAAA,IACzB,OAAO;AAAA,MACL,GAAG;AAAA,MACH,QACE,WAAW,QAAQ,IAAI,CAAC,OAAuC;AAAA,QAC7D,GAAG;AAAA,QACH,SAAS,WAAW,WAAW;AAAA,MACjC,EAAE,KAAK;AAAA,IACX;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,MAAuB;AAAA,IAC3B,OAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,QACL,gBAAgB,eAAe,WAAW,UAAU,CAAC,CAAC;AAAA,QACtD,WAAW;AAAA,UACT,MAAM,iBAAiB,KAAK;AAAA,UAC5B,MAAM,qBAAqB,OAAO,WAAW,MAAM;AAAA,QACrD;AAAA,MACF;AAAA,MACA,CAAC,OAAO,WAAW,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,SACE,oBAAC,eAAe,UAAf,EAAwB,OAAO,KAAM,UAAS;AAEnD","sourcesContent":["import { FxParamDefinition, FxParamType, FxParamsData } from \"types\"\nimport { PropsWithChildren, useMemo, useState } from \"react\"\nimport { createContext } from \"react\"\nimport sha1 from \"sha1\"\nimport { jsonStringifyBigint, sumBytesParams } from \"utils\"\n\nexport type TUpdateStateFn<T> = (data: Partial<T>) => void\n\nexport type TUpdateableState<T> = T & {\n update: TUpdateStateFn<T>\n}\n/**\n * The Runtime Context is responsible for managing the state of a project ran\n * in a frame. It centralizes any source of data to derive the project and\n * facilitate their manipulation from the outside.\n *\n * See comments on IRuntimeContext for more details.\n */\n\nexport type TExecutionContext = \"minting\" | \"standalone\" | \"capture\"\n\nexport interface RuntimeState {\n hash: string\n minter: string\n params: FxParamsData\n iteration: number\n context: TExecutionContext\n}\n\nexport interface RuntimeDefinition {\n params: FxParamDefinition<FxParamType>[] | null\n version: string | null\n}\n\n/**\n * Hashes a runtime state using sha1\n */\nfunction hashRuntimeState(state: RuntimeState): string {\n return sha1(jsonStringifyBigint(state))\n}\n\n/**\n * Hashes the hard-refresh properties of a runtime state:\n * - hash\n * - minter address\n * - params in update mode \"page-reload\"\n */\nfunction hashRuntimeHardState(\n state: RuntimeState,\n definition: FxParamDefinition<FxParamType>[] | null\n): string {\n const staticParams: FxParamsData = {}\n for (const id in state.params) {\n const def = definition?.find(def => def.id === id)\n // if no definition, or update == \"page-reload\" (which is default value)\n if (!def || !def.update || def.update === \"page-reload\") {\n staticParams[id] = state.params[id]\n }\n }\n return hashRuntimeState({\n ...state,\n params: staticParams,\n })\n}\n\nexport interface IRuntimeContext {\n // the base state of the runtime\n state: TUpdateableState<RuntimeState>\n // definitions, used to manipulate the state\n definition: TUpdateableState<RuntimeDefinition>\n // extra details derived from the state & definition\n details: {\n paramsByteSize: number\n stateHash: {\n soft: string\n hard: string\n }\n }\n}\n\nconst defaultRuntimeContext: IRuntimeContext = {\n state: {\n hash: \"\",\n minter: \"\",\n params: {},\n update: () => {},\n iteration: 1,\n context: \"standalone\",\n },\n definition: {\n params: null,\n version: null,\n update: () => {},\n },\n details: {\n paramsByteSize: 0,\n stateHash: {\n soft: \"\",\n hard: \"\",\n },\n },\n}\n\nexport const RuntimeContext = createContext(defaultRuntimeContext)\n\ntype Props = PropsWithChildren<any>\nexport function RuntimeProvider({ children }: Props) {\n const [state, setState] = useState<RuntimeState>({\n hash: \"\",\n minter: \"\",\n params: {},\n iteration: 1,\n context:\n (new URLSearchParams(window.location.search).get(\n \"fxcontext\"\n ) as TExecutionContext) || \"standalone\",\n })\n const [definition, setDefinition] = useState<RuntimeDefinition>({\n params: null,\n version: null,\n })\n\n const update: TUpdateStateFn<RuntimeState> = data => {\n setState(lastState => ({\n ...lastState,\n ...data,\n }))\n }\n\n const updateDefinition: TUpdateStateFn<RuntimeDefinition> = data => {\n setDefinition(lastDefinition => ({\n ...lastDefinition,\n ...data,\n }))\n }\n\n // enhance each param definition with the version (useful for serialization)\n const definitionEnhanced = useMemo(\n () => ({\n ...definition,\n params:\n definition.params?.map((p: FxParamDefinition<FxParamType>) => ({\n ...p,\n version: definition.version || \"0\",\n })) || null,\n }),\n [definition]\n )\n\n const ctx: IRuntimeContext = {\n state: {\n ...state,\n update,\n },\n definition: {\n ...definitionEnhanced,\n update: updateDefinition,\n },\n details: useMemo(\n () => ({\n paramsByteSize: sumBytesParams(definition.params || []),\n stateHash: {\n soft: hashRuntimeState(state),\n hard: hashRuntimeHardState(state, definition.params),\n },\n }),\n [state, definition.params]\n ),\n }\n\n return (\n <RuntimeContext.Provider value={ctx}>{children}</RuntimeContext.Provider>\n )\n}\n"]}
@@ -1,7 +1,7 @@
1
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
2
 
3
3
 
4
- var _chunkHJBHIE5Tcjs = require('./chunk-HJBHIE5T.cjs');
4
+ var _chunkM7HJ2CKMcjs = require('./chunk-M7HJ2CKM.cjs');
5
5
 
6
6
  // src/Controller/Number.tsx
7
7
  var _react = require('react');
@@ -21,7 +21,7 @@ function NumberController(props) {
21
21
  const step = _optionalChain([options, 'optionalAccess', _5 => _5.step]) || 1;
22
22
  const stringValue = `${value}`;
23
23
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24
- _chunkHJBHIE5Tcjs.HTMLInputControllerWithTextInput,
24
+ _chunkM7HJ2CKMcjs.HTMLInputControllerWithTextInput,
25
25
  {
26
26
  type: "range",
27
27
  inputProps: { min, max, step },
@@ -30,7 +30,7 @@ function NumberController(props) {
30
30
  min,
31
31
  max,
32
32
  step,
33
- className: _chunkHJBHIE5Tcjs.Controller_module_default.numberInput
33
+ className: _chunkM7HJ2CKMcjs.Controller_module_default.numberInput
34
34
  },
35
35
  ...props,
36
36
  value: stringValue
@@ -41,4 +41,4 @@ function NumberController(props) {
41
41
 
42
42
 
43
43
  exports.NumberController = NumberController;
44
- //# sourceMappingURL=chunk-TKKYM77A.cjs.map
44
+ //# sourceMappingURL=chunk-LTIGECX6.cjs.map
@@ -308,7 +308,10 @@ function deserializeParams(bytes, definition, options) {
308
308
  const bytesLen = processor.bytesLength(def);
309
309
  const valueBytes = bytes.substring(0, bytesLen * 2);
310
310
  bytes = bytes.substring(bytesLen * 2);
311
- const val = processor.deserialize(valueBytes, def);
311
+ const val = processor.deserialize(
312
+ valueBytes,
313
+ def
314
+ );
312
315
  params[def.id] = transformer ? transformer(val, def) : val;
313
316
  }
314
317
  return params;
@@ -335,12 +338,15 @@ function consolidateParams(params, data) {
335
338
  return rtn;
336
339
  }
337
340
  function getRandomParamValues(params, options) {
338
- return params.reduce((acc, definition) => {
339
- const processor = ParameterProcessors[definition.type];
340
- const v = processor.random(definition);
341
- acc[definition.id] = _optionalChain([options, 'optionalAccess', _50 => _50.noTransform]) ? v : _optionalChain([processor, 'access', _51 => _51.transform, 'optionalCall', _52 => _52(v)]) || v;
342
- return acc;
343
- }, {});
341
+ return params.reduce(
342
+ (acc, definition) => {
343
+ const processor = ParameterProcessors[definition.type];
344
+ const v = processor.random(definition);
345
+ acc[definition.id] = _optionalChain([options, 'optionalAccess', _50 => _50.noTransform]) ? v : _optionalChain([processor, 'access', _51 => _51.transform, 'optionalCall', _52 => _52(v)]) || v;
346
+ return acc;
347
+ },
348
+ {}
349
+ );
344
350
  }
345
351
  function sumBytesParams(definitions) {
346
352
  return _optionalChain([definitions, 'optionalAccess', _53 => _53.reduce, 'call', _54 => _54(
@@ -395,4 +401,4 @@ var processParams = (values, definitions, transformType) => {
395
401
 
396
402
 
397
403
  exports.rgbaToHex = rgbaToHex; exports.hexToRgba = hexToRgba; exports.MIN_SAFE_INT64 = MIN_SAFE_INT64; exports.MAX_SAFE_INT64 = MAX_SAFE_INT64; exports.ParameterProcessors = ParameterProcessors; exports.serializeParams = serializeParams; exports.deserializeParams = deserializeParams; exports.consolidateParams = consolidateParams; exports.getRandomParamValues = getRandomParamValues; exports.sumBytesParams = sumBytesParams; exports.stringifyParamsData = stringifyParamsData; exports.jsonStringifyBigint = jsonStringifyBigint; exports.processParam = processParam; exports.processParams = processParams;
398
- //# sourceMappingURL=chunk-QDLMFMLL.cjs.map
404
+ //# sourceMappingURL=chunk-LVN3UGUH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":["hex"],"mappings":";AAcO,SAAS,UAAU,GAAW,GAAW,GAAW,GAAmB;AAC5E,QAAM,WAAW;AAAA,IACf,EAAE,SAAS,EAAE;AAAA,IACb,EAAE,SAAS,EAAE;AAAA,IACb,EAAE,SAAS,EAAE;AAAA,IACb,KAAK,MAAM,IAAI,GAAG,EACf,SAAS,EAAE,EACX,UAAU,GAAG,CAAC;AAAA,EACnB;AAGA,WAAS,QAAQ,SAAU,MAAM,GAAG;AAClC,QAAI,KAAK,WAAW,GAAG;AACrB,eAAS,CAAC,IAAI,MAAM;AAAA,IACtB;AAAA,EACF,CAAC;AAED,SAAO,MAAM,SAAS,KAAK,EAAE;AAC/B;AAEA,SAAS,iBAAiB,SAAqC;AAC7D,MAAI,MAAM,QAAQ,QAAQ,KAAK,EAAE;AACjC,MAAI,IAAI,WAAW,GAAG;AACpB,UAAM,GAAG;AAAA,EACX;AACA,MAAI,IAAI,WAAW,GAAG;AACpB,UAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,EAC7D;AACA,SAAO;AACT;AAEO,SAAS,UAAU,SAAoB;AAC5C,QAAM,MAAM,iBAAiB,OAAO;AAEpC,QAAM,IAAI,SAAS,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE;AAC1C,QAAM,IAAI,SAAS,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE;AAC1C,QAAM,IAAI,SAAS,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE;AAC1C,QAAM,IACJ,KAAK;AAAA,KACF,SAAS,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,MAAM,OAAO,WAAW;AAAA,EAC/D,IAAI;AAEN,SAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AACtB;AAEA,IAAM,cAAc,SAAU,GAAW;AACvC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,WAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EACrD;AACA,SAAO;AACT;AACA,IAAM,cAAc,SAAU,GAAW;AACvC,QAAM,KAAK,EAAE,MAAM,SAAS,KAAK,CAAC;AAClC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAClC,UAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;AAC9B,QAAI,QAAQ;AAAG;AACf,WAAO,OAAO,aAAa,GAAG;AAAA,EAChC;AACA,SAAO;AACT;AAEO,IAAM,iBAAiB,OAAO,sBAAsB;AACpD,IAAM,iBAAiB,OAAO,qBAAqB;AAEnD,IAAM,sBAAyC;AAAA,EACpD,QAAQ;AAAA,IACN,WAAW,WAAS;AAClB,YAAM,OAAO,IAAI,SAAS,IAAI,YAAY,CAAC,CAAC;AAC5C,WAAK,WAAW,GAAG,KAAK;AACxB,aAAO,KAAK,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAAA,IAC3D;AAAA,IACA,aAAa,WAAS;AACpB,YAAM,OAAO,IAAI,SAAS,IAAI,YAAY,CAAC,CAAC;AAC5C,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,aAAK,SAAS,GAAG,SAAS,MAAM,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAAA,MAClE;AACA,aAAO,KAAK,WAAW,CAAC;AAAA,IAC1B;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,WAAW,CAAC,OAAO,eAAe;AAChC,UAAI,MAAM,OAAO;AACjB,UAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,cAAM,OAAO,WAAW,QAAQ,GAAG;AACrC,UAAI,MAAM,OAAO;AACjB,UAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,cAAM,OAAO,WAAW,QAAQ,GAAG;AACrC,YAAM,KAAK,IAAI,KAAK,OAAO,gBAAgB;AAC3C,YAAM,KAAK,IAAI,KAAK,OAAO,gBAAgB;AAC3C,YAAM,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC5C,UAAI,YAAY,SAAS,MAAM;AAC7B,cAAM,IAAI,IAAM,YAAY,SAAS;AACrC,eAAO,KAAK,MAAM,IAAI,CAAC,IAAI;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,gBAAc;AACpB,UAAI,MAAM,OAAO;AACjB,UAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,cAAM,OAAO,WAAW,QAAQ,GAAG;AACrC,UAAI,MAAM,OAAO;AACjB,UAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,cAAM,OAAO,WAAW,QAAQ,GAAG;AACrC,YAAM,KAAK,IAAI,KAAK,OAAO,gBAAgB;AAC3C,YAAM,KAAK,IAAI,KAAK,OAAO,gBAAgB;AAC3C,YAAM,IAAI,KAAK,OAAO,KAAK,MAAM,OAAO;AACxC,UAAI,YAAY,SAAS,MAAM;AAC7B,cAAM,IAAI,IAAM,YAAY,SAAS;AACrC,eAAO,KAAK,MAAM,IAAI,CAAC,IAAI;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,WAAW,CAAC,UAAe;AACzB,YAAM,OAAO,IAAI,SAAS,IAAI,YAAY,CAAC,CAAC;AAC5C,WAAK,YAAY,GAAG,OAAO,KAAK,CAAC;AACjC,aAAO,KAAK,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAAA,IAC3D;AAAA,IACA,aAAa,CAAC,UAAe;AAC3B,YAAM,OAAO,IAAI,SAAS,IAAI,YAAY,CAAC,CAAC;AAC5C,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,aAAK,SAAS,GAAG,SAAS,MAAM,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAAA,MAClE;AACA,aAAO,KAAK,YAAY,CAAC;AAAA,IAC3B;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,QAAQ,gBAAc;AACpB,UAAI,MAAM;AACV,UAAI,MAAM;AACV,UAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,cAAM,OAAO,WAAW,QAAQ,GAAG;AACrC,UAAI,OAAO,WAAW,SAAS,QAAQ;AACrC,cAAM,OAAO,WAAW,QAAQ,GAAG;AACrC,YAAM,QAAQ,MAAM;AACpB,YAAM,OAAO,MAAM,SAAS,CAAC,EAAE;AAC/B,UAAI;AACJ,SAAG;AACD,iBAAS;AAAA,UACP,OACE,MAAM;AAAA,YACJ,OAAO,gBAAgB,IAAI,WAAW,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,UAC5D,EACG,IAAI,OAAK,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EACvC,KAAK,EAAE;AAAA,QACd;AAAA,MACF,SAAS,SAAS;AAClB,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,WAAW,WAAS;AAClB,aAAO,OAAO,UAAU,YACpB,QACE,OACA,OACF,OAAO,UAAU,WACf,UAAU,SACR,OACA,OACF;AAAA,IACR;AAAA,IACA,aAAa,WAAS;AACpB,aAAO,UAAU,OAAO,QAAQ;AAAA,IAClC;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,QAAQ,MAAM,KAAK,OAAO,IAAI;AAAA,EAChC;AAAA,EAEA,OAAO;AAAA,IACL,WAAW,CAAC,UAAkB;AAC5B,aAAO,iBAAiB,KAAK;AAAA,IAC/B;AAAA,IAEA,aAAa,CAAC,UAAqB;AACjC,aAAO;AAAA,IACT;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,WAAW,CAAC,UAAkB;AAC5B,YAAM,QAAQ,iBAAiB,KAAK;AACpC,YAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;AACxC,YAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;AACxC,YAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;AACxC,YAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;AACxC,aAAO;AAAA,QACL,KAAK;AAAA,UACH,KAAK,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,UAC3B,MAAM,MAAM;AAAA,QACd;AAAA,QACA,KAAK;AAAA,UACH,KAAK,EAAE,GAAG,GAAG,EAAE;AAAA,UACf,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,QACrB;AAAA,QACA,KAAK;AAAA,UACH,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,UACb,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,WAAS;AAClB,YAAM,MAAM,MAAM,QAAQ,KAAK,EAAE;AACjC,aAAO,IAAI,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG;AAAA,IACtC;AAAA,IACA,QAAQ,MACN,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,EACZ,IAAI,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EACrD,KAAK,EAAE;AAAA,EACd;AAAA,EAEA,QAAQ;AAAA,IACN,WAAW,CAAC,OAAO,QAAQ;AACzB,UAAI,CAAC,IAAI,SAAS;AAChB,YAAIA,OAAM,YAAY,MAAM,UAAU,GAAG,EAAE,CAAC;AAC5C,QAAAA,OAAMA,KAAI,OAAO,KAAK,GAAG,GAAG;AAC5B,eAAOA;AAAA,MACT;AACA,UAAI,MAAM;AACV,UAAI,OAAO,IAAI,SAAS,cAAc;AACpC,cAAM,OAAO,IAAI,QAAQ,SAAS;AACpC,UAAI,MAAM,YAAY,MAAM,UAAU,GAAG,GAAG,CAAC;AAC7C,YAAM,IAAI,OAAO,MAAM,GAAG,GAAG;AAC7B,aAAO;AAAA,IACT;AAAA,IACA,aAAa,WAAS;AACpB,aAAO,YAAY,KAAK;AAAA,IAC1B;AAAA,IAEA,aAAa,SAAO;AAClB,UAAI,CAAC,IAAI,SAAS;AAChB,eAAO,KAAK;AAAA,MACd;AACA,UAAI,OAAO,IAAI,SAAS,cAAc;AACpC,eAAO,OAAO,IAAI,QAAQ,SAAS,IAAI;AACzC,aAAO,KAAK;AAAA,IACd;AAAA,IACA,QAAQ,gBAAc;AACpB,UAAI,MAAM;AACV,UAAI,OAAO,WAAW,SAAS,cAAc;AAC3C,cAAM,WAAW,QAAQ;AAC3B,UAAI,MAAM;AACV,UAAI,OAAO,WAAW,SAAS,cAAc;AAC3C,cAAM,WAAW,QAAQ;AAC3B,YAAM,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO,GAAG;AAC3D,aAAO,CAAC,GAAG,MAAM,MAAM,CAAC,EACrB,IAAI,QAAM,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC,EAC9C,KAAK,EAAE;AAAA,IACZ;AAAA,IACA,WAAW,CAAC,OAAO,eAAe;AAChC,UAAI,MAAM;AACV,UAAI,OAAO,WAAW,SAAS,cAAc;AAC3C,cAAM,WAAW,QAAQ;AAC3B,UAAI,MAAM;AACV,UAAI,OAAO,WAAW,SAAS,cAAc;AAC3C,cAAM,WAAW,QAAQ;AAC3B,YAAM,IAAI,MAAM,MAAM,GAAG,GAAG;AAC5B,UAAI,EAAE,SAAS,KAAK;AAClB,eAAO,EAAE,OAAO,GAAG;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,WAAW,CAAC,OAAO,QAAQ;AACzB,aAAO,MAAM,KAAK,KAAK,EACpB,IAAI,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EACxC,KAAK,EAAE;AAAA,IACZ;AAAA,IACA,aAAa,CAAC,OAAO,QAAQ;AAC3B,YAAM,MAAM,MAAM,SAAS;AAC3B,YAAM,QAAQ,IAAI,WAAW,GAAG;AAChC,UAAI;AACJ,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAM,IAAI;AACV,cAAM,CAAC,IAAI,SAAS,GAAG,MAAM,GAAG,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE;AAAA,MAC1D;AACA,aAAO;AAAA,IACT;AAAA,IACA,aAAa,SAAO,IAAI,QAAQ;AAAA,IAChC,QAAQ,SAAO;AACb,YAAM,MAAM,IAAI,SAAS,UAAU;AACnC,YAAM,QAAQ,IAAI,WAAW,GAAG;AAChC,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAM,CAAC,IAAK,KAAK,OAAO,IAAI,MAAO;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN,WAAW,CAAC,OAAO,QAAQ;AAEzB,aAAO,KAAK,IAAI,KAAK,IAAI,SAAS,SAAS,QAAQ,KAAK,KAAK,CAAC,EAC3D,SAAS,EAAE,EACX,SAAS,GAAG,GAAG;AAAA,IACpB;AAAA,IAEA,aAAa,CAAC,OAAO,QAAQ;AAE3B,YAAM,MAAM,SAAS,OAAO,EAAE;AAC9B,aAAO,IAAI,SAAS,UAAU,GAAG,KAAK,IAAI,SAAS,UAAU,CAAC,KAAK;AAAA,IACrE;AAAA,IAEA,aAAa,MAAM;AAAA;AAAA,IACnB,WAAW,CAAC,OAAO,eAAe;AAChC,UAAI,WAAW,QAAQ,QAAQ,SAAS,KAAK,GAAG;AAC9C,eAAO;AAAA,MACT;AACA,aAAO,WAAW,QAAQ,QAAQ,CAAC;AAAA,IACrC;AAAA,IACA,QAAQ,gBAAc;AACpB,YAAM,QAAQ,KAAK;AAAA,QACjB,KAAK,OAAO,KAAK,WAAW,QAAQ,QAAQ,SAAS,KAAK;AAAA,MAC5D;AACA,aAAO,YAAY,SAAS,QAAQ,KAAK;AAAA,IAC3C;AAAA,EACF;AACF;AAIO,SAAS,gBACd,QACA,YACA;AAEA,MAAI,QAAQ;AACZ,MAAI,CAAC;AAAY,WAAO;AAGxB,aAAW,OAAO,YAAY;AAC5B,UAAM,EAAE,IAAI,KAAK,IAAI;AACrB,UAAM,YAAY,oBAChB,IACF;AAGA,UAAM,IAAI,OAAO,EAAE;AACnB,UAAM,MACJ,OAAO,MAAM,cACT,IACA,OAAO,IAAI,YAAY,cACrB,IAAI,UACJ,UAAU,OAAO,GAAG;AAC5B,UAAM,aAAa,UAAU,UAAU,KAAK,GAAG;AAC/C,aAAS;AAAA,EACX;AAEA,SAAO;AACT;AAKO,SAAS,kBACd,OACA,YACA,SACA;AACA,QAAM,SAGF,CAAC;AACL,aAAW,OAAO,YAAY;AAC5B,UAAM,YAAY,oBAChB,IAAI,IACN;AACA,UAAM,cACJ,QAAQ,iBACP,UACC,QAAQ,iBAAiB,WAC3B;AACF,QAAI,CAAC,OAAO;AACV,UAAI;AACJ,UAAI,OAAO,IAAI,YAAY;AAAa,YAAI,UAAU,OAAO,GAAG;AAAA;AAC3D,YAAI,IAAI;AACb,aAAO,IAAI,EAAE,IAAI,cAAc,YAAY,GAAG,GAAG,IAAI;AACrD;AAAA,IACF;AAEA,UAAM,WAAW,UAAU,YAAY,GAAG;AAC1C,UAAM,aAAa,MAAM,UAAU,GAAG,WAAW,CAAC;AAClD,YAAQ,MAAM,UAAU,WAAW,CAAC;AAEpC,UAAM,MAAM,UAAU;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AACA,WAAO,IAAI,EAAE,IAAI,cAAc,YAAY,KAAK,GAAG,IAAI;AAAA,EACzD;AACA,SAAO;AACT;AAIO,SAAS,kBAAkB,QAAa,MAAW;AACxD,MAAI,CAAC;AAAQ,WAAO,CAAC;AAErB,QAAM,MAAM,CAAC,GAAG,MAAM;AAEtB,aAAW,KAAK,KAAK;AACnB,UAAM,aAAa,IAAI,CAAC;AACxB,UAAM,EAAE,IAAI,MAAM,SAAS,IAAI,IAAI;AACnC,QAAI,QAAQ,KAAK,eAAe,EAAE,GAAG;AACnC,UAAI,CAAC,EAAE,QAAQ,KAAK,EAAE;AAAA,IACxB,OAAO;AACL,YAAM,YAAY,oBAChB,IACF;AACA,UAAI;AACJ,UAAI,OAAO,QAAQ;AAAa,YAAI,UAAU,OAAO,UAAU;AAAA;AAC1D,YAAI;AACT,UAAI,CAAC,EAAE,QAAQ,UAAU,YAAY,CAAC,KAAK;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,QACA,SACK;AACL,SAAO,OAAO;AAAA,IACZ,CAAC,KAAK,eAAe;AACnB,YAAM,YAAY,oBAChB,WAAW,IACb;AACA,YAAM,IAAI,UAAU,OAAO,UAAU;AACrC,UAAI,WAAW,EAAE,IAAI,SAAS,cAC1B,IACA,UAAU,YAAY,CAAC,KAAK;AAChC,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAEO,SAAS,eACd,aACQ;AACR,SACE,aAAa;AAAA,IACX,CAAC,KAAK,QACJ,MAEE,oBACE,IAAI,IACN,EACA,YAAY,GAAG;AAAA,IACnB;AAAA,EACF,KAAK;AAET;AAEO,SAAS,oBAAoB,MAAoB;AACtD,SAAO,KAAK,UAAU,MAAM,CAAC,KAAK,UAAU;AAC1C,QAAI,OAAO,UAAU;AAAU,aAAO,MAAM,SAAS;AACrD,WAAO;AAAA,EACT,CAAC;AACH;AAEO,SAAS,oBAAoB,MAAmB;AACrD,SAAO,KAAK,UAAU,MAAM,CAAC,KAAK,UAAU;AAC1C,QAAI,OAAO,UAAU;AAAU,aAAO,MAAM,SAAS;AACrD,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,eAAe,CAC1B,SACA,OACA,aACA,kBAC0E;AAC1E,QAAM,aAAa,YAAY,KAAK,OAAK,EAAE,OAAO,OAAO;AACzD,QAAM,YAAY,oBAAoB,WAAW,IAAI;AACrD,QAAM,cAAc,UAClB,aACF;AACA,SAAO,cAAc,OAAO,UAAU,KAAK;AAC7C;AAEO,IAAM,gBAAgB,CAC3B,QACA,aACA,kBACG;AACH,QAAM,cAAc,CAAC;AACrB,aAAW,cAAc,aAAa;AACpC,UAAM,YAAY,oBAAoB,WAAW,IAAI;AACrD,UAAM,QAAQ,OAAO,WAAW,EAAE;AAElC,UAAM,cAAc,UAClB,aACF;AACA,gBAAY,WAAW,EAAE,IAAI,cAAc,OAAO,UAAU,KAAK;AAAA,EACnE;AACA,SAAO;AACT","sourcesContent":["import {\n hexString,\n FxParamDefinition,\n FxParamProcessor,\n FxParamProcessors,\n FxParamTypeMap,\n FxParamType,\n FxParamsData,\n FxParamValue,\n FxParamTranformType,\n FxParamTransformationTypeMap,\n FxParamProcessorTransformer,\n} from \"./types\"\n\nexport function rgbaToHex(r: number, g: number, b: number, a: number): string {\n const outParts = [\n r.toString(16),\n g.toString(16),\n b.toString(16),\n Math.round(a * 255)\n .toString(16)\n .substring(0, 2),\n ]\n\n // Pad single-digit output values\n outParts.forEach(function (part, i) {\n if (part.length === 1) {\n outParts[i] = \"0\" + part\n }\n })\n\n return \"#\" + outParts.join(\"\")\n}\n\nfunction completeHexColor(hexCode: hexString | string): string {\n let hex = hexCode.replace(\"#\", \"\")\n if (hex.length === 6) {\n hex = `${hex}ff`\n }\n if (hex.length === 3) {\n hex = `${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}ff`\n }\n return hex\n}\n\nexport function hexToRgba(hexCode: hexString) {\n const hex = completeHexColor(hexCode)\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n const a =\n Math.round(\n (parseInt(hex.substring(6, 8), 16) / 255 + Number.EPSILON) * 100\n ) / 100\n\n return { r, g, b, a }\n}\n\nconst stringToHex = function (s: string) {\n let rtn = \"\"\n for (let i = 0; i < s.length; i++) {\n rtn += s.charCodeAt(i).toString(16).padStart(4, \"0\")\n }\n return rtn\n}\nconst hexToString = function (h: string) {\n const hx = h.match(/.{1,4}/g) || []\n let rtn = \"\"\n for (let i = 0; i < hx.length; i++) {\n const int = parseInt(hx[i], 16)\n if (int === 0) break\n rtn += String.fromCharCode(int)\n }\n return rtn\n}\n\nexport const MIN_SAFE_INT64 = BigInt(\"-9223372036854775808\")\nexport const MAX_SAFE_INT64 = BigInt(\"9223372036854775807\")\n\nexport const ParameterProcessors: FxParamProcessors = {\n number: {\n serialize: input => {\n const view = new DataView(new ArrayBuffer(8))\n view.setFloat64(0, input)\n return view.getBigUint64(0).toString(16).padStart(16, \"0\")\n },\n deserialize: input => {\n const view = new DataView(new ArrayBuffer(8))\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, parseInt(input.substring(i * 2, i * 2 + 2), 16))\n }\n return view.getFloat64(0)\n },\n bytesLength: () => 8,\n constrain: (value, definition) => {\n let min = Number.MIN_SAFE_INTEGER\n if (typeof definition.options?.min !== \"undefined\")\n min = Number(definition.options.min)\n let max = Number.MAX_SAFE_INTEGER\n if (typeof definition.options?.max !== \"undefined\")\n max = Number(definition.options.max)\n max = Math.min(max, Number.MAX_SAFE_INTEGER)\n min = Math.max(min, Number.MIN_SAFE_INTEGER)\n const v = Math.min(Math.max(value, min), max)\n if (definition?.options?.step) {\n const t = 1.0 / definition?.options?.step\n return Math.round(v * t) / t\n }\n return v\n },\n random: definition => {\n let min = Number.MIN_SAFE_INTEGER\n if (typeof definition.options?.min !== \"undefined\")\n min = Number(definition.options.min)\n let max = Number.MAX_SAFE_INTEGER\n if (typeof definition.options?.max !== \"undefined\")\n max = Number(definition.options.max)\n max = Math.min(max, Number.MAX_SAFE_INTEGER)\n min = Math.max(min, Number.MIN_SAFE_INTEGER)\n const v = Math.random() * (max - min) + min\n if (definition?.options?.step) {\n const t = 1.0 / definition?.options?.step\n return Math.round(v * t) / t\n }\n return v\n },\n },\n bigint: {\n serialize: (input: any) => {\n const view = new DataView(new ArrayBuffer(8))\n view.setBigInt64(0, BigInt(input))\n return view.getBigUint64(0).toString(16).padStart(16, \"0\")\n },\n deserialize: (input: any) => {\n const view = new DataView(new ArrayBuffer(8))\n for (let i = 0; i < 8; i++) {\n view.setUint8(i, parseInt(input.substring(i * 2, i * 2 + 2), 16))\n }\n return view.getBigInt64(0)\n },\n bytesLength: () => 8,\n random: definition => {\n let min = MIN_SAFE_INT64\n let max = MAX_SAFE_INT64\n if (typeof definition.options?.min !== \"undefined\")\n min = BigInt(definition.options.min)\n if (typeof definition.options?.max !== \"undefined\")\n max = BigInt(definition.options.max)\n const range = max - min\n const bits = range.toString(2).length\n let random\n do {\n random = BigInt(\n \"0b\" +\n Array.from(\n crypto.getRandomValues(new Uint8Array(Math.ceil(bits / 8)))\n )\n .map(b => b.toString(2).padStart(8, \"0\"))\n .join(\"\")\n )\n } while (random > range)\n return random + min\n },\n },\n boolean: {\n serialize: input => {\n return typeof input === \"boolean\"\n ? input\n ? \"01\"\n : \"00\"\n : typeof input === \"string\"\n ? input === \"true\"\n ? \"01\"\n : \"00\"\n : \"00\"\n },\n deserialize: input => {\n return input === \"00\" ? false : true\n },\n bytesLength: () => 1,\n random: () => Math.random() < 0.5,\n },\n\n color: {\n serialize: (input: string) => {\n return completeHexColor(input)\n },\n\n deserialize: (input): hexString => {\n return input as hexString\n },\n bytesLength: () => 4,\n transform: (input: string) => {\n const color = completeHexColor(input)\n const r = parseInt(color.slice(0, 2), 16)\n const g = parseInt(color.slice(2, 4), 16)\n const b = parseInt(color.slice(4, 6), 16)\n const a = parseInt(color.slice(6, 8), 16)\n return {\n hex: {\n rgb: \"#\" + input.slice(0, 6),\n rgba: \"#\" + input,\n },\n obj: {\n rgb: { r, g, b },\n rgba: { r, g, b, a },\n },\n arr: {\n rgb: [r, g, b],\n rgba: [r, g, b, a],\n },\n }\n },\n constrain: value => {\n const hex = value.replace(\"#\", \"\")\n return hex.slice(0, 8).padEnd(8, \"f\")\n },\n random: () =>\n `${[...Array(8)]\n .map(() => Math.floor(Math.random() * 16).toString(16))\n .join(\"\")}`,\n },\n\n string: {\n serialize: (input, def) => {\n if (!def.version) {\n let hex = stringToHex(input.substring(0, 64))\n hex = hex.padEnd(64 * 4, \"0\")\n return hex\n }\n let max = 64\n if (typeof def.options?.maxLength !== \"undefined\")\n max = Number(def.options.maxLength)\n let hex = stringToHex(input.substring(0, max))\n hex = hex.padEnd(max * 4, \"0\")\n return hex\n },\n deserialize: input => {\n return hexToString(input)\n },\n\n bytesLength: def => {\n if (!def.version) {\n return 64 * 2\n }\n if (typeof def.options?.maxLength !== \"undefined\")\n return Number(def.options.maxLength) * 2\n return 64 * 2\n },\n random: definition => {\n let min = 0\n if (typeof definition.options?.minLength !== \"undefined\")\n min = definition.options.minLength\n let max = 64\n if (typeof definition.options?.maxLength !== \"undefined\")\n max = definition.options.maxLength\n const length = Math.round(Math.random() * (max - min) + min)\n return [...Array(length)]\n .map(i => (~~(Math.random() * 36)).toString(36))\n .join(\"\")\n },\n constrain: (value, definition) => {\n let min = 0\n if (typeof definition.options?.minLength !== \"undefined\")\n min = definition.options.minLength\n let max = 64\n if (typeof definition.options?.maxLength !== \"undefined\")\n max = definition.options.maxLength\n const v = value.slice(0, max)\n if (v.length < min) {\n return v.padEnd(min)\n }\n return v\n },\n },\n\n bytes: {\n serialize: (input, def) => {\n return Array.from(input)\n .map(i => i.toString(16).padStart(2, \"0\"))\n .join(\"\")\n },\n deserialize: (input, def) => {\n const len = input.length / 2\n const uint8 = new Uint8Array(len)\n let idx\n for (let i = 0; i < len; i++) {\n idx = i * 2\n uint8[i] = parseInt(`${input[idx]}${input[idx + 1]}`, 16)\n }\n return uint8\n },\n bytesLength: def => def.options.length,\n random: def => {\n const len = def.options?.length || 0\n const uint8 = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n uint8[i] = (Math.random() * 255) | 0\n }\n return uint8\n },\n },\n\n select: {\n serialize: (input, def) => {\n // find the index of the input in the array of options\n return Math.min(255, def.options?.options?.indexOf(input) || 0)\n .toString(16)\n .padStart(2, \"0\")\n },\n\n deserialize: (input, def) => {\n // get the index, which is the input\n const idx = parseInt(input, 16)\n return def.options?.options?.[idx] || def.options?.options?.[0] || \"\"\n },\n\n bytesLength: () => 1, // index between 0 and 255\n constrain: (value, definition) => {\n if (definition.options.options.includes(value)) {\n return value\n }\n return definition.options.options[0]\n },\n random: definition => {\n const index = Math.round(\n Math.random() * (definition.options.options.length - 1) + 0\n )\n return definition?.options?.options[index]\n },\n },\n}\n\n// params are injected into the piece using the binary representation of the\n// numbers, to keep precision\nexport function serializeParams(\n params: any,\n definition: FxParamDefinition<any>[]\n) {\n // a single hex string will be used for all the params\n let bytes = \"\"\n if (!definition) return bytes\n // loop through each parameter from the definition to find the associated\n // parameter as set on the UI\n for (const def of definition) {\n const { id, type } = def\n const processor = ParameterProcessors[\n type as FxParamType\n ] as FxParamProcessor<any>\n // if the param is definined in the object\n\n const v = params[id] as FxParamTypeMap[]\n const val =\n typeof v !== \"undefined\"\n ? v\n : typeof def.default !== \"undefined\"\n ? def.default\n : processor.random(def)\n const serialized = processor.serialize(val, def)\n bytes += serialized\n }\n\n return bytes\n}\n\n// takes an array of bytes, in hexadecimal format, and a parametric space\n// definition and outputs an array of parameters, mapping the definition and\n// validating input based on the definition constraints\nexport function deserializeParams(\n bytes: string,\n definition: FxParamDefinition<FxParamType>[],\n options: { withTransform?: boolean; transformType?: FxParamTranformType }\n) {\n const params: Record<\n string,\n FxParamValue<FxParamType> | FxParamTransformationTypeMap[FxParamType]\n > = {}\n for (const def of definition) {\n const processor = ParameterProcessors[\n def.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n const transformer =\n options.withTransform &&\n (processor[\n options.transformType || \"transform\"\n ] as FxParamProcessorTransformer<FxParamType>)\n if (!bytes) {\n let v\n if (typeof def.default === \"undefined\") v = processor.random(def)\n else v = def.default\n params[def.id] = transformer ? transformer(v, def) : v\n continue\n }\n // extract the length from the bytes & shift the initial bytes string\n const bytesLen = processor.bytesLength(def)\n const valueBytes = bytes.substring(0, bytesLen * 2)\n bytes = bytes.substring(bytesLen * 2)\n // deserialize the bytes into the params\n const val = processor.deserialize(\n valueBytes,\n def\n ) as FxParamValue<FxParamType>\n params[def.id] = transformer ? transformer(val, def) : val\n }\n return params\n}\n\n// Consolidates parameters from both a params object provided by the token\n// and the dat object of params, which is stored by the controls component.\nexport function consolidateParams(params: any, data: any) {\n if (!params) return []\n\n const rtn = [...params]\n\n for (const p in rtn) {\n const definition = rtn[p]\n const { id, type, default: def } = definition\n if (data && data.hasOwnProperty(id)) {\n rtn[p].value = data[id]\n } else {\n const processor = ParameterProcessors[\n type as FxParamType\n ] as FxParamProcessor<any>\n let v\n if (typeof def === \"undefined\") v = processor.random(definition)\n else v = def\n rtn[p].value = processor.transform?.(v) || v\n }\n }\n\n return rtn\n}\n\nexport function getRandomParamValues(\n params: FxParamDefinition<FxParamType>[],\n options?: { noTransform: boolean }\n): any {\n return params.reduce(\n (acc, definition) => {\n const processor = ParameterProcessors[\n definition.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n const v = processor.random(definition) as FxParamType\n acc[definition.id] = options?.noTransform\n ? v\n : processor.transform?.(v) || v\n return acc\n },\n {} as Record<string, any>\n )\n}\n\nexport function sumBytesParams(\n definitions: FxParamDefinition<FxParamType>[]\n): number {\n return (\n definitions?.reduce(\n (acc, def) =>\n acc +\n (\n ParameterProcessors[\n def.type as FxParamType\n ] as FxParamProcessor<FxParamType>\n ).bytesLength(def),\n 0\n ) || 0\n )\n}\n\nexport function stringifyParamsData(data: FxParamsData) {\n return JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value\n })\n}\n\nexport function jsonStringifyBigint(data: any): string {\n return JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") return value.toString()\n return value\n })\n}\n\nexport const processParam = (\n paramId: string,\n value: FxParamValue<FxParamType>,\n definitions: FxParamDefinition<FxParamType>[],\n transformType: FxParamTranformType\n): FxParamValue<FxParamType> | FxParamTransformationTypeMap[FxParamType] => {\n const definition = definitions.find(d => d.id === paramId)\n const processor = ParameterProcessors[definition.type]\n const transformer = processor[\n transformType\n ] as FxParamProcessorTransformer<FxParamType>\n return transformer?.(value, definition) || value\n}\n\nexport const processParams = (\n values: FxParamsData,\n definitions: FxParamDefinition<FxParamType>[],\n transformType: FxParamTranformType\n) => {\n const paramValues = {}\n for (const definition of definitions) {\n const processor = ParameterProcessors[definition.type]\n const value = values[definition.id]\n // deserialize the bytes into the params\n const transformer = processor[\n transformType\n ] as FxParamProcessorTransformer<FxParamType>\n paramValues[definition.id] = transformer?.(value, definition) || value\n }\n return paramValues\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkOFUKQ2TBcjs = require('./chunk-OFUKQ2TB.cjs');
3
+ var _chunkCVLSVTCXcjs = require('./chunk-CVLSVTCX.cjs');
4
4
 
5
5
  // src/Controller/Controller.module.scss
6
6
  var Controller_module_default = {
7
- "controller": "_controller_1rjbl_1",
8
- "inputContainer": "_inputContainer_1rjbl_12",
9
- "default": "_default_1rjbl_18",
10
- "invert": "_invert_1rjbl_31",
11
- "box": "_box_1rjbl_44",
12
- "numberInput": "_numberInput_1rjbl_58"
7
+ "controller": "_controller_t5850_1",
8
+ "inputContainer": "_inputContainer_t5850_12",
9
+ "default": "_default_t5850_18",
10
+ "invert": "_invert_t5850_34",
11
+ "box": "_box_t5850_50",
12
+ "numberInput": "_numberInput_t5850_67"
13
13
  };
14
14
 
15
15
  // src/Controller/Controller.tsx
@@ -17,7 +17,7 @@ var _classnames = require('classnames'); var _classnames2 = _interopRequireDefau
17
17
  var _jsxruntime = require('react/jsx-runtime');
18
18
  function BaseParamsInput(props) {
19
19
  const { id } = props;
20
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFUKQ2TBcjs.BaseInput, { name: `${id}-params-search`, autoComplete: "off", ...props });
20
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCVLSVTCXcjs.BaseInput, { name: `${id}-params-search`, autoComplete: "off", ...props });
21
21
  }
22
22
  function Controller(props) {
23
23
  const {
@@ -132,4 +132,4 @@ function HTMLInputControllerWithTextInput(props) {
132
132
 
133
133
 
134
134
  exports.Controller_module_default = Controller_module_default; exports.BaseParamsInput = BaseParamsInput; exports.Controller = Controller; exports.HTMLInputController = HTMLInputController; exports.HTMLInputControllerWithTextInput = HTMLInputControllerWithTextInput;
135
- //# sourceMappingURL=chunk-HJBHIE5T.cjs.map
135
+ //# sourceMappingURL=chunk-M7HJ2CKM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Controller/Controller.module.scss","../src/Controller/Controller.tsx"],"names":[],"mappings":";;;;;AAAyD,IAAO,4BAAQ;AAAA,EACtE,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AAAA,EACP,eAAe;AACjB;;;ACCA,OAAO,QAAQ;AAWX,cA4BA,YA5BA;AAHG,SAAS,gBAAgB,OAA8C;AAC5E,QAAM,EAAE,GAAG,IAAI;AACf,SACE,oBAAC,aAAU,MAAM,GAAG,oBAAoB,cAAa,OAAO,GAAG,OAAO;AAE1E;AAgBO,SAAS,WAAW,OAAwB;AACjD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,0BAAQ,YAAY,0BAAQ,MAAM,GAAG,SAAS;AAAA,MAC5D,OACE,eACI,2FACA;AAAA,MAGL;AAAA,cAAM,oBAAC,WAAM,SAAS,IAAK,mBAAS,IAAG;AAAA,QACxC,oBAAC,SAAI,WAAW,0BAAQ,gBAAiB,GAAG,qBACzC,gBAAM,UACT;AAAA;AAAA;AAAA,EACF;AAEJ;AAuBO,SAAS,oBAAoB,OAAiC;AACnE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,EACF,IAAI;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACT,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAOO,SAAS,iCACd,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAa;AAAA,YACb,UAAU;AAAA,YACT,GAAG;AAAA;AAAA,QACN;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAI,QAAQ;AAAA,YACZ;AAAA,YACA;AAAA,YACA,cAAa;AAAA,YACb,UAAU;AAAA,YACT,GAAG;AAAA;AAAA,QACN;AAAA;AAAA;AAAA,EACF;AAEJ","sourcesContent":["import 'css-chunk:src/Controller/Controller.module.scss';export default {\n \"controller\": \"_controller_1rjbl_1\",\n \"inputContainer\": \"_inputContainer_1rjbl_12\",\n \"default\": \"_default_1rjbl_18\",\n \"invert\": \"_invert_1rjbl_31\",\n \"box\": \"_box_1rjbl_44\",\n \"numberInput\": \"_numberInput_1rjbl_58\"\n};","import {\n HTMLInputTypeAttribute,\n InputHTMLAttributes,\n ReactNode,\n RefObject,\n} from \"react\"\nimport { FxParamOptionsMap, FxParamType } from \"../types\"\nimport classes from \"./Controller.module.scss\"\nimport cx from \"classnames\"\nimport { BaseInput } from \"../BaseInput\"\n\n/*\n * Providing a name starting or ending with `search` prevents\n * 1Password extension to appear in the input fields\n * https://1password.community/discussion/comment/606453/#Comment_606453\n */\nexport function BaseParamsInput(props: InputHTMLAttributes<HTMLInputElement>) {\n const { id } = props\n return (\n <BaseInput name={`${id}-params-search`} autoComplete=\"off\" {...props} />\n )\n}\n\nexport type FxParamInputChangeHandler = (e: any) => void\n\nexport interface ControllerProps {\n label?: string\n id?: string\n children: ReactNode\n layout?: \"default\" | \"invert\" | \"box\"\n className?: string\n inputContainerProps?: {\n ref: RefObject<HTMLDivElement>\n }\n isCodeDriven?: boolean\n}\n\nexport function Controller(props: ControllerProps) {\n const {\n id,\n label,\n layout = \"default\",\n className,\n inputContainerProps,\n isCodeDriven,\n } = props\n return (\n <div\n className={cx(classes.controller, classes[layout], className)}\n title={\n isCodeDriven\n ? \"This parameter is solely code-driven. Controller is just shown for debugging purposes.\"\n : \"\"\n }\n >\n {id && <label htmlFor={id}>{label || id}</label>}\n <div className={classes.inputContainer} {...inputContainerProps}>\n {props.children}\n </div>\n </div>\n )\n}\n\nexport interface HTMLInputControllerProps {\n id: string\n value: string\n onChange: FxParamInputChangeHandler\n type: HTMLInputTypeAttribute\n inputProps?: InputHTMLAttributes<HTMLInputElement | HTMLSelectElement>\n className?: string\n label?: string\n layout?: \"default\" | \"invert\" | \"box\"\n isCodeDriven?: boolean\n}\n\nexport type FxParamControllerProps<Type extends FxParamType> = Omit<\n HTMLInputControllerProps,\n \"type\"\n> & {\n value: any\n options?: FxParamOptionsMap[Type]\n onChange: FxParamInputChangeHandler\n}\n\nexport function HTMLInputController(props: HTMLInputControllerProps) {\n const {\n label,\n id,\n onChange,\n value,\n type,\n className,\n inputProps,\n layout = \"default\",\n isCodeDriven,\n } = props\n return (\n <Controller\n id={id}\n label={label}\n layout={layout}\n isCodeDriven={isCodeDriven}\n >\n <BaseParamsInput\n className={className}\n type={type}\n id={id}\n onChange={onChange}\n value={value}\n disabled={isCodeDriven}\n {...inputProps}\n />\n </Controller>\n )\n}\n\nexport interface HTMLInputControllerWithTextInputProps\n extends HTMLInputControllerProps {\n textInputProps?: InputHTMLAttributes<HTMLInputElement>\n}\n\nexport function HTMLInputControllerWithTextInput(\n props: HTMLInputControllerWithTextInputProps\n) {\n const {\n label,\n id,\n onChange,\n value,\n type,\n className,\n inputProps = {},\n layout = \"default\",\n textInputProps,\n isCodeDriven,\n } = props\n return (\n <Controller\n id={id}\n label={label}\n layout={layout}\n isCodeDriven={isCodeDriven}\n >\n <BaseParamsInput\n className={className}\n type={type}\n id={id}\n onChange={onChange}\n value={value}\n autoComplete=\"off\"\n disabled={isCodeDriven}\n {...inputProps}\n />\n <BaseParamsInput\n type=\"text\"\n id={`text-${id}`}\n onChange={onChange}\n value={value}\n autoComplete=\"off\"\n disabled={isCodeDriven}\n {...textInputProps}\n />\n </Controller>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/Controller/Controller.module.scss","../src/Controller/Controller.tsx"],"names":[],"mappings":";;;;;AAAyD,IAAO,4BAAQ;AAAA,EACtE,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AAAA,EACP,eAAe;AACjB;;;ACCA,OAAO,QAAQ;AAWX,cA4BA,YA5BA;AAHG,SAAS,gBAAgB,OAA8C;AAC5E,QAAM,EAAE,GAAG,IAAI;AACf,SACE,oBAAC,aAAU,MAAM,GAAG,oBAAoB,cAAa,OAAO,GAAG,OAAO;AAE1E;AAgBO,SAAS,WAAW,OAAwB;AACjD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,0BAAQ,YAAY,0BAAQ,MAAM,GAAG,SAAS;AAAA,MAC5D,OACE,eACI,2FACA;AAAA,MAGL;AAAA,cAAM,oBAAC,WAAM,SAAS,IAAK,mBAAS,IAAG;AAAA,QACxC,oBAAC,SAAI,WAAW,0BAAQ,gBAAiB,GAAG,qBACzC,gBAAM,UACT;AAAA;AAAA;AAAA,EACF;AAEJ;AAuBO,SAAS,oBAAoB,OAAiC;AACnE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,EACF,IAAI;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACT,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAOO,SAAS,iCACd,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAa;AAAA,YACb,UAAU;AAAA,YACT,GAAG;AAAA;AAAA,QACN;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAI,QAAQ;AAAA,YACZ;AAAA,YACA;AAAA,YACA,cAAa;AAAA,YACb,UAAU;AAAA,YACT,GAAG;AAAA;AAAA,QACN;AAAA;AAAA;AAAA,EACF;AAEJ","sourcesContent":["import 'css-chunk:src/Controller/Controller.module.scss';export default {\n \"controller\": \"_controller_t5850_1\",\n \"inputContainer\": \"_inputContainer_t5850_12\",\n \"default\": \"_default_t5850_18\",\n \"invert\": \"_invert_t5850_34\",\n \"box\": \"_box_t5850_50\",\n \"numberInput\": \"_numberInput_t5850_67\"\n};","import {\n HTMLInputTypeAttribute,\n InputHTMLAttributes,\n ReactNode,\n RefObject,\n} from \"react\"\nimport { FxParamOptionsMap, FxParamType } from \"../types\"\nimport classes from \"./Controller.module.scss\"\nimport cx from \"classnames\"\nimport { BaseInput } from \"../BaseInput\"\n\n/*\n * Providing a name starting or ending with `search` prevents\n * 1Password extension to appear in the input fields\n * https://1password.community/discussion/comment/606453/#Comment_606453\n */\nexport function BaseParamsInput(props: InputHTMLAttributes<HTMLInputElement>) {\n const { id } = props\n return (\n <BaseInput name={`${id}-params-search`} autoComplete=\"off\" {...props} />\n )\n}\n\nexport type FxParamInputChangeHandler = (e: any) => void\n\nexport interface ControllerProps {\n label?: string\n id?: string\n children: ReactNode\n layout?: \"default\" | \"invert\" | \"box\"\n className?: string\n inputContainerProps?: {\n ref: RefObject<HTMLDivElement>\n }\n isCodeDriven?: boolean\n}\n\nexport function Controller(props: ControllerProps) {\n const {\n id,\n label,\n layout = \"default\",\n className,\n inputContainerProps,\n isCodeDriven,\n } = props\n return (\n <div\n className={cx(classes.controller, classes[layout], className)}\n title={\n isCodeDriven\n ? \"This parameter is solely code-driven. Controller is just shown for debugging purposes.\"\n : \"\"\n }\n >\n {id && <label htmlFor={id}>{label || id}</label>}\n <div className={classes.inputContainer} {...inputContainerProps}>\n {props.children}\n </div>\n </div>\n )\n}\n\nexport interface HTMLInputControllerProps {\n id: string\n value: string\n onChange: FxParamInputChangeHandler\n type: HTMLInputTypeAttribute\n inputProps?: InputHTMLAttributes<HTMLInputElement | HTMLSelectElement>\n className?: string\n label?: string\n layout?: \"default\" | \"invert\" | \"box\"\n isCodeDriven?: boolean\n}\n\nexport type FxParamControllerProps<Type extends FxParamType> = Omit<\n HTMLInputControllerProps,\n \"type\"\n> & {\n value: any\n options?: FxParamOptionsMap[Type]\n onChange: FxParamInputChangeHandler\n}\n\nexport function HTMLInputController(props: HTMLInputControllerProps) {\n const {\n label,\n id,\n onChange,\n value,\n type,\n className,\n inputProps,\n layout = \"default\",\n isCodeDriven,\n } = props\n return (\n <Controller\n id={id}\n label={label}\n layout={layout}\n isCodeDriven={isCodeDriven}\n >\n <BaseParamsInput\n className={className}\n type={type}\n id={id}\n onChange={onChange}\n value={value}\n disabled={isCodeDriven}\n {...inputProps}\n />\n </Controller>\n )\n}\n\nexport interface HTMLInputControllerWithTextInputProps\n extends HTMLInputControllerProps {\n textInputProps?: InputHTMLAttributes<HTMLInputElement>\n}\n\nexport function HTMLInputControllerWithTextInput(\n props: HTMLInputControllerWithTextInputProps\n) {\n const {\n label,\n id,\n onChange,\n value,\n type,\n className,\n inputProps = {},\n layout = \"default\",\n textInputProps,\n isCodeDriven,\n } = props\n return (\n <Controller\n id={id}\n label={label}\n layout={layout}\n isCodeDriven={isCodeDriven}\n >\n <BaseParamsInput\n className={className}\n type={type}\n id={id}\n onChange={onChange}\n value={value}\n autoComplete=\"off\"\n disabled={isCodeDriven}\n {...inputProps}\n />\n <BaseParamsInput\n type=\"text\"\n id={`text-${id}`}\n onChange={onChange}\n value={value}\n autoComplete=\"off\"\n disabled={isCodeDriven}\n {...textInputProps}\n />\n </Controller>\n )\n}\n"]}