@adcops/autocore-react 3.0.40 → 3.3.2

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 (296) hide show
  1. package/additional-docs/AutoCoreTagContext.md +441 -0
  2. package/additional-docs/react_performance_notes.md +94 -0
  3. package/dist/assets/BlocklyLogo.d.ts +1 -0
  4. package/dist/assets/BlocklyLogo.d.ts.map +1 -0
  5. package/dist/assets/Distance.d.ts +1 -0
  6. package/dist/assets/Distance.d.ts.map +1 -0
  7. package/dist/assets/JogLong.d.ts +1 -0
  8. package/dist/assets/JogLong.d.ts.map +1 -0
  9. package/dist/assets/JogMedium.d.ts +1 -0
  10. package/dist/assets/JogMedium.d.ts.map +1 -0
  11. package/dist/assets/JogShort.d.ts +1 -0
  12. package/dist/assets/JogShort.d.ts.map +1 -0
  13. package/dist/assets/PythonLogo.d.ts +1 -0
  14. package/dist/assets/PythonLogo.d.ts.map +1 -0
  15. package/dist/assets/Rotation3D.d.ts +1 -0
  16. package/dist/assets/Rotation3D.d.ts.map +1 -0
  17. package/dist/assets/RotationCcw.d.ts +1 -0
  18. package/dist/assets/RotationCcw.d.ts.map +1 -0
  19. package/dist/assets/RotationCcwA.d.ts +1 -0
  20. package/dist/assets/RotationCcwA.d.ts.map +1 -0
  21. package/dist/assets/RotationCcwB.d.ts +1 -0
  22. package/dist/assets/RotationCcwB.d.ts.map +1 -0
  23. package/dist/assets/RotationCcwC.d.ts +1 -0
  24. package/dist/assets/RotationCcwC.d.ts.map +1 -0
  25. package/dist/assets/RotationCw.d.ts +1 -0
  26. package/dist/assets/RotationCw.d.ts.map +1 -0
  27. package/dist/assets/RotationCwA.d.ts +1 -0
  28. package/dist/assets/RotationCwA.d.ts.map +1 -0
  29. package/dist/assets/RotationCwB.d.ts +1 -0
  30. package/dist/assets/RotationCwB.d.ts.map +1 -0
  31. package/dist/assets/RotationCwC.d.ts +1 -0
  32. package/dist/assets/RotationCwC.d.ts.map +1 -0
  33. package/dist/assets/Run.d.ts +1 -0
  34. package/dist/assets/Run.d.ts.map +1 -0
  35. package/dist/assets/Speed.d.ts +1 -0
  36. package/dist/assets/Speed.d.ts.map +1 -0
  37. package/dist/assets/SpeedFast.d.ts +1 -0
  38. package/dist/assets/SpeedFast.d.ts.map +1 -0
  39. package/dist/assets/SpeedMedium.d.ts +1 -0
  40. package/dist/assets/SpeedMedium.d.ts.map +1 -0
  41. package/dist/assets/SpeedNone.d.ts +1 -0
  42. package/dist/assets/SpeedNone.d.ts.map +1 -0
  43. package/dist/assets/SpeedSlow.d.ts +1 -0
  44. package/dist/assets/SpeedSlow.d.ts.map +1 -0
  45. package/dist/assets/Walk.d.ts +1 -0
  46. package/dist/assets/Walk.d.ts.map +1 -0
  47. package/dist/assets/index.d.ts +1 -0
  48. package/dist/assets/index.d.ts.map +1 -0
  49. package/dist/components/AutoCoreDevPanel.d.ts +144 -0
  50. package/dist/components/AutoCoreDevPanel.d.ts.map +1 -0
  51. package/dist/components/AutoCoreDevPanel.js +1 -0
  52. package/dist/components/BlocklyEditor.d.ts +1 -0
  53. package/dist/components/BlocklyEditor.d.ts.map +1 -0
  54. package/dist/components/BlocklyEditor.js +1 -1
  55. package/dist/components/CodeEditor.d.ts +2 -1
  56. package/dist/components/CodeEditor.d.ts.map +1 -0
  57. package/dist/components/CodeEditor.js +1 -1
  58. package/dist/components/FileList.d.ts +1 -0
  59. package/dist/components/FileList.d.ts.map +1 -0
  60. package/dist/components/FileList.js +1 -1
  61. package/dist/components/FileSelect.d.ts +1 -0
  62. package/dist/components/FileSelect.d.ts.map +1 -0
  63. package/dist/components/FileSelect.js +1 -1
  64. package/dist/components/FitText.d.ts +1 -0
  65. package/dist/components/FitText.d.ts.map +1 -0
  66. package/dist/components/FitText.js +1 -1
  67. package/dist/components/Indicator.d.ts +2 -1
  68. package/dist/components/Indicator.d.ts.map +1 -0
  69. package/dist/components/Indicator.js +1 -1
  70. package/dist/components/IndicatorButton.d.ts +2 -1
  71. package/dist/components/IndicatorButton.d.ts.map +1 -0
  72. package/dist/components/IndicatorButton.js +1 -1
  73. package/dist/components/IndicatorRect.d.ts +2 -1
  74. package/dist/components/IndicatorRect.d.ts.map +1 -0
  75. package/dist/components/JogPanel.d.ts +1 -0
  76. package/dist/components/JogPanel.d.ts.map +1 -0
  77. package/dist/components/Lamp.d.ts +2 -1
  78. package/dist/components/Lamp.d.ts.map +1 -0
  79. package/dist/components/Lamp.js +1 -1
  80. package/dist/components/Osk.d.ts +1 -0
  81. package/dist/components/Osk.d.ts.map +1 -0
  82. package/dist/components/Osk.js +1 -1
  83. package/dist/components/OskDialog.d.ts +1 -0
  84. package/dist/components/OskDialog.d.ts.map +1 -0
  85. package/dist/components/ProgressBarWithValue.d.ts +1 -0
  86. package/dist/components/ProgressBarWithValue.d.ts.map +1 -0
  87. package/dist/components/ProgressBarWithValue.js +1 -1
  88. package/dist/components/TextInput.d.ts +62 -103
  89. package/dist/components/TextInput.d.ts.map +1 -0
  90. package/dist/components/TextInput.js +1 -1
  91. package/dist/components/ToggleGroup.d.ts +2 -1
  92. package/dist/components/ToggleGroup.d.ts.map +1 -0
  93. package/dist/components/ToggleGroup.js +1 -1
  94. package/dist/components/ValueDisplay.d.ts +3 -2
  95. package/dist/components/ValueDisplay.d.ts.map +1 -0
  96. package/dist/components/ValueDisplay.js +1 -1
  97. package/dist/components/ValueIndicator.d.ts +2 -1
  98. package/dist/components/ValueIndicator.d.ts.map +1 -0
  99. package/dist/components/ValueIndicator.js +1 -1
  100. package/dist/components/ValueInput.d.ts +2 -1
  101. package/dist/components/ValueInput.d.ts.map +1 -0
  102. package/dist/components/ValueInput.js +1 -1
  103. package/dist/core/ActionMode.d.ts +1 -0
  104. package/dist/core/ActionMode.d.ts.map +1 -0
  105. package/dist/core/AutoCoreTagContext.d.ts +98 -0
  106. package/dist/core/AutoCoreTagContext.d.ts.map +1 -0
  107. package/dist/core/AutoCoreTagContext.js +1 -0
  108. package/dist/core/AutoCoreTagTypes.d.ts +283 -0
  109. package/dist/core/AutoCoreTagTypes.d.ts.map +1 -0
  110. package/dist/core/AutoCoreTagTypes.js +1 -0
  111. package/dist/core/CoreStreamTypes.d.ts +345 -0
  112. package/dist/core/CoreStreamTypes.d.ts.map +1 -0
  113. package/dist/core/CoreStreamTypes.js +1 -0
  114. package/dist/core/EventEmitterContext.d.ts +113 -202
  115. package/dist/core/EventEmitterContext.d.ts.map +1 -0
  116. package/dist/core/EventEmitterContext.js +1 -1
  117. package/dist/core/IndicatorButtonState.d.ts +1 -0
  118. package/dist/core/IndicatorButtonState.d.ts.map +1 -0
  119. package/dist/core/IndicatorColor.d.ts +1 -0
  120. package/dist/core/IndicatorColor.d.ts.map +1 -0
  121. package/dist/core/MaskPatterns.d.ts +1 -0
  122. package/dist/core/MaskPatterns.d.ts.map +1 -0
  123. package/dist/core/NumerableTypes.d.ts +1 -0
  124. package/dist/core/NumerableTypes.d.ts.map +1 -0
  125. package/dist/core/NumerableTypes.js +1 -1
  126. package/dist/core/PositionContext.d.ts +1 -1
  127. package/dist/core/PositionContext.d.ts.map +1 -0
  128. package/dist/core/UniqueId.d.ts +1 -0
  129. package/dist/core/UniqueId.d.ts.map +1 -0
  130. package/dist/core/ValueSimulator.d.ts +2 -1
  131. package/dist/core/ValueSimulator.d.ts.map +1 -0
  132. package/dist/core/ValueSimulator.js +1 -1
  133. package/dist/core/hoc.d.ts +1 -0
  134. package/dist/core/hoc.d.ts.map +1 -0
  135. package/dist/core/hoc.js +1 -1
  136. package/dist/hooks/adsHooks.d.ts +1 -0
  137. package/dist/hooks/adsHooks.d.ts.map +1 -0
  138. package/dist/hooks/adsHooks.js +1 -1
  139. package/dist/hooks/commandHooks.d.ts +4 -3
  140. package/dist/hooks/commandHooks.d.ts.map +1 -0
  141. package/dist/hooks/commandHooks.js +1 -1
  142. package/dist/hooks/index.d.ts +1 -0
  143. package/dist/hooks/index.d.ts.map +1 -0
  144. package/dist/hooks/useAutoCoreTag.d.ts +26 -0
  145. package/dist/hooks/useAutoCoreTag.d.ts.map +1 -0
  146. package/dist/hooks/useAutoCoreTag.js +1 -0
  147. package/dist/hooks/useScaledValue.d.ts +1 -0
  148. package/dist/hooks/useScaledValue.d.ts.map +1 -0
  149. package/dist/hooks/useScaledValue.js +1 -1
  150. package/dist/hub/CommandMessage.d.ts +19 -9
  151. package/dist/hub/CommandMessage.d.ts.map +1 -0
  152. package/dist/hub/CommandMessage.js +1 -1
  153. package/dist/hub/DebugPanel.d.ts +31 -0
  154. package/dist/hub/DebugPanel.d.ts.map +1 -0
  155. package/dist/hub/DebugPanel.js +1 -0
  156. package/dist/hub/HubBase.d.ts +85 -130
  157. package/dist/hub/HubBase.d.ts.map +1 -0
  158. package/dist/hub/HubBase.js +1 -1
  159. package/dist/hub/HubSimulate.d.ts +42 -8
  160. package/dist/hub/HubSimulate.d.ts.map +1 -0
  161. package/dist/hub/HubSimulate.js +1 -1
  162. package/dist/hub/HubTauri.d.ts +25 -60
  163. package/dist/hub/HubTauri.d.ts.map +1 -0
  164. package/dist/hub/HubTauri.js +1 -1
  165. package/dist/hub/HubWebSocket.d.ts +34 -17
  166. package/dist/hub/HubWebSocket.d.ts.map +1 -0
  167. package/dist/hub/HubWebSocket.js +1 -1
  168. package/dist/hub/debug.d.ts +23 -0
  169. package/dist/hub/debug.d.ts.map +1 -0
  170. package/dist/hub/debug.js +1 -0
  171. package/dist/hub/index.d.ts +20 -4
  172. package/dist/hub/index.d.ts.map +1 -0
  173. package/dist/hub/index.js +1 -1
  174. package/package.json +32 -27
  175. package/readme.md +193 -22
  176. package/src/components/AutoCoreDevPanel.tsx +414 -0
  177. package/src/components/CodeEditor.tsx +2 -2
  178. package/src/components/FileList.tsx +7 -6
  179. package/src/components/FileSelect.tsx +2 -1
  180. package/src/components/Indicator.tsx +2 -2
  181. package/src/components/IndicatorButton.tsx +2 -2
  182. package/src/components/IndicatorRect.tsx +2 -2
  183. package/src/components/Lamp.tsx +3 -3
  184. package/src/components/TextInput.tsx +159 -240
  185. package/src/components/ToggleGroup.tsx +3 -3
  186. package/src/components/ValueDisplay.tsx +4 -4
  187. package/src/components/ValueIndicator.tsx +2 -2
  188. package/src/components/ValueInput.tsx +2 -2
  189. package/src/core/ActionMode.ts +1 -1
  190. package/src/core/AutoCoreTagContext.tsx +615 -0
  191. package/src/core/AutoCoreTagTypes.ts +334 -0
  192. package/src/core/CoreStreamTypes.ts +512 -0
  193. package/src/core/EventEmitterContext.tsx +257 -281
  194. package/src/core/IndicatorButtonState.ts +1 -1
  195. package/src/core/ValueSimulator.ts +2 -2
  196. package/src/core/hoc.tsx +1 -1
  197. package/src/hooks/adsHooks.tsx +21 -22
  198. package/src/hooks/commandHooks.tsx +23 -19
  199. package/src/hooks/index.ts +1 -1
  200. package/src/hooks/useAutoCoreTag.ts +103 -0
  201. package/src/hooks/useScaledValue.tsx +1 -1
  202. package/src/hub/CommandMessage.ts +71 -19
  203. package/src/hub/DebugPanel.ts +280 -0
  204. package/src/hub/HubBase.ts +147 -223
  205. package/src/hub/HubSimulate.ts +93 -24
  206. package/src/hub/HubTauri.ts +87 -96
  207. package/src/hub/HubWebSocket.ts +133 -158
  208. package/src/hub/debug.ts +211 -0
  209. package/src/hub/index.ts +49 -39
  210. package/tsconfig.json +43 -28
  211. package/docs/classes/components_BlocklyEditor.BlocklyEditor.html +0 -124
  212. package/docs/classes/components_CodeEditor.CodeEditor.html +0 -128
  213. package/docs/classes/components_JogPanel.JogPanel.html +0 -138
  214. package/docs/classes/components_Lamp.Lamp.html +0 -105
  215. package/docs/classes/components_TextInput.TextInput.html +0 -115
  216. package/docs/classes/components_ValueIndicator.ValueIndicator.html +0 -119
  217. package/docs/classes/components_ValueInput.ValueInput.html +0 -113
  218. package/docs/classes/hub_HubWebSocket.HubWebSocket.html +0 -106
  219. package/docs/enums/components_JogPanel.JogDistanceAction.html +0 -5
  220. package/docs/enums/components_JogPanel.JogPanelAction.html +0 -18
  221. package/docs/enums/components_JogPanel.JogSpeedAction.html +0 -5
  222. package/docs/enums/core_ActionMode.ActionMode.html +0 -6
  223. package/docs/enums/core_IndicatorColor.IndicatorColor.html +0 -23
  224. package/docs/functions/assets_BlocklyLogo.default.html +0 -1
  225. package/docs/functions/assets_Distance.default.html +0 -1
  226. package/docs/functions/assets_JogLong.default.html +0 -1
  227. package/docs/functions/assets_JogMedium.default.html +0 -1
  228. package/docs/functions/assets_JogShort.default.html +0 -1
  229. package/docs/functions/assets_PythonLogo.default.html +0 -1
  230. package/docs/functions/assets_Rotation3D.default.html +0 -1
  231. package/docs/functions/assets_RotationCcw.default.html +0 -1
  232. package/docs/functions/assets_RotationCcwA.default.html +0 -1
  233. package/docs/functions/assets_RotationCcwB.default.html +0 -1
  234. package/docs/functions/assets_RotationCcwC.default.html +0 -1
  235. package/docs/functions/assets_RotationCw.default.html +0 -1
  236. package/docs/functions/assets_RotationCwA.default.html +0 -1
  237. package/docs/functions/assets_RotationCwB.default.html +0 -1
  238. package/docs/functions/assets_RotationCwC.default.html +0 -1
  239. package/docs/functions/assets_Run.default.html +0 -1
  240. package/docs/functions/assets_Speed.default.html +0 -1
  241. package/docs/functions/assets_SpeedFast.default.html +0 -1
  242. package/docs/functions/assets_SpeedMedium.default.html +0 -1
  243. package/docs/functions/assets_SpeedNone.default.html +0 -1
  244. package/docs/functions/assets_SpeedSlow.default.html +0 -1
  245. package/docs/functions/assets_Walk.default.html +0 -1
  246. package/docs/functions/components_BlocklyEditor.createCustomToolbox.html +0 -6
  247. package/docs/functions/components_FileList.FileList.html +0 -21
  248. package/docs/functions/components_FitText.FitText.html +0 -8
  249. package/docs/functions/components_ToggleGroup.ToggleGroup.html +0 -5
  250. package/docs/interfaces/components_JogPanel.JogPanelButtonDefinition.html +0 -5
  251. package/docs/interfaces/components_ToggleGroup.ToggleGroupProps.html +0 -618
  252. package/docs/interfaces/core_IndicatorButtonState.IndicatorButtonState.html +0 -10
  253. package/docs/interfaces/hub_CommandMessage.CommandMessage.html +0 -6
  254. package/docs/interfaces/hub_CommandMessage.CommandMessageResult.html +0 -4
  255. package/docs/modules/assets.html +0 -23
  256. package/docs/modules/assets_BlocklyLogo.html +0 -2
  257. package/docs/modules/assets_Distance.html +0 -2
  258. package/docs/modules/assets_JogLong.html +0 -2
  259. package/docs/modules/assets_JogMedium.html +0 -2
  260. package/docs/modules/assets_JogShort.html +0 -2
  261. package/docs/modules/assets_PythonLogo.html +0 -2
  262. package/docs/modules/assets_Rotation3D.html +0 -2
  263. package/docs/modules/assets_RotationCcw.html +0 -2
  264. package/docs/modules/assets_RotationCcwA.html +0 -2
  265. package/docs/modules/assets_RotationCcwB.html +0 -2
  266. package/docs/modules/assets_RotationCcwC.html +0 -2
  267. package/docs/modules/assets_RotationCw.html +0 -2
  268. package/docs/modules/assets_RotationCwA.html +0 -2
  269. package/docs/modules/assets_RotationCwB.html +0 -2
  270. package/docs/modules/assets_RotationCwC.html +0 -2
  271. package/docs/modules/assets_Run.html +0 -2
  272. package/docs/modules/assets_Speed.html +0 -2
  273. package/docs/modules/assets_SpeedFast.html +0 -2
  274. package/docs/modules/assets_SpeedMedium.html +0 -2
  275. package/docs/modules/assets_SpeedNone.html +0 -2
  276. package/docs/modules/assets_SpeedSlow.html +0 -2
  277. package/docs/modules/assets_Walk.html +0 -2
  278. package/docs/modules/components_BlocklyEditor.html +0 -5
  279. package/docs/modules/components_CodeEditor.html +0 -3
  280. package/docs/modules/components_FileList.html +0 -3
  281. package/docs/modules/components_FitText.html +0 -3
  282. package/docs/modules/components_JogPanel.html +0 -9
  283. package/docs/modules/components_Lamp.html +0 -4
  284. package/docs/modules/components_TextInput.html +0 -2
  285. package/docs/modules/components_ToggleGroup.html +0 -6
  286. package/docs/modules/components_ValueIndicator.html +0 -4
  287. package/docs/modules/components_ValueInput.html +0 -2
  288. package/docs/modules/core_ActionMode.html +0 -2
  289. package/docs/modules/core_IndicatorButtonState.html +0 -2
  290. package/docs/modules/core_IndicatorColor.html +0 -2
  291. package/docs/modules/hub_CommandMessage.html +0 -3
  292. package/docs/modules/hub_HubWebSocket.html +0 -2
  293. package/docs/types/components_IndicatorButton.IndicatorButtonOptionsType.html +0 -1
  294. package/docs/variables/components_BlocklyEditor.StandardToolbox.html +0 -1
  295. package/docs/variables/components_JogPanel.DefaultLinearJogButtons.html +0 -2
  296. package/docs/variables/components_JogPanel.DefaultRotationJogButtons.html +0 -2
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgRotationCwB: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgRotationCwB;
4
+ //# sourceMappingURL=RotationCwB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RotationCwB.d.ts","sourceRoot":"","sources":["../../src/assets/RotationCwB.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,cAAc,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAuCrD,CAAC;AACF,eAAe,cAAc,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgRotationCwC: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgRotationCwC;
4
+ //# sourceMappingURL=RotationCwC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RotationCwC.d.ts","sourceRoot":"","sources":["../../src/assets/RotationCwC.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,cAAc,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAuCrD,CAAC;AACF,eAAe,cAAc,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgRun: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgRun;
4
+ //# sourceMappingURL=Run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Run.d.ts","sourceRoot":"","sources":["../../src/assets/Run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,MAAM,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAU7C,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgSpeed: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgSpeed;
4
+ //# sourceMappingURL=Speed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Speed.d.ts","sourceRoot":"","sources":["../../src/assets/Speed.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAe/C,CAAC;AACF,eAAe,QAAQ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgSpeedFast: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgSpeedFast;
4
+ //# sourceMappingURL=SpeedFast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedFast.d.ts","sourceRoot":"","sources":["../../src/assets/SpeedFast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,YAAY,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAUnD,CAAC;AACF,eAAe,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgSpeedMedium: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgSpeedMedium;
4
+ //# sourceMappingURL=SpeedMedium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedMedium.d.ts","sourceRoot":"","sources":["../../src/assets/SpeedMedium.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,cAAc,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAUrD,CAAC;AACF,eAAe,cAAc,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgSpeedNone: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgSpeedNone;
4
+ //# sourceMappingURL=SpeedNone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedNone.d.ts","sourceRoot":"","sources":["../../src/assets/SpeedNone.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,YAAY,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAUnD,CAAC;AACF,eAAe,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgSpeedSlow: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgSpeedSlow;
4
+ //# sourceMappingURL=SpeedSlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedSlow.d.ts","sourceRoot":"","sources":["../../src/assets/SpeedSlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,YAAY,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAUnD,CAAC;AACF,eAAe,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { SVGProps } from "react";
2
2
  declare const SvgWalk: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
