@skbkontur/react-ui 4.25.1-MaskedInput-fix.2 → 4.25.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/LICENSE +21 -21
- package/cjs/components/Calendar/Calendar.d.ts +0 -12
- package/cjs/components/Calendar/Calendar.js +0 -12
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.md +10 -17
- package/cjs/components/Gapped/Gapped.md +43 -43
- package/cjs/components/Input/Input.d.ts +2 -3
- package/cjs/components/Input/Input.js +4 -7
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.d.ts +4 -23
- package/cjs/components/MaskedInput/MaskedInput.js +22 -158
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.md +9 -211
- package/cjs/components/RadioGroup/RadioGroup.js +10 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.md +43 -43
- package/cjs/components/Select/Select.js +2 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Token/Token.js +2 -1
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/index.d.ts +0 -1
- package/cjs/index.js +0 -1
- package/cjs/index.js.map +1 -1
- package/cjs/internal/MaskedInputElement/MaskedInputElement.d.ts +14 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +16 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js +52 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js.map +1 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.js +196 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.js.map +1 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +6 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js +29 -0
- package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js.map +1 -0
- package/cjs/internal/MaskedInputElement/index.d.ts +1 -0
- package/cjs/internal/MaskedInputElement/index.js +1 -0
- package/cjs/internal/MaskedInputElement/index.js.map +1 -0
- package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
- package/cjs/lib/events/MouseDrag.d.ts +1 -1
- package/cjs/lib/events/MouseDrag.js.map +1 -1
- package/cjs/lib/events/keyboard/identifiers.d.ts +0 -3
- package/cjs/lib/events/keyboard/identifiers.js +1 -5
- package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
- package/cjs/lib/styles/HoldSelectionColor.js +1 -1
- package/cjs/lib/styles/HoldSelectionColor.js.map +1 -1
- package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
- package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/cjs/lib/theming/Emotion.js +2 -3
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +0 -12
- package/components/DatePicker/DatePicker.md +10 -17
- package/components/Gapped/Gapped.md +43 -43
- package/components/Input/Input/Input.js +4 -8
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.d.ts +2 -3
- package/components/MaskedInput/MaskedInput/MaskedInput.js +26 -144
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +4 -23
- package/components/MaskedInput/MaskedInput.md +9 -211
- package/components/RadioGroup/RadioGroup/RadioGroup.js +6 -2
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.md +43 -43
- package/components/Select/Select/Select.js +2 -1
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Token/Token/Token.js +4 -1
- package/components/Token/Token/Token.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js +206 -0
- package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js.map +1 -0
- package/internal/MaskedInputElement/MaskedInputElement/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement.d.ts +14 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js +43 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js.map +1 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +16 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js +16 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js.map +1 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles/package.json +6 -0
- package/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +6 -0
- package/internal/MaskedInputElement/index/index.js +1 -0
- package/internal/MaskedInputElement/index/index.js.map +1 -0
- package/internal/MaskedInputElement/index/package.json +6 -0
- package/internal/MaskedInputElement/index.d.ts +1 -0
- package/internal/MaskedInputElement/package.json +6 -0
- package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
- package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
- package/lib/events/MouseDrag.d.ts +1 -1
- package/lib/events/keyboard/identifiers/identifiers.js +0 -13
- package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
- package/lib/events/keyboard/identifiers.d.ts +0 -3
- package/lib/styles/HoldSelectionColor/HoldSelectionColor.js +1 -1
- package/lib/styles/HoldSelectionColor/HoldSelectionColor.js.map +1 -1
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +2 -3
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/package.json +5 -2
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +0 -12
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +0 -157
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +0 -1
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +0 -3
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js +0 -13
- package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +0 -1
- package/cjs/components/MaskedInput/ColorableInputElement/index.d.ts +0 -1
- package/cjs/components/MaskedInput/ColorableInputElement/index.js +0 -1
- package/cjs/components/MaskedInput/ColorableInputElement/index.js.map +0 -1
- package/cjs/components/MaskedInput/FixedIMaskInput.d.ts +0 -9
- package/cjs/components/MaskedInput/FixedIMaskInput.js +0 -219
- package/cjs/components/MaskedInput/FixedIMaskInput.js.map +0 -1
- package/cjs/components/MaskedInput/MaskedInput.helpers.d.ts +0 -10
- package/cjs/components/MaskedInput/MaskedInput.helpers.js +0 -30
- package/cjs/components/MaskedInput/MaskedInput.helpers.js.map +0 -1
- package/cjs/components/MaskedInput/MaskedInput.styles.d.ts +0 -3
- package/cjs/components/MaskedInput/MaskedInput.styles.js +0 -4
- package/cjs/components/MaskedInput/MaskedInput.styles.js.map +0 -1
- package/cjs/lib/styles/UiFont.d.ts +0 -4
- package/cjs/lib/styles/UiFont.js +0 -34
- package/cjs/lib/styles/UiFont.js.map +0 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +0 -149
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +0 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement/package.json +0 -6
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +0 -12
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/ColorableInputElement.styles.js +0 -10
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/ColorableInputElement.styles.js.map +0 -1
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/package.json +0 -6
- package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +0 -3
- package/components/MaskedInput/ColorableInputElement/index/index.js +0 -1
- package/components/MaskedInput/ColorableInputElement/index/index.js.map +0 -1
- package/components/MaskedInput/ColorableInputElement/index/package.json +0 -6
- package/components/MaskedInput/ColorableInputElement/index.d.ts +0 -1
- package/components/MaskedInput/ColorableInputElement/package.json +0 -6
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +0 -241
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +0 -1
- package/components/MaskedInput/FixedIMaskInput/package.json +0 -6
- package/components/MaskedInput/FixedIMaskInput.d.ts +0 -9
- package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js +0 -27
- package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js.map +0 -1
- package/components/MaskedInput/MaskedInput.helpers/package.json +0 -6
- package/components/MaskedInput/MaskedInput.helpers.d.ts +0 -10
- package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js +0 -4
- package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js.map +0 -1
- package/components/MaskedInput/MaskedInput.styles/package.json +0 -6
- package/components/MaskedInput/MaskedInput.styles.d.ts +0 -3
- package/lib/styles/UiFont/UiFont.js +0 -25
- package/lib/styles/UiFont/UiFont.js.map +0 -1
- package/lib/styles/UiFont/package.json +0 -6
- package/lib/styles/UiFont.d.ts +0 -4
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "maxLength", "onUnexpectedInput", "defaultValue", "style"];
|
|
4
|
+
import React, { useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
5
|
+
import { IMaskInput, IMask } from 'react-imask';
|
|
6
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
7
|
+
import { MaskCharLowLine } from "../../MaskCharLowLine";
|
|
8
|
+
import { cx } from "../../../lib/theming/Emotion";
|
|
9
|
+
import { forwardRefAndName } from "../../../lib/forwardRefAndName";
|
|
10
|
+
import { styles } from "../MaskedInputElement.styles";
|
|
11
|
+
import { getCurrentValue, getDefinitions, getFocusPrefix, getMaskChar } from "../MaskedInputElement.helpers";
|
|
12
|
+
export var MaskedInputElementDataTids = {
|
|
13
|
+
root: 'MaskedInput__root'
|
|
14
|
+
};
|
|
15
|
+
export var MaskedInputElement = forwardRefAndName('MaskedInputElement', function MaskedInputElement(props, ref) {
|
|
16
|
+
var _useState = useState(function () {
|
|
17
|
+
var value = getValue(props);
|
|
18
|
+
return {
|
|
19
|
+
value: value,
|
|
20
|
+
originValue: value
|
|
21
|
+
};
|
|
22
|
+
}),
|
|
23
|
+
values = _useState[0],
|
|
24
|
+
setValues = _useState[1];
|
|
25
|
+
|
|
26
|
+
var value = values.value,
|
|
27
|
+
originValue = values.originValue;
|
|
28
|
+
|
|
29
|
+
var _useState2 = useState(''),
|
|
30
|
+
emptyValue = _useState2[0],
|
|
31
|
+
setEmptyValue = _useState2[1];
|
|
32
|
+
|
|
33
|
+
var _useState3 = useState(false),
|
|
34
|
+
focused = _useState3[0],
|
|
35
|
+
setFocused = _useState3[1];
|
|
36
|
+
|
|
37
|
+
var inputRef = useRef(null);
|
|
38
|
+
var rootNodeRef = React.useRef(null);
|
|
39
|
+
var theme = useContext(ThemeContext);
|
|
40
|
+
var expectedChangesRef = useRef(false);
|
|
41
|
+
var isFirstRender = useRef(true);
|
|
42
|
+
useImperativeHandle(ref, function () {
|
|
43
|
+
return {
|
|
44
|
+
input: inputRef.current,
|
|
45
|
+
getRootNode: function getRootNode() {
|
|
46
|
+
return rootNodeRef.current;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
useEffect(function () {
|
|
51
|
+
setEmptyValue(getEmptyValue(props.mask, props.maskChar, props.formatChars));
|
|
52
|
+
}, [props.mask, props.maskChar]);
|
|
53
|
+
useEffect(function () {
|
|
54
|
+
if (isFirstRender.current) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var value = props.value ? props.value.toString() : '';
|
|
59
|
+
setValues(function (values) {
|
|
60
|
+
return _extends({}, values, {
|
|
61
|
+
value: value
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}, [props.value]);
|
|
65
|
+
useEffect(function () {
|
|
66
|
+
isFirstRender.current = false;
|
|
67
|
+
}, []);
|
|
68
|
+
|
|
69
|
+
var mask = props.mask,
|
|
70
|
+
maskChar = props.maskChar,
|
|
71
|
+
formatChars = props.formatChars,
|
|
72
|
+
alwaysShowMask = props.alwaysShowMask,
|
|
73
|
+
maxLength = props.maxLength,
|
|
74
|
+
onUnexpectedInput = props.onUnexpectedInput,
|
|
75
|
+
defaultValue = props.defaultValue,
|
|
76
|
+
style = props.style,
|
|
77
|
+
inputProps = _objectWithoutPropertiesLoose(props, _excluded);
|
|
78
|
+
|
|
79
|
+
var leftClass = (style == null ? void 0 : style.textAlign) !== 'right' && styles.inputMaskLeft();
|
|
80
|
+
|
|
81
|
+
var _getCurrentValue = getCurrentValue({
|
|
82
|
+
value: value,
|
|
83
|
+
originValue: originValue,
|
|
84
|
+
emptyValue: emptyValue
|
|
85
|
+
}, focused, maskChar),
|
|
86
|
+
currentValue = _getCurrentValue[0],
|
|
87
|
+
left = _getCurrentValue[1],
|
|
88
|
+
right = _getCurrentValue[2];
|
|
89
|
+
/* В rightHelper не DEFAULT_MASK_CHAR, а специальная логика для обработки подчркивания('_').
|
|
90
|
+
* Не менять на DEFAULT_MASK_CHAR
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
var rightHelper = right.split('').map(function (_char, i) {
|
|
95
|
+
return _char === '_' ? /*#__PURE__*/React.createElement(MaskCharLowLine, {
|
|
96
|
+
key: i
|
|
97
|
+
}) : _char;
|
|
98
|
+
});
|
|
99
|
+
var leftHelper = (style == null ? void 0 : style.textAlign) !== 'right' && /*#__PURE__*/React.createElement("span", {
|
|
100
|
+
style: {
|
|
101
|
+
color: 'transparent'
|
|
102
|
+
}
|
|
103
|
+
}, left);
|
|
104
|
+
var isMaskVisible = alwaysShowMask || focused;
|
|
105
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
106
|
+
"data-tid": MaskedInputElementDataTids.root,
|
|
107
|
+
ref: rootNodeRef,
|
|
108
|
+
className: styles.container(),
|
|
109
|
+
"x-ms-format-detection": "none"
|
|
110
|
+
}, /*#__PURE__*/React.createElement(IMaskInput, _extends({}, inputProps, {
|
|
111
|
+
mask: mask,
|
|
112
|
+
definitions: getDefinitions(formatChars),
|
|
113
|
+
eager: true,
|
|
114
|
+
overwrite: 'shift',
|
|
115
|
+
onAccept: handleAccept,
|
|
116
|
+
onInput: handleInput,
|
|
117
|
+
onFocus: handleFocus,
|
|
118
|
+
onBlur: handleBlur,
|
|
119
|
+
value: currentValue,
|
|
120
|
+
inputRef: inputRef,
|
|
121
|
+
style: _extends({}, style)
|
|
122
|
+
})), isMaskVisible && /*#__PURE__*/React.createElement("span", {
|
|
123
|
+
className: cx(styles.inputMask(theme), leftClass)
|
|
124
|
+
}, leftHelper, rightHelper));
|
|
125
|
+
|
|
126
|
+
function getValue(props) {
|
|
127
|
+
var _ref, _props$value;
|
|
128
|
+
|
|
129
|
+
return ((_ref = (_props$value = props.value) != null ? _props$value : props.defaultValue) != null ? _ref : '').toString();
|
|
130
|
+
}
|
|
131
|
+
/** В imask вызывается только когда значение с маской меняется*/
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
function handleAccept(value) {
|
|
135
|
+
expectedChangesRef.current = true; // Если разделить на 2 setState - между первым и вторым происходит рендер и иногда символы "съедаются"
|
|
136
|
+
|
|
137
|
+
setValues({
|
|
138
|
+
value: value,
|
|
139
|
+
originValue: value
|
|
140
|
+
});
|
|
141
|
+
setTimeout(function () {
|
|
142
|
+
/** При вводе с клавиатуры срабатывает handleAccept, за ним handleInput
|
|
143
|
+
* expectedChanges - нужен чтобы сообщить из handleAccept в handleInput, что значение с маской изменилось.
|
|
144
|
+
* Если маска не изменилась и сработал handleInput, вызываем handleUnexpectedInput. Ввели значение не по маске.
|
|
145
|
+
* setTimeout нужен чтобы сбросить expectedChanges, например, если изменилось значение в пропах.
|
|
146
|
+
* Маска изменится, вызовется handleAccept, но не handleInput
|
|
147
|
+
*/
|
|
148
|
+
expectedChangesRef.current = false;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/** Отслеживаем неправильные нажатия,
|
|
152
|
+
* handleAccept не вызывается когда значение с маской не меняется, а handleInput вызывается
|
|
153
|
+
* Сначала вызывается handleAccept, затем handleInput
|
|
154
|
+
* */
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
function handleInput(e) {
|
|
158
|
+
var value = e.target.value;
|
|
159
|
+
|
|
160
|
+
if (!expectedChangesRef.current && value === originValue) {
|
|
161
|
+
handleUnexpectedInput();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
expectedChangesRef.current = false;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function handleFocus(event) {
|
|
168
|
+
setFocused(true);
|
|
169
|
+
expectedChangesRef.current = false;
|
|
170
|
+
|
|
171
|
+
if (props.onFocus) {
|
|
172
|
+
props.onFocus(event);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function handleBlur(event) {
|
|
177
|
+
if (value === getFocusPrefix(emptyValue, maskChar)) {
|
|
178
|
+
setValues({
|
|
179
|
+
value: '',
|
|
180
|
+
originValue: ''
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
setFocused(false);
|
|
185
|
+
|
|
186
|
+
if (props.onBlur) {
|
|
187
|
+
props.onBlur(event);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
function handleUnexpectedInput() {
|
|
192
|
+
if (props.onUnexpectedInput) {
|
|
193
|
+
props.onUnexpectedInput(value);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function getEmptyValue(mask, maskChar, formatChars) {
|
|
198
|
+
var maskPattern = IMask.createMask({
|
|
199
|
+
mask: mask,
|
|
200
|
+
definitions: getDefinitions(formatChars),
|
|
201
|
+
lazy: false,
|
|
202
|
+
placeholderChar: getMaskChar(maskChar)
|
|
203
|
+
});
|
|
204
|
+
return maskPattern.appendTail('').inserted;
|
|
205
|
+
}
|
|
206
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MaskedInputElement.tsx"],"names":["React","useContext","useEffect","useImperativeHandle","useRef","useState","IMaskInput","IMask","ThemeContext","MaskCharLowLine","cx","forwardRefAndName","styles","getCurrentValue","getDefinitions","getFocusPrefix","getMaskChar","MaskedInputElementDataTids","root","MaskedInputElement","props","ref","value","getValue","originValue","values","setValues","emptyValue","setEmptyValue","focused","setFocused","inputRef","rootNodeRef","theme","expectedChangesRef","isFirstRender","input","current","getRootNode","getEmptyValue","mask","maskChar","formatChars","toString","alwaysShowMask","maxLength","onUnexpectedInput","defaultValue","style","inputProps","leftClass","textAlign","inputMaskLeft","currentValue","left","right","rightHelper","split","map","_char","i","leftHelper","color","isMaskVisible","container","handleAccept","handleInput","handleFocus","handleBlur","inputMask","setTimeout","e","target","handleUnexpectedInput","event","onFocus","onBlur","maskPattern","createMask","definitions","lazy","placeholderChar","appendTail","inserted"],"mappings":"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","sourcesContent":["import React, { ForwardedRef, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { IMaskInput, IMask } from 'react-imask';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MaskCharLowLine } from '../MaskCharLowLine';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InputElement, InputElementProps } from '../../components/Input';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './MaskedInputElement.styles';\nimport { getCurrentValue, getDefinitions, getFocusPrefix, getMaskChar } from './MaskedInputElement.helpers';\n\nexport interface MaskedInputElementProps extends InputElementProps {\n mask: string;\n maskChar?: string | null;\n formatChars?: { [key: string]: string };\n alwaysShowMask?: boolean;\n onUnexpectedInput: (value: string) => void;\n}\n\nexport const MaskedInputElementDataTids = {\n root: 'MaskedInput__root',\n} as const;\n\nexport const MaskedInputElement = forwardRefAndName(\n 'MaskedInputElement',\n function MaskedInputElement(props: MaskedInputElementProps, ref: ForwardedRef<InputElement>) {\n const [values, setValues] = useState<{ value: string; originValue: string }>(() => {\n const value = getValue(props);\n return { value, originValue: value };\n });\n const { value, originValue } = values;\n\n const [emptyValue, setEmptyValue] = useState('');\n const [focused, setFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const rootNodeRef = React.useRef<HTMLDivElement>(null);\n const theme = useContext(ThemeContext);\n const expectedChangesRef = useRef(false);\n const isFirstRender = useRef(true);\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => rootNodeRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n setEmptyValue(getEmptyValue(props.mask, props.maskChar, props.formatChars));\n }, [props.mask, props.maskChar]);\n\n useEffect(() => {\n if (isFirstRender.current) {\n return;\n }\n\n const value = props.value ? props.value.toString() : '';\n setValues((values) => ({ ...values, value }));\n }, [props.value]);\n\n useEffect(() => {\n isFirstRender.current = false;\n }, []);\n\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask,\n maxLength,\n onUnexpectedInput,\n defaultValue,\n style,\n ...inputProps\n } = props;\n\n const leftClass = style?.textAlign !== 'right' && styles.inputMaskLeft();\n const [currentValue, left, right] = getCurrentValue({ value, originValue, emptyValue }, focused, maskChar);\n\n /* В rightHelper не DEFAULT_MASK_CHAR, а специальная логика для обработки подчркивания('_').\n * Не менять на DEFAULT_MASK_CHAR\n */\n const rightHelper = right.split('').map((_char, i) => (_char === '_' ? <MaskCharLowLine key={i} /> : _char));\n const leftHelper = style?.textAlign !== 'right' && <span style={{ color: 'transparent' }}>{left}</span>;\n const isMaskVisible = alwaysShowMask || focused;\n\n return (\n <span\n data-tid={MaskedInputElementDataTids.root}\n ref={rootNodeRef}\n className={styles.container()}\n x-ms-format-detection=\"none\"\n >\n <IMaskInput\n {...inputProps}\n mask={mask}\n definitions={getDefinitions(formatChars)}\n eager\n overwrite={'shift'}\n onAccept={handleAccept}\n onInput={handleInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n value={currentValue}\n inputRef={inputRef}\n style={{ ...style }}\n />\n {isMaskVisible && (\n <span className={cx(styles.inputMask(theme), leftClass)}>\n {leftHelper}\n {rightHelper}\n </span>\n )}\n </span>\n );\n\n function getValue(props: MaskedInputElementProps): string {\n return (props.value ?? props.defaultValue ?? '').toString();\n }\n\n /** В imask вызывается только когда значение с маской меняется*/\n function handleAccept(value: string) {\n expectedChangesRef.current = true;\n // Если разделить на 2 setState - между первым и вторым происходит рендер и иногда символы \"съедаются\"\n setValues({ value, originValue: value });\n\n setTimeout(() => {\n /** При вводе с клавиатуры срабатывает handleAccept, за ним handleInput\n * expectedChanges - нужен чтобы сообщить из handleAccept в handleInput, что значение с маской изменилось.\n * Если маска не изменилась и сработал handleInput, вызываем handleUnexpectedInput. Ввели значение не по маске.\n * setTimeout нужен чтобы сбросить expectedChanges, например, если изменилось значение в пропах.\n * Маска изменится, вызовется handleAccept, но не handleInput\n */\n expectedChangesRef.current = false;\n });\n }\n\n /** Отслеживаем неправильные нажатия,\n * handleAccept не вызывается когда значение с маской не меняется, а handleInput вызывается\n * Сначала вызывается handleAccept, затем handleInput\n * */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const value = e.target.value;\n\n if (!expectedChangesRef.current && value === originValue) {\n handleUnexpectedInput();\n }\n\n expectedChangesRef.current = false;\n }\n\n function handleFocus(event: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n\n expectedChangesRef.current = false;\n\n if (props.onFocus) {\n props.onFocus(event);\n }\n }\n\n function handleBlur(event: React.FocusEvent<HTMLInputElement>) {\n if (value === getFocusPrefix(emptyValue, maskChar)) {\n setValues({ value: '', originValue: '' });\n }\n\n setFocused(false);\n\n if (props.onBlur) {\n props.onBlur(event);\n }\n }\n\n function handleUnexpectedInput() {\n if (props.onUnexpectedInput) {\n props.onUnexpectedInput(value);\n }\n }\n\n function getEmptyValue(\n mask: MaskedInputElementProps['mask'],\n maskChar: MaskedInputElementProps['maskChar'],\n formatChars: MaskedInputElementProps['formatChars'],\n ): string {\n const maskPattern = IMask.createMask({\n mask,\n definitions: getDefinitions(formatChars),\n lazy: false,\n placeholderChar: getMaskChar(maskChar),\n });\n return maskPattern.appendTail('').inserted;\n }\n },\n);\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InputElement, InputElementProps } from '../../components/Input';
|
|
2
|
+
export interface MaskedInputElementProps extends InputElementProps {
|
|
3
|
+
mask: string;
|
|
4
|
+
maskChar?: string | null;
|
|
5
|
+
formatChars?: {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
};
|
|
8
|
+
alwaysShowMask?: boolean;
|
|
9
|
+
onUnexpectedInput: (value: string) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const MaskedInputElementDataTids: {
|
|
12
|
+
readonly root: "MaskedInput__root";
|
|
13
|
+
};
|
|
14
|
+
export declare const MaskedInputElement: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<InputElement, MaskedInputElementProps> & Record<never, never>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { isNonNullable } from "../../../lib/utils";
|
|
2
|
+
export var DEFAULT_MASK_CHAR = '_';
|
|
3
|
+
export var DEFINITIONS = {
|
|
4
|
+
'9': /[0-9]/,
|
|
5
|
+
a: /[A-Za-z]/,
|
|
6
|
+
'*': /[A-Za-z0-9]/
|
|
7
|
+
};
|
|
8
|
+
export function getDefinitions(formatChars) {
|
|
9
|
+
if (isNonNullable(formatChars)) {
|
|
10
|
+
var chars = {};
|
|
11
|
+
|
|
12
|
+
for (var key in formatChars) {
|
|
13
|
+
chars[key] = new RegExp(formatChars[key]);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return chars;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return DEFINITIONS;
|
|
20
|
+
}
|
|
21
|
+
export function getMaskChar(maskChar) {
|
|
22
|
+
if (maskChar === null) {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return maskChar === undefined ? DEFAULT_MASK_CHAR : maskChar;
|
|
27
|
+
}
|
|
28
|
+
export function getFocusPrefix(emptyValue, maskChar) {
|
|
29
|
+
return emptyValue.slice(0, emptyValue.indexOf(getMaskChar(maskChar)));
|
|
30
|
+
}
|
|
31
|
+
export function getCurrentValue(values, focused, maskChar) {
|
|
32
|
+
var emptyValue = values.emptyValue,
|
|
33
|
+
value = values.value,
|
|
34
|
+
originValue = values.originValue;
|
|
35
|
+
|
|
36
|
+
if (focused && originValue.length === 0 && emptyValue.length > 0) {
|
|
37
|
+
var _currentValue = getFocusPrefix(emptyValue, maskChar);
|
|
38
|
+
|
|
39
|
+
return [_currentValue, _currentValue, emptyValue.slice(_currentValue.length)];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return [value, originValue, emptyValue.slice(originValue.length)];
|
|
43
|
+
}
|
package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MaskedInputElement.helpers.ts"],"names":["isNonNullable","DEFAULT_MASK_CHAR","DEFINITIONS","a","getDefinitions","formatChars","chars","key","RegExp","getMaskChar","maskChar","undefined","getFocusPrefix","emptyValue","slice","indexOf","getCurrentValue","values","focused","value","originValue","length","currentValue"],"mappings":"AAAA,SAASA,aAAT,QAA8B,iBAA9B;;AAEA,OAAO,IAAMC,iBAAiB,GAAG,GAA1B;AACP,OAAO,IAAMC,WAAW,GAAG,EAAE,KAAK,OAAP,EAAgBC,CAAC,EAAE,UAAnB,EAA+B,KAAK,aAApC,EAApB;;AAEP,OAAO,SAASC,cAAT,CAAwBC,WAAxB,EAAiG;AACtG,MAAIL,aAAa,CAACK,WAAD,CAAjB,EAAgC;AAC9B,QAAMC,KAA6B,GAAG,EAAtC;;AAEA,SAAK,IAAMC,GAAX,IAAkBF,WAAlB,EAA+B;AAC7BC,MAAAA,KAAK,CAACC,GAAD,CAAL,GAAa,IAAIC,MAAJ,CAAWH,WAAW,CAACE,GAAD,CAAtB,CAAb;AACD;;AAED,WAAOD,KAAP;AACD;;AAED,SAAOJ,WAAP;AACD;;AAED,OAAO,SAASO,WAAT,CAAqBC,QAArB,EAAkE;AACvE,MAAIA,QAAQ,KAAK,IAAjB,EAAuB;AACrB,WAAO,EAAP;AACD;;AAED,SAAOA,QAAQ,KAAKC,SAAb,GAAyBV,iBAAzB,GAA6CS,QAApD;AACD;;;;;;;;;AASD,OAAO,SAASE,cAAT,CAAwBC,UAAxB,EAA4CH,QAA5C,EAAyF;AAC9F,SAAOG,UAAU,CAACC,KAAX,CAAiB,CAAjB,EAAoBD,UAAU,CAACE,OAAX,CAAmBN,WAAW,CAACC,QAAD,CAA9B,CAApB,CAAP;AACD;;AAED,OAAO,SAASM,eAAT;AACLC,MADK;AAELC,OAFK;AAGLR,QAHK;AAIgD;AACrD,MAAQG,UAAR,GAA2CI,MAA3C,CAAQJ,UAAR,CAAoBM,KAApB,GAA2CF,MAA3C,CAAoBE,KAApB,CAA2BC,WAA3B,GAA2CH,MAA3C,CAA2BG,WAA3B;;AAEA,MAAIF,OAAO,IAAIE,WAAW,CAACC,MAAZ,KAAuB,CAAlC,IAAuCR,UAAU,CAACQ,MAAX,GAAoB,CAA/D,EAAkE;AAChE,QAAMC,aAAY,GAAGV,cAAc,CAACC,UAAD,EAAaH,QAAb,CAAnC;AACA,WAAO,CAACY,aAAD,EAAeA,aAAf,EAA6BT,UAAU,CAACC,KAAX,CAAiBQ,aAAY,CAACD,MAA9B,CAA7B,CAAP;AACD;;AAED,SAAO,CAACF,KAAD,EAAQC,WAAR,EAAqBP,UAAU,CAACC,KAAX,CAAiBM,WAAW,CAACC,MAA7B,CAArB,CAAP;AACD","sourcesContent":["import { isNonNullable } from '../../lib/utils';\n\nexport const DEFAULT_MASK_CHAR = '_';\nexport const DEFINITIONS = { '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ };\n\nexport function getDefinitions(formatChars: Record<string, string> | undefined): Record<string, RegExp> {\n if (isNonNullable(formatChars)) {\n const chars: Record<string, RegExp> = {};\n\n for (const key in formatChars) {\n chars[key] = new RegExp(formatChars[key]);\n }\n\n return chars;\n }\n\n return DEFINITIONS;\n}\n\nexport function getMaskChar(maskChar: string | null | undefined): string {\n if (maskChar === null) {\n return '';\n }\n\n return maskChar === undefined ? DEFAULT_MASK_CHAR : maskChar;\n}\n\ninterface MaskedInputValues {\n // Users can unmask value themselves. In these cases we take origin value length\n originValue: string;\n value: string;\n emptyValue: string;\n}\n\nexport function getFocusPrefix(emptyValue: string, maskChar: string | null | undefined): string {\n return emptyValue.slice(0, emptyValue.indexOf(getMaskChar(maskChar)));\n}\n\nexport function getCurrentValue(\n values: MaskedInputValues,\n focused: boolean,\n maskChar: string | null | undefined,\n): [currentValue: string, left: string, right: string] {\n const { emptyValue, value, originValue } = values;\n\n if (focused && originValue.length === 0 && emptyValue.length > 0) {\n const currentValue = getFocusPrefix(emptyValue, maskChar);\n return [currentValue, currentValue, emptyValue.slice(currentValue.length)];\n }\n\n return [value, originValue, emptyValue.slice(originValue.length)];\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const DEFAULT_MASK_CHAR = "_";
|
|
2
|
+
export declare const DEFINITIONS: {
|
|
3
|
+
'9': RegExp;
|
|
4
|
+
a: RegExp;
|
|
5
|
+
'*': RegExp;
|
|
6
|
+
};
|
|
7
|
+
export declare function getDefinitions(formatChars: Record<string, string> | undefined): Record<string, RegExp>;
|
|
8
|
+
export declare function getMaskChar(maskChar: string | null | undefined): string;
|
|
9
|
+
interface MaskedInputValues {
|
|
10
|
+
originValue: string;
|
|
11
|
+
value: string;
|
|
12
|
+
emptyValue: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function getFocusPrefix(emptyValue: string, maskChar: string | null | undefined): string;
|
|
15
|
+
export declare function getCurrentValue(values: MaskedInputValues, focused: boolean, maskChar: string | null | undefined): [currentValue: string, left: string, right: string];
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
|
+
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
4
|
+
|
|
5
|
+
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
6
|
+
export var styles = memoizeStyle({
|
|
7
|
+
container: function container() {
|
|
8
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n position: relative;\n font-size: inherit;\n flex: 100% 1 1;\n "])));
|
|
9
|
+
},
|
|
10
|
+
inputMask: function inputMask(t) {
|
|
11
|
+
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n color: ", ";\n pointer-events: none;\n font-size: inherit;\n z-index: 5;\n user-select: none;\n "])), t.placeholderColor);
|
|
12
|
+
},
|
|
13
|
+
inputMaskLeft: function inputMaskLeft() {
|
|
14
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n "])));
|
|
15
|
+
}
|
|
16
|
+
});
|
package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MaskedInputElement.styles.ts"],"names":["css","memoizeStyle","styles","container","inputMask","t","placeholderColor","inputMaskLeft"],"mappings":"wJAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,SADiC,uBACrB;AACV,WAAOH,GAAP;;;;;;AAMD,GARgC;AASjCI,EAAAA,SATiC,qBASvBC,CATuB,EASb;AAClB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACC,gBADb;;;;;;AAOD,GAjBgC;AAkBjCC,EAAAA,aAlBiC,2BAkBjB;AACd,WAAOP,GAAP;;;;;;AAMD,GAzBgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n container() {\n return css`\n display: inline-flex;\n position: relative;\n font-size: inherit;\n flex: 100% 1 1;\n `;\n },\n inputMask(t: Theme) {\n return css`\n color: ${t.placeholderColor};\n pointer-events: none;\n font-size: inherit;\n z-index: 5;\n user-select: none;\n `;\n },\n inputMaskLeft() {\n return css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n `;\n },\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../MaskedInputElement";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAd","sourcesContent":["export * from './MaskedInputElement';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MaskedInputElement';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
### Таблица переменных
|
|
2
|
-
|
|
3
|
-
Список использующихся переменных для каждого кастомизируемого компонента.
|
|
4
|
-
<br/>
|
|
5
|
-
Таблица фильтруется по названию переменной.
|
|
6
|
-
<br/>
|
|
7
|
-
Значения в колонке `Variable name` кликабельны.
|
|
8
|
-
|
|
9
|
-
```jsx harmony
|
|
10
|
-
import { ThemeShowcase } from '@skbkontur/react-ui/internal/ThemeShowcase/ThemeShowcase';
|
|
11
|
-
|
|
12
|
-
<ThemeShowcase />;
|
|
13
|
-
```
|
|
1
|
+
### Таблица переменных
|
|
2
|
+
|
|
3
|
+
Список использующихся переменных для каждого кастомизируемого компонента.
|
|
4
|
+
<br/>
|
|
5
|
+
Таблица фильтруется по названию переменной.
|
|
6
|
+
<br/>
|
|
7
|
+
Значения в колонке `Variable name` кликабельны.
|
|
8
|
+
|
|
9
|
+
```jsx harmony
|
|
10
|
+
import { ThemeShowcase } from '@skbkontur/react-ui/internal/ThemeShowcase/ThemeShowcase';
|
|
11
|
+
|
|
12
|
+
<ThemeShowcase />;
|
|
13
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MouseDrag.ts"],"names":["globalObject","MouseDragEventType","items","Map","documentHandleMouseUp","e","forEach","mouseDrag","handleMouseUp","document","documentElement","addEventListener","MouseDrag","elem","clicked","dragging","stop","removeEventListener","handleMouseDown","handleMouseMove","handleMouseLeave","onMouseDragStart","handler","on","Start","onMouseDragMove","Move","onMouseDragLeave","Leave","onMouseDragEnd","End","dispatchEvent","createEvent","type","x1","pageX","y1","pageY","mouseDragStartEvent","getLength","RADIUS","x2","y2","undefined","Math","sqrt","MouseEvent","eIE11","initEvent","mouseDragEvent","set","listen","has","get"],"mappings":"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","sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nenum MouseDragEventType {\n Start = 'mousedragstart',\n Move = 'mousedragmove',\n End = 'mousedragend',\n Leave = 'mousedragleave',\n}\n\ntype MouseDragEvent = MouseEvent;\n\ntype HandlerNative<E = MouseEvent> = (e: E) => void;\ntype Handler = (e: MouseDragEvent) => void;\ntype On = (handler: Handler) => MouseDrag;\nexport type MouseDragEventHandler = (e: MouseDragEvent) => void;\n\nconst items: Map<HTMLElement, MouseDrag> = new Map();\n\nconst documentHandleMouseUp: HandlerNative = (e) => items.forEach((mouseDrag) => mouseDrag.handleMouseUp(e));\n\nglobalObject.document?.documentElement.addEventListener('mouseup', documentHandleMouseUp);\n\n/**\n * ## Класс для отслеживания эффекта перетаскивания мышкой\n *\n * _Публичный метод `handleMouseUp` нельзя использовать!_\n *\n * ### Начало прослушивания и добавление обработчиков:\n * ```\n * MouseDrag.listen(HTMLElement_1)\n * .onMouseDragStart(start)\n * .onMouseDragMove(move)\n * .onMouseDragLeave(leave)\n * .onMouseDragEnd(end);\n *\n * - - ИЛИ - -\n *\n * const mouseDrag_1 = MouseDrag.listen(HTMLElement)...\n * ```\n *\n * ### Остановка прослушивания:\n * ```\n * MouseDrag.stop(HTMLElement_1)\n *\n * - - ИЛИ - -\n *\n * mouseDrag_1.stop();\n * ```\n */\nexport class MouseDrag {\n // Радиус окружности, который необходимо преодолеть мышью, чтобы вызвалось событие `MouseDragStart`\n public static readonly RADIUS: number = 5; // px\n\n public static listen = (elem: HTMLElement): MouseDrag => {\n if (items.has(elem)) {\n const mouseDrag = items.get(elem);\n if (mouseDrag) {\n return mouseDrag;\n }\n }\n return new MouseDrag(elem);\n };\n\n public static stop = (elem: HTMLElement | null): void => {\n if (elem && items.has(elem)) {\n const mouseDrag = items.get(elem);\n if (mouseDrag) {\n mouseDrag.stop();\n }\n }\n };\n\n public mouseDragStartEvent?: MouseDragEvent;\n private clicked = false;\n private dragging = false;\n\n private x1?: number;\n private y1?: number;\n\n private elem: HTMLElement | null;\n\n public constructor(elem: HTMLElement) {\n this.elem = elem;\n this.elem.addEventListener('mousedown', this.handleMouseDown);\n this.elem.addEventListener('mousemove', this.handleMouseMove);\n this.elem.addEventListener('mouseleave', this.handleMouseLeave);\n items.set(this.elem, this);\n }\n\n public stop = (): void => {\n if (this.elem !== null) {\n this.elem.removeEventListener('mousedown', this.handleMouseDown);\n this.elem.removeEventListener('mousemove', this.handleMouseMove);\n this.elem.removeEventListener('mouseleave', this.handleMouseLeave);\n items.delete(this.elem);\n }\n this.elem = null;\n };\n\n public onMouseDragStart: On = (handler) => this.on(MouseDragEventType.Start, handler);\n public onMouseDragMove: On = (handler) => this.on(MouseDragEventType.Move, handler);\n public onMouseDragLeave: On = (handler) => this.on(MouseDragEventType.Leave, handler);\n public onMouseDragEnd: On = (handler) => this.on(MouseDragEventType.End, handler);\n\n public handleMouseUp: HandlerNative = (e) => {\n this.clicked = false;\n if (this.dragging) {\n this.dragging = false;\n this.dispatchEvent(this.createEvent(MouseDragEventType.End, e));\n }\n };\n\n private on = (type: MouseDragEventType, handler: Handler): MouseDrag => {\n if (this.elem !== null) {\n this.elem.removeEventListener(type, handler as HandlerNative<Event>);\n this.elem.addEventListener(type, handler as HandlerNative<Event>);\n }\n return this;\n };\n\n private handleMouseDown: HandlerNative = (e) => {\n if (!this.clicked) {\n this.clicked = true;\n this.x1 = e.pageX;\n this.y1 = e.pageY;\n this.mouseDragStartEvent = this.createEvent(MouseDragEventType.Start, e);\n }\n };\n\n private handleMouseMove: HandlerNative = (e) => {\n if (this.dragging) {\n return this.dispatchEvent(this.createEvent(MouseDragEventType.Move, e));\n }\n if (this.clicked && this.getLength(e.pageX, e.pageY) > MouseDrag.RADIUS) {\n this.dragging = true;\n this.clicked = false;\n if (this.mouseDragStartEvent) {\n this.dispatchEvent(this.mouseDragStartEvent);\n }\n }\n };\n\n private handleMouseLeave: HandlerNative = (e) => {\n if (this.dragging) {\n this.dispatchEvent(this.createEvent(MouseDragEventType.Leave, e));\n }\n };\n\n private getLength = (x2: number, y2: number): number => {\n if (this.x1 !== undefined && this.y1 !== undefined) {\n return Math.sqrt((x2 - this.x1) ** 2 + (y2 - this.y1) ** 2);\n }\n\n return 0;\n };\n\n private createEvent = (type: MouseDragEventType, e: MouseEvent): MouseDragEvent | undefined => {\n if (typeof globalObject.MouseEvent === 'function') {\n return new globalObject.MouseEvent(type, e);\n }\n // <=IE11\n const eIE11 = globalObject.document?.createEvent('MouseEvent');\n if (eIE11) {\n eIE11.initEvent(type, true, true);\n return eIE11;\n }\n };\n\n private dispatchEvent = (mouseDragEvent?: MouseDragEvent): void => {\n if (mouseDragEvent && this.elem !== null) {\n this.elem.dispatchEvent(mouseDragEvent);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["MouseDrag.ts"],"names":["globalObject","MouseDragEventType","items","Map","documentHandleMouseUp","e","forEach","mouseDrag","handleMouseUp","document","documentElement","addEventListener","MouseDrag","elem","clicked","dragging","stop","removeEventListener","handleMouseDown","handleMouseMove","handleMouseLeave","onMouseDragStart","handler","on","Start","onMouseDragMove","Move","onMouseDragLeave","Leave","onMouseDragEnd","End","dispatchEvent","createEvent","type","x1","pageX","y1","pageY","mouseDragStartEvent","getLength","RADIUS","x2","y2","undefined","Math","sqrt","MouseEvent","eIE11","initEvent","mouseDragEvent","set","listen","has","get"],"mappings":"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","sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nenum MouseDragEventType {\n Start = 'mousedragstart',\n Move = 'mousedragmove',\n End = 'mousedragend',\n Leave = 'mousedragleave',\n}\n\ntype MouseDragEvent = MouseEvent;\n\ntype HandlerNative<E = MouseEvent> = (e: E) => void;\ntype Handler = (e: MouseDragEvent) => void;\ntype On = (handler: Handler) => MouseDrag;\nexport type MouseDragEventHandler = (e: MouseDragEvent) => void;\n\nconst items: Map<HTMLElement, MouseDrag> = new Map();\n\nconst documentHandleMouseUp: HandlerNative = (e) => items.forEach((mouseDrag) => mouseDrag.handleMouseUp(e));\n\nglobalObject.document?.documentElement.addEventListener('mouseup', documentHandleMouseUp);\n\n/**\n * ## Класс для отслеживания эффекта перетаскивания мышкой\n *\n * _Публичный метод `handleMouseUp` нельзя использовать!_\n *\n * ### Начало прослушивания и добавление обработчиков:\n * ```\n * MouseDrag.listen(HTMLElement_1)\n * .onMouseDragStart(start)\n * .onMouseDragMove(move)\n * .onMouseDragLeave(leave)\n * .onMouseDragEnd(end);\n *\n * - - ИЛИ - -\n *\n * const mouseDrag_1 = MouseDrag.listen(HTMLElement)...\n * ```\n *\n * ### Остановка прослушивания:\n * ```\n * MouseDrag.stop(HTMLElement_1)\n *\n * - - ИЛИ - -\n *\n * mouseDrag_1.stop();\n * ```\n */\nexport class MouseDrag {\n // Радиус окружности, который необходимо преодолеть мышью, чтобы вызвалось событие `MouseDragStart`\n public static readonly RADIUS: number = 5; // px\n\n public static listen = (elem: HTMLElement): MouseDrag => {\n if (items.has(elem)) {\n const mouseDrag = items.get(elem);\n if (mouseDrag) {\n return mouseDrag;\n }\n }\n return new MouseDrag(elem);\n };\n\n public static stop = (elem: HTMLElement | null): void => {\n if (elem && items.has(elem)) {\n const mouseDrag = items.get(elem);\n if (mouseDrag) {\n mouseDrag.stop();\n }\n }\n };\n\n private mouseDragStartEvent?: MouseDragEvent;\n private clicked = false;\n private dragging = false;\n\n private x1?: number;\n private y1?: number;\n\n private elem: HTMLElement | null;\n\n public constructor(elem: HTMLElement) {\n this.elem = elem;\n this.elem.addEventListener('mousedown', this.handleMouseDown);\n this.elem.addEventListener('mousemove', this.handleMouseMove);\n this.elem.addEventListener('mouseleave', this.handleMouseLeave);\n items.set(this.elem, this);\n }\n\n public stop = (): void => {\n if (this.elem !== null) {\n this.elem.removeEventListener('mousedown', this.handleMouseDown);\n this.elem.removeEventListener('mousemove', this.handleMouseMove);\n this.elem.removeEventListener('mouseleave', this.handleMouseLeave);\n items.delete(this.elem);\n }\n this.elem = null;\n };\n\n public onMouseDragStart: On = (handler) => this.on(MouseDragEventType.Start, handler);\n public onMouseDragMove: On = (handler) => this.on(MouseDragEventType.Move, handler);\n public onMouseDragLeave: On = (handler) => this.on(MouseDragEventType.Leave, handler);\n public onMouseDragEnd: On = (handler) => this.on(MouseDragEventType.End, handler);\n\n public handleMouseUp: HandlerNative = (e) => {\n this.clicked = false;\n if (this.dragging) {\n this.dragging = false;\n this.dispatchEvent(this.createEvent(MouseDragEventType.End, e));\n }\n };\n\n private on = (type: MouseDragEventType, handler: Handler): MouseDrag => {\n if (this.elem !== null) {\n this.elem.removeEventListener(type, handler as HandlerNative<Event>);\n this.elem.addEventListener(type, handler as HandlerNative<Event>);\n }\n return this;\n };\n\n private handleMouseDown: HandlerNative = (e) => {\n if (!this.clicked) {\n this.clicked = true;\n this.x1 = e.pageX;\n this.y1 = e.pageY;\n this.mouseDragStartEvent = this.createEvent(MouseDragEventType.Start, e);\n }\n };\n\n private handleMouseMove: HandlerNative = (e) => {\n if (this.dragging) {\n return this.dispatchEvent(this.createEvent(MouseDragEventType.Move, e));\n }\n if (this.clicked && this.getLength(e.pageX, e.pageY) > MouseDrag.RADIUS) {\n this.dragging = true;\n this.clicked = false;\n if (this.mouseDragStartEvent) {\n this.dispatchEvent(this.mouseDragStartEvent);\n }\n }\n };\n\n private handleMouseLeave: HandlerNative = (e) => {\n if (this.dragging) {\n this.dispatchEvent(this.createEvent(MouseDragEventType.Leave, e));\n }\n };\n\n private getLength = (x2: number, y2: number): number => {\n if (this.x1 !== undefined && this.y1 !== undefined) {\n return Math.sqrt((x2 - this.x1) ** 2 + (y2 - this.y1) ** 2);\n }\n\n return 0;\n };\n\n private createEvent = (type: MouseDragEventType, e: MouseEvent): MouseDragEvent | undefined => {\n if (typeof globalObject.MouseEvent === 'function') {\n return new globalObject.MouseEvent(type, e);\n }\n // <=IE11\n const eIE11 = globalObject.document?.createEvent('MouseEvent');\n if (eIE11) {\n eIE11.initEvent(type, true, true);\n return eIE11;\n }\n };\n\n private dispatchEvent = (mouseDragEvent?: MouseDragEvent): void => {\n if (mouseDragEvent && this.elem !== null) {\n this.elem.dispatchEvent(mouseDragEvent);\n }\n };\n}\n"]}
|
|
@@ -34,7 +34,7 @@ export declare class MouseDrag {
|
|
|
34
34
|
static readonly RADIUS: number;
|
|
35
35
|
static listen: (elem: HTMLElement) => MouseDrag;
|
|
36
36
|
static stop: (elem: HTMLElement | null) => void;
|
|
37
|
-
mouseDragStartEvent
|
|
37
|
+
private mouseDragStartEvent?;
|
|
38
38
|
private clicked;
|
|
39
39
|
private dragging;
|
|
40
40
|
private x1?;
|
|
@@ -23,9 +23,6 @@ export var isShortcutCut = function isShortcutCut(e) {
|
|
|
23
23
|
export var isShortcutSelectAll = function isShortcutSelectAll(e) {
|
|
24
24
|
return (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;
|
|
25
25
|
};
|
|
26
|
-
export var isShortcutJumpCaret = function isShortcutJumpCaret(e) {
|
|
27
|
-
return (isMac ? e.altKey : e.ctrlKey) && isKeyArrowHorizontal(e);
|
|
28
|
-
};
|
|
29
26
|
export var isKeyEscape = function isKeyEscape(e) {
|
|
30
27
|
return e.key === 'Escape' || e.key === 'Esc';
|
|
31
28
|
};
|
|
@@ -143,16 +140,6 @@ export var isModShift = function isModShift(is) {
|
|
|
143
140
|
return e.shiftKey && (is ? is(e) : true);
|
|
144
141
|
};
|
|
145
142
|
};
|
|
146
|
-
export var isModCtrl = function isModCtrl(is) {
|
|
147
|
-
return function (e) {
|
|
148
|
-
return e.ctrlKey && (is ? is(e) : true);
|
|
149
|
-
};
|
|
150
|
-
};
|
|
151
|
-
export var isModAlt = function isModAlt(is) {
|
|
152
|
-
return function (e) {
|
|
153
|
-
return e.altKey && (is ? is(e) : true);
|
|
154
|
-
};
|
|
155
|
-
};
|
|
156
143
|
export var someKeys = function someKeys() {
|
|
157
144
|
for (var _len = arguments.length, iss = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
158
145
|
iss[_key] = arguments[_key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["identifiers.ts"],"names":["globalObject","isMac","isInstanceOf","extractCode","KeyboardEventCodes","Codes","getChar","e","KeyboardEvent","nativeEvent","isShortcutCopy","metaKey","ctrlKey","KeyC","isKeyInsert","key","isShortcutPaste","KeyV","shiftKey","isShortcutCut","KeyX","isKeyDelete","isShortcutSelectAll","KeyA","isShortcutJumpCaret","altKey","isKeyArrowHorizontal","isKeyEscape","isKeyHome","isKeyEnd","isKeyMeta","isKeyControl","isKeyShift","isKeyAlt","isKeyBackspace","isKeyCapsLock","isKeyTab","isKeyEnter","isKeyArrowUp","isKeyArrowRight","isKeyArrowDown","isKeyArrowLeft","isKeySpace","isKeyComma","isCodeMinus","Minus","isCodeNumpadDecimal","NumpadDecimal","isCodeNumpadDivide","NumpadDivide","isCodeNumpadSubtract","NumpadSubtract","isCodeSlash","Slash","isCodeBackslash","Backslash","isCodeIntlBackslash","IntlBackslash","isCodeComma","Comma","isCodePeriod","Period","isKeyArrowVertical","isKeyArrow","isKeyNumber","test","isKeyChar","trim","length","isKeyFs","isModified","is","isUnmodified","isModShift","isModCtrl","isModAlt","someKeys","iss","some"],"mappings":"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","sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nimport { isMac } from '../../client';\nimport { isInstanceOf } from '../../isInstanceOf';\n\nimport { extractCode } from './extractCode';\nimport { KeyboardEventCodes as Codes } from './KeyboardEventCodes';\n\ntype E = React.KeyboardEvent<HTMLElement> | KeyboardEvent;\ntype IS = (e: E) => boolean;\ntype ISMod = (is?: IS) => IS;\ntype ISSome = (...is: IS[]) => IS;\n\n// IE 9+ supports char attribute\n// https://developer.mozilla.org/ru/docs/Web/API/KeyboardEvent\nconst getChar = (e: E & { char?: string; nativeEvent?: { char?: string } }) =>\n isInstanceOf(e, globalObject.KeyboardEvent) ? e.char : e.nativeEvent?.char;\n\nexport const isShortcutCopy: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyC) ||\n (!isMac && e.ctrlKey && isKeyInsert(e)) ||\n e.key === 'Copy';\n\nexport const isShortcutPaste: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyV) ||\n (!isMac && e.shiftKey && isKeyInsert(e)) ||\n e.key === 'Paste';\n\nexport const isShortcutCut: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyX) ||\n (!isMac && e.shiftKey && isKeyDelete(e)) ||\n e.key === 'Cut';\n\nexport const isShortcutSelectAll: IS = (e) => (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;\n\nexport const isShortcutJumpCaret: IS = (e) => (isMac ? e.altKey : e.ctrlKey) && isKeyArrowHorizontal(e);\n\nexport const isKeyEscape: IS = (e) => e.key === 'Escape' || e.key === 'Esc';\nexport const isKeyHome: IS = (e) => e.key === 'Home';\nexport const isKeyEnd: IS = (e) => e.key === 'End';\nexport const isKeyMeta: IS = (e) => e.key === 'Meta' || e.key === 'Win';\nexport const isKeyControl: IS = (e) => e.key === 'Control';\nexport const isKeyShift: IS = (e) => e.key === 'Shift';\nexport const isKeyAlt: IS = (e) => e.key === 'Alt';\nexport const isKeyDelete: IS = (e) => e.key === 'Delete' || e.key === 'Del';\nexport const isKeyBackspace: IS = (e) => e.key === 'Backspace';\nexport const isKeyCapsLock: IS = (e) => e.key === 'CapsLock';\nexport const isKeyInsert: IS = (e) => e.key === 'Insert';\nexport const isKeyTab: IS = (e) => e.key === 'Tab';\nexport const isKeyEnter: IS = (e) => e.key === 'Enter';\nexport const isKeyArrowUp: IS = (e) => e.key === 'ArrowUp' || e.key === 'Up';\nexport const isKeyArrowRight: IS = (e) => e.key === 'ArrowRight' || e.key === 'Right';\nexport const isKeyArrowDown: IS = (e) => e.key === 'ArrowDown' || e.key === 'Down';\nexport const isKeyArrowLeft: IS = (e) => e.key === 'ArrowLeft' || e.key === 'Left';\nexport const isKeySpace: IS = (e) => e.key === ' ' || e.key === 'Spacebar';\nexport const isKeyComma: IS = (e) => e.key === ',' || getChar(e) === ',';\n\nexport const isCodeMinus: IS = (e) => extractCode(e) === Codes.Minus;\nexport const isCodeNumpadDecimal: IS = (e) => extractCode(e) === Codes.NumpadDecimal;\nexport const isCodeNumpadDivide: IS = (e) => extractCode(e) === Codes.NumpadDivide;\nexport const isCodeNumpadSubtract: IS = (e) => extractCode(e) === Codes.NumpadSubtract;\nexport const isCodeSlash: IS = (e) => extractCode(e) === Codes.Slash;\nexport const isCodeBackslash: IS = (e) => extractCode(e) === Codes.Backslash;\nexport const isCodeIntlBackslash: IS = (e) => extractCode(e) === Codes.IntlBackslash;\nexport const isCodeComma: IS = (e) => extractCode(e) === Codes.Comma;\nexport const isCodePeriod: IS = (e) => extractCode(e) === Codes.Period;\n\nexport const isKeyArrowHorizontal: IS = (e) => isKeyArrowRight(e) || isKeyArrowLeft(e);\nexport const isKeyArrowVertical: IS = (e) => isKeyArrowUp(e) || isKeyArrowDown(e);\nexport const isKeyArrow: IS = (e) => isKeyArrowHorizontal(e) || isKeyArrowVertical(e);\nexport const isKeyNumber: IS = (e) => /^\\d+$/.test(e.key);\nexport const isKeyChar: IS = (e) => e.key.trim().length === 1;\nexport const isKeyFs: IS = (e) => /^(?:F[1-9]|F1[0-2]|Soft[1-4])$/.test(e.key);\n\nexport const isModified: ISMod = (is) => (e) =>\n (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) && (is ? is(e) : true);\nexport const isUnmodified: ISMod = (is) => (e) => !isModified()(e) && (is ? is(e) : true);\nexport const isModShift: ISMod = (is) => (e) => e.shiftKey && (is ? is(e) : true);\nexport const isModCtrl: ISMod = (is) => (e) => e.ctrlKey && (is ? is(e) : true);\nexport const isModAlt: ISMod = (is) => (e) => e.altKey && (is ? is(e) : true);\n\nexport const someKeys: ISSome =\n (...iss) =>\n (e) =>\n iss.some((is) => is(e));\n"]}
|
|
1
|
+
{"version":3,"sources":["identifiers.ts"],"names":["globalObject","isMac","isInstanceOf","extractCode","KeyboardEventCodes","Codes","getChar","e","KeyboardEvent","nativeEvent","isShortcutCopy","metaKey","ctrlKey","KeyC","isKeyInsert","key","isShortcutPaste","KeyV","shiftKey","isShortcutCut","KeyX","isKeyDelete","isShortcutSelectAll","KeyA","isKeyEscape","isKeyHome","isKeyEnd","isKeyMeta","isKeyControl","isKeyShift","isKeyAlt","isKeyBackspace","isKeyCapsLock","isKeyTab","isKeyEnter","isKeyArrowUp","isKeyArrowRight","isKeyArrowDown","isKeyArrowLeft","isKeySpace","isKeyComma","isCodeMinus","Minus","isCodeNumpadDecimal","NumpadDecimal","isCodeNumpadDivide","NumpadDivide","isCodeNumpadSubtract","NumpadSubtract","isCodeSlash","Slash","isCodeBackslash","Backslash","isCodeIntlBackslash","IntlBackslash","isCodeComma","Comma","isCodePeriod","Period","isKeyArrowHorizontal","isKeyArrowVertical","isKeyArrow","isKeyNumber","test","isKeyChar","trim","length","isKeyFs","isModified","is","altKey","isUnmodified","isModShift","someKeys","iss","some"],"mappings":"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","sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nimport { isMac } from '../../client';\nimport { isInstanceOf } from '../../isInstanceOf';\n\nimport { extractCode } from './extractCode';\nimport { KeyboardEventCodes as Codes } from './KeyboardEventCodes';\n\ntype E = React.KeyboardEvent<HTMLElement> | KeyboardEvent;\ntype IS = (e: E) => boolean;\ntype ISMod = (is?: IS) => IS;\ntype ISSome = (...is: IS[]) => IS;\n\n// IE 9+ supports char attribute\n// https://developer.mozilla.org/ru/docs/Web/API/KeyboardEvent\nconst getChar = (e: E & { char?: string; nativeEvent?: { char?: string } }) =>\n isInstanceOf(e, globalObject.KeyboardEvent) ? e.char : e.nativeEvent?.char;\n\nexport const isShortcutCopy: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyC) ||\n (!isMac && e.ctrlKey && isKeyInsert(e)) ||\n e.key === 'Copy';\n\nexport const isShortcutPaste: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyV) ||\n (!isMac && e.shiftKey && isKeyInsert(e)) ||\n e.key === 'Paste';\n\nexport const isShortcutCut: IS = (e) =>\n ((isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyX) ||\n (!isMac && e.shiftKey && isKeyDelete(e)) ||\n e.key === 'Cut';\n\nexport const isShortcutSelectAll: IS = (e) => (isMac ? e.metaKey : e.ctrlKey) && extractCode(e) === Codes.KeyA;\n\nexport const isKeyEscape: IS = (e) => e.key === 'Escape' || e.key === 'Esc';\nexport const isKeyHome: IS = (e) => e.key === 'Home';\nexport const isKeyEnd: IS = (e) => e.key === 'End';\nexport const isKeyMeta: IS = (e) => e.key === 'Meta' || e.key === 'Win';\nexport const isKeyControl: IS = (e) => e.key === 'Control';\nexport const isKeyShift: IS = (e) => e.key === 'Shift';\nexport const isKeyAlt: IS = (e) => e.key === 'Alt';\nexport const isKeyDelete: IS = (e) => e.key === 'Delete' || e.key === 'Del';\nexport const isKeyBackspace: IS = (e) => e.key === 'Backspace';\nexport const isKeyCapsLock: IS = (e) => e.key === 'CapsLock';\nexport const isKeyInsert: IS = (e) => e.key === 'Insert';\nexport const isKeyTab: IS = (e) => e.key === 'Tab';\nexport const isKeyEnter: IS = (e) => e.key === 'Enter';\nexport const isKeyArrowUp: IS = (e) => e.key === 'ArrowUp' || e.key === 'Up';\nexport const isKeyArrowRight: IS = (e) => e.key === 'ArrowRight' || e.key === 'Right';\nexport const isKeyArrowDown: IS = (e) => e.key === 'ArrowDown' || e.key === 'Down';\nexport const isKeyArrowLeft: IS = (e) => e.key === 'ArrowLeft' || e.key === 'Left';\nexport const isKeySpace: IS = (e) => e.key === ' ' || e.key === 'Spacebar';\nexport const isKeyComma: IS = (e) => e.key === ',' || getChar(e) === ',';\n\nexport const isCodeMinus: IS = (e) => extractCode(e) === Codes.Minus;\nexport const isCodeNumpadDecimal: IS = (e) => extractCode(e) === Codes.NumpadDecimal;\nexport const isCodeNumpadDivide: IS = (e) => extractCode(e) === Codes.NumpadDivide;\nexport const isCodeNumpadSubtract: IS = (e) => extractCode(e) === Codes.NumpadSubtract;\nexport const isCodeSlash: IS = (e) => extractCode(e) === Codes.Slash;\nexport const isCodeBackslash: IS = (e) => extractCode(e) === Codes.Backslash;\nexport const isCodeIntlBackslash: IS = (e) => extractCode(e) === Codes.IntlBackslash;\nexport const isCodeComma: IS = (e) => extractCode(e) === Codes.Comma;\nexport const isCodePeriod: IS = (e) => extractCode(e) === Codes.Period;\n\nexport const isKeyArrowHorizontal: IS = (e) => isKeyArrowRight(e) || isKeyArrowLeft(e);\nexport const isKeyArrowVertical: IS = (e) => isKeyArrowUp(e) || isKeyArrowDown(e);\nexport const isKeyArrow: IS = (e) => isKeyArrowHorizontal(e) || isKeyArrowVertical(e);\nexport const isKeyNumber: IS = (e) => /^\\d+$/.test(e.key);\nexport const isKeyChar: IS = (e) => e.key.trim().length === 1;\nexport const isKeyFs: IS = (e) => /^(?:F[1-9]|F1[0-2]|Soft[1-4])$/.test(e.key);\n\nexport const isModified: ISMod = (is) => (e) =>\n (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) && (is ? is(e) : true);\nexport const isUnmodified: ISMod = (is) => (e) => !isModified()(e) && (is ? is(e) : true);\nexport const isModShift: ISMod = (is) => (e) => e.shiftKey && (is ? is(e) : true);\n\nexport const someKeys: ISSome =\n (...iss) =>\n (e) =>\n iss.some((is) => is(e));\n"]}
|
|
@@ -7,7 +7,6 @@ export declare const isShortcutCopy: IS;
|
|
|
7
7
|
export declare const isShortcutPaste: IS;
|
|
8
8
|
export declare const isShortcutCut: IS;
|
|
9
9
|
export declare const isShortcutSelectAll: IS;
|
|
10
|
-
export declare const isShortcutJumpCaret: IS;
|
|
11
10
|
export declare const isKeyEscape: IS;
|
|
12
11
|
export declare const isKeyHome: IS;
|
|
13
12
|
export declare const isKeyEnd: IS;
|
|
@@ -45,7 +44,5 @@ export declare const isKeyFs: IS;
|
|
|
45
44
|
export declare const isModified: ISMod;
|
|
46
45
|
export declare const isUnmodified: ISMod;
|
|
47
46
|
export declare const isModShift: ISMod;
|
|
48
|
-
export declare const isModCtrl: ISMod;
|
|
49
|
-
export declare const isModAlt: ISMod;
|
|
50
47
|
export declare const someKeys: ISSome;
|
|
51
48
|
export {};
|
|
@@ -6,4 +6,4 @@ import { injectGlobal } from "../../theming/Emotion";
|
|
|
6
6
|
import { isChrome } from "../../client"; // This is for screenshot tests
|
|
7
7
|
|
|
8
8
|
var Highlight = isChrome ? '#3390ff' : '#3399ff';
|
|
9
|
-
injectGlobal(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n *::selection {\n background-color: ", ";\n }\n input::selection,\n textarea::selection {\n color: white;\n
|
|
9
|
+
injectGlobal(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n *::selection {\n background-color: ", ";\n }\n input::selection,\n textarea::selection {\n color: white;\n }\n"])), Highlight);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["HoldSelectionColor.ts"],"names":["injectGlobal","isChrome","Highlight"],"mappings":"oHAAA,SAASA,YAAT,QAA6B,oBAA7B;AACA,SAASC,QAAT,QAAyB,WAAzB;;AAEA;AACA,IAAMC,SAAS,GAAGD,QAAQ,GAAG,SAAH,GAAe,SAAzC;;AAEAD,YAAY;;AAEYE,SAFZ,CAAZ","sourcesContent":["import { injectGlobal } from '../theming/Emotion';\nimport { isChrome } from '../client';\n\n// This is for screenshot tests\nconst Highlight = isChrome ? '#3390ff' : '#3399ff';\n\ninjectGlobal`\n *::selection {\n background-color: ${Highlight};\n }\n input::selection,\n textarea::selection {\n color: white;\n
|
|
1
|
+
{"version":3,"sources":["HoldSelectionColor.ts"],"names":["injectGlobal","isChrome","Highlight"],"mappings":"oHAAA,SAASA,YAAT,QAA6B,oBAA7B;AACA,SAASC,QAAT,QAAyB,WAAzB;;AAEA;AACA,IAAMC,SAAS,GAAGD,QAAQ,GAAG,SAAH,GAAe,SAAzC;;AAEAD,YAAY;;AAEYE,SAFZ,CAAZ","sourcesContent":["import { injectGlobal } from '../theming/Emotion';\nimport { isChrome } from '../client';\n\n// This is for screenshot tests\nconst Highlight = isChrome ? '#3390ff' : '#3399ff';\n\ninjectGlobal`\n *::selection {\n background-color: ${Highlight};\n }\n input::selection,\n textarea::selection {\n color: white;\n }\n`;\n"]}
|