@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,34 +1,34 @@
1
- /*
2
- * Copyright (C) 2024 Automated Design Corp.. All Rights Reserved.
3
- * Created Date: 2024-03-12 11:08:29
4
- * -----
5
- * Last Modified: 2026-01-29 09:32:28
6
- * -----
7
- *
8
- */
9
-
10
-
11
- /**
12
- * Common state for the indicator buttons, toggles or similar components.
13
- */
14
- export interface IndicatorButtonState {
15
- /**
16
- * Current value/state of the button based on the subscribed topic.
17
- */
18
- currentValue?: boolean | number | string;
19
-
20
- /**
21
- * Indicates whether the button is disabled.
22
- */
23
- isDisabled?: boolean;
24
-
25
- /**
26
- * Indicates whether the button is invisible.
27
- */
28
- isInvisible?: boolean;
29
-
30
- /**
31
- * The button is in the "down" state.
32
- */
33
- isPressed : boolean;
34
- }
1
+ /*
2
+ * Copyright (C) 2024 Automated Design Corp.. All Rights Reserved.
3
+ * Created Date: 2024-03-12 11:08:29
4
+ * -----
5
+ * Last Modified: 2026-01-29 09:32:28
6
+ * -----
7
+ *
8
+ */
9
+
10
+
11
+ /**
12
+ * Common state for the indicator buttons, toggles or similar components.
13
+ */
14
+ export interface IndicatorButtonState {
15
+ /**
16
+ * Current value/state of the button based on the subscribed topic.
17
+ */
18
+ currentValue?: boolean | number | string;
19
+
20
+ /**
21
+ * Indicates whether the button is disabled.
22
+ */
23
+ isDisabled?: boolean;
24
+
25
+ /**
26
+ * Indicates whether the button is invisible.
27
+ */
28
+ isInvisible?: boolean;
29
+
30
+ /**
31
+ * The button is in the "down" state.
32
+ */
33
+ isPressed : boolean;
34
+ }
@@ -1,36 +1,36 @@
1
- /*
2
- * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
- * Created Date: 2024-01-21 11:45:09
4
- * -----
5
- * Last Modified: 2024-03-08 07:16:47
6
- * Modified By: ADC
7
- * -----
8
- *
9
- */
10
-
11
- /**
12
- * Standardized indicator colors and their meanings. It's probably
13
- * best to use their meaning and not the actual color name.
14
- */
15
- export enum IndicatorColor {
16
- /** Green: On, Ok, Ready, Home, General Use */
17
- IndicatorGreen = "green",
18
- /** Alias for the ON condition to make meaning clear. Preferred for ON case. */
19
- IndicatorOn = IndicatorGreen,
20
- /** Off. ONLY USE THIS FOR OFF. */
21
- IndicatorOff = "gray",
22
- /** Red: Error, Fault, Stop, Stopped. Use sparingly. */
23
- IndicatorRed = "red",
24
- /** Orange: Warning, Out of position, moving, out of range. */
25
- IndicatorOrange = "orange",
26
- /** Alias for Red to make meaning clear. Preferred. */
27
- IndicatorError = IndicatorRed,
28
- /** Alias for Orange to make meaning clear. Preferred. */
29
- IndicatorWarning = IndicatorOrange,
30
- /** Invalid. If an indicator is black, the interface does not know the current value. */
31
- IndicatorInvalid = "black",
32
- /** Use for navigation buttons. No other meaning allowed. */
33
- IndicatorNavigation = "cyan",
34
- /** Use for informational buttons. No other meaning allowed. */
35
- IndicatorInfo = "blue"
1
+ /*
2
+ * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
+ * Created Date: 2024-01-21 11:45:09
4
+ * -----
5
+ * Last Modified: 2024-03-08 07:16:47
6
+ * Modified By: ADC
7
+ * -----
8
+ *
9
+ */
10
+
11
+ /**
12
+ * Standardized indicator colors and their meanings. It's probably
13
+ * best to use their meaning and not the actual color name.
14
+ */
15
+ export enum IndicatorColor {
16
+ /** Green: On, Ok, Ready, Home, General Use */
17
+ IndicatorGreen = "green",
18
+ /** Alias for the ON condition to make meaning clear. Preferred for ON case. */
19
+ IndicatorOn = IndicatorGreen,
20
+ /** Off. ONLY USE THIS FOR OFF. */
21
+ IndicatorOff = "gray",
22
+ /** Red: Error, Fault, Stop, Stopped. Use sparingly. */
23
+ IndicatorRed = "red",
24
+ /** Orange: Warning, Out of position, moving, out of range. */
25
+ IndicatorOrange = "orange",
26
+ /** Alias for Red to make meaning clear. Preferred. */
27
+ IndicatorError = IndicatorRed,
28
+ /** Alias for Orange to make meaning clear. Preferred. */
29
+ IndicatorWarning = IndicatorOrange,
30
+ /** Invalid. If an indicator is black, the interface does not know the current value. */
31
+ IndicatorInvalid = "black",
32
+ /** Use for navigation buttons. No other meaning allowed. */
33
+ IndicatorNavigation = "cyan",
34
+ /** Use for informational buttons. No other meaning allowed. */
35
+ IndicatorInfo = "blue"
36
36
  }
@@ -1,88 +1,88 @@
1
- /*
2
- * (C) Copyright 2021 Automated Design Corp. All Rights Reserved.
3
- * File Created: Thursday, 1st April 2021 12:30:41 pm
4
- * Author: Thomas C. Bitsky Jr. Automated Design Corp.
5
- */
6
-
7
- /**
8
- * @fileoverview
9
- * Provides a collection of pre-defined patterns for masking/validating different types of user input or data string.
10
- * These patterns come up so regularly in our work that it seemed best to standardize and centralize their definition.
11
- *
12
- * These patterns can be used to ensure that user inputs conform to expected formats, such as real numbers (with or without
13
- * decimal points), positive real numbers, integers, and positive integers. Utilizing these patterns simplifies the process
14
- * of validating and filtering input in forms or any other user input scenarios.
15
- *
16
- * The patterns are defined as regular expressions and are encapsulated within the `InputPatterns` constant for easy access.
17
- * They can be used directly with input validation functions or in conjunction with form validation libraries to enforce
18
- * input constraints.
19
- */
20
-
21
- /**
22
- * Regular expressions Common input patterns for matching different input or expected data types.
23
- */
24
- export const RegExMaskPatterns = {
25
- /**
26
- * Regular expression pattern for matching real numbers.
27
- * This pattern matches any real number, including negative and positive numbers with or without a decimal point.
28
- * Examples of valid inputs: "123", "-123", "123.456", "-123.456", ".456", "-.456"
29
- */
30
- RealNumber: /^-?\d*(\.)?(\d+)?$/,
31
- /**
32
- * Regular expression pattern for matching positive real numbers.
33
- * This pattern matches any positive real number with or without a decimal point, excluding negative numbers.
34
- * Examples of valid inputs: "123", "123.456", ".456"
35
- */
36
- RealNumberPositive: /^\d*(\.)?(\d+)?$/,
37
- /**
38
- * Regular expression pattern for matching integers.
39
- * This pattern matches any integer, including negative and positive integers without a decimal point.
40
- * Examples of valid inputs: "123", "-123"
41
- */
42
- Integer: /^-?\d*$/,
43
- /**
44
- * Regular expression pattern for matching positive integers.
45
- * This pattern matches any positive integer without a decimal point, excluding negative numbers.
46
- * Examples of valid inputs: "123"
47
- */
48
- IntegerPositive: /^\d+$/,
49
-
50
-
51
- /**
52
- * Regular expression for matching IPV4 address.
53
- */
54
- Ipv4: /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
55
- } as const;
56
-
57
-
58
-
59
- /**
60
- * Patterns for use with PrimeReact.InputMask components
61
- */
62
- export const PrimeReactMaskPatterns = {
63
- /** USA Social Security Number */
64
- SocialSecurityNumber: "999-99-9999",
65
- /** USA phone number with optional extension */
66
- PhoneNumberUS: "(999) 999-9999? x99999",
67
- /** International phone number with optional extension */
68
- PhoneNumberInternational: "+999 999 999 9999? x99999",
69
- /** International phone number with optional extension */
70
- PhoneNumberJapan: "+81 9999 999 9999? x99999",
71
- /** International phone number with optional extension */
72
- PhoneNumberChina: "+86 999 999 9999? x99999",
73
- /** International phone number with optional extension */
74
- PhoneNumberVietnam: "+84 999 999 9999? x99999",
75
- /** International phone number with optional extension */
76
- PhoneNumberSouthKorea: "+82 99 9999 9999 x99999",
77
- /** International phone number with optional extension */
78
- PhoneNumberCanada: "+1 (999) 999-9999 x99999",
79
- /** International phone number with optional extension */
80
- PhoneNumberMexico: "+52 999 999 9999 x99999",
81
- /** International phone number with optional extension */
82
- PhoneNumberScotland: "+44 9999 999999 x99999",
83
- /** International phone number with optional extension */
84
- PhoneNumberEngland: "+44 9999 999999 x99999",
85
- /** International phone number with optional extension */
86
- PhoneNumberIreland: "+353 99 999 9999 x99999",
87
-
1
+ /*
2
+ * (C) Copyright 2021 Automated Design Corp. All Rights Reserved.
3
+ * File Created: Thursday, 1st April 2021 12:30:41 pm
4
+ * Author: Thomas C. Bitsky Jr. Automated Design Corp.
5
+ */
6
+
7
+ /**
8
+ * @fileoverview
9
+ * Provides a collection of pre-defined patterns for masking/validating different types of user input or data string.
10
+ * These patterns come up so regularly in our work that it seemed best to standardize and centralize their definition.
11
+ *
12
+ * These patterns can be used to ensure that user inputs conform to expected formats, such as real numbers (with or without
13
+ * decimal points), positive real numbers, integers, and positive integers. Utilizing these patterns simplifies the process
14
+ * of validating and filtering input in forms or any other user input scenarios.
15
+ *
16
+ * The patterns are defined as regular expressions and are encapsulated within the `InputPatterns` constant for easy access.
17
+ * They can be used directly with input validation functions or in conjunction with form validation libraries to enforce
18
+ * input constraints.
19
+ */
20
+
21
+ /**
22
+ * Regular expressions Common input patterns for matching different input or expected data types.
23
+ */
24
+ export const RegExMaskPatterns = {
25
+ /**
26
+ * Regular expression pattern for matching real numbers.
27
+ * This pattern matches any real number, including negative and positive numbers with or without a decimal point.
28
+ * Examples of valid inputs: "123", "-123", "123.456", "-123.456", ".456", "-.456"
29
+ */
30
+ RealNumber: /^-?\d*(\.)?(\d+)?$/,
31
+ /**
32
+ * Regular expression pattern for matching positive real numbers.
33
+ * This pattern matches any positive real number with or without a decimal point, excluding negative numbers.
34
+ * Examples of valid inputs: "123", "123.456", ".456"
35
+ */
36
+ RealNumberPositive: /^\d*(\.)?(\d+)?$/,
37
+ /**
38
+ * Regular expression pattern for matching integers.
39
+ * This pattern matches any integer, including negative and positive integers without a decimal point.
40
+ * Examples of valid inputs: "123", "-123"
41
+ */
42
+ Integer: /^-?\d*$/,
43
+ /**
44
+ * Regular expression pattern for matching positive integers.
45
+ * This pattern matches any positive integer without a decimal point, excluding negative numbers.
46
+ * Examples of valid inputs: "123"
47
+ */
48
+ IntegerPositive: /^\d+$/,
49
+
50
+
51
+ /**
52
+ * Regular expression for matching IPV4 address.
53
+ */
54
+ Ipv4: /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
55
+ } as const;
56
+
57
+
58
+
59
+ /**
60
+ * Patterns for use with PrimeReact.InputMask components
61
+ */
62
+ export const PrimeReactMaskPatterns = {
63
+ /** USA Social Security Number */
64
+ SocialSecurityNumber: "999-99-9999",
65
+ /** USA phone number with optional extension */
66
+ PhoneNumberUS: "(999) 999-9999? x99999",
67
+ /** International phone number with optional extension */
68
+ PhoneNumberInternational: "+999 999 999 9999? x99999",
69
+ /** International phone number with optional extension */
70
+ PhoneNumberJapan: "+81 9999 999 9999? x99999",
71
+ /** International phone number with optional extension */
72
+ PhoneNumberChina: "+86 999 999 9999? x99999",
73
+ /** International phone number with optional extension */
74
+ PhoneNumberVietnam: "+84 999 999 9999? x99999",
75
+ /** International phone number with optional extension */
76
+ PhoneNumberSouthKorea: "+82 99 9999 9999 x99999",
77
+ /** International phone number with optional extension */
78
+ PhoneNumberCanada: "+1 (999) 999-9999 x99999",
79
+ /** International phone number with optional extension */
80
+ PhoneNumberMexico: "+52 999 999 9999 x99999",
81
+ /** International phone number with optional extension */
82
+ PhoneNumberScotland: "+44 9999 999999 x99999",
83
+ /** International phone number with optional extension */
84
+ PhoneNumberEngland: "+44 9999 999999 x99999",
85
+ /** International phone number with optional extension */
86
+ PhoneNumberIreland: "+353 99 999 9999 x99999",
87
+
88
88
  } as const;
@@ -1,81 +1,81 @@
1
- /*
2
- * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
- * Created Date: 2024-01-16 14:19:17
4
- * -----
5
- * Last Modified: 2024-03-08 07:55:25
6
- * Modified By: ADC
7
- * -----
8
- *
9
- */
10
-
11
- /**
12
- * @fileoverview
13
- *
14
- * These types enhance TypeScript support for the `numerable` library, which does not directly
15
- * export the `NumerableFormatNumberOptions` type. By extracting and refining the type definitions
16
- * for the `format` function's parameters, including handling its overloaded signatures, this file
17
- * makes it easier to use `numerable` in TypeScript and React projects.
18
- *
19
- * The process involves creating a type that captures the overloads of the `format` function and
20
- * then mapping over these overloads to extract their parameters. This technique enables the
21
- * extraction of the specific options type `NumerableFormatNumberOptions` used by the `format`
22
- * function, thereby providing type safety and IntelliSense support in TypeScript environments.
23
- *
24
- * The approach used here is based on a solution for handling function overloads in TypeScript,
25
- * as discussed in a StackOverflow answer: https://stackoverflow.com/a/59538756/10049787.
26
- */
27
-
28
- import { format } from 'numerable';
29
-
30
- /**
31
- * Type helper to capture the overload signatures of a function.
32
- * This utility type takes a function with multiple overloads and maps them to a tuple of
33
- * functions, each representing one of the overloads.
34
- */
35
- type NumerableFormatOverloads<T> = T extends {
36
- (...args: infer A1): infer R1;
37
- (...args: infer A2): infer R2;
38
- (...args: infer A3): infer R3;
39
- }
40
- ? [(...args: A1) => R1, (...args: A2) => R2, (...args: A3) => R3]
41
- : T extends {
42
- (...args: infer A1): infer R1;
43
- (...args: infer A2): infer R2;
44
- }
45
- ? [(...args: A1) => R1, (...args: A2) => R2]
46
- : T extends {
47
- (...args: infer A1): infer R1;
48
- }
49
- ? [(...args: A1) => R1]
50
- : any; // eslint-disable-line @typescript-eslint/no-explicit-any
51
-
52
- /**
53
- * Extracts parameters from a tuple of function types.
54
- * This utility type maps over a tuple of functions (representing overloads) to produce a tuple
55
- * of their respective parameter types.
56
- */
57
- type OverloadedParameters<T> = NumerableFormatOverloads<T> extends infer O
58
- ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- { [K in keyof O]: Parameters<Extract<O[K], (...args: any) => any>> }
60
- : never;
61
-
62
- /**
63
- * Type representing the parameters of the `numerable.format` function, taking into account its
64
- * overloaded signatures.
65
- */
66
- type NumerableFormatParams = OverloadedParameters<typeof format>;
67
-
68
-
69
- /**
70
- * Type specifically for the options parameter of the `numerable.format` function.
71
- * This extracts the type of the third parameter (options) from the first overload of `format`,
72
- * as this is where the formatting options are specified.
73
- */
74
- type NumerableFormatNumberOptions = NumerableFormatParams[0][2];
75
-
76
- /**
77
- * Exported type for external use, providing a non-nullable version of the formatting options.
78
- * This type is intended for use wherever `numerable.format` options are needed, enhancing
79
- * code readability and type safety.
80
- */
1
+ /*
2
+ * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
+ * Created Date: 2024-01-16 14:19:17
4
+ * -----
5
+ * Last Modified: 2024-03-08 07:55:25
6
+ * Modified By: ADC
7
+ * -----
8
+ *
9
+ */
10
+
11
+ /**
12
+ * @fileoverview
13
+ *
14
+ * These types enhance TypeScript support for the `numerable` library, which does not directly
15
+ * export the `NumerableFormatNumberOptions` type. By extracting and refining the type definitions
16
+ * for the `format` function's parameters, including handling its overloaded signatures, this file
17
+ * makes it easier to use `numerable` in TypeScript and React projects.
18
+ *
19
+ * The process involves creating a type that captures the overloads of the `format` function and
20
+ * then mapping over these overloads to extract their parameters. This technique enables the
21
+ * extraction of the specific options type `NumerableFormatNumberOptions` used by the `format`
22
+ * function, thereby providing type safety and IntelliSense support in TypeScript environments.
23
+ *
24
+ * The approach used here is based on a solution for handling function overloads in TypeScript,
25
+ * as discussed in a StackOverflow answer: https://stackoverflow.com/a/59538756/10049787.
26
+ */
27
+
28
+ import { format } from 'numerable';
29
+
30
+ /**
31
+ * Type helper to capture the overload signatures of a function.
32
+ * This utility type takes a function with multiple overloads and maps them to a tuple of
33
+ * functions, each representing one of the overloads.
34
+ */
35
+ type NumerableFormatOverloads<T> = T extends {
36
+ (...args: infer A1): infer R1;
37
+ (...args: infer A2): infer R2;
38
+ (...args: infer A3): infer R3;
39
+ }
40
+ ? [(...args: A1) => R1, (...args: A2) => R2, (...args: A3) => R3]
41
+ : T extends {
42
+ (...args: infer A1): infer R1;
43
+ (...args: infer A2): infer R2;
44
+ }
45
+ ? [(...args: A1) => R1, (...args: A2) => R2]
46
+ : T extends {
47
+ (...args: infer A1): infer R1;
48
+ }
49
+ ? [(...args: A1) => R1]
50
+ : any; // eslint-disable-line @typescript-eslint/no-explicit-any
51
+
52
+ /**
53
+ * Extracts parameters from a tuple of function types.
54
+ * This utility type maps over a tuple of functions (representing overloads) to produce a tuple
55
+ * of their respective parameter types.
56
+ */
57
+ type OverloadedParameters<T> = NumerableFormatOverloads<T> extends infer O
58
+ ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ { [K in keyof O]: Parameters<Extract<O[K], (...args: any) => any>> }
60
+ : never;
61
+
62
+ /**
63
+ * Type representing the parameters of the `numerable.format` function, taking into account its
64
+ * overloaded signatures.
65
+ */
66
+ type NumerableFormatParams = OverloadedParameters<typeof format>;
67
+
68
+
69
+ /**
70
+ * Type specifically for the options parameter of the `numerable.format` function.
71
+ * This extracts the type of the third parameter (options) from the first overload of `format`,
72
+ * as this is where the formatting options are specified.
73
+ */
74
+ type NumerableFormatNumberOptions = NumerableFormatParams[0][2];
75
+
76
+ /**
77
+ * Exported type for external use, providing a non-nullable version of the formatting options.
78
+ * This type is intended for use wherever `numerable.format` options are needed, enhancing
79
+ * code readability and type safety.
80
+ */
81
81
  export type NumerableFormatOptions = NonNullable<NumerableFormatNumberOptions>;
@@ -1,60 +1,60 @@
1
- /*
2
- * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
- * Created Date: 2024-01-16 14:19:52
4
- * -----
5
- * Last Modified: 2024-03-08 07:48:18
6
- * Modified By: ADC
7
- * -----
8
- *
9
- */
10
-
11
-
12
-
13
- import { createContext } from 'react';
14
-
15
-
16
- /**
17
- * Interface representing the position and scale context of a component within its parent container.
18
- *
19
- * This context is designed to provide components with necessary scaling and positioning
20
- * information, such as for rendering elements correctly in absolute positioning or for
21
- * adjusting layout based on dynamic offsets.
22
- */
23
- export interface IPositionContext {
24
-
25
- /**
26
- * Represents the scale factor applied to the dimensions of elements.
27
- * A scale of 1 indicates no scaling, while values greater or less than 1
28
- * indicate zoomed-in or zoomed-out states respectively.
29
- */
30
- scale: number;
31
- /**
32
- * Represents the horizontal offset that should be applied to the position
33
- * of elements. This can be used to adjust element positioning in response to
34
- * dynamic layout changes or to align elements within a scaled environment.
35
- */
36
- xOffset: number;
37
- /**
38
- * Represents the vertical offset that should be applied to the position
39
- * of elements. Similar to `xOffset`, this is used for vertical alignment and
40
- * positioning adjustments in a dynamic or scaled layout.
41
- */
42
- yOffset: number;
43
- }
44
-
45
-
46
- /**
47
- * Creates a React context for position and scaling information of a component using absolute positioning.
48
- * This context provides a standardized way to access and react to changes in scale and positioning offsets,
49
- * enabling components to adjust their layout and rendering behavior dynamically.
50
- *
51
- * The default context values are set to assume no scaling (`scale: 1`) and no offsets (`xOffset: 0, yOffset: 0`),
52
- * which corresponds to the initial state in many applications before any dynamic adjustments are made.
53
- */
54
- export const DimensionsContext = createContext<IPositionContext>({
55
- scale: 1, /** Default scaling factor indicating no scaling. */
56
- xOffset: 0, /** Default horizontal offset indicating no shift. */
57
- yOffset: 0, /** Default vertical offset indicating no shift. */
58
- });
59
-
1
+ /*
2
+ * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
+ * Created Date: 2024-01-16 14:19:52
4
+ * -----
5
+ * Last Modified: 2024-03-08 07:48:18
6
+ * Modified By: ADC
7
+ * -----
8
+ *
9
+ */
10
+
11
+
12
+
13
+ import { createContext } from 'react';
14
+
15
+
16
+ /**
17
+ * Interface representing the position and scale context of a component within its parent container.
18
+ *
19
+ * This context is designed to provide components with necessary scaling and positioning
20
+ * information, such as for rendering elements correctly in absolute positioning or for
21
+ * adjusting layout based on dynamic offsets.
22
+ */
23
+ export interface IPositionContext {
24
+
25
+ /**
26
+ * Represents the scale factor applied to the dimensions of elements.
27
+ * A scale of 1 indicates no scaling, while values greater or less than 1
28
+ * indicate zoomed-in or zoomed-out states respectively.
29
+ */
30
+ scale: number;
31
+ /**
32
+ * Represents the horizontal offset that should be applied to the position
33
+ * of elements. This can be used to adjust element positioning in response to
34
+ * dynamic layout changes or to align elements within a scaled environment.
35
+ */
36
+ xOffset: number;
37
+ /**
38
+ * Represents the vertical offset that should be applied to the position
39
+ * of elements. Similar to `xOffset`, this is used for vertical alignment and
40
+ * positioning adjustments in a dynamic or scaled layout.
41
+ */
42
+ yOffset: number;
43
+ }
44
+
45
+
46
+ /**
47
+ * Creates a React context for position and scaling information of a component using absolute positioning.
48
+ * This context provides a standardized way to access and react to changes in scale and positioning offsets,
49
+ * enabling components to adjust their layout and rendering behavior dynamically.
50
+ *
51
+ * The default context values are set to assume no scaling (`scale: 1`) and no offsets (`xOffset: 0, yOffset: 0`),
52
+ * which corresponds to the initial state in many applications before any dynamic adjustments are made.
53
+ */
54
+ export const DimensionsContext = createContext<IPositionContext>({
55
+ scale: 1, /** Default scaling factor indicating no scaling. */
56
+ xOffset: 0, /** Default horizontal offset indicating no shift. */
57
+ yOffset: 0, /** Default vertical offset indicating no shift. */
58
+ });
59
+
60
60
  export default DimensionsContext;