3
  export default SvgWalk;
4
+ //# sourceMappingURL=Walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Walk.d.ts","sourceRoot":"","sources":["../../src/assets/Walk.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,QAAA,MAAM,OAAO,GAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,4CAU9C,CAAC;AACF,eAAe,OAAO,CAAC"}
@@ -20,3 +20,4 @@ export { default as SpeedMedium } from "./SpeedMedium";
20
20
  export { default as SpeedNone } from "./SpeedNone";
21
21
  export { default as SpeedSlow } from "./SpeedSlow";
22
22
  export { default as Walk } from "./Walk";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * @module components/AutoCoreDevPanel
3
+ *
4
+ * @summary
5
+ *
6
+ * A development and debugging panel for monitoring and manually interacting with AutoCore tags.
7
+ * This component provides real-time visibility into tag values and allows direct manipulation
8
+ * for testing and debugging purposes.
9
+ *
10
+ * @remarks
11
+ *
12
+ * The AutoCoreDevPanel is designed to be used during development to:
13
+ * - Monitor live tag values in real-time
14
+ * - Test write operations manually
15
+ * - Debug tag behavior and connectivity
16
+ * - Perform tap operations on boolean tags
17
+ * - Validate tag configurations
18
+ *
19
+ * The panel automatically connects to the global AutoCoreTagContext and displays all
20
+ * tags passed to it. No additional setup or factory functions are required.
21
+ *
22
+ * @example Basic Usage
23
+ * ```tsx
24
+ * import React from 'react';
25
+ * import { AutoCoreDevPanel } from "@adcops/autocore-react/components/AutoCoreDevPanel";
26
+ * import { acTagSpec } from "./AutoCoreTags";
27
+ *
28
+ * function App() {
29
+ * return (
30
+ * <div>
31
+ * <main>
32
+ * <YourMainContent />
33
+ * </main>
34
+ *
35
+ * {process.env.NODE_ENV === 'development' && (
36
+ * <AutoCoreDevPanel
37
+ * tags={acTagSpec}
38
+ * className="fixed bottom-4 right-4 bg-white shadow-lg"
39
+ * />
40
+ * )}
41
+ * </div>
42
+ * );
43
+ * }
44
+ * ```
45
+ *
46
+ * @example Styled Panel
47
+ * ```tsx
48
+ * import { AutoCoreDevPanel } from "@adcops/autocore-react/components/AutoCoreDevPanel";
49
+ * import { acTagSpec } from "./AutoCoreTags";
50
+ *
51
+ * // Custom styled panel
52
+ * <AutoCoreDevPanel
53
+ * tags={acTagSpec}
54
+ * title="Machine Status Monitor"
55
+ * className="
56
+ * fixed top-4 left-4
57
+ * bg-gray-900 text-white
58
+ * border border-gray-700
59
+ * shadow-2xl rounded-lg
60
+ * max-w-md
61
+ * "
62
+ * />
63
+ * ```
64
+ *
65
+ * @example Filtered Tags
66
+ * ```tsx
67
+ * import { AutoCoreDevPanel } from "@adcops/autocore-react/components/AutoCoreDevPanel";
68
+ * import { acTagSpec } from "./AutoCoreTags";
69
+ *
70
+ * // Show only specific tags for focused debugging
71
+ * const motorTags = acTagSpec.filter(tag =>
72
+ * tag.tagName.includes('motor') || tag.tagName.includes('axis')
73
+ * );
74
+ *
75
+ * <AutoCoreDevPanel
76
+ * tags={motorTags}
77
+ * title="Motor Control Debug"
78
+ * className="debug-panel"
79
+ * />
80
+ * ```
81
+ */
82
+ import React from "react";
83
+ import type { TagConfig } from "../core/AutoCoreTagTypes";
84
+ /**
85
+ * Props for the AutoCoreDevPanel component.
86
+ */
87
+ interface AutoCoreDevPanelProps {
88
+ /**
89
+ * Array of tag configurations to display in the panel.
90
+ * Each tag will show its current value and provide controls for writing new values.
91
+ */
92
+ tags: readonly TagConfig[];
93
+ /**
94
+ * Optional title for the panel header.
95
+ * @defaultValue "AutoCore Dev Panel"
96
+ */
97
+ title?: string;
98
+ /**
99
+ * Optional CSS class names for custom styling.
100
+ * The panel has default styling but can be customized with Tailwind or custom CSS.
101
+ */
102
+ className?: string;
103
+ }
104
+ /**
105
+ * AutoCoreDevPanel - Development and debugging panel for AutoCore tags.
106
+ *
107
+ * This component provides a real-time debugging interface for monitoring and manipulating
108
+ * AutoCore tags during development. It displays current tag values, provides input controls
109
+ * for writing new values, and includes tap functionality for boolean tags.
110
+ *
111
+ * ## Features
112
+ *
113
+ * - **Real-time monitoring**: Shows live tag values as they update from the server
114
+ * - **Direct writes**: Input controls to write new values directly to tags
115
+ * - **Type-aware inputs**: Automatically provides appropriate input types (checkbox for boolean, number input for numeric, etc.)
116
+ * - **Tap functionality**: Special "TAP" buttons for boolean tags that send momentary true→false signals
117
+ * - **Error handling**: Visual feedback for write failures and validation errors
118
+ * - **Live status**: Indicator showing whether the system is loading or live
119
+ * - **JSON support**: Proper formatting and editing for JSON-type tags
120
+ *
121
+ * ## Input Types
122
+ *
123
+ * - **Boolean tags**: Checkbox for direct true/false setting + TAP button for momentary signals
124
+ * - **Number tags**: Number input with validation
125
+ * - **String tags**: Text input
126
+ * - **JSON tags**: Text input with JSON validation and pretty-printing
127
+ *
128
+ * ## Keyboard Shortcuts
129
+ *
130
+ * - **Enter key**: In text/number inputs, immediately sends the value to the server
131
+ * - **Tab navigation**: Navigate between inputs using standard keyboard navigation
132
+ *
133
+ * ## Error Handling
134
+ *
135
+ * Write operations that fail will show error messages below the input field.
136
+ * Common errors include:
137
+ * - Invalid number formats
138
+ * - Malformed JSON
139
+ * - Network/server errors
140
+ * - Tag not found errors
141
+ */
142
+ export declare const AutoCoreDevPanel: React.FC<AutoCoreDevPanelProps>;
143
+ export {};
144
+ //# sourceMappingURL=AutoCoreDevPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoCoreDevPanel.d.ts","sourceRoot":"","sources":["../../src/components/AutoCoreDevPanel.tsx"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AAEH,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAM1D;;GAEG;AACH,UAAU,qBAAqB;IAC7B;;;OAGG;IACH,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAsK5D,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import React,{useContext,useMemo,useState,useCallback}from"react";import{AutoCoreTagContext}from"../core/AutoCoreTagContext";const getDomain=e=>e.split(".")[0];export const AutoCoreDevPanel=({tags:e,title:n="AutoCore Dev Panel",className:t=""})=>{const{values:o,rawValues:a,isLoading:s,write:l,tap:r,scales:i}=useContext(AutoCoreTagContext),[d,c]=useState({}),[u,h]=useState({}),x=useMemo(()=>e.map(e=>{const n=o[e.fqdn],t=a[e.fqdn],s=e.scale??"",l=s?i[s]:void 0;return{tag:e,display:n,raw:t,scaleName:s,factor:l?.scale,label:l?.label}}),[e,o,a,i]),m=useCallback((e,n)=>{c(t=>({...t,[e]:n})),h(n=>({...n,[e]:""}))},[]),p=useCallback((e,n)=>{h(t=>({...t,[e]:n}))},[]),y=useCallback(async e=>{const n=e.fqdn,t=d[n];try{if("boolean"===e.valueType){const e="true"===t||"false"!==t&&!o[n];return await l(n,e),void m(n,"")}if("number"===e.valueType){if(null==t||""===t.trim())return void p(n,"Enter a number.");const e=Number(t);return Number.isNaN(e)?void p(n,"Invalid number."):(await l(n,e),void m(n,""))}if("string"===e.valueType)return await l(n,t??""),void m(n,"");try{const e=t?.trim()?JSON.parse(t):null;await l(n,e),m(n,"")}catch(e){p(n,"Invalid JSON.")}}catch(e){p(n,e?.message??String(e))}},[d,m,p,l,o]);return _jsxs("div",{className:`rounded-md border border-gray-200 bg-white text-sm ${t}`,style:{minWidth:680},children:[_jsx("div",{className:"flex items-center justify-between px-3 py-2",style:{borderBottom:"1px solid #eee"},children:_jsxs("div",{className:"flex items-center gap-2",children:[_jsx("strong",{children:n}),_jsx("span",{title:s?"Loading":"Live",style:{width:8,height:8,borderRadius:999,background:s?"#aaa":"#22c55e",display:"inline-block"}})]})}),_jsx("div",{style:{overflowX:"auto"},children:_jsxs("table",{style:{borderCollapse:"collapse",width:"100%"},children:[_jsx("thead",{children:_jsxs("tr",{children:[_jsx(Th,{children:"Tag"}),_jsx(Th,{children:"Kind"}),_jsx(Th,{children:"Domain"}),_jsx(Th,{children:"Symbol"}),_jsx(Th,{children:"Display"}),_jsx(Th,{children:"Raw"}),_jsx(Th,{children:"Scale"}),_jsx(Th,{children:"Units"}),_jsx(Th,{children:"Input"}),_jsx(Th,{children:"Actions"})]})}),_jsx("tbody",{children:x.map(({tag:e,display:n,raw:t,scaleName:o,factor:a,label:s})=>{const l=d[e.fqdn]??"",i=u[e.fqdn];return _jsxs("tr",{children:[_jsx(Td,{mono:!0,children:e.tagName}),_jsx(Td,{mono:!0,children:e.valueType}),_jsx(Td,{mono:!0,children:getDomain(e.fqdn)}),_jsx(Td,{mono:!0,children:e.fqdn}),_jsx(Td,{mono:!0,children:fmt(n)}),_jsx(Td,{mono:!0,children:fmt(t)}),_jsx(Td,{mono:!0,children:o?`${o} ×${a??1}`:"—"}),_jsx(Td,{mono:!0,children:o?s??"":"—"}),_jsxs(Td,{children:[_jsx(InputForTag,{tag:e,buf:l,setBuf:n=>m(e.fqdn,n),onKeyDown:n=>((e,n)=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),y(n))})(n,e)}),i&&_jsx("div",{style:{color:"#dc2626",marginTop:4},children:i})]}),_jsx(Td,{children:_jsxs("div",{style:{display:"flex",gap:6},children:[_jsx("button",{onClick:()=>y(e),children:"Write"}),"boolean"===e.valueType&&_jsx("button",{onClick:()=>r(e.fqdn),children:"TAP"})]})})]},e.fqdn)})})]})})]})};const Th=({children:e})=>_jsx("th",{style:{textAlign:"left",borderBottom:"1px solid #ddd",padding:"6px 8px",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:e}),Td=({children:e,mono:n})=>_jsx("td",{style:{borderBottom:"1px solid #eee",padding:"6px 8px",whiteSpace:"nowrap",fontFamily:n?"ui-monospace, SFMono-Regular, Menlo, monospace":"inherit"},children:e}),InputForTag=({tag:e,buf:n,setBuf:t,onKeyDown:o})=>"boolean"===e.valueType?_jsxs("label",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[_jsx("input",{type:"checkbox",checked:n?"true"===n:Boolean,onChange:e=>t(e.target.checked?"true":"false"),onKeyDown:o}),_jsx("span",{children:"set"})]}):"number"===e.valueType?_jsx("input",{type:"number",step:"any",value:n,onChange:e=>t(e.target.value),onKeyDown:o,style:{width:140},placeholder:"number…"}):"string"===e.valueType?_jsx("input",{type:"text",value:n,onChange:e=>t(e.target.value),onKeyDown:o,style:{width:180},placeholder:"text…"}):_jsx("textarea",{value:n,onChange:e=>t(e.target.value),onKeyDown:o,rows:2,style:{width:260,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},placeholder:'{"foo": 42}'});function fmt(e){if(null==e)return"—";if("number"==typeof e)return Number.isFinite(e)?e.toString():String(e);if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}
@@ -116,3 +116,4 @@ export default BlocklyEditor;
116
116
  */
