@embeddable.com/remarkable-ui 0.1.35 → 0.1.37

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 (71) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +2 -2
  2. package/dist/BarChartDefaultPro.js +2 -2
  3. package/dist/BarChartGroupedHorizontalPro.js +2 -2
  4. package/dist/BarChartGroupedPro.js +2 -2
  5. package/dist/BarChartStackedHorizontalPro.js +2 -2
  6. package/dist/BarChartStackedPro.js +2 -2
  7. package/dist/ComparisonPeriodSelectFieldPro.js +2 -2
  8. package/dist/DateRangeSelectFieldPro.js +1 -1
  9. package/dist/DonutChartPro.js +1 -1
  10. package/dist/DonutLabelChartPro.js +1 -1
  11. package/dist/EditorCard-VE-lXcu3.js +76 -0
  12. package/dist/EditorCard-VE-lXcu3.js.map +1 -0
  13. package/dist/LineChartComparisonDefaultPro.js +2 -2
  14. package/dist/LineChartDefaultPro.js +2 -2
  15. package/dist/LineChartGroupedPro.js +2 -2
  16. package/dist/MultiSelectFieldPro.js +1 -1
  17. package/dist/PieChartPro.js +1 -1
  18. package/dist/SingleSelectField-Dzx78rCq.js +107 -0
  19. package/dist/SingleSelectField-Dzx78rCq.js.map +1 -0
  20. package/dist/SingleSelectFieldPro.js +1 -1
  21. package/dist/{bars.utils-D2ZNn4I1.js → bars.utils-CTqUglN7.js} +3 -3
  22. package/dist/{bars.utils-D2ZNn4I1.js.map → bars.utils-CTqUglN7.js.map} +1 -1
  23. package/dist/{charts.newFillGaps.hooks-8oF8pYjr.js → charts.newFillGaps.hooks-YXEKFvmz.js} +2 -2
  24. package/dist/{charts.newFillGaps.hooks-8oF8pYjr.js.map → charts.newFillGaps.hooks-YXEKFvmz.js.map} +1 -1
  25. package/dist/{charts.utils-BFYHGiMZ.js → charts.utils-CgwyTiTH.js} +2 -2
  26. package/dist/{charts.utils-BFYHGiMZ.js.map → charts.utils-CgwyTiTH.js.map} +1 -1
  27. package/dist/component.constants-D59iJ42U.js.map +1 -1
  28. package/dist/embeddable-components.json +12 -12
  29. package/dist/embeddable-lifecycle.js +6 -5
  30. package/dist/{index-DWhYhJ0M.js → index-BGwJ9TYS.js} +2 -2
  31. package/dist/{index-DWhYhJ0M.js.map → index-BGwJ9TYS.js.map} +1 -1
  32. package/dist/{index-CWufi8Tg.js → index-BlqpkSit.js} +3 -3
  33. package/dist/{index-CWufi8Tg.js.map → index-BlqpkSit.js.map} +1 -1
  34. package/dist/index-CVw4TFfQ.js +220 -0
  35. package/dist/index-CVw4TFfQ.js.map +1 -0
  36. package/dist/{index-fW1psiZu.js → index-DKUEiV33.js} +2 -2
  37. package/dist/{index-fW1psiZu.js.map → index-DKUEiV33.js.map} +1 -1
  38. package/dist/{index-BsjrQxtw.js → index-DdEgKFPe.js} +2 -2
  39. package/dist/{index-BsjrQxtw.js.map → index-DdEgKFPe.js.map} +1 -1
  40. package/dist/{index-D10laZQ1.js → index-IjB-3gUH.js} +3 -3
  41. package/dist/{index-D10laZQ1.js.map → index-IjB-3gUH.js.map} +1 -1
  42. package/dist/index.js +12 -12
  43. package/dist/object.utils-Cae_z0QB.js +69 -0
  44. package/dist/object.utils-Cae_z0QB.js.map +1 -0
  45. package/dist/{pies.utils-D6CRlUd4.js → pies.utils-DArVf3EJ.js} +3 -3
  46. package/dist/{pies.utils-D6CRlUd4.js.map → pies.utils-DArVf3EJ.js.map} +1 -1
  47. package/dist/remarkable-pro/theme/styles/styles.utils.d.ts.map +1 -1
  48. package/dist/remarkable-ui/editors/select/MultiSelectField/MultiSelectField.d.ts +2 -2
  49. package/dist/remarkable-ui/editors/select/MultiSelectField/MultiSelectField.d.ts.map +1 -1
  50. package/dist/remarkable-ui/editors/select/MultiSelectField/MultiSelectField.stories.d.ts +1 -0
  51. package/dist/remarkable-ui/editors/select/MultiSelectField/MultiSelectField.stories.d.ts.map +1 -1
  52. package/dist/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.d.ts +2 -2
  53. package/dist/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.d.ts.map +1 -1
  54. package/dist/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.stories.d.ts +1 -0
  55. package/dist/remarkable-ui/editors/select/SingleSelectField/SingleSelectField.stories.d.ts.map +1 -1
  56. package/dist/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListCategory/SelectListCategory.d.ts +7 -0
  57. package/dist/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListCategory/SelectListCategory.d.ts.map +1 -0
  58. package/dist/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListOption/SelectListOption.d.ts +3 -0
  59. package/dist/remarkable-ui/editors/select/shared/SelectList/SelectListOptions/SelectListOption/SelectListOption.d.ts.map +1 -1
  60. package/dist/remarkable-ui/editors/select/shared/SelectList/selectList.utils.d.ts +7 -0
  61. package/dist/remarkable-ui/editors/select/shared/SelectList/selectList.utils.d.ts.map +1 -0
  62. package/dist/remarkable-ui.css +1 -1
  63. package/package.json +1 -1
  64. package/dist/EditorCard-B7s7sQ-B.js +0 -62
  65. package/dist/EditorCard-B7s7sQ-B.js.map +0 -1
  66. package/dist/SingleSelectField-DXVRxF0n.js +0 -96
  67. package/dist/SingleSelectField-DXVRxF0n.js.map +0 -1
  68. package/dist/index-Ba7NiFTr.js +0 -209
  69. package/dist/index-Ba7NiFTr.js.map +0 -1
  70. package/dist/object.utils-BNKDL7Y9.js +0 -67
  71. package/dist/object.utils-BNKDL7Y9.js.map +0 -1
