@ryuzaki13/react-foundation-ui 1.1.7 → 1.1.8

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/advanced-search/index.js +136 -136
  2. package/dist/base-table/index.js +2 -2
  3. package/dist/chunks/{CalendarView-C0gJvre1.js → CalendarView-KCkhCtK-.js} +101 -101
  4. package/dist/chunks/{CalendarView-C0gJvre1.js.map → CalendarView-KCkhCtK-.js.map} +1 -1
  5. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +27 -0
  6. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +1 -0
  7. package/dist/chunks/{TextEditorLexicalClient-DYZ32dnX.js → TextEditorLexicalClient-DeBA6fQX.js} +157 -157
  8. package/dist/chunks/{TextEditorLexicalClient-DYZ32dnX.js.map → TextEditorLexicalClient-DeBA6fQX.js.map} +1 -1
  9. package/dist/chunks/{base-table-BXKFSgIk.js → base-table-Dv9i3CAT.js} +73 -73
  10. package/dist/chunks/{base-table-BXKFSgIk.js.map → base-table-Dv9i3CAT.js.map} +1 -1
  11. package/dist/chunks/{date-input-DKkW7_uw.js → date-input-DT9E8dhk.js} +44 -44
  12. package/dist/chunks/{date-input-DKkW7_uw.js.map → date-input-DT9E8dhk.js.map} +1 -1
  13. package/dist/chunks/{date-range-preset-select-UgsfaOeM.js → date-range-preset-select-BLnY47cv.js} +20 -20
  14. package/dist/chunks/{date-range-preset-select-UgsfaOeM.js.map → date-range-preset-select-BLnY47cv.js.map} +1 -1
  15. package/dist/chunks/{input-CZLUUggm.js → input-BCJfUdK_.js} +43 -43
  16. package/dist/chunks/{input-CZLUUggm.js.map → input-BCJfUdK_.js.map} +1 -1
  17. package/dist/chunks/{input-files-aB8iaqGk.js → input-files-Dcc5K-_1.js} +2 -2
  18. package/dist/chunks/{input-files-aB8iaqGk.js.map → input-files-Dcc5K-_1.js.map} +1 -1
  19. package/dist/chunks/{input-search-eMvnvgV0.js → input-search-B7HmrAM7.js} +2 -2
  20. package/dist/chunks/{input-search-eMvnvgV0.js.map → input-search-B7HmrAM7.js.map} +1 -1
  21. package/dist/chunks/{multi-select-DaOKgHKE.js → multi-select-BCpRct-k.js} +105 -104
  22. package/dist/chunks/{multi-select-DaOKgHKE.js.map → multi-select-BCpRct-k.js.map} +1 -1
  23. package/dist/chunks/{picker-BZ05h_ZJ.js → picker-DTZk09Ag.js} +27 -27
  24. package/dist/chunks/{picker-BZ05h_ZJ.js.map → picker-DTZk09Ag.js.map} +1 -1
  25. package/dist/chunks/select-Bd48kVI3.js +328 -0
  26. package/dist/chunks/{select-Dj3FfpS0.js.map → select-Bd48kVI3.js.map} +1 -1
  27. package/dist/chunks/{table-BdpMzhLH.js → table-BtXVqa2I.js} +10 -10
  28. package/dist/chunks/{table-BdpMzhLH.js.map → table-BtXVqa2I.js.map} +1 -1
  29. package/dist/chunks/{table-column-interactions-6RGjmiI5.js → table-column-interactions-BGd5Lwy9.js} +19 -19
  30. package/dist/chunks/{table-column-interactions-6RGjmiI5.js.map → table-column-interactions-BGd5Lwy9.js.map} +1 -1
  31. package/dist/chunks/{useODataSelectBase-BxAvhDww.js → useODataSelectBase-wZ07hQFv.js} +10 -10
  32. package/dist/chunks/{useODataSelectBase-BxAvhDww.js.map → useODataSelectBase-wZ07hQFv.js.map} +1 -1
  33. package/dist/date-input/index.js +2 -2
  34. package/dist/date-range-preset-select/index.js +1 -1
  35. package/dist/date-time-input/index.js +41 -41
  36. package/dist/drop-zone/index.js +1 -1
  37. package/dist/errors/index.js +39 -39
  38. package/dist/image/index.js +2 -2
  39. package/dist/input/index.js +1 -1
  40. package/dist/input-date-time/index.js +1 -1
  41. package/dist/input-file/index.js +1 -1
  42. package/dist/input-files/index.js +1 -1
  43. package/dist/input-image/index.js +1 -1
  44. package/dist/input-search/index.js +1 -1
  45. package/dist/layout-picker/index.js +1 -1
  46. package/dist/multi-select/index.js +1 -1
  47. package/dist/notifications/index.js +26 -26
  48. package/dist/period-select/index.js +19 -19
  49. package/dist/picker/index.js +1 -1
  50. package/dist/preset-range-date-input/index.js +2 -2
  51. package/dist/preset-select/index.js +1 -1
  52. package/dist/select/index.js +1 -1
  53. package/dist/simple-table/index.js +1 -1
  54. package/dist/slider/index.js +312 -312
  55. package/dist/slider/index.js.map +1 -1
  56. package/dist/state-select/index.js +14 -14
  57. package/dist/styles.css +1 -1
  58. package/dist/table/index.js +1 -1
  59. package/dist/table-column-interactions/index.js +1 -1
  60. package/dist/tag-input/index.js +1 -1
  61. package/dist/text/index.js +10 -10
  62. package/dist/text-editor/index.js +1 -1
  63. package/dist/textarea/index.js +1 -1
  64. package/dist/tree-select/index.js +240 -239
  65. package/dist/tree-select/index.js.map +1 -1
  66. package/dist/tree-table/index.js +15 -15
  67. package/package.json +2 -1
  68. package/storybook-static/project.json +1 -1
  69. package/dist/chunks/SelectOptionContent-lfEtHXfO.js +0 -1132
  70. package/dist/chunks/SelectOptionContent-lfEtHXfO.js.map +0 -1
  71. package/dist/chunks/select-Dj3FfpS0.js +0 -327
@@ -1,31 +1,31 @@
1
1
  import { useRef as e } from "react";
2
2
  import { cn as t } from "@ryuzaki13/react-foundation-lib/utils";
3
- import { DEFAULT_TABLE_COLUMN_MIN_WIDTH as n, normalizeTableColumnWidth as r } from "@ryuzaki13/react-foundation-lib/table";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { DEFAULT_TABLE_COLUMN_MIN_WIDTH as i, normalizeTableColumnWidth as a } from "@ryuzaki13/react-foundation-lib/table";
5
5
  import { useSortable as o } from "@dnd-kit/sortable";
6
6
  import { CSS as s } from "@dnd-kit/utilities";
7
7
  var c = { resizeHandle: "YJUVjb" }, l = 8;
8
8
  function u(e, t) {
9
9
  let n = e.closest("th")?.getBoundingClientRect().width;
10
- return r(typeof n == "number" && Number.isFinite(n) ? n : t, t);
10
+ return a(typeof n == "number" && Number.isFinite(n) ? n : t, t);
11
11
  }
