@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.
@@ -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,CA+DzB"}
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,CAkEzB"}
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
  });
@@ -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
  });
@@ -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":";;;;;;AAuEO,SAAS,kBACd,SACyB;AACzB,QAAM,EAAE,YAAY;AAEpB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA6B,MAAM;AAC3D,WAAO,QAAQ,SAAA;AAAA,EACjB,CAAC;AAED,YAAU,MAAM;AACd,UAAM,eAAe,QAAQ,OAAO,UAAU,CAAC,aAAiC;AAC9E,eAAS,QAAQ;AAAA,IACnB,CAAC;AAED,WAAO,MAAM,aAAa,YAAA;AAAA,EAC5B,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,YAAY,QAAQ,OAAO;AAAA,IAC/B,WAAW,CAAC,KAAa,UAAe;AACtC,cAAQ,UAAU,KAAK,KAAK;AAAA,IAC9B;AAAA,IAEA,aAAa,CAAC,QAAgB;AAC5B,cAAQ,YAAY,GAAG;AAAA,IACzB;AAAA,IAEA,iBAAiB,MAAM;AACrB,cAAQ,gBAAA;AAAA,IACV;AAAA,IAEA,SAAS,CAAC,OAAe,cAA8B;AACrD,cAAQ,QAAQ,OAAO,SAAS;AAAA,IAClC;AAAA,IAEA,YAAY,CAAC,UAAkB;AAC7B,cAAQ,WAAW,KAAK;AAAA,IAC1B;AAAA,IAEA,SAAS,CAAC,SAAiB;AACzB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAAA,IAEA,aAAa,CAAC,SAAiB;AAC7B,cAAQ,YAAY,IAAI;AAAA,IAC1B;AAAA,IAEA,UAAU,MAAM;AACd,cAAQ,SAAA;AAAA,IACV;AAAA,IAEA,UAAU,MAAM;AACd,cAAQ,SAAA;AAAA,IACV;AAAA,EAAA,IACE,CAAC,OAAO,CAAC;AAEb,QAAM,iBAAiB,QAAQ,OAAO;AAAA,IACpC,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,IACd,eAAe,MAAM;AAAA,IACrB,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,GAAG;AAAA,EAAA,IACD,CAAC,OAAO,SAAS,CAAC;AAEtB,SAAO;AACT;AC9DO,SAAS,eACd,SACyB;AACzB,QAAM,EAAE,YAAY;AAGpB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,MAAM,QAAQ,UAAU;AAC3D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,YAAU,MAAM;AACd,UAAM,eAAe,QAAQ,cAAc,UAAU,CAAC,aAAkB;AACtE,eAAS,QAAQ;AAAA,IACnB,CAAC;AAED,WAAO,MAAM,aAAa,YAAA;AAAA,EAC5B,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,iBAAiB,QAAQ,OAAO;AAAA,IACpC,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,aAAa,MAAM;AAAA,IACnB,YAAY,MAAM;AAAA,IAClB;AAAA,IACA,SAAS,OAAO,KAAK,MAAM,MAAM,EAAE,WAAW;AAAA,IAE9C,eAAe,OAAO,OAAgB,UAAe;AACnD,cAAQ,cAAc,OAAiB,KAAK;AAAA,IAC9C;AAAA,IAEA,iBAAiB,CAAC,OAAgB,YAAqB;AACrD,cAAQ,gBAAgB,OAAiB,OAAO;AAAA,IAClD;AAAA,IAEA,UAAU,YAAY;AACpB,aAAO,QAAQ,SAAA;AAAA,IACjB;AAAA,IAEA,QAAQ,YAAY;AAClB,sBAAgB,IAAI;AACpB,UAAI;AACF,cAAM,SAAS,MAAM,QAAQ,OAAA;AAC7B,wBAAgB,KAAK;AACrB,eAAO;AAAA,MACT,SAAS,OAAO;AACd,wBAAgB,KAAK;AACrB,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,OAAO,MAAM;AACX,cAAQ,MAAA;AAAA,IACV;AAAA,IAEA,UAAU,MAAM;AACd,UAAI,QAAQ,UAAU;AACpB,gBAAQ,SAAA;AAAA,MACV;AAAA,IACF;AAAA,IAEA,UAAU,MAAM;AACd,UAAI,QAAQ,UAAU;AACpB,gBAAQ,SAAA;AAAA,MACV;AAAA,IACF;AAAA,EAAA,IACE,CAAC,SAAS,OAAO,YAAY,CAAC;AAElC,SAAO;AACT;AC5HA,MAAM,oBAAoB,cAA6C,IAAI;AAMpE,MAAM,uBAAuB,MAAM;AACxC,QAAM,UAAU,WAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AACA,SAAO;AACT;AAuCO,MAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,gBAAgB,CAAA;AAClB,MAAM;AACJ,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM;AAC/B,UAAM,aAAa,IAAI,WAAW;AAAA,MAChC,KAAK;AAAA,MACL;AAAA,IAAA,CACD;AAED,UAAM,YAAY,IAAI,iBAAiB;AAAA,MACrC,KAAK;AAAA,MACL;AAAA,IAAA,CACD;AAED,WAAO,IAAI,kBAAkB,WAAW,UAAU;AAAA,EACpD,CAAC;AAED,YAAU,MAAM;AACd,QAAI,aAAa,mBAAmB;AAClC,cAAQ,WAAW;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH,OAAO;AACL,cAAQ,WAAA;AAAA,IACV;AAEA,UAAM,eAAe,QAAQ,aAAa,UAAU,cAAc;AAElE,WAAO,MAAM;AACX,mBAAa,YAAA;AAAA,IACf;AAAA,EACF,GAAG,CAAC,cAAc,YAAY,WAAW,SAAS,aAAa,CAAC;AAGhE,YAAU,MAAM;AACd,WAAO,MAAM;AACX,cAAQ,WAAA;AAAA,IACV;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,MAAM,QAAQ;AAAA,QACd,SAAS,QAAQ;AAAA,MAAA;AAAA,MAGlB;AAAA,IAAA;AAAA,EAAA;AAGP;ACxHO,MAAM,kBAAkB,CAAc,QAAoB,UAAU,SAAS;AAClF,QAAM,EAAE,QAAA,IAAY,qBAAA;AACpB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,IAAI;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AAErD,YAAU,MAAM;AACd,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAEA,UAAM,eAAe,QAAQ,GAAG,MAAM,EAAE,UAAU;AAAA,MAChD,MAAM,CAAC,UAAU;AACf,gBAAQ,KAAK;AACb,iBAAS,IAAI;AAAA,MACf;AAAA,MACA,OAAO,CAAC,QAAQ;AACd,iBAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;AAAA,MAC9D;AAAA,IAAA,CACD;AAED,WAAO,MAAM;AACX,mBAAa,YAAA;AAAA,IACf;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,OAAO,CAAC;AAE7B,SAAO,EAAE,MAAM,MAAA;AACjB;AC1BO,MAAM,iBAAiB,MAAsC;AAClE,QAAM,EAAE,SAAS,QAAA,IAAY,qBAAA;AAE7B,QAAM,UAAU;AAAA,IACd,CAAC,YAAwB,gBAA4B,YAAmB;AACtE,UAAI,CAAC,SAAS;AACZ,eAAO,QAAQ,OAAO,IAAI,MAAM,qCAAqC,CAAC;AAAA,MACxE;AAEA,aAAO,QACJ,GAAG,cAAc,EACjB,UAAA,EACA,MAAM,MAAM;AACX,cAAM,IAAI,MAAM,oCAAoC,cAAc,EAAE;AAAA,MACtE,CAAC;AAAA,IACL;AAAA,IACA,CAAC,SAAS,OAAO;AAAA,EAAA;AAGnB,SAAO,EAAE,SAAS,QAAA;AACpB;AChBO,MAAM,wBAAwB,CACnC,QACA,UACA,EAAE,UAAU,KAAA,IAAmC,OAC5C;AACH,QAAM,EAAE,QAAA,IAAY,qBAAA;AAEpB,QAAM,eAAe;AAAA,IACnB,CAAC,SAAY;AACX,eAAS,IAAI;AAAA,IACf;AAAA,IACA,CAAC,QAAQ;AAAA,EAAA;AAMX,QAAM,YAAY,YAAY,MAAM;AAClC,QAAI,CAAC,SAAS;AACZ,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AAEA,UAAM,eAAe,QAAQ,GAAG,MAAM,EAAE,UAAU,YAAY;AAE9D,WAAO,MAAM;AACX,mBAAa,YAAA;AAAA,IACf;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,SAAS,YAAY,CAAC;AAE3C,SAAO,EAAE,UAAA;AACX;ACpCO,MAAM,iBAAiB,CAAc,cAAsB;AAChE,QAAM,EAAE,QAAA,IAAY,qBAAA;AACpB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,IAAI;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AAErD,YAAU,MAAM;AACd,UAAM,eAAe,QAAQ,GAAG,SAAS,EAAE,UAAU;AAAA,MACnD,MAAM,CAAC,UAAU;AACf,gBAAQ,KAAK;AACb,iBAAS,IAAI;AAAA,MACf;AAAA,MACA,OAAO,CAAC,QAAQ;AACd,iBAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;AAAA,MAC9D;AAAA,IAAA,CACD;AAED,WAAO,MAAM;AACX,mBAAa,YAAA;AAAA,IACf;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,CAAC;AAEvB,SAAO,EAAE,MAAM,MAAA;AACjB;ACuDO,SAAS,eAAe,UAAiC,IAA0B;AAExF,QAAM,UAAU,QAAQ,MAAM,mBAAmB,OAAO,OAAO,GAAG,EAAE;AAGpE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAuB,QAAQ,YAAY;AACzE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA2B,QAAQ,UAAU;AACvE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAwB,oBAAI,KAAK;AAG/E,YAAU,MAAM;AACd,UAAM,aAAa,QAAQ,YAAA,EAAc,UAAU,UAAU;AAC7D,UAAM,WAAW,QAAQ,UAAA,EAAY,UAAU,CAAC,aAAa;AAC3D,eAAS,QAAQ;AACjB,mBAAa,SAAS,SAAS;AAC/B,iBAAW,SAAS,OAAO;AAC3B,iBAAW,SAAS,OAAO;AAC3B,yBAAmB,SAAS,mBAAmB,oBAAI,IAAA,CAAK;AAAA,IAC1D,CAAC;AAED,WAAO,MAAM;AACX,iBAAW,YAAA;AACX,eAAS,YAAA;AAAA,IACX;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAGZ,YAAU,MAAM;AACd,QAAI,QAAQ,SAAS;AACnB,cAAQ,cAAc,QAAQ,OAAO;AACrC,aAAO,MAAM,QAAQ,cAAA;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,OAAO,CAAC;AAG7B,QAAM,oBAAoB,OAAsC,IAAI;AAEpE,YAAU,MAAM;;AACd,UAAI,aAAQ,cAAR,mBAAmB,YAAW,CAAC,QAAQ,WAAW,CAAC,kBAAkB,SAAS;AAChF,YAAM,EAAE,8BAAA,IAAkC,QAAQ,sCAAsC;AACxF,YAAM,UAAU,IAAI,8BAAA;AACpB,cAAQ,MAAM,QAAQ,UAAU,OAAO;AACvC,cAAQ,cAAc,OAAO;AAC7B,wBAAkB,UAAU;AAE5B,aAAO,MAAM;AACX,gBAAQ,QAAA;AACR,gBAAQ,cAAA;AACR,0BAAkB,UAAU;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,WAAW,QAAQ,SAAS,OAAO,CAAC;AAGhD,QAAM,aAAa,YAAY,CAAC,SAAiB,QAAQ,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC;AACpF,QAAM,kBAAkB,YAAY,MAAM,QAAQ,mBAAmB,CAAC,OAAO,CAAC;AAC9E,QAAM,gBAAgB,YAAY,CAAC,UAAe,QAAQ,cAAc,KAAK,GAAG,CAAC,OAAO,CAAC;AACzF,QAAM,cAAc,YAAY,CAAC,QAAgB,QAAQ,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;AACpF,QAAM,cAAc,YAAY,CAAC,SAAe,QAAQ,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC;AACpF,QAAM,gBAAgB,YAAY,CAAC,IAAY,UAAkB,QAAQ,cAAc,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC;AAC5G,QAAM,aAAa,YAAY,CAAC,SAAkC,QAAQ,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC;AACrG,QAAM,aAAa,YAAY,CAAC,SAAmB,QAAQ,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC;AACtF,QAAM,gBAAgB,YAAY,MAAM,QAAQ,iBAAiB,CAAC,OAAO,CAAC;AAC1E,QAAM,OAAO,YAAY,MAAM,QAAQ,QAAQ,CAAC,OAAO,CAAC;AACxD,QAAM,OAAO,YAAY,MAAM,QAAQ,QAAQ,CAAC,OAAO,CAAC;AACxD,QAAM,eAAe,YAAY,MAAM,QAAQ,gBAAgB,CAAC,OAAO,CAAC;AACxE,QAAM,QAAQ,YAAY;;AAAM,yBAAQ,WAAA,MAAR,mBAAsB;AAAA,KAAS,CAAC,OAAO,CAAC;AACxE,QAAM,WAAW,YAAY,CAAC,YAAqB,QAAQ,SAAS,OAAO,GAAG,CAAC,OAAO,CAAC;AACvF,QAAM,eAAe,YAAY,MAAM,QAAQ,gBAAgB,CAAC,OAAO,CAAC;AACxE,QAAM,eAAe,YAAY,CAAC,QAA0B,QAAQ,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;AAEhG,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,MAAM,aAAa;AAAA,IAC9B,SAAS,MAAM;AAAA,IAEf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AC1FO,SAAS,gBACd,SAC0B;AAC1B,QAAM,EAAE,QAAQ,KAAA,IAAS;AAGzB,QAAM,UAAU,QAAQ,MAAM;AAC5B,UAAM,KAAK,IAAI,aAAgB,MAAM;AACrC,OAAG,QAAQ,IAAI;AACf,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,CAAC;AAGX,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,MAAM,QAAQ,UAAU;AAC3D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAmB,CAAA,CAAE;AAC7D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAGpD,YAAU,MAAM;AACd,UAAM,eAAe,QAAQ,cAAc,UAAU,CAAC,aAAkB;AACtE,eAAS,QAAQ;AAAA,IACnB,CAAC;AAED,WAAO,MAAM,aAAa,YAAA;AAAA,EAC5B,GAAG,CAAC,OAAO,CAAC;AAGZ,YAAU,MAAM;AACd,YAAQ,QAAQ,IAAI;AAAA,EACtB,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,QAAM,kBAAkB,QAAQ,OAAO;AAAA,IACrC,oBAAoB,CAAC,UAAkB;AACrC;AAAA,QAAgB,CAAA,SACd,KAAK,SAAS,KAAK,IACf,KAAK,OAAO,CAAA,OAAM,OAAO,KAAK,IAC9B,CAAC,GAAG,MAAM,KAAK;AAAA,MAAA;AAAA,IAEvB;AAAA,IAEA,oBAAoB,MAAM;AACxB,UAAI,aAAa;AACf,wBAAgB,CAAA,CAAE;AAClB,uBAAe,KAAK;AAAA,MACtB,OAAO;AACL,wBAAgB,MAAM,KAAK,IAAI,CAAC,QAAc,IAAY,MAAM,OAAO,GAAG,CAAC,CAAC;AAC5E,uBAAe,IAAI;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,gBAAgB,MAAM;AACpB,sBAAgB,CAAA,CAAE;AAClB,qBAAe,KAAK;AAAA,IACtB;AAAA,IAEA,SAAS,CAAC,OAAe,cAA8B;AACrD,cAAQ,QAAQ,OAAO,SAAS;AAAA,IAClC;AAAA,IAEA,YAAY,CAAC,UAAkB;AAC7B,cAAQ,WAAW,KAAK;AAAA,IAC1B;AAAA,IAEA,WAAW,CAAC,OAAe,UAAe;AACxC,cAAQ,UAAU,OAAO,KAAK;AAAA,IAChC;AAAA,IAEA,aAAa,CAAC,UAAkB;AAC9B,cAAQ,YAAY,KAAK;AAAA,IAC3B;AAAA,IAEA,iBAAiB,MAAM;AACrB,cAAQ,gBAAA;AAAA,IACV;AAAA,IAEA,SAAS,CAAC,SAAiB;AACzB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAAA,IAEA,aAAa,CAAC,SAAiB;AAC7B,cAAQ,YAAY,IAAI;AAAA,IAC1B;AAAA,IAEA,UAAU,MAAM;AACd,cAAQ,SAAA;AAAA,IACV;AAAA,IAEA,UAAU,MAAM;AACd,cAAQ,SAAA;AAAA,IACV;AAAA,EAAA,IACE,CAAC,SAAS,aAAa,MAAM,IAAI,CAAC;AAEtC,QAAM,iBAAiB,QAAQ,OAAO;AAAA,IACpC,MAAM,MAAM;AAAA,IACZ;AAAA,IACA;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,YAAY,MAAM;AAAA,IAClB,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB,aAAa,MAAM;AAAA,IACnB,QAAQ,MAAM;AAAA,IACd,eAAe,MAAM;AAAA,IACrB,SAAS,MAAM;AAAA,IACf,GAAG;AAAA,EAAA,IACD,CAAC,OAAO,cAAc,aAAa,eAAe,CAAC;AAEvD,SAAO;AACT;ACrMA,MAAM,cAAc,cAA4C,MAAS;AAalE,SAAS,aAAa,EAAE,QAAQ,YAA+B;AACpE,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,YAAY,MAAM,CAAC;AACxD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,MAAM,QAAQ,gBAAgB;AAC7E,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,MAAM,QAAQ,SAAS;AAExD,YAAU,MAAM;AACd,UAAM,wBAAwB,QAAQ,gBAAA,EAAkB,UAAU,cAAc;AAChF,UAAM,mBAAmB,QAAQ,SAAA,EAAW,UAAU,OAAO;AAE7D,WAAO,MAAM;AACX,4BAAsB,YAAA;AACtB,uBAAiB,YAAA;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACd,WAAO,MAAM;AACX,cAAQ,QAAA;AAAA,IACV;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE,oBAAC,YAAY,UAAZ,EAAqB,OAAO,EAAE,SAAS,aAAa,QAClD,UACH;AAEJ;AAKO,SAAS,iBAAmC;AACjD,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,SAAO;AACT;AAKO,SAAS,iBAAiB;AAC/B,QAAM,EAAE,QAAA,IAAY,eAAA;AACpB,SAAO;AACT;AAKO,SAAS,eAAe;AAC7B,QAAM,EAAE,QAAA,IAAY,eAAA;AACpB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,MAAM,QAAQ,cAAc;AAEvE,YAAU,MAAM;AACd,UAAM,eAAe,QAAQ,cAAA,EAAgB,UAAU,YAAY;AACnE,WAAO,MAAM,aAAa,YAAA;AAAA,EAC5B,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;AAKO,SAAS,UAAU;AACxB,QAAM,EAAE,KAAA,IAAS,eAAA;AACjB,SAAO;AACT;AAKO,SAAS,eAAe;AAC7B,QAAM,EAAE,QAAA,IAAY,eAAA;AACpB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAgC,IAAI;AAE1E,YAAU,MAAM;AACd,UAAM,eAAe,QAAQ,aAAA,EAAe,UAAU,cAAc;AACpE,WAAO,MAAM,aAAa,YAAA;AAAA,EAC5B,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;AAKO,SAAS,kBAAkB;AAChC,QAAM,EAAE,QAAA,IAAY,eAAA;AACpB,SAAO;AAAA,IACL,cAAc,CAAC,UAAkB,QAAQ,aAAa,KAAK;AAAA,IAC3D,qBAAqB,CAAC,UAAkB,QAAQ,oBAAoB,KAAK;AAAA,IACzE,SAAS,MAAM,QAAQ,QAAA;AAAA,IACvB,aAAa,MAAM,QAAQ,YAAA;AAAA,EAAY;AAE3C;"}
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;;;CAsB5D,CAAC"}
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,CAsGxF"}
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,CA2G1B"}
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,CA+DzB"}
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,CA4DzB"}
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,CA2G1B"}
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.23",
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.23"
22
+ "@codella-software/utils": "^2.2.25"
23
23
  },
24
24
  "exports": {
25
25
  ".": {