doxum 0.1.32 → 0.1.34

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":"react.cjs","names":[],"sources":["../react/src/hooks.ts"],"sourcesContent":["import type {\n ReadonlyDocument,\n ObjectSchema,\n DocumentSelector,\n HistoryState,\n LocalHistory,\n OperationResult,\n Readable,\n ProjectionRuntime,\n ProjectionScope,\n Projection,\n Input,\n CollectionInput,\n CollectionInputDraft,\n} from 'doxum';\nimport { select } from 'doxum';\nimport { createContext, useCallback, useContext, useMemo, useSyncExternalStore } from 'react';\n\nconst ProjectionContext = createContext<ProjectionRuntime | ProjectionScope | undefined>(undefined);\nexport const ProjectionProvider = ProjectionContext.Provider;\n\nexport function useProjection<T>(projection: Projection<T>): T;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector: (value: T) => R,\n equality?: (previous: R, next: R) => boolean\n): R;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector?: (value: T) => R,\n equality: (previous: R, next: R) => boolean = Object.is\n): T | R {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const readable = useMemo(\n () => (selector ? owner.select(projection, selector, equality) : owner.select(projection)),\n [equality, owner, projection, selector]\n );\n return useReadable(readable as Readable<T | R>);\n}\n\nexport function useInput<T>(input: Input<T>): readonly [T, (value: T) => void];\nexport function useInput<K extends string, V>(\n input: CollectionInput<K, V>\n): readonly [ReadonlyMap<K, V>, (run: (draft: CollectionInputDraft<K, V>) => void) => void];\nexport function useInput(input: Projection<unknown>): readonly [unknown, (next: never) => void] {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const value = useProjection(input);\n const update = useCallback(\n (next: never) =>\n (owner.update as (target: Projection<unknown>, next: unknown) => void)(input, next),\n [input, owner]\n );\n return useMemo(() => [value, update] as const, [update, value]);\n}\n\nconst objectIs = <T>(previous: T, next: T): boolean => Object.is(previous, next);\n\nexport function useDocumentSelector<TSchema extends ObjectSchema<object>, TResult>(\n runtime: ReadonlyDocument<TSchema>,\n selector: DocumentSelector<TSchema, TResult>,\n equality: (previous: TResult, next: TResult) => boolean = objectIs\n): TResult {\n const readable = useMemo(\n () => select(runtime, selector, equality),\n [equality, runtime, selector]\n );\n return useReadable(readable);\n}\n\nexport function useReadable<T>(readable: Readable<T>): T {\n const subscribe = useCallback((listener: () => void) => readable.subscribe(listener), [readable]);\n const read = useCallback(() => readable.current(), [readable]);\n return useSyncExternalStore(subscribe, read, read);\n}\n\nexport function useHistory<TCommit>(history: LocalHistory<TCommit>): HistoryState & {\n undo(): OperationResult<TCommit>;\n redo(): OperationResult<TCommit>;\n} {\n const subscribe = useCallback((listener: () => void) => history.subscribe(listener), [history]);\n const read = useCallback(() => history.current(), [history]);\n const state = useSyncExternalStore(subscribe, read, read);\n const undo = useCallback(() => history.undo(), [history]);\n const redo = useCallback(() => history.redo(), [history]);\n\n return useMemo(() => ({ ...state, undo, redo }), [redo, state, undo]);\n}\n"],"mappings":";;;;AAkBA,MAAM,qBAAA,GAAA,MAAA,eAAmF,KAAA,EAAU;AACnG,MAAa,qBAAqB,kBAAkB;AAQpD,SAAgB,cACd,YACA,UACA,WAA8C,OAAO,IAC9C;CAEP,MAAM,SAAA,GAAA,MAAA,YADqB,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;AAK7D,QAAO,aAAA,GAAA,MAAA,eAHE,WAAW,MAAM,OAAO,YAAY,UAAU,SAAS,GAAG,MAAM,OAAO,WAAW,EACzF;EAAC;EAAU;EAAO;EAAY;EAAS,CAEd,CAAoB;;AAOjD,SAAgB,SAAS,OAAuE;CAE9F,MAAM,SAAA,GAAA,MAAA,YADqB,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;CAC7D,MAAM,QAAQ,cAAc,MAAM;CAClC,MAAM,UAAA,GAAA,MAAA,cACH,SACE,MAAM,OAAgE,OAAO,KAAK,EACrF,CAAC,OAAO,MAAM,CACf;AACD,SAAA,GAAA,MAAA,eAAqB,CAAC,OAAO,OAAO,EAAW,CAAC,QAAQ,MAAM,CAAC;;AAGjE,MAAM,YAAe,UAAa,SAAqB,OAAO,GAAG,UAAU,KAAK;AAEhF,SAAgB,oBACd,SACA,UACA,WAA0D,UACjD;AAKT,QAAO,aAAA,GAAA,MAAA,gBAAA,GAAA,MAAA,QAHQ,SAAS,UAAU,SAAS,EACzC;EAAC;EAAU;EAAS;EAAS,CAEJ,CAAC;;AAG9B,SAAgB,YAAe,UAA0B;CACvD,MAAM,aAAA,GAAA,MAAA,cAAyB,aAAyB,SAAS,UAAU,SAAS,EAAE,CAAC,SAAS,CAAC;CACjG,MAAM,QAAA,GAAA,MAAA,mBAAyB,SAAS,SAAS,EAAE,CAAC,SAAS,CAAC;AAC9D,SAAA,GAAA,MAAA,sBAA4B,WAAW,MAAM,KAAK;;AAGpD,SAAgB,WAAoB,SAGlC;CACA,MAAM,aAAA,GAAA,MAAA,cAAyB,aAAyB,QAAQ,UAAU,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC/F,MAAM,QAAA,GAAA,MAAA,mBAAyB,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC5D,MAAM,SAAA,GAAA,MAAA,sBAA6B,WAAW,MAAM,KAAK;CACzD,MAAM,QAAA,GAAA,MAAA,mBAAyB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;CACzD,MAAM,QAAA,GAAA,MAAA,mBAAyB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;AAEzD,SAAA,GAAA,MAAA,gBAAsB;EAAE,GAAG;EAAO;EAAM;EAAM,GAAG;EAAC;EAAM;EAAO;EAAK,CAAC"}
1
+ {"version":3,"file":"react.cjs","names":[],"sources":["../react/src/hooks.ts"],"sourcesContent":["import type {\n ReadonlyDocument,\n ObjectSchema,\n DocumentSelector,\n HistoryState,\n LocalHistory,\n OperationResult,\n Readable,\n ProjectionRuntime,\n ProjectionScope,\n Projection,\n Input,\n CollectionInput,\n CollectionInputDraft,\n} from 'doxum';\nimport { select } from 'doxum';\nimport { createContext, useCallback, useContext, useMemo, useSyncExternalStore } from 'react';\n\nconst ProjectionContext = createContext<ProjectionRuntime | ProjectionScope | undefined>(undefined);\nexport const ProjectionProvider = ProjectionContext.Provider;\n\nexport function useProjection<T>(projection: Projection<T>): T;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector: (value: T) => R,\n equality?: (previous: R, next: R) => boolean\n): R;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector?: (value: T) => R,\n equality: (previous: R, next: R) => boolean = Object.is\n): T | R {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const readable = useMemo(\n () => (selector ? owner.select(projection, selector, equality) : owner.select(projection)),\n [equality, owner, projection, selector]\n );\n return useReadable(readable as Readable<T | R>);\n}\n\nexport function useInput<T>(input: Input<T>): readonly [T, (value: T) => void];\nexport function useInput<K extends string, V>(\n input: CollectionInput<K, V>\n): readonly [\n ReadonlyMap<K, V>,\n <R>(\n run: (draft: CollectionInputDraft<K, V>) => R extends PromiseLike<unknown> ? never : R\n ) => void,\n];\nexport function useInput(input: Projection<unknown>): readonly [unknown, (next: never) => void] {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const value = useProjection(input);\n const update = useCallback(\n (next: never) =>\n (owner.update as (target: Projection<unknown>, next: unknown) => void)(input, next),\n [input, owner]\n );\n return useMemo(() => [value, update] as const, [update, value]);\n}\n\nconst objectIs = <T>(previous: T, next: T): boolean => Object.is(previous, next);\n\nexport function useDocumentSelector<TSchema extends ObjectSchema<object>, TResult>(\n runtime: ReadonlyDocument<TSchema>,\n selector: DocumentSelector<TSchema, TResult>,\n equality: (previous: TResult, next: TResult) => boolean = objectIs\n): TResult {\n const readable = useMemo(\n () => select(runtime, selector, equality),\n [equality, runtime, selector]\n );\n return useReadable(readable);\n}\n\nexport function useReadable<T>(readable: Readable<T>): T {\n const subscribe = useCallback((listener: () => void) => readable.subscribe(listener), [readable]);\n const read = useCallback(() => readable.current(), [readable]);\n return useSyncExternalStore(subscribe, read, read);\n}\n\nexport function useHistory<TCommit>(history: LocalHistory<TCommit>): HistoryState & {\n undo(): OperationResult<TCommit>;\n redo(): OperationResult<TCommit>;\n} {\n const subscribe = useCallback((listener: () => void) => history.subscribe(listener), [history]);\n const read = useCallback(() => history.current(), [history]);\n const state = useSyncExternalStore(subscribe, read, read);\n const undo = useCallback(() => history.undo(), [history]);\n const redo = useCallback(() => history.redo(), [history]);\n\n return useMemo(() => ({ ...state, undo, redo }), [redo, state, undo]);\n}\n"],"mappings":";;;;AAkBA,MAAM,qBAAA,GAAA,MAAA,eAAmF,KAAA,EAAU;AACnG,MAAa,qBAAqB,kBAAkB;AAQpD,SAAgB,cACd,YACA,UACA,WAA8C,OAAO,IAC9C;CAEP,MAAM,SAAA,GAAA,MAAA,YADqB,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;AAK7D,QAAO,aAAA,GAAA,MAAA,eAHE,WAAW,MAAM,OAAO,YAAY,UAAU,SAAS,GAAG,MAAM,OAAO,WAAW,EACzF;EAAC;EAAU;EAAO;EAAY;EAAS,CAEd,CAAoB;;AAYjD,SAAgB,SAAS,OAAuE;CAE9F,MAAM,SAAA,GAAA,MAAA,YADqB,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;CAC7D,MAAM,QAAQ,cAAc,MAAM;CAClC,MAAM,UAAA,GAAA,MAAA,cACH,SACE,MAAM,OAAgE,OAAO,KAAK,EACrF,CAAC,OAAO,MAAM,CACf;AACD,SAAA,GAAA,MAAA,eAAqB,CAAC,OAAO,OAAO,EAAW,CAAC,QAAQ,MAAM,CAAC;;AAGjE,MAAM,YAAe,UAAa,SAAqB,OAAO,GAAG,UAAU,KAAK;AAEhF,SAAgB,oBACd,SACA,UACA,WAA0D,UACjD;AAKT,QAAO,aAAA,GAAA,MAAA,gBAAA,GAAA,MAAA,QAHQ,SAAS,UAAU,SAAS,EACzC;EAAC;EAAU;EAAS;EAAS,CAEJ,CAAC;;AAG9B,SAAgB,YAAe,UAA0B;CACvD,MAAM,aAAA,GAAA,MAAA,cAAyB,aAAyB,SAAS,UAAU,SAAS,EAAE,CAAC,SAAS,CAAC;CACjG,MAAM,QAAA,GAAA,MAAA,mBAAyB,SAAS,SAAS,EAAE,CAAC,SAAS,CAAC;AAC9D,SAAA,GAAA,MAAA,sBAA4B,WAAW,MAAM,KAAK;;AAGpD,SAAgB,WAAoB,SAGlC;CACA,MAAM,aAAA,GAAA,MAAA,cAAyB,aAAyB,QAAQ,UAAU,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC/F,MAAM,QAAA,GAAA,MAAA,mBAAyB,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC5D,MAAM,SAAA,GAAA,MAAA,sBAA6B,WAAW,MAAM,KAAK;CACzD,MAAM,QAAA,GAAA,MAAA,mBAAyB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;CACzD,MAAM,QAAA,GAAA,MAAA,mBAAyB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;AAEzD,SAAA,GAAA,MAAA,gBAAsB;EAAE,GAAG;EAAO;EAAM;EAAM,GAAG;EAAC;EAAM;EAAO;EAAK,CAAC"}
package/dist/react.d.cts CHANGED
@@ -6,7 +6,7 @@ declare const ProjectionProvider: _$react.Provider<ProjectionRuntime | Projectio
6
6
  declare function useProjection<T>(projection: Projection<T>): T;
