@adcops/autocore-react 3.3.9 → 3.3.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 (215) hide show
  1. package/LICENSE +58 -58
  2. package/additional-docs/AutoCoreTagContext.md +441 -441
  3. package/additional-docs/ButtonApiSpecs.md +48 -48
  4. package/additional-docs/GlobalEventEmitter.md +243 -243
  5. package/additional-docs/general_recommendations.md +22 -22
  6. package/additional-docs/react_performance_notes.md +94 -94
  7. package/dist/assets/svg/blockly_logo.svg +82 -82
  8. package/dist/assets/svg/distance.svg +40 -40
  9. package/dist/assets/svg/python_logo.svg +246 -246
  10. package/dist/assets/svg/rotation_ccw.svg +50 -50
  11. package/dist/assets/svg/rotation_ccw_a.svg +57 -57
  12. package/dist/assets/svg/rotation_ccw_b.svg +57 -57
  13. package/dist/assets/svg/rotation_ccw_c.svg +57 -57
  14. package/dist/assets/svg/rotation_cw.svg +49 -49
  15. package/dist/assets/svg/rotation_cw_a.svg +30 -30
  16. package/dist/assets/svg/rotation_cw_b.svg +30 -30
  17. package/dist/assets/svg/rotation_cw_c.svg +30 -30
  18. package/dist/assets/svg/speed.svg +39 -39
  19. package/dist/components/BlocklyEditor.css +93 -93
  20. package/dist/components/JogPanel.css +41 -41
  21. package/dist/components/ProgressBarWithValue.css +27 -27
  22. package/dist/components/ValueIndicator.css +31 -31
  23. package/dist/components/osk.css +123 -123
  24. package/dist/core/AutoCoreTagContext.d.ts.map +1 -1
  25. package/dist/core/AutoCoreTagContext.js +1 -1
  26. package/dist/hub/HubBase.d.ts +3 -3
  27. package/dist/hub/HubBase.d.ts.map +1 -1
  28. package/dist/hub/HubBase.js +1 -1
  29. package/package.json +104 -104
  30. package/readme.md +343 -343
  31. package/src/assets/BlocklyLogo.tsx +27 -27
  32. package/src/assets/Distance.tsx +18 -18
  33. package/src/assets/JogLong.tsx +13 -13
  34. package/src/assets/JogMedium.tsx +13 -13
  35. package/src/assets/JogShort.tsx +13 -13
  36. package/src/assets/PythonLogo.tsx +83 -83
  37. package/src/assets/Rotation3D.tsx +13 -13
  38. package/src/assets/RotationCcw.tsx +33 -33
  39. package/src/assets/RotationCcwA.tsx +45 -45
  40. package/src/assets/RotationCcwB.tsx +45 -45
  41. package/src/assets/RotationCcwC.tsx +45 -45
  42. package/src/assets/RotationCw.tsx +31 -31
  43. package/src/assets/RotationCwA.tsx +42 -42
  44. package/src/assets/RotationCwB.tsx +42 -42
  45. package/src/assets/RotationCwC.tsx +42 -42
  46. package/src/assets/Run.tsx +13 -13
  47. package/src/assets/Speed.tsx +18 -18
  48. package/src/assets/SpeedFast.tsx +13 -13
  49. package/src/assets/SpeedMedium.tsx +13 -13
  50. package/src/assets/SpeedNone.tsx +13 -13
  51. package/src/assets/SpeedSlow.tsx +13 -13
  52. package/src/assets/Walk.tsx +13 -13
  53. package/src/assets/index.ts +22 -22
  54. package/src/assets/svg/blockly_logo.svg +82 -82
  55. package/src/assets/svg/distance.svg +40 -40
  56. package/src/assets/svg/python_logo.svg +246 -246
  57. package/src/assets/svg/rotation_ccw.svg +50 -50
  58. package/src/assets/svg/rotation_ccw_a.svg +57 -57
  59. package/src/assets/svg/rotation_ccw_b.svg +57 -57
  60. package/src/assets/svg/rotation_ccw_c.svg +57 -57
  61. package/src/assets/svg/rotation_cw.svg +49 -49
  62. package/src/assets/svg/rotation_cw_a.svg +30 -30
  63. package/src/assets/svg/rotation_cw_b.svg +30 -30
  64. package/src/assets/svg/rotation_cw_c.svg +30 -30
  65. package/src/assets/svg/speed.svg +39 -39
  66. package/src/components/AutoCoreDevPanel.tsx +414 -414
  67. package/src/components/BlocklyEditor.css +93 -93
  68. package/src/components/BlocklyEditor.tsx +609 -609
  69. package/src/components/CodeEditor.tsx +155 -155
  70. package/src/components/FileList.tsx +390 -390
  71. package/src/components/FileSelect.tsx +128 -128
  72. package/src/components/FitText.tsx +35 -35
  73. package/src/components/Indicator.tsx +188 -188
  74. package/src/components/IndicatorButton.tsx +214 -214
  75. package/src/components/IndicatorRect.tsx +172 -172
  76. package/src/components/JogPanel.css +41 -41
  77. package/src/components/JogPanel.tsx +461 -461
  78. package/src/components/Lamp.tsx +243 -243
  79. package/src/components/Osk.tsx +192 -192
  80. package/src/components/OskDialog.tsx +164 -164
  81. package/src/components/ProgressBarWithValue.css +27 -27
  82. package/src/components/ProgressBarWithValue.tsx +48 -48
  83. package/src/components/TextInput.tsx +195 -195
  84. package/src/components/ToggleGroup.tsx +322 -322
  85. package/src/components/ValueDisplay.tsx +236 -236
  86. package/src/components/ValueIndicator.css +31 -31
  87. package/src/components/ValueIndicator.tsx +135 -135
  88. package/src/components/ValueInput.tsx +368 -368
  89. package/src/components/osk.css +123 -123
  90. package/src/core/ActionMode.ts +19 -19
  91. package/src/core/AutoCoreTagContext.tsx +625 -614
  92. package/src/core/AutoCoreTagTypes.ts +334 -334
  93. package/src/core/CoreStreamTypes.ts +512 -512
  94. package/src/core/EventEmitterContext.tsx +434 -434
  95. package/src/core/IndicatorButtonState.ts +34 -34
  96. package/src/core/IndicatorColor.ts +35 -35
  97. package/src/core/MaskPatterns.ts +87 -87
  98. package/src/core/NumerableTypes.ts +80 -80
  99. package/src/core/PositionContext.ts +59 -59
  100. package/src/core/UniqueId.ts +41 -41
  101. package/src/core/ValueSimulator.ts +166 -166
  102. package/src/core/hoc.tsx +65 -65
  103. package/src/hooks/adsHooks.tsx +287 -287
  104. package/src/hooks/commandHooks.tsx +300 -300
  105. package/src/hooks/index.ts +12 -12
  106. package/src/hooks/useAutoCoreTag.ts +103 -103
  107. package/src/hooks/useScaledValue.tsx +99 -99
  108. package/src/hub/CommandMessage.ts +89 -89
  109. package/src/hub/DebugPanel.ts +307 -307
  110. package/src/hub/HubBase.ts +249 -236
  111. package/src/hub/HubSimulate.ts +124 -124
  112. package/src/hub/HubTauri.ts +140 -140
  113. package/src/hub/HubWebSocket.ts +250 -250
  114. package/src/hub/debug.ts +211 -211
  115. package/src/hub/index.ts +81 -81
  116. package/src/themes/adc-dark/_extensions.scss +166 -166
  117. package/src/themes/adc-dark/_variables.scss +913 -913
  118. package/src/themes/adc-dark/blue/_fonts.scss +23 -23
  119. package/src/themes/adc-dark/blue/adc_theme.scss +31 -31
  120. package/src/themes/adc-dark/blue/theme.scss +14 -14
  121. package/src/themes/theme-base/_colors.scss +17 -17
  122. package/src/themes/theme-base/_common.scss +74 -74
  123. package/src/themes/theme-base/_components.scss +111 -111
  124. package/src/themes/theme-base/_mixins.scss +243 -243
  125. package/src/themes/theme-base/components/button/_button.scss +644 -644
  126. package/src/themes/theme-base/components/button/_speeddial.scss +91 -91
  127. package/src/themes/theme-base/components/button/_splitbutton.scss +358 -358
  128. package/src/themes/theme-base/components/data/_carousel.scss +39 -39
  129. package/src/themes/theme-base/components/data/_datascroller.scss +47 -47
  130. package/src/themes/theme-base/components/data/_datatable.scss +388 -388
  131. package/src/themes/theme-base/components/data/_dataview.scss +47 -47
  132. package/src/themes/theme-base/components/data/_filter.scss +137 -137
  133. package/src/themes/theme-base/components/data/_orderlist.scss +86 -86
  134. package/src/themes/theme-base/components/data/_organizationchart.scss +50 -50
  135. package/src/themes/theme-base/components/data/_paginator.scss +91 -91
  136. package/src/themes/theme-base/components/data/_picklist.scss +73 -73
  137. package/src/themes/theme-base/components/data/_timeline.scss +38 -38
  138. package/src/themes/theme-base/components/data/_tree.scss +184 -184
  139. package/src/themes/theme-base/components/data/_treetable.scss +431 -431
  140. package/src/themes/theme-base/components/file/_fileupload.scss +41 -41
  141. package/src/themes/theme-base/components/input/_autocomplete.scss +94 -94
  142. package/src/themes/theme-base/components/input/_calendar.scss +251 -251
  143. package/src/themes/theme-base/components/input/_cascadeselect.scss +107 -107
  144. package/src/themes/theme-base/components/input/_checkbox.scss +181 -181
  145. package/src/themes/theme-base/components/input/_chips.scss +102 -102
  146. package/src/themes/theme-base/components/input/_colorpicker.scss +17 -17
  147. package/src/themes/theme-base/components/input/_dropdown.scss +252 -252
  148. package/src/themes/theme-base/components/input/_editor.scss +122 -122
  149. package/src/themes/theme-base/components/input/_iconfield.scss +9 -9
  150. package/src/themes/theme-base/components/input/_inputgroup.scss +74 -74
  151. package/src/themes/theme-base/components/input/_inputicon.scss +14 -14
  152. package/src/themes/theme-base/components/input/_inputnumber.scss +4 -4
  153. package/src/themes/theme-base/components/input/_inputotp.scss +10 -10
  154. package/src/themes/theme-base/components/input/_inputswitch.scss +99 -99
  155. package/src/themes/theme-base/components/input/_inputtext.scss +101 -101
  156. package/src/themes/theme-base/components/input/_listbox.scss +138 -138
  157. package/src/themes/theme-base/components/input/_mention.scss +30 -30
  158. package/src/themes/theme-base/components/input/_multiselect.scss +278 -278
  159. package/src/themes/theme-base/components/input/_password.scss +32 -32
  160. package/src/themes/theme-base/components/input/_radiobutton.scss +169 -169
  161. package/src/themes/theme-base/components/input/_rating.scss +80 -80
  162. package/src/themes/theme-base/components/input/_selectbutton.scss +49 -49
  163. package/src/themes/theme-base/components/input/_slider.scss +49 -49
  164. package/src/themes/theme-base/components/input/_togglebutton.scss +99 -99
  165. package/src/themes/theme-base/components/input/_treeselect.scss +151 -151
  166. package/src/themes/theme-base/components/input/_tristatecheckbox.scss +46 -46
  167. package/src/themes/theme-base/components/menu/_breadcrumb.scss +42 -42
  168. package/src/themes/theme-base/components/menu/_contextmenu.scss +39 -39
  169. package/src/themes/theme-base/components/menu/_dock.scss +109 -109
  170. package/src/themes/theme-base/components/menu/_megamenu.scss +141 -141
  171. package/src/themes/theme-base/components/menu/_menu.scss +33 -33
  172. package/src/themes/theme-base/components/menu/_menubar.scss +216 -216
  173. package/src/themes/theme-base/components/menu/_panelmenu.scss +153 -153
  174. package/src/themes/theme-base/components/menu/_slidemenu.scss +60 -60
  175. package/src/themes/theme-base/components/menu/_steps.scss +57 -57
  176. package/src/themes/theme-base/components/menu/_tabmenu.scss +50 -50
  177. package/src/themes/theme-base/components/menu/_tieredmenu.scss +43 -43
  178. package/src/themes/theme-base/components/messages/_inlinemessage.scss +69 -69
  179. package/src/themes/theme-base/components/messages/_message.scss +107 -107
  180. package/src/themes/theme-base/components/messages/_toast.scss +100 -100
  181. package/src/themes/theme-base/components/misc/_avatar.scss +33 -33
  182. package/src/themes/theme-base/components/misc/_badge.scss +76 -76
  183. package/src/themes/theme-base/components/misc/_chip.scss +38 -38
  184. package/src/themes/theme-base/components/misc/_inplace.scss +17 -17
  185. package/src/themes/theme-base/components/misc/_metergroup.scss +80 -80
  186. package/src/themes/theme-base/components/misc/_progressbar.scss +17 -17
  187. package/src/themes/theme-base/components/misc/_scrolltop.scss +24 -24
  188. package/src/themes/theme-base/components/misc/_skeleton.scss +7 -7
  189. package/src/themes/theme-base/components/misc/_tag.scss +39 -39
  190. package/src/themes/theme-base/components/misc/_terminal.scss +12 -12
  191. package/src/themes/theme-base/components/multimedia/_galleria.scss +153 -153
  192. package/src/themes/theme-base/components/multimedia/_image.scss +53 -53
  193. package/src/themes/theme-base/components/overlay/_confirmpopup.scss +72 -72
  194. package/src/themes/theme-base/components/overlay/_dialog.scss +78 -78
  195. package/src/themes/theme-base/components/overlay/_overlaypanel.scss +64 -64
  196. package/src/themes/theme-base/components/overlay/_sidebar.scss +23 -23
  197. package/src/themes/theme-base/components/overlay/_tooltip.scss +33 -33
  198. package/src/themes/theme-base/components/panel/_accordion.scss +118 -118
  199. package/src/themes/theme-base/components/panel/_card.scss +30 -30
  200. package/src/themes/theme-base/components/panel/_divider.scss +30 -30
  201. package/src/themes/theme-base/components/panel/_fieldset.scss +47 -47
  202. package/src/themes/theme-base/components/panel/_panel.scss +47 -47
  203. package/src/themes/theme-base/components/panel/_scrollpanel.scss +10 -10
  204. package/src/themes/theme-base/components/panel/_splitter.scss +23 -23
  205. package/src/themes/theme-base/components/panel/_stepper.scss +136 -136
  206. package/src/themes/theme-base/components/panel/_tabview.scss +147 -147
  207. package/src/themes/theme-base/components/panel/_toolbar.scss +11 -11
  208. package/terser.config.cjs +25 -25
  209. package/todo.md +18 -18
  210. package/tools/build-themes.cjs +65 -65
  211. package/tools/copy-distribution-files.cjs +77 -77
  212. package/tools/minify.cjs +55 -55
  213. package/tsconfig.json +48 -48
  214. package/typedoc.json +12 -12
  215. package/.claude/settings.local.json +0 -7