117
117
  export declare const createCustomToolbox: (xmlBefore: string | undefined, xmlAfter: string | undefined) => string;
118
118
  export declare const StandardToolbox = "\n <xml id=\"toolbox\" style=\"display: none\">\n <!-- BEGIN: Built-in Blockly Blocks //-->\n <category name=\"Logic\" categorystyle=\"logic_category\">\n <block type=\"controls_if\"></block>\n <block type=\"logic_compare\"></block>\n <block type=\"logic_operation\"></block>\n <block type=\"logic_negate\"></block>\n <block type=\"logic_boolean\"></block>\n <block type=\"logic_null\" disabled=\"true\"></block>\n <block type=\"logic_ternary\"></block>\n </category>\n <category name=\"Loops\" categorystyle=\"loop_category\">\n <block type=\"controls_repeat_ext\">\n <value name=\"TIMES\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">10</field>\n </shadow>\n </value>\n </block>\n <block type=\"controls_repeat\" disabled=\"true\"></block>\n <block type=\"controls_whileUntil\"></block>\n <block type=\"controls_for\">\n <value name=\"FROM\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n <value name=\"TO\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">10</field>\n </shadow>\n </value>\n <value name=\"BY\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n </block>\n <block type=\"controls_forEach\"></block>\n <block type=\"controls_flow_statements\"></block>\n </category>\n <category name=\"Math\" categorystyle=\"math_category\">\n <block type=\"math_number\" gap=\"32\">\n <field name=\"NUM\">123</field>\n </block>\n <block type=\"math_arithmetic\">\n <value name=\"A\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n <value name=\"B\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_single\">\n <value name=\"NUM\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">9</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_trig\">\n <value name=\"NUM\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">45</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_constant\"></block>\n <block type=\"math_number_property\">\n <value name=\"NUMBER_TO_CHECK\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">0</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_round\">\n <value name=\"NUM\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">3.1</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_on_list\"></block>\n <block type=\"math_modulo\">\n <value name=\"DIVIDEND\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">64</field>\n </shadow>\n </value>\n <value name=\"DIVISOR\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">10</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_constrain\">\n <value name=\"VALUE\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">50</field>\n </shadow>\n </value>\n <value name=\"LOW\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n <value name=\"HIGH\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">100</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_random_int\">\n <value name=\"FROM\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n <value name=\"TO\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">100</field>\n </shadow>\n </value>\n </block>\n <block type=\"math_random_float\"></block>\n <block type=\"math_atan2\">\n <value name=\"X\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n <value name=\"Y\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">1</field>\n </shadow>\n </value>\n </block>\n </category>\n <category name=\"Text\" categorystyle=\"text_category\">\n <block type=\"text\"></block>\n <block type=\"text_multiline\"></block>\n <block type=\"text_join\"></block>\n <block type=\"text_append\">\n <value name=\"TEXT\">\n <shadow type=\"text\"></shadow>\n </value>\n </block>\n <block type=\"text_length\">\n <value name=\"VALUE\">\n <shadow type=\"text\">\n <field name=\"TEXT\">abc</field>\n </shadow>\n </value>\n </block>\n <block type=\"text_isEmpty\">\n <value name=\"VALUE\">\n <shadow type=\"text\">\n <field name=\"TEXT\"></field>\n </shadow>\n </value>\n </block>\n <block type=\"text_indexOf\">\n <value name=\"VALUE\">\n <block type=\"variables_get\">\n <field name=\"VAR\">text</field>\n </block>\n </value>\n <value name=\"FIND\">\n <shadow type=\"text\">\n <field name=\"TEXT\">abc</field>\n </shadow>\n </value>\n </block>\n <block type=\"text_charAt\">\n <value name=\"VALUE\">\n <block type=\"variables_get\">\n <field name=\"VAR\">text</field>\n </block>\n </value>\n </block>\n <block type=\"text_getSubstring\">\n <value name=\"STRING\">\n <block type=\"variables_get\">\n <field name=\"VAR\">text</field>\n </block>\n </value>\n </block>\n <block type=\"text_changeCase\">\n <value name=\"TEXT\">\n <shadow type=\"text\">\n <field name=\"TEXT\">abc</field>\n </shadow>\n </value>\n </block>\n <block type=\"text_trim\">\n <value name=\"TEXT\">\n <shadow type=\"text\">\n <field name=\"TEXT\">abc</field>\n </shadow>\n </value>\n </block>\n <block type=\"text_count\">\n <value name=\"SUB\">\n <shadow type=\"text\"></shadow>\n </value>\n <value name=\"TEXT\">\n <shadow type=\"text\"></shadow>\n </value>\n </block>\n <block type=\"text_replace\">\n <value name=\"FROM\">\n <shadow type=\"text\"></shadow>\n </value>\n <value name=\"TO\">\n <shadow type=\"text\"></shadow>\n </value>\n <value name=\"TEXT\">\n <shadow type=\"text\"></shadow>\n </value>\n </block>\n <block type=\"text_reverse\">\n <value name=\"TEXT\">\n <shadow type=\"text\"></shadow>\n </value>\n </block>\n <label text=\"Input/Output:\" web-class=\"ioLabel\"></label>\n <block type=\"text_print\">\n <value name=\"TEXT\">\n <shadow type=\"text\">\n <field name=\"TEXT\">abc</field>\n </shadow>\n </value>\n </block>\n <block type=\"text_prompt_ext\">\n <value name=\"TEXT\">\n <shadow type=\"text\">\n <field name=\"TEXT\">abc</field>\n </shadow>\n </value>\n </block>\n </category>\n <category name=\"Lists\" categorystyle=\"list_category\">\n <block type=\"lists_create_with\">\n <mutation items=\"0\"></mutation>\n </block>\n <block type=\"lists_create_with\"></block>\n <block type=\"lists_repeat\">\n <value name=\"NUM\">\n <shadow type=\"math_number\">\n <field name=\"NUM\">5</field>\n </shadow>\n </value>\n </block>\n <block type=\"lists_length\"></block>\n <block type=\"lists_isEmpty\"></block>\n <block type=\"lists_indexOf\">\n <value name=\"VALUE\">\n <block type=\"variables_get\">\n <field name=\"VAR\">list</field>\n </block>\n </value>\n </block>\n <block type=\"lists_getIndex\">\n <value name=\"VALUE\">\n <block type=\"variables_get\">\n <field name=\"VAR\">list</field>\n </block>\n </value>\n </block>\n <block type=\"lists_setIndex\">\n <value name=\"LIST\">\n <block type=\"variables_get\">\n <field name=\"VAR\">list</field>\n </block>\n </value>\n </block>\n <block type=\"lists_getSublist\">\n <value name=\"LIST\">\n <block type=\"variables_get\">\n <field name=\"VAR\">list</field>\n </block>\n </value>\n </block>\n <block type=\"lists_split\">\n <value name=\"DELIM\">\n <shadow type=\"text\">\n <field name=\"TEXT\">,</field>\n </shadow>\n </value>\n </block>\n <block type=\"lists_sort\"></block>\n <block type=\"lists_reverse\"></block>\n </category>\n <category name=\"Variables\" categorystyle=\"variable_category\" custom=\"VARIABLE\"></category>\n <category name=\"Functions\" categorystyle=\"procedure_category\" custom=\"PROCEDURE\"></category>\n\n <!-- END: Built-in Blockly Blocks //-->\n\n </xml>\n";
