{"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/component/field-control-bind.tsx","../../packages/solid/src/builder.ts","../../packages/solid/src/schema-handle.ts","../../packages/solid/src/util/convert-wrapper.ts","../../packages/solid/src/util/use-effect-sync.ts","../../packages/solid/src/component/group.tsx","../../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, untracked } 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        untracked(() => {\n          if (!Object.is(result(), currentValue)) {\n            setResult(() => currentValue!);\n          }\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 {\n  _PiResolvedCommonViewFieldConfig,\n  KeyPath,\n} from '@piying/view-core';\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: _PiResolvedCommonViewFieldConfig;\n  path?: KeyPath;\n}\n\nexport function PiyingFieldTemplate(props: PiyingFieldTemplateProps) {\n  const keyPath = props.path;\n  const field = createMemo(() => {\n    return keyPath ? props.field.get(keyPath)! : props.field;\n  });\n\n  const fieldInputs = createSignalConvert(() => ({\n    ...field().attributes(),\n    ...field().inputs(),\n    ...field().outputs(),\n  }));\n  const renderConfig = createSignalConvert(() => field().renderConfig());\n  const wrappers = createSignalConvert(() => field().wrappers());\n  const define = createSignalConvert(() => field().define?.());\n  const control = createMemo(() => 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={field()}>\n        <Show when={!isHidden()}>\n          <PiyingWrapper wrappers={wrappers()}>\n            <Show when={ComponentType$$()} keyed>\n              {(ComponentType) => (\n                <Show\n                  when={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(optionalBind?: boolean) {\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        if (optionalBind) {\n          onChange()?.(value);\n        } else {\n          onChange()!(value);\n        }\n        setValue(value);\n      },\n      touchedChange: () => {\n        if (optionalBind) {\n          touched()?.();\n        } else {\n          touched()!();\n        }\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 { createMemo, createEffect, onCleanup } from 'solid-js';\nimport type { JSX } from 'solid-js/jsx-runtime';\nimport type { KeyPath } from '@piying/view-core';\nimport { createViewControlLink, isFieldControl } from '@piying/view-core';\nimport type { PiResolvedViewFieldConfig } from '../type';\nimport { useControlValueAccessor } from '../util/use-control-value-accessor';\n\nexport interface FieldControlBindProps {\n  field: PiResolvedViewFieldConfig;\n  path?: KeyPath;\n  children: (props: {\n    cvaa: any;\n    field: PiResolvedViewFieldConfig;\n  }) => JSX.Element;\n}\n\nlet disposeRef: ((destroy?: boolean) => void) | undefined = undefined;\n\nexport function Field(props: FieldControlBindProps) {\n  const { field, path, children } = props;\n\n  // 清理之前的引用\n  if (disposeRef) {\n    disposeRef(true);\n    disposeRef = undefined;\n  }\n\n  const resolvedField = createMemo(() => {\n    const keyPath = path;\n    return keyPath ? field.get(keyPath)! : field;\n  });\n\n  const { cva, cvaa } = useControlValueAccessor();\n\n  createEffect(() => {\n    const resolved = resolvedField();\n    const control = resolved?.form.control;\n    if (!control) {\n      throw new Error(\n        `📍 fieldControlBind:[${field?.keyPath || ''}]->[${path || ''}]❗`,\n      );\n    }\n    if (!isFieldControl(control)) {\n      throw new Error(`🏷️ fieldControl❗`);\n    }\n    disposeRef = createViewControlLink(() => control, cva, field.injector);\n  });\n\n  onCleanup(() => {\n    disposeRef?.(true);\n    disposeRef = undefined;\n  });\n\n  return children({ cvaa, field: resolvedField()! });\n}\n","import { FormBuilder } from '@piying/view-core';\nimport type { SolidSchemaHandle } from './schema-handle';\n\nexport class SolidFormBuilder extends FormBuilder<SolidSchemaHandle> {}\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 { createConvertToField } from '@piying/view-core';\nimport { SolidFormBuilder } from '../builder';\nimport { SolidSchemaHandle } from '../schema-handle';\nimport {\n  ChangeDetectionScheduler,\n  ChangeDetectionSchedulerImpl,\n  createRootInjector,\n} from 'static-injector';\n\nconst DefaultConvertOptions = {\n  builder: SolidFormBuilder,\n  handle: SolidSchemaHandle,\n};\n\n/**\n * 转换 Valibot 定义为 Piying 字段\n */\nexport const convertToField = createConvertToField(\n  DefaultConvertOptions,\n  createRootInjector({\n    providers: [\n      {\n        provide: ChangeDetectionScheduler,\n        useClass: ChangeDetectionSchedulerImpl,\n      },\n    ],\n  }),\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 {\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 { type FieldConvertViewOptions } from '@piying/view-core';\nimport { InjectorToken, PI_VIEW_FIELD_TOKEN } from '../token';\nimport { PiyingFieldTemplate } from './field-template';\nimport { initListen } from '@piying/view-core';\nimport { convertToField } from '../util/convert-wrapper';\nimport { createMemo, onCleanup, useContext } from 'solid-js';\nimport { useEffectSync } from '../util';\n\nexport interface PiyingViewProps {\n  schema: v.BaseSchema<any, any, any>;\n  model?: any;\n  modelChange?: (value: any) => void;\n  options: FieldConvertViewOptions;\n}\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    injectorDispose?.();\n    const subInjector = createInjector({\n      providers: [],\n      parent: rootInjector(),\n    });\n    injectorDispose = () => {\n      subInjector.destroy();\n      injectorDispose = undefined;\n    };\n    const field = convertToField(\n      () => props.schema,\n      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      <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","untracked","onCleanup","PiyingWrapper","props","wrapper","createMemo","wrappers","restWrappers","slice","inputs","createSignalConvert","attributes","outputs","_$createComponent","Show","when","type","fallback","children","keyed","WrapperType","_$mergeProps","PiyingFieldTemplate","keyPath","path","field","get","fieldInputs","renderConfig","define","control","form","ComponentType$$","isHidden","hidden","injector","InjectorToken","controlRef","setControlRef","undefined","fieldControlInput","CVA","dispose","createViewControlLink","PI_VIEW_FIELD_TOKEN","Provider","value","ComponentType","disposeRef","Field","resolvedField","cva","cvaa","useControlValueAccessor","resolved","Error","isFieldControl","FormBuilder","CoreSchemaHandle","createConvertToField","createRootInjector","ChangeDetectionScheduler","ChangeDetectionSchedulerImpl","PiyingGroup","For","each","PiyingView","maybeParentField","rootInjector","options","providers","provide","useClass","injectorDispose","initResult","subInjector","createInjector","parent","destroy","convertToField","schema","useEffectSync","ref","initListen","model","valueNoError$$","modelChange","updateValue"],"mappings":";;;;;;AAIO,MAAM,sBAAsBA,QAAAA,cAEjC,MAAS;AACJ,MAAM,gBAAgBA,QAAAA,cAAoC,MAAS;AAEnE,MAAM,MAAM,uBAAO,IAAI,sBAAsB;ACH7C,SAAS,oBAAuB,OAAgB;AACrD,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;AACrBC,uBAAAA,UAAU,MAAM;AACd,cAAI,CAAC,OAAO,GAAG,OAAA,GAAU,YAAY,GAAG;AACtC,sBAAU,MAAM,YAAa;AAAA,UAC/B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,EAAE,SAAA;AAAA,IAAmB;AAEvBC,YAAAA,UAAU,MAAM;AACd,UAAI,QAAA;AAAA,IACN,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;AClBO,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,oBAAoB,OAAO;AAAA,IACxC,GAAGN,QAAAA,GAAWK,OAAAA;AAAAA,IACd,GAAGL,QAAAA,GAAWO,WAAAA;AAAAA,IACd,GAAGP,QAAAA,GAAWQ,UAAAA;AAAAA,EAAU,EACxB;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;ACXO,SAASI,oBAAoBnB,OAAiC;AACnE,QAAMoB,UAAUpB,MAAMqB;AACtB,QAAMC,QAAQpB,QAAAA,WAAW,MAAM;AAC7B,WAAOkB,UAAUpB,MAAMsB,MAAMC,IAAIH,OAAO,IAAKpB,MAAMsB;AAAAA,EACrD,CAAC;AAED,QAAME,cAAcjB,oBAAoB,OAAO;AAAA,IAC7C,GAAGe,MAAAA,EAAQd,WAAAA;AAAAA,IACX,GAAGc,MAAAA,EAAQhB,OAAAA;AAAAA,IACX,GAAGgB,MAAAA,EAAQb,QAAAA;AAAAA,EAAQ,EACnB;AACF,QAAMgB,eAAelB,oBAAoB,MAAMe,MAAAA,EAAQG,cAAc;AACrE,QAAMtB,WAAWI,oBAAoB,MAAMe,MAAAA,EAAQnB,UAAU;AAC7D,QAAMuB,SAASnB,oBAAoB,MAAMe,MAAAA,EAAQI,UAAU;AAC3D,QAAMC,UAAUzB,QAAAA,WAAW,MAAMoB,MAAAA,EAAQM,KAAKD,OAAO;AACrD,QAAME,kBAAkB3B,QAAAA,WAAW,MAAMwB,OAAAA,GAAUb,IAAI;AACvD,QAAMiB,WAAW5B,QAAAA,WAAW,MAAM;AAChC,WAAO,CAAC,CAACuB,aAAAA,EAAeM,UAAU,CAACF,gBAAAA;AAAAA,EACrC,CAAC;AACD,QAAMG,WAAWvC,QAAAA,WAAWwC,aAAa;AAEzC,QAAM,CAACC,YAAYC,aAAa,IAAIzC,QAAAA,aAElC0C,MAAS;AACX,QAAMC,oBAAoBnC,QAAAA,WACxB,OACG;AAAA,IACC,GAAGsB,YAAAA;AAAAA,IACH,CAACc,GAAG,GAAGH;AAAAA,EAAAA,EAEb;AAEAxC,UAAAA,aAAa,MAAM;AACjB,QAAI4C;AACJ,QAAIL,cAAc;AAChBK,gBAAUC,SAAAA,sBAAsBb,SAAgBO,WAAAA,GAAeF,QAAQ;AAAA,IACzE;AACA,WAAO,MAAM;AACXO,gBAAAA;AACAA,gBAAUH;AAAAA,IACZ;AAAA,EACF,CAAC;AAED,SAAA1B,QAAAA,gBAEK+B,oBAAoBC,UAAQ;AAAA,IAAA,IAACC,QAAK;AAAA,aAAErB,MAAAA;AAAAA,IAAO;AAAA,IAAA,IAAAP,WAAA;AAAA,aAAAL,QAAAA,gBACzCC,QAAAA,MAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAE,CAACkB,SAAAA;AAAAA,QAAU;AAAA,QAAA,IAAAf,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,yBAAEiB,gBAAAA;AAAAA,gBAAiB;AAAA,gBAAEb,OAAK;AAAA,gBAAAD,UAChC6B,CAAAA,kBAAalC,QAAAA,gBACZC,cAAI;AAAA,kBAAA,IACHC,OAAI;AAAA,2BAAEU,MAAAA,EAAQM,KAAKD;AAAAA,kBAAO;AAAA,kBAAA,IAC1Bb,WAAQ;AAAA,2BAAAJ,wBAAGkC,eAAa1B,QAAAA,WAAKM,WAAW,CAAA;AAAA,kBAAA;AAAA,kBAAA,IAAAT,WAAA;AAAA,2BAAAL,wBAEvCkC,eAAa1B,QAAAA,WAAKmB,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;ACnFO,SAAS,wBAAwB,cAAwB;AAC9D,QAAM,CAAC,OAAO,QAAQ,IAAI3C,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,iBAAiBiD,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,YAAI,cAAc;AAChB,mBAAA,IAAaA,MAAK;AAAA,QACpB,OAAO;AACL,mBAAA,EAAYA,MAAK;AAAA,QACnB;AACA,iBAASA,MAAK;AAAA,MAChB;AAAA,MACA,eAAe,MAAM;AACnB,YAAI,cAAc;AAChB,sBAAQ;AAAA,QACV,OAAO;AACL,oBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAEJ;ACjCA,IAAIE,aAAwDT;AAErD,SAASU,MAAM9C,OAA8B;AAClD,QAAM;AAAA,IAAEsB;AAAAA,IAAOD;AAAAA,IAAMN;AAAAA,EAAAA,IAAaf;AAGlC,MAAI6C,YAAY;AACdA,eAAW,IAAI;AACfA,iBAAaT;AAAAA,EACf;AAEA,QAAMW,gBAAgB7C,QAAAA,WAAW,MAAM;AACrC,UAAMkB,UAAUC;AAChB,WAAOD,UAAUE,MAAMC,IAAIH,OAAO,IAAKE;AAAAA,EACzC,CAAC;AAED,QAAM;AAAA,IAAE0B;AAAAA,IAAKC;AAAAA,EAAAA,IAASC,wBAAAA;AAEtBvD,UAAAA,aAAa,MAAM;AACjB,UAAMwD,WAAWJ,cAAAA;AACjB,UAAMpB,UAAUwB,UAAUvB,KAAKD;AAC/B,QAAI,CAACA,SAAS;AACZ,YAAM,IAAIyB,MACR,wBAAwB9B,OAAOF,WAAW,EAAE,OAAOC,QAAQ,EAAE,IAC/D;AAAA,IACF;AACA,QAAI,CAACgC,SAAAA,eAAe1B,OAAO,GAAG;AAC5B,YAAM,IAAIyB,MAAM,mBAAmB;AAAA,IACrC;AACAP,iBAAaL,SAAAA,sBAAsB,MAAMb,SAASqB,KAAK1B,MAAMU,QAAQ;AAAA,EACvE,CAAC;AAEDlC,UAAAA,UAAU,MAAM;AACd+C,iBAAa,IAAI;AACjBA,iBAAaT;AAAAA,EACf,CAAC;AAED,SAAOrB,SAAS;AAAA,IAAEkC;AAAAA,IAAM3B,OAAOyB,cAAAA;AAAAA,EAAc,CAAI;AACnD;ACnDO,MAAM,yBAAyBO,SAAAA,YAA+B;AAAC;ACA/D,MAAM,0BAA0BC,SAAAA,iBAGrC;AAEF;ACCA,MAAM,wBAAwB;AAAA,EAC5B,SAAS;AAAA,EACT,QAAQ;AACV;AAKO,MAAM,iBAAiBC,SAAAA;AAAAA,EAC5B;AAAA,EACAC,kCAAmB;AAAA,IACjB,WAAW;AAAA,MACT;AAAA,QACE,SAASC,eAAAA;AAAAA,QACT,UAAUC,eAAAA;AAAAA,MAAA;AAAA,IACZ;AAAA,EACF,CACD;AACH;ACzBO,SAAS,cAAc,IAA+B;AAC3D,MAAI,UAAe;AAEnBzD,UAAAA,WAAW,MAAM;AACf,cAAU,GAAA;AAAA,EACZ,CAAC;AACDP,UAAAA,aAAa,MAAM;AACjBG,YAAAA,UAAU,MAAM;AACd,gBAAA;AACA,gBAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACH;ACTO,SAAS8D,cAAc;AAC5B,QAAMtC,QAAQ7B,QAAAA,WAAWgD,mBAAmB;AAC5C,QAAM1B,WAAWR,oBAAoB,MAAMe,OAAOP,UAAW;AAC7D,SAAAL,QAAAA,gBACGmD,QAAAA,KAAG;AAAA,IAAA,IAACC,OAAI;AAAA,aAAE/C,SAAAA;AAAAA,IAAU;AAAA,IAAAA,UACjBO,CAAAA,WAAU;AACV,aAAAZ,QAAAA,gBAAQS,qBAAmB;AAAA,QAACG,OAAOA;AAAAA,MAAAA,CAAK;AAAA,IAC1C;AAAA,EAAA,CAAC;AAGP;ACUO,SAASyC,WAAW/D,OAAwB;AACjD,QAAMgE,mBAAmBvE,QAAAA,WAAWgD,mBAAmB;AAEvD,QAAMwB,eAAe/D,QAAAA,WAAW,MAAM;AACpC,WACEF,MAAMkE,QAAQlC,YACdgC,kBAAkBhC,YAClByB,eAAAA,mBAAmB;AAAA,MACjBU,WAAW,CACT;AAAA,QACEC,SAASV,eAAAA;AAAAA,QACTW,UAAUV,eAAAA;AAAAA,MAAAA,CACX;AAAA,IAAA,CAEJ;AAAA,EAEL,CAAC;AAED,MAAIW;AAEJ,QAAMC,aAAarE,QAAAA,WAAW,MAAM;AAClCoE,sBAAAA;AACA,UAAME,cAAcC,eAAAA,eAAe;AAAA,MACjCN,WAAW,CAAA;AAAA,MACXO,QAAQT,aAAAA;AAAAA,IAAa,CACtB;AACDK,sBAAkBA,MAAM;AACtBE,kBAAYG,QAAAA;AACZL,wBAAkBlC;AAAAA,IACpB;AACA,UAAMd,SAAQsD,eACZ,MAAM5E,MAAM6E,QACZL,aACA,MAAMxE,MAAMkE,OACd;AACA,WAAO,CAAC5C,QAAOkD,WAAW;AAAA,EAC5B,CAAC;AAED1E,UAAAA,UAAU,MAAM;AACdwE,sBAAAA;AAAAA,EACF,CAAC;AAED,QAAMhD,QAAQpB,QAAAA,WAAW,MAAM;AAC7B,WAAOqE,WAAAA,EAAa,CAAC;AAAA,EACvB,CAAC;AACDO,gBAAc,MAAM;AAClB,QAAIC;AACJ,UAAM,CAACzD,QAAOkD,WAAW,IAAID,WAAAA;AAC7B,QAAIjD,OAAMM,KAAKD,SAAS;AACtBoD,YAAMC,SAAAA,WACJhF,MAAMiF,OACN3D,OAAOM,KAAKD,SACZ6C,aACC7B,CAAAA,UAAU;AACT9C,uBAAAA,UAAU,MAAM;AACd,cAAIyB,OAAOM,KAAKD,SAASuD,eAAAA,GAAkB;AACzClF,kBAAMmF,cAAcxC,KAAK;AAAA,UAC3B;AAAA,QACF,CAAC;AAAA,MACH,CACF;AACArB,aAAMM,KAAKD,QAAQyD,YAAYpF,MAAMiF,KAAK;AAAA,IAC5C;AACA,WAAO,MAAM;AACXF,WAAKJ,QAAAA;AAAAA,IACP;AAAA,EACF,CAAC;AAED,SAAAjE,QAAAA,gBAEKuB,cAAcS,UAAQ;AAAA,IAAA,IAACC,QAAK;AAAA,aAAEsB,aAAAA;AAAAA,IAAc;AAAA,IAAA,IAAAlD,WAAA;AAAA,aAAAL,QAAAA,gBAC1CS,qBAAmB;AAAA,QAAA,IAACG,QAAK;AAAA,iBAAEA,MAAAA;AAAAA,QAAO;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAI3C;ACjGO,SAAS,kBACd,MACA,iBACA;AACA,QAAM,CAAC,WAAW,YAAY,IAAI5B,QAAAA,aAAa,KAAK;AACpD,SAAOQ,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;;;;;;;;;;;;;;;;;;;;;"}