cogsbox-state 0.5.482 → 0.5.483
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CogsState.d.ts +4 -3
- package/dist/CogsState.d.ts.map +1 -1
- package/dist/CogsState.js +2 -2
- package/dist/CogsState.js.map +1 -1
- package/dist/CogsStateClient.d.ts +2 -2
- package/dist/CogsStateClient.d.ts.map +1 -1
- package/dist/CogsStateClient.js.map +1 -1
- package/dist/Components.d.ts +3 -3
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js.map +1 -1
- package/dist/PluginRunner.d.ts +2 -2
- package/dist/PluginRunner.d.ts.map +1 -1
- package/dist/PluginRunner.js +79 -78
- package/dist/PluginRunner.js.map +1 -1
- package/dist/pluginStore.d.ts +1 -0
- package/dist/pluginStore.d.ts.map +1 -1
- package/dist/pluginStore.js +22 -18
- package/dist/pluginStore.js.map +1 -1
- package/dist/plugins.d.ts +4 -4
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js.map +1 -1
- package/package.json +1 -1
- package/src/CogsState.tsx +37 -47
- package/src/CogsStateClient.tsx +2 -2
- package/src/Components.tsx +4 -3
- package/src/PluginRunner.tsx +31 -34
- package/src/pluginStore.ts +7 -1
- package/src/plugins.ts +5 -6
package/dist/pluginStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginStore.js","sources":["../src/pluginStore.ts"],"sourcesContent":["import { create } from 'zustand';\r\nimport type { PluginData, StateObject, UpdateTypeDetail } from './CogsState';\r\nimport type { CogsPlugin } from './plugins';\r\nexport type ClientActivityEvent = {\r\n stateKey: string;\r\n path: string[];\r\n timestamp: number;\r\n duration?: number;\r\n} & (\r\n | { activityType: 'focus'; details: { cursorPosition?: number } }\r\n | { activityType: 'blur'; details: { duration: number } }\r\n | {\r\n activityType: 'input';\r\n details: {\r\n value: any;\r\n inputLength?: number;\r\n isComposing?: boolean;\r\n isPasting?: boolean;\r\n keystrokeCount?: number;\r\n };\r\n }\r\n | {\r\n activityType: 'select';\r\n details: {\r\n selectionStart: number;\r\n selectionEnd: number;\r\n selectedText?: string;\r\n };\r\n }\r\n | { activityType: 'hover_enter'; details: { cursorPosition?: number } }\r\n | { activityType: 'hover_exit'; details: { duration: number } }\r\n | {\r\n activityType: 'scroll';\r\n details: { scrollTop: number; scrollLeft: number };\r\n }\r\n | { activityType: 'cursor_move'; details: { cursorPosition: number } }\r\n);\r\n\r\ntype PluginRegistryStore = {\r\n stateHandlers: Map<string, StateObject<any>>; // stateKey -> handler\r\n registerStateHandler: (stateKey: string, handler: StateObject<any>) => void;\r\n registeredPlugins: readonly CogsPlugin<any, any, any, any, any>[];\r\n setRegisteredPlugins: (\r\n plugins: readonly CogsPlugin<any, any, any, any, any>[]\r\n ) => void;\r\n\r\n // Store options keyed by stateKey and pluginName\r\n pluginOptions: Map<string, Map<string, any>>; // stateKey -> pluginName -> options\r\n setPluginOptionsForState: (\r\n stateKey: string,\r\n pluginOptions: Record<string, any>\r\n ) => void;\r\n\r\n // Get all plugin configs for a specific stateKey\r\n getPluginConfigsForState: (stateKey: string) => Array<{\r\n plugin: CogsPlugin<any, any, any, any, any>;\r\n options: any;\r\n }>;\r\n updateSubscribers: Set<(update: UpdateTypeDetail) => void>;\r\n subscribeToUpdates: (\r\n callback: (update: UpdateTypeDetail) => void\r\n ) => () => void;\r\n notifyUpdate: (update: UpdateTypeDetail) => void;\r\n formUpdateSubscribers: Set<(event: ClientActivityEvent) => void>;\r\n subscribeToFormUpdates: (\r\n callback: (event: ClientActivityEvent) => void\r\n ) => () => void;\r\n notifyFormUpdate: (event: ClientActivityEvent) => void;\r\n hookResults: Map<string, Map<string, any>>; // stateKey -> pluginName -> hook\r\n setHookResult: (stateKey: string, pluginName: string, data: any) => void;\r\n getHookResult: (stateKey: string, pluginName: string) => any | undefined;\r\n removeHookResult: (stateKey: string, pluginName: string) => void;\r\n};\r\n\r\nexport const pluginStore = create<PluginRegistryStore>((set, get) => ({\r\n stateHandlers: new Map(),\r\n registerStateHandler: (stateKey, handler) =>\r\n set((state) => {\r\n const newMap = new Map(state.stateHandlers);\r\n newMap.set(stateKey, handler);\r\n
|
|
1
|
+
{"version":3,"file":"pluginStore.js","sources":["../src/pluginStore.ts"],"sourcesContent":["import { create } from 'zustand';\r\nimport type { PluginData, StateObject, UpdateTypeDetail } from './CogsState';\r\nimport type { CogsPlugin } from './plugins';\r\nexport type ClientActivityEvent = {\r\n stateKey: string;\r\n path: string[];\r\n timestamp: number;\r\n duration?: number;\r\n} & (\r\n | { activityType: 'focus'; details: { cursorPosition?: number } }\r\n | { activityType: 'blur'; details: { duration: number } }\r\n | {\r\n activityType: 'input';\r\n details: {\r\n value: any;\r\n inputLength?: number;\r\n isComposing?: boolean;\r\n isPasting?: boolean;\r\n keystrokeCount?: number;\r\n };\r\n }\r\n | {\r\n activityType: 'select';\r\n details: {\r\n selectionStart: number;\r\n selectionEnd: number;\r\n selectedText?: string;\r\n };\r\n }\r\n | { activityType: 'hover_enter'; details: { cursorPosition?: number } }\r\n | { activityType: 'hover_exit'; details: { duration: number } }\r\n | {\r\n activityType: 'scroll';\r\n details: { scrollTop: number; scrollLeft: number };\r\n }\r\n | { activityType: 'cursor_move'; details: { cursorPosition: number } }\r\n);\r\n\r\ntype PluginRegistryStore = {\r\n stateHandlers: Map<string, StateObject<any>>; // stateKey -> handler\r\n registerStateHandler: (stateKey: string, handler: StateObject<any>) => void;\r\n unregisterStateHandler: (stateKey: string) => void;\r\n registeredPlugins: readonly CogsPlugin<any, any, any, any, any>[];\r\n setRegisteredPlugins: (\r\n plugins: readonly CogsPlugin<any, any, any, any, any>[]\r\n ) => void;\r\n\r\n // Store options keyed by stateKey and pluginName\r\n pluginOptions: Map<string, Map<string, any>>; // stateKey -> pluginName -> options\r\n setPluginOptionsForState: (\r\n stateKey: string,\r\n pluginOptions: Record<string, any>\r\n ) => void;\r\n\r\n // Get all plugin configs for a specific stateKey\r\n getPluginConfigsForState: (stateKey: string) => Array<{\r\n plugin: CogsPlugin<any, any, any, any, any>;\r\n options: any;\r\n }>;\r\n updateSubscribers: Set<(update: UpdateTypeDetail) => void>;\r\n subscribeToUpdates: (\r\n callback: (update: UpdateTypeDetail) => void\r\n ) => () => void;\r\n notifyUpdate: (update: UpdateTypeDetail) => void;\r\n formUpdateSubscribers: Set<(event: ClientActivityEvent) => void>;\r\n subscribeToFormUpdates: (\r\n callback: (event: ClientActivityEvent) => void\r\n ) => () => void;\r\n notifyFormUpdate: (event: ClientActivityEvent) => void;\r\n hookResults: Map<string, Map<string, any>>; // stateKey -> pluginName -> hook\r\n setHookResult: (stateKey: string, pluginName: string, data: any) => void;\r\n getHookResult: (stateKey: string, pluginName: string) => any | undefined;\r\n removeHookResult: (stateKey: string, pluginName: string) => void;\r\n};\r\n\r\nexport const pluginStore = create<PluginRegistryStore>((set, get) => ({\r\n stateHandlers: new Map(),\r\n registerStateHandler: (stateKey, handler) =>\r\n set((state) => {\r\n const newMap = new Map(state.stateHandlers);\r\n newMap.set(stateKey, handler);\r\n return { stateHandlers: newMap };\r\n }),\r\n unregisterStateHandler: (stateKey) =>\r\n set((state) => {\r\n const newMap = new Map(state.stateHandlers);\r\n newMap.delete(stateKey);\r\n return { stateHandlers: newMap };\r\n }),\r\n registeredPlugins: [],\r\n pluginOptions: new Map(),\r\n\r\n setRegisteredPlugins: (plugins) => set({ registeredPlugins: plugins }),\r\n\r\n setPluginOptionsForState: (stateKey, pluginOptions) =>\r\n set((state) => {\r\n const newMap = new Map(state.pluginOptions);\r\n const statePluginMap = new Map();\r\n\r\n // Store each plugin's options\r\n Object.entries(pluginOptions).forEach(([pluginName, options]) => {\r\n // Only store if this is actually a registered plugin\r\n if (state.registeredPlugins.some((p) => p.name === pluginName)) {\r\n statePluginMap.set(pluginName, options);\r\n }\r\n });\r\n\r\n if (statePluginMap.size > 0) {\r\n newMap.set(stateKey, statePluginMap);\r\n }\r\n\r\n return { pluginOptions: newMap };\r\n }),\r\n\r\n getPluginConfigsForState: (stateKey) => {\r\n const state = get();\r\n const stateOptions = state.pluginOptions.get(stateKey);\r\n if (!stateOptions) return [];\r\n\r\n return state.registeredPlugins\r\n .map((plugin) => {\r\n const options = stateOptions.get(plugin.name);\r\n if (options !== undefined) {\r\n return { plugin, options };\r\n }\r\n return null;\r\n })\r\n .filter(Boolean) as Array<{\r\n plugin: CogsPlugin<any, any, any, any, any>;\r\n options: any;\r\n }>;\r\n },\r\n updateSubscribers: new Set(),\r\n subscribeToUpdates: (callback) => {\r\n const subscribers = get().updateSubscribers;\r\n subscribers.add(callback);\r\n // Return an unsubscribe function\r\n return () => {\r\n get().updateSubscribers.delete(callback);\r\n };\r\n },\r\n notifyUpdate: (update) => {\r\n // Call all registered subscribers with the update details\r\n get().updateSubscribers.forEach((callback) => callback(update));\r\n },\r\n formUpdateSubscribers: new Set(),\r\n subscribeToFormUpdates: (callback) => {\r\n const subscribers = get().formUpdateSubscribers;\r\n subscribers.add(callback);\r\n return () => {\r\n get().formUpdateSubscribers.delete(callback);\r\n };\r\n },\r\n notifyFormUpdate: (event) => {\r\n get().formUpdateSubscribers.forEach((callback) => callback(event));\r\n },\r\n hookResults: new Map(),\r\n\r\n setHookResult: (stateKey, pluginName, data) =>\r\n set((state) => {\r\n const next = new Map(state.hookResults);\r\n const byPlugin = new Map(next.get(stateKey) ?? new Map());\r\n if (data === undefined) byPlugin.delete(pluginName);\r\n else byPlugin.set(pluginName, data);\r\n if (byPlugin.size > 0) next.set(stateKey, byPlugin);\r\n else next.delete(stateKey);\r\n return { hookResults: next };\r\n }),\r\n\r\n getHookResult: (stateKey, pluginName) =>\r\n get().hookResults.get(stateKey)?.get(pluginName),\r\n\r\n removeHookResult: (stateKey, pluginName) =>\r\n set((state) => {\r\n const next = new Map(state.hookResults);\r\n const byPlugin = new Map(next.get(stateKey) ?? new Map());\r\n byPlugin.delete(pluginName);\r\n if (byPlugin.size > 0) next.set(stateKey, byPlugin);\r\n else next.delete(stateKey);\r\n return { hookResults: next };\r\n }),\r\n}));\r\n"],"names":["pluginStore","create","set","get","stateKey","handler","state","newMap","plugins","pluginOptions","statePluginMap","pluginName","options","stateOptions","plugin","callback","update","event","data","next","byPlugin"],"mappings":"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"}
|
package/dist/plugins.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { ReactNode, RefObject } from 'react';
|
|
3
3
|
import { StateObject, UpdateTypeDetail } from './CogsState';
|
|
4
4
|
import { ClientActivityEvent } from './pluginStore';
|
|
5
5
|
|
|
@@ -132,7 +132,7 @@ export type OnFormUpdateParams<TOptions, THookReturn, TPluginMetaData, TFieldMet
|
|
|
132
132
|
pluginName: string;
|
|
133
133
|
};
|
|
134
134
|
export type FormWrapperParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, TStateSlice = any> = ScopedMetadataMethods<TFieldMetaData> & {
|
|
135
|
-
element:
|
|
135
|
+
element: ReactNode;
|
|
136
136
|
path: string[];
|
|
137
137
|
stateKey: string;
|
|
138
138
|
options: TOptions;
|
|
@@ -159,7 +159,7 @@ export type CogsPlugin<TName extends string, TOptions, THookReturn, TPluginMetaD
|
|
|
159
159
|
transformState?: (params: TransformStateParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => void;
|
|
160
160
|
onUpdate?: (params: OnUpdateParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => void;
|
|
161
161
|
onFormUpdate?: (params: OnFormUpdateParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => void;
|
|
162
|
-
formWrapper?: (params: FormWrapperParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) =>
|
|
162
|
+
formWrapper?: (params: FormWrapperParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => ReactNode;
|
|
163
163
|
chainMethods?: TChainMethods;
|
|
164
164
|
};
|
|
165
165
|
export declare function createMetadataContext<TPluginMetaData, TFieldMetaData>(stateKey: string, pluginName: string): {
|
|
@@ -220,7 +220,7 @@ type MethodsBuilderParams = {
|
|
|
220
220
|
export type PluginTransformFn<TOptions, THookReturn, TPluginMetaData, TFieldMetaData> = (params: TransformStateParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => void;
|
|
221
221
|
export type PluginUpdateFn<TOptions, THookReturn, TPluginMetaData, TFieldMetaData> = (params: OnUpdateParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => void;
|
|
222
222
|
export type PluginFormUpdateFn<TOptions, THookReturn, TPluginMetaData, TFieldMetaData> = (params: OnFormUpdateParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => void;
|
|
223
|
-
export type PluginFormWrapperFn<TOptions, THookReturn, TPluginMetaData, TFieldMetaData> = (params: FormWrapperParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) =>
|
|
223
|
+
export type PluginFormWrapperFn<TOptions, THookReturn, TPluginMetaData, TFieldMetaData> = (params: FormWrapperParams<TOptions, THookReturn, TPluginMetaData, TFieldMetaData, any>) => ReactNode;
|
|
224
224
|
export type CogsPluginBuilder<TName extends string, TOptions, TPluginMetaData, TFieldMetaData, THookReturn, TChainMethods extends ChainMethodDefinitions, HasTransform extends boolean, HasUpdate extends boolean, HasFormUpdate extends boolean, HasMethods extends boolean, HasWrapper extends boolean, HasInitialState extends boolean, TInitialState extends Record<string, unknown> = {}> = Prettify<CogsPlugin<TName, TOptions, THookReturn, TPluginMetaData, TFieldMetaData, TChainMethods, TInitialState>> & (HasTransform extends true ? {} : {
|
|
225
225
|
transformState(fn: PluginTransformFn<TOptions, THookReturn, TPluginMetaData, TFieldMetaData>): CogsPluginBuilder<TName, TOptions, TPluginMetaData, TFieldMetaData, THookReturn, TChainMethods, true, HasUpdate, HasFormUpdate, HasMethods, HasWrapper, HasInitialState, TInitialState>;
|
|
226
226
|
}) & (HasUpdate extends true ? {} : {
|
package/dist/plugins.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sources":["../src/plugins.ts"],"sourcesContent":["import { z } from 'zod';\r\nimport type React from 'react';\r\nimport { StateObject, UpdateTypeDetail } from './CogsState';\r\nimport {\r\n getGlobalStore,\r\n getAllFieldElements,\r\n setAllFieldsDisabled,\r\n} from './store';\r\nimport { ClientActivityEvent } from './pluginStore';\r\nimport { RefObject } from 'react';\r\n\r\ntype Prettify<T> = { [K in keyof T]: T[K] } & {};\r\n\r\nexport type ChainMethodTarget =\r\n | 'any'\r\n | 'array'\r\n | 'object'\r\n | 'primitive'\r\n | 'boolean';\r\n\r\nexport type ChainMethodContext<TOptions = any, THookReturn = any> = {\r\n stateKey: string;\r\n path: string[];\r\n pluginName: string;\r\n options: TOptions | undefined;\r\n hookData?: THookReturn;\r\n $get: () => any;\r\n $update: (payload: any) => { synced: () => void };\r\n $applyOperation: (operation: any, metaData?: Record<string, any>) => void;\r\n getFieldMetaData: () => any;\r\n setFieldMetaData: (data: Record<string, any>) => void;\r\n removeFieldMetaData: () => void;\r\n getFieldRefs: () => RefObject<any>[];\r\n getFieldElements: () => HTMLElement[];\r\n setFieldDisabled: (disabled: boolean) => void;\r\n};\r\n\r\nexport type ChainMethodHandler = (\r\n ctx: ChainMethodContext<any, any>,\r\n ...args: any[]\r\n) => any;\r\n\r\nexport type ChainMethodDefinition<\r\n THandler extends ChainMethodHandler = ChainMethodHandler,\r\n> = {\r\n target: ChainMethodTarget;\r\n pathPattern?: string[];\r\n handler: THandler;\r\n};\r\n\r\nexport type ChainMethodDefinitions = Record<string, ChainMethodDefinition<any>>;\r\n\r\ntype ChainMethodCallable<THandler> = THandler extends (\r\n ctx: any,\r\n ...args: infer TArgs\r\n) => infer TReturn\r\n ? (...args: TArgs) => TReturn\r\n : never;\r\n\r\nexport type ChainMethodCallables<TMethods> = {\r\n [K in keyof TMethods]: TMethods[K] extends ChainMethodDefinition<infer TFn>\r\n ? ChainMethodCallable<TFn>\r\n : never;\r\n};\r\n\r\nexport type KeyedTypes<TMap extends Record<string, any>> = {\r\n __key: 'keyed';\r\n map: TMap;\r\n};\r\n\r\nexport const keyedSchema = <TMap extends Record<string, any>>() =>\r\n z.object({\r\n __key: z.literal('keyed'),\r\n map: z.any(),\r\n }) as z.ZodType<KeyedTypes<TMap>>;\r\n\r\n// Helpers: turn a zod object shape into its inferred value shape\r\ntype InferZodObject<T extends Record<string, z.ZodTypeAny>> = {\r\n [K in keyof T]: z.infer<T[K]>;\r\n};\r\nexport type InferPerKeyValueMap<\r\n TMap extends Record<string, Record<string, z.ZodTypeAny>>,\r\n> = {\r\n [K in keyof TMap]: InferZodObject<TMap[K]>;\r\n};\r\n\r\n// Deconstructed cogs methods (no TState)\r\ntype DeconstructedCogsMethods<TStateSlice = any> = {\r\n initialiseState: (data: TStateSlice) => void;\r\n initialiseShadowState: (data: any) => void;\r\n applyOperation: (patch: any, meta?: { dontUpdate?: boolean }) => void;\r\n addZodErrors: (errors: any[]) => void;\r\n getState: () => TStateSlice;\r\n setOptions: (options: any) => void;\r\n};\r\n\r\nexport function toDeconstructedMethods(stateHandler: StateObject<any>) {\r\n return {\r\n initialiseState: (data: any) => {\r\n stateHandler.$update(data);\r\n },\r\n initialiseShadowState: (data: any) => {\r\n stateHandler.$initializeAndMergeShadowState(data);\r\n },\r\n applyOperation: (patch: any, meta?: { dontUpdate?: boolean }) =>\r\n stateHandler.$applyOperation(patch, meta),\r\n addZodErrors: (errors: any[]) => stateHandler.$addZodValidation(errors),\r\n getState: () => stateHandler.$get(),\r\n setOptions: (opts: any) => {\r\n stateHandler.$setOptions(opts);\r\n },\r\n };\r\n}\r\ntype ScopedMetadataMethods<TFieldMetaData> = {\r\n getFieldMetaData: () => TFieldMetaData | undefined;\r\n setFieldMetaData: (data: Partial<TFieldMetaData>) => void;\r\n removeFieldMetaData: () => void;\r\n getFieldRefs: () => RefObject<any>[];\r\n getFieldElements: () => HTMLElement[];\r\n setFieldDisabled: (disabled: boolean) => void;\r\n};\r\n\r\n// These are the existing global methods that still require a path.\r\ntype GlobalMetadataMethods<TFieldMetaData> = {\r\n getFieldMetaData: (path: string[]) => TFieldMetaData | undefined;\r\n setFieldMetaData: (path: string[], data: Partial<TFieldMetaData>) => void;\r\n removeFieldMetaData: (path: string[]) => void;\r\n getFieldRefs: (path: string[]) => RefObject<any>[];\r\n getFieldElements: (path: string[]) => HTMLElement[];\r\n setFieldDisabled: (path: string[], disabled: boolean) => void;\r\n getAllFieldElements: () => HTMLElement[];\r\n setAllFieldsDisabled: (disabled: boolean) => void;\r\n};\r\n// Simplified: All params use the same TFieldMetaData type\r\nexport type UseHookParams<\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n GlobalMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n options: TOptions;\r\n pluginName: string;\r\n isInitialMount: boolean;\r\n };\r\n\r\nexport type TransformStateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n GlobalMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n previousState?: TStateSlice;\r\n isInitialTransform: boolean;\r\n pluginName: string;\r\n };\r\n\r\nexport type OnUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n ScopedMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n update: UpdateTypeDetail;\r\n path?: string[];\r\n\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n\r\n previousValue?: any;\r\n nextValue?: any;\r\n updateSource?: 'user' | 'plugin' | 'system';\r\n\r\n pluginName: string;\r\n };\r\nexport type OnFormUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n ScopedMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n path: string[];\r\n event: ClientActivityEvent; // Update this to use the full event type\r\n\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n\r\n formState?: 'pristine' | 'dirty' | 'submitting' | 'submitted';\r\n pluginName: string;\r\n };\r\n\r\nexport type FormWrapperParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = ScopedMetadataMethods<TFieldMetaData> & {\r\n element: React.ReactNode;\r\n path: string[];\r\n stateKey: string;\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n fieldType?: string;\r\n wrapperDepth?: number;\r\n\r\n // Deconstructed methods\r\n initialiseState: (data: TStateSlice) => void;\r\n initialiseShadowState: (data: any) => void;\r\n applyOperation: (patch: any, meta?: { dontUpdate?: boolean }) => void;\r\n addZodErrors: (errors: any[]) => void;\r\n getState: () => TStateSlice;\r\n setOptions: (options: any) => void;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n pluginName: string;\r\n};\r\n\r\n// Unified plugin definition\r\nexport type CogsPlugin<\r\n TName extends string,\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TChainMethods extends ChainMethodDefinitions = {},\r\n TInitialState extends Record<string, unknown> = {},\r\n> = {\r\n name: TName;\r\n\r\n initialState?: () => TInitialState;\r\n\r\n useHook?: (\r\n params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>\r\n ) => THookReturn;\r\n\r\n transformState?: (\r\n params: TransformStateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => void;\r\n\r\n onUpdate?: (\r\n params: OnUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => void;\r\n\r\n onFormUpdate?: (\r\n params: OnFormUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => void;\r\n\r\n formWrapper?: (\r\n params: FormWrapperParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => React.ReactNode;\r\n\r\n chainMethods?: TChainMethods;\r\n};\r\n\r\n// Metadata helpers\r\nexport function createMetadataContext<TPluginMetaData, TFieldMetaData>(\r\n stateKey: string,\r\n pluginName: string\r\n) {\r\n return {\r\n getPluginMetaData: (): TPluginMetaData | undefined =>\r\n getGlobalStore\r\n .getState()\r\n .getPluginMetaDataMap(stateKey, [])\r\n ?.get(pluginName) as TPluginMetaData | undefined,\r\n\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) =>\r\n getGlobalStore\r\n .getState()\r\n .setPluginMetaData(stateKey, [], pluginName, data),\r\n\r\n removePluginMetaData: () =>\r\n getGlobalStore.getState().removePluginMetaData(stateKey, [], pluginName),\r\n\r\n getFieldMetaData: (path: string[]): TFieldMetaData | undefined =>\r\n getGlobalStore\r\n .getState()\r\n .getPluginMetaDataMap(stateKey, path)\r\n ?.get(pluginName) as TFieldMetaData | undefined,\r\n\r\n setFieldMetaData: (path: string[], data: Partial<TFieldMetaData>) =>\r\n getGlobalStore\r\n .getState()\r\n .setPluginMetaData(stateKey, path, pluginName, data),\r\n\r\n removeFieldMetaData: (path: string[]) =>\r\n getGlobalStore\r\n .getState()\r\n .removePluginMetaData(stateKey, path, pluginName),\r\n getFieldRefs: (path: string[]): RefObject<any>[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const refs: RefObject<any>[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) refs.push(entry.domRef);\r\n });\r\n return refs;\r\n },\r\n\r\n getFieldElements: (path: string[]): HTMLElement[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const elements: HTMLElement[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) elements.push(entry.domRef.current);\r\n });\r\n return elements;\r\n },\r\n\r\n setFieldDisabled: (path: string[], disabled: boolean) => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return;\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n const el = entry.domRef?.current;\r\n if (!el) return;\r\n if ('disabled' in el) el.disabled = disabled;\r\n else {\r\n el.style.pointerEvents = disabled ? 'none' : '';\r\n el.setAttribute('aria-disabled', String(disabled));\r\n }\r\n });\r\n },\r\n getAllFieldElements: (): HTMLElement[] => {\r\n return getAllFieldElements(stateKey);\r\n },\r\n\r\n setAllFieldsDisabled: (disabled: boolean): void =>\r\n setAllFieldsDisabled(stateKey, disabled),\r\n };\r\n}\r\n\r\nexport function createScopedMetadataContext<TPluginMetaData, TFieldMetaData>(\r\n stateKey: string,\r\n pluginName: string,\r\n path: string[]\r\n) {\r\n const globalContext = createMetadataContext<TPluginMetaData, TFieldMetaData>(\r\n stateKey,\r\n pluginName\r\n );\r\n\r\n return {\r\n ...globalContext,\r\n getFieldMetaData: (): TFieldMetaData | undefined =>\r\n globalContext.getFieldMetaData(path),\r\n setFieldMetaData: (data: Partial<TFieldMetaData>) =>\r\n globalContext.setFieldMetaData(path, data),\r\n removeFieldMetaData: () => globalContext.removeFieldMetaData(path),\r\n\r\n // NEW: Direct access to the DOM refs for this field\r\n getFieldRefs: (): RefObject<any>[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const refs: RefObject<any>[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) {\r\n refs.push(entry.domRef);\r\n }\r\n });\r\n return refs;\r\n },\r\n\r\n getFieldElements: (): HTMLElement[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const elements: HTMLElement[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) {\r\n elements.push(entry.domRef.current);\r\n }\r\n });\r\n return elements;\r\n },\r\n\r\n setFieldDisabled: (disabled: boolean) => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return;\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n const el = entry.domRef?.current;\r\n if (!el) return;\r\n if ('disabled' in el) {\r\n el.disabled = disabled;\r\n } else {\r\n el.style.pointerEvents = disabled ? 'none' : '';\r\n el.setAttribute('aria-disabled', String(disabled));\r\n }\r\n });\r\n },\r\n };\r\n}\r\n// Add this type export - derives from what createScopedMetadataContext returns\r\nexport type ScopedMetadataContext<TFieldMetaData = any> = {\r\n getFieldMetaData: () => TFieldMetaData | undefined;\r\n setFieldMetaData: (data: Partial<TFieldMetaData>) => void;\r\n removeFieldMetaData: () => void;\r\n};\r\n\r\n// Type for a single plugin's API entry in ValidationWrapper\r\nexport type PluginApiEntry<THookData = any, TFieldMetaData = any> = {\r\n hookData: THookData | undefined;\r\n} & ScopedMetadataContext<TFieldMetaData>;\r\n\r\n// Type for the entire plugins API object passed to validation render prop\r\nexport type PluginsApi = Record<string, PluginApiEntry>;\r\ntype ZodObjOutput<T extends z.ZodObject<any>> = {\r\n [K in keyof T['shape']]: z.output<T['shape'][K]>;\r\n};\r\ntype OutputOf<T extends z.ZodTypeAny> =\r\n T extends z.ZodObject<any> ? Prettify<ZodObjOutput<T>> : z.output<T>;\r\n\r\ntype MethodFactory = <THandler extends ChainMethodHandler>(\r\n handler: THandler\r\n) => ChainMethodDefinition<THandler>;\r\n\r\ntype PathMethodFactory = MethodFactory & {\r\n array: MethodFactory;\r\n object: MethodFactory;\r\n primitive: MethodFactory;\r\n boolean: MethodFactory;\r\n field: MethodFactory;\r\n};\r\n\r\ntype MethodsBuilderParams = {\r\n path: (selector: (state: any) => any) => PathMethodFactory;\r\n array: MethodFactory;\r\n object: MethodFactory;\r\n primitive: MethodFactory;\r\n boolean: MethodFactory;\r\n field: MethodFactory;\r\n};\r\n\r\nconst createMethodDefinition =\r\n (target: ChainMethodTarget, pathPattern?: string[]): MethodFactory =>\r\n (handler) => ({\r\n target,\r\n pathPattern,\r\n handler,\r\n });\r\n\r\nconst createPathRecorder = () => {\r\n const path: string[] = [];\r\n\r\n const recorder = new Proxy(\r\n {},\r\n {\r\n get(_target, prop) {\r\n if (typeof prop !== 'string') return recorder;\r\n if (prop === 'then') return undefined;\r\n path.push(prop === '$' ? '*' : prop);\r\n return recorder;\r\n },\r\n }\r\n );\r\n\r\n return { recorder, path };\r\n};\r\n\r\nconst createMethodsBuilderParams = (): MethodsBuilderParams => {\r\n const path = (selector: (state: any) => any): PathMethodFactory => {\r\n const { recorder, path: pathPattern } = createPathRecorder();\r\n selector(recorder);\r\n\r\n const base = createMethodDefinition(\r\n 'any',\r\n pathPattern\r\n ) as PathMethodFactory;\r\n base.array = createMethodDefinition('array', pathPattern);\r\n base.object = createMethodDefinition('object', pathPattern);\r\n base.primitive = createMethodDefinition('primitive', pathPattern);\r\n base.boolean = createMethodDefinition('boolean', pathPattern);\r\n base.field = createMethodDefinition('any', pathPattern);\r\n\r\n return base;\r\n };\r\n\r\n return {\r\n path,\r\n array: createMethodDefinition('array'),\r\n object: createMethodDefinition('object'),\r\n primitive: createMethodDefinition('primitive'),\r\n boolean: createMethodDefinition('boolean'),\r\n field: createMethodDefinition('any'),\r\n };\r\n};\r\n// --- EXTRACTED BUILDER TYPES (Solves TS7056 Serialization Error) ---\r\n\r\nexport type PluginTransformFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: TransformStateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => void;\r\n\r\nexport type PluginUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: OnUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => void;\r\n\r\nexport type PluginFormUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: OnFormUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => void;\r\n\r\nexport type PluginFormWrapperFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: FormWrapperParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => React.ReactNode;\r\n\r\nexport type CogsPluginBuilder<\r\n TName extends string,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods extends ChainMethodDefinitions,\r\n HasTransform extends boolean,\r\n HasUpdate extends boolean,\r\n HasFormUpdate extends boolean,\r\n HasMethods extends boolean,\r\n HasWrapper extends boolean,\r\n HasInitialState extends boolean,\r\n TInitialState extends Record<string, unknown> = {},\r\n> = Prettify<\r\n CogsPlugin<\r\n TName,\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TChainMethods,\r\n TInitialState\r\n >\r\n> &\r\n (HasTransform extends true\r\n ? {}\r\n : {\r\n transformState(\r\n fn: PluginTransformFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n true,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasUpdate extends true\r\n ? {}\r\n : {\r\n onUpdate(\r\n fn: PluginUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n true,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasFormUpdate extends true\r\n ? {}\r\n : {\r\n onFormUpdate(\r\n fn: PluginFormUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n true,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasMethods extends true\r\n ? {}\r\n : {\r\n methods<TNextMethods extends ChainMethodDefinitions>(\r\n fn: (helpers: MethodsBuilderParams) => TNextMethods\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TNextMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n true,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasWrapper extends true\r\n ? {}\r\n : {\r\n formWrapper(\r\n fn: PluginFormWrapperFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n true,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasInitialState extends true\r\n ? {}\r\n : {\r\n initialState<TNewState extends Record<string, unknown>>(\r\n fn: () => TNewState\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n true,\r\n TNewState\r\n >;\r\n });\n\r\nexport type CreatePluginStart<\r\n TName extends string,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n never,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n {}\r\n> & {\r\n useHook<THookReturn>(\r\n hookFn: (\r\n params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>\r\n ) => THookReturn\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n {}\r\n >;\r\n initialState<TNewState extends Record<string, unknown>>(\r\n fn: () => TNewState\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n never,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n TNewState\r\n >;\r\n};\r\n\r\n// --- UPDATED EXPLICIT CONTEXT ---\r\n\r\nexport function createPluginContext<\r\n O extends z.ZodTypeAny | undefined = undefined,\r\n PM extends z.ZodTypeAny | undefined = undefined,\r\n FM extends z.ZodTypeAny | undefined = undefined,\r\n>(schemas?: {\r\n options?: O;\r\n pluginMetaData?: PM;\r\n fieldMetaData?: FM;\r\n}): {\r\n // EXPLICIT RETURN ANNOTATION STOPS TS FROM SERIALIZING\r\n createPlugin: <TName extends string>(\r\n name: TName\r\n ) => CreatePluginStart<\r\n TName,\r\n O extends z.ZodTypeAny ? OutputOf<O> : undefined,\r\n PM extends z.ZodTypeAny ? OutputOf<PM> : unknown,\r\n FM extends z.ZodTypeAny ? OutputOf<FM> : unknown\r\n >;\r\n} {\r\n type Options = O extends z.ZodTypeAny ? OutputOf<O> : undefined;\r\n type PluginMetaData = PM extends z.ZodTypeAny ? OutputOf<PM> : unknown;\r\n type FieldMetaData = FM extends z.ZodTypeAny ? OutputOf<FM> : unknown;\r\n\r\n function createPlugin<TName extends string>(name: TName) {\r\n type Builder<\r\n THookReturn,\r\n TChainMethods extends ChainMethodDefinitions,\r\n HT extends boolean,\r\n HU extends boolean,\r\n HFU extends boolean,\r\n HM extends boolean,\r\n HW extends boolean,\r\n HI extends boolean,\r\n TInitialState extends Record<string, unknown> = {},\r\n > = CogsPluginBuilder<\r\n TName,\r\n Options,\r\n PluginMetaData,\r\n FieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HT,\r\n HU,\r\n HFU,\r\n HM,\r\n HW,\r\n HI,\r\n TInitialState\r\n >;\r\n\r\n const createPluginObject = <\r\n THookReturn = never,\r\n TChainMethods extends ChainMethodDefinitions = {},\r\n TInitialState extends Record<string, unknown> = {},\r\n >(\r\n hookFn?: (\r\n params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>\r\n ) => THookReturn,\r\n transformFn?: PluginTransformFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n updateHandler?: PluginUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n formUpdateHandler?: PluginFormUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n chainMethods?: TChainMethods,\r\n initialStateFn?: () => TInitialState,\r\n wrapperFn?: PluginFormWrapperFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ): Prettify<\r\n CogsPlugin<\r\n TName,\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData,\r\n TChainMethods,\r\n TInitialState\r\n >\r\n > => {\r\n return {\r\n name,\r\n initialState: initialStateFn,\r\n useHook: hookFn as any,\r\n transformState: transformFn as any,\r\n onUpdate: updateHandler as any,\r\n onFormUpdate: formUpdateHandler as any,\r\n formWrapper: wrapperFn as any,\r\n chainMethods,\r\n };\r\n };\r\n\r\n function createBuilder<\r\n THookReturn = never,\r\n TChainMethods extends ChainMethodDefinitions = {},\r\n HasTransform extends boolean = false,\r\n HasUpdate extends boolean = false,\r\n HasFormUpdate extends boolean = false,\r\n HasMethods extends boolean = false,\r\n HasWrapper extends boolean = false,\r\n HasInitialState extends boolean = false,\r\n TInitialState extends Record<string, unknown> = {},\r\n >(\r\n hookFn?: (\r\n params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>\r\n ) => THookReturn,\r\n transformFn?: PluginTransformFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n updateHandler?: PluginUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n formUpdateHandler?: PluginFormUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n chainMethods?: TChainMethods,\r\n initialStateFn?: () => TInitialState,\r\n wrapperFn?: PluginFormWrapperFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ): Builder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n > {\r\n const plugin = createPluginObject<THookReturn, TChainMethods, TInitialState>(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n\r\n const methods = {} as Partial<\r\n Builder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >\r\n >;\r\n\r\n if (!transformFn) {\r\n (methods as any).transformState = (\r\n fn: PluginTransformFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n true,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n fn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!updateHandler) {\r\n (methods as any).onUpdate = (\r\n fn: PluginUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n true,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n fn,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!formUpdateHandler) {\r\n (methods as any).onFormUpdate = (\r\n fn: PluginFormUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n true,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n fn,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!chainMethods) {\r\n (methods as any).methods = <\r\n TNextMethods extends ChainMethodDefinitions,\r\n >(\r\n fn: (helpers: MethodsBuilderParams) => TNextMethods\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TNextMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n true,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n fn(createMethodsBuilderParams()),\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!initialStateFn) {\r\n (methods as any).initialState = <TNewState extends Record<string, unknown>>(fn: () => TNewState) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n true,\r\n TNewState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n fn,\r\n wrapperFn\r\n );\r\n }\r\n if (!wrapperFn) {\r\n (methods as any).formWrapper = (\r\n fn: PluginFormWrapperFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n true,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n fn\r\n );\r\n }\r\n\r\n return Object.assign(plugin, methods) as Builder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }\r\n\r\n const start = Object.assign(\r\n createBuilder<never, {}, false, false, false, false, false, false, {}>(),\r\n {\r\n useHook<THookReturn>(\r\n hookFn: (\r\n params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>\r\n ) => THookReturn\r\n ) {\r\n return createBuilder<\r\n THookReturn,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n {}\r\n >(hookFn);\r\n },\r\n initialState<TNewState extends Record<string, unknown>>(fn: () => TNewState) {\r\n return createBuilder<\r\n never,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n TNewState\r\n >(undefined, undefined, undefined, undefined, undefined, fn);\r\n },\r\n }\r\n ) as CreatePluginStart<TName, Options, PluginMetaData, FieldMetaData>;\r\n\r\n return start;\r\n }\r\n\r\n return { createPlugin };\r\n}\r\n"],"names":["keyedSchema","z","toDeconstructedMethods","stateHandler","data","patch","meta","errors","opts","createMetadataContext","stateKey","pluginName","getGlobalStore","path","refs","entry","elements","disabled","el","getAllFieldElements","setAllFieldsDisabled","createScopedMetadataContext","globalContext","createMethodDefinition","target","pathPattern","handler","createPathRecorder","recorder","_target","prop","createMethodsBuilderParams","selector","base","createPluginContext","schemas","createPlugin","name","createPluginObject","hookFn","transformFn","updateHandler","formUpdateHandler","chainMethods","initialStateFn","wrapperFn","createBuilder","plugin","methods","fn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugins.js","sources":["../src/plugins.ts"],"sourcesContent":["import { z } from 'zod';\r\nimport type { ReactNode, RefObject } from 'react';\r\nimport { StateObject, UpdateTypeDetail } from './CogsState';\r\nimport {\r\n getGlobalStore,\r\n getAllFieldElements,\r\n setAllFieldsDisabled,\r\n} from './store';\r\nimport { ClientActivityEvent } from './pluginStore';\r\n\r\ntype Prettify<T> = { [K in keyof T]: T[K] } & {};\r\n\r\nexport type ChainMethodTarget =\r\n | 'any'\r\n | 'array'\r\n | 'object'\r\n | 'primitive'\r\n | 'boolean';\r\n\r\nexport type ChainMethodContext<TOptions = any, THookReturn = any> = {\r\n stateKey: string;\r\n path: string[];\r\n pluginName: string;\r\n options: TOptions | undefined;\r\n hookData?: THookReturn;\r\n $get: () => any;\r\n $update: (payload: any) => { synced: () => void };\r\n $applyOperation: (operation: any, metaData?: Record<string, any>) => void;\r\n getFieldMetaData: () => any;\r\n setFieldMetaData: (data: Record<string, any>) => void;\r\n removeFieldMetaData: () => void;\r\n getFieldRefs: () => RefObject<any>[];\r\n getFieldElements: () => HTMLElement[];\r\n setFieldDisabled: (disabled: boolean) => void;\r\n};\r\n\r\nexport type ChainMethodHandler = (\r\n ctx: ChainMethodContext<any, any>,\r\n ...args: any[]\r\n) => any;\r\n\r\nexport type ChainMethodDefinition<\r\n THandler extends ChainMethodHandler = ChainMethodHandler,\r\n> = {\r\n target: ChainMethodTarget;\r\n pathPattern?: string[];\r\n handler: THandler;\r\n};\r\n\r\nexport type ChainMethodDefinitions = Record<string, ChainMethodDefinition<any>>;\r\n\r\ntype ChainMethodCallable<THandler> = THandler extends (\r\n ctx: any,\r\n ...args: infer TArgs\r\n) => infer TReturn\r\n ? (...args: TArgs) => TReturn\r\n : never;\r\n\r\nexport type ChainMethodCallables<TMethods> = {\r\n [K in keyof TMethods]: TMethods[K] extends ChainMethodDefinition<infer TFn>\r\n ? ChainMethodCallable<TFn>\r\n : never;\r\n};\r\n\r\nexport type KeyedTypes<TMap extends Record<string, any>> = {\r\n __key: 'keyed';\r\n map: TMap;\r\n};\r\n\r\nexport const keyedSchema = <TMap extends Record<string, any>>() =>\r\n z.object({\r\n __key: z.literal('keyed'),\r\n map: z.any(),\r\n }) as z.ZodType<KeyedTypes<TMap>>;\r\n\r\n// Helpers: turn a zod object shape into its inferred value shape\r\ntype InferZodObject<T extends Record<string, z.ZodTypeAny>> = {\r\n [K in keyof T]: z.infer<T[K]>;\r\n};\r\nexport type InferPerKeyValueMap<\r\n TMap extends Record<string, Record<string, z.ZodTypeAny>>,\r\n> = {\r\n [K in keyof TMap]: InferZodObject<TMap[K]>;\r\n};\r\n\r\n// Deconstructed cogs methods (no TState)\r\ntype DeconstructedCogsMethods<TStateSlice = any> = {\r\n initialiseState: (data: TStateSlice) => void;\r\n initialiseShadowState: (data: any) => void;\r\n applyOperation: (patch: any, meta?: { dontUpdate?: boolean }) => void;\r\n addZodErrors: (errors: any[]) => void;\r\n getState: () => TStateSlice;\r\n setOptions: (options: any) => void;\r\n};\r\n\r\nexport function toDeconstructedMethods(stateHandler: StateObject<any>) {\r\n return {\r\n initialiseState: (data: any) => {\r\n stateHandler.$update(data);\r\n },\r\n initialiseShadowState: (data: any) => {\r\n stateHandler.$initializeAndMergeShadowState(data);\r\n },\r\n applyOperation: (patch: any, meta?: { dontUpdate?: boolean }) =>\r\n stateHandler.$applyOperation(patch, meta),\r\n addZodErrors: (errors: any[]) => stateHandler.$addZodValidation(errors),\r\n getState: () => stateHandler.$get(),\r\n setOptions: (opts: any) => {\r\n stateHandler.$setOptions(opts);\r\n },\r\n };\r\n}\r\ntype ScopedMetadataMethods<TFieldMetaData> = {\r\n getFieldMetaData: () => TFieldMetaData | undefined;\r\n setFieldMetaData: (data: Partial<TFieldMetaData>) => void;\r\n removeFieldMetaData: () => void;\r\n getFieldRefs: () => RefObject<any>[];\r\n getFieldElements: () => HTMLElement[];\r\n setFieldDisabled: (disabled: boolean) => void;\r\n};\r\n\r\n// These are the existing global methods that still require a path.\r\ntype GlobalMetadataMethods<TFieldMetaData> = {\r\n getFieldMetaData: (path: string[]) => TFieldMetaData | undefined;\r\n setFieldMetaData: (path: string[], data: Partial<TFieldMetaData>) => void;\r\n removeFieldMetaData: (path: string[]) => void;\r\n getFieldRefs: (path: string[]) => RefObject<any>[];\r\n getFieldElements: (path: string[]) => HTMLElement[];\r\n setFieldDisabled: (path: string[], disabled: boolean) => void;\r\n getAllFieldElements: () => HTMLElement[];\r\n setAllFieldsDisabled: (disabled: boolean) => void;\r\n};\r\n// Simplified: All params use the same TFieldMetaData type\r\nexport type UseHookParams<\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n GlobalMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n options: TOptions;\r\n pluginName: string;\r\n isInitialMount: boolean;\r\n };\r\n\r\nexport type TransformStateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n GlobalMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n previousState?: TStateSlice;\r\n isInitialTransform: boolean;\r\n pluginName: string;\r\n };\r\n\r\nexport type OnUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n ScopedMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n update: UpdateTypeDetail;\r\n path?: string[];\r\n\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n\r\n previousValue?: any;\r\n nextValue?: any;\r\n updateSource?: 'user' | 'plugin' | 'system';\r\n\r\n pluginName: string;\r\n };\r\nexport type OnFormUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = DeconstructedCogsMethods<TStateSlice> &\r\n ScopedMetadataMethods<TFieldMetaData> & {\r\n stateKey: string;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n path: string[];\r\n event: ClientActivityEvent; // Update this to use the full event type\r\n\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n\r\n formState?: 'pristine' | 'dirty' | 'submitting' | 'submitted';\r\n pluginName: string;\r\n };\r\n\r\nexport type FormWrapperParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TStateSlice = any,\r\n> = ScopedMetadataMethods<TFieldMetaData> & {\r\n element: ReactNode;\r\n path: string[];\r\n stateKey: string;\r\n options: TOptions;\r\n hookData?: THookReturn;\r\n fieldType?: string;\r\n wrapperDepth?: number;\r\n\r\n // Deconstructed methods\r\n initialiseState: (data: TStateSlice) => void;\r\n initialiseShadowState: (data: any) => void;\r\n applyOperation: (patch: any, meta?: { dontUpdate?: boolean }) => void;\r\n addZodErrors: (errors: any[]) => void;\r\n getState: () => TStateSlice;\r\n setOptions: (options: any) => void;\r\n\r\n getPluginMetaData: () => TPluginMetaData | undefined;\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) => void;\r\n removePluginMetaData: () => void;\r\n\r\n pluginName: string;\r\n};\r\n\r\n// Unified plugin definition\r\nexport type CogsPlugin<\r\n TName extends string,\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TChainMethods extends ChainMethodDefinitions = {},\r\n TInitialState extends Record<string, unknown> = {},\r\n> = {\r\n name: TName;\r\n\r\n initialState?: () => TInitialState;\r\n\r\n useHook?: (\r\n params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>\r\n ) => THookReturn;\r\n\r\n transformState?: (\r\n params: TransformStateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => void;\r\n\r\n onUpdate?: (\r\n params: OnUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => void;\r\n\r\n onFormUpdate?: (\r\n params: OnFormUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => void;\r\n\r\n formWrapper?: (\r\n params: FormWrapperParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n ) => ReactNode;\r\n\r\n chainMethods?: TChainMethods;\r\n};\r\n\r\n// Metadata helpers\r\nexport function createMetadataContext<TPluginMetaData, TFieldMetaData>(\r\n stateKey: string,\r\n pluginName: string\r\n) {\r\n return {\r\n getPluginMetaData: (): TPluginMetaData | undefined =>\r\n getGlobalStore\r\n .getState()\r\n .getPluginMetaDataMap(stateKey, [])\r\n ?.get(pluginName) as TPluginMetaData | undefined,\r\n\r\n setPluginMetaData: (data: Partial<TPluginMetaData>) =>\r\n getGlobalStore\r\n .getState()\r\n .setPluginMetaData(stateKey, [], pluginName, data),\r\n\r\n removePluginMetaData: () =>\r\n getGlobalStore.getState().removePluginMetaData(stateKey, [], pluginName),\r\n\r\n getFieldMetaData: (path: string[]): TFieldMetaData | undefined =>\r\n getGlobalStore\r\n .getState()\r\n .getPluginMetaDataMap(stateKey, path)\r\n ?.get(pluginName) as TFieldMetaData | undefined,\r\n\r\n setFieldMetaData: (path: string[], data: Partial<TFieldMetaData>) =>\r\n getGlobalStore\r\n .getState()\r\n .setPluginMetaData(stateKey, path, pluginName, data),\r\n\r\n removeFieldMetaData: (path: string[]) =>\r\n getGlobalStore\r\n .getState()\r\n .removePluginMetaData(stateKey, path, pluginName),\r\n getFieldRefs: (path: string[]): RefObject<any>[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const refs: RefObject<any>[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) refs.push(entry.domRef);\r\n });\r\n return refs;\r\n },\r\n\r\n getFieldElements: (path: string[]): HTMLElement[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const elements: HTMLElement[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) elements.push(entry.domRef.current);\r\n });\r\n return elements;\r\n },\r\n\r\n setFieldDisabled: (path: string[], disabled: boolean) => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return;\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n const el = entry.domRef?.current;\r\n if (!el) return;\r\n if ('disabled' in el) el.disabled = disabled;\r\n else {\r\n el.style.pointerEvents = disabled ? 'none' : '';\r\n el.setAttribute('aria-disabled', String(disabled));\r\n }\r\n });\r\n },\r\n getAllFieldElements: (): HTMLElement[] => {\r\n return getAllFieldElements(stateKey);\r\n },\r\n\r\n setAllFieldsDisabled: (disabled: boolean): void =>\r\n setAllFieldsDisabled(stateKey, disabled),\r\n };\r\n}\r\n\r\nexport function createScopedMetadataContext<TPluginMetaData, TFieldMetaData>(\r\n stateKey: string,\r\n pluginName: string,\r\n path: string[]\r\n) {\r\n const globalContext = createMetadataContext<TPluginMetaData, TFieldMetaData>(\r\n stateKey,\r\n pluginName\r\n );\r\n\r\n return {\r\n ...globalContext,\r\n getFieldMetaData: (): TFieldMetaData | undefined =>\r\n globalContext.getFieldMetaData(path),\r\n setFieldMetaData: (data: Partial<TFieldMetaData>) =>\r\n globalContext.setFieldMetaData(path, data),\r\n removeFieldMetaData: () => globalContext.removeFieldMetaData(path),\r\n\r\n // NEW: Direct access to the DOM refs for this field\r\n getFieldRefs: (): RefObject<any>[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const refs: RefObject<any>[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) {\r\n refs.push(entry.domRef);\r\n }\r\n });\r\n return refs;\r\n },\r\n\r\n getFieldElements: (): HTMLElement[] => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return [];\r\n const elements: HTMLElement[] = [];\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n if (entry.domRef?.current) {\r\n elements.push(entry.domRef.current);\r\n }\r\n });\r\n return elements;\r\n },\r\n\r\n setFieldDisabled: (disabled: boolean) => {\r\n const meta = getGlobalStore.getState().getShadowMetadata(stateKey, path);\r\n if (!meta?.clientActivityState?.elements) return;\r\n meta.clientActivityState.elements.forEach((entry: any) => {\r\n const el = entry.domRef?.current;\r\n if (!el) return;\r\n if ('disabled' in el) {\r\n el.disabled = disabled;\r\n } else {\r\n el.style.pointerEvents = disabled ? 'none' : '';\r\n el.setAttribute('aria-disabled', String(disabled));\r\n }\r\n });\r\n },\r\n };\r\n}\r\n// Add this type export - derives from what createScopedMetadataContext returns\r\nexport type ScopedMetadataContext<TFieldMetaData = any> = {\r\n getFieldMetaData: () => TFieldMetaData | undefined;\r\n setFieldMetaData: (data: Partial<TFieldMetaData>) => void;\r\n removeFieldMetaData: () => void;\r\n};\r\n\r\n// Type for a single plugin's API entry in ValidationWrapper\r\nexport type PluginApiEntry<THookData = any, TFieldMetaData = any> = {\r\n hookData: THookData | undefined;\r\n} & ScopedMetadataContext<TFieldMetaData>;\r\n\r\n// Type for the entire plugins API object passed to validation render prop\r\nexport type PluginsApi = Record<string, PluginApiEntry>;\r\ntype ZodObjOutput<T extends z.ZodObject<any>> = {\r\n [K in keyof T['shape']]: z.output<T['shape'][K]>;\r\n};\r\ntype OutputOf<T extends z.ZodTypeAny> =\r\n T extends z.ZodObject<any> ? Prettify<ZodObjOutput<T>> : z.output<T>;\r\n\r\ntype MethodFactory = <THandler extends ChainMethodHandler>(\r\n handler: THandler\r\n) => ChainMethodDefinition<THandler>;\r\n\r\ntype PathMethodFactory = MethodFactory & {\r\n array: MethodFactory;\r\n object: MethodFactory;\r\n primitive: MethodFactory;\r\n boolean: MethodFactory;\r\n field: MethodFactory;\r\n};\r\n\r\ntype MethodsBuilderParams = {\r\n path: (selector: (state: any) => any) => PathMethodFactory;\r\n array: MethodFactory;\r\n object: MethodFactory;\r\n primitive: MethodFactory;\r\n boolean: MethodFactory;\r\n field: MethodFactory;\r\n};\r\n\r\nconst createMethodDefinition =\r\n (target: ChainMethodTarget, pathPattern?: string[]): MethodFactory =>\r\n (handler) => ({\r\n target,\r\n pathPattern,\r\n handler,\r\n });\r\n\r\nconst createPathRecorder = () => {\r\n const path: string[] = [];\r\n\r\n const recorder = new Proxy(\r\n {},\r\n {\r\n get(_target, prop) {\r\n if (typeof prop !== 'string') return recorder;\r\n if (prop === 'then') return undefined;\r\n path.push(prop === '$' ? '*' : prop);\r\n return recorder;\r\n },\r\n }\r\n );\r\n\r\n return { recorder, path };\r\n};\r\n\r\nconst createMethodsBuilderParams = (): MethodsBuilderParams => {\r\n const path = (selector: (state: any) => any): PathMethodFactory => {\r\n const { recorder, path: pathPattern } = createPathRecorder();\r\n selector(recorder);\r\n\r\n const base = createMethodDefinition(\r\n 'any',\r\n pathPattern\r\n ) as PathMethodFactory;\r\n base.array = createMethodDefinition('array', pathPattern);\r\n base.object = createMethodDefinition('object', pathPattern);\r\n base.primitive = createMethodDefinition('primitive', pathPattern);\r\n base.boolean = createMethodDefinition('boolean', pathPattern);\r\n base.field = createMethodDefinition('any', pathPattern);\r\n\r\n return base;\r\n };\r\n\r\n return {\r\n path,\r\n array: createMethodDefinition('array'),\r\n object: createMethodDefinition('object'),\r\n primitive: createMethodDefinition('primitive'),\r\n boolean: createMethodDefinition('boolean'),\r\n field: createMethodDefinition('any'),\r\n };\r\n};\r\n// --- EXTRACTED BUILDER TYPES (Solves TS7056 Serialization Error) ---\r\n\r\nexport type PluginTransformFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: TransformStateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => void;\r\n\r\nexport type PluginUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: OnUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => void;\r\n\r\nexport type PluginFormUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: OnFormUpdateParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => void;\r\n\r\nexport type PluginFormWrapperFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = (\r\n params: FormWrapperParams<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n any\r\n >\r\n) => ReactNode;\r\n\r\nexport type CogsPluginBuilder<\r\n TName extends string,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods extends ChainMethodDefinitions,\r\n HasTransform extends boolean,\r\n HasUpdate extends boolean,\r\n HasFormUpdate extends boolean,\r\n HasMethods extends boolean,\r\n HasWrapper extends boolean,\r\n HasInitialState extends boolean,\r\n TInitialState extends Record<string, unknown> = {},\r\n> = Prettify<\r\n CogsPlugin<\r\n TName,\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n TChainMethods,\r\n TInitialState\r\n >\r\n> &\r\n (HasTransform extends true\r\n ? {}\r\n : {\r\n transformState(\r\n fn: PluginTransformFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n true,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasUpdate extends true\r\n ? {}\r\n : {\r\n onUpdate(\r\n fn: PluginUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n true,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasFormUpdate extends true\r\n ? {}\r\n : {\r\n onFormUpdate(\r\n fn: PluginFormUpdateFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n true,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasMethods extends true\r\n ? {}\r\n : {\r\n methods<TNextMethods extends ChainMethodDefinitions>(\r\n fn: (helpers: MethodsBuilderParams) => TNextMethods\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TNextMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n true,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasWrapper extends true\r\n ? {}\r\n : {\r\n formWrapper(\r\n fn: PluginFormWrapperFn<\r\n TOptions,\r\n THookReturn,\r\n TPluginMetaData,\r\n TFieldMetaData\r\n >\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n true,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }) &\r\n (HasInitialState extends true\r\n ? {}\r\n : {\r\n initialState<TNewState extends Record<string, unknown>>(\r\n fn: () => TNewState\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n true,\r\n TNewState\r\n >;\r\n });\r\n\r\nexport type CreatePluginStart<\r\n TName extends string,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n> = CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n never,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n {}\r\n> & {\r\n useHook<THookReturn>(\r\n hookFn: (\r\n params: UseHookParams<TOptions, TPluginMetaData, TFieldMetaData, any>\r\n ) => THookReturn\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n THookReturn,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n {}\r\n >;\r\n initialState<TNewState extends Record<string, unknown>>(\r\n fn: () => TNewState\r\n ): CogsPluginBuilder<\r\n TName,\r\n TOptions,\r\n TPluginMetaData,\r\n TFieldMetaData,\r\n never,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n TNewState\r\n >;\r\n};\r\n\r\n// --- UPDATED EXPLICIT CONTEXT ---\r\n\r\nexport function createPluginContext<\r\n O extends z.ZodTypeAny | undefined = undefined,\r\n PM extends z.ZodTypeAny | undefined = undefined,\r\n FM extends z.ZodTypeAny | undefined = undefined,\r\n>(schemas?: {\r\n options?: O;\r\n pluginMetaData?: PM;\r\n fieldMetaData?: FM;\r\n}): {\r\n // EXPLICIT RETURN ANNOTATION STOPS TS FROM SERIALIZING\r\n createPlugin: <TName extends string>(\r\n name: TName\r\n ) => CreatePluginStart<\r\n TName,\r\n O extends z.ZodTypeAny ? OutputOf<O> : undefined,\r\n PM extends z.ZodTypeAny ? OutputOf<PM> : unknown,\r\n FM extends z.ZodTypeAny ? OutputOf<FM> : unknown\r\n >;\r\n} {\r\n type Options = O extends z.ZodTypeAny ? OutputOf<O> : undefined;\r\n type PluginMetaData = PM extends z.ZodTypeAny ? OutputOf<PM> : unknown;\r\n type FieldMetaData = FM extends z.ZodTypeAny ? OutputOf<FM> : unknown;\r\n\r\n function createPlugin<TName extends string>(name: TName) {\r\n type Builder<\r\n THookReturn,\r\n TChainMethods extends ChainMethodDefinitions,\r\n HT extends boolean,\r\n HU extends boolean,\r\n HFU extends boolean,\r\n HM extends boolean,\r\n HW extends boolean,\r\n HI extends boolean,\r\n TInitialState extends Record<string, unknown> = {},\r\n > = CogsPluginBuilder<\r\n TName,\r\n Options,\r\n PluginMetaData,\r\n FieldMetaData,\r\n THookReturn,\r\n TChainMethods,\r\n HT,\r\n HU,\r\n HFU,\r\n HM,\r\n HW,\r\n HI,\r\n TInitialState\r\n >;\r\n\r\n const createPluginObject = <\r\n THookReturn = never,\r\n TChainMethods extends ChainMethodDefinitions = {},\r\n TInitialState extends Record<string, unknown> = {},\r\n >(\r\n hookFn?: (\r\n params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>\r\n ) => THookReturn,\r\n transformFn?: PluginTransformFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n updateHandler?: PluginUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n formUpdateHandler?: PluginFormUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n chainMethods?: TChainMethods,\r\n initialStateFn?: () => TInitialState,\r\n wrapperFn?: PluginFormWrapperFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ): Prettify<\r\n CogsPlugin<\r\n TName,\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData,\r\n TChainMethods,\r\n TInitialState\r\n >\r\n > => {\r\n return {\r\n name,\r\n initialState: initialStateFn,\r\n useHook: hookFn as any,\r\n transformState: transformFn as any,\r\n onUpdate: updateHandler as any,\r\n onFormUpdate: formUpdateHandler as any,\r\n formWrapper: wrapperFn as any,\r\n chainMethods,\r\n };\r\n };\r\n\r\n function createBuilder<\r\n THookReturn = never,\r\n TChainMethods extends ChainMethodDefinitions = {},\r\n HasTransform extends boolean = false,\r\n HasUpdate extends boolean = false,\r\n HasFormUpdate extends boolean = false,\r\n HasMethods extends boolean = false,\r\n HasWrapper extends boolean = false,\r\n HasInitialState extends boolean = false,\r\n TInitialState extends Record<string, unknown> = {},\r\n >(\r\n hookFn?: (\r\n params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>\r\n ) => THookReturn,\r\n transformFn?: PluginTransformFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n updateHandler?: PluginUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n formUpdateHandler?: PluginFormUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >,\r\n chainMethods?: TChainMethods,\r\n initialStateFn?: () => TInitialState,\r\n wrapperFn?: PluginFormWrapperFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ): Builder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n > {\r\n const plugin = createPluginObject<THookReturn, TChainMethods, TInitialState>(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n\r\n const methods = {} as Partial<\r\n Builder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >\r\n >;\r\n\r\n if (!transformFn) {\r\n (methods as any).transformState = (\r\n fn: PluginTransformFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n true,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n fn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!updateHandler) {\r\n (methods as any).onUpdate = (\r\n fn: PluginUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n true,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n fn,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!formUpdateHandler) {\r\n (methods as any).onFormUpdate = (\r\n fn: PluginFormUpdateFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n true,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n fn,\r\n chainMethods,\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!chainMethods) {\r\n (methods as any).methods = <\r\n TNextMethods extends ChainMethodDefinitions,\r\n >(\r\n fn: (helpers: MethodsBuilderParams) => TNextMethods\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TNextMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n true,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n fn(createMethodsBuilderParams()),\r\n initialStateFn,\r\n wrapperFn\r\n );\r\n }\r\n if (!initialStateFn) {\r\n (methods as any).initialState = <TNewState extends Record<string, unknown>>(fn: () => TNewState) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n true,\r\n TNewState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n fn,\r\n wrapperFn\r\n );\r\n }\r\n if (!wrapperFn) {\r\n (methods as any).formWrapper = (\r\n fn: PluginFormWrapperFn<\r\n Options,\r\n THookReturn,\r\n PluginMetaData,\r\n FieldMetaData\r\n >\r\n ) =>\r\n createBuilder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n true,\r\n HasInitialState,\r\n TInitialState\r\n >(\r\n hookFn,\r\n transformFn,\r\n updateHandler,\r\n formUpdateHandler,\r\n chainMethods,\r\n initialStateFn,\r\n fn\r\n );\r\n }\r\n\r\n return Object.assign(plugin, methods) as Builder<\r\n THookReturn,\r\n TChainMethods,\r\n HasTransform,\r\n HasUpdate,\r\n HasFormUpdate,\r\n HasMethods,\r\n HasWrapper,\r\n HasInitialState,\r\n TInitialState\r\n >;\r\n }\r\n\r\n const start = Object.assign(\r\n createBuilder<never, {}, false, false, false, false, false, false, {}>(),\r\n {\r\n useHook<THookReturn>(\r\n hookFn: (\r\n params: UseHookParams<Options, PluginMetaData, FieldMetaData, any>\r\n ) => THookReturn\r\n ) {\r\n return createBuilder<\r\n THookReturn,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n {}\r\n >(hookFn);\r\n },\r\n initialState<TNewState extends Record<string, unknown>>(fn: () => TNewState) {\r\n return createBuilder<\r\n never,\r\n {},\r\n false,\r\n false,\r\n false,\r\n false,\r\n false,\r\n true,\r\n TNewState\r\n >(undefined, undefined, undefined, undefined, undefined, fn);\r\n },\r\n }\r\n ) as CreatePluginStart<TName, Options, PluginMetaData, FieldMetaData>;\r\n\r\n return start;\r\n }\r\n\r\n return { createPlugin };\r\n}\r\n"],"names":["keyedSchema","z","toDeconstructedMethods","stateHandler","data","patch","meta","errors","opts","createMetadataContext","stateKey","pluginName","getGlobalStore","path","refs","entry","elements","disabled","el","getAllFieldElements","setAllFieldsDisabled","createScopedMetadataContext","globalContext","createMethodDefinition","target","pathPattern","handler","createPathRecorder","recorder","_target","prop","createMethodsBuilderParams","selector","base","createPluginContext","schemas","createPlugin","name","createPluginObject","hookFn","transformFn","updateHandler","formUpdateHandler","chainMethods","initialStateFn","wrapperFn","createBuilder","plugin","methods","fn"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/CogsState.tsx
CHANGED
|
@@ -828,31 +828,42 @@ type KeyedKeys<P> = {
|
|
|
828
828
|
: never;
|
|
829
829
|
}[keyof P];
|
|
830
830
|
|
|
831
|
+
type PluginOptionEntry<
|
|
832
|
+
P,
|
|
833
|
+
StateKey extends PropertyKey,
|
|
834
|
+
> = P extends undefined
|
|
835
|
+
? never
|
|
836
|
+
: P extends Record<string, any>
|
|
837
|
+
? Prettify<
|
|
838
|
+
Partial<Pick<P, Exclude<keyof P, KeyedKeys<P>>>> & {
|
|
839
|
+
[K in KeyedKeys<P> as StateKey extends keyof NonNullable<
|
|
840
|
+
P[K]
|
|
841
|
+
>['map']
|
|
842
|
+
? NonNullable<P[K]>['map'][StateKey] extends undefined
|
|
843
|
+
? never
|
|
844
|
+
: keyof NonNullable<P[K]>['map'][StateKey] extends never
|
|
845
|
+
? never
|
|
846
|
+
: K
|
|
847
|
+
: never]: CleanIntersection<
|
|
848
|
+
StateKey extends keyof NonNullable<P[K]>['map']
|
|
849
|
+
? NonNullable<P[K]>['map'][StateKey]
|
|
850
|
+
: never
|
|
851
|
+
>;
|
|
852
|
+
}
|
|
853
|
+
>
|
|
854
|
+
: P extends object
|
|
855
|
+
? Partial<P> extends P
|
|
856
|
+
? Partial<P>
|
|
857
|
+
: P
|
|
858
|
+
: P;
|
|
859
|
+
|
|
831
860
|
type PluginOptionsForState<
|
|
832
861
|
PluginOptions,
|
|
833
862
|
StateKey extends PropertyKey,
|
|
834
863
|
> = {
|
|
835
|
-
[PName in keyof PluginOptions
|
|
836
|
-
?
|
|
837
|
-
|
|
838
|
-
Partial<Pick<P, Exclude<keyof P, KeyedKeys<P>>>> & {
|
|
839
|
-
[K in KeyedKeys<P> as StateKey extends keyof NonNullable<
|
|
840
|
-
P[K]
|
|
841
|
-
>['map']
|
|
842
|
-
? NonNullable<P[K]>['map'][StateKey] extends undefined
|
|
843
|
-
? never
|
|
844
|
-
: keyof NonNullable<P[K]>['map'][StateKey] extends never
|
|
845
|
-
? never
|
|
846
|
-
: K
|
|
847
|
-
: never]: CleanIntersection<
|
|
848
|
-
StateKey extends keyof NonNullable<P[K]>['map']
|
|
849
|
-
? NonNullable<P[K]>['map'][StateKey]
|
|
850
|
-
: never
|
|
851
|
-
>;
|
|
852
|
-
}
|
|
853
|
-
>
|
|
854
|
-
: P
|
|
855
|
-
: never;
|
|
864
|
+
[PName in keyof PluginOptions as PluginOptions[PName] extends undefined
|
|
865
|
+
? never
|
|
866
|
+
: PName]?: PluginOptionEntry<PluginOptions[PName], StateKey>;
|
|
856
867
|
};
|
|
857
868
|
|
|
858
869
|
type UseCogsStateOptions<
|
|
@@ -987,29 +998,8 @@ export const createCogsState = <
|
|
|
987
998
|
const useCogsState = <StateKey extends StateKeys>(
|
|
988
999
|
stateKey: StateKey,
|
|
989
1000
|
options?: Prettify<
|
|
990
|
-
OptionsType<StateSlice<StateKey>, never> &
|
|
991
|
-
|
|
992
|
-
? P extends Record<string, any>
|
|
993
|
-
? Prettify<
|
|
994
|
-
Partial<Pick<P, Exclude<keyof P, KeyedKeys<P>>>> & {
|
|
995
|
-
[K in KeyedKeys<P> as StateKey extends keyof NonNullable<
|
|
996
|
-
P[K]
|
|
997
|
-
>['map']
|
|
998
|
-
? NonNullable<P[K]>['map'][StateKey] extends undefined
|
|
999
|
-
? never
|
|
1000
|
-
: keyof NonNullable<P[K]>['map'][StateKey] extends never
|
|
1001
|
-
? never
|
|
1002
|
-
: K
|
|
1003
|
-
: never]: CleanIntersection<
|
|
1004
|
-
StateKey extends keyof NonNullable<P[K]>['map']
|
|
1005
|
-
? NonNullable<P[K]>['map'][StateKey]
|
|
1006
|
-
: never
|
|
1007
|
-
>;
|
|
1008
|
-
}
|
|
1009
|
-
>
|
|
1010
|
-
: P
|
|
1011
|
-
: never;
|
|
1012
|
-
}
|
|
1001
|
+
OptionsType<StateSlice<StateKey>, never> &
|
|
1002
|
+
PluginOptionsForState<PluginOptions, StateKey>
|
|
1013
1003
|
>
|
|
1014
1004
|
): StateObject<StateSlice<StateKey>> => {
|
|
1015
1005
|
const [componentId] = useState(options?.componentId ?? uuidv4());
|
|
@@ -1050,10 +1040,10 @@ export const createCogsState = <
|
|
|
1050
1040
|
useEffect(() => {
|
|
1051
1041
|
pluginStore
|
|
1052
1042
|
.getState()
|
|
1053
|
-
.
|
|
1043
|
+
.registerStateHandler(stateKey as string, updater as any);
|
|
1054
1044
|
|
|
1055
1045
|
return () => {
|
|
1056
|
-
pluginStore.getState().
|
|
1046
|
+
pluginStore.getState().unregisterStateHandler(stateKey as string);
|
|
1057
1047
|
};
|
|
1058
1048
|
}, [stateKey, updater]);
|
|
1059
1049
|
|
|
@@ -1737,7 +1727,7 @@ export function useCogsStateFn<
|
|
|
1737
1727
|
defaultState?: TStateObject;
|
|
1738
1728
|
syncOptions?: SyncOptionsType<any>;
|
|
1739
1729
|
} & OptionsType<TStateObject> = {}
|
|
1740
|
-
) {
|
|
1730
|
+
): StateObject<TStateObject, TPlugins> {
|
|
1741
1731
|
const [reactiveForce, forceUpdate] = useState({}); //this is the key to reactivity
|
|
1742
1732
|
const { sessionId } = useCogsConfig();
|
|
1743
1733
|
let noStateKey = stateKey ? false : true;
|
package/src/CogsStateClient.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import React, { createContext, useContext } from "react";
|
|
3
|
+
import React, { createContext, useContext, type ReactNode } from "react";
|
|
4
4
|
type ConfigType = { sessionId?: string };
|
|
5
5
|
export const config: ConfigType = {
|
|
6
6
|
sessionId: undefined,
|
|
@@ -14,7 +14,7 @@ export function CogsStateClient({
|
|
|
14
14
|
children,
|
|
15
15
|
sessionId,
|
|
16
16
|
}: {
|
|
17
|
-
children:
|
|
17
|
+
children: ReactNode;
|
|
18
18
|
sessionId?: string;
|
|
19
19
|
}) {
|
|
20
20
|
return (
|
package/src/Components.tsx
CHANGED
|
@@ -20,6 +20,7 @@ import React, {
|
|
|
20
20
|
useRef,
|
|
21
21
|
useState,
|
|
22
22
|
useMemo,
|
|
23
|
+
type ReactNode,
|
|
23
24
|
} from 'react';
|
|
24
25
|
import { getGlobalStore, ValidationError, ValidationSeverity } from './store';
|
|
25
26
|
import { useInView } from 'react-intersection-observer';
|
|
@@ -46,7 +47,7 @@ export type ValidationWrapperProps = {
|
|
|
46
47
|
formOpts?: FormOptsType;
|
|
47
48
|
path: string[];
|
|
48
49
|
stateKey: string;
|
|
49
|
-
children:
|
|
50
|
+
children: ReactNode;
|
|
50
51
|
};
|
|
51
52
|
|
|
52
53
|
export function ValidationWrapper({
|
|
@@ -241,7 +242,7 @@ export function FormElementWrapper({
|
|
|
241
242
|
componentId: string;
|
|
242
243
|
meta?: any;
|
|
243
244
|
}) => any;
|
|
244
|
-
renderFn: (params: FormElementParams<any>) =>
|
|
245
|
+
renderFn: (params: FormElementParams<any>) => ReactNode;
|
|
245
246
|
formOpts?: FormOptsType;
|
|
246
247
|
setState: any;
|
|
247
248
|
}) {
|
|
@@ -626,7 +627,7 @@ export function IsolatedComponentWrapper({
|
|
|
626
627
|
}
|
|
627
628
|
// 1. Define the MINIMAL props needed.
|
|
628
629
|
type PluginWrapperProps = {
|
|
629
|
-
children:
|
|
630
|
+
children: ReactNode;
|
|
630
631
|
stateKey: string;
|
|
631
632
|
path: string[];
|
|
632
633
|
pluginName: string;
|
package/src/PluginRunner.tsx
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
useEffect,
|
|
3
|
+
useMemo,
|
|
4
|
+
useState,
|
|
5
|
+
useRef,
|
|
6
|
+
useSyncExternalStore,
|
|
7
|
+
type ReactNode,
|
|
8
|
+
} from 'react';
|
|
2
9
|
import { ClientActivityEvent, pluginStore } from './pluginStore';
|
|
3
10
|
import { isDeepEqual } from './utility';
|
|
4
11
|
import {
|
|
@@ -168,52 +175,42 @@ const PluginInstance = React.memo(
|
|
|
168
175
|
* The main orchestrator component. It reads from the central pluginStore
|
|
169
176
|
* and renders a `PluginInstance` controller for each active plugin.
|
|
170
177
|
*/
|
|
171
|
-
export function PluginRunner({ children }: { children:
|
|
172
|
-
// A simple way to force a re-render when the store changes.
|
|
173
|
-
const [, forceUpdate] = useReducer((c) => c + 1, 0);
|
|
174
|
-
|
|
175
|
-
// Subscribe to the store. When plugins or their options are added/removed,
|
|
176
|
-
// this component will re-render to update the list of PluginInstances.
|
|
177
|
-
useEffect(() => {
|
|
178
|
-
const unsubscribe = pluginStore.subscribe(forceUpdate);
|
|
179
|
-
|
|
180
|
-
return unsubscribe;
|
|
181
|
-
}, []);
|
|
182
|
-
|
|
178
|
+
export function PluginRunner({ children }: { children: ReactNode }) {
|
|
183
179
|
const { pluginOptions, stateHandlers, registeredPlugins } =
|
|
184
|
-
|
|
180
|
+
useSyncExternalStore(
|
|
181
|
+
pluginStore.subscribe,
|
|
182
|
+
() => pluginStore.getState(),
|
|
183
|
+
() => pluginStore.getState()
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
const pluginNeedsRunner = (
|
|
187
|
+
plugin: CogsPlugin<any, any, any, any, any, any, any>
|
|
188
|
+
) =>
|
|
189
|
+
!!(
|
|
190
|
+
plugin.useHook ||
|
|
191
|
+
plugin.transformState ||
|
|
192
|
+
plugin.onUpdate ||
|
|
193
|
+
plugin.onFormUpdate
|
|
194
|
+
);
|
|
185
195
|
|
|
186
196
|
return (
|
|
187
197
|
<>
|
|
188
|
-
{
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
*/}
|
|
193
|
-
{Array.from(pluginOptions.entries()).map(([stateKey, pluginMap]) => {
|
|
194
|
-
const stateHandler = stateHandlers.get(stateKey);
|
|
195
|
-
if (!stateHandler) {
|
|
196
|
-
return null; // Don't render a runner if the state handler isn't ready.
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
return Array.from(pluginMap.entries()).map(([pluginName, options]) => {
|
|
200
|
-
const plugin = registeredPlugins.find((p) => p.name === pluginName);
|
|
201
|
-
if (!plugin) {
|
|
202
|
-
return null; // Don't render if the plugin is not in the registered list.
|
|
203
|
-
}
|
|
198
|
+
{Array.from(stateHandlers.entries()).flatMap(([stateKey, stateHandler]) =>
|
|
199
|
+
registeredPlugins.filter(pluginNeedsRunner).map((plugin) => {
|
|
200
|
+
const options =
|
|
201
|
+
pluginOptions.get(stateKey)?.get(plugin.name) ?? {};
|
|
204
202
|
|
|
205
|
-
// Render a dedicated, memoized controller for this specific plugin configuration.
|
|
206
203
|
return (
|
|
207
204
|
<PluginInstance
|
|
208
|
-
key={`${stateKey}:${
|
|
205
|
+
key={`${stateKey}:${plugin.name}`}
|
|
209
206
|
stateKey={stateKey}
|
|
210
207
|
plugin={plugin}
|
|
211
208
|
options={options}
|
|
212
209
|
stateHandler={stateHandler}
|
|
213
210
|
/>
|
|
214
211
|
);
|
|
215
|
-
})
|
|
216
|
-
|
|
212
|
+
})
|
|
213
|
+
)}
|
|
217
214
|
|
|
218
215
|
{children}
|
|
219
216
|
</>
|