import type { Component, Slots } from 'vue' import type { ComponentInfo } from '@json-layout/vocabulary' import { StatefulLayout, StatefulLayoutOptions, StateNode, CheckboxNode, ColorPickerNode, DatePickerNode, DateTimePickerNode, TabsNode, ExpansionPanelsNode, ListNode, NumberFieldNode, OneOfSelectNode, SectionNode, SelectNode, RadioGroupNode, CheckboxGroupNode, SwitchGroupNode, SliderNode, SwitchNode, TextFieldNode, TextareaNode, VerticalTabsNode, StepperNode, ComboboxNode, FileInputNode, CardNode, CompileOptions } from '@json-layout/core' export type Density = 'default' | 'comfortable' | 'compact' export type Plugin = { info: ComponentInfo, nodeComponent: Component } export type VjsfIcons = { add: string alert: string calendar: string clock: string close: string delete: string duplicate: string insertAfter: string copy: string paste: string edit: string infoSymbol: string menu: string sort: string sortUp: string sortDown: string } // these options used to contain many possibilities to override props in various components // this was unmaintainable and has been removed, customization of components should be done via slots // and defaults providers export type VjsfStatefulLayoutOptions = Partial & { vjsfSlots: Slots, nodeComponents: Record, plugins: Plugin[], pluginsOptions: Record, icons: VjsfIcons confirmDeleteItem: boolean } export type VjsfCompileOptions = Partial & { pluginsImports: string[] } export type PartialVjsfCompileOptions = Partial export type VjsfOptions = PartialVjsfCompileOptions & VjsfStatefulLayoutOptions export type PartialVjsfOptions = PartialVjsfCompileOptions & Partial> export type FullVjsfNodeOptions = Required export type VjsfStatefulLayout = Omit & {options: VjsfStatefulLayoutOptions, _renderCounts?: Map} export type VjsfNode = Omit & {options: FullVjsfNodeOptions} export type VjsfTabsNode = Omit & {options: FullVjsfNodeOptions} export type VjsfCheckboxNode = Omit & {options: FullVjsfNodeOptions} export type VjsfColorPickerNode = Omit & {options: FullVjsfNodeOptions} export type VjsfDatePickerNode = Omit & {options: FullVjsfNodeOptions} export type VjsfDateTimePickerNode = Omit & {options: FullVjsfNodeOptions} export type VjsfExpansionPanelsNode = Omit & {options: FullVjsfNodeOptions} export type VjsfListNode = Omit & {options: FullVjsfNodeOptions} export type VjsfNumberFieldNode = Omit & {options: FullVjsfNodeOptions} export type VjsfOneOfSelectNode = Omit & {options: FullVjsfNodeOptions} export type VjsfSectionNode = Omit & {options: FullVjsfNodeOptions} export type VjsfSelectNode = Omit & {options: FullVjsfNodeOptions} export type VjsfRadioGroupNode = Omit & {options: FullVjsfNodeOptions} export type VjsfCheckboxGroupNode = Omit & {options: FullVjsfNodeOptions} export type VjsfSwitchGroupNode = Omit & {options: FullVjsfNodeOptions} export type VjsfSliderNode = Omit & {options: FullVjsfNodeOptions} export type VjsfSwitchNode = Omit & {options: FullVjsfNodeOptions} export type VjsfTextFieldNode = Omit & {options: FullVjsfNodeOptions} export type VjsfTextareaNode = Omit & {options: FullVjsfNodeOptions} export type VjsfVerticalTabsNode = Omit & {options: FullVjsfNodeOptions} export type VjsfStepperNode = Omit & {options: FullVjsfNodeOptions} export type VjsfComboboxNode = Omit & {options: FullVjsfNodeOptions} export type VjsfFileInputNode = Omit & {options: FullVjsfNodeOptions} export type VjsfCardNode = Omit & {options: FullVjsfNodeOptions}