119
+ //# sourceMappingURL=BlocklyEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlocklyEditor.d.ts","sourceRoot":"","sources":["../../src/components/BlocklyEditor.tsx"],"names":[],"mappings":"AASA,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,OAAO,MAAM,SAAS,CAAC;AAM9B,OAAO,qBAAqB,CAAC;AAG7B;;GAEG;AACH,UAAU,kBAAkB;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAGjD;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IAGxB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,GAAG,SAAS,KAAK,IAAI,CAAC;IAE3E;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAGvC;;;OAGG;IACH,OAAO,CAAC,EAAG,CAAC,OAAO,EAAG,MAAM,KAAK,IAAI,CAAC;CAEzC;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,aAAa,oFA+HxB,CAAC;AAEH,eAAe,aAAa,CAAC;AAG7B;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,GAAG,SAAS,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAuBjG,CAAA;AAKD,eAAO,MAAM,eAAe,8vVAgT3B,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import React,{forwardRef,useImperativeHandle,useCallback,useState}from"react";import Blockly from"blockly";import{pythonGenerator}from"blockly/python";import{BlocklyWorkspace}from"react-blockly";import"./BlocklyEditor.css";export const BlocklyEditor=forwardRef(((e,n)=>{const[l,t]=useState(""),[a,o]=useState(""),[c,d]=useState(0),[s,i]=useState(0),[m,r]=useState(void 0),b=React.createRef();useImperativeHandle(n,(()=>({newBlockly(){m&&m.clear()},loadBlockly(n){if(m)try{m.clear();const e=Blockly.utils.xml.textToDom(n);Blockly.Xml.domToWorkspace(e,m)}catch(n){e.onError&&e.onError(`${n}`)}}}))),React.useEffect((()=>(y(),window.addEventListener("resize",y),()=>{window.removeEventListener("resize",y)})),[]);const y=useCallback((()=>{if(b.current){let n=0,l=0,t=b.current.parentElement;for(;null!==t&&(n=t.offsetWidth,l=t.offsetHeight,!(t.className.indexOf("blockly-container")>=0));)t=t.parentElement;n<300&&(n=300),l<300&&(l=300),d(.9*n+e.widthAdjustment),i(.9*l+e.heightAdjustment)}}),[e.widthAdjustment,e.heightAdjustment]);return _jsx("div",{ref:b,style:{width:c,height:s},children:_jsx(BlocklyWorkspace,{className:"fill-height",toolboxConfiguration:e.toolbox,initialXml:e.initialXml,onWorkspaceChange:n=>{const l=pythonGenerator.workspaceToCode(n);o(l),e.onWorkspaceChanged&&e.onWorkspaceChanged(n),e.onCodeChanged&&e.onCodeChanged(l)},onXmlChange:n=>{t(n),void 0!==e.onXmlChanged&&null!==e.onXmlChanged&&e.onXmlChanged(n)},onInject:e=>{r(e)},workspaceConfiguration:{grid:{spacing:20,length:3,colour:"#ccc",snap:!0}}})})}));export default BlocklyEditor;export const createCustomToolbox=(e,n)=>{const l="\x3c!-- END: Built-in Blockly Blocks //--\x3e",t=StandardToolbox.indexOf("\x3c!-- BEGIN: Built-in Blockly Blocks //--\x3e"),a=StandardToolbox.indexOf(l);if(-1===t||-1===a)throw new Error("Could not find markers in standard toolbox");return StandardToolbox.slice(0,t)+(e||"")+StandardToolbox.slice(t,a+39)+(n||"")+StandardToolbox.slice(a+39+1)};export const StandardToolbox='\n <xml id="toolbox" style="display: none">\n \x3c!-- BEGIN: Built-in Blockly Blocks //--\x3e\n <category name="Logic" categorystyle="logic_category">\n <block type="controls_if"></block>\n <block type="logic_compare"></block>\n <block type="logic_operation"></block>\n <block type="logic_negate"></block>\n <block type="logic_boolean"></block>\n <block type="logic_null" disabled="true"></block>\n <block type="logic_ternary"></block>\n </category>\n <category name="Loops" categorystyle="loop_category">\n <block type="controls_repeat_ext">\n <value name="TIMES">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n </block>\n <block type="controls_repeat" disabled="true"></block>\n <block type="controls_whileUntil"></block>\n <block type="controls_for">\n <value name="FROM">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="TO">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n <value name="BY">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>\n <block type="controls_forEach"></block>\n <block type="controls_flow_statements"></block>\n </category>\n <category name="Math" categorystyle="math_category">\n <block type="math_number" gap="32">\n <field name="NUM">123</field>\n </block>\n <block type="math_arithmetic">\n <value name="A">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="B">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>\n <block type="math_single">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">9</field>\n </shadow>\n </value>\n </block>\n <block type="math_trig">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">45</field>\n </shadow>\n </value>\n </block>\n <block type="math_constant"></block>\n <block type="math_number_property">\n <value name="NUMBER_TO_CHECK">\n <shadow type="math_number">\n <field name="NUM">0</field>\n </shadow>\n </value>\n </block>\n <block type="math_round">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">3.1</field>\n </shadow>\n </value>\n </block>\n <block type="math_on_list"></block>\n <block type="math_modulo">\n <value name="DIVIDEND">\n <shadow type="math_number">\n <field name="NUM">64</field>\n </shadow>\n </value>\n <value name="DIVISOR">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n </block>\n <block type="math_constrain">\n <value name="VALUE">\n <shadow type="math_number">\n <field name="NUM">50</field>\n </shadow>\n </value>\n <value name="LOW">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="HIGH">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n </block>\n <block type="math_random_int">\n <value name="FROM">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="TO">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n </block>\n <block type="math_random_float"></block>\n <block type="math_atan2">\n <value name="X">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="Y">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>\n </category>\n <category name="Text" categorystyle="text_category">\n <block type="text"></block>\n <block type="text_multiline"></block>\n <block type="text_join"></block>\n <block type="text_append">\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <block type="text_length">\n <value name="VALUE">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_isEmpty">\n <value name="VALUE">\n <shadow type="text">\n <field name="TEXT"></field>\n </shadow>\n </value>\n </block>\n <block type="text_indexOf">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n <value name="FIND">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_charAt">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n </block>\n <block type="text_getSubstring">\n <value name="STRING">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n </block>\n <block type="text_changeCase">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_trim">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_count">\n <value name="SUB">\n <shadow type="text"></shadow>\n </value>\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <block type="text_replace">\n <value name="FROM">\n <shadow type="text"></shadow>\n </value>\n <value name="TO">\n <shadow type="text"></shadow>\n </value>\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <block type="text_reverse">\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <label text="Input/Output:" web-class="ioLabel"></label>\n <block type="text_print">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_prompt_ext">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n </category>\n <category name="Lists" categorystyle="list_category">\n <block type="lists_create_with">\n <mutation items="0"></mutation>\n </block>\n <block type="lists_create_with"></block>\n <block type="lists_repeat">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">5</field>\n </shadow>\n </value>\n </block>\n <block type="lists_length"></block>\n <block type="lists_isEmpty"></block>\n <block type="lists_indexOf">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_getIndex">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_setIndex">\n <value name="LIST">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_getSublist">\n <value name="LIST">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_split">\n <value name="DELIM">\n <shadow type="text">\n <field name="TEXT">,</field>\n </shadow>\n </value>\n </block>\n <block type="lists_sort"></block>\n <block type="lists_reverse"></block>\n </category>\n <category name="Variables" categorystyle="variable_category" custom="VARIABLE"></category>\n <category name="Functions" categorystyle="procedure_category" custom="PROCEDURE"></category>\n\n \x3c!-- END: Built-in Blockly Blocks //--\x3e\n\n </xml>\n';
1
+ import{jsx as _jsx}from"react/jsx-runtime";import React,{forwardRef,useImperativeHandle,useCallback,useState}from"react";import Blockly from"blockly";import{pythonGenerator}from"blockly/python";import{BlocklyWorkspace}from"react-blockly";import"./BlocklyEditor.css";export const BlocklyEditor=forwardRef((e,n)=>{const[l,t]=useState(""),[a,o]=useState(""),[c,d]=useState(0),[s,i]=useState(0),[m,r]=useState(void 0),b=React.createRef();useImperativeHandle(n,()=>({newBlockly(){m&&m.clear()},loadBlockly(n){if(m)try{m.clear();const e=Blockly.utils.xml.textToDom(n);Blockly.Xml.domToWorkspace(e,m)}catch(n){e.onError&&e.onError(`${n}`)}}})),React.useEffect(()=>(y(),window.addEventListener("resize",y),()=>{window.removeEventListener("resize",y)}),[]);const y=useCallback(()=>{if(b.current){let n=0,l=0,t=b.current.parentElement;for(;null!==t&&(n=t.offsetWidth,l=t.offsetHeight,!(t.className.indexOf("blockly-container")>=0));)t=t.parentElement;n<300&&(n=300),l<300&&(l=300),d(.9*n+e.widthAdjustment),i(.9*l+e.heightAdjustment)}},[e.widthAdjustment,e.heightAdjustment]);return _jsx("div",{ref:b,style:{width:c,height:s},children:_jsx(BlocklyWorkspace,{className:"fill-height",toolboxConfiguration:e.toolbox,initialXml:e.initialXml,onWorkspaceChange:n=>{const l=pythonGenerator.workspaceToCode(n);o(l),e.onWorkspaceChanged&&e.onWorkspaceChanged(n),e.onCodeChanged&&e.onCodeChanged(l)},onXmlChange:n=>{t(n),void 0!==e.onXmlChanged&&null!==e.onXmlChanged&&e.onXmlChanged(n)},onInject:e=>{r(e)},workspaceConfiguration:{grid:{spacing:20,length:3,colour:"#ccc",snap:!0}}})})});export default BlocklyEditor;export const createCustomToolbox=(e,n)=>{const l="\x3c!-- END: Built-in Blockly Blocks //--\x3e",t=StandardToolbox.indexOf("\x3c!-- BEGIN: Built-in Blockly Blocks //--\x3e"),a=StandardToolbox.indexOf(l);if(-1===t||-1===a)throw new Error("Could not find markers in standard toolbox");return StandardToolbox.slice(0,t)+(e||"")+StandardToolbox.slice(t,a+39)+(n||"")+StandardToolbox.slice(a+39+1)};export const StandardToolbox='\n <xml id="toolbox" style="display: none">\n \x3c!-- BEGIN: Built-in Blockly Blocks //--\x3e\n <category name="Logic" categorystyle="logic_category">\n <block type="controls_if"></block>\n <block type="logic_compare"></block>\n <block type="logic_operation"></block>\n <block type="logic_negate"></block>\n <block type="logic_boolean"></block>\n <block type="logic_null" disabled="true"></block>\n <block type="logic_ternary"></block>\n </category>\n <category name="Loops" categorystyle="loop_category">\n <block type="controls_repeat_ext">\n <value name="TIMES">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n </block>\n <block type="controls_repeat" disabled="true"></block>\n <block type="controls_whileUntil"></block>\n <block type="controls_for">\n <value name="FROM">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="TO">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n <value name="BY">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>\n <block type="controls_forEach"></block>\n <block type="controls_flow_statements"></block>\n </category>\n <category name="Math" categorystyle="math_category">\n <block type="math_number" gap="32">\n <field name="NUM">123</field>\n </block>\n <block type="math_arithmetic">\n <value name="A">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="B">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>\n <block type="math_single">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">9</field>\n </shadow>\n </value>\n </block>\n <block type="math_trig">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">45</field>\n </shadow>\n </value>\n </block>\n <block type="math_constant"></block>\n <block type="math_number_property">\n <value name="NUMBER_TO_CHECK">\n <shadow type="math_number">\n <field name="NUM">0</field>\n </shadow>\n </value>\n </block>\n <block type="math_round">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">3.1</field>\n </shadow>\n </value>\n </block>\n <block type="math_on_list"></block>\n <block type="math_modulo">\n <value name="DIVIDEND">\n <shadow type="math_number">\n <field name="NUM">64</field>\n </shadow>\n </value>\n <value name="DIVISOR">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n </block>\n <block type="math_constrain">\n <value name="VALUE">\n <shadow type="math_number">\n <field name="NUM">50</field>\n </shadow>\n </value>\n <value name="LOW">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="HIGH">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n </block>\n <block type="math_random_int">\n <value name="FROM">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="TO">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n </block>\n <block type="math_random_float"></block>\n <block type="math_atan2">\n <value name="X">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="Y">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>\n </category>\n <category name="Text" categorystyle="text_category">\n <block type="text"></block>\n <block type="text_multiline"></block>\n <block type="text_join"></block>\n <block type="text_append">\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <block type="text_length">\n <value name="VALUE">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_isEmpty">\n <value name="VALUE">\n <shadow type="text">\n <field name="TEXT"></field>\n </shadow>\n </value>\n </block>\n <block type="text_indexOf">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n <value name="FIND">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_charAt">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n </block>\n <block type="text_getSubstring">\n <value name="STRING">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n </block>\n <block type="text_changeCase">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_trim">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_count">\n <value name="SUB">\n <shadow type="text"></shadow>\n </value>\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <block type="text_replace">\n <value name="FROM">\n <shadow type="text"></shadow>\n </value>\n <value name="TO">\n <shadow type="text"></shadow>\n </value>\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <block type="text_reverse">\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>\n <label text="Input/Output:" web-class="ioLabel"></label>\n <block type="text_print">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n <block type="text_prompt_ext">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>\n </category>\n <category name="Lists" categorystyle="list_category">\n <block type="lists_create_with">\n <mutation items="0"></mutation>\n </block>\n <block type="lists_create_with"></block>\n <block type="lists_repeat">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">5</field>\n </shadow>\n </value>\n </block>\n <block type="lists_length"></block>\n <block type="lists_isEmpty"></block>\n <block type="lists_indexOf">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_getIndex">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_setIndex">\n <value name="LIST">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_getSublist">\n <value name="LIST">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>\n <block type="lists_split">\n <value name="DELIM">\n <shadow type="text">\n <field name="TEXT">,</field>\n </shadow>\n </value>\n </block>\n <block type="lists_sort"></block>\n <block type="lists_reverse"></block>\n </category>\n <category name="Variables" categorystyle="variable_category" custom="VARIABLE"></category>\n <category name="Functions" categorystyle="procedure_category" custom="PROCEDURE"></category>\n\n \x3c!-- END: Built-in Blockly Blocks //--\x3e\n\n </xml>\n';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { editor } from 'monaco-editor';
3
- import { Monaco } from '@monaco-editor/react';
3
+ import { type Monaco } from '@monaco-editor/react';
4
4
  interface CodeEditorProps {
5
5
  /**
6
6
  * Code content of the editor
@@ -74,3 +74,4 @@ export declare class CodeEditor extends React.Component<CodeEditorProps> {
74
74
  render(): import("react/jsx-runtime").JSX.Element;
75
75
  }
76
76
  export default CodeEditor;
77
+ //# sourceMappingURL=CodeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../src/components/CodeEditor.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAe,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG3D,UAAU,eAAe;IAErB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzB;;;OAGG;IACH,QAAQ,EAAG,MAAM,CAAC;IAElB;;;OAGG;IACH,KAAK,EAAG,SAAS,GAAG,UAAU,CAAC;IAE/B;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAG3G,4DAA4D;IAC5D,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAClD;AAGD;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IAG5D;;OAEG;IACH,MAAM,CAAC,YAAY;;;;;;;MAOlB;IAED;;;OAGG;gBACS,KAAK,EAAE,eAAe;IAKlC;;;;OAIG;IACH,cAAc,GAAI,QAAQ,MAAM,CAAC,qBAAqB,EAAE,QAAQ,MAAM,UAGpE;IAEF;;;OAGG;IACH,qBAAqB,GAAI,QAAQ,MAAM,UAEtC;IAGD;;;;OAIG;IACH,QAAQ,GAAI,UAAU,MAAM,GAAG,SAAS,EAAE,GAAG,GAAG,UAK9C;IAGF,sBAAsB,GAAI,SAAS,MAAM,CAAC,OAAO,EAAE,UAGlD;IAGD;;;OAGG;IACH,MAAM;CA8BT;AAED,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import*as React from"react";import Editor from"@monaco-editor/react";export class CodeEditor extends React.Component{constructor(e){super(e),Object.defineProperty(this,"editorDidMount",{enumerable:!0,configurable:!0,writable:!0,value:(e,o)=>{e.focus()}}),Object.defineProperty(this,"handleEditorWillMount",{enumerable:!0,configurable:!0,writable:!0,value:e=>{}}),Object.defineProperty(this,"onChange",{enumerable:!0,configurable:!0,writable:!0,value:(e,o)=>{void 0!==this.props.onCodeChanged&&null!==this.props.onCodeChanged&&this.props.onCodeChanged(e)}}),Object.defineProperty(this,"handleEditorValidation",{enumerable:!0,configurable:!0,writable:!0,value:e=>{e.forEach((e=>{}))}})}render(){const e={selectOnLineNumbers:!0,roundedSelection:!1,readOnly:this.props.readOnly,cursorStyle:this.props.cursorStyle,automaticLayout:!0,theme:this.props.theme,language:this.props.language,folding:!1};return _jsx(Editor,{value:this.props.code,height:"100%",width:"100%",defaultLanguage:"python",defaultValue:"",onChange:this.onChange,onMount:this.editorDidMount,beforeMount:this.handleEditorWillMount,onValidate:this.handleEditorValidation,theme:"vs-dark",options:e})}}Object.defineProperty(CodeEditor,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{code:void 0,language:"python",theme:"vs-dark",readOnly:!1,cursorStyle:"line",onCodeChanged:void 0}});export default CodeEditor;
1
+ import{jsx as _jsx}from"react/jsx-runtime";import*as React from"react";import{editor}from"monaco-editor";import Editor,{}from"@monaco-editor/react";export class CodeEditor extends React.Component{constructor(e){super(e),Object.defineProperty(this,"editorDidMount",{enumerable:!0,configurable:!0,writable:!0,value:(e,o)=>{e.focus()}}),Object.defineProperty(this,"handleEditorWillMount",{enumerable:!0,configurable:!0,writable:!0,value:e=>{}}),Object.defineProperty(this,"onChange",{enumerable:!0,configurable:!0,writable:!0,value:(e,o)=>{void 0!==this.props.onCodeChanged&&null!==this.props.onCodeChanged&&this.props.onCodeChanged(e)}}),Object.defineProperty(this,"handleEditorValidation",{enumerable:!0,configurable:!0,writable:!0,value:e=>{e.forEach(e=>{})}})}render(){const e={selectOnLineNumbers:!0,roundedSelection:!1,readOnly:this.props.readOnly,cursorStyle:this.props.cursorStyle,automaticLayout:!0,theme:this.props.theme,language:this.props.language,folding:!1};return _jsx(Editor,{value:this.props.code,height:"100%",width:"100%",defaultLanguage:"python",defaultValue:"",onChange:this.onChange,onMount:this.editorDidMount,beforeMount:this.handleEditorWillMount,onValidate:this.handleEditorValidation,theme:"vs-dark",options:e})}}Object.defineProperty(CodeEditor,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{code:void 0,language:"python",theme:"vs-dark",readOnly:!1,cursorStyle:"line",onCodeChanged:void 0}});export default CodeEditor;
@@ -76,3 +76,4 @@ type FileListProps = {
76
76
  */
77
77
  export declare const FileList: React.FC<FileListProps>;
78
78
  export default FileList;
79
+ //# sourceMappingURL=FileList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileList.d.ts","sourceRoot":"","sources":["../../src/components/FileList.tsx"],"names":[],"mappings":"AASA;;;;;;GAMG;AAEH,OAAO,KAA0C,MAAM,OAAO,CAAC;AAY/D;;GAEG;AACH;;GAEG;AACH,KAAK,aAAa,GAAG;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,SAAS,CAAC,EAAG,CAAC,OAAO,EAAC,MAAM,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,OAAO,CAAC,EAAG,CAAC,OAAO,EAAC,MAAM,KAAK,IAAI,CAAC;CACvC,CAAA;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8Q5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import React,{useState,useContext,useEffect}from"react";import{DataTable}from"primereact/datatable";import{Column}from"primereact/column";import{Toolbar}from"primereact/toolbar";import{Button}from"primereact/button";import{confirmPopup}from"primereact/confirmpopup";import{FileUpload}from"primereact/fileupload";import{EventEmitterContext}from"../core/EventEmitterContext";export const FileList=({domain:e="DATASTORE",enableUpload:t=!1,subdir:o,filter:a=".json",onSuccess:n,onError:i})=>{const[r,l]=useState(0),{invoke:s}=useContext(EventEmitterContext),[c,d]=useState(),m=e=>null!==e?void 0!==o?`${o}/${e}`:e:"",p=async()=>{try{const t=void 0!==o?{subdir:o}:{};let a=await s(e,"list_files",t),n=[];for(let e=0;e<a.data.length;++e){const t=a.data[e];n.push({id:e+1,name:t})}d(n)}catch(e){i&&i(`Failed to upload file list: ${e}`)}};const u=()=>{l((e=>e+1))},f=`File Listing [/${void 0!==o?o:""}]`,x=_jsx(React.Fragment,{children:_jsx("span",{style:{fontWeight:600},children:f})}),b=_jsxs(React.Fragment,{children:[t&&_jsx(FileUpload,{customUpload:!0,auto:!0,uploadHandler:async t=>{const o=t.files[0];let a=m(o.name);const r=new FileReader;r.onload=async t=>{const r=t.target?.result,l=function c(e){let t="",o=new Uint8Array(e),a=o.byteLength;for(let e=0;e<a;e++)t+=String.fromCharCode(o[e]);return window.btoa(t)}(r);try{await s(e,"write_file",{file_name:a,value:l,options:{base64:!0}}),n&&n(`Uploaded file ${o.name}`),p()}catch(e){i&&i(`Failed to upload file: ${e}`)}u()},r.onerror=e=>{i&&i(`Error reading file: ${e}`)},r.readAsArrayBuffer(o)},accept:a,maxFileSize:25e3,mode:"basic",chooseLabel:"",chooseOptions:{icon:"pi pi-upload",className:"p-button-icon-only p-button-text p-button-rounded p-mr-2"}},r),_jsx(Button,{icon:"pi pi-refresh",onClick:()=>{p()},className:"p-button-rounded p-mr-2","aria-label":"Refresh",size:"small",rounded:!0,text:!0})]}),h=(t,o)=>{confirmPopup({target:o.currentTarget,message:`Are you want to delete file ${t.name}?\nWARNING: This cannot be undone.`,icon:"pi pi-info-circle",defaultFocus:"reject",acceptClassName:"p-button-danger",accept:()=>(async t=>{let o=m(t);try{await s(e,"delete_file",{file_name:o}),n&&n(`Deleted file: ${t}`),p()}catch(e){i&&i(`Failed to delete file: ${e}`)}p()})(t.name)})};return useEffect((()=>(p(),()=>{})),[e,t]),_jsxs("div",{children:[_jsx(Toolbar,{start:x,end:b,style:{padding:"1mm"}}),_jsxs(DataTable,{value:c,children:[_jsx(Column,{field:"name",header:"Name"}),_jsx(Column,{body:t=>_jsxs(_Fragment,{children:[_jsx(Button,{icon:"pi pi-download",onClick:()=>(async t=>{let o=m(t.name);try{await s(e,"download_file",{file_name:o}),n&&n(`Downloaded file: ${t.name}`)}catch(e){i&&i(`Failed downloading file: ${e}`)}})(t),className:"p-button-rounded p-button-success p-mr-2",style:{marginRight:"2mm"},size:"small"}),_jsx(Button,{icon:"pi pi-trash",onClick:e=>h(t,e),className:"p-button-rounded p-button-danger",size:"small"})]}),header:"Actions"})]})]})};export default FileList;
1
+ import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import React,{useState,useContext,useEffect}from"react";import{DataTable}from"primereact/datatable";import{Column}from"primereact/column";import{Toolbar}from"primereact/toolbar";import{Button}from"primereact/button";import{confirmPopup}from"primereact/confirmpopup";import{FileUpload}from"primereact/fileupload";import{EventEmitterContext}from"../core/EventEmitterContext";import{MessageType}from"../hub/CommandMessage";export const FileList=({domain:e="DATASTORE",enableUpload:t=!1,subdir:a,filter:o=".json",onSuccess:n,onError:i})=>{const[r,s]=useState(0),{invoke:l}=useContext(EventEmitterContext),[c,m]=useState(),d=e=>null!==e?void 0!==a?`${a}/${e}`:e:"",p=async()=>{try{const t=void 0!==a?{subdir:a}:{};let o=await l(`${e}.list_files`,MessageType.Request,t),n=[];for(let e=0;e<o.data.length;++e){const t=o.data[e];n.push({id:e+1,name:t})}m(n)}catch(e){i&&i(`Failed to upload file list: ${e}`)}};const u=()=>{s(e=>e+1)},f=`File Listing [/${void 0!==a?a:""}]`,b=_jsx(React.Fragment,{children:_jsx("span",{style:{fontWeight:600},children:f})}),x=_jsxs(React.Fragment,{children:[t&&_jsx(FileUpload,{customUpload:!0,auto:!0,uploadHandler:async t=>{const a=t.files[0];let o=d(a.name);const r=new FileReader;r.onload=async t=>{const r=t.target?.result,s=function c(e){let t="",a=new Uint8Array(e),o=a.byteLength;for(let e=0;e<o;e++)t+=String.fromCharCode(a[e]);return window.btoa(t)}(r);try{await l(`${e}.write_file`,MessageType.Request,{file_name:o,value:s,options:{base64:!0}}),n&&n(`Uploaded file ${a.name}`),p()}catch(e){i&&i(`Failed to upload file: ${e}`)}u()},r.onerror=e=>{i&&i(`Error reading file: ${e}`)},r.readAsArrayBuffer(a)},accept:o,maxFileSize:25e3,mode:"basic",chooseLabel:"",chooseOptions:{icon:"pi pi-upload",className:"p-button-icon-only p-button-text p-button-rounded p-mr-2"}},r),_jsx(Button,{icon:"pi pi-refresh",onClick:()=>{p()},className:"p-button-rounded p-mr-2","aria-label":"Refresh",size:"small",rounded:!0,text:!0})]}),g=(t,a)=>{confirmPopup({target:a.currentTarget,message:`Are you want to delete file ${t.name}?\nWARNING: This cannot be undone.`,icon:"pi pi-info-circle",defaultFocus:"reject",acceptClassName:"p-button-danger",accept:()=>(async t=>{let a=d(t);try{await l(`${e}.delete_file`,MessageType.Request,{file_name:a}),n&&n(`Deleted file: ${t}`),p()}catch(e){i&&i(`Failed to delete file: ${e}`)}p()})(t.name)})};return useEffect(()=>(p(),()=>{}),[e,t]),_jsxs("div",{children:[_jsx(Toolbar,{start:b,end:x,style:{padding:"1mm"}}),_jsxs(DataTable,{value:c,children:[_jsx(Column,{field:"name",header:"Name"}),_jsx(Column,{body:t=>_jsxs(_Fragment,{children:[_jsx(Button,{icon:"pi pi-download",onClick:()=>(async t=>{let a=d(t.name);try{await l(`${e}.download_file`,MessageType.Request,{file_name:a}),n&&n(`Downloaded file: ${t.name}`)}catch(e){i&&i(`Failed downloading file: ${e}`)}})(t),className:"p-button-rounded p-button-success p-mr-2",style:{marginRight:"2mm"},size:"small"}),_jsx(Button,{icon:"pi pi-trash",onClick:e=>g(t,e),className:"p-button-rounded p-button-danger",size:"small"})]}),header:"Actions"})]})]})};export default FileList;
@@ -10,3 +10,4 @@ type FileSelectProps = {
10
10
  };
11
11
  export declare const FileSelect: React.FC<FileSelectProps>;
12
12
  export default FileSelect;
13
+ //# sourceMappingURL=FileSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSelect.d.ts","sourceRoot":"","sources":["../../src/components/FileSelect.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,KAAK,eAAe,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAOD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0FhD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useState,useContext,useEffect}from"react";import{DataTable}from"primereact/datatable";import{Column}from"primereact/column";import{Button}from"primereact/button";import{EventEmitterContext}from"../core/EventEmitterContext";export const FileSelect=({domain:e="DATASTORE",subdir:t,filter:n,onFileSelected:l,onAccept:i,onCancel:o})=>{const{invoke:a}=useContext(EventEmitterContext),[s,c]=useState([]),[r,m]=useState(null),u=e=>{m(e),l&&l(e.name)};return useEffect((()=>{(async()=>{try{let l;l=null!=n?t?{subdir:t,options:{filter:n}}:{options:{filter:n}}:t?{subdir:t}:{};const i=(await a(e,"list_files",l)).data.map(((e,t)=>({id:t+1,name:e})));c(i)}catch(e){}})()}),[e,t]),_jsxs("div",{children:[_jsxs(DataTable,{value:s,selectionMode:"single",selection:r,onSelectionChange:e=>u(e.value),children:[_jsx(Column,{field:"name",header:"File Name"}),_jsx(Column,{body:e=>_jsx(Button,{label:r?.name===e.name?"Selected":"Select",icon:r?.name===e.name?"pi pi-check-circle":"pi pi-circle-off",onClick:()=>u(e),className:"p-button-rounded "+(r?.name===e.name?"p-button-success":"p-button-outlined"),"aria-label":"Select",size:"small"}),header:"Select"})]}),_jsxs("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"10px"},children:[_jsx(Button,{label:"Cancel",icon:"pi pi-times",className:"p-button-text",onClick:o}),_jsx(Button,{label:"Accept",icon:"pi pi-check",className:"p-button",onClick:()=>{void 0!==i&&null!==r&&i(null!==r?void 0!==t?`${t}/${r.name}`:r.name:"")},disabled:!r})]})]})};export default FileSelect;
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import React,{useState,useContext,useEffect}from"react";import{DataTable}from"primereact/datatable";import{Column}from"primereact/column";import{Button}from"primereact/button";import{EventEmitterContext}from"../core/EventEmitterContext";import{MessageType}from"../hub/CommandMessage";export const FileSelect=({domain:e="DATASTORE",subdir:t,filter:n,onFileSelected:l,onAccept:a,onCancel:i})=>{const{invoke:o}=useContext(EventEmitterContext),[s,c]=useState([]),[r,m]=useState(null),u=e=>{m(e),l&&l(e.name)};return useEffect(()=>{(async()=>{try{let l;l=null!=n?t?{subdir:t,options:{filter:n}}:{options:{filter:n}}:t?{subdir:t}:{};const a=(await o(`${e}.list_files`,MessageType.Request,l)).data.map((e,t)=>({id:t+1,name:e}));c(a)}catch(e){}})()},[e,t]),_jsxs("div",{children:[_jsxs(DataTable,{value:s,selectionMode:"single",selection:r,onSelectionChange:e=>u(e.value),children:[_jsx(Column,{field:"name",header:"File Name"}),_jsx(Column,{body:e=>_jsx(Button,{label:r?.name===e.name?"Selected":"Select",icon:r?.name===e.name?"pi pi-check-circle":"pi pi-circle-off",onClick:()=>u(e),className:"p-button-rounded "+(r?.name===e.name?"p-button-success":"p-button-outlined"),"aria-label":"Select",size:"small"}),header:"Select"})]}),_jsxs("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"10px"},children:[_jsx(Button,{label:"Cancel",icon:"pi pi-times",className:"p-button-text",onClick:i}),_jsx(Button,{label:"Accept",icon:"pi pi-check",className:"p-button",onClick:()=>{void 0!==a&&null!==r&&a(null!==r?void 0!==t?`${t}/${r.name}`:r.name:"")},disabled:!r})]})]})};export default FileSelect;
@@ -11,3 +11,4 @@ interface FitTextProps {
11
11
  */
12
12
  export declare const FitText: React.FC<FitTextProps>;
13
13
  export default FitText;
14
+ //# sourceMappingURL=FitText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FitText.d.ts","sourceRoot":"","sources":["../../src/components/FitText.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,YAAY;IACpB,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAQ1C,CAAC;AAGF,eAAe,OAAO,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import useFitText from"use-fit-text";export const FitText=({children:t})=>{const{fontSize:e,ref:i}=useFitText();return _jsx("div",{ref:i,style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},children:_jsx("p",{style:{fontSize:e},children:t})})};export default FitText;
1
+ import{jsx as _jsx}from"react/jsx-runtime";import React from"react";import useFitText from"use-fit-text";export const FitText=({children:t})=>{const{fontSize:e,ref:i}=useFitText();return _jsx("div",{ref:i,style:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},children:_jsx("p",{style:{fontSize:e},children:t})})};export default FitText;
@@ -1,5 +1,5 @@
1
1
  import React, { Component } from 'react';
2
- import { EventEmitterContextType } from '../core/EventEmitterContext';
2
+ import { type EventEmitterContextType } from '../core/EventEmitterContext';
3
3
  import { IndicatorColor } from "../core/IndicatorColor";
4
4
  export { IndicatorColor };
5
5
  interface IndicatorProps {
@@ -64,3 +64,4 @@ export declare class Indicator extends Component<IndicatorProps, IndicatorState>
64
64
  render(): import("react/jsx-runtime").JSX.Element;
65
65
  }
66
66
  export default Indicator;
67
+ //# sourceMappingURL=Indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Indicator.d.ts","sourceRoot":"","sources":["../../src/components/Indicator.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,CAAA;AAOvB,UAAU,cAAc;IAGpB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAGzB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAGlB;AAGD,UAAU,cAAc;IACpB,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,qBAAa,SAAU,SAAQ,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IACpE,MAAM,CAAC,WAAW,yCAAuB;IACzC,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGnD,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,cAAc;IAQjC,iBAAiB;IAUjB,kBAAkB,CAAC,SAAS,EAAE,cAAc;IAM5C,oBAAoB;IAQpB,MAAM;CA8DT;AAED,eAAe,SAAS,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Component}from"react";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"../core/IndicatorColor";export{IndicatorColor};export class Indicator extends Component{constructor(e){super(e),Object.defineProperty(this,"unsubscribeTopicId",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.state={subscribedValue:e.value,fontSize:"100%"}}componentDidMount(){const{topic:e}=this.props;if(e&&null===this.unsubscribeTopicId){const{subscribe:t}=this.context;this.unsubscribeTopicId=t(e,(e=>{this.setState({subscribedValue:e})}))}}componentDidUpdate(e){e.value!==this.props.value&&this.setState({subscribedValue:this.props.value})}componentWillUnmount(){if(null!==this.unsubscribeTopicId){const{unsubscribe:e}=this.context;e(this.unsubscribeTopicId),this.unsubscribeTopicId=null}}render(){const{label:e,value:t,onColor:o,offColor:r,invalidColor:s}=this.props,{subscribedValue:i}=this.state;let n,a=i;switch(void 0!==t&&(a=t),a){case!0:n=o;break;case!1:n=r;break;default:n=s}return _jsxs("div",{className:"p-inputgroup flex-1",style:{alignItems:"center !important"},children:[_jsx("span",{className:"p-inputgroup-addon",style:{backgroundColor:n,width:"22px"},children:" "}),_jsx("span",{className:"p-inputgroup-addon",children:e})]})}}Object.defineProperty(Indicator,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:EventEmitterContext}),Object.defineProperty(Indicator,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{onColor:"green",offColor:"gray",invalidColor:"black"}});export default Indicator;
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import React,{Component}from"react";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"../core/IndicatorColor";export{IndicatorColor};export class Indicator extends Component{constructor(e){super(e),Object.defineProperty(this,"unsubscribeTopicId",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.state={subscribedValue:e.value,fontSize:"100%"}}componentDidMount(){const{topic:e}=this.props;if(e&&null===this.unsubscribeTopicId){const{subscribe:t}=this.context;this.unsubscribeTopicId=t(e,e=>{this.setState({subscribedValue:e})})}}componentDidUpdate(e){e.value!==this.props.value&&this.setState({subscribedValue:this.props.value})}componentWillUnmount(){if(null!==this.unsubscribeTopicId){const{unsubscribe:e}=this.context;e(this.unsubscribeTopicId),this.unsubscribeTopicId=null}}render(){const{label:e,value:t,onColor:o,offColor:r,invalidColor:s}=this.props,{subscribedValue:i}=this.state;let n,a=i;switch(void 0!==t&&(a=t),a){case!0:n=o;break;case!1:n=r;break;default:n=s}return _jsxs("div",{className:"p-inputgroup flex-1",style:{alignItems:"center !important"},children:[_jsx("span",{className:"p-inputgroup-addon",style:{backgroundColor:n,width:"22px"},children:" "}),_jsx("span",{className:"p-inputgroup-addon",children:e})]})}}Object.defineProperty(Indicator,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:EventEmitterContext}),Object.defineProperty(Indicator,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{onColor:"green",offColor:"gray",invalidColor:"black"}});export default Indicator;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { ButtonProps } from "primereact/button";
2
+ import { type ButtonProps } from "primereact/button";
3
3
  import { IndicatorColor } from "../core/IndicatorColor";
4
4
  export { IndicatorColor };
5
5
  import { ActionMode } from "../core/ActionMode";
@@ -39,3 +39,4 @@ export interface IndicatorButtonProps extends Omit<ButtonProps, "value"> {
39
39
  }
40
40
  export declare const IndicatorButton: React.FC<IndicatorButtonProps>;
41
41
  export default IndicatorButton;
42
+ //# sourceMappingURL=IndicatorButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndicatorButton.d.ts","sourceRoot":"","sources":["../../src/components/IndicatorButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAK7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,CAAC,OAAO,MAAM,0BAA0B,GAC1C,MAAM,EAAE,GACR,SAAS,EAAE,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACtE,2GAA2G;IAC3G,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAElC,mDAAmD;IACnD,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,0BAA0B,CAAC;IAErC,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mDAAmD;IACnD,WAAW,CAAC,EAAE,GAAG,CAAC;IAElB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAKD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiJ1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useCallback,useContext,useEffect,useState}from"react";import{Button}from"primereact/button";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"../core/IndicatorColor";export{IndicatorColor};import{ActionMode}from"../core/ActionMode";export{ActionMode};const toPrimeIcon=o=>o?o.includes("pi ")?o:`pi ${o}`:void 0;export const IndicatorButton=({topic:o,value:t,onColor:e=IndicatorColor.IndicatorGreen,offColor:n="gray",options:r,icon:i,onIcon:c,offIcon:a,command:s,commandTopic:l,commandArgs:d,actionMode:u,invert:m,className:f,label:p,style:C,disabled:b,hidden:I,...x})=>{const{subscribe:g,unsubscribe:v,dispatch:h}=useContext(EventEmitterContext),[M,E]=useState(void 0),[y,A]=useState(!1);useEffect((()=>{if(!o||!g)return;const t=g(o,(o=>E(o)));return()=>{try{v&&void 0!==t&&v(t)}catch{}}}),[o,g,v]);const S=void 0!==t?t:M,k=(()=>{if(!r||0===r.length)return p;if(r.length>2){if("number"==typeof S){const o=Math.trunc(S);if(o>=0&&o<r.length&&null!=r[o])return String(r[o])}else if("string"==typeof S){const o=r.findIndex((o=>o===S));if(o>=0)return String(r[o])}return p}const o=S?r[1]:r[0];return null!=o&&String(o).length>0?String(o):p})(),T=toPrimeIcon((S?c:a)??i);let j=S?e:n;void 0===S&&(j=IndicatorColor.IndicatorInvalid);const B=useCallback((o=>{if(!s||!h)return;const t={topic:l,value:m?!o:o,...d??{}};h({topic:s,payload:t})}),[s,h,m,d,l]),P=useCallback((()=>{y||(A(!0),u!==ActionMode.Tap&&u!==ActionMode.Pressed||B(!0))}),[y,u,B]),w=useCallback((()=>{y&&(A(!1),u===ActionMode.Tap?B(!1):u===ActionMode.Released&&B(!0))}),[y,u,B]),N={color:"white",backgroundColor:j,display:I?"none":"block",...C??{}};return _jsx(Button,{...x,label:k,icon:T,className:f,style:N,disabled:!!b,onMouseDown:P,onTouchStart:P,onMouseUp:w,onTouchEnd:w})};export default IndicatorButton;
1
+ import{jsx as _jsx}from"react/jsx-runtime";import React,{useCallback,useContext,useEffect,useState}from"react";import{Button}from"primereact/button";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"../core/IndicatorColor";export{IndicatorColor};import{ActionMode}from"../core/ActionMode";export{ActionMode};const toPrimeIcon=o=>o?o.includes("pi ")?o:`pi ${o}`:void 0;export const IndicatorButton=({topic:o,value:t,onColor:e=IndicatorColor.IndicatorGreen,offColor:n="gray",options:r,icon:i,onIcon:c,offIcon:a,command:s,commandTopic:l,commandArgs:d,actionMode:u,invert:m,className:f,label:p,style:C,disabled:b,hidden:I,...x})=>{const{subscribe:g,unsubscribe:v,dispatch:h}=useContext(EventEmitterContext),[M,E]=useState(void 0),[y,A]=useState(!1);useEffect(()=>{if(!o||!g)return;const t=g(o,o=>E(o));return()=>{try{v&&void 0!==t&&v(t)}catch{}}},[o,g,v]);const S=void 0!==t?t:M,k=(()=>{if(!r||0===r.length)return p;if(r.length>2){if("number"==typeof S){const o=Math.trunc(S);if(o>=0&&o<r.length&&null!=r[o])return String(r[o])}else if("string"==typeof S){const o=r.findIndex(o=>o===S);if(o>=0)return String(r[o])}return p}const o=S?r[1]:r[0];return null!=o&&String(o).length>0?String(o):p})(),T=toPrimeIcon((S?c:a)??i);let j=S?e:n;void 0===S&&(j=IndicatorColor.IndicatorInvalid);const B=useCallback(o=>{if(!s||!h)return;const t={topic:l,value:m?!o:o,...d??{}};h({topic:s,payload:t})},[s,h,m,d,l]),P=useCallback(()=>{y||(A(!0),u!==ActionMode.Tap&&u!==ActionMode.Pressed||B(!0))},[y,u,B]),w=useCallback(()=>{y&&(A(!1),u===ActionMode.Tap?B(!1):u===ActionMode.Released&&B(!0))},[y,u,B]),N={color:"white",backgroundColor:j,display:I?"none":"block",...C??{}};return _jsx(Button,{...x,label:k,icon:T,className:f,style:N,disabled:!!b,onMouseDown:P,onTouchStart:P,onMouseUp:w,onTouchEnd:w})};export default IndicatorButton;
@@ -1,5 +1,5 @@
1
1
  import { Component } from 'react';
2
- import { EventEmitterContextType } from '../core/EventEmitterContext';
2
+ import { type EventEmitterContextType } from '../core/EventEmitterContext';
3
3
  import { IndicatorColor } from "../core/IndicatorColor";
4
4
  export { IndicatorColor };
5
5
  /**
@@ -85,3 +85,4 @@ export declare class IndicatorRect extends Component<IndicatorRectProps, Indicat
85
85
  render(): import("react/jsx-runtime").JSX.Element;
86
86
  }
87
87
  export default IndicatorRect;
88
+ //# sourceMappingURL=IndicatorRect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndicatorRect.d.ts","sourceRoot":"","sources":["../../src/components/IndicatorRect.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,kBAAkB;IAE/B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAE/B;AAED,UAAU,kBAAkB;IACxB,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CAC5C;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChF,MAAM,CAAC,WAAW,mDAAuB;IAGzC,MAAM,CAAC,YAAY;;;MAGjB;gBAEU,KAAK,EAAE,kBAAkB;IAOrC,iBAAiB;IAIjB,oBAAoB;IAIpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAEvB;IAEF,MAAM;CAuCT;AAED,eAAe,aAAa,CAAC"}
@@ -116,3 +116,4 @@ export declare class JogPanel extends React.Component<JogPanelProps, JogPanelSta
116
116
  render(): import("react/jsx-runtime").JSX.Element;
117
117
  }
118
118
  export default JogPanel;
119
+ //# sourceMappingURL=JogPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JogPanel.d.ts","sourceRoot":"","sources":["../../src/components/JogPanel.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,gBAAgB,CAAC;AAQxB;;GAEG;AACH,oBAAY,cAAc;IACtB,mCAAmC;IACnC,OAAO,IAAO;IAEd,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,IAAO;IAEhB,SAAS,KAAO;IAEhB,SAAS,KAAO;IAEhB,SAAS,KAAO;IAEhB,2BAA2B;IAC3B,IAAI,MAAO;CACd;AAGD;;GAEG;AACH,oBAAY,iBAAiB;IACzB,KAAK,IAAO;IACZ,MAAM,KAAO;IACb,IAAI,KAAO;CACd;AAED;;GAEG;AACH,oBAAY,cAAc;IACtB,IAAI,IAAO;IACX,MAAM,KAAO;IACb,IAAI,KAAO;CACd;AAGD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,cAAc,CAAA;CACzB;AAkBD;;GAEG;AACH,UAAU,aAAa;IACnB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3D,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IACrD,iBAAiB,EAAE,CAAC,wBAAwB,GAAG,SAAS,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IAC1E,kBAAkB,EAAG,iBAAiB,CAAC;IACvC,eAAe,EAAG,cAAc,CAAC;IACjC,mBAAmB,EAAG,OAAO,CAAC;IAC9B,gBAAgB,EAAG,OAAO,CAAC;CAC9B;AAGD,UAAU,aAAa;IACnB,WAAW,EAAG,iBAAiB,CAAC;IAChC,QAAQ,EAAG,cAAc,CAAA;CAC5B;AAGD;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAG,CAAC,wBAAwB,GAAG,SAAS,CAAC,EAAE,EAI9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAG,CAAC,wBAAwB,GAAG,SAAS,CAAC,EAAE,EAIhF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEvE,MAAM,CAAC,YAAY,EAAG,aAAa,CAQjC;IAGF,OAAO,CAAC,gBAAgB,CAItB;IAEF,OAAO,CAAC,aAAa,CAInB;gBAGU,KAAK,EAAE,aAAa;IAUhC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,kBAAkB;IAQ1B,QAAQ;IAQR,OAAO,CAAC,YAAY;IAiDpB,cAAc,CAAC,GAAG,EAAG,MAAM,EAAE,GAAG,EAAG,MAAM;IAmCzC,MAAM;CAiIT;AAED,eAAe,QAAQ,CAAC"}