siam-ui-utils 3.1.0 → 3.1.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.
Files changed (96) hide show
  1. package/dist/CustomBootstrap.js +9 -9
  2. package/dist/_virtual/_commonjsHelpers.js +7 -7
  3. package/dist/_virtual/events.js +6 -6
  4. package/dist/_virtual/events2.js +5 -5
  5. package/dist/_virtual/index.js +8 -8
  6. package/dist/_virtual/index2.js +5 -5
  7. package/dist/assets/img/copiar.png.js +5 -5
  8. package/dist/assets/img/take-photo.jpg.js +5 -5
  9. package/dist/constants.js +9 -9
  10. package/dist/copy-link/index.js +60 -60
  11. package/dist/copy-link/styles.css +37 -37
  12. package/dist/custom-input/CustomInputCheckbox.js +37 -37
  13. package/dist/custom-input/CustomInputCurrency.js +84 -84
  14. package/dist/custom-input/CustomInputFile.js +47 -47
  15. package/dist/custom-input/CustomInputRadio.js +68 -68
  16. package/dist/custom-input/constant.js +5 -5
  17. package/dist/custom-input/index.js +12 -12
  18. package/dist/drag-and-dropzone/DropzoneComponent.js +83 -83
  19. package/dist/drag-and-dropzone/config.js +59 -59
  20. package/dist/drag-and-dropzone/index.js +39 -39
  21. package/dist/dropzone/Input.js +77 -77
  22. package/dist/dropzone/Layout.js +50 -50
  23. package/dist/dropzone/Preview.js +117 -117
  24. package/dist/dropzone/SubmitButton.js +34 -34
  25. package/dist/dropzone/assets/cancel.svg.js +5 -5
  26. package/dist/dropzone/assets/remove.svg.js +5 -5
  27. package/dist/dropzone/assets/restart.svg.js +5 -5
  28. package/dist/dropzone/index.js +514 -514
  29. package/dist/dropzone/utils.js +93 -93
  30. package/dist/dropzone-uploader/base/index.js +135 -135
  31. package/dist/dropzone-uploader/index.js +7 -7
  32. package/dist/dropzone-uploader/styled/index.js +148 -148
  33. package/dist/iconos/constants-svg.js +666 -666
  34. package/dist/iconos/icon-button-svg.js +50 -50
  35. package/dist/iconos/index.js +24 -24
  36. package/dist/iconos/styled-icon.js +26 -26
  37. package/dist/index.js +4 -4
  38. package/dist/intl-messages/index.js +11 -11
  39. package/dist/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +8 -8
  40. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js +13 -13
  41. package/dist/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +8 -8
  42. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +13 -13
  43. package/dist/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +9 -9
  44. package/dist/node_modules/@neolution-ch/reactstrap/esm/Badge.js +77 -0
  45. package/dist/node_modules/@neolution-ch/reactstrap/esm/Badge.js.map +1 -0
  46. package/dist/node_modules/@neolution-ch/reactstrap/esm/Button.js +111 -111
  47. package/dist/node_modules/@neolution-ch/reactstrap/esm/CloseButton.js +106 -106
  48. package/dist/node_modules/@neolution-ch/reactstrap/esm/Col.js +125 -125
  49. package/dist/node_modules/@neolution-ch/reactstrap/esm/FormGroup.js +75 -75
  50. package/dist/node_modules/@neolution-ch/reactstrap/esm/Input.js +225 -225
  51. package/dist/node_modules/@neolution-ch/reactstrap/esm/Label.js +122 -122
  52. package/dist/node_modules/@neolution-ch/reactstrap/esm/Row.js +83 -83
  53. package/dist/node_modules/@neolution-ch/reactstrap/esm/utils.js +68 -68
  54. package/dist/node_modules/classnames/index.js +62 -62
  55. package/dist/node_modules/dom-helpers/esm/addClass.js +10 -10
  56. package/dist/node_modules/dom-helpers/esm/hasClass.js +8 -8
  57. package/dist/node_modules/dom-helpers/esm/removeClass.js +16 -16
  58. package/dist/node_modules/dropzone/dist/dropzone.js +1968 -1968
  59. package/dist/node_modules/events/events.js +372 -372
  60. package/dist/node_modules/just-extend/index.esm.js +43 -43
  61. package/dist/node_modules/react-transition-group/esm/CSSTransition.js +275 -275
  62. package/dist/node_modules/react-transition-group/esm/Transition.js +441 -441
  63. package/dist/node_modules/react-transition-group/esm/TransitionGroup.js +146 -146
  64. package/dist/node_modules/react-transition-group/esm/TransitionGroupContext.js +6 -6
  65. package/dist/node_modules/react-transition-group/esm/config.js +7 -7
  66. package/dist/node_modules/react-transition-group/esm/utils/ChildMapping.js +100 -100
  67. package/dist/node_modules/react-transition-group/esm/utils/PropTypes.js +24 -24
  68. package/dist/node_modules/react-transition-group/esm/utils/reflow.js +7 -7
  69. package/dist/react-notifications/Notification.js +73 -73
  70. package/dist/react-notifications/NotificationContainer.js +59 -59
  71. package/dist/react-notifications/NotificationManager.js +174 -174
  72. package/dist/react-notifications/Notifications.js +72 -72
  73. package/dist/react-notifications/constants.js +26 -26
  74. package/dist/react-notifications/index.js +11 -11
  75. package/dist/select/custom-select/constants.js +8 -8
  76. package/dist/select/custom-select/index.js +89 -89
  77. package/dist/select/custom-select-input/index.js +12 -12
  78. package/dist/select/index.js +9 -9
  79. package/dist/select/multi-select/badge-label-multi-select.js +29 -29
  80. package/dist/select/multi-select/index.css +36 -36
  81. package/dist/select/multi-select/index.js +171 -171
  82. package/dist/select/multi-select/index.js.map +1 -1
  83. package/dist/select/multi-select/styled-component.js +23 -23
  84. package/dist/select/multi-select/styled-component.js.map +1 -1
  85. package/dist/timer/index.js +60 -60
  86. package/dist/timer/styles.css +58 -58
  87. package/dist/tomar-foto/index.js +62 -62
  88. package/dist/view-layout/button-editor.js +14 -14
  89. package/dist/view-layout/constants.js +11 -11
  90. package/dist/view-layout/editor-layer.js +28 -28
  91. package/dist/view-layout/index.js +53 -53
  92. package/dist/view-layout/slot-wrapper.js +39 -39
  93. package/dist/view-layout/styles.css +126 -126
  94. package/dist/where-by-room/index.js +20 -20
  95. package/dist/where-by-room/room.js +78 -78
  96. package/package.json +1 -4