7
7
  declare function useProjection<T, R>(projection: Projection<T>, selector: (value: T) => R, equality?: (previous: R, next: R) => boolean): R;
8
8
  declare function useInput<T>(input: Input<T>): readonly [T, (value: T) => void];
9
- declare function useInput<K extends string, V>(input: CollectionInput<K, V>): readonly [ReadonlyMap<K, V>, (run: (draft: CollectionInputDraft<K, V>) => void) => void];
9
+ declare function useInput<K extends string, V>(input: CollectionInput<K, V>): readonly [ReadonlyMap<K, V>, <R>(run: (draft: CollectionInputDraft<K, V>) => R extends PromiseLike<unknown> ? never : R) => void];
10
10
  declare function useDocumentSelector<TSchema extends ObjectSchema<object>, TResult>(runtime: ReadonlyDocument<TSchema>, selector: DocumentSelector<TSchema, TResult>, equality?: (previous: TResult, next: TResult) => boolean): TResult;
11
11
  declare function useReadable<T>(readable: Readable<T>): T;
12
12
  declare function useHistory<TCommit>(history: LocalHistory<TCommit>): HistoryState & {
package/dist/react.d.ts CHANGED
@@ -6,7 +6,7 @@ declare const ProjectionProvider: _$react.Provider<ProjectionRuntime | Projectio
6
6
  declare function useProjection<T>(projection: Projection<T>): T;
7
7
  declare function useProjection<T, R>(projection: Projection<T>, selector: (value: T) => R, equality?: (previous: R, next: R) => boolean): R;
8
8
  declare function useInput<T>(input: Input<T>): readonly [T, (value: T) => void];
9
- declare function useInput<K extends string, V>(input: CollectionInput<K, V>): readonly [ReadonlyMap<K, V>, (run: (draft: CollectionInputDraft<K, V>) => void) => void];
9
+ declare function useInput<K extends string, V>(input: CollectionInput<K, V>): readonly [ReadonlyMap<K, V>, <R>(run: (draft: CollectionInputDraft<K, V>) => R extends PromiseLike<unknown> ? never : R) => void];
10
10
  declare function useDocumentSelector<TSchema extends ObjectSchema<object>, TResult>(runtime: ReadonlyDocument<TSchema>, selector: DocumentSelector<TSchema, TResult>, equality?: (previous: TResult, next: TResult) => boolean): TResult;
11
11
  declare function useReadable<T>(readable: Readable<T>): T;
12
12
  declare function useHistory<TCommit>(history: LocalHistory<TCommit>): HistoryState & {
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","names":[],"sources":["../react/src/hooks.ts"],"sourcesContent":["import type {\n ReadonlyDocument,\n ObjectSchema,\n DocumentSelector,\n HistoryState,\n LocalHistory,\n OperationResult,\n Readable,\n ProjectionRuntime,\n ProjectionScope,\n Projection,\n Input,\n CollectionInput,\n CollectionInputDraft,\n} from 'doxum';\nimport { select } from 'doxum';\nimport { createContext, useCallback, useContext, useMemo, useSyncExternalStore } from 'react';\n\nconst ProjectionContext = createContext<ProjectionRuntime | ProjectionScope | undefined>(undefined);\nexport const ProjectionProvider = ProjectionContext.Provider;\n\nexport function useProjection<T>(projection: Projection<T>): T;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector: (value: T) => R,\n equality?: (previous: R, next: R) => boolean\n): R;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector?: (value: T) => R,\n equality: (previous: R, next: R) => boolean = Object.is\n): T | R {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const readable = useMemo(\n () => (selector ? owner.select(projection, selector, equality) : owner.select(projection)),\n [equality, owner, projection, selector]\n );\n return useReadable(readable as Readable<T | R>);\n}\n\nexport function useInput<T>(input: Input<T>): readonly [T, (value: T) => void];\nexport function useInput<K extends string, V>(\n input: CollectionInput<K, V>\n): readonly [ReadonlyMap<K, V>, (run: (draft: CollectionInputDraft<K, V>) => void) => void];\nexport function useInput(input: Projection<unknown>): readonly [unknown, (next: never) => void] {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const value = useProjection(input);\n const update = useCallback(\n (next: never) =>\n (owner.update as (target: Projection<unknown>, next: unknown) => void)(input, next),\n [input, owner]\n );\n return useMemo(() => [value, update] as const, [update, value]);\n}\n\nconst objectIs = <T>(previous: T, next: T): boolean => Object.is(previous, next);\n\nexport function useDocumentSelector<TSchema extends ObjectSchema<object>, TResult>(\n runtime: ReadonlyDocument<TSchema>,\n selector: DocumentSelector<TSchema, TResult>,\n equality: (previous: TResult, next: TResult) => boolean = objectIs\n): TResult {\n const readable = useMemo(\n () => select(runtime, selector, equality),\n [equality, runtime, selector]\n );\n return useReadable(readable);\n}\n\nexport function useReadable<T>(readable: Readable<T>): T {\n const subscribe = useCallback((listener: () => void) => readable.subscribe(listener), [readable]);\n const read = useCallback(() => readable.current(), [readable]);\n return useSyncExternalStore(subscribe, read, read);\n}\n\nexport function useHistory<TCommit>(history: LocalHistory<TCommit>): HistoryState & {\n undo(): OperationResult<TCommit>;\n redo(): OperationResult<TCommit>;\n} {\n const subscribe = useCallback((listener: () => void) => history.subscribe(listener), [history]);\n const read = useCallback(() => history.current(), [history]);\n const state = useSyncExternalStore(subscribe, read, read);\n const undo = useCallback(() => history.undo(), [history]);\n const redo = useCallback(() => history.redo(), [history]);\n\n return useMemo(() => ({ ...state, undo, redo }), [redo, state, undo]);\n}\n"],"mappings":";;;AAkBA,MAAM,oBAAoB,cAA+D,KAAA,EAAU;AACnG,MAAa,qBAAqB,kBAAkB;AAQpD,SAAgB,cACd,YACA,UACA,WAA8C,OAAO,IAC9C;CAEP,MAAM,QADU,WAAW,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;AAK7D,QAAO,YAJU,cACR,WAAW,MAAM,OAAO,YAAY,UAAU,SAAS,GAAG,MAAM,OAAO,WAAW,EACzF;EAAC;EAAU;EAAO;EAAY;EAAS,CAEd,CAAoB;;AAOjD,SAAgB,SAAS,OAAuE;CAE9F,MAAM,QADU,WAAW,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;CAC7D,MAAM,QAAQ,cAAc,MAAM;CAClC,MAAM,SAAS,aACZ,SACE,MAAM,OAAgE,OAAO,KAAK,EACrF,CAAC,OAAO,MAAM,CACf;AACD,QAAO,cAAc,CAAC,OAAO,OAAO,EAAW,CAAC,QAAQ,MAAM,CAAC;;AAGjE,MAAM,YAAe,UAAa,SAAqB,OAAO,GAAG,UAAU,KAAK;AAEhF,SAAgB,oBACd,SACA,UACA,WAA0D,UACjD;AAKT,QAAO,YAJU,cACT,OAAO,SAAS,UAAU,SAAS,EACzC;EAAC;EAAU;EAAS;EAAS,CAEJ,CAAC;;AAG9B,SAAgB,YAAe,UAA0B;CACvD,MAAM,YAAY,aAAa,aAAyB,SAAS,UAAU,SAAS,EAAE,CAAC,SAAS,CAAC;CACjG,MAAM,OAAO,kBAAkB,SAAS,SAAS,EAAE,CAAC,SAAS,CAAC;AAC9D,QAAO,qBAAqB,WAAW,MAAM,KAAK;;AAGpD,SAAgB,WAAoB,SAGlC;CACA,MAAM,YAAY,aAAa,aAAyB,QAAQ,UAAU,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC/F,MAAM,OAAO,kBAAkB,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC5D,MAAM,QAAQ,qBAAqB,WAAW,MAAM,KAAK;CACzD,MAAM,OAAO,kBAAkB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;CACzD,MAAM,OAAO,kBAAkB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;AAEzD,QAAO,eAAe;EAAE,GAAG;EAAO;EAAM;EAAM,GAAG;EAAC;EAAM;EAAO;EAAK,CAAC"}
1
+ {"version":3,"file":"react.js","names":[],"sources":["../react/src/hooks.ts"],"sourcesContent":["import type {\n ReadonlyDocument,\n ObjectSchema,\n DocumentSelector,\n HistoryState,\n LocalHistory,\n OperationResult,\n Readable,\n ProjectionRuntime,\n ProjectionScope,\n Projection,\n Input,\n CollectionInput,\n CollectionInputDraft,\n} from 'doxum';\nimport { select } from 'doxum';\nimport { createContext, useCallback, useContext, useMemo, useSyncExternalStore } from 'react';\n\nconst ProjectionContext = createContext<ProjectionRuntime | ProjectionScope | undefined>(undefined);\nexport const ProjectionProvider = ProjectionContext.Provider;\n\nexport function useProjection<T>(projection: Projection<T>): T;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector: (value: T) => R,\n equality?: (previous: R, next: R) => boolean\n): R;\nexport function useProjection<T, R>(\n projection: Projection<T>,\n selector?: (value: T) => R,\n equality: (previous: R, next: R) => boolean = Object.is\n): T | R {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const readable = useMemo(\n () => (selector ? owner.select(projection, selector, equality) : owner.select(projection)),\n [equality, owner, projection, selector]\n );\n return useReadable(readable as Readable<T | R>);\n}\n\nexport function useInput<T>(input: Input<T>): readonly [T, (value: T) => void];\nexport function useInput<K extends string, V>(\n input: CollectionInput<K, V>\n): readonly [\n ReadonlyMap<K, V>,\n <R>(\n run: (draft: CollectionInputDraft<K, V>) => R extends PromiseLike<unknown> ? never : R\n ) => void,\n];\nexport function useInput(input: Projection<unknown>): readonly [unknown, (next: never) => void] {\n const context = useContext(ProjectionContext);\n const owner = context;\n if (!owner) throw new Error('ProjectionRuntime is required.');\n const value = useProjection(input);\n const update = useCallback(\n (next: never) =>\n (owner.update as (target: Projection<unknown>, next: unknown) => void)(input, next),\n [input, owner]\n );\n return useMemo(() => [value, update] as const, [update, value]);\n}\n\nconst objectIs = <T>(previous: T, next: T): boolean => Object.is(previous, next);\n\nexport function useDocumentSelector<TSchema extends ObjectSchema<object>, TResult>(\n runtime: ReadonlyDocument<TSchema>,\n selector: DocumentSelector<TSchema, TResult>,\n equality: (previous: TResult, next: TResult) => boolean = objectIs\n): TResult {\n const readable = useMemo(\n () => select(runtime, selector, equality),\n [equality, runtime, selector]\n );\n return useReadable(readable);\n}\n\nexport function useReadable<T>(readable: Readable<T>): T {\n const subscribe = useCallback((listener: () => void) => readable.subscribe(listener), [readable]);\n const read = useCallback(() => readable.current(), [readable]);\n return useSyncExternalStore(subscribe, read, read);\n}\n\nexport function useHistory<TCommit>(history: LocalHistory<TCommit>): HistoryState & {\n undo(): OperationResult<TCommit>;\n redo(): OperationResult<TCommit>;\n} {\n const subscribe = useCallback((listener: () => void) => history.subscribe(listener), [history]);\n const read = useCallback(() => history.current(), [history]);\n const state = useSyncExternalStore(subscribe, read, read);\n const undo = useCallback(() => history.undo(), [history]);\n const redo = useCallback(() => history.redo(), [history]);\n\n return useMemo(() => ({ ...state, undo, redo }), [redo, state, undo]);\n}\n"],"mappings":";;;AAkBA,MAAM,oBAAoB,cAA+D,KAAA,EAAU;AACnG,MAAa,qBAAqB,kBAAkB;AAQpD,SAAgB,cACd,YACA,UACA,WAA8C,OAAO,IAC9C;CAEP,MAAM,QADU,WAAW,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;AAK7D,QAAO,YAJU,cACR,WAAW,MAAM,OAAO,YAAY,UAAU,SAAS,GAAG,MAAM,OAAO,WAAW,EACzF;EAAC;EAAU;EAAO;EAAY;EAAS,CAEd,CAAoB;;AAYjD,SAAgB,SAAS,OAAuE;CAE9F,MAAM,QADU,WAAW,kBACN;AACrB,KAAI,CAAC,MAAO,OAAM,IAAI,MAAM,iCAAiC;CAC7D,MAAM,QAAQ,cAAc,MAAM;CAClC,MAAM,SAAS,aACZ,SACE,MAAM,OAAgE,OAAO,KAAK,EACrF,CAAC,OAAO,MAAM,CACf;AACD,QAAO,cAAc,CAAC,OAAO,OAAO,EAAW,CAAC,QAAQ,MAAM,CAAC;;AAGjE,MAAM,YAAe,UAAa,SAAqB,OAAO,GAAG,UAAU,KAAK;AAEhF,SAAgB,oBACd,SACA,UACA,WAA0D,UACjD;AAKT,QAAO,YAJU,cACT,OAAO,SAAS,UAAU,SAAS,EACzC;EAAC;EAAU;EAAS;EAAS,CAEJ,CAAC;;AAG9B,SAAgB,YAAe,UAA0B;CACvD,MAAM,YAAY,aAAa,aAAyB,SAAS,UAAU,SAAS,EAAE,CAAC,SAAS,CAAC;CACjG,MAAM,OAAO,kBAAkB,SAAS,SAAS,EAAE,CAAC,SAAS,CAAC;AAC9D,QAAO,qBAAqB,WAAW,MAAM,KAAK;;AAGpD,SAAgB,WAAoB,SAGlC;CACA,MAAM,YAAY,aAAa,aAAyB,QAAQ,UAAU,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC/F,MAAM,OAAO,kBAAkB,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC;CAC5D,MAAM,QAAQ,qBAAqB,WAAW,MAAM,KAAK;CACzD,MAAM,OAAO,kBAAkB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;CACzD,MAAM,OAAO,kBAAkB,QAAQ,MAAM,EAAE,CAAC,QAAQ,CAAC;AAEzD,QAAO,eAAe;EAAE,GAAG;EAAO;EAAM;EAAM,GAAG;EAAC;EAAM;EAAO;EAAK,CAAC"}