@flowtomic/logic 0.1.2 → 0.1.3

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.
@@ -34,6 +34,11 @@ export interface UseAnimatedIndicatorOptions {
34
34
  * @default true
35
35
  */
36
36
  updateOnResize?: boolean;
37
+ /**
38
+ * Valor ativo controlado externamente.
39
+ * Se fornecido, o hook não tentará detectar o elemento ativo via DOM.
40
+ */
41
+ value?: string;
37
42
  }
38
43
  export interface UseAnimatedIndicatorReturn {
39
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimatedIndicator.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAnimatedIndicator/useAnimatedIndicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IACnD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;OAEG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE;;OAEG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CA+N5B"}
1
+ {"version":3,"file":"useAnimatedIndicator.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAnimatedIndicator/useAnimatedIndicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IACnD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;OAEG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE;;OAEG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAgP5B"}
@@ -42,7 +42,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
42
42
  * ```
43
43
  */
44
44
  export function useAnimatedIndicator(options) {
45
- const { containerRef, activeSelector = '[data-state="active"]', getElementValue, updateOnResize = true, } = options;
45
+ const { containerRef, activeSelector = '[data-state="active"]', getElementValue, updateOnResize = true, value: controlledValue, } = options;
46
46
  const elementsRef = useRef(new Map());
47
47
  const updateTimeoutRef = useRef(null);
48
48
  const activeValueRef = useRef(undefined);
@@ -58,6 +58,12 @@ export function useAnimatedIndicator(options) {
58
58
  useEffect(() => {
59
59
  activeValueRef.current = activeValue;
60
60
  }, [activeValue]);
61
+ // Sincronizar valor controlado
62
+ useEffect(() => {
63
+ if (controlledValue !== undefined) {
64
+ setActiveValue(controlledValue);
65
+ }
66
+ }, [controlledValue]);
61
67
  const updateIndicator = useCallback(() => {
62
68
  const currentActiveValue = activeValueRef.current;
63
69
  if (!currentActiveValue) {
@@ -117,7 +123,7 @@ export function useAnimatedIndicator(options) {
117
123
  // Atualizar quando activeValue mudar
118
124
  useEffect(() => {
119
125
  scheduleUpdate();
120
- }, [activeValue, scheduleUpdate]);
126
+ }, [scheduleUpdate]);
121
127
  // Listener de resize
122
128
  useEffect(() => {
123
129
  if (!updateOnResize)
@@ -166,12 +172,20 @@ export function useAnimatedIndicator(options) {
166
172
  activeSelectorRef.current = activeSelector;
167
173
  getElementValueRef.current = getElementValue;
168
174
  }, [activeSelector, getElementValue]);
175
+ // Ref para valor controlado
176
+ const controlledValueRef = useRef(controlledValue);
177
+ useEffect(() => {
178
+ controlledValueRef.current = controlledValue;
179
+ }, [controlledValue]);
169
180
  // Observar mudanças no elemento ativo
170
181
  useEffect(() => {
171
182
  const container = containerRef.current;
172
183
  if (!container)
173
184
  return;
174
185
  const findActiveValue = () => {
186
+ // Se estiver em modo controlado, ignorar detecção DOM
187
+ if (controlledValueRef.current !== undefined)
188
+ return;
175
189
  const activeElement = container.querySelector(activeSelectorRef.current);
176
190
  if (activeElement) {
177
191
  let value;
@@ -0,0 +1,3 @@
1
+ export type { AutocompleteOption, UseAutocompleteOptions, UseAutocompleteReturn, } from "./useAutocomplete";
2
+ export { useAutocomplete } from "./useAutocomplete";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAutocomplete/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ export { useAutocomplete } from "./useAutocomplete";
@@ -0,0 +1,197 @@
1
+ /**
2
+ * useAutocomplete - Headless UI Hook
3
+ *
4
+ * Fornece apenas: lógica, estado, processamento e API
5
+ * NÃO fornece: markup, styles ou implementações pré-construídas
6
+ *
7
+ * Padrão Headless UI: você controla o markup e styles
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * function MyCustomAutocomplete() {
12
+ * const {
13
+ * inputValue,
14
+ * selectedValue,
15
+ * isOpen,
16
+ * filteredItems,
17
+ * getInputProps,
18
+ * getPopoverProps,
19
+ * getListProps,
20
+ * getItemProps,
21
+ * open,
22
+ * close,
23
+ * select,
24
+ * clear,
25
+ * } = useAutocomplete({
26
+ * options: [
27
+ * { value: "1", label: "Option 1" },
28
+ * { value: "2", label: "Option 2" },
29
+ * ],
30
+ * });
31
+ *
32
+ * return (
33
+ * <div>
34
+ * <input {...getInputProps()} />
35
+ * {isOpen && (
36
+ * <div {...getPopoverProps()}>
37
+ * <ul {...getListProps()}>
38
+ * {filteredItems.map((item) => (
39
+ * <li key={item.value} {...getItemProps(item)}>
40
+ * {item.label}
41
+ * </li>
42
+ * ))}
43
+ * </ul>
44
+ * </div>
45
+ * )}
46
+ * </div>
47
+ * );
48
+ * }
49
+ * ```
50
+ */
51
+ import * as React from "react";
52
+ export interface AutocompleteOption {
53
+ value: string;
54
+ label: string;
55
+ disabled?: boolean;
56
+ }
57
+ export interface UseAutocompleteOptions {
58
+ /**
59
+ * Opções para seleção (API antiga)
60
+ */
61
+ options?: AutocompleteOption[];
62
+ /**
63
+ * Valor selecionado (controlado)
64
+ */
65
+ value?: string;
66
+ /**
67
+ * Valor padrão (não controlado)
68
+ */
69
+ defaultValue?: string;
70
+ /**
71
+ * Callback quando o valor muda
72
+ */
73
+ onValueChange?: (value: string | undefined) => void;
74
+ /**
75
+ * Função de filtro customizada
76
+ */
77
+ filterFunction?: (option: AutocompleteOption, searchTerm: string) => boolean;
78
+ /**
79
+ * Permite valores customizados (não presentes nas opções)
80
+ */
81
+ allowCustomValue?: boolean;
82
+ /**
83
+ * Estado de loading
84
+ */
85
+ isLoading?: boolean;
86
+ /**
87
+ * Mensagem quando não há resultados
88
+ */
89
+ emptyMessage?: string;
90
+ /**
91
+ * Children para composição (modo compound components)
92
+ */
93
+ children?: React.ReactNode;
94
+ }
95
+ export interface UseAutocompleteReturn {
96
+ /**
97
+ * Valor atual do input
98
+ */
99
+ inputValue: string;
100
+ /**
101
+ * Valor selecionado
102
+ */
103
+ selectedValue: string | undefined;
104
+ /**
105
+ * Se o popover está aberto
106
+ */
107
+ isOpen: boolean;
108
+ /**
109
+ * Items filtrados baseado no inputValue
110
+ */
111
+ filteredItems: AutocompleteOption[];
112
+ /**
113
+ * Índice do item destacado (para navegação por teclado)
114
+ */
115
+ highlightedIndex: number;
116
+ /**
117
+ * Estado de loading
118
+ */
119
+ isLoading: boolean;
120
+ /**
121
+ * Se não há items para exibir
122
+ */
123
+ isEmpty: boolean;
124
+ /**
125
+ * Abre o popover
126
+ */
127
+ open: () => void;
128
+ /**
129
+ * Fecha o popover
130
+ */
131
+ close: () => void;
132
+ /**
133
+ * Seleciona um valor
134
+ */
135
+ select: (value: string) => void;
136
+ /**
137
+ * Limpa a seleção
138
+ */
139
+ clear: () => void;
140
+ /**
141
+ * Define o valor do input
142
+ */
143
+ setInputValue: (value: string) => void;
144
+ /**
145
+ * Helper para props do input
146
+ */
147
+ getInputProps: (props?: React.InputHTMLAttributes<HTMLInputElement>) => Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "onFocus" | "onBlur" | "onKeyDown" | "aria-expanded" | "aria-autocomplete" | "aria-controls" | "aria-activedescendant" | "role"> & {
148
+ value: string;
149
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
150
+ onFocus: React.FocusEventHandler<HTMLInputElement>;
151
+ onBlur: React.FocusEventHandler<HTMLInputElement>;
152
+ onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
153
+ "aria-expanded": boolean;
154
+ "aria-autocomplete": "list";
155
+ "aria-controls": string;
156
+ "aria-activedescendant": string | undefined;
157
+ role: "combobox";
158
+ };
159
+ /**
160
+ * Helper para props do popover
161
+ */
162
+ getPopoverProps: (props?: React.ComponentProps<"div">) => React.ComponentProps<"div"> & {
163
+ "aria-label": string;
164
+ role: "listbox";
165
+ };
166
+ /**
167
+ * Helper para props da lista
168
+ */
169
+ getListProps: (props?: React.HTMLAttributes<HTMLUListElement>) => React.HTMLAttributes<HTMLUListElement> & {
170
+ id: string;
171
+ role: "listbox";
172
+ "aria-label": string;
173
+ };
174
+ /**
175
+ * Helper para props de um item
176
+ */
177
+ getItemProps: (item: AutocompleteOption, props?: React.HTMLAttributes<HTMLLIElement>) => Omit<React.HTMLAttributes<HTMLLIElement>, "role" | "aria-selected" | "aria-disabled" | "id" | "onClick" | "onMouseEnter"> & {
178
+ role: "option";
179
+ "aria-selected": boolean;
180
+ "aria-disabled": boolean;
181
+ id: string;
182
+ onClick: (e: React.MouseEvent<HTMLLIElement>) => void;
183
+ onMouseEnter: (e: React.MouseEvent<HTMLLIElement>) => void;
184
+ };
185
+ /**
186
+ * Extrai items dos children (para modo composição)
187
+ */
188
+ extractItemsFromChildren: (children: React.ReactNode) => AutocompleteOption[];
189
+ }
190
+ /**
191
+ * Hook Headless UI para Autocomplete
192
+ *
193
+ * Fornece apenas a lógica e API, sem markup ou styles.
194
+ * Você é responsável por criar o visual.
195
+ */
196
+ export declare function useAutocomplete(options?: UseAutocompleteOptions): UseAutocompleteReturn;
197
+ //# sourceMappingURL=useAutocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAutocomplete.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAutocomplete/useAutocomplete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAE/B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAE7E;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,aAAa,EAAE,kBAAkB,EAAE,CAAC;IAEpC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;OAEG;IACH,aAAa,EAAE,CACb,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAChD,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,uBAAuB,GAAG,MAAM,CAAC,GAAG;QAC/M,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;QAC3D,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAClD,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;QAC9D,eAAe,EAAE,OAAO,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5C,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;IAEF;;OAEG;IACH,eAAe,EAAE,CACf,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,KAChC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;QACjC,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC;IAEF;;OAEG;IACH,YAAY,EAAE,CACZ,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAC3C,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG;QAC5C,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,SAAS,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;OAEG;IACH,YAAY,EAAE,CACZ,IAAI,EAAE,kBAAkB,EACxB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,KACxC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,CAAC,GAAG;QAC/H,IAAI,EAAE,QAAQ,CAAC;QACf,eAAe,EAAE,OAAO,CAAC;QACzB,eAAe,EAAE,OAAO,CAAC;QACzB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QACtD,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;KAC5D,CAAC;IAEF;;OAEG;IACH,wBAAwB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;CAC/E;AA4FD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CA+TvB"}
@@ -0,0 +1,379 @@
1
+ /**
2
+ * useAutocomplete - Headless UI Hook
3
+ *
4
+ * Fornece apenas: lógica, estado, processamento e API
5
+ * NÃO fornece: markup, styles ou implementações pré-construídas
6
+ *
7
+ * Padrão Headless UI: você controla o markup e styles
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * function MyCustomAutocomplete() {
12
+ * const {
13
+ * inputValue,
14
+ * selectedValue,
15
+ * isOpen,
16
+ * filteredItems,
17
+ * getInputProps,
18
+ * getPopoverProps,
19
+ * getListProps,
20
+ * getItemProps,
21
+ * open,
22
+ * close,
23
+ * select,
24
+ * clear,
25
+ * } = useAutocomplete({
26
+ * options: [
27
+ * { value: "1", label: "Option 1" },
28
+ * { value: "2", label: "Option 2" },
29
+ * ],
30
+ * });
31
+ *
32
+ * return (
33
+ * <div>
34
+ * <input {...getInputProps()} />
35
+ * {isOpen && (
36
+ * <div {...getPopoverProps()}>
37
+ * <ul {...getListProps()}>
38
+ * {filteredItems.map((item) => (
39
+ * <li key={item.value} {...getItemProps(item)}>
40
+ * {item.label}
41
+ * </li>
42
+ * ))}
43
+ * </ul>
44
+ * </div>
45
+ * )}
46
+ * </div>
47
+ * );
48
+ * }
49
+ * ```
50
+ */
51
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
52
+ import * as React from "react";
53
+ /**
54
+ * Função de filtro padrão (case-insensitive)
55
+ */
56
+ function defaultFilter(option, searchTerm) {
57
+ return option.label.toLowerCase().includes(searchTerm.toLowerCase());
58
+ }
59
+ /**
60
+ * Extrai items dos children em modo composição
61
+ */
62
+ function extractItemsFromChildren(children) {
63
+ const items = [];
64
+ const processChild = (child) => {
65
+ if (!React.isValidElement(child)) {
66
+ return;
67
+ }
68
+ const props = child.props;
69
+ // Se tiver prop 'value', é um Autocomplete.Item
70
+ if (props.value !== undefined) {
71
+ const value = String(props.value);
72
+ let label = value;
73
+ // Extrair o texto dos children
74
+ if (props.children !== undefined && props.children !== null) {
75
+ if (typeof props.children === "string") {
76
+ label = props.children;
77
+ }
78
+ else if (typeof props.children === "number") {
79
+ label = String(props.children);
80
+ }
81
+ else if (React.isValidElement(props.children)) {
82
+ const childProps = props.children.props;
83
+ if (typeof childProps?.children === "string") {
84
+ label = childProps.children;
85
+ }
86
+ else {
87
+ label = String(props.children);
88
+ }
89
+ }
90
+ else if (Array.isArray(props.children)) {
91
+ React.Children.forEach(props.children, (c) => {
92
+ if (typeof c === "string" && label === value) {
93
+ label = c;
94
+ }
95
+ });
96
+ }
97
+ else {
98
+ label = String(props.children);
99
+ }
100
+ }
101
+ items.push({
102
+ value,
103
+ label,
104
+ disabled: props.disabled,
105
+ });
106
+ return;
107
+ }
108
+ // Se tiver prop 'title', é um AutocompleteSection - processar seus children
109
+ if (props.title !== undefined) {
110
+ if (props.children) {
111
+ React.Children.forEach(props.children, processChild);
112
+ }
113
+ return;
114
+ }
115
+ // Se tiver children mas não é Item nem Section, processar recursivamente
116
+ if (props.children !== undefined && props.children !== null) {
117
+ if (typeof props.children === "string" ||
118
+ typeof props.children === "number" ||
119
+ typeof props.children === "boolean") {
120
+ return;
121
+ }
122
+ if (Array.isArray(props.children) || React.isValidElement(props.children)) {
123
+ React.Children.forEach(props.children, processChild);
124
+ }
125
+ else if (typeof props.children === "object") {
126
+ React.Children.forEach(props.children, processChild);
127
+ }
128
+ }
129
+ };
130
+ React.Children.forEach(children, processChild);
131
+ return items;
132
+ }
133
+ /**
134
+ * Hook Headless UI para Autocomplete
135
+ *
136
+ * Fornece apenas a lógica e API, sem markup ou styles.
137
+ * Você é responsável por criar o visual.
138
+ */
139
+ export function useAutocomplete(options = {}) {
140
+ const { options: providedOptions = [], value: controlledValue, defaultValue, onValueChange, filterFunction = defaultFilter, allowCustomValue = false, isLoading = false, emptyMessage = "Nenhum resultado encontrado.", children, } = options;
141
+ // Determinar se está usando composição ou API antiga
142
+ const useComposition = children !== undefined;
143
+ // Estado interno
144
+ const [inputValue, setInputValueState] = useState("");
145
+ const [selectedValue, setSelectedValue] = useState(controlledValue ?? defaultValue);
146
+ const [isOpen, setIsOpen] = useState(false);
147
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
148
+ // Determinar se é controlado
149
+ const isControlled = controlledValue !== undefined;
150
+ // Extrair items dos children se em modo composição
151
+ const itemsFromChildren = useMemo(() => {
152
+ if (!useComposition)
153
+ return [];
154
+ return extractItemsFromChildren(children);
155
+ }, [useComposition, children]);
156
+ // Items disponíveis (API antiga ou composição)
157
+ const allItems = useMemo(() => {
158
+ if (useComposition) {
159
+ return itemsFromChildren;
160
+ }
161
+ return providedOptions;
162
+ }, [useComposition, itemsFromChildren, providedOptions]);
163
+ // Filtrar items baseado no inputValue
164
+ const filteredItems = useMemo(() => {
165
+ if (!inputValue.trim()) {
166
+ return allItems;
167
+ }
168
+ return allItems.filter((item) => filterFunction(item, inputValue));
169
+ }, [allItems, inputValue, filterFunction]);
170
+ // Estado derivado
171
+ const isEmpty = filteredItems.length === 0 && !isLoading;
172
+ // IDs para acessibilidade
173
+ const listIdRef = useRef(`autocomplete-list-${React.useId()}`);
174
+ const listId = listIdRef.current;
175
+ // Sincronizar com valor controlado
176
+ useEffect(() => {
177
+ if (isControlled && controlledValue !== undefined) {
178
+ const option = allItems.find((opt) => opt.value === controlledValue);
179
+ if (option) {
180
+ setSelectedValue(controlledValue);
181
+ setInputValueState(option.label);
182
+ }
183
+ else {
184
+ setSelectedValue(undefined);
185
+ setInputValueState(controlledValue);
186
+ }
187
+ }
188
+ }, [isControlled, controlledValue, allItems]);
189
+ // Sincronizar inputValue quando seleção muda (apenas para API antiga)
190
+ useEffect(() => {
191
+ if (!useComposition && selectedValue) {
192
+ const option = allItems.find((opt) => opt.value === selectedValue);
193
+ if (option && inputValue !== option.label) {
194
+ setInputValueState(option.label);
195
+ }
196
+ }
197
+ }, [selectedValue, allItems, useComposition, inputValue]);
198
+ // Controles
199
+ const open = useCallback(() => {
200
+ if (filteredItems.length > 0 || isLoading) {
201
+ setIsOpen(true);
202
+ }
203
+ }, [filteredItems.length, isLoading]);
204
+ const close = useCallback(() => {
205
+ setIsOpen(false);
206
+ setHighlightedIndex(-1);
207
+ }, []);
208
+ const select = useCallback((value) => {
209
+ const option = allItems.find((opt) => opt.value === value);
210
+ if (option) {
211
+ setSelectedValue(value);
212
+ setInputValueState(option.label);
213
+ onValueChange?.(value);
214
+ close();
215
+ }
216
+ else if (allowCustomValue) {
217
+ setSelectedValue(value);
218
+ setInputValueState(value);
219
+ onValueChange?.(value);
220
+ close();
221
+ }
222
+ }, [allItems, allowCustomValue, onValueChange, close]);
223
+ const clear = useCallback(() => {
224
+ setSelectedValue(undefined);
225
+ setInputValueState("");
226
+ onValueChange?.(undefined);
227
+ close();
228
+ }, [onValueChange, close]);
229
+ const setInputValue = useCallback((value) => {
230
+ setInputValueState(value);
231
+ if (value.trim() && (filteredItems.length > 0 || isLoading)) {
232
+ setIsOpen(true);
233
+ }
234
+ else if (!value.trim()) {
235
+ setIsOpen(false);
236
+ }
237
+ }, [filteredItems.length, isLoading]);
238
+ // Helpers de props
239
+ const getInputProps = useCallback((props = {}) => {
240
+ const highlightedItem = filteredItems[highlightedIndex];
241
+ const activeDescendant = highlightedItem
242
+ ? `${listId}-item-${highlightedItem.value}`
243
+ : undefined;
244
+ const handleFocus = (e) => {
245
+ open();
246
+ props.onFocus?.(e);
247
+ };
248
+ const handleBlur = (e) => {
249
+ // Delay para permitir cliques nos items
250
+ setTimeout(() => {
251
+ // Não fechar o popover no onBlur - deixar o Popover gerenciar o fechamento
252
+ // O Popover do Radix UI já gerencia o fechamento quando você clica fora
253
+ // via onOpenChange. Fechar aqui causa conflito e comportamento inconsistente.
254
+ props.onBlur?.(e);
255
+ }, 200);
256
+ };
257
+ return {
258
+ ...props,
259
+ value: inputValue,
260
+ onChange: (e) => {
261
+ setInputValue(e.target.value);
262
+ props.onChange?.(e);
263
+ },
264
+ onFocus: handleFocus,
265
+ onBlur: handleBlur,
266
+ onKeyDown: (e) => {
267
+ if (e.key === "ArrowDown") {
268
+ e.preventDefault();
269
+ if (isOpen) {
270
+ setHighlightedIndex((prev) => prev < filteredItems.length - 1 ? prev + 1 : prev);
271
+ }
272
+ else {
273
+ open();
274
+ }
275
+ }
276
+ else if (e.key === "ArrowUp") {
277
+ e.preventDefault();
278
+ if (isOpen) {
279
+ setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : -1));
280
+ }
281
+ }
282
+ else if (e.key === "Enter") {
283
+ e.preventDefault();
284
+ if (isOpen && highlightedItem) {
285
+ select(highlightedItem.value);
286
+ }
287
+ else if (isOpen && filteredItems.length === 1) {
288
+ select(filteredItems[0].value);
289
+ }
290
+ else if (allowCustomValue && inputValue.trim()) {
291
+ select(inputValue);
292
+ }
293
+ }
294
+ else if (e.key === "Escape") {
295
+ e.preventDefault();
296
+ close();
297
+ }
298
+ props.onKeyDown?.(e);
299
+ },
300
+ "aria-expanded": isOpen,
301
+ "aria-autocomplete": "list",
302
+ "aria-controls": listId,
303
+ "aria-activedescendant": activeDescendant,
304
+ role: "combobox",
305
+ };
306
+ }, [
307
+ inputValue,
308
+ isOpen,
309
+ filteredItems,
310
+ highlightedIndex,
311
+ listId,
312
+ open,
313
+ close,
314
+ select,
315
+ allowCustomValue,
316
+ ]);
317
+ const getPopoverProps = useCallback((props = {}) => {
318
+ return {
319
+ ...props,
320
+ "aria-label": "Lista de opções",
321
+ role: "listbox",
322
+ };
323
+ }, []);
324
+ const getListProps = useCallback((props = {}) => {
325
+ return {
326
+ ...props,
327
+ id: listId,
328
+ role: "listbox",
329
+ "aria-label": "Opções disponíveis",
330
+ };
331
+ }, [listId]);
332
+ const getItemProps = useCallback((item, props = {}) => {
333
+ const itemId = `${listId}-item-${item.value}`;
334
+ const isSelected = selectedValue === item.value;
335
+ const isHighlighted = filteredItems[highlightedIndex]?.value === item.value;
336
+ const handleClick = (e) => {
337
+ if (!item.disabled) {
338
+ select(item.value);
339
+ }
340
+ props.onClick?.(e);
341
+ };
342
+ const handleMouseEnter = (e) => {
343
+ const index = filteredItems.findIndex((i) => i.value === item.value);
344
+ if (index >= 0) {
345
+ setHighlightedIndex(index);
346
+ }
347
+ props.onMouseEnter?.(e);
348
+ };
349
+ return {
350
+ ...props,
351
+ role: "option",
352
+ "aria-selected": isSelected,
353
+ "aria-disabled": item.disabled ?? false,
354
+ id: itemId,
355
+ onClick: handleClick,
356
+ onMouseEnter: handleMouseEnter,
357
+ className: `${props.className || ""} ${isHighlighted ? "bg-accent" : ""} ${isSelected ? "font-semibold" : ""}`.trim(),
358
+ };
359
+ }, [listId, selectedValue, filteredItems, highlightedIndex, select]);
360
+ return {
361
+ inputValue,
362
+ selectedValue,
363
+ isOpen,
364
+ filteredItems,
365
+ highlightedIndex,
366
+ isLoading,
367
+ isEmpty,
368
+ open,
369
+ close,
370
+ select,
371
+ clear,
372
+ setInputValue,
373
+ getInputProps,
374
+ getPopoverProps,
375
+ getListProps,
376
+ getItemProps,
377
+ extractItemsFromChildren,
378
+ };
379
+ }
@@ -16,8 +16,9 @@ function calculateLevels(hierarchy) {
16
16
  const visited = new Set();
17
17
  // Função recursiva para calcular nível
18
18
  const calculateLevel = (entityId) => {
19
- if (levels.has(entityId)) {
20
- return levels.get(entityId);
19
+ const cachedLevel = levels.get(entityId);
20
+ if (cachedLevel !== undefined) {
21
+ return cachedLevel;
21
22
  }
22
23
  if (visited.has(entityId)) {
23
24
  // Ciclo detectado, retornar 0 como fallback
@@ -46,7 +47,7 @@ function calculateLevels(hierarchy) {
46
47
  /**
47
48
  * Organiza entidades por nível (geração) e calcula posições hierárquicas
48
49
  */
49
- function calculateHierarchicalPositions(data, hierarchy, nodeWidth, nodeHeight, horizontalSpacing, verticalSpacing) {
50
+ function calculateHierarchicalPositions(_data, hierarchy, nodeWidth, nodeHeight, horizontalSpacing, verticalSpacing) {
50
51
  const positions = new Map();
51
52
  const levels = calculateLevels(hierarchy);
52
53
  // Agrupar entidades por nível
@@ -55,12 +56,14 @@ function calculateHierarchicalPositions(data, hierarchy, nodeWidth, nodeHeight,
55
56
  if (!entitiesByLevel.has(level)) {
56
57
  entitiesByLevel.set(level, []);
57
58
  }
58
- entitiesByLevel.get(level).push(entityId);
59
+ entitiesByLevel.get(level)?.push(entityId);
59
60
  });
60
61
  // Calcular posições para cada nível, começando do nível 0 (raiz)
61
62
  const sortedLevels = Array.from(entitiesByLevel.keys()).sort((a, b) => a - b);
62
63
  sortedLevels.forEach((level) => {
63
64
  const entityIds = entitiesByLevel.get(level);
65
+ if (!entityIds)
66
+ return;
64
67
  // Ordenar entidades do mesmo nível (por ID para consistência)
65
68
  entityIds.sort();
66
69
  // Calcular posição Y baseada no nível (pais acima, filhos abaixo)
@@ -91,10 +94,13 @@ function calculateHierarchicalPositions(data, hierarchy, nodeWidth, nodeHeight,
91
94
  // Ajustar posições para evitar sobreposição
92
95
  entityIds.forEach((entityId, index) => {
93
96
  const currentPos = positions.get(entityId);
94
- const minX = currentPos.x;
97
+ if (!currentPos)
98
+ return;
95
99
  // Verificar se há sobreposição com outros nós do mesmo nível
96
100
  entityIds.slice(0, index).forEach((otherId) => {
97
101
  const otherPos = positions.get(otherId);
102
+ if (!otherPos)
103
+ return;
98
104
  if (Math.abs(currentPos.x - otherPos.x) < nodeWidth + horizontalSpacing) {
99
105
  // Ajustar para evitar sobreposição
100
106
  currentPos.x = otherPos.x + nodeWidth + horizontalSpacing;
package/dist/index.d.ts CHANGED
@@ -15,4 +15,5 @@ export * from "./hooks/useResizable";
15
15
  export * from "./hooks/useScriptEditor";
16
16
  export * from "./hooks/useStatCard";
17
17
  export * from "./hooks/useTimeTracker";
18
+ export * from "./hooks/useAutocomplete";
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAErC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAErC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -1,16 +1,19 @@
1
- var sY=Object.create;var{getPrototypeOf:uY,defineProperty:TY,getOwnPropertyNames:dY}=Object;var iY=Object.prototype.hasOwnProperty;var e=(Y,X,Z)=>{Z=Y!=null?sY(uY(Y)):{};let Q=X||!Y||!Y.__esModule?TY(Z,"default",{value:Y,enumerable:!0}):Z;for(let J of dY(Y))if(!iY.call(Q,J))TY(Q,J,{get:()=>Y[J],enumerable:!0});return Q};var rY=(Y,X)=>()=>(X||Y((X={exports:{}}).exports,X),X.exports);var o=rY((nY,H8)=>{(function(){function Y(W,L){Object.defineProperty(Q.prototype,W,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",L[0],L[1])}})}function X(W){if(W===null||typeof W!=="object")return null;return W=WY&&W[WY]||W["@@iterator"],typeof W==="function"?W:null}function Z(W,L){W=(W=W.constructor)&&(W.displayName||W.name)||"ReactClass";var A=W+"."+L;KY[A]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",L,W),KY[A]=!0)}function Q(W,L,A){this.props=W,this.context=L,this.refs=_8,this.updater=A||BY}function J(){}function K(W,L,A){this.props=W,this.context=L,this.refs=_8,this.updater=A||BY}function B(){}function U(W){return""+W}function q(W){try{U(W);var L=!1}catch(x){L=!0}if(L){L=console;var A=L.error,P=typeof Symbol==="function"&&Symbol.toStringTag&&W[Symbol.toStringTag]||W.constructor.name||"Object";return A.call(L,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",P),U(W)}}function N(W){if(W==null)return null;if(typeof W==="function")return W.$$typeof===wY?null:W.displayName||W.name||null;if(typeof W==="string")return W;switch(W){case v8:return"Fragment";case YY:return"Profiler";case e8:return"StrictMode";case XY:return"Suspense";case gY:return"SuspenseList";case JY:return"Activity"}if(typeof W==="object")switch(typeof W.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),W.$$typeof){case t8:return"Portal";case ZY:return W.displayName||"Context";case I8:return(W._context.displayName||"Context")+".Consumer";case QY:var L=W.render;return W=W.displayName,W||(W=L.displayName||L.name||"",W=W!==""?"ForwardRef("+W+")":"ForwardRef"),W;case R8:return L=W.displayName||null,L!==null?L:N(W.type)||"Memo";case j8:L=W._payload,W=W._init;try{return N(W(L))}catch(A){}}return null}function G(W){if(W===v8)return"<>";if(typeof W==="object"&&W!==null&&W.$$typeof===j8)return"<...>";try{var L=N(W);return L?"<"+L+">":"<...>"}catch(A){return"<...>"}}function E(){var W=f.A;return W===null?null:W.getOwner()}function z(){return Error("react-stack-top-frame")}function j(W){if(z8.call(W,"key")){var L=Object.getOwnPropertyDescriptor(W,"key").get;if(L&&L.isReactWarning)return!1}return W.key!==void 0}function O(W,L){function A(){LY||(LY=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",L))}A.isReactWarning=!0,Object.defineProperty(W,"key",{get:A,configurable:!0})}function H(){var W=N(this.type);return zY[W]||(zY[W]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),W=this.props.ref,W!==void 0?W:null}function V(W,L,A,P,x,g){var h=A.ref;return W={$$typeof:C8,type:W,key:L,props:A,_owner:P},(h!==void 0?h:null)!==null?Object.defineProperty(W,"ref",{enumerable:!1,get:H}):Object.defineProperty(W,"ref",{enumerable:!1,value:null}),W._store={},Object.defineProperty(W._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(W,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(W,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:x}),Object.defineProperty(W,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:g}),Object.freeze&&(Object.freeze(W.props),Object.freeze(W)),W}function D(W,L){return L=V(W.type,L,W.props,W._owner,W._debugStack,W._debugTask),W._store&&(L._store.validated=W._store.validated),L}function $(W){T(W)?W._store&&(W._store.validated=1):typeof W==="object"&&W!==null&&W.$$typeof===j8&&(W._payload.status==="fulfilled"?T(W._payload.value)&&W._payload.value._store&&(W._payload.value._store.validated=1):W._store&&(W._store.validated=1))}function T(W){return typeof W==="object"&&W!==null&&W.$$typeof===C8}function F(W){var L={"=":"=0",":":"=2"};return"$"+W.replace(/[=:]/g,function(A){return L[A]})}function S(W,L){return typeof W==="object"&&W!==null&&W.key!=null?(q(W.key),F(""+W.key)):L.toString(36)}function M(W){switch(W.status){case"fulfilled":return W.value;case"rejected":throw W.reason;default:switch(typeof W.status==="string"?W.then(B,B):(W.status="pending",W.then(function(L){W.status==="pending"&&(W.status="fulfilled",W.value=L)},function(L){W.status==="pending"&&(W.status="rejected",W.reason=L)})),W.status){case"fulfilled":return W.value;case"rejected":throw W.reason}}throw W}function v(W,L,A,P,x){var g=typeof W;if(g==="undefined"||g==="boolean")W=null;var h=!1;if(W===null)h=!0;else switch(g){case"bigint":case"string":case"number":h=!0;break;case"object":switch(W.$$typeof){case C8:case t8:h=!0;break;case j8:return h=W._init,v(h(W._payload),L,A,P,x)}}if(h){h=W,x=x(h);var p=P===""?"."+S(h,0):P;return jY(x)?(A="",p!=null&&(A=p.replace(OY,"$&/")+"/"),v(x,L,A,"",function(J8){return J8})):x!=null&&(T(x)&&(x.key!=null&&(h&&h.key===x.key||q(x.key)),A=D(x,A+(x.key==null||h&&h.key===x.key?"":(""+x.key).replace(OY,"$&/")+"/")+p),P!==""&&h!=null&&T(h)&&h.key==null&&h._store&&!h._store.validated&&(A._store.validated=2),x=A),L.push(x)),1}if(h=0,p=P===""?".":P+":",jY(W))for(var w=0;w<W.length;w++)P=W[w],g=p+S(P,w),h+=v(P,L,A,g,x);else if(w=X(W),typeof w==="function")for(w===W.entries&&(GY||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),GY=!0),W=w.call(W),w=0;!(P=W.next()).done;)P=P.value,g=p+S(P,w++),h+=v(P,L,A,g,x);else if(g==="object"){if(typeof W.then==="function")return v(M(W),L,A,P,x);throw L=String(W),Error("Objects are not valid as a React child (found: "+(L==="[object Object]"?"object with keys {"+Object.keys(W).join(", ")+"}":L)+"). If you meant to render a collection of children, use an array instead.")}return h}function I(W,L,A){if(W==null)return W;var P=[],x=0;return v(W,P,"","",function(g){return L.call(A,g,x++)}),P}function C(W){if(W._status===-1){var L=W._ioInfo;L!=null&&(L.start=L.end=performance.now()),L=W._result;var A=L();if(A.then(function(x){if(W._status===0||W._status===-1){W._status=1,W._result=x;var g=W._ioInfo;g!=null&&(g.end=performance.now()),A.status===void 0&&(A.status="fulfilled",A.value=x)}},function(x){if(W._status===0||W._status===-1){W._status=2,W._result=x;var g=W._ioInfo;g!=null&&(g.end=performance.now()),A.status===void 0&&(A.status="rejected",A.reason=x)}}),L=W._ioInfo,L!=null){L.value=A;var P=A.displayName;typeof P==="string"&&(L.name=P)}W._status===-1&&(W._status=0,W._result=A)}if(W._status===1)return L=W._result,L===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
2
-
3
- Your code should look like:
4
- const MyComponent = lazy(() => import('./MyComponent'))
5
-
6
- Did you accidentally put curly braces around the import?`,L),"default"in L||console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
7
-
8
- Your code should look like:
9
- const MyComponent = lazy(() => import('./MyComponent'))`,L),L.default;throw W._result}function k(){var W=f.H;return W===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
10
- 1. You might have mismatching versions of React and the renderer (such as React DOM)
11
- 2. You might be breaking the Rules of Hooks
12
- 3. You might have more than one copy of React in the same app
13
- See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),W}function m(){f.asyncTransitions--}function R(W){if(G8===null)try{var L=("require"+Math.random()).slice(0,7);G8=(H8&&H8[L]).call(H8,"timers").setImmediate}catch(A){G8=function(P){HY===!1&&(HY=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var x=new MessageChannel;x.port1.onmessage=P,x.port2.postMessage(void 0)}}return G8(W)}function s(W){return 1<W.length&&typeof AggregateError==="function"?AggregateError(W):W[0]}function i(W,L){L!==O8-1&&console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),O8=L}function U8(W,L,A){var P=f.actQueue;if(P!==null)if(P.length!==0)try{F8(P),R(function(){return U8(W,L,A)});return}catch(x){f.thrownErrors.push(x)}else f.actQueue=null;0<f.thrownErrors.length?(P=s(f.thrownErrors),f.thrownErrors.length=0,A(P)):L(W)}function F8(W){if(!y8){y8=!0;var L=0;try{for(;L<W.length;L++){var A=W[L];do{f.didUsePromise=!1;var P=A(!1);if(P!==null){if(f.didUsePromise){W[L]=A,W.splice(0,L);return}A=P}else break}while(1)}W.length=0}catch(x){W.splice(0,L+1),f.thrownErrors.push(x)}finally{y8=!1}}}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var C8=Symbol.for("react.transitional.element"),t8=Symbol.for("react.portal"),v8=Symbol.for("react.fragment"),e8=Symbol.for("react.strict_mode"),YY=Symbol.for("react.profiler"),I8=Symbol.for("react.consumer"),ZY=Symbol.for("react.context"),QY=Symbol.for("react.forward_ref"),XY=Symbol.for("react.suspense"),gY=Symbol.for("react.suspense_list"),R8=Symbol.for("react.memo"),j8=Symbol.for("react.lazy"),JY=Symbol.for("react.activity"),WY=Symbol.iterator,KY={},BY={isMounted:function(){return!1},enqueueForceUpdate:function(W){Z(W,"forceUpdate")},enqueueReplaceState:function(W){Z(W,"replaceState")},enqueueSetState:function(W){Z(W,"setState")}},UY=Object.assign,_8={};Object.freeze(_8),Q.prototype.isReactComponent={},Q.prototype.setState=function(W,L){if(typeof W!=="object"&&typeof W!=="function"&&W!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,W,L,"setState")},Q.prototype.forceUpdate=function(W){this.updater.enqueueForceUpdate(this,W,"forceUpdate")};var t={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(q8 in t)t.hasOwnProperty(q8)&&Y(q8,t[q8]);J.prototype=Q.prototype,t=K.prototype=new J,t.constructor=K,UY(t,Q.prototype),t.isPureReactComponent=!0;var jY=Array.isArray,wY=Symbol.for("react.client.reference"),f={H:null,A:null,T:null,S:null,actQueue:null,asyncTransitions:0,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1,didUsePromise:!1,thrownErrors:[],getCurrentStack:null,recentlyCreatedOwnerStacks:0},z8=Object.prototype.hasOwnProperty,qY=console.createTask?console.createTask:function(){return null};t={react_stack_bottom_frame:function(W){return W()}};var LY,NY,zY={},mY=t.react_stack_bottom_frame.bind(t,z)(),pY=qY(G(z)),GY=!1,OY=/\/+/g,EY=typeof reportError==="function"?reportError:function(W){if(typeof window==="object"&&typeof window.ErrorEvent==="function"){var L=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof W==="object"&&W!==null&&typeof W.message==="string"?String(W.message):String(W),error:W});if(!window.dispatchEvent(L))return}else if(typeof process==="object"&&typeof process.emit==="function"){process.emit("uncaughtException",W);return}console.error(W)},HY=!1,G8=null,O8=0,E8=!1,y8=!1,AY=typeof queueMicrotask==="function"?function(W){queueMicrotask(function(){return queueMicrotask(W)})}:R;t=Object.freeze({__proto__:null,c:function(W){return k().useMemoCache(W)}});var q8={map:I,forEach:function(W,L,A){I(W,function(){L.apply(this,arguments)},A)},count:function(W){var L=0;return I(W,function(){L++}),L},toArray:function(W){return I(W,function(L){return L})||[]},only:function(W){if(!T(W))throw Error("React.Children.only expected to receive a single React element child.");return W}};nY.Activity=JY,nY.Children=q8,nY.Component=Q,nY.Fragment=v8,nY.Profiler=YY,nY.PureComponent=K,nY.StrictMode=e8,nY.Suspense=XY,nY.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=f,nY.__COMPILER_RUNTIME=t,nY.act=function(W){var L=f.actQueue,A=O8;O8++;var P=f.actQueue=L!==null?L:[],x=!1;try{var g=W()}catch(w){f.thrownErrors.push(w)}if(0<f.thrownErrors.length)throw i(L,A),W=s(f.thrownErrors),f.thrownErrors.length=0,W;if(g!==null&&typeof g==="object"&&typeof g.then==="function"){var h=g;return AY(function(){x||E8||(E8=!0,console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(w,J8){x=!0,h.then(function(B8){if(i(L,A),A===0){try{F8(P),R(function(){return U8(B8,w,J8)})}catch(cY){f.thrownErrors.push(cY)}if(0<f.thrownErrors.length){var bY=s(f.thrownErrors);f.thrownErrors.length=0,J8(bY)}}else w(B8)},function(B8){i(L,A),0<f.thrownErrors.length?(B8=s(f.thrownErrors),f.thrownErrors.length=0,J8(B8)):J8(B8)})}}}var p=g;if(i(L,A),A===0&&(F8(P),P.length!==0&&AY(function(){x||E8||(E8=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),f.actQueue=null),0<f.thrownErrors.length)throw W=s(f.thrownErrors),f.thrownErrors.length=0,W;return{then:function(w,J8){x=!0,A===0?(f.actQueue=P,R(function(){return U8(p,w,J8)})):w(p)}}},nY.cache=function(W){return function(){return W.apply(null,arguments)}},nY.cacheSignal=function(){return null},nY.captureOwnerStack=function(){var W=f.getCurrentStack;return W===null?null:W()},nY.cloneElement=function(W,L,A){if(W===null||W===void 0)throw Error("The argument must be a React element, but you passed "+W+".");var P=UY({},W.props),x=W.key,g=W._owner;if(L!=null){var h;Y:{if(z8.call(L,"ref")&&(h=Object.getOwnPropertyDescriptor(L,"ref").get)&&h.isReactWarning){h=!1;break Y}h=L.ref!==void 0}h&&(g=E()),j(L)&&(q(L.key),x=""+L.key);for(p in L)!z8.call(L,p)||p==="key"||p==="__self"||p==="__source"||p==="ref"&&L.ref===void 0||(P[p]=L[p])}var p=arguments.length-2;if(p===1)P.children=A;else if(1<p){h=Array(p);for(var w=0;w<p;w++)h[w]=arguments[w+2];P.children=h}P=V(W.type,x,P,g,W._debugStack,W._debugTask);for(x=2;x<arguments.length;x++)$(arguments[x]);return P},nY.createContext=function(W){return W={$$typeof:ZY,_currentValue:W,_currentValue2:W,_threadCount:0,Provider:null,Consumer:null},W.Provider=W,W.Consumer={$$typeof:I8,_context:W},W._currentRenderer=null,W._currentRenderer2=null,W},nY.createElement=function(W,L,A){for(var P=2;P<arguments.length;P++)$(arguments[P]);P={};var x=null;if(L!=null)for(w in NY||!("__self"in L)||"key"in L||(NY=!0,console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")),j(L)&&(q(L.key),x=""+L.key),L)z8.call(L,w)&&w!=="key"&&w!=="__self"&&w!=="__source"&&(P[w]=L[w]);var g=arguments.length-2;if(g===1)P.children=A;else if(1<g){for(var h=Array(g),p=0;p<g;p++)h[p]=arguments[p+2];Object.freeze&&Object.freeze(h),P.children=h}if(W&&W.defaultProps)for(w in g=W.defaultProps,g)P[w]===void 0&&(P[w]=g[w]);x&&O(P,typeof W==="function"?W.displayName||W.name||"Unknown":W);var w=1e4>f.recentlyCreatedOwnerStacks++;return V(W,x,P,E(),w?Error("react-stack-top-frame"):mY,w?qY(G(W)):pY)},nY.createRef=function(){var W={current:null};return Object.seal(W),W},nY.forwardRef=function(W){W!=null&&W.$$typeof===R8?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof W!=="function"?console.error("forwardRef requires a render function but was given %s.",W===null?"null":typeof W):W.length!==0&&W.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",W.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),W!=null&&W.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var L={$$typeof:QY,render:W},A;return Object.defineProperty(L,"displayName",{enumerable:!1,configurable:!0,get:function(){return A},set:function(P){A=P,W.name||W.displayName||(Object.defineProperty(W,"name",{value:P}),W.displayName=P)}}),L},nY.isValidElement=T,nY.lazy=function(W){W={_status:-1,_result:W};var L={$$typeof:j8,_payload:W,_init:C},A={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return W._ioInfo=A,L._debugInfo=[{awaited:A}],L},nY.memo=function(W,L){W==null&&console.error("memo: The first argument must be a component. Instead received: %s",W===null?"null":typeof W),L={$$typeof:R8,type:W,compare:L===void 0?null:L};var A;return Object.defineProperty(L,"displayName",{enumerable:!1,configurable:!0,get:function(){return A},set:function(P){A=P,W.name||W.displayName||(Object.defineProperty(W,"name",{value:P}),W.displayName=P)}}),L},nY.startTransition=function(W){var L=f.T,A={};A._updatedFibers=new Set,f.T=A;try{var P=W(),x=f.S;x!==null&&x(A,P),typeof P==="object"&&P!==null&&typeof P.then==="function"&&(f.asyncTransitions++,P.then(m,m),P.then(B,EY))}catch(g){EY(g)}finally{L===null&&A._updatedFibers&&(W=A._updatedFibers.size,A._updatedFibers.clear(),10<W&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")),L!==null&&A.types!==null&&(L.types!==null&&L.types!==A.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),L.types=A.types),f.T=L}},nY.unstable_useCacheRefresh=function(){return k().useCacheRefresh()},nY.use=function(W){return k().use(W)},nY.useActionState=function(W,L,A){return k().useActionState(W,L,A)},nY.useCallback=function(W,L){return k().useCallback(W,L)},nY.useContext=function(W){var L=k();return W.$$typeof===I8&&console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"),L.useContext(W)},nY.useDebugValue=function(W,L){return k().useDebugValue(W,L)},nY.useDeferredValue=function(W,L){return k().useDeferredValue(W,L)},nY.useEffect=function(W,L){return W==null&&console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"),k().useEffect(W,L)},nY.useEffectEvent=function(W){return k().useEffectEvent(W)},nY.useId=function(){return k().useId()},nY.useImperativeHandle=function(W,L,A){return k().useImperativeHandle(W,L,A)},nY.useInsertionEffect=function(W,L){return W==null&&console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"),k().useInsertionEffect(W,L)},nY.useLayoutEffect=function(W,L){return W==null&&console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"),k().useLayoutEffect(W,L)},nY.useMemo=function(W,L){return k().useMemo(W,L)},nY.useOptimistic=function(W,L){return k().useOptimistic(W,L)},nY.useReducer=function(W,L,A){return k().useReducer(W,L,A)},nY.useRef=function(W){return k().useRef(W)},nY.useState=function(W){return k().useState(W)},nY.useSyncExternalStore=function(W,L,A){return k().useSyncExternalStore(W,L,A)},nY.useTransition=function(){return k().useTransition()},nY.version="19.2.0",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var b=e(o(),1);function oY(Y){let{containerRef:X,activeSelector:Z='[data-state="active"]',getElementValue:Q,updateOnResize:J=!0}=Y,K=b.useRef(new Map),B=b.useRef(null),U=b.useRef(void 0),[q,N]=b.useState({left:0,width:0,height:0,top:0,opacity:0}),[G,E]=b.useState();b.useEffect(()=>{U.current=G},[G]);let z=b.useCallback(()=>{let T=U.current;if(!T){N((M)=>{if(M.opacity===0)return M;return{left:0,width:0,height:0,top:0,opacity:0}});return}let F=K.current.get(T),S=X.current;if(F&&S){let M=F.getBoundingClientRect(),v=S.getBoundingClientRect(),I=M.left-v.left,C=M.width,k=M.height,m=M.top-v.top;N((R)=>{if(R.left===I&&R.width===C&&R.height===k&&R.top===m&&R.opacity===1)return R;return{left:I,width:C,height:k,top:m,opacity:1}})}},[X]),j=b.useRef(void 0);b.useEffect(()=>{j.current=()=>{if(B.current!==null)cancelAnimationFrame(B.current);B.current=requestAnimationFrame(()=>{z(),B.current=null})}},[z]);let O=b.useCallback(()=>{j.current?.()},[]);b.useEffect(()=>{O()},[O]),b.useEffect(()=>{if(!J)return;let T=()=>O();return window.addEventListener("resize",T),()=>{if(window.removeEventListener("resize",T),B.current!==null)cancelAnimationFrame(B.current)}},[O,J]);let H=b.useCallback((T,F)=>{let S=K.current.get(F);if(T===S)return;if(T)K.current.set(F,T);else if(S)K.current.delete(F);else return;if(T)O()},[O]),V=b.useCallback((T)=>{K.current.delete(T),O()},[O]),D=b.useRef(Z),$=b.useRef(Q);return b.useEffect(()=>{D.current=Z,$.current=Q},[Z,Q]),b.useEffect(()=>{let T=X.current;if(!T)return;let F=()=>{let v=T.querySelector(D.current);if(v){let I;if($.current)I=$.current(v);else if(I=v.getAttribute("data-value")||void 0,!I){for(let[C,k]of K.current.entries())if(k===v){I=C;break}}if(I)E((C)=>{if(C!==I)return I;return C})}},S=new MutationObserver(()=>{requestAnimationFrame(F)});S.observe(T,{attributes:!0,attributeFilter:["data-state","data-active","aria-selected"],subtree:!0});let M=setTimeout(F,0);return()=>{S.disconnect(),clearTimeout(M)}},[X]),{indicatorStyle:q,registerElement:H,unregisterElement:V,updateIndicator:z,activeValue:G}}var n=e(o(),1);function aY(Y){let X=new Map,Z=new Set,Q=(J)=>{let K=X.get(J);if(K!==void 0)return K;if(Z.has(J))return 0;Z.add(J);let B=Y.get(J);if(!B||B.parents.length===0)return X.set(J,0),0;let U=B.parents.map((G)=>Q(G.id)),N=Math.max(...U)+1;return X.set(J,N),N};return Y.forEach((J,K)=>{Q(K)}),X}function lY(Y,X,Z,Q,J,K){let B=new Map,U=aY(X),q=new Map;return U.forEach((G,E)=>{if(!q.has(G))q.set(G,[]);q.get(G)?.push(E)}),Array.from(q.keys()).sort((G,E)=>G-E).forEach((G)=>{let E=q.get(G);if(!E)return;E.sort();let z=G*(Q+K);E.forEach((j)=>{let O=X.get(j),H=0;if(O&&O.parents.length>0){let V=O.parents.map((D)=>B.get(D.id)).filter((D)=>D!==void 0);if(V.length>0)H=V.reduce(($,T)=>$+T.x,0)/V.length}if(H===0&&E.length>1){let V=E.indexOf(j);H=-(E.length*Z+(E.length-1)*J)/2+Z/2+V*(Z+J)}B.set(j,{x:H,y:z})}),E.forEach((j,O)=>{let H=B.get(j);if(!H)return;E.slice(0,O).forEach((V)=>{let D=B.get(V);if(!D)return;if(Math.abs(H.x-D.x)<Z+J)H.x=D.x+Z+J})})}),B}function tY(Y,X,Z,Q,J,K,B){let U=[],q=lY(Y,X,Q,J,K,B);return Y.people.forEach((N)=>{let G=q.get(N.id)||{x:0,y:0},E=X.get(N.id);U.push({id:N.id,type:"genealogy",position:G,data:{person:N,hierarchy:E,isExpanded:Z[N.id]??!1}})}),U}function eY(Y,X,Z){let Q=[],J=new Set;return Y.relationships.forEach((K)=>{let B,U;switch(K.type){case"father":case"mother":{B=K.from,U=K.to;break}case"child":{B=K.to,U=K.from;break}default:B=K.from,U=K.to}let q=`e-${B}-${U}-${K.type}`;if(J.has(q))return;J.add(q);let N=X.get(B),G=X.get(U);if(!N||!G)return;let E=Z[B]??!0,z=Z[U]??!0;if(K.type==="father"||K.type==="mother"||K.type==="child"){if(!E||!z)return}Q.push({id:q,source:B,target:U,type:"animated",data:{relationship:K}})}),Q}function YZ(Y){let X=new Map;return Y.people.forEach((Z)=>{X.set(Z.id,{person:Z,parents:[],children:[],adoptions:[],siblings:[]})}),Y.relationships.forEach((Z)=>{let Q=X.get(Z.from),J=X.get(Z.to);if(!Q||!J)return;switch(Z.type){case"father":case"mother":{if(!J.parents.find((K)=>K.id===Z.from))J.parents.push(Q.person);if(Z.type==="father")J.father=Q.person;else if(Z.type==="mother")J.mother=Q.person;if(!Q.children.find((K)=>K.id===Z.to))Q.children.push(J.person);break}case"child":{if(!J.children.find((K)=>K.id===Z.from))J.children.push(Q.person);if(!Q.parents.find((K)=>K.id===Z.to))Q.parents.push(J.person);break}}}),X.forEach((Z)=>{if(Z.parents.length>0){let Q=Z.parents.map((J)=>J.id);X.forEach((J,K)=>{if(K!==Z.person.id){if(J.parents.some((U)=>Q.includes(U.id))&&!Z.siblings.find((U)=>U.id===K))Z.siblings.push(J.person)}})}}),X}function ZZ({data:Y,initialExpanded:X=[],nodeWidth:Z=200,nodeHeight:Q=100,horizontalSpacing:J=250,verticalSpacing:K=150,onNodeSelect:B,onNodeExpand:U,onAddRelation:q}){let[N,G]=n.useState(()=>{let M={};return X.forEach((v)=>{M[v]=!0}),M}),[E,z]=n.useState(null),j=n.useMemo(()=>YZ(Y),[Y]),O=n.useMemo(()=>tY(Y,j,N,Z,Q,J,K),[Y,j,N,Z,Q,J,K]),H=n.useMemo(()=>eY(Y,j,N),[Y,j,N]),V=n.useCallback((M)=>{z(M);let v=Y.people.find((I)=>I.id===M);if(v&&B)B(M,v)},[Y.people,B]),D=n.useCallback((M,v)=>{G((I)=>{let C={...I},k=I[M]??!1;if(C[M]=v??!k,U)U(M,C[M]);return C})},[U]),$=n.useCallback((M)=>{D(M,!1)},[D]),T=n.useCallback((M,v,I)=>{if(q)q(M,v,I)},[q]),F=n.useCallback((M)=>{return j.get(M)},[j]),S=n.useCallback((M)=>{return Y.relationships.filter((v)=>v.from===M||v.to===M)},[Y.relationships]);return{nodes:O,edges:H,hierarchy:j,selectedNodeId:E,expansionState:N,selectNode:V,expandNode:D,collapseNode:$,addRelation:T,getPersonHierarchy:F,getPersonRelations:S}}var A8=e(o(),1),$8=768;function QZ(){let[Y,X]=A8.useState(void 0);return A8.useEffect(()=>{let Z=window.matchMedia(`(max-width: ${$8-1}px)`),Q=()=>{X(window.innerWidth<$8)};return Z.addEventListener("change",Q),X(window.innerWidth<$8),()=>Z.removeEventListener("change",Q)},[]),!!Y}var DY=e(o(),1);function XZ(Y){if(Y.progress!==void 0)return Y.progress;switch(Y.status){case"completed":return 100;case"in-progress":return 50;case"pending":return 0;case"on-hold":return 0;default:return 0}}function JZ(Y){let{projects:X,calculateProgress:Z=XZ}=Y;return DY.useMemo(()=>{if(X.length===0)return{percentage:0,status:"pending",distribution:{completed:0,inProgress:0,pending:0,onHold:0},total:0,completed:0,inProgress:0,pending:0,onHold:0};let J={completed:0,inProgress:0,pending:0,onHold:0},K=0;X.forEach((q)=>{let N=Z(q);switch(K+=N,q.status){case"completed":J.completed++;break;case"in-progress":J.inProgress++;break;case"pending":J.pending++;break;case"on-hold":J.onHold++;break}});let B=Math.round(K/X.length),U="pending";if(J.completed===X.length)U="completed";else if(J.inProgress>0||J.completed>0)U="in-progress";else if(J.onHold>0)U="on-hold";return{percentage:B,status:U,distribution:J,total:X.length,completed:J.completed,inProgress:J.inProgress,pending:J.pending,onHold:J.onHold}},[X,Z])}var PY=e(o(),1);function WZ(Y){let{projects:X,filter:Z,groupBy:Q}=Y,J=PY.useMemo(()=>{let K=Z?X.filter(Z):X,B={running:0,ended:0,pending:0,"on-hold":0,cancelled:0};K.forEach((q)=>{let N=q.status||"pending";if(N in B)B[N]++});let U=Q?K.reduce((q,N)=>{let G=Q(N);if(!q[G])q[G]=[];return q[G].push(N),q},{}):void 0;return{total:K.length,ended:B.ended,running:B.running,pending:B.pending,onHold:B["on-hold"],cancelled:B.cancelled,byStatus:B,filtered:K,grouped:U}},[X,Z,Q]);return{stats:J,total:J.total,ended:J.ended,running:J.running,pending:J.pending,onHold:J.onHold,cancelled:J.cancelled,filtered:J.filtered,grouped:J.grouped}}var M8=e(o(),1);function W8(Y,X){return typeof Y==="function"?Y(X):Y}function a(Y,X){return(Z)=>{X.setState((Q)=>{return{...Q,[Y]:W8(Z,Q[Y])}})}}function V8(Y){return Y instanceof Function}function KZ(Y){return Array.isArray(Y)&&Y.every((X)=>typeof X==="number")}function BZ(Y,X){let Z=[],Q=(J)=>{J.forEach((K)=>{Z.push(K);let B=X(K);if(B!=null&&B.length)Q(B)})};return Q(Y),Z}function _(Y,X,Z){let Q=[],J;return(K)=>{let B;if(Z.key&&Z.debug)B=Date.now();let U=Y(K);if(!(U.length!==Q.length||U.some((G,E)=>Q[E]!==G)))return J;Q=U;let N;if(Z.key&&Z.debug)N=Date.now();if(J=X(...U),Z==null||Z.onChange==null||Z.onChange(J),Z.key&&Z.debug){if(Z!=null&&Z.debug()){let G=Math.round((Date.now()-B)*100)/100,E=Math.round((Date.now()-N)*100)/100,z=E/16,j=(O,H)=>{O=String(O);while(O.length<H)O=" "+O;return O};console.info(`%c⏱ ${j(E,5)} /${j(G,5)} ms`,`
14
- font-size: .6rem;
15
- font-weight: bold;
16
- color: hsl(${Math.max(0,Math.min(120-120*z,120))}deg 100% 31%);`,Z==null?void 0:Z.key)}}return J}}function y(Y,X,Z,Q){return{debug:()=>{var J;return(J=Y==null?void 0:Y.debugAll)!=null?J:Y[X]},key:Z,onChange:Q}}function UZ(Y,X,Z,Q){let J=()=>{var B;return(B=K.getValue())!=null?B:Y.options.renderFallbackValue},K={id:`${X.id}_${Z.id}`,row:X,column:Z,getValue:()=>X.getValue(Q),renderValue:J,getContext:_(()=>[Y,Z,X,K],(B,U,q,N)=>({table:B,column:U,row:q,cell:N,getValue:N.getValue,renderValue:N.renderValue}),y(Y.options,"debugCells","cell.getContext"))};return Y._features.forEach((B)=>{B.createCell==null||B.createCell(K,Z,X,Y)},{}),K}function jZ(Y,X,Z,Q){var J,K;let U={...Y._getDefaultColumnDef(),...X},q=U.accessorKey,N=(J=(K=U.id)!=null?K:q?typeof String.prototype.replaceAll==="function"?q.replaceAll(".","_"):q.replace(/\./g,"_"):void 0)!=null?J:typeof U.header==="string"?U.header:void 0,G;if(U.accessorFn)G=U.accessorFn;else if(q)if(q.includes("."))G=(z)=>{let j=z;for(let H of q.split(".")){var O;if(j=(O=j)==null?void 0:O[H],j===void 0)console.warn(`"${H}" in deeply nested key "${q}" returned undefined.`)}return j};else G=(z)=>z[U.accessorKey];if(!N)throw Error(U.accessorFn?"Columns require an id when using an accessorFn":"Columns require an id when using a non-string header");let E={id:`${String(N)}`,accessorFn:G,parent:Q,depth:Z,columnDef:U,columns:[],getFlatColumns:_(()=>[!0],()=>{var z;return[E,...(z=E.columns)==null?void 0:z.flatMap((j)=>j.getFlatColumns())]},y(Y.options,"debugColumns","column.getFlatColumns")),getLeafColumns:_(()=>[Y._getOrderColumnsFn()],(z)=>{var j;if((j=E.columns)!=null&&j.length){let O=E.columns.flatMap((H)=>H.getLeafColumns());return z(O)}return[E]},y(Y.options,"debugColumns","column.getLeafColumns"))};for(let z of Y._features)z.createColumn==null||z.createColumn(E,Y);return E}var r="debugHeaders";function VY(Y,X,Z){var Q;let K={id:(Q=Z.id)!=null?Q:X.id,column:X,index:Z.index,isPlaceholder:!!Z.isPlaceholder,placeholderId:Z.placeholderId,depth:Z.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{let B=[],U=(q)=>{if(q.subHeaders&&q.subHeaders.length)q.subHeaders.map(U);B.push(q)};return U(K),B},getContext:()=>({table:Y,header:K,column:X})};return Y._features.forEach((B)=>{B.createHeader==null||B.createHeader(K,Y)}),K}var qZ={createTable:(Y)=>{Y.getHeaderGroups=_(()=>[Y.getAllColumns(),Y.getVisibleLeafColumns(),Y.getState().columnPinning.left,Y.getState().columnPinning.right],(X,Z,Q,J)=>{var K,B;let U=(K=Q==null?void 0:Q.map((E)=>Z.find((z)=>z.id===E)).filter(Boolean))!=null?K:[],q=(B=J==null?void 0:J.map((E)=>Z.find((z)=>z.id===E)).filter(Boolean))!=null?B:[],N=Z.filter((E)=>!(Q!=null&&Q.includes(E.id))&&!(J!=null&&J.includes(E.id)));return T8(X,[...U,...N,...q],Y)},y(Y.options,r,"getHeaderGroups")),Y.getCenterHeaderGroups=_(()=>[Y.getAllColumns(),Y.getVisibleLeafColumns(),Y.getState().columnPinning.left,Y.getState().columnPinning.right],(X,Z,Q,J)=>{return Z=Z.filter((K)=>!(Q!=null&&Q.includes(K.id))&&!(J!=null&&J.includes(K.id))),T8(X,Z,Y,"center")},y(Y.options,r,"getCenterHeaderGroups")),Y.getLeftHeaderGroups=_(()=>[Y.getAllColumns(),Y.getVisibleLeafColumns(),Y.getState().columnPinning.left],(X,Z,Q)=>{var J;let K=(J=Q==null?void 0:Q.map((B)=>Z.find((U)=>U.id===B)).filter(Boolean))!=null?J:[];return T8(X,K,Y,"left")},y(Y.options,r,"getLeftHeaderGroups")),Y.getRightHeaderGroups=_(()=>[Y.getAllColumns(),Y.getVisibleLeafColumns(),Y.getState().columnPinning.right],(X,Z,Q)=>{var J;let K=(J=Q==null?void 0:Q.map((B)=>Z.find((U)=>U.id===B)).filter(Boolean))!=null?J:[];return T8(X,K,Y,"right")},y(Y.options,r,"getRightHeaderGroups")),Y.getFooterGroups=_(()=>[Y.getHeaderGroups()],(X)=>{return[...X].reverse()},y(Y.options,r,"getFooterGroups")),Y.getLeftFooterGroups=_(()=>[Y.getLeftHeaderGroups()],(X)=>{return[...X].reverse()},y(Y.options,r,"getLeftFooterGroups")),Y.getCenterFooterGroups=_(()=>[Y.getCenterHeaderGroups()],(X)=>{return[...X].reverse()},y(Y.options,r,"getCenterFooterGroups")),Y.getRightFooterGroups=_(()=>[Y.getRightHeaderGroups()],(X)=>{return[...X].reverse()},y(Y.options,r,"getRightFooterGroups")),Y.getFlatHeaders=_(()=>[Y.getHeaderGroups()],(X)=>{return X.map((Z)=>{return Z.headers}).flat()},y(Y.options,r,"getFlatHeaders")),Y.getLeftFlatHeaders=_(()=>[Y.getLeftHeaderGroups()],(X)=>{return X.map((Z)=>{return Z.headers}).flat()},y(Y.options,r,"getLeftFlatHeaders")),Y.getCenterFlatHeaders=_(()=>[Y.getCenterHeaderGroups()],(X)=>{return X.map((Z)=>{return Z.headers}).flat()},y(Y.options,r,"getCenterFlatHeaders")),Y.getRightFlatHeaders=_(()=>[Y.getRightHeaderGroups()],(X)=>{return X.map((Z)=>{return Z.headers}).flat()},y(Y.options,r,"getRightFlatHeaders")),Y.getCenterLeafHeaders=_(()=>[Y.getCenterFlatHeaders()],(X)=>{return X.filter((Z)=>{var Q;return!((Q=Z.subHeaders)!=null&&Q.length)})},y(Y.options,r,"getCenterLeafHeaders")),Y.getLeftLeafHeaders=_(()=>[Y.getLeftFlatHeaders()],(X)=>{return X.filter((Z)=>{var Q;return!((Q=Z.subHeaders)!=null&&Q.length)})},y(Y.options,r,"getLeftLeafHeaders")),Y.getRightLeafHeaders=_(()=>[Y.getRightFlatHeaders()],(X)=>{return X.filter((Z)=>{var Q;return!((Q=Z.subHeaders)!=null&&Q.length)})},y(Y.options,r,"getRightLeafHeaders")),Y.getLeafHeaders=_(()=>[Y.getLeftHeaderGroups(),Y.getCenterHeaderGroups(),Y.getRightHeaderGroups()],(X,Z,Q)=>{var J,K,B,U,q,N;return[...(J=(K=X[0])==null?void 0:K.headers)!=null?J:[],...(B=(U=Z[0])==null?void 0:U.headers)!=null?B:[],...(q=(N=Q[0])==null?void 0:N.headers)!=null?q:[]].map((G)=>{return G.getLeafHeaders()}).flat()},y(Y.options,r,"getLeafHeaders"))}};function T8(Y,X,Z,Q){var J,K;let B=0,U=function(z,j){if(j===void 0)j=1;B=Math.max(B,j),z.filter((O)=>O.getIsVisible()).forEach((O)=>{var H;if((H=O.columns)!=null&&H.length)U(O.columns,j+1)},0)};U(Y);let q=[],N=(z,j)=>{let O={depth:j,id:[Q,`${j}`].filter(Boolean).join("_"),headers:[]},H=[];if(z.forEach((V)=>{let D=[...H].reverse()[0],$=V.column.depth===O.depth,T,F=!1;if($&&V.column.parent)T=V.column.parent;else T=V.column,F=!0;if(D&&(D==null?void 0:D.column)===T)D.subHeaders.push(V);else{let S=VY(Z,T,{id:[Q,j,T.id,V==null?void 0:V.id].filter(Boolean).join("_"),isPlaceholder:F,placeholderId:F?`${H.filter((M)=>M.column===T).length}`:void 0,depth:j,index:H.length});S.subHeaders.push(V),H.push(S)}O.headers.push(V),V.headerGroup=O}),q.push(O),j>0)N(H,j-1)},G=X.map((z,j)=>VY(Z,z,{depth:B,index:j}));N(G,B-1),q.reverse();let E=(z)=>{return z.filter((O)=>O.column.getIsVisible()).map((O)=>{let H=0,V=0,D=[0];if(O.subHeaders&&O.subHeaders.length)D=[],E(O.subHeaders).forEach((T)=>{let{colSpan:F,rowSpan:S}=T;H+=F,D.push(S)});else H=1;let $=Math.min(...D);return V=V+$,O.colSpan=H,O.rowSpan=V,{colSpan:H,rowSpan:V}})};return E((J=(K=q[0])==null?void 0:K.headers)!=null?J:[]),q}var i8=(Y,X,Z,Q,J,K,B)=>{let U={id:X,index:Q,original:Z,depth:J,parentId:B,_valuesCache:{},_uniqueValuesCache:{},getValue:(q)=>{if(U._valuesCache.hasOwnProperty(q))return U._valuesCache[q];let N=Y.getColumn(q);if(!(N!=null&&N.accessorFn))return;return U._valuesCache[q]=N.accessorFn(U.original,Q),U._valuesCache[q]},getUniqueValues:(q)=>{if(U._uniqueValuesCache.hasOwnProperty(q))return U._uniqueValuesCache[q];let N=Y.getColumn(q);if(!(N!=null&&N.accessorFn))return;if(!N.columnDef.getUniqueValues)return U._uniqueValuesCache[q]=[U.getValue(q)],U._uniqueValuesCache[q];return U._uniqueValuesCache[q]=N.columnDef.getUniqueValues(U.original,Q),U._uniqueValuesCache[q]},renderValue:(q)=>{var N;return(N=U.getValue(q))!=null?N:Y.options.renderFallbackValue},subRows:K!=null?K:[],getLeafRows:()=>BZ(U.subRows,(q)=>q.subRows),getParentRow:()=>U.parentId?Y.getRow(U.parentId,!0):void 0,getParentRows:()=>{let q=[],N=U;while(!0){let G=N.getParentRow();if(!G)break;q.push(G),N=G}return q.reverse()},getAllCells:_(()=>[Y.getAllLeafColumns()],(q)=>{return q.map((N)=>{return UZ(Y,U,N,N.id)})},y(Y.options,"debugRows","getAllCells")),_getAllCellsByColumnId:_(()=>[U.getAllCells()],(q)=>{return q.reduce((N,G)=>{return N[G.column.id]=G,N},{})},y(Y.options,"debugRows","getAllCellsByColumnId"))};for(let q=0;q<Y._features.length;q++){let N=Y._features[q];N==null||N.createRow==null||N.createRow(U,Y)}return U},LZ={createColumn:(Y,X)=>{Y._getFacetedRowModel=X.options.getFacetedRowModel&&X.options.getFacetedRowModel(X,Y.id),Y.getFacetedRowModel=()=>{if(!Y._getFacetedRowModel)return X.getPreFilteredRowModel();return Y._getFacetedRowModel()},Y._getFacetedUniqueValues=X.options.getFacetedUniqueValues&&X.options.getFacetedUniqueValues(X,Y.id),Y.getFacetedUniqueValues=()=>{if(!Y._getFacetedUniqueValues)return new Map;return Y._getFacetedUniqueValues()},Y._getFacetedMinMaxValues=X.options.getFacetedMinMaxValues&&X.options.getFacetedMinMaxValues(X,Y.id),Y.getFacetedMinMaxValues=()=>{if(!Y._getFacetedMinMaxValues)return;return Y._getFacetedMinMaxValues()}}},MY=(Y,X,Z)=>{var Q,J;let K=Z==null||(Q=Z.toString())==null?void 0:Q.toLowerCase();return Boolean((J=Y.getValue(X))==null||(J=J.toString())==null||(J=J.toLowerCase())==null?void 0:J.includes(K))};MY.autoRemove=(Y)=>Y8(Y);var xY=(Y,X,Z)=>{var Q;return Boolean((Q=Y.getValue(X))==null||(Q=Q.toString())==null?void 0:Q.includes(Z))};xY.autoRemove=(Y)=>Y8(Y);var FY=(Y,X,Z)=>{var Q;return((Q=Y.getValue(X))==null||(Q=Q.toString())==null?void 0:Q.toLowerCase())===(Z==null?void 0:Z.toLowerCase())};FY.autoRemove=(Y)=>Y8(Y);var CY=(Y,X,Z)=>{var Q;return(Q=Y.getValue(X))==null?void 0:Q.includes(Z)};CY.autoRemove=(Y)=>Y8(Y);var vY=(Y,X,Z)=>{return!Z.some((Q)=>{var J;return!((J=Y.getValue(X))!=null&&J.includes(Q))})};vY.autoRemove=(Y)=>Y8(Y)||!(Y!=null&&Y.length);var IY=(Y,X,Z)=>{return Z.some((Q)=>{var J;return(J=Y.getValue(X))==null?void 0:J.includes(Q)})};IY.autoRemove=(Y)=>Y8(Y)||!(Y!=null&&Y.length);var RY=(Y,X,Z)=>{return Y.getValue(X)===Z};RY.autoRemove=(Y)=>Y8(Y);var _Y=(Y,X,Z)=>{return Y.getValue(X)==Z};_Y.autoRemove=(Y)=>Y8(Y);var r8=(Y,X,Z)=>{let[Q,J]=Z,K=Y.getValue(X);return K>=Q&&K<=J};r8.resolveFilterValue=(Y)=>{let[X,Z]=Y,Q=typeof X!=="number"?parseFloat(X):X,J=typeof Z!=="number"?parseFloat(Z):Z,K=X===null||Number.isNaN(Q)?-1/0:Q,B=Z===null||Number.isNaN(J)?1/0:J;if(K>B){let U=K;K=B,B=U}return[K,B]};r8.autoRemove=(Y)=>Y8(Y)||Y8(Y[0])&&Y8(Y[1]);var Q8={includesString:MY,includesStringSensitive:xY,equalsString:FY,arrIncludes:CY,arrIncludesAll:vY,arrIncludesSome:IY,equals:RY,weakEquals:_Y,inNumberRange:r8};function Y8(Y){return Y===void 0||Y===null||Y===""}var NZ={getDefaultColumnDef:()=>{return{filterFn:"auto"}},getInitialState:(Y)=>{return{columnFilters:[],...Y}},getDefaultOptions:(Y)=>{return{onColumnFiltersChange:a("columnFilters",Y),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}},createColumn:(Y,X)=>{Y.getAutoFilterFn=()=>{let Z=X.getCoreRowModel().flatRows[0],Q=Z==null?void 0:Z.getValue(Y.id);if(typeof Q==="string")return Q8.includesString;if(typeof Q==="number")return Q8.inNumberRange;if(typeof Q==="boolean")return Q8.equals;if(Q!==null&&typeof Q==="object")return Q8.equals;if(Array.isArray(Q))return Q8.arrIncludes;return Q8.weakEquals},Y.getFilterFn=()=>{var Z,Q;return V8(Y.columnDef.filterFn)?Y.columnDef.filterFn:Y.columnDef.filterFn==="auto"?Y.getAutoFilterFn():(Z=(Q=X.options.filterFns)==null?void 0:Q[Y.columnDef.filterFn])!=null?Z:Q8[Y.columnDef.filterFn]},Y.getCanFilter=()=>{var Z,Q,J;return((Z=Y.columnDef.enableColumnFilter)!=null?Z:!0)&&((Q=X.options.enableColumnFilters)!=null?Q:!0)&&((J=X.options.enableFilters)!=null?J:!0)&&!!Y.accessorFn},Y.getIsFiltered=()=>Y.getFilterIndex()>-1,Y.getFilterValue=()=>{var Z;return(Z=X.getState().columnFilters)==null||(Z=Z.find((Q)=>Q.id===Y.id))==null?void 0:Z.value},Y.getFilterIndex=()=>{var Z,Q;return(Z=(Q=X.getState().columnFilters)==null?void 0:Q.findIndex((J)=>J.id===Y.id))!=null?Z:-1},Y.setFilterValue=(Z)=>{X.setColumnFilters((Q)=>{let J=Y.getFilterFn(),K=Q==null?void 0:Q.find((G)=>G.id===Y.id),B=W8(Z,K?K.value:void 0);if(kY(J,B,Y)){var U;return(U=Q==null?void 0:Q.filter((G)=>G.id!==Y.id))!=null?U:[]}let q={id:Y.id,value:B};if(K){var N;return(N=Q==null?void 0:Q.map((G)=>{if(G.id===Y.id)return q;return G}))!=null?N:[]}if(Q!=null&&Q.length)return[...Q,q];return[q]})}},createRow:(Y,X)=>{Y.columnFilters={},Y.columnFiltersMeta={}},createTable:(Y)=>{Y.setColumnFilters=(X)=>{let Z=Y.getAllLeafColumns(),Q=(J)=>{var K;return(K=W8(X,J))==null?void 0:K.filter((B)=>{let U=Z.find((q)=>q.id===B.id);if(U){let q=U.getFilterFn();if(kY(q,B.value,U))return!1}return!0})};Y.options.onColumnFiltersChange==null||Y.options.onColumnFiltersChange(Q)},Y.resetColumnFilters=(X)=>{var Z,Q;Y.setColumnFilters(X?[]:(Z=(Q=Y.initialState)==null?void 0:Q.columnFilters)!=null?Z:[])},Y.getPreFilteredRowModel=()=>Y.getCoreRowModel(),Y.getFilteredRowModel=()=>{if(!Y._getFilteredRowModel&&Y.options.getFilteredRowModel)Y._getFilteredRowModel=Y.options.getFilteredRowModel(Y);if(Y.options.manualFiltering||!Y._getFilteredRowModel)return Y.getPreFilteredRowModel();return Y._getFilteredRowModel()}}};function kY(Y,X,Z){return(Y&&Y.autoRemove?Y.autoRemove(X,Z):!1)||typeof X>"u"||typeof X==="string"&&!X}var zZ=(Y,X,Z)=>{return Z.reduce((Q,J)=>{let K=J.getValue(Y);return Q+(typeof K==="number"?K:0)},0)},GZ=(Y,X,Z)=>{let Q;return Z.forEach((J)=>{let K=J.getValue(Y);if(K!=null&&(Q>K||Q===void 0&&K>=K))Q=K}),Q},OZ=(Y,X,Z)=>{let Q;return Z.forEach((J)=>{let K=J.getValue(Y);if(K!=null&&(Q<K||Q===void 0&&K>=K))Q=K}),Q},EZ=(Y,X,Z)=>{let Q,J;return Z.forEach((K)=>{let B=K.getValue(Y);if(B!=null)if(Q===void 0){if(B>=B)Q=J=B}else{if(Q>B)Q=B;if(J<B)J=B}}),[Q,J]},HZ=(Y,X)=>{let Z=0,Q=0;if(X.forEach((J)=>{let K=J.getValue(Y);if(K!=null&&(K=+K)>=K)++Z,Q+=K}),Z)return Q/Z;return},AZ=(Y,X)=>{if(!X.length)return;let Z=X.map((K)=>K.getValue(Y));if(!KZ(Z))return;if(Z.length===1)return Z[0];let Q=Math.floor(Z.length/2),J=Z.sort((K,B)=>K-B);return Z.length%2!==0?J[Q]:(J[Q-1]+J[Q])/2},TZ=(Y,X)=>{return Array.from(new Set(X.map((Z)=>Z.getValue(Y))).values())},DZ=(Y,X)=>{return new Set(X.map((Z)=>Z.getValue(Y))).size},PZ=(Y,X)=>{return X.length},S8={sum:zZ,min:GZ,max:OZ,extent:EZ,mean:HZ,median:AZ,unique:TZ,uniqueCount:DZ,count:PZ},VZ={getDefaultColumnDef:()=>{return{aggregatedCell:(Y)=>{var X,Z;return(X=(Z=Y.getValue())==null||Z.toString==null?void 0:Z.toString())!=null?X:null},aggregationFn:"auto"}},getInitialState:(Y)=>{return{grouping:[],...Y}},getDefaultOptions:(Y)=>{return{onGroupingChange:a("grouping",Y),groupedColumnMode:"reorder"}},createColumn:(Y,X)=>{Y.toggleGrouping=()=>{X.setGrouping((Z)=>{if(Z!=null&&Z.includes(Y.id))return Z.filter((Q)=>Q!==Y.id);return[...Z!=null?Z:[],Y.id]})},Y.getCanGroup=()=>{var Z,Q;return((Z=Y.columnDef.enableGrouping)!=null?Z:!0)&&((Q=X.options.enableGrouping)!=null?Q:!0)&&(!!Y.accessorFn||!!Y.columnDef.getGroupingValue)},Y.getIsGrouped=()=>{var Z;return(Z=X.getState().grouping)==null?void 0:Z.includes(Y.id)},Y.getGroupedIndex=()=>{var Z;return(Z=X.getState().grouping)==null?void 0:Z.indexOf(Y.id)},Y.getToggleGroupingHandler=()=>{let Z=Y.getCanGroup();return()=>{if(!Z)return;Y.toggleGrouping()}},Y.getAutoAggregationFn=()=>{let Z=X.getCoreRowModel().flatRows[0],Q=Z==null?void 0:Z.getValue(Y.id);if(typeof Q==="number")return S8.sum;if(Object.prototype.toString.call(Q)==="[object Date]")return S8.extent},Y.getAggregationFn=()=>{var Z,Q;if(!Y)throw Error();return V8(Y.columnDef.aggregationFn)?Y.columnDef.aggregationFn:Y.columnDef.aggregationFn==="auto"?Y.getAutoAggregationFn():(Z=(Q=X.options.aggregationFns)==null?void 0:Q[Y.columnDef.aggregationFn])!=null?Z:S8[Y.columnDef.aggregationFn]}},createTable:(Y)=>{Y.setGrouping=(X)=>Y.options.onGroupingChange==null?void 0:Y.options.onGroupingChange(X),Y.resetGrouping=(X)=>{var Z,Q;Y.setGrouping(X?[]:(Z=(Q=Y.initialState)==null?void 0:Q.grouping)!=null?Z:[])},Y.getPreGroupedRowModel=()=>Y.getFilteredRowModel(),Y.getGroupedRowModel=()=>{if(!Y._getGroupedRowModel&&Y.options.getGroupedRowModel)Y._getGroupedRowModel=Y.options.getGroupedRowModel(Y);if(Y.options.manualGrouping||!Y._getGroupedRowModel)return Y.getPreGroupedRowModel();return Y._getGroupedRowModel()}},createRow:(Y,X)=>{Y.getIsGrouped=()=>!!Y.groupingColumnId,Y.getGroupingValue=(Z)=>{if(Y._groupingValuesCache.hasOwnProperty(Z))return Y._groupingValuesCache[Z];let Q=X.getColumn(Z);if(!(Q!=null&&Q.columnDef.getGroupingValue))return Y.getValue(Z);return Y._groupingValuesCache[Z]=Q.columnDef.getGroupingValue(Y.original),Y._groupingValuesCache[Z]},Y._groupingValuesCache={}},createCell:(Y,X,Z,Q)=>{Y.getIsGrouped=()=>X.getIsGrouped()&&X.id===Z.groupingColumnId,Y.getIsPlaceholder=()=>!Y.getIsGrouped()&&X.getIsGrouped(),Y.getIsAggregated=()=>{var J;return!Y.getIsGrouped()&&!Y.getIsPlaceholder()&&!!((J=Z.subRows)!=null&&J.length)}}};function kZ(Y,X,Z){if(!(X!=null&&X.length)||!Z)return Y;let Q=Y.filter((K)=>!X.includes(K.id));if(Z==="remove")return Q;return[...X.map((K)=>Y.find((B)=>B.id===K)).filter(Boolean),...Q]}var MZ={getInitialState:(Y)=>{return{columnOrder:[],...Y}},getDefaultOptions:(Y)=>{return{onColumnOrderChange:a("columnOrder",Y)}},createColumn:(Y,X)=>{Y.getIndex=_((Z)=>[N8(X,Z)],(Z)=>Z.findIndex((Q)=>Q.id===Y.id),y(X.options,"debugColumns","getIndex")),Y.getIsFirstColumn=(Z)=>{var Q;return((Q=N8(X,Z)[0])==null?void 0:Q.id)===Y.id},Y.getIsLastColumn=(Z)=>{var Q;let J=N8(X,Z);return((Q=J[J.length-1])==null?void 0:Q.id)===Y.id}},createTable:(Y)=>{Y.setColumnOrder=(X)=>Y.options.onColumnOrderChange==null?void 0:Y.options.onColumnOrderChange(X),Y.resetColumnOrder=(X)=>{var Z;Y.setColumnOrder(X?[]:(Z=Y.initialState.columnOrder)!=null?Z:[])},Y._getOrderColumnsFn=_(()=>[Y.getState().columnOrder,Y.getState().grouping,Y.options.groupedColumnMode],(X,Z,Q)=>(J)=>{let K=[];if(!(X!=null&&X.length))K=J;else{let B=[...X],U=[...J];while(U.length&&B.length){let q=B.shift(),N=U.findIndex((G)=>G.id===q);if(N>-1)K.push(U.splice(N,1)[0])}K=[...K,...U]}return kZ(K,Z,Q)},y(Y.options,"debugTable","_getOrderColumnsFn"))}},h8=()=>({left:[],right:[]}),xZ={getInitialState:(Y)=>{return{columnPinning:h8(),...Y}},getDefaultOptions:(Y)=>{return{onColumnPinningChange:a("columnPinning",Y)}},createColumn:(Y,X)=>{Y.pin=(Z)=>{let Q=Y.getLeafColumns().map((J)=>J.id).filter(Boolean);X.setColumnPinning((J)=>{var K,B;if(Z==="right"){var U,q;return{left:((U=J==null?void 0:J.left)!=null?U:[]).filter((E)=>!(Q!=null&&Q.includes(E))),right:[...((q=J==null?void 0:J.right)!=null?q:[]).filter((E)=>!(Q!=null&&Q.includes(E))),...Q]}}if(Z==="left"){var N,G;return{left:[...((N=J==null?void 0:J.left)!=null?N:[]).filter((E)=>!(Q!=null&&Q.includes(E))),...Q],right:((G=J==null?void 0:J.right)!=null?G:[]).filter((E)=>!(Q!=null&&Q.includes(E)))}}return{left:((K=J==null?void 0:J.left)!=null?K:[]).filter((E)=>!(Q!=null&&Q.includes(E))),right:((B=J==null?void 0:J.right)!=null?B:[]).filter((E)=>!(Q!=null&&Q.includes(E)))}})},Y.getCanPin=()=>{return Y.getLeafColumns().some((Q)=>{var J,K,B;return((J=Q.columnDef.enablePinning)!=null?J:!0)&&((K=(B=X.options.enableColumnPinning)!=null?B:X.options.enablePinning)!=null?K:!0)})},Y.getIsPinned=()=>{let Z=Y.getLeafColumns().map((U)=>U.id),{left:Q,right:J}=X.getState().columnPinning,K=Z.some((U)=>Q==null?void 0:Q.includes(U)),B=Z.some((U)=>J==null?void 0:J.includes(U));return K?"left":B?"right":!1},Y.getPinnedIndex=()=>{var Z,Q;let J=Y.getIsPinned();return J?(Z=(Q=X.getState().columnPinning)==null||(Q=Q[J])==null?void 0:Q.indexOf(Y.id))!=null?Z:-1:0}},createRow:(Y,X)=>{Y.getCenterVisibleCells=_(()=>[Y._getAllVisibleCells(),X.getState().columnPinning.left,X.getState().columnPinning.right],(Z,Q,J)=>{let K=[...Q!=null?Q:[],...J!=null?J:[]];return Z.filter((B)=>!K.includes(B.column.id))},y(X.options,"debugRows","getCenterVisibleCells")),Y.getLeftVisibleCells=_(()=>[Y._getAllVisibleCells(),X.getState().columnPinning.left],(Z,Q)=>{return(Q!=null?Q:[]).map((K)=>Z.find((B)=>B.column.id===K)).filter(Boolean).map((K)=>({...K,position:"left"}))},y(X.options,"debugRows","getLeftVisibleCells")),Y.getRightVisibleCells=_(()=>[Y._getAllVisibleCells(),X.getState().columnPinning.right],(Z,Q)=>{return(Q!=null?Q:[]).map((K)=>Z.find((B)=>B.column.id===K)).filter(Boolean).map((K)=>({...K,position:"right"}))},y(X.options,"debugRows","getRightVisibleCells"))},createTable:(Y)=>{Y.setColumnPinning=(X)=>Y.options.onColumnPinningChange==null?void 0:Y.options.onColumnPinningChange(X),Y.resetColumnPinning=(X)=>{var Z,Q;return Y.setColumnPinning(X?h8():(Z=(Q=Y.initialState)==null?void 0:Q.columnPinning)!=null?Z:h8())},Y.getIsSomeColumnsPinned=(X)=>{var Z;let Q=Y.getState().columnPinning;if(!X){var J,K;return Boolean(((J=Q.left)==null?void 0:J.length)||((K=Q.right)==null?void 0:K.length))}return Boolean((Z=Q[X])==null?void 0:Z.length)},Y.getLeftLeafColumns=_(()=>[Y.getAllLeafColumns(),Y.getState().columnPinning.left],(X,Z)=>{return(Z!=null?Z:[]).map((Q)=>X.find((J)=>J.id===Q)).filter(Boolean)},y(Y.options,"debugColumns","getLeftLeafColumns")),Y.getRightLeafColumns=_(()=>[Y.getAllLeafColumns(),Y.getState().columnPinning.right],(X,Z)=>{return(Z!=null?Z:[]).map((Q)=>X.find((J)=>J.id===Q)).filter(Boolean)},y(Y.options,"debugColumns","getRightLeafColumns")),Y.getCenterLeafColumns=_(()=>[Y.getAllLeafColumns(),Y.getState().columnPinning.left,Y.getState().columnPinning.right],(X,Z,Q)=>{let J=[...Z!=null?Z:[],...Q!=null?Q:[]];return X.filter((K)=>!J.includes(K.id))},y(Y.options,"debugColumns","getCenterLeafColumns"))}};function FZ(Y){return Y||(typeof document<"u"?document:null)}var D8={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},f8=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),CZ={getDefaultColumnDef:()=>{return D8},getInitialState:(Y)=>{return{columnSizing:{},columnSizingInfo:f8(),...Y}},getDefaultOptions:(Y)=>{return{columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:a("columnSizing",Y),onColumnSizingInfoChange:a("columnSizingInfo",Y)}},createColumn:(Y,X)=>{Y.getSize=()=>{var Z,Q,J;let K=X.getState().columnSizing[Y.id];return Math.min(Math.max((Z=Y.columnDef.minSize)!=null?Z:D8.minSize,(Q=K!=null?K:Y.columnDef.size)!=null?Q:D8.size),(J=Y.columnDef.maxSize)!=null?J:D8.maxSize)},Y.getStart=_((Z)=>[Z,N8(X,Z),X.getState().columnSizing],(Z,Q)=>Q.slice(0,Y.getIndex(Z)).reduce((J,K)=>J+K.getSize(),0),y(X.options,"debugColumns","getStart")),Y.getAfter=_((Z)=>[Z,N8(X,Z),X.getState().columnSizing],(Z,Q)=>Q.slice(Y.getIndex(Z)+1).reduce((J,K)=>J+K.getSize(),0),y(X.options,"debugColumns","getAfter")),Y.resetSize=()=>{X.setColumnSizing((Z)=>{let{[Y.id]:Q,...J}=Z;return J})},Y.getCanResize=()=>{var Z,Q;return((Z=Y.columnDef.enableResizing)!=null?Z:!0)&&((Q=X.options.enableColumnResizing)!=null?Q:!0)},Y.getIsResizing=()=>{return X.getState().columnSizingInfo.isResizingColumn===Y.id}},createHeader:(Y,X)=>{Y.getSize=()=>{let Z=0,Q=(J)=>{if(J.subHeaders.length)J.subHeaders.forEach(Q);else{var K;Z+=(K=J.column.getSize())!=null?K:0}};return Q(Y),Z},Y.getStart=()=>{if(Y.index>0){let Z=Y.headerGroup.headers[Y.index-1];return Z.getStart()+Z.getSize()}return 0},Y.getResizeHandler=(Z)=>{let Q=X.getColumn(Y.column.id),J=Q==null?void 0:Q.getCanResize();return(K)=>{if(!Q||!J)return;if(K.persist==null||K.persist(),g8(K)){if(K.touches&&K.touches.length>1)return}let B=Y.getSize(),U=Y?Y.getLeafHeaders().map((D)=>[D.column.id,D.column.getSize()]):[[Q.id,Q.getSize()]],q=g8(K)?Math.round(K.touches[0].clientX):K.clientX,N={},G=(D,$)=>{if(typeof $!=="number")return;if(X.setColumnSizingInfo((T)=>{var F,S;let M=X.options.columnResizeDirection==="rtl"?-1:1,v=($-((F=T==null?void 0:T.startOffset)!=null?F:0))*M,I=Math.max(v/((S=T==null?void 0:T.startSize)!=null?S:0),-0.999999);return T.columnSizingStart.forEach((C)=>{let[k,m]=C;N[k]=Math.round(Math.max(m+m*I,0)*100)/100}),{...T,deltaOffset:v,deltaPercentage:I}}),X.options.columnResizeMode==="onChange"||D==="end")X.setColumnSizing((T)=>({...T,...N}))},E=(D)=>G("move",D),z=(D)=>{G("end",D),X.setColumnSizingInfo(($)=>({...$,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},j=FZ(Z),O={moveHandler:(D)=>E(D.clientX),upHandler:(D)=>{j==null||j.removeEventListener("mousemove",O.moveHandler),j==null||j.removeEventListener("mouseup",O.upHandler),z(D.clientX)}},H={moveHandler:(D)=>{if(D.cancelable)D.preventDefault(),D.stopPropagation();return E(D.touches[0].clientX),!1},upHandler:(D)=>{var $;if(j==null||j.removeEventListener("touchmove",H.moveHandler),j==null||j.removeEventListener("touchend",H.upHandler),D.cancelable)D.preventDefault(),D.stopPropagation();z(($=D.touches[0])==null?void 0:$.clientX)}},V=vZ()?{passive:!1}:!1;if(g8(K))j==null||j.addEventListener("touchmove",H.moveHandler,V),j==null||j.addEventListener("touchend",H.upHandler,V);else j==null||j.addEventListener("mousemove",O.moveHandler,V),j==null||j.addEventListener("mouseup",O.upHandler,V);X.setColumnSizingInfo((D)=>({...D,startOffset:q,startSize:B,deltaOffset:0,deltaPercentage:0,columnSizingStart:U,isResizingColumn:Q.id}))}}},createTable:(Y)=>{Y.setColumnSizing=(X)=>Y.options.onColumnSizingChange==null?void 0:Y.options.onColumnSizingChange(X),Y.setColumnSizingInfo=(X)=>Y.options.onColumnSizingInfoChange==null?void 0:Y.options.onColumnSizingInfoChange(X),Y.resetColumnSizing=(X)=>{var Z;Y.setColumnSizing(X?{}:(Z=Y.initialState.columnSizing)!=null?Z:{})},Y.resetHeaderSizeInfo=(X)=>{var Z;Y.setColumnSizingInfo(X?f8():(Z=Y.initialState.columnSizingInfo)!=null?Z:f8())},Y.getTotalSize=()=>{var X,Z;return(X=(Z=Y.getHeaderGroups()[0])==null?void 0:Z.headers.reduce((Q,J)=>{return Q+J.getSize()},0))!=null?X:0},Y.getLeftTotalSize=()=>{var X,Z;return(X=(Z=Y.getLeftHeaderGroups()[0])==null?void 0:Z.headers.reduce((Q,J)=>{return Q+J.getSize()},0))!=null?X:0},Y.getCenterTotalSize=()=>{var X,Z;return(X=(Z=Y.getCenterHeaderGroups()[0])==null?void 0:Z.headers.reduce((Q,J)=>{return Q+J.getSize()},0))!=null?X:0},Y.getRightTotalSize=()=>{var X,Z;return(X=(Z=Y.getRightHeaderGroups()[0])==null?void 0:Z.headers.reduce((Q,J)=>{return Q+J.getSize()},0))!=null?X:0}}},P8=null;function vZ(){if(typeof P8==="boolean")return P8;let Y=!1;try{let X={get passive(){return Y=!0,!1}},Z=()=>{};window.addEventListener("test",Z,X),window.removeEventListener("test",Z)}catch(X){Y=!1}return P8=Y,P8}function g8(Y){return Y.type==="touchstart"}var IZ={getInitialState:(Y)=>{return{columnVisibility:{},...Y}},getDefaultOptions:(Y)=>{return{onColumnVisibilityChange:a("columnVisibility",Y)}},createColumn:(Y,X)=>{Y.toggleVisibility=(Z)=>{if(Y.getCanHide())X.setColumnVisibility((Q)=>({...Q,[Y.id]:Z!=null?Z:!Y.getIsVisible()}))},Y.getIsVisible=()=>{var Z,Q;let J=Y.columns;return(Z=J.length?J.some((K)=>K.getIsVisible()):(Q=X.getState().columnVisibility)==null?void 0:Q[Y.id])!=null?Z:!0},Y.getCanHide=()=>{var Z,Q;return((Z=Y.columnDef.enableHiding)!=null?Z:!0)&&((Q=X.options.enableHiding)!=null?Q:!0)},Y.getToggleVisibilityHandler=()=>{return(Z)=>{Y.toggleVisibility==null||Y.toggleVisibility(Z.target.checked)}}},createRow:(Y,X)=>{Y._getAllVisibleCells=_(()=>[Y.getAllCells(),X.getState().columnVisibility],(Z)=>{return Z.filter((Q)=>Q.column.getIsVisible())},y(X.options,"debugRows","_getAllVisibleCells")),Y.getVisibleCells=_(()=>[Y.getLeftVisibleCells(),Y.getCenterVisibleCells(),Y.getRightVisibleCells()],(Z,Q,J)=>[...Z,...Q,...J],y(X.options,"debugRows","getVisibleCells"))},createTable:(Y)=>{let X=(Z,Q)=>{return _(()=>[Q(),Q().filter((J)=>J.getIsVisible()).map((J)=>J.id).join("_")],(J)=>{return J.filter((K)=>K.getIsVisible==null?void 0:K.getIsVisible())},y(Y.options,"debugColumns",Z))};Y.getVisibleFlatColumns=X("getVisibleFlatColumns",()=>Y.getAllFlatColumns()),Y.getVisibleLeafColumns=X("getVisibleLeafColumns",()=>Y.getAllLeafColumns()),Y.getLeftVisibleLeafColumns=X("getLeftVisibleLeafColumns",()=>Y.getLeftLeafColumns()),Y.getRightVisibleLeafColumns=X("getRightVisibleLeafColumns",()=>Y.getRightLeafColumns()),Y.getCenterVisibleLeafColumns=X("getCenterVisibleLeafColumns",()=>Y.getCenterLeafColumns()),Y.setColumnVisibility=(Z)=>Y.options.onColumnVisibilityChange==null?void 0:Y.options.onColumnVisibilityChange(Z),Y.resetColumnVisibility=(Z)=>{var Q;Y.setColumnVisibility(Z?{}:(Q=Y.initialState.columnVisibility)!=null?Q:{})},Y.toggleAllColumnsVisible=(Z)=>{var Q;Z=(Q=Z)!=null?Q:!Y.getIsAllColumnsVisible(),Y.setColumnVisibility(Y.getAllLeafColumns().reduce((J,K)=>({...J,[K.id]:!Z?!(K.getCanHide!=null&&K.getCanHide()):Z}),{}))},Y.getIsAllColumnsVisible=()=>!Y.getAllLeafColumns().some((Z)=>!(Z.getIsVisible!=null&&Z.getIsVisible())),Y.getIsSomeColumnsVisible=()=>Y.getAllLeafColumns().some((Z)=>Z.getIsVisible==null?void 0:Z.getIsVisible()),Y.getToggleAllColumnsVisibilityHandler=()=>{return(Z)=>{var Q;Y.toggleAllColumnsVisible((Q=Z.target)==null?void 0:Q.checked)}}}};function N8(Y,X){return!X?Y.getVisibleLeafColumns():X==="center"?Y.getCenterVisibleLeafColumns():X==="left"?Y.getLeftVisibleLeafColumns():Y.getRightVisibleLeafColumns()}var RZ={createTable:(Y)=>{Y._getGlobalFacetedRowModel=Y.options.getFacetedRowModel&&Y.options.getFacetedRowModel(Y,"__global__"),Y.getGlobalFacetedRowModel=()=>{if(Y.options.manualFiltering||!Y._getGlobalFacetedRowModel)return Y.getPreFilteredRowModel();return Y._getGlobalFacetedRowModel()},Y._getGlobalFacetedUniqueValues=Y.options.getFacetedUniqueValues&&Y.options.getFacetedUniqueValues(Y,"__global__"),Y.getGlobalFacetedUniqueValues=()=>{if(!Y._getGlobalFacetedUniqueValues)return new Map;return Y._getGlobalFacetedUniqueValues()},Y._getGlobalFacetedMinMaxValues=Y.options.getFacetedMinMaxValues&&Y.options.getFacetedMinMaxValues(Y,"__global__"),Y.getGlobalFacetedMinMaxValues=()=>{if(!Y._getGlobalFacetedMinMaxValues)return;return Y._getGlobalFacetedMinMaxValues()}}},_Z={getInitialState:(Y)=>{return{globalFilter:void 0,...Y}},getDefaultOptions:(Y)=>{return{onGlobalFilterChange:a("globalFilter",Y),globalFilterFn:"auto",getColumnCanGlobalFilter:(X)=>{var Z;let Q=(Z=Y.getCoreRowModel().flatRows[0])==null||(Z=Z._getAllCellsByColumnId()[X.id])==null?void 0:Z.getValue();return typeof Q==="string"||typeof Q==="number"}}},createColumn:(Y,X)=>{Y.getCanGlobalFilter=()=>{var Z,Q,J,K;return((Z=Y.columnDef.enableGlobalFilter)!=null?Z:!0)&&((Q=X.options.enableGlobalFilter)!=null?Q:!0)&&((J=X.options.enableFilters)!=null?J:!0)&&((K=X.options.getColumnCanGlobalFilter==null?void 0:X.options.getColumnCanGlobalFilter(Y))!=null?K:!0)&&!!Y.accessorFn}},createTable:(Y)=>{Y.getGlobalAutoFilterFn=()=>{return Q8.includesString},Y.getGlobalFilterFn=()=>{var X,Z;let{globalFilterFn:Q}=Y.options;return V8(Q)?Q:Q==="auto"?Y.getGlobalAutoFilterFn():(X=(Z=Y.options.filterFns)==null?void 0:Z[Q])!=null?X:Q8[Q]},Y.setGlobalFilter=(X)=>{Y.options.onGlobalFilterChange==null||Y.options.onGlobalFilterChange(X)},Y.resetGlobalFilter=(X)=>{Y.setGlobalFilter(X?void 0:Y.initialState.globalFilter)}}},yZ={getInitialState:(Y)=>{return{expanded:{},...Y}},getDefaultOptions:(Y)=>{return{onExpandedChange:a("expanded",Y),paginateExpandedRows:!0}},createTable:(Y)=>{let X=!1,Z=!1;Y._autoResetExpanded=()=>{var Q,J;if(!X){Y._queue(()=>{X=!0});return}if((Q=(J=Y.options.autoResetAll)!=null?J:Y.options.autoResetExpanded)!=null?Q:!Y.options.manualExpanding){if(Z)return;Z=!0,Y._queue(()=>{Y.resetExpanded(),Z=!1})}},Y.setExpanded=(Q)=>Y.options.onExpandedChange==null?void 0:Y.options.onExpandedChange(Q),Y.toggleAllRowsExpanded=(Q)=>{if(Q!=null?Q:!Y.getIsAllRowsExpanded())Y.setExpanded(!0);else Y.setExpanded({})},Y.resetExpanded=(Q)=>{var J,K;Y.setExpanded(Q?{}:(J=(K=Y.initialState)==null?void 0:K.expanded)!=null?J:{})},Y.getCanSomeRowsExpand=()=>{return Y.getPrePaginationRowModel().flatRows.some((Q)=>Q.getCanExpand())},Y.getToggleAllRowsExpandedHandler=()=>{return(Q)=>{Q.persist==null||Q.persist(),Y.toggleAllRowsExpanded()}},Y.getIsSomeRowsExpanded=()=>{let Q=Y.getState().expanded;return Q===!0||Object.values(Q).some(Boolean)},Y.getIsAllRowsExpanded=()=>{let Q=Y.getState().expanded;if(typeof Q==="boolean")return Q===!0;if(!Object.keys(Q).length)return!1;if(Y.getRowModel().flatRows.some((J)=>!J.getIsExpanded()))return!1;return!0},Y.getExpandedDepth=()=>{let Q=0;return(Y.getState().expanded===!0?Object.keys(Y.getRowModel().rowsById):Object.keys(Y.getState().expanded)).forEach((K)=>{let B=K.split(".");Q=Math.max(Q,B.length)}),Q},Y.getPreExpandedRowModel=()=>Y.getSortedRowModel(),Y.getExpandedRowModel=()=>{if(!Y._getExpandedRowModel&&Y.options.getExpandedRowModel)Y._getExpandedRowModel=Y.options.getExpandedRowModel(Y);if(Y.options.manualExpanding||!Y._getExpandedRowModel)return Y.getPreExpandedRowModel();return Y._getExpandedRowModel()}},createRow:(Y,X)=>{Y.toggleExpanded=(Z)=>{X.setExpanded((Q)=>{var J;let K=Q===!0?!0:!!(Q!=null&&Q[Y.id]),B={};if(Q===!0)Object.keys(X.getRowModel().rowsById).forEach((U)=>{B[U]=!0});else B=Q;if(Z=(J=Z)!=null?J:!K,!K&&Z)return{...B,[Y.id]:!0};if(K&&!Z){let{[Y.id]:U,...q}=B;return q}return Q})},Y.getIsExpanded=()=>{var Z;let Q=X.getState().expanded;return!!((Z=X.options.getIsRowExpanded==null?void 0:X.options.getIsRowExpanded(Y))!=null?Z:Q===!0||(Q==null?void 0:Q[Y.id]))},Y.getCanExpand=()=>{var Z,Q,J;return(Z=X.options.getRowCanExpand==null?void 0:X.options.getRowCanExpand(Y))!=null?Z:((Q=X.options.enableExpanding)!=null?Q:!0)&&!!((J=Y.subRows)!=null&&J.length)},Y.getIsAllParentsExpanded=()=>{let Z=!0,Q=Y;while(Z&&Q.parentId)Q=X.getRow(Q.parentId,!0),Z=Q.getIsExpanded();return Z},Y.getToggleExpandedHandler=()=>{let Z=Y.getCanExpand();return()=>{if(!Z)return;Y.toggleExpanded()}}}},b8=0,c8=10,w8=()=>({pageIndex:b8,pageSize:c8}),$Z={getInitialState:(Y)=>{return{...Y,pagination:{...w8(),...Y==null?void 0:Y.pagination}}},getDefaultOptions:(Y)=>{return{onPaginationChange:a("pagination",Y)}},createTable:(Y)=>{let X=!1,Z=!1;Y._autoResetPageIndex=()=>{var Q,J;if(!X){Y._queue(()=>{X=!0});return}if((Q=(J=Y.options.autoResetAll)!=null?J:Y.options.autoResetPageIndex)!=null?Q:!Y.options.manualPagination){if(Z)return;Z=!0,Y._queue(()=>{Y.resetPageIndex(),Z=!1})}},Y.setPagination=(Q)=>{let J=(K)=>{return W8(Q,K)};return Y.options.onPaginationChange==null?void 0:Y.options.onPaginationChange(J)},Y.resetPagination=(Q)=>{var J;Y.setPagination(Q?w8():(J=Y.initialState.pagination)!=null?J:w8())},Y.setPageIndex=(Q)=>{Y.setPagination((J)=>{let K=W8(Q,J.pageIndex),B=typeof Y.options.pageCount>"u"||Y.options.pageCount===-1?Number.MAX_SAFE_INTEGER:Y.options.pageCount-1;return K=Math.max(0,Math.min(K,B)),{...J,pageIndex:K}})},Y.resetPageIndex=(Q)=>{var J,K;Y.setPageIndex(Q?b8:(J=(K=Y.initialState)==null||(K=K.pagination)==null?void 0:K.pageIndex)!=null?J:b8)},Y.resetPageSize=(Q)=>{var J,K;Y.setPageSize(Q?c8:(J=(K=Y.initialState)==null||(K=K.pagination)==null?void 0:K.pageSize)!=null?J:c8)},Y.setPageSize=(Q)=>{Y.setPagination((J)=>{let K=Math.max(1,W8(Q,J.pageSize)),B=J.pageSize*J.pageIndex,U=Math.floor(B/K);return{...J,pageIndex:U,pageSize:K}})},Y.setPageCount=(Q)=>Y.setPagination((J)=>{var K;let B=W8(Q,(K=Y.options.pageCount)!=null?K:-1);if(typeof B==="number")B=Math.max(-1,B);return{...J,pageCount:B}}),Y.getPageOptions=_(()=>[Y.getPageCount()],(Q)=>{let J=[];if(Q&&Q>0)J=[...Array(Q)].fill(null).map((K,B)=>B);return J},y(Y.options,"debugTable","getPageOptions")),Y.getCanPreviousPage=()=>Y.getState().pagination.pageIndex>0,Y.getCanNextPage=()=>{let{pageIndex:Q}=Y.getState().pagination,J=Y.getPageCount();if(J===-1)return!0;if(J===0)return!1;return Q<J-1},Y.previousPage=()=>{return Y.setPageIndex((Q)=>Q-1)},Y.nextPage=()=>{return Y.setPageIndex((Q)=>{return Q+1})},Y.firstPage=()=>{return Y.setPageIndex(0)},Y.lastPage=()=>{return Y.setPageIndex(Y.getPageCount()-1)},Y.getPrePaginationRowModel=()=>Y.getExpandedRowModel(),Y.getPaginationRowModel=()=>{if(!Y._getPaginationRowModel&&Y.options.getPaginationRowModel)Y._getPaginationRowModel=Y.options.getPaginationRowModel(Y);if(Y.options.manualPagination||!Y._getPaginationRowModel)return Y.getPrePaginationRowModel();return Y._getPaginationRowModel()},Y.getPageCount=()=>{var Q;return(Q=Y.options.pageCount)!=null?Q:Math.ceil(Y.getRowCount()/Y.getState().pagination.pageSize)},Y.getRowCount=()=>{var Q;return(Q=Y.options.rowCount)!=null?Q:Y.getPrePaginationRowModel().rows.length}}},m8=()=>({top:[],bottom:[]}),SZ={getInitialState:(Y)=>{return{rowPinning:m8(),...Y}},getDefaultOptions:(Y)=>{return{onRowPinningChange:a("rowPinning",Y)}},createRow:(Y,X)=>{Y.pin=(Z,Q,J)=>{let K=Q?Y.getLeafRows().map((q)=>{let{id:N}=q;return N}):[],B=J?Y.getParentRows().map((q)=>{let{id:N}=q;return N}):[],U=new Set([...B,Y.id,...K]);X.setRowPinning((q)=>{var N,G;if(Z==="bottom"){var E,z;return{top:((E=q==null?void 0:q.top)!=null?E:[]).filter((H)=>!(U!=null&&U.has(H))),bottom:[...((z=q==null?void 0:q.bottom)!=null?z:[]).filter((H)=>!(U!=null&&U.has(H))),...Array.from(U)]}}if(Z==="top"){var j,O;return{top:[...((j=q==null?void 0:q.top)!=null?j:[]).filter((H)=>!(U!=null&&U.has(H))),...Array.from(U)],bottom:((O=q==null?void 0:q.bottom)!=null?O:[]).filter((H)=>!(U!=null&&U.has(H)))}}return{top:((N=q==null?void 0:q.top)!=null?N:[]).filter((H)=>!(U!=null&&U.has(H))),bottom:((G=q==null?void 0:q.bottom)!=null?G:[]).filter((H)=>!(U!=null&&U.has(H)))}})},Y.getCanPin=()=>{var Z;let{enableRowPinning:Q,enablePinning:J}=X.options;if(typeof Q==="function")return Q(Y);return(Z=Q!=null?Q:J)!=null?Z:!0},Y.getIsPinned=()=>{let Z=[Y.id],{top:Q,bottom:J}=X.getState().rowPinning,K=Z.some((U)=>Q==null?void 0:Q.includes(U)),B=Z.some((U)=>J==null?void 0:J.includes(U));return K?"top":B?"bottom":!1},Y.getPinnedIndex=()=>{var Z,Q;let J=Y.getIsPinned();if(!J)return-1;let K=(Z=J==="top"?X.getTopRows():X.getBottomRows())==null?void 0:Z.map((B)=>{let{id:U}=B;return U});return(Q=K==null?void 0:K.indexOf(Y.id))!=null?Q:-1}},createTable:(Y)=>{Y.setRowPinning=(X)=>Y.options.onRowPinningChange==null?void 0:Y.options.onRowPinningChange(X),Y.resetRowPinning=(X)=>{var Z,Q;return Y.setRowPinning(X?m8():(Z=(Q=Y.initialState)==null?void 0:Q.rowPinning)!=null?Z:m8())},Y.getIsSomeRowsPinned=(X)=>{var Z;let Q=Y.getState().rowPinning;if(!X){var J,K;return Boolean(((J=Q.top)==null?void 0:J.length)||((K=Q.bottom)==null?void 0:K.length))}return Boolean((Z=Q[X])==null?void 0:Z.length)},Y._getPinnedRows=(X,Z,Q)=>{var J;return(((J=Y.options.keepPinnedRows)!=null?J:!0)?(Z!=null?Z:[]).map((B)=>{let U=Y.getRow(B,!0);return U.getIsAllParentsExpanded()?U:null}):(Z!=null?Z:[]).map((B)=>X.find((U)=>U.id===B))).filter(Boolean).map((B)=>({...B,position:Q}))},Y.getTopRows=_(()=>[Y.getRowModel().rows,Y.getState().rowPinning.top],(X,Z)=>Y._getPinnedRows(X,Z,"top"),y(Y.options,"debugRows","getTopRows")),Y.getBottomRows=_(()=>[Y.getRowModel().rows,Y.getState().rowPinning.bottom],(X,Z)=>Y._getPinnedRows(X,Z,"bottom"),y(Y.options,"debugRows","getBottomRows")),Y.getCenterRows=_(()=>[Y.getRowModel().rows,Y.getState().rowPinning.top,Y.getState().rowPinning.bottom],(X,Z,Q)=>{let J=new Set([...Z!=null?Z:[],...Q!=null?Q:[]]);return X.filter((K)=>!J.has(K.id))},y(Y.options,"debugRows","getCenterRows"))}},hZ={getInitialState:(Y)=>{return{rowSelection:{},...Y}},getDefaultOptions:(Y)=>{return{onRowSelectionChange:a("rowSelection",Y),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}},createTable:(Y)=>{Y.setRowSelection=(X)=>Y.options.onRowSelectionChange==null?void 0:Y.options.onRowSelectionChange(X),Y.resetRowSelection=(X)=>{var Z;return Y.setRowSelection(X?{}:(Z=Y.initialState.rowSelection)!=null?Z:{})},Y.toggleAllRowsSelected=(X)=>{Y.setRowSelection((Z)=>{X=typeof X<"u"?X:!Y.getIsAllRowsSelected();let Q={...Z},J=Y.getPreGroupedRowModel().flatRows;if(X)J.forEach((K)=>{if(!K.getCanSelect())return;Q[K.id]=!0});else J.forEach((K)=>{delete Q[K.id]});return Q})},Y.toggleAllPageRowsSelected=(X)=>Y.setRowSelection((Z)=>{let Q=typeof X<"u"?X:!Y.getIsAllPageRowsSelected(),J={...Z};return Y.getRowModel().rows.forEach((K)=>{s8(J,K.id,Q,!0,Y)}),J}),Y.getPreSelectedRowModel=()=>Y.getCoreRowModel(),Y.getSelectedRowModel=_(()=>[Y.getState().rowSelection,Y.getCoreRowModel()],(X,Z)=>{if(!Object.keys(X).length)return{rows:[],flatRows:[],rowsById:{}};return p8(Y,Z)},y(Y.options,"debugTable","getSelectedRowModel")),Y.getFilteredSelectedRowModel=_(()=>[Y.getState().rowSelection,Y.getFilteredRowModel()],(X,Z)=>{if(!Object.keys(X).length)return{rows:[],flatRows:[],rowsById:{}};return p8(Y,Z)},y(Y.options,"debugTable","getFilteredSelectedRowModel")),Y.getGroupedSelectedRowModel=_(()=>[Y.getState().rowSelection,Y.getSortedRowModel()],(X,Z)=>{if(!Object.keys(X).length)return{rows:[],flatRows:[],rowsById:{}};return p8(Y,Z)},y(Y.options,"debugTable","getGroupedSelectedRowModel")),Y.getIsAllRowsSelected=()=>{let X=Y.getFilteredRowModel().flatRows,{rowSelection:Z}=Y.getState(),Q=Boolean(X.length&&Object.keys(Z).length);if(Q){if(X.some((J)=>J.getCanSelect()&&!Z[J.id]))Q=!1}return Q},Y.getIsAllPageRowsSelected=()=>{let X=Y.getPaginationRowModel().flatRows.filter((J)=>J.getCanSelect()),{rowSelection:Z}=Y.getState(),Q=!!X.length;if(Q&&X.some((J)=>!Z[J.id]))Q=!1;return Q},Y.getIsSomeRowsSelected=()=>{var X;let Z=Object.keys((X=Y.getState().rowSelection)!=null?X:{}).length;return Z>0&&Z<Y.getFilteredRowModel().flatRows.length},Y.getIsSomePageRowsSelected=()=>{let X=Y.getPaginationRowModel().flatRows;return Y.getIsAllPageRowsSelected()?!1:X.filter((Z)=>Z.getCanSelect()).some((Z)=>Z.getIsSelected()||Z.getIsSomeSelected())},Y.getToggleAllRowsSelectedHandler=()=>{return(X)=>{Y.toggleAllRowsSelected(X.target.checked)}},Y.getToggleAllPageRowsSelectedHandler=()=>{return(X)=>{Y.toggleAllPageRowsSelected(X.target.checked)}}},createRow:(Y,X)=>{Y.toggleSelected=(Z,Q)=>{let J=Y.getIsSelected();X.setRowSelection((K)=>{var B;if(Z=typeof Z<"u"?Z:!J,Y.getCanSelect()&&J===Z)return K;let U={...K};return s8(U,Y.id,Z,(B=Q==null?void 0:Q.selectChildren)!=null?B:!0,X),U})},Y.getIsSelected=()=>{let{rowSelection:Z}=X.getState();return n8(Y,Z)},Y.getIsSomeSelected=()=>{let{rowSelection:Z}=X.getState();return u8(Y,Z)==="some"},Y.getIsAllSubRowsSelected=()=>{let{rowSelection:Z}=X.getState();return u8(Y,Z)==="all"},Y.getCanSelect=()=>{var Z;if(typeof X.options.enableRowSelection==="function")return X.options.enableRowSelection(Y);return(Z=X.options.enableRowSelection)!=null?Z:!0},Y.getCanSelectSubRows=()=>{var Z;if(typeof X.options.enableSubRowSelection==="function")return X.options.enableSubRowSelection(Y);return(Z=X.options.enableSubRowSelection)!=null?Z:!0},Y.getCanMultiSelect=()=>{var Z;if(typeof X.options.enableMultiRowSelection==="function")return X.options.enableMultiRowSelection(Y);return(Z=X.options.enableMultiRowSelection)!=null?Z:!0},Y.getToggleSelectedHandler=()=>{let Z=Y.getCanSelect();return(Q)=>{var J;if(!Z)return;Y.toggleSelected((J=Q.target)==null?void 0:J.checked)}}}},s8=(Y,X,Z,Q,J)=>{var K;let B=J.getRow(X,!0);if(Z){if(!B.getCanMultiSelect())Object.keys(Y).forEach((U)=>delete Y[U]);if(B.getCanSelect())Y[X]=!0}else delete Y[X];if(Q&&(K=B.subRows)!=null&&K.length&&B.getCanSelectSubRows())B.subRows.forEach((U)=>s8(Y,U.id,Z,Q,J))};function p8(Y,X){let Z=Y.getState().rowSelection,Q=[],J={},K=function(B,U){return B.map((q)=>{var N;let G=n8(q,Z);if(G)Q.push(q),J[q.id]=q;if((N=q.subRows)!=null&&N.length)q={...q,subRows:K(q.subRows)};if(G)return q}).filter(Boolean)};return{rows:K(X.rows),flatRows:Q,rowsById:J}}function n8(Y,X){var Z;return(Z=X[Y.id])!=null?Z:!1}function u8(Y,X,Z){var Q;if(!((Q=Y.subRows)!=null&&Q.length))return!1;let J=!0,K=!1;return Y.subRows.forEach((B)=>{if(K&&!J)return;if(B.getCanSelect())if(n8(B,X))K=!0;else J=!1;if(B.subRows&&B.subRows.length){let U=u8(B,X);if(U==="all")K=!0;else if(U==="some")K=!0,J=!1;else J=!1}}),J?"all":K?"some":!1}var d8=/([0-9]+)/gm,fZ=(Y,X,Z)=>{return yY(K8(Y.getValue(Z)).toLowerCase(),K8(X.getValue(Z)).toLowerCase())},gZ=(Y,X,Z)=>{return yY(K8(Y.getValue(Z)),K8(X.getValue(Z)))},wZ=(Y,X,Z)=>{return o8(K8(Y.getValue(Z)).toLowerCase(),K8(X.getValue(Z)).toLowerCase())},mZ=(Y,X,Z)=>{return o8(K8(Y.getValue(Z)),K8(X.getValue(Z)))},pZ=(Y,X,Z)=>{let Q=Y.getValue(Z),J=X.getValue(Z);return Q>J?1:Q<J?-1:0},bZ=(Y,X,Z)=>{return o8(Y.getValue(Z),X.getValue(Z))};function o8(Y,X){return Y===X?0:Y>X?1:-1}function K8(Y){if(typeof Y==="number"){if(isNaN(Y)||Y===1/0||Y===-1/0)return"";return String(Y)}if(typeof Y==="string")return Y;return""}function yY(Y,X){let Z=Y.split(d8).filter(Boolean),Q=X.split(d8).filter(Boolean);while(Z.length&&Q.length){let J=Z.shift(),K=Q.shift(),B=parseInt(J,10),U=parseInt(K,10),q=[B,U].sort();if(isNaN(q[0])){if(J>K)return 1;if(K>J)return-1;continue}if(isNaN(q[1]))return isNaN(B)?-1:1;if(B>U)return 1;if(U>B)return-1}return Z.length-Q.length}var L8={alphanumeric:fZ,alphanumericCaseSensitive:gZ,text:wZ,textCaseSensitive:mZ,datetime:pZ,basic:bZ},cZ={getInitialState:(Y)=>{return{sorting:[],...Y}},getDefaultColumnDef:()=>{return{sortingFn:"auto",sortUndefined:1}},getDefaultOptions:(Y)=>{return{onSortingChange:a("sorting",Y),isMultiSortEvent:(X)=>{return X.shiftKey}}},createColumn:(Y,X)=>{Y.getAutoSortingFn=()=>{let Z=X.getFilteredRowModel().flatRows.slice(10),Q=!1;for(let J of Z){let K=J==null?void 0:J.getValue(Y.id);if(Object.prototype.toString.call(K)==="[object Date]")return L8.datetime;if(typeof K==="string"){if(Q=!0,K.split(d8).length>1)return L8.alphanumeric}}if(Q)return L8.text;return L8.basic},Y.getAutoSortDir=()=>{let Z=X.getFilteredRowModel().flatRows[0];if(typeof(Z==null?void 0:Z.getValue(Y.id))==="string")return"asc";return"desc"},Y.getSortingFn=()=>{var Z,Q;if(!Y)throw Error();return V8(Y.columnDef.sortingFn)?Y.columnDef.sortingFn:Y.columnDef.sortingFn==="auto"?Y.getAutoSortingFn():(Z=(Q=X.options.sortingFns)==null?void 0:Q[Y.columnDef.sortingFn])!=null?Z:L8[Y.columnDef.sortingFn]},Y.toggleSorting=(Z,Q)=>{let J=Y.getNextSortingOrder(),K=typeof Z<"u"&&Z!==null;X.setSorting((B)=>{let U=B==null?void 0:B.find((j)=>j.id===Y.id),q=B==null?void 0:B.findIndex((j)=>j.id===Y.id),N=[],G,E=K?Z:J==="desc";if(B!=null&&B.length&&Y.getCanMultiSort()&&Q)if(U)G="toggle";else G="add";else if(B!=null&&B.length&&q!==B.length-1)G="replace";else if(U)G="toggle";else G="replace";if(G==="toggle"){if(!K){if(!J)G="remove"}}if(G==="add"){var z;N=[...B,{id:Y.id,desc:E}],N.splice(0,N.length-((z=X.options.maxMultiSortColCount)!=null?z:Number.MAX_SAFE_INTEGER))}else if(G==="toggle")N=B.map((j)=>{if(j.id===Y.id)return{...j,desc:E};return j});else if(G==="remove")N=B.filter((j)=>j.id!==Y.id);else N=[{id:Y.id,desc:E}];return N})},Y.getFirstSortDir=()=>{var Z,Q;return((Z=(Q=Y.columnDef.sortDescFirst)!=null?Q:X.options.sortDescFirst)!=null?Z:Y.getAutoSortDir()==="desc")?"desc":"asc"},Y.getNextSortingOrder=(Z)=>{var Q,J;let K=Y.getFirstSortDir(),B=Y.getIsSorted();if(!B)return K;if(B!==K&&((Q=X.options.enableSortingRemoval)!=null?Q:!0)&&(Z?(J=X.options.enableMultiRemove)!=null?J:!0:!0))return!1;return B==="desc"?"asc":"desc"},Y.getCanSort=()=>{var Z,Q;return((Z=Y.columnDef.enableSorting)!=null?Z:!0)&&((Q=X.options.enableSorting)!=null?Q:!0)&&!!Y.accessorFn},Y.getCanMultiSort=()=>{var Z,Q;return(Z=(Q=Y.columnDef.enableMultiSort)!=null?Q:X.options.enableMultiSort)!=null?Z:!!Y.accessorFn},Y.getIsSorted=()=>{var Z;let Q=(Z=X.getState().sorting)==null?void 0:Z.find((J)=>J.id===Y.id);return!Q?!1:Q.desc?"desc":"asc"},Y.getSortIndex=()=>{var Z,Q;return(Z=(Q=X.getState().sorting)==null?void 0:Q.findIndex((J)=>J.id===Y.id))!=null?Z:-1},Y.clearSorting=()=>{X.setSorting((Z)=>Z!=null&&Z.length?Z.filter((Q)=>Q.id!==Y.id):[])},Y.getToggleSortingHandler=()=>{let Z=Y.getCanSort();return(Q)=>{if(!Z)return;Q.persist==null||Q.persist(),Y.toggleSorting==null||Y.toggleSorting(void 0,Y.getCanMultiSort()?X.options.isMultiSortEvent==null?void 0:X.options.isMultiSortEvent(Q):!1)}}},createTable:(Y)=>{Y.setSorting=(X)=>Y.options.onSortingChange==null?void 0:Y.options.onSortingChange(X),Y.resetSorting=(X)=>{var Z,Q;Y.setSorting(X?[]:(Z=(Q=Y.initialState)==null?void 0:Q.sorting)!=null?Z:[])},Y.getPreSortedRowModel=()=>Y.getGroupedRowModel(),Y.getSortedRowModel=()=>{if(!Y._getSortedRowModel&&Y.options.getSortedRowModel)Y._getSortedRowModel=Y.options.getSortedRowModel(Y);if(Y.options.manualSorting||!Y._getSortedRowModel)return Y.getPreSortedRowModel();return Y._getSortedRowModel()}}},sZ=[qZ,IZ,MZ,xZ,LZ,NZ,RZ,_Z,cZ,VZ,yZ,$Z,SZ,hZ,CZ];function $Y(Y){var X,Z;if(Y.debugAll||Y.debugTable)console.info("Creating Table Instance...");let Q=[...sZ,...(X=Y._features)!=null?X:[]],J={_features:Q},K=J._features.reduce((z,j)=>{return Object.assign(z,j.getDefaultOptions==null?void 0:j.getDefaultOptions(J))},{}),B=(z)=>{if(J.options.mergeOptions)return J.options.mergeOptions(K,z);return{...K,...z}},q={...{},...(Z=Y.initialState)!=null?Z:{}};J._features.forEach((z)=>{var j;q=(j=z.getInitialState==null?void 0:z.getInitialState(q))!=null?j:q});let N=[],G=!1,E={_features:Q,options:{...K,...Y},initialState:q,_queue:(z)=>{if(N.push(z),!G)G=!0,Promise.resolve().then(()=>{while(N.length)N.shift()();G=!1}).catch((j)=>setTimeout(()=>{throw j}))},reset:()=>{J.setState(J.initialState)},setOptions:(z)=>{let j=W8(z,J.options);J.options=B(j)},getState:()=>{return J.options.state},setState:(z)=>{J.options.onStateChange==null||J.options.onStateChange(z)},_getRowId:(z,j,O)=>{var H;return(H=J.options.getRowId==null?void 0:J.options.getRowId(z,j,O))!=null?H:`${O?[O.id,j].join("."):j}`},getCoreRowModel:()=>{if(!J._getCoreRowModel)J._getCoreRowModel=J.options.getCoreRowModel(J);return J._getCoreRowModel()},getRowModel:()=>{return J.getPaginationRowModel()},getRow:(z,j)=>{let O=(j?J.getPrePaginationRowModel():J.getRowModel()).rowsById[z];if(!O){if(O=J.getCoreRowModel().rowsById[z],!O)throw Error(`getRow could not find row with ID: ${z}`)}return O},_getDefaultColumnDef:_(()=>[J.options.defaultColumn],(z)=>{var j;return z=(j=z)!=null?j:{},{header:(O)=>{let H=O.header.column.columnDef;if(H.accessorKey)return H.accessorKey;if(H.accessorFn)return H.id;return null},cell:(O)=>{var H,V;return(H=(V=O.renderValue())==null||V.toString==null?void 0:V.toString())!=null?H:null},...J._features.reduce((O,H)=>{return Object.assign(O,H.getDefaultColumnDef==null?void 0:H.getDefaultColumnDef())},{}),...z}},y(Y,"debugColumns","_getDefaultColumnDef")),_getColumnDefs:()=>J.options.columns,getAllColumns:_(()=>[J._getColumnDefs()],(z)=>{let j=function(O,H,V){if(V===void 0)V=0;return O.map((D)=>{let $=jZ(J,D,V,H),T=D;return $.columns=T.columns?j(T.columns,$,V+1):[],$})};return j(z)},y(Y,"debugColumns","getAllColumns")),getAllFlatColumns:_(()=>[J.getAllColumns()],(z)=>{return z.flatMap((j)=>{return j.getFlatColumns()})},y(Y,"debugColumns","getAllFlatColumns")),_getAllFlatColumnsById:_(()=>[J.getAllFlatColumns()],(z)=>{return z.reduce((j,O)=>{return j[O.id]=O,j},{})},y(Y,"debugColumns","getAllFlatColumnsById")),getAllLeafColumns:_(()=>[J.getAllColumns(),J._getOrderColumnsFn()],(z,j)=>{let O=z.flatMap((H)=>H.getLeafColumns());return j(O)},y(Y,"debugColumns","getAllLeafColumns")),getColumn:(z)=>{let j=J._getAllFlatColumnsById()[z];if(!j)console.error(`[Table] Column with id '${z}' does not exist.`);return j}};Object.assign(J,E);for(let z=0;z<J._features.length;z++){let j=J._features[z];j==null||j.createTable==null||j.createTable(J)}return J}function k8(){return(Y)=>_(()=>[Y.options.data],(X)=>{let Z={rows:[],flatRows:[],rowsById:{}},Q=function(J,K,B){if(K===void 0)K=0;let U=[];for(let N=0;N<J.length;N++){let G=i8(Y,Y._getRowId(J[N],N,B),J[N],N,K,void 0,B==null?void 0:B.id);if(Z.flatRows.push(G),Z.rowsById[G.id]=G,U.push(G),Y.options.getSubRows){var q;if(G.originalSubRows=Y.options.getSubRows(J[N],N),(q=G.originalSubRows)!=null&&q.length)G.subRows=Q(G.originalSubRows,K+1,G)}}return U};return Z.rows=Q(X),Z},y(Y.options,"debugTable","getRowModel",()=>Y._autoResetPageIndex()))}function uZ(Y){let X=[],Z=(Q)=>{var J;if(X.push(Q),(J=Q.subRows)!=null&&J.length&&Q.getIsExpanded())Q.subRows.forEach(Z)};return Y.rows.forEach(Z),{rows:X,flatRows:Y.flatRows,rowsById:Y.rowsById}}function dZ(Y,X,Z){if(Z.options.filterFromLeafRows)return iZ(Y,X,Z);return rZ(Y,X,Z)}function iZ(Y,X,Z){var Q;let J=[],K={},B=(Q=Z.options.maxLeafRowFilterDepth)!=null?Q:100,U=function(q,N){if(N===void 0)N=0;let G=[];for(let z=0;z<q.length;z++){var E;let j=q[z],O=i8(Z,j.id,j.original,j.index,j.depth,void 0,j.parentId);if(O.columnFilters=j.columnFilters,(E=j.subRows)!=null&&E.length&&N<B){if(O.subRows=U(j.subRows,N+1),j=O,X(j)&&!O.subRows.length){G.push(j),K[j.id]=j,J.push(j);continue}if(X(j)||O.subRows.length){G.push(j),K[j.id]=j,J.push(j);continue}}else if(j=O,X(j))G.push(j),K[j.id]=j,J.push(j)}return G};return{rows:U(Y),flatRows:J,rowsById:K}}function rZ(Y,X,Z){var Q;let J=[],K={},B=(Q=Z.options.maxLeafRowFilterDepth)!=null?Q:100,U=function(q,N){if(N===void 0)N=0;let G=[];for(let z=0;z<q.length;z++){let j=q[z];if(X(j)){var E;if((E=j.subRows)!=null&&E.length&&N<B){let H=i8(Z,j.id,j.original,j.index,j.depth,void 0,j.parentId);H.subRows=U(j.subRows,N+1),j=H}G.push(j),J.push(j),K[j.id]=j}}return G};return{rows:U(Y),flatRows:J,rowsById:K}}function SY(){return(Y)=>_(()=>[Y.getPreFilteredRowModel(),Y.getState().columnFilters,Y.getState().globalFilter],(X,Z,Q)=>{if(!X.rows.length||!(Z!=null&&Z.length)&&!Q){for(let z=0;z<X.flatRows.length;z++)X.flatRows[z].columnFilters={},X.flatRows[z].columnFiltersMeta={};return X}let J=[],K=[];(Z!=null?Z:[]).forEach((z)=>{var j;let O=Y.getColumn(z.id);if(!O)return;let H=O.getFilterFn();if(!H){console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${O.id}.`);return}J.push({id:z.id,filterFn:H,resolvedValue:(j=H.resolveFilterValue==null?void 0:H.resolveFilterValue(z.value))!=null?j:z.value})});let B=(Z!=null?Z:[]).map((z)=>z.id),U=Y.getGlobalFilterFn(),q=Y.getAllLeafColumns().filter((z)=>z.getCanGlobalFilter());if(Q&&U&&q.length)B.push("__global__"),q.forEach((z)=>{var j;K.push({id:z.id,filterFn:U,resolvedValue:(j=U.resolveFilterValue==null?void 0:U.resolveFilterValue(Q))!=null?j:Q})});let N,G;for(let z=0;z<X.flatRows.length;z++){let j=X.flatRows[z];if(j.columnFilters={},J.length)for(let O=0;O<J.length;O++){N=J[O];let H=N.id;j.columnFilters[H]=N.filterFn(j,H,N.resolvedValue,(V)=>{j.columnFiltersMeta[H]=V})}if(K.length){for(let O=0;O<K.length;O++){G=K[O];let H=G.id;if(G.filterFn(j,H,G.resolvedValue,(V)=>{j.columnFiltersMeta[H]=V})){j.columnFilters.__global__=!0;break}}if(j.columnFilters.__global__!==!0)j.columnFilters.__global__=!1}}let E=(z)=>{for(let j=0;j<B.length;j++)if(z.columnFilters[B[j]]===!1)return!1;return!0};return dZ(X.rows,E,Y)},y(Y.options,"debugTable","getFilteredRowModel",()=>Y._autoResetPageIndex()))}function hY(Y){return(X)=>_(()=>[X.getState().pagination,X.getPrePaginationRowModel(),X.options.paginateExpandedRows?void 0:X.getState().expanded],(Z,Q)=>{if(!Q.rows.length)return Q;let{pageSize:J,pageIndex:K}=Z,{rows:B,flatRows:U,rowsById:q}=Q,N=J*K,G=N+J;B=B.slice(N,G);let E;if(!X.options.paginateExpandedRows)E=uZ({rows:B,flatRows:U,rowsById:q});else E={rows:B,flatRows:U,rowsById:q};E.flatRows=[];let z=(j)=>{if(E.flatRows.push(j),j.subRows.length)j.subRows.forEach(z)};return E.rows.forEach(z),E},y(X.options,"debugTable","getPaginationRowModel"))}function fY(){return(Y)=>_(()=>[Y.getState().sorting,Y.getPreSortedRowModel()],(X,Z)=>{if(!Z.rows.length||!(X!=null&&X.length))return Z;let Q=Y.getState().sorting,J=[],K=Q.filter((q)=>{var N;return(N=Y.getColumn(q.id))==null?void 0:N.getCanSort()}),B={};K.forEach((q)=>{let N=Y.getColumn(q.id);if(!N)return;B[q.id]={sortUndefined:N.columnDef.sortUndefined,invertSorting:N.columnDef.invertSorting,sortingFn:N.getSortingFn()}});let U=(q)=>{let N=q.map((G)=>({...G}));return N.sort((G,E)=>{for(let j=0;j<K.length;j+=1){var z;let O=K[j],H=B[O.id],V=H.sortUndefined,D=(z=O==null?void 0:O.desc)!=null?z:!1,$=0;if(V){let T=G.getValue(O.id),F=E.getValue(O.id),S=T===void 0,M=F===void 0;if(S||M){if(V==="first")return S?-1:1;if(V==="last")return S?1:-1;$=S&&M?0:S?V:-V}}if($===0)$=H.sortingFn(G,E,O.id);if($!==0){if(D)$*=-1;if(H.invertSorting)$*=-1;return $}}return G.index-E.index}),N.forEach((G)=>{var E;if(J.push(G),(E=G.subRows)!=null&&E.length)G.subRows=U(G.subRows)}),N};return{rows:U(Z.rows),flatRows:J,rowsById:Z.rowsById}},y(Y.options,"debugTable","getSortedRowModel",()=>Y._autoResetPageIndex()))}function x8(Y){let X={state:{},onStateChange:()=>{},renderFallbackValue:null,...Y},[Z]=M8.useState(()=>({current:$Y(X)})),[Q,J]=M8.useState(()=>Z.current.initialState);return Z.current.setOptions((K)=>({...K,...Y,state:{...Q,...Y.state},onStateChange:(B)=>{J(B),Y.onStateChange==null||Y.onStateChange(B)}})),Z.current}var l=e(o(),1);function nZ(Y){let{data:X,columns:Z,totalCount:Q,enablePagination:J=!0,pageSize:K=10,onPaginationChange:B,enableSorting:U=!0,initialSorting:q=[],onSortingChange:N,initialColumnFilters:G=[],initialColumnVisibility:E={},enableRowSelection:z=!1,onSelectionChange:j}=Y,[O,H]=l.useState(q),[V,D]=l.useState(G),[$,T]=l.useState(""),[F,S]=l.useState(E),[M,v]=l.useState({}),[I,C]=l.useState({pageIndex:0,pageSize:K});l.useEffect(()=>{if(J&&B)B({pageIndex:I.pageIndex,pageSize:I.pageSize})},[I,J,B]),l.useEffect(()=>{if(U&&N)N(O)},[O,U,N]);let k=x8({data:X,columns:Z,state:{sorting:U?O:void 0,columnFilters:V,columnVisibility:F,rowSelection:z?M:void 0,pagination:J?I:void 0},onSortingChange:U?H:void 0,onColumnFiltersChange:D,onColumnVisibilityChange:S,onRowSelectionChange:z?v:void 0,onPaginationChange:J?C:void 0,getCoreRowModel:k8(),enableSorting:U,enableRowSelection:z,manualPagination:J,manualSorting:U,pageCount:J&&Q!==void 0?Math.ceil(Q/I.pageSize):void 0});l.useEffect(()=>{if(j&&z){let R=k.getFilteredSelectedRowModel().rows.map((s)=>s.original);j(R)}},[k,j,z]);let m=l.useMemo(()=>{let R=I.pageIndex*I.pageSize+1,s=Math.min((I.pageIndex+1)*I.pageSize,Q);return{start:R,end:s,total:Q,pageCount:J&&Q!==void 0?Math.ceil(Q/I.pageSize):1}},[I,Q,J]);return{table:k,sorting:O,setSorting:H,pagination:I,setPagination:C,columnFilters:V,setColumnFilters:D,globalFilter:$,setGlobalFilter:T,columnVisibility:F,setColumnVisibility:S,rowSelection:M,setRowSelection:v,paginationInfo:m}}var Z8=e(o(),1);function oZ(Y){let{data:X,columns:Z,enablePagination:Q=!0,pageSize:J=10,enableSorting:K=!0,initialSorting:B=[],enableGlobalFilter:U=!0,initialColumnFilters:q=[],initialColumnVisibility:N={},enableRowSelection:G=!1,onSelectionChange:E}=Y,[z,j]=Z8.useState(B),[O,H]=Z8.useState(q),[V,D]=Z8.useState(""),[$,T]=Z8.useState(N),[F,S]=Z8.useState({}),[M,v]=Z8.useState({pageIndex:0,pageSize:J}),I=x8({data:X,columns:Z,state:{sorting:K?z:void 0,columnFilters:O,globalFilter:U?V:void 0,columnVisibility:$,rowSelection:G?F:void 0,pagination:Q?M:void 0},onSortingChange:K?j:void 0,onColumnFiltersChange:H,onGlobalFilterChange:U?D:void 0,onColumnVisibilityChange:T,onRowSelectionChange:G?S:void 0,onPaginationChange:Q?v:void 0,getCoreRowModel:k8(),getFilteredRowModel:SY(),getPaginationRowModel:Q?hY():void 0,getSortedRowModel:K?fY():void 0,enableSorting:K,enableRowSelection:G,manualPagination:!1,manualSorting:!1});Z8.useEffect(()=>{if(E&&G){let k=I.getFilteredSelectedRowModel().rows.map((m)=>m.original);E(k)}},[I,E,G]);let C=Z8.useMemo(()=>{let k=I.getFilteredRowModel().rows.length;if(!Q)return{start:1,end:k,total:k,pageCount:1};let m=M.pageIndex*M.pageSize+1,R=Math.min((M.pageIndex+1)*M.pageSize,k);return{start:m,end:R,total:k,pageCount:I.getPageCount()}},[I,M,Q]);return{table:I,sorting:z,setSorting:j,pagination:M,setPagination:v,columnFilters:O,setColumnFilters:H,globalFilter:V,setGlobalFilter:D,columnVisibility:$,setColumnVisibility:T,rowSelection:F,setRowSelection:S,paginationInfo:C}}var d=e(o(),1),aZ=768;function lZ({sidebarOpen:Y,setSidebarOpen:X,side:Z="left",persistKey:Q="default",defaultSidebarPct:J=0.28,minPx:K=250,maxPct:B=0.6,maxPxCap:U=500,mobileDrawer:q=!0,tinySizePx:N,snapThreshold:G=50}){let E=d.useRef(null),z=d.useRef(null),[j,O]=d.useState(!1),[H,V]=d.useState(J*100);d.useEffect(()=>{let C=()=>{O(window.innerWidth<aZ)};return C(),window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[]),d.useEffect(()=>{if(typeof window>"u")return;let C=`resizable-sidebar-${Q}`,k=localStorage.getItem(C);if(k)try{let m=JSON.parse(k);if(typeof m.size==="number"&&m.size>0&&m.size<100)V(m.size)}catch{}},[Q]);let D=d.useCallback((C)=>{if(typeof window>"u")return;let k=`resizable-sidebar-${Q}`;localStorage.setItem(k,JSON.stringify({size:C,timestamp:Date.now()}))},[Q]),$=d.useMemo(()=>{if(!E.current)return K/1920*100;let C=E.current.offsetWidth;return K/C*100},[K]),T=d.useMemo(()=>{if(!E.current)return B*100;let C=E.current.offsetWidth;return Math.min(U,C*B)/C*100},[B,U]),F=d.useCallback(()=>{if(Y)z.current?.collapse(),X(!1);else z.current?.expand(),X(!0)},[Y,X]),S=d.useCallback((C)=>{if(C.length>0){let k=Z==="left"?C[0]:C[C.length-1];V(k),D(k)}},[Z,D]),M=d.useCallback(()=>{if(!N||!E.current)return;let C=E.current.offsetWidth,k=H/100*C,m=N/C*100;if(Math.abs(k-N)<=G&&k<N+G){let R=m;V(R),D(R),z.current?.resize(R)}},[H,N,G,D]),v=q&&j,I=`resizable-${Q}`;return{handleDoubleClick:F,shouldUseMobileDrawer:v,containerRef:E,autoSaveId:I,handleLayout:S,sidebarPanelRef:z,sidebarSize:H,minSize:$,maxSize:T,handleResizeEnd:M}}var c=e(o(),1);function tZ(Y={}){let{wsUrl:X,executeScript:Z,onOutput:Q,onError:J,autoConnect:K=!0,maxReconnectAttempts:B=3,defaultScript:U=""}=Y,[q,N]=c.useState(U),[G,E]=c.useState([]),[z,j]=c.useState(""),[O,H]=c.useState("terminal"),[V,D]=c.useState(!1),[$,T]=c.useState(!1),F=c.useRef(null),S=c.useRef(0),M=c.useRef(!0),v=c.useCallback((R,s)=>{let i={id:`${Date.now()}-${Math.random()}`,type:R,content:s,timestamp:new Date};E((U8)=>[...U8,i]),Q?.(i)},[Q]),I=c.useCallback(()=>{if(!X)return;if(F.current&&F.current.readyState===WebSocket.OPEN)return;if(F.current){try{F.current.close()}catch{}F.current=null}if(!M.current)return;try{let R=new WebSocket(X);F.current=R,R.onopen=()=>{T(!0),S.current=0},R.onmessage=(s)=>{try{let i=JSON.parse(s.data);if(i.type==="output")v("output",i.content);else if(i.type==="error")v("error",i.content);else if(i.type==="result")j(JSON.stringify(i.content,null,2)),H("preview");else if(i.type==="system")console.log("[useScriptEditor] Mensagem de sistema:",i.content)}catch{v("output",s.data)}},R.onerror=(s)=>{console.error("[useScriptEditor] WebSocket error:",s),T(!1),J?.(Error("Erro na conexão WebSocket"))},R.onclose=(s)=>{if(T(!1),F.current=null,s.code!==1000&&M.current&&S.current<B)S.current+=1,setTimeout(()=>{if(M.current)I()},3000);else if(S.current>=B)console.warn("[useScriptEditor] Máximo de tentativas de reconexão atingido")}}catch(R){console.error("[useScriptEditor] Erro ao conectar WebSocket:",R),T(!1),J?.(R instanceof Error?R:Error("Erro desconhecido ao conectar"))}},[X,B,v,J]);c.useEffect(()=>{if(K&&X){let R=setTimeout(()=>{I()},100);return()=>{clearTimeout(R)}}},[K,X,I]),c.useEffect(()=>{return()=>{if(M.current=!1,F.current){try{F.current.close(1000,"Component unmounting")}catch{}F.current=null}}},[]);let C=c.useCallback(async()=>{if(!q.trim()){v("error","❌ Script vazio");return}D(!0),v("input",q);try{if(F.current&&F.current.readyState===WebSocket.OPEN)F.current.send(JSON.stringify({type:"execute",script:q}));else if(Z)try{let R=await Z(q);if(R.output)v("output",R.output);if(R.error)v("error",R.error);if(R.result)j(JSON.stringify(R.result,null,2)),H("preview")}catch(R){v("error",`❌ Erro na requisição: ${R instanceof Error?R.message:"Erro desconhecido"}`)}else v("error","❌ Nenhuma forma de execução disponível (WebSocket ou HTTP)")}catch(R){v("error",`❌ Erro ao executar: ${R instanceof Error?R.message:"Erro desconhecido"}`)}finally{D(!1)}},[q,Z,v]),k=c.useCallback(()=>{if(F.current&&F.current.readyState===WebSocket.OPEN)F.current.send(JSON.stringify({type:"stop"}));D(!1)},[]),m=c.useCallback(()=>{E([]),j("")},[]);return{script:q,setScript:N,terminalLines:G,preview:z,activeTab:O,setActiveTab:H,isRunning:V,isConnected:$,executeScript:C,stopExecution:k,clearTerminal:m,addTerminalLine:v}}var X8=e(o(),1);function a8(Y,X="pt-BR"){if(Y>=1e6)return`${new Intl.NumberFormat(X,{minimumFractionDigits:1,maximumFractionDigits:1}).format(Y/1e6)}M`;if(Y>=1000)return new Intl.NumberFormat(X).format(Y);return new Intl.NumberFormat(X).format(Y)}function l8(Y,X="pt-BR",Z="BRL",Q="symbol"){return new Intl.NumberFormat(X,{style:"currency",currency:Z,currencyDisplay:Q,minimumFractionDigits:0,maximumFractionDigits:2}).format(Y)}function eZ(Y){let{value:X,delta:Z,lastMonth:Q,prefix:J="",suffix:K="",locale:B="pt-BR",currency:U,currencyDisplay:q="symbol",format:N,lastFormat:G,positive:E}=Y,z=X8.useMemo(()=>{if(Z!==void 0)return Z;if(Q!==void 0&&Q!==0)return(Number(X)-Number(Q))/Number(Q)*100;return 0},[X,Q,Z]),j=X8.useMemo(()=>{if(E!==void 0)return E;return z>=0},[z,E]),O=X8.useMemo(()=>{let T=z>0?"up":z<0?"down":"neutral",F=T==="up"?"success":T==="down"?"destructive":"secondary",S=z>0?`+${z.toFixed(1)}%`:z<0?`${z.toFixed(1)}%`:"0%";return{isPositive:j,percentage:S,delta:Math.abs(z),variant:F,direction:T}},[z,j]),H=X8.useMemo(()=>{if(N)return N(Number(X));let T=Number(X);if(U)return l8(T,B,U,q)+(K?` ${K}`:"");return J+a8(T,B)+K},[X,J,K,B,U,q,N]),V=X8.useMemo(()=>{if(!Q)return null;if(G)return G(Q);if(U)return l8(Q,B,U,q);return J+a8(Q,B)+K},[Q,J,K,B,U,q,G]),D=X8.useCallback((T={})=>{return{onClick:T.onClick,className:T.className,"aria-label":T["aria-label"]||`Estatística: ${H}`,role:T.onClick?"button":void 0}},[H]),$=X8.useCallback((T)=>{if(U)return l8(T,B,U,q);return a8(T,B)},[B,U,q]);return{formattedValue:H,formattedLastMonth:V,trend:O,isPositive:j,getCardProps:D,formatNumber:$}}var u=e(o(),1);function Y2(Y={}){let{initialTime:X=0,onPause:Z,onStop:Q,onStart:J,onResume:K,onReset:B,format:U="HH:mm:ss"}=Y,[q,N]=u.useState(X),[G,E]=u.useState(!1),[z,j]=u.useState(!1),O=u.useRef(null),H=u.useRef(null),V=u.useRef(0);u.useEffect(()=>{return()=>{if(O.current)clearInterval(O.current),O.current=null}},[]);let $=u.useCallback((C)=>{if(typeof U==="function")return U(C);let k=Math.floor(C/3600),m=Math.floor(C%3600/60),R=C%60;switch(U){case"HH:mm:ss":return`${String(k).padStart(2,"0")}:${String(m).padStart(2,"0")}:${String(R).padStart(2,"0")}`;case"mm:ss":return`${String(m).padStart(2,"0")}:${String(R).padStart(2,"0")}`;case"ss":return String(C);default:return`${String(k).padStart(2,"0")}:${String(m).padStart(2,"0")}:${String(R).padStart(2,"0")}`}},[U])(q),T=u.useCallback(()=>{if(O.current)clearInterval(O.current),O.current=null},[]),F=u.useCallback(()=>{if(G)return;T();let C=z?q:X;if(N(C),E(!0),j(!1),V.current=C,H.current=Date.now()-C*1000,O.current=setInterval(()=>{let k=Math.floor((Date.now()-(H.current||0))/1000);N(k)},100),!z)J?.(C);else K?.(C)},[G,z,q,X,J,K,T]),S=u.useCallback(()=>{if(!G)return;T(),E(!1),j(!0),Z?.(q)},[G,q,Z,T]),M=u.useCallback(()=>{T(),E(!1),j(!1),Q?.(q)},[q,Q,T]),v=u.useCallback(()=>{if(!z)return;F()},[z,F]),I=u.useCallback(()=>{T(),N(X),E(!1),j(!1),V.current=0,H.current=null,B?.()},[X,B,T]);return{time:q,formattedTime:$,isRunning:G,isPaused:z,isStopped:!G&&!z,start:F,pause:S,stop:M,resume:v,reset:I}}export{Y2 as useTimeTracker,eZ as useStatCard,tZ as useScriptEditor,lZ as useResizable,oZ as useReactTableFront,nZ as useReactTableBack,WZ as useProjectStats,JZ as useProjectProgress,QZ as useIsMobile,ZZ as useGenealogy,oY as useAnimatedIndicator};
1
+ /**
2
+ * flowtomic/logic
3
+ *
4
+ * Biblioteca de hooks headless e lógica reutilizável
5
+ * para projetos React/TypeScript
6
+ */
7
+ export * from "./hooks/useAnimatedIndicator";
8
+ export * from "./hooks/useGenealogy";
9
+ export * from "./hooks/useMoblile";
10
+ export * from "./hooks/useProjectProgress";
11
+ export * from "./hooks/useProjectStats";
12
+ export * from "./hooks/useReactTableBack";
13
+ export * from "./hooks/useReactTableFront";
14
+ export * from "./hooks/useResizable";
15
+ // Export hooks
16
+ export * from "./hooks/useScriptEditor";
17
+ export * from "./hooks/useStatCard";
18
+ export * from "./hooks/useTimeTracker";
19
+ export * from "./hooks/useAutocomplete";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowtomic/logic",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Hooks headless e lógica reutilizável para React",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -27,7 +27,7 @@
27
27
  "license": "MIT",
28
28
  "scripts": {
29
29
  "dev": "bun run --watch src/index.ts",
30
- "build": "tsc --emitDeclarationOnly && bun build ./src/index.ts --outdir ./dist --target browser --format esm --minify",
30
+ "build": "tsc --emitDeclarationOnly && bun build ./src/index.ts --outdir ./dist --target browser --format esm --minify --external react --external react/jsx-runtime",
31
31
  "type-check": "tsc --noEmit",
32
32
  "clean": "rm -rf dist",
33
33
  "lint": "biome check .",