12
- function d({ columnId: a, className: o, minWidth: s, keyboardStep: d = l, ariaLabel: f = "Изменить ширину колонки", getStartWidth: p, onResize: m, onResizeEnd: h, onReset: g }) {
13
- let _ = s ?? n, v = e(0), y = e(0), b = e(0), x = e(!1), S = e(!1), C = (e) => r(p?.(a, e) ?? u(e, _), _), w = (e) => {
12
+ function d({ columnId: r, className: o, minWidth: s, keyboardStep: d = l, ariaLabel: f = "Изменить ширину колонки", getStartWidth: p, onResize: m, onResizeEnd: h, onReset: g }) {
13
+ let _ = s ?? i, v = e(0), y = e(0), b = e(0), x = e(!1), S = e(!1), C = (e) => a(p?.(r, e) ?? u(e, _), _), w = (e) => {
14
14
  e.button !== 0 && e.pointerType === "mouse" || (x.current = !0, S.current = !1, v.current = e.clientX, y.current = C(e.currentTarget), b.current = y.current, e.currentTarget.setPointerCapture(e.pointerId), e.preventDefault(), e.stopPropagation());
15
15
  }, T = (e) => {
16
16
  if (!x.current) return;
17
- let t = r(y.current + e.clientX - v.current, _);
18
- b.current = t, S.current = !0, m(a, t), e.preventDefault(), e.stopPropagation();
17
+ let t = a(y.current + e.clientX - v.current, _);
18
+ b.current = t, S.current = !0, m(r, t), e.preventDefault(), e.stopPropagation();
19
19
  }, E = (e) => {
20
20
  if (x.current) {
21
- x.current = !1, S.current && h?.(a, b.current);
21
+ x.current = !1, S.current && h?.(r, b.current);
22
22
  try {
23
23
  e.currentTarget.releasePointerCapture(e.pointerId);
24
24
  } catch {}
25
25
  e.preventDefault(), e.stopPropagation();
26
26
  }
27
27
  };
28
- return /* @__PURE__ */ i("div", {
28
+ return /* @__PURE__ */ n("div", {
29
29
  role: "separator",
30
30
  "aria-label": f,
31
31
  "aria-orientation": "vertical",
@@ -37,14 +37,14 @@ function d({ columnId: a, className: o, minWidth: s, keyboardStep: d = l, ariaLa
37
37
  onKeyDown: (e) => {
38
38
  if (e.key !== "ArrowLeft" && e.key !== "ArrowRight" && e.key !== "Home") return;
39
39
  if (e.preventDefault(), e.stopPropagation(), e.key === "Home") {
40
- g?.(a);
40
+ g?.(r);
41
41
  return;
42
42
  }
43
- let t = e.key === "ArrowRight" ? 1 : -1, n = r(C(e.currentTarget) + t * d, _);
44
- m(a, n), h?.(a, n);
43
+ let t = e.key === "ArrowRight" ? 1 : -1, n = a(C(e.currentTarget) + t * d, _);
44
+ m(r, n), h?.(r, n);
45
45
  },
46
46
  onDoubleClick: (e) => {
47
- e.preventDefault(), e.stopPropagation(), g?.(a);
47
+ e.preventDefault(), e.stopPropagation(), g?.(r);
48
48
  },
49
49
  className: t(c.resizeHandle, o)
50
50
  });
@@ -54,10 +54,10 @@ function d({ columnId: a, className: o, minWidth: s, keyboardStep: d = l, ariaLa
54
54
  function f(e, t) {
55
55
  return typeof e == "function" ? e(t) : e;
56
56
  }
57
- function p({ columnId: e, children: n, dragDisabled: r = !1, draggingClassName: c, resizeHandle: l, className: u, style: p, ...m }) {
57
+ function p({ columnId: e, children: i, dragDisabled: a = !1, draggingClassName: c, resizeHandle: l, className: u, style: p, ...m }) {
58
58
  let { attributes: h, listeners: g, setActivatorNodeRef: _, setNodeRef: v, transform: y, isDragging: b, rect: x } = o({
59
59
  id: e,
60
- disabled: r
60
+ disabled: a
61
61
  }), S = b ? x.current?.width : void 0, C = {
62
62
  transform: s.Translate.toString(y),
63
63
  zIndex: b ? "calc(var(--z-header) + 1)" : void 0,
@@ -70,18 +70,18 @@ function p({ columnId: e, children: n, dragDisabled: r = !1, draggingClassName:
70
70
  attributes: h,
71
71
  listeners: g,
72
72
  setActivatorElement: _,
73
- disabled: r,
73
+ disabled: a,
74
74
  isDragging: b
75
75
  };
76
- return /* @__PURE__ */ a("th", {
76
+ return /* @__PURE__ */ r("th", {
77
77
  ...m,
78
78
  ref: v,
79
79
  className: t(u, b && c),
80
80
  style: C,
81
- children: [f(n, w), l ? /* @__PURE__ */ i(d, { ...l }) : null]
81
+ children: [f(i, w), l ? /* @__PURE__ */ n(d, { ...l }) : null]
82
82
  });
83
83
  }
84
84
  //#endregion
85
85
  export { d as n, p as t };
86
86
 
87
- //# sourceMappingURL=table-column-interactions-6RGjmiI5.js.map
87
+ //# sourceMappingURL=table-column-interactions-BGd5Lwy9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-column-interactions-6RGjmiI5.js","names":[],"sources":["../../src/table-column-interactions/TableColumnInteractions.module.scss","../../src/table-column-interactions/TableColumnResizeHandle.tsx","../../src/table-column-interactions/TableHeaderInteractionCell.tsx"],"sourcesContent":[".resizeHandle {\n\tcursor: col-resize;\n\ttouch-action: none;\n\tuser-select: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\twidth: 6px;\n\tz-index: 1;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground: var(--focus-ring);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--focus);\n\t\toutline-offset: calc(var(--focus-offset) * -1);\n\t}\n}\n","import { useRef, type KeyboardEvent as ReactKeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\";\n\nimport { DEFAULT_TABLE_COLUMN_MIN_WIDTH, normalizeTableColumnWidth } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./TableColumnInteractions.module.scss\";\n\nconst DEFAULT_KEYBOARD_RESIZE_STEP = 8;\n\nexport type TableColumnResizeHandleProps = {\n\tcolumnId: string;\n\tclassName?: string;\n\tminWidth?: number;\n\tkeyboardStep?: number;\n\tariaLabel?: string;\n\tgetStartWidth?: (columnId: string, element: HTMLElement) => number;\n\tonResize: (columnId: string, width: number) => void;\n\tonResizeEnd?: (columnId: string, width: number) => void;\n\tonReset?: (columnId: string) => void;\n};\n\nfunction resolveHeaderCellWidth(element: HTMLElement, minWidth: number): number {\n\tconst headerCell = element.closest(\"th\");\n\tconst width = headerCell?.getBoundingClientRect().width;\n\n\treturn normalizeTableColumnWidth(typeof width === \"number\" && Number.isFinite(width) ? width : minWidth, minWidth);\n}\n\nexport function TableColumnResizeHandle({\n\tcolumnId,\n\tclassName,\n\tminWidth,\n\tkeyboardStep = DEFAULT_KEYBOARD_RESIZE_STEP,\n\tariaLabel = \"Изменить ширину колонки\",\n\tgetStartWidth,\n\tonResize,\n\tonResizeEnd,\n\tonReset\n}: TableColumnResizeHandleProps) {\n\tconst resolvedMinWidth = minWidth ?? DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst startXRef = useRef(0);\n\tconst startWidthRef = useRef(0);\n\tconst lastWidthRef = useRef(0);\n\tconst activeRef = useRef(false);\n\tconst movedRef = useRef(false);\n\n\tconst resolveStartWidth = (element: HTMLElement) => {\n\t\tconst width = getStartWidth?.(columnId, element) ?? resolveHeaderCellWidth(element, resolvedMinWidth);\n\n\t\treturn normalizeTableColumnWidth(width, resolvedMinWidth);\n\t};\n\n\tconst handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (event.button !== 0 && event.pointerType === \"mouse\") return;\n\n\t\tactiveRef.current = true;\n\t\tmovedRef.current = false;\n\t\tstartXRef.current = event.clientX;\n\t\tstartWidthRef.current = resolveStartWidth(event.currentTarget);\n\t\tlastWidthRef.current = startWidthRef.current;\n\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tconst nextWidth = normalizeTableColumnWidth(startWidthRef.current + event.clientX - startXRef.current, resolvedMinWidth);\n\t\tlastWidthRef.current = nextWidth;\n\t\tmovedRef.current = true;\n\t\tonResize(columnId, nextWidth);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst finishPointerResize = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tactiveRef.current = false;\n\n\t\tif (movedRef.current) {\n\t\t\tonResizeEnd?.(columnId, lastWidthRef.current);\n\t\t}\n\n\t\ttry {\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId);\n\t\t} catch {\n\t\t\t// Pointer capture мог быть сброшен браузером при отмене жеста.\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.key === \"Home\") {\n\t\t\tonReset?.(columnId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst direction = event.key === \"ArrowRight\" ? 1 : -1;\n\t\tconst currentWidth = resolveStartWidth(event.currentTarget);\n\t\tconst nextWidth = normalizeTableColumnWidth(currentWidth + direction * keyboardStep, resolvedMinWidth);\n\t\tonResize(columnId, nextWidth);\n\t\tonResizeEnd?.(columnId, nextWidth);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"separator\"\n\t\t\taria-label={ariaLabel}\n\t\t\taria-orientation=\"vertical\"\n\t\t\ttabIndex={0}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerMove={handlePointerMove}\n\t\t\tonPointerUp={finishPointerResize}\n\t\t\tonPointerCancel={finishPointerResize}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDoubleClick={(event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonReset?.(columnId);\n\t\t\t}}\n\t\t\tclassName={cn(styles.resizeHandle, className)}\n\t\t/>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode } from \"react\";\n\nimport { type DraggableAttributes, type DraggableSyntheticListeners, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableColumnResizeHandle, type TableColumnResizeHandleProps } from \"./TableColumnResizeHandle\";\n\nexport type TableHeaderCellDragState = {\n\tattributes: DraggableAttributes;\n\tlisteners: DraggableSyntheticListeners;\n\tsetActivatorElement: (element: HTMLElement | null) => void;\n\tdisabled: boolean;\n\tisDragging: boolean;\n};\n\nexport type TableHeaderInteractionCellProps = Omit<ComponentPropsWithoutRef<\"th\">, \"children\" | \"id\"> & {\n\tcolumnId: UniqueIdentifier;\n\tchildren: ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode);\n\tdragDisabled?: boolean;\n\tdraggingClassName?: string;\n\tresizeHandle?: TableColumnResizeHandleProps;\n};\n\nfunction renderChildren(children: TableHeaderInteractionCellProps[\"children\"], dragState: TableHeaderCellDragState): ReactNode {\n\treturn typeof children === \"function\" ? children(dragState) : children;\n}\n\nexport function TableHeaderInteractionCell({\n\tcolumnId,\n\tchildren,\n\tdragDisabled = false,\n\tdraggingClassName,\n\tresizeHandle,\n\tclassName,\n\tstyle,\n\t...thProps\n}: TableHeaderInteractionCellProps) {\n\tconst { attributes, listeners, setActivatorNodeRef, setNodeRef, transform, /*transition,*/ isDragging, rect } = useSortable({\n\t\tid: columnId,\n\t\tdisabled: dragDisabled\n\t});\n\tconst lockedWidth = isDragging ? rect.current?.width : undefined;\n\tconst sortableStyle: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\t// transition,\n\t\tzIndex: isDragging ? \"calc(var(--z-header) + 1)\" : undefined,\n\t\t...(lockedWidth ? { width: lockedWidth, minWidth: lockedWidth } : {}),\n\t\t...style\n\t};\n\tconst dragState: TableHeaderCellDragState = {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetActivatorElement: setActivatorNodeRef,\n\t\tdisabled: dragDisabled,\n\t\tisDragging\n\t};\n\n\treturn (\n\t\t<th {...thProps} ref={setNodeRef} className={cn(className, isDragging && draggingClassName)} style={sortableStyle}>\n\t\t\t{renderChildren(children, dragState)}\n\n\t\t\t{resizeHandle ? <TableColumnResizeHandle {...resizeHandle} /> : null}\n\t\t</th>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"table-column-interactions-BGd5Lwy9.js","names":[],"sources":["../../src/table-column-interactions/TableColumnInteractions.module.scss","../../src/table-column-interactions/TableColumnResizeHandle.tsx","../../src/table-column-interactions/TableHeaderInteractionCell.tsx"],"sourcesContent":[".resizeHandle {\n\tcursor: col-resize;\n\ttouch-action: none;\n\tuser-select: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\twidth: 6px;\n\tz-index: 1;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground: var(--focus-ring);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--focus);\n\t\toutline-offset: calc(var(--focus-offset) * -1);\n\t}\n}\n","import { useRef, type KeyboardEvent as ReactKeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\";\n\nimport { DEFAULT_TABLE_COLUMN_MIN_WIDTH, normalizeTableColumnWidth } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./TableColumnInteractions.module.scss\";\n\nconst DEFAULT_KEYBOARD_RESIZE_STEP = 8;\n\nexport type TableColumnResizeHandleProps = {\n\tcolumnId: string;\n\tclassName?: string;\n\tminWidth?: number;\n\tkeyboardStep?: number;\n\tariaLabel?: string;\n\tgetStartWidth?: (columnId: string, element: HTMLElement) => number;\n\tonResize: (columnId: string, width: number) => void;\n\tonResizeEnd?: (columnId: string, width: number) => void;\n\tonReset?: (columnId: string) => void;\n};\n\nfunction resolveHeaderCellWidth(element: HTMLElement, minWidth: number): number {\n\tconst headerCell = element.closest(\"th\");\n\tconst width = headerCell?.getBoundingClientRect().width;\n\n\treturn normalizeTableColumnWidth(typeof width === \"number\" && Number.isFinite(width) ? width : minWidth, minWidth);\n}\n\nexport function TableColumnResizeHandle({\n\tcolumnId,\n\tclassName,\n\tminWidth,\n\tkeyboardStep = DEFAULT_KEYBOARD_RESIZE_STEP,\n\tariaLabel = \"Изменить ширину колонки\",\n\tgetStartWidth,\n\tonResize,\n\tonResizeEnd,\n\tonReset\n}: TableColumnResizeHandleProps) {\n\tconst resolvedMinWidth = minWidth ?? DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst startXRef = useRef(0);\n\tconst startWidthRef = useRef(0);\n\tconst lastWidthRef = useRef(0);\n\tconst activeRef = useRef(false);\n\tconst movedRef = useRef(false);\n\n\tconst resolveStartWidth = (element: HTMLElement) => {\n\t\tconst width = getStartWidth?.(columnId, element) ?? resolveHeaderCellWidth(element, resolvedMinWidth);\n\n\t\treturn normalizeTableColumnWidth(width, resolvedMinWidth);\n\t};\n\n\tconst handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (event.button !== 0 && event.pointerType === \"mouse\") return;\n\n\t\tactiveRef.current = true;\n\t\tmovedRef.current = false;\n\t\tstartXRef.current = event.clientX;\n\t\tstartWidthRef.current = resolveStartWidth(event.currentTarget);\n\t\tlastWidthRef.current = startWidthRef.current;\n\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tconst nextWidth = normalizeTableColumnWidth(startWidthRef.current + event.clientX - startXRef.current, resolvedMinWidth);\n\t\tlastWidthRef.current = nextWidth;\n\t\tmovedRef.current = true;\n\t\tonResize(columnId, nextWidth);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst finishPointerResize = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tactiveRef.current = false;\n\n\t\tif (movedRef.current) {\n\t\t\tonResizeEnd?.(columnId, lastWidthRef.current);\n\t\t}\n\n\t\ttry {\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId);\n\t\t} catch {\n\t\t\t// Pointer capture мог быть сброшен браузером при отмене жеста.\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.key === \"Home\") {\n\t\t\tonReset?.(columnId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst direction = event.key === \"ArrowRight\" ? 1 : -1;\n\t\tconst currentWidth = resolveStartWidth(event.currentTarget);\n\t\tconst nextWidth = normalizeTableColumnWidth(currentWidth + direction * keyboardStep, resolvedMinWidth);\n\t\tonResize(columnId, nextWidth);\n\t\tonResizeEnd?.(columnId, nextWidth);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"separator\"\n\t\t\taria-label={ariaLabel}\n\t\t\taria-orientation=\"vertical\"\n\t\t\ttabIndex={0}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerMove={handlePointerMove}\n\t\t\tonPointerUp={finishPointerResize}\n\t\t\tonPointerCancel={finishPointerResize}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDoubleClick={(event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonReset?.(columnId);\n\t\t\t}}\n\t\t\tclassName={cn(styles.resizeHandle, className)}\n\t\t/>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode } from \"react\";\n\nimport { type DraggableAttributes, type DraggableSyntheticListeners, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableColumnResizeHandle, type TableColumnResizeHandleProps } from \"./TableColumnResizeHandle\";\n\nexport type TableHeaderCellDragState = {\n\tattributes: DraggableAttributes;\n\tlisteners: DraggableSyntheticListeners;\n\tsetActivatorElement: (element: HTMLElement | null) => void;\n\tdisabled: boolean;\n\tisDragging: boolean;\n};\n\nexport type TableHeaderInteractionCellProps = Omit<ComponentPropsWithoutRef<\"th\">, \"children\" | \"id\"> & {\n\tcolumnId: UniqueIdentifier;\n\tchildren: ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode);\n\tdragDisabled?: boolean;\n\tdraggingClassName?: string;\n\tresizeHandle?: TableColumnResizeHandleProps;\n};\n\nfunction renderChildren(children: TableHeaderInteractionCellProps[\"children\"], dragState: TableHeaderCellDragState): ReactNode {\n\treturn typeof children === \"function\" ? children(dragState) : children;\n}\n\nexport function TableHeaderInteractionCell({\n\tcolumnId,\n\tchildren,\n\tdragDisabled = false,\n\tdraggingClassName,\n\tresizeHandle,\n\tclassName,\n\tstyle,\n\t...thProps\n}: TableHeaderInteractionCellProps) {\n\tconst { attributes, listeners, setActivatorNodeRef, setNodeRef, transform, /*transition,*/ isDragging, rect } = useSortable({\n\t\tid: columnId,\n\t\tdisabled: dragDisabled\n\t});\n\tconst lockedWidth = isDragging ? rect.current?.width : undefined;\n\tconst sortableStyle: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\t// transition,\n\t\tzIndex: isDragging ? \"calc(var(--z-header) + 1)\" : undefined,\n\t\t...(lockedWidth ? { width: lockedWidth, minWidth: lockedWidth } : {}),\n\t\t...style\n\t};\n\tconst dragState: TableHeaderCellDragState = {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetActivatorElement: setActivatorNodeRef,\n\t\tdisabled: dragDisabled,\n\t\tisDragging\n\t};\n\n\treturn (\n\t\t<th {...thProps} ref={setNodeRef} className={cn(className, isDragging && draggingClassName)} style={sortableStyle}>\n\t\t\t{renderChildren(children, dragState)}\n\n\t\t\t{resizeHandle ? <TableColumnResizeHandle {...resizeHandle} /> : null}\n\t\t</th>\n\t);\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { s as e } from "./SelectOptionContent-lfEtHXfO.js";
2
- import { useEffect as t, useMemo as n, useState as r } from "react";
1
+ import { useEffect as e, useMemo as t, useState as n } from "react";
2
+ import { useODataCollection as r } from "@ryuzaki13/react-foundation-api/odata";
3
3
  import { startsWithIgnoringZeros as i } from "@ryuzaki13/react-foundation-lib/formatters";
4
4
  //#region src/select/model/useODataSelectBase.ts
5
5
  var a = "", o = "";
@@ -27,15 +27,15 @@ function l(e) {
27
27
  return t;
28
28
  }
29
29
  function u({ odata: a, segment: o, model: s, value: u, dependencies: d }) {
30
- let [f, p] = r(""), [m, h] = r(""), { codeKey: g, searchDebounceDelay: _, minSearchCodeLength: v, minSearchTextLength: y } = s, { data: b, textKey: x, isLoading: S, isError: C, getItems: w, separatedItems: T, findSourceItemsByKeys: E, setFilteredItems: D, debounce: O } = e({
30
+ let [f, p] = n(""), [m, h] = n(""), { codeKey: g, searchDebounceDelay: _, minSearchCodeLength: v, minSearchTextLength: y } = s, { data: b, textKey: x, isLoading: S, isError: C, getItems: w, separatedItems: T, findSourceItemsByKeys: E, setFilteredItems: D, debounce: O } = r({
31
31
  odata: a,
32
32
  model: s
33
- }), k = T.length, A = o.selectText && x ? x : g, j = n(() => b ? c(g, b.keyPairsMap, d) : "", [
33
+ }), k = T.length, A = o.selectText && x ? x : g, j = t(() => b ? c(g, b.keyPairsMap, d) : "", [
34
34
  b,
35
35
  g,
36
36
  d
37
37
  ]);
38
- t(() => {
38
+ e(() => {
39
39
  if (!b) return;
40
40
  let e = b.chain.findIndex((e) => e.codeKey === g), t = l(j), n = (e) => {
41
41
  let n = b.chain[e].codeKey, r = t.get(n);
@@ -62,7 +62,7 @@ function u({ odata: a, segment: o, model: s, value: u, dependencies: d }) {
62
62
  g,
63
63
  E,
64
64
  D
65
- ]), t(() => {
65
+ ]), e(() => {
66
66
  O("search", () => {
67
67
  h(f.trim().toLowerCase());
68
68
  }, _);
@@ -71,7 +71,7 @@ function u({ odata: a, segment: o, model: s, value: u, dependencies: d }) {
71
71
  f,
72
72
  _
73
73
  ]);
74
- let M = n(() => {
74
+ let M = t(() => {
75
75
  if (!u?.length || !A) return [];
76
76
  let e = new Set(u);
77
77
  return T.filter((t) => e.has(t[A]));
@@ -79,7 +79,7 @@ function u({ odata: a, segment: o, model: s, value: u, dependencies: d }) {
79
79
  T,
80
80
  A,
81
81
  u
82
- ]), N = n(() => {
82
+ ]), N = t(() => {
83
83
  if (!b) return [];
84
84
  if (!(m.length >= y)) return w(void 0, M);
85
85
  let e = m.length >= y, t = !o.hideCode && m.length >= v && !Number.isNaN(Number(m));
@@ -105,7 +105,7 @@ function u({ odata: a, segment: o, model: s, value: u, dependencies: d }) {
105
105
  codeKey: g,
106
106
  textKey: x,
107
107
  selectionKey: A,
108
- placeholder: n(() => {
108
+ placeholder: t(() => {
109
109
  let e = N.length;
110
110
  return k ? e < k ? `${o.placeholder} <${e}+>` : `${o.placeholder} <${k > s.maxVisibleItems ? `${s.maxVisibleItems}+` : k}>` : `${o.placeholder} <пусто>`;
111
111
  }, [
@@ -122,4 +122,4 @@ function d(e, t) {
122
122
  //#endregion
123
123
  export { u as n, d as t };
124
124
 
125
- //# sourceMappingURL=useODataSelectBase-BxAvhDww.js.map
125
+ //# sourceMappingURL=useODataSelectBase-wZ07hQFv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useODataSelectBase-BxAvhDww.js","names":[],"sources":["../../src/select/model/useODataSelectBase.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\n\nimport { ODataCollectionModel, ODataSelectBaseProps, useODataCollection } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { startsWithIgnoringZeros } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ninterface UseODataSelectBaseOptions extends Omit<ODataSelectBaseProps, \"model\" | \"value\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tvalue?: string[];\n}\n\nconst DEPENDENCY_KEY_SEPARATOR = \"\\u0002\";\nconst DEPENDENCY_VALUE_SEPARATOR = \"\\u0001\";\n\nfunction normalizeDependencyValues(values?: readonly string[]) {\n\tif (!values?.length) return [];\n\treturn [...new Set(values)].sort();\n}\n\nfunction createDependencySignature(codeKey: string, availableKeys: Record<string, unknown>, dependencies?: Record<string, string[]>) {\n\tconst parts: string[] = [];\n\n\tfor (const key of Object.keys(availableKeys).sort()) {\n\t\tif (key === codeKey) continue;\n\n\t\tconst values = normalizeDependencyValues(dependencies?.[key]);\n\t\tif (!values.length) continue;\n\n\t\tparts.push(`${key}:${values.join(DEPENDENCY_VALUE_SEPARATOR)}`);\n\t}\n\n\treturn parts.join(DEPENDENCY_KEY_SEPARATOR);\n}\n\nfunction parseDependencySignature(signature: string) {\n\tconst dependencies = new Map<string, string[]>();\n\tif (!signature) return dependencies;\n\n\tfor (const part of signature.split(DEPENDENCY_KEY_SEPARATOR)) {\n\t\tconst separatorIndex = part.indexOf(\":\");\n\t\tif (separatorIndex < 0) continue;\n\n\t\tconst key = part.slice(0, separatorIndex);\n\t\tconst values = part\n\t\t\t.slice(separatorIndex + 1)\n\t\t\t.split(DEPENDENCY_VALUE_SEPARATOR)\n\t\t\t.filter(Boolean);\n\t\tif (key && values.length) {\n\t\t\tdependencies.set(key, values);\n\t\t}\n\t}\n\n\treturn dependencies;\n}\n\nexport function useODataSelectBase({ odata, segment, model, value, dependencies }: UseODataSelectBaseOptions) {\n\tconst [query, setQuery] = useState(\"\");\n\tconst [debouncedQuery, setDebouncedQuery] = useState(\"\");\n\n\tconst { codeKey, searchDebounceDelay, minSearchCodeLength, minSearchTextLength: minSearchLength } = model;\n\n\tconst {\n\t\tdata: rawData,\n\t\ttextKey,\n\t\tisLoading,\n\t\tisError,\n\t\tgetItems,\n\t\tseparatedItems,\n\t\tfindSourceItemsByKeys,\n\t\tsetFilteredItems,\n\t\tdebounce\n\t} = useODataCollection({ odata, model });\n\n\tconst itemsCount = separatedItems.length;\n\tconst selectionKey = segment.selectText && textKey ? textKey : codeKey;\n\n\tconst dependencySignature = useMemo(() => {\n\t\tif (!rawData) return \"\";\n\t\treturn createDependencySignature(codeKey, rawData.keyPairsMap, dependencies);\n\t}, [rawData, codeKey, dependencies]);\n\n\tuseEffect(() => {\n\t\tif (!rawData) return;\n\n\t\tconst selfIndex = rawData.chain.findIndex((c) => c.codeKey === codeKey);\n\t\tconst currentDependencies = parseDependencySignature(dependencySignature);\n\n\t\tconst resolveFilteredItems = (index: number) => {\n\t\t\tconst key = rawData.chain[index].codeKey;\n\t\t\tconst dependenciesValues = currentDependencies.get(key);\n\t\t\tif (dependenciesValues?.length) {\n\t\t\t\treturn findSourceItemsByKeys(key, dependenciesValues);\n\t\t\t}\n\t\t};\n\n\t\tfor (let i = rawData.chain.length - 1; i > selfIndex; i--) {\n\t\t\tconst filteredItems = resolveFilteredItems(i);\n\t\t\tif (filteredItems) {\n\t\t\t\tsetFilteredItems(filteredItems);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < selfIndex; i++) {\n\t\t\tconst filteredItems = resolveFilteredItems(i);\n\t\t\tif (filteredItems) {\n\t\t\t\tsetFilteredItems(filteredItems);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tsetFilteredItems(undefined);\n\t}, [rawData, dependencySignature, codeKey, findSourceItemsByKeys, setFilteredItems]);\n\n\tuseEffect(() => {\n\t\tdebounce(\n\t\t\t\"search\",\n\t\t\t() => {\n\t\t\t\tsetDebouncedQuery(query.trim().toLowerCase());\n\t\t\t},\n\t\t\tsearchDebounceDelay\n\t\t);\n\t}, [debounce, query, searchDebounceDelay]);\n\n\tconst selectedItems = useMemo(() => {\n\t\tif (!value?.length || !selectionKey) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst selectedValues = new Set(value);\n\t\treturn separatedItems.filter((item) => selectedValues.has(item[selectionKey]));\n\t}, [separatedItems, selectionKey, value]);\n\n\tconst filteredItems = useMemo(() => {\n\t\tif (!rawData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst isFiltered = debouncedQuery.length >= minSearchLength;\n\n\t\tif (!isFiltered) {\n\t\t\treturn getItems(undefined, selectedItems);\n\t\t}\n\n\t\tconst isAheadText = debouncedQuery.length >= minSearchLength;\n\t\tconst isAheadCode = !segment.hideCode && debouncedQuery.length >= minSearchCodeLength && !Number.isNaN(Number(debouncedQuery));\n\n\t\treturn getItems((codeValue: string, textValue: string) => {\n\t\t\tif (codeValue && textValue) {\n\t\t\t\tif (isAheadCode && startsWithIgnoringZeros(codeValue, debouncedQuery)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (isAheadText && textValue.toLowerCase().includes(debouncedQuery)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}, selectedItems);\n\t}, [debouncedQuery, getItems, minSearchCodeLength, minSearchLength, rawData, segment.hideCode, selectedItems]);\n\n\tconst placeholder = useMemo(() => {\n\t\tconst filteredItemsLength = filteredItems.length;\n\n\t\tif (!itemsCount) {\n\t\t\treturn `${segment.placeholder} <пусто>`;\n\t\t}\n\n\t\tif (filteredItemsLength < itemsCount) {\n\t\t\treturn `${segment.placeholder} <${filteredItemsLength}+>`;\n\t\t}\n\n\t\treturn `${segment.placeholder} <${itemsCount > model.maxVisibleItems ? `${model.maxVisibleItems}+` : itemsCount}>`;\n\t}, [filteredItems.length, itemsCount, model.maxVisibleItems, segment.placeholder]);\n\n\treturn {\n\t\tquery,\n\t\tsetQuery,\n\t\tdebouncedQuery,\n\t\tselectedItems,\n\t\tfilteredItems,\n\t\titemsCount,\n\t\tisLoading,\n\t\tisError,\n\t\tcodeKey,\n\t\ttextKey,\n\t\tselectionKey,\n\t\tplaceholder\n\t};\n}\n\nexport type ODataSelectBaseModel = ReturnType<typeof useODataSelectBase>;\n\nexport function mapSelectedItemsToValues(items: CollectionItem[], selectionKey: string) {\n\treturn items.map((item) => item[selectionKey]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useODataSelectBase-wZ07hQFv.js","names":[],"sources":["../../src/select/model/useODataSelectBase.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\n\nimport { ODataCollectionModel, ODataSelectBaseProps, useODataCollection } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { startsWithIgnoringZeros } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ninterface UseODataSelectBaseOptions extends Omit<ODataSelectBaseProps, \"model\" | \"value\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tvalue?: string[];\n}\n\nconst DEPENDENCY_KEY_SEPARATOR = \"\\u0002\";\nconst DEPENDENCY_VALUE_SEPARATOR = \"\\u0001\";\n\nfunction normalizeDependencyValues(values?: readonly string[]) {\n\tif (!values?.length) return [];\n\treturn [...new Set(values)].sort();\n}\n\nfunction createDependencySignature(codeKey: string, availableKeys: Record<string, unknown>, dependencies?: Record<string, string[]>) {\n\tconst parts: string[] = [];\n\n\tfor (const key of Object.keys(availableKeys).sort()) {\n\t\tif (key === codeKey) continue;\n\n\t\tconst values = normalizeDependencyValues(dependencies?.[key]);\n\t\tif (!values.length) continue;\n\n\t\tparts.push(`${key}:${values.join(DEPENDENCY_VALUE_SEPARATOR)}`);\n\t}\n\n\treturn parts.join(DEPENDENCY_KEY_SEPARATOR);\n}\n\nfunction parseDependencySignature(signature: string) {\n\tconst dependencies = new Map<string, string[]>();\n\tif (!signature) return dependencies;\n\n\tfor (const part of signature.split(DEPENDENCY_KEY_SEPARATOR)) {\n\t\tconst separatorIndex = part.indexOf(\":\");\n\t\tif (separatorIndex < 0) continue;\n\n\t\tconst key = part.slice(0, separatorIndex);\n\t\tconst values = part\n\t\t\t.slice(separatorIndex + 1)\n\t\t\t.split(DEPENDENCY_VALUE_SEPARATOR)\n\t\t\t.filter(Boolean);\n\t\tif (key && values.length) {\n\t\t\tdependencies.set(key, values);\n\t\t}\n\t}\n\n\treturn dependencies;\n}\n\nexport function useODataSelectBase({ odata, segment, model, value, dependencies }: UseODataSelectBaseOptions) {\n\tconst [query, setQuery] = useState(\"\");\n\tconst [debouncedQuery, setDebouncedQuery] = useState(\"\");\n\n\tconst { codeKey, searchDebounceDelay, minSearchCodeLength, minSearchTextLength: minSearchLength } = model;\n\n\tconst {\n\t\tdata: rawData,\n\t\ttextKey,\n\t\tisLoading,\n\t\tisError,\n\t\tgetItems,\n\t\tseparatedItems,\n\t\tfindSourceItemsByKeys,\n\t\tsetFilteredItems,\n\t\tdebounce\n\t} = useODataCollection({ odata, model });\n\n\tconst itemsCount = separatedItems.length;\n\tconst selectionKey = segment.selectText && textKey ? textKey : codeKey;\n\n\tconst dependencySignature = useMemo(() => {\n\t\tif (!rawData) return \"\";\n\t\treturn createDependencySignature(codeKey, rawData.keyPairsMap, dependencies);\n\t}, [rawData, codeKey, dependencies]);\n\n\tuseEffect(() => {\n\t\tif (!rawData) return;\n\n\t\tconst selfIndex = rawData.chain.findIndex((c) => c.codeKey === codeKey);\n\t\tconst currentDependencies = parseDependencySignature(dependencySignature);\n\n\t\tconst resolveFilteredItems = (index: number) => {\n\t\t\tconst key = rawData.chain[index].codeKey;\n\t\t\tconst dependenciesValues = currentDependencies.get(key);\n\t\t\tif (dependenciesValues?.length) {\n\t\t\t\treturn findSourceItemsByKeys(key, dependenciesValues);\n\t\t\t}\n\t\t};\n\n\t\tfor (let i = rawData.chain.length - 1; i > selfIndex; i--) {\n\t\t\tconst filteredItems = resolveFilteredItems(i);\n\t\t\tif (filteredItems) {\n\t\t\t\tsetFilteredItems(filteredItems);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < selfIndex; i++) {\n\t\t\tconst filteredItems = resolveFilteredItems(i);\n\t\t\tif (filteredItems) {\n\t\t\t\tsetFilteredItems(filteredItems);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tsetFilteredItems(undefined);\n\t}, [rawData, dependencySignature, codeKey, findSourceItemsByKeys, setFilteredItems]);\n\n\tuseEffect(() => {\n\t\tdebounce(\n\t\t\t\"search\",\n\t\t\t() => {\n\t\t\t\tsetDebouncedQuery(query.trim().toLowerCase());\n\t\t\t},\n\t\t\tsearchDebounceDelay\n\t\t);\n\t}, [debounce, query, searchDebounceDelay]);\n\n\tconst selectedItems = useMemo(() => {\n\t\tif (!value?.length || !selectionKey) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst selectedValues = new Set(value);\n\t\treturn separatedItems.filter((item) => selectedValues.has(item[selectionKey]));\n\t}, [separatedItems, selectionKey, value]);\n\n\tconst filteredItems = useMemo(() => {\n\t\tif (!rawData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst isFiltered = debouncedQuery.length >= minSearchLength;\n\n\t\tif (!isFiltered) {\n\t\t\treturn getItems(undefined, selectedItems);\n\t\t}\n\n\t\tconst isAheadText = debouncedQuery.length >= minSearchLength;\n\t\tconst isAheadCode = !segment.hideCode && debouncedQuery.length >= minSearchCodeLength && !Number.isNaN(Number(debouncedQuery));\n\n\t\treturn getItems((codeValue: string, textValue: string) => {\n\t\t\tif (codeValue && textValue) {\n\t\t\t\tif (isAheadCode && startsWithIgnoringZeros(codeValue, debouncedQuery)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (isAheadText && textValue.toLowerCase().includes(debouncedQuery)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}, selectedItems);\n\t}, [debouncedQuery, getItems, minSearchCodeLength, minSearchLength, rawData, segment.hideCode, selectedItems]);\n\n\tconst placeholder = useMemo(() => {\n\t\tconst filteredItemsLength = filteredItems.length;\n\n\t\tif (!itemsCount) {\n\t\t\treturn `${segment.placeholder} <пусто>`;\n\t\t}\n\n\t\tif (filteredItemsLength < itemsCount) {\n\t\t\treturn `${segment.placeholder} <${filteredItemsLength}+>`;\n\t\t}\n\n\t\treturn `${segment.placeholder} <${itemsCount > model.maxVisibleItems ? `${model.maxVisibleItems}+` : itemsCount}>`;\n\t}, [filteredItems.length, itemsCount, model.maxVisibleItems, segment.placeholder]);\n\n\treturn {\n\t\tquery,\n\t\tsetQuery,\n\t\tdebouncedQuery,\n\t\tselectedItems,\n\t\tfilteredItems,\n\t\titemsCount,\n\t\tisLoading,\n\t\tisError,\n\t\tcodeKey,\n\t\ttextKey,\n\t\tselectionKey,\n\t\tplaceholder\n\t};\n}\n\nexport type ODataSelectBaseModel = ReturnType<typeof useODataSelectBase>;\n\nexport function mapSelectedItemsToValues(items: CollectionItem[], selectionKey: string) {\n\treturn items.map((item) => item[selectionKey]);\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../chunks/CalendarView-C0gJvre1.js";
2
- import { a as c, c as l, d as u, f as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S } from "../chunks/date-input-DKkW7_uw.js";
1
+ import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../chunks/CalendarView-KCkhCtK-.js";
2
+ import { a as c, c as l, d as u, f as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S } from "../chunks/date-input-DT9E8dhk.js";
3
3
  export { s as CalendarView, r as DATE_INPUT_SELECTION_MODES, a as DATE_INPUT_WEEK_END_DAYS, n as DATE_PICKER_LEVELS, y as DEFAULT_DATE_INPUT_FORMAT, p as DEFAULT_DATE_INPUT_PRESET, x as RangeDateInput, g as SingleDateInput, c as areRangeDateValuesEqual, _ as areSingleDateValuesEqual, b as formatDateInputValue, l as formatRangeDateValue, m as formatSingleDateValue, e as getDatePickerLevelForSelectionMode, i as isDatePickerLevelAvailable, S as normalizeRangeDateValue, u as normalizeRangeEndDateValue, d as normalizeSingleDateValue, v as parseRangeDateValue, h as parseRangeEndDateValue, f as parseSingleDateValue, o as resolveAvailableDatePickerLevel, t as resolveDateInputPeriodRangeState };
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../chunks/date-range-preset-select-UgsfaOeM.js";
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../chunks/date-range-preset-select-BLnY47cv.js";
2
2
  export { i as DATE_RANGE_PRESET_OPTIONS, o as DEFAULT_DATE_RANGE_PRESET_IDS, n as DEFAULT_DATE_RANGE_PRESET_OPTIONS, c as DateRangePresetSelect, e as getDateRangePresetOption, a as isDateRangePresetId, s as normalizeDateRangePresetIds, t as resolveDateRangePresetIdByRange, r as resolveDateRangePresetOptionsByIds, l as resolveDateRangePresetPayload };
@@ -1,27 +1,27 @@
1
1
  import { r as e } from "../chunks/popover-xJJqy1v6.js";
2
2
  import { t } from "../chunks/ui.module-BisoTevy.js";
3
3
  import { n } from "../chunks/button-CC0Jdx1j.js";
4
- import { i as r, l as i, s as a } from "../chunks/input-CZLUUggm.js";
5
- import { t as o } from "../chunks/CalendarView-C0gJvre1.js";
4
+ import { i as r, l as i, s as a } from "../chunks/input-BCJfUdK_.js";
5
+ import { t as o } from "../chunks/CalendarView-KCkhCtK-.js";
6
6
  import { t as s } from "../chunks/wheel-picker-FS58cRsQ.js";
7
7
  import { useCallback as c, useEffect as l, useEffectEvent as u, useMemo as d, useRef as f, useState as p } from "react";
8
8
  import { cn as m } from "@ryuzaki13/react-foundation-lib/utils";
9
- import { createCalendarDate as h, getStartOfDay as g, isDateRangeTuple as _, parseDate as v } from "@ryuzaki13/react-foundation-lib/formatters";
10
- import { CalendarDaysIcon as y, Clock3Icon as b } from "lucide-react";
11
- import { jsx as x, jsxs as S } from "react/jsx-runtime";
9
+ import { CalendarDaysIcon as h, Clock3Icon as g } from "lucide-react";
10
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
11
+ import { createCalendarDate as y, getStartOfDay as b, isDateRangeTuple as x, parseDate as S } from "@ryuzaki13/react-foundation-lib/formatters";
12
12
  import { areAllDateSegmentsEmpty as C, dateToIndexedSegmentValues as w, indexedSegmentsToDate as T, parseDateSegmentMask as E } from "@ryuzaki13/react-foundation-lib/date-segments";
13
13
  //#region src/date-time-input/lib/dateTimeValue.ts
14
14
  var D = "dd.MM.yyyy HH:mm", O = "HH:mm", k = 1970, A = 0, j = 1;
15
15
  E(O);
16
16
  function M(e = 0, t = 0) {
17
- return h(k, A, j, e, t, 0, 0);
17
+ return y(k, A, j, e, t, 0, 0);
18
18
  }
19
19
  function N(e = "date-time") {
20
20
  return e === "time" ? O : D;
21
21
  }
22
22
  function P(e, t = "date-time") {
23
23
  if (e == null) return null;
24
- let n = v(e);
24
+ let n = S(e);
25
25
  return n ? t === "time" ? M(n.getHours(), n.getMinutes()) : n : null;
26
26
  }
27
27
  function F(e, t, n, r = "date-time") {
@@ -35,10 +35,10 @@ function F(e, t, n, r = "date-time") {
35
35
  }
36
36
  function I(e, t) {
37
37
  let n = P(t), r = n?.getHours() ?? 0, i = n?.getMinutes() ?? 0;
38
- return h(e.getFullYear(), e.getMonth(), e.getDate(), r, i, 0, 0);
38
+ return y(e.getFullYear(), e.getMonth(), e.getDate(), r, i, 0, 0);
39
39
  }
40
40
  function L(e, t, n, r = "date-time") {
41
- return r === "time" ? M(t, n) : h(e.getFullYear(), e.getMonth(), e.getDate(), t, n, 0, 0);
41
+ return r === "time" ? M(t, n) : y(e.getFullYear(), e.getMonth(), e.getDate(), t, n, 0, 0);
42
42
  }
43
43
  function R(e, t, n = "date-time") {
44
44
  return n === "time" ? P(e, "time") ?? M() : P(e, n) ?? t;
@@ -269,22 +269,22 @@ var U = {
269
269
  //#region src/date-time-input/ui/TimePanel.tsx
270
270
  function G({ value: e, disabled: t, minDate: n, maxDate: r, mode: i = "date-time", onChange: a }) {
271
271
  let o = V(e, n, r, i), c = (e) => String(e).padStart(2, "0");
272
- return o.disabled ? /* @__PURE__ */ x("div", {
272
+ return o.disabled ? /* @__PURE__ */ _("div", {
273
273
  className: W.timePanel,
274
- children: /* @__PURE__ */ x("p", {
274
+ children: /* @__PURE__ */ _("p", {
275
275
  className: W.hint,
276
276
  children: "Для выбранного дня нет доступного времени в заданном диапазоне."
277
277
  })
278
- }) : /* @__PURE__ */ x("div", {
278
+ }) : /* @__PURE__ */ _("div", {
279
279
  className: W.timePanel,
280
- children: /* @__PURE__ */ S("div", {
280
+ children: /* @__PURE__ */ v("div", {
281
281
  className: W.fields,
282
- children: [/* @__PURE__ */ S("label", {
282
+ children: [/* @__PURE__ */ v("label", {
283
283
  className: W.field,
284
- children: [/* @__PURE__ */ x("span", {
284
+ children: [/* @__PURE__ */ _("span", {
285
285
  className: W.label,
286
286
  children: "Часы"
287
- }), /* @__PURE__ */ x(s, {
287
+ }), /* @__PURE__ */ _(s, {
288
288
  className: W.wheel,
289
289
  items: o.hours,
290
290
  value: o.selectedHour,
@@ -293,12 +293,12 @@ function G({ value: e, disabled: t, minDate: n, maxDate: r, mode: i = "date-time
293
293
  disabled: t,
294
294
  formatItem: c
295
295
  })]
296
- }), /* @__PURE__ */ S("label", {
296
+ }), /* @__PURE__ */ v("label", {
297
297
  className: W.field,
298
- children: [/* @__PURE__ */ x("span", {
298
+ children: [/* @__PURE__ */ _("span", {
299
299
  className: W.label,
300
300
  children: "Минуты"
301
- }), /* @__PURE__ */ x(s, {
301
+ }), /* @__PURE__ */ _(s, {
302
302
  className: W.wheel,
303
303
  items: o.minutes,
304
304
  value: o.selectedMinute,
@@ -313,10 +313,10 @@ function G({ value: e, disabled: t, minDate: n, maxDate: r, mode: i = "date-time
313
313
  }
314
314
  //#endregion
315
315
  //#region src/date-time-input/ui/SingleDateTimeInput.tsx
316
- function K({ value: s, onChange: c, label: f, description: h, placeholder: v, disabled: C, size: w, error: T, onClearError: E, minDate: D, maxDate: O, timePanelPlacement: k = "right", mode: A = "date-time" }) {
317
- let j = P(s, A), M = j?.getTime() ?? null, N = d(() => g(/* @__PURE__ */ new Date()), []), [z, V] = p(!1), [H, W] = p(j ?? null), [K, te] = p("day"), [q, J] = p(() => R(j, N, A)), { controlId: Y, labelId: X, descriptionId: ne, errorId: re, describedBy: ie } = i({
316
+ function K({ value: s, onChange: c, label: f, description: y, placeholder: S, disabled: C, size: w, error: T, onClearError: E, minDate: D, maxDate: O, timePanelPlacement: k = "right", mode: A = "date-time" }) {
317
+ let j = P(s, A), M = j?.getTime() ?? null, N = d(() => b(/* @__PURE__ */ new Date()), []), [z, V] = p(!1), [H, W] = p(j ?? null), [K, te] = p("day"), [q, J] = p(() => R(j, N, A)), { controlId: Y, labelId: X, descriptionId: ne, errorId: re, describedBy: ie } = i({
318
318
  hasLabel: f != null,
319
- hasDescription: !!h,
319
+ hasDescription: !!y,
320
320
  hasError: !!T
321
321
  }), ae = u((e) => W(e)), Z = u((e) => J(e));
322
322
  l(() => {
@@ -337,7 +337,7 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
337
337
  maxDate: O,
338
338
  mode: A
339
339
  }), he = (e) => {
340
- if (A === "time" || _(e) || C) return;
340
+ if (A === "time" || x(e) || C) return;
341
341
  let t = I(e, H ?? j ?? q), { hours: n, minutes: r } = B(e, t.getHours(), t.getMinutes(), D, O, A), i = L(e, n, r);
342
342
  F(i, D, O, A) && (E?.(), W(i), J(i));
343
343
  }, Q = (e, t) => {
@@ -348,13 +348,13 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
348
348
  e && (W(j ?? null), J(R(j, N, A))), V(e);
349
349
  }, _e = () => {
350
350
  (j?.getTime() ?? null) !== (H?.getTime() ?? null) && c(H);
351
- }, ve = k === "right" ? U.timePanelPaneRight : U.timePanelPaneBottom, ye = A === "time" ? "Открыть выбор времени" : "Открыть календарь даты и времени", be = v ?? (A === "time" ? "чч:мм" : "дд.мм.гггг чч:мм"), $ = H ?? j ?? q;
352
- return /* @__PURE__ */ S(e, {
351
+ }, ve = k === "right" ? U.timePanelPaneRight : U.timePanelPaneBottom, ye = A === "time" ? "Открыть выбор времени" : "Открыть календарь даты и времени", be = S ?? (A === "time" ? "чч:мм" : "дд.мм.гггг чч:мм"), $ = H ?? j ?? q;
352
+ return /* @__PURE__ */ v(e, {
353
353
  open: z,
354
354
  onOpenChange: ge,
355
- children: [/* @__PURE__ */ x(a, {
355
+ children: [/* @__PURE__ */ _(a, {
356
356
  label: f,
357
- description: h,
357
+ description: y,
358
358
  disabled: C,
359
359
  size: w,
360
360
  error: T,
@@ -362,16 +362,16 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
362
362
  labelId: X,
363
363
  descriptionId: ne,
364
364
  errorId: re,
365
- children: /* @__PURE__ */ x(r, {
365
+ children: /* @__PURE__ */ _(r, {
366
366
  endAdornmentWidth: "var(--control-height)",
367
- endAdornment: /* @__PURE__ */ x(e.Trigger, { children: /* @__PURE__ */ x(n, {
367
+ endAdornment: /* @__PURE__ */ _(e.Trigger, { children: /* @__PURE__ */ _(n, {
368
368
  variant: "transparent",
369
369
  disabled: C,
370
370
  className: U.calendarButton,
371
- icon: x(A === "time" ? b : y, {}),
371
+ icon: _(A === "time" ? g : h, {}),
372
372
  "aria-label": ye
373
373
  }) }),
374
- children: ({ controlClassName: e }) => /* @__PURE__ */ x("div", {
374
+ children: ({ controlClassName: e }) => /* @__PURE__ */ _("div", {
375
375
  id: Y,
376
376
  className: m(t.uiInputControlFake, e),
377
377
  "data-disabled": C || void 0,
@@ -386,11 +386,11 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
386
386
  onClick: (e) => {
387
387
  e.target === e.currentTarget && me();
388
388
  },
389
- children: oe.map((e, t) => e.kind === "literal" ? /* @__PURE__ */ x("span", {
389
+ children: oe.map((e, t) => e.kind === "literal" ? /* @__PURE__ */ _("span", {
390
390
  className: U.separator,
391
391
  "data-disabled": C || void 0,
392
392
  children: e.text
393
- }, t) : /* @__PURE__ */ x("input", {
393
+ }, t) : /* @__PURE__ */ _("input", {
394
394
  ref: ce(t),
395
395
  type: "text",
396
396
  inputMode: "numeric",
@@ -408,12 +408,12 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
408
408
  }, t))
409
409
  })
410
410
  })
411
- }), /* @__PURE__ */ x(e.Content, {
411
+ }), /* @__PURE__ */ _(e.Content, {
412
412
  background: "primary",
413
413
  onClose: _e,
414
- children: A === "time" ? /* @__PURE__ */ x("div", {
414
+ children: A === "time" ? /* @__PURE__ */ _("div", {
415
415
  className: U.timeOnlyPopoverContent,
416
- children: /* @__PURE__ */ x(G, {
416
+ children: /* @__PURE__ */ _(G, {
417
417
  value: $,
418
418
  disabled: C,
419
419
  minDate: D,
@@ -421,11 +421,11 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
421
421
  mode: A,
422
422
  onChange: Q
423
423
  })
424
- }) : /* @__PURE__ */ S("div", {
424
+ }) : /* @__PURE__ */ v("div", {
425
425
  className: m(U.popoverContent, U[k]),
426
- children: [/* @__PURE__ */ x("div", {
426
+ children: [/* @__PURE__ */ _("div", {
427
427
  className: U.calendarPane,
428
- children: /* @__PURE__ */ x(o, {
428
+ children: /* @__PURE__ */ _(o, {
429
429
  view: K,
430
430
  datePickerLevel: "day",
431
431
  selectionMode: "day",
@@ -437,9 +437,9 @@ function K({ value: s, onChange: c, label: f, description: h, placeholder: v, di
437
437
  currentDate: q,
438
438
  onCurrentDateChange: J
439
439
  })
440
- }), /* @__PURE__ */ x("div", {
440
+ }), /* @__PURE__ */ _("div", {
441
441
  className: m(U.timePanelPane, ve),
442
- children: /* @__PURE__ */ x(G, {
442
+ children: /* @__PURE__ */ _(G, {
443
443
  value: $,
444
444
  disabled: C,
445
445
  minDate: D,
@@ -1,4 +1,4 @@
1
- import { n as e } from "../chunks/input-files-aB8iaqGk.js";
1
+ import { n as e } from "../chunks/input-files-Dcc5K-_1.js";
2
2
  import { useCallback as t, useMemo as n, useRef as r, useState as i } from "react";
3
3
  import { cn as a, handleKeyboardActivation as o } from "@ryuzaki13/react-foundation-lib/utils";
4
4
  import { UploadIcon as s } from "lucide-react";