@@ -1,209 +0,0 @@
1
- import { ac as L, j as t, ae as V, ag as w, af as z, ao as U, ar as J, as as K, ap as N, aq as X, an as G, r as H, U as Q } from "./component.constants-D59iJ42U.js";
2
- import { g as W } from "./formatter.utils-DDLdrAl9.js";
3
- import { useTheme as Y } from "@embeddable.com/react";
4
- import { u as Z, d as ee, I as te, S as se, E as le } from "./EditorCard-B7s7sQ-B.js";
5
- import { useState as T, useRef as ae, useEffect as B, useMemo as ne } from "react";
6
- /**
7
- * @license @tabler/icons-react v3.35.0 - MIT
8
- *
9
- * This source code is licensed under the MIT license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */
12
- const oe = [["path", { d: "M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z", key: "svg-0" }]], ce = L("outline", "square", "Square", oe);
13
- /**
14
- * @license @tabler/icons-react v3.35.0 - MIT
15
- *
16
- * This source code is licensed under the MIT license.
17
- * See the LICENSE file in the root directory of this source tree.
18
- */
19
- const ie = [["path", { d: "M18.333 2c1.96 0 3.56 1.537 3.662 3.472l.005 .195v12.666c0 1.96 -1.537 3.56 -3.472 3.662l-.195 .005h-12.666a3.667 3.667 0 0 1 -3.662 -3.472l-.005 -.195v-12.666c0 -1.96 1.537 -3.56 3.472 -3.662l.195 -.005h12.666zm-2.626 7.293a1 1 0 0 0 -1.414 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z", key: "svg-0" }]], re = L("filled", "square-check-filled", "SquareCheckFilled", ie), ue = "_icon_14m1u_1", me = "_buttonMedium_14m1u_6", de = "_buttonSmall_14m1u_14", be = "_buttonText_14m1u_22", pe = "_buttonTextMedium_14m1u_26", xe = "_buttonTextSmall_14m1u_35", b = {
20
- icon: ue,
21
- buttonMedium: me,
22
- buttonSmall: de,
23
- buttonText: be,
24
- buttonTextMedium: pe,
25
- buttonTextSmall: xe
26
- }, _e = ({
27
- variant: u,
28
- startIcon: m,
29
- endIcon: n,
30
- children: d,
31
- size: c,
32
- ...o
33
- }) => /* @__PURE__ */ t.jsxs(
34
- V,
35
- {
36
- variant: u,
37
- ...o,
38
- className: c === "medium" ? b.buttonMedium : b.buttonSmall,
39
- size: c,
40
- children: [
41
- m && /* @__PURE__ */ t.jsx(m, { className: b.icon }),
42
- /* @__PURE__ */ t.jsx(
43
- w,
44
- {
45
- as: "span",
46
- className: z(
47
- b.buttonText,
48
- b[`buttonText${c.charAt(0).toUpperCase() + c.slice(1)}`]
49
- ),
50
- children: d
51
- }
52
- ),
53
- n && /* @__PURE__ */ t.jsx(n, { className: b.icon })
54
- ]
55
- }
56
- ), he = "_submitButton_gpe2a_1", fe = "_selectField_gpe2a_5", I = {
57
- submitButton: he,
58
- selectField: fe
59
- }, je = ({
60
- disabled: u,
61
- isClearable: m,
62
- isLoading: n,
63
- isSearchable: d,
64
- noOptionsMessage: c,
65
- options: o,
66
- placeholder: f,
67
- submitLabel: y = "Apply",
68
- values: s = [],
69
- onChange: j,
70
- onSearch: l,
71
- error: p = !1,
72
- errorMessage: x
73
- }) => {
74
- const [S, _] = T(!1), [h, i] = T(""), [r, v] = T(s), [k, M] = T(""), O = ae(null);
75
- Z(S, O), B(() => {
76
- v(s);
77
- }, [JSON.stringify(s)]), B(() => {
78
- if (n)
79
- return;
80
- if (!s || s.length === 0) {
81
- M("");
82
- return;
83
- }
84
- const e = s.map(
85
- (a) => {
86
- var g;
87
- return ((g = o.find((R) => R.value === a)) == null ? void 0 : g.label) ?? a;
88
- }
89
- );
90
- if (e.length > 0) {
91
- const a = e.join(", ");
92
- M(`(${e.length}) ${a}`);
93
- }
94
- }, [s, o, n]);
95
- const F = ne(() => l ? ee(l) : void 0, [l]), C = d && !l ? o.filter((e) => e.label.toLowerCase().includes(h.toLowerCase())) : o, q = r.every((e) => s.includes(e)) && s.every((e) => r.includes(e)), P = (e, a) => {
96
- e.preventDefault(), a && (r.includes(a) ? v(r.filter((g) => g !== a)) : v([...r, a]));
97
- }, D = (e) => {
98
- i(e), F == null || F(e);
99
- }, E = (e) => {
100
- j(e), _(!1), i(""), l == null || l("");
101
- }, $ = () => {
102
- i(""), l == null || l(""), j([]);
103
- }, A = p || !!x;
104
- return /* @__PURE__ */ t.jsxs("div", { className: I.selectField, children: [
105
- /* @__PURE__ */ t.jsx(
106
- U,
107
- {
108
- open: S,
109
- onOpenChange: _,
110
- disabled: u,
111
- triggerComponent: /* @__PURE__ */ t.jsx(
112
- X,
113
- {
114
- "aria-label": "Select options",
115
- placeholder: f,
116
- disabled: u,
117
- valueLabel: k,
118
- onClear: $,
119
- isClearable: m,
120
- isLoading: n,
121
- error: A
122
- }
123
- ),
124
- children: /* @__PURE__ */ t.jsxs(J, { children: [
125
- d && /* @__PURE__ */ t.jsx(
126
- K,
127
- {
128
- ref: O,
129
- startIcon: te,
130
- "aria-label": "Search options",
131
- placeholder: "Search…",
132
- role: "searchbox",
133
- value: h,
134
- onKeyDown: (e) => e.stopPropagation(),
135
- onChange: D
136
- }
137
- ),
138
- /* @__PURE__ */ t.jsxs(se, { disabled: n, children: [
139
- C.map((e) => /* @__PURE__ */ t.jsx(
140
- N,
141
- {
142
- onClick: (a) => P(a, e.value),
143
- startIcon: r.includes(e.value) ? /* @__PURE__ */ t.jsx(re, {}) : /* @__PURE__ */ t.jsx(ce, {}),
144
- ...e
145
- },
146
- (e == null ? void 0 : e.value) ?? e.label
147
- )),
148
- c && C.length === 0 && /* @__PURE__ */ t.jsx(N, { disabled: !0, value: "empty", label: c })
149
- ] }),
150
- /* @__PURE__ */ t.jsx(
151
- _e,
152
- {
153
- className: I.submitButton,
154
- disabled: q || n,
155
- variant: "primary",
156
- size: "medium",
157
- onClick: () => E(r),
158
- role: "button",
159
- children: y
160
- }
161
- )
162
- ] })
163
- }
164
- ),
165
- x && /* @__PURE__ */ t.jsx(G, { message: x })
166
- ] });
167
- }, Se = 200, ge = (u) => {
168
- var _, h;
169
- const m = Y(), n = W(m), {
170
- title: d,
171
- description: c,
172
- dimension: o,
173
- optionalSecondDimension: f,
174
- placeholder: y,
175
- results: s,
176
- selectedValues: j,
177
- setSearchValue: l,
178
- onChange: p
179
- } = H(u), x = ((_ = s.data) == null ? void 0 : _.map((i) => ({
180
- value: f ? i[f.name] : i[o.name],
181
- label: n.data(o, i[o.name])
182
- }))) ?? [], S = !s.isLoading && (((h = s.data) == null ? void 0 : h.length) ?? 0) === 0;
183
- return /* @__PURE__ */ t.jsx(le, { title: d, subtitle: c, children: /* @__PURE__ */ t.jsx(
184
- je,
185
- {
186
- isClearable: !0,
187
- isSearchable: !0,
188
- isLoading: s.isLoading,
189
- values: j ?? [],
190
- options: x,
191
- placeholder: y,
192
- noOptionsMessage: S ? Q.t("common.noOptionsFound") : void 0,
193
- onChange: (i) => p == null ? void 0 : p(i),
194
- onSearch: l
195
- }
196
- ) });
197
- }, Oe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
198
- __proto__: null,
199
- MAX_OPTIONS: Se,
200
- default: ge
201
- }, Symbol.toStringTag, { value: "Module" }));
202
- export {
203
- _e as B,
204
- Se as M,
205
- ge as a,
206
- je as b,
207
- Oe as i
208
- };
209
- //# sourceMappingURL=index-Ba7NiFTr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Ba7NiFTr.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconSquare.mjs","../node_modules/@tabler/icons-react/dist/esm/icons/IconSquareCheckFilled.mjs","../src/remarkable-ui/shared/Button/Button.tsx","../src/remarkable-ui/editors/select/MultiSelectField/MultiSelectField.tsx","../src/remarkable-pro/components/editors/MultiSelectFieldPro/index.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.35.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z\", \"key\": \"svg-0\" }]];\nconst IconSquare = createReactComponent(\"outline\", \"square\", \"Square\", __iconNode);\n\nexport { __iconNode, IconSquare as default };\n//# sourceMappingURL=IconSquare.mjs.map\n","/**\n * @license @tabler/icons-react v3.35.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M18.333 2c1.96 0 3.56 1.537 3.662 3.472l.005 .195v12.666c0 1.96 -1.537 3.56 -3.472 3.662l-.195 .005h-12.666a3.667 3.667 0 0 1 -3.662 -3.472l-.005 -.195v-12.666c0 -1.96 1.537 -3.56 3.472 -3.662l.195 -.005h12.666zm-2.626 7.293a1 1 0 0 0 -1.414 0l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.32 1.497l2 2l.094 .083a1 1 0 0 0 1.32 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z\", \"key\": \"svg-0\" }]];\nconst IconSquareCheckFilled = createReactComponent(\"filled\", \"square-check-filled\", \"SquareCheckFilled\", __iconNode);\n\nexport { __iconNode, IconSquareCheckFilled as default };\n//# sourceMappingURL=IconSquareCheckFilled.mjs.map\n","import { TablerIcon } from '@tabler/icons-react';\nimport styles from './Button.module.css';\nimport { BaseButton, type BaseButtonProps } from '../BaseButton';\nimport { Typography } from '../Typography/Typography';\nimport clsx from 'clsx';\n\ntype ButtonProps = BaseButtonProps & {\n startIcon?: TablerIcon;\n endIcon?: TablerIcon;\n children: string;\n size: 'small' | 'medium';\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n variant,\n startIcon: StartIcon,\n endIcon: EndIcon,\n children,\n size,\n ...props\n}) => {\n return (\n <BaseButton\n variant={variant}\n {...props}\n className={size === 'medium' ? styles.buttonMedium : styles.buttonSmall}\n size={size}\n >\n {StartIcon && <StartIcon className={styles.icon} />}\n <Typography\n as=\"span\"\n className={clsx(\n styles.buttonText,\n styles[`buttonText${size.charAt(0).toUpperCase() + size.slice(1)}`],\n )}\n >\n {children}\n </Typography>\n {EndIcon && <EndIcon className={styles.icon} />}\n </BaseButton>\n );\n};\n","import { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n SelectListOption,\n SelectListOptionProps,\n} from '../shared/SelectList/SelectListOptions/SelectListOption/SelectListOption';\nimport { debounce } from '../../../utils/debounce.utils';\nimport { Dropdown } from '../../../shared/Dropdown/Dropdown';\nimport { SelectButton } from '../shared/SelectButton/SelectButton';\nimport { SelectList } from '../shared/SelectList/SelectList';\nimport { TextField } from '../../TextField/TextField';\nimport { SelectListOptions } from '../shared/SelectList/SelectListOptions/SelectListOptions';\nimport { IconSearch, IconSquare, IconSquareCheckFilled } from '@tabler/icons-react';\nimport { Button } from '../../../shared/Button/Button';\nimport styles from './MultiSelectField.module.css';\nimport { useSelectSearchFocus } from '../shared/useSelectSearchFocus.hook';\nimport { FieldErrorMessage } from '../../../shared/FieldErrorMessage/FieldErrorMessage';\n\nexport type MultiSelectFieldProps = {\n disabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isSearchable?: boolean;\n noOptionsMessage?: string;\n options: SelectListOptionProps[];\n placeholder?: string;\n submitLabel?: string;\n values?: string[];\n onChange: (value: string[]) => void;\n onSearch?: (search: string) => void;\n error?: boolean;\n errorMessage?: string;\n};\n\nexport const MultiSelectField: FC<MultiSelectFieldProps> = ({\n disabled,\n isClearable,\n isLoading,\n isSearchable,\n noOptionsMessage,\n options,\n placeholder,\n submitLabel = 'Apply',\n values = [],\n onChange,\n onSearch,\n error = false,\n errorMessage,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [searchValue, setSearchValue] = useState<string>('');\n const [preValues, setPreValues] = useState<string[]>(values);\n const [selectedLabel, setSelectedLabel] = useState<string>('');\n\n const searchFieldRef = useRef<HTMLInputElement>(null);\n useSelectSearchFocus(isOpen, searchFieldRef);\n\n useEffect(() => {\n setPreValues(values);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(values)]);\n\n useEffect(() => {\n if (isLoading) {\n return;\n }\n\n if (!values || values.length === 0) {\n setSelectedLabel('');\n return;\n }\n const selectedOptions = values.map(\n (value) => options.find((o) => o.value === value)?.label ?? value,\n );\n\n if (selectedOptions.length > 0) {\n const newLabel = selectedOptions.join(', ');\n setSelectedLabel(`(${selectedOptions.length}) ${newLabel}`);\n }\n }, [values, options, isLoading]);\n\n const debouncedSearch = useMemo(() => (onSearch ? debounce(onSearch) : undefined), [onSearch]);\n\n const displayOptions =\n isSearchable && !onSearch\n ? options.filter((option) => option.label.toLowerCase().includes(searchValue.toLowerCase()))\n : options;\n\n const isSubmitDisabled =\n preValues.every((preValue) => values.includes(preValue)) &&\n values.every((value) => preValues.includes(value));\n\n const handleSelectOption = (\n e: React.MouseEvent<HTMLDivElement, MouseEvent>,\n newValue?: string,\n ) => {\n e.preventDefault();\n\n if (!newValue) return;\n\n if (preValues.includes(newValue)) {\n setPreValues(preValues.filter((v) => v !== newValue));\n } else {\n setPreValues([...preValues, newValue]);\n }\n };\n\n const handleSearch = (newSearch: string) => {\n setSearchValue(newSearch);\n debouncedSearch?.(newSearch);\n };\n\n const handleSave = (newValues: string[]) => {\n onChange(newValues);\n setIsOpen(false);\n setSearchValue('');\n onSearch?.('');\n };\n\n const handleClearAll = () => {\n setSearchValue('');\n onSearch?.('');\n onChange([]);\n };\n\n const hasError = error || !!errorMessage;\n\n return (\n <div className={styles.selectField}>\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n disabled={disabled}\n triggerComponent={\n <SelectButton\n aria-label=\"Select options\"\n placeholder={placeholder}\n disabled={disabled}\n valueLabel={selectedLabel}\n onClear={handleClearAll}\n isClearable={isClearable}\n isLoading={isLoading}\n error={hasError}\n />\n }\n >\n <SelectList>\n {isSearchable && (\n <TextField\n ref={searchFieldRef}\n startIcon={IconSearch}\n aria-label=\"Search options\"\n placeholder=\"Search…\"\n role=\"searchbox\"\n value={searchValue}\n onKeyDown={(e) => e.stopPropagation()}\n onChange={handleSearch}\n />\n )}\n <SelectListOptions disabled={isLoading}>\n {displayOptions.map((option) => (\n <SelectListOption\n key={option?.value ?? option.label}\n onClick={(e) => handleSelectOption(e, option.value)}\n startIcon={\n preValues.includes(option.value!) ? <IconSquareCheckFilled /> : <IconSquare />\n }\n {...option}\n />\n ))}\n {noOptionsMessage && displayOptions.length === 0 && (\n <SelectListOption disabled value=\"empty\" label={noOptionsMessage} />\n )}\n </SelectListOptions>\n <Button\n className={styles.submitButton}\n disabled={isSubmitDisabled || isLoading}\n variant=\"primary\"\n size=\"medium\"\n onClick={() => handleSave(preValues)}\n role=\"button\"\n >\n {submitLabel}\n </Button>\n </SelectList>\n </Dropdown>\n {errorMessage && <FieldErrorMessage message={errorMessage} />}\n </div>\n );\n};\n","import { DataResponse, Dimension } from '@embeddable.com/core';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../theme/theme.types';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { resolveI18nProps } from '../../component.utils';\nimport { i18n } from '../../../theme/i18n/i18n';\nimport { MultiSelectField } from '../../../../remarkable-ui';\n\nexport const MAX_OPTIONS = 200;\n\ntype MultiSelectFieldProProps = {\n title?: string;\n description?: string;\n dimension: Dimension;\n optionalSecondDimension?: Dimension;\n placeholder?: string;\n results: DataResponse;\n selectedValues: string[];\n maxOptions?: number;\n setSearchValue: (search: string) => void;\n onChange?: (newValues: string[]) => void;\n};\n\nconst MultiSelectFieldPro = (props: MultiSelectFieldProProps) => {\n const theme: Theme = useTheme() as Theme;\n const themeFormatter = getThemeFormatter(theme);\n const {\n title,\n description,\n dimension,\n optionalSecondDimension,\n placeholder,\n results,\n selectedValues,\n setSearchValue,\n onChange,\n } = resolveI18nProps(props);\n\n const options =\n results.data?.map((data) => {\n return {\n value: optionalSecondDimension ? data[optionalSecondDimension.name] : data[dimension.name],\n label: themeFormatter.data(dimension, data[dimension.name]),\n };\n }) ?? [];\n\n const showNoOptionsMessage = Boolean(!results.isLoading && (results.data?.length ?? 0) === 0);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <MultiSelectField\n isClearable\n isSearchable\n isLoading={results.isLoading}\n values={selectedValues ?? []}\n options={options}\n placeholder={placeholder}\n noOptionsMessage={showNoOptionsMessage ? i18n.t('common.noOptionsFound') : undefined}\n onChange={(newValues) => onChange?.(newValues)}\n onSearch={setSearchValue}\n />\n </EditorCard>\n );\n};\n\nexport default MultiSelectFieldPro;\n"],"names":["__iconNode","IconSquare","createReactComponent","IconSquareCheckFilled","Button","variant","StartIcon","EndIcon","children","size","props","jsxs","BaseButton","styles","jsx","Typography","clsx","MultiSelectField","disabled","isClearable","isLoading","isSearchable","noOptionsMessage","options","placeholder","submitLabel","values","onChange","onSearch","error","errorMessage","isOpen","setIsOpen","useState","searchValue","setSearchValue","preValues","setPreValues","selectedLabel","setSelectedLabel","searchFieldRef","useRef","useSelectSearchFocus","useEffect","selectedOptions","value","_a","o","newLabel","debouncedSearch","useMemo","debounce","displayOptions","option","isSubmitDisabled","preValue","handleSelectOption","newValue","v","handleSearch","newSearch","handleSave","newValues","handleClearAll","hasError","Dropdown","SelectButton","SelectList","TextField","IconSearch","SelectListOptions","SelectListOption","e","FieldErrorMessage","MAX_OPTIONS","MultiSelectFieldPro","theme","useTheme","themeFormatter","getThemeFormatter","title","description","dimension","optionalSecondDimension","results","selectedValues","resolveI18nProps","data","showNoOptionsMessage","_b","EditorCard","i18n"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,67 +0,0 @@
1
- import { g as j } from "./utc-B2gCnkBk.js";
2
- var h = { exports: {} }, m = h.exports, l;
3
- function S() {
4
- return l || (l = 1, (function(r, o) {
5
- (function(e, s) {
6
- r.exports = s();
7
- })(m, (function() {
8
- var e = "day";
9
- return function(s, t, n) {
10
- var y = function(i) {
11
- return i.add(4 - i.isoWeekday(), e);
12
- }, f = t.prototype;
13
- f.isoWeekYear = function() {
14
- return y(this).year();
15
- }, f.isoWeek = function(i) {
16
- if (!this.$utils().u(i)) return this.add(7 * (i - this.isoWeek()), e);
17
- var a, u, c, p, O = y(this), b = (a = this.isoWeekYear(), u = this.$u, c = (u ? n.utc : n)().year(a).startOf("year"), p = 4 - c.isoWeekday(), c.isoWeekday() > 4 && (p += 7), c.add(p, e));
18
- return O.diff(b, "week") + 1;
19
- }, f.isoWeekday = function(i) {
20
- return this.$utils().u(i) ? this.day() || 7 : this.day(this.day() % 7 ? i : i - 7);
21
- };
22
- var k = f.startOf;
23
- f.startOf = function(i, a) {
24
- var u = this.$utils(), c = !!u.u(a) || a;
25
- return u.p(i) === "isoweek" ? c ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : k.bind(this)(i, a);
26
- };
27
- };
28
- }));
29
- })(h)), h.exports;
30
- }
31
- var v = S();
32
- const $ = /* @__PURE__ */ j(v), d = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), W = "embeddable", w = () => {
33
- const r = {};
34
- for (const [o, e] of d)
35
- r[o] = Object.fromEntries(e);
36
- sessionStorage.setItem(W, JSON.stringify(r));
37
- }, x = () => {
38
- const r = sessionStorage.getItem(W);
39
- if (!r) return;
40
- const o = JSON.parse(r);
41
- for (const e in o) {
42
- const s = new Map(Object.entries(o[e] ?? {}));
43
- d.set(e, s), g.set(e, new Set(s.values()));
44
- }
45
- };
46
- x();
47
- const A = (r, o, e, s) => {
48
- d.has(r) || (d.set(r, /* @__PURE__ */ new Map()), g.set(r, /* @__PURE__ */ new Set()));
49
- const t = d.get(r);
50
- if (t.has(o)) return t.get(o);
51
- const n = e[s % e.length];
52
- if (typeof n != "string")
53
- throw new Error("No valid color found in palette");
54
- return t.set(o, n), w(), n;
55
- }, E = (r) => {
56
- const o = (t) => t && typeof t == "object" && !Array.isArray(t) ? "{" + Object.keys(t).sort().map((n) => `"${n}":${o(t[n])}`).join(",") + "}" : Array.isArray(t) ? "[" + t.map(o).join(",") + "]" : JSON.stringify(t), e = o(r);
57
- let s = 2166136261;
58
- for (let t = 0; t < e.length; t++)
59
- s ^= e.charCodeAt(t), s += (s << 1) + (s << 4) + (s << 7) + (s << 8) + (s << 24);
60
- return (s >>> 0).toString(16);
61
- };
62
- export {
63
- A as a,
64
- E as g,
65
- $ as i
66
- };
67
- //# sourceMappingURL=object.utils-BNKDL7Y9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.utils-BNKDL7Y9.js","sources":["../node_modules/dayjs/plugin/isoWeek.js","../src/remarkable-pro/theme/styles/styles.utils.ts","../src/remarkable-pro/utils.ts/object.utils.ts"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","const generateCssVariables = (variables: Record<string, string>) => {\n let textContent = '';\n Object.keys(variables).forEach((key) => {\n const value = variables[key];\n textContent += `${key}: ${value};\\n`;\n });\n return textContent;\n};\n\n// TODO: check the possibility of injecting via CSS (future)\nexport const injectCssVariables = (styles: Record<string, string>) => {\n const css = `:root {\\n${generateCssVariables(styles)}}`;\n const styleId = 'remarkable-ui-embeddable-style';\n let styleEl = document.getElementById(styleId) as HTMLStyleElement | null;\n\n if (styleEl) {\n // Overwrite the old vars\n styleEl.textContent = css;\n } else {\n styleEl = document.createElement('style');\n styleEl.id = styleId;\n styleEl.textContent = css;\n document.head.appendChild(styleEl);\n }\n\n return () => styleEl?.remove();\n};\n\nconst colorsMap = new Map<string, Map<string, string>>();\nconst colorsInUse = new Map<string, Set<string>>();\n\n/* \nWe save the colors to session storage so that they are persistent across refreshes. \nThis is important, for example, if the user is looking at multiple tabs, or if the user refreshes the page.\n*/\nconst STORAGE_KEY = 'embeddable';\n\nconst saveColorsMap = () => {\n const obj: Record<string, Record<string, string>> = {};\n for (const [cat, m] of colorsMap) {\n obj[cat] = Object.fromEntries(m);\n }\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify(obj));\n};\n\nconst loadColorMap = () => {\n const data = sessionStorage.getItem(STORAGE_KEY);\n if (!data) return;\n const obj: Record<string, Record<string, string>> = JSON.parse(data);\n for (const cat in obj) {\n const m = new Map(Object.entries(obj[cat] ?? {}));\n colorsMap.set(cat, m);\n colorsInUse.set(cat, new Set(m.values()));\n }\n};\n\nloadColorMap();\n\nexport const getColor = (key: string, value: string, palette: string[], idx: number): string => {\n // Initialize structures if needed\n if (!colorsMap.has(key)) {\n colorsMap.set(key, new Map());\n colorsInUse.set(key, new Set());\n }\n\n const catMap = colorsMap.get(key)!;\n\n // Return existing color if already assigned\n if (catMap.has(value)) return catMap.get(value)!;\n\n // Find first colorsInUse color, fallback to indexed one\n const color = palette[idx % palette.length];\n\n if (typeof color !== 'string') {\n throw new Error('No valid color found in palette');\n }\n\n // Save mapping and mark as colorsInUse\n catMap.set(value, color);\n saveColorsMap();\n\n return color;\n};\n","export const getObjectStableKey = (obj: unknown): string => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stableStringify = (o: any): string => {\n if (o && typeof o === 'object' && !Array.isArray(o)) {\n return (\n '{' +\n Object.keys(o)\n .sort()\n .map((k) => `\"${k}\":${stableStringify(o[k])}`)\n .join(',') +\n '}'\n );\n } else if (Array.isArray(o)) {\n return '[' + o.map(stableStringify).join(',') + ']';\n }\n return JSON.stringify(o);\n };\n\n const json = stableStringify(obj);\n\n // FNV-1a 32-bit hash\n let hash = 0x811c9dc5;\n for (let i = 0; i < json.length; i++) {\n hash ^= json.charCodeAt(i);\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n }\n\n return (hash >>> 0).toString(16);\n};\n"],"names":["t","module","this","i","s","a","d","n","o","r","u","e","colorsMap","colorsInUse","STORAGE_KEY","saveColorsMap","obj","cat","m","loadColorMap","data","getColor","key","value","palette","idx","catMap","color","getObjectStableKey","stableStringify","k","json","hash"],"mappings":"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","x_google_ignoreList":[0]}