@piying/view-solid 2.4.5 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,13 @@
1
+ import { Injector } from 'static-injector';
1
2
  import * as v from 'valibot';
2
3
  export interface PiyingViewProps {
3
4
  schema: v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>;
4
5
  model?: any;
5
6
  modelChange?: (value: any) => void;
6
- options: any;
7
+ options: {
8
+ injector?: Injector;
9
+ builder?: any;
10
+ [name: string]: any;
11
+ };
7
12
  }
8
13
  export declare function PiyingView(props: PiyingViewProps): import("solid-js").JSX.Element;
package/index.cjs CHANGED
@@ -198,27 +198,30 @@ class SolidSchemaHandle extends viewCore.CoreSchemaHandle {
198
198
  class SolidFormBuilder extends viewCore.FormBuilder {
199
199
  }
200
200
  function PiyingView(props) {
201
- const rootInjector = staticInjector.createRootInjector({
202
- providers: [{
203
- provide: staticInjector.ChangeDetectionScheduler,
204
- useClass: staticInjector.ChangeDetectionSchedulerImpl
205
- }]
201
+ const maybeParentField = solidJs.useContext(PI_VIEW_FIELD_TOKEN);
202
+ const rootInjector = solidJs.createMemo(() => {
203
+ return props.options.injector ?? maybeParentField?.injector ?? staticInjector.createRootInjector({
204
+ providers: [{
205
+ provide: staticInjector.ChangeDetectionScheduler,
206
+ useClass: staticInjector.ChangeDetectionSchedulerImpl
207
+ }]
208
+ });
206
209
  });
207
210
  let injectorDispose;
208
211
  const initResult = solidJs.createMemo(() => {
209
212
  const subInjector = staticInjector.createInjector({
210
213
  providers: [],
211
- parent: rootInjector
214
+ parent: rootInjector()
212
215
  });
213
216
  injectorDispose = () => {
214
217
  subInjector.destroy();
215
218
  injectorDispose = void 0;
216
219
  };
217
220
  const field2 = viewCore.convert(props.schema, {
221
+ ...props.options,
218
222
  handle: SolidSchemaHandle,
219
223
  builder: SolidFormBuilder,
220
- injector: subInjector,
221
- ...props.options
224
+ injector: subInjector
222
225
  });
223
226
  return [field2, subInjector];
224
227
  });
@@ -261,7 +264,9 @@ function PiyingView(props) {
261
264
  },
262
265
  get children() {
263
266
  return solidJs.createComponent(InjectorToken.Provider, {
264
- value: rootInjector,
267
+ get value() {
268
+ return rootInjector();
269
+ },
265
270
  get children() {
266
271
  return solidJs.createComponent(PiyingFieldTemplate, {
267
272
  get field() {
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../packages/solid/src/token.ts","../../packages/solid/src/util/signal-convert.ts","../../packages/solid/src/component/wrapper.tsx","../../packages/solid/src/component/field-template.tsx","../../packages/solid/src/util/use-control-value-accessor.ts","../../packages/solid/src/util/use-effect-sync.ts","../../packages/solid/src/component/group.tsx","../../packages/solid/src/schema-handle.ts","../../packages/solid/src/builder.ts","../../packages/solid/src/component/view.tsx","../../packages/solid/src/use-model/use-text-model.ts","../../packages/solid/src/use-model/use-checkbox-model.ts","../../packages/solid/src/use-model/use-number-model.ts","../../packages/solid/src/use-model/use-radio-model.ts","../../packages/solid/src/use-model/use-range-model.ts","../../packages/solid/src/use-model/use-select-model.ts"],"sourcesContent":["import type { Injector } from 'static-injector';\nimport type { PiResolvedViewFieldConfig, PiViewConfig } from './type/group';\nimport { createContext } from 'solid-js';\nimport * as v from 'valibot';\nimport type { ConvertOptions } from '@piying/valibot-visit';\nimport type {\n SetOptional,\n CoreSchemaHandle,\n FormBuilder,\n} from '@piying/view-core';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\nexport const PI_INPUT_OPTIONS_TOKEN = createContext<\n SetOptional<ConvertOptions<typeof CoreSchemaHandle<any, any>>, 'handle'> & {\n builder: typeof FormBuilder<CoreSchemaHandle<any, any>>;\n fieldGlobalConfig?: PiViewConfig;\n }\n>(undefined as any);\nexport const PI_INPUT_SCHEMA_TOKEN = createContext<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n>(undefined as any);\nexport const PI_INPUT_MODEL_TOKEN = createContext<any>(undefined as any);\n\nexport const CVA = Symbol.for('ControlValueAccessor');\n","import { effect } from 'static-injector';\n\nimport { InjectorToken } from '../token';\nimport { useContext, createEffect, createSignal, onCleanup } from 'solid-js';\n\n// signal=>ref\nexport function createSignalConvert<T>(value: () => T) {\n const injector = useContext(InjectorToken)!;\n const [result, setResult] = createSignal(value());\n createEffect(() => {\n setResult(() => value());\n const ref = effect(\n () => {\n const currentValue = value();\n if (!Object.is(result(), currentValue)) {\n setResult(() => currentValue!);\n }\n },\n { injector: injector },\n );\n onCleanup(() => {\n ref.destroy();\n });\n });\n return result;\n}\n","import type { CoreWrapperConfig } from '@piying/view-core';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreWrapperConfig[];\n children: any;\n}\n\nexport function PiyingWrapper(props: PiyingWrapperProps) {\n const wrapper = createMemo(() => props.wrappers[0]);\n const restWrappers = createMemo(() => props.wrappers?.slice(1));\n const inputs = createSignalConvert(() => ({\n ...wrapper()?.inputs(),\n ...wrapper()?.attributes(),\n ...wrapper()?.outputs?.(),\n }));\n return (\n <Show\n when={createMemo(() => wrapper()?.type)()}\n fallback={props.children}\n keyed\n >\n {(WrapperType) => {\n return (\n <WrapperType {...inputs()}>\n <PiyingWrapper wrappers={restWrappers()}>\n {props.children}\n </PiyingWrapper>\n </WrapperType>\n );\n }}\n </Show>\n );\n}\n","import {\n createEffect,\n createMemo,\n createSignal,\n Show,\n useContext,\n} from 'solid-js';\nimport type { PiResolvedViewFieldConfig } from '../type';\nimport { CVA, InjectorToken, PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { PiyingWrapper } from './wrapper';\nimport {\n createViewControlLink,\n type ControlValueAccessor,\n} from '@piying/view-core';\nexport interface PiyingFieldTemplateProps {\n field: PiResolvedViewFieldConfig;\n}\n\nexport function PiyingFieldTemplate(props: PiyingFieldTemplateProps) {\n const fieldInputs = createSignalConvert(() => ({\n ...props.field.attributes(),\n ...props.field.inputs(),\n ...props.field.outputs(),\n }));\n const renderConfig = createSignalConvert(() => props.field.renderConfig());\n const wrappers = createSignalConvert(() => props.field.wrappers());\n const define = createSignalConvert(() => props.field.define?.());\n const control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => define()?.type);\n const isHidden = createMemo(() => {\n return !!renderConfig().hidden || !ComponentType$$();\n });\n const injector = useContext(InjectorToken)!;\n\n const [controlRef, setControlRef] = createSignal<\n ControlValueAccessor | undefined\n >(undefined);\n const fieldControlInput = createMemo(\n () =>\n ({\n ...fieldInputs(),\n [CVA]: setControlRef,\n }) as Record<any, any>,\n );\n\n createEffect(() => {\n let dispose: (() => any) | undefined;\n if (controlRef()) {\n dispose = createViewControlLink(control as any, controlRef()!, injector);\n }\n return () => {\n dispose?.();\n dispose = undefined;\n };\n });\n\n return (\n <>\n <PI_VIEW_FIELD_TOKEN.Provider value={props.field}>\n <Show when={!isHidden()}>\n <PiyingWrapper wrappers={wrappers()}>\n <Show when={ComponentType$$()} keyed>\n {(ComponentType) => (\n <Show\n when={props.field.form.control}\n fallback={<ComponentType {...fieldInputs()}></ComponentType>}\n >\n <ComponentType {...fieldControlInput()}></ComponentType>\n </Show>\n )}\n </Show>\n </PiyingWrapper>\n </Show>\n </PI_VIEW_FIELD_TOKEN.Provider>\n </>\n );\n}\n","import type { ControlValueAccessor } from '@piying/view-core';\nimport { createSignal, type Accessor } from 'solid-js';\n\nexport function useControlValueAccessor() {\n const [value, setValue] = createSignal<any>(undefined);\n const [disabled, setDisabled] = createSignal(false);\n const [onChange, setOnChange] = createSignal<\n ((input: any) => void) | undefined\n >(undefined);\n const [touched, setTouched] = createSignal<(() => void) | undefined>(\n undefined,\n );\n const cva: ControlValueAccessor = {\n writeValue(obj) {\n setValue(obj);\n },\n registerOnChange(fn) {\n setOnChange(() => fn);\n },\n registerOnTouched(fn) {\n setTouched(() => fn);\n },\n setDisabledState(value) {\n setDisabled(value);\n },\n };\n\n return {\n cva: cva,\n cvaa: {\n value: value,\n disabled: disabled,\n valueChange: (value: any) => {\n onChange()?.(value);\n setValue(value);\n },\n touchedChange: () => {\n touched()?.();\n },\n } as ControlValueAccessorAdapter,\n };\n}\n\nexport type ControlValueAccessorAdapter = {\n value: Accessor<any>;\n disabled: Accessor<boolean>;\n touchedChange: () => void;\n valueChange: (value: any) => void;\n};\n","import { createEffect, createMemo, onCleanup } from 'solid-js';\n\nexport function useEffectSync(fn: () => (() => void) | void) {\n let dispose: any = undefined;\n\n createMemo(() => {\n dispose = fn();\n });\n createEffect(() => {\n onCleanup(() => {\n dispose?.();\n dispose = undefined;\n });\n });\n}\n","import { For, useContext } from 'solid-js';\nimport { PiyingFieldTemplate } from './field-template';\nimport { PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util';\n\nexport function PiyingGroup() {\n const field = useContext(PI_VIEW_FIELD_TOKEN);\n const children = createSignalConvert(() => field?.children!())!;\n return (\n <For each={children()}>\n {(field) => {\n return <PiyingFieldTemplate field={field}></PiyingFieldTemplate>;\n }}\n </For>\n );\n}\n","import { CoreSchemaHandle } from '@piying/view-core';\nimport type { PiResolvedViewFieldConfig } from './type/group';\n\nexport class SolidSchemaHandle extends CoreSchemaHandle<\n SolidSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type: any;\n}\n","import { FormBuilder } from '@piying/view-core';\nimport type { SolidSchemaHandle } from './schema-handle';\n\nexport class SolidFormBuilder extends FormBuilder<SolidSchemaHandle> {}\n","import {\n ChangeDetectionScheduler,\n ChangeDetectionSchedulerImpl,\n createInjector,\n createRootInjector,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport {\n InjectorToken,\n PI_INPUT_MODEL_TOKEN,\n PI_INPUT_OPTIONS_TOKEN,\n PI_INPUT_SCHEMA_TOKEN,\n} from '../token';\nimport { PiyingFieldTemplate } from './field-template';\nimport { convert, initListen } from '@piying/view-core';\nimport { SolidSchemaHandle } from '../schema-handle';\nimport { SolidFormBuilder } from '../builder';\nimport { createMemo, onCleanup } from 'solid-js';\nimport { useEffectSync } from '../util';\nexport interface PiyingViewProps {\n schema: v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>;\n model?: any;\n modelChange?: (value: any) => void;\n options: any;\n}\nexport function PiyingView(props: PiyingViewProps) {\n const rootInjector = createRootInjector({\n providers: [\n {\n provide: ChangeDetectionScheduler,\n useClass: ChangeDetectionSchedulerImpl,\n },\n ],\n });\n let injectorDispose: (() => any) | undefined;\n\n const initResult = createMemo(() => {\n const subInjector = createInjector({ providers: [], parent: rootInjector });\n injectorDispose = () => {\n subInjector.destroy();\n injectorDispose = undefined;\n };\n const field = convert(props.schema as any, {\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n ...props.options,\n });\n return [field, subInjector] as const;\n });\n\n onCleanup(() => {\n injectorDispose?.();\n });\n\n const field = createMemo(() => {\n return initResult()[0];\n });\n useEffectSync(() => {\n let ref: EffectRef | undefined;\n const [field, subInjector] = initResult();\n if (field.form.control) {\n ref = initListen(\n props.model,\n field!.form.control!,\n subInjector as Injector,\n (value) => {\n untracked(() => {\n if (field!.form.control?.valueNoError$$()) {\n props.modelChange?.(value);\n }\n });\n },\n );\n field.form.control.updateValue(props.model);\n }\n return () => {\n ref?.destroy();\n };\n });\n\n return (\n <>\n <PI_INPUT_OPTIONS_TOKEN.Provider value={props.options}>\n <PI_INPUT_SCHEMA_TOKEN.Provider value={props.schema}>\n <PI_INPUT_MODEL_TOKEN.Provider value={props.model}>\n <InjectorToken.Provider value={rootInjector}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.Provider>\n </PI_INPUT_MODEL_TOKEN.Provider>\n </PI_INPUT_SCHEMA_TOKEN.Provider>\n </PI_INPUT_OPTIONS_TOKEN.Provider>\n </>\n );\n}\n","import { createMemo, createSignal } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputTextModel(\n cvaa: ControlValueAccessorAdapter,\n compositionMode: () => boolean,\n) {\n const [composing, setComposing] = createSignal(false);\n return createMemo(() => {\n const obj = {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n if (!compositionMode() || (compositionMode() && !composing())) {\n cvaa.valueChange((event.target as any).value);\n }\n },\n };\n if (compositionMode()) {\n return {\n ...obj,\n onCompositionStart: () => {\n setComposing(true);\n },\n onCompositionEnd: (event: any) => {\n setComposing(false);\n cvaa.valueChange((event.target as any).value);\n },\n };\n }\n return obj;\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputCheckboxModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => ({\n checked: cvaa.value() ?? false,\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLInputElement;\n },\n ) => cvaa.valueChange(event.target.checked),\n }));\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputNumberModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n },\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRadioModel(\n cvaa: ControlValueAccessorAdapter,\n value: any,\n) {\n return createMemo(() => {\n return {\n value,\n checked: Object.is(cvaa.value(), value),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: () => cvaa.valueChange(value),\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRangeModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n const onInput = (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n };\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: onInput,\n onChange: onInput,\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useSelectModel(\n cvaa: ControlValueAccessorAdapter,\n multiple: boolean = false,\n) {\n return createMemo(() => {\n return {\n value: cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLSelectElement;\n },\n ) => {\n const selected = [];\n const el = event.target;\n if (el.selectedOptions !== undefined) {\n for (let index = 0; index < el.selectedOptions.length; index++) {\n const item = el.selectedOptions[index];\n selected.push(item.value);\n if (!multiple) {\n break;\n }\n }\n } else {\n for (let index = 0; index < el.options.length; index++) {\n const option = el.options[index];\n if (option.selected) {\n selected.push(option.value);\n if (!multiple) {\n break;\n }\n }\n }\n }\n cvaa.valueChange(multiple ? selected : selected[0]);\n },\n };\n });\n}\n"],"names":["createContext","useContext","createSignal","createEffect","effect","onCleanup","PiyingWrapper","props","wrapper","createMemo","wrappers","restWrappers","slice","inputs","createSignalConvert","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","fieldInputs","field","renderConfig","define","control","form","ComponentType$$","isHidden","hidden","injector","InjectorToken","controlRef","setControlRef","undefined","fieldControlInput","CVA","dispose","createViewControlLink","PI_VIEW_FIELD_TOKEN","Provider","value","ComponentType","PiyingGroup","For","each","CoreSchemaHandle","FormBuilder","PiyingView","rootInjector","createRootInjector","providers","provide","ChangeDetectionScheduler","useClass","ChangeDetectionSchedulerImpl","injectorDispose","initResult","subInjector","createInjector","parent","destroy","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","options","useEffectSync","ref","initListen","model","untracked","valueNoError$$","modelChange","updateValue","PI_INPUT_OPTIONS_TOKEN","PI_INPUT_SCHEMA_TOKEN","PI_INPUT_MODEL_TOKEN"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../packages/solid/src/token.ts","../../packages/solid/src/util/signal-convert.ts","../../packages/solid/src/component/wrapper.tsx","../../packages/solid/src/component/field-template.tsx","../../packages/solid/src/util/use-control-value-accessor.ts","../../packages/solid/src/util/use-effect-sync.ts","../../packages/solid/src/component/group.tsx","../../packages/solid/src/schema-handle.ts","../../packages/solid/src/builder.ts","../../packages/solid/src/component/view.tsx","../../packages/solid/src/use-model/use-text-model.ts","../../packages/solid/src/use-model/use-checkbox-model.ts","../../packages/solid/src/use-model/use-number-model.ts","../../packages/solid/src/use-model/use-radio-model.ts","../../packages/solid/src/use-model/use-range-model.ts","../../packages/solid/src/use-model/use-select-model.ts"],"sourcesContent":["import type { Injector } from 'static-injector';\nimport type { PiResolvedViewFieldConfig, PiViewConfig } from './type/group';\nimport { createContext } from 'solid-js';\nimport * as v from 'valibot';\nimport type { ConvertOptions } from '@piying/valibot-visit';\nimport type {\n SetOptional,\n CoreSchemaHandle,\n FormBuilder,\n} from '@piying/view-core';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\nexport const PI_INPUT_OPTIONS_TOKEN = createContext<\n SetOptional<ConvertOptions<typeof CoreSchemaHandle<any, any>>, 'handle'> & {\n builder?: typeof FormBuilder<CoreSchemaHandle<any, any>>;\n fieldGlobalConfig?: PiViewConfig;\n }\n>(undefined as any);\nexport const PI_INPUT_SCHEMA_TOKEN = createContext<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n>(undefined as any);\nexport const PI_INPUT_MODEL_TOKEN = createContext<any>(undefined as any);\n\nexport const CVA = Symbol.for('ControlValueAccessor');\n","import { effect } from 'static-injector';\n\nimport { InjectorToken } from '../token';\nimport { useContext, createEffect, createSignal, onCleanup } from 'solid-js';\n\n// signal=>ref\nexport function createSignalConvert<T>(value: () => T) {\n const injector = useContext(InjectorToken)!;\n const [result, setResult] = createSignal(value());\n createEffect(() => {\n setResult(() => value());\n const ref = effect(\n () => {\n const currentValue = value();\n if (!Object.is(result(), currentValue)) {\n setResult(() => currentValue!);\n }\n },\n { injector: injector },\n );\n onCleanup(() => {\n ref.destroy();\n });\n });\n return result;\n}\n","import type { CoreWrapperConfig } from '@piying/view-core';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreWrapperConfig[];\n children: any;\n}\n\nexport function PiyingWrapper(props: PiyingWrapperProps) {\n const wrapper = createMemo(() => props.wrappers[0]);\n const restWrappers = createMemo(() => props.wrappers?.slice(1));\n const inputs = createSignalConvert(() => ({\n ...wrapper()?.inputs(),\n ...wrapper()?.attributes(),\n ...wrapper()?.outputs?.(),\n }));\n return (\n <Show\n when={createMemo(() => wrapper()?.type)()}\n fallback={props.children}\n keyed\n >\n {(WrapperType) => {\n return (\n <WrapperType {...inputs()}>\n <PiyingWrapper wrappers={restWrappers()}>\n {props.children}\n </PiyingWrapper>\n </WrapperType>\n );\n }}\n </Show>\n );\n}\n","import {\n createEffect,\n createMemo,\n createSignal,\n Show,\n useContext,\n} from 'solid-js';\nimport type { PiResolvedViewFieldConfig } from '../type';\nimport { CVA, InjectorToken, PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { PiyingWrapper } from './wrapper';\nimport {\n createViewControlLink,\n type ControlValueAccessor,\n} from '@piying/view-core';\nexport interface PiyingFieldTemplateProps {\n field: PiResolvedViewFieldConfig;\n}\n\nexport function PiyingFieldTemplate(props: PiyingFieldTemplateProps) {\n const fieldInputs = createSignalConvert(() => ({\n ...props.field.attributes(),\n ...props.field.inputs(),\n ...props.field.outputs(),\n }));\n const renderConfig = createSignalConvert(() => props.field.renderConfig());\n const wrappers = createSignalConvert(() => props.field.wrappers());\n const define = createSignalConvert(() => props.field.define?.());\n const control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => define()?.type);\n const isHidden = createMemo(() => {\n return !!renderConfig().hidden || !ComponentType$$();\n });\n const injector = useContext(InjectorToken)!;\n\n const [controlRef, setControlRef] = createSignal<\n ControlValueAccessor | undefined\n >(undefined);\n const fieldControlInput = createMemo(\n () =>\n ({\n ...fieldInputs(),\n [CVA]: setControlRef,\n }) as Record<any, any>,\n );\n\n createEffect(() => {\n let dispose: (() => any) | undefined;\n if (controlRef()) {\n dispose = createViewControlLink(control as any, controlRef()!, injector);\n }\n return () => {\n dispose?.();\n dispose = undefined;\n };\n });\n\n return (\n <>\n <PI_VIEW_FIELD_TOKEN.Provider value={props.field}>\n <Show when={!isHidden()}>\n <PiyingWrapper wrappers={wrappers()}>\n <Show when={ComponentType$$()} keyed>\n {(ComponentType) => (\n <Show\n when={props.field.form.control}\n fallback={<ComponentType {...fieldInputs()}></ComponentType>}\n >\n <ComponentType {...fieldControlInput()}></ComponentType>\n </Show>\n )}\n </Show>\n </PiyingWrapper>\n </Show>\n </PI_VIEW_FIELD_TOKEN.Provider>\n </>\n );\n}\n","import type { ControlValueAccessor } from '@piying/view-core';\nimport { createSignal, type Accessor } from 'solid-js';\n\nexport function useControlValueAccessor() {\n const [value, setValue] = createSignal<any>(undefined);\n const [disabled, setDisabled] = createSignal(false);\n const [onChange, setOnChange] = createSignal<\n ((input: any) => void) | undefined\n >(undefined);\n const [touched, setTouched] = createSignal<(() => void) | undefined>(\n undefined,\n );\n const cva: ControlValueAccessor = {\n writeValue(obj) {\n setValue(obj);\n },\n registerOnChange(fn) {\n setOnChange(() => fn);\n },\n registerOnTouched(fn) {\n setTouched(() => fn);\n },\n setDisabledState(value) {\n setDisabled(value);\n },\n };\n\n return {\n cva: cva,\n cvaa: {\n value: value,\n disabled: disabled,\n valueChange: (value: any) => {\n onChange()?.(value);\n setValue(value);\n },\n touchedChange: () => {\n touched()?.();\n },\n } as ControlValueAccessorAdapter,\n };\n}\n\nexport type ControlValueAccessorAdapter = {\n value: Accessor<any>;\n disabled: Accessor<boolean>;\n touchedChange: () => void;\n valueChange: (value: any) => void;\n};\n","import { createEffect, createMemo, onCleanup } from 'solid-js';\n\nexport function useEffectSync(fn: () => (() => void) | void) {\n let dispose: any = undefined;\n\n createMemo(() => {\n dispose = fn();\n });\n createEffect(() => {\n onCleanup(() => {\n dispose?.();\n dispose = undefined;\n });\n });\n}\n","import { For, useContext } from 'solid-js';\nimport { PiyingFieldTemplate } from './field-template';\nimport { PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util';\n\nexport function PiyingGroup() {\n const field = useContext(PI_VIEW_FIELD_TOKEN);\n const children = createSignalConvert(() => field?.children!())!;\n return (\n <For each={children()}>\n {(field) => {\n return <PiyingFieldTemplate field={field}></PiyingFieldTemplate>;\n }}\n </For>\n );\n}\n","import { CoreSchemaHandle } from '@piying/view-core';\nimport type { PiResolvedViewFieldConfig } from './type/group';\n\nexport class SolidSchemaHandle extends CoreSchemaHandle<\n SolidSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type: any;\n}\n","import { FormBuilder } from '@piying/view-core';\nimport type { SolidSchemaHandle } from './schema-handle';\n\nexport class SolidFormBuilder extends FormBuilder<SolidSchemaHandle> {}\n","import {\n ChangeDetectionScheduler,\n ChangeDetectionSchedulerImpl,\n createInjector,\n createRootInjector,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport {\n InjectorToken,\n PI_INPUT_MODEL_TOKEN,\n PI_INPUT_OPTIONS_TOKEN,\n PI_INPUT_SCHEMA_TOKEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../token';\nimport { PiyingFieldTemplate } from './field-template';\nimport { convert, initListen } from '@piying/view-core';\nimport { SolidSchemaHandle } from '../schema-handle';\nimport { SolidFormBuilder } from '../builder';\nimport { createMemo, onCleanup, useContext } from 'solid-js';\nimport { useEffectSync } from '../util';\nexport interface PiyingViewProps {\n schema: v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>;\n model?: any;\n modelChange?: (value: any) => void;\n options: { injector?: Injector; builder?: any; [name: string]: any };\n}\nexport function PiyingView(props: PiyingViewProps) {\n const maybeParentField = useContext(PI_VIEW_FIELD_TOKEN);\n\n const rootInjector = createMemo(() => {\n return (\n props.options.injector ??\n maybeParentField?.injector ??\n createRootInjector({\n providers: [\n {\n provide: ChangeDetectionScheduler,\n useClass: ChangeDetectionSchedulerImpl,\n },\n ],\n })\n );\n });\n\n let injectorDispose: (() => any) | undefined;\n\n const initResult = createMemo(() => {\n const subInjector = createInjector({\n providers: [],\n parent: rootInjector(),\n });\n injectorDispose = () => {\n subInjector.destroy();\n injectorDispose = undefined;\n };\n const field = convert(props.schema as any, {\n ...props.options,\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n });\n return [field, subInjector] as const;\n });\n\n onCleanup(() => {\n injectorDispose?.();\n });\n\n const field = createMemo(() => {\n return initResult()[0];\n });\n useEffectSync(() => {\n let ref: EffectRef | undefined;\n const [field, subInjector] = initResult();\n if (field.form.control) {\n ref = initListen(\n props.model,\n field!.form.control!,\n subInjector as Injector,\n (value) => {\n untracked(() => {\n if (field!.form.control?.valueNoError$$()) {\n props.modelChange?.(value);\n }\n });\n },\n );\n field.form.control.updateValue(props.model);\n }\n return () => {\n ref?.destroy();\n };\n });\n\n return (\n <>\n <PI_INPUT_OPTIONS_TOKEN.Provider value={props.options}>\n <PI_INPUT_SCHEMA_TOKEN.Provider value={props.schema}>\n <PI_INPUT_MODEL_TOKEN.Provider value={props.model}>\n <InjectorToken.Provider value={rootInjector()}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.Provider>\n </PI_INPUT_MODEL_TOKEN.Provider>\n </PI_INPUT_SCHEMA_TOKEN.Provider>\n </PI_INPUT_OPTIONS_TOKEN.Provider>\n </>\n );\n}\n","import { createMemo, createSignal } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputTextModel(\n cvaa: ControlValueAccessorAdapter,\n compositionMode: () => boolean,\n) {\n const [composing, setComposing] = createSignal(false);\n return createMemo(() => {\n const obj = {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n if (!compositionMode() || (compositionMode() && !composing())) {\n cvaa.valueChange((event.target as any).value);\n }\n },\n };\n if (compositionMode()) {\n return {\n ...obj,\n onCompositionStart: () => {\n setComposing(true);\n },\n onCompositionEnd: (event: any) => {\n setComposing(false);\n cvaa.valueChange((event.target as any).value);\n },\n };\n }\n return obj;\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputCheckboxModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => ({\n checked: cvaa.value() ?? false,\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLInputElement;\n },\n ) => cvaa.valueChange(event.target.checked),\n }));\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputNumberModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n },\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRadioModel(\n cvaa: ControlValueAccessorAdapter,\n value: any,\n) {\n return createMemo(() => {\n return {\n value,\n checked: Object.is(cvaa.value(), value),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: () => cvaa.valueChange(value),\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRangeModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n const onInput = (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n };\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: onInput,\n onChange: onInput,\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useSelectModel(\n cvaa: ControlValueAccessorAdapter,\n multiple: boolean = false,\n) {\n return createMemo(() => {\n return {\n value: cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLSelectElement;\n },\n ) => {\n const selected = [];\n const el = event.target;\n if (el.selectedOptions !== undefined) {\n for (let index = 0; index < el.selectedOptions.length; index++) {\n const item = el.selectedOptions[index];\n selected.push(item.value);\n if (!multiple) {\n break;\n }\n }\n } else {\n for (let index = 0; index < el.options.length; index++) {\n const option = el.options[index];\n if (option.selected) {\n selected.push(option.value);\n if (!multiple) {\n break;\n }\n }\n }\n }\n cvaa.valueChange(multiple ? selected : selected[0]);\n },\n };\n });\n}\n"],"names":["createContext","useContext","createSignal","createEffect","effect","onCleanup","PiyingWrapper","props","wrapper","createMemo","wrappers","restWrappers","slice","inputs","createSignalConvert","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","fieldInputs","field","renderConfig","define","control","form","ComponentType$$","isHidden","hidden","injector","InjectorToken","controlRef","setControlRef","undefined","fieldControlInput","CVA","dispose","createViewControlLink","PI_VIEW_FIELD_TOKEN","Provider","value","ComponentType","PiyingGroup","For","each","CoreSchemaHandle","FormBuilder","PiyingView","maybeParentField","rootInjector","options","createRootInjector","providers","provide","ChangeDetectionScheduler","useClass","ChangeDetectionSchedulerImpl","injectorDispose","initResult","subInjector","createInjector","parent","destroy","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","useEffectSync","ref","initListen","model","untracked","valueNoError$$","modelChange","updateValue","PI_INPUT_OPTIONS_TOKEN","PI_INPUT_SCHEMA_TOKEN","PI_INPUT_MODEL_TOKEN"],"mappings":"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"}
package/index.js CHANGED
@@ -196,27 +196,30 @@ class SolidSchemaHandle extends CoreSchemaHandle {
196
196
  class SolidFormBuilder extends FormBuilder {
197
197
  }
198
198
  function PiyingView(props) {
199
- const rootInjector = createRootInjector({
200
- providers: [{
201
- provide: ChangeDetectionScheduler,
202
- useClass: ChangeDetectionSchedulerImpl
203
- }]
199
+ const maybeParentField = useContext(PI_VIEW_FIELD_TOKEN);
200
+ const rootInjector = createMemo(() => {
201
+ return props.options.injector ?? maybeParentField?.injector ?? createRootInjector({
202
+ providers: [{
203
+ provide: ChangeDetectionScheduler,
204
+ useClass: ChangeDetectionSchedulerImpl
205
+ }]
206
+ });
204
207
  });
205
208
  let injectorDispose;
206
209
  const initResult = createMemo(() => {
207
210
  const subInjector = createInjector({
208
211
  providers: [],
209
- parent: rootInjector
212
+ parent: rootInjector()
210
213
  });
211
214
  injectorDispose = () => {
212
215
  subInjector.destroy();
213
216
  injectorDispose = void 0;
214
217
  };
215
218
  const field2 = convert(props.schema, {
219
+ ...props.options,
216
220
  handle: SolidSchemaHandle,
217
221
  builder: SolidFormBuilder,
218
- injector: subInjector,
219
- ...props.options
222
+ injector: subInjector
220
223
  });
221
224
  return [field2, subInjector];
222
225
  });
@@ -259,7 +262,9 @@ function PiyingView(props) {
259
262
  },
260
263
  get children() {
261
264
  return createComponent(InjectorToken.Provider, {
262
- value: rootInjector,
265
+ get value() {
266
+ return rootInjector();
267
+ },
263
268
  get children() {
264
269
  return createComponent(PiyingFieldTemplate, {
265
270
  get field() {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../packages/solid/src/token.ts","../../packages/solid/src/util/signal-convert.ts","../../packages/solid/src/component/wrapper.tsx","../../packages/solid/src/component/field-template.tsx","../../packages/solid/src/util/use-control-value-accessor.ts","../../packages/solid/src/util/use-effect-sync.ts","../../packages/solid/src/component/group.tsx","../../packages/solid/src/schema-handle.ts","../../packages/solid/src/builder.ts","../../packages/solid/src/component/view.tsx","../../packages/solid/src/use-model/use-text-model.ts","../../packages/solid/src/use-model/use-checkbox-model.ts","../../packages/solid/src/use-model/use-number-model.ts","../../packages/solid/src/use-model/use-radio-model.ts","../../packages/solid/src/use-model/use-range-model.ts","../../packages/solid/src/use-model/use-select-model.ts"],"sourcesContent":["import type { Injector } from 'static-injector';\nimport type { PiResolvedViewFieldConfig, PiViewConfig } from './type/group';\nimport { createContext } from 'solid-js';\nimport * as v from 'valibot';\nimport type { ConvertOptions } from '@piying/valibot-visit';\nimport type {\n SetOptional,\n CoreSchemaHandle,\n FormBuilder,\n} from '@piying/view-core';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\nexport const PI_INPUT_OPTIONS_TOKEN = createContext<\n SetOptional<ConvertOptions<typeof CoreSchemaHandle<any, any>>, 'handle'> & {\n builder: typeof FormBuilder<CoreSchemaHandle<any, any>>;\n fieldGlobalConfig?: PiViewConfig;\n }\n>(undefined as any);\nexport const PI_INPUT_SCHEMA_TOKEN = createContext<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n>(undefined as any);\nexport const PI_INPUT_MODEL_TOKEN = createContext<any>(undefined as any);\n\nexport const CVA = Symbol.for('ControlValueAccessor');\n","import { effect } from 'static-injector';\n\nimport { InjectorToken } from '../token';\nimport { useContext, createEffect, createSignal, onCleanup } from 'solid-js';\n\n// signal=>ref\nexport function createSignalConvert<T>(value: () => T) {\n const injector = useContext(InjectorToken)!;\n const [result, setResult] = createSignal(value());\n createEffect(() => {\n setResult(() => value());\n const ref = effect(\n () => {\n const currentValue = value();\n if (!Object.is(result(), currentValue)) {\n setResult(() => currentValue!);\n }\n },\n { injector: injector },\n );\n onCleanup(() => {\n ref.destroy();\n });\n });\n return result;\n}\n","import type { CoreWrapperConfig } from '@piying/view-core';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreWrapperConfig[];\n children: any;\n}\n\nexport function PiyingWrapper(props: PiyingWrapperProps) {\n const wrapper = createMemo(() => props.wrappers[0]);\n const restWrappers = createMemo(() => props.wrappers?.slice(1));\n const inputs = createSignalConvert(() => ({\n ...wrapper()?.inputs(),\n ...wrapper()?.attributes(),\n ...wrapper()?.outputs?.(),\n }));\n return (\n <Show\n when={createMemo(() => wrapper()?.type)()}\n fallback={props.children}\n keyed\n >\n {(WrapperType) => {\n return (\n <WrapperType {...inputs()}>\n <PiyingWrapper wrappers={restWrappers()}>\n {props.children}\n </PiyingWrapper>\n </WrapperType>\n );\n }}\n </Show>\n );\n}\n","import {\n createEffect,\n createMemo,\n createSignal,\n Show,\n useContext,\n} from 'solid-js';\nimport type { PiResolvedViewFieldConfig } from '../type';\nimport { CVA, InjectorToken, PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { PiyingWrapper } from './wrapper';\nimport {\n createViewControlLink,\n type ControlValueAccessor,\n} from '@piying/view-core';\nexport interface PiyingFieldTemplateProps {\n field: PiResolvedViewFieldConfig;\n}\n\nexport function PiyingFieldTemplate(props: PiyingFieldTemplateProps) {\n const fieldInputs = createSignalConvert(() => ({\n ...props.field.attributes(),\n ...props.field.inputs(),\n ...props.field.outputs(),\n }));\n const renderConfig = createSignalConvert(() => props.field.renderConfig());\n const wrappers = createSignalConvert(() => props.field.wrappers());\n const define = createSignalConvert(() => props.field.define?.());\n const control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => define()?.type);\n const isHidden = createMemo(() => {\n return !!renderConfig().hidden || !ComponentType$$();\n });\n const injector = useContext(InjectorToken)!;\n\n const [controlRef, setControlRef] = createSignal<\n ControlValueAccessor | undefined\n >(undefined);\n const fieldControlInput = createMemo(\n () =>\n ({\n ...fieldInputs(),\n [CVA]: setControlRef,\n }) as Record<any, any>,\n );\n\n createEffect(() => {\n let dispose: (() => any) | undefined;\n if (controlRef()) {\n dispose = createViewControlLink(control as any, controlRef()!, injector);\n }\n return () => {\n dispose?.();\n dispose = undefined;\n };\n });\n\n return (\n <>\n <PI_VIEW_FIELD_TOKEN.Provider value={props.field}>\n <Show when={!isHidden()}>\n <PiyingWrapper wrappers={wrappers()}>\n <Show when={ComponentType$$()} keyed>\n {(ComponentType) => (\n <Show\n when={props.field.form.control}\n fallback={<ComponentType {...fieldInputs()}></ComponentType>}\n >\n <ComponentType {...fieldControlInput()}></ComponentType>\n </Show>\n )}\n </Show>\n </PiyingWrapper>\n </Show>\n </PI_VIEW_FIELD_TOKEN.Provider>\n </>\n );\n}\n","import type { ControlValueAccessor } from '@piying/view-core';\nimport { createSignal, type Accessor } from 'solid-js';\n\nexport function useControlValueAccessor() {\n const [value, setValue] = createSignal<any>(undefined);\n const [disabled, setDisabled] = createSignal(false);\n const [onChange, setOnChange] = createSignal<\n ((input: any) => void) | undefined\n >(undefined);\n const [touched, setTouched] = createSignal<(() => void) | undefined>(\n undefined,\n );\n const cva: ControlValueAccessor = {\n writeValue(obj) {\n setValue(obj);\n },\n registerOnChange(fn) {\n setOnChange(() => fn);\n },\n registerOnTouched(fn) {\n setTouched(() => fn);\n },\n setDisabledState(value) {\n setDisabled(value);\n },\n };\n\n return {\n cva: cva,\n cvaa: {\n value: value,\n disabled: disabled,\n valueChange: (value: any) => {\n onChange()?.(value);\n setValue(value);\n },\n touchedChange: () => {\n touched()?.();\n },\n } as ControlValueAccessorAdapter,\n };\n}\n\nexport type ControlValueAccessorAdapter = {\n value: Accessor<any>;\n disabled: Accessor<boolean>;\n touchedChange: () => void;\n valueChange: (value: any) => void;\n};\n","import { createEffect, createMemo, onCleanup } from 'solid-js';\n\nexport function useEffectSync(fn: () => (() => void) | void) {\n let dispose: any = undefined;\n\n createMemo(() => {\n dispose = fn();\n });\n createEffect(() => {\n onCleanup(() => {\n dispose?.();\n dispose = undefined;\n });\n });\n}\n","import { For, useContext } from 'solid-js';\nimport { PiyingFieldTemplate } from './field-template';\nimport { PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util';\n\nexport function PiyingGroup() {\n const field = useContext(PI_VIEW_FIELD_TOKEN);\n const children = createSignalConvert(() => field?.children!())!;\n return (\n <For each={children()}>\n {(field) => {\n return <PiyingFieldTemplate field={field}></PiyingFieldTemplate>;\n }}\n </For>\n );\n}\n","import { CoreSchemaHandle } from '@piying/view-core';\nimport type { PiResolvedViewFieldConfig } from './type/group';\n\nexport class SolidSchemaHandle extends CoreSchemaHandle<\n SolidSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type: any;\n}\n","import { FormBuilder } from '@piying/view-core';\nimport type { SolidSchemaHandle } from './schema-handle';\n\nexport class SolidFormBuilder extends FormBuilder<SolidSchemaHandle> {}\n","import {\n ChangeDetectionScheduler,\n ChangeDetectionSchedulerImpl,\n createInjector,\n createRootInjector,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport {\n InjectorToken,\n PI_INPUT_MODEL_TOKEN,\n PI_INPUT_OPTIONS_TOKEN,\n PI_INPUT_SCHEMA_TOKEN,\n} from '../token';\nimport { PiyingFieldTemplate } from './field-template';\nimport { convert, initListen } from '@piying/view-core';\nimport { SolidSchemaHandle } from '../schema-handle';\nimport { SolidFormBuilder } from '../builder';\nimport { createMemo, onCleanup } from 'solid-js';\nimport { useEffectSync } from '../util';\nexport interface PiyingViewProps {\n schema: v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>;\n model?: any;\n modelChange?: (value: any) => void;\n options: any;\n}\nexport function PiyingView(props: PiyingViewProps) {\n const rootInjector = createRootInjector({\n providers: [\n {\n provide: ChangeDetectionScheduler,\n useClass: ChangeDetectionSchedulerImpl,\n },\n ],\n });\n let injectorDispose: (() => any) | undefined;\n\n const initResult = createMemo(() => {\n const subInjector = createInjector({ providers: [], parent: rootInjector });\n injectorDispose = () => {\n subInjector.destroy();\n injectorDispose = undefined;\n };\n const field = convert(props.schema as any, {\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n ...props.options,\n });\n return [field, subInjector] as const;\n });\n\n onCleanup(() => {\n injectorDispose?.();\n });\n\n const field = createMemo(() => {\n return initResult()[0];\n });\n useEffectSync(() => {\n let ref: EffectRef | undefined;\n const [field, subInjector] = initResult();\n if (field.form.control) {\n ref = initListen(\n props.model,\n field!.form.control!,\n subInjector as Injector,\n (value) => {\n untracked(() => {\n if (field!.form.control?.valueNoError$$()) {\n props.modelChange?.(value);\n }\n });\n },\n );\n field.form.control.updateValue(props.model);\n }\n return () => {\n ref?.destroy();\n };\n });\n\n return (\n <>\n <PI_INPUT_OPTIONS_TOKEN.Provider value={props.options}>\n <PI_INPUT_SCHEMA_TOKEN.Provider value={props.schema}>\n <PI_INPUT_MODEL_TOKEN.Provider value={props.model}>\n <InjectorToken.Provider value={rootInjector}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.Provider>\n </PI_INPUT_MODEL_TOKEN.Provider>\n </PI_INPUT_SCHEMA_TOKEN.Provider>\n </PI_INPUT_OPTIONS_TOKEN.Provider>\n </>\n );\n}\n","import { createMemo, createSignal } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputTextModel(\n cvaa: ControlValueAccessorAdapter,\n compositionMode: () => boolean,\n) {\n const [composing, setComposing] = createSignal(false);\n return createMemo(() => {\n const obj = {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n if (!compositionMode() || (compositionMode() && !composing())) {\n cvaa.valueChange((event.target as any).value);\n }\n },\n };\n if (compositionMode()) {\n return {\n ...obj,\n onCompositionStart: () => {\n setComposing(true);\n },\n onCompositionEnd: (event: any) => {\n setComposing(false);\n cvaa.valueChange((event.target as any).value);\n },\n };\n }\n return obj;\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputCheckboxModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => ({\n checked: cvaa.value() ?? false,\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLInputElement;\n },\n ) => cvaa.valueChange(event.target.checked),\n }));\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputNumberModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n },\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRadioModel(\n cvaa: ControlValueAccessorAdapter,\n value: any,\n) {\n return createMemo(() => {\n return {\n value,\n checked: Object.is(cvaa.value(), value),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: () => cvaa.valueChange(value),\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRangeModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n const onInput = (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n };\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: onInput,\n onChange: onInput,\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useSelectModel(\n cvaa: ControlValueAccessorAdapter,\n multiple: boolean = false,\n) {\n return createMemo(() => {\n return {\n value: cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLSelectElement;\n },\n ) => {\n const selected = [];\n const el = event.target;\n if (el.selectedOptions !== undefined) {\n for (let index = 0; index < el.selectedOptions.length; index++) {\n const item = el.selectedOptions[index];\n selected.push(item.value);\n if (!multiple) {\n break;\n }\n }\n } else {\n for (let index = 0; index < el.options.length; index++) {\n const option = el.options[index];\n if (option.selected) {\n selected.push(option.value);\n if (!multiple) {\n break;\n }\n }\n }\n }\n cvaa.valueChange(multiple ? selected : selected[0]);\n },\n };\n });\n}\n"],"names":["PiyingWrapper","props","wrapper","createMemo","wrappers","restWrappers","slice","inputs","createSignalConvert","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","fieldInputs","field","renderConfig","define","control","form","ComponentType$$","isHidden","hidden","injector","useContext","InjectorToken","controlRef","setControlRef","createSignal","undefined","fieldControlInput","CVA","createEffect","dispose","createViewControlLink","PI_VIEW_FIELD_TOKEN","Provider","value","ComponentType","PiyingGroup","For","each","PiyingView","rootInjector","createRootInjector","providers","provide","ChangeDetectionScheduler","useClass","ChangeDetectionSchedulerImpl","injectorDispose","initResult","subInjector","createInjector","parent","destroy","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","options","onCleanup","useEffectSync","ref","initListen","model","untracked","valueNoError$$","modelChange","updateValue","PI_INPUT_OPTIONS_TOKEN","PI_INPUT_SCHEMA_TOKEN","PI_INPUT_MODEL_TOKEN"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../packages/solid/src/token.ts","../../packages/solid/src/util/signal-convert.ts","../../packages/solid/src/component/wrapper.tsx","../../packages/solid/src/component/field-template.tsx","../../packages/solid/src/util/use-control-value-accessor.ts","../../packages/solid/src/util/use-effect-sync.ts","../../packages/solid/src/component/group.tsx","../../packages/solid/src/schema-handle.ts","../../packages/solid/src/builder.ts","../../packages/solid/src/component/view.tsx","../../packages/solid/src/use-model/use-text-model.ts","../../packages/solid/src/use-model/use-checkbox-model.ts","../../packages/solid/src/use-model/use-number-model.ts","../../packages/solid/src/use-model/use-radio-model.ts","../../packages/solid/src/use-model/use-range-model.ts","../../packages/solid/src/use-model/use-select-model.ts"],"sourcesContent":["import type { Injector } from 'static-injector';\nimport type { PiResolvedViewFieldConfig, PiViewConfig } from './type/group';\nimport { createContext } from 'solid-js';\nimport * as v from 'valibot';\nimport type { ConvertOptions } from '@piying/valibot-visit';\nimport type {\n SetOptional,\n CoreSchemaHandle,\n FormBuilder,\n} from '@piying/view-core';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\nexport const PI_INPUT_OPTIONS_TOKEN = createContext<\n SetOptional<ConvertOptions<typeof CoreSchemaHandle<any, any>>, 'handle'> & {\n builder?: typeof FormBuilder<CoreSchemaHandle<any, any>>;\n fieldGlobalConfig?: PiViewConfig;\n }\n>(undefined as any);\nexport const PI_INPUT_SCHEMA_TOKEN = createContext<\n v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>\n>(undefined as any);\nexport const PI_INPUT_MODEL_TOKEN = createContext<any>(undefined as any);\n\nexport const CVA = Symbol.for('ControlValueAccessor');\n","import { effect } from 'static-injector';\n\nimport { InjectorToken } from '../token';\nimport { useContext, createEffect, createSignal, onCleanup } from 'solid-js';\n\n// signal=>ref\nexport function createSignalConvert<T>(value: () => T) {\n const injector = useContext(InjectorToken)!;\n const [result, setResult] = createSignal(value());\n createEffect(() => {\n setResult(() => value());\n const ref = effect(\n () => {\n const currentValue = value();\n if (!Object.is(result(), currentValue)) {\n setResult(() => currentValue!);\n }\n },\n { injector: injector },\n );\n onCleanup(() => {\n ref.destroy();\n });\n });\n return result;\n}\n","import type { CoreWrapperConfig } from '@piying/view-core';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreWrapperConfig[];\n children: any;\n}\n\nexport function PiyingWrapper(props: PiyingWrapperProps) {\n const wrapper = createMemo(() => props.wrappers[0]);\n const restWrappers = createMemo(() => props.wrappers?.slice(1));\n const inputs = createSignalConvert(() => ({\n ...wrapper()?.inputs(),\n ...wrapper()?.attributes(),\n ...wrapper()?.outputs?.(),\n }));\n return (\n <Show\n when={createMemo(() => wrapper()?.type)()}\n fallback={props.children}\n keyed\n >\n {(WrapperType) => {\n return (\n <WrapperType {...inputs()}>\n <PiyingWrapper wrappers={restWrappers()}>\n {props.children}\n </PiyingWrapper>\n </WrapperType>\n );\n }}\n </Show>\n );\n}\n","import {\n createEffect,\n createMemo,\n createSignal,\n Show,\n useContext,\n} from 'solid-js';\nimport type { PiResolvedViewFieldConfig } from '../type';\nimport { CVA, InjectorToken, PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { PiyingWrapper } from './wrapper';\nimport {\n createViewControlLink,\n type ControlValueAccessor,\n} from '@piying/view-core';\nexport interface PiyingFieldTemplateProps {\n field: PiResolvedViewFieldConfig;\n}\n\nexport function PiyingFieldTemplate(props: PiyingFieldTemplateProps) {\n const fieldInputs = createSignalConvert(() => ({\n ...props.field.attributes(),\n ...props.field.inputs(),\n ...props.field.outputs(),\n }));\n const renderConfig = createSignalConvert(() => props.field.renderConfig());\n const wrappers = createSignalConvert(() => props.field.wrappers());\n const define = createSignalConvert(() => props.field.define?.());\n const control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => define()?.type);\n const isHidden = createMemo(() => {\n return !!renderConfig().hidden || !ComponentType$$();\n });\n const injector = useContext(InjectorToken)!;\n\n const [controlRef, setControlRef] = createSignal<\n ControlValueAccessor | undefined\n >(undefined);\n const fieldControlInput = createMemo(\n () =>\n ({\n ...fieldInputs(),\n [CVA]: setControlRef,\n }) as Record<any, any>,\n );\n\n createEffect(() => {\n let dispose: (() => any) | undefined;\n if (controlRef()) {\n dispose = createViewControlLink(control as any, controlRef()!, injector);\n }\n return () => {\n dispose?.();\n dispose = undefined;\n };\n });\n\n return (\n <>\n <PI_VIEW_FIELD_TOKEN.Provider value={props.field}>\n <Show when={!isHidden()}>\n <PiyingWrapper wrappers={wrappers()}>\n <Show when={ComponentType$$()} keyed>\n {(ComponentType) => (\n <Show\n when={props.field.form.control}\n fallback={<ComponentType {...fieldInputs()}></ComponentType>}\n >\n <ComponentType {...fieldControlInput()}></ComponentType>\n </Show>\n )}\n </Show>\n </PiyingWrapper>\n </Show>\n </PI_VIEW_FIELD_TOKEN.Provider>\n </>\n );\n}\n","import type { ControlValueAccessor } from '@piying/view-core';\nimport { createSignal, type Accessor } from 'solid-js';\n\nexport function useControlValueAccessor() {\n const [value, setValue] = createSignal<any>(undefined);\n const [disabled, setDisabled] = createSignal(false);\n const [onChange, setOnChange] = createSignal<\n ((input: any) => void) | undefined\n >(undefined);\n const [touched, setTouched] = createSignal<(() => void) | undefined>(\n undefined,\n );\n const cva: ControlValueAccessor = {\n writeValue(obj) {\n setValue(obj);\n },\n registerOnChange(fn) {\n setOnChange(() => fn);\n },\n registerOnTouched(fn) {\n setTouched(() => fn);\n },\n setDisabledState(value) {\n setDisabled(value);\n },\n };\n\n return {\n cva: cva,\n cvaa: {\n value: value,\n disabled: disabled,\n valueChange: (value: any) => {\n onChange()?.(value);\n setValue(value);\n },\n touchedChange: () => {\n touched()?.();\n },\n } as ControlValueAccessorAdapter,\n };\n}\n\nexport type ControlValueAccessorAdapter = {\n value: Accessor<any>;\n disabled: Accessor<boolean>;\n touchedChange: () => void;\n valueChange: (value: any) => void;\n};\n","import { createEffect, createMemo, onCleanup } from 'solid-js';\n\nexport function useEffectSync(fn: () => (() => void) | void) {\n let dispose: any = undefined;\n\n createMemo(() => {\n dispose = fn();\n });\n createEffect(() => {\n onCleanup(() => {\n dispose?.();\n dispose = undefined;\n });\n });\n}\n","import { For, useContext } from 'solid-js';\nimport { PiyingFieldTemplate } from './field-template';\nimport { PI_VIEW_FIELD_TOKEN } from '../token';\nimport { createSignalConvert } from '../util';\n\nexport function PiyingGroup() {\n const field = useContext(PI_VIEW_FIELD_TOKEN);\n const children = createSignalConvert(() => field?.children!())!;\n return (\n <For each={children()}>\n {(field) => {\n return <PiyingFieldTemplate field={field}></PiyingFieldTemplate>;\n }}\n </For>\n );\n}\n","import { CoreSchemaHandle } from '@piying/view-core';\nimport type { PiResolvedViewFieldConfig } from './type/group';\n\nexport class SolidSchemaHandle extends CoreSchemaHandle<\n SolidSchemaHandle,\n () => PiResolvedViewFieldConfig\n> {\n declare type: any;\n}\n","import { FormBuilder } from '@piying/view-core';\nimport type { SolidSchemaHandle } from './schema-handle';\n\nexport class SolidFormBuilder extends FormBuilder<SolidSchemaHandle> {}\n","import {\n ChangeDetectionScheduler,\n ChangeDetectionSchedulerImpl,\n createInjector,\n createRootInjector,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport {\n InjectorToken,\n PI_INPUT_MODEL_TOKEN,\n PI_INPUT_OPTIONS_TOKEN,\n PI_INPUT_SCHEMA_TOKEN,\n PI_VIEW_FIELD_TOKEN,\n} from '../token';\nimport { PiyingFieldTemplate } from './field-template';\nimport { convert, initListen } from '@piying/view-core';\nimport { SolidSchemaHandle } from '../schema-handle';\nimport { SolidFormBuilder } from '../builder';\nimport { createMemo, onCleanup, useContext } from 'solid-js';\nimport { useEffectSync } from '../util';\nexport interface PiyingViewProps {\n schema: v.BaseSchema<any, any, any> | v.SchemaWithPipe<any>;\n model?: any;\n modelChange?: (value: any) => void;\n options: { injector?: Injector; builder?: any; [name: string]: any };\n}\nexport function PiyingView(props: PiyingViewProps) {\n const maybeParentField = useContext(PI_VIEW_FIELD_TOKEN);\n\n const rootInjector = createMemo(() => {\n return (\n props.options.injector ??\n maybeParentField?.injector ??\n createRootInjector({\n providers: [\n {\n provide: ChangeDetectionScheduler,\n useClass: ChangeDetectionSchedulerImpl,\n },\n ],\n })\n );\n });\n\n let injectorDispose: (() => any) | undefined;\n\n const initResult = createMemo(() => {\n const subInjector = createInjector({\n providers: [],\n parent: rootInjector(),\n });\n injectorDispose = () => {\n subInjector.destroy();\n injectorDispose = undefined;\n };\n const field = convert(props.schema as any, {\n ...props.options,\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n });\n return [field, subInjector] as const;\n });\n\n onCleanup(() => {\n injectorDispose?.();\n });\n\n const field = createMemo(() => {\n return initResult()[0];\n });\n useEffectSync(() => {\n let ref: EffectRef | undefined;\n const [field, subInjector] = initResult();\n if (field.form.control) {\n ref = initListen(\n props.model,\n field!.form.control!,\n subInjector as Injector,\n (value) => {\n untracked(() => {\n if (field!.form.control?.valueNoError$$()) {\n props.modelChange?.(value);\n }\n });\n },\n );\n field.form.control.updateValue(props.model);\n }\n return () => {\n ref?.destroy();\n };\n });\n\n return (\n <>\n <PI_INPUT_OPTIONS_TOKEN.Provider value={props.options}>\n <PI_INPUT_SCHEMA_TOKEN.Provider value={props.schema}>\n <PI_INPUT_MODEL_TOKEN.Provider value={props.model}>\n <InjectorToken.Provider value={rootInjector()}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.Provider>\n </PI_INPUT_MODEL_TOKEN.Provider>\n </PI_INPUT_SCHEMA_TOKEN.Provider>\n </PI_INPUT_OPTIONS_TOKEN.Provider>\n </>\n );\n}\n","import { createMemo, createSignal } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputTextModel(\n cvaa: ControlValueAccessorAdapter,\n compositionMode: () => boolean,\n) {\n const [composing, setComposing] = createSignal(false);\n return createMemo(() => {\n const obj = {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n if (!compositionMode() || (compositionMode() && !composing())) {\n cvaa.valueChange((event.target as any).value);\n }\n },\n };\n if (compositionMode()) {\n return {\n ...obj,\n onCompositionStart: () => {\n setComposing(true);\n },\n onCompositionEnd: (event: any) => {\n setComposing(false);\n cvaa.valueChange((event.target as any).value);\n },\n };\n }\n return obj;\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputCheckboxModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => ({\n checked: cvaa.value() ?? false,\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLInputElement;\n },\n ) => cvaa.valueChange(event.target.checked),\n }));\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputNumberModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n },\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRadioModel(\n cvaa: ControlValueAccessorAdapter,\n value: any,\n) {\n return createMemo(() => {\n return {\n value,\n checked: Object.is(cvaa.value(), value),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: () => cvaa.valueChange(value),\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useInputRangeModel(cvaa: ControlValueAccessorAdapter) {\n return createMemo(() => {\n const onInput = (event: any) => {\n const value = (event.target as any).value;\n cvaa.valueChange(value == '' ? undefined : parseFloat(value));\n };\n return {\n value: cvaa.value() == null ? '' : cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onInput: onInput,\n onChange: onInput,\n };\n });\n}\n","import { createMemo } from 'solid-js';\nimport type { ControlValueAccessorAdapter } from '../util/use-control-value-accessor';\n\nexport function useSelectModel(\n cvaa: ControlValueAccessorAdapter,\n multiple: boolean = false,\n) {\n return createMemo(() => {\n return {\n value: cvaa.value(),\n disabled: cvaa.disabled(),\n onBlur: cvaa.touchedChange,\n onChange: (\n event: Event & {\n target: HTMLSelectElement;\n },\n ) => {\n const selected = [];\n const el = event.target;\n if (el.selectedOptions !== undefined) {\n for (let index = 0; index < el.selectedOptions.length; index++) {\n const item = el.selectedOptions[index];\n selected.push(item.value);\n if (!multiple) {\n break;\n }\n }\n } else {\n for (let index = 0; index < el.options.length; index++) {\n const option = el.options[index];\n if (option.selected) {\n selected.push(option.value);\n if (!multiple) {\n break;\n }\n }\n }\n }\n cvaa.valueChange(multiple ? selected : selected[0]);\n },\n };\n });\n}\n"],"names":["PiyingWrapper","props","wrapper","createMemo","wrappers","restWrappers","slice","inputs","createSignalConvert","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","fieldInputs","field","renderConfig","define","control","form","ComponentType$$","isHidden","hidden","injector","useContext","InjectorToken","controlRef","setControlRef","createSignal","undefined","fieldControlInput","CVA","createEffect","dispose","createViewControlLink","PI_VIEW_FIELD_TOKEN","Provider","value","ComponentType","PiyingGroup","For","each","PiyingView","maybeParentField","rootInjector","options","createRootInjector","providers","provide","ChangeDetectionScheduler","useClass","ChangeDetectionSchedulerImpl","injectorDispose","initResult","subInjector","createInjector","parent","destroy","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","onCleanup","useEffectSync","ref","initListen","model","untracked","valueNoError$$","modelChange","updateValue","PI_INPUT_OPTIONS_TOKEN","PI_INPUT_SCHEMA_TOKEN","PI_INPUT_MODEL_TOKEN"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piying/view-solid",
3
- "version": "2.4.5",
3
+ "version": "2.5.0",
4
4
  "description": "Piying view For Solid;Valibot to Component",
5
5
  "type": "module",
6
6
  "homepage": "https://piying-org.github.io/website/docs/client/intro",
@@ -34,7 +34,7 @@
34
34
  ],
35
35
  "license": "MIT",
36
36
  "dependencies": {
37
- "@piying/view-core": "^2.4.5",
37
+ "@piying/view-core": "^2.5.0",
38
38
  "static-injector": "^6.1.2"
39
39
  },
40
40
  "sideEffects": false,
package/token.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { CoreSchemaHandle, FormBuilder } from '@piying/view-core';
6
6
  export declare const PI_VIEW_FIELD_TOKEN: import("solid-js").Context<PiResolvedViewFieldConfig | undefined>;
7
7
  export declare const InjectorToken: import("solid-js").Context<Injector | undefined>;
8
8
  export declare const PI_INPUT_OPTIONS_TOKEN: import("solid-js").Context<(Omit<ConvertOptions<typeof CoreSchemaHandle<any, any>>, "handle"> & Partial<Pick<ConvertOptions<typeof CoreSchemaHandle<any, any>>, "handle">> & {
9
- builder: typeof FormBuilder<CoreSchemaHandle<any, any>>;
9
+ builder?: typeof FormBuilder<CoreSchemaHandle<any, any>>;
10
10
  fieldGlobalConfig?: PiViewConfig;
11
11
  }) | undefined>;
12
12
  export declare const PI_INPUT_SCHEMA_TOKEN: import("solid-js").Context<v.BaseSchema<any, any, any> | v.SchemaWithPipe<any> | undefined>;