@codella-software/react 2.2.23 → 2.2.25
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.
- package/dist/filters-and-sort/useFiltersAndSort.d.ts.map +1 -1
- package/dist/form-builder/useFormBuilder.d.ts.map +1 -1
- package/dist/index.cjs +23 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +23 -2
- package/dist/index.mjs.map +1 -1
- package/dist/live-updates/useLiveUpdates.d.ts.map +1 -1
- package/dist/rich-content/useRichContent.d.ts.map +1 -1
- package/dist/table-builder/useTableService.d.ts.map +1 -1
- package/dist/useFiltersAndSort.d.ts.map +1 -1
- package/dist/useFormBuilder.d.ts.map +1 -1
- package/dist/useTableService.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiltersAndSort.d.ts","sourceRoot":"","sources":["../../src/filters-and-sort/useFiltersAndSort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA2B,MAAM,yBAAyB,CAAA;AAGxF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,6BAA6B;IAC7B,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,sCAAsC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"useFiltersAndSort.d.ts","sourceRoot":"","sources":["../../src/filters-and-sort/useFiltersAndSort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA2B,MAAM,yBAAyB,CAAA;AAGxF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,6BAA6B;IAC7B,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,sCAAsC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAuEzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormBuilder.d.ts","sourceRoot":"","sources":["../../src/form-builder/useFormBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjE,0BAA0B;IAC1B,MAAM,EAAE,CAAC,CAAA;IACT,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,wBAAwB;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,kBAAkB;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,oBAAoB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useFormBuilder.d.ts","sourceRoot":"","sources":["../../src/form-builder/useFormBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjE,0BAA0B;IAC1B,MAAM,EAAE,CAAC,CAAA;IACT,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,wBAAwB;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,kBAAkB;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,oBAAoB,CAAC,CAAC,CAAC,CA0EzB"}
|
package/dist/index.cjs
CHANGED
|
@@ -8,10 +8,16 @@ const richContent = require("@codella-software/utils/rich-content");
|
|
|
8
8
|
const tabs = require("@codella-software/utils/tabs");
|
|
9
9
|
function useFiltersAndSort(options) {
|
|
10
10
|
const { service } = options;
|
|
11
|
+
if (!service) {
|
|
12
|
+
throw new Error("useFiltersAndSort: service is required");
|
|
13
|
+
}
|
|
11
14
|
const [state, setState] = react.useState(() => {
|
|
12
15
|
return service.getState();
|
|
13
16
|
});
|
|
14
17
|
react.useEffect(() => {
|
|
18
|
+
if (!service || !service.state$) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
15
21
|
const subscription = service.state$.subscribe((newState) => {
|
|
16
22
|
setState(newState);
|
|
17
23
|
});
|
|
@@ -58,9 +64,15 @@ function useFiltersAndSort(options) {
|
|
|
58
64
|
}
|
|
59
65
|
function useFormBuilder(options) {
|
|
60
66
|
const { builder } = options;
|
|
67
|
+
if (!builder) {
|
|
68
|
+
throw new Error("useFormBuilder: builder is required");
|
|
69
|
+
}
|
|
61
70
|
const [state, setState] = react.useState(() => builder.getState());
|
|
62
71
|
const [isSubmitting, setIsSubmitting] = react.useState(false);
|
|
63
72
|
react.useEffect(() => {
|
|
73
|
+
if (!builder || !builder.stateChanged$) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
64
76
|
const subscription = builder.stateChanged$.subscribe((newState) => {
|
|
65
77
|
setState(newState);
|
|
66
78
|
});
|
|
@@ -178,7 +190,7 @@ const useLiveListener = (action, enabled = true) => {
|
|
|
178
190
|
const [data, setData] = react.useState(null);
|
|
179
191
|
const [error, setError] = react.useState(null);
|
|
180
192
|
react.useEffect(() => {
|
|
181
|
-
if (!enabled) {
|
|
193
|
+
if (!enabled || !service) {
|
|
182
194
|
return;
|
|
183
195
|
}
|
|
184
196
|
const subscription = service.on(action).subscribe({
|
|
@@ -220,7 +232,7 @@ const useLiveUpdateListener = (action, onUpdate, { enabled = true } = {}) => {
|
|
|
220
232
|
[onUpdate]
|
|
221
233
|
);
|
|
222
234
|
const subscribe = react.useCallback(() => {
|
|
223
|
-
if (!enabled) {
|
|
235
|
+
if (!enabled || !service) {
|
|
224
236
|
return () => {
|
|
225
237
|
};
|
|
226
238
|
}
|
|
@@ -236,6 +248,9 @@ const useLiveUpdates = (eventName) => {
|
|
|
236
248
|
const [data, setData] = react.useState(null);
|
|
237
249
|
const [error, setError] = react.useState(null);
|
|
238
250
|
react.useEffect(() => {
|
|
251
|
+
if (!service) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
239
254
|
const subscription = service.on(eventName).subscribe({
|
|
240
255
|
next: (value) => {
|
|
241
256
|
setData(value);
|
|
@@ -260,6 +275,9 @@ function useRichContent(options = {}) {
|
|
|
260
275
|
const [canRedo, setCanRedo] = react.useState(false);
|
|
261
276
|
const [selectedFormats, setSelectedFormats] = react.useState(/* @__PURE__ */ new Set());
|
|
262
277
|
react.useEffect(() => {
|
|
278
|
+
if (!service) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
263
281
|
const contentSub = service.getContent$().subscribe(setContent);
|
|
264
282
|
const stateSub = service.getState$().subscribe((newState) => {
|
|
265
283
|
setState(newState);
|
|
@@ -353,6 +371,9 @@ function useTableService(options) {
|
|
|
353
371
|
const [selectedRows, setSelectedRows] = react.useState([]);
|
|
354
372
|
const [allSelected, setAllSelected] = react.useState(false);
|
|
355
373
|
react.useEffect(() => {
|
|
374
|
+
if (!builder || !builder.stateChanged$) {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
356
377
|
const subscription = builder.stateChanged$.subscribe((newState) => {
|
|
357
378
|
setState(newState);
|
|
358
379
|
});
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/filters-and-sort/useFiltersAndSort.ts","../src/form-builder/useFormBuilder.ts","../src/live-updates/LiveUpdateProvider.tsx","../src/live-updates/useLiveListener.ts","../src/live-updates/useLiveRequest.ts","../src/live-updates/useLiveUpdateListener.ts","../src/live-updates/useLiveUpdates.ts","../src/rich-content/useRichContent.ts","../src/table-builder/useTableService.ts","../src/tabs/useTabsHooks.tsx"],"sourcesContent":["// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FiltersAndSortService, type FilterAndSortState } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFiltersAndSort\n */\nexport interface UseFiltersAndSortOptions {\n /** FiltersAndSortService instance */\n service: FiltersAndSortService\n}\n\n/**\n * Hook return value for useFiltersAndSort\n */\nexport interface UseFiltersAndSortReturn {\n /** Current filter state */\n filters: Record<string, any>\n /** Current sort field */\n sortBy: string | null\n /** Current sort direction */\n sortDirection: 'asc' | 'desc'\n /** Current page */\n page: number\n /** Page size */\n pageSize: number\n /** Set filter */\n setFilter: (key: string, value: any) => void\n /** Clear specific filter */\n clearFilter: (key: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort direction for field */\n toggleSort: (field: string) => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Go to next page */\n nextPage: () => void\n /** Go to previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps FiltersAndSortService\n *\n * @param options - Hook options including FiltersAndSortService instance\n * @returns Filters and sort state with control methods\n *\n * @example\n * ```tsx\n * const service = new FiltersAndSortService({ storageKey: 'my-filters' });\n *\n * function MyTable() {\n * const filters = useFiltersAndSort({ service });\n * return (\n * <div>\n * <input\n * value={filters.filters.name || ''}\n * onChange={(e) => filters.setFilter('name', e.target.value)}\n * />\n * <button onClick={() => filters.clearAllFilters()}>Clear</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFiltersAndSort(\n options: UseFiltersAndSortOptions\n): UseFiltersAndSortReturn {\n const { service } = options\n\n const [state, setState] = useState<FilterAndSortState>(() => {\n return service.getState()\n })\n\n useEffect(() => {\n const subscription = service.state$.subscribe((newState: FilterAndSortState) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [service])\n\n const callbacks = useMemo(() => ({\n setFilter: (key: string, value: any) => {\n service.setFilter(key, value)\n },\n\n clearFilter: (key: string) => {\n service.clearFilter(key)\n },\n\n clearAllFilters: () => {\n service.clearAllFilters()\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n service.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n service.toggleSort(field)\n },\n\n setPage: (page: number) => {\n service.setPage(page)\n },\n\n setPageSize: (size: number) => {\n service.setPageSize(size)\n },\n\n nextPage: () => {\n service.nextPage()\n },\n\n prevPage: () => {\n service.prevPage()\n },\n }), [service])\n\n const memoizedReturn = useMemo(() => ({\n filters: state.filters,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n page: state.page,\n pageSize: state.pageSize,\n ...callbacks,\n }), [state, callbacks])\n\n return memoizedReturn\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FormBuilder } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFormBuilder\n */\nexport interface UseFormBuilderOptions<T extends Record<string, any>> {\n /** FormBuilder instance */\n builder: FormBuilder<T>\n}\n\n/**\n * Hook return value for useFormBuilder\n */\nexport interface UseFormBuilderReturn<T extends Record<string, any>> {\n /** Current form values */\n values: T\n /** Form validation errors */\n errors: Record<string, string | undefined>\n /** Form touched fields */\n touched: Record<string, boolean>\n /** Current form step (for multi-step forms) */\n currentStep: number\n /** Total form steps */\n totalSteps: number\n /** Is form currently submitting */\n isSubmitting: boolean\n /** Is form valid */\n isValid: boolean\n /** Set field value */\n setFieldValue: (field: keyof T, value: any) => Promise<void>\n /** Set field touched */\n setFieldTouched: (field: keyof T, touched: boolean) => void\n /** Validate entire form */\n validate: () => Promise<Record<string, string | undefined>>\n /** Submit form */\n submit: () => Promise<T | null>\n /** Reset form to initial values */\n reset: () => void\n /** Go to next step */\n nextStep: () => void\n /** Go to previous step */\n prevStep: () => void\n}\n\n/**\n * React hook that wraps FormBuilder and provides form state management\n *\n * @param options - Hook options including FormBuilder instance\n * @returns Form state and methods\n *\n * @example\n * ```tsx\n * const builder = new FormBuilder<{ name: string }>()\n * .addField({ name: 'name', type: 'text', label: 'Name' })\n * .build();\n *\n * function MyForm() {\n * const form = useFormBuilder({ builder });\n * return (\n * <form onSubmit={(e) => { e.preventDefault(); form.submit(); }}>\n * <input\n * value={form.values.name}\n * onChange={(e) => form.setFieldValue('name', e.target.value)}\n * />\n * {form.errors.name && <span>{form.errors.name}</span>}\n * <button type=\"submit\">Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nexport function useFormBuilder<T extends Record<string, any>>(\n options: UseFormBuilderOptions<T>\n): UseFormBuilderReturn<T> {\n const { builder } = options\n\n // Subscribe to form state\n const [state, setState] = useState(() => builder.getState())\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n useEffect(() => {\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n const memoizedReturn = useMemo(() => ({\n values: state.values,\n errors: state.errors,\n touched: state.touched,\n currentStep: state.currentStep,\n totalSteps: state.totalSteps,\n isSubmitting,\n isValid: Object.keys(state.errors).length === 0,\n\n setFieldValue: async (field: keyof T, value: any) => {\n builder.setFieldValue(field as string, value)\n },\n\n setFieldTouched: (field: keyof T, touched: boolean) => {\n builder.setFieldTouched(field as string, touched)\n },\n\n validate: async () => {\n return builder.validate()\n },\n\n submit: async () => {\n setIsSubmitting(true)\n try {\n const result = await builder.submit()\n setIsSubmitting(false)\n return result\n } catch (error) {\n setIsSubmitting(false)\n throw error\n }\n },\n\n reset: () => {\n builder.reset()\n },\n\n nextStep: () => {\n if (builder.nextStep) {\n builder.nextStep()\n }\n },\n\n prevStep: () => {\n if (builder.prevStep) {\n builder.prevStep()\n }\n },\n }), [builder, state, isSubmitting])\n\n return memoizedReturn\n}\n","import { FC, ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport type { IAuthProvider } from '@codella-software/utils';\nimport {\n LiveUpdateService,\n SSEService,\n WebsocketService,\n type EventMapping,\n type LiveUpdateType,\n} from '@codella-software/utils/live-updates';\n\nexport interface LiveUpdateContextValue {\n service: LiveUpdateService;\n isConnected: boolean;\n type: LiveUpdateType;\n canSend: boolean;\n}\n\nconst LiveUpdateContext = createContext<LiveUpdateContextValue | null>(null);\n\n/**\n * Hook to access the LiveUpdateContext\n * Must be used within a LiveUpdateProvider\n */\nexport const useLiveUpdateContext = () => {\n const context = useContext(LiveUpdateContext);\n if (!context) {\n throw new Error('useLiveUpdateContext must be used within LiveUpdateProvider');\n }\n return context;\n};\n\nexport interface LiveUpdateProviderProps {\n children: ReactNode;\n authProvider: IAuthProvider;\n sseUrl?: string;\n wsUrl?: string;\n sseEnabled?: boolean;\n wsEnabled?: boolean;\n eventMappings?: Record<string, EventMapping>;\n}\n\n/**\n * Provider component for live updates service\n * Manages service initialization and connection state\n * \n * @example\n * ```tsx\n * import { LiveUpdateProvider } from '@codella/react';\n * import { createFirebaseAuthProvider } from '@codella-software/utils';\n * \n * function App() {\n * const authProvider = createFirebaseAuthProvider({ auth: getAuth() });\n * \n * return (\n * <LiveUpdateProvider\n * authProvider={authProvider}\n * sseUrl=\"http://api.example.com/sse\"\n * wsUrl=\"ws://api.example.com/ws\"\n * eventMappings={{\n * 'notifications': { sseEvent: 'GET_NOTIFICATIONS' }\n * }}\n * >\n * <YourApp />\n * </LiveUpdateProvider>\n * );\n * }\n * ```\n */\nexport const LiveUpdateProvider: FC<LiveUpdateProviderProps> = ({\n children,\n authProvider,\n sseUrl = 'http://localhost:3000/sse',\n wsUrl = 'ws://localhost:3000/ws',\n sseEnabled = true,\n wsEnabled = true,\n eventMappings = {},\n}) => {\n const [isConnected, setIsConnected] = useState(false);\n const [service] = useState(() => {\n const sseService = new SSEService({\n url: sseUrl,\n authProvider,\n });\n\n const wsService = new WebsocketService({\n url: wsUrl,\n authProvider,\n });\n\n return new LiveUpdateService(wsService, sseService);\n });\n\n useEffect(() => {\n if (authProvider.isAuthenticated()) {\n service.initialize({\n sseEnabled,\n wsEnabled,\n authProvider,\n eventMappings,\n });\n } else {\n service.disconnect();\n }\n\n const subscription = service.isConnected$.subscribe(setIsConnected);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [authProvider, sseEnabled, wsEnabled, service, eventMappings]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n service.disconnect();\n };\n }, [service]);\n\n return (\n <LiveUpdateContext.Provider\n value={{\n service,\n isConnected,\n type: service.type,\n canSend: service.canSend,\n }}\n >\n {children}\n </LiveUpdateContext.Provider>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to listen for specific WebSocket actions\n * @param action - The WS_ACTIONS enum value to listen for\n * @param enabled - Whether to subscribe (defaults to true)\n * @returns The latest message payload or null\n */\nexport const useLiveListener = <T = unknown>(action: WS_ACTIONS, enabled = true) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const subscription = service.on(action).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service]);\n\n return { data, error };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook for request-response pattern over WebSocket\n * @param sendAction - The action to send\n * @param responseAction - The action to wait for\n * @returns Function to send request and promise for response\n */\nexport const useLiveRequest = <TReq = unknown, TRes = unknown>() => {\n const { service, canSend } = useLiveUpdateContext();\n\n const request = useCallback(\n (sendAction: WS_ACTIONS, responseAction: WS_ACTIONS, payload?: TReq) => {\n if (!canSend) {\n return Promise.reject(new Error('WebSocket not available for sending'));\n }\n\n return service\n .on(responseAction)\n .toPromise()\n .catch(() => {\n throw new Error(`No response received for action: ${responseAction}`);\n });\n },\n [canSend, service],\n );\n\n return { request, canSend };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\nexport interface UseUpdateListenerOptions {\n enabled?: boolean;\n}\n\n/**\n * Hook to listen for and handle live updates with callback\n * @param action - The WS_ACTIONS enum value to listen for\n * @param onUpdate - Callback when update is received\n * @param enabled - Whether to subscribe (defaults to true)\n */\nexport const useLiveUpdateListener = <T = unknown>(\n action: WS_ACTIONS,\n onUpdate: (data: T) => void,\n { enabled = true }: UseUpdateListenerOptions = {},\n) => {\n const { service } = useLiveUpdateContext();\n\n const handleUpdate = useCallback(\n (data: T) => {\n onUpdate(data);\n },\n [onUpdate],\n );\n\n // Subscribe to updates\n // The subscription is managed by the effect in the hook\n // Users need to call subscribe manually or use useLiveListener instead\n const subscribe = useCallback(() => {\n if (!enabled) {\n return () => {};\n }\n\n const subscription = service.on(action).subscribe(handleUpdate);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service, handleUpdate]);\n\n return { subscribe };\n};\n","import { useEffect, useState } from 'react';\n\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to subscribe to live update events\n * @param eventName - The event name (must be mapped in LiveUpdateProvider.eventMappings)\n * @returns The latest event data or null\n */\nexport const useLiveUpdates = <T = unknown>(eventName: string) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const subscription = service.on(eventName).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [eventName, service]);\n\n return { data, error };\n};\n","/**\n * React hook for RichContentService\n */\n\nimport {\n ContentEditableAdapter,\n DocumentNode,\n MarkType,\n RichContentConfig,\n RichContentService,\n RichContentState,\n Selection,\n} from '@codella-software/utils/rich-content';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\n/**\n * Hook options for useRichContent\n */\nexport interface UseRichContentOptions extends RichContentConfig {\n /** DOM element ref for contentEditable */\n editorRef?: React.RefObject<HTMLElement>;\n /** Custom adapter instance */\n adapter?: ContentEditableAdapter;\n}\n\n/**\n * Hook return value for useRichContent\n */\nexport interface UseRichContentReturn {\n /** Service instance */\n service: RichContentService;\n /** Current document content */\n content: DocumentNode;\n /** Full state object */\n state: RichContentState;\n /** Current editor focus state */\n isFocused: boolean;\n /** Can undo */\n canUndo: boolean;\n /** Can redo */\n canRedo: boolean;\n /** Active mark types */\n selectedFormats: Set<MarkType>;\n /** Current selection */\n selection: Selection | null;\n /** Is dirty (has unsaved changes) */\n isDirty: boolean;\n\n // Commands\n /** Insert text */\n insertText: (text: string) => void;\n /** Insert paragraph */\n insertParagraph: () => void;\n /** Insert heading */\n insertHeading: (level: 1 | 2 | 3 | 4 | 5 | 6) => void;\n /** Insert image */\n insertImage: (url: string) => void;\n /** Upload image file */\n uploadImage: (file: File) => Promise<void>;\n /** Insert mention */\n insertMention: (id: string, label: string) => void;\n /** Insert list */\n insertList: (type: 'ordered' | 'unordered') => void;\n /** Toggle mark */\n toggleMark: (mark: MarkType) => void;\n /** Delete content */\n deleteContent: () => void;\n /** Undo */\n undo: () => void;\n /** Redo */\n redo: () => void;\n /** Clear history */\n clearHistory: () => void;\n /** Focus editor */\n focus: () => void;\n /** Set focus state */\n setFocus: (focused: boolean) => void;\n /** Get plain text */\n getPlainText: () => string;\n /** Set selection */\n setSelection: (selection: Selection | null) => void;\n}\n\n/**\n * React hook that wraps RichContentService and manages state subscriptions\n */\nexport function useRichContent(options: UseRichContentOptions = {}): UseRichContentReturn {\n // Create service instance\n const service = useMemo(() => RichContentService.create(options), []);\n\n // State from service\n const [content, setContent] = useState<DocumentNode>(service.getContent());\n const [state, setState] = useState<RichContentState>(service.getState());\n const [isFocused, setIsFocused] = useState(false);\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n const [selectedFormats, setSelectedFormats] = useState<Set<MarkType>>(new Set());\n\n // Subscriptions\n useEffect(() => {\n const contentSub = service.getContent$().subscribe(setContent);\n const stateSub = service.getState$().subscribe((newState) => {\n setState(newState);\n setIsFocused(newState.isFocused);\n setCanUndo(newState.canUndo);\n setCanRedo(newState.canRedo);\n setSelectedFormats(newState.selectedFormats || new Set());\n });\n\n return () => {\n contentSub.unsubscribe();\n stateSub.unsubscribe();\n };\n }, [service]);\n\n // Attach adapter if provided\n useEffect(() => {\n if (options.adapter) {\n service.attachAdapter(options.adapter);\n return () => service.detachAdapter();\n }\n }, [options.adapter, service]);\n\n // Setup default adapter if editorRef provided\n const defaultAdapterRef = useRef<ContentEditableAdapter | null>(null);\n\n useEffect(() => {\n if (options.editorRef?.current && !options.adapter && !defaultAdapterRef.current) {\n const { DefaultContentEditableAdapter } = require('@codella-software/utils/rich-content');\n const adapter = new DefaultContentEditableAdapter();\n adapter.mount(options.editorRef.current);\n service.attachAdapter(adapter);\n defaultAdapterRef.current = adapter;\n\n return () => {\n adapter.unmount();\n service.detachAdapter();\n defaultAdapterRef.current = null;\n };\n }\n }, [options.editorRef, options.adapter, service]);\n\n // Command callbacks\n const insertText = useCallback((text: string) => service.insertText(text), [service]);\n const insertParagraph = useCallback(() => service.insertParagraph(), [service]);\n const insertHeading = useCallback((level: any) => service.insertHeading(level), [service]);\n const insertImage = useCallback((url: string) => service.insertImage(url), [service]);\n const uploadImage = useCallback((file: File) => service.uploadImage(file), [service]);\n const insertMention = useCallback((id: string, label: string) => service.insertMention(id, label), [service]);\n const insertList = useCallback((type: 'ordered' | 'unordered') => service.insertList(type), [service]);\n const toggleMark = useCallback((mark: MarkType) => service.toggleMark(mark), [service]);\n const deleteContent = useCallback(() => service.deleteContent(), [service]);\n const undo = useCallback(() => service.undo(), [service]);\n const redo = useCallback(() => service.redo(), [service]);\n const clearHistory = useCallback(() => service.clearHistory(), [service]);\n const focus = useCallback(() => service.getAdapter()?.focus(), [service]);\n const setFocus = useCallback((focused: boolean) => service.setFocus(focused), [service]);\n const getPlainText = useCallback(() => service.getPlainText(), [service]);\n const setSelection = useCallback((sel: Selection | null) => service.setSelection(sel), [service]);\n\n return {\n service,\n content,\n state,\n isFocused,\n canUndo,\n canRedo,\n selectedFormats,\n selection: state.selection || null,\n isDirty: state.isDirty,\n\n insertText,\n insertParagraph,\n insertHeading,\n insertImage,\n uploadImage,\n insertMention,\n insertList,\n toggleMark,\n deleteContent,\n undo,\n redo,\n clearHistory,\n focus,\n setFocus,\n getPlainText,\n setSelection,\n };\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { TableBuilder, type TableBuilderConfig } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useTableService\n */\nexport interface UseTableServiceOptions<T extends Record<string, any>> {\n /** TableBuilder configuration */\n config: TableBuilderConfig<T>\n\n /** Table data */\n data: T[]\n}\n\n/**\n * Hook return value for useTableService\n */\nexport interface UseTableServiceReturn<T extends Record<string, any>> {\n /** Filtered and paginated data rows */\n rows: T[]\n /** Selected row IDs */\n selectedRows: string[]\n /** All rows selected flag */\n allSelected: boolean\n /** Current page */\n currentPage: number\n /** Page size */\n pageSize: number\n /** Total pages */\n totalPages: number\n /** Total item count */\n totalItems: number\n /** Has next page */\n hasNextPage: boolean\n /** Has previous page */\n hasPrevPage: boolean\n /** Sort field */\n sortBy: string | null\n /** Sort direction */\n sortDirection: 'asc' | 'desc' | null\n /** Active filters */\n filters: Record<string, any>\n /** Toggle row selection */\n toggleRowSelection: (rowId: string) => void\n /** Toggle all rows selection */\n toggleAllSelection: () => void\n /** Clear selection */\n clearSelection: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort */\n toggleSort: (field: string) => void\n /** Set filter */\n setFilter: (field: string, value: any) => void\n /** Clear filter */\n clearFilter: (field: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Next page */\n nextPage: () => void\n /** Previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps TableBuilder for table state management\n *\n * @param options - Hook options including config and data\n * @returns Table state and control methods\n *\n * @example\n * ```tsx\n * const config: TableBuilderConfig<User> = {\n * columns: [\n * { field: 'name', header: 'Name', sortable: true }\n * ]\n * };\n *\n * function MyTable({ data }: { data: User[] }) {\n * const table = useTableService({ config, data });\n * return (\n * <table>\n * <tbody>\n * {table.rows.map(row => (\n * <tr key={row.id}><td>{row.name}</td></tr>\n * ))}\n * </tbody>\n * </table>\n * );\n * }\n * ```\n */\nexport function useTableService<T extends Record<string, any>>(\n options: UseTableServiceOptions<T>\n): UseTableServiceReturn<T> {\n const { config, data } = options\n\n // Create instance of TableBuilder\n const builder = useMemo(() => {\n const tb = new TableBuilder<T>(config)\n tb.setData(data)\n return tb\n }, [config])\n\n // Track state\n const [state, setState] = useState(() => builder.getState())\n const [selectedRows, setSelectedRows] = useState<string[]>([])\n const [allSelected, setAllSelected] = useState(false)\n\n // Subscribe to changes\n useEffect(() => {\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n // Update data\n useEffect(() => {\n builder.setData(data)\n }, [builder, data])\n\n const memoizedMethods = useMemo(() => ({\n toggleRowSelection: (rowId: string) => {\n setSelectedRows(prev => \n prev.includes(rowId)\n ? prev.filter(id => id !== rowId)\n : [...prev, rowId]\n )\n },\n\n toggleAllSelection: () => {\n if (allSelected) {\n setSelectedRows([])\n setAllSelected(false)\n } else {\n setSelectedRows(state.rows.map((row: any) => (row as any).id || String(row)))\n setAllSelected(true)\n }\n },\n\n clearSelection: () => {\n setSelectedRows([])\n setAllSelected(false)\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n builder.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n builder.toggleSort(field)\n },\n\n setFilter: (field: string, value: any) => {\n builder.setFilter(field, value)\n },\n\n clearFilter: (field: string) => {\n builder.clearFilter(field)\n },\n\n clearAllFilters: () => {\n builder.clearAllFilters()\n },\n\n setPage: (page: number) => {\n builder.setPage(page)\n },\n\n setPageSize: (size: number) => {\n builder.setPageSize(size)\n },\n\n nextPage: () => {\n builder.nextPage()\n },\n\n prevPage: () => {\n builder.prevPage()\n },\n }), [builder, allSelected, state.rows])\n\n const memoizedReturn = useMemo(() => ({\n rows: state.rows,\n selectedRows,\n allSelected,\n currentPage: state.currentPage,\n pageSize: state.pageSize,\n totalPages: state.totalPages,\n totalItems: state.totalItems,\n hasNextPage: state.hasNextPage,\n hasPrevPage: state.hasPrevPage,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n filters: state.filters,\n ...memoizedMethods,\n }), [state, selectedRows, allSelected, memoizedMethods])\n\n return memoizedReturn\n}\n","import type { TabChangeEvent, TabsConfig } from '@codella-software/utils/tabs';\nimport { TabsService } from '@codella-software/utils/tabs';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\ninterface TabsContextValue {\n service: TabsService;\n activeTabId: string;\n tabs: ReturnType<TabsService['getTabs']>;\n}\n\nconst TabsContext = createContext<TabsContextValue | undefined>(undefined);\n\n/**\n * Props for TabsProvider\n */\nexport interface TabsProviderProps {\n config: TabsConfig;\n children: React.ReactNode;\n}\n\n/**\n * Tabs provider for React\n */\nexport function TabsProvider({ config, children }: TabsProviderProps) {\n const [service] = useState(() => new TabsService(config));\n const [activeTabId, setActiveTabId] = useState(() => service.getActiveTabId());\n const [tabs, setTabs] = useState(() => service.getTabs());\n\n useEffect(() => {\n const activeTabSubscription = service.getActiveTabId$().subscribe(setActiveTabId);\n const tabsSubscription = service.getTabs$().subscribe(setTabs);\n\n return () => {\n activeTabSubscription.unsubscribe();\n tabsSubscription.unsubscribe();\n };\n }, [service]);\n\n useEffect(() => {\n return () => {\n service.destroy();\n };\n }, [service]);\n\n return (\n <TabsContext.Provider value={{ service, activeTabId, tabs }}>\n {children}\n </TabsContext.Provider>\n );\n}\n\n/**\n * Hook to access tabs service from context\n */\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('useTabsContext must be used within a TabsProvider');\n }\n return context;\n}\n\n/**\n * Hook to use tabs service directly\n */\nexport function useTabsService() {\n const { service } = useTabsContext();\n return service;\n}\n\n/**\n * Hook to get active tab\n */\nexport function useActiveTab() {\n const { service } = useTabsContext();\n const [activeTab, setActiveTab] = useState(() => service.getActiveTab());\n\n useEffect(() => {\n const subscription = service.getActiveTab$().subscribe(setActiveTab);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return activeTab;\n}\n\n/**\n * Hook to get all tabs\n */\nexport function useTabs() {\n const { tabs } = useTabsContext();\n return tabs;\n}\n\n/**\n * Hook to listen to tab changes\n */\nexport function useTabChange() {\n const { service } = useTabsContext();\n const [changeEvent, setChangeEvent] = useState<TabChangeEvent | null>(null);\n\n useEffect(() => {\n const subscription = service.onTabChange$().subscribe(setChangeEvent);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return changeEvent;\n}\n\n/**\n * Hook to set active tab\n */\nexport function useSetActiveTab() {\n const { service } = useTabsContext();\n return {\n setActiveTab: (tabId: string) => service.setActiveTab(tabId),\n setActiveTabByIndex: (index: number) => service.setActiveTabByIndex(index),\n nextTab: () => service.nextTab(),\n previousTab: () => service.previousTab(),\n };\n}\n"],"names":["useState","useEffect","useMemo","createContext","useContext","SSEService","WebsocketService","LiveUpdateService","jsx","useCallback","RichContentService","useRef","TableBuilder","TabsService","tabs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/filters-and-sort/useFiltersAndSort.ts","../src/form-builder/useFormBuilder.ts","../src/live-updates/LiveUpdateProvider.tsx","../src/live-updates/useLiveListener.ts","../src/live-updates/useLiveRequest.ts","../src/live-updates/useLiveUpdateListener.ts","../src/live-updates/useLiveUpdates.ts","../src/rich-content/useRichContent.ts","../src/table-builder/useTableService.ts","../src/tabs/useTabsHooks.tsx"],"sourcesContent":["// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FiltersAndSortService, type FilterAndSortState } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFiltersAndSort\n */\nexport interface UseFiltersAndSortOptions {\n /** FiltersAndSortService instance */\n service: FiltersAndSortService\n}\n\n/**\n * Hook return value for useFiltersAndSort\n */\nexport interface UseFiltersAndSortReturn {\n /** Current filter state */\n filters: Record<string, any>\n /** Current sort field */\n sortBy: string | null\n /** Current sort direction */\n sortDirection: 'asc' | 'desc'\n /** Current page */\n page: number\n /** Page size */\n pageSize: number\n /** Set filter */\n setFilter: (key: string, value: any) => void\n /** Clear specific filter */\n clearFilter: (key: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort direction for field */\n toggleSort: (field: string) => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Go to next page */\n nextPage: () => void\n /** Go to previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps FiltersAndSortService\n *\n * @param options - Hook options including FiltersAndSortService instance\n * @returns Filters and sort state with control methods\n *\n * @example\n * ```tsx\n * const service = new FiltersAndSortService({ storageKey: 'my-filters' });\n *\n * function MyTable() {\n * const filters = useFiltersAndSort({ service });\n * return (\n * <div>\n * <input\n * value={filters.filters.name || ''}\n * onChange={(e) => filters.setFilter('name', e.target.value)}\n * />\n * <button onClick={() => filters.clearAllFilters()}>Clear</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFiltersAndSort(\n options: UseFiltersAndSortOptions\n): UseFiltersAndSortReturn {\n const { service } = options\n\n if (!service) {\n throw new Error('useFiltersAndSort: service is required')\n }\n\n const [state, setState] = useState<FilterAndSortState>(() => {\n return service.getState()\n })\n\n useEffect(() => {\n if (!service || !service.state$) {\n return\n }\n\n const subscription = service.state$.subscribe((newState: FilterAndSortState) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [service])\n\n const callbacks = useMemo(() => ({\n setFilter: (key: string, value: any) => {\n service.setFilter(key, value)\n },\n\n clearFilter: (key: string) => {\n service.clearFilter(key)\n },\n\n clearAllFilters: () => {\n service.clearAllFilters()\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n service.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n service.toggleSort(field)\n },\n\n setPage: (page: number) => {\n service.setPage(page)\n },\n\n setPageSize: (size: number) => {\n service.setPageSize(size)\n },\n\n nextPage: () => {\n service.nextPage()\n },\n\n prevPage: () => {\n service.prevPage()\n },\n }), [service])\n\n const memoizedReturn = useMemo(() => ({\n filters: state.filters,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n page: state.page,\n pageSize: state.pageSize,\n ...callbacks,\n }), [state, callbacks])\n\n return memoizedReturn\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FormBuilder } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFormBuilder\n */\nexport interface UseFormBuilderOptions<T extends Record<string, any>> {\n /** FormBuilder instance */\n builder: FormBuilder<T>\n}\n\n/**\n * Hook return value for useFormBuilder\n */\nexport interface UseFormBuilderReturn<T extends Record<string, any>> {\n /** Current form values */\n values: T\n /** Form validation errors */\n errors: Record<string, string | undefined>\n /** Form touched fields */\n touched: Record<string, boolean>\n /** Current form step (for multi-step forms) */\n currentStep: number\n /** Total form steps */\n totalSteps: number\n /** Is form currently submitting */\n isSubmitting: boolean\n /** Is form valid */\n isValid: boolean\n /** Set field value */\n setFieldValue: (field: keyof T, value: any) => Promise<void>\n /** Set field touched */\n setFieldTouched: (field: keyof T, touched: boolean) => void\n /** Validate entire form */\n validate: () => Promise<Record<string, string | undefined>>\n /** Submit form */\n submit: () => Promise<T | null>\n /** Reset form to initial values */\n reset: () => void\n /** Go to next step */\n nextStep: () => void\n /** Go to previous step */\n prevStep: () => void\n}\n\n/**\n * React hook that wraps FormBuilder and provides form state management\n *\n * @param options - Hook options including FormBuilder instance\n * @returns Form state and methods\n *\n * @example\n * ```tsx\n * const builder = new FormBuilder<{ name: string }>()\n * .addField({ name: 'name', type: 'text', label: 'Name' })\n * .build();\n *\n * function MyForm() {\n * const form = useFormBuilder({ builder });\n * return (\n * <form onSubmit={(e) => { e.preventDefault(); form.submit(); }}>\n * <input\n * value={form.values.name}\n * onChange={(e) => form.setFieldValue('name', e.target.value)}\n * />\n * {form.errors.name && <span>{form.errors.name}</span>}\n * <button type=\"submit\">Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nexport function useFormBuilder<T extends Record<string, any>>(\n options: UseFormBuilderOptions<T>\n): UseFormBuilderReturn<T> {\n const { builder } = options\n\n if (!builder) {\n throw new Error('useFormBuilder: builder is required')\n }\n\n // Subscribe to form state\n const [state, setState] = useState(() => builder.getState())\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n useEffect(() => {\n if (!builder || !builder.stateChanged$) {\n return\n }\n\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n const memoizedReturn = useMemo(() => ({\n values: state.values,\n errors: state.errors,\n touched: state.touched,\n currentStep: state.currentStep,\n totalSteps: state.totalSteps,\n isSubmitting,\n isValid: Object.keys(state.errors).length === 0,\n\n setFieldValue: async (field: keyof T, value: any) => {\n builder.setFieldValue(field as string, value)\n },\n\n setFieldTouched: (field: keyof T, touched: boolean) => {\n builder.setFieldTouched(field as string, touched)\n },\n\n validate: async () => {\n return builder.validate()\n },\n\n submit: async () => {\n setIsSubmitting(true)\n try {\n const result = await builder.submit()\n setIsSubmitting(false)\n return result\n } catch (error) {\n setIsSubmitting(false)\n throw error\n }\n },\n\n reset: () => {\n builder.reset()\n },\n\n nextStep: () => {\n if (builder.nextStep) {\n builder.nextStep()\n }\n },\n\n prevStep: () => {\n if (builder.prevStep) {\n builder.prevStep()\n }\n },\n }), [builder, state, isSubmitting])\n\n return memoizedReturn\n}\n","import { FC, ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport type { IAuthProvider } from '@codella-software/utils';\nimport {\n LiveUpdateService,\n SSEService,\n WebsocketService,\n type EventMapping,\n type LiveUpdateType,\n} from '@codella-software/utils/live-updates';\n\nexport interface LiveUpdateContextValue {\n service: LiveUpdateService;\n isConnected: boolean;\n type: LiveUpdateType;\n canSend: boolean;\n}\n\nconst LiveUpdateContext = createContext<LiveUpdateContextValue | null>(null);\n\n/**\n * Hook to access the LiveUpdateContext\n * Must be used within a LiveUpdateProvider\n */\nexport const useLiveUpdateContext = () => {\n const context = useContext(LiveUpdateContext);\n if (!context) {\n throw new Error('useLiveUpdateContext must be used within LiveUpdateProvider');\n }\n return context;\n};\n\nexport interface LiveUpdateProviderProps {\n children: ReactNode;\n authProvider: IAuthProvider;\n sseUrl?: string;\n wsUrl?: string;\n sseEnabled?: boolean;\n wsEnabled?: boolean;\n eventMappings?: Record<string, EventMapping>;\n}\n\n/**\n * Provider component for live updates service\n * Manages service initialization and connection state\n * \n * @example\n * ```tsx\n * import { LiveUpdateProvider } from '@codella/react';\n * import { createFirebaseAuthProvider } from '@codella-software/utils';\n * \n * function App() {\n * const authProvider = createFirebaseAuthProvider({ auth: getAuth() });\n * \n * return (\n * <LiveUpdateProvider\n * authProvider={authProvider}\n * sseUrl=\"http://api.example.com/sse\"\n * wsUrl=\"ws://api.example.com/ws\"\n * eventMappings={{\n * 'notifications': { sseEvent: 'GET_NOTIFICATIONS' }\n * }}\n * >\n * <YourApp />\n * </LiveUpdateProvider>\n * );\n * }\n * ```\n */\nexport const LiveUpdateProvider: FC<LiveUpdateProviderProps> = ({\n children,\n authProvider,\n sseUrl = 'http://localhost:3000/sse',\n wsUrl = 'ws://localhost:3000/ws',\n sseEnabled = true,\n wsEnabled = true,\n eventMappings = {},\n}) => {\n const [isConnected, setIsConnected] = useState(false);\n const [service] = useState(() => {\n const sseService = new SSEService({\n url: sseUrl,\n authProvider,\n });\n\n const wsService = new WebsocketService({\n url: wsUrl,\n authProvider,\n });\n\n return new LiveUpdateService(wsService, sseService);\n });\n\n useEffect(() => {\n if (authProvider.isAuthenticated()) {\n service.initialize({\n sseEnabled,\n wsEnabled,\n authProvider,\n eventMappings,\n });\n } else {\n service.disconnect();\n }\n\n const subscription = service.isConnected$.subscribe(setIsConnected);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [authProvider, sseEnabled, wsEnabled, service, eventMappings]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n service.disconnect();\n };\n }, [service]);\n\n return (\n <LiveUpdateContext.Provider\n value={{\n service,\n isConnected,\n type: service.type,\n canSend: service.canSend,\n }}\n >\n {children}\n </LiveUpdateContext.Provider>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to listen for specific WebSocket actions\n * @param action - The WS_ACTIONS enum value to listen for\n * @param enabled - Whether to subscribe (defaults to true)\n * @returns The latest message payload or null\n */\nexport const useLiveListener = <T = unknown>(action: WS_ACTIONS, enabled = true) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!enabled || !service) {\n return;\n }\n\n const subscription = service.on(action).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service]);\n\n return { data, error };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook for request-response pattern over WebSocket\n * @param sendAction - The action to send\n * @param responseAction - The action to wait for\n * @returns Function to send request and promise for response\n */\nexport const useLiveRequest = <TReq = unknown, TRes = unknown>() => {\n const { service, canSend } = useLiveUpdateContext();\n\n const request = useCallback(\n (sendAction: WS_ACTIONS, responseAction: WS_ACTIONS, payload?: TReq) => {\n if (!canSend) {\n return Promise.reject(new Error('WebSocket not available for sending'));\n }\n\n return service\n .on(responseAction)\n .toPromise()\n .catch(() => {\n throw new Error(`No response received for action: ${responseAction}`);\n });\n },\n [canSend, service],\n );\n\n return { request, canSend };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\nexport interface UseUpdateListenerOptions {\n enabled?: boolean;\n}\n\n/**\n * Hook to listen for and handle live updates with callback\n * @param action - The WS_ACTIONS enum value to listen for\n * @param onUpdate - Callback when update is received\n * @param enabled - Whether to subscribe (defaults to true)\n */\nexport const useLiveUpdateListener = <T = unknown>(\n action: WS_ACTIONS,\n onUpdate: (data: T) => void,\n { enabled = true }: UseUpdateListenerOptions = {},\n) => {\n const { service } = useLiveUpdateContext();\n\n const handleUpdate = useCallback(\n (data: T) => {\n onUpdate(data);\n },\n [onUpdate],\n );\n\n // Subscribe to updates\n // The subscription is managed by the effect in the hook\n // Users need to call subscribe manually or use useLiveListener instead\n const subscribe = useCallback(() => {\n if (!enabled || !service) {\n return () => {};\n }\n\n const subscription = service.on(action).subscribe(handleUpdate);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service, handleUpdate]);\n\n return { subscribe };\n};\n","import { useEffect, useState } from 'react';\n\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to subscribe to live update events\n * @param eventName - The event name (must be mapped in LiveUpdateProvider.eventMappings)\n * @returns The latest event data or null\n */\nexport const useLiveUpdates = <T = unknown>(eventName: string) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!service) {\n return;\n }\n\n const subscription = service.on(eventName).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [eventName, service]);\n\n return { data, error };\n};\n","/**\n * React hook for RichContentService\n */\n\nimport {\n ContentEditableAdapter,\n DocumentNode,\n MarkType,\n RichContentConfig,\n RichContentService,\n RichContentState,\n Selection,\n} from '@codella-software/utils/rich-content';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\n/**\n * Hook options for useRichContent\n */\nexport interface UseRichContentOptions extends RichContentConfig {\n /** DOM element ref for contentEditable */\n editorRef?: React.RefObject<HTMLElement>;\n /** Custom adapter instance */\n adapter?: ContentEditableAdapter;\n}\n\n/**\n * Hook return value for useRichContent\n */\nexport interface UseRichContentReturn {\n /** Service instance */\n service: RichContentService;\n /** Current document content */\n content: DocumentNode;\n /** Full state object */\n state: RichContentState;\n /** Current editor focus state */\n isFocused: boolean;\n /** Can undo */\n canUndo: boolean;\n /** Can redo */\n canRedo: boolean;\n /** Active mark types */\n selectedFormats: Set<MarkType>;\n /** Current selection */\n selection: Selection | null;\n /** Is dirty (has unsaved changes) */\n isDirty: boolean;\n\n // Commands\n /** Insert text */\n insertText: (text: string) => void;\n /** Insert paragraph */\n insertParagraph: () => void;\n /** Insert heading */\n insertHeading: (level: 1 | 2 | 3 | 4 | 5 | 6) => void;\n /** Insert image */\n insertImage: (url: string) => void;\n /** Upload image file */\n uploadImage: (file: File) => Promise<void>;\n /** Insert mention */\n insertMention: (id: string, label: string) => void;\n /** Insert list */\n insertList: (type: 'ordered' | 'unordered') => void;\n /** Toggle mark */\n toggleMark: (mark: MarkType) => void;\n /** Delete content */\n deleteContent: () => void;\n /** Undo */\n undo: () => void;\n /** Redo */\n redo: () => void;\n /** Clear history */\n clearHistory: () => void;\n /** Focus editor */\n focus: () => void;\n /** Set focus state */\n setFocus: (focused: boolean) => void;\n /** Get plain text */\n getPlainText: () => string;\n /** Set selection */\n setSelection: (selection: Selection | null) => void;\n}\n\n/**\n * React hook that wraps RichContentService and manages state subscriptions\n */\nexport function useRichContent(options: UseRichContentOptions = {}): UseRichContentReturn {\n // Create service instance\n const service = useMemo(() => RichContentService.create(options), []);\n\n // State from service\n const [content, setContent] = useState<DocumentNode>(service.getContent());\n const [state, setState] = useState<RichContentState>(service.getState());\n const [isFocused, setIsFocused] = useState(false);\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n const [selectedFormats, setSelectedFormats] = useState<Set<MarkType>>(new Set());\n\n // Subscriptions\n useEffect(() => {\n if (!service) {\n return\n }\n\n const contentSub = service.getContent$().subscribe(setContent);\n const stateSub = service.getState$().subscribe((newState) => {\n setState(newState);\n setIsFocused(newState.isFocused);\n setCanUndo(newState.canUndo);\n setCanRedo(newState.canRedo);\n setSelectedFormats(newState.selectedFormats || new Set());\n });\n\n return () => {\n contentSub.unsubscribe();\n stateSub.unsubscribe();\n };\n }, [service]);\n\n // Attach adapter if provided\n useEffect(() => {\n if (options.adapter) {\n service.attachAdapter(options.adapter);\n return () => service.detachAdapter();\n }\n }, [options.adapter, service]);\n\n // Setup default adapter if editorRef provided\n const defaultAdapterRef = useRef<ContentEditableAdapter | null>(null);\n\n useEffect(() => {\n if (options.editorRef?.current && !options.adapter && !defaultAdapterRef.current) {\n const { DefaultContentEditableAdapter } = require('@codella-software/utils/rich-content');\n const adapter = new DefaultContentEditableAdapter();\n adapter.mount(options.editorRef.current);\n service.attachAdapter(adapter);\n defaultAdapterRef.current = adapter;\n\n return () => {\n adapter.unmount();\n service.detachAdapter();\n defaultAdapterRef.current = null;\n };\n }\n }, [options.editorRef, options.adapter, service]);\n\n // Command callbacks\n const insertText = useCallback((text: string) => service.insertText(text), [service]);\n const insertParagraph = useCallback(() => service.insertParagraph(), [service]);\n const insertHeading = useCallback((level: any) => service.insertHeading(level), [service]);\n const insertImage = useCallback((url: string) => service.insertImage(url), [service]);\n const uploadImage = useCallback((file: File) => service.uploadImage(file), [service]);\n const insertMention = useCallback((id: string, label: string) => service.insertMention(id, label), [service]);\n const insertList = useCallback((type: 'ordered' | 'unordered') => service.insertList(type), [service]);\n const toggleMark = useCallback((mark: MarkType) => service.toggleMark(mark), [service]);\n const deleteContent = useCallback(() => service.deleteContent(), [service]);\n const undo = useCallback(() => service.undo(), [service]);\n const redo = useCallback(() => service.redo(), [service]);\n const clearHistory = useCallback(() => service.clearHistory(), [service]);\n const focus = useCallback(() => service.getAdapter()?.focus(), [service]);\n const setFocus = useCallback((focused: boolean) => service.setFocus(focused), [service]);\n const getPlainText = useCallback(() => service.getPlainText(), [service]);\n const setSelection = useCallback((sel: Selection | null) => service.setSelection(sel), [service]);\n\n return {\n service,\n content,\n state,\n isFocused,\n canUndo,\n canRedo,\n selectedFormats,\n selection: state.selection || null,\n isDirty: state.isDirty,\n\n insertText,\n insertParagraph,\n insertHeading,\n insertImage,\n uploadImage,\n insertMention,\n insertList,\n toggleMark,\n deleteContent,\n undo,\n redo,\n clearHistory,\n focus,\n setFocus,\n getPlainText,\n setSelection,\n };\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { TableBuilder, type TableBuilderConfig } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useTableService\n */\nexport interface UseTableServiceOptions<T extends Record<string, any>> {\n /** TableBuilder configuration */\n config: TableBuilderConfig<T>\n\n /** Table data */\n data: T[]\n}\n\n/**\n * Hook return value for useTableService\n */\nexport interface UseTableServiceReturn<T extends Record<string, any>> {\n /** Filtered and paginated data rows */\n rows: T[]\n /** Selected row IDs */\n selectedRows: string[]\n /** All rows selected flag */\n allSelected: boolean\n /** Current page */\n currentPage: number\n /** Page size */\n pageSize: number\n /** Total pages */\n totalPages: number\n /** Total item count */\n totalItems: number\n /** Has next page */\n hasNextPage: boolean\n /** Has previous page */\n hasPrevPage: boolean\n /** Sort field */\n sortBy: string | null\n /** Sort direction */\n sortDirection: 'asc' | 'desc' | null\n /** Active filters */\n filters: Record<string, any>\n /** Toggle row selection */\n toggleRowSelection: (rowId: string) => void\n /** Toggle all rows selection */\n toggleAllSelection: () => void\n /** Clear selection */\n clearSelection: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort */\n toggleSort: (field: string) => void\n /** Set filter */\n setFilter: (field: string, value: any) => void\n /** Clear filter */\n clearFilter: (field: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Next page */\n nextPage: () => void\n /** Previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps TableBuilder for table state management\n *\n * @param options - Hook options including config and data\n * @returns Table state and control methods\n *\n * @example\n * ```tsx\n * const config: TableBuilderConfig<User> = {\n * columns: [\n * { field: 'name', header: 'Name', sortable: true }\n * ]\n * };\n *\n * function MyTable({ data }: { data: User[] }) {\n * const table = useTableService({ config, data });\n * return (\n * <table>\n * <tbody>\n * {table.rows.map(row => (\n * <tr key={row.id}><td>{row.name}</td></tr>\n * ))}\n * </tbody>\n * </table>\n * );\n * }\n * ```\n */\nexport function useTableService<T extends Record<string, any>>(\n options: UseTableServiceOptions<T>\n): UseTableServiceReturn<T> {\n const { config, data } = options\n\n // Create instance of TableBuilder\n const builder = useMemo(() => {\n const tb = new TableBuilder<T>(config)\n tb.setData(data)\n return tb\n }, [config])\n\n // Track state\n const [state, setState] = useState(() => builder.getState())\n const [selectedRows, setSelectedRows] = useState<string[]>([])\n const [allSelected, setAllSelected] = useState(false)\n\n // Subscribe to changes\n useEffect(() => {\n if (!builder || !builder.stateChanged$) {\n return\n }\n\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n // Update data\n useEffect(() => {\n builder.setData(data)\n }, [builder, data])\n\n const memoizedMethods = useMemo(() => ({\n toggleRowSelection: (rowId: string) => {\n setSelectedRows(prev => \n prev.includes(rowId)\n ? prev.filter(id => id !== rowId)\n : [...prev, rowId]\n )\n },\n\n toggleAllSelection: () => {\n if (allSelected) {\n setSelectedRows([])\n setAllSelected(false)\n } else {\n setSelectedRows(state.rows.map((row: any) => (row as any).id || String(row)))\n setAllSelected(true)\n }\n },\n\n clearSelection: () => {\n setSelectedRows([])\n setAllSelected(false)\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n builder.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n builder.toggleSort(field)\n },\n\n setFilter: (field: string, value: any) => {\n builder.setFilter(field, value)\n },\n\n clearFilter: (field: string) => {\n builder.clearFilter(field)\n },\n\n clearAllFilters: () => {\n builder.clearAllFilters()\n },\n\n setPage: (page: number) => {\n builder.setPage(page)\n },\n\n setPageSize: (size: number) => {\n builder.setPageSize(size)\n },\n\n nextPage: () => {\n builder.nextPage()\n },\n\n prevPage: () => {\n builder.prevPage()\n },\n }), [builder, allSelected, state.rows])\n\n const memoizedReturn = useMemo(() => ({\n rows: state.rows,\n selectedRows,\n allSelected,\n currentPage: state.currentPage,\n pageSize: state.pageSize,\n totalPages: state.totalPages,\n totalItems: state.totalItems,\n hasNextPage: state.hasNextPage,\n hasPrevPage: state.hasPrevPage,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n filters: state.filters,\n ...memoizedMethods,\n }), [state, selectedRows, allSelected, memoizedMethods])\n\n return memoizedReturn\n}\n","import type { TabChangeEvent, TabsConfig } from '@codella-software/utils/tabs';\nimport { TabsService } from '@codella-software/utils/tabs';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\ninterface TabsContextValue {\n service: TabsService;\n activeTabId: string;\n tabs: ReturnType<TabsService['getTabs']>;\n}\n\nconst TabsContext = createContext<TabsContextValue | undefined>(undefined);\n\n/**\n * Props for TabsProvider\n */\nexport interface TabsProviderProps {\n config: TabsConfig;\n children: React.ReactNode;\n}\n\n/**\n * Tabs provider for React\n */\nexport function TabsProvider({ config, children }: TabsProviderProps) {\n const [service] = useState(() => new TabsService(config));\n const [activeTabId, setActiveTabId] = useState(() => service.getActiveTabId());\n const [tabs, setTabs] = useState(() => service.getTabs());\n\n useEffect(() => {\n const activeTabSubscription = service.getActiveTabId$().subscribe(setActiveTabId);\n const tabsSubscription = service.getTabs$().subscribe(setTabs);\n\n return () => {\n activeTabSubscription.unsubscribe();\n tabsSubscription.unsubscribe();\n };\n }, [service]);\n\n useEffect(() => {\n return () => {\n service.destroy();\n };\n }, [service]);\n\n return (\n <TabsContext.Provider value={{ service, activeTabId, tabs }}>\n {children}\n </TabsContext.Provider>\n );\n}\n\n/**\n * Hook to access tabs service from context\n */\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('useTabsContext must be used within a TabsProvider');\n }\n return context;\n}\n\n/**\n * Hook to use tabs service directly\n */\nexport function useTabsService() {\n const { service } = useTabsContext();\n return service;\n}\n\n/**\n * Hook to get active tab\n */\nexport function useActiveTab() {\n const { service } = useTabsContext();\n const [activeTab, setActiveTab] = useState(() => service.getActiveTab());\n\n useEffect(() => {\n const subscription = service.getActiveTab$().subscribe(setActiveTab);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return activeTab;\n}\n\n/**\n * Hook to get all tabs\n */\nexport function useTabs() {\n const { tabs } = useTabsContext();\n return tabs;\n}\n\n/**\n * Hook to listen to tab changes\n */\nexport function useTabChange() {\n const { service } = useTabsContext();\n const [changeEvent, setChangeEvent] = useState<TabChangeEvent | null>(null);\n\n useEffect(() => {\n const subscription = service.onTabChange$().subscribe(setChangeEvent);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return changeEvent;\n}\n\n/**\n * Hook to set active tab\n */\nexport function useSetActiveTab() {\n const { service } = useTabsContext();\n return {\n setActiveTab: (tabId: string) => service.setActiveTab(tabId),\n setActiveTabByIndex: (index: number) => service.setActiveTabByIndex(index),\n nextTab: () => service.nextTab(),\n previousTab: () => service.previousTab(),\n };\n}\n"],"names":["useState","useEffect","useMemo","createContext","useContext","SSEService","WebsocketService","LiveUpdateService","jsx","useCallback","RichContentService","useRef","TableBuilder","TabsService","tabs"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -6,10 +6,16 @@ import { RichContentService } from "@codella-software/utils/rich-content";
|
|
|
6
6
|
import { TabsService } from "@codella-software/utils/tabs";
|
|
7
7
|
function useFiltersAndSort(options) {
|
|
8
8
|
const { service } = options;
|
|
9
|
+
if (!service) {
|
|
10
|
+
throw new Error("useFiltersAndSort: service is required");
|
|
11
|
+
}
|
|
9
12
|
const [state, setState] = useState(() => {
|
|
10
13
|
return service.getState();
|
|
11
14
|
});
|
|
12
15
|
useEffect(() => {
|
|
16
|
+
if (!service || !service.state$) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
13
19
|
const subscription = service.state$.subscribe((newState) => {
|
|
14
20
|
setState(newState);
|
|
15
21
|
});
|
|
@@ -56,9 +62,15 @@ function useFiltersAndSort(options) {
|
|
|
56
62
|
}
|
|
57
63
|
function useFormBuilder(options) {
|
|
58
64
|
const { builder } = options;
|
|
65
|
+
if (!builder) {
|
|
66
|
+
throw new Error("useFormBuilder: builder is required");
|
|
67
|
+
}
|
|
59
68
|
const [state, setState] = useState(() => builder.getState());
|
|
60
69
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
61
70
|
useEffect(() => {
|
|
71
|
+
if (!builder || !builder.stateChanged$) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
62
74
|
const subscription = builder.stateChanged$.subscribe((newState) => {
|
|
63
75
|
setState(newState);
|
|
64
76
|
});
|
|
@@ -176,7 +188,7 @@ const useLiveListener = (action, enabled = true) => {
|
|
|
176
188
|
const [data, setData] = useState(null);
|
|
177
189
|
const [error, setError] = useState(null);
|
|
178
190
|
useEffect(() => {
|
|
179
|
-
if (!enabled) {
|
|
191
|
+
if (!enabled || !service) {
|
|
180
192
|
return;
|
|
181
193
|
}
|
|
182
194
|
const subscription = service.on(action).subscribe({
|
|
@@ -218,7 +230,7 @@ const useLiveUpdateListener = (action, onUpdate, { enabled = true } = {}) => {
|
|
|
218
230
|
[onUpdate]
|
|
219
231
|
);
|
|
220
232
|
const subscribe = useCallback(() => {
|
|
221
|
-
if (!enabled) {
|
|
233
|
+
if (!enabled || !service) {
|
|
222
234
|
return () => {
|
|
223
235
|
};
|
|
224
236
|
}
|
|
@@ -234,6 +246,9 @@ const useLiveUpdates = (eventName) => {
|
|
|
234
246
|
const [data, setData] = useState(null);
|
|
235
247
|
const [error, setError] = useState(null);
|
|
236
248
|
useEffect(() => {
|
|
249
|
+
if (!service) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
237
252
|
const subscription = service.on(eventName).subscribe({
|
|
238
253
|
next: (value) => {
|
|
239
254
|
setData(value);
|
|
@@ -258,6 +273,9 @@ function useRichContent(options = {}) {
|
|
|
258
273
|
const [canRedo, setCanRedo] = useState(false);
|
|
259
274
|
const [selectedFormats, setSelectedFormats] = useState(/* @__PURE__ */ new Set());
|
|
260
275
|
useEffect(() => {
|
|
276
|
+
if (!service) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
261
279
|
const contentSub = service.getContent$().subscribe(setContent);
|
|
262
280
|
const stateSub = service.getState$().subscribe((newState) => {
|
|
263
281
|
setState(newState);
|
|
@@ -351,6 +369,9 @@ function useTableService(options) {
|
|
|
351
369
|
const [selectedRows, setSelectedRows] = useState([]);
|
|
352
370
|
const [allSelected, setAllSelected] = useState(false);
|
|
353
371
|
useEffect(() => {
|
|
372
|
+
if (!builder || !builder.stateChanged$) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
354
375
|
const subscription = builder.stateChanged$.subscribe((newState) => {
|
|
355
376
|
setState(newState);
|
|
356
377
|
});
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/filters-and-sort/useFiltersAndSort.ts","../src/form-builder/useFormBuilder.ts","../src/live-updates/LiveUpdateProvider.tsx","../src/live-updates/useLiveListener.ts","../src/live-updates/useLiveRequest.ts","../src/live-updates/useLiveUpdateListener.ts","../src/live-updates/useLiveUpdates.ts","../src/rich-content/useRichContent.ts","../src/table-builder/useTableService.ts","../src/tabs/useTabsHooks.tsx"],"sourcesContent":["// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FiltersAndSortService, type FilterAndSortState } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFiltersAndSort\n */\nexport interface UseFiltersAndSortOptions {\n /** FiltersAndSortService instance */\n service: FiltersAndSortService\n}\n\n/**\n * Hook return value for useFiltersAndSort\n */\nexport interface UseFiltersAndSortReturn {\n /** Current filter state */\n filters: Record<string, any>\n /** Current sort field */\n sortBy: string | null\n /** Current sort direction */\n sortDirection: 'asc' | 'desc'\n /** Current page */\n page: number\n /** Page size */\n pageSize: number\n /** Set filter */\n setFilter: (key: string, value: any) => void\n /** Clear specific filter */\n clearFilter: (key: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort direction for field */\n toggleSort: (field: string) => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Go to next page */\n nextPage: () => void\n /** Go to previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps FiltersAndSortService\n *\n * @param options - Hook options including FiltersAndSortService instance\n * @returns Filters and sort state with control methods\n *\n * @example\n * ```tsx\n * const service = new FiltersAndSortService({ storageKey: 'my-filters' });\n *\n * function MyTable() {\n * const filters = useFiltersAndSort({ service });\n * return (\n * <div>\n * <input\n * value={filters.filters.name || ''}\n * onChange={(e) => filters.setFilter('name', e.target.value)}\n * />\n * <button onClick={() => filters.clearAllFilters()}>Clear</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFiltersAndSort(\n options: UseFiltersAndSortOptions\n): UseFiltersAndSortReturn {\n const { service } = options\n\n const [state, setState] = useState<FilterAndSortState>(() => {\n return service.getState()\n })\n\n useEffect(() => {\n const subscription = service.state$.subscribe((newState: FilterAndSortState) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [service])\n\n const callbacks = useMemo(() => ({\n setFilter: (key: string, value: any) => {\n service.setFilter(key, value)\n },\n\n clearFilter: (key: string) => {\n service.clearFilter(key)\n },\n\n clearAllFilters: () => {\n service.clearAllFilters()\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n service.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n service.toggleSort(field)\n },\n\n setPage: (page: number) => {\n service.setPage(page)\n },\n\n setPageSize: (size: number) => {\n service.setPageSize(size)\n },\n\n nextPage: () => {\n service.nextPage()\n },\n\n prevPage: () => {\n service.prevPage()\n },\n }), [service])\n\n const memoizedReturn = useMemo(() => ({\n filters: state.filters,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n page: state.page,\n pageSize: state.pageSize,\n ...callbacks,\n }), [state, callbacks])\n\n return memoizedReturn\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FormBuilder } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFormBuilder\n */\nexport interface UseFormBuilderOptions<T extends Record<string, any>> {\n /** FormBuilder instance */\n builder: FormBuilder<T>\n}\n\n/**\n * Hook return value for useFormBuilder\n */\nexport interface UseFormBuilderReturn<T extends Record<string, any>> {\n /** Current form values */\n values: T\n /** Form validation errors */\n errors: Record<string, string | undefined>\n /** Form touched fields */\n touched: Record<string, boolean>\n /** Current form step (for multi-step forms) */\n currentStep: number\n /** Total form steps */\n totalSteps: number\n /** Is form currently submitting */\n isSubmitting: boolean\n /** Is form valid */\n isValid: boolean\n /** Set field value */\n setFieldValue: (field: keyof T, value: any) => Promise<void>\n /** Set field touched */\n setFieldTouched: (field: keyof T, touched: boolean) => void\n /** Validate entire form */\n validate: () => Promise<Record<string, string | undefined>>\n /** Submit form */\n submit: () => Promise<T | null>\n /** Reset form to initial values */\n reset: () => void\n /** Go to next step */\n nextStep: () => void\n /** Go to previous step */\n prevStep: () => void\n}\n\n/**\n * React hook that wraps FormBuilder and provides form state management\n *\n * @param options - Hook options including FormBuilder instance\n * @returns Form state and methods\n *\n * @example\n * ```tsx\n * const builder = new FormBuilder<{ name: string }>()\n * .addField({ name: 'name', type: 'text', label: 'Name' })\n * .build();\n *\n * function MyForm() {\n * const form = useFormBuilder({ builder });\n * return (\n * <form onSubmit={(e) => { e.preventDefault(); form.submit(); }}>\n * <input\n * value={form.values.name}\n * onChange={(e) => form.setFieldValue('name', e.target.value)}\n * />\n * {form.errors.name && <span>{form.errors.name}</span>}\n * <button type=\"submit\">Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nexport function useFormBuilder<T extends Record<string, any>>(\n options: UseFormBuilderOptions<T>\n): UseFormBuilderReturn<T> {\n const { builder } = options\n\n // Subscribe to form state\n const [state, setState] = useState(() => builder.getState())\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n useEffect(() => {\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n const memoizedReturn = useMemo(() => ({\n values: state.values,\n errors: state.errors,\n touched: state.touched,\n currentStep: state.currentStep,\n totalSteps: state.totalSteps,\n isSubmitting,\n isValid: Object.keys(state.errors).length === 0,\n\n setFieldValue: async (field: keyof T, value: any) => {\n builder.setFieldValue(field as string, value)\n },\n\n setFieldTouched: (field: keyof T, touched: boolean) => {\n builder.setFieldTouched(field as string, touched)\n },\n\n validate: async () => {\n return builder.validate()\n },\n\n submit: async () => {\n setIsSubmitting(true)\n try {\n const result = await builder.submit()\n setIsSubmitting(false)\n return result\n } catch (error) {\n setIsSubmitting(false)\n throw error\n }\n },\n\n reset: () => {\n builder.reset()\n },\n\n nextStep: () => {\n if (builder.nextStep) {\n builder.nextStep()\n }\n },\n\n prevStep: () => {\n if (builder.prevStep) {\n builder.prevStep()\n }\n },\n }), [builder, state, isSubmitting])\n\n return memoizedReturn\n}\n","import { FC, ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport type { IAuthProvider } from '@codella-software/utils';\nimport {\n LiveUpdateService,\n SSEService,\n WebsocketService,\n type EventMapping,\n type LiveUpdateType,\n} from '@codella-software/utils/live-updates';\n\nexport interface LiveUpdateContextValue {\n service: LiveUpdateService;\n isConnected: boolean;\n type: LiveUpdateType;\n canSend: boolean;\n}\n\nconst LiveUpdateContext = createContext<LiveUpdateContextValue | null>(null);\n\n/**\n * Hook to access the LiveUpdateContext\n * Must be used within a LiveUpdateProvider\n */\nexport const useLiveUpdateContext = () => {\n const context = useContext(LiveUpdateContext);\n if (!context) {\n throw new Error('useLiveUpdateContext must be used within LiveUpdateProvider');\n }\n return context;\n};\n\nexport interface LiveUpdateProviderProps {\n children: ReactNode;\n authProvider: IAuthProvider;\n sseUrl?: string;\n wsUrl?: string;\n sseEnabled?: boolean;\n wsEnabled?: boolean;\n eventMappings?: Record<string, EventMapping>;\n}\n\n/**\n * Provider component for live updates service\n * Manages service initialization and connection state\n * \n * @example\n * ```tsx\n * import { LiveUpdateProvider } from '@codella/react';\n * import { createFirebaseAuthProvider } from '@codella-software/utils';\n * \n * function App() {\n * const authProvider = createFirebaseAuthProvider({ auth: getAuth() });\n * \n * return (\n * <LiveUpdateProvider\n * authProvider={authProvider}\n * sseUrl=\"http://api.example.com/sse\"\n * wsUrl=\"ws://api.example.com/ws\"\n * eventMappings={{\n * 'notifications': { sseEvent: 'GET_NOTIFICATIONS' }\n * }}\n * >\n * <YourApp />\n * </LiveUpdateProvider>\n * );\n * }\n * ```\n */\nexport const LiveUpdateProvider: FC<LiveUpdateProviderProps> = ({\n children,\n authProvider,\n sseUrl = 'http://localhost:3000/sse',\n wsUrl = 'ws://localhost:3000/ws',\n sseEnabled = true,\n wsEnabled = true,\n eventMappings = {},\n}) => {\n const [isConnected, setIsConnected] = useState(false);\n const [service] = useState(() => {\n const sseService = new SSEService({\n url: sseUrl,\n authProvider,\n });\n\n const wsService = new WebsocketService({\n url: wsUrl,\n authProvider,\n });\n\n return new LiveUpdateService(wsService, sseService);\n });\n\n useEffect(() => {\n if (authProvider.isAuthenticated()) {\n service.initialize({\n sseEnabled,\n wsEnabled,\n authProvider,\n eventMappings,\n });\n } else {\n service.disconnect();\n }\n\n const subscription = service.isConnected$.subscribe(setIsConnected);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [authProvider, sseEnabled, wsEnabled, service, eventMappings]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n service.disconnect();\n };\n }, [service]);\n\n return (\n <LiveUpdateContext.Provider\n value={{\n service,\n isConnected,\n type: service.type,\n canSend: service.canSend,\n }}\n >\n {children}\n </LiveUpdateContext.Provider>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to listen for specific WebSocket actions\n * @param action - The WS_ACTIONS enum value to listen for\n * @param enabled - Whether to subscribe (defaults to true)\n * @returns The latest message payload or null\n */\nexport const useLiveListener = <T = unknown>(action: WS_ACTIONS, enabled = true) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const subscription = service.on(action).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service]);\n\n return { data, error };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook for request-response pattern over WebSocket\n * @param sendAction - The action to send\n * @param responseAction - The action to wait for\n * @returns Function to send request and promise for response\n */\nexport const useLiveRequest = <TReq = unknown, TRes = unknown>() => {\n const { service, canSend } = useLiveUpdateContext();\n\n const request = useCallback(\n (sendAction: WS_ACTIONS, responseAction: WS_ACTIONS, payload?: TReq) => {\n if (!canSend) {\n return Promise.reject(new Error('WebSocket not available for sending'));\n }\n\n return service\n .on(responseAction)\n .toPromise()\n .catch(() => {\n throw new Error(`No response received for action: ${responseAction}`);\n });\n },\n [canSend, service],\n );\n\n return { request, canSend };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\nexport interface UseUpdateListenerOptions {\n enabled?: boolean;\n}\n\n/**\n * Hook to listen for and handle live updates with callback\n * @param action - The WS_ACTIONS enum value to listen for\n * @param onUpdate - Callback when update is received\n * @param enabled - Whether to subscribe (defaults to true)\n */\nexport const useLiveUpdateListener = <T = unknown>(\n action: WS_ACTIONS,\n onUpdate: (data: T) => void,\n { enabled = true }: UseUpdateListenerOptions = {},\n) => {\n const { service } = useLiveUpdateContext();\n\n const handleUpdate = useCallback(\n (data: T) => {\n onUpdate(data);\n },\n [onUpdate],\n );\n\n // Subscribe to updates\n // The subscription is managed by the effect in the hook\n // Users need to call subscribe manually or use useLiveListener instead\n const subscribe = useCallback(() => {\n if (!enabled) {\n return () => {};\n }\n\n const subscription = service.on(action).subscribe(handleUpdate);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service, handleUpdate]);\n\n return { subscribe };\n};\n","import { useEffect, useState } from 'react';\n\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to subscribe to live update events\n * @param eventName - The event name (must be mapped in LiveUpdateProvider.eventMappings)\n * @returns The latest event data or null\n */\nexport const useLiveUpdates = <T = unknown>(eventName: string) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const subscription = service.on(eventName).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [eventName, service]);\n\n return { data, error };\n};\n","/**\n * React hook for RichContentService\n */\n\nimport {\n ContentEditableAdapter,\n DocumentNode,\n MarkType,\n RichContentConfig,\n RichContentService,\n RichContentState,\n Selection,\n} from '@codella-software/utils/rich-content';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\n/**\n * Hook options for useRichContent\n */\nexport interface UseRichContentOptions extends RichContentConfig {\n /** DOM element ref for contentEditable */\n editorRef?: React.RefObject<HTMLElement>;\n /** Custom adapter instance */\n adapter?: ContentEditableAdapter;\n}\n\n/**\n * Hook return value for useRichContent\n */\nexport interface UseRichContentReturn {\n /** Service instance */\n service: RichContentService;\n /** Current document content */\n content: DocumentNode;\n /** Full state object */\n state: RichContentState;\n /** Current editor focus state */\n isFocused: boolean;\n /** Can undo */\n canUndo: boolean;\n /** Can redo */\n canRedo: boolean;\n /** Active mark types */\n selectedFormats: Set<MarkType>;\n /** Current selection */\n selection: Selection | null;\n /** Is dirty (has unsaved changes) */\n isDirty: boolean;\n\n // Commands\n /** Insert text */\n insertText: (text: string) => void;\n /** Insert paragraph */\n insertParagraph: () => void;\n /** Insert heading */\n insertHeading: (level: 1 | 2 | 3 | 4 | 5 | 6) => void;\n /** Insert image */\n insertImage: (url: string) => void;\n /** Upload image file */\n uploadImage: (file: File) => Promise<void>;\n /** Insert mention */\n insertMention: (id: string, label: string) => void;\n /** Insert list */\n insertList: (type: 'ordered' | 'unordered') => void;\n /** Toggle mark */\n toggleMark: (mark: MarkType) => void;\n /** Delete content */\n deleteContent: () => void;\n /** Undo */\n undo: () => void;\n /** Redo */\n redo: () => void;\n /** Clear history */\n clearHistory: () => void;\n /** Focus editor */\n focus: () => void;\n /** Set focus state */\n setFocus: (focused: boolean) => void;\n /** Get plain text */\n getPlainText: () => string;\n /** Set selection */\n setSelection: (selection: Selection | null) => void;\n}\n\n/**\n * React hook that wraps RichContentService and manages state subscriptions\n */\nexport function useRichContent(options: UseRichContentOptions = {}): UseRichContentReturn {\n // Create service instance\n const service = useMemo(() => RichContentService.create(options), []);\n\n // State from service\n const [content, setContent] = useState<DocumentNode>(service.getContent());\n const [state, setState] = useState<RichContentState>(service.getState());\n const [isFocused, setIsFocused] = useState(false);\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n const [selectedFormats, setSelectedFormats] = useState<Set<MarkType>>(new Set());\n\n // Subscriptions\n useEffect(() => {\n const contentSub = service.getContent$().subscribe(setContent);\n const stateSub = service.getState$().subscribe((newState) => {\n setState(newState);\n setIsFocused(newState.isFocused);\n setCanUndo(newState.canUndo);\n setCanRedo(newState.canRedo);\n setSelectedFormats(newState.selectedFormats || new Set());\n });\n\n return () => {\n contentSub.unsubscribe();\n stateSub.unsubscribe();\n };\n }, [service]);\n\n // Attach adapter if provided\n useEffect(() => {\n if (options.adapter) {\n service.attachAdapter(options.adapter);\n return () => service.detachAdapter();\n }\n }, [options.adapter, service]);\n\n // Setup default adapter if editorRef provided\n const defaultAdapterRef = useRef<ContentEditableAdapter | null>(null);\n\n useEffect(() => {\n if (options.editorRef?.current && !options.adapter && !defaultAdapterRef.current) {\n const { DefaultContentEditableAdapter } = require('@codella-software/utils/rich-content');\n const adapter = new DefaultContentEditableAdapter();\n adapter.mount(options.editorRef.current);\n service.attachAdapter(adapter);\n defaultAdapterRef.current = adapter;\n\n return () => {\n adapter.unmount();\n service.detachAdapter();\n defaultAdapterRef.current = null;\n };\n }\n }, [options.editorRef, options.adapter, service]);\n\n // Command callbacks\n const insertText = useCallback((text: string) => service.insertText(text), [service]);\n const insertParagraph = useCallback(() => service.insertParagraph(), [service]);\n const insertHeading = useCallback((level: any) => service.insertHeading(level), [service]);\n const insertImage = useCallback((url: string) => service.insertImage(url), [service]);\n const uploadImage = useCallback((file: File) => service.uploadImage(file), [service]);\n const insertMention = useCallback((id: string, label: string) => service.insertMention(id, label), [service]);\n const insertList = useCallback((type: 'ordered' | 'unordered') => service.insertList(type), [service]);\n const toggleMark = useCallback((mark: MarkType) => service.toggleMark(mark), [service]);\n const deleteContent = useCallback(() => service.deleteContent(), [service]);\n const undo = useCallback(() => service.undo(), [service]);\n const redo = useCallback(() => service.redo(), [service]);\n const clearHistory = useCallback(() => service.clearHistory(), [service]);\n const focus = useCallback(() => service.getAdapter()?.focus(), [service]);\n const setFocus = useCallback((focused: boolean) => service.setFocus(focused), [service]);\n const getPlainText = useCallback(() => service.getPlainText(), [service]);\n const setSelection = useCallback((sel: Selection | null) => service.setSelection(sel), [service]);\n\n return {\n service,\n content,\n state,\n isFocused,\n canUndo,\n canRedo,\n selectedFormats,\n selection: state.selection || null,\n isDirty: state.isDirty,\n\n insertText,\n insertParagraph,\n insertHeading,\n insertImage,\n uploadImage,\n insertMention,\n insertList,\n toggleMark,\n deleteContent,\n undo,\n redo,\n clearHistory,\n focus,\n setFocus,\n getPlainText,\n setSelection,\n };\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { TableBuilder, type TableBuilderConfig } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useTableService\n */\nexport interface UseTableServiceOptions<T extends Record<string, any>> {\n /** TableBuilder configuration */\n config: TableBuilderConfig<T>\n\n /** Table data */\n data: T[]\n}\n\n/**\n * Hook return value for useTableService\n */\nexport interface UseTableServiceReturn<T extends Record<string, any>> {\n /** Filtered and paginated data rows */\n rows: T[]\n /** Selected row IDs */\n selectedRows: string[]\n /** All rows selected flag */\n allSelected: boolean\n /** Current page */\n currentPage: number\n /** Page size */\n pageSize: number\n /** Total pages */\n totalPages: number\n /** Total item count */\n totalItems: number\n /** Has next page */\n hasNextPage: boolean\n /** Has previous page */\n hasPrevPage: boolean\n /** Sort field */\n sortBy: string | null\n /** Sort direction */\n sortDirection: 'asc' | 'desc' | null\n /** Active filters */\n filters: Record<string, any>\n /** Toggle row selection */\n toggleRowSelection: (rowId: string) => void\n /** Toggle all rows selection */\n toggleAllSelection: () => void\n /** Clear selection */\n clearSelection: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort */\n toggleSort: (field: string) => void\n /** Set filter */\n setFilter: (field: string, value: any) => void\n /** Clear filter */\n clearFilter: (field: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Next page */\n nextPage: () => void\n /** Previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps TableBuilder for table state management\n *\n * @param options - Hook options including config and data\n * @returns Table state and control methods\n *\n * @example\n * ```tsx\n * const config: TableBuilderConfig<User> = {\n * columns: [\n * { field: 'name', header: 'Name', sortable: true }\n * ]\n * };\n *\n * function MyTable({ data }: { data: User[] }) {\n * const table = useTableService({ config, data });\n * return (\n * <table>\n * <tbody>\n * {table.rows.map(row => (\n * <tr key={row.id}><td>{row.name}</td></tr>\n * ))}\n * </tbody>\n * </table>\n * );\n * }\n * ```\n */\nexport function useTableService<T extends Record<string, any>>(\n options: UseTableServiceOptions<T>\n): UseTableServiceReturn<T> {\n const { config, data } = options\n\n // Create instance of TableBuilder\n const builder = useMemo(() => {\n const tb = new TableBuilder<T>(config)\n tb.setData(data)\n return tb\n }, [config])\n\n // Track state\n const [state, setState] = useState(() => builder.getState())\n const [selectedRows, setSelectedRows] = useState<string[]>([])\n const [allSelected, setAllSelected] = useState(false)\n\n // Subscribe to changes\n useEffect(() => {\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n // Update data\n useEffect(() => {\n builder.setData(data)\n }, [builder, data])\n\n const memoizedMethods = useMemo(() => ({\n toggleRowSelection: (rowId: string) => {\n setSelectedRows(prev => \n prev.includes(rowId)\n ? prev.filter(id => id !== rowId)\n : [...prev, rowId]\n )\n },\n\n toggleAllSelection: () => {\n if (allSelected) {\n setSelectedRows([])\n setAllSelected(false)\n } else {\n setSelectedRows(state.rows.map((row: any) => (row as any).id || String(row)))\n setAllSelected(true)\n }\n },\n\n clearSelection: () => {\n setSelectedRows([])\n setAllSelected(false)\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n builder.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n builder.toggleSort(field)\n },\n\n setFilter: (field: string, value: any) => {\n builder.setFilter(field, value)\n },\n\n clearFilter: (field: string) => {\n builder.clearFilter(field)\n },\n\n clearAllFilters: () => {\n builder.clearAllFilters()\n },\n\n setPage: (page: number) => {\n builder.setPage(page)\n },\n\n setPageSize: (size: number) => {\n builder.setPageSize(size)\n },\n\n nextPage: () => {\n builder.nextPage()\n },\n\n prevPage: () => {\n builder.prevPage()\n },\n }), [builder, allSelected, state.rows])\n\n const memoizedReturn = useMemo(() => ({\n rows: state.rows,\n selectedRows,\n allSelected,\n currentPage: state.currentPage,\n pageSize: state.pageSize,\n totalPages: state.totalPages,\n totalItems: state.totalItems,\n hasNextPage: state.hasNextPage,\n hasPrevPage: state.hasPrevPage,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n filters: state.filters,\n ...memoizedMethods,\n }), [state, selectedRows, allSelected, memoizedMethods])\n\n return memoizedReturn\n}\n","import type { TabChangeEvent, TabsConfig } from '@codella-software/utils/tabs';\nimport { TabsService } from '@codella-software/utils/tabs';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\ninterface TabsContextValue {\n service: TabsService;\n activeTabId: string;\n tabs: ReturnType<TabsService['getTabs']>;\n}\n\nconst TabsContext = createContext<TabsContextValue | undefined>(undefined);\n\n/**\n * Props for TabsProvider\n */\nexport interface TabsProviderProps {\n config: TabsConfig;\n children: React.ReactNode;\n}\n\n/**\n * Tabs provider for React\n */\nexport function TabsProvider({ config, children }: TabsProviderProps) {\n const [service] = useState(() => new TabsService(config));\n const [activeTabId, setActiveTabId] = useState(() => service.getActiveTabId());\n const [tabs, setTabs] = useState(() => service.getTabs());\n\n useEffect(() => {\n const activeTabSubscription = service.getActiveTabId$().subscribe(setActiveTabId);\n const tabsSubscription = service.getTabs$().subscribe(setTabs);\n\n return () => {\n activeTabSubscription.unsubscribe();\n tabsSubscription.unsubscribe();\n };\n }, [service]);\n\n useEffect(() => {\n return () => {\n service.destroy();\n };\n }, [service]);\n\n return (\n <TabsContext.Provider value={{ service, activeTabId, tabs }}>\n {children}\n </TabsContext.Provider>\n );\n}\n\n/**\n * Hook to access tabs service from context\n */\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('useTabsContext must be used within a TabsProvider');\n }\n return context;\n}\n\n/**\n * Hook to use tabs service directly\n */\nexport function useTabsService() {\n const { service } = useTabsContext();\n return service;\n}\n\n/**\n * Hook to get active tab\n */\nexport function useActiveTab() {\n const { service } = useTabsContext();\n const [activeTab, setActiveTab] = useState(() => service.getActiveTab());\n\n useEffect(() => {\n const subscription = service.getActiveTab$().subscribe(setActiveTab);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return activeTab;\n}\n\n/**\n * Hook to get all tabs\n */\nexport function useTabs() {\n const { tabs } = useTabsContext();\n return tabs;\n}\n\n/**\n * Hook to listen to tab changes\n */\nexport function useTabChange() {\n const { service } = useTabsContext();\n const [changeEvent, setChangeEvent] = useState<TabChangeEvent | null>(null);\n\n useEffect(() => {\n const subscription = service.onTabChange$().subscribe(setChangeEvent);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return changeEvent;\n}\n\n/**\n * Hook to set active tab\n */\nexport function useSetActiveTab() {\n const { service } = useTabsContext();\n return {\n setActiveTab: (tabId: string) => service.setActiveTab(tabId),\n setActiveTabByIndex: (index: number) => service.setActiveTabByIndex(index),\n nextTab: () => service.nextTab(),\n previousTab: () => service.previousTab(),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/filters-and-sort/useFiltersAndSort.ts","../src/form-builder/useFormBuilder.ts","../src/live-updates/LiveUpdateProvider.tsx","../src/live-updates/useLiveListener.ts","../src/live-updates/useLiveRequest.ts","../src/live-updates/useLiveUpdateListener.ts","../src/live-updates/useLiveUpdates.ts","../src/rich-content/useRichContent.ts","../src/table-builder/useTableService.ts","../src/tabs/useTabsHooks.tsx"],"sourcesContent":["// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FiltersAndSortService, type FilterAndSortState } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFiltersAndSort\n */\nexport interface UseFiltersAndSortOptions {\n /** FiltersAndSortService instance */\n service: FiltersAndSortService\n}\n\n/**\n * Hook return value for useFiltersAndSort\n */\nexport interface UseFiltersAndSortReturn {\n /** Current filter state */\n filters: Record<string, any>\n /** Current sort field */\n sortBy: string | null\n /** Current sort direction */\n sortDirection: 'asc' | 'desc'\n /** Current page */\n page: number\n /** Page size */\n pageSize: number\n /** Set filter */\n setFilter: (key: string, value: any) => void\n /** Clear specific filter */\n clearFilter: (key: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort direction for field */\n toggleSort: (field: string) => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Go to next page */\n nextPage: () => void\n /** Go to previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps FiltersAndSortService\n *\n * @param options - Hook options including FiltersAndSortService instance\n * @returns Filters and sort state with control methods\n *\n * @example\n * ```tsx\n * const service = new FiltersAndSortService({ storageKey: 'my-filters' });\n *\n * function MyTable() {\n * const filters = useFiltersAndSort({ service });\n * return (\n * <div>\n * <input\n * value={filters.filters.name || ''}\n * onChange={(e) => filters.setFilter('name', e.target.value)}\n * />\n * <button onClick={() => filters.clearAllFilters()}>Clear</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFiltersAndSort(\n options: UseFiltersAndSortOptions\n): UseFiltersAndSortReturn {\n const { service } = options\n\n if (!service) {\n throw new Error('useFiltersAndSort: service is required')\n }\n\n const [state, setState] = useState<FilterAndSortState>(() => {\n return service.getState()\n })\n\n useEffect(() => {\n if (!service || !service.state$) {\n return\n }\n\n const subscription = service.state$.subscribe((newState: FilterAndSortState) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [service])\n\n const callbacks = useMemo(() => ({\n setFilter: (key: string, value: any) => {\n service.setFilter(key, value)\n },\n\n clearFilter: (key: string) => {\n service.clearFilter(key)\n },\n\n clearAllFilters: () => {\n service.clearAllFilters()\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n service.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n service.toggleSort(field)\n },\n\n setPage: (page: number) => {\n service.setPage(page)\n },\n\n setPageSize: (size: number) => {\n service.setPageSize(size)\n },\n\n nextPage: () => {\n service.nextPage()\n },\n\n prevPage: () => {\n service.prevPage()\n },\n }), [service])\n\n const memoizedReturn = useMemo(() => ({\n filters: state.filters,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n page: state.page,\n pageSize: state.pageSize,\n ...callbacks,\n }), [state, callbacks])\n\n return memoizedReturn\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FormBuilder } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useFormBuilder\n */\nexport interface UseFormBuilderOptions<T extends Record<string, any>> {\n /** FormBuilder instance */\n builder: FormBuilder<T>\n}\n\n/**\n * Hook return value for useFormBuilder\n */\nexport interface UseFormBuilderReturn<T extends Record<string, any>> {\n /** Current form values */\n values: T\n /** Form validation errors */\n errors: Record<string, string | undefined>\n /** Form touched fields */\n touched: Record<string, boolean>\n /** Current form step (for multi-step forms) */\n currentStep: number\n /** Total form steps */\n totalSteps: number\n /** Is form currently submitting */\n isSubmitting: boolean\n /** Is form valid */\n isValid: boolean\n /** Set field value */\n setFieldValue: (field: keyof T, value: any) => Promise<void>\n /** Set field touched */\n setFieldTouched: (field: keyof T, touched: boolean) => void\n /** Validate entire form */\n validate: () => Promise<Record<string, string | undefined>>\n /** Submit form */\n submit: () => Promise<T | null>\n /** Reset form to initial values */\n reset: () => void\n /** Go to next step */\n nextStep: () => void\n /** Go to previous step */\n prevStep: () => void\n}\n\n/**\n * React hook that wraps FormBuilder and provides form state management\n *\n * @param options - Hook options including FormBuilder instance\n * @returns Form state and methods\n *\n * @example\n * ```tsx\n * const builder = new FormBuilder<{ name: string }>()\n * .addField({ name: 'name', type: 'text', label: 'Name' })\n * .build();\n *\n * function MyForm() {\n * const form = useFormBuilder({ builder });\n * return (\n * <form onSubmit={(e) => { e.preventDefault(); form.submit(); }}>\n * <input\n * value={form.values.name}\n * onChange={(e) => form.setFieldValue('name', e.target.value)}\n * />\n * {form.errors.name && <span>{form.errors.name}</span>}\n * <button type=\"submit\">Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nexport function useFormBuilder<T extends Record<string, any>>(\n options: UseFormBuilderOptions<T>\n): UseFormBuilderReturn<T> {\n const { builder } = options\n\n if (!builder) {\n throw new Error('useFormBuilder: builder is required')\n }\n\n // Subscribe to form state\n const [state, setState] = useState(() => builder.getState())\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n useEffect(() => {\n if (!builder || !builder.stateChanged$) {\n return\n }\n\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n const memoizedReturn = useMemo(() => ({\n values: state.values,\n errors: state.errors,\n touched: state.touched,\n currentStep: state.currentStep,\n totalSteps: state.totalSteps,\n isSubmitting,\n isValid: Object.keys(state.errors).length === 0,\n\n setFieldValue: async (field: keyof T, value: any) => {\n builder.setFieldValue(field as string, value)\n },\n\n setFieldTouched: (field: keyof T, touched: boolean) => {\n builder.setFieldTouched(field as string, touched)\n },\n\n validate: async () => {\n return builder.validate()\n },\n\n submit: async () => {\n setIsSubmitting(true)\n try {\n const result = await builder.submit()\n setIsSubmitting(false)\n return result\n } catch (error) {\n setIsSubmitting(false)\n throw error\n }\n },\n\n reset: () => {\n builder.reset()\n },\n\n nextStep: () => {\n if (builder.nextStep) {\n builder.nextStep()\n }\n },\n\n prevStep: () => {\n if (builder.prevStep) {\n builder.prevStep()\n }\n },\n }), [builder, state, isSubmitting])\n\n return memoizedReturn\n}\n","import { FC, ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport type { IAuthProvider } from '@codella-software/utils';\nimport {\n LiveUpdateService,\n SSEService,\n WebsocketService,\n type EventMapping,\n type LiveUpdateType,\n} from '@codella-software/utils/live-updates';\n\nexport interface LiveUpdateContextValue {\n service: LiveUpdateService;\n isConnected: boolean;\n type: LiveUpdateType;\n canSend: boolean;\n}\n\nconst LiveUpdateContext = createContext<LiveUpdateContextValue | null>(null);\n\n/**\n * Hook to access the LiveUpdateContext\n * Must be used within a LiveUpdateProvider\n */\nexport const useLiveUpdateContext = () => {\n const context = useContext(LiveUpdateContext);\n if (!context) {\n throw new Error('useLiveUpdateContext must be used within LiveUpdateProvider');\n }\n return context;\n};\n\nexport interface LiveUpdateProviderProps {\n children: ReactNode;\n authProvider: IAuthProvider;\n sseUrl?: string;\n wsUrl?: string;\n sseEnabled?: boolean;\n wsEnabled?: boolean;\n eventMappings?: Record<string, EventMapping>;\n}\n\n/**\n * Provider component for live updates service\n * Manages service initialization and connection state\n * \n * @example\n * ```tsx\n * import { LiveUpdateProvider } from '@codella/react';\n * import { createFirebaseAuthProvider } from '@codella-software/utils';\n * \n * function App() {\n * const authProvider = createFirebaseAuthProvider({ auth: getAuth() });\n * \n * return (\n * <LiveUpdateProvider\n * authProvider={authProvider}\n * sseUrl=\"http://api.example.com/sse\"\n * wsUrl=\"ws://api.example.com/ws\"\n * eventMappings={{\n * 'notifications': { sseEvent: 'GET_NOTIFICATIONS' }\n * }}\n * >\n * <YourApp />\n * </LiveUpdateProvider>\n * );\n * }\n * ```\n */\nexport const LiveUpdateProvider: FC<LiveUpdateProviderProps> = ({\n children,\n authProvider,\n sseUrl = 'http://localhost:3000/sse',\n wsUrl = 'ws://localhost:3000/ws',\n sseEnabled = true,\n wsEnabled = true,\n eventMappings = {},\n}) => {\n const [isConnected, setIsConnected] = useState(false);\n const [service] = useState(() => {\n const sseService = new SSEService({\n url: sseUrl,\n authProvider,\n });\n\n const wsService = new WebsocketService({\n url: wsUrl,\n authProvider,\n });\n\n return new LiveUpdateService(wsService, sseService);\n });\n\n useEffect(() => {\n if (authProvider.isAuthenticated()) {\n service.initialize({\n sseEnabled,\n wsEnabled,\n authProvider,\n eventMappings,\n });\n } else {\n service.disconnect();\n }\n\n const subscription = service.isConnected$.subscribe(setIsConnected);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [authProvider, sseEnabled, wsEnabled, service, eventMappings]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n service.disconnect();\n };\n }, [service]);\n\n return (\n <LiveUpdateContext.Provider\n value={{\n service,\n isConnected,\n type: service.type,\n canSend: service.canSend,\n }}\n >\n {children}\n </LiveUpdateContext.Provider>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to listen for specific WebSocket actions\n * @param action - The WS_ACTIONS enum value to listen for\n * @param enabled - Whether to subscribe (defaults to true)\n * @returns The latest message payload or null\n */\nexport const useLiveListener = <T = unknown>(action: WS_ACTIONS, enabled = true) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!enabled || !service) {\n return;\n }\n\n const subscription = service.on(action).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service]);\n\n return { data, error };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook for request-response pattern over WebSocket\n * @param sendAction - The action to send\n * @param responseAction - The action to wait for\n * @returns Function to send request and promise for response\n */\nexport const useLiveRequest = <TReq = unknown, TRes = unknown>() => {\n const { service, canSend } = useLiveUpdateContext();\n\n const request = useCallback(\n (sendAction: WS_ACTIONS, responseAction: WS_ACTIONS, payload?: TReq) => {\n if (!canSend) {\n return Promise.reject(new Error('WebSocket not available for sending'));\n }\n\n return service\n .on(responseAction)\n .toPromise()\n .catch(() => {\n throw new Error(`No response received for action: ${responseAction}`);\n });\n },\n [canSend, service],\n );\n\n return { request, canSend };\n};\n","import { useCallback } from 'react';\n\nimport type { WS_ACTIONS } from '@codella-software/utils/live-updates';\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\nexport interface UseUpdateListenerOptions {\n enabled?: boolean;\n}\n\n/**\n * Hook to listen for and handle live updates with callback\n * @param action - The WS_ACTIONS enum value to listen for\n * @param onUpdate - Callback when update is received\n * @param enabled - Whether to subscribe (defaults to true)\n */\nexport const useLiveUpdateListener = <T = unknown>(\n action: WS_ACTIONS,\n onUpdate: (data: T) => void,\n { enabled = true }: UseUpdateListenerOptions = {},\n) => {\n const { service } = useLiveUpdateContext();\n\n const handleUpdate = useCallback(\n (data: T) => {\n onUpdate(data);\n },\n [onUpdate],\n );\n\n // Subscribe to updates\n // The subscription is managed by the effect in the hook\n // Users need to call subscribe manually or use useLiveListener instead\n const subscribe = useCallback(() => {\n if (!enabled || !service) {\n return () => {};\n }\n\n const subscription = service.on(action).subscribe(handleUpdate);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [action, enabled, service, handleUpdate]);\n\n return { subscribe };\n};\n","import { useEffect, useState } from 'react';\n\nimport { useLiveUpdateContext } from './LiveUpdateProvider';\n\n/**\n * Hook to subscribe to live update events\n * @param eventName - The event name (must be mapped in LiveUpdateProvider.eventMappings)\n * @returns The latest event data or null\n */\nexport const useLiveUpdates = <T = unknown>(eventName: string) => {\n const { service } = useLiveUpdateContext();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!service) {\n return;\n }\n\n const subscription = service.on(eventName).subscribe({\n next: (value) => {\n setData(value);\n setError(null);\n },\n error: (err) => {\n setError(err instanceof Error ? err : new Error(String(err)));\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [eventName, service]);\n\n return { data, error };\n};\n","/**\n * React hook for RichContentService\n */\n\nimport {\n ContentEditableAdapter,\n DocumentNode,\n MarkType,\n RichContentConfig,\n RichContentService,\n RichContentState,\n Selection,\n} from '@codella-software/utils/rich-content';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\n/**\n * Hook options for useRichContent\n */\nexport interface UseRichContentOptions extends RichContentConfig {\n /** DOM element ref for contentEditable */\n editorRef?: React.RefObject<HTMLElement>;\n /** Custom adapter instance */\n adapter?: ContentEditableAdapter;\n}\n\n/**\n * Hook return value for useRichContent\n */\nexport interface UseRichContentReturn {\n /** Service instance */\n service: RichContentService;\n /** Current document content */\n content: DocumentNode;\n /** Full state object */\n state: RichContentState;\n /** Current editor focus state */\n isFocused: boolean;\n /** Can undo */\n canUndo: boolean;\n /** Can redo */\n canRedo: boolean;\n /** Active mark types */\n selectedFormats: Set<MarkType>;\n /** Current selection */\n selection: Selection | null;\n /** Is dirty (has unsaved changes) */\n isDirty: boolean;\n\n // Commands\n /** Insert text */\n insertText: (text: string) => void;\n /** Insert paragraph */\n insertParagraph: () => void;\n /** Insert heading */\n insertHeading: (level: 1 | 2 | 3 | 4 | 5 | 6) => void;\n /** Insert image */\n insertImage: (url: string) => void;\n /** Upload image file */\n uploadImage: (file: File) => Promise<void>;\n /** Insert mention */\n insertMention: (id: string, label: string) => void;\n /** Insert list */\n insertList: (type: 'ordered' | 'unordered') => void;\n /** Toggle mark */\n toggleMark: (mark: MarkType) => void;\n /** Delete content */\n deleteContent: () => void;\n /** Undo */\n undo: () => void;\n /** Redo */\n redo: () => void;\n /** Clear history */\n clearHistory: () => void;\n /** Focus editor */\n focus: () => void;\n /** Set focus state */\n setFocus: (focused: boolean) => void;\n /** Get plain text */\n getPlainText: () => string;\n /** Set selection */\n setSelection: (selection: Selection | null) => void;\n}\n\n/**\n * React hook that wraps RichContentService and manages state subscriptions\n */\nexport function useRichContent(options: UseRichContentOptions = {}): UseRichContentReturn {\n // Create service instance\n const service = useMemo(() => RichContentService.create(options), []);\n\n // State from service\n const [content, setContent] = useState<DocumentNode>(service.getContent());\n const [state, setState] = useState<RichContentState>(service.getState());\n const [isFocused, setIsFocused] = useState(false);\n const [canUndo, setCanUndo] = useState(false);\n const [canRedo, setCanRedo] = useState(false);\n const [selectedFormats, setSelectedFormats] = useState<Set<MarkType>>(new Set());\n\n // Subscriptions\n useEffect(() => {\n if (!service) {\n return\n }\n\n const contentSub = service.getContent$().subscribe(setContent);\n const stateSub = service.getState$().subscribe((newState) => {\n setState(newState);\n setIsFocused(newState.isFocused);\n setCanUndo(newState.canUndo);\n setCanRedo(newState.canRedo);\n setSelectedFormats(newState.selectedFormats || new Set());\n });\n\n return () => {\n contentSub.unsubscribe();\n stateSub.unsubscribe();\n };\n }, [service]);\n\n // Attach adapter if provided\n useEffect(() => {\n if (options.adapter) {\n service.attachAdapter(options.adapter);\n return () => service.detachAdapter();\n }\n }, [options.adapter, service]);\n\n // Setup default adapter if editorRef provided\n const defaultAdapterRef = useRef<ContentEditableAdapter | null>(null);\n\n useEffect(() => {\n if (options.editorRef?.current && !options.adapter && !defaultAdapterRef.current) {\n const { DefaultContentEditableAdapter } = require('@codella-software/utils/rich-content');\n const adapter = new DefaultContentEditableAdapter();\n adapter.mount(options.editorRef.current);\n service.attachAdapter(adapter);\n defaultAdapterRef.current = adapter;\n\n return () => {\n adapter.unmount();\n service.detachAdapter();\n defaultAdapterRef.current = null;\n };\n }\n }, [options.editorRef, options.adapter, service]);\n\n // Command callbacks\n const insertText = useCallback((text: string) => service.insertText(text), [service]);\n const insertParagraph = useCallback(() => service.insertParagraph(), [service]);\n const insertHeading = useCallback((level: any) => service.insertHeading(level), [service]);\n const insertImage = useCallback((url: string) => service.insertImage(url), [service]);\n const uploadImage = useCallback((file: File) => service.uploadImage(file), [service]);\n const insertMention = useCallback((id: string, label: string) => service.insertMention(id, label), [service]);\n const insertList = useCallback((type: 'ordered' | 'unordered') => service.insertList(type), [service]);\n const toggleMark = useCallback((mark: MarkType) => service.toggleMark(mark), [service]);\n const deleteContent = useCallback(() => service.deleteContent(), [service]);\n const undo = useCallback(() => service.undo(), [service]);\n const redo = useCallback(() => service.redo(), [service]);\n const clearHistory = useCallback(() => service.clearHistory(), [service]);\n const focus = useCallback(() => service.getAdapter()?.focus(), [service]);\n const setFocus = useCallback((focused: boolean) => service.setFocus(focused), [service]);\n const getPlainText = useCallback(() => service.getPlainText(), [service]);\n const setSelection = useCallback((sel: Selection | null) => service.setSelection(sel), [service]);\n\n return {\n service,\n content,\n state,\n isFocused,\n canUndo,\n canRedo,\n selectedFormats,\n selection: state.selection || null,\n isDirty: state.isDirty,\n\n insertText,\n insertParagraph,\n insertHeading,\n insertImage,\n uploadImage,\n insertMention,\n insertList,\n toggleMark,\n deleteContent,\n undo,\n redo,\n clearHistory,\n focus,\n setFocus,\n getPlainText,\n setSelection,\n };\n}\n","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { TableBuilder, type TableBuilderConfig } from '@codella-software/utils'\nimport { useEffect, useMemo, useState } from 'react'\n\n/**\n * Hook options for useTableService\n */\nexport interface UseTableServiceOptions<T extends Record<string, any>> {\n /** TableBuilder configuration */\n config: TableBuilderConfig<T>\n\n /** Table data */\n data: T[]\n}\n\n/**\n * Hook return value for useTableService\n */\nexport interface UseTableServiceReturn<T extends Record<string, any>> {\n /** Filtered and paginated data rows */\n rows: T[]\n /** Selected row IDs */\n selectedRows: string[]\n /** All rows selected flag */\n allSelected: boolean\n /** Current page */\n currentPage: number\n /** Page size */\n pageSize: number\n /** Total pages */\n totalPages: number\n /** Total item count */\n totalItems: number\n /** Has next page */\n hasNextPage: boolean\n /** Has previous page */\n hasPrevPage: boolean\n /** Sort field */\n sortBy: string | null\n /** Sort direction */\n sortDirection: 'asc' | 'desc' | null\n /** Active filters */\n filters: Record<string, any>\n /** Toggle row selection */\n toggleRowSelection: (rowId: string) => void\n /** Toggle all rows selection */\n toggleAllSelection: () => void\n /** Clear selection */\n clearSelection: () => void\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void\n /** Toggle sort */\n toggleSort: (field: string) => void\n /** Set filter */\n setFilter: (field: string, value: any) => void\n /** Clear filter */\n clearFilter: (field: string) => void\n /** Clear all filters */\n clearAllFilters: () => void\n /** Set page */\n setPage: (page: number) => void\n /** Set page size */\n setPageSize: (size: number) => void\n /** Next page */\n nextPage: () => void\n /** Previous page */\n prevPage: () => void\n}\n\n/**\n * React hook that wraps TableBuilder for table state management\n *\n * @param options - Hook options including config and data\n * @returns Table state and control methods\n *\n * @example\n * ```tsx\n * const config: TableBuilderConfig<User> = {\n * columns: [\n * { field: 'name', header: 'Name', sortable: true }\n * ]\n * };\n *\n * function MyTable({ data }: { data: User[] }) {\n * const table = useTableService({ config, data });\n * return (\n * <table>\n * <tbody>\n * {table.rows.map(row => (\n * <tr key={row.id}><td>{row.name}</td></tr>\n * ))}\n * </tbody>\n * </table>\n * );\n * }\n * ```\n */\nexport function useTableService<T extends Record<string, any>>(\n options: UseTableServiceOptions<T>\n): UseTableServiceReturn<T> {\n const { config, data } = options\n\n // Create instance of TableBuilder\n const builder = useMemo(() => {\n const tb = new TableBuilder<T>(config)\n tb.setData(data)\n return tb\n }, [config])\n\n // Track state\n const [state, setState] = useState(() => builder.getState())\n const [selectedRows, setSelectedRows] = useState<string[]>([])\n const [allSelected, setAllSelected] = useState(false)\n\n // Subscribe to changes\n useEffect(() => {\n if (!builder || !builder.stateChanged$) {\n return\n }\n\n const subscription = builder.stateChanged$.subscribe((newState: any) => {\n setState(newState)\n })\n\n return () => subscription.unsubscribe()\n }, [builder])\n\n // Update data\n useEffect(() => {\n builder.setData(data)\n }, [builder, data])\n\n const memoizedMethods = useMemo(() => ({\n toggleRowSelection: (rowId: string) => {\n setSelectedRows(prev => \n prev.includes(rowId)\n ? prev.filter(id => id !== rowId)\n : [...prev, rowId]\n )\n },\n\n toggleAllSelection: () => {\n if (allSelected) {\n setSelectedRows([])\n setAllSelected(false)\n } else {\n setSelectedRows(state.rows.map((row: any) => (row as any).id || String(row)))\n setAllSelected(true)\n }\n },\n\n clearSelection: () => {\n setSelectedRows([])\n setAllSelected(false)\n },\n\n setSort: (field: string, direction: 'asc' | 'desc') => {\n builder.setSort(field, direction)\n },\n\n toggleSort: (field: string) => {\n builder.toggleSort(field)\n },\n\n setFilter: (field: string, value: any) => {\n builder.setFilter(field, value)\n },\n\n clearFilter: (field: string) => {\n builder.clearFilter(field)\n },\n\n clearAllFilters: () => {\n builder.clearAllFilters()\n },\n\n setPage: (page: number) => {\n builder.setPage(page)\n },\n\n setPageSize: (size: number) => {\n builder.setPageSize(size)\n },\n\n nextPage: () => {\n builder.nextPage()\n },\n\n prevPage: () => {\n builder.prevPage()\n },\n }), [builder, allSelected, state.rows])\n\n const memoizedReturn = useMemo(() => ({\n rows: state.rows,\n selectedRows,\n allSelected,\n currentPage: state.currentPage,\n pageSize: state.pageSize,\n totalPages: state.totalPages,\n totalItems: state.totalItems,\n hasNextPage: state.hasNextPage,\n hasPrevPage: state.hasPrevPage,\n sortBy: state.sortBy,\n sortDirection: state.sortDirection,\n filters: state.filters,\n ...memoizedMethods,\n }), [state, selectedRows, allSelected, memoizedMethods])\n\n return memoizedReturn\n}\n","import type { TabChangeEvent, TabsConfig } from '@codella-software/utils/tabs';\nimport { TabsService } from '@codella-software/utils/tabs';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\ninterface TabsContextValue {\n service: TabsService;\n activeTabId: string;\n tabs: ReturnType<TabsService['getTabs']>;\n}\n\nconst TabsContext = createContext<TabsContextValue | undefined>(undefined);\n\n/**\n * Props for TabsProvider\n */\nexport interface TabsProviderProps {\n config: TabsConfig;\n children: React.ReactNode;\n}\n\n/**\n * Tabs provider for React\n */\nexport function TabsProvider({ config, children }: TabsProviderProps) {\n const [service] = useState(() => new TabsService(config));\n const [activeTabId, setActiveTabId] = useState(() => service.getActiveTabId());\n const [tabs, setTabs] = useState(() => service.getTabs());\n\n useEffect(() => {\n const activeTabSubscription = service.getActiveTabId$().subscribe(setActiveTabId);\n const tabsSubscription = service.getTabs$().subscribe(setTabs);\n\n return () => {\n activeTabSubscription.unsubscribe();\n tabsSubscription.unsubscribe();\n };\n }, [service]);\n\n useEffect(() => {\n return () => {\n service.destroy();\n };\n }, [service]);\n\n return (\n <TabsContext.Provider value={{ service, activeTabId, tabs }}>\n {children}\n </TabsContext.Provider>\n );\n}\n\n/**\n * Hook to access tabs service from context\n */\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('useTabsContext must be used within a TabsProvider');\n }\n return context;\n}\n\n/**\n * Hook to use tabs service directly\n */\nexport function useTabsService() {\n const { service } = useTabsContext();\n return service;\n}\n\n/**\n * Hook to get active tab\n */\nexport function useActiveTab() {\n const { service } = useTabsContext();\n const [activeTab, setActiveTab] = useState(() => service.getActiveTab());\n\n useEffect(() => {\n const subscription = service.getActiveTab$().subscribe(setActiveTab);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return activeTab;\n}\n\n/**\n * Hook to get all tabs\n */\nexport function useTabs() {\n const { tabs } = useTabsContext();\n return tabs;\n}\n\n/**\n * Hook to listen to tab changes\n */\nexport function useTabChange() {\n const { service } = useTabsContext();\n const [changeEvent, setChangeEvent] = useState<TabChangeEvent | null>(null);\n\n useEffect(() => {\n const subscription = service.onTabChange$().subscribe(setChangeEvent);\n return () => subscription.unsubscribe();\n }, [service]);\n\n return changeEvent;\n}\n\n/**\n * Hook to set active tab\n */\nexport function useSetActiveTab() {\n const { service } = useTabsContext();\n return {\n setActiveTab: (tabId: string) => service.setActiveTab(tabId),\n setActiveTabByIndex: (index: number) => service.setActiveTabByIndex(index),\n nextTab: () => service.nextTab(),\n previousTab: () => service.previousTab(),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLiveUpdates.d.ts","sourceRoot":"","sources":["../../src/live-updates/useLiveUpdates.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,GAAG,OAAO,EAAE,WAAW,MAAM;;;
|
|
1
|
+
{"version":3,"file":"useLiveUpdates.d.ts","sourceRoot":"","sources":["../../src/live-updates/useLiveUpdates.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,GAAG,OAAO,EAAE,WAAW,MAAM;;;CA0B5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRichContent.d.ts","sourceRoot":"","sources":["../../src/rich-content/useRichContent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,sBAAsB,EACtB,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACZ,MAAM,sCAAsC,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,+BAA+B;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,wBAAwB;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,wBAAwB;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IAGjB,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,uBAAuB;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,qBAAqB;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACtD,mBAAmB;IACnB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wBAAwB;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,qBAAqB;IACrB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC;IACpD,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW;IACX,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW;IACX,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oBAAoB;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,mBAAmB;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,sBAAsB;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,oBAAoB;IACpB,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"useRichContent.d.ts","sourceRoot":"","sources":["../../src/rich-content/useRichContent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,sBAAsB,EACtB,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACZ,MAAM,sCAAsC,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,+BAA+B;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,wBAAwB;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,wBAAwB;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IAGjB,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,uBAAuB;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,qBAAqB;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACtD,mBAAmB;IACnB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wBAAwB;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,qBAAqB;IACrB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC;IACpD,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW;IACX,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW;IACX,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oBAAoB;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,mBAAmB;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,sBAAsB;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,oBAAoB;IACpB,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CA0GxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableService.d.ts","sourceRoot":"","sources":["../../src/table-builder/useTableService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG/E;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACnE,iCAAiC;IACjC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAE7B,iBAAiB;IACjB,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,uCAAuC;IACvC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,6BAA6B;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,qBAAqB;IACrB,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACpC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,2BAA2B;IAC3B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,sBAAsB;IACtB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,kBAAkB;IAClB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,iBAAiB;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9C,mBAAmB;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useTableService.d.ts","sourceRoot":"","sources":["../../src/table-builder/useTableService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG/E;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACnE,iCAAiC;IACjC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAE7B,iBAAiB;IACjB,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,uCAAuC;IACvC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,6BAA6B;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,qBAAqB;IACrB,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACpC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,2BAA2B;IAC3B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,sBAAsB;IACtB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,kBAAkB;IAClB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,iBAAiB;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9C,mBAAmB;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CA+G1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiltersAndSort.d.ts","sourceRoot":"","sources":["../src/useFiltersAndSort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA2B,MAAM,yBAAyB,CAAA;AAGxF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,6BAA6B;IAC7B,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,sCAAsC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"useFiltersAndSort.d.ts","sourceRoot":"","sources":["../src/useFiltersAndSort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA2B,MAAM,yBAAyB,CAAA;AAGxF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,6BAA6B;IAC7B,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,sCAAsC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAmEzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormBuilder.d.ts","sourceRoot":"","sources":["../src/useFormBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjE,0BAA0B;IAC1B,MAAM,EAAE,CAAC,CAAA;IACT,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,wBAAwB;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,kBAAkB;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,oBAAoB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useFormBuilder.d.ts","sourceRoot":"","sources":["../src/useFormBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjE,0BAA0B;IAC1B,MAAM,EAAE,CAAC,CAAA;IACT,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,wBAAwB;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,kBAAkB;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,oBAAoB,CAAC,CAAC,CAAC,CAgEzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableService.d.ts","sourceRoot":"","sources":["../src/useTableService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG/E;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACnE,iCAAiC;IACjC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAE7B,iBAAiB;IACjB,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,uCAAuC;IACvC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,6BAA6B;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,qBAAqB;IACrB,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACpC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,2BAA2B;IAC3B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,sBAAsB;IACtB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,kBAAkB;IAClB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,iBAAiB;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9C,mBAAmB;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useTableService.d.ts","sourceRoot":"","sources":["../src/useTableService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG/E;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACnE,iCAAiC;IACjC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAE7B,iBAAiB;IACjB,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAClE,uCAAuC;IACvC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,6BAA6B;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,qBAAqB;IACrB,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACpC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,2BAA2B;IAC3B,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,sBAAsB;IACtB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,eAAe;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,kBAAkB;IAClB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,iBAAiB;IACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9C,mBAAmB;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,wBAAwB;IACxB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,eAAe;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CA+G1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codella-software/react",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.25",
|
|
4
4
|
"description": "React hooks for Codella core services (FormBuilder, TableBuilder, FiltersAndSort, RichContent)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"form-builder",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"type": "module",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@codella-software/utils": "^2.2.
|
|
22
|
+
"@codella-software/utils": "^2.2.25"
|
|
23
23
|
},
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|