@adcops/autocore-react 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/LICENSE +59 -0
  2. package/additional-docs/ButtonApiSpecs.md +48 -0
  3. package/additional-docs/GlobalEventEmitter.md +244 -0
  4. package/additional-docs/general_recommendations.md +22 -0
  5. package/dist/components/DPad.css +522 -0
  6. package/dist/components/DPad.d.ts +34 -0
  7. package/dist/components/DPad.js +1 -0
  8. package/dist/components/Indicator.d.ts +81 -0
  9. package/dist/components/Indicator.js +1 -0
  10. package/dist/components/IndicatorButton.d.ts +137 -0
  11. package/dist/components/IndicatorButton.js +1 -0
  12. package/dist/components/IndicatorColor.d.ts +26 -0
  13. package/dist/components/IndicatorColor.js +1 -0
  14. package/dist/components/Osk.d.ts +14 -0
  15. package/dist/components/Osk.js +1 -0
  16. package/dist/components/OskDialog.d.ts +33 -0
  17. package/dist/components/OskDialog.js +1 -0
  18. package/dist/components/ValueDisplay.d.ts +99 -0
  19. package/dist/components/ValueDisplay.js +1 -0
  20. package/dist/components/osk.css +123 -0
  21. package/dist/core/EventEmitterContext.d.ts +223 -0
  22. package/dist/core/EventEmitterContext.js +1 -0
  23. package/dist/core/MaskPatterns.d.ts +71 -0
  24. package/dist/core/MaskPatterns.js +1 -0
  25. package/dist/core/NumerableTypes.d.ts +58 -0
  26. package/dist/core/NumerableTypes.js +1 -0
  27. package/dist/core/PositionContext.d.ts +38 -0
  28. package/dist/core/PositionContext.js +1 -0
  29. package/dist/core/UniqueId.d.ts +16 -0
  30. package/dist/core/UniqueId.js +1 -0
  31. package/dist/core/ValueSimulator.d.ts +71 -0
  32. package/dist/core/ValueSimulator.js +1 -0
  33. package/dist/core/hoc.d.ts +31 -0
  34. package/dist/core/hoc.js +1 -0
  35. package/dist/hub/HubBase.d.ts +169 -0
  36. package/dist/hub/HubBase.js +1 -0
  37. package/dist/hub/HubSimulate.d.ts +20 -0
  38. package/dist/hub/HubSimulate.js +1 -0
  39. package/dist/hub/HubSocketIo.d.ts +101 -0
  40. package/dist/hub/HubSocketIo.js +1 -0
  41. package/dist/hub/HubTauri.d.ts +86 -0
  42. package/dist/hub/HubTauri.js +1 -0
  43. package/dist/hub/index.d.ts +13 -0
  44. package/dist/hub/index.js +1 -0
  45. package/docs/.nojekyll +1 -0
  46. package/docs/assets/highlight.css +106 -0
  47. package/docs/assets/icons.js +15 -0
  48. package/docs/assets/icons.svg +1 -0
  49. package/docs/assets/main.js +59 -0
  50. package/docs/assets/navigation.js +1 -0
  51. package/docs/assets/search.js +1 -0
  52. package/docs/assets/style.css +1414 -0
  53. package/docs/classes/components_Indicator.Indicator.html +105 -0
  54. package/docs/classes/components_IndicatorButton.IndicatorButton.html +119 -0
  55. package/docs/classes/components_OskDialog.OskDialog.html +117 -0
  56. package/docs/classes/components_ValueDisplay.ValueDisplay.html +104 -0
  57. package/docs/classes/core_ValueSimulator.ValueSimulator.html +41 -0
  58. package/docs/classes/hub_HubBase.HubBase.html +67 -0
  59. package/docs/classes/hub_HubSimulate.HubSimulate.html +72 -0
  60. package/docs/classes/hub_HubSocketIo.HubSocketIo.html +80 -0
  61. package/docs/classes/hub_HubTauri.HubTauri.html +80 -0
  62. package/docs/enums/components_DPad.VcJoyPadAction.html +10 -0
  63. package/docs/enums/components_DPad.VcJoyPadButtonId.html +7 -0
  64. package/docs/enums/components_IndicatorButton.ActionMode.html +6 -0
  65. package/docs/enums/components_IndicatorColor.IndicatorColor.html +13 -0
  66. package/docs/functions/components_DPad.VcDPad.html +5 -0
  67. package/docs/functions/components_Osk.Osk.html +5 -0
  68. package/docs/functions/core_EventEmitterContext.EventEmitterProvider.html +8 -0
  69. package/docs/functions/core_UniqueId.UniqueId.html +4 -0
  70. package/docs/functions/core_hoc.hocAddSubscription.html +6 -0
  71. package/docs/functions/hub.createHub.html +3 -0
  72. package/docs/hierarchy.html +1 -0
  73. package/docs/index.html +69 -0
  74. package/docs/interfaces/components_IndicatorButton.IndicatorButtonProps.html +635 -0
  75. package/docs/interfaces/components_IndicatorButton.IndicatorButtonState.html +10 -0
  76. package/docs/interfaces/core_DimensionsContext.IDimensionsContext.html +4 -0
  77. package/docs/interfaces/core_EventEmitterContext.Action.html +5 -0
  78. package/docs/interfaces/core_EventEmitterContext.EventEmitterContextType.html +18 -0
  79. package/docs/interfaces/core_EventEmitterContext.State.html +8 -0
  80. package/docs/interfaces/core_EventEmitterContext.Subscription.html +6 -0
  81. package/docs/modules/components_DPad.html +5 -0
  82. package/docs/modules/components_Indicator.html +4 -0
  83. package/docs/modules/components_IndicatorButton.html +7 -0
  84. package/docs/modules/components_IndicatorColor.html +2 -0
  85. package/docs/modules/components_Osk.html +3 -0
  86. package/docs/modules/components_OskDialog.html +3 -0
  87. package/docs/modules/components_ValueDisplay.html +3 -0
  88. package/docs/modules/core_DimensionsContext.html +4 -0
  89. package/docs/modules/core_EventEmitterContext.html +11 -0
  90. package/docs/modules/core_InputPatterns.html +2 -0
  91. package/docs/modules/core_NumerableTypes.html +2 -0
  92. package/docs/modules/core_UniqueId.html +2 -0
  93. package/docs/modules/core_ValueSimulator.html +3 -0
  94. package/docs/modules/core_hoc.html +3 -0
  95. package/docs/modules/hub.html +6 -0
  96. package/docs/modules/hub_HubBase.html +3 -0
  97. package/docs/modules/hub_HubSimulate.html +3 -0
  98. package/docs/modules/hub_HubSocketIo.html +3 -0
  99. package/docs/modules/hub_HubTauri.html +2 -0
  100. package/docs/types/core_EventEmitterContext.EmitterDispatchFunction.html +1 -0
  101. package/docs/types/core_EventEmitterContext.EmitterSubscribeFunction.html +1 -0
  102. package/docs/types/core_EventEmitterContext.EmitterUnsubscribeFunction.html +1 -0
  103. package/docs/types/core_NumerableTypes.NumerableFormatOptions.html +1 -0
  104. package/docs/types/core_hoc.HocAddSubscriptionProps.html +4 -0
  105. package/docs/variables/core_DimensionsContext.DimensionsContext.html +1 -0
  106. package/docs/variables/core_EventEmitterContext.EventEmitterContext.html +5 -0
  107. package/docs/variables/core_InputPatterns.InputPatterns.html +2 -0
  108. package/package.json +79 -0
  109. package/readme.md +140 -0
  110. package/src/components/DPad.css +522 -0
  111. package/src/components/DPad.tsx +94 -0
  112. package/src/components/Indicator.tsx +243 -0
  113. package/src/components/IndicatorButton.tsx +306 -0
  114. package/src/components/IndicatorColor.ts +36 -0
  115. package/src/components/Osk.tsx +193 -0
  116. package/src/components/OskDialog.tsx +165 -0
  117. package/src/components/ValueDisplay.tsx +181 -0
  118. package/src/components/osk.css +123 -0
  119. package/src/core/EventEmitterContext.tsx +394 -0
  120. package/src/core/MaskPatterns.ts +82 -0
  121. package/src/core/NumerableTypes.ts +81 -0
  122. package/src/core/PositionContext.ts +60 -0
  123. package/src/core/UniqueId.ts +41 -0
  124. package/src/core/ValueSimulator.ts +167 -0
  125. package/src/core/hoc.tsx +65 -0
  126. package/src/hub/HubBase.ts +293 -0
  127. package/src/hub/HubSimulate.ts +47 -0
  128. package/src/hub/HubSocketIo.ts +166 -0
  129. package/src/hub/HubTauri.ts +145 -0
  130. package/src/hub/index.ts +41 -0
  131. package/terser.config.cjs +25 -0
  132. package/todo.md +18 -0
  133. package/tools/copy-distribution-files.cjs +73 -0
  134. package/tools/minify.cjs +56 -0
  135. package/tsconfig.json +34 -0
  136. package/typedoc.json +13 -0
