siam-ui-utils 3.0.26 → 3.0.28

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 (35) hide show
  1. package/dist/_virtual/browser.js +8 -0
  2. package/dist/_virtual/browser.js.map +1 -0
  3. package/dist/_virtual/warning.js +8 -0
  4. package/dist/_virtual/warning.js.map +1 -0
  5. package/dist/custom-input/customInputMask/children-wrapper.js +12 -0
  6. package/dist/custom-input/customInputMask/children-wrapper.js.map +1 -0
  7. package/dist/custom-input/customInputMask/constants.js +19 -0
  8. package/dist/custom-input/customInputMask/constants.js.map +1 -0
  9. package/dist/custom-input/customInputMask/hooks.js +159 -0
  10. package/dist/custom-input/customInputMask/hooks.js.map +1 -0
  11. package/dist/custom-input/customInputMask/index.js +184 -0
  12. package/dist/custom-input/customInputMask/index.js.map +1 -0
  13. package/dist/custom-input/customInputMask/utils/defer.js +11 -0
  14. package/dist/custom-input/customInputMask/utils/defer.js.map +1 -0
  15. package/dist/custom-input/customInputMask/utils/helpers.js +42 -0
  16. package/dist/custom-input/customInputMask/utils/helpers.js.map +1 -0
  17. package/dist/custom-input/customInputMask/utils/input.js +25 -0
  18. package/dist/custom-input/customInputMask/utils/input.js.map +1 -0
  19. package/dist/custom-input/customInputMask/utils/mask.js +220 -0
  20. package/dist/custom-input/customInputMask/utils/mask.js.map +1 -0
  21. package/dist/custom-input/customInputMask/utils/parse-mask.js +72 -0
  22. package/dist/custom-input/customInputMask/utils/parse-mask.js.map +1 -0
  23. package/dist/custom-input/customInputMask/validate-props.js +35 -0
  24. package/dist/custom-input/customInputMask/validate-props.js.map +1 -0
  25. package/dist/custom-input/index.js +2 -0
  26. package/dist/custom-input/index.js.map +1 -1
  27. package/dist/dropzone-uploader/styled/index.js +2 -2
  28. package/dist/dropzone-uploader/styled/index.js.map +1 -1
  29. package/dist/node_modules/invariant/browser.js +39 -0
  30. package/dist/node_modules/invariant/browser.js.map +1 -0
  31. package/dist/node_modules/warning/warning.js +51 -0
  32. package/dist/node_modules/warning/warning.js.map +1 -0
  33. package/dist/select/multi-select/index.js +3 -2
  34. package/dist/select/multi-select/index.js.map +1 -1
  35. package/package.json +2 -1