@@ -1,171 +1,171 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect, useCallback } from "react";
3
- import Select, { components } from "react-select";
4
- import { Row, Col } from "reactstrap";
5
- import { CustomInputCheckbox } from "../../custom-input/CustomInputCheckbox.js";
6
- import BadgeLabelMultiSelect from "./badge-label-multi-select.js";
7
- import { BadgeWrapper, ClickableBadge } from "./styled-component.js";
8
- import "./index.css";
9
- const SELECT_ALL_VALUE = "__select_all__";
10
- const SELECT_ALL_OPTION = {
11
- value: SELECT_ALL_VALUE,
12
- label: "SELECCIONAR TODOS"
13
- };
14
- function CheckboxOption({
15
- data,
16
- isSelected,
17
- isFocused,
18
- innerRef,
19
- selectProps
20
- }) {
21
- const isSelectAll = data.value === SELECT_ALL_VALUE;
22
- const handleMouseDown = (e) => {
23
- e.preventDefault();
24
- e.stopPropagation();
25
- if (isSelectAll) {
26
- selectProps.onSelectAll?.();
27
- } else {
28
- selectProps.onOptionClick?.(data);
29
- }
30
- };
31
- return /* @__PURE__ */ jsx(
32
- "div",
33
- {
34
- ref: innerRef,
35
- onMouseDown: handleMouseDown,
36
- onTouchEnd: handleMouseDown,
37
- className: "multiselect-checkbox-option",
38
- style: {
39
- backgroundColor: isFocused ? "#f8e1e1" : "white",
40
- borderBottom: isSelectAll ? "1px solid #ccc" : "none",
41
- padding: "6px 12px",
42
- cursor: "pointer"
43
- },
44
- children: /* @__PURE__ */ jsx(
45
- CustomInputCheckbox,
46
- {
47
- id: `opt_${data.value}`,
48
- checked: isSelected,
49
- onChange: () => {
50
- },
51
- label: /* @__PURE__ */ jsx("span", { style: { fontWeight: isSelectAll ? "bold" : "normal" }, children: data.label })
52
- }
53
- )
54
- }
55
- );
56
- }
57
- function CustomValueContainer({ children, getValue, ...props }) {
58
- const selected = getValue();
59
- const totalOptions = props.selectProps.options.length - 1;
60
- const count = selected.length;
61
- const isAll = count > 0 && count === totalOptions;
62
- const text = isAll ? "Todos Seleccionados" : count > 0 ? selected.map((s) => s.label).join(", ") : null;
63
- console.log("selected", selected, text);
64
- return /* @__PURE__ */ jsxs(components.ValueContainer, { ...props, getValue, children: [
65
- text ? /* @__PURE__ */ jsx("span", { style: { color: "#333" }, children: text }) : /* @__PURE__ */ jsx(
66
- "span",
67
- {
68
- style: {
69
- color: count ? "transparent" : "#999",
70
- position: "absolute"
71
- },
72
- children: props.selectProps.placeholder
73
- }
74
- ),
75
- children[children.length - 1]
76
- ] });
77
- }
78
- const CUSTOM_COMPONENTS = {
79
- Option: CheckboxOption,
80
- ValueContainer: CustomValueContainer
81
- };
82
- const CustomMultiSelect = ({
83
- lista = [],
84
- onListaUpdate = () => {
85
- },
86
- value = [],
87
- styles = {}
88
- }) => {
89
- const [selected, setSelected] = useState(value);
90
- const isInternalChange = useRef(false);
91
- useEffect(() => {
92
- if (isInternalChange.current) {
93
- isInternalChange.current = false;
94
- return;
95
- }
96
- setSelected(value);
97
- }, [JSON.stringify(value)]);
98
- const update = useCallback(
99
- (newSelected) => {
100
- isInternalChange.current = true;
101
- setSelected(newSelected);
102
- onListaUpdate(newSelected);
103
- },
104
- [onListaUpdate]
105
- );
106
- const handleOptionClick = useCallback(
107
- (data) => {
108
- setSelected((prev) => {
109
- const isAlreadySelected = prev.some((s) => s.value === data.value);
110
- const next = isAlreadySelected ? prev.filter((s) => s.value !== data.value) : [...prev, data];
111
- isInternalChange.current = true;
112
- onListaUpdate(next);
113
- return next;
114
- });
115
- },
116
- [onListaUpdate]
117
- );
118
- const handleSelectAll = useCallback(() => {
119
- setSelected((prev) => {
120
- const next = prev.length === lista.length ? [] : [...lista];
121
- isInternalChange.current = true;
122
- onListaUpdate(next);
123
- return next;
124
- });
125
- }, [lista, onListaUpdate]);
126
- const handleRemoveBadge = useCallback(
127
- (valueToRemove) => {
128
- update(selected.filter((item) => item.value !== valueToRemove));
129
- },
130
- [selected, update]
131
- );
132
- const allSelected = lista.length > 0 && selected.length === lista.length;
133
- const optionsWithSelectAll = [SELECT_ALL_OPTION, ...lista];
134
- const isOptionSelected = useCallback(
135
- (option) => option.value === SELECT_ALL_VALUE ? allSelected : selected.some((s) => s.value === option.value),
136
- [allSelected, selected]
137
- );
138
- return /* @__PURE__ */ jsxs(Row, { className: "align-items-center", children: [
139
- /* @__PURE__ */ jsx(Col, { xs: 6, style: styles, children: /* @__PURE__ */ jsx(
140
- Select,
141
- {
142
- options: optionsWithSelectAll,
143
- value: selected,
144
- onChange: update,
145
- isMulti: true,
146
- placeholder: "Seleccione",
147
- noOptionsMessage: () => "Sin opciones",
148
- className: "custom-multiselect",
149
- classNamePrefix: "custom-multiselect",
150
- components: CUSTOM_COMPONENTS,
151
- closeMenuOnSelect: false,
152
- hideSelectedOptions: false,
153
- isSearchable: false,
154
- onSelectAll: handleSelectAll,
155
- onOptionClick: handleOptionClick,
156
- isOptionSelected
157
- }
158
- ) }),
159
- /* @__PURE__ */ jsx(Col, { xs: 6, children: selected.length > 0 && /* @__PURE__ */ jsx(BadgeWrapper, { children: allSelected ? /* @__PURE__ */ jsx(ClickableBadge, { color: "info", pill: true, children: "Todos" }) : /* @__PURE__ */ jsx(
160
- BadgeLabelMultiSelect,
161
- {
162
- descripcionLabel: selected,
163
- onRemove: handleRemoveBadge
164
- }
165
- ) }) })
166
- ] });
167
- };
168
- export {
169
- CustomMultiSelect
170
- };
171
- //# sourceMappingURL=index.js.map
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect, useCallback } from "react";
3
+ import Select, { components } from "react-select";
4
+ import Row from "../../node_modules/@neolution-ch/reactstrap/esm/Row.js";
5
+ import Col from "../../node_modules/@neolution-ch/reactstrap/esm/Col.js";
6
+ import { CustomInputCheckbox } from "../../custom-input/CustomInputCheckbox.js";
7
+ import BadgeLabelMultiSelect from "./badge-label-multi-select.js";
8
+ import { BadgeWrapper, ClickableBadge } from "./styled-component.js";
9
+ import "./index.css";
10
+ const SELECT_ALL_VALUE = "__select_all__";
11
+ const SELECT_ALL_OPTION = {
12
+ value: SELECT_ALL_VALUE,
13
+ label: "SELECCIONAR TODOS"
14
+ };
15
+ function CheckboxOption({
16
+ data,
17
+ isSelected,
18
+ isFocused,
19
+ innerRef,
20
+ selectProps
21
+ }) {
22
+ const isSelectAll = data.value === SELECT_ALL_VALUE;
23
+ const handleMouseDown = (e) => {
24
+ e.preventDefault();
25
+ e.stopPropagation();
26
+ if (isSelectAll) {
27
+ selectProps.onSelectAll?.();
28
+ } else {
29
+ selectProps.onOptionClick?.(data);
30
+ }
31
+ };
32
+ return /* @__PURE__ */ jsx(
33
+ "div",
34
+ {
35
+ ref: innerRef,
36
+ onMouseDown: handleMouseDown,
37
+ onTouchEnd: handleMouseDown,
38
+ className: "multiselect-checkbox-option",
39
+ style: {
40
+ backgroundColor: isFocused ? "#f8e1e1" : "white",
41
+ borderBottom: isSelectAll ? "1px solid #ccc" : "none",
42
+ padding: "6px 12px",
43
+ cursor: "pointer"
44
+ },
45
+ children: /* @__PURE__ */ jsx(
46
+ CustomInputCheckbox,
47
+ {
48
+ id: `opt_${data.value}`,
49
+ checked: isSelected,
50
+ onChange: () => {
51
+ },
52
+ label: /* @__PURE__ */ jsx("span", { style: { fontWeight: isSelectAll ? "bold" : "normal" }, children: data.label })
53
+ }
54
+ )
55
+ }
56
+ );
57
+ }
58
+ function CustomValueContainer({ children, getValue, ...props }) {
59
+ const selected = getValue();
60
+ const totalOptions = props.selectProps.options.length - 1;
61
+ const count = selected.length;
62
+ const isAll = count > 0 && count === totalOptions;
63
+ const text = isAll ? "Todos Seleccionados" : count > 0 ? selected.map((s) => s.label).join(", ") : null;
64
+ return /* @__PURE__ */ jsxs(components.ValueContainer, { ...props, getValue, children: [
65
+ text ? /* @__PURE__ */ jsx("span", { style: { color: "#333" }, children: text }) : /* @__PURE__ */ jsx(
66
+ "span",
67
+ {
68
+ style: {
69
+ color: count ? "transparent" : "#999",
70
+ position: "absolute"
71
+ },
72
+ children: props.selectProps.placeholder
73
+ }
74
+ ),
75
+ children[children.length - 1]
76
+ ] });
77
+ }
78
+ const CUSTOM_COMPONENTS = {
79
+ Option: CheckboxOption,
80
+ ValueContainer: CustomValueContainer
81
+ };
82
+ const CustomMultiSelect = ({
83
+ lista = [],
84
+ onListaUpdate = () => {
85
+ },
86
+ value = [],
87
+ styles = {}
88
+ }) => {
89
+ const [selected, setSelected] = useState(value);
90
+ const isInternalChange = useRef(false);
91
+ useEffect(() => {
92
+ if (isInternalChange.current) {
93
+ isInternalChange.current = false;
94
+ return;
95
+ }
96
+ setSelected(value);
97
+ }, [JSON.stringify(value)]);
98
+ const update = useCallback(
99
+ (newSelected) => {
100
+ isInternalChange.current = true;
101
+ setSelected(newSelected);
102
+ onListaUpdate(newSelected);
103
+ },
104
+ [onListaUpdate]
105
+ );
106
+ const handleOptionClick = useCallback(
107
+ (data) => {
108
+ setSelected((prev) => {
109
+ const isAlreadySelected = prev.some((s) => s.value === data.value);
110
+ const next = isAlreadySelected ? prev.filter((s) => s.value !== data.value) : [...prev, data];
111
+ isInternalChange.current = true;
112
+ onListaUpdate(next);
113
+ return next;
114
+ });
115
+ },
116
+ [onListaUpdate]
117
+ );
118
+ const handleSelectAll = useCallback(() => {
119
+ setSelected((prev) => {
120
+ const next = prev.length === lista.length ? [] : [...lista];
121
+ isInternalChange.current = true;
122
+ onListaUpdate(next);
123
+ return next;
124
+ });
125
+ }, [lista, onListaUpdate]);
126
+ const handleRemoveBadge = useCallback(
127
+ (valueToRemove) => {
128
+ update(selected.filter((item) => item.value !== valueToRemove));
129
+ },
130
+ [selected, update]
131
+ );
132
+ const allSelected = lista.length > 0 && selected.length === lista.length;
133
+ const optionsWithSelectAll = [SELECT_ALL_OPTION, ...lista];
134
+ const isOptionSelected = useCallback(
135
+ (option) => option.value === SELECT_ALL_VALUE ? allSelected : selected.some((s) => s.value === option.value),
136
+ [allSelected, selected]
137
+ );
138
+ return /* @__PURE__ */ jsxs(Row, { className: "align-items-center", children: [
139
+ /* @__PURE__ */ jsx(Col, { xs: 6, style: styles, children: /* @__PURE__ */ jsx(
140
+ Select,
141
+ {
142
+ options: optionsWithSelectAll,
143
+ value: selected,
144
+ onChange: update,
145
+ isMulti: true,
146
+ placeholder: "Seleccione",
147
+ noOptionsMessage: () => "Sin opciones",
148
+ className: "custom-multiselect",
149
+ classNamePrefix: "custom-multiselect",
150
+ components: CUSTOM_COMPONENTS,
151
+ closeMenuOnSelect: false,
152
+ hideSelectedOptions: false,
153
+ isSearchable: false,
154
+ onSelectAll: handleSelectAll,
155
+ onOptionClick: handleOptionClick,
156
+ isOptionSelected
157
+ }
158
+ ) }),
159
+ /* @__PURE__ */ jsx(Col, { xs: 6, children: selected.length > 0 && /* @__PURE__ */ jsx(BadgeWrapper, { children: allSelected ? /* @__PURE__ */ jsx(ClickableBadge, { color: "info", pill: true, children: "Todos" }) : /* @__PURE__ */ jsx(
160
+ BadgeLabelMultiSelect,
161
+ {
162
+ descripcionLabel: selected,
163
+ onRemove: handleRemoveBadge
164
+ }
165
+ ) }) })
166
+ ] });
167
+ };
168
+ export {
169
+ CustomMultiSelect
170
+ };
171
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/select/multi-select/index.jsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\r\nimport Select, { components } from 'react-select';\r\nimport { Col, Row } from 'reactstrap';\r\nimport { CustomInputCheckbox } from '../../custom-input/CustomInputCheckbox';\r\nimport BadgeLabelMultiSelect from './badge-label-multi-select';\r\nimport { BadgeWrapper, ClickableBadge } from './styled-component';\r\nimport './index.scss';\r\n\r\nconst SELECT_ALL_VALUE = '__select_all__';\r\nconst SELECT_ALL_OPTION = {\r\n value: SELECT_ALL_VALUE,\r\n label: 'SELECCIONAR TODOS',\r\n};\r\n\r\nfunction CheckboxOption({\r\n data,\r\n isSelected,\r\n isFocused,\r\n innerRef,\r\n selectProps,\r\n}) {\r\n const isSelectAll = data.value === SELECT_ALL_VALUE;\r\n\r\n const handleMouseDown = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (isSelectAll) {\r\n selectProps.onSelectAll?.();\r\n } else {\r\n selectProps.onOptionClick?.(data);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={innerRef}\r\n onMouseDown={handleMouseDown}\r\n onTouchEnd={handleMouseDown}\r\n className=\"multiselect-checkbox-option\"\r\n style={{\r\n backgroundColor: isFocused ? '#f8e1e1' : 'white',\r\n borderBottom: isSelectAll ? '1px solid #ccc' : 'none',\r\n padding: '6px 12px',\r\n cursor: 'pointer',\r\n }}\r\n >\r\n <CustomInputCheckbox\r\n id={`opt_${data.value}`}\r\n checked={isSelected}\r\n onChange={() => {}}\r\n label={\r\n <span style={{ fontWeight: isSelectAll ? 'bold' : 'normal' }}>\r\n {data.label}\r\n </span>\r\n }\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction CustomValueContainer({ children, getValue, ...props }) {\r\n const selected = getValue();\r\n const totalOptions = props.selectProps.options.length - 1;\r\n const count = selected.length;\r\n const isAll = count > 0 && count === totalOptions;\r\n\r\n const text = isAll\r\n ? 'Todos Seleccionados'\r\n : count > 0\r\n ? selected.map((s) => s.label).join(', ')\r\n : null;\r\n console.log('selected', selected, text);\r\n\r\n return (\r\n <components.ValueContainer {...props} getValue={getValue}>\r\n {text ? (\r\n <span style={{ color: '#333' }}>{text}</span>\r\n ) : (\r\n <span\r\n style={{\r\n color: count ? 'transparent' : '#999',\r\n position: 'absolute',\r\n }}\r\n >\r\n {props.selectProps.placeholder}\r\n </span>\r\n )}\r\n {children[children.length - 1]}\r\n </components.ValueContainer>\r\n );\r\n}\r\n\r\nconst CUSTOM_COMPONENTS = {\r\n Option: CheckboxOption,\r\n ValueContainer: CustomValueContainer,\r\n};\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(value);\r\n const isInternalChange = useRef(false);\r\n\r\n useEffect(() => {\r\n if (isInternalChange.current) {\r\n isInternalChange.current = false;\r\n return;\r\n }\r\n setSelected(value);\r\n }, [JSON.stringify(value)]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const update = useCallback(\r\n (newSelected) => {\r\n isInternalChange.current = true;\r\n setSelected(newSelected);\r\n onListaUpdate(newSelected);\r\n },\r\n [onListaUpdate]\r\n );\r\n\r\n const handleOptionClick = useCallback(\r\n (data) => {\r\n setSelected((prev) => {\r\n const isAlreadySelected = prev.some((s) => s.value === data.value);\r\n const next = isAlreadySelected\r\n ? prev.filter((s) => s.value !== data.value)\r\n : [...prev, data];\r\n isInternalChange.current = true;\r\n onListaUpdate(next);\r\n return next;\r\n });\r\n },\r\n [onListaUpdate]\r\n );\r\n\r\n const handleSelectAll = useCallback(() => {\r\n setSelected((prev) => {\r\n const next = prev.length === lista.length ? [] : [...lista];\r\n isInternalChange.current = true;\r\n onListaUpdate(next);\r\n return next;\r\n });\r\n }, [lista, onListaUpdate]);\r\n\r\n const handleRemoveBadge = useCallback(\r\n (valueToRemove) => {\r\n update(selected.filter((item) => item.value !== valueToRemove));\r\n },\r\n [selected, update]\r\n );\r\n\r\n const allSelected = lista.length > 0 && selected.length === lista.length;\r\n const optionsWithSelectAll = [SELECT_ALL_OPTION, ...lista];\r\n\r\n const isOptionSelected = useCallback(\r\n (option) =>\r\n option.value === SELECT_ALL_VALUE\r\n ? allSelected\r\n : selected.some((s) => s.value === option.value),\r\n [allSelected, selected]\r\n );\r\n\r\n return (\r\n <Row className=\"align-items-center\">\r\n <Col xs={6} style={styles}>\r\n <Select\r\n options={optionsWithSelectAll}\r\n value={selected}\r\n onChange={update}\r\n isMulti\r\n placeholder=\"Seleccione\"\r\n noOptionsMessage={() => 'Sin opciones'}\r\n className=\"custom-multiselect\"\r\n classNamePrefix=\"custom-multiselect\"\r\n components={CUSTOM_COMPONENTS}\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\r\n isSearchable={false}\r\n onSelectAll={handleSelectAll}\r\n onOptionClick={handleOptionClick}\r\n isOptionSelected={isOptionSelected}\r\n />\r\n </Col>\r\n <Col xs={6}>\r\n {selected.length > 0 && (\r\n <BadgeWrapper>\r\n {allSelected ? (\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":[],"mappings":";;;;;;;;AAQA,MAAM,mBAAmB;AACzB,MAAM,oBAAoB;AAAA,EACxB,OAAO;AAAA,EACP,OAAO;AACT;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,QAAM,cAAc,KAAK,UAAU;AAEnC,QAAM,kBAAkB,CAAC,MAAM;AAC7B,MAAE,eAAA;AACF,MAAE,gBAAA;AACF,QAAI,aAAa;AACf,kBAAY,cAAA;AAAA,IACd,OAAO;AACL,kBAAY,gBAAgB,IAAI;AAAA,IAClC;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,WAAU;AAAA,MACV,OAAO;AAAA,QACL,iBAAiB,YAAY,YAAY;AAAA,QACzC,cAAc,cAAc,mBAAmB;AAAA,QAC/C,SAAS;AAAA,QACT,QAAQ;AAAA,MAAA;AAAA,MAGV,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAI,OAAO,KAAK,KAAK;AAAA,UACrB,SAAS;AAAA,UACT,UAAU,MAAM;AAAA,UAAC;AAAA,UACjB,OACE,oBAAC,QAAA,EAAK,OAAO,EAAE,YAAY,cAAc,SAAS,SAAA,GAC/C,UAAA,KAAK,MAAA,CACR;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN;AAEA,SAAS,qBAAqB,EAAE,UAAU,UAAU,GAAG,SAAS;AAC9D,QAAM,WAAW,SAAA;AACjB,QAAM,eAAe,MAAM,YAAY,QAAQ,SAAS;AACxD,QAAM,QAAQ,SAAS;AACvB,QAAM,QAAQ,QAAQ,KAAK,UAAU;AAErC,QAAM,OAAO,QACT,wBACA,QAAQ,IACR,SAAS,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,IACtC;AACJ,UAAQ,IAAI,YAAY,UAAU,IAAI;AAEtC,8BACG,WAAW,gBAAX,EAA2B,GAAG,OAAO,UACnC,UAAA;AAAA,IAAA,OACC,oBAAC,UAAK,OAAO,EAAE,OAAO,UAAW,gBAAK,IAEtC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO,QAAQ,gBAAgB;AAAA,UAC/B,UAAU;AAAA,QAAA;AAAA,QAGX,gBAAM,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAGtB,SAAS,SAAS,SAAS,CAAC;AAAA,EAAA,GAC/B;AAEJ;AAEA,MAAM,oBAAoB;AAAA,EACxB,QAAQ;AAAA,EACR,gBAAgB;AAClB;AAEO,MAAM,oBAAoB,CAAC;AAAA,EAChC,QAAQ,CAAA;AAAA,EACR,gBAAgB,MAAM;AAAA,EAAC;AAAA,EACvB,QAAQ,CAAA;AAAA,EACR,SAAS,CAAA;AACX,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,mBAAmB,OAAO,KAAK;AAErC,YAAU,MAAM;AACd,QAAI,iBAAiB,SAAS;AAC5B,uBAAiB,UAAU;AAC3B;AAAA,IACF;AACA,gBAAY,KAAK;AAAA,EACnB,GAAG,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC;AAE1B,QAAM,SAAS;AAAA,IACb,CAAC,gBAAgB;AACf,uBAAiB,UAAU;AAC3B,kBAAY,WAAW;AACvB,oBAAc,WAAW;AAAA,IAC3B;AAAA,IACA,CAAC,aAAa;AAAA,EAAA;AAGhB,QAAM,oBAAoB;AAAA,IACxB,CAAC,SAAS;AACR,kBAAY,CAAC,SAAS;AACpB,cAAM,oBAAoB,KAAK,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,KAAK;AACjE,cAAM,OAAO,oBACT,KAAK,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,KAAK,IACzC,CAAC,GAAG,MAAM,IAAI;AAClB,yBAAiB,UAAU;AAC3B,sBAAc,IAAI;AAClB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,aAAa;AAAA,EAAA;AAGhB,QAAM,kBAAkB,YAAY,MAAM;AACxC,gBAAY,CAAC,SAAS;AACpB,YAAM,OAAO,KAAK,WAAW,MAAM,SAAS,CAAA,IAAK,CAAC,GAAG,KAAK;AAC1D,uBAAiB,UAAU;AAC3B,oBAAc,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,aAAa,CAAC;AAEzB,QAAM,oBAAoB;AAAA,IACxB,CAAC,kBAAkB;AACjB,aAAO,SAAS,OAAO,CAAC,SAAS,KAAK,UAAU,aAAa,CAAC;AAAA,IAChE;AAAA,IACA,CAAC,UAAU,MAAM;AAAA,EAAA;AAGnB,QAAM,cAAc,MAAM,SAAS,KAAK,SAAS,WAAW,MAAM;AAClE,QAAM,uBAAuB,CAAC,mBAAmB,GAAG,KAAK;AAEzD,QAAM,mBAAmB;AAAA,IACvB,CAAC,WACC,OAAO,UAAU,mBACb,cACA,SAAS,KAAK,CAAC,MAAM,EAAE,UAAU,OAAO,KAAK;AAAA,IACnD,CAAC,aAAa,QAAQ;AAAA,EAAA;AAGxB,SACE,qBAAC,KAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,KAAA,EAAI,IAAI,GAAG,OAAO,QACjB,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAO;AAAA,QACP,aAAY;AAAA,QACZ,kBAAkB,MAAM;AAAA,QACxB,WAAU;AAAA,QACV,iBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,eAAe;AAAA,QACf;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,wBACC,KAAA,EAAI,IAAI,GACN,UAAA,SAAS,SAAS,KACjB,oBAAC,cAAA,EACE,UAAA,kCACE,gBAAA,EAAe,OAAM,QAAO,MAAI,MAAC,mBAElC,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 { useCallback, useEffect, useRef, useState } from 'react';\r\nimport Select, { components } from 'react-select';\r\nimport { Col, Row } from '@neolution-ch/reactstrap';\r\nimport { CustomInputCheckbox } from '../../custom-input/CustomInputCheckbox';\r\nimport BadgeLabelMultiSelect from './badge-label-multi-select';\r\nimport { BadgeWrapper, ClickableBadge } from './styled-component';\r\nimport './index.scss';\r\n\r\nconst SELECT_ALL_VALUE = '__select_all__';\r\nconst SELECT_ALL_OPTION = {\r\n value: SELECT_ALL_VALUE,\r\n label: 'SELECCIONAR TODOS',\r\n};\r\n\r\nfunction CheckboxOption({\r\n data,\r\n isSelected,\r\n isFocused,\r\n innerRef,\r\n selectProps,\r\n}) {\r\n const isSelectAll = data.value === SELECT_ALL_VALUE;\r\n\r\n const handleMouseDown = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (isSelectAll) {\r\n selectProps.onSelectAll?.();\r\n } else {\r\n selectProps.onOptionClick?.(data);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={innerRef}\r\n onMouseDown={handleMouseDown}\r\n onTouchEnd={handleMouseDown}\r\n className=\"multiselect-checkbox-option\"\r\n style={{\r\n backgroundColor: isFocused ? '#f8e1e1' : 'white',\r\n borderBottom: isSelectAll ? '1px solid #ccc' : 'none',\r\n padding: '6px 12px',\r\n cursor: 'pointer',\r\n }}\r\n >\r\n <CustomInputCheckbox\r\n id={`opt_${data.value}`}\r\n checked={isSelected}\r\n onChange={() => {}}\r\n label={\r\n <span style={{ fontWeight: isSelectAll ? 'bold' : 'normal' }}>\r\n {data.label}\r\n </span>\r\n }\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction CustomValueContainer({ children, getValue, ...props }) {\r\n const selected = getValue();\r\n const totalOptions = props.selectProps.options.length - 1;\r\n const count = selected.length;\r\n const isAll = count > 0 && count === totalOptions;\r\n\r\n const text = isAll\r\n ? 'Todos Seleccionados'\r\n : count > 0\r\n ? selected.map((s) => s.label).join(', ')\r\n : null;\r\n\r\n return (\r\n <components.ValueContainer {...props} getValue={getValue}>\r\n {text ? (\r\n <span style={{ color: '#333' }}>{text}</span>\r\n ) : (\r\n <span\r\n style={{\r\n color: count ? 'transparent' : '#999',\r\n position: 'absolute',\r\n }}\r\n >\r\n {props.selectProps.placeholder}\r\n </span>\r\n )}\r\n {children[children.length - 1]}\r\n </components.ValueContainer>\r\n );\r\n}\r\n\r\nconst CUSTOM_COMPONENTS = {\r\n Option: CheckboxOption,\r\n ValueContainer: CustomValueContainer,\r\n};\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(value);\r\n const isInternalChange = useRef(false);\r\n\r\n useEffect(() => {\r\n if (isInternalChange.current) {\r\n isInternalChange.current = false;\r\n return;\r\n }\r\n setSelected(value);\r\n }, [JSON.stringify(value)]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const update = useCallback(\r\n (newSelected) => {\r\n isInternalChange.current = true;\r\n setSelected(newSelected);\r\n onListaUpdate(newSelected);\r\n },\r\n [onListaUpdate]\r\n );\r\n\r\n const handleOptionClick = useCallback(\r\n (data) => {\r\n setSelected((prev) => {\r\n const isAlreadySelected = prev.some((s) => s.value === data.value);\r\n const next = isAlreadySelected\r\n ? prev.filter((s) => s.value !== data.value)\r\n : [...prev, data];\r\n isInternalChange.current = true;\r\n onListaUpdate(next);\r\n return next;\r\n });\r\n },\r\n [onListaUpdate]\r\n );\r\n\r\n const handleSelectAll = useCallback(() => {\r\n setSelected((prev) => {\r\n const next = prev.length === lista.length ? [] : [...lista];\r\n isInternalChange.current = true;\r\n onListaUpdate(next);\r\n return next;\r\n });\r\n }, [lista, onListaUpdate]);\r\n\r\n const handleRemoveBadge = useCallback(\r\n (valueToRemove) => {\r\n update(selected.filter((item) => item.value !== valueToRemove));\r\n },\r\n [selected, update]\r\n );\r\n\r\n const allSelected = lista.length > 0 && selected.length === lista.length;\r\n const optionsWithSelectAll = [SELECT_ALL_OPTION, ...lista];\r\n\r\n const isOptionSelected = useCallback(\r\n (option) =>\r\n option.value === SELECT_ALL_VALUE\r\n ? allSelected\r\n : selected.some((s) => s.value === option.value),\r\n [allSelected, selected]\r\n );\r\n\r\n return (\r\n <Row className=\"align-items-center\">\r\n <Col xs={6} style={styles}>\r\n <Select\r\n options={optionsWithSelectAll}\r\n value={selected}\r\n onChange={update}\r\n isMulti\r\n placeholder=\"Seleccione\"\r\n noOptionsMessage={() => 'Sin opciones'}\r\n className=\"custom-multiselect\"\r\n classNamePrefix=\"custom-multiselect\"\r\n components={CUSTOM_COMPONENTS}\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\r\n isSearchable={false}\r\n onSelectAll={handleSelectAll}\r\n onOptionClick={handleOptionClick}\r\n isOptionSelected={isOptionSelected}\r\n />\r\n </Col>\r\n <Col xs={6}>\r\n {selected.length > 0 && (\r\n <BadgeWrapper>\r\n {allSelected ? (\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":[],"mappings":"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"}
@@ -1,23 +1,23 @@
1
- import { Badge } from "reactstrap";
2
- import styled from "styled-components";
3
- const ClickableBadge = styled(Badge)`
4
- cursor: pointer;
5
- width: fit-content;
6
- white-space: nowrap;
7
- `;
8
- const BadgeWrapper = styled.div`
9
- display: inline-flex;
10
- flex-wrap: wrap;
11
- gap: 10px;
12
- padding: 0.5rem;
13
- border-radius: 0.5rem;
14
- background-color: #f1f1f1;
15
- border: 1px solid #ccc;
16
- max-width: 100%;
17
- overflow-x: auto;
18
- `;
19
- export {
20
- BadgeWrapper,
21
- ClickableBadge
22
- };
23
- //# sourceMappingURL=styled-component.js.map
1
+ import Badge from "../../node_modules/@neolution-ch/reactstrap/esm/Badge.js";
2
+ import styled from "styled-components";
3
+ const ClickableBadge = styled(Badge)`
4
+ cursor: pointer;
5
+ width: fit-content;
6
+ white-space: nowrap;
7
+ `;
8
+ const BadgeWrapper = styled.div`
9
+ display: inline-flex;
10
+ flex-wrap: wrap;
11
+ gap: 10px;
12
+ padding: 0.5rem;
13
+ border-radius: 0.5rem;
14
+ background-color: #f1f1f1;
15
+ border: 1px solid #ccc;
16
+ max-width: 100%;
17
+ overflow-x: auto;
18
+ `;
19
+ export {
20
+ BadgeWrapper,
21
+ ClickableBadge
22
+ };
23
+ //# sourceMappingURL=styled-component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled-component.js","sources":["../../../src/select/multi-select/styled-component.js"],"sourcesContent":["import { Badge } from 'reactstrap';\r\nimport styled from 'styled-components';\r\n\r\nexport const ClickableBadge = styled(Badge)`\r\n cursor: pointer;\r\n width: fit-content;\r\n white-space: nowrap;\r\n`;\r\n\r\nexport const BadgeWrapper = styled.div`\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n gap: 10px;\r\n padding: 0.5rem;\r\n border-radius: 0.5rem;\r\n background-color: #f1f1f1;\r\n border: 1px solid #ccc;\r\n max-width: 100%;\r\n overflow-x: auto;\r\n`;\r\n"],"names":[],"mappings":";;AAGY,MAAC,iBAAiB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAM9B,MAAC,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"styled-component.js","sources":["../../../src/select/multi-select/styled-component.js"],"sourcesContent":["import { Badge } from '@neolution-ch/reactstrap';\r\nimport styled from 'styled-components';\r\n\r\nexport const ClickableBadge = styled(Badge)`\r\n cursor: pointer;\r\n width: fit-content;\r\n white-space: nowrap;\r\n`;\r\n\r\nexport const BadgeWrapper = styled.div`\r\n display: inline-flex;\r\n flex-wrap: wrap;\r\n gap: 10px;\r\n padding: 0.5rem;\r\n border-radius: 0.5rem;\r\n background-color: #f1f1f1;\r\n border: 1px solid #ccc;\r\n max-width: 100%;\r\n overflow-x: auto;\r\n`;\r\n"],"names":[],"mappings":";;AAGY,MAAC,iBAAiB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAM9B,MAAC,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,60 +1,60 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { useState, useRef, useEffect } from "react";
3
- import "./styles.css";
4
- const formatTiempo = (ms) => {
5
- if (ms == null) return "--:--";
6
- const absMs = Math.abs(ms);
7
- const totalSec = Math.floor(absMs / 1e3);
8
- const min = Math.floor(totalSec / 60);
9
- const sec = totalSec % 60;
10
- const formatted = `${min.toString().padStart(2, "0")}:${sec.toString().padStart(2, "0")}`;
11
- return ms < 0 ? `-${formatted}` : formatted;
12
- };
13
- const getTimerColorClass = (ms, maxTime) => {
14
- if (!maxTime) return "";
15
- const percent = ms / maxTime;
16
- if (percent > 0.33) return "timer-green";
17
- if (percent > 0.15) return "timer-yellow";
18
- if (percent > 0) return "timer-red";
19
- if (ms === 0) return "timer-out";
20
- if (ms < 0) return "timer-over";
21
- return "";
22
- };
23
- const Timer = ({
24
- initialMinutes = 0,
25
- icon = true,
26
- className = "",
27
- active = true,
28
- style = {}
29
- }) => {
30
- const initialMs = initialMinutes * 60 * 1e3;
31
- const [ms, setMs] = useState(initialMs);
32
- const intervalRef = useRef();
33
- useEffect(() => {
34
- if (!active) return;
35
- intervalRef.current = setInterval(() => {
36
- setMs((prev) => prev - 1e3);
37
- }, 1e3);
38
- return () => clearInterval(intervalRef.current);
39
- }, [active]);
40
- useEffect(() => {
41
- setMs(initialMs);
42
- }, [initialMs]);
43
- const timerColorClass = getTimerColorClass(ms, initialMs);
44
- return /* @__PURE__ */ jsxs(
45
- "span",
46
- {
47
- className: `av-video-timer timer ${timerColorClass} ${className}`,
48
- style,
49
- children: [
50
- icon && /* @__PURE__ */ jsx("i", { className: "icon-clock timer" }),
51
- formatTiempo(ms)
52
- ]
53
- }
54
- );
55
- };
56
- export {
57
- Timer,
58
- formatTiempo
59
- };
60
- //# sourceMappingURL=index.js.map
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from "react";
3
+ import "./styles.css";
4
+ const formatTiempo = (ms) => {
5
+ if (ms == null) return "--:--";
6
+ const absMs = Math.abs(ms);
7
+ const totalSec = Math.floor(absMs / 1e3);
8
+ const min = Math.floor(totalSec / 60);
9
+ const sec = totalSec % 60;
10
+ const formatted = `${min.toString().padStart(2, "0")}:${sec.toString().padStart(2, "0")}`;
11
+ return ms < 0 ? `-${formatted}` : formatted;
12
+ };
13
+ const getTimerColorClass = (ms, maxTime) => {
14
+ if (!maxTime) return "";
15
+ const percent = ms / maxTime;
16
+ if (percent > 0.33) return "timer-green";
17
+ if (percent > 0.15) return "timer-yellow";
18
+ if (percent > 0) return "timer-red";
19
+ if (ms === 0) return "timer-out";
20
+ if (ms < 0) return "timer-over";
21
+ return "";
22
+ };
23
+ const Timer = ({
24
+ initialMinutes = 0,
25
+ icon = true,
26
+ className = "",
27
+ active = true,
28
+ style = {}
29
+ }) => {
30
+ const initialMs = initialMinutes * 60 * 1e3;
31
+ const [ms, setMs] = useState(initialMs);
32
+ const intervalRef = useRef();
33
+ useEffect(() => {
34
+ if (!active) return;
35
+ intervalRef.current = setInterval(() => {
36
+ setMs((prev) => prev - 1e3);
37
+ }, 1e3);
38
+ return () => clearInterval(intervalRef.current);
39
+ }, [active]);
40
+ useEffect(() => {
41
+ setMs(initialMs);
42
+ }, [initialMs]);
43
+ const timerColorClass = getTimerColorClass(ms, initialMs);
44
+ return /* @__PURE__ */ jsxs(
45
+ "span",
46
+ {
47
+ className: `av-video-timer timer ${timerColorClass} ${className}`,
48
+ style,
49
+ children: [
50
+ icon && /* @__PURE__ */ jsx("i", { className: "icon-clock timer" }),
51
+ formatTiempo(ms)
52
+ ]
53
+ }
54
+ );
55
+ };
56
+ export {
57
+ Timer,
58
+ formatTiempo
59
+ };
60
+ //# sourceMappingURL=index.js.map