@codella-software/react 2.1.0 → 2.2.0

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":"index.cjs","sources":["../src/filters-and-sort/useFiltersAndSort.ts","../src/form-builder/useFormBuilder.ts","../../core/dist/live-updates/index.js","../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/table-builder/useTableService.ts","../../core/dist/tabs-Ddbfrobf.js","../src/tabs/useTabsHooks.tsx"],"sourcesContent":["// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FiltersAndSortService, type FilterAndSortState } from '@codella/core'\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/core'\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 { of, EMPTY, Subject as Subject$1, BehaviorSubject, timer, fromEvent, Observable as Observable$1 } from \"rxjs\";\nimport { take, takeUntil, map, filter, tap } from \"rxjs/operators\";\nclass LiveUpdateService {\n constructor(wsService, sseService) {\n this.wsService = wsService;\n this.sseService = sseService;\n this.activeType = null;\n this.isInitialized = false;\n this.eventMappings = {};\n }\n initialize(config2) {\n if (this.isInitialized) {\n return;\n }\n this.eventMappings = config2.eventMappings ?? {};\n if (config2.sseEnabled) {\n this.activeType = \"SSE\";\n this.sseService.connect().catch((error) => {\n console.error(\"[LiveUpdateService] SSE connection failed:\", error);\n if (config2.wsEnabled) {\n this.activeType = \"WebSocket\";\n this.wsService.connect();\n }\n });\n } else if (config2.wsEnabled) {\n this.activeType = \"WebSocket\";\n this.wsService.connect();\n }\n this.isInitialized = true;\n }\n get type() {\n return this.activeType;\n }\n get isConnected$() {\n switch (this.activeType) {\n case \"SSE\":\n return this.sseService.isConnected$;\n case \"WebSocket\":\n return this.wsService.isConnected$;\n default:\n return of(false);\n }\n }\n get canSend() {\n return this.activeType === \"WebSocket\";\n }\n /**\n * Subscribe to a named event using configured mappings\n */\n on(eventName) {\n const mapping = this.eventMappings[eventName];\n if (!mapping) {\n console.warn(`[LiveUpdateService] No mapping found for event: ${eventName}`);\n return EMPTY;\n }\n switch (this.activeType) {\n case \"SSE\":\n if (mapping.sseEvent) {\n return this.sseService.on(mapping.sseEvent);\n }\n break;\n case \"WebSocket\":\n if (mapping.wsAction) {\n return this.wsService.on(mapping.wsAction);\n }\n break;\n }\n return EMPTY;\n }\n /**\n * Send a message via WebSocket (if available)\n */\n send(action, payload) {\n if (!this.canSend) {\n console.warn(\"[LiveUpdateService] WebSocket not available for sending\");\n return;\n }\n this.wsService.sendMessage(action, payload);\n }\n disconnect() {\n this.sseService.disconnect();\n this.wsService.disconnect();\n this.activeType = null;\n this.isInitialized = false;\n }\n destroy() {\n this.sseService.destroy();\n this.wsService.destroy();\n this.activeType = null;\n this.isInitialized = false;\n }\n}\nconst DEFAULT_CONFIG = {\n maxReconnectAttempts: 5,\n initialReconnectDelay: 1e3,\n maxReconnectDelay: 3e4\n};\nclass BaseConnectionService {\n constructor(config2 = {}) {\n this.destroySubject$ = new Subject$1();\n this.messagesSubject$ = new Subject$1();\n this.connectionStatusSubject$ = new BehaviorSubject(false);\n this.reconnectAttempts = 0;\n this.messages$ = this.messagesSubject$.asObservable();\n this.isConnected$ = this.connectionStatusSubject$.asObservable();\n this.config = { ...DEFAULT_CONFIG, ...config2 };\n }\n getReconnectDelay(attempt) {\n return Math.min(\n this.config.initialReconnectDelay * Math.pow(2, attempt),\n this.config.maxReconnectDelay\n );\n }\n scheduleReconnect(connectFn) {\n if (this.reconnectAttempts >= this.config.maxReconnectAttempts) {\n console.error(`[${this.serviceName}] Max reconnection attempts reached`);\n return;\n }\n const delay = this.getReconnectDelay(this.reconnectAttempts);\n this.reconnectAttempts++;\n console.log(\n `[${this.serviceName}] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`\n );\n timer(delay).pipe(take(1), takeUntil(this.destroySubject$)).subscribe(() => connectFn());\n }\n resetReconnectAttempts() {\n this.reconnectAttempts = 0;\n }\n destroy() {\n this.disconnect();\n this.destroySubject$.next();\n this.destroySubject$.complete();\n this.messagesSubject$.complete();\n this.connectionStatusSubject$.complete();\n }\n}\nclass FetchEventSource {\n constructor(url, headers) {\n this.url = url;\n this.headers = headers;\n this.eventTarget = new EventTarget();\n this.abortController = null;\n }\n async connect() {\n var _a;\n this.abortController = new AbortController();\n try {\n const response = await fetch(this.url, {\n method: \"GET\",\n headers: this.headers,\n signal: this.abortController.signal\n });\n if (!response.ok) {\n const error = new Event(\"error\");\n this.eventTarget.dispatchEvent(error);\n return;\n }\n const openEvent = new Event(\"open\");\n this.eventTarget.dispatchEvent(openEvent);\n const reader = (_a = response.body) == null ? void 0 : _a.getReader();\n if (!reader) {\n const error = new Event(\"error\");\n this.eventTarget.dispatchEvent(error);\n return;\n }\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n for (let i = 0; i < lines.length - 1; i++) {\n this.processLine(lines[i]);\n }\n buffer = lines[lines.length - 1];\n }\n if (buffer.length > 0) {\n this.processLine(buffer);\n }\n } catch (error) {\n if (error instanceof Error && error.name !== \"AbortError\") {\n const errorEvent = new Event(\"error\");\n this.eventTarget.dispatchEvent(errorEvent);\n }\n }\n }\n processLine(line) {\n line = line.trim();\n if (line === \"\" || line.startsWith(\":\")) {\n return;\n }\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1) {\n return;\n }\n const field = line.substring(0, colonIndex);\n let value = line.substring(colonIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.substring(1);\n }\n if (field === \"data\") {\n const event = new MessageEvent(\"message\", {\n data: value\n });\n this.eventTarget.dispatchEvent(event);\n }\n }\n addEventListener(type, listener) {\n this.eventTarget.addEventListener(type, listener);\n }\n removeEventListener(type, listener) {\n this.eventTarget.removeEventListener(type, listener);\n }\n get onopen() {\n return this.eventTarget.onopen;\n }\n set onopen(handler) {\n if (this.eventTarget.onopen) {\n this.eventTarget.removeEventListener(\"open\", this.eventTarget.onopen);\n }\n if (handler) {\n this.eventTarget.addEventListener(\"open\", handler);\n this.eventTarget.onopen = handler;\n }\n }\n get onerror() {\n return this.eventTarget.onerror;\n }\n set onerror(handler) {\n if (this.eventTarget.onerror) {\n this.eventTarget.removeEventListener(\"error\", this.eventTarget.onerror);\n }\n if (handler) {\n this.eventTarget.addEventListener(\"error\", handler);\n this.eventTarget.onerror = handler;\n }\n }\n close() {\n var _a;\n (_a = this.abortController) == null ? void 0 : _a.abort();\n this.abortController = null;\n }\n}\nclass SSEService extends BaseConnectionService {\n constructor(config2) {\n super();\n this.eventSource = null;\n this.sseConfig = {\n headerName: \"Authorization\",\n headerPrefix: \"Bearer\",\n ...config2\n };\n }\n get serviceName() {\n return \"SSE\";\n }\n async connect() {\n if (this.eventSource) {\n return;\n }\n try {\n if (!this.sseConfig.authProvider.isAuthenticated()) {\n console.error(\"[SSE] Not authenticated\");\n return;\n }\n const idToken = await this.sseConfig.authProvider.getIdToken();\n if (!idToken) {\n console.error(\"[SSE] No auth token available\");\n return;\n }\n const headers = {\n [this.sseConfig.headerName]: `${this.sseConfig.headerPrefix} ${idToken}`\n };\n const url = new URL(this.sseConfig.url);\n this.eventSource = new FetchEventSource(url.toString(), headers);\n this.setupEventListeners();\n await this.eventSource.connect();\n } catch (error) {\n console.error(\"[SSE] Connection error:\", error);\n this.scheduleReconnect(() => this.connect());\n }\n }\n setupEventListeners() {\n if (!this.eventSource) return;\n this.eventSource.onopen = () => {\n console.log(\"[SSE] Connected\");\n this.connectionStatusSubject$.next(true);\n this.resetReconnectAttempts();\n };\n this.eventSource.onerror = (event) => {\n console.error(\"[SSE] Error:\", event);\n this.connectionStatusSubject$.next(false);\n this.cleanup();\n this.scheduleReconnect(() => this.connect());\n };\n fromEvent(this.eventSource, \"message\").pipe(\n takeUntil(this.destroySubject$),\n map((event) => {\n try {\n return JSON.parse(event.data);\n } catch (error) {\n console.error(\"[SSE] Parse error:\", error);\n return null;\n }\n }),\n filter((msg) => msg !== null)\n ).subscribe((message) => {\n this.messagesSubject$.next(message);\n });\n }\n cleanup() {\n var _a;\n (_a = this.eventSource) == null ? void 0 : _a.close();\n this.eventSource = null;\n }\n on(eventType) {\n return this.messages$.pipe(\n filter((msg) => msg.eventType === eventType),\n map((msg) => msg.data)\n );\n }\n disconnect() {\n this.cleanup();\n this.connectionStatusSubject$.next(false);\n this.resetReconnectAttempts();\n }\n destroy() {\n this.cleanup();\n this.destroySubject$.next();\n this.destroySubject$.complete();\n }\n}\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {\n d2.__proto__ = b2;\n } || function(d2, b2) {\n for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function() {\n __assign = Object.assign || function __assign2(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = { error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function(error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction createErrorClass(createImpl) {\n var _super = function(instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\nvar UnsubscriptionError = createErrorClass(function(_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function(err, i) {\n return i + 1 + \") \" + err.toString();\n }).join(\"\\n \") : \"\";\n this.name = \"UnsubscriptionError\";\n this.errors = errors;\n };\n});\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\nvar Subscription = (function() {\n function Subscription2(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription2.prototype.unsubscribe = function() {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n } else {\n errors.push(err);\n }\n }\n }\n } catch (e_2_1) {\n e_2 = { error: e_2_1 };\n } finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription2.prototype.add = function(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription2) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription2.prototype._hasParent = function(parent) {\n var _parentage = this._parentage;\n return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);\n };\n Subscription2.prototype._addParent = function(parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription2.prototype._removeParent = function(parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription2.prototype.remove = function(teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription2) {\n teardown._removeParent(this);\n }\n };\n Subscription2.EMPTY = (function() {\n var empty = new Subscription2();\n empty.closed = true;\n return empty;\n })();\n return Subscription2;\n})();\nvar EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n return value instanceof Subscription || value && \"closed\" in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\nvar config = {\n Promise: void 0\n};\nvar timeoutProvider = {\n setTimeout: function(handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function(handle) {\n return clearTimeout(handle);\n },\n delegate: void 0\n};\nfunction reportUnhandledError(err) {\n timeoutProvider.setTimeout(function() {\n {\n throw err;\n }\n });\n}\nfunction noop() {\n}\nfunction errorContext(cb) {\n {\n cb();\n }\n}\nvar Subscriber = (function(_super) {\n __extends(Subscriber2, _super);\n function Subscriber2(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n } else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber2.create = function(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber2.prototype.next = function(value) {\n if (this.isStopped) ;\n else {\n this._next(value);\n }\n };\n Subscriber2.prototype.error = function(err) {\n if (this.isStopped) ;\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber2.prototype.complete = function() {\n if (this.isStopped) ;\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber2.prototype.unsubscribe = function() {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber2.prototype._next = function(value) {\n this.destination.next(value);\n };\n Subscriber2.prototype._error = function(err) {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n };\n Subscriber2.prototype._complete = function() {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n };\n return Subscriber2;\n})(Subscription);\nvar ConsumerObserver = (function() {\n function ConsumerObserver2(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver2.prototype.next = function(value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver2.prototype.error = function(err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver2.prototype.complete = function() {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver2;\n})();\nvar SafeSubscriber = (function(_super) {\n __extends(SafeSubscriber2, _super);\n function SafeSubscriber2(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0,\n error: error !== null && error !== void 0 ? error : void 0,\n complete: complete !== null && complete !== void 0 ? complete : void 0\n };\n } else {\n {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber2;\n})(Subscriber);\nfunction handleUnhandledError(error) {\n {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nvar EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop\n};\nvar observable = (function() {\n return typeof Symbol === \"function\" && Symbol.observable || \"@@observable\";\n})();\nfunction identity(x) {\n return x;\n}\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function(prev, fn) {\n return fn(prev);\n }, input);\n };\n}\nvar Observable = (function() {\n function Observable2(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable2.prototype.lift = function(operator) {\n var observable2 = new Observable2();\n observable2.source = this;\n observable2.operator = operator;\n return observable2;\n };\n Observable2.prototype.subscribe = function(observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function() {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable2.prototype._trySubscribe = function(sink) {\n try {\n return this._subscribe(sink);\n } catch (err) {\n sink.error(err);\n }\n };\n Observable2.prototype.forEach = function(next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function(resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function(value) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n _this.subscribe(subscriber);\n });\n };\n Observable2.prototype._subscribe = function(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable2.prototype[observable] = function() {\n return this;\n };\n Observable2.prototype.pipe = function() {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable2.prototype.toPromise = function(promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function(resolve, reject) {\n var value;\n _this.subscribe(function(x) {\n return value = x;\n }, function(err) {\n return reject(err);\n }, function() {\n return resolve(value);\n });\n });\n };\n Observable2.create = function(subscribe) {\n return new Observable2(subscribe);\n };\n return Observable2;\n})();\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);\n}\nvar ObjectUnsubscribedError = createErrorClass(function(_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = \"ObjectUnsubscribedError\";\n this.message = \"object unsubscribed\";\n };\n});\nvar Subject = (function(_super) {\n __extends(Subject2, _super);\n function Subject2() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject2.prototype.lift = function(operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject2.prototype._throwIfClosed = function() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject2.prototype.next = function(value) {\n var _this = this;\n errorContext(function() {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n });\n };\n Subject2.prototype.error = function(err) {\n var _this = this;\n errorContext(function() {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject2.prototype.complete = function() {\n var _this = this;\n errorContext(function() {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject2.prototype.unsubscribe = function() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject2.prototype, \"observed\", {\n get: function() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject2.prototype._trySubscribe = function(subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject2.prototype._subscribe = function(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject2.prototype._innerSubscribe = function(subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function() {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject2.prototype._checkFinalizedStatuses = function(subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject2.prototype.asObservable = function() {\n var observable2 = new Observable();\n observable2.source = this;\n return observable2;\n };\n Subject2.create = function(destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject2;\n})(Observable);\nvar AnonymousSubject = (function(_super) {\n __extends(AnonymousSubject2, _super);\n function AnonymousSubject2(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject2.prototype.next = function(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject2.prototype.error = function(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject2.prototype.complete = function() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject2.prototype._subscribe = function(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject2;\n})(Subject);\nvar dateTimestampProvider = {\n now: function() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: void 0\n};\nvar ReplaySubject = (function(_super) {\n __extends(ReplaySubject2, _super);\n function ReplaySubject2(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) {\n _bufferSize = Infinity;\n }\n if (_windowTime === void 0) {\n _windowTime = Infinity;\n }\n if (_timestampProvider === void 0) {\n _timestampProvider = dateTimestampProvider;\n }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject2.prototype.next = function(value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject2.prototype._subscribe = function(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject2.prototype._trimBuffer = function() {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject2;\n})(Subject);\nvar DEFAULT_WEBSOCKET_CONFIG = {\n url: \"\",\n deserializer: function(e) {\n return JSON.parse(e.data);\n },\n serializer: function(value) {\n return JSON.stringify(value);\n }\n};\nvar WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT = \"WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }\";\nvar WebSocketSubject = (function(_super) {\n __extends(WebSocketSubject2, _super);\n function WebSocketSubject2(urlConfigOrSource, destination) {\n var _this = _super.call(this) || this;\n _this._socket = null;\n if (urlConfigOrSource instanceof Observable) {\n _this.destination = destination;\n _this.source = urlConfigOrSource;\n } else {\n var config2 = _this._config = __assign({}, DEFAULT_WEBSOCKET_CONFIG);\n _this._output = new Subject();\n if (typeof urlConfigOrSource === \"string\") {\n config2.url = urlConfigOrSource;\n } else {\n for (var key in urlConfigOrSource) {\n if (urlConfigOrSource.hasOwnProperty(key)) {\n config2[key] = urlConfigOrSource[key];\n }\n }\n }\n if (!config2.WebSocketCtor && WebSocket) {\n config2.WebSocketCtor = WebSocket;\n } else if (!config2.WebSocketCtor) {\n throw new Error(\"no WebSocket constructor can be found\");\n }\n _this.destination = new ReplaySubject();\n }\n return _this;\n }\n WebSocketSubject2.prototype.lift = function(operator) {\n var sock = new WebSocketSubject2(this._config, this.destination);\n sock.operator = operator;\n sock.source = this;\n return sock;\n };\n WebSocketSubject2.prototype._resetState = function() {\n this._socket = null;\n if (!this.source) {\n this.destination = new ReplaySubject();\n }\n this._output = new Subject();\n };\n WebSocketSubject2.prototype.multiplex = function(subMsg, unsubMsg, messageFilter) {\n var self = this;\n return new Observable(function(observer) {\n try {\n self.next(subMsg());\n } catch (err) {\n observer.error(err);\n }\n var subscription = self.subscribe({\n next: function(x) {\n try {\n if (messageFilter(x)) {\n observer.next(x);\n }\n } catch (err) {\n observer.error(err);\n }\n },\n error: function(err) {\n return observer.error(err);\n },\n complete: function() {\n return observer.complete();\n }\n });\n return function() {\n try {\n self.next(unsubMsg());\n } catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n };\n WebSocketSubject2.prototype._connectSocket = function() {\n var _this = this;\n var _a = this._config, WebSocketCtor = _a.WebSocketCtor, protocol = _a.protocol, url = _a.url, binaryType = _a.binaryType;\n var observer = this._output;\n var socket = null;\n try {\n socket = protocol ? new WebSocketCtor(url, protocol) : new WebSocketCtor(url);\n this._socket = socket;\n if (binaryType) {\n this._socket.binaryType = binaryType;\n }\n } catch (e) {\n observer.error(e);\n return;\n }\n var subscription = new Subscription(function() {\n _this._socket = null;\n if (socket && socket.readyState === 1) {\n socket.close();\n }\n });\n socket.onopen = function(evt) {\n var _socket = _this._socket;\n if (!_socket) {\n socket.close();\n _this._resetState();\n return;\n }\n var openObserver = _this._config.openObserver;\n if (openObserver) {\n openObserver.next(evt);\n }\n var queue = _this.destination;\n _this.destination = Subscriber.create(function(x) {\n if (socket.readyState === 1) {\n try {\n var serializer = _this._config.serializer;\n socket.send(serializer(x));\n } catch (e) {\n _this.destination.error(e);\n }\n }\n }, function(err) {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(void 0);\n }\n if (err && err.code) {\n socket.close(err.code, err.reason);\n } else {\n observer.error(new TypeError(WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT));\n }\n _this._resetState();\n }, function() {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(void 0);\n }\n socket.close();\n _this._resetState();\n });\n if (queue && queue instanceof ReplaySubject) {\n subscription.add(queue.subscribe(_this.destination));\n }\n };\n socket.onerror = function(e) {\n _this._resetState();\n observer.error(e);\n };\n socket.onclose = function(e) {\n if (socket === _this._socket) {\n _this._resetState();\n }\n var closeObserver = _this._config.closeObserver;\n if (closeObserver) {\n closeObserver.next(e);\n }\n if (e.wasClean) {\n observer.complete();\n } else {\n observer.error(e);\n }\n };\n socket.onmessage = function(e) {\n try {\n var deserializer = _this._config.deserializer;\n observer.next(deserializer(e));\n } catch (err) {\n observer.error(err);\n }\n };\n };\n WebSocketSubject2.prototype._subscribe = function(subscriber) {\n var _this = this;\n var source = this.source;\n if (source) {\n return source.subscribe(subscriber);\n }\n if (!this._socket) {\n this._connectSocket();\n }\n this._output.subscribe(subscriber);\n subscriber.add(function() {\n var _socket = _this._socket;\n if (_this._output.observers.length === 0) {\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n _this._resetState();\n }\n });\n return subscriber;\n };\n WebSocketSubject2.prototype.unsubscribe = function() {\n var _socket = this._socket;\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n this._resetState();\n _super.prototype.unsubscribe.call(this);\n };\n return WebSocketSubject2;\n})(AnonymousSubject);\nfunction webSocket(urlConfigOrSource) {\n return new WebSocketSubject(urlConfigOrSource);\n}\nclass WebsocketService extends BaseConnectionService {\n constructor(config2) {\n super();\n this.socket$ = null;\n this.wsConfig = config2;\n }\n get serviceName() {\n return \"WS\";\n }\n connect() {\n if (this.socket$) {\n return;\n }\n this.socket$ = webSocket({\n url: this.wsConfig.url,\n openObserver: {\n next: () => {\n console.log(\"[WS] Connected\");\n this.connectionStatusSubject$.next(true);\n this.resetReconnectAttempts();\n this.sendMessage(\"INIT_CONNECTION\");\n }\n },\n closeObserver: {\n next: (event) => {\n console.log(\"[WS] Closed:\", event.code, event.reason);\n this.connectionStatusSubject$.next(false);\n this.socket$ = null;\n if (event.code !== 1e3 && event.reason !== \"Closing duplicate connection\") {\n this.scheduleReconnect(() => this.connect());\n }\n }\n }\n });\n this.socket$.pipe(\n takeUntil(this.destroySubject$),\n tap({\n error: (err) => {\n console.error(\"[WS] Error:\", err);\n this.connectionStatusSubject$.next(false);\n }\n })\n ).subscribe({\n next: (message) => {\n if (this.isIncomingMessage(message)) {\n this.messagesSubject$.next(message);\n }\n },\n error: (err) => console.error(\"[WS] Stream error:\", err)\n });\n }\n isIncomingMessage(msg) {\n return \"action\" in msg && !(\"Authorization\" in msg);\n }\n async sendMessage(action, payload) {\n if (!this.socket$ || !this.connectionStatusSubject$.value) {\n console.warn(\"[WS] Cannot send message - not connected\");\n return;\n }\n try {\n if (!this.wsConfig.authProvider.isAuthenticated()) {\n console.warn(`[WS] Cannot send message - not authenticated for action: ${action}`);\n return;\n }\n const idToken = await this.wsConfig.authProvider.getIdToken();\n if (!idToken) {\n console.warn(`[WS] Cannot send message - no auth token available for action: ${action}`);\n return;\n }\n this.socket$.next({\n Authorization: idToken,\n action,\n payload\n });\n } catch (error) {\n console.error(\"[WS] Error sending message:\", error);\n }\n }\n on(action) {\n return this.messages$.pipe(\n filter((msg) => msg.action === action),\n map((msg) => msg.payload)\n );\n }\n request(sendAction, responseAction, payload) {\n return new Observable$1((subscriber) => {\n const sub = this.on(responseAction).pipe(take(1)).subscribe(subscriber);\n this.sendMessage(sendAction, payload);\n return () => sub.unsubscribe();\n });\n }\n disconnect() {\n var _a;\n (_a = this.socket$) == null ? void 0 : _a.complete();\n this.socket$ = null;\n this.connectionStatusSubject$.next(false);\n this.resetReconnectAttempts();\n }\n destroy() {\n var _a;\n (_a = this.socket$) == null ? void 0 : _a.complete();\n this.socket$ = null;\n this.destroySubject$.next();\n this.destroySubject$.complete();\n this.messagesSubject$.complete();\n this.connectionStatusSubject$.complete();\n }\n}\nexport {\n LiveUpdateService,\n SSEService,\n WebsocketService\n};\n//# sourceMappingURL=index.js.map\n","import { FC, ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport {\n LiveUpdateService,\n SSEService,\n WebsocketService,\n type EventMapping,\n type LiveUpdateType,\n} from '@codella/core/live-updates';\nimport type { IAuthProvider } from '@codella/core';\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/core';\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/core/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/core/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/core/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","// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { TableBuilder, type TableBuilderConfig } from '@codella/core'\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 { BehaviorSubject } from \"rxjs\";\nimport { distinctUntilChanged, map } from \"rxjs/operators\";\nclass TabsService {\n constructor(config) {\n this.config = config;\n this.urlParam = config.urlParam || \"tab\";\n this.tabsSubject = new BehaviorSubject(config.tabs);\n const initialTabId = this.getInitialTabId();\n this.activeTabSubject = new BehaviorSubject(initialTabId);\n this.tabChangeSubject = new BehaviorSubject(null);\n if (this.config.enableUrlRouting) {\n this.setupUrlRouting();\n }\n }\n /**\n * Get initial tab ID from URL or config\n */\n getInitialTabId() {\n var _a;\n if (this.config.enableUrlRouting && typeof window !== \"undefined\") {\n const params = new URLSearchParams(window.location.search);\n const urlTabId = params.get(this.urlParam);\n if (urlTabId && this.config.tabs.some((t) => t.id === urlTabId)) {\n return urlTabId;\n }\n }\n return this.config.defaultTabId || ((_a = this.config.tabs[0]) == null ? void 0 : _a.id) || \"\";\n }\n /**\n * Setup URL routing listener\n */\n setupUrlRouting() {\n if (typeof window === \"undefined\") return;\n const handleUrlChange = () => {\n const params = new URLSearchParams(window.location.search);\n const urlTabId = params.get(this.urlParam);\n if (urlTabId && urlTabId !== this.activeTabSubject.value) {\n this.setActiveTab(urlTabId);\n }\n };\n window.addEventListener(\"popstate\", handleUrlChange);\n }\n /**\n * Update URL with current active tab\n */\n updateUrl(tabId) {\n if (!this.config.enableUrlRouting || typeof window === \"undefined\") return;\n const params = new URLSearchParams(window.location.search);\n params.set(this.urlParam, tabId);\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n window.history.pushState({ tab: tabId }, \"\", newUrl);\n }\n /**\n * Set active tab by ID\n */\n setActiveTab(tabId) {\n const tab = this.config.tabs.find((t) => t.id === tabId);\n if (!tab || tab.disabled) return;\n const previousTabId = this.activeTabSubject.value;\n this.activeTabSubject.next(tabId);\n if (this.config.enableUrlRouting) {\n this.updateUrl(tabId);\n }\n this.tabChangeSubject.next({\n previousTabId,\n currentTabId: tabId,\n tab\n });\n }\n /**\n * Set active tab by index\n */\n setActiveTabByIndex(index) {\n const tab = this.config.tabs[index];\n if (tab) {\n this.setActiveTab(tab.id);\n }\n }\n /**\n * Get active tab ID\n */\n getActiveTabId() {\n return this.activeTabSubject.value;\n }\n /**\n * Get active tab\n */\n getActiveTab() {\n return this.config.tabs.find((t) => t.id === this.activeTabSubject.value);\n }\n /**\n * Get active tab index\n */\n getActiveTabIndex() {\n return this.config.tabs.findIndex((t) => t.id === this.activeTabSubject.value);\n }\n /**\n * Get all tabs\n */\n getTabs() {\n return this.tabsSubject.value;\n }\n /**\n * Observable of active tab ID\n */\n getActiveTabId$() {\n return this.activeTabSubject.asObservable().pipe(distinctUntilChanged());\n }\n /**\n * Observable of active tab\n */\n getActiveTab$() {\n return this.activeTabSubject.asObservable().pipe(\n distinctUntilChanged(),\n map((tabId) => this.config.tabs.find((t) => t.id === tabId))\n );\n }\n /**\n * Observable of tab change events\n */\n onTabChange$() {\n return this.tabChangeSubject.asObservable();\n }\n /**\n * Observable of all tabs\n */\n getTabs$() {\n return this.tabsSubject.asObservable().pipe(distinctUntilChanged());\n }\n /**\n * Update tabs\n */\n updateTabs(tabs) {\n var _a;\n this.config.tabs = tabs;\n this.tabsSubject.next(tabs);\n if (!tabs.find((t) => t.id === this.activeTabSubject.value)) {\n const newActiveTabId = ((_a = tabs[0]) == null ? void 0 : _a.id) || \"\";\n this.setActiveTab(newActiveTabId);\n }\n }\n /**\n * Add a tab\n */\n addTab(tab, index) {\n const tabs = [...this.config.tabs];\n if (index !== void 0) {\n tabs.splice(index, 0, tab);\n } else {\n tabs.push(tab);\n }\n this.updateTabs(tabs);\n }\n /**\n * Remove a tab\n */\n removeTab(tabId) {\n const tabs = this.config.tabs.filter((t) => t.id !== tabId);\n this.updateTabs(tabs);\n }\n /**\n * Enable/disable a tab\n */\n setTabDisabled(tabId, disabled) {\n const tabs = this.config.tabs.map(\n (t) => t.id === tabId ? { ...t, disabled } : t\n );\n this.updateTabs(tabs);\n if (disabled && this.activeTabSubject.value === tabId) {\n const enabledTab = tabs.find((t) => !t.disabled);\n if (enabledTab) {\n this.setActiveTab(enabledTab.id);\n }\n }\n }\n /**\n * Update tab badge\n */\n setTabBadge(tabId, badge) {\n const tabs = this.config.tabs.map(\n (t) => t.id === tabId ? { ...t, badge } : t\n );\n this.updateTabs(tabs);\n }\n /**\n * Move to next tab\n */\n nextTab() {\n const currentIndex = this.getActiveTabIndex();\n const nextIndex = (currentIndex + 1) % this.config.tabs.length;\n this.setActiveTabByIndex(nextIndex);\n }\n /**\n * Move to previous tab\n */\n previousTab() {\n const currentIndex = this.getActiveTabIndex();\n const prevIndex = currentIndex === 0 ? this.config.tabs.length - 1 : currentIndex - 1;\n this.setActiveTabByIndex(prevIndex);\n }\n /**\n * Destroy service and cleanup\n */\n destroy() {\n this.activeTabSubject.complete();\n this.tabsSubject.complete();\n this.tabChangeSubject.complete();\n }\n}\nexport {\n TabsService as T\n};\n//# sourceMappingURL=tabs-Ddbfrobf.js.map\n","import type { TabChangeEvent, TabsConfig } from '@codella/core/tabs';\nimport { TabsService } from '@codella/core/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","of","EMPTY","Subject$1","BehaviorSubject","timer","take","takeUntil","fromEvent","map","filter","tap","Observable$1","createContext","useContext","jsx","useCallback","config","TableBuilder","distinctUntilChanged"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/filters-and-sort/useFiltersAndSort.ts","../src/form-builder/useFormBuilder.ts","../../core/dist/live-updates/index.js","../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","../../core/dist/serializers-BRm6fxBM.js","../src/rich-content/useRichContent.ts","../src/table-builder/useTableService.ts","../../core/dist/tabs-Ddbfrobf.js","../src/tabs/useTabsHooks.tsx"],"sourcesContent":["// @ts-nocheck\n// TODO: Implement real hook when React bindings are finalized\nimport { FiltersAndSortService, type FilterAndSortState } from '@codella/core'\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/core'\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 { of, EMPTY, Subject as Subject$1, BehaviorSubject, timer, fromEvent, Observable as Observable$1 } from \"rxjs\";\nimport { take, takeUntil, map, filter, tap } from \"rxjs/operators\";\nclass LiveUpdateService {\n constructor(wsService, sseService) {\n this.wsService = wsService;\n this.sseService = sseService;\n this.activeType = null;\n this.isInitialized = false;\n this.eventMappings = {};\n }\n initialize(config2) {\n if (this.isInitialized) {\n return;\n }\n this.eventMappings = config2.eventMappings ?? {};\n if (config2.sseEnabled) {\n this.activeType = \"SSE\";\n this.sseService.connect().catch((error) => {\n console.error(\"[LiveUpdateService] SSE connection failed:\", error);\n if (config2.wsEnabled) {\n this.activeType = \"WebSocket\";\n this.wsService.connect();\n }\n });\n } else if (config2.wsEnabled) {\n this.activeType = \"WebSocket\";\n this.wsService.connect();\n }\n this.isInitialized = true;\n }\n get type() {\n return this.activeType;\n }\n get isConnected$() {\n switch (this.activeType) {\n case \"SSE\":\n return this.sseService.isConnected$;\n case \"WebSocket\":\n return this.wsService.isConnected$;\n default:\n return of(false);\n }\n }\n get canSend() {\n return this.activeType === \"WebSocket\";\n }\n /**\n * Subscribe to a named event using configured mappings\n */\n on(eventName) {\n const mapping = this.eventMappings[eventName];\n if (!mapping) {\n console.warn(`[LiveUpdateService] No mapping found for event: ${eventName}`);\n return EMPTY;\n }\n switch (this.activeType) {\n case \"SSE\":\n if (mapping.sseEvent) {\n return this.sseService.on(mapping.sseEvent);\n }\n break;\n case \"WebSocket\":\n if (mapping.wsAction) {\n return this.wsService.on(mapping.wsAction);\n }\n break;\n }\n return EMPTY;\n }\n /**\n * Send a message via WebSocket (if available)\n */\n send(action, payload) {\n if (!this.canSend) {\n console.warn(\"[LiveUpdateService] WebSocket not available for sending\");\n return;\n }\n this.wsService.sendMessage(action, payload);\n }\n disconnect() {\n this.sseService.disconnect();\n this.wsService.disconnect();\n this.activeType = null;\n this.isInitialized = false;\n }\n destroy() {\n this.sseService.destroy();\n this.wsService.destroy();\n this.activeType = null;\n this.isInitialized = false;\n }\n}\nconst DEFAULT_CONFIG = {\n maxReconnectAttempts: 5,\n initialReconnectDelay: 1e3,\n maxReconnectDelay: 3e4\n};\nclass BaseConnectionService {\n constructor(config2 = {}) {\n this.destroySubject$ = new Subject$1();\n this.messagesSubject$ = new Subject$1();\n this.connectionStatusSubject$ = new BehaviorSubject(false);\n this.reconnectAttempts = 0;\n this.messages$ = this.messagesSubject$.asObservable();\n this.isConnected$ = this.connectionStatusSubject$.asObservable();\n this.config = { ...DEFAULT_CONFIG, ...config2 };\n }\n getReconnectDelay(attempt) {\n return Math.min(\n this.config.initialReconnectDelay * Math.pow(2, attempt),\n this.config.maxReconnectDelay\n );\n }\n scheduleReconnect(connectFn) {\n if (this.reconnectAttempts >= this.config.maxReconnectAttempts) {\n console.error(`[${this.serviceName}] Max reconnection attempts reached`);\n return;\n }\n const delay = this.getReconnectDelay(this.reconnectAttempts);\n this.reconnectAttempts++;\n console.log(\n `[${this.serviceName}] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`\n );\n timer(delay).pipe(take(1), takeUntil(this.destroySubject$)).subscribe(() => connectFn());\n }\n resetReconnectAttempts() {\n this.reconnectAttempts = 0;\n }\n destroy() {\n this.disconnect();\n this.destroySubject$.next();\n this.destroySubject$.complete();\n this.messagesSubject$.complete();\n this.connectionStatusSubject$.complete();\n }\n}\nclass FetchEventSource {\n constructor(url, headers) {\n this.url = url;\n this.headers = headers;\n this.eventTarget = new EventTarget();\n this.abortController = null;\n }\n async connect() {\n var _a;\n this.abortController = new AbortController();\n try {\n const response = await fetch(this.url, {\n method: \"GET\",\n headers: this.headers,\n signal: this.abortController.signal\n });\n if (!response.ok) {\n const error = new Event(\"error\");\n this.eventTarget.dispatchEvent(error);\n return;\n }\n const openEvent = new Event(\"open\");\n this.eventTarget.dispatchEvent(openEvent);\n const reader = (_a = response.body) == null ? void 0 : _a.getReader();\n if (!reader) {\n const error = new Event(\"error\");\n this.eventTarget.dispatchEvent(error);\n return;\n }\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n for (let i = 0; i < lines.length - 1; i++) {\n this.processLine(lines[i]);\n }\n buffer = lines[lines.length - 1];\n }\n if (buffer.length > 0) {\n this.processLine(buffer);\n }\n } catch (error) {\n if (error instanceof Error && error.name !== \"AbortError\") {\n const errorEvent = new Event(\"error\");\n this.eventTarget.dispatchEvent(errorEvent);\n }\n }\n }\n processLine(line) {\n line = line.trim();\n if (line === \"\" || line.startsWith(\":\")) {\n return;\n }\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1) {\n return;\n }\n const field = line.substring(0, colonIndex);\n let value = line.substring(colonIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.substring(1);\n }\n if (field === \"data\") {\n const event = new MessageEvent(\"message\", {\n data: value\n });\n this.eventTarget.dispatchEvent(event);\n }\n }\n addEventListener(type, listener) {\n this.eventTarget.addEventListener(type, listener);\n }\n removeEventListener(type, listener) {\n this.eventTarget.removeEventListener(type, listener);\n }\n get onopen() {\n return this.eventTarget.onopen;\n }\n set onopen(handler) {\n if (this.eventTarget.onopen) {\n this.eventTarget.removeEventListener(\"open\", this.eventTarget.onopen);\n }\n if (handler) {\n this.eventTarget.addEventListener(\"open\", handler);\n this.eventTarget.onopen = handler;\n }\n }\n get onerror() {\n return this.eventTarget.onerror;\n }\n set onerror(handler) {\n if (this.eventTarget.onerror) {\n this.eventTarget.removeEventListener(\"error\", this.eventTarget.onerror);\n }\n if (handler) {\n this.eventTarget.addEventListener(\"error\", handler);\n this.eventTarget.onerror = handler;\n }\n }\n close() {\n var _a;\n (_a = this.abortController) == null ? void 0 : _a.abort();\n this.abortController = null;\n }\n}\nclass SSEService extends BaseConnectionService {\n constructor(config2) {\n super();\n this.eventSource = null;\n this.sseConfig = {\n headerName: \"Authorization\",\n headerPrefix: \"Bearer\",\n ...config2\n };\n }\n get serviceName() {\n return \"SSE\";\n }\n async connect() {\n if (this.eventSource) {\n return;\n }\n try {\n if (!this.sseConfig.authProvider.isAuthenticated()) {\n console.error(\"[SSE] Not authenticated\");\n return;\n }\n const idToken = await this.sseConfig.authProvider.getIdToken();\n if (!idToken) {\n console.error(\"[SSE] No auth token available\");\n return;\n }\n const headers = {\n [this.sseConfig.headerName]: `${this.sseConfig.headerPrefix} ${idToken}`\n };\n const url = new URL(this.sseConfig.url);\n this.eventSource = new FetchEventSource(url.toString(), headers);\n this.setupEventListeners();\n await this.eventSource.connect();\n } catch (error) {\n console.error(\"[SSE] Connection error:\", error);\n this.scheduleReconnect(() => this.connect());\n }\n }\n setupEventListeners() {\n if (!this.eventSource) return;\n this.eventSource.onopen = () => {\n console.log(\"[SSE] Connected\");\n this.connectionStatusSubject$.next(true);\n this.resetReconnectAttempts();\n };\n this.eventSource.onerror = (event) => {\n console.error(\"[SSE] Error:\", event);\n this.connectionStatusSubject$.next(false);\n this.cleanup();\n this.scheduleReconnect(() => this.connect());\n };\n fromEvent(this.eventSource, \"message\").pipe(\n takeUntil(this.destroySubject$),\n map((event) => {\n try {\n return JSON.parse(event.data);\n } catch (error) {\n console.error(\"[SSE] Parse error:\", error);\n return null;\n }\n }),\n filter((msg) => msg !== null)\n ).subscribe((message) => {\n this.messagesSubject$.next(message);\n });\n }\n cleanup() {\n var _a;\n (_a = this.eventSource) == null ? void 0 : _a.close();\n this.eventSource = null;\n }\n on(eventType) {\n return this.messages$.pipe(\n filter((msg) => msg.eventType === eventType),\n map((msg) => msg.data)\n );\n }\n disconnect() {\n this.cleanup();\n this.connectionStatusSubject$.next(false);\n this.resetReconnectAttempts();\n }\n destroy() {\n this.cleanup();\n this.destroySubject$.next();\n this.destroySubject$.complete();\n }\n}\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {\n d2.__proto__ = b2;\n } || function(d2, b2) {\n for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function() {\n __assign = Object.assign || function __assign2(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = { error };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function(error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction createErrorClass(createImpl) {\n var _super = function(instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\nvar UnsubscriptionError = createErrorClass(function(_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function(err, i) {\n return i + 1 + \") \" + err.toString();\n }).join(\"\\n \") : \"\";\n this.name = \"UnsubscriptionError\";\n this.errors = errors;\n };\n});\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\nvar Subscription = (function() {\n function Subscription2(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription2.prototype.unsubscribe = function() {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n } else {\n errors.push(err);\n }\n }\n }\n } catch (e_2_1) {\n e_2 = { error: e_2_1 };\n } finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription2.prototype.add = function(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription2) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription2.prototype._hasParent = function(parent) {\n var _parentage = this._parentage;\n return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);\n };\n Subscription2.prototype._addParent = function(parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription2.prototype._removeParent = function(parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription2.prototype.remove = function(teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription2) {\n teardown._removeParent(this);\n }\n };\n Subscription2.EMPTY = (function() {\n var empty = new Subscription2();\n empty.closed = true;\n return empty;\n })();\n return Subscription2;\n})();\nvar EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n return value instanceof Subscription || value && \"closed\" in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\nvar config = {\n Promise: void 0\n};\nvar timeoutProvider = {\n setTimeout: function(handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function(handle) {\n return clearTimeout(handle);\n },\n delegate: void 0\n};\nfunction reportUnhandledError(err) {\n timeoutProvider.setTimeout(function() {\n {\n throw err;\n }\n });\n}\nfunction noop() {\n}\nfunction errorContext(cb) {\n {\n cb();\n }\n}\nvar Subscriber = (function(_super) {\n __extends(Subscriber2, _super);\n function Subscriber2(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n } else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber2.create = function(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber2.prototype.next = function(value) {\n if (this.isStopped) ;\n else {\n this._next(value);\n }\n };\n Subscriber2.prototype.error = function(err) {\n if (this.isStopped) ;\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber2.prototype.complete = function() {\n if (this.isStopped) ;\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber2.prototype.unsubscribe = function() {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber2.prototype._next = function(value) {\n this.destination.next(value);\n };\n Subscriber2.prototype._error = function(err) {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n };\n Subscriber2.prototype._complete = function() {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n };\n return Subscriber2;\n})(Subscription);\nvar ConsumerObserver = (function() {\n function ConsumerObserver2(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver2.prototype.next = function(value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver2.prototype.error = function(err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver2.prototype.complete = function() {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver2;\n})();\nvar SafeSubscriber = (function(_super) {\n __extends(SafeSubscriber2, _super);\n function SafeSubscriber2(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0,\n error: error !== null && error !== void 0 ? error : void 0,\n complete: complete !== null && complete !== void 0 ? complete : void 0\n };\n } else {\n {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber2;\n})(Subscriber);\nfunction handleUnhandledError(error) {\n {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nvar EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop\n};\nvar observable = (function() {\n return typeof Symbol === \"function\" && Symbol.observable || \"@@observable\";\n})();\nfunction identity(x) {\n return x;\n}\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function(prev, fn) {\n return fn(prev);\n }, input);\n };\n}\nvar Observable = (function() {\n function Observable2(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable2.prototype.lift = function(operator) {\n var observable2 = new Observable2();\n observable2.source = this;\n observable2.operator = operator;\n return observable2;\n };\n Observable2.prototype.subscribe = function(observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function() {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable2.prototype._trySubscribe = function(sink) {\n try {\n return this._subscribe(sink);\n } catch (err) {\n sink.error(err);\n }\n };\n Observable2.prototype.forEach = function(next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function(resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function(value) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n _this.subscribe(subscriber);\n });\n };\n Observable2.prototype._subscribe = function(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable2.prototype[observable] = function() {\n return this;\n };\n Observable2.prototype.pipe = function() {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable2.prototype.toPromise = function(promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function(resolve, reject) {\n var value;\n _this.subscribe(function(x) {\n return value = x;\n }, function(err) {\n return reject(err);\n }, function() {\n return resolve(value);\n });\n });\n };\n Observable2.create = function(subscribe) {\n return new Observable2(subscribe);\n };\n return Observable2;\n})();\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);\n}\nvar ObjectUnsubscribedError = createErrorClass(function(_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = \"ObjectUnsubscribedError\";\n this.message = \"object unsubscribed\";\n };\n});\nvar Subject = (function(_super) {\n __extends(Subject2, _super);\n function Subject2() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject2.prototype.lift = function(operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject2.prototype._throwIfClosed = function() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject2.prototype.next = function(value) {\n var _this = this;\n errorContext(function() {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n } catch (e_1_1) {\n e_1 = { error: e_1_1 };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n });\n };\n Subject2.prototype.error = function(err) {\n var _this = this;\n errorContext(function() {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject2.prototype.complete = function() {\n var _this = this;\n errorContext(function() {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject2.prototype.unsubscribe = function() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject2.prototype, \"observed\", {\n get: function() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject2.prototype._trySubscribe = function(subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject2.prototype._subscribe = function(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject2.prototype._innerSubscribe = function(subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function() {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject2.prototype._checkFinalizedStatuses = function(subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject2.prototype.asObservable = function() {\n var observable2 = new Observable();\n observable2.source = this;\n return observable2;\n };\n Subject2.create = function(destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject2;\n})(Observable);\nvar AnonymousSubject = (function(_super) {\n __extends(AnonymousSubject2, _super);\n function AnonymousSubject2(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject2.prototype.next = function(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject2.prototype.error = function(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject2.prototype.complete = function() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject2.prototype._subscribe = function(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject2;\n})(Subject);\nvar dateTimestampProvider = {\n now: function() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: void 0\n};\nvar ReplaySubject = (function(_super) {\n __extends(ReplaySubject2, _super);\n function ReplaySubject2(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) {\n _bufferSize = Infinity;\n }\n if (_windowTime === void 0) {\n _windowTime = Infinity;\n }\n if (_timestampProvider === void 0) {\n _timestampProvider = dateTimestampProvider;\n }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject2.prototype.next = function(value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject2.prototype._subscribe = function(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject2.prototype._trimBuffer = function() {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject2;\n})(Subject);\nvar DEFAULT_WEBSOCKET_CONFIG = {\n url: \"\",\n deserializer: function(e) {\n return JSON.parse(e.data);\n },\n serializer: function(value) {\n return JSON.stringify(value);\n }\n};\nvar WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT = \"WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }\";\nvar WebSocketSubject = (function(_super) {\n __extends(WebSocketSubject2, _super);\n function WebSocketSubject2(urlConfigOrSource, destination) {\n var _this = _super.call(this) || this;\n _this._socket = null;\n if (urlConfigOrSource instanceof Observable) {\n _this.destination = destination;\n _this.source = urlConfigOrSource;\n } else {\n var config2 = _this._config = __assign({}, DEFAULT_WEBSOCKET_CONFIG);\n _this._output = new Subject();\n if (typeof urlConfigOrSource === \"string\") {\n config2.url = urlConfigOrSource;\n } else {\n for (var key in urlConfigOrSource) {\n if (urlConfigOrSource.hasOwnProperty(key)) {\n config2[key] = urlConfigOrSource[key];\n }\n }\n }\n if (!config2.WebSocketCtor && WebSocket) {\n config2.WebSocketCtor = WebSocket;\n } else if (!config2.WebSocketCtor) {\n throw new Error(\"no WebSocket constructor can be found\");\n }\n _this.destination = new ReplaySubject();\n }\n return _this;\n }\n WebSocketSubject2.prototype.lift = function(operator) {\n var sock = new WebSocketSubject2(this._config, this.destination);\n sock.operator = operator;\n sock.source = this;\n return sock;\n };\n WebSocketSubject2.prototype._resetState = function() {\n this._socket = null;\n if (!this.source) {\n this.destination = new ReplaySubject();\n }\n this._output = new Subject();\n };\n WebSocketSubject2.prototype.multiplex = function(subMsg, unsubMsg, messageFilter) {\n var self = this;\n return new Observable(function(observer) {\n try {\n self.next(subMsg());\n } catch (err) {\n observer.error(err);\n }\n var subscription = self.subscribe({\n next: function(x) {\n try {\n if (messageFilter(x)) {\n observer.next(x);\n }\n } catch (err) {\n observer.error(err);\n }\n },\n error: function(err) {\n return observer.error(err);\n },\n complete: function() {\n return observer.complete();\n }\n });\n return function() {\n try {\n self.next(unsubMsg());\n } catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n };\n WebSocketSubject2.prototype._connectSocket = function() {\n var _this = this;\n var _a = this._config, WebSocketCtor = _a.WebSocketCtor, protocol = _a.protocol, url = _a.url, binaryType = _a.binaryType;\n var observer = this._output;\n var socket = null;\n try {\n socket = protocol ? new WebSocketCtor(url, protocol) : new WebSocketCtor(url);\n this._socket = socket;\n if (binaryType) {\n this._socket.binaryType = binaryType;\n }\n } catch (e) {\n observer.error(e);\n return;\n }\n var subscription = new Subscription(function() {\n _this._socket = null;\n if (socket && socket.readyState === 1) {\n socket.close();\n }\n });\n socket.onopen = function(evt) {\n var _socket = _this._socket;\n if (!_socket) {\n socket.close();\n _this._resetState();\n return;\n }\n var openObserver = _this._config.openObserver;\n if (openObserver) {\n openObserver.next(evt);\n }\n var queue = _this.destination;\n _this.destination = Subscriber.create(function(x) {\n if (socket.readyState === 1) {\n try {\n var serializer = _this._config.serializer;\n socket.send(serializer(x));\n } catch (e) {\n _this.destination.error(e);\n }\n }\n }, function(err) {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(void 0);\n }\n if (err && err.code) {\n socket.close(err.code, err.reason);\n } else {\n observer.error(new TypeError(WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT));\n }\n _this._resetState();\n }, function() {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(void 0);\n }\n socket.close();\n _this._resetState();\n });\n if (queue && queue instanceof ReplaySubject) {\n subscription.add(queue.subscribe(_this.destination));\n }\n };\n socket.onerror = function(e) {\n _this._resetState();\n observer.error(e);\n };\n socket.onclose = function(e) {\n if (socket === _this._socket) {\n _this._resetState();\n }\n var closeObserver = _this._config.closeObserver;\n if (closeObserver) {\n closeObserver.next(e);\n }\n if (e.wasClean) {\n observer.complete();\n } else {\n observer.error(e);\n }\n };\n socket.onmessage = function(e) {\n try {\n var deserializer = _this._config.deserializer;\n observer.next(deserializer(e));\n } catch (err) {\n observer.error(err);\n }\n };\n };\n WebSocketSubject2.prototype._subscribe = function(subscriber) {\n var _this = this;\n var source = this.source;\n if (source) {\n return source.subscribe(subscriber);\n }\n if (!this._socket) {\n this._connectSocket();\n }\n this._output.subscribe(subscriber);\n subscriber.add(function() {\n var _socket = _this._socket;\n if (_this._output.observers.length === 0) {\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n _this._resetState();\n }\n });\n return subscriber;\n };\n WebSocketSubject2.prototype.unsubscribe = function() {\n var _socket = this._socket;\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n this._resetState();\n _super.prototype.unsubscribe.call(this);\n };\n return WebSocketSubject2;\n})(AnonymousSubject);\nfunction webSocket(urlConfigOrSource) {\n return new WebSocketSubject(urlConfigOrSource);\n}\nclass WebsocketService extends BaseConnectionService {\n constructor(config2) {\n super();\n this.socket$ = null;\n this.wsConfig = config2;\n }\n get serviceName() {\n return \"WS\";\n }\n connect() {\n if (this.socket$) {\n return;\n }\n this.socket$ = webSocket({\n url: this.wsConfig.url,\n openObserver: {\n next: () => {\n console.log(\"[WS] Connected\");\n this.connectionStatusSubject$.next(true);\n this.resetReconnectAttempts();\n this.sendMessage(\"INIT_CONNECTION\");\n }\n },\n closeObserver: {\n next: (event) => {\n console.log(\"[WS] Closed:\", event.code, event.reason);\n this.connectionStatusSubject$.next(false);\n this.socket$ = null;\n if (event.code !== 1e3 && event.reason !== \"Closing duplicate connection\") {\n this.scheduleReconnect(() => this.connect());\n }\n }\n }\n });\n this.socket$.pipe(\n takeUntil(this.destroySubject$),\n tap({\n error: (err) => {\n console.error(\"[WS] Error:\", err);\n this.connectionStatusSubject$.next(false);\n }\n })\n ).subscribe({\n next: (message) => {\n if (this.isIncomingMessage(message)) {\n this.messagesSubject$.next(message);\n }\n },\n error: (err) => console.error(\"[WS] Stream error:\", err)\n });\n }\n isIncomingMessage(msg) {\n return \"action\" in msg && !(\"Authorization\" in msg);\n }\n async sendMessage(action, payload) {\n if (!this.socket$ || !this.connectionStatusSubject$.value) {\n console.warn(\"[WS] Cannot send message - not connected\");\n return;\n }\n try {\n if (!this.wsConfig.authProvider.isAuthenticated()) {\n console.warn(`[WS] Cannot send message - not authenticated for action: ${action}`);\n return;\n }\n const idToken = await this.wsConfig.authProvider.getIdToken();\n if (!idToken) {\n console.warn(`[WS] Cannot send message - no auth token available for action: ${action}`);\n return;\n }\n this.socket$.next({\n Authorization: idToken,\n action,\n payload\n });\n } catch (error) {\n console.error(\"[WS] Error sending message:\", error);\n }\n }\n on(action) {\n return this.messages$.pipe(\n filter((msg) => msg.action === action),\n map((msg) => msg.payload)\n );\n }\n request(sendAction, responseAction, payload) {\n return new Observable$1((subscriber) => {\n const sub = this.on(responseAction).pipe(take(1)).subscribe(subscriber);\n this.sendMessage(sendAction, payload);\n return () => sub.unsubscribe();\n });\n }\n disconnect() {\n var _a;\n (_a = this.socket$) == null ? void 0 : _a.complete();\n this.socket$ = null;\n this.connectionStatusSubject$.next(false);\n this.resetReconnectAttempts();\n }\n destroy() {\n var _a;\n (_a = this.socket$) == null ? void 0 : _a.complete();\n this.socket$ = null;\n this.destroySubject$.next();\n this.destroySubject$.complete();\n this.messagesSubject$.complete();\n this.connectionStatusSubject$.complete();\n }\n}\nexport {\n LiveUpdateService,\n SSEService,\n WebsocketService\n};\n//# sourceMappingURL=index.js.map\n","import { FC, ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport {\n LiveUpdateService,\n SSEService,\n WebsocketService,\n type EventMapping,\n type LiveUpdateType,\n} from '@codella/core/live-updates';\nimport type { IAuthProvider } from '@codella/core';\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/core';\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/core/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/core/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/core/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","import { BehaviorSubject, Subject } from \"rxjs\";\nimport { map, distinctUntilChanged } from \"rxjs/operators\";\nclass DefaultContentEditableAdapter {\n constructor() {\n this.element = null;\n this.selection = null;\n this.handleInput = (e) => {\n };\n this.handlePaste = (e) => {\n };\n this.handleDrop = (e) => {\n };\n this.handleKeyDown = (e) => {\n };\n this.handleFocus = (e) => {\n };\n this.handleBlur = (e) => {\n };\n }\n mount(element) {\n this.element = element;\n this.setupEventListeners();\n }\n unmount() {\n if (this.element) {\n this.element.removeEventListener(\"input\", this.handleInput);\n this.element.removeEventListener(\"paste\", this.handlePaste);\n this.element.removeEventListener(\"drop\", this.handleDrop);\n this.element.removeEventListener(\"keydown\", this.handleKeyDown);\n this.element.removeEventListener(\"focus\", this.handleFocus);\n this.element.removeEventListener(\"blur\", this.handleBlur);\n }\n this.element = null;\n }\n syncFromDOM() {\n if (!this.element) {\n throw new Error(\"Adapter not mounted\");\n }\n const blocks = [];\n Array.from(this.element.children).forEach((child) => {\n const block = this.domNodeToBlock(child);\n if (block) {\n blocks.push(block);\n }\n });\n if (blocks.length === 0) {\n blocks.push({\n type: \"paragraph\",\n children: [{ type: \"text\", text: this.element.textContent || \"\" }]\n });\n }\n return {\n type: \"document\",\n version: \"1.0\",\n children: blocks\n };\n }\n syncToDOM(content) {\n if (!this.element) {\n throw new Error(\"Adapter not mounted\");\n }\n const hasFocus = this.element === document.activeElement;\n const selection = this.getSelection();\n this.element.innerHTML = \"\";\n content.children.forEach((block) => {\n const domNode = this.blockToDOM(block);\n this.element.appendChild(domNode);\n });\n if (hasFocus) {\n this.element.focus();\n }\n if (selection) {\n this.setSelection(selection);\n }\n }\n getSelection() {\n if (!this.element) return null;\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return null;\n const range = sel.getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(this.element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n const to = preCaretRange.toString().length;\n preCaretRange.setEnd(range.startContainer, range.startOffset);\n const from = preCaretRange.toString().length;\n return { from, to, backward: range.collapsed };\n }\n setSelection(selection) {\n if (!this.element) return;\n try {\n const range = this.calculateRangeFromOffsets(selection.from, selection.to);\n if (range) {\n const sel = window.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n } catch (error) {\n console.error(\"Error setting selection:\", error);\n }\n }\n focus() {\n if (this.element) {\n this.element.focus();\n }\n }\n isFocused() {\n return this.element === document.activeElement;\n }\n getCursorPos() {\n const selection = this.getSelection();\n return selection ? selection.to : null;\n }\n setCursorPos(pos) {\n this.setSelection({ from: pos, to: pos });\n }\n // =========================================================================\n // PRIVATE METHODS\n // =========================================================================\n setupEventListeners() {\n if (!this.element) return;\n this.element.addEventListener(\"input\", this.handleInput);\n this.element.addEventListener(\"paste\", this.handlePaste);\n this.element.addEventListener(\"drop\", this.handleDrop);\n this.element.addEventListener(\"keydown\", this.handleKeyDown);\n this.element.addEventListener(\"focus\", this.handleFocus);\n this.element.addEventListener(\"blur\", this.handleBlur);\n }\n /**\n * Convert DOM node to AST block\n */\n domNodeToBlock(node) {\n const tag = node.tagName.toLowerCase();\n switch (tag) {\n case \"p\":\n return {\n type: \"paragraph\",\n children: this.domNodesToContentChildren(node)\n };\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n const level = parseInt(tag[1]);\n return {\n type: \"heading\",\n level,\n children: this.domNodesToContentChildren(node)\n };\n case \"ul\":\n return {\n type: \"list\",\n listType: \"unordered\",\n children: Array.from(node.querySelectorAll(\":scope > li\")).map((li) => ({\n type: \"list-item\",\n children: this.domNodesToContentChildren(li),\n depth: 0\n }))\n };\n case \"ol\":\n return {\n type: \"list\",\n listType: \"ordered\",\n children: Array.from(node.querySelectorAll(\":scope > li\")).map((li) => ({\n type: \"list-item\",\n children: this.domNodesToContentChildren(li),\n depth: 0\n })),\n attrs: { start: parseInt(node.getAttribute(\"start\") || \"1\") }\n };\n case \"blockquote\":\n return {\n type: \"blockquote\",\n children: this.domNodesToContentChildren(node)\n };\n case \"hr\":\n return {\n type: \"horizontal-rule\"\n };\n default:\n return null;\n }\n }\n /**\n * Convert DOM children to ContentChild array\n */\n domNodesToContentChildren(parent) {\n const children = [];\n Array.from(parent.childNodes).forEach((domNode) => {\n if (domNode.nodeType === Node.TEXT_NODE) {\n const text = domNode.textContent || \"\";\n if (text.trim()) {\n children.push({\n type: \"text\",\n text,\n marks: []\n });\n }\n } else if (domNode.nodeType === Node.ELEMENT_NODE) {\n const element = domNode;\n const tag = element.tagName.toLowerCase();\n if (tag === \"img\") {\n const imgEl = element;\n children.push({\n type: \"image\",\n url: element.getAttribute(\"src\") || \"\",\n attrs: {\n alt: element.getAttribute(\"alt\") || void 0,\n title: element.getAttribute(\"title\") || void 0,\n width: imgEl.width,\n height: imgEl.height\n }\n });\n } else if (tag === \"span\" && element.hasAttribute(\"data-mention\")) {\n children.push({\n type: \"mention\",\n id: element.getAttribute(\"data-mention-id\") || \"\",\n label: element.textContent || \"\",\n meta: element.hasAttribute(\"data-mention-meta\") ? JSON.parse(element.getAttribute(\"data-mention-meta\") || \"{}\") : void 0\n });\n } else {\n const text = element.textContent || \"\";\n const marks = this.extractMarks(element);\n if (text.trim()) {\n children.push({\n type: \"text\",\n text,\n marks\n });\n }\n }\n }\n });\n if (children.length === 0) {\n children.push({ type: \"text\", text: \"\" });\n }\n return children;\n }\n /**\n * Extract marks from DOM element\n */\n extractMarks(element) {\n const marks = [];\n const tag = element.tagName.toLowerCase();\n if (tag === \"strong\" || tag === \"b\") marks.push({ type: \"bold\" });\n if (tag === \"em\" || tag === \"i\") marks.push({ type: \"italic\" });\n if (tag === \"u\") marks.push({ type: \"underline\" });\n if (tag === \"s\" || tag === \"del\") marks.push({ type: \"strikethrough\" });\n if (tag === \"code\") marks.push({ type: \"code\" });\n return marks;\n }\n /**\n * Convert AST block to DOM node\n */\n blockToDOM(block) {\n var _a;\n let el;\n switch (block.type) {\n case \"paragraph\":\n el = document.createElement(\"p\");\n const pBlock = block;\n pBlock.children.forEach((child) => {\n el.appendChild(this.contentChildToDOM(child));\n });\n return el;\n case \"heading\":\n const level = block.level || 1;\n el = document.createElement(`h${level}`);\n block.children.forEach((child) => {\n el.appendChild(this.contentChildToDOM(child));\n });\n return el;\n case \"list\":\n const listTag = block.listType === \"ordered\" ? \"ol\" : \"ul\";\n el = document.createElement(listTag);\n if (block.listType === \"ordered\" && ((_a = block.attrs) == null ? void 0 : _a.start)) {\n el.setAttribute(\"start\", String(block.attrs.start));\n }\n block.children.forEach((item) => {\n const li = document.createElement(\"li\");\n item.children.forEach((child) => {\n li.appendChild(this.contentChildToDOM(child));\n });\n el.appendChild(li);\n });\n return el;\n case \"blockquote\":\n el = document.createElement(\"blockquote\");\n block.children.forEach((child) => {\n el.appendChild(this.contentChildToDOM(child));\n });\n return el;\n case \"horizontal-rule\":\n return document.createElement(\"hr\");\n default:\n el = document.createElement(\"p\");\n }\n return el;\n }\n /**\n * Convert ContentChild to DOM node\n */\n contentChildToDOM(child) {\n var _a, _b, _c, _d;\n if (child.type === \"text\") {\n const textNode = child;\n let node = document.createTextNode(textNode.text);\n if (textNode.marks && textNode.marks.length > 0) {\n let span = document.createElement(\"span\");\n span.appendChild(node);\n textNode.marks.forEach((mark) => {\n switch (mark.type) {\n case \"bold\":\n const strong = document.createElement(\"strong\");\n strong.appendChild(span);\n span = strong;\n break;\n case \"italic\":\n const em = document.createElement(\"em\");\n em.appendChild(span);\n span = em;\n break;\n case \"underline\":\n span.style.textDecoration = \"underline\";\n break;\n case \"strikethrough\":\n const del = document.createElement(\"del\");\n del.appendChild(span);\n span = del;\n break;\n case \"code\":\n const code = document.createElement(\"code\");\n code.appendChild(span);\n span = code;\n break;\n }\n });\n node = span;\n }\n return node;\n } else if (child.type === \"image\") {\n const img = document.createElement(\"img\");\n img.src = child.url;\n if ((_a = child.attrs) == null ? void 0 : _a.alt) img.alt = child.attrs.alt;\n if ((_b = child.attrs) == null ? void 0 : _b.title) img.title = child.attrs.title;\n if ((_c = child.attrs) == null ? void 0 : _c.width) img.width = child.attrs.width;\n if ((_d = child.attrs) == null ? void 0 : _d.height) img.height = child.attrs.height;\n return img;\n } else if (child.type === \"mention\") {\n const span = document.createElement(\"span\");\n span.setAttribute(\"data-mention\", \"true\");\n span.setAttribute(\"data-mention-id\", child.id);\n span.textContent = `@${child.label}`;\n span.style.backgroundColor = \"#e3f2fd\";\n span.style.borderRadius = \"2px\";\n span.style.padding = \"0 2px\";\n return span;\n }\n return document.createTextNode(\"\");\n }\n /**\n * Calculate DOM range from flat offsets\n */\n calculateRangeFromOffsets(from, to) {\n if (!this.element) return null;\n try {\n const range = document.createRange();\n let charCount = 0;\n let startNode = null;\n let startOffset = 0;\n let endNode = null;\n let endOffset = 0;\n let foundStart = false;\n const traverse = (node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const nodeLength = node.length;\n if (!foundStart && charCount + nodeLength >= from) {\n startNode = node;\n startOffset = from - charCount;\n foundStart = true;\n }\n if (foundStart && charCount + nodeLength >= to) {\n endNode = node;\n endOffset = to - charCount;\n return true;\n }\n charCount += nodeLength;\n } else {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (traverse(node.childNodes[i])) {\n return true;\n }\n }\n }\n return false;\n };\n traverse(this.element);\n if (startNode && endNode) {\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n return range;\n }\n return null;\n } catch (error) {\n console.error(\"Error calculating range:\", error);\n return null;\n }\n }\n}\nclass ContentModel {\n constructor(doc) {\n this.document = doc || this.createEmptyDocument();\n }\n /**\n * Create empty document with single empty paragraph\n */\n static createEmpty() {\n return {\n type: \"document\",\n version: \"1.0\",\n children: [\n {\n type: \"paragraph\",\n children: [{ type: \"text\", text: \"\" }]\n }\n ]\n };\n }\n /**\n * Get the current document\n */\n getDocument() {\n return JSON.parse(JSON.stringify(this.document));\n }\n /**\n * Replace entire document\n */\n setDocument(doc) {\n this.document = JSON.parse(JSON.stringify(doc));\n }\n /**\n * Get all text content as plain string\n */\n getPlainText() {\n let text = \"\";\n const traverse = (node) => {\n if (node.type === \"text\") {\n text += node.text;\n } else if (\"children\" in node) {\n node.children.forEach(traverse);\n } else if (node.type === \"image\") {\n text += \"[Image]\";\n } else if (node.type === \"mention\") {\n text += `@${node.label}`;\n }\n };\n this.document.children.forEach(traverse);\n return text;\n }\n /**\n * Insert text at selection/cursor position\n */\n insertText(text, marks) {\n const doc = this.cloneDocument();\n const firstPara = this.getFirstParagraph(doc);\n if (firstPara && firstPara.children.length > 0) {\n const firstChild = firstPara.children[0];\n if (firstChild.type === \"text\") {\n firstChild.text += text;\n if (marks) {\n firstChild.marks = marks;\n }\n }\n }\n return doc;\n }\n /**\n * Insert a paragraph at the end\n */\n insertParagraph(content) {\n const doc = this.cloneDocument();\n doc.children.push({\n type: \"paragraph\",\n children: content || [{ type: \"text\", text: \"\" }]\n });\n return doc;\n }\n /**\n * Insert heading\n */\n insertHeading(level, content) {\n const doc = this.cloneDocument();\n doc.children.push({\n type: \"heading\",\n level,\n children: content || [{ type: \"text\", text: \"\" }]\n });\n return doc;\n }\n /**\n * Insert image\n */\n insertImage(url, attrs) {\n const doc = this.cloneDocument();\n const lastBlock = doc.children[doc.children.length - 1];\n if ((attrs == null ? void 0 : attrs.display) === \"block\") {\n doc.children.push({\n type: \"paragraph\",\n children: [\n {\n type: \"image\",\n url,\n attrs: attrs || {}\n }\n ]\n });\n } else {\n if (lastBlock && lastBlock.type === \"paragraph\") {\n lastBlock.children.push({\n type: \"image\",\n url,\n attrs: attrs || {}\n });\n } else {\n doc.children.push({\n type: \"paragraph\",\n children: [\n {\n type: \"image\",\n url,\n attrs: attrs || {}\n }\n ]\n });\n }\n }\n return doc;\n }\n /**\n * Insert mention\n */\n insertMention(id, label, meta) {\n const doc = this.cloneDocument();\n const lastBlock = doc.children[doc.children.length - 1];\n if (lastBlock && lastBlock.type === \"paragraph\") {\n lastBlock.children.push({\n type: \"mention\",\n id,\n label,\n meta\n });\n }\n return doc;\n }\n /**\n * Insert list\n */\n insertList(listType, items = [[]]) {\n const doc = this.cloneDocument();\n const children = items.map((item) => ({\n type: \"list-item\",\n children: item || [{ type: \"text\", text: \"\" }],\n depth: 0\n }));\n doc.children.push({\n type: \"list\",\n listType,\n children\n });\n return doc;\n }\n /**\n * Toggle a mark type on text in a range\n */\n toggleMark(mark, selection) {\n var _a;\n const doc = this.cloneDocument();\n const firstPara = this.getFirstParagraph(doc);\n if (firstPara && ((_a = firstPara.children[0]) == null ? void 0 : _a.type) === \"text\") {\n const textNode = firstPara.children[0];\n if (!textNode.marks) {\n textNode.marks = [];\n }\n const existingMark = textNode.marks.findIndex((m) => m.type === mark);\n if (existingMark >= 0) {\n textNode.marks.splice(existingMark, 1);\n } else {\n textNode.marks.push({ type: mark });\n }\n }\n return doc;\n }\n /**\n * Check if a mark type is active at cursor\n */\n isMarkActive(mark) {\n var _a, _b;\n const firstPara = this.getFirstParagraph(this.document);\n if (((_a = firstPara == null ? void 0 : firstPara.children[0]) == null ? void 0 : _a.type) === \"text\") {\n const textNode = firstPara.children[0];\n return ((_b = textNode.marks) == null ? void 0 : _b.some((m) => m.type === mark)) || false;\n }\n return false;\n }\n /**\n * Get active marks at cursor\n */\n getActiveMarks() {\n var _a, _b;\n const firstPara = this.getFirstParagraph(this.document);\n if (((_a = firstPara == null ? void 0 : firstPara.children[0]) == null ? void 0 : _a.type) === \"text\") {\n const textNode = firstPara.children[0];\n return ((_b = textNode.marks) == null ? void 0 : _b.map((m) => m.type)) || [];\n }\n return [];\n }\n /**\n * Delete content (simplified - deletes last block)\n */\n deleteContent(selection) {\n const doc = this.cloneDocument();\n if (doc.children.length > 1) {\n doc.children.pop();\n } else if (doc.children.length === 1 && doc.children[0].type === \"paragraph\") {\n doc.children[0].children = [{ type: \"text\", text: \"\" }];\n }\n return doc;\n }\n /**\n * Replace entire content\n */\n replaceContent(nodes) {\n const doc = this.cloneDocument();\n doc.children = nodes;\n return doc;\n }\n /**\n * Clone document (deep copy)\n */\n cloneDocument() {\n return JSON.parse(JSON.stringify(this.document));\n }\n /**\n * Get first paragraph in document\n */\n getFirstParagraph(doc) {\n for (const block of doc.children) {\n if (block.type === \"paragraph\") {\n return block;\n }\n }\n return null;\n }\n /**\n * Find node by predicate\n */\n findNode(predicate) {\n const search = (node) => {\n if (predicate(node)) {\n return node;\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n const result = search(child);\n if (result) return result;\n }\n }\n return null;\n };\n for (const child of this.document.children) {\n const result = search(child);\n if (result) return result;\n }\n return null;\n }\n /**\n * Count all nodes of a type\n */\n countNodes(type) {\n let count = 0;\n const traverse = (node) => {\n if (node.type === type) count++;\n if (\"children\" in node) {\n node.children.forEach(traverse);\n }\n };\n this.document.children.forEach(traverse);\n return count;\n }\n createEmptyDocument() {\n return ContentModel.createEmpty();\n }\n}\nclass RichContentService {\n constructor(config = {}) {\n this.history = [];\n this.historyIndex = -1;\n this.adapter = null;\n this.defaultImageHandler = async (file) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n var _a;\n resolve({ url: (_a = e.target) == null ? void 0 : _a.result });\n };\n reader.readAsDataURL(file);\n });\n };\n this.config = {\n initialContent: config.initialContent || ContentModel.createEmpty(),\n allowedMarks: config.allowedMarks || [\n \"bold\",\n \"italic\",\n \"underline\",\n \"strikethrough\",\n \"code\"\n ],\n allowedBlocks: config.allowedBlocks || [\n \"document\",\n \"paragraph\",\n \"heading\",\n \"list\",\n \"blockquote\",\n \"code-block\",\n \"horizontal-rule\"\n ],\n maxListDepth: config.maxListDepth ?? 3,\n imageUploadHandler: config.imageUploadHandler || this.defaultImageHandler,\n mentionProvider: config.mentionProvider || (() => Promise.resolve([])),\n middleware: config.middleware || {},\n enableHistory: config.enableHistory ?? true,\n maxHistorySteps: config.maxHistorySteps ?? 100,\n placeholder: config.placeholder || \"\",\n readOnly: config.readOnly ?? false\n };\n this.middleware = this.config.middleware;\n this.contentModel = new ContentModel(this.config.initialContent);\n this.contentSubject = new BehaviorSubject(\n this.contentModel.getDocument()\n );\n this.commandSubject = new Subject();\n this.mentionSubject = new Subject();\n this.stateSubject = new BehaviorSubject({\n content: this.contentModel.getDocument(),\n selection: null,\n canUndo: false,\n canRedo: false,\n isFocused: false,\n isDirty: false,\n mentions: {\n isActive: false,\n query: \"\",\n position: { x: 0, y: 0 }\n },\n selectedFormats: /* @__PURE__ */ new Set()\n });\n if (this.config.enableHistory) {\n this.history.push({\n content: this.contentModel.getDocument(),\n timestamp: Date.now()\n });\n this.historyIndex = 0;\n }\n this.commandSubject.subscribe((cmd) => this.executeCommand(cmd));\n }\n /**\n * Create service from empty state\n */\n static create(config) {\n return new RichContentService(config);\n }\n // =========================================================================\n // PUBLIC OBSERVABLES\n // =========================================================================\n /**\n * Get content$ observable\n */\n getContent$() {\n return this.contentSubject.asObservable();\n }\n /**\n * Get full state$ observable\n */\n getState$() {\n return this.stateSubject.asObservable();\n }\n /**\n * Get canUndo$ observable\n */\n getCanUndo$() {\n return this.stateSubject.pipe(\n map((s) => s.canUndo),\n distinctUntilChanged()\n );\n }\n /**\n * Get canRedo$ observable\n */\n getCanRedo$() {\n return this.stateSubject.pipe(\n map((s) => s.canRedo),\n distinctUntilChanged()\n );\n }\n /**\n * Get isFocused$ observable\n */\n getIsFocused$() {\n return this.stateSubject.pipe(\n map((s) => s.isFocused),\n distinctUntilChanged()\n );\n }\n /**\n * Get mentions$ observable - for autocomplete dropdown\n */\n getMentions$() {\n return this.mentionSubject.asObservable();\n }\n /**\n * Get selectedFormats$ observable\n */\n getSelectedFormats$() {\n return this.stateSubject.pipe(\n map((s) => s.selectedFormats || /* @__PURE__ */ new Set()),\n distinctUntilChanged()\n );\n }\n // =========================================================================\n // STATE GETTERS\n // =========================================================================\n getContent() {\n return this.contentSubject.getValue();\n }\n getState() {\n return this.stateSubject.getValue();\n }\n getPlainText() {\n return this.contentModel.getPlainText();\n }\n canUndo() {\n return this.historyIndex > 0;\n }\n canRedo() {\n return this.historyIndex < this.history.length - 1;\n }\n isFocused() {\n return this.getState().isFocused;\n }\n // =========================================================================\n // ADAPTER MANAGEMENT\n // =========================================================================\n /**\n * Attach DOM adapter for contentEditable syncing\n */\n attachAdapter(adapter) {\n this.adapter = adapter;\n const docFromDom = adapter.syncFromDOM();\n this.setContent(docFromDom);\n }\n /**\n * Detach adapter\n */\n detachAdapter() {\n if (this.adapter) {\n this.adapter.unmount();\n this.adapter = null;\n }\n }\n /**\n * Get attached adapter\n */\n getAdapter() {\n return this.adapter;\n }\n // =========================================================================\n // COMMAND EXECUTION\n // =========================================================================\n /**\n * Execute a command\n */\n execute(command, payload) {\n const cmd = typeof command === \"string\" ? { type: command, payload } : command;\n this.commandSubject.next(cmd);\n }\n /**\n * Execute text insertion\n */\n insertText(text, marks) {\n this.execute(\"insertText\", { text, marks });\n }\n /**\n * Execute paragraph insertion\n */\n insertParagraph() {\n this.execute(\"insertParagraph\");\n }\n /**\n * Execute heading insertion\n */\n insertHeading(level) {\n this.execute(\"insertHeading\", { level });\n }\n /**\n * Execute image insertion\n */\n insertImage(url, attrs) {\n this.execute(\"insertImage\", { url, attrs });\n }\n /**\n * Execute image upload\n */\n async uploadImage(file) {\n try {\n const result = await this.config.imageUploadHandler(file);\n this.insertImage(result.url, result.attrs);\n } catch (error) {\n console.error(\"Image upload failed:\", error);\n throw error;\n }\n }\n /**\n * Execute mention insertion\n */\n insertMention(id, label, meta) {\n this.execute(\"insertMention\", { id, label, meta });\n }\n /**\n * Execute list insertion\n */\n insertList(listType) {\n this.execute(\"insertList\", { listType });\n }\n /**\n * Execute mark toggle (bold, italic, etc.)\n */\n toggleMark(mark) {\n this.execute(\"toggleMark\", { mark });\n }\n /**\n * Delete content\n */\n deleteContent() {\n this.execute(\"deleteContent\");\n }\n /**\n * Set focus state\n */\n setFocus(focused) {\n const state = this.getState();\n state.isFocused = focused;\n this.stateSubject.next(state);\n }\n /**\n * Set selection\n */\n setSelection(selection) {\n const state = this.getState();\n state.selection = selection;\n this.stateSubject.next(state);\n }\n /**\n * Set mention query (triggers autocomplete)\n */\n setMentionQuery(query, position) {\n if (query.length > 0) {\n this.mentionSubject.next({ query, position });\n }\n }\n // =========================================================================\n // HISTORY (UNDO/REDO)\n // =========================================================================\n /**\n * Undo to previous state\n */\n undo() {\n if (this.canUndo()) {\n this.historyIndex--;\n this.applyHistoryState();\n }\n }\n /**\n * Redo to next state\n */\n redo() {\n if (this.canRedo()) {\n this.historyIndex++;\n this.applyHistoryState();\n }\n }\n /**\n * Clear history\n */\n clearHistory() {\n this.history = [{ content: this.getContent(), timestamp: Date.now() }];\n this.historyIndex = 0;\n this.updateHistoryState();\n }\n // =========================================================================\n // PRIVATE METHODS\n // =========================================================================\n executeCommand(cmd) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;\n if (this.config.readOnly) {\n console.warn(\"Editor is in read-only mode\");\n return;\n }\n this.getContent();\n let newContent;\n switch (cmd.type) {\n case \"insertText\":\n newContent = this.contentModel.insertText((_a = cmd.payload) == null ? void 0 : _a.text, (_b = cmd.payload) == null ? void 0 : _b.marks);\n break;\n case \"insertParagraph\":\n newContent = this.contentModel.insertParagraph((_c = cmd.payload) == null ? void 0 : _c.children);\n break;\n case \"insertHeading\":\n newContent = this.contentModel.insertHeading(\n ((_d = cmd.payload) == null ? void 0 : _d.level) || 1,\n (_e = cmd.payload) == null ? void 0 : _e.children\n );\n break;\n case \"insertImage\":\n newContent = this.contentModel.insertImage((_f = cmd.payload) == null ? void 0 : _f.url, (_g = cmd.payload) == null ? void 0 : _g.attrs);\n break;\n case \"insertMention\":\n newContent = this.contentModel.insertMention(\n (_h = cmd.payload) == null ? void 0 : _h.id,\n (_i = cmd.payload) == null ? void 0 : _i.label,\n (_j = cmd.payload) == null ? void 0 : _j.meta\n );\n break;\n case \"insertList\":\n newContent = this.contentModel.insertList((_k = cmd.payload) == null ? void 0 : _k.listType, (_l = cmd.payload) == null ? void 0 : _l.items);\n break;\n case \"toggleMark\":\n newContent = this.contentModel.toggleMark((_m = cmd.payload) == null ? void 0 : _m.mark, (_n = cmd.payload) == null ? void 0 : _n.selection);\n break;\n case \"deleteContent\":\n newContent = this.contentModel.deleteContent((_o = cmd.payload) == null ? void 0 : _o.selection);\n break;\n case \"replaceContent\":\n newContent = this.contentModel.replaceContent((_p = cmd.payload) == null ? void 0 : _p.nodes);\n break;\n default:\n console.warn(`Unknown command type: ${cmd.type}`);\n return;\n }\n if (this.config.enableHistory) {\n this.history = this.history.slice(0, this.historyIndex + 1);\n this.history.push({\n content: newContent,\n timestamp: Date.now()\n });\n if (this.history.length > this.config.maxHistorySteps) {\n this.history.shift();\n } else {\n this.historyIndex++;\n }\n }\n this.setContent(newContent);\n }\n setContent(doc) {\n this.contentModel.setDocument(doc);\n this.contentSubject.next(doc);\n const state = this.getState();\n state.content = doc;\n state.isDirty = true;\n state.selectedFormats = new Set(this.contentModel.getActiveMarks());\n this.stateSubject.next(state);\n if (this.adapter) {\n this.adapter.syncToDOM(doc);\n }\n this.updateHistoryState();\n }\n applyHistoryState() {\n const entry = this.history[this.historyIndex];\n this.contentModel.setDocument(entry.content);\n this.contentSubject.next(entry.content);\n const state = this.getState();\n state.content = entry.content;\n this.stateSubject.next(state);\n if (this.adapter) {\n this.adapter.syncToDOM(entry.content);\n }\n this.updateHistoryState();\n }\n updateHistoryState() {\n const state = this.getState();\n state.canUndo = this.canUndo();\n state.canRedo = this.canRedo();\n this.stateSubject.next(state);\n }\n}\nclass JSONSerializer {\n serialize(doc) {\n return JSON.stringify(doc, null, 2);\n }\n deserialize(json) {\n try {\n const doc = JSON.parse(json);\n if (!doc.type || doc.type !== \"document\" || !Array.isArray(doc.children)) {\n throw new Error(\"Invalid document structure\");\n }\n return doc;\n } catch (error) {\n console.error(\"Error deserializing JSON:\", error);\n throw error;\n }\n }\n}\nclass HTMLSerializer {\n serialize(doc) {\n return doc.children.map((block) => this.blockToHTML(block)).join(\"\\n\");\n }\n deserialize(html) {\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, \"text/html\");\n const children = [];\n doc.body.childNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const block = this.domToBlock(node);\n if (block) {\n children.push(block);\n }\n }\n });\n return {\n type: \"document\",\n version: \"1.0\",\n children: children.length > 0 ? children : [{ type: \"paragraph\", children: [] }]\n };\n }\n blockToHTML(block) {\n var _a, _b;\n switch (block.type) {\n case \"paragraph\":\n const pContent = block.children.map((child) => this.contentChildToHTML(child)).join(\"\");\n return `<p>${pContent}</p>`;\n case \"heading\":\n const level = block.level || 1;\n const hContent = block.children.map((child) => this.contentChildToHTML(child)).join(\"\");\n return `<h${level}>${hContent}</h${level}>`;\n case \"list\":\n const listTag = block.listType === \"ordered\" ? \"ol\" : \"ul\";\n const listAttrs = block.listType === \"ordered\" && ((_a = block.attrs) == null ? void 0 : _a.start) ? ` start=\"${block.attrs.start}\"` : \"\";\n const items = block.children.map((item) => {\n const itemContent = item.children.map((child) => this.contentChildToHTML(child)).join(\"\");\n return `<li>${itemContent}</li>`;\n }).join(\"\");\n return `<${listTag}${listAttrs}>${items}</${listTag}>`;\n case \"blockquote\":\n const bqContent = block.children.map((child) => this.contentChildToHTML(child)).join(\"\");\n return `<blockquote>${bqContent}</blockquote>`;\n case \"code-block\":\n const lang = ((_b = block.attrs) == null ? void 0 : _b.language) || \"\";\n const langAttr = lang ? ` class=\"language-${lang}\"` : \"\";\n return `<pre><code${langAttr}>${this.escape(block.code)}</code></pre>`;\n case \"horizontal-rule\":\n return \"<hr />\";\n default:\n return \"\";\n }\n }\n contentChildToHTML(child) {\n var _a, _b, _c, _d, _e;\n if (child.type === \"text\") {\n let html = this.escape(child.text);\n const marks = child.marks || [];\n for (const mark of marks) {\n switch (mark.type) {\n case \"bold\":\n html = `<strong>${html}</strong>`;\n break;\n case \"italic\":\n html = `<em>${html}</em>`;\n break;\n case \"underline\":\n html = `<u>${html}</u>`;\n break;\n case \"strikethrough\":\n html = `<del>${html}</del>`;\n break;\n case \"code\":\n html = `<code>${html}</code>`;\n break;\n case \"subscript\":\n html = `<sub>${html}</sub>`;\n break;\n case \"superscript\":\n html = `<sup>${html}</sup>`;\n break;\n }\n }\n return html;\n } else if (child.type === \"image\") {\n const img = child;\n const alt = this.escape(((_a = img.attrs) == null ? void 0 : _a.alt) || \"\");\n const title = ((_b = img.attrs) == null ? void 0 : _b.title) ? ` title=\"${this.escape(img.attrs.title)}\"` : \"\";\n const width = ((_c = img.attrs) == null ? void 0 : _c.width) ? ` width=\"${img.attrs.width}\"` : \"\";\n const height = ((_d = img.attrs) == null ? void 0 : _d.height) ? ` height=\"${img.attrs.height}\"` : \"\";\n const display = ((_e = img.attrs) == null ? void 0 : _e.display) === \"block\" ? ' style=\"display:block\"' : \"\";\n return `<img src=\"${this.escape(img.url)}\" alt=\"${alt}\"${title}${width}${height}${display} />`;\n } else if (child.type === \"mention\") {\n const mention = child;\n const meta = mention.meta ? ` data-meta='${JSON.stringify(mention.meta)}'` : \"\";\n return `<span data-mention=\"${mention.id}\"${meta}>@${this.escape(mention.label)}</span>`;\n }\n return \"\";\n }\n domToBlock(element) {\n const tag = element.tagName.toLowerCase();\n switch (tag) {\n case \"p\":\n return {\n type: \"paragraph\",\n children: this.domChildrenToContentChildren(element)\n };\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n const level = parseInt(tag[1]);\n return {\n type: \"heading\",\n level,\n children: this.domChildrenToContentChildren(element)\n };\n case \"ul\":\n return {\n type: \"list\",\n listType: \"unordered\",\n children: Array.from(element.querySelectorAll(\":scope > li\")).map((li) => ({\n type: \"list-item\",\n children: this.domChildrenToContentChildren(li)\n }))\n };\n case \"ol\":\n return {\n type: \"list\",\n listType: \"ordered\",\n children: Array.from(element.querySelectorAll(\":scope > li\")).map((li) => ({\n type: \"list-item\",\n children: this.domChildrenToContentChildren(li)\n })),\n attrs: { start: parseInt(element.getAttribute(\"start\") || \"1\") }\n };\n case \"blockquote\":\n return {\n type: \"blockquote\",\n children: this.domChildrenToContentChildren(element)\n };\n case \"pre\":\n const codeEl = element.querySelector(\"code\");\n return {\n type: \"code-block\",\n code: (codeEl == null ? void 0 : codeEl.textContent) || \"\",\n attrs: {\n language: codeEl == null ? void 0 : codeEl.className.replace(\"language-\", \"\")\n }\n };\n case \"hr\":\n return {\n type: \"horizontal-rule\"\n };\n default:\n return null;\n }\n }\n domChildrenToContentChildren(parent) {\n const children = [];\n Array.from(parent.childNodes).forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent || \"\";\n if (text.trim()) {\n children.push({\n type: \"text\",\n text\n });\n }\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node;\n const tag = element.tagName.toLowerCase();\n if (tag === \"img\") {\n const imgEl = element;\n children.push({\n type: \"image\",\n url: element.getAttribute(\"src\") || \"\",\n attrs: {\n alt: element.getAttribute(\"alt\") || void 0,\n title: element.getAttribute(\"title\") || void 0,\n width: imgEl.width,\n height: imgEl.height\n }\n });\n } else if (tag === \"span\" && element.hasAttribute(\"data-mention\")) {\n children.push({\n type: \"mention\",\n id: element.getAttribute(\"data-mention\") || \"\",\n label: element.textContent || \"\",\n meta: element.hasAttribute(\"data-meta\") ? JSON.parse(element.getAttribute(\"data-meta\") || \"{}\") : void 0\n });\n } else {\n const text = element.textContent || \"\";\n if (text.trim()) {\n children.push({\n type: \"text\",\n text,\n marks: this.domElementToMarks(tag)\n });\n }\n }\n }\n });\n return children.length > 0 ? children : [{ type: \"text\", text: \"\" }];\n }\n domElementToMarks(tag) {\n const marks = [];\n switch (tag) {\n case \"strong\":\n case \"b\":\n marks.push({ type: \"bold\" });\n break;\n case \"em\":\n case \"i\":\n marks.push({ type: \"italic\" });\n break;\n case \"u\":\n marks.push({ type: \"underline\" });\n break;\n case \"del\":\n case \"s\":\n marks.push({ type: \"strikethrough\" });\n break;\n case \"code\":\n marks.push({ type: \"code\" });\n break;\n case \"sub\":\n marks.push({ type: \"subscript\" });\n break;\n case \"sup\":\n marks.push({ type: \"superscript\" });\n break;\n }\n return marks;\n }\n escape(text) {\n const div = document.createElement(\"div\");\n div.textContent = text;\n return div.innerHTML;\n }\n}\nclass PlainTextSerializer {\n serialize(doc) {\n return doc.children.map((block) => this.blockToPlainText(block)).join(\"\\n\\n\");\n }\n deserialize(text) {\n const paragraphs = text.split(\"\\n\\n\");\n const children = paragraphs.filter((p) => p.trim()).map((p) => ({\n type: \"paragraph\",\n children: [{ type: \"text\", text: p }]\n }));\n return {\n type: \"document\",\n version: \"1.0\",\n children: children.length > 0 ? children : [{ type: \"paragraph\", children: [{ type: \"text\", text: \"\" }] }]\n };\n }\n blockToPlainText(block) {\n switch (block.type) {\n case \"paragraph\":\n return block.children.map((child) => this.contentChildToPlainText(child)).join(\"\");\n case \"heading\":\n const level = block.level || 1;\n const prefix = \"#\".repeat(level) + \" \";\n const content = block.children.map((child) => this.contentChildToPlainText(child)).join(\"\");\n return prefix + content;\n case \"list\":\n return block.children.map((item, i) => {\n const bullet = block.listType === \"ordered\" ? `${i + 1}. ` : \"• \";\n const content2 = item.children.map((child) => this.contentChildToPlainText(child)).join(\"\");\n return bullet + content2;\n }).join(\"\\n\");\n case \"blockquote\":\n const bqContent = block.children.map((child) => this.contentChildToPlainText(child)).join(\"\");\n return \"> \" + bqContent;\n case \"code-block\":\n return \"```\\n\" + block.code + \"\\n```\";\n case \"horizontal-rule\":\n return \"---\";\n default:\n return \"\";\n }\n }\n contentChildToPlainText(child) {\n var _a;\n if (child.type === \"text\") {\n return child.text;\n } else if (child.type === \"image\") {\n return \"[Image: \" + (((_a = child.attrs) == null ? void 0 : _a.alt) || child.url) + \"]\";\n } else if (child.type === \"mention\") {\n return \"@\" + (child.label || child.id);\n }\n return \"\";\n }\n}\nexport {\n ContentModel as C,\n DefaultContentEditableAdapter as D,\n HTMLSerializer as H,\n JSONSerializer as J,\n PlainTextSerializer as P,\n RichContentService as R\n};\n//# sourceMappingURL=serializers-BRm6fxBM.js.map\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/core/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/core/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/core'\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 { BehaviorSubject } from \"rxjs\";\nimport { distinctUntilChanged, map } from \"rxjs/operators\";\nclass TabsService {\n constructor(config) {\n this.config = config;\n this.urlParam = config.urlParam || \"tab\";\n this.tabsSubject = new BehaviorSubject(config.tabs);\n const initialTabId = this.getInitialTabId();\n this.activeTabSubject = new BehaviorSubject(initialTabId);\n this.tabChangeSubject = new BehaviorSubject(null);\n if (this.config.enableUrlRouting) {\n this.setupUrlRouting();\n }\n }\n /**\n * Get initial tab ID from URL or config\n */\n getInitialTabId() {\n var _a;\n if (this.config.enableUrlRouting && typeof window !== \"undefined\") {\n const params = new URLSearchParams(window.location.search);\n const urlTabId = params.get(this.urlParam);\n if (urlTabId && this.config.tabs.some((t) => t.id === urlTabId)) {\n return urlTabId;\n }\n }\n return this.config.defaultTabId || ((_a = this.config.tabs[0]) == null ? void 0 : _a.id) || \"\";\n }\n /**\n * Setup URL routing listener\n */\n setupUrlRouting() {\n if (typeof window === \"undefined\") return;\n const handleUrlChange = () => {\n const params = new URLSearchParams(window.location.search);\n const urlTabId = params.get(this.urlParam);\n if (urlTabId && urlTabId !== this.activeTabSubject.value) {\n this.setActiveTab(urlTabId);\n }\n };\n window.addEventListener(\"popstate\", handleUrlChange);\n }\n /**\n * Update URL with current active tab\n */\n updateUrl(tabId) {\n if (!this.config.enableUrlRouting || typeof window === \"undefined\") return;\n const params = new URLSearchParams(window.location.search);\n params.set(this.urlParam, tabId);\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n window.history.pushState({ tab: tabId }, \"\", newUrl);\n }\n /**\n * Set active tab by ID\n */\n setActiveTab(tabId) {\n const tab = this.config.tabs.find((t) => t.id === tabId);\n if (!tab || tab.disabled) return;\n const previousTabId = this.activeTabSubject.value;\n this.activeTabSubject.next(tabId);\n if (this.config.enableUrlRouting) {\n this.updateUrl(tabId);\n }\n this.tabChangeSubject.next({\n previousTabId,\n currentTabId: tabId,\n tab\n });\n }\n /**\n * Set active tab by index\n */\n setActiveTabByIndex(index) {\n const tab = this.config.tabs[index];\n if (tab) {\n this.setActiveTab(tab.id);\n }\n }\n /**\n * Get active tab ID\n */\n getActiveTabId() {\n return this.activeTabSubject.value;\n }\n /**\n * Get active tab\n */\n getActiveTab() {\n return this.config.tabs.find((t) => t.id === this.activeTabSubject.value);\n }\n /**\n * Get active tab index\n */\n getActiveTabIndex() {\n return this.config.tabs.findIndex((t) => t.id === this.activeTabSubject.value);\n }\n /**\n * Get all tabs\n */\n getTabs() {\n return this.tabsSubject.value;\n }\n /**\n * Observable of active tab ID\n */\n getActiveTabId$() {\n return this.activeTabSubject.asObservable().pipe(distinctUntilChanged());\n }\n /**\n * Observable of active tab\n */\n getActiveTab$() {\n return this.activeTabSubject.asObservable().pipe(\n distinctUntilChanged(),\n map((tabId) => this.config.tabs.find((t) => t.id === tabId))\n );\n }\n /**\n * Observable of tab change events\n */\n onTabChange$() {\n return this.tabChangeSubject.asObservable();\n }\n /**\n * Observable of all tabs\n */\n getTabs$() {\n return this.tabsSubject.asObservable().pipe(distinctUntilChanged());\n }\n /**\n * Update tabs\n */\n updateTabs(tabs) {\n var _a;\n this.config.tabs = tabs;\n this.tabsSubject.next(tabs);\n if (!tabs.find((t) => t.id === this.activeTabSubject.value)) {\n const newActiveTabId = ((_a = tabs[0]) == null ? void 0 : _a.id) || \"\";\n this.setActiveTab(newActiveTabId);\n }\n }\n /**\n * Add a tab\n */\n addTab(tab, index) {\n const tabs = [...this.config.tabs];\n if (index !== void 0) {\n tabs.splice(index, 0, tab);\n } else {\n tabs.push(tab);\n }\n this.updateTabs(tabs);\n }\n /**\n * Remove a tab\n */\n removeTab(tabId) {\n const tabs = this.config.tabs.filter((t) => t.id !== tabId);\n this.updateTabs(tabs);\n }\n /**\n * Enable/disable a tab\n */\n setTabDisabled(tabId, disabled) {\n const tabs = this.config.tabs.map(\n (t) => t.id === tabId ? { ...t, disabled } : t\n );\n this.updateTabs(tabs);\n if (disabled && this.activeTabSubject.value === tabId) {\n const enabledTab = tabs.find((t) => !t.disabled);\n if (enabledTab) {\n this.setActiveTab(enabledTab.id);\n }\n }\n }\n /**\n * Update tab badge\n */\n setTabBadge(tabId, badge) {\n const tabs = this.config.tabs.map(\n (t) => t.id === tabId ? { ...t, badge } : t\n );\n this.updateTabs(tabs);\n }\n /**\n * Move to next tab\n */\n nextTab() {\n const currentIndex = this.getActiveTabIndex();\n const nextIndex = (currentIndex + 1) % this.config.tabs.length;\n this.setActiveTabByIndex(nextIndex);\n }\n /**\n * Move to previous tab\n */\n previousTab() {\n const currentIndex = this.getActiveTabIndex();\n const prevIndex = currentIndex === 0 ? this.config.tabs.length - 1 : currentIndex - 1;\n this.setActiveTabByIndex(prevIndex);\n }\n /**\n * Destroy service and cleanup\n */\n destroy() {\n this.activeTabSubject.complete();\n this.tabsSubject.complete();\n this.tabChangeSubject.complete();\n }\n}\nexport {\n TabsService as T\n};\n//# sourceMappingURL=tabs-Ddbfrobf.js.map\n","import type { TabChangeEvent, TabsConfig } from '@codella/core/tabs';\nimport { TabsService } from '@codella/core/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","of","EMPTY","Subject$1","BehaviorSubject","timer","take","takeUntil","fromEvent","map","filter","tap","Observable$1","createContext","useContext","jsx","useCallback","config","Subject","distinctUntilChanged","useRef","TableBuilder"],"mappings":"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"}