@ringcentral/spring-ui 1.12.0 → 1.13.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 (213) hide show
  1. package/Accordion.js +90 -34
  2. package/AccordionHeader.js +71 -21
  3. package/Alert.js +120 -28
  4. package/Animation.js +2 -46
  5. package/Announcement.js +46 -35
  6. package/Autocomplete.js +1011 -583
  7. package/Avatar.js +134 -73
  8. package/AvatarGroup.js +50 -7
  9. package/Backdrop.js +45 -7
  10. package/Badge.js +77 -15
  11. package/Block.js +34 -12
  12. package/BlockHeader.js +57 -15
  13. package/BottomNavigation.js +181 -65
  14. package/BottomNavigationItem.js +93 -30
  15. package/Button.js +160 -24
  16. package/CallButton.js +53 -31
  17. package/Checkbox.js +88 -26
  18. package/Chip.js +126 -26
  19. package/CircularProgressIndicator.js +80 -8
  20. package/ClickAwayListener.js +4 -1
  21. package/ComponentsProps.js +1 -0
  22. package/DatePicker.js +611 -192
  23. package/DateUtilsContext.js +43 -25
  24. package/Dialer.js +564 -253
  25. package/Dialog.js +99 -45
  26. package/Divider.js +43 -7
  27. package/DragHandle.js +32 -6
  28. package/Drawer.js +117 -19
  29. package/Dropdown.js +154 -77
  30. package/EmptyState.js +65 -15
  31. package/FabButton.js +51 -17
  32. package/FocusTrap.js +109 -12
  33. package/FormField.js +108 -12
  34. package/FormLabel.js +81 -7
  35. package/Icon.js +1 -8
  36. package/IconButton.js +142 -26
  37. package/IconButtonGroup.js +35 -12
  38. package/InlineEditable.js +98 -44
  39. package/LinearProgressIndicator.js +73 -24
  40. package/Link.js +40 -11
  41. package/List.js +54 -9
  42. package/ListItem.js +152 -23
  43. package/ListItemText.js +44 -17
  44. package/ListNavigation.js +272 -20
  45. package/Menu.js +139 -23
  46. package/MenuActions.js +37 -12
  47. package/MenuDivider.js +34 -8
  48. package/MenuFooter.js +36 -12
  49. package/MenuHeader.js +54 -16
  50. package/MenuItem.js +402 -35
  51. package/MenuItemText.js +51 -9
  52. package/MenuList.js +87 -36
  53. package/Modal.js +345 -16
  54. package/NestedMenuContext.js +183 -11
  55. package/Option.js +32 -36
  56. package/Overlap.js +54 -7
  57. package/PageHeader.js +62 -24
  58. package/PickerTextField.js +156 -35
  59. package/Popover.js +262 -21
  60. package/Popper.js +112 -62
  61. package/PopperPaper.js +54 -8
  62. package/Portal.js +6 -1
  63. package/Radio.js +65 -21
  64. package/RadioGroup.js +56 -17
  65. package/Rating.js +223 -87
  66. package/Select.js +387 -44
  67. package/SingleFilter.js +148 -79
  68. package/Skeleton.js +68 -17
  69. package/Slider.js +167 -69
  70. package/Snackbar.js +122 -59
  71. package/SortableList.js +32 -12
  72. package/SortableListDndContext.js +69 -22
  73. package/SortableListItem.js +92 -47
  74. package/SortableVirtualizedList.js +44 -20
  75. package/SplitButton.js +124 -89
  76. package/Squircle.js +4 -7
  77. package/StatusIndicator.js +51 -9
  78. package/Step.js +63 -38
  79. package/StepButton.js +51 -23
  80. package/StepConnector.js +48 -8
  81. package/StepContent.js +67 -24
  82. package/StepIcon.js +90 -9
  83. package/StepLabel.js +90 -14
  84. package/Stepper.js +65 -23
  85. package/SubMenu.js +203 -101
  86. package/SwipeableDrawer.js +439 -194
  87. package/Switch.js +70 -23
  88. package/Tab.js +120 -57
  89. package/TabContext.js +59 -15
  90. package/TabPanel.js +40 -13
  91. package/Table.js +60 -17
  92. package/TableBody.js +42 -12
  93. package/TableCell.js +84 -50
  94. package/TableContainer.js +32 -10
  95. package/TableFooter.js +38 -10
  96. package/TableHead.js +49 -15
  97. package/TablePagination.js +153 -79
  98. package/TableRow.js +60 -21
  99. package/Tabs.js +592 -271
  100. package/Tag.js +51 -16
  101. package/Text.js +68 -37
  102. package/TextField.js +209 -31
  103. package/Textarea.js +51 -42
  104. package/TimePicker.js +490 -232
  105. package/Tooltip.js +48 -23
  106. package/Tray.js +237 -13
  107. package/TrayMenu.js +62 -43
  108. package/VirtualizedList.js +205 -107
  109. package/VirtualizedMenu.js +359 -29
  110. package/VisuallyHidden.js +29 -6
  111. package/chunks/1250.js +98 -0
  112. package/chunks/1294.js +126 -0
  113. package/chunks/2956.js +18 -0
  114. package/chunks/4476.js +460 -0
  115. package/chunks/4491.js +10 -0
  116. package/chunks/4535.js +364 -0
  117. package/chunks/5047.js +3 -0
  118. package/chunks/6335.js +24 -0
  119. package/chunks/7279.js +10 -0
  120. package/chunks/8011.js +8 -0
  121. package/chunks/8307.js +56 -0
  122. package/chunks/8467.js +8 -0
  123. package/chunks/8809.js +8 -0
  124. package/chunks/{RadioGroup.context.js → 9551.js} +12 -6
  125. package/chunks/987.js +8 -0
  126. package/index.css +2436 -2261
  127. package/index.js +245 -195
  128. package/internal/utils/setRef.d.ts +2 -1
  129. package/package.json +4 -4
  130. package/src/Animation/hooks/useMotionSafeTransition/useMotionSafeTransition.d.ts +2 -0
  131. package/src/Autocomplete/SuggestionList/SuggestionList.d.ts +1 -1
  132. package/src/Button/Button.classes.d.ts +1 -1
  133. package/src/ComponentsProps.d.ts +111 -110
  134. package/src/DatePicker/DatePickerDataAttributes.d.ts +11 -0
  135. package/src/DatePicker/utils/DatePickerUtils.d.ts +1 -1
  136. package/src/MenuItem/MenuItem.type.d.ts +1 -0
  137. package/src/MenuList/MenuListContext.d.ts +2 -3
  138. package/src/Modal/Modal.type.d.ts +1 -0
  139. package/src/Popover/Popover.classes.d.ts +1 -1
  140. package/src/Popover/Popover.internal.d.ts +8 -0
  141. package/src/Popover/Popover.type.d.ts +1 -0
  142. package/src/Select/Select.type.d.ts +6 -4
  143. package/src/Table/Table.type.d.ts +3 -0
  144. package/src/Table/TableContext.d.ts +3 -0
  145. package/src/Table/TableRowContext.d.ts +7 -0
  146. package/src/Table/index.d.ts +1 -0
  147. package/src/TableCell/TableCell.classes.d.ts +1 -1
  148. package/src/TableFooter/TableFooter.classes.d.ts +1 -1
  149. package/src/TableFooter/TableFooter.type.d.ts +1 -0
  150. package/src/TableHead/TableHead.classes.d.ts +1 -1
  151. package/src/TableHead/TableHead.type.d.ts +1 -0
  152. package/src/TableRow/TableRow.type.d.ts +2 -0
  153. package/chunks/AccordionContext.js +0 -6
  154. package/chunks/Alert.js +0 -48
  155. package/chunks/AvatarGroup.js +0 -22
  156. package/chunks/Backdrop.js +0 -18
  157. package/chunks/Badge.js +0 -32
  158. package/chunks/BottomNavigationItem.js +0 -36
  159. package/chunks/Button.js +0 -88
  160. package/chunks/Chip.js +0 -73
  161. package/chunks/CircularProgressIndicator.js +0 -36
  162. package/chunks/Divider.js +0 -19
  163. package/chunks/DragHandle.js +0 -11
  164. package/chunks/Drawer.js +0 -33
  165. package/chunks/ExpandCollapseCaret.js +0 -24
  166. package/chunks/FormLabel.js +0 -27
  167. package/chunks/Icon.js +0 -25
  168. package/chunks/IconButtonLabel.js +0 -68
  169. package/chunks/List.js +0 -22
  170. package/chunks/ListItem.js +0 -83
  171. package/chunks/Menu.js +0 -61
  172. package/chunks/MenuDivider.js +0 -14
  173. package/chunks/MenuItemText.js +0 -18
  174. package/chunks/MenuList.js +0 -47
  175. package/chunks/Modal.js +0 -211
  176. package/chunks/Overlap.js +0 -25
  177. package/chunks/PickerTextField.js +0 -85
  178. package/chunks/Popover.js +0 -61
  179. package/chunks/PopperPaper.js +0 -15
  180. package/chunks/Select.js +0 -225
  181. package/chunks/ShowHideEye.js +0 -56
  182. package/chunks/SlideIn.js +0 -20
  183. package/chunks/SortableArrow.js +0 -73
  184. package/chunks/Squircle.js +0 -31
  185. package/chunks/StatusIndicator.js +0 -20
  186. package/chunks/StepConnector.js +0 -21
  187. package/chunks/StepIcon.js +0 -43
  188. package/chunks/StepLabel.js +0 -29
  189. package/chunks/StepperContext.js +0 -9
  190. package/chunks/TableContext.js +0 -6
  191. package/chunks/Tablelvl2Context.js +0 -6
  192. package/chunks/TabsContext.js +0 -6
  193. package/chunks/TextField.js +0 -110
  194. package/chunks/Tooltip.js +0 -217
  195. package/chunks/VirtualizedMenu.js +0 -162
  196. package/chunks/VisuallyHidden.js +0 -12
  197. package/chunks/composeEventHandlers.js +0 -10
  198. package/chunks/getFade.js +0 -27
  199. package/chunks/getGrow.js +0 -70
  200. package/chunks/getSlideIn.js +0 -30
  201. package/chunks/hasContent.js +0 -3
  202. package/chunks/useAnimationFrame.js +0 -15
  203. package/chunks/useFocusTrapStack.js +0 -38
  204. package/chunks/useHelperTextId.js +0 -24
  205. package/chunks/useListNavigation.js +0 -199
  206. package/chunks/useMenuItemSelect.js +0 -282
  207. package/chunks/useMotionSafeTransition.js +0 -9
  208. package/chunks/useNestedMenuItem.js +0 -27
  209. package/chunks/useNestedParentMenu.js +0 -113
  210. package/chunks/usePrefersReducedMotion.js +0 -36
  211. package/chunks/useTooltipForceHide.js +0 -27
  212. package/chunks/useTrayNavigate.js +0 -150
  213. package/chunks/withTooltip.js +0 -15
