@piying/view-solid 1.5.0 → 1.5.1
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/index.cjs +7 -7
- package/index.cjs.map +1 -1
- package/index.js +8 -8
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/util/signal-convert.d.ts +1 -1
package/index.cjs
CHANGED
|
@@ -7,7 +7,7 @@ require("valibot");
|
|
|
7
7
|
const PI_VIEW_FIELD_TOKEN = solidJs.createContext(void 0);
|
|
8
8
|
const InjectorToken = solidJs.createContext(void 0);
|
|
9
9
|
const CVA = Symbol.for("ControlValueAccessor");
|
|
10
|
-
function
|
|
10
|
+
function createSignalConvert(value) {
|
|
11
11
|
const injector = solidJs.useContext(InjectorToken);
|
|
12
12
|
const [result, setResult] = solidJs.createSignal(value());
|
|
13
13
|
solidJs.createEffect(() => {
|
|
@@ -30,7 +30,7 @@ function useSignalToRef(value) {
|
|
|
30
30
|
function PiyingWrapper(props) {
|
|
31
31
|
const wrapper = solidJs.createMemo(() => props.wrappers[0]);
|
|
32
32
|
const restWrappers = solidJs.createMemo(() => props.wrappers?.slice(1));
|
|
33
|
-
const inputs =
|
|
33
|
+
const inputs = createSignalConvert(() => ({
|
|
34
34
|
...wrapper()?.inputs(),
|
|
35
35
|
...wrapper()?.attributes(),
|
|
36
36
|
...wrapper()?.outputs
|
|
@@ -60,13 +60,13 @@ function PiyingWrapper(props) {
|
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
function PiyingFieldTemplate(props) {
|
|
63
|
-
const fieldInputs =
|
|
63
|
+
const fieldInputs = createSignalConvert(() => ({
|
|
64
64
|
...props.field.attributes(),
|
|
65
65
|
...props.field.inputs(),
|
|
66
66
|
...props.field.outputs()
|
|
67
67
|
}));
|
|
68
|
-
const renderConfig =
|
|
69
|
-
const wrappers =
|
|
68
|
+
const renderConfig = createSignalConvert(() => props.field.renderConfig());
|
|
69
|
+
const wrappers = createSignalConvert(() => props.field.wrappers());
|
|
70
70
|
const control = solidJs.createMemo(() => props.field.form.control);
|
|
71
71
|
const ComponentType$$ = solidJs.createMemo(() => props.field.define?.type);
|
|
72
72
|
const isHidden = solidJs.createMemo(() => {
|
|
@@ -177,7 +177,7 @@ function useEffectSync(fn) {
|
|
|
177
177
|
}
|
|
178
178
|
function PiyingGroup() {
|
|
179
179
|
const field = solidJs.useContext(PI_VIEW_FIELD_TOKEN);
|
|
180
|
-
const children =
|
|
180
|
+
const children = createSignalConvert(() => field?.children());
|
|
181
181
|
return solidJs.createComponent(solidJs.For, {
|
|
182
182
|
get each() {
|
|
183
183
|
return children();
|
|
@@ -368,6 +368,7 @@ exports.PiyingView = PiyingView;
|
|
|
368
368
|
exports.PiyingWrapper = PiyingWrapper;
|
|
369
369
|
exports.SolidFormBuilder = SolidFormBuilder;
|
|
370
370
|
exports.SolidSchemaHandle = SolidSchemaHandle;
|
|
371
|
+
exports.createSignalConvert = createSignalConvert;
|
|
371
372
|
exports.useControlValueAccessor = useControlValueAccessor;
|
|
372
373
|
exports.useEffectSync = useEffectSync;
|
|
373
374
|
exports.useInputCheckboxModel = useInputCheckboxModel;
|
|
@@ -376,5 +377,4 @@ exports.useInputRadioModel = useInputRadioModel;
|
|
|
376
377
|
exports.useInputRangeModel = useInputRangeModel;
|
|
377
378
|
exports.useInputTextModel = useInputTextModel;
|
|
378
379
|
exports.useSelectModel = useSelectModel;
|
|
379
|
-
exports.useSignalToRef = useSignalToRef;
|
|
380
380
|
//# sourceMappingURL=index.cjs.map
|
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 } from './type/group';\nimport { createContext } from 'solid-js';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\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\n// todo 重命名\nexport function useSignalToRef<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 { CoreResolvedWrapperConfig } from '@piying/view-core';\nimport { useSignalToRef } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreResolvedWrapperConfig[];\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 = useSignalToRef(() => ({\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 { useSignalToRef } 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 = useSignalToRef(() => ({\n ...props.field.attributes(),\n ...props.field.inputs(),\n ...props.field.outputs(),\n }));\n const renderConfig = useSignalToRef(() => props.field.renderConfig());\n const wrappers = useSignalToRef(() => props.field.wrappers());\n const control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => props.field.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 { useSignalToRef } from '../util';\n\nexport function PiyingGroup() {\n const field = useContext(PI_VIEW_FIELD_TOKEN);\n const children = useSignalToRef(() => 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 DestroyRef,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport { InjectorToken } 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, untrack } 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 const initResult = createMemo(() => {\n const subInjector = createInjector({ providers: [], parent: rootInjector });\n const field = convert(props.schema as any, {\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n registerOnDestroy: (fn) => {\n subInjector!.get(DestroyRef).onDestroy(fn);\n },\n ...props.options,\n });\n return [field, subInjector] as const;\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 const model = untrack(() => props.model);\n ref = initListen(\n typeof model !== 'undefined' ? model : undefined,\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 }\n return () => {\n subInjector.destroy();\n ref?.destroy();\n };\n });\n createMemo(() => {\n field()!.form.control?.updateValue(props.model);\n });\n return (\n <>\n <InjectorToken.Provider value={rootInjector}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.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","useSignalToRef","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","fieldInputs","field","renderConfig","control","form","ComponentType$$","define","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","initResult","subInjector","createInjector","parent","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","registerOnDestroy","fn","get","DestroyRef","onDestroy","options","useEffectSync","ref","model","untrack","initListen","untracked","valueNoError$$","modelChange","destroy","updateValue"],"mappings":";;;;;;AAIO,MAAM,sBAAsBA,QAAAA,cAEjC,MAAS;AACJ,MAAM,gBAAgBA,QAAAA,cAAoC,MAAS;AAEnE,MAAM,MAAM,OAAO,IAAI,sBAAsB;ACF7C,SAAS,eAAkB,OAAgB;AAChD,QAAM,WAAWC,QAAAA,WAAW,aAAa;AACzC,QAAM,CAAC,QAAQ,SAAS,IAAIC,QAAAA,aAAa,OAAO;AAChDC,UAAAA,aAAa,MAAM;AACjB,cAAU,MAAM,OAAO;AACvB,UAAM,MAAMC,eAAAA;AAAAA,MACV,MAAM;AACJ,cAAM,eAAe,MAAA;AACrB,YAAI,CAAC,OAAO,GAAG,OAAA,GAAU,YAAY,GAAG;AACtC,oBAAU,MAAM,YAAa;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,EAAE,SAAA;AAAA,IAAmB;AAEvBC,YAAAA,UAAU,MAAM;AACd,UAAI,QAAA;AAAA,IACN,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;ACjBO,SAASC,cAAcC,OAA2B;AACvD,QAAMC,UAAUC,QAAAA,WAAW,MAAMF,MAAMG,SAAS,CAAC,CAAC;AAClD,QAAMC,eAAeF,QAAAA,WAAW,MAAMF,MAAMG,UAAUE,MAAM,CAAC,CAAC;AAC9D,QAAMC,SAASC,eAAe,OAAO;AAAA,IACnC,GAAGN,QAAAA,GAAWK,OAAAA;AAAAA,IACd,GAAGL,QAAAA,GAAWO,WAAAA;AAAAA,IACd,GAAGP,WAAWQ;AAAAA,EAAAA,EACd;AACF,SAAAC,QAAAA,gBACGC,QAAAA,MAAI;AAAA,IAAA,IACHC,OAAI;AAAA,aAAEV,mBAAW,MAAMD,QAAAA,GAAWY,IAAI,EAAA;AAAA,IAAG;AAAA,IAAA,IACzCC,WAAQ;AAAA,aAAEd,MAAMe;AAAAA,IAAQ;AAAA,IACxBC,OAAK;AAAA,IAAAD,UAEHE,CAAAA,gBAAgB;AAChB,aAAAP,wBACGO,aAAWC,QAAAA,WAAKZ,QAAM;AAAA,QAAA,IAAAS,WAAA;AAAA,iBAAAL,QAAAA,gBACpBX,eAAa;AAAA,YAAA,IAACI,WAAQ;AAAA,qBAAEC,aAAAA;AAAAA,YAAc;AAAA,YAAA,IAAAW,WAAA;AAAA,qBACpCf,MAAMe;AAAAA,YAAQ;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA,CAAA;AAAA,IAIvB;AAAA,EAAA,CAAC;AAGP;ACfO,SAASI,oBAAoBnB,OAAiC;AACnE,QAAMoB,cAAcb,eAAe,OAAO;AAAA,IACxC,GAAGP,MAAMqB,MAAMb,WAAAA;AAAAA,IACf,GAAGR,MAAMqB,MAAMf,OAAAA;AAAAA,IACf,GAAGN,MAAMqB,MAAMZ,QAAAA;AAAAA,EAAQ,EACvB;AACF,QAAMa,eAAef,eAAe,MAAMP,MAAMqB,MAAMC,cAAc;AACpE,QAAMnB,WAAWI,eAAe,MAAMP,MAAMqB,MAAMlB,UAAU;AAC5D,QAAMoB,UAAUrB,QAAAA,WAAW,MAAMF,MAAMqB,MAAMG,KAAKD,OAAO;AACzD,QAAME,kBAAkBvB,QAAAA,WAAW,MAAMF,MAAMqB,MAAMK,QAAQb,IAAI;AACjE,QAAMc,WAAWzB,QAAAA,WAAW,MAAM;AAChC,WAAO,CAAC,CAACoB,aAAAA,EAAeM,UAAU,CAACH,gBAAAA;AAAAA,EACrC,CAAC;AACD,QAAMI,WAAWnC,QAAAA,WAAWoC,aAAa;AAEzC,QAAM,CAACC,YAAYC,aAAa,IAAIrC,QAAAA,aAElCsC,MAAS;AACX,QAAMC,oBAAoBhC,QAAAA,WACxB,OACG;AAAA,IACC,GAAGkB,YAAAA;AAAAA,IACH,CAACe,GAAG,GAAGH;AAAAA,EAAAA,EAEb;AAEApC,UAAAA,aAAa,MAAM;AACjB,QAAIwC;AACJ,QAAIL,cAAc;AAChBK,gBAAUC,SAAAA,sBAAsBd,SAAgBQ,WAAAA,GAAeF,QAAQ;AAAA,IACzE;AACA,WAAO,MAAM;AACXO,gBAAAA;AACAA,gBAAUH;AAAAA,IACZ;AAAA,EACF,CAAC;AAED,SAAAvB,QAAAA,gBAEK4B,oBAAoBC,UAAQ;AAAA,IAAA,IAACC,QAAK;AAAA,aAAExC,MAAMqB;AAAAA,IAAK;AAAA,IAAA,IAAAN,WAAA;AAAA,aAAAL,QAAAA,gBAC7CC,QAAAA,MAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAE,CAACe,SAAAA;AAAAA,QAAU;AAAA,QAAA,IAAAZ,WAAA;AAAA,iBAAAL,QAAAA,gBACpBX,eAAa;AAAA,YAAA,IAACI,WAAQ;AAAA,qBAAEA,SAAAA;AAAAA,YAAU;AAAA,YAAA,IAAAY,WAAA;AAAA,qBAAAL,QAAAA,gBAChCC,QAAAA,MAAI;AAAA,gBAAA,IAACC,OAAI;AAAA,yBAAEa,gBAAAA;AAAAA,gBAAiB;AAAA,gBAAET,OAAK;AAAA,gBAAAD,UAChC0B,CAAAA,kBAAa/B,QAAAA,gBACZC,cAAI;AAAA,kBAAA,IACHC,OAAI;AAAA,2BAAEZ,MAAMqB,MAAMG,KAAKD;AAAAA,kBAAO;AAAA,kBAAA,IAC9BT,WAAQ;AAAA,2BAAAJ,wBAAG+B,eAAavB,QAAAA,WAAKE,WAAW,CAAA;AAAA,kBAAA;AAAA,kBAAA,IAAAL,WAAA;AAAA,2BAAAL,wBAEvC+B,eAAavB,QAAAA,WAAKgB,iBAAiB,CAAA;AAAA,kBAAA;AAAA,gBAAA,CAAA;AAAA,cAAA,CAEvC;AAAA,YAAA;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAOf;ACzEO,SAAS,0BAA0B;AACxC,QAAM,CAAC,OAAO,QAAQ,IAAIvC,QAAAA,aAAkB,MAAS;AACrD,QAAM,CAAC,UAAU,WAAW,IAAIA,QAAAA,aAAa,KAAK;AAClD,QAAM,CAAC,UAAU,WAAW,IAAIA,QAAAA,aAE9B,MAAS;AACX,QAAM,CAAC,SAAS,UAAU,IAAIA,QAAAA;AAAAA,IAC5B;AAAA,EAAA;AAEF,QAAM,MAA4B;AAAA,IAChC,WAAW,KAAK;AACd,eAAS,GAAG;AAAA,IACd;AAAA,IACA,iBAAiB,IAAI;AACnB,kBAAY,MAAM,EAAE;AAAA,IACtB;AAAA,IACA,kBAAkB,IAAI;AACpB,iBAAW,MAAM,EAAE;AAAA,IACrB;AAAA,IACA,iBAAiB6C,QAAO;AACtB,kBAAYA,MAAK;AAAA,IACnB;AAAA,EAAA;AAGF,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,aAAa,CAACA,WAAe;AAC3B,iBAAA,IAAaA,MAAK;AAClB,iBAASA,MAAK;AAAA,MAChB;AAAA,MACA,eAAe,MAAM;AACnB,oBAAQ;AAAA,MACV;AAAA,IAAA;AAAA,EACF;AAEJ;ACvCO,SAAS,cAAc,IAA+B;AAC3D,MAAI,UAAe;AAEnBtC,UAAAA,WAAW,MAAM;AACf,cAAU,GAAA;AAAA,EACZ,CAAC;AACDN,UAAAA,aAAa,MAAM;AACjBE,YAAAA,UAAU,MAAM;AACd,gBAAA;AACA,gBAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACH;ACTO,SAAS4C,cAAc;AAC5B,QAAMrB,QAAQ3B,QAAAA,WAAW4C,mBAAmB;AAC5C,QAAMvB,WAAWR,eAAe,MAAMc,OAAON,UAAW;AACxD,SAAAL,QAAAA,gBACGiC,QAAAA,KAAG;AAAA,IAAA,IAACC,OAAI;AAAA,aAAE7B,SAAAA;AAAAA,IAAU;AAAA,IAAAA,UACjBM,CAAAA,WAAU;AACV,aAAAX,QAAAA,gBAAQS,qBAAmB;AAAA,QAACE,OAAOA;AAAAA,MAAAA,CAAK;AAAA,IAC1C;AAAA,EAAA,CAAC;AAGP;ACZO,MAAM,0BAA0BwB,SAAAA,iBAGrC;AAEF;ACLO,MAAM,yBAAyBC,SAAAA,YAA+B;AAAC;ACqB/D,SAASC,WAAW/C,OAAwB;AACjD,QAAMgD,eAAeC,eAAAA,mBAAmB;AAAA,IACtCC,WAAW,CACT;AAAA,MACEC,SAASC,eAAAA;AAAAA,MACTC,UAAUC,eAAAA;AAAAA,IAAAA,CACX;AAAA,EAAA,CAEJ;AACD,QAAMC,aAAarD,QAAAA,WAAW,MAAM;AAClC,UAAMsD,cAAcC,eAAAA,eAAe;AAAA,MAAEP,WAAW,CAAA;AAAA,MAAIQ,QAAQV;AAAAA,IAAAA,CAAc;AAC1E,UAAM3B,SAAQsC,SAAAA,QAAQ3D,MAAM4D,QAAe;AAAA,MACzCC,QAAQC;AAAAA,MACRC,SAASC;AAAAA,MACTnC,UAAU2B;AAAAA,MACVS,mBAAoBC,CAAAA,OAAO;AACzBV,oBAAaW,IAAIC,eAAAA,UAAU,EAAEC,UAAUH,EAAE;AAAA,MAC3C;AAAA,MACA,GAAGlE,MAAMsE;AAAAA,IAAAA,CACV;AACD,WAAO,CAACjD,QAAOmC,WAAW;AAAA,EAC5B,CAAC;AACD,QAAMnC,QAAQnB,QAAAA,WAAW,MAAM;AAC7B,WAAOqD,WAAAA,EAAa,CAAC;AAAA,EACvB,CAAC;AACDgB,gBAAc,MAAM;AAClB,QAAIC;AACJ,UAAM,CAACnD,QAAOmC,WAAW,IAAID,WAAAA;AAC7B,QAAIlC,OAAMG,KAAKD,SAAS;AACtB,YAAMkD,QAAQC,QAAAA,QAAQ,MAAM1E,MAAMyE,KAAK;AACvCD,YAAMG,SAAAA,WACJ,OAAOF,UAAU,cAAcA,QAAQxC,QACvCZ,OAAOG,KAAKD,SACZiC,aACChB,CAAAA,UAAU;AACToC,uBAAAA,UAAU,MAAM;AACd,cAAIvD,OAAOG,KAAKD,SAASsD,eAAAA,GAAkB;AACzC7E,kBAAM8E,cAActC,KAAK;AAAA,UAC3B;AAAA,QACF,CAAC;AAAA,MACH,CACF;AAAA,IACF;AACA,WAAO,MAAM;AACXgB,kBAAYuB,QAAAA;AACZP,WAAKO,QAAAA;AAAAA,IACP;AAAA,EACF,CAAC;AACD7E,UAAAA,WAAW,MAAM;AACfmB,UAAAA,EAASG,KAAKD,SAASyD,YAAYhF,MAAMyE,KAAK;AAAA,EAChD,CAAC;AACD,SAAA/D,QAAAA,gBAEKoB,cAAcS,UAAQ;AAAA,IAACC,OAAOQ;AAAAA,IAAY,IAAAjC,WAAA;AAAA,aAAAL,QAAAA,gBACxCS,qBAAmB;AAAA,QAAA,IAACE,QAAK;AAAA,iBAAEA,MAAAA;AAAAA,QAAO;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAI3C;AC/EO,SAAS,kBACd,MACA,iBACA;AACA,QAAM,CAAC,WAAW,YAAY,IAAI1B,QAAAA,aAAa,KAAK;AACpD,SAAOO,QAAAA,WAAW,MAAM;AACtB,UAAM,MAAM;AAAA,MACV,OAAO,KAAK,MAAA,KAAW,OAAO,KAAK,KAAK,MAAA;AAAA,MACxC,UAAU,KAAK,SAAA;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,SAAS,CAAC,UAAe;AACvB,YAAI,CAAC,gBAAA,KAAsB,qBAAqB,CAAC,aAAc;AAC7D,eAAK,YAAa,MAAM,OAAe,KAAK;AAAA,QAC9C;AAAA,MACF;AAAA,IAAA;AAEF,QAAI,mBAAmB;AACrB,aAAO;AAAA,QACL,GAAG;AAAA,QACH,oBAAoB,MAAM;AACxB,uBAAa,IAAI;AAAA,QACnB;AAAA,QACA,kBAAkB,CAAC,UAAe;AAChC,uBAAa,KAAK;AAClB,eAAK,YAAa,MAAM,OAAe,KAAK;AAAA,QAC9C;AAAA,MAAA;AAAA,IAEJ;AACA,WAAO;AAAA,EACT,CAAC;AACH;AC9BO,SAAS,sBAAsB,MAAmC;AACvE,SAAOA,QAAAA,WAAW,OAAO;AAAA,IACvB,SAAS,KAAK,MAAA,KAAW;AAAA,IACzB,UAAU,KAAK,SAAA;AAAA,IACf,QAAQ,KAAK;AAAA,IACb,UAAU,CACR,UAGG,KAAK,YAAY,MAAM,OAAO,OAAO;AAAA,EAAA,EAC1C;AACJ;ACXO,SAAS,oBAAoB,MAAmC;AACrE,SAAOA,QAAAA,WAAW,MAAM;AACtB,WAAO;AAAA,MACL,OAAO,KAAK,MAAA,KAAW,OAAO,KAAK,KAAK,MAAA;AAAA,MACxC,UAAU,KAAK,SAAA;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,SAAS,CAAC,UAAe;AACvB,cAAM,QAAS,MAAM,OAAe;AACpC,aAAK,YAAY,SAAS,KAAK,SAAY,WAAW,KAAK,CAAC;AAAA,MAC9D;AAAA,IAAA;AAAA,EAEJ,CAAC;AACH;ACZO,SAAS,mBACd,MACA,OACA;AACA,SAAOA,QAAAA,WAAW,MAAM;AACtB,WAAO;AAAA,MACL;AAAA,MACA,SAAS,OAAO,GAAG,KAAK,MAAA,GAAS,KAAK;AAAA,MACtC,UAAU,KAAK,SAAA;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,UAAU,MAAM,KAAK,YAAY,KAAK;AAAA,IAAA;AAAA,EAE1C,CAAC;AACH;ACbO,SAAS,mBAAmB,MAAmC;AACpE,SAAOA,QAAAA,WAAW,MAAM;AACtB,UAAM,UAAU,CAAC,UAAe;AAC9B,YAAM,QAAS,MAAM,OAAe;AACpC,WAAK,YAAY,SAAS,KAAK,SAAY,WAAW,KAAK,CAAC;AAAA,IAC9D;AACA,WAAO;AAAA,MACL,OAAO,KAAK,MAAA,KAAW,OAAO,KAAK,KAAK,MAAA;AAAA,MACxC,UAAU,KAAK,SAAA;AAAA,MACf,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,EAEd,CAAC;AACH;ACdO,SAAS,eACd,MACA,WAAoB,OACpB;AACA,SAAOA,QAAAA,WAAW,MAAM;AACtB,WAAO;AAAA,MACL,OAAO,KAAK,MAAA;AAAA,MACZ,UAAU,KAAK,SAAA;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,UAAU,CACR,UAGG;AACH,cAAM,WAAW,CAAA;AACjB,cAAM,KAAK,MAAM;AACjB,YAAI,GAAG,oBAAoB,QAAW;AACpC,mBAAS,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,QAAQ,SAAS;AAC9D,kBAAM,OAAO,GAAG,gBAAgB,KAAK;AACrC,qBAAS,KAAK,KAAK,KAAK;AACxB,gBAAI,CAAC,UAAU;AACb;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,mBAAS,QAAQ,GAAG,QAAQ,GAAG,QAAQ,QAAQ,SAAS;AACtD,kBAAM,SAAS,GAAG,QAAQ,KAAK;AAC/B,gBAAI,OAAO,UAAU;AACnB,uBAAS,KAAK,OAAO,KAAK;AAC1B,kBAAI,CAAC,UAAU;AACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,aAAK,YAAY,WAAW,WAAW,SAAS,CAAC,CAAC;AAAA,MACpD;AAAA,IAAA;AAAA,EAEJ,CAAC;AACH;;;;;;;;;;;;;;;;;;;"}
|
|
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 } from './type/group';\nimport { createContext } from 'solid-js';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\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 { CoreResolvedWrapperConfig } from '@piying/view-core';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreResolvedWrapperConfig[];\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 control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => props.field.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 DestroyRef,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport { InjectorToken } 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, untrack } 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 const initResult = createMemo(() => {\n const subInjector = createInjector({ providers: [], parent: rootInjector });\n const field = convert(props.schema as any, {\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n registerOnDestroy: (fn) => {\n subInjector!.get(DestroyRef).onDestroy(fn);\n },\n ...props.options,\n });\n return [field, subInjector] as const;\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 const model = untrack(() => props.model);\n ref = initListen(\n typeof model !== 'undefined' ? model : undefined,\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 }\n return () => {\n subInjector.destroy();\n ref?.destroy();\n };\n });\n createMemo(() => {\n field()!.form.control?.updateValue(props.model);\n });\n return (\n <>\n <InjectorToken.Provider value={rootInjector}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.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","control","form","ComponentType$$","define","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","initResult","subInjector","createInjector","parent","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","registerOnDestroy","fn","get","DestroyRef","onDestroy","options","useEffectSync","ref","model","untrack","initListen","untracked","valueNoError$$","modelChange","destroy","updateValue"],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import "valibot";
|
|
|
5
5
|
const PI_VIEW_FIELD_TOKEN = createContext(void 0);
|
|
6
6
|
const InjectorToken = createContext(void 0);
|
|
7
7
|
const CVA = Symbol.for("ControlValueAccessor");
|
|
8
|
-
function
|
|
8
|
+
function createSignalConvert(value) {
|
|
9
9
|
const injector = useContext(InjectorToken);
|
|
10
10
|
const [result, setResult] = createSignal(value());
|
|
11
11
|
createEffect(() => {
|
|
@@ -28,7 +28,7 @@ function useSignalToRef(value) {
|
|
|
28
28
|
function PiyingWrapper(props) {
|
|
29
29
|
const wrapper = createMemo(() => props.wrappers[0]);
|
|
30
30
|
const restWrappers = createMemo(() => props.wrappers?.slice(1));
|
|
31
|
-
const inputs =
|
|
31
|
+
const inputs = createSignalConvert(() => ({
|
|
32
32
|
...wrapper()?.inputs(),
|
|
33
33
|
...wrapper()?.attributes(),
|
|
34
34
|
...wrapper()?.outputs
|
|
@@ -58,13 +58,13 @@ function PiyingWrapper(props) {
|
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
function PiyingFieldTemplate(props) {
|
|
61
|
-
const fieldInputs =
|
|
61
|
+
const fieldInputs = createSignalConvert(() => ({
|
|
62
62
|
...props.field.attributes(),
|
|
63
63
|
...props.field.inputs(),
|
|
64
64
|
...props.field.outputs()
|
|
65
65
|
}));
|
|
66
|
-
const renderConfig =
|
|
67
|
-
const wrappers =
|
|
66
|
+
const renderConfig = createSignalConvert(() => props.field.renderConfig());
|
|
67
|
+
const wrappers = createSignalConvert(() => props.field.wrappers());
|
|
68
68
|
const control = createMemo(() => props.field.form.control);
|
|
69
69
|
const ComponentType$$ = createMemo(() => props.field.define?.type);
|
|
70
70
|
const isHidden = createMemo(() => {
|
|
@@ -175,7 +175,7 @@ function useEffectSync(fn) {
|
|
|
175
175
|
}
|
|
176
176
|
function PiyingGroup() {
|
|
177
177
|
const field = useContext(PI_VIEW_FIELD_TOKEN);
|
|
178
|
-
const children =
|
|
178
|
+
const children = createSignalConvert(() => field?.children());
|
|
179
179
|
return createComponent(For, {
|
|
180
180
|
get each() {
|
|
181
181
|
return children();
|
|
@@ -367,6 +367,7 @@ export {
|
|
|
367
367
|
PiyingWrapper,
|
|
368
368
|
SolidFormBuilder,
|
|
369
369
|
SolidSchemaHandle,
|
|
370
|
+
createSignalConvert,
|
|
370
371
|
useControlValueAccessor,
|
|
371
372
|
useEffectSync,
|
|
372
373
|
useInputCheckboxModel,
|
|
@@ -374,7 +375,6 @@ export {
|
|
|
374
375
|
useInputRadioModel,
|
|
375
376
|
useInputRangeModel,
|
|
376
377
|
useInputTextModel,
|
|
377
|
-
useSelectModel
|
|
378
|
-
useSignalToRef
|
|
378
|
+
useSelectModel
|
|
379
379
|
};
|
|
380
380
|
//# sourceMappingURL=index.js.map
|
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 } from './type/group';\nimport { createContext } from 'solid-js';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\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\n// todo 重命名\nexport function useSignalToRef<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 { CoreResolvedWrapperConfig } from '@piying/view-core';\nimport { useSignalToRef } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreResolvedWrapperConfig[];\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 = useSignalToRef(() => ({\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 { useSignalToRef } 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 = useSignalToRef(() => ({\n ...props.field.attributes(),\n ...props.field.inputs(),\n ...props.field.outputs(),\n }));\n const renderConfig = useSignalToRef(() => props.field.renderConfig());\n const wrappers = useSignalToRef(() => props.field.wrappers());\n const control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => props.field.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 { useSignalToRef } from '../util';\n\nexport function PiyingGroup() {\n const field = useContext(PI_VIEW_FIELD_TOKEN);\n const children = useSignalToRef(() => 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 DestroyRef,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport { InjectorToken } 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, untrack } 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 const initResult = createMemo(() => {\n const subInjector = createInjector({ providers: [], parent: rootInjector });\n const field = convert(props.schema as any, {\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n registerOnDestroy: (fn) => {\n subInjector!.get(DestroyRef).onDestroy(fn);\n },\n ...props.options,\n });\n return [field, subInjector] as const;\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 const model = untrack(() => props.model);\n ref = initListen(\n typeof model !== 'undefined' ? model : undefined,\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 }\n return () => {\n subInjector.destroy();\n ref?.destroy();\n };\n });\n createMemo(() => {\n field()!.form.control?.updateValue(props.model);\n });\n return (\n <>\n <InjectorToken.Provider value={rootInjector}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.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","useSignalToRef","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","fieldInputs","field","renderConfig","control","form","ComponentType$$","define","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","initResult","subInjector","createInjector","parent","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","registerOnDestroy","fn","get","DestroyRef","onDestroy","options","useEffectSync","ref","model","untrack","initListen","untracked","valueNoError$$","modelChange","destroy","updateValue"],"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 } from './type/group';\nimport { createContext } from 'solid-js';\n\nexport const PI_VIEW_FIELD_TOKEN = createContext<\n PiResolvedViewFieldConfig | undefined\n>(undefined);\nexport const InjectorToken = createContext<Injector | undefined>(undefined);\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 { CoreResolvedWrapperConfig } from '@piying/view-core';\nimport { createSignalConvert } from '../util/signal-convert';\nimport { createMemo, Show } from 'solid-js';\n\nexport interface PiyingWrapperProps {\n wrappers: CoreResolvedWrapperConfig[];\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 control = createMemo(() => props.field.form.control);\n const ComponentType$$ = createMemo(() => props.field.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 DestroyRef,\n Injector,\n untracked,\n type EffectRef,\n} from 'static-injector';\nimport * as v from 'valibot';\nimport { InjectorToken } 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, untrack } 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 const initResult = createMemo(() => {\n const subInjector = createInjector({ providers: [], parent: rootInjector });\n const field = convert(props.schema as any, {\n handle: SolidSchemaHandle as any,\n builder: SolidFormBuilder,\n injector: subInjector,\n registerOnDestroy: (fn) => {\n subInjector!.get(DestroyRef).onDestroy(fn);\n },\n ...props.options,\n });\n return [field, subInjector] as const;\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 const model = untrack(() => props.model);\n ref = initListen(\n typeof model !== 'undefined' ? model : undefined,\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 }\n return () => {\n subInjector.destroy();\n ref?.destroy();\n };\n });\n createMemo(() => {\n field()!.form.control?.updateValue(props.model);\n });\n return (\n <>\n <InjectorToken.Provider value={rootInjector}>\n <PiyingFieldTemplate field={field()}></PiyingFieldTemplate>\n </InjectorToken.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","control","form","ComponentType$$","define","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","initResult","subInjector","createInjector","parent","convert","schema","handle","SolidSchemaHandle","builder","SolidFormBuilder","registerOnDestroy","fn","get","DestroyRef","onDestroy","options","useEffectSync","ref","model","untrack","initListen","untracked","valueNoError$$","modelChange","destroy","updateValue"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piying/view-solid",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
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": "^1.5.
|
|
37
|
+
"@piying/view-core": "^1.5.1",
|
|
38
38
|
"static-injector": "^6.1.2"
|
|
39
39
|
},
|
|
40
40
|
"sideEffects": false,
|
package/util/signal-convert.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function createSignalConvert<T>(value: () => T): import("solid-js").Accessor<T>;
|