@sectile/vue 0.18.3 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -14
- package/dist/accordion.js +1 -1
- package/dist/accordion.js.map +1 -1
- package/dist/carousel.d.ts +20 -0
- package/dist/carousel.js +1 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.js.map +1 -1
- package/dist/checkbox-tree.d.ts +102 -0
- package/dist/checkbox-tree.js +2 -0
- package/dist/checkbox-tree.js.map +1 -0
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/color-picker.d.ts +24 -0
- package/dist/color-picker.js +1 -1
- package/dist/color-picker.js.map +1 -1
- package/dist/combobox.d.ts +47 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/component-handle.d.ts +8 -0
- package/dist/component-handle.js +2 -0
- package/dist/component-handle.js.map +1 -0
- package/dist/context-menu.d.ts +1 -0
- package/dist/context-menu.js +2 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/drag-drop.d.ts +23 -0
- package/dist/drag-drop.js +2 -0
- package/dist/drag-drop.js.map +1 -0
- package/dist/editable.d.ts +3 -0
- package/dist/editable.js +1 -1
- package/dist/editable.js.map +1 -1
- package/dist/form/context.d.ts +3 -0
- package/dist/form/context.js +1 -1
- package/dist/form/context.js.map +1 -1
- package/dist/form/contracts.d.ts +1 -0
- package/dist/form/control-inventory.d.ts +20 -0
- package/dist/form/control-inventory.js +1 -1
- package/dist/form/control-inventory.js.map +1 -1
- package/dist/form/control.d.ts +44 -1
- package/dist/form/control.js +1 -1
- package/dist/form/control.js.map +1 -1
- package/dist/form/field.d.ts +10 -0
- package/dist/form/field.js +1 -1
- package/dist/form/field.js.map +1 -1
- package/dist/form/file-input.d.ts +229 -0
- package/dist/form/file-input.js +2 -0
- package/dist/form/file-input.js.map +1 -0
- package/dist/form/file-upload/group.d.ts +28 -0
- package/dist/form/file-upload/group.js +2 -0
- package/dist/form/file-upload/group.js.map +1 -0
- package/dist/form/file-upload.d.ts +26 -0
- package/dist/form/file-upload.js +2 -0
- package/dist/form/file-upload.js.map +1 -0
- package/dist/form/root.js +1 -1
- package/dist/form/root.js.map +1 -1
- package/dist/form-boundary.d.ts +2 -0
- package/dist/form-boundary.js +2 -0
- package/dist/form-boundary.js.map +1 -0
- package/dist/fullscreen.d.ts +16 -0
- package/dist/fullscreen.js +2 -0
- package/dist/fullscreen.js.map +1 -0
- package/dist/host-provider.d.ts +99 -1
- package/dist/host-provider.js +1 -1
- package/dist/host-provider.js.map +1 -1
- package/dist/image.d.ts +24 -0
- package/dist/image.js +2 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input/native-field.d.ts +33 -6
- package/dist/input/native-field.js +1 -1
- package/dist/input/native-field.js.map +1 -1
- package/dist/input/native-range-field.d.ts +16 -7
- package/dist/input/native-range-field.js +1 -1
- package/dist/input/native-range-field.js.map +1 -1
- package/dist/internal/cascade-choice.js +1 -1
- package/dist/internal/cascade-choice.js.map +1 -1
- package/dist/internal/connection-lifetime.d.ts +10 -0
- package/dist/internal/connection-lifetime.js +2 -0
- package/dist/internal/connection-lifetime.js.map +1 -0
- package/dist/internal/popup-presentation.d.ts +32 -0
- package/dist/internal/popup-presentation.js +2 -0
- package/dist/internal/popup-presentation.js.map +1 -0
- package/dist/internal/portal-move.d.ts +11 -0
- package/dist/internal/portal-move.js +2 -0
- package/dist/internal/portal-move.js.map +1 -0
- package/dist/internal/scheduled-task.js +1 -1
- package/dist/internal/scheduled-task.js.map +1 -1
- package/dist/internal/tabs-context.d.ts +11 -0
- package/dist/internal/tabs-context.js +1 -1
- package/dist/internal/tabs-context.js.map +1 -1
- package/dist/internal/tree-parts.d.ts +142 -0
- package/dist/internal/tree-parts.js +2 -0
- package/dist/internal/tree-parts.js.map +1 -0
- package/dist/listbox.d.ts +11 -0
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/media-gesture.d.ts +20 -0
- package/dist/media-gesture.js +2 -0
- package/dist/media-gesture.js.map +1 -0
- package/dist/menu.d.ts +239 -0
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/meter-group.js +1 -1
- package/dist/meter-group.js.map +1 -1
- package/dist/multi-thumb-slider.js +1 -1
- package/dist/multi-thumb-slider.js.map +1 -1
- package/dist/number-field.d.ts +18 -1
- package/dist/number-field.js +1 -1
- package/dist/number-field.js.map +1 -1
- package/dist/overlay/dialog.d.ts +1 -0
- package/dist/overlay/dialog.js.map +1 -1
- package/dist/overlay/drawer.d.ts +33 -4
- package/dist/overlay/drawer.js +1 -1
- package/dist/overlay/drawer.js.map +1 -1
- package/dist/overlay/popover.d.ts +2 -1
- package/dist/overlay/popover.js.map +1 -1
- package/dist/overlay/popup.d.ts +50 -2
- package/dist/overlay/popup.js +1 -1
- package/dist/overlay/popup.js.map +1 -1
- package/dist/overlay/tooltip.d.ts +38 -3
- package/dist/overlay/tooltip.js +1 -1
- package/dist/overlay/tooltip.js.map +1 -1
- package/dist/pagination.js +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pin-input.js +1 -1
- package/dist/pin-input.js.map +1 -1
- package/dist/presence/presence.d.ts +1 -1
- package/dist/presence/presence.js +1 -1
- package/dist/presence/presence.js.map +1 -1
- package/dist/primitive.d.ts +37 -3
- package/dist/primitive.js +1 -1
- package/dist/primitive.js.map +1 -1
- package/dist/quantity-field.js +1 -1
- package/dist/quantity-field.js.map +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/rating.js +1 -1
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +169 -77
- package/dist/reorder.js +1 -1
- package/dist/reorder.js.map +1 -1
- package/dist/select.d.ts +21 -0
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/slider.js +1 -1
- package/dist/slider.js.map +1 -1
- package/dist/spin-button.d.ts +19 -0
- package/dist/spin-button.js +1 -1
- package/dist/spin-button.js.map +1 -1
- package/dist/stepper.js +1 -1
- package/dist/stepper.js.map +1 -1
- package/dist/switch.js +1 -1
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +2 -0
- package/dist/tabs.js +1 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tabular/components.d.ts +5 -0
- package/dist/tabular/components.js.map +1 -1
- package/dist/tabular/controller.d.ts +1 -0
- package/dist/tabular/controller.js +1 -1
- package/dist/tabular/controller.js.map +1 -1
- package/dist/tabular/data-grid.d.ts +4 -4
- package/dist/tabular/data-grid.js +1 -1
- package/dist/tabular/data-grid.js.map +1 -1
- package/dist/tabular/data-table.d.ts +4 -4
- package/dist/tabular/data-table.js +1 -1
- package/dist/tabular/data-table.js.map +1 -1
- package/dist/tabular/data-tree-grid.d.ts +4 -4
- package/dist/tabular/data-tree-grid.js +1 -1
- package/dist/tabular/data-tree-grid.js.map +1 -1
- package/dist/tabular/parts.d.ts +11 -1
- package/dist/tabular/parts.js +1 -1
- package/dist/tabular/parts.js.map +1 -1
- package/dist/tags-input.d.ts +12 -1
- package/dist/tags-input.js +1 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/temporal/calendar.d.ts +15 -111
- package/dist/temporal/calendar.js +1 -1
- package/dist/temporal/calendar.js.map +1 -1
- package/dist/temporal/capabilities/date-picker.js +1 -1
- package/dist/temporal/capabilities/date-picker.js.map +1 -1
- package/dist/temporal/capabilities/date-time-picker.js +1 -1
- package/dist/temporal/capabilities/date-time-picker.js.map +1 -1
- package/dist/temporal/capabilities/date-time-range-picker.js +1 -1
- package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -1
- package/dist/temporal/capability.d.ts +13 -1
- package/dist/temporal/capability.js.map +1 -1
- package/dist/temporal/date-field.d.ts +1 -1
- package/dist/temporal/date-field.js +1 -1
- package/dist/temporal/date-field.js.map +1 -1
- package/dist/temporal/date-picker.d.ts +3 -1
- package/dist/temporal/date-picker.js.map +1 -1
- package/dist/temporal/date-range-field.d.ts +20 -0
- package/dist/temporal/date-range-field.js +1 -1
- package/dist/temporal/date-range-field.js.map +1 -1
- package/dist/temporal/date-range-picker.d.ts +3 -1
- package/dist/temporal/date-range-picker.js.map +1 -1
- package/dist/temporal/date-time-field.d.ts +4 -1
- package/dist/temporal/date-time-field.js +1 -1
- package/dist/temporal/date-time-field.js.map +1 -1
- package/dist/temporal/date-time-picker.d.ts +3 -1
- package/dist/temporal/date-time-picker.js +1 -1
- package/dist/temporal/date-time-picker.js.map +1 -1
- package/dist/temporal/date-time-range-field.d.ts +158 -0
- package/dist/temporal/date-time-range-field.js +2 -0
- package/dist/temporal/date-time-range-field.js.map +1 -0
- package/dist/temporal/date-time-range-picker.d.ts +3 -1
- package/dist/temporal/date-time-range-picker.js +1 -1
- package/dist/temporal/date-time-range-picker.js.map +1 -1
- package/dist/temporal/internal/time-presentation.d.ts +15 -0
- package/dist/temporal/internal/time-presentation.js +2 -0
- package/dist/temporal/internal/time-presentation.js.map +1 -0
- package/dist/temporal/month-picker.d.ts +3 -1
- package/dist/temporal/month-picker.js.map +1 -1
- package/dist/temporal/month-range-picker.d.ts +3 -1
- package/dist/temporal/month-range-picker.js.map +1 -1
- package/dist/temporal/picker.d.ts +23 -1
- package/dist/temporal/picker.js +1 -1
- package/dist/temporal/picker.js.map +1 -1
- package/dist/temporal/range-calendar.d.ts +119 -2
- package/dist/temporal/range-calendar.js +1 -1
- package/dist/temporal/range-calendar.js.map +1 -1
- package/dist/temporal/temporal-provider.d.ts +23 -0
- package/dist/temporal/temporal-provider.js +1 -1
- package/dist/temporal/temporal-provider.js.map +1 -1
- package/dist/temporal/time-field.d.ts +4 -1
- package/dist/temporal/time-field.js +1 -1
- package/dist/temporal/time-field.js.map +1 -1
- package/dist/temporal/time-picker.d.ts +112 -0
- package/dist/temporal/time-picker.js +2 -0
- package/dist/temporal/time-picker.js.map +1 -0
- package/dist/temporal/time-range-field.d.ts +32 -1
- package/dist/temporal/time-range-field.js +1 -1
- package/dist/temporal/time-range-field.js.map +1 -1
- package/dist/temporal/year-picker.d.ts +3 -1
- package/dist/temporal/year-picker.js.map +1 -1
- package/dist/temporal/year-range-picker.d.ts +3 -1
- package/dist/temporal/year-range-picker.js.map +1 -1
- package/dist/text.d.ts +43 -1
- package/dist/text.js +1 -1
- package/dist/text.js.map +1 -1
- package/dist/timer.d.ts +16 -5
- package/dist/timer.js +1 -1
- package/dist/timer.js.map +1 -1
- package/dist/toast.js +1 -1
- package/dist/toast.js.map +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/toggle-group.js.map +1 -1
- package/dist/toolbar.js +1 -1
- package/dist/toolbar.js.map +1 -1
- package/dist/transfer.d.ts +191 -0
- package/dist/transfer.js +2 -0
- package/dist/transfer.js.map +1 -0
- package/dist/tree-grid.d.ts +122 -0
- package/dist/tree-grid.js +1 -1
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-select.d.ts +186 -0
- package/dist/tree-select.js +2 -0
- package/dist/tree-select.js.map +1 -0
- package/dist/tree-view.js +1 -1
- package/dist/tree-view.js.map +1 -1
- package/dist/virtual/virtual-collection.d.ts +2 -0
- package/dist/virtual/virtual-collection.js.map +1 -1
- package/dist/virtual/virtual-grid.d.ts +12 -2
- package/dist/virtual/virtual-grid.js +1 -1
- package/dist/virtual/virtual-grid.js.map +1 -1
- package/dist/virtual/virtual-list.d.ts +12 -3
- package/dist/virtual/virtual-list.js +1 -1
- package/dist/virtual/virtual-list.js.map +1 -1
- package/dist/virtual/virtual-masonry.d.ts +12 -2
- package/dist/virtual/virtual-masonry.js +1 -1
- package/dist/virtual/virtual-masonry.js.map +1 -1
- package/dist/virtual/virtual-spatial.d.ts +12 -2
- package/dist/virtual/virtual-spatial.js +1 -1
- package/dist/virtual/virtual-spatial.js.map +1 -1
- package/dist/window-splitter.js +1 -1
- package/dist/window-splitter.js.map +1 -1
- package/package.json +88 -17
package/dist/chart.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createChartController}from'@sectile/chart/controller';import{createDOMChart}from'@sectile/dom/chart';import{useControlledStateInvariant}from'./internal/controlled-state.js';import{defineComponent,getCurrentScope,h,inject,nextTick,onBeforeUnmount,onMounted,onScopeDispose,provide,shallowRef,toValue,watch}from'vue';export function useChart(options){if(options===null||typeof options!=='object')throw new TypeError('useChart options must be an object.');if(options.model===undefined===(options.definition===undefined)){throw new TypeError('useChart requires exactly one model or declarative definition.')}assertControlledDefaults(options);const controlled=controlledValues(options);const source=options.definition===undefined?{model:toValue(options.model)}:{definition:toValue(options.definition),viewCapabilities:toValue(options.viewCapabilities??(()=>Object.freeze([])))};const controller=createChartController({...source,...options.limits===undefined?{}:{limits:options.limits},...defaultValues(options),...Object.keys(controlled).length===0?{}:{controlled}});const binding=bindController(controller,options,true);const stops=[];if(options.model!==undefined){stops.push(watch(()=>toValue(options.model),model=>{binding.replaceModel(model)},{deep:false}))}else{stops.push(watch(()=>[toValue(options.definition),toValue(options.viewCapabilities??(()=>Object.freeze([])))],([definition,capabilities])=>{binding.replaceDefinition(definition,capabilities)},{deep:false}))}for(const sourceRef of[options.activeDatum,options.cursor,options.selection,options.view]){if(sourceRef!==undefined)stops.push(watch(()=>sourceRef.value,()=>{binding.syncControlledValues()},{deep:false}))}const disposeBinding=binding.dispose;const result=Object.freeze({...binding,dispose(){for(const stop of stops.splice(0))stop();disposeBinding()}});if(getCurrentScope()!==undefined)onScopeDispose(result.dispose);return result}class ChartDeclarations{#records=new Map;#publish;#token=0;#scheduled=false;#active=true;#publications=0;#readRecords=0;constructor(publish){this.#publish=publish}register(kind,read){const token=++this.#token;this.#records.set(token,{token,kind,read});this.schedule();let active=true;return Object.freeze({touch:()=>{if(active)this.schedule()},dispose:()=>{if(!active)return;active=false;this.#records.delete(token);this.schedule()}})}publishNow(){if(!this.#active)return;this.#scheduled=false;this.#publish(this.assemble());this.#publications+=1}getDiagnostics(){return Object.freeze({registeredRecords:this.#records.size,publications:this.#publications,readRecords:this.#readRecords})}schedule(){if(!this.#active||this.#scheduled)return;this.#scheduled=true;void nextTick(()=>{if(this.#scheduled)this.publishNow()})}assemble(){const records=[...this.#records.values()].sort((left,right)=>left.token-right.token);this.#readRecords=records.length;const coordinates=records.filter(record=>record.kind==='coordinate');if(coordinates.length!==1)throw new TypeError('ChartRoot requires exactly one ChartCartesian or ChartRadial coordinate.');const coordinate=coordinates[0]?.read();const axes=records.filter(record=>record.kind==='axis').map(record=>record.read());const layers=records.filter(record=>record.kind==='layer').map(record=>record.read());const capabilities=records.filter(record=>record.kind==='view').map(record=>record.read());const navigationRecords=records.filter(record=>record.kind==='navigation');if(navigationRecords.length>1)throw new TypeError('ChartRoot accepts at most one ChartNavigation declaration.');const controls=records.filter(record=>record.kind==='controls').map(record=>record.read());const navigation=navigationRecords[0]?.read();const alternative=controls.includes('built-in')?'built-in':controls.includes('external')?'external':undefined;if(navigation!==undefined&&((navigation.drag??'none')!=='none'||navigation.pinch===true)&&alternative===undefined){throw new TypeError('Chart direct gestures require ChartViewControls or ChartExternalViewControls.')}return Object.freeze({definition:Object.freeze({coordinate:coordinate.kind==='cartesian'?Object.freeze({kind:'cartesian',axes:Object.freeze(axes)}):Object.freeze({kind:'radial'}),layers:Object.freeze(layers)}),viewCapabilities:Object.freeze(capabilities),navigation:Object.freeze({...navigation??{},...alternative===undefined?{}:{controlAlternative:alternative}})})}dispose(){if(!this.#active)return;this.#active=false;this.#scheduled=false;this.#records.clear()}}const chartKey=Symbol('SectileChart');const chartPublicKey=Symbol('SectileChartPublic');const chartOwnerKey=Symbol('SectileChartOwner');const chartAxisKey=Symbol('SectileChartAxis');const chartControlAxisKey=Symbol('SectileChartControlAxis');function useInternalChart(){const context=inject(chartKey);if(context===undefined)throw new TypeError('Chart component must be used inside ChartRoot.');return context}export function useChartContext(){const context=inject(chartPublicKey);if(context===undefined)throw new TypeError('useChartContext must be used inside ChartRoot or ChartProvider.');return context}const ChartProviderRuntime=/* @__PURE__ */defineComponent({name:'SectileChartProvider',props:{controller:{type:Object,required:true}},setup(props,{slots}){const controller=shallowRef(props.controller);const snapshot=shallowRef(controller.value.getSnapshot());const unsubscribe=controller.value.subscribeSnapshots(next=>{snapshot.value=next});const owner=Object.freeze({controller});const context=Object.freeze({controller,snapshot,dispatch(event){const result=controller.value.dispatch(event);return result.ok?Object.freeze({ok:true,value:result.value.snapshot}):result},applyPatch(patch){return controller.value.applyPatch(patch)}});provide(chartOwnerKey,owner);provide(chartPublicKey,context);onScopeDispose(unsubscribe);return()=>slots['default']?.({controller:controller.value,snapshot:snapshot.value,state:snapshot.value.state,definition:controller.value.getDefinition()})??null}});export const ChartProvider=ChartProviderRuntime;export function useChartSelector(selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>selector(context.snapshot.value?.state??null),options.equals)}export function useChartLayerSelector(id,selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>{const layers=context.controller.value?.getDefinition()?.layers;return selector(layers?.find(layer=>layer.id===id)??null)},options.equals)}export function useChartAxisSelector(id,selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>{const axes=context.controller.value?.getDefinition()?.axes;return selector(axes?.find(axis=>axis.id===id)??null)},options.equals)}function useChartContextSelector(context,read,equals=Object.is){const selected=shallowRef(read());const stop=watch([context.controller,context.snapshot],()=>{const next=read();if(!equals(selected.value,next))selected.value=next},{deep:false,flush:'sync'});onScopeDispose(stop);return selected}const ChartRootRuntime=/* @__PURE__ */defineComponent({name:'SectileChartRoot',inheritAttrs:false,props:{limits:{type:Object,default:undefined},modelValue:{type:Object,default:undefined},defaultModelValue:{type:Object,default:undefined},activeDatum:{type:[String,Number],default:undefined},defaultActiveDatum:{type:[String,Number],default:undefined},cursor:{type:[String,Number],default:undefined},defaultCursor:{type:[String,Number],default:undefined},view:{type:Object,default:undefined},defaultView:{type:Object,default:undefined},patch:{type:Object,default:undefined},dom:{type:Object,default:undefined},onError:{type:Function,default:undefined}},emits:{'update:modelValue':_value=>true,'update:activeDatum':_value=>true,'update:cursor':_value=>true,'update:view':_value=>true,command:_command=>true},setup(props,{attrs,emit,expose,slots}){assertRootControlledDefaults(props);const ownerContext=inject(chartOwnerKey,undefined);const ownsController=ownerContext===undefined;const root=shallowRef(null);const canvas=shallowRef(null);const controller=shallowRef(ownerContext?.controller.value??null);const snapshot=shallowRef(controller.value?.getSnapshot()??null);const projection=shallowRef(null);const connection=shallowRef(null);let assembled=null;let unsubscribeCommands=null;let unsubscribeSnapshots=null;let previousState=snapshot.value?.state??null;let mounted=false;let definitionAccepted=false;const controlled=Object.freeze({activeDatum:useControlledStateInvariant('ChartRoot','activeDatum',()=>props.activeDatum),cursor:useControlledStateInvariant('ChartRoot','cursor',()=>props.cursor),selection:useControlledStateInvariant('ChartRoot','modelValue',()=>props.modelValue),view:useControlledStateInvariant('ChartRoot','view',()=>props.view)});const report=error=>{if(props.onError!==undefined)props.onError(error);else throw error};const publishSnapshot=()=>{const owner=controller.value;if(owner===null)return;const current=owner.getSnapshot();if(snapshot.value===current)return;const prior=previousState;snapshot.value=current;previousState=current.state;if(prior===null)return;let failure;if(!controlled.activeDatum&&prior.activeDatum!==current.state.activeDatum){try{emit('update:activeDatum',current.state.activeDatum)}catch(error){failure??=[error]}}if(!controlled.cursor&&prior.cursor!==current.state.cursor){try{emit('update:cursor',current.state.cursor)}catch(error){failure??=[error]}}if(!controlled.selection&&prior.selection!==current.state.selection){try{emit('update:modelValue',current.state.selection)}catch(error){failure??=[error]}}if(!controlled.view&&prior.view!==current.state.view){try{emit('update:view',current.state.view)}catch(error){failure??=[error]}}if(failure!==undefined)throw failure[0]};const publishRootCommand=command=>{emit('command',command)};const publishRootProposal=command=>{if(command.type==='active-change-requested')emit('update:activeDatum',command.id);else if(command.type==='cursor-change-requested')emit('update:cursor',command.id);else if(command.type==='selection-change-requested')emit('update:modelValue',command.selection);else if(command.type==='view-change-requested')emit('update:view',command.view)};const onCommand=command=>{publishVueChartCommand(command,publishSnapshot,publishRootCommand,publishRootProposal)};const connect=()=>{const owner=controller.value;if(!mounted||owner===null||root.value===null||canvas.value===null||connection.value!==null)return;const dom=props.dom??{};try{connection.value=createDOMChart({...dom,root:root.value,canvas:canvas.value,controller:owner,...assembled===null?{}:{navigation:assembled.navigation},onCommand:command=>{dom.onCommand?.(command)},onProjectionChange:next=>{projection.value=next;dom.onProjectionChange?.(next)},onProjectionError:projectionError=>{let failure;try{dom.onProjectionError?.(projectionError)}catch(error){failure??=[error]}try{report(projectionError)}catch(error){failure??=[error]}if(failure!==undefined)throw failure[0]}});projection.value=connection.value.getProjection()}catch(error){report(error)}};const publishDefinition=next=>{assembled=next;definitionAccepted=false;const owner=controller.value;if(!mounted||owner===null)return;const replaced=owner.replaceDefinition(next.definition,next.viewCapabilities);if(!replaced.ok){report(new TypeError(`${replaced.error.code}: ${replaced.error.message}`));return}definitionAccepted=true;publishSnapshot();const navigation=connection.value?.setNavigation(next.navigation);if(navigation!==undefined&&!navigation.ok)report(new TypeError(`${navigation.error.code}: ${navigation.error.message}`));connection.value?.refresh()};const declarations=new ChartDeclarations(next=>{try{publishDefinition(next)}catch(error){report(error)}});const context=Object.freeze({declarations,controller,canvas,dispatch(event){const result=controller.value?.dispatch(event);if(result!==undefined&&!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`));publishSnapshot()}});provide(chartKey,context);const publicContext=Object.freeze({controller,snapshot,dispatch(event){const result=controller.value?.dispatch(event);if(result===undefined)return Object.freeze({ok:true,value:null});publishSnapshot();return result.ok?Object.freeze({ok:true,value:result.value.snapshot}):result},applyPatch(patch){const result=controller.value?.applyPatch(patch);if(result===undefined)return Object.freeze({ok:true,value:null});publishSnapshot();return result}});provide(chartPublicKey,publicContext);const syncControlled=()=>{const owner=controller.value;if(owner===null)return;const result=owner.syncControlledValues(Object.freeze({...controlled.activeDatum?{activeDatum:props.activeDatum??null}:{},...controlled.cursor?{cursor:props.cursor??null}:{},...controlled.selection?{selection:props.modelValue}:{},...controlled.view?{view:props.view??null}:{}}));if(!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`));publishSnapshot()};watch(()=>[props.activeDatum,props.cursor,props.modelValue,props.view],syncControlled,{deep:false});watch(()=>props.patch,patch=>{if(patch===null||patch===undefined||controller.value===null)return;const result=controller.value.applyPatch(patch);if(!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`));publishSnapshot()},{deep:false});watch(()=>props.dom?.accessibilityLabel,label=>{connection.value?.setAccessibilityLabel(label)},{flush:'post'});onMounted(()=>{mounted=true;try{declarations.publishNow();const next=assembled;const controlledValues=Object.freeze({...controlled.activeDatum?{activeDatum:props.activeDatum??null}:{},...controlled.cursor?{cursor:props.cursor??null}:{},...controlled.selection?{selection:props.modelValue}:{},...controlled.view?{view:props.view??null}:{}});const initialValues=Object.freeze({...!controlled.activeDatum&&props.defaultActiveDatum!==undefined?{activeDatum:props.defaultActiveDatum}:{},...!controlled.cursor&&props.defaultCursor!==undefined?{cursor:props.defaultCursor}:{},...!controlled.selection&&props.defaultModelValue!==undefined?{selection:props.defaultModelValue}:{},...!controlled.view&&props.defaultView!==undefined?{view:props.defaultView}:{}});if(ownerContext===undefined){controller.value=createChartController({definition:next.definition,viewCapabilities:next.viewCapabilities,...props.limits===undefined?{}:{limits:props.limits},...Object.keys(controlledValues).length===0?{}:{controlled:controlledValues},...Object.keys(initialValues).length===0?{}:{initialValues}})}else{const borrowed=ownerContext.controller.value;if(!definitionAccepted)return;controller.value=borrowed;if(Object.keys(controlledValues).length!==0){const synced=borrowed.syncControlledValues(controlledValues);if(!synced.ok)throw new TypeError(`${synced.error.code}: ${synced.error.message}`)}}snapshot.value=controller.value.getSnapshot();previousState=snapshot.value.state;unsubscribeCommands=controller.value.subscribeCommands(onCommand);unsubscribeSnapshots=controller.value.subscribeSnapshots(()=>{publishSnapshot()});void nextTick(connect)}catch(error){report(error)}});onBeforeUnmount(()=>{mounted=false;declarations.dispose();connection.value?.disconnect();connection.value=null;unsubscribeCommands?.();unsubscribeCommands=null;unsubscribeSnapshots?.();unsubscribeSnapshots=null;if(ownsController)controller.value?.dispose();controller.value=null});expose({controller,getDeclarationDiagnostics:()=>declarations.getDiagnostics(),refresh:()=>connection.value?.refresh()});return()=>h('div',{...attrs,ref:element=>{root.value=element},'data-scope':'chart','data-part':'root'},slots['default']?.({controller:controller.value,snapshot:snapshot.value,state:snapshot.value?.state??null,projection:projection.value,definition:controller.value?.getDefinition()??null}))}});export const ChartRoot=ChartRootRuntime;const coordinateProps={};export const ChartCartesian=defineComponent({name:'SectileChartCartesian',props:coordinateProps,setup(_props,{slots}){const context=useInternalChart();const record=context.declarations.register('coordinate',()=>Object.freeze({kind:'cartesian'}));onBeforeUnmount(record.dispose);return()=>slots['default']?.()??null}});export const ChartRadial=defineComponent({name:'SectileChartRadial',props:coordinateProps,setup(_props,{slots}){const context=useInternalChart();const record=context.declarations.register('coordinate',()=>Object.freeze({kind:'radial'}));onBeforeUnmount(record.dispose);return()=>slots['default']?.()??null}});const axisProps={id:{type:[String,Number],required:true},scale:{type:String,default:'linear'},domain:{type:[String,Object],default:'auto'},field:{type:String,default:undefined},getValue:{type:Function,default:undefined},ticks:{type:Number,default:undefined},label:{type:String,default:undefined},unit:{type:String,default:undefined}};function axisComponent(orientation){return defineComponent({name:orientation==='x'?'SectileChartXAxis':'SectileChartYAxis',props:axisProps,setup(props,{slots}){const context=useInternalChart();const axis=shallowRef(props.id);provide(chartAxisKey,axis);const value=shallowRef(axisDefinition(props,orientation));const record=context.declarations.register('axis',()=>value.value);watch(()=>[props.id,props.scale,props.domain,props.field,props.getValue,props.ticks,props.label,props.unit],()=>{axis.value=props.id;value.value=axisDefinition(props,orientation);record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>slots['default']?.()??null}})}export const ChartXAxis=axisComponent('x');export const ChartYAxis=axisComponent('y');function axisDefinition(props,orientation){return defined({id:props['id'],orientation,scale:props['scale'],domain:props['domain'],field:props['field'],getValue:props['getValue'],ticks:props['ticks'],label:props['label'],unit:props['unit']})}const layerBaseProps={id:{type:[String,Number],required:true},data:{type:Array,required:true},getId:{type:Function,default:undefined},label:{type:String,default:undefined}};const cartesianLayerProps={...layerBaseProps,xAxis:{type:[String,Number],required:true},yAxis:{type:[String,Number],required:true},getX:{type:Function,default:undefined},getY:{type:Function,default:undefined}};function layerComponent(kind,extraProps={}){return defineComponent({name:`SectileChart${kind[0]?.toUpperCase()}${kind.slice(1)}`,props:{...kind==='pie'||kind==='donut'?layerBaseProps:cartesianLayerProps,...extraProps},setup(props){const context=useInternalChart();const value=shallowRef(layerDefinition(props,kind));const record=context.declarations.register('layer',()=>value.value);watch(()=>Object.values(props),()=>{value.value=layerDefinition(props,kind);record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>null}})}export const ChartLine=layerComponent('line');export const ChartScatter=layerComponent('scatter',{projection:{type:String,default:'raw'}});export const ChartBar=layerComponent('bar',{orientation:{type:String,default:'vertical'}});export const ChartBars=ChartBar;export const ChartHeatmap=layerComponent('heatmap',{getValue:{type:Function,default:undefined},valueField:{type:String,default:undefined},projection:{type:[String,Object],default:'raw'}});export const ChartPie=layerComponent('pie',{getValue:{type:Function,default:undefined},valueField:{type:String,default:undefined},getLabel:{type:Function,default:undefined},labelField:{type:String,default:undefined}});export const ChartDonut=layerComponent('donut',{getValue:{type:Function,default:undefined},valueField:{type:String,default:undefined},getLabel:{type:Function,default:undefined},labelField:{type:String,default:undefined},innerRadius:{type:Number,default:0.5},outerRadius:{type:Number,default:1}});function layerDefinition(props,kind){return defined({kind,id:props['id'],data:props['data'],getId:props['getId'],label:props['label'],xAxis:props['xAxis'],yAxis:props['yAxis'],getX:props['getX'],getY:props['getY'],projection:props['projection'],orientation:props['orientation'],getValue:props['getValue'],valueField:props['valueField'],getLabel:props['getLabel'],labelField:props['labelField'],innerRadius:props['innerRadius'],outerRadius:props['outerRadius']})}export const ChartAxisView=defineComponent({name:'SectileChartAxisView',props:{axis:{type:[String,Number],default:undefined},initial:{type:Object,default:undefined},minimumSpan:{type:Number,default:undefined},maximumSpan:{type:Number,default:undefined},update:{type:String,default:'preserve'}},setup(props){const context=useInternalChart();const inheritedAxis=inject(chartAxisKey,undefined);const read=()=>viewCapability(props,inheritedAxis?.value);const value=shallowRef(read());const record=context.declarations.register('view',()=>value.value);watch(()=>[props.axis,inheritedAxis?.value,props.initial,props.minimumSpan,props.maximumSpan,props.update],()=>{value.value=read();record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>null}});function viewCapability(props,inheritedAxis){const axisID=props['axis']??inheritedAxis;if(axisID===undefined)throw new TypeError('ChartAxisView requires an axis prop or an enclosing ChartXAxis or ChartYAxis.');return Object.freeze(defined({axisID,initial:props['initial'],minimumSpan:props['minimumSpan'],maximumSpan:props['maximumSpan'],update:props['update']}))}export const ChartNavigation=defineComponent({name:'SectileChartNavigation',props:{axes:{type:Array,default:undefined},drag:{type:String,default:'none'},wheel:{type:String,default:'native'},wheelModifier:{type:String,default:'none'},pinch:{type:Boolean,default:false},keyboard:{type:Boolean,default:false}},setup(props){const context=useInternalChart();const value=shallowRef(navigationDefinition(props));const record=context.declarations.register('navigation',()=>value.value);watch(()=>[props.axes,props.drag,props.wheel,props.wheelModifier,props.pinch,props.keyboard],()=>{const next=navigationDefinition(props);if(sameNavigation(value.value,next))return;value.value=next;record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>null}});function navigationDefinition(props){return Object.freeze(defined({axes:props['axes'],drag:props['drag'],wheel:props['wheel'],wheelModifier:props['wheelModifier'],pinch:props['pinch'],keyboard:props['keyboard']}))}function sameNavigation(left,right){return sameStableIDs(left.axes,right.axes)&&left.drag===right.drag&&left.wheel===right.wheel&&left.wheelModifier===right.wheelModifier&&left.pinch===right.pinch&&left.keyboard===right.keyboard}function sameStableIDs(left,right){if(left===right)return true;if(left===undefined||right===undefined||left.length!==right.length)return false;for(let index=0;index<left.length;index+=1)if(left[index]!==right[index])return false;return true}export const ChartViewControls=defineComponent({name:'SectileChartViewControls',inheritAttrs:false,props:{axis:{type:[String,Number],default:undefined}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartAxisKey,undefined);const initialAxis=props.axis??inheritedAxis?.value;if(initialAxis===undefined)throw new TypeError('ChartViewControls requires an axis prop or an enclosing ChartXAxis or ChartYAxis.');const axis=shallowRef(initialAxis);provide(chartControlAxisKey,axis);watch(()=>[props.axis,inheritedAxis?.value],()=>{axis.value=props.axis??inheritedAxis?.value},{deep:false,flush:'sync'});const record=context.declarations.register('controls',()=>'built-in');onBeforeUnmount(record.dispose);return()=>h('div',{...attrs,'data-scope':'chart','data-part':'view-controls'},slots['default']?.())}});export const ChartExternalViewControls=defineComponent({name:'SectileChartExternalViewControls',setup(){const context=useInternalChart();const record=context.declarations.register('controls',()=>'external');onBeforeUnmount(record.dispose);return()=>null}});const axisControlProps={axis:{type:[String,Number],default:undefined},label:{type:String,default:undefined}};export const ChartPanControl=defineComponent({name:'SectileChartPanControl',inheritAttrs:false,props:{...axisControlProps,direction:{type:String,required:true},step:{type:Number,default:0.1}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,undefined));const axis=()=>requiredControlAxis(props.axis,inheritedAxis?.value);return()=>h('button',{...attrs,type:'button',disabled:context.controller.value===null,'aria-label':props.label??`Pan ${String(axis())} ${props.direction}`,'data-scope':'chart','data-part':'pan-control',onClick:()=>context.dispatch({type:'pan-axis-view',axisID:axis(),fraction:props.direction==='backward'?-props.step:props.step,phase:'settled'})},slots['default']?.()??props.direction)}});export const ChartZoomControl=defineComponent({name:'SectileChartZoomControl',inheritAttrs:false,props:{...axisControlProps,direction:{type:String,required:true},factor:{type:Number,default:1.25}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,undefined));const axis=()=>requiredControlAxis(props.axis,inheritedAxis?.value);return()=>h('button',{...attrs,type:'button',disabled:context.controller.value===null,'aria-label':props.label??`Zoom ${String(axis())} ${props.direction}`,'data-scope':'chart','data-part':'zoom-control',onClick:()=>context.dispatch({type:'zoom-axis-view',axisID:axis(),factor:props.direction==='in'?props.factor:1/props.factor,anchor:0.5,phase:'settled'})},slots['default']?.()??props.direction)}});export const ChartResetView=defineComponent({name:'SectileChartResetView',inheritAttrs:false,props:{...axisControlProps,to:{type:String,default:'initial'}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,undefined));const axis=()=>requiredControlAxis(props.axis,inheritedAxis?.value);return()=>h('button',{...attrs,type:'button',disabled:context.controller.value===null,'aria-label':props.label??`Reset ${String(axis())} view`,'data-scope':'chart','data-part':'reset-view',onClick:()=>context.dispatch({type:'reset-axis-view',axisID:axis(),to:props.to,phase:'settled'})},slots['default']?.()??'Reset')}});export const ChartPlot=defineComponent({name:'SectileChartPlot',inheritAttrs:false,setup(_props,{attrs,slots}){return()=>h('div',{...attrs,'data-scope':'chart','data-part':'plot'},slots['default']?.())}});export const ChartRenderer=defineComponent({name:'SectileChartRenderer',inheritAttrs:false,setup(_props,{attrs}){const context=useInternalChart();return()=>h('canvas',{...attrs,ref:element=>{context.canvas.value=element},'aria-hidden':'true','data-scope':'chart','data-part':'renderer'})}});export const ChartCanvas=ChartRenderer;function semanticMarker(name,part){return defineComponent({name,setup(){useInternalChart();return()=>null}})}export const ChartGrid=semanticMarker('SectileChartGrid','grid');export const ChartGridLines=ChartGrid;export const ChartLegend=semanticMarker('SectileChartLegend','legend');export const ChartAxisTicks=semanticMarker('SectileChartAxisTicks','axis-ticks');export const ChartTicks=ChartAxisTicks;const chartSuiteKey=Symbol('SectileChartSuite');const chartComponentSuites=new WeakMap;export function createChartComponents(controller){if(controller===null||typeof controller!=='object')throw new TypeError('createChartComponents requires a Chart controller.');const cached=chartComponentSuites.get(controller);if(cached!==undefined)return cached;const token=Object.freeze({controller});const suite=Object.freeze({Provider:boundChartProvider(controller,token),Root:boundChartRoot(token),Cartesian:ChartCartesian,Radial:ChartRadial,XAxis:ChartXAxis,YAxis:ChartYAxis,AxisView:ChartAxisView,Line:ChartLine,Scatter:ChartScatter,Bar:ChartBar,Bars:ChartBars,Heatmap:ChartHeatmap,Pie:ChartPie,Donut:ChartDonut,Navigation:ChartNavigation,ViewControls:ChartViewControls,ExternalViewControls:ChartExternalViewControls,PanControl:ChartPanControl,ZoomControl:ChartZoomControl,ResetView:ChartResetView,Plot:ChartPlot,Renderer:ChartRenderer,Canvas:ChartCanvas,Grid:ChartGrid,GridLines:ChartGridLines,Legend:ChartLegend,AxisTicks:ChartAxisTicks,Ticks:ChartTicks});chartComponentSuites.set(controller,suite);return suite}function boundChartProvider(controller,token){return defineComponent({name:'SectileBoundChartProvider',inheritAttrs:false,setup(_props,{attrs,slots}){provide(chartSuiteKey,token);return()=>h(ChartProviderRuntime,{...attrs,controller},slots)}})}function boundChartRoot(token){return defineComponent({name:'SectileBoundChartRoot',inheritAttrs:false,setup(_props,{attrs,slots}){if(inject(chartSuiteKey,undefined)!==token){throw new TypeError('Controller-bound Chart.Root requires its matching Chart.Provider.')}return()=>h(ChartRootRuntime,attrs,slots)}})}function requiredControlAxis(axis,inheritedAxis){const resolved=axis??inheritedAxis;if(resolved===undefined)throw new TypeError('Chart view control requires an axis prop or an enclosing axis control scope.');return resolved}function publishVueChartCommand(command,publishSnapshot,publishCommand,publishProposal,publishChange){let failure;try{publishSnapshot()}catch(error){failure??=[error]}try{publishCommand(command)}catch(error){failure??=[error]}try{publishProposal(command)}catch(error){failure??=[error]}if(publishChange!==undefined){try{publishChange(command)}catch(error){failure??=[error]}}if(failure!==undefined)throw failure[0]}function bindController(controller,options,owned){const snapshot=shallowRef(controller.getSnapshot());const projection=shallowRef(null);const connection=shallowRef(null);let active=true;const controlledFlags={activeDatum:options.activeDatum!==undefined,cursor:options.cursor!==undefined,selection:options.selection!==undefined,view:options.view!==undefined};const publish=()=>{if(!active)return;const previous=snapshot.value;const current=controller.getSnapshot();if(current===previous)return;snapshot.value=current;let failure;if(!controlledFlags.activeDatum&¤t.state.activeDatum!==previous.state.activeDatum){try{options.onActiveDatumChange?.(current.state.activeDatum)}catch(error){failure??=[error]}}if(!controlledFlags.cursor&¤t.state.cursor!==previous.state.cursor){try{options.onCursorChange?.(current.state.cursor)}catch(error){failure??=[error]}}if(!controlledFlags.selection&¤t.state.selection!==previous.state.selection){try{options.onSelectionChange?.(current.state.selection)}catch(error){failure??=[error]}}if(!controlledFlags.view&¤t.state.view!==previous.state.view){try{options.onViewChange?.(current.state.view)}catch(error){failure??=[error]}}if(failure!==undefined)throw failure[0]};const publishComposableCommand=command=>{options.onCommand?.(command)};const publishComposableProposal=command=>{if(command.type==='active-change-requested'&&options.activeDatum!==undefined)options.activeDatum.value=command.id;else if(command.type==='cursor-change-requested'&&options.cursor!==undefined)options.cursor.value=command.id;else if(command.type==='selection-change-requested'&&options.selection!==undefined)options.selection.value=command.selection;else if(command.type==='view-change-requested'&&options.view!==undefined)options.view.value=command.view};const publishComposableChange=command=>{if(command.type==='active-change-requested')options.onActiveDatumChange?.(command.id);else if(command.type==='cursor-change-requested')options.onCursorChange?.(command.id);else if(command.type==='selection-change-requested')options.onSelectionChange?.(command.selection);else if(command.type==='view-change-requested')options.onViewChange?.(command.view)};const unsubscribeCommands=controller.subscribeCommands(command=>{publishVueChartCommand(command,publish,publishComposableCommand,publishComposableProposal,publishComposableChange)});const unsubscribeSnapshots=controller.subscribeSnapshots(()=>{publish()});const result={controller,snapshot,projection,connection,replaceModel(model,expectedRevision){const value=controller.replaceModel(model,expectedRevision);publish();return value},replaceDefinition(definition,viewCapabilities,expectedRevision){const value=controller.replaceDefinition(definition,viewCapabilities,expectedRevision);publish();return value},applyPatch(patch,expectedRevision){const value=controller.applyPatch(patch,expectedRevision);publish();return value},dispatch(event,expectedRevision){const value=controller.dispatch(event,expectedRevision);publish();return value},syncControlledValues(){const value=controller.syncControlledValues(controlledValues(options));publish();return value},dispose(){if(!active)return;active=false;connection.value?.disconnect();connection.value=null;unsubscribeCommands();unsubscribeSnapshots();if(owned)controller.dispose()}};return Object.freeze(result)}function controlledValues(options){return Object.freeze({...options.activeDatum===undefined?{}:{activeDatum:options.activeDatum.value},...options.cursor===undefined?{}:{cursor:options.cursor.value},...options.selection===undefined?{}:{selection:options.selection.value},...options.view===undefined?{}:{view:options.view.value}})}function defaultValues(options){const values=Object.freeze({...options.activeDatum!==undefined||options.defaultActiveDatum===undefined?{}:{activeDatum:options.defaultActiveDatum},...options.cursor!==undefined||options.defaultCursor===undefined?{}:{cursor:options.defaultCursor},...options.selection!==undefined||options.defaultSelection===undefined?{}:{selection:options.defaultSelection},...options.view!==undefined||options.defaultView===undefined?{}:{view:options.defaultView}});return Object.keys(values).length===0?{}:{initialValues:values}}function assertControlledDefaults(options){if(options.activeDatum!==undefined&&options.defaultActiveDatum!==undefined||options.cursor!==undefined&&options.defaultCursor!==undefined||options.selection!==undefined&&options.defaultSelection!==undefined||options.view!==undefined&&options.defaultView!==undefined){throw new TypeError('Chart controlled values and their default counterparts are mutually exclusive.')}}function assertRootControlledDefaults(props){if(props['modelValue']!==undefined&&props['defaultModelValue']!==undefined||props['activeDatum']!==undefined&&props['defaultActiveDatum']!==undefined||props['cursor']!==undefined&&props['defaultCursor']!==undefined||props['view']!==undefined&&props['defaultView']!==undefined){throw new TypeError('ChartRoot controlled props and their default counterparts are mutually exclusive.')}}function defined(value){return Object.fromEntries(Object.entries(value).filter(([,entry])=>entry!==undefined))}
|
|
1
|
+
import{createChartController}from'@sectile/chart/controller';import{createDOMChart}from'@sectile/dom/chart';import{useControlledStateInvariant}from'./internal/controlled-state.js';import{defineComponent,getCurrentScope,h,inject,nextTick,onBeforeUnmount,onMounted,onScopeDispose,provide,shallowRef,toValue,watch}from'vue';export function useChart(options){if(options===null||typeof options!=='object')throw new TypeError('useChart options must be an object.');if(options.model===undefined===(options.definition===undefined)){throw new TypeError('useChart requires exactly one model or declarative definition.')}assertControlledDefaults(options);const controlled=controlledValues(options);const source=options.definition===undefined?{model:toValue(options.model)}:{definition:toValue(options.definition),viewCapabilities:toValue(options.viewCapabilities??(()=>Object.freeze([])))};const controller=createChartController({...source,...options.limits===undefined?{}:{limits:options.limits},...defaultValues(options),...Object.keys(controlled).length===0?{}:{controlled}});const binding=bindController(controller,options,true);const stops=[];if(options.model!==undefined){stops.push(watch(()=>toValue(options.model),model=>{binding.replaceModel(model)},{deep:false}))}else{stops.push(watch(()=>[toValue(options.definition),toValue(options.viewCapabilities??(()=>Object.freeze([])))],([definition,capabilities])=>{binding.replaceDefinition(definition,capabilities)},{deep:false}))}for(const sourceRef of[options.activeDatum,options.cursor,options.selection,options.view]){if(sourceRef!==undefined)stops.push(watch(()=>sourceRef.value,()=>{binding.syncControlledValues()},{deep:false}))}const disposeBinding=binding.dispose;const result=Object.freeze({...binding,dispose(){for(const stop of stops.splice(0))stop();disposeBinding()}});if(getCurrentScope()!==undefined)onScopeDispose(result.dispose);return result}class ChartDeclarations{#records=new Map;#publish;#token=0;#scheduled=false;#active=true;#publications=0;#readRecords=0;constructor(publish){this.#publish=publish}register(kind,read){const token=++this.#token;this.#records.set(token,{token,kind,read});this.schedule();let active=true;return Object.freeze({touch:()=>{if(active)this.schedule()},dispose:()=>{if(!active)return;active=false;this.#records.delete(token);this.schedule()}})}publishNow(){if(!this.#active)return;this.#scheduled=false;this.#publish(this.assemble());this.#publications+=1}getDiagnostics(){return Object.freeze({registeredRecords:this.#records.size,publications:this.#publications,readRecords:this.#readRecords})}schedule(){if(!this.#active||this.#scheduled)return;this.#scheduled=true;void nextTick(()=>{if(this.#scheduled)this.publishNow()})}assemble(){const records=[...this.#records.values()].sort((left,right)=>left.token-right.token);this.#readRecords=records.length;const coordinates=records.filter(record=>record.kind==='coordinate');if(coordinates.length!==1)throw new TypeError('ChartRoot requires exactly one ChartCartesian or ChartRadial coordinate.');const coordinate=coordinates[0]?.read();const axes=records.filter(record=>record.kind==='axis').map(record=>record.read());const layers=records.filter(record=>record.kind==='layer').map(record=>record.read());const capabilities=records.filter(record=>record.kind==='view').map(record=>record.read());const navigationRecords=records.filter(record=>record.kind==='navigation');if(navigationRecords.length>1)throw new TypeError('ChartRoot accepts at most one ChartNavigation declaration.');const controls=records.filter(record=>record.kind==='controls').map(record=>record.read());const navigation=navigationRecords[0]?.read();const alternative=controls.includes('built-in')?'built-in':controls.includes('external')?'external':undefined;if(navigation!==undefined&&((navigation.drag??'none')!=='none'||navigation.pinch===true)&&alternative===undefined){throw new TypeError('Chart direct gestures require ChartViewControls or ChartExternalViewControls.')}return Object.freeze({definition:Object.freeze({coordinate:coordinate.kind==='cartesian'?Object.freeze({kind:'cartesian',axes:Object.freeze(axes)}):Object.freeze({kind:'radial'}),layers:Object.freeze(layers)}),viewCapabilities:Object.freeze(capabilities),navigation:Object.freeze({...navigation??{},...alternative===undefined?{}:{controlAlternative:alternative}})})}dispose(){if(!this.#active)return;this.#active=false;this.#scheduled=false;this.#records.clear()}}const chartKey=Symbol('SectileChart');const chartPublicKey=Symbol('SectileChartPublic');const chartOwnerKey=Symbol('SectileChartOwner');const chartAxisKey=Symbol('SectileChartAxis');const chartControlAxisKey=Symbol('SectileChartControlAxis');function useInternalChart(){const context=inject(chartKey);if(context===undefined)throw new TypeError('Chart component must be used inside ChartRoot.');return context}export function useChartContext(){const context=inject(chartPublicKey);if(context===undefined)throw new TypeError('useChartContext must be used inside ChartRoot or ChartProvider.');return context}const ChartProviderRuntime=/* @__PURE__ */defineComponent({name:'SectileChartProvider',props:{controller:{type:Object,required:true}},setup(props,{slots}){const controller=shallowRef(props.controller);const snapshot=shallowRef(controller.value.getSnapshot());const unsubscribe=controller.value.subscribeSnapshots(next=>{snapshot.value=next});const owner=Object.freeze({controller});const context=Object.freeze({controller,snapshot,dispatch(event){const result=controller.value.dispatch(event);return result.ok?Object.freeze({ok:true,value:result.value.snapshot}):result},applyPatch(patch){return controller.value.applyPatch(patch)}});provide(chartOwnerKey,owner);provide(chartPublicKey,context);onScopeDispose(unsubscribe);return()=>slots['default']?.({controller:controller.value,snapshot:snapshot.value,state:snapshot.value.state,definition:controller.value.getDefinition()})??null}});export const ChartProvider=ChartProviderRuntime;export function useChartSelector(selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>selector(context.snapshot.value?.state??null),options.equals)}export function useChartLayerSelector(id,selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>{const layers=context.controller.value?.getDefinition()?.layers;return selector(layers?.find(layer=>layer.id===id)??null)},options.equals)}export function useChartAxisSelector(id,selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>{const axes=context.controller.value?.getDefinition()?.axes;return selector(axes?.find(axis=>axis.id===id)??null)},options.equals)}function useChartContextSelector(context,read,equals=Object.is){const selected=shallowRef(read());const stop=watch([context.controller,context.snapshot],()=>{const next=read();if(!equals(selected.value,next))selected.value=next},{deep:false,flush:'sync'});onScopeDispose(stop);return selected}const ChartRootRuntime=/* @__PURE__ */defineComponent({name:'SectileChartRoot',inheritAttrs:false,props:{limits:{type:Object,default:undefined},modelValue:{type:Object,default:undefined},defaultModelValue:{type:Object,default:undefined},activeDatum:{type:[String,Number],default:undefined},defaultActiveDatum:{type:[String,Number],default:undefined},cursor:{type:[String,Number],default:undefined},defaultCursor:{type:[String,Number],default:undefined},view:{type:Object,default:undefined},defaultView:{type:Object,default:undefined},patch:{type:Object,default:undefined},dom:{type:Object,default:undefined},onError:{type:Function,default:undefined}},emits:{'update:modelValue':_value=>true,'update:activeDatum':_value=>true,'update:cursor':_value=>true,'update:view':_value=>true,command:_command=>true},setup(props,{attrs,emit,expose,slots}){assertRootControlledDefaults(props);const ownerContext=inject(chartOwnerKey,undefined);const ownsController=ownerContext===undefined;const root=shallowRef(null);const canvas=shallowRef(null);const controller=shallowRef(ownerContext?.controller.value??null);const snapshot=shallowRef(controller.value?.getSnapshot()??null);const projection=shallowRef(null);const connection=shallowRef(null);let assembled=null;let unsubscribeCommands=null;let unsubscribeSnapshots=null;let previousState=snapshot.value?.state??null;let mounted=false;let definitionAccepted=false;const controlled=Object.freeze({activeDatum:useControlledStateInvariant('ChartRoot','activeDatum',()=>props.activeDatum),cursor:useControlledStateInvariant('ChartRoot','cursor',()=>props.cursor),selection:useControlledStateInvariant('ChartRoot','modelValue',()=>props.modelValue),view:useControlledStateInvariant('ChartRoot','view',()=>props.view)});const report=error=>{if(props.onError!==undefined)props.onError(error);else throw error};const publishSnapshot=()=>{const owner=controller.value;if(owner===null)return;const current=owner.getSnapshot();if(snapshot.value===current)return;const prior=previousState;snapshot.value=current;previousState=current.state;if(prior===null)return;let failure;if(!controlled.activeDatum&&prior.activeDatum!==current.state.activeDatum){try{emit('update:activeDatum',current.state.activeDatum)}catch(error){failure??=[error]}}if(!controlled.cursor&&prior.cursor!==current.state.cursor){try{emit('update:cursor',current.state.cursor)}catch(error){failure??=[error]}}if(!controlled.selection&&prior.selection!==current.state.selection){try{emit('update:modelValue',current.state.selection)}catch(error){failure??=[error]}}if(!controlled.view&&prior.view!==current.state.view){try{emit('update:view',current.state.view)}catch(error){failure??=[error]}}if(failure!==undefined)throw failure[0]};const publishRootCommand=command=>{emit('command',command)};const publishRootProposal=command=>{if(command.type==='active-change-requested')emit('update:activeDatum',command.id);else if(command.type==='cursor-change-requested')emit('update:cursor',command.id);else if(command.type==='selection-change-requested')emit('update:modelValue',command.selection);else if(command.type==='view-change-requested')emit('update:view',command.view)};const onCommand=command=>{publishVueChartCommand(command,publishSnapshot,publishRootCommand,publishRootProposal)};const connect=()=>{const owner=controller.value;if(!mounted||owner===null||root.value===null||canvas.value===null||connection.value!==null)return;const dom=props.dom??{};try{connection.value=createDOMChart({...dom,root:root.value,canvas:canvas.value,controller:owner,...assembled===null?{}:{navigation:assembled.navigation},onCommand:command=>{dom.onCommand?.(command)},onProjectionChange:next=>{projection.value=next;dom.onProjectionChange?.(next)},onProjectionError:projectionError=>{let failure;try{dom.onProjectionError?.(projectionError)}catch(error){failure??=[error]}try{report(projectionError)}catch(error){failure??=[error]}if(failure!==undefined)throw failure[0]}});projection.value=connection.value.getProjection()}catch(error){report(error)}};const publishDefinition=next=>{assembled=next;definitionAccepted=false;const owner=controller.value;if(!mounted||owner===null)return;const replaced=owner.replaceDefinition(next.definition,next.viewCapabilities);if(!replaced.ok){report(new TypeError(`${replaced.error.code}: ${replaced.error.message}`));return}definitionAccepted=true;publishSnapshot();const navigation=connection.value?.setNavigation(next.navigation);if(navigation!==undefined&&!navigation.ok)report(new TypeError(`${navigation.error.code}: ${navigation.error.message}`));connection.value?.refresh()};const declarations=new ChartDeclarations(next=>{try{publishDefinition(next)}catch(error){report(error)}});const context=Object.freeze({declarations,controller,canvas,dispatch(event){const result=controller.value?.dispatch(event);if(result!==undefined&&!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`));publishSnapshot()}});provide(chartKey,context);const publicContext=Object.freeze({controller,snapshot,dispatch(event){const result=controller.value?.dispatch(event);if(result===undefined)return Object.freeze({ok:true,value:null});publishSnapshot();return result.ok?Object.freeze({ok:true,value:result.value.snapshot}):result},applyPatch(patch){const result=controller.value?.applyPatch(patch);if(result===undefined)return Object.freeze({ok:true,value:null});publishSnapshot();return result}});provide(chartPublicKey,publicContext);const syncControlled=()=>{const owner=controller.value;if(owner===null)return;const result=owner.syncControlledValues(Object.freeze({...controlled.activeDatum?{activeDatum:props.activeDatum??null}:{},...controlled.cursor?{cursor:props.cursor??null}:{},...controlled.selection?{selection:props.modelValue}:{},...controlled.view?{view:props.view??null}:{}}));if(!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`));publishSnapshot()};watch(()=>[props.activeDatum,props.cursor,props.modelValue,props.view],syncControlled,{deep:false});watch(()=>props.patch,patch=>{if(patch===null||patch===undefined||controller.value===null)return;const result=controller.value.applyPatch(patch);if(!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`));publishSnapshot()},{deep:false});watch(()=>props.dom?.accessibilityLabel,label=>{connection.value?.setAccessibilityLabel(label)},{flush:'post'});watch(()=>props.dom?.renderStyle,style=>{const result=connection.value?.setRenderStyle(style??{});if(result&&!result.ok)report(new TypeError(`${result.error.code}: ${result.error.message}`))},{deep:false,flush:'post'});onMounted(()=>{mounted=true;try{declarations.publishNow();const next=assembled;const controlledValues=Object.freeze({...controlled.activeDatum?{activeDatum:props.activeDatum??null}:{},...controlled.cursor?{cursor:props.cursor??null}:{},...controlled.selection?{selection:props.modelValue}:{},...controlled.view?{view:props.view??null}:{}});const initialValues=Object.freeze({...!controlled.activeDatum&&props.defaultActiveDatum!==undefined?{activeDatum:props.defaultActiveDatum}:{},...!controlled.cursor&&props.defaultCursor!==undefined?{cursor:props.defaultCursor}:{},...!controlled.selection&&props.defaultModelValue!==undefined?{selection:props.defaultModelValue}:{},...!controlled.view&&props.defaultView!==undefined?{view:props.defaultView}:{}});if(ownerContext===undefined){controller.value=createChartController({definition:next.definition,viewCapabilities:next.viewCapabilities,...props.limits===undefined?{}:{limits:props.limits},...Object.keys(controlledValues).length===0?{}:{controlled:controlledValues},...Object.keys(initialValues).length===0?{}:{initialValues}})}else{const borrowed=ownerContext.controller.value;if(!definitionAccepted)return;controller.value=borrowed;if(Object.keys(controlledValues).length!==0){const synced=borrowed.syncControlledValues(controlledValues);if(!synced.ok)throw new TypeError(`${synced.error.code}: ${synced.error.message}`)}}snapshot.value=controller.value.getSnapshot();previousState=snapshot.value.state;unsubscribeCommands=controller.value.subscribeCommands(onCommand);unsubscribeSnapshots=controller.value.subscribeSnapshots(()=>{publishSnapshot()});void nextTick(connect)}catch(error){report(error)}});onBeforeUnmount(()=>{mounted=false;declarations.dispose();connection.value?.disconnect();connection.value=null;unsubscribeCommands?.();unsubscribeCommands=null;unsubscribeSnapshots?.();unsubscribeSnapshots=null;if(ownsController)controller.value?.dispose();controller.value=null});expose({controller,getDeclarationDiagnostics:()=>declarations.getDiagnostics(),refresh:()=>connection.value?.refresh()});return()=>h('div',{...attrs,ref:element=>{root.value=element},'data-scope':'chart','data-part':'root'},slots['default']?.({controller:controller.value,snapshot:snapshot.value,state:snapshot.value?.state??null,projection:projection.value,definition:controller.value?.getDefinition()??null}))}});export const ChartRoot=ChartRootRuntime;const coordinateProps={};export const ChartCartesian=defineComponent({name:'SectileChartCartesian',props:coordinateProps,setup(_props,{slots}){const context=useInternalChart();const record=context.declarations.register('coordinate',()=>Object.freeze({kind:'cartesian'}));onBeforeUnmount(record.dispose);return()=>slots['default']?.()??null}});export const ChartRadial=defineComponent({name:'SectileChartRadial',props:coordinateProps,setup(_props,{slots}){const context=useInternalChart();const record=context.declarations.register('coordinate',()=>Object.freeze({kind:'radial'}));onBeforeUnmount(record.dispose);return()=>slots['default']?.()??null}});const axisProps={id:{type:[String,Number],required:true},scale:{type:String,default:'linear'},domain:{type:[String,Object],default:'auto'},field:{type:String,default:undefined},getValue:{type:Function,default:undefined},ticks:{type:Number,default:undefined},label:{type:String,default:undefined},unit:{type:String,default:undefined}};function axisComponent(orientation){return defineComponent({name:orientation==='x'?'SectileChartXAxis':'SectileChartYAxis',props:axisProps,setup(props,{slots}){const context=useInternalChart();const axis=shallowRef(props.id);provide(chartAxisKey,axis);const value=shallowRef(axisDefinition(props,orientation));const record=context.declarations.register('axis',()=>value.value);watch(()=>[props.id,props.scale,props.domain,props.field,props.getValue,props.ticks,props.label,props.unit],()=>{axis.value=props.id;value.value=axisDefinition(props,orientation);record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>slots['default']?.()??null}})}export const ChartXAxis=axisComponent('x');export const ChartYAxis=axisComponent('y');function axisDefinition(props,orientation){return defined({id:props['id'],orientation,scale:props['scale'],domain:props['domain'],field:props['field'],getValue:props['getValue'],ticks:props['ticks'],label:props['label'],unit:props['unit']})}const layerBaseProps={id:{type:[String,Number],required:true},data:{type:Array,required:true},getId:{type:Function,default:undefined},label:{type:String,default:undefined}};const cartesianLayerProps={...layerBaseProps,xAxis:{type:[String,Number],required:true},yAxis:{type:[String,Number],required:true},getX:{type:Function,default:undefined},getY:{type:Function,default:undefined}};function layerComponent(kind,extraProps={}){return defineComponent({name:`SectileChart${kind[0]?.toUpperCase()}${kind.slice(1)}`,props:{...kind==='pie'||kind==='donut'?layerBaseProps:cartesianLayerProps,...extraProps},setup(props){const context=useInternalChart();const value=shallowRef(layerDefinition(props,kind));const record=context.declarations.register('layer',()=>value.value);watch(()=>Object.values(props),()=>{value.value=layerDefinition(props,kind);record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>null}})}export const ChartLine=layerComponent('line');export const ChartScatter=layerComponent('scatter',{projection:{type:String,default:'raw'}});export const ChartBar=layerComponent('bar',{orientation:{type:String,default:'vertical'}});export const ChartBars=ChartBar;export const ChartHeatmap=layerComponent('heatmap',{getValue:{type:Function,default:undefined},valueField:{type:String,default:undefined},projection:{type:[String,Object],default:'raw'}});export const ChartPie=layerComponent('pie',{getValue:{type:Function,default:undefined},valueField:{type:String,default:undefined},getLabel:{type:Function,default:undefined},labelField:{type:String,default:undefined}});export const ChartDonut=layerComponent('donut',{getValue:{type:Function,default:undefined},valueField:{type:String,default:undefined},getLabel:{type:Function,default:undefined},labelField:{type:String,default:undefined},innerRadius:{type:Number,default:0.5},outerRadius:{type:Number,default:1}});function layerDefinition(props,kind){return defined({kind,id:props['id'],data:props['data'],getId:props['getId'],label:props['label'],xAxis:props['xAxis'],yAxis:props['yAxis'],getX:props['getX'],getY:props['getY'],projection:props['projection'],orientation:props['orientation'],getValue:props['getValue'],valueField:props['valueField'],getLabel:props['getLabel'],labelField:props['labelField'],innerRadius:props['innerRadius'],outerRadius:props['outerRadius']})}export const ChartAxisView=defineComponent({name:'SectileChartAxisView',props:{axis:{type:[String,Number],default:undefined},initial:{type:Object,default:undefined},minimumSpan:{type:Number,default:undefined},maximumSpan:{type:Number,default:undefined},update:{type:String,default:'preserve'}},setup(props){const context=useInternalChart();const inheritedAxis=inject(chartAxisKey,undefined);const read=()=>viewCapability(props,inheritedAxis?.value);const value=shallowRef(read());const record=context.declarations.register('view',()=>value.value);watch(()=>[props.axis,inheritedAxis?.value,props.initial,props.minimumSpan,props.maximumSpan,props.update],()=>{value.value=read();record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>null}});function viewCapability(props,inheritedAxis){const axisID=props['axis']??inheritedAxis;if(axisID===undefined)throw new TypeError('ChartAxisView requires an axis prop or an enclosing ChartXAxis or ChartYAxis.');return Object.freeze(defined({axisID,initial:props['initial'],minimumSpan:props['minimumSpan'],maximumSpan:props['maximumSpan'],update:props['update']}))}export const ChartNavigation=defineComponent({name:'SectileChartNavigation',props:{axes:{type:Array,default:undefined},drag:{type:String,default:'none'},wheel:{type:String,default:'native'},wheelModifier:{type:String,default:'none'},pinch:{type:Boolean,default:false},keyboard:{type:Boolean,default:false}},setup(props){const context=useInternalChart();const value=shallowRef(navigationDefinition(props));const record=context.declarations.register('navigation',()=>value.value);watch(()=>[props.axes,props.drag,props.wheel,props.wheelModifier,props.pinch,props.keyboard],()=>{const next=navigationDefinition(props);if(sameNavigation(value.value,next))return;value.value=next;record.touch()},{deep:false,flush:'post'});onBeforeUnmount(record.dispose);return()=>null}});function navigationDefinition(props){return Object.freeze(defined({axes:props['axes'],drag:props['drag'],wheel:props['wheel'],wheelModifier:props['wheelModifier'],pinch:props['pinch'],keyboard:props['keyboard']}))}function sameNavigation(left,right){return sameStableIDs(left.axes,right.axes)&&left.drag===right.drag&&left.wheel===right.wheel&&left.wheelModifier===right.wheelModifier&&left.pinch===right.pinch&&left.keyboard===right.keyboard}function sameStableIDs(left,right){if(left===right)return true;if(left===undefined||right===undefined||left.length!==right.length)return false;for(let index=0;index<left.length;index+=1)if(left[index]!==right[index])return false;return true}export const ChartViewControls=defineComponent({name:'SectileChartViewControls',inheritAttrs:false,props:{axis:{type:[String,Number],default:undefined}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartAxisKey,undefined);const initialAxis=props.axis??inheritedAxis?.value;if(initialAxis===undefined)throw new TypeError('ChartViewControls requires an axis prop or an enclosing ChartXAxis or ChartYAxis.');const axis=shallowRef(initialAxis);provide(chartControlAxisKey,axis);watch(()=>[props.axis,inheritedAxis?.value],()=>{axis.value=props.axis??inheritedAxis?.value},{deep:false,flush:'sync'});const record=context.declarations.register('controls',()=>'built-in');onBeforeUnmount(record.dispose);return()=>h('div',{...attrs,'data-scope':'chart','data-part':'view-controls'},slots['default']?.())}});export const ChartExternalViewControls=defineComponent({name:'SectileChartExternalViewControls',setup(){const context=useInternalChart();const record=context.declarations.register('controls',()=>'external');onBeforeUnmount(record.dispose);return()=>null}});const axisControlProps={axis:{type:[String,Number],default:undefined},label:{type:String,default:undefined}};export const ChartPanControl=defineComponent({name:'SectileChartPanControl',inheritAttrs:false,props:{...axisControlProps,direction:{type:String,required:true},step:{type:Number,default:0.1}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,undefined));const axis=()=>requiredControlAxis(props.axis,inheritedAxis?.value);return()=>h('button',{...attrs,type:'button',disabled:context.controller.value===null,'aria-label':props.label??`Pan ${String(axis())} ${props.direction}`,'data-scope':'chart','data-part':'pan-control',onClick:()=>context.dispatch({type:'pan-axis-view',axisID:axis(),fraction:props.direction==='backward'?-props.step:props.step,phase:'settled'})},slots['default']?.()??props.direction)}});export const ChartZoomControl=defineComponent({name:'SectileChartZoomControl',inheritAttrs:false,props:{...axisControlProps,direction:{type:String,required:true},factor:{type:Number,default:1.25}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,undefined));const axis=()=>requiredControlAxis(props.axis,inheritedAxis?.value);return()=>h('button',{...attrs,type:'button',disabled:context.controller.value===null,'aria-label':props.label??`Zoom ${String(axis())} ${props.direction}`,'data-scope':'chart','data-part':'zoom-control',onClick:()=>context.dispatch({type:'zoom-axis-view',axisID:axis(),factor:props.direction==='in'?props.factor:1/props.factor,anchor:0.5,phase:'settled'})},slots['default']?.()??props.direction)}});export const ChartResetView=defineComponent({name:'SectileChartResetView',inheritAttrs:false,props:{...axisControlProps,to:{type:String,default:'initial'}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,undefined));const axis=()=>requiredControlAxis(props.axis,inheritedAxis?.value);return()=>h('button',{...attrs,type:'button',disabled:context.controller.value===null,'aria-label':props.label??`Reset ${String(axis())} view`,'data-scope':'chart','data-part':'reset-view',onClick:()=>context.dispatch({type:'reset-axis-view',axisID:axis(),to:props.to,phase:'settled'})},slots['default']?.()??'Reset')}});export const ChartPlot=defineComponent({name:'SectileChartPlot',inheritAttrs:false,setup(_props,{attrs,slots}){return()=>h('div',{...attrs,'data-scope':'chart','data-part':'plot'},slots['default']?.())}});export const ChartRenderer=defineComponent({name:'SectileChartRenderer',inheritAttrs:false,setup(_props,{attrs}){const context=useInternalChart();return()=>h('canvas',{...attrs,ref:element=>{context.canvas.value=element},'aria-hidden':'true','data-scope':'chart','data-part':'renderer'})}});export const ChartCanvas=ChartRenderer;function semanticMarker(name,part){return defineComponent({name,setup(){useInternalChart();return()=>null}})}export const ChartGrid=semanticMarker('SectileChartGrid','grid');export const ChartGridLines=ChartGrid;export const ChartLegend=semanticMarker('SectileChartLegend','legend');export const ChartAxisTicks=semanticMarker('SectileChartAxisTicks','axis-ticks');export const ChartTicks=ChartAxisTicks;const chartSuiteKey=Symbol('SectileChartSuite');const chartComponentSuites=new WeakMap;export function createChartComponents(controller){if(controller===null||typeof controller!=='object')throw new TypeError('createChartComponents requires a Chart controller.');const cached=chartComponentSuites.get(controller);if(cached!==undefined)return cached;const token=Object.freeze({controller});const suite=Object.freeze({Provider:boundChartProvider(controller,token),Root:boundChartRoot(token),Cartesian:ChartCartesian,Radial:ChartRadial,XAxis:ChartXAxis,YAxis:ChartYAxis,AxisView:ChartAxisView,Line:ChartLine,Scatter:ChartScatter,Bar:ChartBar,Bars:ChartBars,Heatmap:ChartHeatmap,Pie:ChartPie,Donut:ChartDonut,Navigation:ChartNavigation,ViewControls:ChartViewControls,ExternalViewControls:ChartExternalViewControls,PanControl:ChartPanControl,ZoomControl:ChartZoomControl,ResetView:ChartResetView,Plot:ChartPlot,Renderer:ChartRenderer,Canvas:ChartCanvas,Grid:ChartGrid,GridLines:ChartGridLines,Legend:ChartLegend,AxisTicks:ChartAxisTicks,Ticks:ChartTicks});chartComponentSuites.set(controller,suite);return suite}function boundChartProvider(controller,token){return defineComponent({name:'SectileBoundChartProvider',inheritAttrs:false,setup(_props,{attrs,slots}){provide(chartSuiteKey,token);return()=>h(ChartProviderRuntime,{...attrs,controller},slots)}})}function boundChartRoot(token){return defineComponent({name:'SectileBoundChartRoot',inheritAttrs:false,setup(_props,{attrs,slots}){if(inject(chartSuiteKey,undefined)!==token){throw new TypeError('Controller-bound Chart.Root requires its matching Chart.Provider.')}return()=>h(ChartRootRuntime,attrs,slots)}})}function requiredControlAxis(axis,inheritedAxis){const resolved=axis??inheritedAxis;if(resolved===undefined)throw new TypeError('Chart view control requires an axis prop or an enclosing axis control scope.');return resolved}function publishVueChartCommand(command,publishSnapshot,publishCommand,publishProposal,publishChange){let failure;try{publishSnapshot()}catch(error){failure??=[error]}try{publishCommand(command)}catch(error){failure??=[error]}try{publishProposal(command)}catch(error){failure??=[error]}if(publishChange!==undefined){try{publishChange(command)}catch(error){failure??=[error]}}if(failure!==undefined)throw failure[0]}function bindController(controller,options,owned){const snapshot=shallowRef(controller.getSnapshot());const projection=shallowRef(null);const connection=shallowRef(null);let active=true;const controlledFlags={activeDatum:options.activeDatum!==undefined,cursor:options.cursor!==undefined,selection:options.selection!==undefined,view:options.view!==undefined};const publish=()=>{if(!active)return;const previous=snapshot.value;const current=controller.getSnapshot();if(current===previous)return;snapshot.value=current;let failure;if(!controlledFlags.activeDatum&¤t.state.activeDatum!==previous.state.activeDatum){try{options.onActiveDatumChange?.(current.state.activeDatum)}catch(error){failure??=[error]}}if(!controlledFlags.cursor&¤t.state.cursor!==previous.state.cursor){try{options.onCursorChange?.(current.state.cursor)}catch(error){failure??=[error]}}if(!controlledFlags.selection&¤t.state.selection!==previous.state.selection){try{options.onSelectionChange?.(current.state.selection)}catch(error){failure??=[error]}}if(!controlledFlags.view&¤t.state.view!==previous.state.view){try{options.onViewChange?.(current.state.view)}catch(error){failure??=[error]}}if(failure!==undefined)throw failure[0]};const publishComposableCommand=command=>{options.onCommand?.(command)};const publishComposableProposal=command=>{if(command.type==='active-change-requested'&&options.activeDatum!==undefined)options.activeDatum.value=command.id;else if(command.type==='cursor-change-requested'&&options.cursor!==undefined)options.cursor.value=command.id;else if(command.type==='selection-change-requested'&&options.selection!==undefined)options.selection.value=command.selection;else if(command.type==='view-change-requested'&&options.view!==undefined)options.view.value=command.view};const publishComposableChange=command=>{if(command.type==='active-change-requested')options.onActiveDatumChange?.(command.id);else if(command.type==='cursor-change-requested')options.onCursorChange?.(command.id);else if(command.type==='selection-change-requested')options.onSelectionChange?.(command.selection);else if(command.type==='view-change-requested')options.onViewChange?.(command.view)};const unsubscribeCommands=controller.subscribeCommands(command=>{publishVueChartCommand(command,publish,publishComposableCommand,publishComposableProposal,publishComposableChange)});const unsubscribeSnapshots=controller.subscribeSnapshots(()=>{publish()});const result={controller,snapshot,projection,connection,replaceModel(model,expectedRevision){const value=controller.replaceModel(model,expectedRevision);publish();return value},replaceDefinition(definition,viewCapabilities,expectedRevision){const value=controller.replaceDefinition(definition,viewCapabilities,expectedRevision);publish();return value},applyPatch(patch,expectedRevision){const value=controller.applyPatch(patch,expectedRevision);publish();return value},dispatch(event,expectedRevision){const value=controller.dispatch(event,expectedRevision);publish();return value},syncControlledValues(){const value=controller.syncControlledValues(controlledValues(options));publish();return value},dispose(){if(!active)return;active=false;connection.value?.disconnect();connection.value=null;unsubscribeCommands();unsubscribeSnapshots();if(owned)controller.dispose()}};return Object.freeze(result)}function controlledValues(options){return Object.freeze({...options.activeDatum===undefined?{}:{activeDatum:options.activeDatum.value},...options.cursor===undefined?{}:{cursor:options.cursor.value},...options.selection===undefined?{}:{selection:options.selection.value},...options.view===undefined?{}:{view:options.view.value}})}function defaultValues(options){const values=Object.freeze({...options.activeDatum!==undefined||options.defaultActiveDatum===undefined?{}:{activeDatum:options.defaultActiveDatum},...options.cursor!==undefined||options.defaultCursor===undefined?{}:{cursor:options.defaultCursor},...options.selection!==undefined||options.defaultSelection===undefined?{}:{selection:options.defaultSelection},...options.view!==undefined||options.defaultView===undefined?{}:{view:options.defaultView}});return Object.keys(values).length===0?{}:{initialValues:values}}function assertControlledDefaults(options){if(options.activeDatum!==undefined&&options.defaultActiveDatum!==undefined||options.cursor!==undefined&&options.defaultCursor!==undefined||options.selection!==undefined&&options.defaultSelection!==undefined||options.view!==undefined&&options.defaultView!==undefined){throw new TypeError('Chart controlled values and their default counterparts are mutually exclusive.')}}function assertRootControlledDefaults(props){if(props['modelValue']!==undefined&&props['defaultModelValue']!==undefined||props['activeDatum']!==undefined&&props['defaultActiveDatum']!==undefined||props['cursor']!==undefined&&props['defaultCursor']!==undefined||props['view']!==undefined&&props['defaultView']!==undefined){throw new TypeError('ChartRoot controlled props and their default counterparts are mutually exclusive.')}}function defined(value){return Object.fromEntries(Object.entries(value).filter(([,entry])=>entry!==undefined))}
|
|
2
2
|
//# sourceMappingURL=chart.js.map
|
package/dist/chart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.js","names":["createChartController","createDOMChart","useControlledStateInvariant","defineComponent","getCurrentScope","h","inject","nextTick","onBeforeUnmount","onMounted","onScopeDispose","provide","shallowRef","toValue","watch","useChart","options","TypeError","model","undefined","definition","assertControlledDefaults","controlled","controlledValues","source","viewCapabilities","Object","freeze","controller","limits","defaultValues","keys","length","binding","bindController","stops","push","replaceModel","deep","capabilities","replaceDefinition","sourceRef","activeDatum","cursor","selection","view","value","syncControlledValues","disposeBinding","dispose","result","stop","splice","ChartDeclarations","records","Map","publish","token","scheduled","active","publications","readRecords","constructor","this","register","kind","read","set","schedule","touch","delete","publishNow","assemble","getDiagnostics","registeredRecords","size","values","sort","left","right","coordinates","filter","record","coordinate","axes","map","layers","navigationRecords","controls","navigation","alternative","includes","drag","pinch","controlAlternative","clear","chartKey","Symbol","chartPublicKey","chartOwnerKey","chartAxisKey","chartControlAxisKey","useInternalChart","context","useChartContext","ChartProviderRuntime","name","props","type","required","setup","slots","snapshot","getSnapshot","unsubscribe","subscribeSnapshots","next","owner","dispatch","event","ok","applyPatch","patch","state","getDefinition","ChartProvider","useChartSelector","selector","useChartContextSelector","equals","useChartLayerSelector","id","find","layer","useChartAxisSelector","axis","is","selected","flush","ChartRootRuntime","inheritAttrs","default","modelValue","defaultModelValue","String","Number","defaultActiveDatum","defaultCursor","defaultView","dom","onError","Function","emits","_value","command","_command","attrs","emit","expose","assertRootControlledDefaults","ownerContext","ownsController","root","canvas","projection","connection","assembled","unsubscribeCommands","unsubscribeSnapshots","previousState","mounted","definitionAccepted","report","error","publishSnapshot","current","prior","failure","publishRootCommand","publishRootProposal","onCommand","publishVueChartCommand","connect","onProjectionChange","onProjectionError","projectionError","getProjection","publishDefinition","replaced","code","message","setNavigation","refresh","declarations","publicContext","syncControlled","accessibilityLabel","label","setAccessibilityLabel","initialValues","borrowed","synced","subscribeCommands","disconnect","getDeclarationDiagnostics","ref","element","ChartRoot","coordinateProps","ChartCartesian","_props","ChartRadial","axisProps","scale","domain","field","getValue","ticks","unit","axisComponent","orientation","axisDefinition","ChartXAxis","ChartYAxis","defined","layerBaseProps","data","Array","getId","cartesianLayerProps","xAxis","yAxis","getX","getY","layerComponent","extraProps","toUpperCase","slice","layerDefinition","ChartLine","ChartScatter","ChartBar","ChartBars","ChartHeatmap","valueField","ChartPie","getLabel","labelField","ChartDonut","innerRadius","outerRadius","ChartAxisView","initial","minimumSpan","maximumSpan","update","inheritedAxis","viewCapability","axisID","ChartNavigation","wheel","wheelModifier","Boolean","keyboard","navigationDefinition","sameNavigation","sameStableIDs","index","ChartViewControls","initialAxis","ChartExternalViewControls","axisControlProps","ChartPanControl","direction","step","requiredControlAxis","disabled","onClick","fraction","phase","ChartZoomControl","factor","anchor","ChartResetView","to","ChartPlot","ChartRenderer","ChartCanvas","semanticMarker","part","ChartGrid","ChartGridLines","ChartLegend","ChartAxisTicks","ChartTicks","chartSuiteKey","chartComponentSuites","WeakMap","createChartComponents","cached","get","suite","Provider","boundChartProvider","Root","boundChartRoot","Cartesian","Radial","XAxis","YAxis","AxisView","Line","Scatter","Bar","Bars","Heatmap","Pie","Donut","Navigation","ViewControls","ExternalViewControls","PanControl","ZoomControl","ResetView","Plot","Renderer","Canvas","Grid","GridLines","Legend","AxisTicks","Ticks","resolved","publishCommand","publishProposal","publishChange","owned","controlledFlags","previous","onActiveDatumChange","onCursorChange","onSelectionChange","onViewChange","publishComposableCommand","publishComposableProposal","publishComposableChange","expectedRevision","defaultSelection","fromEntries","entries","entry"],"sources":["../src/chart.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"chart.js","names":["createChartController","createDOMChart","useControlledStateInvariant","defineComponent","getCurrentScope","h","inject","nextTick","onBeforeUnmount","onMounted","onScopeDispose","provide","shallowRef","toValue","watch","useChart","options","TypeError","model","undefined","definition","assertControlledDefaults","controlled","controlledValues","source","viewCapabilities","Object","freeze","controller","limits","defaultValues","keys","length","binding","bindController","stops","push","replaceModel","deep","capabilities","replaceDefinition","sourceRef","activeDatum","cursor","selection","view","value","syncControlledValues","disposeBinding","dispose","result","stop","splice","ChartDeclarations","records","Map","publish","token","scheduled","active","publications","readRecords","constructor","this","register","kind","read","set","schedule","touch","delete","publishNow","assemble","getDiagnostics","registeredRecords","size","values","sort","left","right","coordinates","filter","record","coordinate","axes","map","layers","navigationRecords","controls","navigation","alternative","includes","drag","pinch","controlAlternative","clear","chartKey","Symbol","chartPublicKey","chartOwnerKey","chartAxisKey","chartControlAxisKey","useInternalChart","context","useChartContext","ChartProviderRuntime","name","props","type","required","setup","slots","snapshot","getSnapshot","unsubscribe","subscribeSnapshots","next","owner","dispatch","event","ok","applyPatch","patch","state","getDefinition","ChartProvider","useChartSelector","selector","useChartContextSelector","equals","useChartLayerSelector","id","find","layer","useChartAxisSelector","axis","is","selected","flush","ChartRootRuntime","inheritAttrs","default","modelValue","defaultModelValue","String","Number","defaultActiveDatum","defaultCursor","defaultView","dom","onError","Function","emits","_value","command","_command","attrs","emit","expose","assertRootControlledDefaults","ownerContext","ownsController","root","canvas","projection","connection","assembled","unsubscribeCommands","unsubscribeSnapshots","previousState","mounted","definitionAccepted","report","error","publishSnapshot","current","prior","failure","publishRootCommand","publishRootProposal","onCommand","publishVueChartCommand","connect","onProjectionChange","onProjectionError","projectionError","getProjection","publishDefinition","replaced","code","message","setNavigation","refresh","declarations","publicContext","syncControlled","accessibilityLabel","label","setAccessibilityLabel","renderStyle","style","setRenderStyle","initialValues","borrowed","synced","subscribeCommands","disconnect","getDeclarationDiagnostics","ref","element","ChartRoot","coordinateProps","ChartCartesian","_props","ChartRadial","axisProps","scale","domain","field","getValue","ticks","unit","axisComponent","orientation","axisDefinition","ChartXAxis","ChartYAxis","defined","layerBaseProps","data","Array","getId","cartesianLayerProps","xAxis","yAxis","getX","getY","layerComponent","extraProps","toUpperCase","slice","layerDefinition","ChartLine","ChartScatter","ChartBar","ChartBars","ChartHeatmap","valueField","ChartPie","getLabel","labelField","ChartDonut","innerRadius","outerRadius","ChartAxisView","initial","minimumSpan","maximumSpan","update","inheritedAxis","viewCapability","axisID","ChartNavigation","wheel","wheelModifier","Boolean","keyboard","navigationDefinition","sameNavigation","sameStableIDs","index","ChartViewControls","initialAxis","ChartExternalViewControls","axisControlProps","ChartPanControl","direction","step","requiredControlAxis","disabled","onClick","fraction","phase","ChartZoomControl","factor","anchor","ChartResetView","to","ChartPlot","ChartRenderer","ChartCanvas","semanticMarker","part","ChartGrid","ChartGridLines","ChartLegend","ChartAxisTicks","ChartTicks","chartSuiteKey","chartComponentSuites","WeakMap","createChartComponents","cached","get","suite","Provider","boundChartProvider","Root","boundChartRoot","Cartesian","Radial","XAxis","YAxis","AxisView","Line","Scatter","Bar","Bars","Heatmap","Pie","Donut","Navigation","ViewControls","ExternalViewControls","PanControl","ZoomControl","ResetView","Plot","Renderer","Canvas","Grid","GridLines","Legend","AxisTicks","Ticks","resolved","publishCommand","publishProposal","publishChange","owned","controlledFlags","previous","onActiveDatumChange","onCursorChange","onSelectionChange","onViewChange","publishComposableCommand","publishComposableProposal","publishComposableChange","expectedRevision","defaultSelection","fromEntries","entries","entry"],"sources":["../src/chart.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/checkbox-group.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{applyCheckboxGroupEvent,tryCreateCheckboxGroupState}from"@sectile/core/checkbox-group";import{tryReconcileCollectionIdentities}from"@sectile/core/adapter-runtime";import{createSequence}from"@sectile/core/sequence";import{Primitive}from"./primitive.js";import{CheckboxIndicator,CheckboxRoot}from"./checkbox.js";import{providePartContract}from"./internal/part-contract.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{provideFormControlOwner}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{hiddenValueSubmissionCapabilities,useCompositeFormControl}from"./form/control.js";const key=Symbol("SectileCheckboxGroupRoot");const CheckboxGroupRoot=defineComponent({name:"SectileCheckboxGroupRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},name:{type:String,default:void 0},form:{type:String,default:void 0},label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){providePartContract("checkbox-group",{root:"item"});const rootElement=shallowRef(null);const submissionElements=[];const controlled=useControlledStateInvariant("CheckboxGroupRoot","modelValue",()=>props.modelValue);const initialValue=Object.freeze([...controlled?props.modelValue??[]:props.defaultValue]);const domain=shallowRef(createSequence(props.items));const initialState=tryCreateCheckboxGroupState(domain.value,{selected:initialValue});if(!initialState.ok)throw new TypeError(initialState.error.message);const selectedValue=shallowRef(initialState.value.selection.selected);const selected=computed(()=>new Set(selectedValue.value));const participation=useCompositeFormControl({root:rootElement,submissions:()=>state.value.value.map((_,index)=>({element:()=>submissionElements[index]??null,capabilities:hiddenValueSubmissionCapabilities})),reset:()=>{if(!controlled){const reconciled=tryReconcileCollectionIdentities(props.items,initialValue,null,[],"multiple",{preserveNullCurrent:true});if(!reconciled.ok)throw new TypeError(reconciled.error.message);selectedValue.value=reconciled.value.selected}}});provideFormControlOwner();const state=computed(()=>Object.freeze({value:selectedValue.value,disabled:
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{applyCheckboxGroupEvent,tryCreateCheckboxGroupState}from"@sectile/core/checkbox-group";import{tryReconcileCollectionIdentities}from"@sectile/core/adapter-runtime";import{createSequence}from"@sectile/core/sequence";import{Primitive}from"./primitive.js";import{CheckboxIndicator,CheckboxRoot}from"./checkbox.js";import{providePartContract}from"./internal/part-contract.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{provideFormControlOwner}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{hiddenValueSubmissionCapabilities,useCompositeFormControl,useFormSubmissionProps,useFormControlFlags}from"./form/control.js";const key=Symbol("SectileCheckboxGroupRoot");const CheckboxGroupRoot=defineComponent({__sectileFormLabelMode:"labelledby",name:"SectileCheckboxGroupRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},name:{type:String,default:void 0},form:{type:String,default:void 0},label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const flags=useFormControlFlags(props);providePartContract("checkbox-group",{root:"item"});const rootElement=shallowRef(null);const submissionElements=[];const controlled=useControlledStateInvariant("CheckboxGroupRoot","modelValue",()=>props.modelValue);const initialValue=Object.freeze([...controlled?props.modelValue??[]:props.defaultValue]);const domain=shallowRef(createSequence(props.items));const initialState=tryCreateCheckboxGroupState(domain.value,{selected:initialValue});if(!initialState.ok)throw new TypeError(initialState.error.message);const selectedValue=shallowRef(initialState.value.selection.selected);const selected=computed(()=>new Set(selectedValue.value));const submissionProps=useFormSubmissionProps({element:()=>null,capabilities:hiddenValueSubmissionCapabilities},props);const participation=useCompositeFormControl({root:rootElement,submissions:()=>state.value.value.map((_,index)=>({element:()=>submissionElements[index]??null,capabilities:hiddenValueSubmissionCapabilities})),reset:()=>{if(!controlled){const reconciled=tryReconcileCollectionIdentities(props.items,initialValue,null,[],"multiple",{preserveNullCurrent:true});if(!reconciled.ok)throw new TypeError(reconciled.error.message);selectedValue.value=reconciled.value.selected}}});provideFormControlOwner();const state=computed(()=>Object.freeze({value:selectedValue.value,disabled:flags.value.disabled,readonly:flags.value.readonly}));watch(()=>props.items,()=>{const nextDomain=createSequence(props.items);const requested=controlled?props.modelValue??[]:selectedValue.value;const reconciled=tryReconcileCollectionIdentities(props.items,requested,null,[],"multiple",{preserveNullCurrent:true});if(!reconciled.ok)throw new TypeError(reconciled.error.message);domain.value=nextDomain;selectedValue.value=reconciled.value.selected;if(controlled&&reconciled.value.selectionChanged){emit("update:modelValue",reconciled.value.selected)}},{flush:"sync"});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const next=tryCreateCheckboxGroupState(domain.value,{selected:value});if(!next.ok)throw new TypeError(next.error.message);selectedValue.value=next.value.selection.selected},{flush:"sync"});provide(key,{state,selected,name:computed(()=>props.name),form:computed(()=>props.form),required:computed(()=>flags.value.required),toggle:(value,checked)=>{if(flags.value.disabled||flags.value.readonly)return;const current=tryCreateCheckboxGroupState(domain.value,{selected:selectedValue.value});if(!current.ok)throw new TypeError(current.error.message);if(current.value.selection.has(value)===(checked===true))return;const update=applyCheckboxGroupEvent(domain.value,current.value,{type:"toggle",id:value});if(!update.ok)throw new TypeError(update.error.message);const next=update.value.state.selection.selected;if(!controlled)selectedValue.value=next;emit("update:modelValue",next)}});return()=>{const root=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement.value=element instanceof HTMLElement?element:null},role:"group","aria-label":props.label,"aria-disabled":flags.value.disabled?"true":void 0,"aria-readonly":flags.value.readonly?"true":void 0,"data-scope":"checkbox-group","data-part":"root"},participation.controlProps.value),{default:()=>slots["default"]?.(state.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0)return root;return[root,...state.value.value.map((value,index)=>h("input",{ref:element=>{submissionElements[index]=element instanceof HTMLInputElement?element:null},type:"hidden",...submissionProps.value,value,style:visuallyHiddenInputStyle}))]}}});const CheckboxGroupItem=defineComponent({name:"SectileCheckboxGroupItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},required:{type:Boolean,default:void 0},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot();const checked=computed(()=>root.selected.value.has(props.value));return()=>h(CheckboxRoot,mergeProps(attrs,{as:props.as,asChild:props.asChild,modelValue:checked.value,disabled:root.state.value.disabled||props.disabled,readonly:root.state.value.readonly,required:props.required??root.required.value,value:props.value,"onUpdate:modelValue":next=>root.toggle(props.value,next)}),{default:()=>slots["default"]?.({checked:checked.value,disabled:root.state.value.disabled||props.disabled,readonly:root.state.value.readonly})})}});const CheckboxGroupIndicator=CheckboxIndicator;function useRoot(){const root=inject(key);if(root===void 0)throw new TypeError("CheckboxGroupItem must be used inside CheckboxGroupRoot.");return root}export{CheckboxGroupIndicator,CheckboxGroupItem,CheckboxGroupRoot};
|
|
2
2
|
//# sourceMappingURL=checkbox-group.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/checkbox-group.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,OAAQ,WAAY,QAAS,WAAY,UAElE,MACP,OAAS,wBAAyB,gCAAmC,+BACrE,OAAS,qCAAwC,gCACjD,OAAS,mBAAsB,yBAC/B,OAAS,cAAmC,iBAC5C,OAAS,kBAAmB,iBAAwC,gBACpE,OAAS,wBAA2B,8BACpC,OAAS,6BAAgC,0BACzC,OAAS,4BAA+B,oBACxC,OAAS,gCAAmC,iCAC5C,OACE,kCACA,
|
|
1
|
+
{"version":3,"sources":["../src/checkbox-group.ts"],"mappings":"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","names":[],"file":"checkbox-group.js"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { type DefineSetupFnComponent, type EmitsToProps, type PropType, type PublicProps, type SlotsType, type VNodeChild } from 'vue';
|
|
2
|
+
import type { CheckboxValue } from '@sectile/core/checkbox';
|
|
3
|
+
import { type TreeNodeInput } from '@sectile/core/tree';
|
|
4
|
+
import { type PrimitiveAs } from './primitive.js';
|
|
5
|
+
import type { TreeViewRootSlotProps, TreeViewItemSlotProps, TreeViewPartProps, TreeViewGroupProps } from './tree-view.js';
|
|
6
|
+
export interface CheckboxTreeRootProps<ID extends string = string> {
|
|
7
|
+
readonly nodes: readonly TreeNodeInput<ID>[];
|
|
8
|
+
readonly modelValue?: readonly NoInfer<ID>[];
|
|
9
|
+
readonly defaultValue?: readonly NoInfer<ID>[];
|
|
10
|
+
readonly expandedValues?: readonly NoInfer<ID>[];
|
|
11
|
+
readonly defaultExpandedValues?: readonly NoInfer<ID>[];
|
|
12
|
+
readonly highlightedValue?: NoInfer<ID> | null;
|
|
13
|
+
readonly defaultHighlightedValue?: NoInfer<ID> | null;
|
|
14
|
+
readonly disabledItems?: readonly NoInfer<ID>[];
|
|
15
|
+
readonly disabledPropagation?: 'self' | 'subtree';
|
|
16
|
+
readonly disabled?: boolean;
|
|
17
|
+
readonly?: boolean;
|
|
18
|
+
readonly label?: string;
|
|
19
|
+
readonly as?: PrimitiveAs;
|
|
20
|
+
readonly asChild?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export type CheckboxTreeRootSlotProps<ID extends string = string> = Omit<TreeViewRootSlotProps, 'value' | 'expandedValues' | 'highlightedValue'> & {
|
|
23
|
+
readonly value: readonly ID[];
|
|
24
|
+
readonly expandedValues: readonly ID[];
|
|
25
|
+
readonly highlightedValue: ID | null;
|
|
26
|
+
};
|
|
27
|
+
export interface CheckboxTreeItemProps extends TreeViewPartProps {
|
|
28
|
+
readonly value: string;
|
|
29
|
+
readonly disabled?: never;
|
|
30
|
+
}
|
|
31
|
+
export interface CheckboxTreeItemSlotProps extends TreeViewItemSlotProps {
|
|
32
|
+
readonly checked: CheckboxValue;
|
|
33
|
+
}
|
|
34
|
+
export type CheckboxTreeGroupProps = TreeViewGroupProps;
|
|
35
|
+
export interface CheckboxTreeDisclosureProps extends TreeViewPartProps {
|
|
36
|
+
readonly for: string;
|
|
37
|
+
}
|
|
38
|
+
export type CheckboxTreeEmits<ID extends string = string> = {
|
|
39
|
+
'update:modelValue': [value: readonly NoInfer<ID>[]];
|
|
40
|
+
'update:expandedValues': [value: readonly NoInfer<ID>[]];
|
|
41
|
+
'update:highlightedValue': [value: NoInfer<ID> | null];
|
|
42
|
+
};
|
|
43
|
+
export interface CheckboxTreeSlots<ID extends string = string> {
|
|
44
|
+
default?: (state: CheckboxTreeRootSlotProps<ID>) => VNodeChild;
|
|
45
|
+
}
|
|
46
|
+
export interface CheckboxTreeExpose {
|
|
47
|
+
readonly element: HTMLElement | null;
|
|
48
|
+
focus(options?: FocusOptions): void;
|
|
49
|
+
}
|
|
50
|
+
type RootProps<ID extends string> = CheckboxTreeRootProps<ID> & PublicProps & EmitsToProps<CheckboxTreeEmits<ID>>;
|
|
51
|
+
type RootInstance<ID extends string> = InstanceType<DefineSetupFnComponent<CheckboxTreeRootProps<ID>, CheckboxTreeEmits<ID>, SlotsType<CheckboxTreeSlots<ID>>>> & CheckboxTreeExpose;
|
|
52
|
+
export declare const CheckboxTreeRoot: new <const ID extends string = string>(props: RootProps<ID>) => Omit<RootInstance<ID>, '$props'> & {
|
|
53
|
+
readonly $props: RootProps<ID>;
|
|
54
|
+
};
|
|
55
|
+
export declare const CheckboxTreeGroup: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
56
|
+
forcePresent: {
|
|
57
|
+
readonly type: BooleanConstructor;
|
|
58
|
+
readonly default: false;
|
|
59
|
+
};
|
|
60
|
+
as: {
|
|
61
|
+
type: PropType<PrimitiveAs>;
|
|
62
|
+
default: string;
|
|
63
|
+
};
|
|
64
|
+
asChild: {
|
|
65
|
+
type: BooleanConstructor;
|
|
66
|
+
default: boolean;
|
|
67
|
+
};
|
|
68
|
+
for: {
|
|
69
|
+
type: StringConstructor;
|
|
70
|
+
required: true;
|
|
71
|
+
};
|
|
72
|
+
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
73
|
+
forcePresent: {
|
|
74
|
+
readonly type: BooleanConstructor;
|
|
75
|
+
readonly default: false;
|
|
76
|
+
};
|
|
77
|
+
as: {
|
|
78
|
+
type: PropType<PrimitiveAs>;
|
|
79
|
+
default: string;
|
|
80
|
+
};
|
|
81
|
+
asChild: {
|
|
82
|
+
type: BooleanConstructor;
|
|
83
|
+
default: boolean;
|
|
84
|
+
};
|
|
85
|
+
for: {
|
|
86
|
+
type: StringConstructor;
|
|
87
|
+
required: true;
|
|
88
|
+
};
|
|
89
|
+
}>> & Readonly<{}>, {
|
|
90
|
+
forcePresent: boolean;
|
|
91
|
+
as: PrimitiveAs;
|
|
92
|
+
asChild: boolean;
|
|
93
|
+
}, SlotsType<{
|
|
94
|
+
default: (props: TreeViewRootSlotProps) => VNodeChild;
|
|
95
|
+
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
96
|
+
export declare const CheckboxTreeItem: DefineSetupFnComponent<CheckboxTreeItemProps, {}, SlotsType<{
|
|
97
|
+
default?: (state: CheckboxTreeItemSlotProps) => VNodeChild;
|
|
98
|
+
}>>;
|
|
99
|
+
export declare const CheckboxTreeDisclosure: DefineSetupFnComponent<CheckboxTreeDisclosureProps, {}, SlotsType<{
|
|
100
|
+
default?: (state: CheckboxTreeItemSlotProps) => VNodeChild;
|
|
101
|
+
}>>;
|
|
102
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{computed,defineComponent,h,mergeProps,onBeforeUnmount,onBeforeUpdate,onMounted,onUpdated,shallowRef,watch}from'vue';import{createTree}from'@sectile/core/tree';import{unwrap}from'@sectile/core/result';import{connectCheckboxTree,createCheckboxTreeController}from'@sectile/dom/checkbox-tree';import{Primitive}from'./primitive.js';import{reconcileCollectionState,sameIDs}from'./internal/collection.js';import{useControlledStateInvariant}from'./internal/controlled-state.js';import{createTreeGroup,createTreeItem,createTreeDisclosure,provideTreeParts}from'./internal/tree-parts.js';import{useHostActive}from'./host-provider.js';const empty=/* @__PURE__ */Object.freeze([]);const noItems=/* @__PURE__ */Object.freeze({has:_id=>false});function sameOwner(owner,props){return owner.propagation===props.disabledPropagation&&owner.disabled===props.disabled&&owner.readonly===props.readonly&&sameIDs(owner.disabledItems,props.disabledItems)&&owner.nodes.length===props.nodes.length&&owner.nodes.every((node,index)=>node.id===props.nodes[index]?.id&&node.parentID===props.nodes[index]?.parentID)}const CheckboxTreeRootImplementation=/* @__PURE__ */defineComponent({name:'SectileCheckboxTreeRoot',inheritAttrs:false,props:{nodes:{type:Array,required:true},modelValue:{type:Array,default:undefined},defaultValue:{type:Array,default:()=>empty},expandedValues:{type:Array,default:undefined},defaultExpandedValues:{type:Array,default:()=>empty},highlightedValue:{type:String,default:undefined},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>empty},disabledPropagation:{type:String,default:'subtree'},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:String,as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:modelValue':_value=>true,'update:expandedValues':_value=>true,'update:highlightedValue':_value=>true},slots:Object,setup(props,{attrs,emit,slots,expose}){const element=shallowRef(),controller=shallowRef();const accepted=shallowRef();const items=new Map,disclosures=new Map;const active=useHostActive();let connection,owner,generation=0,mounted=false,alive=true,restoreFocus=false;let previousElement,elementHadFocus=false;const controlled={value:useControlledStateInvariant('CheckboxTreeRoot','modelValue',()=>props.modelValue),expanded:useControlledStateInvariant('CheckboxTreeRoot','expandedValues',()=>props.expandedValues),highlighted:useControlledStateInvariant('CheckboxTreeRoot','highlightedValue',()=>props.highlightedValue)};const publish=()=>{accepted.value=controller.value?.getSnapshot()};const refreshParts=()=>{if(!connection)return;for(const[node,id]of items)connection.setItemAttributes(node,{id});for(const[node,id]of disclosures)connection.setDisclosureAttributes(node,id)};const refresh=()=>{publish();refreshParts()};const retire=()=>{connection?.disconnect();connection=undefined};const attach=()=>{retire();if(!alive||!mounted||!active.value||!element.value||!controller.value){if(!active.value||!alive)restoreFocus=false;return}connection=connectCheckboxTree({root:element.value,controller:controller.value,disabled:props.disabled,readOnly:props.readonly,onUpdate:refresh});connection.setTreeAttributes(props.label);refreshParts()};const build=()=>{if(!alive||owner&&sameOwner(owner,props))return;const previous=controller.value?.getSnapshot().state;const requestedValue=controlled.value?props.modelValue:previous?.selection.selected??props.defaultValue;const requestedExpanded=controlled.expanded?props.expandedValues:previous?.expansion.ids??props.defaultExpandedValues;const requestedHighlight=controlled.highlighted?props.highlightedValue:previous?previous.cursor.current:props.defaultHighlightedValue;const tree=createTree(props.nodes);const value=previous?reconcileCollectionState(tree.preorder().ids.filter(id=>tree.isLeaf(id)===true),requestedValue,null,empty,'multiple',{preserveNullCurrent:true}).selected:requestedValue;const expanded=tree.normalizeExpansion(requestedExpanded).ids;const nextGeneration=generation+1;const current=()=>alive&&generation===nextGeneration;const next=unwrap(createCheckboxTreeController({tree,...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:null}:{defaultHighlightedValue:null},disabledItems:props.disabledItems,disabledPropagation:props.disabledPropagation,disabled:props.disabled,readOnly:props.readonly,onValueChange:({value:proposed})=>{if(current()){publish();emit('update:modelValue',proposed)}},onExpandedValuesChange:({value:proposed})=>{if(current()){publish();emit('update:expandedValues',proposed)}},onHighlightedValueChange:({value:proposed})=>{if(current()){publish();emit('update:highlightedValue',proposed)}}}));const visible=tree.visible(expanded).ids;const highlighted=reconcileCollectionState(visible,empty,requestedHighlight,visible.filter(id=>next.isDisabled(id)!==false),'multiple',{preserveNullCurrent:true}).current;if(controlled.highlighted)unwrap(next.syncControlledValues({...controlled.value?{value:next.getSnapshot().state.selection.selected}:{},...controlled.expanded?{expandedValues:expanded}:{},highlightedValue:highlighted}));else if(highlighted!==null&&!props.disabled){const focused=next.handleEvent({type:'focus',id:highlighted});if(!focused.ok)throw new TypeError(focused.error.message)}restoreFocus=active.value&&element.value!==undefined&&element.value.contains(element.value.ownerDocument.activeElement);retire();generation=nextGeneration;controller.value=next;owner={nodes:props.nodes.map(node=>({id:node.id,parentID:node.parentID})),disabledItems:[...props.disabledItems],propagation:props.disabledPropagation,disabled:props.disabled,readonly:props.readonly};publish();attach();const state=next.getSnapshot().state;if(current()&&!sameIDs(requestedValue,state.selection.selected)&&(previous||controlled.value))emit('update:modelValue',state.selection.selected);if(current()&&!sameIDs(requestedExpanded,state.expansion.ids)&&(previous||controlled.expanded))emit('update:expandedValues',state.expansion.ids);if(current()&&requestedHighlight!==state.cursor.current&&(previous||controlled.highlighted))emit('update:highlightedValue',state.cursor.current)};build();const state=computed(()=>({value:accepted.value?.state.selection.selected??empty,expandedValues:accepted.value?.state.expansion.ids??empty,highlightedValue:accepted.value?.state.cursor.current??null,disabled:props.disabled||!active.value,readonly:props.readonly}));provideTreeParts({scope:'checkbox-tree',state,selectedItems:computed(()=>accepted.value?.state.selection??noItems),expandedItems:computed(()=>accepted.value?.state.expansion??noItems),disabledItems:computed(()=>noItems),checking:{getChecked:id=>{accepted.value;return controller.value?.getChecked(id)??null},isDisabled:id=>{accepted.value;return controller.value?.isDisabled(id)??null},levelOf:id=>(controller.value?.tree.depthOf(id)??0)+1,isLeaf:id=>controller.value?.tree.isLeaf(id)!==false},registerItem:(node,id)=>{if(!alive)return;items.set(node,id);connection?.setItemAttributes(node,{id})},unregisterItem:(node,id)=>{if(items.get(node)!==id)return;items.delete(node);connection?.releaseItem(node,id)},registerDisclosure:(node,id)=>{if(!alive)return;disclosures.set(node,id);connection?.setDisclosureAttributes(node,id)},unregisterDisclosure:(node,id)=>{if(disclosures.get(node)===id)disclosures.delete(node)}});expose({get element(){return element.value??null},focus(options){if(alive&&active.value)element.value?.focus(options)}});onMounted(()=>{mounted=true;attach()});onBeforeUpdate(()=>{previousElement=element.value;elementHadFocus=element.value?.contains(element.value.ownerDocument.activeElement)??false});onUpdated(()=>{if((restoreFocus||elementHadFocus&&previousElement!==element.value)&&alive&&active.value)connection?.focusCurrent();restoreFocus=false;previousElement=undefined;elementHadFocus=false});onBeforeUnmount(()=>{alive=false;mounted=false;generation++;retire();items.clear();disclosures.clear();controller.value=undefined;accepted.value=undefined;element.value=undefined});watch([active,element],attach,{flush:'sync'});watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabledPropagation,()=>props.disabled,()=>props.readonly],build);watch(()=>props.label,label=>connection?.setTreeAttributes(label));watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(!alive||!controller.value)return;const values={...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}};const result=connection?connection.syncControlledValues(values):controller.value.syncControlledValues(values);if(!result.ok)throw new TypeError(result.error.message);if(!connection)publish()},{flush:'post'});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=typeof HTMLElement!=='undefined'&&node instanceof HTMLElement?node:undefined},role:'tree','aria-label':props.label,'aria-multiselectable':'true','aria-disabled':state.value.disabled?'true':undefined,'aria-readonly':props.readonly?'true':undefined,tabindex:state.value.disabled||state.value.highlightedValue!==null?-1:0,'data-scope':'checkbox-tree','data-part':'root'}),{default:()=>slots.default?.(state.value)})}});export const CheckboxTreeRoot=CheckboxTreeRootImplementation;export const CheckboxTreeGroup=/* @__PURE__ */createTreeGroup('SectileCheckboxTreeGroup','checkbox-tree');export const CheckboxTreeItem=/* @__PURE__ */createTreeItem('SectileCheckboxTreeItem','checkbox-tree');export const CheckboxTreeDisclosure=/* @__PURE__ */createTreeDisclosure('SectileCheckboxTreeDisclosure','checkbox-tree');
|
|
2
|
+
//# sourceMappingURL=checkbox-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-tree.js","names":["computed","defineComponent","h","mergeProps","onBeforeUnmount","onBeforeUpdate","onMounted","onUpdated","shallowRef","watch","createTree","unwrap","connectCheckboxTree","createCheckboxTreeController","Primitive","reconcileCollectionState","sameIDs","useControlledStateInvariant","createTreeGroup","createTreeItem","createTreeDisclosure","provideTreeParts","useHostActive","empty","Object","freeze","noItems","has","_id","sameOwner","owner","props","propagation","disabledPropagation","disabled","readonly","disabledItems","nodes","length","every","node","index","id","parentID","CheckboxTreeRootImplementation","name","inheritAttrs","type","Array","required","modelValue","default","undefined","defaultValue","expandedValues","defaultExpandedValues","highlightedValue","String","defaultHighlightedValue","Boolean","label","as","Function","asChild","emits","_value","slots","setup","attrs","emit","expose","element","controller","accepted","items","Map","disclosures","active","connection","generation","mounted","alive","restoreFocus","previousElement","elementHadFocus","controlled","value","expanded","highlighted","publish","getSnapshot","refreshParts","setItemAttributes","setDisclosureAttributes","refresh","retire","disconnect","attach","root","readOnly","onUpdate","setTreeAttributes","build","previous","state","requestedValue","selection","selected","requestedExpanded","expansion","ids","requestedHighlight","cursor","current","tree","preorder","filter","isLeaf","preserveNullCurrent","normalizeExpansion","nextGeneration","next","onValueChange","proposed","onExpandedValuesChange","onHighlightedValueChange","visible","isDisabled","syncControlledValues","focused","handleEvent","ok","TypeError","error","message","contains","ownerDocument","activeElement","map","scope","selectedItems","expandedItems","checking","getChecked","levelOf","depthOf","registerItem","set","unregisterItem","get","delete","releaseItem","registerDisclosure","unregisterDisclosure","focus","options","focusCurrent","clear","flush","values","result","elementRef","HTMLElement","role","tabindex","CheckboxTreeRoot","CheckboxTreeGroup","CheckboxTreeItem","CheckboxTreeDisclosure"],"sources":["../src/checkbox-tree.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/checkbox.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createCheckboxController,getCheckboxAttributes,getCheckboxInputAttributes}from"@sectile/dom/checkbox";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{usePartContract}from"./internal/part-contract.js";import{hiddenInputSubmissionCapabilities,useCompositeFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const checkboxContextKey=Symbol("SectileCheckbox");const CheckboxRoot=defineComponent({name:"SectileCheckboxRoot",inheritAttrs:false,props:{modelValue:{type:[Boolean,String],default:void 0},defaultValue:{type:[Boolean,String],default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},name:{type:String,default:void 0},value:{type:String,default:"on"},form:{type:String,default:void 0},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const rootElement=shallowRef(null);const inputElement=shallowRef(null);const controlled=useControlledStateInvariant("CheckboxRoot","modelValue",()=>props.modelValue);const initialValue=controlled?props.modelValue:props.defaultValue;const controller=shallowRef(createController(controlled,controlled?props.modelValue:props.defaultValue,props,emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const value=controlled?props.modelValue:fromDOMValue(snapshot.value.state.checked);controller.value=createController(controlled,value,props,emit);refresh()};const participation=useCompositeFormControl({root:rootElement,focusTarget:rootElement,submissions:[{element:inputElement,capabilities:hiddenInputSubmissionCapabilities}],reset:()=>{queueMicrotask(()=>{controller.value=createController(controlled,controlled?props.modelValue:initialValue,props,emit);refresh()})}});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValue(toDOMValue(value));if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createCheckboxController,getCheckboxAttributes,getCheckboxInputAttributes}from"@sectile/dom/checkbox";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./input/native-input.js";import{usePartContract}from"./internal/part-contract.js";import{hiddenInputSubmissionCapabilities,useCompositeFormControl,useFormSubmissionProps,useFormControlFlags}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const checkboxContextKey=Symbol("SectileCheckbox");const CheckboxRoot=defineComponent({__sectileFormLabelMode:"labelledby",name:"SectileCheckboxRoot",inheritAttrs:false,props:{modelValue:{type:[Boolean,String],default:void 0},defaultValue:{type:[Boolean,String],default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},name:{type:String,default:void 0},value:{type:String,default:"on"},form:{type:String,default:void 0},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const flags=useFormControlFlags(props);const rootElement=shallowRef(null);const inputElement=shallowRef(null);const controlled=useControlledStateInvariant("CheckboxRoot","modelValue",()=>props.modelValue);const initialValue=controlled?props.modelValue:props.defaultValue;const controller=shallowRef(createController(controlled,controlled?props.modelValue:props.defaultValue,{...props,...flags.value},emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const value=controlled?props.modelValue:fromDOMValue(snapshot.value.state.checked);controller.value=createController(controlled,value,{...props,...flags.value},emit);refresh()};const submissionProps=useFormSubmissionProps({element:inputElement,capabilities:hiddenInputSubmissionCapabilities},props);const participation=useCompositeFormControl({root:rootElement,focusTarget:rootElement,submissions:[{element:inputElement,capabilities:hiddenInputSubmissionCapabilities}],reset:()=>{queueMicrotask(()=>{controller.value=createController(controlled,controlled?props.modelValue:initialValue,{...props,...flags.value},emit);refresh()})}});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValue(toDOMValue(value));if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>flags.value.disabled,()=>flags.value.readonly],rebuild);const slotProps=computed(()=>Object.freeze({checked:fromDOMValue(snapshot.value.state.checked),isChecked:snapshot.value.state.checked===true,isIndeterminate:snapshot.value.state.checked==="mixed",disabled:flags.value.disabled,readonly:flags.value.readonly}));const attributes=computed(()=>getCheckboxAttributes(snapshot.value.state,{disabled:flags.value.disabled,readOnly:flags.value.readonly,required:flags.value.required,native:true}));const inputAttributes=computed(()=>getCheckboxInputAttributes(snapshot.value.state,{...props.name===void 0?{}:{name:props.name},value:props.value,...props.form===void 0?{}:{form:props.form},required:props.required,disabled:props.disabled}));const dataState=computed(()=>attributes.value["data-state"]);const part=usePartContract("checkbox","root");provide(checkboxContextKey,{slotProps,dataState,partContract:part});const handleClick=event=>{if(event.defaultPrevented)return;if(controller.value.handleEvent("toggle"))refresh()};return()=>{const root=h(Primitive,mergeProps(attrs,attributes.value,{elementRef:element=>{rootElement.value=element},as:props.as,asChild:props.asChild,...props.as==="button"&&!props.asChild?{type:"button"}:{},"data-scope":part.scope,"data-part":part.part,onClick:handleClick},participation.controlProps.value),{default:()=>slots["default"]?.(slotProps.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return root;return[root,h("input",mergeProps(inputAttributes.value,submissionProps.value,{ref:inputElement,style:visuallyHiddenInputStyle}))]}}});const CheckboxIndicator=defineComponent({name:"SectileCheckboxIndicator",inheritAttrs:false,props:{...conditionalPresenceProps,as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=inject(checkboxContextKey);if(context===void 0){throw new TypeError("CheckboxIndicator must be used inside CheckboxRoot.")}const part={scope:context.partContract.scope,part:context.partContract.parts["indicator"]??"indicator"};const active=computed(()=>context.slotProps.value.checked!==false);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);return()=>{const state=context.slotProps.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,hidden:presence.hidden.value,"aria-hidden":"true","data-scope":part.scope,"data-part":part.part,"data-state":context.dataState.value}),{default:()=>slots["default"]?.(state)})}}});function createController(controlled,value,props,emit){const result=createCheckboxController({...controlled?{value:toDOMValue(value)}:{defaultValue:toDOMValue(value)},disabled:props.disabled??false,readOnly:props.readonly??false,onValueChange:next=>{emit("update:modelValue",fromDOMValue(next))}});if(!result.ok)throw new TypeError(result.error.message);return result.value}function toDOMValue(value){return value==="indeterminate"?"mixed":value}function fromDOMValue(value){return value==="mixed"?"indeterminate":value}export{CheckboxIndicator,CheckboxRoot};
|
|
2
2
|
//# sourceMappingURL=checkbox.js.map
|