@@ -0,0 +1,8 @@
1
+ import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
+ import { __require as requireBrowser } from "../node_modules/invariant/browser.js";
3
+ var browserExports = requireBrowser();
4
+ const invariant = /* @__PURE__ */ getDefaultExportFromCjs(browserExports);
5
+ export {
6
+ invariant as default
7
+ };
8
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,8 @@
1
+ import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
+ import { __require as requireWarning } from "../node_modules/warning/warning.js";
3
+ var warningExports = requireWarning();
4
+ const warning = /* @__PURE__ */ getDefaultExportFromCjs(warningExports);
5
+ export {
6
+ warning as default
7
+ };
8
+ //# sourceMappingURL=warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warning.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,12 @@
1
+ import React, { forwardRef } from "react";
2
+ const ChildrenWrapper = forwardRef((props, ref) => {
3
+ const child = React.Children.only(props.children);
4
+ return React.cloneElement(child, {
5
+ ...props,
6
+ ref
7
+ });
8
+ });
9
+ export {
10
+ ChildrenWrapper as default
11
+ };
12
+ //# sourceMappingURL=children-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"children-wrapper.js","sources":["../../../src/custom-input/customInputMask/children-wrapper.js"],"sourcesContent":["import React, { forwardRef } from \"react\";\r\n\r\nconst ChildrenWrapper = forwardRef((props, ref) => {\r\n const child = React.Children.only(props.children);\r\n\r\n return React.cloneElement(child, {\r\n ...props,\r\n ref\r\n });\r\n});\r\n\r\nexport default ChildrenWrapper;\r\n"],"names":[],"mappings":";AAEK,MAAC,kBAAkB,WAAW,CAAC,OAAO,QAAQ;AACjD,QAAM,QAAQ,MAAM,SAAS,KAAK,MAAM,QAAQ;AAEhD,SAAO,MAAM,aAAa,OAAO;AAAA,IAC/B,GAAG;AAAA,IACH;AAAA,EACJ,CAAG;AACH,CAAC;"}
@@ -0,0 +1,19 @@
1
+ const CONTROLLED_PROPS = [
2
+ "disabled",
3
+ "onBlur",
4
+ "onChange",
5
+ "onFocus",
6
+ "onMouseDown",
7
+ "readOnly",
8
+ "value"
9
+ ];
10
+ const defaultFormatChars = {
11
+ "9": /[0-9]/,
12
+ a: /[A-Za-z]/,
13
+ "*": /[A-Za-z0-9]/
14
+ };
15
+ export {
16
+ CONTROLLED_PROPS,
17
+ defaultFormatChars
18
+ };
19
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../src/custom-input/customInputMask/constants.js"],"sourcesContent":["export const CONTROLLED_PROPS = [\r\n \"disabled\",\r\n \"onBlur\",\r\n \"onChange\",\r\n \"onFocus\",\r\n \"onMouseDown\",\r\n \"readOnly\",\r\n \"value\"\r\n];\r\n\r\nexport const defaultFormatChars = {\r\n \"9\": /[0-9]/,\r\n a: /[A-Za-z]/,\r\n \"*\": /[A-Za-z0-9]/\r\n};\r\n"],"names":[],"mappings":"AAAY,MAAC,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEY,MAAC,qBAAqB;AAAA,EAChC,KAAK;AAAA,EACL,GAAG;AAAA,EACH,KAAK;AACP;"}
@@ -0,0 +1,159 @@
1
+ import { useRef, useEffect, useCallback, useLayoutEffect } from "react";
2
+ import { cancelDefer, defer } from "./utils/defer.js";
3
+ import { getInputSelection, isInputFocused, setInputSelection } from "./utils/input.js";
4
+ import { isDOMElement } from "./utils/helpers.js";
5
+ function useInputElement(inputRef) {
6
+ return useCallback(() => {
7
+ let input = inputRef.current;
8
+ const isDOMNode = typeof window !== "undefined" && isDOMElement(input);
9
+ if (!input || !isDOMNode) {
10
+ return null;
11
+ }
12
+ if (input.nodeName !== "INPUT") {
13
+ input = input.querySelector("input");
14
+ }
15
+ if (!input) {
16
+ throw new Error(
17
+ "react-input-mask: inputComponent doesn't contain input node"
18
+ );
19
+ }
20
+ return input;
21
+ }, [inputRef]);
22
+ }
23
+ function useDeferLoop(callback) {
24
+ const deferIdRef = useRef(null);
25
+ const runLoop = useCallback(() => {
26
+ if (deferIdRef.current !== null) {
27
+ return;
28
+ }
29
+ function loop() {
30
+ callback();
31
+ deferIdRef.current = defer(loop);
32
+ }
33
+ loop();
34
+ }, [callback]);
35
+ const stopLoop = useCallback(() => {
36
+ cancelDefer(deferIdRef.current);
37
+ deferIdRef.current = null;
38
+ }, []);
39
+ useEffect(() => {
40
+ if (deferIdRef.current) {
41
+ stopLoop();
42
+ runLoop();
43
+ }
44
+ }, [runLoop, stopLoop]);
45
+ useEffect(cancelDefer, []);
46
+ return [runLoop, stopLoop];
47
+ }
48
+ function useSelection(inputRef, isMasked) {
49
+ const selectionRef = useRef({ start: null, end: null });
50
+ const getInputElement = useInputElement(inputRef);
51
+ const getSelection = useCallback(() => {
52
+ const input = getInputElement();
53
+ return getInputSelection(input);
54
+ }, [getInputElement]);
55
+ const getLastSelection = useCallback(() => {
56
+ return selectionRef.current;
57
+ }, []);
58
+ const setSelection = useCallback(
59
+ (selection) => {
60
+ const input = getInputElement();
61
+ if (!input || !isInputFocused(input)) {
62
+ return;
63
+ }
64
+ setInputSelection(input, selection.start, selection.end);
65
+ selectionRef.current = getSelection();
66
+ },
67
+ [getInputElement, getSelection]
68
+ );
69
+ const selectionLoop = useCallback(() => {
70
+ selectionRef.current = getSelection();
71
+ }, [getSelection]);
72
+ const [runSelectionLoop, stopSelectionLoop] = useDeferLoop(selectionLoop);
73
+ useLayoutEffect(() => {
74
+ if (!isMasked) {
75
+ return;
76
+ }
77
+ const input = getInputElement();
78
+ input.addEventListener("focus", runSelectionLoop);
79
+ input.addEventListener("blur", stopSelectionLoop);
80
+ if (isInputFocused(input)) {
81
+ runSelectionLoop();
82
+ }
83
+ return () => {
84
+ input.removeEventListener("focus", runSelectionLoop);
85
+ input.removeEventListener("blur", stopSelectionLoop);
86
+ stopSelectionLoop();
87
+ };
88
+ });
89
+ return { getSelection, getLastSelection, setSelection };
90
+ }
91
+ function useValue(inputRef, initialValue) {
92
+ const getInputElement = useInputElement(inputRef);
93
+ const valueRef = useRef(initialValue);
94
+ const getValue = useCallback(() => {
95
+ const input = getInputElement();
96
+ return input.value;
97
+ }, [getInputElement]);
98
+ const getLastValue = useCallback(() => {
99
+ return valueRef.current;
100
+ }, []);
101
+ const setValue = useCallback(
102
+ (newValue) => {
103
+ valueRef.current = newValue;
104
+ const input = getInputElement();
105
+ if (input) {
106
+ input.value = newValue;
107
+ }
108
+ },
109
+ [getInputElement]
110
+ );
111
+ return {
112
+ getValue,
113
+ getLastValue,
114
+ setValue
115
+ };
116
+ }
117
+ function useInputState(initialValue, isMasked) {
118
+ const inputRef = useRef();
119
+ const { getSelection, getLastSelection, setSelection } = useSelection(
120
+ inputRef,
121
+ isMasked
122
+ );
123
+ const { getValue, getLastValue, setValue } = useValue(inputRef, initialValue);
124
+ function getLastInputState() {
125
+ return {
126
+ value: getLastValue(),
127
+ selection: getLastSelection()
128
+ };
129
+ }
130
+ function getInputState() {
131
+ return {
132
+ value: getValue(),
133
+ selection: getSelection()
134
+ };
135
+ }
136
+ function setInputState({ value, selection }) {
137
+ setValue(value);
138
+ setSelection(selection);
139
+ }
140
+ return {
141
+ inputRef,
142
+ getInputState,
143
+ getLastInputState,
144
+ setInputState
145
+ };
146
+ }
147
+ function usePrevious(value) {
148
+ const ref = useRef();
149
+ useEffect(() => {
150
+ ref.current = value;
151
+ });
152
+ return ref.current;
153
+ }
154
+ export {
155
+ useInputElement,
156
+ useInputState,
157
+ usePrevious
158
+ };
159
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../../src/custom-input/customInputMask/hooks.js"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useRef } from \"react\";\r\n\r\nimport { defer, cancelDefer } from \"./utils/defer\";\r\nimport {\r\n setInputSelection,\r\n getInputSelection,\r\n isInputFocused\r\n} from \"./utils/input\";\r\nimport { isDOMElement } from \"./utils/helpers\";\r\n\r\nexport function useInputElement(inputRef) {\r\n return useCallback(() => {\r\n let input = inputRef.current;\r\n const isDOMNode = typeof window !== \"undefined\" && isDOMElement(input);\r\n\r\n // workaround for react-test-renderer\r\n // https://github.com/sanniassin/react-input-mask/issues/147\r\n if (!input || !isDOMNode) {\r\n return null;\r\n }\r\n\r\n if (input.nodeName !== \"INPUT\") {\r\n input = input.querySelector(\"input\");\r\n }\r\n\r\n if (!input) {\r\n throw new Error(\r\n \"react-input-mask: inputComponent doesn't contain input node\"\r\n );\r\n }\r\n\r\n return input;\r\n }, [inputRef]);\r\n}\r\n\r\nfunction useDeferLoop(callback) {\r\n const deferIdRef = useRef(null);\r\n\r\n const runLoop = useCallback(() => {\r\n // If there are simulated focus events, runLoop could be\r\n // called multiple times without blur or re-render\r\n if (deferIdRef.current !== null) {\r\n return;\r\n }\r\n\r\n function loop() {\r\n callback();\r\n deferIdRef.current = defer(loop);\r\n }\r\n\r\n loop();\r\n }, [callback]);\r\n\r\n const stopLoop = useCallback(() => {\r\n cancelDefer(deferIdRef.current);\r\n deferIdRef.current = null;\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (deferIdRef.current) {\r\n stopLoop();\r\n runLoop();\r\n }\r\n }, [runLoop, stopLoop]);\r\n\r\n useEffect(cancelDefer, []);\r\n\r\n return [runLoop, stopLoop];\r\n}\r\n\r\nfunction useSelection(inputRef, isMasked) {\r\n const selectionRef = useRef({ start: null, end: null });\r\n const getInputElement = useInputElement(inputRef);\r\n\r\n const getSelection = useCallback(() => {\r\n const input = getInputElement();\r\n return getInputSelection(input);\r\n }, [getInputElement]);\r\n\r\n const getLastSelection = useCallback(() => {\r\n return selectionRef.current;\r\n }, []);\r\n\r\n const setSelection = useCallback(\r\n selection => {\r\n const input = getInputElement();\r\n\r\n // Don't change selection on unfocused input\r\n // because Safari sets focus on selection change (#154)\r\n if (!input || !isInputFocused(input)) {\r\n return;\r\n }\r\n\r\n setInputSelection(input, selection.start, selection.end);\r\n\r\n // Use actual selection in case the requested one was out of range\r\n selectionRef.current = getSelection();\r\n },\r\n [getInputElement, getSelection]\r\n );\r\n\r\n const selectionLoop = useCallback(() => {\r\n selectionRef.current = getSelection();\r\n }, [getSelection]);\r\n const [runSelectionLoop, stopSelectionLoop] = useDeferLoop(selectionLoop);\r\n\r\n useLayoutEffect(() => {\r\n if (!isMasked) {\r\n return;\r\n }\r\n\r\n const input = getInputElement();\r\n input.addEventListener(\"focus\", runSelectionLoop);\r\n input.addEventListener(\"blur\", stopSelectionLoop);\r\n\r\n if (isInputFocused(input)) {\r\n runSelectionLoop();\r\n }\r\n\r\n return () => {\r\n input.removeEventListener(\"focus\", runSelectionLoop);\r\n input.removeEventListener(\"blur\", stopSelectionLoop);\r\n\r\n stopSelectionLoop();\r\n };\r\n });\r\n\r\n return { getSelection, getLastSelection, setSelection };\r\n}\r\n\r\nfunction useValue(inputRef, initialValue) {\r\n const getInputElement = useInputElement(inputRef);\r\n const valueRef = useRef(initialValue);\r\n\r\n const getValue = useCallback(() => {\r\n const input = getInputElement();\r\n return input.value;\r\n }, [getInputElement]);\r\n\r\n const getLastValue = useCallback(() => {\r\n return valueRef.current;\r\n }, []);\r\n\r\n const setValue = useCallback(\r\n newValue => {\r\n valueRef.current = newValue;\r\n\r\n const input = getInputElement();\r\n if (input) {\r\n input.value = newValue;\r\n }\r\n },\r\n [getInputElement]\r\n );\r\n\r\n return {\r\n getValue,\r\n getLastValue,\r\n setValue\r\n };\r\n}\r\n\r\nexport function useInputState(initialValue, isMasked) {\r\n const inputRef = useRef();\r\n const { getSelection, getLastSelection, setSelection } = useSelection(\r\n inputRef,\r\n isMasked\r\n );\r\n const { getValue, getLastValue, setValue } = useValue(inputRef, initialValue);\r\n\r\n function getLastInputState() {\r\n return {\r\n value: getLastValue(),\r\n selection: getLastSelection()\r\n };\r\n }\r\n\r\n function getInputState() {\r\n return {\r\n value: getValue(),\r\n selection: getSelection()\r\n };\r\n }\r\n\r\n function setInputState({ value, selection }) {\r\n setValue(value);\r\n setSelection(selection);\r\n }\r\n\r\n return {\r\n inputRef,\r\n getInputState,\r\n getLastInputState,\r\n setInputState\r\n };\r\n}\r\n\r\nexport function usePrevious(value) {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n}"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef, useLayoutEffect } from "react";
3
+ import { usePrevious, useInputState, useInputElement } from "./hooks.js";
4
+ import { validateMaxLength, validateMaskPlaceholder, validateChildren } from "./validate-props.js";
5
+ import { defer } from "./utils/defer.js";
6
+ import { isInputFocused } from "./utils/input.js";
7
+ import { toString, getElementDocument, isFunction } from "./utils/helpers.js";
8
+ import MaskUtils from "./utils/mask.js";
9
+ import ChildrenWrapper from "./children-wrapper.js";
10
+ const CustomInputMask = forwardRef(function CustomInputMask2(props, forwardedRef) {
11
+ const {
12
+ alwaysShowMask,
13
+ children,
14
+ mask,
15
+ maskPlaceholder,
16
+ beforeMaskedStateChange,
17
+ ...restProps
18
+ } = props;
19
+ validateMaxLength(props);
20
+ validateMaskPlaceholder(props);
21
+ const maskUtils = new MaskUtils({ mask, maskPlaceholder });
22
+ const isMasked = !!mask;
23
+ const isEditable = !restProps.disabled && !restProps.readOnly;
24
+ const isControlled = props.value !== null && props.value !== void 0;
25
+ const previousIsMasked = usePrevious(isMasked);
26
+ const initialValue = toString(
27
+ (isControlled ? props.value : props.defaultValue) || ""
28
+ );
29
+ const {
30
+ inputRef,
31
+ getInputState,
32
+ setInputState,
33
+ getLastInputState
34
+ } = useInputState(initialValue, isMasked);
35
+ const getInputElement = useInputElement(inputRef);
36
+ function onChange(event) {
37
+ const currentState = getInputState();
38
+ const previousState = getLastInputState();
39
+ let newInputState = maskUtils.processChange(currentState, previousState);
40
+ if (beforeMaskedStateChange) {
41
+ newInputState = beforeMaskedStateChange({
42
+ currentState,
43
+ previousState,
44
+ nextState: newInputState
45
+ });
46
+ }
47
+ setInputState(newInputState);
48
+ props.onChange?.(event);
49
+ }
50
+ function onFocus(event) {
51
+ inputRef.current = event.target;
52
+ const currentValue = getInputState().value;
53
+ if (isMasked && !maskUtils.isValueFilled(currentValue)) {
54
+ let newValue = maskUtils.formatValue(currentValue);
55
+ let newSelection = maskUtils.getDefaultSelectionForValue(newValue);
56
+ let newInputState = { value: newValue, selection: newSelection };
57
+ if (beforeMaskedStateChange) {
58
+ newInputState = beforeMaskedStateChange({
59
+ currentState: getInputState(),
60
+ nextState: newInputState
61
+ });
62
+ }
63
+ setInputState(newInputState);
64
+ if (newValue !== currentValue) {
65
+ props.onChange?.(event);
66
+ }
67
+ defer(() => {
68
+ setInputState(getLastInputState());
69
+ });
70
+ }
71
+ props.onFocus?.(event);
72
+ }
73
+ function onBlur(event) {
74
+ const currentValue = getInputState().value;
75
+ const lastValue = getLastInputState().value;
76
+ if (isMasked && !alwaysShowMask && maskUtils.isValueEmpty(lastValue)) {
77
+ let newInputState = {
78
+ value: "",
79
+ selection: { start: null, end: null }
80
+ };
81
+ if (beforeMaskedStateChange) {
82
+ newInputState = beforeMaskedStateChange({
83
+ currentState: getInputState(),
84
+ nextState: newInputState
85
+ });
86
+ }
87
+ setInputState(newInputState);
88
+ if (newInputState.value !== currentValue) {
89
+ props.onChange?.(event);
90
+ }
91
+ }
92
+ props.onBlur?.(event);
93
+ }
94
+ function onMouseDown(event) {
95
+ const input = getInputElement();
96
+ const { value } = getInputState();
97
+ const inputDocument = getElementDocument(input);
98
+ if (!isInputFocused(input) && !maskUtils.isValueFilled(value)) {
99
+ const startX = event.clientX;
100
+ const startY = event.clientY;
101
+ const startTime = Date.now();
102
+ const onMouseUp = (e) => {
103
+ inputDocument.removeEventListener("mouseup", onMouseUp);
104
+ if (!isInputFocused(input)) return;
105
+ const deltaX = Math.abs(e.clientX - startX);
106
+ const deltaY = Math.abs(e.clientY - startY);
107
+ const timeDelta = Date.now() - startTime;
108
+ if (Math.max(deltaX, deltaY) <= 10 && timeDelta <= 200 || Math.max(deltaX, deltaY) <= 5 && timeDelta <= 300) {
109
+ const lastState2 = getLastInputState();
110
+ setInputState({
111
+ ...lastState2,
112
+ selection: maskUtils.getDefaultSelectionForValue(lastState2.value)
113
+ });
114
+ }
115
+ };
116
+ inputDocument.addEventListener("mouseup", onMouseUp);
117
+ }
118
+ props.onMouseDown?.(event);
119
+ }
120
+ if (isMasked && isControlled) {
121
+ const input = getInputElement();
122
+ const isFocused = input && isInputFocused(input);
123
+ let newValue = isFocused || alwaysShowMask || props.value ? maskUtils.formatValue(props.value) : props.value;
124
+ if (beforeMaskedStateChange) {
125
+ newValue = beforeMaskedStateChange({
126
+ nextState: { value: newValue, selection: { start: null, end: null } }
127
+ }).value;
128
+ }
129
+ setInputState({
130
+ ...getLastInputState(),
131
+ value: newValue
132
+ });
133
+ }
134
+ const lastState = getLastInputState();
135
+ useLayoutEffect(() => {
136
+ if (!isMasked) return;
137
+ const input = getInputElement();
138
+ const isFocused = isInputFocused(input);
139
+ const currentState = getInputState();
140
+ let newState = { ...currentState };
141
+ if (!isControlled) {
142
+ const formatted = maskUtils.formatValue(currentState.value);
143
+ const shouldShow = !maskUtils.isValueEmpty(formatted) || isFocused || alwaysShowMask;
144
+ newState.value = shouldShow ? formatted : "";
145
+ }
146
+ if (isFocused && !previousIsMasked) {
147
+ newState.selection = maskUtils.getDefaultSelectionForValue(newState.value);
148
+ }
149
+ if (beforeMaskedStateChange) {
150
+ newState = beforeMaskedStateChange({
151
+ currentState,
152
+ nextState: newState
153
+ });
154
+ }
155
+ setInputState(newState);
156
+ });
157
+ const inputProps = {
158
+ ...restProps,
159
+ onFocus,
160
+ onBlur,
161
+ onChange: isMasked && isEditable ? onChange : props.onChange,
162
+ onMouseDown: isMasked && isEditable ? onMouseDown : props.onMouseDown,
163
+ value: isMasked && isControlled ? lastState.value : props.value,
164
+ ref: (node) => {
165
+ inputRef.current = node;
166
+ if (isFunction(forwardedRef)) {
167
+ forwardedRef(node);
168
+ } else if (forwardedRef && typeof forwardedRef === "object") {
169
+ forwardedRef.current = node;
170
+ }
171
+ }
172
+ };
173
+ if (children) {
174
+ validateChildren(props, children);
175
+ return /* @__PURE__ */ jsx(ChildrenWrapper, { ...inputProps, children });
176
+ }
177
+ return /* @__PURE__ */ jsx("input", { ...inputProps });
178
+ });
179
+ CustomInputMask.displayName = "CustomInputMask";
180
+ export {
181
+ CustomInputMask,
182
+ CustomInputMask as default
183
+ };
184
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/custom-input/customInputMask/index.jsx"],"sourcesContent":["import React, { useLayoutEffect, forwardRef } from \"react\";\r\n\r\nimport { useInputState, useInputElement, usePrevious } from \"./hooks\";\r\nimport {\r\n validateMaxLength,\r\n validateChildren,\r\n validateMaskPlaceholder\r\n} from \"./validate-props\";\r\n\r\nimport { defer } from \"./utils/defer\";\r\nimport { isInputFocused } from \"./utils/input\";\r\nimport { isFunction, toString, getElementDocument } from \"./utils/helpers\";\r\nimport MaskUtils from \"./utils/mask\";\r\nimport ChildrenWrapper from \"./children-wrapper\";\r\n\r\nexport const CustomInputMask = forwardRef(function CustomInputMask(props, forwardedRef) {\r\n const {\r\n alwaysShowMask,\r\n children,\r\n mask,\r\n maskPlaceholder,\r\n beforeMaskedStateChange,\r\n ...restProps\r\n } = props;\r\n\r\n validateMaxLength(props);\r\n validateMaskPlaceholder(props);\r\n\r\n const maskUtils = new MaskUtils({ mask, maskPlaceholder });\r\n\r\n const isMasked = !!mask;\r\n const isEditable = !restProps.disabled && !restProps.readOnly;\r\n const isControlled = props.value !== null && props.value !== undefined;\r\n const previousIsMasked = usePrevious(isMasked);\r\n const initialValue = toString(\r\n (isControlled ? props.value : props.defaultValue) || \"\"\r\n );\r\n\r\n const {\r\n inputRef,\r\n getInputState,\r\n setInputState,\r\n getLastInputState\r\n } = useInputState(initialValue, isMasked);\r\n\r\n const getInputElement = useInputElement(inputRef);\r\n\r\n function onChange(event) {\r\n const currentState = getInputState();\r\n const previousState = getLastInputState();\r\n let newInputState = maskUtils.processChange(currentState, previousState);\r\n\r\n if (beforeMaskedStateChange) {\r\n newInputState = beforeMaskedStateChange({\r\n currentState,\r\n previousState,\r\n nextState: newInputState\r\n });\r\n }\r\n\r\n setInputState(newInputState);\r\n props.onChange?.(event);\r\n }\r\n\r\n function onFocus(event) {\r\n inputRef.current = event.target;\r\n\r\n const currentValue = getInputState().value;\r\n\r\n if (isMasked && !maskUtils.isValueFilled(currentValue)) {\r\n let newValue = maskUtils.formatValue(currentValue);\r\n let newSelection = maskUtils.getDefaultSelectionForValue(newValue);\r\n let newInputState = { value: newValue, selection: newSelection };\r\n\r\n if (beforeMaskedStateChange) {\r\n newInputState = beforeMaskedStateChange({\r\n currentState: getInputState(),\r\n nextState: newInputState\r\n });\r\n }\r\n\r\n setInputState(newInputState);\r\n\r\n if (newValue !== currentValue) {\r\n props.onChange?.(event);\r\n }\r\n\r\n defer(() => {\r\n setInputState(getLastInputState());\r\n });\r\n }\r\n\r\n props.onFocus?.(event);\r\n }\r\n\r\n function onBlur(event) {\r\n const currentValue = getInputState().value;\r\n const lastValue = getLastInputState().value;\r\n\r\n if (isMasked && !alwaysShowMask && maskUtils.isValueEmpty(lastValue)) {\r\n let newInputState = {\r\n value: \"\",\r\n selection: { start: null, end: null }\r\n };\r\n\r\n if (beforeMaskedStateChange) {\r\n newInputState = beforeMaskedStateChange({\r\n currentState: getInputState(),\r\n nextState: newInputState\r\n });\r\n }\r\n\r\n setInputState(newInputState);\r\n\r\n if (newInputState.value !== currentValue) {\r\n props.onChange?.(event);\r\n }\r\n }\r\n\r\n props.onBlur?.(event);\r\n }\r\n\r\n function onMouseDown(event) {\r\n const input = getInputElement();\r\n const { value } = getInputState();\r\n const inputDocument = getElementDocument(input);\r\n\r\n if (!isInputFocused(input) && !maskUtils.isValueFilled(value)) {\r\n const startX = event.clientX;\r\n const startY = event.clientY;\r\n const startTime = Date.now();\r\n\r\n const onMouseUp = e => {\r\n inputDocument.removeEventListener(\"mouseup\", onMouseUp);\r\n\r\n if (!isInputFocused(input)) return;\r\n\r\n const deltaX = Math.abs(e.clientX - startX);\r\n const deltaY = Math.abs(e.clientY - startY);\r\n const timeDelta = Date.now() - startTime;\r\n\r\n if (\r\n (Math.max(deltaX, deltaY) <= 10 && timeDelta <= 200) ||\r\n (Math.max(deltaX, deltaY) <= 5 && timeDelta <= 300)\r\n ) {\r\n const lastState = getLastInputState();\r\n setInputState({\r\n ...lastState,\r\n selection: maskUtils.getDefaultSelectionForValue(lastState.value)\r\n });\r\n }\r\n };\r\n\r\n inputDocument.addEventListener(\"mouseup\", onMouseUp);\r\n }\r\n\r\n props.onMouseDown?.(event);\r\n }\r\n\r\n if (isMasked && isControlled) {\r\n const input = getInputElement();\r\n const isFocused = input && isInputFocused(input);\r\n\r\n let newValue =\r\n isFocused || alwaysShowMask || props.value\r\n ? maskUtils.formatValue(props.value)\r\n : props.value;\r\n\r\n if (beforeMaskedStateChange) {\r\n newValue = beforeMaskedStateChange({\r\n nextState: { value: newValue, selection: { start: null, end: null } }\r\n }).value;\r\n }\r\n\r\n setInputState({\r\n ...getLastInputState(),\r\n value: newValue\r\n });\r\n }\r\n\r\n const lastState = getLastInputState();\r\n\r\n useLayoutEffect(() => {\r\n if (!isMasked) return;\r\n\r\n const input = getInputElement();\r\n const isFocused = isInputFocused(input);\r\n const currentState = getInputState();\r\n let newState = { ...currentState };\r\n\r\n if (!isControlled) {\r\n const formatted = maskUtils.formatValue(currentState.value);\r\n const shouldShow =\r\n !maskUtils.isValueEmpty(formatted) || isFocused || alwaysShowMask;\r\n\r\n newState.value = shouldShow ? formatted : \"\";\r\n }\r\n\r\n if (isFocused && !previousIsMasked) {\r\n newState.selection = maskUtils.getDefaultSelectionForValue(newState.value);\r\n }\r\n\r\n if (beforeMaskedStateChange) {\r\n newState = beforeMaskedStateChange({\r\n currentState,\r\n nextState: newState\r\n });\r\n }\r\n\r\n setInputState(newState);\r\n });\r\n\r\n const inputProps = {\r\n ...restProps,\r\n onFocus,\r\n onBlur,\r\n onChange: isMasked && isEditable ? onChange : props.onChange,\r\n onMouseDown: isMasked && isEditable ? onMouseDown : props.onMouseDown,\r\n value: isMasked && isControlled ? lastState.value : props.value,\r\n ref: node => {\r\n inputRef.current = node;\r\n\r\n if (isFunction(forwardedRef)) {\r\n forwardedRef(node);\r\n } else if (forwardedRef && typeof forwardedRef === \"object\") {\r\n forwardedRef.current = node;\r\n }\r\n }\r\n };\r\n\r\n if (children) {\r\n validateChildren(props, children);\r\n return <ChildrenWrapper {...inputProps}>{children}</ChildrenWrapper>;\r\n }\r\n\r\n return <input {...inputProps} />;\r\n});\r\n\r\nCustomInputMask.displayName = \"CustomInputMask\";\r\nexport default CustomInputMask;\r\n"],"names":["CustomInputMask","lastState"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ function defer(fn) {
2
+ return requestAnimationFrame(fn);
3
+ }
4
+ function cancelDefer(deferId) {
5
+ cancelAnimationFrame(deferId);
6
+ }
7
+ export {
8
+ cancelDefer,
9
+ defer
10
+ };
11
+ //# sourceMappingURL=defer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defer.js","sources":["../../../../src/custom-input/customInputMask/utils/defer.js"],"sourcesContent":["export function defer(fn) {\r\n return requestAnimationFrame(fn);\r\n}\r\n\r\nexport function cancelDefer(deferId) {\r\n cancelAnimationFrame(deferId);\r\n}\r\n"],"names":[],"mappings":"AAAO,SAAS,MAAM,IAAI;AACxB,SAAO,sBAAsB,EAAE;AACjC;AAEO,SAAS,YAAY,SAAS;AACnC,uBAAqB,OAAO;AAC9B;"}
@@ -0,0 +1,42 @@
1
+ function getElementDocument(element) {
2
+ return element?.ownerDocument;
3
+ }
4
+ function getElementWindow(element) {
5
+ return getElementDocument(element)?.defaultView;
6
+ }
7
+ function isDOMElement(element) {
8
+ const elementWindow = getElementWindow(element);
9
+ return !!elementWindow && element instanceof elementWindow.HTMLElement;
10
+ }
11
+ function isFunction(value) {
12
+ return typeof value === "function";
13
+ }
14
+ function findLastIndex(array, predicate) {
15
+ for (let i = array.length - 1; i >= 0; i--) {
16
+ const x = array[i];
17
+ if (predicate(x, i)) {
18
+ return i;
19
+ }
20
+ }
21
+ return -1;
22
+ }
23
+ function repeat(string, n = 1) {
24
+ let result = "";
25
+ for (let i = 0; i < n; i++) {
26
+ result += string;
27
+ }
28
+ return result;
29
+ }
30
+ function toString(value) {
31
+ return `${value}`;
32
+ }
33
+ export {
34
+ findLastIndex,
35
+ getElementDocument,
36
+ getElementWindow,
37
+ isDOMElement,
38
+ isFunction,
39
+ repeat,
40
+ toString
41
+ };
42
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../../src/custom-input/customInputMask/utils/helpers.js"],"sourcesContent":["// Element's window may differ from the one within React instance\r\n// if element rendered within iframe.\r\n// See https://github.com/sanniassin/react-input-mask/issues/182\r\nexport function getElementDocument(element) {\r\n return element?.ownerDocument;\r\n}\r\n\r\nexport function getElementWindow(element) {\r\n return getElementDocument(element)?.defaultView;\r\n}\r\n\r\nexport function isDOMElement(element) {\r\n const elementWindow = getElementWindow(element);\r\n return !!elementWindow && element instanceof elementWindow.HTMLElement;\r\n}\r\n\r\nexport function isFunction(value) {\r\n return typeof value === \"function\";\r\n}\r\n\r\nexport function findLastIndex(array, predicate) {\r\n for (let i = array.length - 1; i >= 0; i--) {\r\n const x = array[i];\r\n if (predicate(x, i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\nexport function repeat(string, n = 1) {\r\n let result = \"\";\r\n for (let i = 0; i < n; i++) {\r\n result += string;\r\n }\r\n return result;\r\n}\r\n\r\nexport function toString(value) {\r\n return `${value}`;\r\n}\r\n"],"names":[],"mappings":"AAGO,SAAS,mBAAmB,SAAS;AAC1C,SAAO,SAAS;AAClB;AAEO,SAAS,iBAAiB,SAAS;AACxC,SAAO,mBAAmB,OAAO,GAAG;AACtC;AAEO,SAAS,aAAa,SAAS;AACpC,QAAM,gBAAgB,iBAAiB,OAAO;AAC9C,SAAO,CAAC,CAAC,iBAAiB,mBAAmB,cAAc;AAC7D;AAEO,SAAS,WAAW,OAAO;AAChC,SAAO,OAAO,UAAU;AAC1B;AAEO,SAAS,cAAc,OAAO,WAAW;AAC9C,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,IAAI,MAAM,CAAC;AACjB,QAAI,UAAU,GAAG,CAAC,GAAG;AACnB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,OAAO,QAAQ,IAAI,GAAG;AACpC,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAU;AAAA,EACZ;AACA,SAAO;AACT;AAEO,SAAS,SAAS,OAAO;AAC9B,SAAO,GAAG,KAAK;AACjB;"}
@@ -0,0 +1,25 @@
1
+ function setInputSelection(input, start, end) {
2
+ if (end === void 0) {
3
+ end = start;
4
+ }
5
+ input.setSelectionRange(start, end);
6
+ }
7
+ function getInputSelection(input) {
8
+ const start = input.selectionStart;
9
+ const end = input.selectionEnd;
10
+ return {
11
+ start,
12
+ end,
13
+ length: end - start
14
+ };
15
+ }
16
+ function isInputFocused(input) {
17
+ const inputDocument = input.ownerDocument;
18
+ return inputDocument.hasFocus() && inputDocument.activeElement === input;
19
+ }
20
+ export {
21
+ getInputSelection,
22
+ isInputFocused,
23
+ setInputSelection
24
+ };
25
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sources":["../../../../src/custom-input/customInputMask/utils/input.js"],"sourcesContent":["export function setInputSelection(input, start, end) {\r\n if (end === undefined) {\r\n end = start;\r\n }\r\n input.setSelectionRange(start, end);\r\n}\r\n\r\nexport function getInputSelection(input) {\r\n const start = input.selectionStart;\r\n const end = input.selectionEnd;\r\n\r\n return {\r\n start,\r\n end,\r\n length: end - start\r\n };\r\n}\r\n\r\nexport function isInputFocused(input) {\r\n const inputDocument = input.ownerDocument;\r\n return inputDocument.hasFocus() && inputDocument.activeElement === input;\r\n}\r\n"],"names":[],"mappings":"AAAO,SAAS,kBAAkB,OAAO,OAAO,KAAK;AACnD,MAAI,QAAQ,QAAW;AACrB,UAAM;AAAA,EACR;AACA,QAAM,kBAAkB,OAAO,GAAG;AACpC;AAEO,SAAS,kBAAkB,OAAO;AACvC,QAAM,QAAQ,MAAM;AACpB,QAAM,MAAM,MAAM;AAElB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ,MAAM;AAAA,EAClB;AACA;AAEO,SAAS,eAAe,OAAO;AACpC,QAAM,gBAAgB,MAAM;AAC5B,SAAO,cAAc,SAAQ,KAAM,cAAc,kBAAkB;AACrE;"}
@@ -0,0 +1,220 @@
1
+ import { findLastIndex, repeat } from "./helpers.js";
2
+ import parseMask from "./parse-mask.js";
3
+ class MaskUtils {
4
+ constructor(options) {
5
+ this.maskOptions = parseMask(options);
6
+ }
7
+ isCharacterAllowedAtPosition = (character, position) => {
8
+ const { maskPlaceholder } = this.maskOptions;
9
+ if (this.isCharacterFillingPosition(character, position)) {
10
+ return true;
11
+ }
12
+ if (!maskPlaceholder) {
13
+ return false;
14
+ }
15
+ return maskPlaceholder[position] === character;
16
+ };
17
+ isCharacterFillingPosition = (character, position) => {
18
+ const { mask } = this.maskOptions;
19
+ if (!character || position >= mask.length) {
20
+ return false;
21
+ }
22
+ if (!this.isPositionEditable(position)) {
23
+ return mask[position] === character;
24
+ }
25
+ const charRule = mask[position];
26
+ return new RegExp(charRule).test(character);
27
+ };
28
+ isPositionEditable = (position) => {
29
+ const { mask, permanents } = this.maskOptions;
30
+ return position < mask.length && permanents.indexOf(position) === -1;
31
+ };
32
+ isValueEmpty = (value) => {
33
+ return value.split("").every((character, position) => {
34
+ return !this.isPositionEditable(position) || !this.isCharacterFillingPosition(character, position);
35
+ });
36
+ };
37
+ isValueFilled = (value) => {
38
+ return this.getFilledLength(value) === this.maskOptions.lastEditablePosition + 1;
39
+ };
40
+ getDefaultSelectionForValue = (value) => {
41
+ const filledLength = this.getFilledLength(value);
42
+ const cursorPosition = this.getRightEditablePosition(filledLength);
43
+ return { start: cursorPosition, end: cursorPosition };
44
+ };
45
+ getFilledLength = (value) => {
46
+ const characters = value.split("");
47
+ const lastFilledIndex = findLastIndex(characters, (character, position) => {
48
+ return this.isPositionEditable(position) && this.isCharacterFillingPosition(character, position);
49
+ });
50
+ return lastFilledIndex + 1;
51
+ };
52
+ getStringFillingLengthAtPosition = (string, position) => {
53
+ const characters = string.split("");
54
+ const insertedValue = characters.reduce((value, character) => {
55
+ return this.insertCharacterAtPosition(value, character, value.length);
56
+ }, repeat(" ", position));
57
+ return insertedValue.length - position;
58
+ };
59
+ getLeftEditablePosition = (position) => {
60
+ for (let i = position; i >= 0; i--) {
61
+ if (this.isPositionEditable(i)) {
62
+ return i;
63
+ }
64
+ }
65
+ return null;
66
+ };
67
+ getRightEditablePosition = (position) => {
68
+ const { mask } = this.maskOptions;
69
+ for (let i = position; i < mask.length; i++) {
70
+ if (this.isPositionEditable(i)) {
71
+ return i;
72
+ }
73
+ }
74
+ return null;
75
+ };
76
+ formatValue = (value) => {
77
+ const { maskPlaceholder, mask } = this.maskOptions;
78
+ if (!maskPlaceholder) {
79
+ value = this.insertStringAtPosition("", value, 0);
80
+ while (value.length < mask.length && !this.isPositionEditable(value.length)) {
81
+ value += mask[value.length];
82
+ }
83
+ return value;
84
+ }
85
+ return this.insertStringAtPosition(maskPlaceholder, value, 0);
86
+ };
87
+ clearRange = (value, start, len) => {
88
+ if (!len) {
89
+ return value;
90
+ }
91
+ const end = start + len;
92
+ const { maskPlaceholder, mask } = this.maskOptions;
93
+ const clearedValue = value.split("").map((character, i) => {
94
+ const isEditable = this.isPositionEditable(i);
95
+ if (!maskPlaceholder && i >= end && !isEditable) {
96
+ return "";
97
+ }
98
+ if (i < start || i >= end) {
99
+ return character;
100
+ }
101
+ if (!isEditable) {
102
+ return mask[i];
103
+ }
104
+ if (maskPlaceholder) {
105
+ return maskPlaceholder[i];
106
+ }
107
+ return "";
108
+ }).join("");
109
+ return this.formatValue(clearedValue);
110
+ };
111
+ insertCharacterAtPosition = (value, character, position) => {
112
+ const { mask, maskPlaceholder } = this.maskOptions;
113
+ if (position >= mask.length) {
114
+ return value;
115
+ }
116
+ const isAllowed = this.isCharacterAllowedAtPosition(character, position);
117
+ const isEditable = this.isPositionEditable(position);
118
+ const nextEditablePosition = this.getRightEditablePosition(position);
119
+ const isNextPlaceholder = maskPlaceholder && nextEditablePosition ? character === maskPlaceholder[nextEditablePosition] : null;
120
+ const valueBefore = value.slice(0, position);
121
+ if (isAllowed || !isEditable) {
122
+ const insertedCharacter = isAllowed ? character : mask[position];
123
+ value = valueBefore + insertedCharacter;
124
+ }
125
+ if (!isAllowed && !isEditable && !isNextPlaceholder) {
126
+ value = this.insertCharacterAtPosition(value, character, position + 1);
127
+ }
128
+ return value;
129
+ };
130
+ insertStringAtPosition = (value, string, position) => {
131
+ const { mask, maskPlaceholder } = this.maskOptions;
132
+ if (!string || position >= mask.length) {
133
+ return value;
134
+ }
135
+ const characters = string.split("");
136
+ const isFixedLength = this.isValueFilled(value) || !!maskPlaceholder;
137
+ const valueAfter = value.slice(position);
138
+ value = characters.reduce((value2, character) => {
139
+ return this.insertCharacterAtPosition(value2, character, value2.length);
140
+ }, value.slice(0, position));
141
+ if (isFixedLength) {
142
+ value += valueAfter.slice(value.length - position);
143
+ } else if (this.isValueFilled(value)) {
144
+ value += mask.slice(value.length).join("");
145
+ } else {
146
+ const editableCharactersAfter = valueAfter.split("").filter((character, i) => {
147
+ return this.isPositionEditable(position + i);
148
+ });
149
+ value = editableCharactersAfter.reduce((value2, character) => {
150
+ const nextEditablePosition = this.getRightEditablePosition(
151
+ value2.length
152
+ );
153
+ if (nextEditablePosition === null) {
154
+ return value2;
155
+ }
156
+ if (!this.isPositionEditable(value2.length)) {
157
+ value2 += mask.slice(value2.length, nextEditablePosition).join("");
158
+ }
159
+ return this.insertCharacterAtPosition(value2, character, value2.length);
160
+ }, value);
161
+ }
162
+ return value;
163
+ };
164
+ processChange = (currentState, previousState) => {
165
+ const { mask, prefix, lastEditablePosition } = this.maskOptions;
166
+ const { value, selection } = currentState;
167
+ const previousValue = previousState.value;
168
+ const previousSelection = previousState.selection;
169
+ let newValue = value;
170
+ let enteredString = "";
171
+ let formattedEnteredStringLength = 0;
172
+ let removedLength = 0;
173
+ let cursorPosition = Math.min(previousSelection.start, selection.start);
174
+ if (selection.end > previousSelection.start) {
175
+ enteredString = newValue.slice(previousSelection.start, selection.end);
176
+ formattedEnteredStringLength = this.getStringFillingLengthAtPosition(
177
+ enteredString,
178
+ cursorPosition
179
+ );
180
+ if (!formattedEnteredStringLength) {
181
+ removedLength = 0;
182
+ } else {
183
+ removedLength = previousSelection.length;
184
+ }
185
+ } else if (newValue.length < previousValue.length) {
186
+ removedLength = previousValue.length - newValue.length;
187
+ }
188
+ newValue = previousValue;
189
+ if (removedLength) {
190
+ if (removedLength === 1 && !previousSelection.length) {
191
+ const deleteFromRight = previousSelection.start === selection.start;
192
+ cursorPosition = deleteFromRight ? this.getRightEditablePosition(selection.start) : this.getLeftEditablePosition(selection.start);
193
+ }
194
+ newValue = this.clearRange(newValue, cursorPosition, removedLength);
195
+ }
196
+ newValue = this.insertStringAtPosition(
197
+ newValue,
198
+ enteredString,
199
+ cursorPosition
200
+ );
201
+ cursorPosition += formattedEnteredStringLength;
202
+ if (cursorPosition >= mask.length) {
203
+ cursorPosition = mask.length;
204
+ } else if (cursorPosition < prefix.length && !formattedEnteredStringLength) {
205
+ cursorPosition = prefix.length;
206
+ } else if (cursorPosition >= prefix.length && cursorPosition < lastEditablePosition && formattedEnteredStringLength) {
207
+ cursorPosition = this.getRightEditablePosition(cursorPosition);
208
+ }
209
+ newValue = this.formatValue(newValue);
210
+ return {
211
+ value: newValue,
212
+ enteredString,
213
+ selection: { start: cursorPosition, end: cursorPosition }
214
+ };
215
+ };
216
+ }
217
+ export {
218
+ MaskUtils as default
219
+ };
220
+ //# sourceMappingURL=mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask.js","sources":["../../../../src/custom-input/customInputMask/utils/mask.js"],"sourcesContent":["/* eslint no-use-before-define: [\"error\", { functions: false }] */\r\nimport { findLastIndex, repeat } from \"./helpers\";\r\nimport parseMask from \"./parse-mask\";\r\n\r\nexport default class MaskUtils {\r\n constructor(options) {\r\n this.maskOptions = parseMask(options);\r\n }\r\n\r\n isCharacterAllowedAtPosition = (character, position) => {\r\n const { maskPlaceholder } = this.maskOptions;\r\n\r\n if (this.isCharacterFillingPosition(character, position)) {\r\n return true;\r\n }\r\n\r\n if (!maskPlaceholder) {\r\n return false;\r\n }\r\n\r\n return maskPlaceholder[position] === character;\r\n };\r\n\r\n isCharacterFillingPosition = (character, position) => {\r\n const { mask } = this.maskOptions;\r\n\r\n if (!character || position >= mask.length) {\r\n return false;\r\n }\r\n\r\n if (!this.isPositionEditable(position)) {\r\n return mask[position] === character;\r\n }\r\n\r\n const charRule = mask[position];\r\n return new RegExp(charRule).test(character);\r\n };\r\n\r\n isPositionEditable = position => {\r\n const { mask, permanents } = this.maskOptions;\r\n return position < mask.length && permanents.indexOf(position) === -1;\r\n };\r\n\r\n isValueEmpty = value => {\r\n return value.split(\"\").every((character, position) => {\r\n return (\r\n !this.isPositionEditable(position) ||\r\n !this.isCharacterFillingPosition(character, position)\r\n );\r\n });\r\n };\r\n\r\n isValueFilled = value => {\r\n return (\r\n this.getFilledLength(value) === this.maskOptions.lastEditablePosition + 1\r\n );\r\n };\r\n\r\n getDefaultSelectionForValue = value => {\r\n const filledLength = this.getFilledLength(value);\r\n const cursorPosition = this.getRightEditablePosition(filledLength);\r\n return { start: cursorPosition, end: cursorPosition };\r\n };\r\n\r\n getFilledLength = value => {\r\n const characters = value.split(\"\");\r\n const lastFilledIndex = findLastIndex(characters, (character, position) => {\r\n return (\r\n this.isPositionEditable(position) &&\r\n this.isCharacterFillingPosition(character, position)\r\n );\r\n });\r\n return lastFilledIndex + 1;\r\n };\r\n\r\n getStringFillingLengthAtPosition = (string, position) => {\r\n const characters = string.split(\"\");\r\n const insertedValue = characters.reduce((value, character) => {\r\n return this.insertCharacterAtPosition(value, character, value.length);\r\n }, repeat(\" \", position));\r\n\r\n return insertedValue.length - position;\r\n };\r\n\r\n getLeftEditablePosition = position => {\r\n for (let i = position; i >= 0; i--) {\r\n if (this.isPositionEditable(i)) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n getRightEditablePosition = position => {\r\n const { mask } = this.maskOptions;\r\n for (let i = position; i < mask.length; i++) {\r\n if (this.isPositionEditable(i)) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n formatValue = value => {\r\n const { maskPlaceholder, mask } = this.maskOptions;\r\n\r\n if (!maskPlaceholder) {\r\n value = this.insertStringAtPosition(\"\", value, 0);\r\n\r\n while (\r\n value.length < mask.length &&\r\n !this.isPositionEditable(value.length)\r\n ) {\r\n value += mask[value.length];\r\n }\r\n\r\n return value;\r\n }\r\n\r\n return this.insertStringAtPosition(maskPlaceholder, value, 0);\r\n };\r\n\r\n clearRange = (value, start, len) => {\r\n if (!len) {\r\n return value;\r\n }\r\n\r\n const end = start + len;\r\n const { maskPlaceholder, mask } = this.maskOptions;\r\n\r\n const clearedValue = value\r\n .split(\"\")\r\n .map((character, i) => {\r\n const isEditable = this.isPositionEditable(i);\r\n\r\n if (!maskPlaceholder && i >= end && !isEditable) {\r\n return \"\";\r\n }\r\n if (i < start || i >= end) {\r\n return character;\r\n }\r\n if (!isEditable) {\r\n return mask[i];\r\n }\r\n if (maskPlaceholder) {\r\n return maskPlaceholder[i];\r\n }\r\n return \"\";\r\n })\r\n .join(\"\");\r\n\r\n return this.formatValue(clearedValue);\r\n };\r\n\r\n insertCharacterAtPosition = (value, character, position) => {\r\n const { mask, maskPlaceholder } = this.maskOptions;\r\n if (position >= mask.length) {\r\n return value;\r\n }\r\n\r\n const isAllowed = this.isCharacterAllowedAtPosition(character, position);\r\n const isEditable = this.isPositionEditable(position);\r\n const nextEditablePosition = this.getRightEditablePosition(position);\r\n const isNextPlaceholder =\r\n maskPlaceholder && nextEditablePosition\r\n ? character === maskPlaceholder[nextEditablePosition]\r\n : null;\r\n const valueBefore = value.slice(0, position);\r\n\r\n if (isAllowed || !isEditable) {\r\n const insertedCharacter = isAllowed ? character : mask[position];\r\n value = valueBefore + insertedCharacter;\r\n }\r\n\r\n if (!isAllowed && !isEditable && !isNextPlaceholder) {\r\n value = this.insertCharacterAtPosition(value, character, position + 1);\r\n }\r\n\r\n return value;\r\n };\r\n\r\n insertStringAtPosition = (value, string, position) => {\r\n const { mask, maskPlaceholder } = this.maskOptions;\r\n if (!string || position >= mask.length) {\r\n return value;\r\n }\r\n\r\n const characters = string.split(\"\");\r\n const isFixedLength = this.isValueFilled(value) || !!maskPlaceholder;\r\n const valueAfter = value.slice(position);\r\n\r\n value = characters.reduce((value, character) => {\r\n return this.insertCharacterAtPosition(value, character, value.length);\r\n }, value.slice(0, position));\r\n\r\n if (isFixedLength) {\r\n value += valueAfter.slice(value.length - position);\r\n } else if (this.isValueFilled(value)) {\r\n value += mask.slice(value.length).join(\"\");\r\n } else {\r\n const editableCharactersAfter = valueAfter\r\n .split(\"\")\r\n .filter((character, i) => {\r\n return this.isPositionEditable(position + i);\r\n });\r\n value = editableCharactersAfter.reduce((value, character) => {\r\n const nextEditablePosition = this.getRightEditablePosition(\r\n value.length\r\n );\r\n if (nextEditablePosition === null) {\r\n return value;\r\n }\r\n\r\n if (!this.isPositionEditable(value.length)) {\r\n value += mask.slice(value.length, nextEditablePosition).join(\"\");\r\n }\r\n\r\n return this.insertCharacterAtPosition(value, character, value.length);\r\n }, value);\r\n }\r\n\r\n return value;\r\n };\r\n\r\n processChange = (currentState, previousState) => {\r\n const { mask, prefix, lastEditablePosition } = this.maskOptions;\r\n const { value, selection } = currentState;\r\n const previousValue = previousState.value;\r\n const previousSelection = previousState.selection;\r\n let newValue = value;\r\n let enteredString = \"\";\r\n let formattedEnteredStringLength = 0;\r\n let removedLength = 0;\r\n let cursorPosition = Math.min(previousSelection.start, selection.start);\r\n\r\n if (selection.end > previousSelection.start) {\r\n enteredString = newValue.slice(previousSelection.start, selection.end);\r\n formattedEnteredStringLength = this.getStringFillingLengthAtPosition(\r\n enteredString,\r\n cursorPosition\r\n );\r\n if (!formattedEnteredStringLength) {\r\n removedLength = 0;\r\n } else {\r\n removedLength = previousSelection.length;\r\n }\r\n } else if (newValue.length < previousValue.length) {\r\n removedLength = previousValue.length - newValue.length;\r\n }\r\n\r\n newValue = previousValue;\r\n\r\n if (removedLength) {\r\n if (removedLength === 1 && !previousSelection.length) {\r\n const deleteFromRight = previousSelection.start === selection.start;\r\n cursorPosition = deleteFromRight\r\n ? this.getRightEditablePosition(selection.start)\r\n : this.getLeftEditablePosition(selection.start);\r\n }\r\n newValue = this.clearRange(newValue, cursorPosition, removedLength);\r\n }\r\n\r\n newValue = this.insertStringAtPosition(\r\n newValue,\r\n enteredString,\r\n cursorPosition\r\n );\r\n\r\n cursorPosition += formattedEnteredStringLength;\r\n if (cursorPosition >= mask.length) {\r\n cursorPosition = mask.length;\r\n } else if (\r\n cursorPosition < prefix.length &&\r\n !formattedEnteredStringLength\r\n ) {\r\n cursorPosition = prefix.length;\r\n } else if (\r\n cursorPosition >= prefix.length &&\r\n cursorPosition < lastEditablePosition &&\r\n formattedEnteredStringLength\r\n ) {\r\n cursorPosition = this.getRightEditablePosition(cursorPosition);\r\n }\r\n\r\n newValue = this.formatValue(newValue);\r\n\r\n return {\r\n value: newValue,\r\n enteredString,\r\n selection: { start: cursorPosition, end: cursorPosition }\r\n };\r\n };\r\n}\r\n"],"names":["value"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { defaultFormatChars } from "../constants.js";
2
+ function parseMask({ mask, maskPlaceholder }) {
3
+ const permanents = [];
4
+ if (!mask) {
5
+ return {
6
+ maskPlaceholder: null,
7
+ mask: null,
8
+ prefix: null,
9
+ lastEditablePosition: null,
10
+ permanents: []
11
+ };
12
+ }
13
+ if (typeof mask === "string") {
14
+ let isPermanent = false;
15
+ let parsedMaskString = "";
16
+ mask.split("").forEach((character) => {
17
+ if (!isPermanent && character === "\\") {
18
+ isPermanent = true;
19
+ } else {
20
+ if (isPermanent || !defaultFormatChars[character]) {
21
+ permanents.push(parsedMaskString.length);
22
+ }
23
+ parsedMaskString += character;
24
+ isPermanent = false;
25
+ }
26
+ });
27
+ mask = parsedMaskString.split("").map((character, index) => {
28
+ if (permanents.indexOf(index) === -1) {
29
+ return defaultFormatChars[character];
30
+ }
31
+ return character;
32
+ });
33
+ } else {
34
+ mask.forEach((character, index) => {
35
+ if (typeof character === "string") {
36
+ permanents.push(index);
37
+ }
38
+ });
39
+ }
40
+ if (maskPlaceholder) {
41
+ if (maskPlaceholder.length === 1) {
42
+ maskPlaceholder = mask.map((character, index) => {
43
+ if (permanents.indexOf(index) !== -1) {
44
+ return character;
45
+ }
46
+ return maskPlaceholder;
47
+ });
48
+ } else {
49
+ maskPlaceholder = maskPlaceholder.split("");
50
+ }
51
+ permanents.forEach((position) => {
52
+ maskPlaceholder[position] = mask[position];
53
+ });
54
+ maskPlaceholder = maskPlaceholder.join("");
55
+ }
56
+ const prefix = permanents.filter((position, index) => position === index).map((position) => mask[position]).join("");
57
+ let lastEditablePosition = mask.length - 1;
58
+ while (permanents.indexOf(lastEditablePosition) !== -1) {
59
+ lastEditablePosition--;
60
+ }
61
+ return {
62
+ maskPlaceholder,
63
+ prefix,
64
+ mask,
65
+ lastEditablePosition,
66
+ permanents
67
+ };
68
+ }
69
+ export {
70
+ parseMask as default
71
+ };
72
+ //# sourceMappingURL=parse-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-mask.js","sources":["../../../../src/custom-input/customInputMask/utils/parse-mask.js"],"sourcesContent":["import { defaultFormatChars } from \"../constants\";\r\n\r\nexport default function({ mask, maskPlaceholder }) {\r\n const permanents = [];\r\n\r\n if (!mask) {\r\n return {\r\n maskPlaceholder: null,\r\n mask: null,\r\n prefix: null,\r\n lastEditablePosition: null,\r\n permanents: []\r\n };\r\n }\r\n\r\n if (typeof mask === \"string\") {\r\n let isPermanent = false;\r\n let parsedMaskString = \"\";\r\n mask.split(\"\").forEach(character => {\r\n if (!isPermanent && character === \"\\\\\") {\r\n isPermanent = true;\r\n } else {\r\n if (isPermanent || !defaultFormatChars[character]) {\r\n permanents.push(parsedMaskString.length);\r\n }\r\n parsedMaskString += character;\r\n isPermanent = false;\r\n }\r\n });\r\n\r\n mask = parsedMaskString.split(\"\").map((character, index) => {\r\n if (permanents.indexOf(index) === -1) {\r\n return defaultFormatChars[character];\r\n }\r\n return character;\r\n });\r\n } else {\r\n mask.forEach((character, index) => {\r\n if (typeof character === \"string\") {\r\n permanents.push(index);\r\n }\r\n });\r\n }\r\n\r\n if (maskPlaceholder) {\r\n if (maskPlaceholder.length === 1) {\r\n maskPlaceholder = mask.map((character, index) => {\r\n if (permanents.indexOf(index) !== -1) {\r\n return character;\r\n }\r\n return maskPlaceholder;\r\n });\r\n } else {\r\n maskPlaceholder = maskPlaceholder.split(\"\");\r\n }\r\n\r\n permanents.forEach(position => {\r\n maskPlaceholder[position] = mask[position];\r\n });\r\n\r\n maskPlaceholder = maskPlaceholder.join(\"\");\r\n }\r\n\r\n const prefix = permanents\r\n .filter((position, index) => position === index)\r\n .map(position => mask[position])\r\n .join(\"\");\r\n\r\n let lastEditablePosition = mask.length - 1;\r\n while (permanents.indexOf(lastEditablePosition) !== -1) {\r\n lastEditablePosition--;\r\n }\r\n\r\n return {\r\n maskPlaceholder,\r\n prefix,\r\n mask,\r\n lastEditablePosition,\r\n permanents\r\n };\r\n}\r\n"],"names":[],"mappings":";AAEe,SAAA,UAAS,EAAE,MAAM,mBAAmB;AACjD,QAAM,aAAa,CAAA;AAEnB,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,sBAAsB;AAAA,MACtB,YAAY,CAAA;AAAA,IAClB;AAAA,EACE;AAEA,MAAI,OAAO,SAAS,UAAU;AAC5B,QAAI,cAAc;AAClB,QAAI,mBAAmB;AACvB,SAAK,MAAM,EAAE,EAAE,QAAQ,eAAa;AAClC,UAAI,CAAC,eAAe,cAAc,MAAM;AACtC,sBAAc;AAAA,MAChB,OAAO;AACL,YAAI,eAAe,CAAC,mBAAmB,SAAS,GAAG;AACjD,qBAAW,KAAK,iBAAiB,MAAM;AAAA,QACzC;AACA,4BAAoB;AACpB,sBAAc;AAAA,MAChB;AAAA,IACF,CAAC;AAED,WAAO,iBAAiB,MAAM,EAAE,EAAE,IAAI,CAAC,WAAW,UAAU;AAC1D,UAAI,WAAW,QAAQ,KAAK,MAAM,IAAI;AACpC,eAAO,mBAAmB,SAAS;AAAA,MACrC;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,OAAO;AACL,SAAK,QAAQ,CAAC,WAAW,UAAU;AACjC,UAAI,OAAO,cAAc,UAAU;AACjC,mBAAW,KAAK,KAAK;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,iBAAiB;AACnB,QAAI,gBAAgB,WAAW,GAAG;AAChC,wBAAkB,KAAK,IAAI,CAAC,WAAW,UAAU;AAC/C,YAAI,WAAW,QAAQ,KAAK,MAAM,IAAI;AACpC,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,wBAAkB,gBAAgB,MAAM,EAAE;AAAA,IAC5C;AAEA,eAAW,QAAQ,cAAY;AAC7B,sBAAgB,QAAQ,IAAI,KAAK,QAAQ;AAAA,IAC3C,CAAC;AAED,sBAAkB,gBAAgB,KAAK,EAAE;AAAA,EAC3C;AAEA,QAAM,SAAS,WACZ,OAAO,CAAC,UAAU,UAAU,aAAa,KAAK,EAC9C,IAAI,cAAY,KAAK,QAAQ,CAAC,EAC9B,KAAK,EAAE;AAEV,MAAI,uBAAuB,KAAK,SAAS;AACzC,SAAO,WAAW,QAAQ,oBAAoB,MAAM,IAAI;AACtD;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;"}
@@ -0,0 +1,35 @@
1
+ import invariant from "../../_virtual/browser.js";
2
+ import warning from "../../_virtual/warning.js";
3
+ import { CONTROLLED_PROPS } from "./constants.js";
4
+ function validateMaxLength(props) {
5
+ warning(
6
+ !props.maxLength || !props.mask,
7
+ "react-input-mask: maxLength property shouldn't be passed to the masked input. It breaks masking and unnecessary because length is limited by the mask length."
8
+ );
9
+ }
10
+ function validateMaskPlaceholder(props) {
11
+ const { mask, maskPlaceholder } = props;
12
+ invariant(
13
+ !mask || !maskPlaceholder || maskPlaceholder.length === 1 || maskPlaceholder.length === mask.length,
14
+ `react-input-mask: maskPlaceholder should either be a single character or have the same length as the mask:
15
+ mask: ${mask}
16
+ maskPlaceholder: ${maskPlaceholder}`
17
+ );
18
+ }
19
+ function validateChildren(props, inputElement) {
20
+ const conflictProps = CONTROLLED_PROPS.filter(
21
+ (propId) => inputElement.props[propId] ? inputElement.props[propId] !== props[propId] : null
22
+ );
23
+ invariant(
24
+ !conflictProps.length,
25
+ `react-input-mask: the following props should be passed to the InputMask component, not to children: ${conflictProps.join(
26
+ ","
27
+ )}`
28
+ );
29
+ }
30
+ export {
31
+ validateChildren,
32
+ validateMaskPlaceholder,
33
+ validateMaxLength
34
+ };
35
+ //# sourceMappingURL=validate-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-props.js","sources":["../../../src/custom-input/customInputMask/validate-props.js"],"sourcesContent":["import invariant from \"invariant\";\r\nimport warning from \"warning\";\r\n\r\nimport { CONTROLLED_PROPS } from \"./constants\";\r\n\r\nexport function validateMaxLength(props) {\r\n warning(\r\n !props.maxLength || !props.mask,\r\n \"react-input-mask: maxLength property shouldn't be passed to the masked input. It breaks masking and unnecessary because length is limited by the mask length.\"\r\n );\r\n}\r\n\r\nexport function validateMaskPlaceholder(props) {\r\n const { mask, maskPlaceholder } = props;\r\n\r\n invariant(\r\n !mask ||\r\n !maskPlaceholder ||\r\n maskPlaceholder.length === 1 ||\r\n maskPlaceholder.length === mask.length,\r\n \"react-input-mask: maskPlaceholder should either be a single character or have the same length as the mask:\\n\" +\r\n `mask: ${mask}\\n` +\r\n `maskPlaceholder: ${maskPlaceholder}`\r\n );\r\n}\r\n\r\nexport function validateChildren(props, inputElement) {\r\n const conflictProps = CONTROLLED_PROPS.filter(\r\n propId =>\r\n inputElement.props[propId] ?\r\n inputElement.props[propId] !== props[propId] : null\r\n );\r\n\r\n invariant(\r\n !conflictProps.length,\r\n `react-input-mask: the following props should be passed to the InputMask component, not to children: ${conflictProps.join(\r\n \",\"\r\n )}`\r\n );\r\n}\r\n"],"names":[],"mappings":";;;AAKO,SAAS,kBAAkB,OAAO;AACvC;AAAA,IACE,CAAC,MAAM,aAAa,CAAC,MAAM;AAAA,IAC3B;AAAA,EACJ;AACA;AAEO,SAAS,wBAAwB,OAAO;AAC7C,QAAM,EAAE,MAAM,gBAAe,IAAK;AAElC;AAAA,IACE,CAAC,QACD,CAAC,mBACD,gBAAgB,WAAW,KAC3B,gBAAgB,WAAW,KAAK;AAAA,IAChC;AAAA,QACS,IAAI;AAAA,mBACO,eAAe;AAAA,EACvC;AACA;AAEO,SAAS,iBAAiB,OAAO,cAAc;AACpD,QAAM,gBAAgB,iBAAiB;AAAA,IACrC,YACE,aAAa,MAAM,MAAM,IACvB,aAAa,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EACvD;AAEE;AAAA,IACE,CAAC,cAAc;AAAA,IACf,uGAAuG,cAAc;AAAA,MACnH;AAAA,IACN,CAAK;AAAA,EACL;AACA;"}
@@ -3,10 +3,12 @@ import { CustomInputCheckbox } from "./CustomInputCheckbox.js";
3
3
  import { CustomInputRadio } from "./CustomInputRadio.js";
4
4
  import { CustomInputFile } from "./CustomInputFile.js";
5
5
  import { CustomInputCurrency } from "./CustomInputCurrency.js";
6
+ import { CustomInputMask } from "./customInputMask/index.js";
6
7
  export {
7
8
  CustomInputCheckbox,
8
9
  CustomInputCurrency,
9
10
  CustomInputFile,
11
+ CustomInputMask,
10
12
  CustomInputRadio
11
13
  };
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -21,12 +21,12 @@ const DropzoneUploaderStyled = ({
21
21
  const [files, setFiles] = useState([]);
22
22
  const handleChangeStatus = ({ file }, status) => {
23
23
  if (status === "done") {
24
- const filesTemp = [...files];
24
+ const filesTemp = files;
25
25
  filesTemp.push(file);
26
26
  setFiles(filesTemp);
27
27
  onChangeFiles(filesTemp);
28
28
  } else if (status === "removed") {
29
- const filesTemp = [...files];
29
+ const filesTemp = files;
30
30
  const index = filesTemp.indexOf(file);
31
31
  if (index > -1) {
32
32
  filesTemp.splice(index, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/dropzone-uploader/styled/index.jsx"],"sourcesContent":["import { getDroppedOrSelectedFiles } from 'html5-file-selector';\r\nimport { useState } from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport Dropzone from '../../dropzone';\r\nimport { IconButtonSvg, pdfImage } from '../../iconos';\r\nimport './index.css';\r\n\r\nexport const DropzoneUploaderStyled = ({\r\n accept = 'image/*, application/pdf',\r\n classNames = '',\r\n onChangeFiles,\r\n totalFiles,\r\n label = 'Cargar Dni',\r\n maxFiles = 2,\r\n maxSize = 2,\r\n onMaxFileSizeError = () => {\r\n alert('El archivo supera el tamaño máximo');\r\n },\r\n}) => {\r\n const [files, setFiles] = useState([]);\r\n\r\n const handleChangeStatus = ({ file }, status) => {\r\n if (status === 'done') {\r\n const filesTemp = [...files];\r\n filesTemp.push(file);\r\n setFiles(filesTemp);\r\n onChangeFiles(filesTemp);\r\n } else if (status === 'removed') {\r\n const filesTemp = [...files];\r\n const index = filesTemp.indexOf(file);\r\n if (index > -1) {\r\n filesTemp.splice(index, 1);\r\n }\r\n setFiles(filesTemp);\r\n onChangeFiles(filesTemp);\r\n }\r\n };\r\n\r\n const getFilesFromEvent = (e) => {\r\n return new Promise((resolve) => {\r\n getDroppedOrSelectedFiles(e).then((chosenFiles) => {\r\n resolve(chosenFiles.map((f) => f.fileObject));\r\n });\r\n });\r\n };\r\n\r\n const CustomPreview = ({ fileWithMeta }) => {\r\n const { meta, remove } = fileWithMeta;\r\n if (meta.size / (1024 * 1024) > maxSize) {\r\n onMaxFileSizeError();\r\n remove();\r\n }\r\n return (\r\n <div\r\n className=\"dropzone-upload-previewContainer\"\r\n style={{ width: '100%', display: 'flex', alignItems: 'center' }}\r\n >\r\n {meta.type === 'application/pdf' ? (\r\n <>\r\n <IconButtonSvg\r\n className=\"form-control flex\"\r\n svg={pdfImage}\r\n svgOver={pdfImage}\r\n height=\"1.6rem\"\r\n width=\"1.6rem\"\r\n title={meta.name}\r\n />\r\n <p style={{ paddingRight: '1rem' }}>\r\n {meta.name.length > 17\r\n ? meta.name.substring(0, 17) + '...'\r\n : meta.name}\r\n </p>\r\n </>\r\n ) : (\r\n <>\r\n <img\r\n className=\"dropzone-upload-previewImage mt-1\"\r\n src={meta.previewUrl}\r\n alt={meta.name}\r\n style={{\r\n width: '110px',\r\n height: '110px',\r\n objectFit: 'cover',\r\n marginRight: '0.5rem',\r\n }}\r\n />\r\n <div className=\"dropzone-upload-file-name-container\">\r\n <p className=\"dropzone-upload-file-name\" title={meta.name}>\r\n {meta.name}\r\n </p>\r\n </div>\r\n </>\r\n )}\r\n <button\r\n style={{ marginTop: '0rem' }}\r\n onClick={remove}\r\n className=\"dropzone-upload-delete-btn simple-icon-trash\"\r\n ></button>\r\n </div>\r\n );\r\n };\r\n\r\n const Input = ({ accept, onFiles, getFilesFromEvent }) => {\r\n const text =\r\n totalFiles > 0 ? `${maxFiles - totalFiles} archivos más` : `${label}`;\r\n return (\r\n <>\r\n <Button\r\n outline\r\n block\r\n size=\"xs\"\r\n className=\"mt-5 ml-5\"\r\n onClick={() => document.getElementById('fileInput').click()}\r\n >\r\n {text}\r\n <input\r\n id=\"fileInput\"\r\n style={{ display: 'none' }}\r\n type=\"file\"\r\n accept={accept}\r\n multiple\r\n onChange={(e) => {\r\n getFilesFromEvent(e).then((chosenFiles) => {\r\n onFiles(chosenFiles);\r\n });\r\n }}\r\n />\r\n </Button>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <div className={classNames}>\r\n <Dropzone\r\n disableUpload={false}\r\n maxFiles={totalFiles < maxFiles ? maxFiles : 0}\r\n maxSize={maxSize} // en megas\r\n InputComponent={Input}\r\n PreviewComponent={CustomPreview}\r\n classNames={{ dropzone: 'dropzone-upload-frame' }}\r\n onChangeStatus={handleChangeStatus}\r\n getFilesFromEvent={getFilesFromEvent}\r\n accept={accept}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default DropzoneUploaderStyled;\r\n"],"names":["IconButtonSvg","accept","getFilesFromEvent"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/dropzone-uploader/styled/index.jsx"],"sourcesContent":["import { getDroppedOrSelectedFiles } from 'html5-file-selector';\r\nimport { useState } from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport Dropzone from '../../dropzone';\r\nimport { IconButtonSvg, pdfImage } from '../../iconos';\r\nimport './index.css';\r\n\r\nexport const DropzoneUploaderStyled = ({\r\n accept = 'image/*, application/pdf',\r\n classNames = '',\r\n onChangeFiles,\r\n totalFiles,\r\n label = 'Cargar Dni',\r\n maxFiles = 2,\r\n maxSize = 2,\r\n onMaxFileSizeError = () => {\r\n alert('El archivo supera el tamaño máximo');\r\n },\r\n}) => {\r\n const [files, setFiles] = useState([]);\r\n\r\n const handleChangeStatus = ({ file }, status) => {\r\n if (status === 'done') {\r\n const filesTemp = files;\r\n filesTemp.push(file);\r\n setFiles(filesTemp);\r\n onChangeFiles(filesTemp);\r\n } else if (status === 'removed') {\r\n const filesTemp = files;\r\n const index = filesTemp.indexOf(file);\r\n if (index > -1) {\r\n filesTemp.splice(index, 1);\r\n }\r\n setFiles(filesTemp);\r\n onChangeFiles(filesTemp);\r\n }\r\n };\r\n\r\n const getFilesFromEvent = (e) => {\r\n return new Promise((resolve) => {\r\n getDroppedOrSelectedFiles(e).then((chosenFiles) => {\r\n resolve(chosenFiles.map((f) => f.fileObject));\r\n });\r\n });\r\n };\r\n\r\n const CustomPreview = ({ fileWithMeta }) => {\r\n const { meta, remove } = fileWithMeta;\r\n if (meta.size / (1024 * 1024) > maxSize) {\r\n onMaxFileSizeError();\r\n remove();\r\n }\r\n return (\r\n <div\r\n className=\"dropzone-upload-previewContainer\"\r\n style={{ width: '100%', display: 'flex', alignItems: 'center' }}\r\n >\r\n {meta.type === 'application/pdf' ? (\r\n <>\r\n <IconButtonSvg\r\n className=\"form-control flex\"\r\n svg={pdfImage}\r\n svgOver={pdfImage}\r\n height=\"1.6rem\"\r\n width=\"1.6rem\"\r\n title={meta.name}\r\n />\r\n <p style={{ paddingRight: '1rem' }}>\r\n {meta.name.length > 17\r\n ? meta.name.substring(0, 17) + '...'\r\n : meta.name}\r\n </p>\r\n </>\r\n ) : (\r\n <>\r\n <img\r\n className=\"dropzone-upload-previewImage mt-1\"\r\n src={meta.previewUrl}\r\n alt={meta.name}\r\n style={{\r\n width: '110px',\r\n height: '110px',\r\n objectFit: 'cover',\r\n marginRight: '0.5rem',\r\n }}\r\n />\r\n <div className=\"dropzone-upload-file-name-container\">\r\n <p className=\"dropzone-upload-file-name\" title={meta.name}>\r\n {meta.name}\r\n </p>\r\n </div>\r\n </>\r\n )}\r\n <button\r\n style={{ marginTop: '0rem' }}\r\n onClick={remove}\r\n className=\"dropzone-upload-delete-btn simple-icon-trash\"\r\n ></button>\r\n </div>\r\n );\r\n };\r\n\r\n const Input = ({ accept, onFiles, getFilesFromEvent }) => {\r\n const text =\r\n totalFiles > 0 ? `${maxFiles - totalFiles} archivos más` : `${label}`;\r\n return (\r\n <>\r\n <Button\r\n outline\r\n block\r\n size=\"xs\"\r\n className=\"mt-5 ml-5\"\r\n onClick={() => document.getElementById('fileInput').click()}\r\n >\r\n {text}\r\n <input\r\n id=\"fileInput\"\r\n style={{ display: 'none' }}\r\n type=\"file\"\r\n accept={accept}\r\n multiple\r\n onChange={(e) => {\r\n getFilesFromEvent(e).then((chosenFiles) => {\r\n onFiles(chosenFiles);\r\n });\r\n }}\r\n />\r\n </Button>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <div className={classNames}>\r\n <Dropzone\r\n disableUpload={false}\r\n maxFiles={totalFiles < maxFiles ? maxFiles : 0}\r\n maxSize={maxSize} // en megas\r\n InputComponent={Input}\r\n PreviewComponent={CustomPreview}\r\n classNames={{ dropzone: 'dropzone-upload-frame' }}\r\n onChangeStatus={handleChangeStatus}\r\n getFilesFromEvent={getFilesFromEvent}\r\n accept={accept}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default DropzoneUploaderStyled;\r\n"],"names":["IconButtonSvg","accept","getFilesFromEvent"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ var browser;
2
+ var hasRequiredBrowser;
3
+ function requireBrowser() {
4
+ if (hasRequiredBrowser) return browser;
5
+ hasRequiredBrowser = 1;
6
+ var define_process_env_default = {};
7
+ var invariant = function(condition, format, a, b, c, d, e, f) {
8
+ if (define_process_env_default.NODE_ENV !== "production") {
9
+ if (format === void 0) {
10
+ throw new Error("invariant requires an error message argument");
11
+ }
12
+ }
13
+ if (!condition) {
14
+ var error;
15
+ if (format === void 0) {
16
+ error = new Error(
17
+ "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."
18
+ );
19
+ } else {
20
+ var args = [a, b, c, d, e, f];
21
+ var argIndex = 0;
22
+ error = new Error(
23
+ format.replace(/%s/g, function() {
24
+ return args[argIndex++];
25
+ })
26
+ );
27
+ error.name = "Invariant Violation";
28
+ }
29
+ error.framesToPop = 1;
30
+ throw error;
31
+ }
32
+ };
33
+ browser = invariant;
34
+ return browser;
35
+ }
36
+ export {
37
+ requireBrowser as __require
38
+ };
39
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sources":["../../../node_modules/invariant/browser.js"],"sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n"],"names":[],"mappings":";;;;;;AAoBA,MAAI,YAAY,SAAS,WAAW,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC5D,QAAI,2BAAY,aAAa,cAAc;AACzC,UAAI,WAAW,QAAW;AACxB,cAAM,IAAI,MAAM,8CAA8C;AAAA,MAAA;AAAA,IAChE;AAGF,QAAI,CAAC,WAAW;AACd,UAAI;AACJ,UAAI,WAAW,QAAW;AACxB,gBAAQ,IAAI;AAAA,UACV;AAAA;MAEF,OACK;AACL,YAAI,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5B,YAAI,WAAW;AACf,gBAAQ,IAAI;AAAA,UACV,OAAO,QAAQ,OAAO,WAAW;AAAE,mBAAO,KAAK,UAAU;AAAA,UAAA,CAAI;AAAA;AAE/D,cAAM,OAAO;AAAA,MAAA;AAGf,YAAM,cAAc;AACpB,YAAM;AAAA,IAAA;AAAA,EAEV;AAEA,YAAiB;;;","x_google_ignoreList":[0]}
@@ -0,0 +1,51 @@
1
+ var warning_1;
2
+ var hasRequiredWarning;
3
+ function requireWarning() {
4
+ if (hasRequiredWarning) return warning_1;
5
+ hasRequiredWarning = 1;
6
+ var define_process_env_default = {};
7
+ var __DEV__ = define_process_env_default.NODE_ENV !== "production";
8
+ var warning = function() {
9
+ };
10
+ if (__DEV__) {
11
+ var printWarning = function printWarning2(format, args) {
12
+ var len = arguments.length;
13
+ args = new Array(len > 1 ? len - 1 : 0);
14
+ for (var key = 1; key < len; key++) {
15
+ args[key - 1] = arguments[key];
16
+ }
17
+ var argIndex = 0;
18
+ var message = "Warning: " + format.replace(/%s/g, function() {
19
+ return args[argIndex++];
20
+ });
21
+ if (typeof console !== "undefined") {
22
+ console.error(message);
23
+ }
24
+ try {
25
+ throw new Error(message);
26
+ } catch (x) {
27
+ }
28
+ };
29
+ warning = function(condition, format, args) {
30
+ var len = arguments.length;
31
+ args = new Array(len > 2 ? len - 2 : 0);
32
+ for (var key = 2; key < len; key++) {
33
+ args[key - 2] = arguments[key];
34
+ }
35
+ if (format === void 0) {
36
+ throw new Error(
37
+ "`warning(condition, format, ...args)` requires a warning message argument"
38
+ );
39
+ }
40
+ if (!condition) {
41
+ printWarning.apply(null, [format].concat(args));
42
+ }
43
+ };
44
+ }
45
+ warning_1 = warning;
46
+ return warning_1;
47
+ }
48
+ export {
49
+ requireWarning as __require
50
+ };
51
+ //# sourceMappingURL=warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warning.js","sources":["../../../node_modules/warning/warning.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n"],"names":["printWarning"],"mappings":";;;;;;AAgBA,MAAI,UAAU,2BAAY,aAAa;AAEvC,MAAI,UAAU,WAAW;AAAA,EAAC;AAE1B,MAAI,SAAS;AACX,QAAI,eAAe,SAASA,cAAa,QAAQ,MAAM;AACrD,UAAI,MAAM,UAAU;AACpB,aAAO,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,CAAC;AACtC,eAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,aAAK,MAAM,CAAC,IAAI,UAAU,GAAG;AAAA,MAAA;AAE/B,UAAI,WAAW;AACf,UAAI,UAAU,cACZ,OAAO,QAAQ,OAAO,WAAW;AAC/B,eAAO,KAAK,UAAU;AAAA,MAAA,CACvB;AACH,UAAI,OAAO,YAAY,aAAa;AAClC,gBAAQ,MAAM,OAAO;AAAA,MAAA;AAEvB,UAAI;AAIF,cAAM,IAAI,MAAM,OAAO;AAAA,MAAA,SAChB,GAAG;AAAA,MAAA;AAAA,IAAC;AAGf,cAAU,SAAS,WAAW,QAAQ,MAAM;AAC1C,UAAI,MAAM,UAAU;AACpB,aAAO,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,CAAC;AACtC,eAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,aAAK,MAAM,CAAC,IAAI,UAAU,GAAG;AAAA,MAAA;AAE/B,UAAI,WAAW,QAAW;AACxB,cAAM,IAAI;AAAA,UACN;AAAA;MAEJ;AAEF,UAAI,CAAC,WAAW;AACd,qBAAa,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;AAAA,MAAA;AAAA,IAChD;AAAA,EAEJ;AAEA,cAAiB;;;","x_google_ignoreList":[0]}
@@ -9,7 +9,8 @@ const CustomMultiSelect = ({
9
9
  lista = [],
10
10
  onListaUpdate = () => {
11
11
  },
12
- value = []
12
+ value = [],
13
+ styles = {}
13
14
  }) => {
14
15
  const [selected, setSelected] = useState([]);
15
16
  const overrideStringsCustom = {
@@ -35,7 +36,7 @@ const CustomMultiSelect = ({
35
36
  onListaUpdate(updated);
36
37
  };
37
38
  return /* @__PURE__ */ jsxs(Row, { className: "align-items-center", children: [
38
- /* @__PURE__ */ jsx(Col, { xs: 6, style: { marginTop: "3.5rem" }, children: /* @__PURE__ */ jsx(
39
+ /* @__PURE__ */ jsx(Col, { xs: 6, style: { ...styles }, children: /* @__PURE__ */ jsx(
39
40
  je,
40
41
  {
41
42
  options: lista,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/select/multi-select/index.jsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { MultiSelect } from 'react-multi-select-component';\r\nimport { Col, Row } from 'reactstrap';\r\nimport BadgeLabelMultiSelect from './badge-label-multi-select';\r\nimport { BadgeWrapper, ClickableBadge } from './styled-component';\r\nimport './index.scss';\r\n\r\nexport const CustomMultiSelect = ({\r\n lista = [],\r\n onListaUpdate = () => {},\r\n value = [],\r\n}) => {\r\n const [selected, setSelected] = useState([]);\r\n const overrideStringsCustom = {\r\n selectSomeItems: 'Seleccionar Estado/s',\r\n allItemsAreSelected: 'Todos Seleccionados',\r\n search: 'Buscar...',\r\n selectAll: 'SELECCIONAR TODOS',\r\n };\r\n\r\n useEffect(() => {\r\n if (value.length) {\r\n setSelected(value);\r\n }\r\n }, [value]);\r\n\r\n const handleCheckChange = (selectedOptions) => {\r\n if (selectedOptions) {\r\n setSelected(selectedOptions);\r\n onListaUpdate(selectedOptions);\r\n }\r\n };\r\n\r\n const handleRemoveBadge = (valueToRemove) => {\r\n const updated = selected.filter((item) => item.value !== valueToRemove);\r\n setSelected(updated);\r\n onListaUpdate(updated);\r\n };\r\n\r\n return (\r\n <Row className=\"align-items-center\">\r\n <Col xs={6} style={{ marginTop: '3.5rem' }}>\r\n <MultiSelect\r\n options={lista}\r\n value={selected}\r\n onChange={handleCheckChange}\r\n labelledBy=\"Seleccionar\"\r\n className=\"custom-multiselect\"\r\n overrideStrings={overrideStringsCustom}\r\n />\r\n </Col>\r\n <Col xs={6} style={{ marginTop: '0.5rem' }}>\r\n {selected.length > 0 && (\r\n <BadgeWrapper>\r\n {selected.length === lista.length ? (\r\n <ClickableBadge color=\"info\" pill>\r\n Todos\r\n </ClickableBadge>\r\n ) : (\r\n <BadgeLabelMultiSelect\r\n descripcionLabel={selected}\r\n onRemove={handleRemoveBadge}\r\n />\r\n )}\r\n </BadgeWrapper>\r\n )}\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default CustomMultiSelect;\r\n"],"names":["MultiSelect"],"mappings":";;;;;;;AAOO,MAAM,oBAAoB,CAAC;AAAA,EAChC,QAAQ,CAAA;AAAA,EACR,gBAAgB,MAAM;AAAA,EAAC;AAAA,EACvB,QAAQ,CAAA;AACV,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,CAAA,CAAE;AAC3C,QAAM,wBAAwB;AAAA,IAC5B,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAGb,YAAU,MAAM;AACd,QAAI,MAAM,QAAQ;AAChB,kBAAY,KAAK;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,oBAAoB,CAAC,oBAAoB;AAC7C,QAAI,iBAAiB;AACnB,kBAAY,eAAe;AAC3B,oBAAc,eAAe;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,kBAAkB;AAC3C,UAAM,UAAU,SAAS,OAAO,CAAC,SAAS,KAAK,UAAU,aAAa;AACtE,gBAAY,OAAO;AACnB,kBAAc,OAAO;AAAA,EACvB;AAEA,SACE,qBAAC,KAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,OAAI,IAAI,GAAG,OAAO,EAAE,WAAW,YAC9B,UAAA;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAW;AAAA,QACX,WAAU;AAAA,QACV,iBAAiB;AAAA,MAAA;AAAA,IAAA,GAErB;AAAA,IACA,oBAAC,KAAA,EAAI,IAAI,GAAG,OAAO,EAAE,WAAW,SAAA,GAC7B,UAAA,SAAS,SAAS,yBAChB,cAAA,EACE,UAAA,SAAS,WAAW,MAAM,SACzB,oBAAC,gBAAA,EAAe,OAAM,QAAO,MAAI,MAAC,UAAA,QAAA,CAElC,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,kBAAkB;AAAA,QAClB,UAAU;AAAA,MAAA;AAAA,IAAA,GAGhB,EAAA,CAEJ;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/select/multi-select/index.jsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { MultiSelect } from 'react-multi-select-component';\r\nimport { Col, Row } from 'reactstrap';\r\nimport BadgeLabelMultiSelect from './badge-label-multi-select';\r\nimport { BadgeWrapper, ClickableBadge } from './styled-component';\r\nimport './index.scss';\r\n\r\nexport const CustomMultiSelect = ({\r\n lista = [],\r\n onListaUpdate = () => { },\r\n value = [],\r\n styles = {},\r\n}) => {\r\n const [selected, setSelected] = useState([]);\r\n const overrideStringsCustom = {\r\n selectSomeItems: 'Seleccionar Estado/s',\r\n allItemsAreSelected: 'Todos Seleccionados',\r\n search: 'Buscar...',\r\n selectAll: 'SELECCIONAR TODOS',\r\n };\r\n\r\n useEffect(() => {\r\n if (value.length) {\r\n setSelected(value);\r\n }\r\n }, [value]);\r\n\r\n const handleCheckChange = (selectedOptions) => {\r\n if (selectedOptions) {\r\n setSelected(selectedOptions);\r\n onListaUpdate(selectedOptions);\r\n }\r\n };\r\n\r\n const handleRemoveBadge = (valueToRemove) => {\r\n const updated = selected.filter((item) => item.value !== valueToRemove);\r\n setSelected(updated);\r\n onListaUpdate(updated);\r\n };\r\n\r\n return (\r\n <Row className=\"align-items-center\" >\r\n <Col xs={6} style={{ ...styles }}>\r\n <MultiSelect\r\n options={lista}\r\n value={selected}\r\n onChange={handleCheckChange}\r\n labelledBy=\"Seleccionar\"\r\n className=\"custom-multiselect\"\r\n overrideStrings={overrideStringsCustom}\r\n />\r\n </Col>\r\n <Col xs={6} style={{ marginTop: '0.5rem' }}>\r\n {selected.length > 0 && (\r\n <BadgeWrapper>\r\n {selected.length === lista.length ? (\r\n <ClickableBadge color=\"info\" pill>\r\n Todos\r\n </ClickableBadge>\r\n ) : (\r\n <BadgeLabelMultiSelect\r\n descripcionLabel={selected}\r\n onRemove={handleRemoveBadge}\r\n />\r\n )}\r\n </BadgeWrapper>\r\n )}\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default CustomMultiSelect;\r\n"],"names":["MultiSelect"],"mappings":";;;;;;;AAOO,MAAM,oBAAoB,CAAC;AAAA,EAChC,QAAQ,CAAA;AAAA,EACR,gBAAgB,MAAM;AAAA,EAAE;AAAA,EACxB,QAAQ,CAAA;AAAA,EACR,SAAS,CAAA;AACX,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,CAAA,CAAE;AAC3C,QAAM,wBAAwB;AAAA,IAC5B,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAGb,YAAU,MAAM;AACd,QAAI,MAAM,QAAQ;AAChB,kBAAY,KAAK;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,oBAAoB,CAAC,oBAAoB;AAC7C,QAAI,iBAAiB;AACnB,kBAAY,eAAe;AAC3B,oBAAc,eAAe;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,kBAAkB;AAC3C,UAAM,UAAU,SAAS,OAAO,CAAC,SAAS,KAAK,UAAU,aAAa;AACtE,gBAAY,OAAO;AACnB,kBAAc,OAAO;AAAA,EACvB;AAEA,SACE,qBAAC,KAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,OAAI,IAAI,GAAG,OAAO,EAAE,GAAG,UACtB,UAAA;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAW;AAAA,QACX,WAAU;AAAA,QACV,iBAAiB;AAAA,MAAA;AAAA,IAAA,GAErB;AAAA,IACA,oBAAC,KAAA,EAAI,IAAI,GAAG,OAAO,EAAE,WAAW,SAAA,GAC7B,UAAA,SAAS,SAAS,yBAChB,cAAA,EACE,UAAA,SAAS,WAAW,MAAM,SACzB,oBAAC,gBAAA,EAAe,OAAM,QAAO,MAAI,MAAC,UAAA,QAAA,CAElC,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,kBAAkB;AAAA,QAClB,UAAU;AAAA,MAAA;AAAA,IAAA,GAGhB,EAAA,CAEJ;AAAA,EAAA,GACF;AAEJ;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siam-ui-utils",
3
- "version": "3.0.26",
3
+ "version": "3.0.28",
4
4
  "keywords": [
5
5
  "ampf-react",
6
6
  "ampf-utils",
@@ -94,6 +94,7 @@
94
94
  "@whereby.com/browser-sdk": "^3.13.1",
95
95
  "events": "^3.3.0",
96
96
  "html5-file-selector": "^2.1.0",
97
+ "invariant": "^2.2.4",
97
98
  "prop-types": "^15.8.1",
98
99
  "react-dropzone-component": "^3.2.0",
99
100
  "react-intl": "^6.4.2",