@@ -1,123 +1,123 @@
1
- /*
2
- * Customized by Thomas C. Bitsky Jr. Automated Design Corporation.
3
- *
4
- * Original file:
5
- *
6
- * simple-keyboard v2.32.100
7
- * https://github.com/hodgef/simple-keyboard
8
- *
9
- * Copyright (c) Francisco Hodge (https://github.com/hodgef)
10
- */
11
-
12
- .hg-theme-default {
13
- width: 100%;
14
- -webkit-user-select: none;
15
- -moz-user-select: none;
16
- -ms-user-select: none;
17
- user-select: none;
18
- box-sizing: border-box;
19
- overflow: hidden;
20
- touch-action: manipulation
21
- }
22
-
23
- .hg-theme-default .hg-button span {
24
- pointer-events: none
25
- }
26
-
27
- .hg-theme-default button.hg-button {
28
- border-width: 0;
29
- outline: 0;
30
- font-size: inherit
31
- }
32
-
33
- .hg-theme-default {
34
- background-color: #ececec;
35
- padding: 5px;
36
- border-radius: 5px
37
- }
38
-
39
- .hg-theme-default .hg-button {
40
- display: inline-block;
41
- flex-grow: 1
42
- }
43
-
44
- .hg-theme-default .hg-row {
45
- display: flex
46
- }
47
-
48
- .hg-theme-default .hg-row:not(:last-child) {
49
- margin-bottom: 5px
50
- }
51
-
52
- .hg-theme-default .hg-row .hg-button-container,
53
- .hg-theme-default .hg-row .hg-button:not(:last-child) {
54
- margin-right: 5px
55
- }
56
-
57
- .hg-theme-default .hg-row>div:last-child {
58
- margin-right: 0
59
- }
60
-
61
- .hg-theme-default .hg-row .hg-button-container {
62
- display: flex
63
- }
64
-
65
- .hg-theme-default .hg-button {
66
- /* box-shadow: 0 0 3px -1px rgba(0, 0, 0, .3); */ /* use the shadow for an ios look */
67
- font-weight: 600;
68
- font-size: large;
69
- height: 40px;
70
- border-radius: 3px; /* set to 5 for ios look, 3 for microsoft look */
71
- box-sizing: border-box;
72
- padding: 5px;
73
- color: white; /* color of the button text */
74
- background: #444444; /* background of the button text */
75
- border: 1px solid black;
76
- cursor:pointer;
77
- display: flex;
78
- align-items: center;
79
- justify-content: center;
80
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
81
- }
82
-
83
- .hg-theme-default .hg-button.hg-activeButton {
84
- background: #efefef
85
- }
86
-
87
- .hg-theme-default.hg-layout-numeric .hg-button {
88
- width: 33.3%;
89
- height: 60px;
90
- align-items: center;
91
- display: flex;
92
- justify-content: center
93
- }
94
-
95
- .hg-theme-default .hg-button.hg-button-numpadadd,
96
- .hg-theme-default .hg-button.hg-button-numpadenter {
97
- height: 85px
98
- }
99
-
100
- .hg-theme-default .hg-button.hg-button-numpad0 {
101
- width: 105px
102
- }
103
-
104
- .hg-theme-default .hg-button.hg-button-com {
105
- max-width: 85px
106
- }
107
-
108
- .hg-theme-default .hg-button.hg-standardBtn.hg-button-at {
109
- max-width: 45px
110
- }
111
-
112
- .hg-theme-default .hg-button.hg-selectedButton {
113
- background: rgba(5, 25, 70, .53);
114
- color: #fff
115
- }
116
-
117
- .hg-theme-default .hg-button.hg-standardBtn[data-skbtn=".com"] {
118
- max-width: 82px
119
- }
120
-
121
- .hg-theme-default .hg-button.hg-standardBtn[data-skbtn="@"] {
122
- max-width: 60px
123
- }
1
+ /*
2
+ * Customized by Thomas C. Bitsky Jr. Automated Design Corporation.
3
+ *
4
+ * Original file:
5
+ *
6
+ * simple-keyboard v2.32.100
7
+ * https://github.com/hodgef/simple-keyboard
8
+ *
9
+ * Copyright (c) Francisco Hodge (https://github.com/hodgef)
10
+ */
11
+
12
+ .hg-theme-default {
13
+ width: 100%;
14
+ -webkit-user-select: none;
15
+ -moz-user-select: none;
16
+ -ms-user-select: none;
17
+ user-select: none;
18
+ box-sizing: border-box;
19
+ overflow: hidden;
20
+ touch-action: manipulation
21
+ }
22
+
23
+ .hg-theme-default .hg-button span {
24
+ pointer-events: none
25
+ }
26
+
27
+ .hg-theme-default button.hg-button {
28
+ border-width: 0;
29
+ outline: 0;
30
+ font-size: inherit
31
+ }
32
+
33
+ .hg-theme-default {
34
+ background-color: #ececec;
35
+ padding: 5px;
36
+ border-radius: 5px
37
+ }
38
+
39
+ .hg-theme-default .hg-button {
40
+ display: inline-block;
41
+ flex-grow: 1
42
+ }
43
+
44
+ .hg-theme-default .hg-row {
45
+ display: flex
46
+ }
47
+
48
+ .hg-theme-default .hg-row:not(:last-child) {
49
+ margin-bottom: 5px
50
+ }
51
+
52
+ .hg-theme-default .hg-row .hg-button-container,
53
+ .hg-theme-default .hg-row .hg-button:not(:last-child) {
54
+ margin-right: 5px
55
+ }
56
+
57
+ .hg-theme-default .hg-row>div:last-child {
58
+ margin-right: 0
59
+ }
60
+
61
+ .hg-theme-default .hg-row .hg-button-container {
62
+ display: flex
63
+ }
64
+
65
+ .hg-theme-default .hg-button {
66
+ /* box-shadow: 0 0 3px -1px rgba(0, 0, 0, .3); */ /* use the shadow for an ios look */
67
+ font-weight: 600;
68
+ font-size: large;
69
+ height: 40px;
70
+ border-radius: 3px; /* set to 5 for ios look, 3 for microsoft look */
71
+ box-sizing: border-box;
72
+ padding: 5px;
73
+ color: white; /* color of the button text */
74
+ background: #444444; /* background of the button text */
75
+ border: 1px solid black;
76
+ cursor:pointer;
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
81
+ }
82
+
83
+ .hg-theme-default .hg-button.hg-activeButton {
84
+ background: #efefef
85
+ }
86
+
87
+ .hg-theme-default.hg-layout-numeric .hg-button {
88
+ width: 33.3%;
89
+ height: 60px;
90
+ align-items: center;
91
+ display: flex;
92
+ justify-content: center
93
+ }
94
+
95
+ .hg-theme-default .hg-button.hg-button-numpadadd,
96
+ .hg-theme-default .hg-button.hg-button-numpadenter {
97
+ height: 85px
98
+ }
99
+
100
+ .hg-theme-default .hg-button.hg-button-numpad0 {
101
+ width: 105px
102
+ }
103
+
104
+ .hg-theme-default .hg-button.hg-button-com {
105
+ max-width: 85px
106
+ }
107
+
108
+ .hg-theme-default .hg-button.hg-standardBtn.hg-button-at {
109
+ max-width: 45px
110
+ }
111
+
112
+ .hg-theme-default .hg-button.hg-selectedButton {
113
+ background: rgba(5, 25, 70, .53);
114
+ color: #fff
115
+ }
116
+
117
+ .hg-theme-default .hg-button.hg-standardBtn[data-skbtn=".com"] {
118
+ max-width: 82px
119
+ }
120
+
121
+ .hg-theme-default .hg-button.hg-standardBtn[data-skbtn="@"] {
122
+ max-width: 60px
123
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCoreTagContext.d.ts","sourceRoot":"","sources":["../../src/core/AutoCoreTagContext.tsx"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,EAQV,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACR,gBAAgB,EAChB,SAAS,EACT,WAAW,EACd,MAAM,oBAAoB,CAAC;AAI5B;;;GAGG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,8CAQ7B,CAAC;AAsBH;;;;GAIG;AAIH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CA0cA,CAAC"}
1
+ {"version":3,"file":"AutoCoreTagContext.d.ts","sourceRoot":"","sources":["../../src/core/AutoCoreTagContext.tsx"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,EAQV,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACR,gBAAgB,EAChB,SAAS,EACT,WAAW,EACd,MAAM,oBAAoB,CAAC;AAI5B;;;GAGG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,8CAQ7B,CAAC;AAsBH;;;;GAIG;AAIH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAqdA,CAAC"}
@@ -1 +1 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import React,{useRef,createContext,useCallback,useContext,useEffect,useMemo,useState}from"react";import{EventEmitterContext}from"./EventEmitterContext";import{MessageType}from"../hub/CommandMessage";export const AutoCoreTagContext=createContext({values:{},rawValues:{},isLoading:!0,write:async()=>{},tap:async()=>{},scales:{},updateScale:async()=>{}});const sleep=e=>new Promise(t=>setTimeout(t,e));export const AutoCoreTagProvider=({children:e,tags:t,scales:a,eagerRead:s=!0})=>{const n=useRef(!1),r=useMemo(()=>({}),[]),c=a??r,{invoke:o,read:l,write:u,serverSubscribe:i,isConnected:f,subscribe:m,unsubscribe:b}=useContext(EventEmitterContext),[y,g]=useState(()=>{const e={};for(const a of t)void 0!==a.initialValue&&(e[a.tagName]=a.initialValue);return e}),[d,p]=useState({}),[v,C]=useState(c),N=useRef(v),h=useRef(y);useEffect(()=>{N.current=v},[v]),useEffect(()=>{h.current=y},[y]);const[w,T]=useState(!0),x=useCallback((e,t)=>{const{valueType:a,scale:s,codec:n}=e;if("number"===a&&"number"==typeof t&&s){const e=N.current[s];return t*(e?.scale??1)}if("json"===a&&n?.fromServer)try{return n.fromServer(t)}catch{}return t},[]),E=useCallback((e,t)=>{const{valueType:a,scale:s,codec:n}=e;if("json"===a&&n?.toServer)try{t=n.toServer(t)}catch{}if("number"===a&&"number"==typeof t&&s){const e=N.current[s];return t/(e?.scale??1)}return t},[]),S=useCallback(e=>{const a=t.filter(t=>t.scale===e);a.length&&p(e=>{const t={...e};for(const e of a){const a=h.current[e.tagName];if("number"!=typeof a)continue;const s=x(e,a);t[e.tagName]!==s&&(t[e.tagName]=s)}return t})},[t,x]),k=useCallback((e,t)=>{g(a=>a[e.tagName]===t?a:{...a,[e.tagName]:t});const a=x(e,t);p(t=>t[e.tagName]===a?t:{...t,[e.tagName]:a})},[x]),M=useCallback(async(e,t,a)=>{const s=a?.concurrency??4,n=a?.minDelayMs??20,r=a?.jitterMs??40;let c=0;const u=Array.from({length:s},()=>(async()=>{for(;;){const a=c++;if(a>=t.length)return;const s=t[a];try{let t=!1;try{await o(s.fqdn,MessageType.Request,{action:"refresh"}),t=!0}catch{}if(!t){const t="GNV"===e.toUpperCase()?{group:"ux"}:{};try{const e=await l(s.fqdn,t);e?.success&&k(s,e.data)}catch(e){}}}catch(e){}finally{const e=Math.floor(Math.random()*r);await sleep(n+e)}}})());await Promise.all(u)},[o,l,k]),j=useCallback(async()=>{for(const[e,t]of Object.entries(c)){if(!t.serverTag)continue;const{domain:a,symbolName:s}=t.serverTag;try{const t=await l(`${a}.${s}`,{group:"ux"});if(t.data&&(t.success??1)&&(t.valid??1)){const a=JSON.parse(t.data);if(a&&"number"==typeof a.scale){const{scale:t,label:s}=a;C(a=>({...a,[e]:{...a[e],scale:t,label:s??a[e]?.label??"---"}})),S(e)}}}catch{}}},[l,c,S]);useEffect(()=>{let e=!0;const a=[],s=async()=>{if(e&&!n.current){n.current=!0;try{await(async()=>{try{await j();for(const s of t){await i(s.tagName,s.fqdn,s.subscriptionOptions);const t=m(s.tagName,t=>{e&&k(s,t)});a.push(t)}}finally{e&&setTimeout(()=>e&&T(!1),100)}})()}finally{e&&setTimeout(()=>e&&T(!1),100)}}};if(f())s();else{const e=m("HUB/connected",()=>{b(e),s()});a.push(e)}return()=>{e=!1,a.forEach(b),n.current=!1}},[m,b,f,o,i,s,t,j,M,k]);const q=useMemo(()=>Object.entries(c).filter(([,e])=>e.serverTag).map(([e,t])=>({scaleName:e,domain:t.serverTag.domain,symbolName:t.serverTag.symbolName})),[c]);useEffect(()=>{let e=!0;const t=[];for(const{scaleName:a,domain:s,symbolName:n}of q){const r=m(`${s}.${n}`,t=>{if(!e)return;const s=t?.value;if(s&&"object"==typeof s&&"number"==typeof s.scale){const{scale:e,label:t}=s;C(s=>({...s,[a]:{...s[a],scale:e,label:t??s[a]?.label??"---"}})),S(a)}});t.push(r)}return()=>{e=!1,t.forEach(b)}},[m,b,q,S]);const R=useCallback(async(e,a)=>{const s=t.find(t=>t.tagName===e);if(!s)return;const n=E(s,a);await u(s.fqdn,n)},[t,u,E]),$=useCallback(async e=>{const a=t.find(t=>t.tagName===e);a&&"boolean"===a.valueType&&(await u(a.fqdn,!0),await sleep(300),await u(a.fqdn,!1))},[t,u]),V=useCallback(async(e,t,a)=>{const s=v[e];if(s){if(s.serverTag){const n=`${s.serverTag.domain}.${s.serverTag.symbolName}`;await u(n,{name:e,scale:t,label:a})}C(s=>({...s,[e]:{...s[e],scale:t,label:a}})),S(e)}},[v,u,S]);useEffect(()=>{p(e=>{const a={...e};for(const e of t){const t=h.current[e.tagName];if(void 0===t)continue;const s=x(e,t);a[e.tagName]!==s&&(a[e.tagName]=s)}return a})},[t,x,v]);const A=useMemo(()=>({values:d,rawValues:y,isLoading:w,write:R,tap:$,scales:v,updateScale:V}),[d,y,w,R,$,v,V]);return _jsx(AutoCoreTagContext.Provider,{value:A,children:e})};
1
+ import{jsx as _jsx}from"react/jsx-runtime";import React,{useRef,createContext,useCallback,useContext,useEffect,useMemo,useState}from"react";import{EventEmitterContext}from"./EventEmitterContext";import{MessageType}from"../hub/CommandMessage";export const AutoCoreTagContext=createContext({values:{},rawValues:{},isLoading:!0,write:async()=>{},tap:async()=>{},scales:{},updateScale:async()=>{}});const sleep=e=>new Promise(t=>setTimeout(t,e));export const AutoCoreTagProvider=({children:e,tags:t,scales:a,eagerRead:s=!0})=>{const n=useRef(!1),c=useMemo(()=>({}),[]),r=a??c,{invoke:o,read:u,write:l,serverSubscribe:i,isConnected:f,subscribe:m,unsubscribe:b}=useContext(EventEmitterContext),[y,g]=useState(()=>{const e={};for(const a of t)void 0!==a.initialValue&&(e[a.tagName]=a.initialValue);return e}),[d,p]=useState({}),[v,C]=useState(r),N=useRef(v),h=useRef(y);useEffect(()=>{N.current=v},[v]),useEffect(()=>{h.current=y},[y]);const[w,T]=useState(!0),x=useCallback((e,t)=>{const{valueType:a,scale:s,codec:n}=e;if("number"===a&&"number"==typeof t&&s){const e=N.current[s];return t*(e?.scale??1)}if("json"===a&&n?.fromServer)try{return n.fromServer(t)}catch{}return t},[]),E=useCallback((e,t)=>{const{valueType:a,scale:s,codec:n}=e;if("json"===a&&n?.toServer)try{t=n.toServer(t)}catch{}if("number"===a&&"number"==typeof t&&s){const e=N.current[s];return t/(e?.scale??1)}return t},[]),S=useCallback(e=>{const a=t.filter(t=>t.scale===e);a.length&&p(e=>{const t={...e};for(const e of a){const a=h.current[e.tagName];if("number"!=typeof a)continue;const s=x(e,a);t[e.tagName]!==s&&(t[e.tagName]=s)}return t})},[t,x]),k=useCallback((e,t)=>{g(a=>a[e.tagName]===t?a:{...a,[e.tagName]:t});const a=x(e,t);p(t=>t[e.tagName]===a?t:{...t,[e.tagName]:a})},[x]),M=useCallback(async(e,t,a)=>{const s=a?.concurrency??4,n=a?.minDelayMs??20,c=a?.jitterMs??40;let r=0;const l=Array.from({length:s},()=>(async()=>{for(;;){const a=r++;if(a>=t.length)return;const s=t[a];try{let t=!1;try{await o(s.fqdn,MessageType.Request,{action:"refresh"}),t=!0}catch{}if(!t){const t="GNV"===e.toUpperCase()?{group:"ux"}:{};try{const e=await u(s.fqdn,t);e?.success&&k(s,e.data)}catch(e){}}}catch(e){}finally{const e=Math.floor(Math.random()*c);await sleep(n+e)}}})());await Promise.all(l)},[o,u,k]),j=useCallback(async()=>{for(const[e,t]of Object.entries(r)){if(!t.serverTag)continue;const{domain:a,symbolName:s}=t.serverTag;try{const t=await u(`${a}.${s}`,{group:"ux"});if(t.data&&(t.success??1)&&(t.valid??1)){const a=JSON.parse(t.data);if(a&&"number"==typeof a.scale){const{scale:t,label:s}=a;C(a=>({...a,[e]:{...a[e],scale:t,label:s??a[e]?.label??"---"}})),S(e)}}}catch{}}},[u,r,S]);useEffect(()=>{let e=!0;const a=[],c=async()=>{if(e&&!n.current){n.current=!0;try{await(async()=>{try{await j();for(const n of t){await i(n.tagName,n.fqdn,n.subscriptionOptions);const t=m(n.tagName,t=>{e&&k(n,t)});a.push(t),s&&u(n.fqdn).then(t=>{e&&t?.success&&k(n,t.data)}).catch(e=>{})}}finally{e&&setTimeout(()=>e&&T(!1),100)}})()}finally{e&&setTimeout(()=>e&&T(!1),100)}}};if(f())c();else{const e=m("HUB/connected",()=>{b(e),c()});a.push(e)}return()=>{e=!1,a.forEach(b),n.current=!1}},[m,b,f,o,i,s,t,j,M,k]);const q=useMemo(()=>Object.entries(r).filter(([,e])=>e.serverTag).map(([e,t])=>({scaleName:e,domain:t.serverTag.domain,symbolName:t.serverTag.symbolName})),[r]);useEffect(()=>{let e=!0;const t=[];for(const{scaleName:a,domain:s,symbolName:n}of q){const c=m(`${s}.${n}`,t=>{if(!e)return;const s=t?.value;if(s&&"object"==typeof s&&"number"==typeof s.scale){const{scale:e,label:t}=s;C(s=>({...s,[a]:{...s[a],scale:e,label:t??s[a]?.label??"---"}})),S(a)}});t.push(c)}return()=>{e=!1,t.forEach(b)}},[m,b,q,S]);const R=useCallback(async(e,a)=>{const s=t.find(t=>t.tagName===e);if(!s)return;const n=E(s,a);await l(s.fqdn,n)},[t,l,E]),$=useCallback(async e=>{const a=t.find(t=>t.tagName===e);a&&"boolean"===a.valueType&&(await l(a.fqdn,!0),await sleep(300),await l(a.fqdn,!1))},[t,l]),V=useCallback(async(e,t,a)=>{const s=v[e];if(s){if(s.serverTag){const n=`${s.serverTag.domain}.${s.serverTag.symbolName}`;await l(n,{name:e,scale:t,label:a})}C(s=>({...s,[e]:{...s[e],scale:t,label:a}})),S(e)}},[v,l,S]);useEffect(()=>{p(e=>{const a={...e};for(const e of t){const t=h.current[e.tagName];if(void 0===t)continue;const s=x(e,t);a[e.tagName]!==s&&(a[e.tagName]=s)}return a})},[t,x,v]);const A=useMemo(()=>({values:d,rawValues:y,isLoading:w,write:R,tap:$,scales:v,updateScale:V}),[d,y,w,R,$,v,V]);return _jsx(AutoCoreTagContext.Provider,{value:A,children:e})};
@@ -31,7 +31,7 @@ export declare abstract class HubBase {
31
31
  /** Maps local tag names to backend FQDNs. */
32
32
  protected localTopicToBackendTopicMap: Map<string, string>;
33
33
  /** Maps backend FQDNs to local tag names. */
34
- protected backendTopicToLocalMap: Map<string, string>;
34
+ protected backendTopicToLocalMap: Map<string, string[]>;
35
35
  /** Reference to the global event emitter for dispatching incoming messages. */
36
36
  protected context: EventEmitterContextType | null;
37
37
  /** Connection state tracker. */
@@ -128,9 +128,9 @@ export declare abstract class HubBase {
128
128
  */
129
129
  toBackendTopic(localTopic: string): string;
130
130
  /**
131
- * Translates Backend FQDN -> Local Name.
131
+ * Translates Backend FQDN -> Array of Local Names.
132
132
  */
133
- toLocalTopic(backendTopic: string): string;
133
+ toLocalTopics(backendTopic: string): string[];
134
134
  }
135
135
  export default HubBase;
136
136
  //# sourceMappingURL=HubBase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HubBase.d.ts","sourceRoot":"","sources":["../../src/hub/HubBase.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,8BAAsB,OAAO;IAEzB,6CAA6C;IAC7C,SAAS,CAAC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAA6B;IAEvF,6CAA6C;IAC7C,SAAS,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAA6B;IAElF,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAEzD,gCAAgC;IAChC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAS;IAGxC;;OAEG;;IAKH;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAQlD;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMnG;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI9D;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;IAIzD;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,EAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAKrF;;;;;;;OAOG;IACH,WAAW,CAAE,mBAAmB,CAAC,OAAO,EAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAM7F;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQjE;;OAEG;IACH,SAAS,CAAC,cAAc,GAAI,GAAG,OAAO,UAErC;IAED;;OAEG;IACH,WAAW,QAAO,OAAO,CAExB;IAMD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI;IAcnD;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAKxD;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAWpC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK1C;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAI7C;AAGD,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"HubBase.d.ts","sourceRoot":"","sources":["../../src/hub/HubBase.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,8BAAsB,OAAO;IAEzB,6CAA6C;IAC7C,SAAS,CAAC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAA6B;IAEvF,6CAA6C;IAC7C,SAAS,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAA+B;IAEtF,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAEzD,gCAAgC;IAChC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAS;IAGxC;;OAEG;;IAKH;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAQlD;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMnG;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI9D;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;IAIzD;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,EAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAKrF;;;;;;;OAOG;IACH,WAAW,CAAE,mBAAmB,CAAC,OAAO,EAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAM7F;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQjE;;OAEG;IACH,SAAS,CAAC,cAAc,GAAI,GAAG,OAAO,UAErC;IAED;;OAEG;IACH,WAAW,QAAO,OAAO,CAExB;IAMD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI;IAgBnD;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAUxD;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAiBpC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK1C;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;CAIhD;AAGD,eAAe,OAAO,CAAC"}
@@ -1 +1 @@
1
- import{MessageType}from"./CommandMessage";export class HubBase{constructor(){Object.defineProperty(this,"localTopicToBackendTopicMap",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"backendTopicToLocalMap",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"context",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"isConnected_",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"setIsConnected",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.isConnected_=e}}),Object.defineProperty(this,"isConnected",{enumerable:!0,configurable:!0,writable:!0,value:()=>this.isConnected_})}setContext(e){this.context=e}read(e,t){return this.invoke(e,MessageType.Read,t)}write(e,t){return this.invoke(e,MessageType.Write,{value:t})}subscribe(e,t,i){return this.mapTopic(e,t),this.invoke(t,MessageType.Subscribe,i)}unsubscribe(e,t){const i=this.toBackendTopic(e);return this.unmapTopic(e),this.invoke(i,MessageType.Unsubscribe,t)}request(e,t){return this.invoke(e,MessageType.Request,t)}publish(e,t){const i=this.toLocalTopic(e);this.context?.dispatch({topic:i,payload:t})}mapTopic(e,t){this.localTopicToBackendTopicMap.set(e,t),this.backendTopicToLocalMap.set(t,e)}unmapTopic(e){if(this.localTopicToBackendTopicMap.has(e)){const t=this.localTopicToBackendTopicMap.get(e);this.localTopicToBackendTopicMap.delete(e),null!=t&&this.backendTopicToLocalMap.has(t)&&this.backendTopicToLocalMap.delete(t)}}toBackendTopic(e){return this.localTopicToBackendTopicMap.get(e)??e}toLocalTopic(e){return this.backendTopicToLocalMap.get(e)??e}}export default HubBase;
1
+ import{MessageType}from"./CommandMessage";export class HubBase{constructor(){Object.defineProperty(this,"localTopicToBackendTopicMap",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"backendTopicToLocalMap",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"context",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"isConnected_",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"setIsConnected",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.isConnected_=e}}),Object.defineProperty(this,"isConnected",{enumerable:!0,configurable:!0,writable:!0,value:()=>this.isConnected_})}setContext(e){this.context=e}read(e,t){return this.invoke(e,MessageType.Read,t)}write(e,t){return this.invoke(e,MessageType.Write,{value:t})}subscribe(e,t,o){return this.mapTopic(e,t),this.invoke(t,MessageType.Subscribe,o)}unsubscribe(e,t){const o=this.toBackendTopic(e);return this.unmapTopic(e),this.invoke(o,MessageType.Unsubscribe,t)}request(e,t){return this.invoke(e,MessageType.Request,t)}publish(e,t){const o=this.toLocalTopics(e);for(const e of o)this.context?.dispatch({topic:e,payload:t})}mapTopic(e,t){this.localTopicToBackendTopicMap.set(e,t);let o=this.backendTopicToLocalMap.get(t)||[];o.includes(e)||(o.push(e),this.backendTopicToLocalMap.set(t,o))}unmapTopic(e){if(this.localTopicToBackendTopicMap.has(e)){const t=this.localTopicToBackendTopicMap.get(e);if(this.localTopicToBackendTopicMap.delete(e),null!=t&&this.backendTopicToLocalMap.has(t)){let o=this.backendTopicToLocalMap.get(t)||[];o=o.filter(t=>t!==e),o.length>0?this.backendTopicToLocalMap.set(t,o):this.backendTopicToLocalMap.delete(t)}}}toBackendTopic(e){return this.localTopicToBackendTopicMap.get(e)??e}toLocalTopics(e){const t=this.backendTopicToLocalMap.get(e);return t&&t.length>0?t:[e]}}export default HubBase;
package/package.json CHANGED
@@ -1,104 +1,104 @@
1
- {
2
- "name": "@adcops/autocore-react",
3
- "version": "3.3.9",
4
- "description": "A React component library for industrial user interfaces.",
5
- "private": false,
6
- "type": "module",
7
- "scripts": {
8
- "clean": "rimraf ./dist",
9
- "minify": "node ./tools/minify.cjs",
10
- "tsc": "tsc",
11
- "build-themes": "node ./tools/build-themes.cjs",
12
- "generate-docs": "typedoc",
13
- "build": "npm run clean && tsc && node ./tools/copy-distribution-files.cjs && npm run build-themes && npm run minify",
14
- "dev": "npm run clean && tsc && node ./tools/copy-distribution-files.cjs",
15
- "prestart": "tsc",
16
- "publish-package": "npm run build && npm version patch && npm publish",
17
- "prepublishOnly": "npm run build",
18
- "release:patch": "npm version patch && npm publish",
19
- "release:minor": "npm version minor && npm publish",
20
- "release:major": "npm version major && npm publish",
21
- "convert-assets": "npx @svgr/cli --typescript --out-dir src/assets/ src/assets/svg/ --jsx-runtime automatic --ignore-existing"
22
- },
23
- "repository": {
24
- "type": "git",
25
- "url": "git+https://adc360.visualstudio.com/AutoCore-React/_git/autocore-react"
26
- },
27
- "keywords": [
28
- "react",
29
- "autocore",
30
- "component-library",
31
- "industrial-ui",
32
- "typescript",
33
- "primereact"
34
- ],
35
- "author": "Automated Design Corp.",
36
- "license": "ISC",
37
- "bugs": {
38
- "url": "https://automateddesign.com"
39
- },
40
- "homepage": "https://automateddesign.com",
41
- "peerDependencies": {
42
- "@types/react": "^18",
43
- "primereact": ">=10.6.3",
44
- "react": "^18",
45
- "react-dom": "^18"
46
- },
47
- "peerDependenciesMeta": {
48
- "@types/react": {
49
- "optional": true
50
- }
51
- },
52
- "dependencies": {
53
- "@monaco-editor/react": "^4.7.0",
54
- "@tauri-apps/api": "^2.9.1",
55
- "clsx": "^2.1.1",
56
- "numerable": "^0.3.15",
57
- "react-blockly": "^8.1.2",
58
- "react-simple-keyboard": "^3.8.120",
59
- "react-transition-group": "^4.4.5",
60
- "sass": "^1.92.1",
61
- "socket.io-client": "^4.8.1",
62
- "use-fit-text": "^2.4.0"
63
- },
64
- "sideEffects": [
65
- "**/*.css",
66
- "**/*.scss"
67
- ],
68
- "engines": {
69
- "node": ">=20.0.0"
70
- },
71
- "devDependencies": {
72
- "@svgr/cli": "^8.1.0",
73
- "@types/react": "^18.2.15",
74
- "@types/react-dom": "^18.2.7",
75
- "@types/react-transition-group": "^4.4.12",
76
- "primereact": "^10.9.7",
77
- "rimraf": "^6.0.1",
78
- "terser": "^5.44.0",
79
- "typedoc": "^0.28.12",
80
- "typescript": "^5.9.2"
81
- },
82
- "exports": {
83
- "./core/*": {
84
- "import": "./dist/core/*",
85
- "types": "./dist/core/*.d.ts"
86
- },
87
- "./components/*": {
88
- "import": "./dist/components/*",
89
- "types": "./dist/components/*.d.ts"
90
- },
91
- "./hooks/*": {
92
- "import": "./dist/hooks/*",
93
- "types": "./dist/hooks/*.d.ts"
94
- },
95
- "./themes/*": {
96
- "import": "./dist/themes/*",
97
- "types": "./dist/themes/*.d.ts"
98
- },
99
- "./hub/*": {
100
- "import": "./dist/hub/*",
101
- "types": "./dist/hub/*.d.ts"
102
- }
103
- }
104
- }
1
+ {
2
+ "name": "@adcops/autocore-react",
3
+ "version": "3.3.10",
4
+ "description": "A React component library for industrial user interfaces.",
5
+ "private": false,
6
+ "type": "module",
7
+ "scripts": {
8
+ "clean": "rimraf ./dist",
9
+ "minify": "node ./tools/minify.cjs",
10
+ "tsc": "tsc",
11
+ "build-themes": "node ./tools/build-themes.cjs",
12
+ "generate-docs": "typedoc",
13
+ "build": "npm run clean && tsc && node ./tools/copy-distribution-files.cjs && npm run build-themes && npm run minify",
14
+ "dev": "npm run clean && tsc && node ./tools/copy-distribution-files.cjs",
15
+ "prestart": "tsc",
16
+ "publish-package": "npm run build && npm version patch && npm publish",
17
+ "prepublishOnly": "npm run build",
18
+ "release:patch": "npm version patch && npm publish",
19
+ "release:minor": "npm version minor && npm publish",
20
+ "release:major": "npm version major && npm publish",
21
+ "convert-assets": "npx @svgr/cli --typescript --out-dir src/assets/ src/assets/svg/ --jsx-runtime automatic --ignore-existing"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://adc360.visualstudio.com/AutoCore-React/_git/autocore-react"
26
+ },
27
+ "keywords": [
28
+ "react",
29
+ "autocore",
30
+ "component-library",
31
+ "industrial-ui",
32
+ "typescript",
33
+ "primereact"
34
+ ],
35
+ "author": "Automated Design Corp.",
36
+ "license": "ISC",
37
+ "bugs": {
38
+ "url": "https://automateddesign.com"
39
+ },
40
+ "homepage": "https://automateddesign.com",
41
+ "peerDependencies": {
42
+ "@types/react": "^18",
43
+ "primereact": ">=10.6.3",
44
+ "react": "^18",
45
+ "react-dom": "^18"
46
+ },
47
+ "peerDependenciesMeta": {
48
+ "@types/react": {
49
+ "optional": true
50
+ }
51
+ },
52
+ "dependencies": {
53
+ "@monaco-editor/react": "^4.7.0",
54
+ "@tauri-apps/api": "^2.9.1",
55
+ "clsx": "^2.1.1",
56
+ "numerable": "^0.3.15",
57
+ "react-blockly": "^8.1.2",
58
+ "react-simple-keyboard": "^3.8.120",
59
+ "react-transition-group": "^4.4.5",
60
+ "sass": "^1.92.1",
61
+ "socket.io-client": "^4.8.1",
62
+ "use-fit-text": "^2.4.0"
63
+ },
64
+ "sideEffects": [
65
+ "**/*.css",
66
+ "**/*.scss"
67
+ ],
68
+ "engines": {
69
+ "node": ">=20.0.0"
70
+ },
71
+ "devDependencies": {
72
+ "@svgr/cli": "^8.1.0",
73
+ "@types/react": "^18.2.15",
74
+ "@types/react-dom": "^18.2.7",
75
+ "@types/react-transition-group": "^4.4.12",
76
+ "primereact": "^10.9.7",
77
+ "rimraf": "^6.0.1",
78
+ "terser": "^5.44.0",
79
+ "typedoc": "^0.28.12",
80
+ "typescript": "^5.9.2"
81
+ },
82
+ "exports": {
83
+ "./core/*": {
84
+ "import": "./dist/core/*",
85
+ "types": "./dist/core/*.d.ts"
86
+ },
87
+ "./components/*": {
88
+ "import": "./dist/components/*",
89
+ "types": "./dist/components/*.d.ts"
90
+ },
91
+ "./hooks/*": {
92
+ "import": "./dist/hooks/*",
93
+ "types": "./dist/hooks/*.d.ts"
94
+ },
95
+ "./themes/*": {
96
+ "import": "./dist/themes/*",
97
+ "types": "./dist/themes/*.d.ts"
98
+ },
99
+ "./hub/*": {
100
+ "import": "./dist/hub/*",
101
+ "types": "./dist/hub/*.d.ts"
102
+ }
103
+ }
104
+ }