package/Dialer.js CHANGED
@@ -1,156 +1,287 @@
1
- import { createContext, useContext, cloneElement, useRef, useEffect, forwardRef, useCallback, useImperativeHandle, useLayoutEffect, useMemo } from 'react';
2
- import { useLongPress, useForkRef, useWindowContext, useId, useClasses, useEventCallback, useAudio, logInDev, useOnlyOneFocusable, useKeyboardMoveFocus, globalStateClasses, combineProps, getSelectionPosition, setSelectionPosition, useKeyDownOnce, useSleep } from '@ringcentral/spring-base';
3
- import { useThemeProps } from '@ringcentral/spring-theme';
4
- import { jsx, jsxs } from 'react/jsx-runtime';
5
- import { c as composeEventHandlers } from './chunks/composeEventHandlers.js';
6
- import '@mui/utils';
7
- import { V as VisuallyHidden } from './chunks/VisuallyHidden.js';
8
- import { I as IconButton } from './chunks/IconButtonLabel.js';
9
- import { DialButton1Lg, DialButton1Sm, DialButton2Lg, DialButton2Sm, DialButton3Lg, DialButton3Sm, DialButton4Lg, DialButton4Sm, DialButton5Lg, DialButton5Sm, DialButton6Lg, DialButton6Sm, DialButton7Lg, DialButton7Sm, DialButton8Lg, DialButton8Sm, DialButton9Lg, DialButton9Sm, AsteriskMd, DialButton0Lg, DialButton0Sm, HashMd } from '@ringcentral/spring-icon';
10
- import { T as TextField } from './chunks/TextField.js';
11
- import '@mui/base';
12
- import './chunks/Icon.js';
13
- import './chunks/Squircle.js';
14
- import './chunks/withTooltip.js';
15
- import './chunks/Tooltip.js';
16
- import 'framer-motion';
17
- import 'clsx';
18
- import './chunks/usePrefersReducedMotion.js';
19
- import './chunks/getFade.js';
20
- import './Popper.js';
21
- import '@floating-ui/react-dom';
22
- import './chunks/Modal.js';
23
- import './chunks/useFocusTrapStack.js';
24
- import './chunks/Backdrop.js';
25
- import './chunks/PopperPaper.js';
26
- import './chunks/ShowHideEye.js';
27
- import './chunks/useMotionSafeTransition.js';
28
- import './chunks/useHelperTextId.js';
29
- import './chunks/hasContent.js';
1
+ import { cloneElement, createContext, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef } from "react";
2
+ import { combineProps, getSelectionPosition, globalStateClasses, logInDev, setSelectionPosition, useAudio, useClasses, useEventCallback, useForkRef, useId, useKeyDownOnce, useKeyboardMoveFocus, useLongPress, useOnlyOneFocusable, useSleep, useWindowContext } from "@ringcentral/spring-base";
3
+ import { useThemeProps } from "@ringcentral/spring-theme";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { AsteriskMd, DialButton0Lg, DialButton0Sm, DialButton1Lg, DialButton1Sm, DialButton2Lg, DialButton2Sm, DialButton3Lg, DialButton3Sm, DialButton4Lg, DialButton4Sm, DialButton5Lg, DialButton5Sm, DialButton6Lg, DialButton6Sm, DialButton7Lg, DialButton7Sm, DialButton8Lg, DialButton8Sm, DialButton9Lg, DialButton9Sm, HashMd } from "@ringcentral/spring-icon";
6
+ import { IconButton as IconButton_IconButton } from "./IconButton.js";
7
+ import { VisuallyHidden as VisuallyHidden_VisuallyHidden } from "./VisuallyHidden.js";
8
+ import { composeEventHandlers } from "./chunks/4491.js";
9
+ import { TextField as TextField_TextField } from "./TextField.js";
10
+
11
+
12
+
13
+
14
+
30
15
 
31
16
  const DialerContext = createContext({});
32
- const useDialerContext = () => useContext(DialerContext);
17
+ const useDialerContext = ()=>useContext(DialerContext);
18
+
19
+
20
+
21
+
22
+
23
+
24
+
33
25
 
34
26
  const holdTime = 1000;