@@ -0,0 +1,522 @@
1
+ /*
2
+ * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
+ * Created Date: 2024-01-16 13:17:33
4
+ * -----
5
+ * Last Modified: 2024-03-08 07:16:53
6
+ * -----
7
+ *
8
+ */
9
+
10
+
11
+ .d-pad {
12
+ position: relative;
13
+ width: 200px;
14
+ height: 200px;
15
+ border-radius: 48%;
16
+ overflow: hidden;
17
+
18
+ &:before {
19
+ content: '';
20
+ position: absolute;
21
+ top: 50%;
22
+ left: 50%;
23
+ border-radius: 5%;
24
+ transform: translate(-50%, -50%);
25
+ width: 66.6%;
26
+ height: 66.6%;
27
+ background: transparent;
28
+ }
29
+
30
+ &:after {
31
+ content: '';
32
+ position: absolute;
33
+ display: none;
34
+ z-index: 2;
35
+ width: 20%;
36
+ height: 20%;
37
+ top: 50%;
38
+ left: 50%;
39
+ background: var(--vc-dpad-fg);
40
+ border-radius: 50%;
41
+ transform: translate(-50%, -50%);
42
+ /* transition: all .25s; */
43
+ }
44
+
45
+ &:hover:after {
46
+ width: 30%;
47
+ height: 30%;
48
+ }
49
+
50
+ a {
51
+ cursor: var(--vc-btn-cursor);
52
+ display: block;
53
+ position: absolute;
54
+ -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
55
+ width: 33.3%;
56
+ height: 43%;
57
+ line-height: 40%;
58
+ color: #fff;
59
+ text-align: center;
60
+ background: var(--vc-btn-bgcolor);
61
+ box-shadow: 0 2px 4px black, inset 0 2px 4px rgba(255, 255, 255, 0.5);
62
+
63
+ &:hover {}
64
+
65
+ &:active {
66
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
67
+ }
68
+
69
+ &:before {
70
+ content: '';
71
+ position: absolute;
72
+ width: 0;
73
+ height: 0;
74
+ border-radius: 5px;
75
+ border-style: solid;
76
+ /* transition: all .25s; */
77
+ }
78
+
79
+ &:after {
80
+ content: '';
81
+ position: absolute;
82
+ width: 102%;
83
+ height: 78%;
84
+ background: var(--vc-dpad-bg);
85
+ border-radius: var(--vc-dpad-radius-in);
86
+ }
87
+ }
88
+
89
+ a.left,
90
+ a.right {
91
+ width: 43%;
92
+ height: 33%;
93
+
94
+ &:after {
95
+ width: 78%;
96
+ height: 102%;
97
+ }
98
+ }
99
+
100
+ a.up {
101
+ top: 0;
102
+ left: 50%;
103
+ transform: translate(-50%, 0);
104
+ border-radius: var(--vc-dpad-radius) var(--vc-dpad-radius) 50% 50%;
105
+
106
+ &:hover {}
107
+
108
+ &:active {
109
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
110
+ }
111
+
112
+ &:after {
113
+ left: 0;
114
+ top: 0;
115
+ transform: translate(-100%, 0);
116
+ border-top-left-radius: 50%;
117
+ pointer-events: none;
118
+ }
119
+
120
+ &:before {
121
+ top: 40%;
122
+ left: 50%;
123
+ transform: translate(-50%, -50%);
124
+ border-width: 0 var(--vc-tri-sml-a) var(--vc-tri-sml-b) var(--vc-tri-sml-a);
125
+ border-color: transparent transparent var(--vc-arrowcolor) transparent;
126
+ }
127
+
128
+ &:active:before {
129
+ border-bottom-color: #333;
130
+ }
131
+ }
132
+
133
+ a.up:hover:before {
134
+ top: var(--vc-dpad-arrow-move);
135
+ box-shadow: inset 0 0 10px rgba(255, 255, 255, .5), 0 0 10px rgba(255, 255, 255, .2);
136
+ outline-color: white;
137
+ outline-offset: 8px;
138
+ text-shadow: 1px 1px 2px var(--vc-color-black);
139
+
140
+ outline: 1px solid;
141
+ transition: all 300ms cubic-bezier(0.19, 1, 0.22, 1);
142
+ }
143
+
144
+ a.down {
145
+ bottom: 0;
146
+ left: 50%;
147
+ transform: translate(-50%, 0);
148
+ border-radius: 50% 50% var(--vc-dpad-radius) var(--vc-dpad-radius);
149
+
150
+ &:hover {}
151
+
152
+ &:active {
153
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
154
+ }
155
+
156
+ &:after {
157
+ right: 0;
158
+ bottom: 0;
159
+ transform: translate(100%, 0);
160
+ border-bottom-right-radius: 50%;
161
+ pointer-events: none;
162
+ }
163
+
164
+ &:before {
165
+ bottom: 40%;
166
+ left: 50%;
167
+ transform: translate(-50%, 50%);
168
+ border-width: var(--vc-tri-sml-b) var(--vc-tri-sml-a) 0px var(--vc-tri-sml-a);
169
+ border-color: var(--vc-arrowcolor) transparent transparent transparent;
170
+ }
171
+
172
+ &:active:before {
173
+ border-top-color: #333;
174
+ }
175
+ }
176
+
177
+ a.down:hover:before {
178
+ bottom: var(--vc-dpad-arrow-move);
179
+ box-shadow: inset 0 0 10px rgba(255, 255, 255, .5), 0 0 10px rgba(255, 255, 255, .2);
180
+ outline-color: white;
181
+ outline-offset: 8px;
182
+ text-shadow: 1px 1px 2px var(--vc-color-black);
183
+
184
+ outline: 1px solid;
185
+ transition: all 300ms cubic-bezier(0.19, 1, 0.22, 1);
186
+ }
187
+
188
+ a.left {
189
+ top: 50%;
190
+ left: 0;
191
+ transform: translate(0, -50%);
192
+ border-radius: var(--vc-dpad-radius) 50% 50% var(--vc-dpad-radius);
193
+
194
+ &:hover {}
195
+
196
+ &:active {
197
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
198
+ }
199
+
200
+ &:after {
201
+ left: 0;
202
+ bottom: 0;
203
+ transform: translate(0, 100%);
204
+ border-bottom-left-radius: 50%;
205
+ pointer-events: none;
206
+ }
207
+
208
+ &:before {
209
+ left: 40%;
210
+ top: 50%;
211
+ transform: translate(-50%, -50%);
212
+ border-width: var(--vc-tri-sml-a) var(--vc-tri-sml-b) var(--vc-tri-sml-a) 0;
213
+ border-color: transparent var(--vc-arrowcolor) transparent transparent;
214
+ }
215
+
216
+ &:active:before {
217
+ border-right-color: #333;
218
+ }
219
+ }
220
+
221
+ a.left:hover:before {
222
+ left: var(--vc-dpad-arrow-move);
223
+ box-shadow: inset 0 0 10px rgba(255, 255, 255, .5), 0 0 10px rgba(255, 255, 255, .2);
224
+ outline-color: white;
225
+ outline-offset: 8px;
226
+ text-shadow: 1px 1px 2px var(--vc-color-black);
227
+
228
+ outline: 1px solid;
229
+ transition: all 300ms cubic-bezier(0.19, 1, 0.22, 1);
230
+ }
231
+
232
+ a.right {
233
+ top: 50%;
234
+ right: 0;
235
+ transform: translate(0, -50%);
236
+ border-radius: 50% var(--vc-dpad-radius) var(--vc-dpad-radius) 50%;
237
+
238
+ &:hover {}
239
+
240
+ &:active {
241
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
242
+ }
243
+
244
+ &:after {
245
+ right: 0;
246
+ top: 0;
247
+ transform: translate(0, -100%);
248
+ border-top-right-radius: 50%;
249
+ pointer-events: none;
250
+ }
251
+
252
+ &:before {
253
+ right: 40%;
254
+ top: 50%;
255
+ transform: translate(50%, -50%);
256
+ border-width: var(--vc-tri-sml-a) 0 var(--vc-tri-sml-a) var(--vc-tri-sml-b);
257
+ border-color: transparent transparent transparent var(--vc-arrowcolor);
258
+ }
259
+
260
+ &:active:before {
261
+ border-left-color: #333;
262
+ }
263
+ }
264
+
265
+ a.right:hover:before {
266
+ right: var(--vc-dpad-arrow-move);
267
+ box-shadow: inset 0 0 10px rgba(255, 255, 255, .5), 0 0 10px rgba(255, 255, 255, .2);
268
+ outline-color: white;
269
+ outline-offset: 8px;
270
+ text-shadow: 1px 1px 2px var(--vc-color-black);
271
+
272
+ outline: 1px solid;
273
+ transition: all 300ms cubic-bezier(0.19, 1, 0.22, 1);
274
+ }
275
+ }
276
+
277
+ .d-pad.up a.up:before {
278
+ border-bottom-color: #333;
279
+ }
280
+
281
+ .d-pad.down a.down:before {
282
+ border-top-color: #333;
283
+ }
284
+
285
+ .d-pad.left a.left:before {
286
+ border-right-color: #333;
287
+ }
288
+
289
+ .d-pad.right a.right:before {
290
+ border-left-color: #333;
291
+ }
292
+
293
+
294
+ .o-pad {
295
+ position: relative;
296
+ background: var(--vc-dpad-fg);
297
+ width: 200px;
298
+ height: 200px;
299
+ border-radius: 50%;
300
+ overflow: hidden;
301
+
302
+
303
+ box-shadow: 2px 2px 4px black;
304
+
305
+ &:after {
306
+ content: '';
307
+ position: absolute;
308
+ z-index: 2;
309
+ width: 20%;
310
+ height: 20%;
311
+ top: 50%;
312
+ left: 50%;
313
+ background: #ddd;
314
+ border-radius: 50%;
315
+ transform: translate(-50%, -50%);
316
+ display: none;
317
+ /* transition: all .25s; */
318
+ }
319
+
320
+ &:hover:after {
321
+ width: 30%;
322
+ height: 30%;
323
+ }
324
+
325
+ a {
326
+ cursor: var(--vc-btn-cursor);
327
+ display: block;
328
+ position: absolute;
329
+ -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
330
+ width: 50%;
331
+ height: 50%;
332
+ text-align: center;
333
+ transform: rotate(45deg);
334
+ border: 1px solid rgba(0, 0, 0, .2);
335
+
336
+ &:before {
337
+ content: '';
338
+ position: absolute;
339
+ width: 60%;
340
+ height: 60%;
341
+ top: 50%;
342
+ left: 50%;
343
+ background: rgba(255, 255, 255, 0.1);
344
+ border-radius: 50%;
345
+ transform: translate(-50%, -50%);
346
+ /* transition: all .25s; */
347
+ display: none;
348
+ }
349
+
350
+ &:after {
351
+ content: '';
352
+ position: absolute;
353
+ width: 0;
354
+ height: 0;
355
+ border-radius: 5px;
356
+ border-style: solid;
357
+ transform: translate(-50%, -50%) rotate(-45deg);
358
+ /* transition: all .25s; */
359
+ }
360
+ }
361
+
362
+ a.up {
363
+ bottom: 50%;
364
+ left: 50%;
365
+ transform: translate(-50%, -20%) rotate(45deg);
366
+ border-top-left-radius: 50%;
367
+ z-index: 1;
368
+
369
+ background: var(--vc-btn-bgcolor);
370
+ box-shadow: 0 1px 4px white, inset 0 -1px 4px black;
371
+
372
+ &:hover {}
373
+
374
+ &:active {
375
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
376
+ }
377
+
378
+ &:before {
379
+ left: 57%;
380
+ top: 57%;
381
+ }
382
+
383
+ &:after {
384
+ left: 53%;
385
+ top: 53%;
386
+ border-width: 0 var(--vc-tri-lrg-a) var(--vc-tri-lrg-b) var(--vc-tri-lrg-a);
387
+ border-color: transparent transparent var(--vc-arrowcolor) transparent;
388
+ }
389
+
390
+ &:active:after {
391
+ border-bottom-color: #333;
392
+ }
393
+ }
394
+
395
+
396
+ a.down {
397
+ top: 50%;
398
+ left: 50%;
399
+ transform: translate(-50%, 20%) rotate(45deg);
400
+ border-bottom-right-radius: 50%;
401
+ z-index: 1;
402
+
403
+ background: var(--vc-btn-bgcolor);
404
+ box-shadow: 0 2px 4px black, inset 0 2px 4px rgba(255, 255, 255, 0.5);
405
+
406
+ &:hover {}
407
+
408
+ &:active {
409
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
410
+ }
411
+
412
+ &:before {
413
+ left: 43%;
414
+ top: 43%;
415
+ }
416
+
417
+ &:after {
418
+ left: 47%;
419
+ top: 47%;
420
+ border-width: var(--vc-tri-lrg-b) var(--vc-tri-lrg-a) 0px var(--vc-tri-lrg-a);
421
+ border-color: var(--vc-arrowcolor) transparent transparent transparent;
422
+ }
423
+
424
+ &:active:after {
425
+ border-top-color: #333;
426
+ }
427
+ }
428
+
429
+ a.left {
430
+ top: 50%;
431
+ right: 50%;
432
+ transform: translate(-20%, -50%) rotate(45deg);
433
+ border-bottom-left-radius: 50%;
434
+ border: none;
435
+
436
+ background: var(--vc-btn-bgcolor);
437
+
438
+ &:hover {}
439
+
440
+ &:active {
441
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
442
+ }
443
+
444
+ &:before {
445
+ left: 57%;
446
+ top: 43%;
447
+ }
448
+
449
+ &:after {
450
+ left: 53%;
451
+ top: 47%;
452
+ border-width: var(--vc-tri-lrg-a) var(--vc-tri-lrg-b) var(--vc-tri-lrg-a) 0;
453
+ border-color: transparent var(--vc-arrowcolor) transparent transparent;
454
+ }
455
+
456
+ &:active:after {
457
+ border-right-color: #333;
458
+ }
459
+ }
460
+
461
+ a.right {
462
+ top: 50%;
463
+ left: 50%;
464
+ transform: translate(20%, -50%) rotate(45deg);
465
+ border-top-right-radius: 50%;
466
+ border: none;
467
+
468
+ background: var(--vc-btn-bgcolor);
469
+ box-shadow: 0 1px 4px white, inset 0 -1px 4px black;
470
+
471
+ &:hover {}
472
+
473
+ &:active {
474
+ background: linear-gradient(45deg, var(--vc-dpad-fg-hover) 15%, var(--vc-dpad-fg-hover) 100%);
475
+ }
476
+
477
+ &:before {
478
+ left: 43%;
479
+ top: 57%;
480
+ }
481
+
482
+ &:after {
483
+ left: 47%;
484
+ top: 53%;
485
+ border-width: var(--vc-tri-lrg-a) 0 var(--vc-tri-lrg-a) var(--vc-tri-lrg-b);
486
+ border-color: transparent transparent transparent var(--vc-arrowcolor);
487
+ }
488
+
489
+ &:active:after {
490
+ border-left-color: #333;
491
+ }
492
+ }
493
+
494
+ a:hover:after {
495
+ left: 50%;
496
+ top: 50%;
497
+ box-shadow: inset 0 0 10px rgba(255, 255, 255, .5), 0 0 10px rgba(255, 255, 255, .2);
498
+ outline-color: white;
499
+ outline-offset: 8px;
500
+ text-shadow: 1px 1px 2px var(--vc-color-black);
501
+
502
+ outline: 1px solid;
503
+ transition: all 300ms cubic-bezier(0.19, 1, 0.22, 1);
504
+ }
505
+ }
506
+
507
+
508
+ .d-pad.up a.up:before {
509
+ border-bottom-color: #333;
510
+ }
511
+
512
+ .d-pad.down a.down:before {
513
+ border-top-color: #333;
514
+ }
515
+
516
+ .d-pad.left a.left:before {
517
+ border-right-color: #333;
518
+ }
519
+
520
+ .d-pad.right a.right:before {
521
+ border-left-color: #333;
522
+ }
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import './VcDPad.css';
3
+ /**
4
+ * Enumerates the source button or action when an event occurs.
5
+ */
6
+ export declare enum VcJoyPadAction {
7
+ /** Invalid - Ignore this button */
8
+ Invalid = 0,
9
+ Up = 1,
10
+ Right = 2,
11
+ Down = 3,
12
+ Left = 4,
13
+ /** Stop, clear or reset */
14
+ Stop = 16
15
+ }
16
+ /**
17
+ * Enumerates the id's of buttons used in the joypad for standardization.
18
+ */
19
+ export declare enum VcJoyPadButtonId {
20
+ Stop = "stop",
21
+ Up = "up",
22
+ Right = "right",
23
+ Down = "down",
24
+ Left = "left"
25
+ }
26
+ interface VcDPadProps {
27
+ onAction?: (action: VcJoyPadAction) => void;
28
+ onUp?: () => void;
29
+ onDown?: () => void;
30
+ onRight?: () => void;
31
+ onLeft?: () => void;
32
+ }
33
+ export declare const VcDPad: React.FC<VcDPadProps>;
34
+ export default VcDPad;
@@ -0,0 +1 @@
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import"./VcDPad.css";export var VcJoyPadAction;!function(o){o[o.Invalid=0]="Invalid",o[o.Up=1]="Up",o[o.Right=2]="Right",o[o.Down=3]="Down",o[o.Left=4]="Left",o[o.Stop=16]="Stop"}(VcJoyPadAction||(VcJoyPadAction={}));export var VcJoyPadButtonId;!function(o){o.Stop="stop",o.Up="up",o.Right="right",o.Down="down",o.Left="left"}(VcJoyPadButtonId||(VcJoyPadButtonId={}));export const VcDPad=({onAction:o,onUp:t,onDown:n,onRight:c,onLeft:a})=>{const i=i=>{o&&o(i),i===VcJoyPadAction.Up?null!=t&&t():i===VcJoyPadAction.Down?null!=n&&n():i===VcJoyPadAction.Right?null!=c&&c():i===VcJoyPadAction.Left&&null!=a&&a()};return _jsx("div",{className:"set",children:_jsxs("nav",{className:"d-pad",children:[_jsx("a",{className:"up",onClick:()=>i(VcJoyPadAction.Up)}),_jsx("a",{className:"right",onClick:()=>i(VcJoyPadAction.Right)}),_jsx("a",{className:"down",onClick:()=>i(VcJoyPadAction.Down)}),_jsx("a",{className:"left",onClick:()=>i(VcJoyPadAction.Left)})]})})};export default VcDPad;
@@ -0,0 +1,81 @@
1
+ import React, { Component } from 'react';
2
+ import { EventEmitterContextType } from '../core/EventEmitterContext';
3
+ import { IndicatorColor } from "./IndicatorColor";
4
+ export { IndicatorColor };
5
+ interface IndicatorProps {
6
+ /**
7
+ * State to be displayed<br/>
8
+ *
9
+ * Available states: **on**, **off** and **not available**:
10
+ *
11
+ * * `true` is treated as **on**
12
+ * * `false` is treated as **off**
13
+ * * `undefined` is treated as **not available**
14
+ */
15
+ value?: boolean | undefined;
16
+ /**
17
+ * X position (in pixels)
18
+ */
19
+ x?: number;
20
+ /**
21
+ * Y position (in pixels)
22
+ */
23
+ y?: number;
24
+ /**
25
+ * Width (in pixels)
26
+ */
27
+ width?: number;
28
+ /**
29
+ * Height (in pixels)<br/>
30
+ * @default width
31
+ */
32
+ height?: number;
33
+ /**
34
+ * CSS color for **enabled** state
35
+ */
36
+ onColor?: string;
37
+ /**
38
+ * CSS color for **disabled** state
39
+ */
40
+ offColor?: string;
41
+ /**
42
+ * CSS color for **not available** state
43
+ */
44
+ invalidColor?: string;
45
+ /**
46
+ * Custom class name to be attached
47
+ */
48
+ className?: string;
49
+ /**
50
+ * Enable absolute positioning for the component, allowing it to be
51
+ * placed on a specific position of its parent. This is useful when
52
+ * laying components over an image or wireframe.
53
+ */
54
+ useAbsolutePositioning?: boolean;
55
+ /**
56
+ * The topic to monitor to display. Optional.
57
+ */
58
+ topic?: string;
59
+ }
60
+ interface IndicatorState {
61
+ subscribedValue?: boolean | null;
62
+ fontSize?: string;
63
+ }
64
+ export declare class Indicator extends Component<IndicatorProps, IndicatorState> {
65
+ static contextType: React.Context<EventEmitterContextType>;
66
+ protected unsubscribeTopicId: number | null;
67
+ static defaultProps: {
68
+ width: number;
69
+ height: number;
70
+ onColor: string;
71
+ offColor: string;
72
+ invalidColor: string;
73
+ useAbsolutePositioning: boolean;
74
+ };
75
+ constructor(props: IndicatorProps);
76
+ componentDidMount(): void;
77
+ componentDidUpdate(prevProps: IndicatorProps): void;
78
+ componentWillUnmount(): void;
79
+ render(): import("react/jsx-runtime").JSX.Element;
80
+ }
81
+ export default Indicator;
@@ -0,0 +1 @@
1
+ import{jsx as _jsx}from"react/jsx-runtime";import{Component}from"react";import clsx from"clsx";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"./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{x:e,y:t,width:o,height:i,className:s,onColor:r,offColor:n,invalidColor:l,useAbsolutePositioning:c}=this.props,{scale:a,xOffset:u,yOffset:d}=this.context,{subscribedValue:b}=this.state;let p=o||10;p<10&&(p=10);let h=i||10;h<10&&(h=10);let f,m=a||1;switch(0===m&&(m=1),b){case!0:f=r;break;case!1:f=n;break;default:f=l}const x={position:c?"absolute":"relative",display:c?"":"inline-block",verticalAlign:"middle",top:c&&t?`${d+m*t}px`:void 0,left:c&&e?`${u+m*e}px`:void 0,width:p?p*m+"px":void 0,height:h?h*m+"px":void 0,lineHeight:h?h*m+"px":void 0,backgroundColor:f,borderRadius:"20px"};return _jsx("div",{className:clsx(s),style:x})}}Object.defineProperty(Indicator,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:EventEmitterContext}),Object.defineProperty(Indicator,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{width:22,height:22,onColor:"green",offColor:"gray",invalidColor:"yellow",useAbsolutePositioning:!1}});export default Indicator;