35
- const DialDelete = (inProps) => {
36
- const props = useThemeProps({ props: inProps, name: 'DialDelete' });
27
+ const DialDelete = (inProps)=>{
28
+ const props = useThemeProps({
29
+ props: inProps,
30
+ name: 'DialDelete'
31
+ });
37
32
  const { onDelete, onClear, children } = props;
38
33
  const { onClearRef, onDeleteRef } = useDialerContext();
39
- const handleClear = (e, reason) => {
34
+ const handleClear = (e, reason)=>{
40
35
  onClear?.(e, reason);
41
36
  onClearRef?.current?.(e, reason);
42
37
  };
43
- const handleDelete = (e, reason) => {
38
+ const handleDelete = (e, reason)=>{
44
39
  onDelete?.(e, reason);
45
40
  onDeleteRef?.current?.(e, reason);
46
41
  };
47
- const { ref, ...events } = useLongPress({ onTap: handleDelete, onPress: handleClear }, children.props, { delay: holdTime, externalWindow: props.externalWindow });
42
+ const { ref, ...events } = useLongPress({
43
+ onTap: handleDelete,
44
+ onPress: handleClear
45
+ }, children.props, {
46
+ delay: holdTime,
47
+ externalWindow: props.externalWindow
48
+ });
49
+ // React 17/18: JSX `ref` lives on the element (`children.ref`), not `children.props.ref`.
50
+ // React 19+: `element.ref` is deprecated — switch to `children.props.ref` (or
51
+ // `@mui/utils` `getReactElementRef`, which picks the right source by React.version).
48
52
  const forkEleRef = useForkRef(children.ref, ref);
49
- return cloneElement(children, {
53
+ return /*#__PURE__*/ cloneElement(children, {
50
54
  ref: forkEleRef,
51
- ...events,
55
+ ...events
52
56
  });
53
57
  };
54
58
  DialDelete.displayName = 'SuiDialDelete';
55
59
 
56
- var DialPadButton$1 = {"sui-dial-pad-button-root":"sui-dial-pad-button-root","sui-icon":"sui-icon","sui-dial-pad-button-medium":"sui-dial-pad-button-medium","sui-dial-pad-button-large":"sui-dial-pad-button-large","sui-dial-pad-button-label-container":"sui-dial-pad-button-label-container"};
57
60
 
58
- const emptyFunction = () => {
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ // extracted by css-extract-rspack-plugin
70
+ /* export default */ var DialPadButton = ({"sui-dial-pad-button-root":"sui-dial-pad-button-root","sui-icon":"sui-icon","sui-dial-pad-button-medium":"sui-dial-pad-button-medium","sui-dial-pad-button-large":"sui-dial-pad-button-large","sui-dial-pad-button-label-container":"sui-dial-pad-button-label-container"});
71
+
72
+
73
+
74
+
75
+ const emptyFunction = ()=>{
76
+ //
59
77
  };
60
- const DialPadButton = (props) => {
78
+ const DialPadButton_DialPadButton = (props)=>{
61
79
  const { value, classes, longPressValue, longPressDelay = 1000, onKeyEffect = emptyFunction, className, iconSize = 'medium', size = 'xxlarge', label, ...rest } = props;
62
80
  const { externalWindow } = useWindowContext();
63
81
  const labelId = useId();
64
82
  const isPressEvent = typeof longPressDelay === 'number' && typeof longPressValue === 'string';
65
83
  const { ref, ...events } = useLongPress({
66
- onTap: (e, reason) => {
84
+ onTap: (e, reason)=>{
67
85
  onKeyEffect(value, reason);
68
86
  },
69
- onPress: isPressEvent
70
- ? (e, reason) => {
71
- onKeyEffect(longPressValue, reason);
72
- }
73
- : undefined,
74
- }, rest, { delay: longPressDelay, externalWindow });
87
+ onPress: isPressEvent ? (e, reason)=>{
88
+ onKeyEffect(longPressValue, reason);
89
+ } : undefined
90
+ }, rest, {
91
+ delay: longPressDelay,
92
+ externalWindow
93
+ });
75
94
  const cls = useClasses('dial-pad-button', classes, className);
76
- const button = (jsx(IconButton, { ref: ref, color: "secondary", variant: "outlined", "aria-labelledby": label ? labelId : undefined, className: cls('root', iconSize), ...rest, ...events, size: size }));
77
- return label ? (jsxs("div", { id: labelId, className: cls('label-container'), children: [button, jsx("span", { children: label })] })) : (button);
95
+ const button = /*#__PURE__*/ jsx(IconButton_IconButton, {
96
+ ref: ref,
97
+ color: "secondary",
98
+ variant: "outlined",
99
+ "aria-labelledby": label ? labelId : undefined,
100
+ className: cls('root', iconSize),
101
+ ...rest,
102
+ ...events,
103
+ size: size
104
+ });
105
+ return label ? /*#__PURE__*/ jsxs("div", {
106
+ id: labelId,
107
+ className: cls('label-container'),
108
+ children: [
109
+ button,
110
+ /*#__PURE__*/ jsx("span", {
111
+ children: label
112
+ })
113
+ ]
114
+ }) : button;
78
115
  };
79
- DialPadButton.displayName = 'SuiDialPadButton';
116
+ DialPadButton_DialPadButton.displayName = 'SuiDialPadButton';
117
+
118
+
119
+
120
+
121
+
122
+ // extracted by css-extract-rspack-plugin
123
+ /* export default */ var DialPad = ({"sui-dial-pad-root":"sui-dial-pad-root","sui-dial-pad-auto-size":"sui-dial-pad-auto-size","sui-dial-pad-button":"sui-dial-pad-button"});
80
124
 
81
- var DialPad$1 = {"sui-dial-pad-root":"sui-dial-pad-root","sui-dial-pad-auto-size":"sui-dial-pad-auto-size","sui-dial-pad-button":"sui-dial-pad-button"};
82
125
 
83
126
  const DIALER_PAD_ICONS = [
84
- [DialButton1Lg, DialButton1Sm, '1'],
85
- [DialButton2Lg, DialButton2Sm, '2', 'A B C'],
86
- [DialButton3Lg, DialButton3Sm, '3', 'D E F'],
87
- [DialButton4Lg, DialButton4Sm, '4', 'G H I'],
88
- [DialButton5Lg, DialButton5Sm, '5', 'J K L'],
89
- [DialButton6Lg, DialButton6Sm, '6', 'M N O'],
90
- [DialButton7Lg, DialButton7Sm, '7', 'P Q R S'],
91
- [DialButton8Lg, DialButton8Sm, '8', 'T U V'],
92
- [DialButton9Lg, DialButton9Sm, '9', 'W X Y Z'],
93
- [AsteriskMd, AsteriskMd, '*'],
94
- [DialButton0Lg, DialButton0Sm, '0', '+'],
95
- [HashMd, HashMd, '#'],
127
+ [
128
+ DialButton1Lg,
129
+ DialButton1Sm,
130
+ '1'
131
+ ],
132
+ [
133
+ DialButton2Lg,
134
+ DialButton2Sm,
135
+ '2',
136
+ 'A B C'
137
+ ],
138
+ [
139
+ DialButton3Lg,
140
+ DialButton3Sm,
141
+ '3',
142
+ 'D E F'
143
+ ],
144
+ [
145
+ DialButton4Lg,
146
+ DialButton4Sm,
147
+ '4',
148
+ 'G H I'
149
+ ],
150
+ [
151
+ DialButton5Lg,
152
+ DialButton5Sm,
153
+ '5',
154
+ 'J K L'
155
+ ],
156
+ [
157
+ DialButton6Lg,
158
+ DialButton6Sm,
159
+ '6',
160
+ 'M N O'
161
+ ],
162
+ [
163
+ DialButton7Lg,
164
+ DialButton7Sm,
165
+ '7',
166
+ 'P Q R S'
167
+ ],
168
+ [
169
+ DialButton8Lg,
170
+ DialButton8Sm,
171
+ '8',
172
+ 'T U V'
173
+ ],
174
+ [
175
+ DialButton9Lg,
176
+ DialButton9Sm,
177
+ '9',
178
+ 'W X Y Z'
179
+ ],
180
+ [
181
+ AsteriskMd,
182
+ AsteriskMd,
183
+ '*'
184
+ ],
185
+ [
186
+ DialButton0Lg,
187
+ DialButton0Sm,
188
+ '0',
189
+ '+'
190
+ ],
191
+ [
192
+ HashMd,
193
+ HashMd,
194
+ '#'
195
+ ]
96
196
  ];
97
197
  const DIALER_PAD_PLUS = '+';
98
198
  const ACCEPTABLE_KEYS = [
99
- ...DIALER_PAD_ICONS.map(([, , value]) => value),
100
- DIALER_PAD_PLUS,
199
+ ...DIALER_PAD_ICONS.map(([, , value])=>value),
200
+ DIALER_PAD_PLUS
101
201
  ];
102
202
 
103
- const useDialKeyboard = ({ onKeyDown: onKeyDownArg, onKeyUp: onKeyUpArg, } = {}) => {
203
+
204
+
205
+
206
+
207
+
208
+ /**
209
+ * Provide you can get event apply on trigger events area
210
+ * @param options onKeyDown, onKeyUp that you also want apply on target
211
+ * @returns onKeyDown, onKeyUp, control
212
+ */ const useDialKeyboard = ({ onKeyDown: onKeyDownArg, onKeyUp: onKeyUpArg } = {})=>{
104
213
  const control = useRef(null);
214
+ // we need `onKeyup` & `onKeydown` to get called in same amount, but also make sure of the performance.
105
215
  const keyBufferRef = useRef([]);
106
- const onKeyDown = useEventCallback((e) => {
216
+ const onKeyDown = useEventCallback((e)=>{
107
217
  onKeyDownArg?.(e);
108
218
  const key = e.key;
109
- if (!ACCEPTABLE_KEYS.includes(key))
110
- return;
219
+ if (!ACCEPTABLE_KEYS.includes(key)) return;
111
220
  e.preventDefault();
112
221
  e.stopPropagation();
113
222
  const buffer = keyBufferRef.current;
114
223
  if (!buffer.includes(key)) {
115
- keyBufferRef.current = [...buffer, key];
224
+ keyBufferRef.current = [
225
+ ...buffer,
226
+ key
227
+ ];
116
228
  control.current?.handleKeyboardEffect(key, false);
117
229
  }
118
230
  });
119
- const onKeyUp = useEventCallback((e) => {
231
+ const onKeyUp = useEventCallback((e)=>{
120
232
  onKeyUpArg?.(e);
121
233
  const key = e.key;
122
- if (!ACCEPTABLE_KEYS.includes(key))
123
- return;
234
+ if (!ACCEPTABLE_KEYS.includes(key)) return;
124
235
  e.preventDefault();
125
236
  e.stopPropagation();
126
- keyBufferRef.current = keyBufferRef.current.filter((bufferedKey) => bufferedKey !== key);
237
+ keyBufferRef.current = keyBufferRef.current.filter((bufferedKey)=>bufferedKey !== key);
127
238
  control.current?.handleKeyboardEffect(key, true);
128
239
  });
129
- return { onKeyDown, onKeyUp, control };
240
+ return {
241
+ onKeyDown,
242
+ onKeyUp,
243
+ control
244
+ };
130
245
  };
131
246
 
132
- const useKeyAudio = ({ sounds, processor }) => {
247
+
248
+
249
+
250
+
251
+
252
+ /**
253
+ * Custom hook that handles playing audio for key presses in a dial pad.
254
+ *
255
+ * @param audioOption - The audio options for configuring the hook.
256
+ * @returns A function that plays the audio for a given key.
257
+ */ const useKeyAudio = ({ sounds, processor })=>{
133
258
  const audio = useAudio();
134
259
  const lastPlayRef = useRef();
135
- useEffect(() => {
260
+ useEffect(()=>{
136
261
  processor?.(audio);
137
- }, [audio, processor]);
138
- const play = async (src) => {
262
+ }, [
263
+ audio,
264
+ processor
265
+ ]);
266
+ const play = async (src)=>{
139
267
  const lastPlay = lastPlayRef.current;
140
- if (lastPlay)
141
- await lastPlay;
268
+ /* https://developers.google.com/web/updates/2017/06/play-request-was-interrupted
269
+ * prevent play request interrupted
270
+ */ if (lastPlay) await lastPlay;
142
271
  audio.currentTime = 0;
143
272
  audio.src = src;
144
- lastPlayRef.current = audio.play().catch((reason) => {
273
+ lastPlayRef.current = audio.play().catch((reason)=>{
145
274
  if (process.env.NODE_ENV !== 'production') {
146
- logInDev({ scope: 'DialerPad', message: reason });
275
+ logInDev({
276
+ scope: 'DialerPad',
277
+ message: reason
278
+ });
147
279
  }
148
280
  });
149
281
  };
150
- return (key) => {
151
- if (!sounds)
152
- return false;
153
- const playTarget = (key === DIALER_PAD_PLUS ? '0' : key);
282
+ return (key)=>{
283
+ if (!sounds) return false;
284
+ const playTarget = key === (/* inlined export .DIALER_PAD_PLUS */"+") ? '0' : key;
154
285
  const sound = sounds[playTarget];
155
286
  if (sound) {
156
287
  return play(sound);
@@ -159,10 +290,75 @@ const useKeyAudio = ({ sounds, processor }) => {
159
290
  };
160
291
  };
161
292
 
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
162
308
  const MOVE_FOCUSED_ATTR_KEY = 'data-move-focused';
163
309
  const DIAL_BUTTON_ATTR_KEY = 'data-dial-button';
164
- const DialPad = forwardRef((inProps, ref) => {
165
- const props = useThemeProps({ props: inProps, name: 'DialPad' });
310
+ /**
311
+ * DialPad component for entering phone numbers with keypad buttons.
312
+ *
313
+ * **Usage**: DialPad is typically used within a Dialer component along with DialTextField for a complete dialing experience.
314
+ *
315
+ * @example
316
+ * ```tsx
317
+ * import { Dialer, DialPad, DialTextField, DialDelete, IconButton, DialerPadSoundsMPEG } from '@ringcentral/spring-ui';
318
+ * import { BackspaceMd } from '@ringcentral/spring-icon';
319
+ *
320
+ * function MyDialer() {
321
+ * const [value, setValue] = useState('');
322
+ *
323
+ * return (
324
+ * <Dialer>
325
+ * <div className="inline-flex flex-col w-[240px]">
326
+ * <div className="pl-4 pr-2 pt-2">
327
+ * <DialTextField
328
+ * value={value}
329
+ * fullWidth
330
+ * onChange={setValue}
331
+ * placeholder="Enter a number"
332
+ * endAdornment={
333
+ * value.length > 0 && (
334
+ * <DialDelete>
335
+ * <IconButton
336
+ * symbol={BackspaceMd}
337
+ * title="delete"
338
+ * size="large"
339
+ * color="secondary"
340
+ * />
341
+ * </DialDelete>
342
+ * )
343
+ * }
344
+ * />
345
+ * </div>
346
+ * <div className="flex items-center justify-center p-2">
347
+ * <DialPad
348
+ * sounds={DialerPadSoundsMPEG}
349
+ * size="large"
350
+ * />
351
+ * </div>
352
+ * </div>
353
+ * </Dialer>
354
+ * );
355
+ * }
356
+ * ```
357
+ */ const DialPad_DialPad = /*#__PURE__*/ forwardRef((inProps, ref)=>{
358
+ const props = useThemeProps({
359
+ props: inProps,
360
+ name: 'DialPad'
361
+ });
166
362
  const { size = 'large', sounds, autoSize, classes, onChange: onChangeProp, action, control, getDialPadButtonProps, sinkId, persistBgTime = 200, volume = 1, muted = false, longPressDelay = 1000, className, ...divProps } = props;
167
363
  const { externalWindow, globalThis: contextGlobal } = useWindowContext();
168
364
  const contextWindow = externalWindow ?? contextGlobal;
@@ -175,103 +371,138 @@ const DialPad = forwardRef((inProps, ref) => {
175
371
  const focusedIndexRef = useRef(0);
176
372
  const { focusIndex, getItemProps, moveFocusedId } = useOnlyOneFocusable({
177
373
  focusedIndexRef,
178
- containerRef,
374
+ containerRef
179
375
  });
180
376
  const { onKeyFocusedIndexHandle } = useKeyboardMoveFocus({
181
377
  options: DIALER_PAD_ICONS,
182
378
  focusedIndexRef,
183
379
  infinite: true,
184
380
  columns: 3,
185
- onFocusedIndexChange: (event, toIndex) => {
381
+ onFocusedIndexChange: (event, toIndex)=>{
186
382
  focusedIndexRef.current = toIndex;
187
383
  focusIndex(toIndex);
188
384
  event.preventDefault();
189
- },
385
+ }
190
386
  });
191
- const audioProcessor = useCallback((audio) => {
387
+ const audioProcessor = useCallback((audio)=>{
192
388
  const audioWithSinkId = audio;
193
- if (typeof volume !== 'undefined')
194
- audio.volume = volume;
195
- if (typeof muted !== 'undefined')
196
- audio.muted = muted;
197
- if (typeof audioWithSinkId.setSinkId === 'function')
198
- void audioWithSinkId.setSinkId(sinkId || '');
199
- }, [muted, sinkId, volume]);
389
+ if (typeof volume !== 'undefined') audio.volume = volume;
390
+ if (typeof muted !== 'undefined') audio.muted = muted;
391
+ if (typeof audioWithSinkId.setSinkId === 'function') void audioWithSinkId.setSinkId(// when pass undefined, use '' to remove sinkId to default
392
+ sinkId || '');
393
+ }, [
394
+ muted,
395
+ sinkId,
396
+ volume
397
+ ]);
200
398
  const play = useKeyAudio({
201
399
  sounds,
202
- processor: audioProcessor,
400
+ processor: audioProcessor
203
401
  });
204
- const playAudio = useEventCallback((value) => {
205
- const key = value === DIALER_PAD_PLUS ? '0' : value;
402
+ const playAudio = useEventCallback((value)=>{
403
+ const key = value === (/* inlined export .DIALER_PAD_PLUS */"+") ? '0' : value;
206
404
  const keyButtonElm = containerRef.current?.querySelector(`[${MOVE_FOCUSED_ATTR_KEY}="${moveFocusedId}"][${DIAL_BUTTON_ATTR_KEY}="${key}"]`);
207
405
  if (keyButtonElm) {
406
+ // * to keep color when quick trigger insert key or click very quick
208
407
  const oldTimer = keyTimerMapRef.current[key];
209
- if (oldTimer)
210
- contextWindow.clearTimeout(oldTimer);
408
+ if (oldTimer) contextWindow.clearTimeout(oldTimer);
211
409
  keyButtonElm.classList.add(globalStateClasses.active);
212
- keyTimerMapRef.current[key] = contextWindow.setTimeout(() => {
410
+ keyTimerMapRef.current[key] = contextWindow.setTimeout(()=>{
213
411
  keyButtonElm.classList.remove(globalStateClasses.active);
214
412
  delete keyTimerMapRef.current[key];
215
413
  }, persistBgTime);
216
414
  }
217
415
  return play(value);
218
416
  });
219
- const handleChange = (value, reason) => {
417
+ const handleChange = (value, reason)=>{
220
418
  playAudio(value);
221
419
  onInsertRef?.current?.(value, reason);
222
420
  onChangeProp?.(value, reason);
223
421
  };
224
- const handleKeyboardEffect = useEventCallback((value, isKeyup) => {
422
+ const handleKeyboardEffect = useEventCallback((value, isKeyup)=>{
225
423
  if (isKeyup) {
226
424
  handleChange(value, 'customKeyboard');
227
- const toIndex = ACCEPTABLE_KEYS.findIndex((x) => x === value);
425
+ const toIndex = ACCEPTABLE_KEYS.findIndex((x)=>x === value);
228
426
  focusedIndexRef.current = toIndex;
427
+ // * mean that current focus on that dialPad, move focus to dialPad container
229
428
  const activeElement = externalWindow?.document.activeElement;
230
- if (activeElement?.getAttribute(MOVE_FOCUSED_ATTR_KEY) ===
231
- moveFocusedId &&
232
- activeElement.getAttribute(DIAL_BUTTON_ATTR_KEY) !== null) {
429
+ if (activeElement?.getAttribute(MOVE_FOCUSED_ATTR_KEY) === moveFocusedId && activeElement.getAttribute(DIAL_BUTTON_ATTR_KEY) !== null) {
233
430
  hiddenRef.current?.focus();
234
431
  }
235
432
  }
236
433
  });
237
- const handleKeyEffect = useEventCallback((value, reason) => {
434
+ const handleKeyEffect = useEventCallback((value, reason)=>{
238
435
  handleChange(value, reason);
239
436
  });
240
437
  const forkActionRef = useForkRef(dialPadActionRef, action);
241
- useImperativeHandle(forkActionRef, () => ({ playAudio }), [playAudio]);
242
- useImperativeHandle(control, () => ({ handleKeyboardEffect }), [
243
- handleKeyboardEffect,
438
+ useImperativeHandle(forkActionRef, ()=>({
439
+ playAudio
440
+ }), [
441
+ playAudio
244
442
  ]);
245
- useEffect(() => () => {
246
- for (const timer of Object.values(keyTimerMapRef.current)) {
247
- contextWindow.clearTimeout(timer);
248
- }
249
- }, [contextWindow]);
250
- return (jsxs("div", { ref: forkRef, className: cls('root', { 'auto-size': autoSize }), ...divProps, children: [jsx(VisuallyHidden, { ref: hiddenRef, tabIndex: -1 }), DIALER_PAD_ICONS.map(([lgIcon, smIcon, key, additionLabel], index) => {
251
- const ariaLabelArr = additionLabel
252
- ? [key, additionLabel]
253
- : [key];
254
- const iconSize = isNaN(parseInt(key))
255
- ? 'medium'
256
- : 'large';
443
+ useImperativeHandle(control, ()=>({
444
+ handleKeyboardEffect
445
+ }), [
446
+ handleKeyboardEffect
447
+ ]);
448
+ // * clean when unmount
449
+ useEffect(()=>()=>{
450
+ for (const timer of Object.values(keyTimerMapRef.current)){
451
+ contextWindow.clearTimeout(timer);
452
+ }
453
+ }, [
454
+ contextWindow
455
+ ]);
456
+ return /*#__PURE__*/ jsxs("div", {
457
+ ref: forkRef,
458
+ className: cls('root', {
459
+ 'auto-size': autoSize
460
+ }),
461
+ ...divProps,
462
+ children: [
463
+ /*#__PURE__*/ jsx(VisuallyHidden_VisuallyHidden, {
464
+ ref: hiddenRef,
465
+ tabIndex: -1
466
+ }),
467
+ DIALER_PAD_ICONS.map(([lgIcon, smIcon, key, additionLabel], index)=>{
468
+ const ariaLabelArr = additionLabel ? [
469
+ key,
470
+ additionLabel
471
+ ] : [
472
+ key
473
+ ];
474
+ const iconSize = isNaN(parseInt(key)) ? 'medium' : 'large';
257
475
  const icon = size === 'large' ? lgIcon : smIcon;
258
476
  const itemProps = getItemProps(index);
259
477
  const { onKeyDown: customOnKeyDown, ...customButtonProps } = getDialPadButtonProps?.(key) ?? {};
260
- return (jsx(DialPadButton, { classes: classes, symbol: icon, value: key, onKeyEffect: handleKeyEffect, ...combineProps(itemProps, {
478
+ return /*#__PURE__*/ jsx(DialPadButton_DialPadButton, {
479
+ classes: classes,
480
+ symbol: icon,
481
+ value: key,
482
+ onKeyEffect: handleKeyEffect,
483
+ ...combineProps(itemProps, {
261
484
  'aria-label': ariaLabelArr.join(', '),
262
485
  ...customButtonProps,
263
- ...(key === '0'
264
- ? {
265
- longPressValue: DIALER_PAD_PLUS,
266
- longPressDelay,
267
- }
268
- : {}),
269
- }), [DIAL_BUTTON_ATTR_KEY]: key, onKeyDown: composeEventHandlers(customOnKeyDown, onKeyFocusedIndexHandle), tabIndex: itemProps.tabIndex, size: size === 'large' ? 'xxxlarge' : 'xxlarge', iconSize: iconSize }, key));
270
- })] }));
486
+ ...key === '0' ? {
487
+ longPressValue: (/* inlined export .DIALER_PAD_PLUS */"+"),
488
+ longPressDelay
489
+ } : {}
490
+ }),
491
+ [DIAL_BUTTON_ATTR_KEY]: key,
492
+ onKeyDown: composeEventHandlers(customOnKeyDown, onKeyFocusedIndexHandle),
493
+ // Roving tabindex must win over getDialPadButtonProps.
494
+ tabIndex: itemProps.tabIndex,
495
+ size: size === 'large' ? 'xxxlarge' : 'xxlarge',
496
+ iconSize: iconSize
497
+ }, key);
498
+ })
499
+ ]
500
+ });
271
501
  });
272
- DialPad.displayName = 'SuiDialPad';
502
+ DialPad_DialPad.displayName = 'SuiDialPad';
273
503
 
274
- var DialerPadSoundsOGG = {
504
+
505
+ /* export default */ var DialerPadSoundsOGG = ({
275
506
  '0': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40ZCUAkBYAABjDmGOOQSehlJRaa5iCUELopKTSSmyxNUpBCCGEUlJKrbXWMuiolJJKSq3FFmOMmYNSUiolpdRijLHWDkJKLbUWW4ux5lprB6GklFqLLcZaa669g5BKa63lGGOwOefaQSgptdhijDXXWnsOqbQWY4y19lxrzTmIUlKKMdYac80199xLSq3FmmuuNQefcxCmpdhqjTXnnHsQOvjUWo255h500EHnHnRKrdZaa849ByF88Lm1WGvNNefegw86CN9qqzXnXGvvPfeeg24x1lxz0MEHIXzwQbgYa8859xyEDjr4HgwAyI1wAEBcMJKQOsuw0ogbT8AQgRQasgoAiAEAIIxBBiGElFJKKaWUYoopxhhjjDHGGGOMMcYYY4wxxgQAACY4AAAEWMGuzNKqjeKmTvKiDwKf0BGbkSGXUjGTE0GP1FCLlWCHVnCDF4CFhqwEAMgAABCIseZac44QlNZi7blUSjlqseeUIYKctJxLyQxBTlprLWTIKCcxthQyhBS02lrplFKMYquxdIwxSanFlkrnIAAAAIIAAAMRMhMIFECBgQwAOEBIkAIACgsMHcNFQEAuIaPAoHBMOCedNgAAQYjMEImIxSAxoRooKqYDgMUFhnwAyNDYSLu4gC4DXNDFXQdCCEIQglgcQAEJODjhhife8IQbnKBTVOogAAAAAAAQAOABACDZACKimZnj6PD4AAkRGSEpMTlBSVEJAAAAAAAgAPgAAEhWgIhoZuY4Ojw+QEJERkhKTE5QUlQCAAAAAAAAAACAgIAAAAAAAEAAAACAgE9nZ1MABNcZAAAAAAAAg8rAPgIAAAAxnIFhCT+MbWrc/6wBAWTZ+Evw/ho7cMnGPSs7KM691xaACcDCt6An5xY4vn60/ee7fBDIvv/9pZ8gk+id3DlOjvqoG+/D8DixatJ5EVoVJMsuEvC4WKpMFeTlGAbTZLjf/b/H/V84AAtAkn7IHXvGwhEAAAAAjGQUAKDdmUfKcebS+Cx8d/sjEx4ckz89PHzBcaaA/fezjK56847A1lpG4bYebN+NhOn8/BWzzf+66osgima3VfNafB2OEcC1Qcp41hgXIRjiZTh5f29T9932YITrxIrLEFABXiXkPg7fg/zSlkp9KN5gRk0SYHx8HAiAJNkOAAAAAAAIMJIBAAAAACBo8oWYvhsXG2CcmgP7r6PBSAAAAAAAABhIS0bC2tdV5IciAKrG3OaLfQ6MflwUo13ornCmM0//NGSB6JCYFwihFoABAF4l5D4OP9cPqavUxUtk1CQB9hFwACTJTgAAAAAAgDEGAAAAAACmcVrww9p29vcM+8dXAfavtWQrAQAAAAAAIObBmuBGzrth/h+4CgCqxr72edYiQBWucPNrjK1ljeSjV79qN+8GvcqCVQG+JSTM6QfcL11fpfLYtSM5OXw9RLM4PbPUwOBG1wAAIElTqkYBAgCAAmC8TTIAKEUS1+hmf+jDEfbfSGC/j1YMjvfU/9RKgffRWqP1cr8O2VSv6750EGOtNeHxfz2X/+b3DmrjN5k2ACU6cFC4/05eBx0Utk7UjumHWPcY/t/x2LANN5MZr+L++nDSsL759s5Ejf34338fGuv33PnRjwQ+fPzffx8f9c23P7pnxovH9w/NCdswM5kRtOLxfY/Qw2SiNbZ+pXP4QPnB1r+T10EZ//4b676MM8+0tiACPoTj+bsdpC/9b074kd0fR3Vl+vTs5OSk7IzFnT3hEuPpjSZNtU04/tCPWLws7VF9OKIZpmkhOI5XM8aV8/P7Q8355/v+UDPnL/b9Ifb5i33+Ifb5i8fnH+JyftUPY1zO54dKBiDMtvalbUaofdlUxPRYaIdIdMZAfxR/kVqI9CUqVk77G1bPsMZZ3uiv4fv1YHD5FFuc5vs/7fpXa7jxOM7uT4eHT9HkpzXc/Le4v0Wt/yDuPoSDy2dG7X90eLiG79eajeUzbHE67H+16/v1cOO36N6PDn/WxerweRX4jR+8d5oqh1949or9K+K33nnLLbeopqdPn36mDSXp6J57feR2//6hYNPp1LnJ3zlU0aMfv735vz3U4KMfP2v+78wZfIKmYn3+d+YsPrqp6MIhtYtPUG3657+jffvjn/qch8PhEMJNb+/O+tje7t+fL4x3f/zju36+nT7z9Aqd797yzlv2UsqnvvT/vnSmL3rr7/497ziOnD71hWc/s4JIdm+5ZYyCy6XTp5dqxG/v3p06bG/35w8FN502Vffzv6Nd9gQV+PrrcDw861sOAA4O',
276
507
  '1': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40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',
277
508
  '2': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40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',
@@ -283,10 +514,10 @@ var DialerPadSoundsOGG = {
283
514
  '8': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40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',
284
515
  '9': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40ZCUAkBYAABjDmGOOQSehlJRaa5iCUELopKTSSmyxNUpBCCGEUlJKrbXWMuiolJJKSq3FFmOMmYNSUiolpdRijLHWDkJKLbUWW4ux5lprB6GklFqLLcZaa669g5BKa63lGGOwOefaQSgptdhijDXXWnsOqbQWY4y19lxrzTmIUlKKMdYac80199xLSq3FmmuuNQefcxCmpdhqjTXnnHsQOvjUWo255h500EHnHnRKrdZaa849ByF88Lm1WGvNNefegw86CN9qqzXnXGvvPfeeg24x1lxz0MEHIXzwQbgYa8859xyEDjr4HgwAyI1wAEBcMJKQOsuw0ogbT8AQgRQasgoAiAEAIIxBBiGElFJKKaWUYoopxhhjjDHGGGOMMcYYY4wxxgQAACY4AAAEWMGuzNKqjeKmTvKiDwKf0BGbkSGXUjGTE0GP1FCLlWCHVnCDF4CFhqwEAMgAABCIseZac44QlNZi7blUSjlqseeUIYKctJxLyQxBTlprLWTIKCcxthQyhBS02lrplFKMYquxdIwxSanFlkrnIAAAAIIAAAMRMhMIFECBgQwAOEBIkAIACgsMHcNFQEAuIaPAoHBMOCedNgAAQYjMEImIxSAxoRooKqYDgMUFhnwAyNDYSLu4gC4DXNDFXQdCCEIQglgcQAEJODjhhife8IQbnKBTVOogAAAAAAAQAOABACDZACKimZnj6PD4AAkRGSEpMTlBSVEJAAAAAAAgAPgAAEhWgIhoZuY4Ojw+QEJERkhKTE5QUlQCAAAAAAAAAACAgIAAAAAAAEAAAACAgE9nZ1MABNcZAAAAAAAAcJ3CbgIAAADrgeKcCTufZmD+/7sBAYTZ5FMDo2u1B95y/fgwVv/5CXNzeAMg0VCv75qoz6ZpjN/fDKoZvX23O5SwO+9DenwHM//JqLfbbjIAOhUkxVUkALH8+qya4sNNsAzjeCMe/Ybf9Jv9pice3N/f3wcAWD4AAACAAGMMAMD3tPRosHgdzQ77x6DsNAxDTcc5MAH08PotnwDgce2y++qwPPlX54/XftYWybqYcrA83F//72n53CDHw2dZJYMKalJWVnVVF3kMRk/Fr3OnJvo6KTepV/zJ7ebx7Us9Ze7KtDu5v3lerLFhFWEJvEAF/iRU7nffA778tlSvddT1QUwBAJZHAQAAgABjFADA9f9OAHD2+yIAAAAAN7zs3//5F6/u+ziiZHmdGQcAAAAAReTXfD+vNiEAAAAAAIBhXqWv/N6tEHpx/knz++Vcenu7S6Qg6aEAPiXk7jc/HdP8tVTn26i3gpgCACyPBQAAAAKMpAAA9oUqAPDXvwMAAACAMNEKexRaLR1XczU0l+xQrEcFAAAAAJRUXqdU/1AAAAAAAIBUgR1ltksdxhyCgLYNSl+XhmEAnhVE+uIbuE9+f1XvzVeM6bM4Sfzz+Bln/Pj77wAA70AAAKMEGCErSTIA+I78Fd4qK5qpqKNl1cAd/cUiANTv8gCARDZYbBf/bJU3gyazou4hlW1dl3ly28yG9bd9Hc1u00VRd1X3EIIrgIh5yMx2+3ZkzRp+/0524CD33+hAxm8yABAY7AUms4L7r3VQG//+S9NZs7bH3U1sw8TzCPH4vjcMPZnMeDqPxw8nR9hw8+0dz+PjP/99fMRw882PfuRVtbx6ZcsvBjt23nksAbPl//47sk3m3LmZUIzHD0fxNQ85J53/Pi6uqXXWdrftNPugzPPff+PeQcGYbLUhDwDehEPKywWkmt9+07q3+FwAUT1xJA5vjlWm7p4VLRnu3PzAhyROJ3NlYLhrqd195uB5FYS2VduQnPWVxb4/xD5/zvfDD3Hl/MXvhx/iyvlV88MPrpxffT+MceX8fD+MaSUDMNOT544pmCBa11NJ9ZqqT2OEpWPl04pR/yIm/zHZi/ld/h//PImTn9bm4szi/+a19Ee8jyrN/ca+LQCkD+aDWGn+mfdbhGrfrn+JAbsvur95LX7Ynq0JrPFvqf2PxvsP+H6tGVw+o//NczX3fyl/f0x29517k7U+/8KzfQDJjVvGKBLmp1fMH8J+9+7du7O8Hd7u3w9tnN7enWXU4W0+JLjHX236t4eqXXZnebtwqKLyx1/B5G8PVfTox1/t94fD4UA2Tu/enXIe7t+/fyC7/eHH9055u/+//310QP09t+y1J+vmT33pS2c2+S7Rf/vf/XvecRx5/IXf/bufvQJd+9t/zw99x3Hu8e/+3V/27Lboxjt/8A9+x9ziqd/53V+2iujf9M533moMWe5/6swVNUqGu3vGKKa8f//+/RDj7d27sy63t/uHSh79+FnzfzvnOvzw7Levc2QBDg4=',
285
516
  '*': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40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',
286
- '#': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40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',
287
- };
517
+ '#': 'data:audio/ogg;base64,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ZCUAkAEAwBiDkEEGIWMQQgghhBBCCAkAABhwAAAIMKEMFBqyEgBIBQAADFKKMQelpBQpxZhzEEpJKVKKMecglJJSxZhzEEpJqbWKMecglJJSa51zEEpJqbUYO+cglJJSazGGEEpJqbUYYwwhlJJSazHWWkpJqbUYa8y1lJJSazHWWmtKrbUYa60155RaazHWWnPOBQAgNDgAgB3YsDrCSdFYYKEhKwGAPAAASCnGGGOMMaUUY4wxxphSijHGGGOMMcYYY4wxphhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeYYY4wxxhhjzDnGGGOMOeYcY4wxxpxzTgAAUIEDAECAjSKbE4wEFRqyEgAIBwAAjGHMOecglJBKo5RzEEIoJZVWGqWcgxJCKSm1ljknJaVSUmottsw5KSmVklJrLXYSUmotpdZirLGDkFJrqbUWY40dhFJaii3GGnPtIJSSWmsxxlprKKWl2GKssdaaQymptRZjrTXnXFJqLcZaa82155JSazHGWmutuafWYqyx1lxz7z21FmONteace84FAJg8OABAJdg4w0rSWeFocKEhKwGA3AAARinGnHMOQgghhBBCCJVSjDnnHIQQQgghhBAqpRhzzjkIIYQQQgghZIw55xx0EEIIIYQQQsgYc845CCGEEEIIIYTQOecchBBCCCGEUEIppXPOOQchhBBCCCGEUErnHIQQQgghhBJKKKWUzjkIIYQQQgilhFJKKSGEEEIIIYQSSimllFI6CCGEEEIIpZRSSimlhBBCCCGEEEoppZRSSgkhhBBCCCGUUkoppZQSQgghhBJKKaWUUkopJYQQQgihlFJKKaWUUkoIIYRSSimllFJKKaWUEEIoIZRSSimllFJKKSGEEkoopZRSSimllFJCCCWUUkoppZRSSimlhBBCKKWUUkoppZRSSgkhlFJKKaWUUkoppZRSAADQgQMAQIARlRZipxlXHoEjChkmoEJDVgIA4QAAACGUUkoppZRSaiSllFJKKaWUUiMlpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKpZRSSimllFJKKaWUUkoppZRSSimlAKjLDAfA6AkbZ1hJOiscDS40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'
518
+ });
288
519
 
289
- var DialerPadSoundsMPEG = {
520
+ /* export default */ var DialerPadSoundsMPEG = ({
290
521
  '0': 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU5LjI3LjEwMAAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAHAAAIPgBiYmJiYmJiYmJiYmJiYnt7e3t7e3t7e3t7e3t7kZGRkZGRkZGRkZGRkZG3t7e3t7e3t7e3t7e3t7fj4+Pj4+Pj4+Pj4+Pj4/Pz8/Pz8/Pz8/Pz8/Pz//////////////////8AAAAATGF2YzU5LjM3AAAAAAAAAAAAAAAAJAPpAAAAAAAACD55gMG+AAAAAAD/+7DEAAAIHDk0dPwAKbcMq3896IAF3fgC973v6N5KwkBYEmPWS98WxNBxmIQGApZOv+78vzzsAAAAAAeHv/AAAP/MPDw9J+AAAB4eH/gAAAAIf/+kEBGgCAAAAjOngYBAAAAAAAJ4GA0CQ7JACxWKgCxgfBCmRmuOqYwFA6fCgBJkFkoGPeeKYnQExg6CZDwHBKA0b1wsQkLyYDQKqgQ8BPPMJZ0voFAKw6uEmANv2U6pKzl+b2////4KWM40y7vwkHSq+SAgAAAuAAAAAcAaKsGF1n2VOJAE0pGoRgUYCgEYerkb+NiZPCKYSAeCRIMfxyOnYvNJkjTzwx0Ac5lL88yl1W9/2eTQgAAAArksyEQojgYSF7jJiAD5mrHjMYOAJZi+jrHpGUiY24Jxg9AImB2BUYIwf5vmR0Hs4JrQuCjJH1Yziw9Sx+N00Zh2K9ELVd9yQAAUkAAAl0hUKIlHvIuCshOIFKmNGOgwWEXMGWOHQhKgBIcyqGhoLKYTwOc4sWcWHrNqTXKXJ5AAAAAJ+AEqgscAFWWeCOUx7RBIIkQeaYPoEJjbDhH5AT+ZAAIBhHgcmCQB4YJYtZhy3sGtwRtw6YaAIDWDOLFp0iB1h2eN3lV25LOZU9yknbwAAAN6AAAA+TnDQSYiCKAmXlR0Zwa8hm0qBwt0YF4DWmEBk/xoOpuGYRyDaGBTASJgN4BOYGEFgGYFK1ZgFQRaLAzQKAfSIAuStVfDLXhcjgAV6CCTp+gu6SxFgGSJhypCWpZmz/////wQvX93////6fpqtAAAAF+qa20tIcQACiwhgHACoYFEB3GBtAZRgaQFIYICC//7UMTXAMh0QzH93YAhJghjuZ9tFTmEFhwJjSZQ2bQWfHGEgAxhgwQBiYPCHKmMikDZrx6tMab5BJhPkPGOIG4YRgPRgRAbmCGAiYCICqPStDcGSruijKTAWAIbuYFYBZgGgFhAAZgEgNmB+AMYJwChgHAEGAMAMAgCGOl1zAAAALiJgNcpWtrvcegZ277/v/D8/qkpI3L+yikllJzOkllJzedPnrPPPPv//9/9YYc/eGGH7zz/88862Q142FYt/d+n7//t1WqpxAAAAARkNlj/+0DE7YBHED0zzPcIoUUJ432fbRXaBAAAAAMCJAiTAdQHgAgEBgF4B00kAAFJWAjmAdF5Jgh4GIYSQRemAwAQZgUAKCY6YDwGDNIDJk7wjOYsoCTmCGAEhgvYREc6AuwCKgNUQ1cICrMEcOIwvwNDAhAIMB0A0wBQATAWBLHAIDAHAQMDYCZJ1asXMAcAMsmh1AIBCZbObKhs27MpEgCCYAhShnrDmOrFLgo9F3sqCp+4u3zX5P/7cMT5AE6AUxGt/wjjVBxh9r/gBLAj5MShmHcMZTjzuXPqbyzv57lNampscdf/9//vXtQTD4uEgaJfBB0HwIEQVER5Ql/lw+cw+EgarBUU/76k/+wqzQ7MgAa/fRgAY1MeLkYbGIi0wqRcQHjgJD8BIUrLUMIIMDFgQznUR+ulExSu1Ssl6gOTc24j1w+Zo7yG8Z3COqs3Vs7uE50mzNFznUTdqTmk4kaHek4KvkpWd3aAI32+YAA/eMpcmy4KtoEKYzFsgUJl6hoOq+JclkrMXck8SA8/0t2Ky9EDLxyJKq9VTkVskUAkmNBQElVkUZIo05Fwr4R22bRBhIsYlNVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+4DE5oAdPM0Zuf8AAWIR43+w8AVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7IMTxAskohRfsMNBoG4WglACZRlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+xDE1gPAAAGkAAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==',
291
522
  '1': 'data:audio/mpeg;base64,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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQxP0AxkA/G+BlI6hvheCQDASsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xDE1gPAAAH+AAAAIAAANIAAAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==',
292
523
  '2': 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU5LjI3LjEwMAAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAHAAAIWQBtbW1tbW1tbW1tbW1tbYaGhoaGhoaGhoaGhoaGmJiYmJiYmJiYmJiYmJi+vr6+vr6+vr6+vr6+vr7j4+Pj4+Pj4+Pj4+Pj4/Pz8/Pz8/Pz8/Pz8/Pz//////////////////8AAAAATGF2YzU5LjM3AAAAAAAAAAAAAAAAJAPpAAAAAAAACFkQEeB2AAAAAAD/+8DEAAAKrDkydYwAKj0P57895IEFS7cC3+33UzLhlm2LluDnM4pDBvEX8LSIAHNQTmhBmEhpIXbcuH7edIAAAAAB4eH/gAf/5h4f+vwAAAPDw8PwAAAAEB5/+GAAAACA8//1gAAAgPDx4DgAAAAACDBtm4aAAAAAABgQAPGAIDeW8MEUBZBgwJwSTLGSIN/UL8wYJVDabDyEQlwODeML8BsxWzMTBVB9M6aUYKADGAaLUbZAmQkKoYuxf5gjgsGHWAaNABCAAEiAGFQCgMAa3VvRIEmE8Z8qd2YdJABwSAAyNXO98+0yZqUmf2WsCYNKrf///Z1WGkhSwAADgAAABPZLtE0AAFhABBgPgXGCeE4YbIVBg1rgGzgSAYA4CoOAqMBoC8HAUGA+BkYOohhjIi6G8qzOcJ7xxFxGiRkVgcwACS9M6/zvUtL/Bs0qYAAgAMIw5jkQFDmKLGFImWVGLNm6oGJqcwdfQShhYAVmBeAcYCQBZgAgDAwAMGgMGA0Gybbz6B2NGaYMmEgCFLEndpp2Rydp1XMPD1r8hQWgSOAAABUJs4Y1nLgJCaJAEk3PDC5dOxA0aLinxYEFtwIGI+VQUZ7lIKJgQIl6v0wV3orafKSSmm46CAAQAEfgAvOaqGM5usYTnDRgOgYmCcFQYk8AJuiEXmAiCEYBwA4GAiBwDhgHgMgACowExMzDDpgO3kOoFEjSXLXn5kVlTlc7dorbzkzZDAeS0QAAAm9YAACmZhQYYSEmMDhh4mZMVGTmZq3UYEOkCmLhiTJgnIHoYDgA4mAYgHxgBABeDAEAwCECHMCQCejKnEwsRA6IkCtAYBtFgBYeAAWXPlfQCP04dWXoV22MtTw0oAJwFYAEAANAOgULKYag3G1//HYe///yPXAAAO/oCoAGYBCAVpfAgAiMBmAdDAHgDMwF0ElMLBECTDfUKk0jESBMPRB5TBHwOcwIUAYMCGAgDP/7UMTwgMpcPSFd7gApN4fj+a9s3QMgDUwO0JxMSvGMTSI0LgDdiXEDDOZwDLEKADC8FYDAwCkDBSAsDAOAUOKDjBTBOo7xzQTAEFoAAADh3EUFbiUwMAYEwyEBUBoGBMCYBIEx5UyYs8BcCoAwIxzyLm6S/qoJmYoMkP//////c/pNZN3/////6uloAAAABN2u7qMEAAAAAwCQCCMAuAjzAIwBIwOEFxHQCwMA2jAajJ8yrkDfMIqKiTF7xBQwSgIVMCQBUzBOwfEwOJANMBn/+zDE/YBHhD89zGeEIUaII72PaKWA5TFLgOEwTYArME/B1jnAFsJifTUkNxMHEBcwcQ9jDLA6BwRTQ3nBAQ5ghAoGAABQYCAEycrdi0hgMgAmAeAOvcEAKGBaBCYA4AqEalywJd1ACNAGNMi662wDQCCQoYAKyh3ASAQYDIChgFgJICSyMs3Vl9m29DX3fcdpjuM5lUajWPMO4fz/+3DE+gBPLIcTrf2n4rqbYmq/YATPtFT09+oGIKiIOkGGXtmwQGgqIgqJflwuCBd7usJHv/QYNmiwlOqeHQBQAaP/oAAIBUfWYo6rQpeYBHZUWNuCoF6QwqwpEWbTFWULMGizrZplsSS6qZKLRrCu30VndtF9umvLfeBI9n7yWjNWG1ywbVfw5vF2dRuHnbaAsj7JYAABdkMSl0BO1HDCRHsAkErL2jIWOlC3ZAFA7ZGbMuloZLEwAT3YdPAXLJrtt86QYVDgSYaV/YN64SKc1CphZgrkjNfVq2JEUxyvFkxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVV//twxPgAHmi1Gbn/AAFJkKM/sPAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7IMTnAMeEaROsMHBoU4WgoAM8RVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+xDE1gPAAAH+AAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==',
@@ -298,16 +529,39 @@ var DialerPadSoundsMPEG = {
298
529
  '8': 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU5LjI3LjEwMAAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAHAAAHogB3d3d3d3d3d3d3d3d3d4+Pj4+Pj4+Pj4+Pj4+Pp6enp6enp6enp6enp6fCwsLCwsLCwsLCwsLCwsLk5OTk5OTk5OTk5OTk5PLy8vLy8vLy8vLy8vLy//////////////////8AAAAATGF2YzU5LjM3AAAAAAAAAAAAAAAAJAPpAAAAAAAAB6KAn4BlAAAAAAD/+8DEAAAH2DsydPwAIr2XJf894AgBS7gDMN+/f2YFZNo/xbxc0uPgFIOgM80KNAkNJC7blw/bzpLAIAgCAJg/wQdwfP+CAIAMH+CH8uCAIAgcT7hQAAAAAAEgFZ95+PxKAAAFbwqBysYwHAPxwAURBYGDqCKYRQp5hbAHmIwfUOh/mviIEYvIHJgrhymE+DAYghYxouBxGMDUgZBAKA8CIYLwbpgBgGG4mIWYWIFytKz1Oi2pgAAFmAgAaUAa2HYawkWyuNoAW3gNwWb139wcSXyN3H4bA1pwrtN+X/8CRetSP/DcapYdhm1X////l8sztyyWWKW5TSrf1umD5qCp1YiPKrlQEAAAPgAAABOVUruAECMCLRLsL4tgVVMOJE9oTDCgVQNfQAiAyCNjwNDM/MNGWDBVHDMt5laxx/mdnmOQAAAAMYS4imQbCyCh4gYMGY/+yqMdIJh9EzHDkGGYVAAxMCsNAGgEAIwGAnzVAX+OHczMg0MFkwXeh2mpfm3aqP03GQ2IEAAAAG+AAAAb8ugYNAZiQLKDmBgMZBCxxkPmOAGIEiYWEChtwFhmDwEEYDYGJgDAQA0D0VEoNJmg06IwNZGAEQl0mWv1DtqBI5KZdjZARXsmDAA9AAGGAyoOeOIMOCOA8yGGTkYuMmDEygrTC9hSNeEtkwdwgDAiAjCAHjAGAiMBMS0wzaYDBhBmCAuQcBEjS06BZdehcTlV14Pgd2yGAAAAAH4AAAAMEg4wEHwaGDAgxGQADBeYzR5wlgGZjWbAY5hTI7wakiFBmDXgRhgQwCCYBiAdCEBvMBgCIDJOkLUwhkwVHh4gEQWW60KERd+qB4VKExENGrTBcwMAEi4AAAAngAMASAKjAHADJoBgAYAmYAmAVmAwgM5gPAFqYIAB4GCKAzxhLYO6YYiObmysiYhhQoRaYHOA3mBcgeZgkYWaYp6N2mpJphxoKjOmDuPEYzAWxv/7QMTrgMeERTn9zQAhFghkeZ9tFA2A1GAgBqYGoCZgCgHpXA4CQtYnSCQAWHBgBIQCew8wDwFTARARWJUBCSWIMAAAAADGTWYeBkAAAAAAcAKMAYL8aFBMq4M8wEAHQCB0YAQCRh2AhGKoVCa0cfBgQgdGCAD6YVIDpgJDSmimBiaJAkoMCuMU8bIw9gDCgBE0hi9SIJcwdQ3DCtAwMHsAgmAXUzMDoOMwNAWCQEAwCAOAYACB//tAxPsBSihBHe57aKE3B6O9nniMgBUeGl29hcBIWAfWO64EAJbm3WU///6PixG0U3ZfUprXLP///9ukpMLY7f37iAt39AAAlz/X5mKsJTpZ0r4EFB20FEASPySKANkKYZUCwq7du0qZXVcYrUxMzaoZIK5ULLBbU69cYTk3PnLbMzbki9LlqpsN7MA7SQAAAYSMNAh6HlUFLIl4gSKH1gmVrcjLJm9h6ykUKJkAngFhcl2JSBX/+1DE/ABL8EsV7n+IogQJoja/4ARcEGZiSQ4hZQrV52W1QAawmrRLM0xBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tgxOkAFCSPO/nvBIkjjmL3sPAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQxOwAxXQ/E6DgxWBVheCgB4SsVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+xDE1gPAAAH+AAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==',
299
530
  '9': 'data:audio/mpeg;base64,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VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+xDE9gDJFH8VrDzLaB2EoJQAiM1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMTWA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
300
531
  '#': 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU5LjI3LjEwMAAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAHAAAICwBxcXFxcXFxcXFxcXFxcYuLi4uLi4uLi4uLi4uLpaWlpaWlpaWlpaWlpaXFxcXFxcXFxcXFxcXFxcXm5ubm5ubm5ubm5ubm5vPz8/Pz8/Pz8/Pz8/Pz//////////////////8AAAAATGF2YzU5LjM3AAAAAAAAAAAAAAAAJAPpAAAAAAAACAuixEhuAAAAAAD/+8DEAAALdDkydPeAKuKWZTc/4AkBOW7i973v6NZBwVBJC7hHwkZY5GEScAAAAgDAOBUN6HoezxAAAAAAPDz/wAAB3pw///8AAADx//gAAAAID//wwAAAAQH///gAAAgPDx/4CP/w8PDw9IAABnh4eCAAAABIHZNNVaGwAAAsQwAIAUjJYAJH2IAGQwBAAdMDZCTTAIQB4wIIM9S7MHcDezAswO4wJcERMRQA3DBYgcI0FoDIMRtCqTQDL3MI0C0zjDuDAiARNHPEkwxQpAUCgHAEIRgkBtG4BABGA4AjNZK1qaMkewEgAXoAZUEAEJoqCrte+PTDlvu3Fdq7dYxKHoaq0r/u5bn3cfiM1o1DWOGOtZf85P5YSuV26a7Syls3/8xIIfwK+kFVyTAAAAAHwAAAHLf16AKAjIizYQCSty9hkADA8EjFt7DpiMTMwbTFoSzDAMTFQFB4xDDxzztODjL8WjEULBoEn1UBg6NUust4zurcGooQAPQBMvEgyIWGeiGQw2gIyZKRzvGDAB2YpYzB3BkgmL2CEYMwFJgYgvGDcD6YVAR5ipD9nagVsYuAKpg2gRHQGDog4VXz2TEprdgKD8nazmWbIAAAAA4AAAAf6TEwZFBCyKgpZEogE6ZlZgAhICI8MwlVRAuE2YAoFwGBNMPEBExAQYDBLOuMahT8RBMBYDUVgMBWU2WITlHeySsVZAQDgCNN3QKGZtgFehdI4QQLBfQEznrbRvsCemHsAQEA1GAEBmYCwKBABcYZYRZv0h5Bw9Y8DiTARIsqfeyH5XU30twAAAB/AAAA/rvJCgoKYaY+NG7khoRaaWdGxxBhFCkmL+9weUdS5jYivGEoE6YSIRBkEAsmSoJmY+D7Z3DVgGNILWYSIRxtp5oUxiCZaZqsucWD66V73xBoCm8Yg5kEhZW8/wBGbHbeABfgKrtgUABGABhrBgDwBcYDIBMGBFAPhgQADP/7UMTYgUmARy393oAhRgkj/Z9lHYYFCBzmCkhJpiNY16aMaU1GCmAiBgbgAWYEuBUmEZgw5hUoXuYrENoGk/E3pgc4HuYHWAWmAqAIRgDwBADgDwwA0AJc96VN5VYachYyBYqYjDxoAWGQAlr6HoyACs3SUEgAF7aen7RVdiAAAAAAQEhU1ojBAAAAAMDMEMwPQjjABAkMGUEJaJgFAhjQN5gUSMmFyDYY2TUZgkA1mDcGua6RMhgUpsm8UWyY9RRBhaAIGISMYdk5cIQQsZf/+1DE5wFJbD0h7PsI6Q4HpL2N+QRwARibhKmCqFsYWIKAVBNMCoBoOAAMDECIiAcThAIGbsAEAIeACMBAAYQAMCoBhgIAAiQASdUbAQAy8VhWcrft9/4lh2kllvePb////9inp7dJSdMOfwG7PEGQAr/+gAARXHOtTTjckyiGQz4BeJxJ9gcSdijTJk9xhhI0VQbJYXBwOplVstn7AqlXD7K+2pdWX6w1a9qwulbFgxsBR26VTEEAqkA2RwAAAfIaL7GoYKCW+EQ2UCjUkGvP//tgxP0BTORdFa37SOIQDGK2v/AE/PITVAWchYaDq7XydhR4YMagIr2pUrsKzppwDvYzQ0iZDicy2ppTkJJkcYTABBUfPrXaqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//tgxP8AFUSTHfnvAAEhjiM/sPAFqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sQxPyAxnBjD6DgZ2hihqCgB7Ckqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+xDE1gPAAAH+AAAAIAAANIAAAASqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==',
301
- '*': 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU5LjI3LjEwMAAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAHAAAIjQBqampqampqampqampqaoODg4ODg4ODg4ODg4ODmJiYmJiYmJiYmJiYmJi8vLy8vLy8vLy8vLy8vLzn5+fn5+fn5+fn5+fn5/Pz8/Pz8/Pz8/Pz8/Pz//////////////////8AAAAATGF2YzU5LjM3AAAAAAAAAAAAAAAAJAPpAAAAAAAACI0Bco0qAAAAAAD/+8DEAAAHUDswdYeAIn6XJPc9wAABTcADPPPPPPcBqBltEADyMjLVmEZjCgvDwR8JGS9nveG/jxKAgCAIAmD/BA5wff4IAgCYPg+fggCGkAAAAACNNeb6B0JAAABFAwCgHoyVQHqxUAWMCACUxFSkzAtAwMJY9t+jDUGBMMkVozBiejUqLUNYYts2SCKjWDHtOCgkAA8yI4zGoDMtNIyGAjDIFAQkgYWAqykhi/M97U2WNpAiw0M3oKXdTfCmbySkf+N1lAUhX2iz78//jc5Ty+MQ5Vmo0/1Xn///+Hdczz7TTMZhmt2r0QQMxEelTqrwAAAB8MIAANJlMEA0ABI4wDQBzBhAgMA0CASAuCoHBg5g9GLWz4cQDn5lzDkmLQQKbRUdhuPlmGNiN4ByB4gbci4FEeBYOh7oYiE7OISkGEJTVE1MSZDaS6l+s9Lht////+o9//rQ8AABtwH9dJGURkmEhVcZFsYBiZNIcVcYE0AqmD/hJhoiYaaYSOAgmCBA7BhX6HkYd8EbGBSgXJtauddHGJEwcvjwA27yS93IhL8P7utb/9f/6/5bWcq09f////kq33FAAAWwAACXSFPMmo95TgoAx4IiYPlULDsZMJ44Ch8FCw4uSxuOAobhUEcoJRI6z6CZq6+kUk97ryAAAAANvwJc9ZIAKts8Ecpj1gyAsEk3Bg6gYmNoOgfjxT5jzBeGDqOSYuflpkTD6mAQEEaAJHJmhhosHKKFzQYVRMncOPYkSwgQP0yn+PAqaAAAAACf+GAAIzLlNQEKdkyI46pI1xM2aI3+QwUA+zD7X4Oc2CEw8RZjDFFjNfCUM4LRUzD+CaMGQIYwZxQxUIswCACkV2AQHQGBGBCRAFg4CRqc5cXZYhtubyYORz3ok2DgAnuAAJZn//j4f/EegAAAD/0ZbYxYAMFFxQuFAkxBMOijDQ4ELkBu7eYIoC8GGSkr5tnJmkYbKEwmBf/7UMT1gUzcoxu96oAhcowjPa/tFCiCBkSTdEZhaHVGC5AVJgIQE4YG8EDmAbAXpgJIAsVB0il8pFAgJrMWfNTAaVCroACEPK0iyZhRC7IGDTIbQBbpyFp4g1tujaEpy3rEMSZyKsvuWP+val8xet+2Nv34xvU8eirp2t5Ya////3/f/////nzFT/3qxhhrD+1GjrH9aKrks7qOK9Pt+xOT76eVAAAAKPesAAw0R2jBmIPMCgBgwvQ5jHKHzMB88siNEMF4O8mAPMGYQcxey/j/+0DE8QBHLD8zzHMooT+Ho32fbRXP6uHPMRfczORGDNuOWO3PHg2EyczI+DmMHIAcwcAhDEJBQHgPBAMcKILAakaaYDHHhSyACfOIAQGHOaBsCEY0DAcu4pfAWLY4OAFl0WBkkGNAkVxwIERHvyocgJX6FyTAMLRzzNNLZEIwNCflBOg486toyUvdoqMrCuluVVoU4q6ntGAfKTYbSFIaNKLqNmD6iqstJfrmkz7NPZWmzKns1P/7cMT8gE3UixnteOnq7Zzh9b/lHNmU3Rg+NTdIeSDYbEpINhoZSS1KWxLRTtiXksbIr30NVld9tVSkAAAALu9MNY1xBAqdRYNQM1KCHWAIWIHkhgbMmYf9m7cFmfBLcRtARCJSdLWoNlk8IVzKJsMkS5kVHAkFRonJS00IfgTEMDSFA1qqEmO35wVYuOxcinJNykpMCHiEAWif/wAAPzlgrWG2IADSlUANmCBjHUKAoLR9pF26s4wC/M1bwiVt9ZCBCteQCMMay1D6Sl2Cs7GcAWUNvbJ5fKJOcISw5G1mkP09QdVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUz/+4DE+YBeXQ0T72UxqWuR472cJH1BTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMT+AMd4dR3jZGXoToUgIAfglVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQxNYDwAAB/gAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=',
302
- };
532
+ '*': 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU5LjI3LjEwMAAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAHAAAIjQBqampqampqampqampqaoODg4ODg4ODg4ODg4ODmJiYmJiYmJiYmJiYmJi8vLy8vLy8vLy8vLy8vLzn5+fn5+fn5+fn5+fn5/Pz8/Pz8/Pz8/Pz8/Pz//////////////////8AAAAATGF2YzU5LjM3AAAAAAAAAAAAAAAAJAPpAAAAAAAACI0Bco0qAAAAAAD/+8DEAAAHUDswdYeAIn6XJPc9wAABTcADPPPPPPcBqBltEADyMjLVmEZjCgvDwR8JGS9nveG/jxKAgCAIAmD/BA5wff4IAgCYPg+fggCGkAAAAACNNeb6B0JAAABFAwCgHoyVQHqxUAWMCACUxFSkzAtAwMJY9t+jDUGBMMkVozBiejUqLUNYYts2SCKjWDHtOCgkAA8yI4zGoDMtNIyGAjDIFAQkgYWAqykhi/M97U2WNpAiw0M3oKXdTfCmbySkf+N1lAUhX2iz78//jc5Ty+MQ5Vmo0/1Xn///+Hdczz7TTMZhmt2r0QQMxEelTqrwAAAB8MIAANJlMEA0ABI4wDQBzBhAgMA0CASAuCoHBg5g9GLWz4cQDn5lzDkmLQQKbRUdhuPlmGNiN4ByB4gbci4FEeBYOh7oYiE7OISkGEJTVE1MSZDaS6l+s9Lht////+o9//rQ8AABtwH9dJGURkmEhVcZFsYBiZNIcVcYE0AqmD/hJhoiYaaYSOAgmCBA7BhX6HkYd8EbGBSgXJtauddHGJEwcvjwA27yS93IhL8P7utb/9f/6/5bWcq09f////kq33FAAAWwAACXSFPMmo95TgoAx4IiYPlULDsZMJ44Ch8FCw4uSxuOAobhUEcoJRI6z6CZq6+kUk97ryAAAAANvwJc9ZIAKts8Ecpj1gyAsEk3Bg6gYmNoOgfjxT5jzBeGDqOSYuflpkTD6mAQEEaAJHJmhhosHKKFzQYVRMncOPYkSwgQP0yn+PAqaAAAAACf+GAAIzLlNQEKdkyI46pI1xM2aI3+QwUA+zD7X4Oc2CEw8RZjDFFjNfCUM4LRUzD+CaMGQIYwZxQxUIswCACkV2AQHQGBGBCRAFg4CRqc5cXZYhtubyYORz3ok2DgAnuAAJZn//j4f/EegAAAD/0ZbYxYAMFFxQuFAkxBMOijDQ4ELkBu7eYIoC8GGSkr5tnJmkYbKEwmBf/7UMT1gUzcoxu96oAhcowjPa/tFCiCBkSTdEZhaHVGC5AVJgIQE4YG8EDmAbAXpgJIAsVB0il8pFAgJrMWfNTAaVCroACEPK0iyZhRC7IGDTIbQBbpyFp4g1tujaEpy3rEMSZyKsvuWP+val8xet+2Nv34xvU8eirp2t5Ya////3/f/////nzFT/3qxhhrD+1GjrH9aKrks7qOK9Pt+xOT76eVAAAAKPesAAw0R2jBmIPMCgBgwvQ5jHKHzMB88siNEMF4O8mAPMGYQcxey/j/+0DE8QBHLD8zzHMooT+Ho32fbRXP6uHPMRfczORGDNuOWO3PHg2EyczI+DmMHIAcwcAhDEJBQHgPBAMcKILAakaaYDHHhSyACfOIAQGHOaBsCEY0DAcu4pfAWLY4OAFl0WBkkGNAkVxwIERHvyocgJX6FyTAMLRzzNNLZEIwNCflBOg486toyUvdoqMrCuluVVoU4q6ntGAfKTYbSFIaNKLqNmD6iqstJfrmkz7NPZWmzKns1P/7cMT8gE3UixnteOnq7Zzh9b/lHNmU3Rg+NTdIeSDYbEpINhoZSS1KWxLRTtiXksbIr30NVld9tVSkAAAALu9MNY1xBAqdRYNQM1KCHWAIWIHkhgbMmYf9m7cFmfBLcRtARCJSdLWoNlk8IVzKJsMkS5kVHAkFRonJS00IfgTEMDSFA1qqEmO35wVYuOxcinJNykpMCHiEAWif/wAAPzlgrWG2IADSlUANmCBjHUKAoLR9pF26s4wC/M1bwiVt9ZCBCteQCMMay1D6Sl2Cs7GcAWUNvbJ5fKJOcISw5G1mkP09QdVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUz/+4DE+YBeXQ0T72UxqWuR472cJH1BTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMT+AMd4dR3jZGXoToUgIAfglVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQxNYDwAAB/gAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU='
533
+ });
534
+
535
+
536
+
537
+
538
+
539
+
303
540
 
304
- function getDialPadValueOnlyRegex() {
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+ // ! alway new Regex for regex will have index issue
549
+ // https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/RegExp
550
+ /**
551
+ * return regex with only allow dialPad value `1234567890*+#-`
552
+ */ function getDialPadValueOnlyRegex() {
305
553
  return /[1234567890*+#]+/g;
306
554
  }
307
555
 
308
- const useFixedEndSelection = () => {
556
+
557
+
558
+
559
+
560
+ /**
561
+ * bind with ref, let input can always focus at end of latest character
562
+ */ const useFixedEndSelection = ()=>{
309
563
  const ref = useRef(null);
310
- const keypadModeFixedAtLatest = useEventCallback(() => {
564
+ const keypadModeFixedAtLatest = useEventCallback(()=>{
311
565
  const { position, isSelectRange } = getSelectionPosition(ref);
312
566
  const value = ref.current?.value || '';
313
567
  if (isSelectRange || position.start < value.length) {
@@ -315,11 +569,11 @@ const useFixedEndSelection = () => {
315
569
  setSelectionPosition(ref, {
316
570
  start: targetPosition,
317
571
  end: targetPosition,
318
- scrollIntoView: true,
572
+ scrollIntoView: true
319
573
  });
320
574
  }
321
575
  });
322
- const onKeyDown = (e) => {
576
+ const onKeyDown = (e)=>{
323
577
  if ([
324
578
  'ArrowUp',
325
579
  'ArrowLeft',
@@ -328,7 +582,7 @@ const useFixedEndSelection = () => {
328
582
  'PageUp',
329
583
  'PageDown',
330
584
  'Home',
331
- 'End',
585
+ 'End'
332
586
  ].includes(e.key)) {
333
587
  e.preventDefault();
334
588
  e.stopPropagation();
@@ -339,97 +593,123 @@ const useFixedEndSelection = () => {
339
593
  ref,
340
594
  onFocus: keypadModeFixedAtLatest,
341
595
  onClick: keypadModeFixedAtLatest,
342
- onKeyDown,
596
+ onKeyDown
343
597
  };
344
598
  };
345
599
 
346
- const DialTextField = forwardRef((inProps, ref) => {
347
- const props = useThemeProps({ props: inProps, name: 'DialTextField' });
348
- const { value, onChange, onEmit, onKeyDown, onKeyUp, inputRef: inputRefProp, inputProps: inputPropsProp, keypadMode, onlyAllowKeypadValue = keypadMode, externalWindow = window, ...rest } = props;
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+ const DialTextField = /*#__PURE__*/ forwardRef((inProps, ref)=>{
612
+ const props = useThemeProps({
613
+ props: inProps,
614
+ name: 'DialTextField'
615
+ });
616
+ const { value, onChange, onEmit, onKeyDown, onKeyUp, inputRef: inputRefProp, inputProps: inputPropsProp, keypadMode, onlyAllowKeypadValue = keypadMode, externalWindow = window, // textVariant = 'headline1',
617
+ ...rest } = props;
349
618
  const dialerContext = useDialerContext();
350
- const playAudio = (key) => {
619
+ const playAudio = (key)=>{
351
620
  dialerContext.dialPadActionRef?.current?.playAudio(key);
352
621
  };
353
- const { ref: inputRef, onFocus: onKeypadModeFocus, onKeyDown: onKeypadModeKeyDown, onClick: onKeypadModeClick, } = useFixedEndSelection();
622
+ const { ref: inputRef, onFocus: onKeypadModeFocus, onKeyDown: onKeypadModeKeyDown, onClick: onKeypadModeClick } = useFixedEndSelection();
354
623
  const forkContextRef = useForkRef(dialerContext.inputRef, inputRef);
355
624
  const forkInputRef = useForkRef(inputRefProp, forkContextRef);
356
625
  const scrollToPositionRef = useRef();
357
626
  const isNotTriggerRefocusRef = useRef(false);
358
- const maxLength = keypadMode
359
- ? undefined
360
- : (inputPropsProp?.maxLength ?? 30);
361
- const checkNotReFocus = useEventCallback((reason, isFocus) => {
627
+ const maxLength = keypadMode ? undefined : inputPropsProp?.maxLength ?? 30;
628
+ const checkNotReFocus = useEventCallback((reason, isFocus)=>{
362
629
  const elm = inputRef.current;
363
630
  const isInputFocus = isFocus ?? externalWindow.document.activeElement === elm;
364
631
  if (reason !== 'click' && !isInputFocus) {
632
+ // ! both keydown and touch, only when focus need re-focus
365
633
  isNotTriggerRefocusRef.current = true;
366
634
  }
367
635
  });
368
- useImperativeHandle(dialerContext.onClearRef, () => (e, reason) => {
369
- if (reason !== 'keyboard') {
370
- checkNotReFocus(reason);
371
- }
372
- scrollToPositionRef.current = 0;
373
- onChange?.('');
374
- }, [checkNotReFocus, onChange]);
375
- useImperativeHandle(dialerContext.onDeleteRef, () => (e, reason) => {
376
- const elm = inputRef.current;
377
- if (elm && value?.length) {
378
- const isFocus = externalWindow.document.activeElement === elm;
379
- let toPosition;
380
- let toValue;
381
- if (isFocus) {
382
- const { position, isSelectRange } = getSelectionPosition(inputRef);
383
- if (isSelectRange) {
384
- toPosition = position.start;
385
- toValue =
386
- value.slice(0, position.start) + value.slice(position.end);
636
+ /**
637
+ * outside clear via this method, with check current input state
638
+ */ useImperativeHandle(dialerContext.onClearRef, ()=>(e, reason)=>{
639
+ // * when clear from keyboard,
640
+ // * must need re-focus, so not check,
641
+ if (reason !== 'keyboard') {
642
+ checkNotReFocus(reason);
643
+ }
644
+ scrollToPositionRef.current = 0;
645
+ onChange?.('');
646
+ }, [
647
+ checkNotReFocus,
648
+ onChange
649
+ ]);
650
+ /**
651
+ * outside delete value via this method, with check current input state
652
+ */ useImperativeHandle(dialerContext.onDeleteRef, ()=>(e, reason)=>{
653
+ const elm = inputRef.current;
654
+ if (elm && value?.length) {
655
+ const isFocus = externalWindow.document.activeElement === elm;
656
+ let toPosition;
657
+ let toValue;
658
+ if (isFocus) {
659
+ const { position, isSelectRange } = getSelectionPosition(inputRef);
660
+ if (isSelectRange) {
661
+ toPosition = position.start;
662
+ toValue = value.slice(0, position.start) + value.slice(position.end);
663
+ } else if (position.start > 0) {
664
+ toPosition = position.start - 1;
665
+ toValue = value.slice(0, toPosition) + value.slice(position.end);
666
+ }
667
+ } else {
668
+ toPosition = value.length - 1;
669
+ toValue = value.slice(0, -1);
387
670
  }
388
- else if (position.start > 0) {
389
- toPosition = position.start - 1;
390
- toValue = value.slice(0, toPosition) + value.slice(position.end);
671
+ if (toValue !== undefined) {
672
+ // * when delete from keyboard and value to be empty,
673
+ // * must need re-focus, so not check,
674
+ if (!(reason === 'keyboard' && toValue === '')) {
675
+ checkNotReFocus(reason);
676
+ }
677
+ scrollToPositionRef.current = toPosition;
678
+ onChange?.(toValue);
391
679
  }
392
680
  }
393
- else {
394
- toPosition = value.length - 1;
395
- toValue = value.slice(0, -1);
396
- }
397
- if (toValue !== undefined) {
398
- if (!(reason === 'keyboard' && toValue === '')) {
399
- checkNotReFocus(reason);
681
+ }, [
682
+ checkNotReFocus,
683
+ externalWindow,
684
+ inputRef,
685
+ onChange,
686
+ value
687
+ ]);
688
+ /**
689
+ * outside change value via this method, with check current input state
690
+ */ useImperativeHandle(dialerContext.onInsertRef, ()=>(addValue, reason)=>{
691
+ const elm = inputRef.current;
692
+ if (elm) {
693
+ const isFocus = externalWindow.document.activeElement === elm;
694
+ let toPosition;
695
+ let toValue;
696
+ // * when keypadMode also add value at latest
697
+ if (!isFocus || keypadMode) {
698
+ toValue = value + addValue;
699
+ toPosition = toValue.length;
700
+ } else {
701
+ const { position } = getSelectionPosition(inputRef);
702
+ toValue = value.slice(0, position.start) + addValue + value.slice(position.end);
703
+ toPosition = position.start + 1;
704
+ }
705
+ if (maxLength === undefined || maxLength !== undefined && toValue.length <= maxLength) {
706
+ checkNotReFocus(reason, isFocus);
707
+ scrollToPositionRef.current = toPosition;
708
+ onChange?.(toValue);
709
+ onEmit?.(addValue, reason);
400
710
  }
401
- scrollToPositionRef.current = toPosition;
402
- onChange?.(toValue);
403
- }
404
- }
405
- }, [checkNotReFocus, externalWindow, inputRef, onChange, value]);
406
- useImperativeHandle(dialerContext.onInsertRef, () => (addValue, reason) => {
407
- const elm = inputRef.current;
408
- if (elm) {
409
- const isFocus = externalWindow.document.activeElement === elm;
410
- let toPosition;
411
- let toValue;
412
- if (!isFocus || keypadMode) {
413
- toValue = value + addValue;
414
- toPosition = toValue.length;
415
- }
416
- else {
417
- const { position } = getSelectionPosition(inputRef);
418
- toValue =
419
- value.slice(0, position.start) +
420
- addValue +
421
- value.slice(position.end);
422
- toPosition = position.start + 1;
423
- }
424
- if (maxLength === undefined ||
425
- (maxLength !== undefined && toValue.length <= maxLength)) {
426
- checkNotReFocus(reason, isFocus);
427
- scrollToPositionRef.current = toPosition;
428
- onChange?.(toValue);
429
- onEmit?.(addValue, reason);
430
711
  }
431
- }
432
- }, [
712
+ }, [
433
713
  checkNotReFocus,
434
714
  externalWindow,
435
715
  inputRef,
@@ -437,25 +717,28 @@ const DialTextField = forwardRef((inProps, ref) => {
437
717
  maxLength,
438
718
  onChange,
439
719
  onEmit,
440
- value,
720
+ value
441
721
  ]);
442
- useLayoutEffect(() => {
722
+ useLayoutEffect(()=>{
443
723
  const scrollToPosition = scrollToPositionRef.current;
444
724
  if (!isNotTriggerRefocusRef.current && scrollToPosition !== undefined) {
445
725
  setSelectionPosition(inputRef, {
446
726
  start: scrollToPosition,
447
727
  end: scrollToPosition,
448
- scrollIntoView: true,
728
+ scrollIntoView: true
449
729
  });
450
730
  }
451
731
  scrollToPositionRef.current = undefined;
452
732
  isNotTriggerRefocusRef.current = false;
453
733
  });
454
734
  const events = useKeyDownOnce(ACCEPTABLE_KEYS, {
455
- onKeyDown: (e) => {
735
+ onKeyDown: (e)=>{
456
736
  playAudio(e.key);
457
737
  if (keypadMode) {
458
- if (['Delete', 'Backspace'].includes(e.key)) {
738
+ if ([
739
+ 'Delete',
740
+ 'Backspace'
741
+ ].includes(e.key)) {
459
742
  e.preventDefault();
460
743
  e.stopPropagation();
461
744
  }
@@ -463,33 +746,31 @@ const DialTextField = forwardRef((inProps, ref) => {
463
746
  }
464
747
  onKeyDown?.(e);
465
748
  },
466
- onKeyUp,
749
+ onKeyUp
467
750
  });
468
751
  const { sleep } = useSleep();
469
- const handleChange = useEventCallback((e) => {
752
+ const handleChange = useEventCallback((e)=>{
470
753
  const currValue = e.target.value;
754
+ // * handle copy paste
471
755
  if (onlyAllowKeypadValue) {
472
756
  const filterValue = (currValue.match(getDialPadValueOnlyRegex()) || []).join('');
473
- if (filterValue === value)
474
- return;
757
+ if (filterValue === value) return;
475
758
  if (onEmit) {
476
759
  const emitValues = filterValue.replace(value, '');
477
760
  const valueArr = emitValues.split('');
478
761
  if (valueArr.length > 1) {
479
- (async () => {
480
- for (let i = 0; i < valueArr.length; i++) {
762
+ (async ()=>{
763
+ for(let i = 0; i < valueArr.length; i++){
481
764
  playAudio(valueArr[i]);
482
765
  onChange(value + valueArr.slice(0, i + 1).join(''));
483
766
  if (i !== valueArr.length - 1) {
484
767
  await sleep(300);
485
- }
486
- else {
768
+ } else {
487
769
  onEmit(emitValues, 'keyboard');
488
770
  }
489
771
  }
490
772
  })();
491
- }
492
- else {
773
+ } else {
493
774
  playAudio(valueArr[0]);
494
775
  onChange(filterValue);
495
776
  onEmit(emitValues, 'keyboard');
@@ -501,7 +782,7 @@ const DialTextField = forwardRef((inProps, ref) => {
501
782
  }
502
783
  onChange(currValue);
503
784
  });
504
- const handleKeyPress = useEventCallback((e) => {
785
+ const handleKeyPress = useEventCallback((e)=>{
505
786
  inputPropsProp?.onKeyPress?.(e);
506
787
  if (onlyAllowKeypadValue) {
507
788
  const isMatch = getDialPadValueOnlyRegex().test(e.key);
@@ -511,16 +792,17 @@ const DialTextField = forwardRef((inProps, ref) => {
511
792
  }
512
793
  }
513
794
  });
514
- const inputProps = useMemo(() => combineProps({
515
- onFocus: keypadMode ? onKeypadModeFocus : undefined,
516
- onClick: keypadMode ? onKeypadModeClick : undefined,
517
- onKeyPress: handleKeyPress,
518
- onChange: handleChange,
519
- onKeyDown: events.onKeyDown,
520
- onKeyUp: events.onKeyUp,
521
- maxLength,
522
- autoComplete: 'off',
523
- }, inputPropsProp), [
795
+ const inputProps = useMemo(()=>combineProps({
796
+ onFocus: keypadMode ? onKeypadModeFocus : undefined,
797
+ onClick: keypadMode ? onKeypadModeClick : undefined,
798
+ onKeyPress: handleKeyPress,
799
+ onChange: handleChange,
800
+ onKeyDown: events.onKeyDown,
801
+ onKeyUp: events.onKeyUp,
802
+ maxLength,
803
+ // in dialer not need autoComplete
804
+ autoComplete: 'off'
805
+ }, inputPropsProp), [
524
806
  keypadMode,
525
807
  onKeypadModeFocus,
526
808
  onKeypadModeClick,
@@ -529,26 +811,55 @@ const DialTextField = forwardRef((inProps, ref) => {
529
811
  events.onKeyDown,
530
812
  events.onKeyUp,
531
813
  maxLength,
532
- inputPropsProp,
814
+ inputPropsProp
533
815
  ]);
534
- return (jsx(TextField, { ref: ref, inputRef: forkInputRef, clearBtn: false, inputProps: inputProps, value: value, variant: "quiet", onChange: handleChange, ...rest }));
816
+ return /*#__PURE__*/ jsx(TextField_TextField, {
817
+ ref: ref,
818
+ inputRef: forkInputRef,
819
+ clearBtn: false,
820
+ inputProps: inputProps,
821
+ value: value,
822
+ variant: "quiet",
823
+ onChange: handleChange,
824
+ ...rest
825
+ });
535
826
  });
536
827
  DialTextField.displayName = 'SuiDialTextField';
537
828
 
538
- const Dialer = ({ children }) => {
829
+
830
+
831
+
832
+
833
+
834
+
835
+
836
+
837
+
838
+ const Dialer = ({ children })=>{
539
839
  const dialPadActionRef = useRef(null);
540
840
  const onInsertRef = useRef(null);
541
841
  const inputRef = useRef(null);
542
842
  const onDeleteRef = useRef(null);
543
843
  const onClearRef = useRef(null);
544
- return (jsx(DialerContext.Provider, { value: {
844
+ return /*#__PURE__*/ jsx(DialerContext.Provider, {
845
+ value: {
545
846
  dialPadActionRef,
546
847
  onInsertRef,
547
848
  onDeleteRef,
548
849
  inputRef,
549
- onClearRef,
550
- }, children: children }));
850
+ onClearRef
851
+ },
852
+ children: children
853
+ });
551
854
  };
552
855
  Dialer.displayName = 'SuiDialer';
553
856
 
554
- export { ACCEPTABLE_KEYS, DIALER_PAD_ICONS, DIALER_PAD_PLUS, DialDelete, DialPad, DialPadButton, DialTextField, Dialer, DialerContext, DialerPadSoundsMPEG, DialerPadSoundsOGG, DialPadButton$1 as dialPadButtonStyle, DialPad$1 as dialPadStyle, getDialPadValueOnlyRegex, useDialKeyboard, useDialerContext, useFixedEndSelection, useKeyAudio };
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+ export { ACCEPTABLE_KEYS, DIALER_PAD_ICONS, DIALER_PAD_PLUS, DialDelete, DialPad as dialPadStyle, DialPadButton as dialPadButtonStyle, DialPadButton_DialPadButton as DialPadButton, DialPad_DialPad as DialPad, DialTextField, Dialer, DialerContext, DialerPadSoundsMPEG, DialerPadSoundsOGG, getDialPadValueOnlyRegex, useDialKeyboard, useDialerContext, useFixedEndSelection, useKeyAudio };