@sectile/vue 0.16.1 → 0.16.3
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/dist/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/grid.js +1 -1
- package/dist/grid.js.map +1 -1
- package/dist/internal/date-picker.js +1 -1
- package/dist/internal/date-picker.js.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/month-picker.d.ts +2 -1
- package/dist/month-range-picker.d.ts +5 -3
- package/dist/year-picker.d.ts +2 -1
- package/dist/year-range-picker.d.ts +3 -1
- package/package.json +20 -19
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";function useChart(options){if(options===null||typeof options!=="object")throw new TypeError("useChart options must be an object.");if(options.model===void 0===(options.definition===void 0)){throw new TypeError("useChart requires exactly one model or declarative definition.")}assertControlledDefaults(options);const controlled=controlledValues(options);const source=options.definition===void 0?{model:toValue(options.model)}:{definition:toValue(options.definition),viewCapabilities:toValue(options.viewCapabilities??(()=>Object.freeze([])))};const controller=createChartController({...source,...options.limits===void 0?{}:{limits:options.limits},...defaultValues(options),...Object.keys(controlled).length===0?{}:{controlled}});const binding=bindController(controller,options,true);const stops=[];if(options.model!==void 0){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!==void 0)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()!==void 0)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":void 0;if(navigation!==void 0&&((navigation.drag??"none")!=="none"||navigation.pinch===true)&&alternative===void 0){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===void 0?{}:{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===void 0)throw new TypeError("Chart component must be used inside ChartRoot.");return context}function useChartContext(){const context=inject(chartPublicKey);if(context===void 0)throw new TypeError("useChartContext must be used inside ChartRoot or ChartProvider.");return context}const ChartProviderRuntime=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}});const ChartProvider=ChartProviderRuntime;function useChartSelector(selector,options={}){const context=useChartContext();return useChartContextSelector(context,()=>selector(context.snapshot.value?.state??null),options.equals)}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)}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=defineComponent({name:"SectileChartRoot",inheritAttrs:false,props:{limits:{type:Object,default:void 0},modelValue:{type:Object,default:void 0},defaultModelValue:{type:Object,default:void 0},activeDatum:{type:[String,Number],default:void 0},defaultActiveDatum:{type:[String,Number],default:void 0},cursor:{type:[String,Number],default:void 0},defaultCursor:{type:[String,Number],default:void 0},view:{type:Object,default:void 0},defaultView:{type:Object,default:void 0},patch:{type:Object,default:void 0},dom:{type:Object,default:void 0},onError:{type:Function,default:void 0}},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,void 0);const ownsController=ownerContext===void 0;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!==void 0)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!==void 0)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!==void 0)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!==void 0&&!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!==void 0&&!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===void 0)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===void 0)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===void 0||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 controlledValues2=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!==void 0?{activeDatum:props.defaultActiveDatum}:{},...!controlled.cursor&&props.defaultCursor!==void 0?{cursor:props.defaultCursor}:{},...!controlled.selection&&props.defaultModelValue!==void 0?{selection:props.defaultModelValue}:{},...!controlled.view&&props.defaultView!==void 0?{view:props.defaultView}:{}});if(ownerContext===void 0){controller.value=createChartController({definition:next.definition,viewCapabilities:next.viewCapabilities,...props.limits===void 0?{}:{limits:props.limits},...Object.keys(controlledValues2).length===0?{}:{controlled:controlledValues2},...Object.keys(initialValues).length===0?{}:{initialValues}})}else{const borrowed=ownerContext.controller.value;if(!definitionAccepted)return;controller.value=borrowed;if(Object.keys(controlledValues2).length!==0){const synced=borrowed.syncControlledValues(controlledValues2);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}))}});const ChartRoot=ChartRootRuntime;const coordinateProps={};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}});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:void 0},getValue:{type:Function,default:void 0},ticks:{type:Number,default:void 0},label:{type:String,default:void 0},unit:{type:String,default:void 0}};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}})}const ChartXAxis=axisComponent("x");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:void 0},label:{type:String,default:void 0}};const cartesianLayerProps={...layerBaseProps,xAxis:{type:[String,Number],required:true},yAxis:{type:[String,Number],required:true},getX:{type:Function,default:void 0},getY:{type:Function,default:void 0}};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}})}const ChartLine=layerComponent("line");const ChartScatter=layerComponent("scatter",{projection:{type:String,default:"raw"}});const ChartBar=layerComponent("bar",{orientation:{type:String,default:"vertical"}});const ChartBars=ChartBar;const ChartHeatmap=layerComponent("heatmap",{getValue:{type:Function,default:void 0},valueField:{type:String,default:void 0},projection:{type:[String,Object],default:"raw"}});const ChartPie=layerComponent("pie",{getValue:{type:Function,default:void 0},valueField:{type:String,default:void 0},getLabel:{type:Function,default:void 0},labelField:{type:String,default:void 0}});const ChartDonut=layerComponent("donut",{getValue:{type:Function,default:void 0},valueField:{type:String,default:void 0},getLabel:{type:Function,default:void 0},labelField:{type:String,default:void 0},innerRadius:{type:Number,default:.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"]})}const ChartAxisView=defineComponent({name:"SectileChartAxisView",props:{axis:{type:[String,Number],default:void 0},initial:{type:Object,default:void 0},minimumSpan:{type:Number,default:void 0},maximumSpan:{type:Number,default:void 0},update:{type:String,default:"preserve"}},setup(props){const context=useInternalChart();const inheritedAxis=inject(chartAxisKey,void 0);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===void 0)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"]}))}const ChartNavigation=defineComponent({name:"SectileChartNavigation",props:{axes:{type:Array,default:void 0},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===void 0||right===void 0||left.length!==right.length)return false;for(let index=0;index<left.length;index+=1)if(left[index]!==right[index])return false;return true}const ChartViewControls=defineComponent({name:"SectileChartViewControls",inheritAttrs:false,props:{axis:{type:[String,Number],default:void 0}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartAxisKey,void 0);const initialAxis=props.axis??inheritedAxis?.value;if(initialAxis===void 0)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"]?.())}});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:void 0},label:{type:String,default:void 0}};const ChartPanControl=defineComponent({name:"SectileChartPanControl",inheritAttrs:false,props:{...axisControlProps,direction:{type:String,required:true},step:{type:Number,default:.1}},setup(props,{attrs,slots}){const context=useInternalChart();const inheritedAxis=inject(chartControlAxisKey,inject(chartAxisKey,void 0));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)}});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,void 0));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:.5,phase:"settled"})},slots["default"]?.()??props.direction)}});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,void 0));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")}});const ChartPlot=defineComponent({name:"SectileChartPlot",inheritAttrs:false,setup(_props,{attrs,slots}){return()=>h("div",{...attrs,"data-scope":"chart","data-part":"plot"},slots["default"]?.())}});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"})}});const ChartCanvas=ChartRenderer;function semanticMarker(name,part){return defineComponent({name,setup(){useInternalChart();return()=>null}})}const ChartGrid=semanticMarker("SectileChartGrid","grid");const ChartGridLines=ChartGrid;const ChartLegend=semanticMarker("SectileChartLegend","legend");const ChartAxisTicks=semanticMarker("SectileChartAxisTicks","axis-ticks");const ChartTicks=ChartAxisTicks;const chartSuiteKey=Symbol("SectileChartSuite");const chartComponentSuites=new WeakMap;function createChartComponents(controller){if(controller===null||typeof controller!=="object")throw new TypeError("createChartComponents requires a Chart controller.");const cached=chartComponentSuites.get(controller);if(cached!==void 0)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,void 0)!==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===void 0)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!==void 0){try{publishChange(command)}catch(error){failure??=[error]}}if(failure!==void 0)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!==void 0,cursor:options.cursor!==void 0,selection:options.selection!==void 0,view:options.view!==void 0};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!==void 0)throw failure[0]};const publishComposableCommand=command=>{options.onCommand?.(command)};const publishComposableProposal=command=>{if(command.type==="active-change-requested"&&options.activeDatum!==void 0)options.activeDatum.value=command.id;else if(command.type==="cursor-change-requested"&&options.cursor!==void 0)options.cursor.value=command.id;else if(command.type==="selection-change-requested"&&options.selection!==void 0)options.selection.value=command.selection;else if(command.type==="view-change-requested"&&options.view!==void 0)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===void 0?{}:{activeDatum:options.activeDatum.value},...options.cursor===void 0?{}:{cursor:options.cursor.value},...options.selection===void 0?{}:{selection:options.selection.value},...options.view===void 0?{}:{view:options.view.value}})}function defaultValues(options){const values=Object.freeze({...options.activeDatum!==void 0||options.defaultActiveDatum===void 0?{}:{activeDatum:options.defaultActiveDatum},...options.cursor!==void 0||options.defaultCursor===void 0?{}:{cursor:options.defaultCursor},...options.selection!==void 0||options.defaultSelection===void 0?{}:{selection:options.defaultSelection},...options.view!==void 0||options.defaultView===void 0?{}:{view:options.defaultView}});return Object.keys(values).length===0?{}:{initialValues:values}}function assertControlledDefaults(options){if(options.activeDatum!==void 0&&options.defaultActiveDatum!==void 0||options.cursor!==void 0&&options.defaultCursor!==void 0||options.selection!==void 0&&options.defaultSelection!==void 0||options.view!==void 0&&options.defaultView!==void 0){throw new TypeError("Chart controlled values and their default counterparts are mutually exclusive.")}}function assertRootControlledDefaults(props){if(props["modelValue"]!==void 0&&props["defaultModelValue"]!==void 0||props["activeDatum"]!==void 0&&props["defaultActiveDatum"]!==void 0||props["cursor"]!==void 0&&props["defaultCursor"]!==void 0||props["view"]!==void 0&&props["defaultView"]!==void 0){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!==void 0))}export{ChartAxisTicks,ChartAxisView,ChartBar,ChartBars,ChartCanvas,ChartCartesian,ChartDonut,ChartExternalViewControls,ChartGrid,ChartGridLines,ChartHeatmap,ChartLegend,ChartLine,ChartNavigation,ChartPanControl,ChartPie,ChartPlot,ChartProvider,ChartRadial,ChartRenderer,ChartResetView,ChartRoot,ChartScatter,ChartTicks,ChartViewControls,ChartXAxis,ChartYAxis,ChartZoomControl,createChartComponents,useChart,useChartAxisSelector,useChartContext,useChartLayerSelector,useChartSelector};
|
|
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))}
|
|
2
2
|
//# sourceMappingURL=chart.js.map
|
package/dist/chart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/chart.ts"],"mappings":"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","names":["controlledValues"],"file":"chart.js"}
|
|
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":[]}
|
package/dist/grid.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createGridControl}from"@sectile/dom/grid";import{Primitive}from"./primitive.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const GridRoot=defineComponent({name:"SectileGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true,editStart:_value=>true,editCommit:_value=>true,editCancel:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("GridRoot","modelValue",()=>props.modelValue),highlighted:useControlledStateInvariant("GridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("GridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-grid-cell]").forEach(node=>{const id=node.dataset["sectileGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,id,{disabled:node.dataset["sectileGridItemDisabled"]!==void 0})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createGridControl}from"@sectile/dom/grid";import{Primitive}from"./primitive.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const GridRoot=defineComponent({name:"SectileGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true,editStart:_value=>true,editCommit:_value=>true,editCancel:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("GridRoot","modelValue",()=>props.modelValue),highlighted:useControlledStateInvariant("GridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("GridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-grid-cell]").forEach(node=>{const id=node.dataset["sectileGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,id,{disabled:node.dataset["sectileGridItemDisabled"]!==void 0})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode};const connect=()=>{const nextOwner=snapshotGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const items=nextOwner.rows.flatMap(row=>row.filter(id=>id!==null));const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue===null?[]:[requestedValue],requestedHighlight,nextOwner.disabledItems,"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createGridControl({root:element.value,rows:nextOwner.rows,...controlled.value?{value}:{defaultValue:value},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...nextOwner.label===void 0?{}:{label:nextOwner.label},...props.policies===void 0?{}:{policies:props.policies},onValueChange:value2=>{localValue.value=value2;emit("update:modelValue",value2)},onHighlightedValueChange:value2=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:value2=>{localEditMode.value=value2;emit("update:editMode",value2)},onEditStart:id=>emit("editStart",id),onEditCommit:id=>emit("editCommit",id),onEditCancel:id=>emit("editCancel",id),onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));provide(key,{state,disabledItems,registerCell:(node,id,disabled)=>connection.value?.setCellAttributes(node,id,{disabled})});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.rows,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const GridRow=defineComponent({name:"SectileGridRow",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot("GridRow");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"row","data-scope":"grid","data-part":"row"}),{default:()=>slots["default"]?.(root.state.value)})}});const GridCell=defineComponent({name:"SectileGridCell",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("GridCell");let registeredID=props.value;const register=node=>{if(registeredID!==props.value){root.registerCell(void 0,registeredID,false);registeredID=props.value}root.registerCell(node instanceof HTMLElement?node:void 0,registeredID,props.disabled)};onBeforeUnmount(()=>root.registerCell(void 0,registeredID,false));const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:register,"data-sectile-grid-cell":props.value,"data-sectile-grid-item-disabled":props.disabled?"":void 0,"data-scope":"grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside GridRoot.`);return root}function snapshotGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze([...row]))),disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||!sameIDRows(left.rows,right.rows)||!sameIDs(left.disabledItems,right.disabledItems)||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;return true}function sameIDRows(left,right){for(let row=0;row<left.length;row+=1){const leftRow=left[row];const rightRow=right[row];if(leftRow.length!==rightRow.length)return false;for(let column=0;column<leftRow.length;column+=1){if(leftRow[column]!==rightRow[column])return false}}return true}export{GridCell,GridRoot,GridRow};
|
|
2
2
|
//# sourceMappingURL=grid.js.map
|
package/dist/grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/grid.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/grid.ts"],"mappings":"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","names":["value"],"file":"grid.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Fragment,Teleport,computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,nextTick,provide,shallowRef,watch}from'vue';import{formatDateValue,parseDateValue}from'@sectile/dom/temporal/date-field';import{createCalendarMonth,createCalendarYear,isCalendarValueAvailable}from'@sectile/temporal/calendar';import{hiddenInputSubmissionCapabilities,useCompositeFormControl}from'./form-control.js';import{Primitive}from'../primitive.js';import{useControlledStateInvariant}from'./controlled-state.js';import{usePresence}from'./presence.js';import{useHostPortalTarget}from'../host-provider.js';import{useTemporalReferenceDate}from'../temporal-provider.js';export function specializePickerRootPart(_kind,component){return component}const key=Symbol('SectileDatePickerRoot');const noPendingPickerValue=Symbol('no-pending-picker-value');const partProps={as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}};export function createPickerRoot(capability,name,config={}){const kind=capability.kind;const scope=config.scope??kind;const granularity=config.granularity??'day';const defaultView=config.defaultView??(granularity==='day'?'month':'year');const defaultOpen=config.defaultOpen??false;const yearPageSize=config.yearPageSize??12;const inline=config.inline??false;const component=defineComponent({name,inheritAttrs:false,props:{modelValue:{type:Object,default:undefined},defaultValue:{type:Object,default:null},open:{type:Boolean,default:undefined},defaultOpen:{type:Boolean,default:defaultOpen},highlightedValue:{type:Object,default:undefined},defaultHighlightedValue:{type:Object,default:undefined},referenceDate:{type:Object,default:undefined},defaultView:{type:String,default:defaultView},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},label:{type:String,default:undefined},policies:{type:Object,default:undefined},position:{type:Boolean,default:true},side:{type:String,default:'bottom'},align:{type:String,default:'center'},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:undefined},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:'absolute'},tracking:{type:String,default:'events'},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:modelValue':_value=>true,'update:open':_value=>true,'update:highlightedValue':_value=>true},slots:Object,setup(props,{emit,slots}){const runtimeProps=props;const elements=new Map;const connection=shallowRef();const hostReferenceDate=useTemporalReferenceDate();const referenceDate=computed(()=>runtimeProps.referenceDate??hostReferenceDate.value);const inlineTrigger=typeof document==='undefined'||!inline||kind==='calendar'?undefined:document.createElement('button');const localValue=shallowRef(runtimeProps.modelValue!==undefined?runtimeProps.modelValue:runtimeProps.defaultValue);const localOpen=shallowRef(runtimeProps.open??runtimeProps.defaultOpen);const localHighlight=shallowRef(runtimeProps.highlightedValue??runtimeProps.defaultHighlightedValue??dateOf(localValue.value)??referenceDate.value);const yearPageStart=shallowRef(localHighlight.value.year-Math.floor(yearPageSize/2));const dates=shallowRef(monthFor(localHighlight.value));const months=shallowRef(yearFor(localHighlight.value.year));const years=shallowRef(yearsFrom(yearPageStart.value,yearPageSize));const localView=shallowRef(Object.freeze({year:localHighlight.value.year,month:localHighlight.value.month}));const localViewMode=shallowRef(runtimeProps.defaultView);const controlled={value:useControlledStateInvariant(`${kind}PickerRoot`,'modelValue',()=>runtimeProps.modelValue),open:useControlledStateInvariant(`${kind}PickerRoot`,'open',()=>runtimeProps.open),highlighted:useControlledStateInvariant(`${kind}PickerRoot`,'highlightedValue',()=>runtimeProps.highlightedValue)};const pendingValue=shallowRef(noPendingPickerValue);const state=computed(()=>{const highlighted=runtimeProps.highlightedValue??localHighlight.value;const value=controlled.value&&pendingValue.value!==noPendingPickerValue?pendingValue.value:runtimeProps.modelValue!==undefined?runtimeProps.modelValue:localValue.value;return Object.freeze({value,highlightedValue:highlighted,open:runtimeProps.open??localOpen.value,dates:dates.value,months:months.value,years:years.value,view:localView.value,viewMode:localViewMode.value,disabled:runtimeProps.disabled,readonly:runtimeProps.readonly})});useCompositeFormControl({root:()=>elements.get('content')??elements.get('grid')??null,focusTarget:()=>elements.get('trigger')??(kind==='calendar'?null:firstPickerInput(elements,kind))??elements.get('grid')??null,submissions:()=>pickerFormSubmissions(elements,kind)});const periodAvailable=value=>{const policies=runtimeProps.policies;if('month'in value)return monthAvailable(value,policies);return Array.from({length:12},(_entry,index)=>index+1).some(month=>monthAvailable({year:value.year,month},policies))};const refreshCells=()=>{const grid=elements.get('grid');if(grid===undefined||connection.value===undefined)return;grid.querySelectorAll('[data-sectile-picker-date]').forEach(element=>{const parsed=parseDateValue(element.dataset['sectilePickerDate']??'');if(parsed.ok)connection.value?.setCellAttributes(element,parsed.value)})};const refresh=()=>{const raw=connection.value?.getSnapshot().state;if(raw===undefined)return;const picked=extractState(kind,raw);localValue.value=picked.value;localHighlight.value=picked.highlighted;localOpen.value=picked.open;localView.value=picked.view;localViewMode.value=picked.viewMode;if(connection.value!==undefined){dates.value=picked.viewMode==='week'?[connection.value.getWeek()]:picked.viewMode==='month'?connection.value.getMonth():[];months.value=picked.viewMode==='year'?connection.value.getYear():[];if(granularity==='year'){yearPageStart.value=pageStartContaining(picked.highlighted.year,yearPageStart.value,yearPageSize);years.value=yearsFrom(yearPageStart.value,yearPageSize)}}refreshCells();void nextTick(refreshCells)};const connect=()=>{connection.value?.disconnect();const content=elements.get('content');const grid=elements.get('grid');const trigger=elements.get('trigger')??inlineTrigger;if(content===undefined||grid===undefined||kind!=='calendar'&&trigger===undefined)return;const base={root:content,grid,disabled:runtimeProps.disabled,readOnly:runtimeProps.readonly,required:runtimeProps.required,referenceDate:referenceDate.value,...runtimeProps.label===undefined?{}:{label:runtimeProps.label},...runtimeProps.policies===undefined?{}:{policies:runtimeProps.policies},...controlled.value?{value:runtimeProps.modelValue}:{defaultValue:localValue.value},...controlled.highlighted?{highlightedValue:runtimeProps.highlightedValue}:{defaultHighlightedValue:localHighlight.value},onValueChange:value=>{localValue.value=value;if(controlled.value)pendingValue.value=value;emit('update:modelValue',value)},onHighlightedValueChange:value=>{localHighlight.value=value;emit('update:highlightedValue',value)},onUpdate:refresh};if(kind!=='calendar'){base['trigger']=trigger;const anchor=elements.get('anchor');if(anchor!==undefined)base['anchor']=anchor;Object.assign(base,{manageVisibility:false,position:runtimeProps.position,side:runtimeProps.side,align:runtimeProps.align,sideOffset:runtimeProps.sideOffset,collisionPadding:runtimeProps.collisionPadding,avoidCollisions:runtimeProps.avoidCollisions,hideWhenDetached:runtimeProps.hideWhenDetached,strategy:runtimeProps.strategy,tracking:runtimeProps.tracking});if(runtimeProps.collisionBoundary!==undefined)base['collisionBoundary']=runtimeProps.collisionBoundary;if(controlled.open)base['open']=runtimeProps.open;else base['defaultOpen']=localOpen.value;base['onOpenChange']=value=>{localOpen.value=value;emit('update:open',value)}}if(granularity==='day'){for(const part of inputParts(kind)){const element=elements.get(part);if(element!==undefined)base[toDOMInputKey(part)]=element}}connection.value=capability.connect(base);if(runtimeProps.defaultView!=='month')connection.value.handleEvent({type:'set-view-mode',value:runtimeProps.defaultView});refreshCells();refresh()};let mounted=false;let connectQueued=false;const scheduleConnect=()=>{if(!mounted||connectQueued)return;connectQueued=true;void nextTick(()=>{connectQueued=false;if(mounted)connect()})};const moveBy=(unit,delta)=>{const direction=delta<0?-1:1;for(let index=0;index<Math.abs(delta);index+=1){connection.value?.handleEvent(`${direction<0?'previous':'next'}-${unit}`)}refresh()};const selectMonth=value=>{connection.value?.handleEvent(granularity==='month'?{type:kind==='calendar'||kind==='date'||kind==='date-range'?'select':'select-date',value:{...value,day:1}}:{type:'select-month',value});refresh()};const selectYear=value=>{connection.value?.handleEvent({type:kind==='calendar'||kind==='date'||kind==='date-range'?'select':'select-date',value:{year:value.year,month:1,day:1}});refresh()};provide(key,{kind,scope,granularity,inline,state,periodAvailable,formatInput:capability.formatInput,position:computed(()=>runtimeProps.position),strategy:computed(()=>runtimeProps.strategy),register:(part,element)=>{if(elements.get(part)===element||element===undefined&&!elements.has(part))return;if(element===undefined)elements.delete(part);else elements.set(part,element);scheduleConnect()},refresh:()=>connection.value?.refresh(),registerCell:(element,value)=>connection.value?.setCellAttributes(element,value),move:(unit,direction)=>{const repetitions=granularity==='year'&&unit==='year'?yearPageSize:1;moveBy(unit,direction*repetitions)},handleGridKey:event=>{if(granularity==='day'&&state.value.viewMode!=='year'||event.altKey||event.ctrlKey||event.metaKey)return;const navigationGranularity=granularity==='day'?'month':granularity;const columns=navigationGranularity==='month'?3:4;const highlighted=state.value.highlightedValue;let movement;if(event.key==='ArrowLeft')movement={unit:navigationGranularity,delta:-1};else if(event.key==='ArrowRight')movement={unit:navigationGranularity,delta:1};else if(event.key==='ArrowUp')movement={unit:navigationGranularity,delta:-columns};else if(event.key==='ArrowDown')movement={unit:navigationGranularity,delta:columns};else if(event.key==='PageUp')movement={unit:'year',delta:navigationGranularity==='year'?-yearPageSize:-1};else if(event.key==='PageDown')movement={unit:'year',delta:navigationGranularity==='year'?yearPageSize:1};else if(event.key==='Home')movement={unit:navigationGranularity,delta:navigationGranularity==='month'?1-highlighted.month:-((highlighted.year-years.value[0][0].year)%columns)};else if(event.key==='End')movement={unit:navigationGranularity,delta:navigationGranularity==='month'?12-highlighted.month:columns-1-(highlighted.year-years.value[0][0].year)%columns};else if(event.key==='Enter'||event.key===' '){event.preventDefault();event.stopImmediatePropagation();if(navigationGranularity==='month')selectMonth({year:highlighted.year,month:highlighted.month});else selectYear({year:highlighted.year});return}else return;event.preventDefault();event.stopImmediatePropagation();if(movement.delta!==0)moveBy(movement.unit,movement.delta)},setViewMode:value=>{connection.value?.handleEvent({type:'set-view-mode',value});refresh()},selectDate:value=>{const type=kind==='calendar'||kind==='date'||kind==='date-range'?'select':'select-date';connection.value?.handleEvent({type,value});refresh()},selectMonth,selectYear});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connectQueued=false;connection.value?.disconnect();connection.value=undefined});watch([()=>runtimeProps.disabled,()=>runtimeProps.readonly,()=>runtimeProps.required,()=>runtimeProps.label,()=>runtimeProps.policies,()=>runtimeProps.position,()=>runtimeProps.side,()=>runtimeProps.align,()=>runtimeProps.sideOffset,()=>runtimeProps.collisionPadding,()=>runtimeProps.collisionBoundary,()=>runtimeProps.avoidCollisions,()=>runtimeProps.hideWhenDetached,()=>runtimeProps.strategy,()=>runtimeProps.tracking],connect);watch(referenceDate,value=>{if(runtimeProps.highlightedValue===undefined&&runtimeProps.defaultHighlightedValue===undefined&&dateOf(runtimeProps.modelValue??runtimeProps.defaultValue)===null)localHighlight.value=value;connect()});watch([()=>runtimeProps.modelValue,()=>runtimeProps.open,()=>runtimeProps.highlightedValue],(values,previousValues)=>{if(connection.value===undefined)return;if(values[0]!==previousValues[0])pendingValue.value=noPendingPickerValue;const result=connection.value.syncControlledValues({...controlled.value?{value:runtimeProps.modelValue}:{},...kind!=='calendar'&&controlled.open?{open:runtimeProps.open}:{},...controlled.highlighted?{highlightedValue:runtimeProps.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error?.message??'Could not synchronize picker values.');refresh()});return()=>h(Fragment,null,slots['default']?.(state.value)??[])}});return component}export const PickerTrigger=/* @__PURE__ */defineComponent({name:'SectilePickerTrigger',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerTrigger');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register('trigger',node instanceof HTMLElement?node:undefined),type:props.as==='button'?'button':undefined,disabled:root.state.value.disabled,'aria-haspopup':'dialog','aria-expanded':String(root.state.value.open),'data-scope':root.scope,'data-part':'trigger'}),{default:()=>slots['default']?.(root.state.value)})}});export const PickerAnchor=/* @__PURE__ */defineComponent({name:'SectilePickerAnchor',inheritAttrs:false,props:partProps,setup(props,{attrs,slots}){const root=useRoot('PickerAnchor');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register('anchor',node instanceof HTMLElement?node:undefined),'data-scope':root.scope,'data-part':'anchor'}),slots)}});export const PickerContent=/* @__PURE__ */defineComponent({name:'SectilePickerContent',inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerContent');const element=shallowRef();const open=computed(()=>root.inline||root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:'post'});return()=>{const exiting=!root.inline&&!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const content=node instanceof HTMLElement?node:undefined;element.value=content;root.register('content',content)},role:root.inline?'group':'dialog','aria-modal':root.inline?undefined:'false',hidden:root.inline?false:!present.value,...exiting?{inert:true,'aria-hidden':'true'}:{},'data-scope':root.scope,'data-part':'content','data-state':root.state.value.open?'open':'closed',style:!root.inline&&root.position.value?{position:root.strategy.value}:undefined}),{default:()=>slots['default']?.(root.state.value)})}}});export const PickerPortal=/* @__PURE__ */defineComponent({name:'SectilePickerPortal',inheritAttrs:false,props:{to:{type:[String,Object],default:undefined},disabled:{type:Boolean,default:false},defer:{type:Boolean,default:false}},setup(props,{slots}){useRoot('PickerPortal');const portalTarget=useHostPortalTarget();return()=>h(Teleport,{to:props.to??portalTarget.value??'body',disabled:props.disabled,defer:props.defer},slots['default']?.())}});export const PickerGrid=/* @__PURE__ */defineComponent({name:'SectilePickerGrid',inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerGrid');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register('grid',node instanceof HTMLElement?node:undefined),role:'grid',onKeydown:root.handleGridKey,'data-scope':root.scope,'data-part':'grid'}),{default:()=>slots['default']?.(root.state.value)})}});export const PickerCell=/* @__PURE__ */defineComponent({name:'SectilePickerCell',inheritAttrs:false,props:{value:{type:Object,required:true},as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerCell');const state=computed(()=>cellState(root.kind,root.state.value,props.value));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value)},disabled:state.value.disabled,onClick:event=>{event.stopPropagation();root.selectDate(props.value)},role:'gridcell','aria-selected':String(state.value.selected||state.value.inRange),'data-sectile-picker-date':formatDateValue(props.value),'data-scope':root.scope,'data-part':'cell','data-selected':state.value.selected?'':undefined,'data-in-range':state.value.inRange?'':undefined,'data-highlighted':state.value.highlighted?'':undefined,'data-outside-month':state.value.outsideMonth?'':undefined}),{default:()=>slots['default']?.(state.value)})}});export function createPickerMonthCell(part='month-cell',name='SectilePickerMonthCell'){return defineComponent({name,inheritAttrs:false,props:{value:{type:Object,required:true},as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);const state=computed(()=>({value:props.value,selected:monthContainsValue(root.state.value.value,props.value),inRange:periodInRange(root.state.value.value,{...props.value,day:1},{...props.value,day:31}),highlighted:root.state.value.highlightedValue.year===props.value.year&&root.state.value.highlightedValue.month===props.value.month,disabled:root.state.value.disabled||!root.periodAvailable(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:state.value.disabled,tabIndex:state.value.highlighted?0:-1,onClick:event=>{event.stopPropagation();if(!state.value.disabled)root.selectMonth(props.value)},role:'gridcell','aria-selected':String(state.value.selected||state.value.inRange),'aria-disabled':String(state.value.disabled),'data-sectile-picker-month':`${String(props.value.year).padStart(4,'0')}-${String(props.value.month).padStart(2,'0')}`,'data-scope':root.scope,'data-part':part,'data-selected':state.value.selected?'':undefined,'data-in-range':state.value.inRange?'':undefined,'data-highlighted':state.value.highlighted?'':undefined}),{default:()=>slots['default']?.(state.value)})}})}export function createPickerYearCell(part='year-cell',name='SectilePickerYearCell'){return defineComponent({name,inheritAttrs:false,props:{value:{type:Object,required:true},as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);const currentYear=(new Date).getFullYear();const state=computed(()=>({value:props.value,selected:yearContainsValue(root.state.value.value,props.value),inRange:periodInRange(root.state.value.value,{year:props.value.year,month:1,day:1},{year:props.value.year,month:12,day:31}),highlighted:root.state.value.highlightedValue.year===props.value.year,current:props.value.year===currentYear,disabled:root.state.value.disabled||!root.periodAvailable(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:state.value.disabled,tabIndex:state.value.highlighted?0:-1,onClick:event=>{event.stopPropagation();if(!state.value.disabled)root.selectYear(props.value)},role:'gridcell','aria-selected':String(state.value.selected||state.value.inRange),'aria-disabled':String(state.value.disabled),'aria-current':state.value.current?'date':undefined,'data-sectile-picker-year':String(props.value.year),'data-scope':root.scope,'data-part':part,'data-selected':state.value.selected?'':undefined,'data-in-range':state.value.inRange?'':undefined,'data-highlighted':state.value.highlighted?'':undefined,'data-current':state.value.current?'':undefined}),{default:()=>slots['default']?.(state.value)})}})}export const PickerMonthCell=/* @__PURE__ */createPickerMonthCell();export const PickerYearCell=/* @__PURE__ */createPickerYearCell();export function createPickerInput(part,name,type='text'){return defineComponent({name,inheritAttrs:false,props:{name:{type:String,default:undefined},form:{type:String,default:undefined},as:{type:[String,Object,Function],default:'input'},asChild:{type:Boolean,default:false}},setup(props,{attrs}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register(part,node instanceof HTMLInputElement?node:undefined),type,name:props.name,form:props.form,disabled:root.state.value.disabled,readOnly:root.granularity!=='day'||root.state.value.readonly||part==='start-input'||part==='end-input'||part==='start-date-time-input'||part==='end-date-time-input',required:false,value:root.state.value.value===null?'':root.formatInput(root.granularity,part,root.state.value.value),'data-scope':root.scope,'data-part':part}))}})}export function createPickerMove(unit,direction,name,part){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:root.state.value.disabled,onClick:()=>root.move(unit,direction),'data-scope':root.scope,'data-part':part??`${direction<0?'previous':'next'}-${unit}`}),{default:()=>slots['default']?.(root.state.value)})}})}export function createPickerViewTrigger(view,name){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:root.state.value.disabled,onClick:()=>root.setViewMode(view),'aria-pressed':String(root.state.value.viewMode===view),'data-scope':root.scope,'data-part':`${view}-view-trigger`,'data-state':root.state.value.viewMode===view?'active':'inactive'}),{default:()=>slots['default']?.(root.state.value)})}})}function useRoot(part){const root=inject(key);if(root===undefined)throw new TypeError(`${part} must be used inside a date picker root.`);return root}function firstPickerInput(elements,kind){for(const part of inputParts(kind)){const element=elements.get(part);if(element instanceof HTMLInputElement)return element}return null}function pickerFormSubmissions(elements,kind){const submission=(part,relativeName)=>{const element=elements.get(part);if(!(element instanceof HTMLInputElement))return null;return{element:()=>element,...relativeName===undefined?{}:{relativeName},capabilities:hiddenInputSubmissionCapabilities}};if(kind==='calendar'||kind==='date')return compactSubmissions(submission('input'));if(kind==='date-range'){return compactSubmissions(submission('start-input','start'),submission('end-input','end'))}if(kind==='date-time'){const combined=submission('date-time-input');return combined===null?compactSubmissions(submission('date-input','date'),submission('time-input','time')):[combined]}const combinedStart=submission('start-date-time-input','start');const combinedEnd=submission('end-date-time-input','end');return compactSubmissions(combinedStart??submission('start-date-input','start.date'),combinedStart===null?submission('start-time-input','start.time'):null,combinedEnd??submission('end-date-input','end.date'),combinedEnd===null?submission('end-time-input','end.time'):null)}function compactSubmissions(...submissions){return submissions.filter(submission=>submission!==null)}function monthFor(value){return createCalendarMonth({year:value.year,month:value.month})}function yearFor(year){return createCalendarYear(year)}function yearsFrom(start,pageSize){const columns=4;return Array.from({length:Math.ceil(pageSize/columns)},(_row,rowIndex)=>Array.from({length:columns},(_column,columnIndex)=>Object.freeze({year:start+rowIndex*columns+columnIndex})))}function pageStartContaining(year,currentStart,pageSize){if(year<currentStart)return currentStart-Math.ceil((currentStart-year)/pageSize)*pageSize;if(year>=currentStart+pageSize)return currentStart+Math.floor((year-currentStart)/pageSize)*pageSize;return currentStart}function monthAvailable(value,policies){const days=daysInMonth(value.year,value.month);for(let day=1;day<=days;day+=1){if(isCalendarValueAvailable({year:value.year,month:value.month,day},policies))return true}return false}function daysInMonth(year,month){if(month===2)return year%4===0&&(year%100!==0||year%400===0)?29:28;return[4,6,9,11].includes(month)?30:31}function dateOf(value){if(value===null)return null;if('year'in value)return value;if('date'in value)return value.date;const start=value.start;return'date'in start?start.date:start}function extractState(kind,raw){const state=raw;if(kind==='calendar')return{value:state['value'],highlighted:state['highlighted'],open:true,view:state['view'],viewMode:state['viewMode']};if(kind==='date')return{value:state['value'],highlighted:state['highlighted'],open:state['open'],view:state['view'],viewMode:state['viewMode']};const calendar=state['calendar'];return{value:state['value'],highlighted:calendar['highlighted'],open:calendar['open'],view:calendar['view'],viewMode:calendar['viewMode']}}function compare(left,right){return left.year-right.year||left.month-right.month||left.day-right.day}function cellState(kind,state,value){const selectedDate=dateOf(state.value);let selected=selectedDate!==null&&compare(selectedDate,value)===0;let inRange=false;if(state.value!==null&&!('year'in state.value)&&!('date'in state.value)){const start='date'in state.value.start?state.value.start.date:state.value.start;const end='date'in state.value.end?state.value.end.date:state.value.end;inRange=compare(start,value)<=0&&compare(value,end)<=0;selected=compare(start,value)===0||compare(end,value)===0}return{value,selected,inRange,highlighted:compare(state.highlightedValue,value)===0,disabled:state.disabled,outsideMonth:value.month!==state.view.month||value.year!==state.view.year}}function monthContainsValue(value,month){const date=dateOf(value);return date!==null&&date.year===month.year&&date.month===month.month}function yearContainsValue(value,year){const date=dateOf(value);return date!==null&&date.year===year.year}function periodInRange(value,start,end){if(value===null||'year'in value||'date'in value)return false;const rangeStart='date'in value.start?value.start.date:value.start;const rangeEnd='date'in value.end?value.end.date:value.end;return compare(rangeStart,end)<=0&&compare(start,rangeEnd)<=0}function inputParts(kind){return kind==='calendar'||kind==='date'?['input']:kind==='date-range'?['start-input','end-input']:kind==='date-time'?['date-time-input','date-input','time-input']:['start-date-time-input','end-date-time-input','start-date-input','end-date-input','start-time-input','end-time-input']}function toDOMInputKey(part){if(part==='date-time-input')return'dateTimeInput';if(part==='start-date-time-input')return'startDateTimeInput';if(part==='end-date-time-input')return'endDateTimeInput';return part.replace(/-([a-z])/g,(_match,letter)=>letter.toUpperCase())}
|
|
1
|
+
import{Fragment,Teleport,computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,nextTick,provide,shallowRef,watch}from'vue';import{formatDateValue,parseDateValue}from'@sectile/dom/temporal/date-field';import{createCalendarMonth,createCalendarYear,isCalendarValueAvailable}from'@sectile/temporal/calendar';import{createMonthPickerValue}from'@sectile/temporal/month-picker';import{createYearPickerValue}from'@sectile/temporal/year-picker';import{hiddenInputSubmissionCapabilities,useCompositeFormControl}from'./form-control.js';import{Primitive}from'../primitive.js';import{useControlledStateInvariant}from'./controlled-state.js';import{usePresence}from'./presence.js';import{useHostPortalTarget}from'../host-provider.js';import{useTemporalReferenceDate}from'../temporal-provider.js';export function specializePickerRootPart(_kind,component){return component}const key=Symbol('SectileDatePickerRoot');const noPendingPickerValue=Symbol('no-pending-picker-value');const partProps={as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}};export function createPickerRoot(capability,name,config={}){const kind=capability.kind;const scope=config.scope??kind;const granularity=config.granularity??'day';const defaultView=config.defaultView??(granularity==='day'?'month':'year');const defaultOpen=config.defaultOpen??false;const yearPageSize=config.yearPageSize??12;const inline=config.inline??false;const component=defineComponent({name,inheritAttrs:false,props:{modelValue:{type:Object,default:undefined},defaultValue:{type:Object,default:null},open:{type:Boolean,default:undefined},defaultOpen:{type:Boolean,default:defaultOpen},highlightedValue:{type:Object,default:undefined},defaultHighlightedValue:{type:Object,default:undefined},referenceDate:{type:Object,default:undefined},defaultView:{type:String,default:defaultView},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},required:{type:Boolean,default:false},label:{type:String,default:undefined},policies:{type:Object,default:undefined},position:{type:Boolean,default:true},side:{type:String,default:'bottom'},align:{type:String,default:'center'},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:undefined},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:'absolute'},tracking:{type:String,default:'events'},as:{type:[String,Object,Function],default:'div'},asChild:{type:Boolean,default:false}},emits:{'update:modelValue':_value=>true,'update:open':_value=>true,'update:highlightedValue':_value=>true},slots:Object,setup(props,{emit,slots}){const runtimeProps=props;const elements=new Map;const connection=shallowRef();const hostReferenceDate=useTemporalReferenceDate();const referenceDate=computed(()=>runtimeProps.referenceDate??hostReferenceDate.value);const inlineTrigger=typeof document==='undefined'||!inline||kind==='calendar'?undefined:document.createElement('button');const localValue=shallowRef(runtimeProps.modelValue!==undefined?runtimeProps.modelValue:runtimeProps.defaultValue);const localOpen=shallowRef(runtimeProps.open??runtimeProps.defaultOpen);const localHighlight=shallowRef(runtimeProps.highlightedValue??runtimeProps.defaultHighlightedValue??dateOf(localValue.value)??referenceDate.value);const yearPageStart=shallowRef(localHighlight.value.year-Math.floor(yearPageSize/2));const dates=shallowRef(monthFor(localHighlight.value));const months=shallowRef(yearFor(localHighlight.value.year));const years=shallowRef(yearsFrom(yearPageStart.value,yearPageSize));const localView=shallowRef(Object.freeze({year:localHighlight.value.year,month:localHighlight.value.month}));const localViewMode=shallowRef(runtimeProps.defaultView);const controlled={value:useControlledStateInvariant(`${kind}PickerRoot`,'modelValue',()=>runtimeProps.modelValue),open:useControlledStateInvariant(`${kind}PickerRoot`,'open',()=>runtimeProps.open),highlighted:useControlledStateInvariant(`${kind}PickerRoot`,'highlightedValue',()=>runtimeProps.highlightedValue)};const pendingValue=shallowRef(noPendingPickerValue);const state=computed(()=>{const highlighted=runtimeProps.highlightedValue??localHighlight.value;const value=controlled.value&&pendingValue.value!==noPendingPickerValue?pendingValue.value:runtimeProps.modelValue!==undefined?runtimeProps.modelValue:localValue.value;return Object.freeze({value,highlightedValue:highlighted,open:runtimeProps.open??localOpen.value,dates:dates.value,months:months.value,years:years.value,view:localView.value,viewMode:localViewMode.value,disabled:runtimeProps.disabled,readonly:runtimeProps.readonly})});useCompositeFormControl({root:()=>elements.get('content')??elements.get('grid')??null,focusTarget:()=>elements.get('trigger')??(kind==='calendar'?null:firstPickerInput(elements,kind))??elements.get('grid')??null,submissions:()=>pickerFormSubmissions(elements,kind)});const periodAvailable=value=>{const policies=runtimeProps.policies;if('month'in value)return monthAvailable(value,policies);return Array.from({length:12},(_entry,index)=>index+1).some(month=>monthAvailable({year:value.year,month},policies))};const refreshCells=()=>{const grid=elements.get('grid');if(grid===undefined||connection.value===undefined)return;grid.querySelectorAll('[data-sectile-picker-date]').forEach(element=>{const parsed=parseDateValue(element.dataset['sectilePickerDate']??'');if(parsed.ok)connection.value?.setCellAttributes(element,parsed.value)})};const refresh=()=>{const raw=connection.value?.getSnapshot().state;if(raw===undefined)return;const picked=extractState(kind,raw);localValue.value=picked.value;localHighlight.value=picked.highlighted;localOpen.value=picked.open;localView.value=picked.view;localViewMode.value=picked.viewMode;if(connection.value!==undefined){dates.value=picked.viewMode==='week'?[connection.value.getWeek()]:picked.viewMode==='month'?connection.value.getMonth():[];months.value=picked.viewMode==='year'?connection.value.getYear():[];if(granularity==='year'){yearPageStart.value=pageStartContaining(picked.highlighted.year,yearPageStart.value,yearPageSize);years.value=yearsFrom(yearPageStart.value,yearPageSize)}}refreshCells();void nextTick(refreshCells)};const connect=()=>{connection.value?.disconnect();const content=elements.get('content');const grid=elements.get('grid');const trigger=elements.get('trigger')??inlineTrigger;if(content===undefined||grid===undefined||kind!=='calendar'&&trigger===undefined)return;const base={root:content,grid,disabled:runtimeProps.disabled,readOnly:runtimeProps.readonly,required:runtimeProps.required,referenceDate:referenceDate.value,...runtimeProps.label===undefined?{}:{label:runtimeProps.label},...runtimeProps.policies===undefined?{}:{policies:runtimeProps.policies},...controlled.value?{value:runtimeProps.modelValue}:{defaultValue:localValue.value},...controlled.highlighted?{highlightedValue:runtimeProps.highlightedValue}:{defaultHighlightedValue:localHighlight.value},onValueChange:value=>{localValue.value=value;if(controlled.value)pendingValue.value=value;emit('update:modelValue',value)},onHighlightedValueChange:value=>{localHighlight.value=value;emit('update:highlightedValue',value)},onUpdate:refresh};if(kind!=='calendar'){base['trigger']=trigger;const anchor=elements.get('anchor');if(anchor!==undefined)base['anchor']=anchor;Object.assign(base,{manageVisibility:false,position:runtimeProps.position,side:runtimeProps.side,align:runtimeProps.align,sideOffset:runtimeProps.sideOffset,collisionPadding:runtimeProps.collisionPadding,avoidCollisions:runtimeProps.avoidCollisions,hideWhenDetached:runtimeProps.hideWhenDetached,strategy:runtimeProps.strategy,tracking:runtimeProps.tracking});if(runtimeProps.collisionBoundary!==undefined)base['collisionBoundary']=runtimeProps.collisionBoundary;if(controlled.open)base['open']=runtimeProps.open;else base['defaultOpen']=localOpen.value;base['onOpenChange']=value=>{localOpen.value=value;emit('update:open',value)}}if(granularity==='day'){for(const part of inputParts(kind)){const element=elements.get(part);if(element!==undefined)base[toDOMInputKey(part)]=element}}connection.value=capability.connect(base);if(runtimeProps.defaultView!=='month')connection.value.handleEvent({type:'set-view-mode',value:runtimeProps.defaultView});refreshCells();refresh()};let mounted=false;let connectQueued=false;const scheduleConnect=()=>{if(!mounted||connectQueued)return;connectQueued=true;void nextTick(()=>{connectQueued=false;if(mounted)connect()})};const moveBy=(unit,delta)=>{const direction=delta<0?-1:1;for(let index=0;index<Math.abs(delta);index+=1){connection.value?.handleEvent(`${direction<0?'previous':'next'}-${unit}`)}refresh()};const selectMonth=value=>{connection.value?.handleEvent(granularity==='month'?{type:kind==='calendar'||kind==='date'||kind==='date-range'?'select':'select-date',value:createMonthPickerValue(value.year,value.month)}:{type:'select-month',value});refresh()};const selectYear=value=>{connection.value?.handleEvent({type:kind==='calendar'||kind==='date'||kind==='date-range'?'select':'select-date',value:createYearPickerValue(value.year)});refresh()};provide(key,{kind,scope,granularity,inline,state,periodAvailable,formatInput:capability.formatInput,position:computed(()=>runtimeProps.position),strategy:computed(()=>runtimeProps.strategy),register:(part,element)=>{if(elements.get(part)===element||element===undefined&&!elements.has(part))return;if(element===undefined)elements.delete(part);else elements.set(part,element);scheduleConnect()},refresh:()=>connection.value?.refresh(),registerCell:(element,value)=>connection.value?.setCellAttributes(element,value),move:(unit,direction)=>{const repetitions=granularity==='year'&&unit==='year'?yearPageSize:1;moveBy(unit,direction*repetitions)},handleGridKey:event=>{if(granularity==='day'&&state.value.viewMode!=='year'||event.altKey||event.ctrlKey||event.metaKey)return;const navigationGranularity=granularity==='day'?'month':granularity;const columns=navigationGranularity==='month'?3:4;const highlighted=state.value.highlightedValue;let movement;if(event.key==='ArrowLeft')movement={unit:navigationGranularity,delta:-1};else if(event.key==='ArrowRight')movement={unit:navigationGranularity,delta:1};else if(event.key==='ArrowUp')movement={unit:navigationGranularity,delta:-columns};else if(event.key==='ArrowDown')movement={unit:navigationGranularity,delta:columns};else if(event.key==='PageUp')movement={unit:'year',delta:navigationGranularity==='year'?-yearPageSize:-1};else if(event.key==='PageDown')movement={unit:'year',delta:navigationGranularity==='year'?yearPageSize:1};else if(event.key==='Home')movement={unit:navigationGranularity,delta:navigationGranularity==='month'?1-highlighted.month:-((highlighted.year-years.value[0][0].year)%columns)};else if(event.key==='End')movement={unit:navigationGranularity,delta:navigationGranularity==='month'?12-highlighted.month:columns-1-(highlighted.year-years.value[0][0].year)%columns};else if(event.key==='Enter'||event.key===' '){event.preventDefault();event.stopImmediatePropagation();if(navigationGranularity==='month')selectMonth({year:highlighted.year,month:highlighted.month});else selectYear({year:highlighted.year});return}else return;event.preventDefault();event.stopImmediatePropagation();if(movement.delta!==0)moveBy(movement.unit,movement.delta)},setViewMode:value=>{connection.value?.handleEvent({type:'set-view-mode',value});refresh()},selectDate:value=>{const type=kind==='calendar'||kind==='date'||kind==='date-range'?'select':'select-date';connection.value?.handleEvent({type,value});refresh()},selectMonth,selectYear});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connectQueued=false;connection.value?.disconnect();connection.value=undefined});watch([()=>runtimeProps.disabled,()=>runtimeProps.readonly,()=>runtimeProps.required,()=>runtimeProps.label,()=>runtimeProps.policies,()=>runtimeProps.position,()=>runtimeProps.side,()=>runtimeProps.align,()=>runtimeProps.sideOffset,()=>runtimeProps.collisionPadding,()=>runtimeProps.collisionBoundary,()=>runtimeProps.avoidCollisions,()=>runtimeProps.hideWhenDetached,()=>runtimeProps.strategy,()=>runtimeProps.tracking],connect);watch(referenceDate,value=>{if(runtimeProps.highlightedValue===undefined&&runtimeProps.defaultHighlightedValue===undefined&&dateOf(runtimeProps.modelValue??runtimeProps.defaultValue)===null)localHighlight.value=value;connect()});watch([()=>runtimeProps.modelValue,()=>runtimeProps.open,()=>runtimeProps.highlightedValue],(values,previousValues)=>{if(connection.value===undefined)return;if(values[0]!==previousValues[0])pendingValue.value=noPendingPickerValue;const result=connection.value.syncControlledValues({...controlled.value?{value:runtimeProps.modelValue}:{},...kind!=='calendar'&&controlled.open?{open:runtimeProps.open}:{},...controlled.highlighted?{highlightedValue:runtimeProps.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error?.message??'Could not synchronize picker values.');refresh()});return()=>h(Fragment,null,slots['default']?.(state.value)??[])}});return component}export const PickerTrigger=/* @__PURE__ */defineComponent({name:'SectilePickerTrigger',inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerTrigger');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register('trigger',node instanceof HTMLElement?node:undefined),type:props.as==='button'?'button':undefined,disabled:root.state.value.disabled,'aria-haspopup':'dialog','aria-expanded':String(root.state.value.open),'data-scope':root.scope,'data-part':'trigger'}),{default:()=>slots['default']?.(root.state.value)})}});export const PickerAnchor=/* @__PURE__ */defineComponent({name:'SectilePickerAnchor',inheritAttrs:false,props:partProps,setup(props,{attrs,slots}){const root=useRoot('PickerAnchor');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register('anchor',node instanceof HTMLElement?node:undefined),'data-scope':root.scope,'data-part':'anchor'}),slots)}});export const PickerContent=/* @__PURE__ */defineComponent({name:'SectilePickerContent',inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerContent');const element=shallowRef();const open=computed(()=>root.inline||root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:'post'});return()=>{const exiting=!root.inline&&!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const content=node instanceof HTMLElement?node:undefined;element.value=content;root.register('content',content)},role:root.inline?'group':'dialog','aria-modal':root.inline?undefined:'false',hidden:root.inline?false:!present.value,...exiting?{inert:true,'aria-hidden':'true'}:{},'data-scope':root.scope,'data-part':'content','data-state':root.state.value.open?'open':'closed',style:!root.inline&&root.position.value?{position:root.strategy.value}:undefined}),{default:()=>slots['default']?.(root.state.value)})}}});export const PickerPortal=/* @__PURE__ */defineComponent({name:'SectilePickerPortal',inheritAttrs:false,props:{to:{type:[String,Object],default:undefined},disabled:{type:Boolean,default:false},defer:{type:Boolean,default:false}},setup(props,{slots}){useRoot('PickerPortal');const portalTarget=useHostPortalTarget();return()=>h(Teleport,{to:props.to??portalTarget.value??'body',disabled:props.disabled,defer:props.defer},slots['default']?.())}});export const PickerGrid=/* @__PURE__ */defineComponent({name:'SectilePickerGrid',inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerGrid');return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register('grid',node instanceof HTMLElement?node:undefined),role:'grid',onKeydown:root.handleGridKey,'data-scope':root.scope,'data-part':'grid'}),{default:()=>slots['default']?.(root.state.value)})}});export const PickerCell=/* @__PURE__ */defineComponent({name:'SectilePickerCell',inheritAttrs:false,props:{value:{type:Object,required:true},as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot('PickerCell');const state=computed(()=>cellState(root.kind,root.state.value,props.value));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value)},disabled:state.value.disabled,onClick:event=>{event.stopPropagation();root.selectDate(props.value)},role:'gridcell','aria-selected':String(state.value.selected||state.value.inRange),'data-sectile-picker-date':formatDateValue(props.value),'data-scope':root.scope,'data-part':'cell','data-selected':state.value.selected?'':undefined,'data-in-range':state.value.inRange?'':undefined,'data-highlighted':state.value.highlighted?'':undefined,'data-outside-month':state.value.outsideMonth?'':undefined}),{default:()=>slots['default']?.(state.value)})}});export function createPickerMonthCell(part='month-cell',name='SectilePickerMonthCell'){return defineComponent({name,inheritAttrs:false,props:{value:{type:Object,required:true},as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);const state=computed(()=>({value:props.value,selected:monthContainsValue(root.state.value.value,props.value),inRange:periodInRange(root.state.value.value,{...props.value,day:1},{...props.value,day:31}),highlighted:root.state.value.highlightedValue.year===props.value.year&&root.state.value.highlightedValue.month===props.value.month,disabled:root.state.value.disabled||!root.periodAvailable(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:state.value.disabled,tabIndex:state.value.highlighted?0:-1,onClick:event=>{event.stopPropagation();if(!state.value.disabled)root.selectMonth(props.value)},role:'gridcell','aria-selected':String(state.value.selected||state.value.inRange),'aria-disabled':String(state.value.disabled),'data-sectile-picker-month':`${String(props.value.year).padStart(4,'0')}-${String(props.value.month).padStart(2,'0')}`,'data-scope':root.scope,'data-part':part,'data-selected':state.value.selected?'':undefined,'data-in-range':state.value.inRange?'':undefined,'data-highlighted':state.value.highlighted?'':undefined}),{default:()=>slots['default']?.(state.value)})}})}export function createPickerYearCell(part='year-cell',name='SectilePickerYearCell'){return defineComponent({name,inheritAttrs:false,props:{value:{type:Object,required:true},as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);const currentYear=(new Date).getFullYear();const state=computed(()=>({value:props.value,selected:yearContainsValue(root.state.value.value,props.value),inRange:periodInRange(root.state.value.value,{year:props.value.year,month:1,day:1},{year:props.value.year,month:12,day:31}),highlighted:root.state.value.highlightedValue.year===props.value.year,current:props.value.year===currentYear,disabled:root.state.value.disabled||!root.periodAvailable(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:state.value.disabled,tabIndex:state.value.highlighted?0:-1,onClick:event=>{event.stopPropagation();if(!state.value.disabled)root.selectYear(props.value)},role:'gridcell','aria-selected':String(state.value.selected||state.value.inRange),'aria-disabled':String(state.value.disabled),'aria-current':state.value.current?'date':undefined,'data-sectile-picker-year':String(props.value.year),'data-scope':root.scope,'data-part':part,'data-selected':state.value.selected?'':undefined,'data-in-range':state.value.inRange?'':undefined,'data-highlighted':state.value.highlighted?'':undefined,'data-current':state.value.current?'':undefined}),{default:()=>slots['default']?.(state.value)})}})}export const PickerMonthCell=/* @__PURE__ */createPickerMonthCell();export const PickerYearCell=/* @__PURE__ */createPickerYearCell();export function createPickerInput(part,name,type='text'){return defineComponent({name,inheritAttrs:false,props:{name:{type:String,default:undefined},form:{type:String,default:undefined},as:{type:[String,Object,Function],default:'input'},asChild:{type:Boolean,default:false}},setup(props,{attrs}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.register(part,node instanceof HTMLInputElement?node:undefined),type,name:props.name,form:props.form,disabled:root.state.value.disabled,readOnly:root.granularity!=='day'||root.state.value.readonly||part==='start-input'||part==='end-input'||part==='start-date-time-input'||part==='end-date-time-input',required:false,value:root.state.value.value===null?'':root.formatInput(root.granularity,part,root.state.value.value),'data-scope':root.scope,'data-part':part}))}})}export function createPickerMove(unit,direction,name,part){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:root.state.value.disabled,onClick:()=>root.move(unit,direction),'data-scope':root.scope,'data-part':part??`${direction<0?'previous':'next'}-${unit}`}),{default:()=>slots['default']?.(root.state.value)})}})}export function createPickerViewTrigger(view,name){return defineComponent({name,inheritAttrs:false,props:{as:{type:[String,Object,Function],default:'button'},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==='button'?'button':undefined,disabled:root.state.value.disabled,onClick:()=>root.setViewMode(view),'aria-pressed':String(root.state.value.viewMode===view),'data-scope':root.scope,'data-part':`${view}-view-trigger`,'data-state':root.state.value.viewMode===view?'active':'inactive'}),{default:()=>slots['default']?.(root.state.value)})}})}function useRoot(part){const root=inject(key);if(root===undefined)throw new TypeError(`${part} must be used inside a date picker root.`);return root}function firstPickerInput(elements,kind){for(const part of inputParts(kind)){const element=elements.get(part);if(element instanceof HTMLInputElement)return element}return null}function pickerFormSubmissions(elements,kind){const submission=(part,relativeName)=>{const element=elements.get(part);if(!(element instanceof HTMLInputElement))return null;return{element:()=>element,...relativeName===undefined?{}:{relativeName},capabilities:hiddenInputSubmissionCapabilities}};if(kind==='calendar'||kind==='date')return compactSubmissions(submission('input'));if(kind==='date-range'){return compactSubmissions(submission('start-input','start'),submission('end-input','end'))}if(kind==='date-time'){const combined=submission('date-time-input');return combined===null?compactSubmissions(submission('date-input','date'),submission('time-input','time')):[combined]}const combinedStart=submission('start-date-time-input','start');const combinedEnd=submission('end-date-time-input','end');return compactSubmissions(combinedStart??submission('start-date-input','start.date'),combinedStart===null?submission('start-time-input','start.time'):null,combinedEnd??submission('end-date-input','end.date'),combinedEnd===null?submission('end-time-input','end.time'):null)}function compactSubmissions(...submissions){return submissions.filter(submission=>submission!==null)}function monthFor(value){return createCalendarMonth({year:value.year,month:value.month})}function yearFor(year){return createCalendarYear(year)}function yearsFrom(start,pageSize){const columns=4;return Array.from({length:Math.ceil(pageSize/columns)},(_row,rowIndex)=>Array.from({length:columns},(_column,columnIndex)=>Object.freeze({year:start+rowIndex*columns+columnIndex})))}function pageStartContaining(year,currentStart,pageSize){if(year<currentStart)return currentStart-Math.ceil((currentStart-year)/pageSize)*pageSize;if(year>=currentStart+pageSize)return currentStart+Math.floor((year-currentStart)/pageSize)*pageSize;return currentStart}function monthAvailable(value,policies){const days=daysInMonth(value.year,value.month);for(let day=1;day<=days;day+=1){if(isCalendarValueAvailable({year:value.year,month:value.month,day},policies))return true}return false}function daysInMonth(year,month){if(month===2)return year%4===0&&(year%100!==0||year%400===0)?29:28;return[4,6,9,11].includes(month)?30:31}function dateOf(value){if(value===null)return null;if('year'in value)return value;if('date'in value)return value.date;const start=value.start;return'date'in start?start.date:start}function extractState(kind,raw){const state=raw;if(kind==='calendar')return{value:state['value'],highlighted:state['highlighted'],open:true,view:state['view'],viewMode:state['viewMode']};if(kind==='date')return{value:state['value'],highlighted:state['highlighted'],open:state['open'],view:state['view'],viewMode:state['viewMode']};const calendar=state['calendar'];return{value:state['value'],highlighted:calendar['highlighted'],open:calendar['open'],view:calendar['view'],viewMode:calendar['viewMode']}}function compare(left,right){return left.year-right.year||left.month-right.month||left.day-right.day}function cellState(kind,state,value){const selectedDate=dateOf(state.value);let selected=selectedDate!==null&&compare(selectedDate,value)===0;let inRange=false;if(state.value!==null&&!('year'in state.value)&&!('date'in state.value)){const start='date'in state.value.start?state.value.start.date:state.value.start;const end='date'in state.value.end?state.value.end.date:state.value.end;inRange=compare(start,value)<=0&&compare(value,end)<=0;selected=compare(start,value)===0||compare(end,value)===0}return{value,selected,inRange,highlighted:compare(state.highlightedValue,value)===0,disabled:state.disabled,outsideMonth:value.month!==state.view.month||value.year!==state.view.year}}function monthContainsValue(value,month){const date=dateOf(value);return date!==null&&date.year===month.year&&date.month===month.month}function yearContainsValue(value,year){const date=dateOf(value);return date!==null&&date.year===year.year}function periodInRange(value,start,end){if(value===null||'year'in value||'date'in value)return false;const rangeStart='date'in value.start?value.start.date:value.start;const rangeEnd='date'in value.end?value.end.date:value.end;return compare(rangeStart,end)<=0&&compare(start,rangeEnd)<=0}function inputParts(kind){return kind==='calendar'||kind==='date'?['input']:kind==='date-range'?['start-input','end-input']:kind==='date-time'?['date-time-input','date-input','time-input']:['start-date-time-input','end-date-time-input','start-date-input','end-date-input','start-time-input','end-time-input']}function toDOMInputKey(part){if(part==='date-time-input')return'dateTimeInput';if(part==='start-date-time-input')return'startDateTimeInput';if(part==='end-date-time-input')return'endDateTimeInput';return part.replace(/-([a-z])/g,(_match,letter)=>letter.toUpperCase())}
|
|
2
2
|
//# sourceMappingURL=date-picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","names":["Fragment","Teleport","computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onMounted","nextTick","provide","shallowRef","watch","formatDateValue","parseDateValue","createCalendarMonth","createCalendarYear","isCalendarValueAvailable","hiddenInputSubmissionCapabilities","useCompositeFormControl","Primitive","useControlledStateInvariant","usePresence","useHostPortalTarget","useTemporalReferenceDate","specializePickerRootPart","_kind","component","key","Symbol","noPendingPickerValue","partProps","as","type","String","Object","Function","default","asChild","Boolean","createPickerRoot","capability","name","config","kind","scope","granularity","defaultView","defaultOpen","yearPageSize","inline","inheritAttrs","props","modelValue","undefined","defaultValue","open","highlightedValue","defaultHighlightedValue","referenceDate","disabled","readonly","required","label","policies","position","side","align","sideOffset","Number","collisionPadding","collisionBoundary","avoidCollisions","hideWhenDetached","strategy","tracking","emits","_value","slots","setup","emit","runtimeProps","elements","Map","connection","hostReferenceDate","value","inlineTrigger","document","createElement","localValue","localOpen","localHighlight","dateOf","yearPageStart","year","Math","floor","dates","monthFor","months","yearFor","years","yearsFrom","localView","freeze","month","localViewMode","controlled","highlighted","pendingValue","state","view","viewMode","root","get","focusTarget","firstPickerInput","submissions","pickerFormSubmissions","periodAvailable","monthAvailable","Array","from","length","_entry","index","some","refreshCells","grid","querySelectorAll","forEach","element","parsed","dataset","ok","setCellAttributes","refresh","raw","getSnapshot","picked","extractState","getWeek","getMonth","getYear","pageStartContaining","connect","disconnect","content","trigger","base","readOnly","onValueChange","onHighlightedValueChange","onUpdate","anchor","assign","manageVisibility","part","inputParts","toDOMInputKey","handleEvent","mounted","connectQueued","scheduleConnect","moveBy","unit","delta","direction","abs","selectMonth","day","selectYear","formatInput","register","has","delete","set","registerCell","move","repetitions","handleGridKey","event","altKey","ctrlKey","metaKey","navigationGranularity","columns","movement","preventDefault","stopImmediatePropagation","setViewMode","selectDate","values","previousValues","result","syncControlledValues","TypeError","error","message","PickerTrigger","attrs","useRoot","elementRef","node","HTMLElement","PickerAnchor","PickerContent","present","async","flush","exiting","role","hidden","inert","style","PickerPortal","to","defer","portalTarget","PickerGrid","onKeydown","PickerCell","cellState","onClick","stopPropagation","selected","inRange","outsideMonth","createPickerMonthCell","monthContainsValue","periodInRange","tabIndex","padStart","createPickerYearCell","currentYear","Date","getFullYear","yearContainsValue","current","PickerMonthCell","PickerYearCell","createPickerInput","form","HTMLInputElement","createPickerMove","createPickerViewTrigger","submission","relativeName","capabilities","compactSubmissions","combined","combinedStart","combinedEnd","filter","start","pageSize","ceil","_row","rowIndex","_column","columnIndex","currentStart","days","daysInMonth","includes","date","calendar","compare","left","right","selectedDate","end","rangeStart","rangeEnd","replace","_match","letter","toUpperCase"],"sources":["../../src/internal/date-picker.ts"],"mappings":"OACEA,SAAUC,SAAUC,SAAUC,gBAAiBC,EAAGC,OAAQC,WAAYC,gBAAiBC,UACvFC,SAAUC,QAASC,WAAYC,UAG1B,aAMEC,gBAAiBC,mBAAsD,0CAEvEC,oBAAqBC,mBAAoBC,6BAAgC,oCAGhFC,kCACAC,4BACK,2BACEC,cAAmC,yBACnCC,gCAAmC,+BACnCC,gBAAmB,uBACnBC,wBAA2B,6BAC3BC,6BAAgC,iCA4HnC,SAAUC,yBACdC,MACAC,WAEA,OAAOA,SACT,CAuBA,MAAMC,IAAMC,OAAO,yBACnB,MAAMC,qBAAuBD,OAAO,2BACpC,MAAME,UAAY,CAAEC,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,OAASC,QAAS,CAAEL,KAAMM,QAASF,QAAS,eAEpI,SAAUG,iBAA0CC,WAA0CC,KAAcC,OAA2B,IAC3I,MAAMC,KAAOH,WAAWG,KACxB,MAAMC,MAAQF,OAAOE,OAASD,KAC9B,MAAME,YAAcH,OAAOG,aAAe,MAC1C,MAAMC,YAAcJ,OAAOI,cAAgBD,cAAgB,MAAQ,QAAU,QAC7E,MAAME,YAAcL,OAAOK,aAAe,MAC1C,MAAMC,aAAeN,OAAOM,cAAgB,GAC5C,MAAMC,OAASP,OAAOO,QAAU,MAChC,MAAMvB,UAAYxB,gBAAgB,CAChCuC,KAAMS,aAAc,MACpBC,MAAO,CACLC,WAAY,CAAEpB,KAAME,OAA0CE,QAASiB,WAAaC,aAAc,CAAEtB,KAAME,OAA0CE,QAAS,MAC7JmB,KAAM,CAAEvB,KAAMM,QAASF,QAASiB,WAAaN,YAAa,CAAEf,KAAMM,QAASF,QAASW,aACpFS,iBAAkB,CAAExB,KAAME,OAA+BE,QAASiB,WAAaI,wBAAyB,CAAEzB,KAAME,OAA+BE,QAASiB,WACxJK,cAAe,CAAE1B,KAAME,OAA+BE,QAASiB,WAC/DP,YAAa,CAAEd,KAAMC,OAAsCG,QAASU,aACpEa,SAAU,CAAE3B,KAAMM,QAASF,QAAS,OAASwB,SAAU,CAAE5B,KAAMM,QAASF,QAAS,OAASyB,SAAU,CAAE7B,KAAMM,QAASF,QAAS,OAC9H0B,MAAO,CAAE9B,KAAMC,OAAQG,QAASiB,WAAaU,SAAU,CAAE/B,KAAME,OAA6CE,QAASiB,WACrHW,SAAU,CAAEhC,KAAMM,QAASF,QAAS,MACpC6B,KAAM,CAAEjC,KAAMC,OAAgEG,QAAS,UACvF8B,MAAO,CAAElC,KAAMC,OAAiEG,QAAS,UACzF+B,WAAY,CAAEnC,KAAMoC,OAAQhC,QAAS,GACrCiC,iBAAkB,CAAErC,KAAM,CAACoC,OAAQlC,QAAgEE,QAAS,GAC5GkC,kBAAmB,CAAEtC,KAAM,CAACC,OAAQC,QAAiEE,QAASiB,WAC9GkB,gBAAiB,CAAEvC,KAAMM,QAASF,QAAS,MAAQoC,iBAAkB,CAAExC,KAAMM,QAASF,QAAS,OAC/FqC,SAAU,CAAEzC,KAAMC,OAAoEG,QAAS,YAC/FsC,SAAU,CAAE1C,KAAMC,OAAoEG,QAAS,UAC/FL,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,OAASC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QAExHuC,MAAO,CAAE,oBAAsBC,QAA0C,KAAM,cAAgBA,QAA6B,KAAM,0BAA4BA,QAA+B,MAC7LC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAO4B,KAAMF,QACjB,MAAMG,aAAe7B,MACrB,MAAM8B,SAAW,IAAIC,IAA4B,MAAMC,WAAazE,aACpE,MAAM0E,kBAAoB7D,2BAC1B,MAAMmC,cAAgBzD,SAAS,IAAM+E,aAAatB,eAAiB0B,kBAAkBC,OACrF,MAAMC,qBAAuBC,WAAa,cAAgBtC,QAAUN,OAAS,WAAaU,UAAYkC,SAASC,cAAc,UAC7H,MAAMC,WAAa/E,WAAwBsE,aAAa5B,aAAeC,UAAY2B,aAAa5B,WAAa4B,aAAa1B,cAC1H,MAAMoC,UAAYhF,WAAWsE,aAAazB,MAAQyB,aAAajC,aAC/D,MAAM4C,eAAiBjF,WAAsBsE,aAAaxB,kBAAoBwB,aAAavB,yBAA2BmC,OAAOH,WAAWJ,QAAU3B,cAAc2B,OAChK,MAAMQ,cAAgBnF,WAAWiF,eAAeN,MAAMS,KAAOC,KAAKC,MAAMhD,aAAe,IACvF,MAAMiD,MAAQvF,WAA8CwF,SAASP,eAAeN,QACpF,MAAMc,OAASzF,WAAuD0F,QAAQT,eAAeN,MAAMS,OACnG,MAAMO,MAAQ3F,WAAoD4F,UAAUT,cAAcR,MAAOrC,eACjG,MAAMuD,UAAY7F,WAAWwB,OAAOsE,OAAO,CAAEV,KAAMH,eAAeN,MAAMS,KAAMW,MAAOd,eAAeN,MAAMoB,SAC1G,MAAMC,cAAgBhG,WAA6BsE,aAAalC,aAChE,MAAM6D,WAAa,CACjBtB,MAAOjE,4BAA4B,GAAGuB,iBAAkB,aAAc,IAAMqC,aAAa5B,YACzFG,KAAMnC,4BAA4B,GAAGuB,iBAAkB,OAAQ,IAAMqC,aAAazB,MAClFqD,YAAaxF,4BAA4B,GAAGuB,iBAAkB,mBAAoB,IAAMqC,aAAaxB,mBAEvG,MAAMqD,aAAenG,WAAsDmB,sBAC3E,MAAMiF,MAAQ7G,SAA8B,KAC1C,MAAM2G,YAAc5B,aAAaxB,kBAAoBmC,eAAeN,MACpE,MAAMA,MAAQsB,WAAWtB,OAASwB,aAAaxB,QAAUxD,qBACrDgF,aAAaxB,MACbL,aAAa5B,aAAeC,UAAY2B,aAAa5B,WAAaqC,WAAWJ,MACjF,OAAOnD,OAAOsE,OAAO,CACnBnB,MACA7B,iBAAkBoD,YAAarD,KAAMyB,aAAazB,MAAQmC,UAAUL,MAAOY,MAAOA,MAAMZ,MAAOc,OAAQA,OAAOd,MAAOgB,MAAOA,MAAMhB,MAClI0B,KAAMR,UAAUlB,MAAO2B,SAAUN,cAAcrB,MAAO1B,SAAUqB,aAAarB,SAAUC,SAAUoB,aAAapB,aAGlH1C,wBAAwB,CACtB+F,KAAM,IAAMhC,SAASiC,IAAI,YAAcjC,SAASiC,IAAI,SAAW,KAC/DC,YAAa,IAAMlC,SAASiC,IAAI,aAAevE,OAAS,WAAa,KAAOyE,iBAAiBnC,SAAUtC,QAAUsC,SAASiC,IAAI,SAAW,KACzIG,YAAa,IAAMC,sBAAsBrC,SAAUtC,QAErD,MAAM4E,gBAAmBlC,QACvB,MAAMtB,SAAWiB,aAAajB,SAC9B,GAAI,UAAWsB,MAAO,OAAOmC,eAAenC,MAAOtB,UACnD,OAAO0D,MAAMC,KAAK,CAAEC,OAAQ,IAAM,CAACC,OAAQC,QAAUA,MAAQ,GAC1DC,KAAMrB,OAAUe,eAAe,CAAE1B,KAAMT,MAAMS,KAAMW,OAAS1C,YAEjE,MAAMgE,aAAe,KACnB,MAAMC,KAAO/C,SAASiC,IAAI,QAAS,GAAIc,OAAS3E,WAAa8B,WAAWE,QAAUhC,UAAW,OAC7F2E,KAAKC,iBAA8B,8BAA8BC,QAASC,UACxE,MAAMC,OAASvH,eAAesH,QAAQE,QAAQ,sBAAwB,IACtE,GAAID,OAAOE,GAAInD,WAAWE,OAAOkD,kBAAkBJ,QAASC,OAAO/C,UAGvE,MAAMmD,QAAU,KACd,MAAMC,IAAMtD,WAAWE,OAAOqD,cAAc5B,MAAO,GAAI2B,MAAQpF,UAAW,OAC1E,MAAMsF,OAASC,aAAajG,KAAM8F,KAAMhD,WAAWJ,MAAQsD,OAAOtD,MAAOM,eAAeN,MAAQsD,OAAO/B,YACvGlB,UAAUL,MAAQsD,OAAOpF,KAAMgD,UAAUlB,MAAQsD,OAAO5B,KAAML,cAAcrB,MAAQsD,OAAO3B,SAC3F,GAAI7B,WAAWE,QAAUhC,UAAW,CAClC4C,MAAMZ,MAAQsD,OAAO3B,WAAa,OAAS,CAAC7B,WAAWE,MAAMwD,WAAaF,OAAO3B,WAAa,QAAU7B,WAAWE,MAAMyD,WAAa,GACtI3C,OAAOd,MAAQsD,OAAO3B,WAAa,OAAS7B,WAAWE,MAAM0D,UAAY,GACzE,GAAIlG,cAAgB,OAAQ,CAC1BgD,cAAcR,MAAQ2D,oBAAoBL,OAAO/B,YAAYd,KAAMD,cAAcR,MAAOrC,cACxFqD,MAAMhB,MAAQiB,UAAUT,cAAcR,MAAOrC,aAC/C,CACF,CACA+E,oBACKvH,SAASuH,eAEhB,MAAMkB,QAAU,KACd9D,WAAWE,OAAO6D,aAClB,MAAMC,QAAUlE,SAASiC,IAAI,WAAY,MAAMc,KAAO/C,SAASiC,IAAI,QAAS,MAAMkC,QAAUnE,SAASiC,IAAI,YAAc5B,cACvH,GAAI6D,UAAY9F,WAAa2E,OAAS3E,WAAcV,OAAS,YAAcyG,UAAY/F,UAAY,OACnG,MAAMgG,KAAgC,CACpCpC,KAAMkC,QAASnB,KAAMrE,SAAUqB,aAAarB,SAAU2F,SAAUtE,aAAapB,SAAUC,SAAUmB,aAAanB,SAC9GH,cAAeA,cAAc2B,SACzBL,aAAalB,QAAUT,UAAY,GAAK,CAAES,MAAOkB,aAAalB,UAAckB,aAAajB,WAAaV,UAAY,GAAK,CAAEU,SAAUiB,aAAajB,aAChJ4C,WAAWtB,MAAQ,CAAEA,MAAOL,aAAa5B,YAAe,CAAEE,aAAcmC,WAAWJ,UACnFsB,WAAWC,YAAc,CAAEpD,iBAAkBwB,aAAaxB,kBAAqB,CAAEC,wBAAyBkC,eAAeN,OAC7HkE,cAAgBlE,QACdI,WAAWJ,MAAQA,MACnB,GAAIsB,WAAWtB,MAAOwB,aAAaxB,MAAQA,MAC3CN,KAAK,oBAAqBM,QAE5BmE,yBAA2BnE,QAAuBM,eAAeN,MAAQA,MAAON,KAAK,0BAA2BM,QAChHoE,SAAUjB,SAEZ,GAAI7F,OAAS,WAAY,CACvB0G,KAAK,WAAaD,QAClB,MAAMM,OAASzE,SAASiC,IAAI,UAC5B,GAAIwC,SAAWrG,UAAWgG,KAAK,UAAYK,OAC3CxH,OAAOyH,OAAON,KAAM,CAClBO,iBAAkB,MAClB5F,SAAUgB,aAAahB,SAAUC,KAAMe,aAAaf,KAAMC,MAAOc,aAAad,MAAOC,WAAYa,aAAab,WAC9GE,iBAAkBW,aAAaX,iBAAkBE,gBAAiBS,aAAaT,gBAC/EC,iBAAkBQ,aAAaR,iBAAkBC,SAAUO,aAAaP,SACxEC,SAAUM,aAAaN,WAEzB,GAAIM,aAAaV,oBAAsBjB,UAAWgG,KAAK,qBAAuBrE,aAAaV,kBAC3F,GAAIqC,WAAWpD,KAAM8F,KAAK,QAAUrE,aAAazB,UAC5C8F,KAAK,eAAiB3D,UAAUL,MACrCgE,KAAK,gBAAmBhE,QAAqBK,UAAUL,MAAQA,MAAON,KAAK,cAAeM,OAC5F,CACA,GAAIxC,cAAgB,MAAO,CACzB,IAAK,MAAMgH,QAAQC,WAAWnH,MAAO,CACnC,MAAMwF,QAAUlD,SAASiC,IAAI2C,MAC7B,GAAI1B,UAAY9E,UAAWgG,KAAKU,cAAcF,OAAS1B,OACzD,CACF,CACAhD,WAAWE,MAAQ7C,WAAWyG,QAAQI,MACtC,GAAIrE,aAAalC,cAAgB,QAASqC,WAAWE,MAAM2E,YAAY,CAAEhI,KAAM,gBAAiBqD,MAAOL,aAAalC,cACpHiF,eAAgBS,WAElB,IAAIyB,QAAU,MACd,IAAIC,cAAgB,MACpB,MAAMC,gBAAkB,KACtB,IAAKF,SAAWC,cAAe,OAC/BA,cAAgB,UACX1J,SAAS,KACZ0J,cAAgB,MAChB,GAAID,QAAShB,aAGjB,MAAMmB,OAAS,CAACC,KAA4BC,SAC1C,MAAMC,UAAYD,MAAQ,GAAK,EAAI,EACnC,IAAK,IAAIzC,MAAQ,EAAGA,MAAQ9B,KAAKyE,IAAIF,OAAQzC,OAAS,EAAG,CACvD1C,WAAWE,OAAO2E,YAAY,GAAGO,UAAY,EAAI,WAAa,UAAUF,OAC1E,CACA7B,WAEF,MAAMiC,YAAepF,QACnBF,WAAWE,OAAO2E,YAAYnH,cAAgB,QAC1C,CAAEb,KAAMW,OAAS,YAAcA,OAAS,QAAUA,OAAS,aAAe,SAAW,cAAe0C,MAAO,IAAKA,MAAOqF,IAAK,IAC5H,CAAE1I,KAAM,eAAgBqD,QAC5BmD,WAEF,MAAMmC,WAActF,QAClBF,WAAWE,OAAO2E,YAAY,CAAEhI,KAAMW,OAAS,YAAcA,OAAS,QAAUA,OAAS,aAAe,SAAW,cAAe0C,MAAO,CAAES,KAAMT,MAAMS,KAAMW,MAAO,EAAGiE,IAAK,KAC5KlC,WAEF/H,QAAiBkB,IAAK,CACpBgB,KAAMC,MAAOC,YAAaI,OAAQ6D,MAAOS,gBAAiBqD,YAAapI,WAAWoI,YAClF5G,SAAU/D,SAAS,IAAM+E,aAAahB,UAAWS,SAAUxE,SAAS,IAAM+E,aAAaP,UACvFoG,SAAU,CAAChB,KAAM1B,WACf,GAAIlD,SAASiC,IAAI2C,QAAU1B,SAAYA,UAAY9E,YAAc4B,SAAS6F,IAAIjB,MAAQ,OACtF,GAAI1B,UAAY9E,UAAW4B,SAAS8F,OAAOlB,WAAY5E,SAAS+F,IAAInB,KAAM1B,SAC1EgC,mBAEF3B,QAAS,IAAMrD,WAAWE,OAAOmD,UACjCyC,aAAc,CAAC9C,QAAS9C,QAAUF,WAAWE,OAAOkD,kBAAkBJ,QAAS9C,OAC/E6F,KAAM,CAACb,KAAME,aACX,MAAMY,YAActI,cAAgB,QAAUwH,OAAS,OAASrH,aAAe,EAC/EoH,OAAOC,KAAME,UAAYY,cAE3BC,cAAgBC,QACd,GAAKxI,cAAgB,OAASiE,MAAMzB,MAAM2B,WAAa,QAAWqE,MAAMC,QAAUD,MAAME,SAAWF,MAAMG,QAAS,OAClH,MAAMC,sBAAwB5I,cAAgB,MAAQ,QAAUA,YAChE,MAAM6I,QAAUD,wBAA0B,QAAU,EAAI,EACxD,MAAM7E,YAAcE,MAAMzB,MAAM7B,iBAChC,IAAImI,SACJ,GAAIN,MAAM1J,MAAQ,YAAagK,SAAW,CAAEtB,KAAMoB,sBAAuBnB,OAAQ,QAC5E,GAAIe,MAAM1J,MAAQ,aAAcgK,SAAW,CAAEtB,KAAMoB,sBAAuBnB,MAAO,QACjF,GAAIe,MAAM1J,MAAQ,UAAWgK,SAAW,CAAEtB,KAAMoB,sBAAuBnB,OAAQoB,cAC/E,GAAIL,MAAM1J,MAAQ,YAAagK,SAAW,CAAEtB,KAAMoB,sBAAuBnB,MAAOoB,cAChF,GAAIL,MAAM1J,MAAQ,SAAUgK,SAAW,CAAEtB,KAAM,OAAQC,MAAOmB,wBAA0B,QAAUzI,cAAgB,QAClH,GAAIqI,MAAM1J,MAAQ,WAAYgK,SAAW,CAAEtB,KAAM,OAAQC,MAAOmB,wBAA0B,OAASzI,aAAe,QAClH,GAAIqI,MAAM1J,MAAQ,OAAQgK,SAAW,CAAEtB,KAAMoB,sBAAuBnB,MAAOmB,wBAA0B,QAAU,EAAI7E,YAAYH,SAAWG,YAAYd,KAAOO,MAAMhB,MAAM,GAAI,GAAIS,MAAQ4F,eACzL,GAAIL,MAAM1J,MAAQ,MAAOgK,SAAW,CAAEtB,KAAMoB,sBAAuBnB,MAAOmB,wBAA0B,QAAU,GAAK7E,YAAYH,MAAQiF,QAAU,GAAM9E,YAAYd,KAAOO,MAAMhB,MAAM,GAAI,GAAIS,MAAQ4F,cACtM,GAAIL,MAAM1J,MAAQ,SAAW0J,MAAM1J,MAAQ,IAAK,CACnD0J,MAAMO,iBACNP,MAAMQ,2BACN,GAAIJ,wBAA0B,QAAShB,YAAY,CAAE3E,KAAMc,YAAYd,KAAMW,MAAOG,YAAYH,aAC3FkE,WAAW,CAAE7E,KAAMc,YAAYd,OACpC,MACF,MAAO,OACPuF,MAAMO,iBACNP,MAAMQ,2BACN,GAAIF,SAASrB,QAAU,EAAGF,OAAOuB,SAAStB,KAAMsB,SAASrB,QAE3DwB,YAAczG,QAAYF,WAAWE,OAAO2E,YAAY,CAAEhI,KAAM,gBAAiBqD,QAAUmD,WAC3FuD,WAAa1G,QACX,MAAMrD,KAAOW,OAAS,YAAcA,OAAS,QAAUA,OAAS,aAAe,SAAW,cAC1FwC,WAAWE,OAAO2E,YAAY,CAAEhI,KAAMqD,QACtCmD,WAEFiC,YACAE,aAEFpK,UAAU,KACR0J,QAAU,KACVhB,YAEF3I,gBAAgB,KACd2J,QAAU,MACVC,cAAgB,MAChB/E,WAAWE,OAAO6D,aAClB/D,WAAWE,MAAQhC,YAErB1C,MAAM,CACJ,IAAMqE,aAAarB,SAAU,IAAMqB,aAAapB,SAAU,IAAMoB,aAAanB,SAAU,IAAMmB,aAAalB,MAAO,IAAMkB,aAAajB,SACpI,IAAMiB,aAAahB,SAAU,IAAMgB,aAAaf,KAAM,IAAMe,aAAad,MAAO,IAAMc,aAAab,WACnG,IAAMa,aAAaX,iBAAkB,IAAMW,aAAaV,kBAAmB,IAAMU,aAAaT,gBAC9F,IAAMS,aAAaR,iBAAkB,IAAMQ,aAAaP,SAAU,IAAMO,aAAaN,UACpFuE,SACHtI,MAAM+C,cAAgB2B,QACpB,GACEL,aAAaxB,mBAAqBH,WAC/B2B,aAAavB,0BAA4BJ,WACzCuC,OAAOZ,aAAa5B,YAAc4B,aAAa1B,gBAAkB,KACpEqC,eAAeN,MAAQA,MACzB4D,YAEFtI,MAAM,CAAC,IAAMqE,aAAa5B,WAAY,IAAM4B,aAAazB,KAAM,IAAMyB,aAAaxB,kBAAmB,CAACwI,OAAQC,kBAC5G,GAAI9G,WAAWE,QAAUhC,UAAW,OACpC,GAAI2I,OAAO,KAAOC,eAAe,GAAIpF,aAAaxB,MAAQxD,qBAC1D,MAAMqK,OAAS/G,WAAWE,MAAM8G,qBAAqB,IAC/CxF,WAAWtB,MAAQ,CAAEA,MAAOL,aAAa5B,YAAe,MAAST,OAAS,YAAcgE,WAAWpD,KAAO,CAAEA,KAAMyB,aAAazB,MAAS,MACxIoD,WAAWC,YAAc,CAAEpD,iBAAkBwB,aAAaxB,kBAAqB,KAErF,IAAK0I,OAAO5D,GAAI,MAAM,IAAI8D,UAAUF,OAAOG,OAAOC,SAAW,wCAAyC9D,YAExG,MAAO,IACErI,EAAEJ,SAAuB,KAAM8E,MAAM,aAAaiC,MAAMzB,QAAuD,GAE1H,IAEF,OAAO3D,SACT,QAEO,MAAM6K,6BAAgCrM,gBAAgB,CAC3DuC,KAAM,uBAAwBS,aAAc,MAC5CC,MAAO,CAAEpB,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,UAAYC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QAClIyC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAAa,MAAMoC,KAAOwF,QAAQ,iBAAkB,MAAO,IAAkBtM,EAAEgB,UAAWd,WAAWmM,MAAO,CAC9HzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASqK,WAAaC,MAAkB1F,KAAK4D,SAAS,UAAW8B,gBAAgBC,YAAcD,KAAOtJ,WACnIrB,KAAMmB,MAAMpB,KAAO,SAAW,SAAWsB,UAAWM,SAAUsD,KAAKH,MAAMzB,MAAM1B,SAC/E,gBAAiB,SAAU,gBAAiB1B,OAAOgF,KAAKH,MAAMzB,MAAM9B,MAAO,aAAc0D,KAAKrE,MAAO,YAAa,YAChH,CAAER,QAAS,IAAMyC,MAAM,aAAaoC,KAAKH,MAAMzB,QAAW,WAGzD,MAAMwH,4BAA+B3M,gBAAgB,CAC1DuC,KAAM,sBAAuBS,aAAc,MAAOC,MAAOrB,UACzD,KAAAgD,CAAM3B,OAAOqJ,MAAO3H,QAAa,MAAMoC,KAAOwF,QAAQ,gBAAiB,MAAO,IAAkBtM,EAAEgB,UAAWd,WAAWmM,MAAO,CAC7HzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASqK,WAAaC,MAAkB1F,KAAK4D,SAAS,SAAU8B,gBAAgBC,YAAcD,KAAOtJ,WAClI,aAAc4D,KAAKrE,MAAO,YAAa,WACrCiC,MAAQ,WAGP,MAAMiI,6BAAgC5M,gBAAgB,CAC3DuC,KAAM,uBAAwBS,aAAc,MAAOC,MAAOrB,UAC1D+C,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAClB,MAAMoC,KAAOwF,QAAQ,iBACrB,MAAMtE,QAAUzH,aAChB,MAAM6C,KAAOtD,SAAS,IAAMgH,KAAKhE,QAAUgE,KAAKH,MAAMzB,MAAM9B,MAC5D,MAAMwJ,QAAU1L,YAAYkC,KAAM4E,SAClCxH,MAAMoM,QAASC,gBAAoBxM,WAAYyG,KAAKuB,WAAc,CAAEyE,MAAO,SAC3E,MAAO,KACL,MAAMC,SAAWjG,KAAKhE,SAAWM,KAAK8B,OAAS0H,QAAQ1H,MACvD,OAAOlF,EAAEgB,UAAWd,WAAWmM,MAAO,CACpCzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAC7BqK,WAAaC,OAAoB,MAAMxD,QAAUwD,gBAAgBC,YAAcD,KAAOtJ,UAAW8E,QAAQ9C,MAAQ8D,QAASlC,KAAK4D,SAAS,UAAW1B,UACnJgE,KAAMlG,KAAKhE,OAAS,QAAU,SAAU,aAAcgE,KAAKhE,OAASI,UAAY,QAAS+J,OAAQnG,KAAKhE,OAAS,OAAS8J,QAAQ1H,SAC5H6H,QAAU,CAAEG,MAAO,KAAM,cAAe,QAAW,GACvD,aAAcpG,KAAKrE,MAAO,YAAa,UAAW,aAAcqE,KAAKH,MAAMzB,MAAM9B,KAAO,OAAS,SACjG+J,OAAQrG,KAAKhE,QAAUgE,KAAKjD,SAASqB,MAAQ,CAAErB,SAAUiD,KAAKxC,SAASY,OAAUhC,YAC/E,CAAEjB,QAAS,IAAMyC,MAAM,aAAaoC,KAAKH,MAAMzB,SAEvD,WAGK,MAAMkI,4BAA+BrN,gBAAgB,CAC1DuC,KAAM,sBAAuBS,aAAc,MAC3CC,MAAO,CACLqK,GAAI,CAAExL,KAAM,CAACC,OAAQC,QAA2CE,QAASiB,WACzEM,SAAU,CAAE3B,KAAMM,QAASF,QAAS,OAASqL,MAAO,CAAEzL,KAAMM,QAASF,QAAS,QAEhF,KAAA0C,CAAM3B,OAAO0B,QACX4H,QAAQ,gBACR,MAAMiB,aAAepM,sBACrB,MAAO,IAAkBnB,EAAEH,SAAuB,CAChDwN,GAAIrK,MAAMqK,IAAME,aAAarI,OAAS,OAAQ1B,SAAUR,MAAMQ,SAAU8J,MAAOtK,MAAMsK,OACpF5I,MAAM,eACX,WAGK,MAAM8I,0BAA6BzN,gBAAgB,CACxDuC,KAAM,oBAAqBS,aAAc,MAAOC,MAAOrB,UACvD+C,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAAa,MAAMoC,KAAOwF,QAAQ,cAAe,MAAO,IAAkBtM,EAAEgB,UAAWd,WAAWmM,MAAO,CAC3HzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASqK,WAAaC,MAAkB1F,KAAK4D,SAAS,OAAQ8B,gBAAgBC,YAAcD,KAAOtJ,WAChI8J,KAAM,OAAQS,UAAW3G,KAAKmE,cAAe,aAAcnE,KAAKrE,MAAO,YAAa,SAClF,CAAER,QAAS,IAAMyC,MAAM,aAAaoC,KAAKH,MAAMzB,QAAW,WAGzD,MAAMwI,0BAA6B3N,gBAAgB,CACxDuC,KAAM,oBAAqBS,aAAc,MACzCC,MAAO,CAAEkC,MAAO,CAAErD,KAAME,OAA+B2B,SAAU,MAAQ9B,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,UAAYC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QAClMyC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAAa,MAAMoC,KAAOwF,QAAQ,cAAe,MAAM3F,MAAQ7G,SAA8B,IAAM6N,UAAU7G,KAAKtE,KAAMsE,KAAKH,MAAMzB,MAAOlC,MAAMkC,QAAS,MAAO,IAAkBlF,EAAEgB,UAAWd,WAAWmM,MAAO,CACnOzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASL,KAAMmB,MAAMpB,KAAO,SAAW,SAAWsB,UAC/EqJ,WAAaC,OAAoB,GAAIA,gBAAgBC,YAAa3F,KAAKgE,aAAa0B,KAAMxJ,MAAMkC,QAChG1B,SAAUmD,MAAMzB,MAAM1B,SACtBoK,QAAU1C,QAAwBA,MAAM2C,kBAAmB/G,KAAK8E,WAAW5I,MAAMkC,QACjF8H,KAAM,WAAY,gBAAiBlL,OAAO6E,MAAMzB,MAAM4I,UAAYnH,MAAMzB,MAAM6I,SAAU,2BAA4BtN,gBAAgBuC,MAAMkC,OAC1I,aAAc4B,KAAKrE,MAAO,YAAa,OAAQ,gBAAiBkE,MAAMzB,MAAM4I,SAAW,GAAK5K,UAC5F,gBAAiByD,MAAMzB,MAAM6I,QAAU,GAAK7K,UAAW,mBAAoByD,MAAMzB,MAAMuB,YAAc,GAAKvD,UAC1G,qBAAsByD,MAAMzB,MAAM8I,aAAe,GAAK9K,YACpD,CAAEjB,QAAS,IAAMyC,MAAM,aAAaiC,MAAMzB,QAAW,WAGrD,SAAU+I,sBAAsBvE,KAAO,aAAcpH,KAAO,0BAChE,OAAOvC,gBAAgB,CACrBuC,KAAMS,aAAc,MACpBC,MAAO,CAAEkC,MAAO,CAAErD,KAAME,OAAwC2B,SAAU,MAAQ9B,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,UAAYC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QAC3MyC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAClB,MAAMoC,KAAOwF,QAAQhK,MACrB,MAAMqE,MAAQ7G,SAAmC,KAAM,CACrDoF,MAAOlC,MAAMkC,MACb4I,SAAUI,mBAAmBpH,KAAKH,MAAMzB,MAAMA,MAAOlC,MAAMkC,OAC3D6I,QAASI,cAAcrH,KAAKH,MAAMzB,MAAMA,MAAO,IAAKlC,MAAMkC,MAAOqF,IAAK,GAAK,IAAKvH,MAAMkC,MAAOqF,IAAK,KAClG9D,YAAaK,KAAKH,MAAMzB,MAAM7B,iBAAiBsC,OAAS3C,MAAMkC,MAAMS,MAAQmB,KAAKH,MAAMzB,MAAM7B,iBAAiBiD,QAAUtD,MAAMkC,MAAMoB,MACpI9C,SAAUsD,KAAKH,MAAMzB,MAAM1B,WAAasD,KAAKM,gBAAgBpE,MAAMkC,UAErE,MAAO,IAAkBlF,EAAEgB,UAAWd,WAAWmM,MAAO,CACtDzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASL,KAAMmB,MAAMpB,KAAO,SAAW,SAAWsB,UAC/EM,SAAUmD,MAAMzB,MAAM1B,SAAU4K,SAAUzH,MAAMzB,MAAMuB,YAAc,GAAK,EACzEmH,QAAU1C,QAAwBA,MAAM2C,kBAAmB,IAAKlH,MAAMzB,MAAM1B,SAAUsD,KAAKwD,YAAYtH,MAAMkC,QAC7G8H,KAAM,WAAY,gBAAiBlL,OAAO6E,MAAMzB,MAAM4I,UAAYnH,MAAMzB,MAAM6I,SAC9E,gBAAiBjM,OAAO6E,MAAMzB,MAAM1B,UACpC,4BAA6B,GAAG1B,OAAOkB,MAAMkC,MAAMS,MAAM0I,SAAS,EAAG,QAAQvM,OAAOkB,MAAMkC,MAAMoB,OAAO+H,SAAS,EAAG,OACnH,aAAcvH,KAAKrE,MAAO,YAAaiH,KAAM,gBAAiB/C,MAAMzB,MAAM4I,SAAW,GAAK5K,UAC1F,gBAAiByD,MAAMzB,MAAM6I,QAAU,GAAK7K,UAAW,mBAAoByD,MAAMzB,MAAMuB,YAAc,GAAKvD,YACxG,CAAEjB,QAAS,IAAMyC,MAAM,aAAaiC,MAAMzB,QAChD,GAEJ,QAEM,SAAUoJ,qBAAqB5E,KAAO,YAAapH,KAAO,yBAC9D,OAAOvC,gBAAgB,CACrBuC,KAAMS,aAAc,MACpBC,MAAO,CAAEkC,MAAO,CAAErD,KAAME,OAAqC2B,SAAU,MAAQ9B,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,UAAYC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QACxMyC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAClB,MAAMoC,KAAOwF,QAAQhK,MACrB,MAAMiM,aAAc,IAAIC,MAAOC,cAC/B,MAAM9H,MAAQ7G,SAAkC,KAAM,CACpDoF,MAAOlC,MAAMkC,MACb4I,SAAUY,kBAAkB5H,KAAKH,MAAMzB,MAAMA,MAAOlC,MAAMkC,OAC1D6I,QAASI,cAAcrH,KAAKH,MAAMzB,MAAMA,MAAO,CAAES,KAAM3C,MAAMkC,MAAMS,KAAMW,MAAO,EAAGiE,IAAK,GAAK,CAAE5E,KAAM3C,MAAMkC,MAAMS,KAAMW,MAAO,GAAIiE,IAAK,KACvI9D,YAAaK,KAAKH,MAAMzB,MAAM7B,iBAAiBsC,OAAS3C,MAAMkC,MAAMS,KACpEgJ,QAAS3L,MAAMkC,MAAMS,OAAS4I,YAC9B/K,SAAUsD,KAAKH,MAAMzB,MAAM1B,WAAasD,KAAKM,gBAAgBpE,MAAMkC,UAErE,MAAO,IAAkBlF,EAAEgB,UAAWd,WAAWmM,MAAO,CACtDzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASL,KAAMmB,MAAMpB,KAAO,SAAW,SAAWsB,UAC/EM,SAAUmD,MAAMzB,MAAM1B,SAAU4K,SAAUzH,MAAMzB,MAAMuB,YAAc,GAAK,EACzEmH,QAAU1C,QAAwBA,MAAM2C,kBAAmB,IAAKlH,MAAMzB,MAAM1B,SAAUsD,KAAK0D,WAAWxH,MAAMkC,QAC5G8H,KAAM,WAAY,gBAAiBlL,OAAO6E,MAAMzB,MAAM4I,UAAYnH,MAAMzB,MAAM6I,SAC9E,gBAAiBjM,OAAO6E,MAAMzB,MAAM1B,UACpC,eAAgBmD,MAAMzB,MAAMyJ,QAAU,OAASzL,UAC/C,2BAA4BpB,OAAOkB,MAAMkC,MAAMS,MAC/C,aAAcmB,KAAKrE,MAAO,YAAaiH,KAAM,gBAAiB/C,MAAMzB,MAAM4I,SAAW,GAAK5K,UAC1F,gBAAiByD,MAAMzB,MAAM6I,QAAU,GAAK7K,UAAW,mBAAoByD,MAAMzB,MAAMuB,YAAc,GAAKvD,UAC1G,eAAgByD,MAAMzB,MAAMyJ,QAAU,GAAKzL,YACzC,CAAEjB,QAAS,IAAMyC,MAAM,aAAaiC,MAAMzB,QAChD,GAEJ,QAEO,MAAM0J,+BAAkCX,+BACxC,MAAMY,8BAAiCP,8BAExC,SAAUQ,kBAAkBpF,KAAuBpH,KAAcT,KAA0B,QAC/F,OAAO9B,gBAAgB,CACrBuC,KAAMS,aAAc,MACpBC,MAAO,CAAEV,KAAM,CAAET,KAAMC,OAAQG,QAASiB,WAAa6L,KAAM,CAAElN,KAAMC,OAAQG,QAASiB,WAAatB,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,SAAWC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QACzN,KAAA0C,CAAM3B,OAAOqJ,QAAa,MAAMvF,KAAOwF,QAAQhK,MAAO,MAAO,IAAkBtC,EAAEgB,UAAWd,WAAWmM,MAAO,CAC5GzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAC7BqK,WAAaC,MAAkB1F,KAAK4D,SAAShB,KAAM8C,gBAAgBwC,iBAAmBxC,KAAOtJ,WAC7FrB,KAAMS,KAAMU,MAAMV,KAAMyM,KAAM/L,MAAM+L,KAAMvL,SAAUsD,KAAKH,MAAMzB,MAAM1B,SACrE2F,SAAUrC,KAAKpE,cAAgB,OAASoE,KAAKH,MAAMzB,MAAMzB,UAAYiG,OAAS,eAAiBA,OAAS,aAAeA,OAAS,yBAA2BA,OAAS,sBACpKhG,SAAU,MAAOwB,MAAO4B,KAAKH,MAAMzB,MAAMA,QAAU,KAAO,GAAK4B,KAAK2D,YAAY3D,KAAKpE,YAAagH,KAAM5C,KAAKH,MAAMzB,MAAMA,OACzH,aAAc4B,KAAKrE,MAAO,YAAaiH,OACpC,GAET,QAEM,SAAUuF,iBAAiB/E,KAA4BE,UAAmB9H,KAAcoH,MAC5F,OAAO3J,gBAAgB,CACrBuC,KAAMS,aAAc,MAAOC,MAAO,CAAEpB,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,UAAYC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QAC7JyC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAAa,MAAMoC,KAAOwF,QAAQhK,MAAO,MAAO,IAAkBtC,EAAEgB,UAAWd,WAAWmM,MAAO,CACnHzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASL,KAAMmB,MAAMpB,KAAO,SAAW,SAAWsB,UAC/EM,SAAUsD,KAAKH,MAAMzB,MAAM1B,SAAUoK,QAAS,IAAM9G,KAAKiE,KAAKb,KAAME,WAAY,aAActD,KAAKrE,MAAO,YAAaiH,MAAQ,GAAGU,UAAY,EAAI,WAAa,UAAUF,SACvK,CAAEjI,QAAS,IAAMyC,MAAM,aAAaoC,KAAKH,MAAMzB,QAAW,GAElE,QAEM,SAAUgK,wBAAwBtI,KAAwBtE,MAC9D,OAAOvC,gBAAgB,CACrBuC,KAAMS,aAAc,MAAOC,MAAO,CAAEpB,GAAI,CAAEC,KAAM,CAACC,OAAQC,OAAQC,UAAoCC,QAAS,UAAYC,QAAS,CAAEL,KAAMM,QAASF,QAAS,QAC7JyC,MAAO3C,OACP,KAAA4C,CAAM3B,OAAOqJ,MAAO3H,QAAa,MAAMoC,KAAOwF,QAAQhK,MAAO,MAAO,IAAkBtC,EAAEgB,UAAWd,WAAWmM,MAAO,CACnHzK,GAAIoB,MAAMpB,GAAIM,QAASc,MAAMd,QAASL,KAAMmB,MAAMpB,KAAO,SAAW,SAAWsB,UAC/EM,SAAUsD,KAAKH,MAAMzB,MAAM1B,SAAUoK,QAAS,IAAM9G,KAAK6E,YAAY/E,MAAO,eAAgB9E,OAAOgF,KAAKH,MAAMzB,MAAM2B,WAAaD,MACjI,aAAcE,KAAKrE,MAAO,YAAa,GAAGmE,oBAAqB,aAAcE,KAAKH,MAAMzB,MAAM2B,WAAaD,KAAO,SAAW,aAC3H,CAAE3E,QAAS,IAAMyC,MAAM,aAAaoC,KAAKH,MAAMzB,QAAW,GAElE,CAEA,SAASoH,QAAQ5C,MAAyB,MAAM5C,KAAO7G,OAAgBuB,KAAM,GAAIsF,OAAS5D,UAAW,MAAM,IAAI+I,UAAU,GAAGvC,gDAAiD,OAAO5C,IAAM,CAC1L,SAASG,iBACPnC,SACAtC,MAEA,IAAK,MAAMkH,QAAQC,WAAWnH,MAAO,CACnC,MAAMwF,QAAUlD,SAASiC,IAAI2C,MAC7B,GAAI1B,mBAAmBgH,iBAAkB,OAAOhH,OAClD,CACA,OAAO,IACT,CACA,SAASb,sBACPrC,SACAtC,MAEA,MAAM2M,WAAa,CACjBzF,KACA0F,gBAEA,MAAMpH,QAAUlD,SAASiC,IAAI2C,MAC7B,KAAM1B,mBAAmBgH,kBAAmB,OAAO,KACnD,MAAO,CACLhH,QAAS,IAAMA,WACXoH,eAAiBlM,UAAY,GAAK,CAAEkM,cACxCC,aAAcvO,oCAGlB,GAAI0B,OAAS,YAAcA,OAAS,OAAQ,OAAO8M,mBAAmBH,WAAW,UACjF,GAAI3M,OAAS,aAAc,CACzB,OAAO8M,mBACLH,WAAW,cAAe,SAC1BA,WAAW,YAAa,OAE5B,CACA,GAAI3M,OAAS,YAAa,CACxB,MAAM+M,SAAWJ,WAAW,mBAC5B,OAAOI,WAAa,KAChBD,mBAAmBH,WAAW,aAAc,QAASA,WAAW,aAAc,SAC9E,CAACI,SACP,CACA,MAAMC,cAAgBL,WAAW,wBAAyB,SAC1D,MAAMM,YAAcN,WAAW,sBAAuB,OACtD,OAAOG,mBACLE,eAAiBL,WAAW,mBAAoB,cAChDK,gBAAkB,KAAOL,WAAW,mBAAoB,cAAgB,KACxEM,aAAeN,WAAW,iBAAkB,YAC5CM,cAAgB,KAAON,WAAW,iBAAkB,YAAc,KAEtE,CACA,SAASG,sBACJpI,aAEH,OAAOA,YAAYwI,OAAQP,YAAyDA,aAAe,KACrG,CACA,SAASpJ,SAASb,OAChB,OAAOvE,oBAAoB,CAAEgF,KAAMT,MAAMS,KAAMW,MAAOpB,MAAMoB,OAC9D,CACA,SAASL,QAAQN,MACf,OAAO/E,mBAAmB+E,KAC5B,CACA,SAASQ,UAAUwJ,MAAeC,UAChC,MAAMrE,QAAU,EAChB,OAAOjE,MAAMC,KAAK,CAAEC,OAAQ5B,KAAKiK,KAAKD,SAAWrE,UAAY,CAACuE,KAAMC,WAClEzI,MAAMC,KAAK,CAAEC,OAAQ+D,SAAW,CAACyE,QAASC,cAAgBlO,OAAOsE,OAAO,CAAEV,KAAMgK,MAAQI,SAAWxE,QAAU0E,eAEjH,CACA,SAASpH,oBAAoBlD,KAAcuK,aAAsBN,UAC/D,GAAIjK,KAAOuK,aAAc,OAAOA,aAAetK,KAAKiK,MAAMK,aAAevK,MAAQiK,UAAYA,SAC7F,GAAIjK,MAAQuK,aAAeN,SAAU,OAAOM,aAAetK,KAAKC,OAAOF,KAAOuK,cAAgBN,UAAYA,SAC1G,OAAOM,YACT,CAMA,SAAS7I,eAAenC,MAA2BtB,UACjD,MAAMuM,KAAOC,YAAYlL,MAAMS,KAAMT,MAAMoB,OAC3C,IAAK,IAAIiE,IAAM,EAAGA,KAAO4F,KAAM5F,KAAO,EAAG,CACvC,GAAI1J,yBAAyB,CAAE8E,KAAMT,MAAMS,KAAMW,MAAOpB,MAAMoB,MAAOiE,KAAO3G,UAAW,OAAO,IAChG,CACA,OAAO,KACT,CACA,SAASwM,YAAYzK,KAAcW,OACjC,GAAIA,QAAU,EAAG,OAAOX,KAAO,IAAM,IAAMA,KAAO,MAAQ,GAAKA,KAAO,MAAQ,GAAK,GAAK,GACxF,MAAO,CAAC,EAAG,EAAG,EAAG,IAAI0K,SAAS/J,OAAS,GAAK,EAC9C,CACA,SAASb,OAAOP,OAAwC,GAAIA,QAAU,KAAM,OAAO,KAAM,GAAI,SAAUA,MAAO,OAAOA,MAAO,GAAI,SAAUA,MAAO,OAAOA,MAAMoL,KAAM,MAAMX,MAAQzK,MAAMyK,MAAO,MAAO,SAAUA,MAAQA,MAAMW,KAAOX,KAAO,CAC5O,SAASlH,aAAajG,KAAkB8F,KACtC,MAAM3B,MAAQ2B,IACd,GAAI9F,OAAS,WAAY,MAAO,CAAE0C,MAAOyB,MAAM,SAAyBF,YAAaE,MAAM,eAA6BvD,KAAM,KAAMwD,KAAMD,MAAM,QAA8DE,SAAUF,MAAM,aAC9N,GAAInE,OAAS,OAAQ,MAAO,CAAE0C,MAAOyB,MAAM,SAAyBF,YAAaE,MAAM,eAA6BvD,KAAMuD,MAAM,QAAoBC,KAAMD,MAAM,QAA8DE,SAAUF,MAAM,aAC9O,MAAM4J,SAAW5J,MAAM,YACvB,MAAO,CAAEzB,MAAOyB,MAAM,SAAyBF,YAAa8J,SAAS,eAA6BnN,KAAMmN,SAAS,QAAoB3J,KAAM2J,SAAS,QAA8D1J,SAAU0J,SAAS,YACvO,CACA,SAASC,QAAQC,KAAiBC,OAA4B,OAAOD,KAAK9K,KAAO+K,MAAM/K,MAAQ8K,KAAKnK,MAAQoK,MAAMpK,OAASmK,KAAKlG,IAAMmG,MAAMnG,GAAK,CACjJ,SAASoD,UAAUnL,KAAkBmE,MAA4BzB,OAC/D,MAAMyL,aAAelL,OAAOkB,MAAMzB,OAAQ,IAAI4I,SAAW6C,eAAiB,MAAQH,QAAQG,aAAczL,SAAW,EAAG,IAAI6I,QAAU,MACpI,GAAIpH,MAAMzB,QAAU,QAAU,SAAUyB,MAAMzB,UAAY,SAAUyB,MAAMzB,OAAQ,CAChF,MAAMyK,MAAQ,SAAUhJ,MAAMzB,MAAMyK,MAAQhJ,MAAMzB,MAAMyK,MAAMW,KAAO3J,MAAMzB,MAAMyK,MACjF,MAAMiB,IAAM,SAAUjK,MAAMzB,MAAM0L,IAAMjK,MAAMzB,MAAM0L,IAAIN,KAAO3J,MAAMzB,MAAM0L,IAC3E7C,QAAUyC,QAAQb,MAAOzK,QAAU,GAAKsL,QAAQtL,MAAO0L,MAAQ,EAAG9C,SAAW0C,QAAQb,MAAOzK,SAAW,GAAKsL,QAAQI,IAAK1L,SAAW,CACtI,CACA,MAAO,CAAEA,MAAO4I,SAAUC,QAAStH,YAAa+J,QAAQ7J,MAAMtD,iBAAkB6B,SAAW,EAAG1B,SAAUmD,MAAMnD,SAAUwK,aAAc9I,MAAMoB,QAAUK,MAAMC,KAAKN,OAASpB,MAAMS,OAASgB,MAAMC,KAAKjB,KACtM,CACA,SAASuI,mBAAmBhJ,MAAoBoB,OAAsC,MAAMgK,KAAO7K,OAAOP,OAAQ,OAAOoL,OAAS,MAAQA,KAAK3K,OAASW,MAAMX,MAAQ2K,KAAKhK,QAAUA,MAAMA,KAAO,CAClM,SAASoI,kBAAkBxJ,MAAoBS,MAAkC,MAAM2K,KAAO7K,OAAOP,OAAQ,OAAOoL,OAAS,MAAQA,KAAK3K,OAASA,KAAKA,IAAM,CAC9J,SAASwI,cAAcjJ,MAAoByK,MAAkBiB,KAC3D,GAAI1L,QAAU,MAAQ,SAAUA,OAAS,SAAUA,MAAO,OAAO,MACjE,MAAM2L,WAAa,SAAU3L,MAAMyK,MAAQzK,MAAMyK,MAAMW,KAAOpL,MAAMyK,MACpE,MAAMmB,SAAW,SAAU5L,MAAM0L,IAAM1L,MAAM0L,IAAIN,KAAOpL,MAAM0L,IAC9D,OAAOJ,QAAQK,WAAYD,MAAQ,GAAKJ,QAAQb,MAAOmB,WAAa,CACtE,CACA,SAASnH,WAAWnH,MAAgD,OAAOA,OAAS,YAAcA,OAAS,OAAS,CAAC,SAAWA,OAAS,aAAe,CAAC,cAAe,aAAeA,OAAS,YAAc,CAAC,kBAAmB,aAAc,cAAgB,CAAC,wBAAyB,sBAAuB,mBAAoB,iBAAkB,mBAAoB,iBAAmB,CAC9X,SAASoH,cAAcF,MACrB,GAAIA,OAAS,kBAAmB,MAAO,gBACvC,GAAIA,OAAS,wBAAyB,MAAO,qBAC7C,GAAIA,OAAS,sBAAuB,MAAO,mBAC3C,OAAOA,KAAKqH,QAAQ,YAAa,CAACC,OAAQC,SAAmBA,OAAOC,cACtE","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"date-picker.js","names":["Fragment","Teleport","computed","defineComponent","h","inject","mergeProps","onBeforeUnmount","onMounted","nextTick","provide","shallowRef","watch","formatDateValue","parseDateValue","createCalendarMonth","createCalendarYear","isCalendarValueAvailable","createMonthPickerValue","createYearPickerValue","hiddenInputSubmissionCapabilities","useCompositeFormControl","Primitive","useControlledStateInvariant","usePresence","useHostPortalTarget","useTemporalReferenceDate","specializePickerRootPart","_kind","component","key","Symbol","noPendingPickerValue","partProps","as","type","String","Object","Function","default","asChild","Boolean","createPickerRoot","capability","name","config","kind","scope","granularity","defaultView","defaultOpen","yearPageSize","inline","inheritAttrs","props","modelValue","undefined","defaultValue","open","highlightedValue","defaultHighlightedValue","referenceDate","disabled","readonly","required","label","policies","position","side","align","sideOffset","Number","collisionPadding","collisionBoundary","avoidCollisions","hideWhenDetached","strategy","tracking","emits","_value","slots","setup","emit","runtimeProps","elements","Map","connection","hostReferenceDate","value","inlineTrigger","document","createElement","localValue","localOpen","localHighlight","dateOf","yearPageStart","year","Math","floor","dates","monthFor","months","yearFor","years","yearsFrom","localView","freeze","month","localViewMode","controlled","highlighted","pendingValue","state","view","viewMode","root","get","focusTarget","firstPickerInput","submissions","pickerFormSubmissions","periodAvailable","monthAvailable","Array","from","length","_entry","index","some","refreshCells","grid","querySelectorAll","forEach","element","parsed","dataset","ok","setCellAttributes","refresh","raw","getSnapshot","picked","extractState","getWeek","getMonth","getYear","pageStartContaining","connect","disconnect","content","trigger","base","readOnly","onValueChange","onHighlightedValueChange","onUpdate","anchor","assign","manageVisibility","part","inputParts","toDOMInputKey","handleEvent","mounted","connectQueued","scheduleConnect","moveBy","unit","delta","direction","abs","selectMonth","selectYear","formatInput","register","has","delete","set","registerCell","move","repetitions","handleGridKey","event","altKey","ctrlKey","metaKey","navigationGranularity","columns","movement","preventDefault","stopImmediatePropagation","setViewMode","selectDate","values","previousValues","result","syncControlledValues","TypeError","error","message","PickerTrigger","attrs","useRoot","elementRef","node","HTMLElement","PickerAnchor","PickerContent","present","async","flush","exiting","role","hidden","inert","style","PickerPortal","to","defer","portalTarget","PickerGrid","onKeydown","PickerCell","cellState","onClick","stopPropagation","selected","inRange","outsideMonth","createPickerMonthCell","monthContainsValue","periodInRange","day","tabIndex","padStart","createPickerYearCell","currentYear","Date","getFullYear","yearContainsValue","current","PickerMonthCell","PickerYearCell","createPickerInput","form","HTMLInputElement","createPickerMove","createPickerViewTrigger","submission","relativeName","capabilities","compactSubmissions","combined","combinedStart","combinedEnd","filter","start","pageSize","ceil","_row","rowIndex","_column","columnIndex","currentStart","days","daysInMonth","includes","date","calendar","compare","left","right","selectedDate","end","rangeStart","rangeEnd","replace","_match","letter","toUpperCase"],"sources":["../../src/internal/date-picker.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/menu.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Fragment,computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createMenu}from"@sectile/dom/menu";import{createMenuButton}from"@sectile/dom/menu-button";import{createMenubar}from"@sectile/dom/menubar";import{createNavigationMenu}from"@sectile/dom/navigation-menu";import{Primitive}from"./primitive.js";import{useHostDirection,useHostId}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./internal/presence.js";const key=Symbol("SectileMenuRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const commonProps={items:{type:Array,required:true},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},defaultHighlightedValue:{type:String,default:null},label:{type:String,default:void 0},textValue:{type:Function,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const menuButtonProps={...commonProps,open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"}};function createRoot(kind,rootProps,providerOnly=false){return defineComponent({name:kind==="menu-button"?"SectileMenuButtonRoot":kind==="menubar"?"SectileMenubarRoot":kind==="navigation-menu"?"SectileNavigationMenuRoot":"SectileMenuRoot",inheritAttrs:false,props:rootProps,emits:{"update:open":_value=>true,invoke:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const runtimeProps=props;const direction=useHostDirection();const baseID=useHostId();const root=shallowRef();const trigger=shallowRef();const connection=shallowRef();const openProp=runtimeProps.open;const open=shallowRef(kind==="menu-button"?openProp??runtimeProps.defaultOpen??false:true);const highlighted=shallowRef(runtimeProps.defaultHighlightedValue);const openPath=shallowRef([]);const controlled=useControlledStateInvariant("MenuButtonRoot","open",()=>kind==="menu-button"?runtimeProps.open:void 0);const position=computed(()=>kind==="menu-button"?runtimeProps.position??true:false);const strategy=computed(()=>runtimeProps.strategy??"absolute");const state=computed(()=>({open:kind==="menu-button"&&runtimeProps.open!==void 0?runtimeProps.open:open.value,highlightedValue:highlighted.value,openPath:openPath.value,disabled:runtimeProps.disabled}));const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;open.value=snapshot.open;highlighted.value=snapshot.cursor.current;openPath.value=snapshot.openPath;refreshParts()};const refreshParts=()=>{if(root.value===void 0||connection.value===void 0)return;root.value.querySelectorAll("[data-sectile-menu-id]").forEach(element=>{const id=element.dataset["sectileMenuId"];if(id!==void 0)connection.value?.setItemAttributes(element,id)});root.value.querySelectorAll("[data-sectile-submenu-for]").forEach(element=>{const id=element.dataset["sectileSubmenuFor"];if(id!==void 0)connection.value?.setSubmenuAttributes(element,id)})};const connect=()=>{connection.value?.disconnect();if(root.value===void 0||kind==="menu-button"&&trigger.value===void 0)return;const reconciled=reconcileCollectionState(runtimeProps.items.map(item=>item.id),[],highlighted.value,runtimeProps.disabledItems,"single",{preserveNullCurrent:true});highlighted.value=reconciled.current;const options={root:root.value,items:runtimeProps.items,disabledItems:runtimeProps.disabledItems,disabled:runtimeProps.disabled,direction:direction.value,baseID,manageVisibility:false,...kind==="menu-button"?{position:runtimeProps.position??true,side:runtimeProps.side??"bottom",align:runtimeProps.align??"start",sideOffset:runtimeProps.sideOffset??8,collisionPadding:runtimeProps.collisionPadding??8,...runtimeProps.collisionBoundary===void 0?{}:{collisionBoundary:runtimeProps.collisionBoundary},avoidCollisions:runtimeProps.avoidCollisions??true,hideWhenDetached:runtimeProps.hideWhenDetached??false,strategy:runtimeProps.strategy??"absolute",tracking:runtimeProps.tracking??"events"}:{},...runtimeProps.policies===void 0?{}:{policies:runtimeProps.policies},defaultHighlightedValue:reconciled.current,...runtimeProps.label===void 0?{}:{label:runtimeProps.label},...runtimeProps.textValue===void 0?{}:{typeahead:{textValue:runtimeProps.textValue}},onOpenChange:value=>{open.value=value;emit("update:open",value)},onInvoke:value=>emit("invoke",value),onUpdate:refresh};connection.value=kind==="menu-button"?createMenuButton({...options,trigger:trigger.value,...controlled?{open:runtimeProps.open}:{defaultOpen:open.value}}):kind==="menubar"?createMenubar(options):kind==="navigation-menu"?createNavigationMenu(options):createMenu(options);refreshParts();refresh()};let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};const registerRoot=element=>{if(root.value===element)return;root.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()};const registerTrigger=element=>{if(trigger.value===element)return;trigger.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()};provide(key,{state,kind,label:computed(()=>runtimeProps.label),disabledItems:computed(()=>new Set(runtimeProps.disabledItems)),direction,position,strategy,registerRoot,registerTrigger,refresh:()=>connection.value?.refresh(),registerItem:(element,id)=>connection.value?.setItemAttributes(element,id),registerSubmenu:(element,parent)=>connection.value?.setSubmenuAttributes(element,parent)});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>runtimeProps.items,()=>runtimeProps.disabledItems,()=>runtimeProps.disabled,()=>runtimeProps.label,()=>runtimeProps.textValue,()=>runtimeProps.policies,direction,()=>runtimeProps.position,()=>runtimeProps.side,()=>runtimeProps.align,()=>runtimeProps.sideOffset,()=>runtimeProps.collisionPadding,()=>runtimeProps.collisionBoundary,()=>runtimeProps.avoidCollisions,()=>runtimeProps.hideWhenDetached,()=>runtimeProps.strategy,()=>runtimeProps.tracking],connect);watch(()=>runtimeProps.open,value=>{if(!controlled||value===void 0||connection.value===void 0)return;const result=connection.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>{if(providerOnly)return h(Fragment,null,slots["default"]?.(state.value)??[]);return h(Primitive,mergeProps(attrs,{as:runtimeProps.as,asChild:runtimeProps.asChild,elementRef:node=>registerRoot(node instanceof HTMLElement?node:void 0),role:kind==="navigation-menu"?"navigation":kind==="menubar"?"menubar":"menu","aria-label":runtimeProps.label,dir:direction.value,"data-scope":kind==="navigation-menu"?"navigation-menu":kind==="menubar"?"menubar":"menu","data-part":"root","data-state":state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}}})}const MenuRoot=createRoot("menu",commonProps);const MenubarRoot=createRoot("menubar",commonProps);const NavigationMenuRoot=createRoot("navigation-menu",commonProps);const MenuButtonRoot=createRoot("menu-button",menuButtonProps,true);const MenuButtonTrigger=defineComponent({name:"SectileMenuButtonTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuButtonTrigger");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.registerTrigger(node instanceof HTMLElement?node:void 0),type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"menu","aria-expanded":String(root.state.value.open),"data-scope":"menu-button","data-part":"trigger"}),{default:()=>slots["default"]?.(root.state.value)})}});const MenuButtonContent=defineComponent({name:"SectileMenuButtonContent",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuButtonContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:"post"});return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerRoot(content)},role:"menu",hidden:!present.value,"aria-label":root.label.value,dir:root.direction.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"menu-button","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const MenuItem=defineComponent({name:"SectileMenuItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuItem");const state=computed(()=>({value:props.value,highlighted:root.state.value.highlightedValue===props.value,open:root.state.value.openPath.includes(props.value),disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.registerItem(node instanceof HTMLElement?node:void 0,props.value)},role:root.kind==="navigation-menu"?void 0:"menuitem","aria-disabled":state.value.disabled?"true":void 0,"data-sectile-menu-id":props.value,"data-scope":root.kind==="navigation-menu"?"navigation-menu":root.kind==="menubar"?"menubar":"menu","data-part":"item","data-highlighted":state.value.highlighted?"":void 0,"data-state":state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const MenuSubContent=defineComponent({name:"SectileMenuSubContent",inheritAttrs:false,props:{for:{type:String,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuSubContent");const element=shallowRef();const open=computed(()=>root.state.value.open&&root.state.value.openPath.includes(props.for));const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:"post"});return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const submenu=node instanceof HTMLElement?node:void 0;element.value=submenu;root.registerSubmenu(submenu,props.for)},role:root.kind==="navigation-menu"?void 0:"menu",hidden:!present.value,dir:root.direction.value,"data-sectile-submenu-for":props.for,...exiting?{inert:true,"aria-hidden":"true"}:{},"data-scope":root.kind==="navigation-menu"?"navigation-menu":"menu","data-part":"sub-content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const MenuSeparator=defineComponent({name:"SectileMenuSeparator",inheritAttrs:false,props:partProps,setup(props,{attrs}){return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"separator","data-scope":"menu","data-part":"separator"}))}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside a menu root.`);return root}export{MenuButtonContent,MenuButtonRoot,MenuButtonTrigger,MenuItem,MenuRoot,MenuSeparator,MenuSubContent,MenubarRoot,NavigationMenuRoot};
|
|
1
|
+
import{Fragment,computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createMenu}from"@sectile/dom/menu";import{createMenuButton}from"@sectile/dom/menu-button";import{createMenubar}from"@sectile/dom/menubar";import{createNavigationMenu}from"@sectile/dom/navigation-menu";import{Primitive}from"./primitive.js";import{useHostDirection,useHostId}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./internal/presence.js";const key=Symbol("SectileMenuRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const commonProps={items:{type:Array,required:true},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},defaultHighlightedValue:{type:String,default:null},label:{type:String,default:void 0},textValue:{type:Function,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const menuButtonProps={...commonProps,open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"}};function createRoot(kind,rootProps,providerOnly=false){return defineComponent({name:kind==="menu-button"?"SectileMenuButtonRoot":kind==="menubar"?"SectileMenubarRoot":kind==="navigation-menu"?"SectileNavigationMenuRoot":"SectileMenuRoot",inheritAttrs:false,props:rootProps,emits:{"update:open":_value=>true,invoke:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const runtimeProps=props;const direction=useHostDirection();const baseID=useHostId();const root=shallowRef();const trigger=shallowRef();const connection=shallowRef();const openProp=runtimeProps.open;const open=shallowRef(kind==="menu-button"?openProp??runtimeProps.defaultOpen??false:true);const highlighted=shallowRef(runtimeProps.defaultHighlightedValue);const openPath=shallowRef([]);const controlled=useControlledStateInvariant("MenuButtonRoot","open",()=>kind==="menu-button"?runtimeProps.open:void 0);const position=computed(()=>kind==="menu-button"?runtimeProps.position??true:false);const strategy=computed(()=>runtimeProps.strategy??"absolute");const state=computed(()=>({open:kind==="menu-button"&&runtimeProps.open!==void 0?runtimeProps.open:open.value,highlightedValue:highlighted.value,openPath:openPath.value,disabled:runtimeProps.disabled}));const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;open.value=snapshot.open;highlighted.value=snapshot.cursor.current;openPath.value=snapshot.openPath};const refreshParts=()=>{if(root.value===void 0||connection.value===void 0)return;root.value.querySelectorAll("[data-sectile-menu-id]").forEach(element=>{const id=element.dataset["sectileMenuId"];if(id!==void 0)connection.value?.setItemAttributes(element,id)});root.value.querySelectorAll("[data-sectile-submenu-for]").forEach(element=>{const id=element.dataset["sectileSubmenuFor"];if(id!==void 0)connection.value?.setSubmenuAttributes(element,id)})};const connect=()=>{connection.value?.disconnect();if(root.value===void 0||kind==="menu-button"&&trigger.value===void 0)return;const reconciled=reconcileCollectionState(runtimeProps.items.map(item=>item.id),[],highlighted.value,runtimeProps.disabledItems,"single",{preserveNullCurrent:true});highlighted.value=reconciled.current;const options={root:root.value,items:runtimeProps.items,disabledItems:runtimeProps.disabledItems,disabled:runtimeProps.disabled,direction:direction.value,baseID,manageVisibility:false,...kind==="menu-button"?{position:runtimeProps.position??true,side:runtimeProps.side??"bottom",align:runtimeProps.align??"start",sideOffset:runtimeProps.sideOffset??8,collisionPadding:runtimeProps.collisionPadding??8,...runtimeProps.collisionBoundary===void 0?{}:{collisionBoundary:runtimeProps.collisionBoundary},avoidCollisions:runtimeProps.avoidCollisions??true,hideWhenDetached:runtimeProps.hideWhenDetached??false,strategy:runtimeProps.strategy??"absolute",tracking:runtimeProps.tracking??"events"}:{},...runtimeProps.policies===void 0?{}:{policies:runtimeProps.policies},defaultHighlightedValue:reconciled.current,...runtimeProps.label===void 0?{}:{label:runtimeProps.label},...runtimeProps.textValue===void 0?{}:{typeahead:{textValue:runtimeProps.textValue}},onOpenChange:value=>{open.value=value;emit("update:open",value)},onInvoke:value=>emit("invoke",value),onUpdate:refresh};connection.value=kind==="menu-button"?createMenuButton({...options,trigger:trigger.value,...controlled?{open:runtimeProps.open}:{defaultOpen:open.value}}):kind==="menubar"?createMenubar(options):kind==="navigation-menu"?createNavigationMenu(options):createMenu(options);refreshParts();refresh()};let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};const registerRoot=element=>{if(root.value===element)return;root.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()};const registerTrigger=element=>{if(trigger.value===element)return;trigger.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()};provide(key,{state,kind,label:computed(()=>runtimeProps.label),disabledItems:computed(()=>new Set(runtimeProps.disabledItems)),direction,position,strategy,registerRoot,registerTrigger,refresh:parentID=>connection.value?.refresh(parentID??null),registerItem:(element,id)=>connection.value?.setItemAttributes(element,id),registerSubmenu:(element,parent)=>connection.value?.setSubmenuAttributes(element,parent)});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>runtimeProps.items,()=>runtimeProps.disabledItems,()=>runtimeProps.disabled,()=>runtimeProps.label,()=>runtimeProps.textValue,()=>runtimeProps.policies,direction,()=>runtimeProps.position,()=>runtimeProps.side,()=>runtimeProps.align,()=>runtimeProps.sideOffset,()=>runtimeProps.collisionPadding,()=>runtimeProps.collisionBoundary,()=>runtimeProps.avoidCollisions,()=>runtimeProps.hideWhenDetached,()=>runtimeProps.strategy,()=>runtimeProps.tracking],connect);watch(()=>runtimeProps.open,value=>{if(!controlled||value===void 0||connection.value===void 0)return;const result=connection.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>{if(providerOnly)return h(Fragment,null,slots["default"]?.(state.value)??[]);return h(Primitive,mergeProps(attrs,{as:runtimeProps.as,asChild:runtimeProps.asChild,elementRef:node=>registerRoot(node instanceof HTMLElement?node:void 0),role:kind==="navigation-menu"?"navigation":kind==="menubar"?"menubar":"menu","aria-label":runtimeProps.label,dir:direction.value,"data-scope":kind==="navigation-menu"?"navigation-menu":kind==="menubar"?"menubar":"menu","data-part":"root","data-state":state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}}})}const MenuRoot=createRoot("menu",commonProps);const MenubarRoot=createRoot("menubar",commonProps);const NavigationMenuRoot=createRoot("navigation-menu",commonProps);const MenuButtonRoot=createRoot("menu-button",menuButtonProps,true);const MenuButtonTrigger=defineComponent({name:"SectileMenuButtonTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuButtonTrigger");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.registerTrigger(node instanceof HTMLElement?node:void 0),type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"menu","aria-expanded":String(root.state.value.open),"data-scope":"menu-button","data-part":"trigger"}),{default:()=>slots["default"]?.(root.state.value)})}});const MenuButtonContent=defineComponent({name:"SectileMenuButtonContent",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuButtonContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=useMenuPresence(open,element,root.refresh);return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerRoot(content)},role:"menu",hidden:!present.value,"aria-label":root.label.value,dir:root.direction.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"menu-button","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const MenuItem=defineComponent({name:"SectileMenuItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuItem");const state=computed(()=>({value:props.value,highlighted:root.state.value.highlightedValue===props.value,open:root.state.value.openPath.includes(props.value),disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.registerItem(node instanceof HTMLElement?node:void 0,props.value)},role:root.kind==="navigation-menu"?void 0:"menuitem","aria-disabled":state.value.disabled?"true":void 0,"data-sectile-menu-id":props.value,"data-scope":root.kind==="navigation-menu"?"navigation-menu":root.kind==="menubar"?"menubar":"menu","data-part":"item","data-highlighted":state.value.highlighted?"":void 0,"data-state":state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const MenuSubContent=defineComponent({name:"SectileMenuSubContent",inheritAttrs:false,props:{for:{type:String,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("MenuSubContent");const element=shallowRef();const open=computed(()=>root.state.value.open&&root.state.value.openPath.includes(props.for));const present=useMenuPresence(open,element,()=>root.refresh(props.for));return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const submenu=node instanceof HTMLElement?node:void 0;element.value=submenu;root.registerSubmenu(submenu,props.for)},role:root.kind==="navigation-menu"?void 0:"menu",hidden:!present.value,dir:root.direction.value,"data-sectile-submenu-for":props.for,...exiting?{inert:true,"aria-hidden":"true"}:{},"data-scope":root.kind==="navigation-menu"?"navigation-menu":"menu","data-part":"sub-content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const MenuSeparator=defineComponent({name:"SectileMenuSeparator",inheritAttrs:false,props:partProps,setup(props,{attrs}){return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"separator","data-scope":"menu","data-part":"separator"}))}});function useMenuPresence(open,element,refresh){const retainedReopen=shallowRef(0);const present=usePresence(open,element,()=>{retainedReopen.value+=1});watch([present,retainedReopen],async(_next,_previous,onCleanup)=>{let active=true;onCleanup(()=>{active=false});await nextTick();if(active)refresh()},{flush:"post"});return present}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside a menu root.`);return root}export{MenuButtonContent,MenuButtonRoot,MenuButtonTrigger,MenuItem,MenuRoot,MenuSeparator,MenuSubContent,MenubarRoot,NavigationMenuRoot};
|
|
2
2
|
//# sourceMappingURL=menu.js.map
|
package/dist/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/menu.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/menu.ts"],"mappings":"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","names":[],"file":"menu.js"}
|
package/dist/month-picker.d.ts
CHANGED
|
@@ -130,4 +130,5 @@ export declare const MonthPickerInput: import("vue").DefineComponent<import("vue
|
|
|
130
130
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
131
131
|
export declare const MonthPickerPreviousYear: import("./internal/date-picker.js").PickerRootPartComponent<"date">;
|
|
132
132
|
export declare const MonthPickerNextYear: import("./internal/date-picker.js").PickerRootPartComponent<"date">;
|
|
133
|
-
export type {
|
|
133
|
+
export type { MonthPickerValue } from '@sectile/temporal/month-picker';
|
|
134
|
+
export type { PickerMonthCellSlotProps as MonthPickerCellSlotProps, PickerPartProps as MonthPickerPartProps, PickerPortalProps as MonthPickerPortalProps, };
|
|
@@ -58,7 +58,7 @@ export declare const MonthRangePickerContent: import("./internal/date-picker.js"
|
|
|
58
58
|
export declare const MonthRangePickerGrid: import("./internal/date-picker.js").PickerRootPartComponent<"date-range">;
|
|
59
59
|
export declare const MonthRangePickerCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
60
60
|
value: {
|
|
61
|
-
type: import("vue").PropType<import("@sectile/temporal").CalendarMonthValue>;
|
|
61
|
+
type: import("vue").PropType<import("@sectile/temporal/calendar").CalendarMonthValue>;
|
|
62
62
|
required: true;
|
|
63
63
|
};
|
|
64
64
|
as: {
|
|
@@ -71,7 +71,7 @@ export declare const MonthRangePickerCell: import("vue").DefineComponent<import(
|
|
|
71
71
|
};
|
|
72
72
|
}>, () => import("vue").VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
73
73
|
value: {
|
|
74
|
-
type: import("vue").PropType<import("@sectile/temporal").CalendarMonthValue>;
|
|
74
|
+
type: import("vue").PropType<import("@sectile/temporal/calendar").CalendarMonthValue>;
|
|
75
75
|
required: true;
|
|
76
76
|
};
|
|
77
77
|
as: {
|
|
@@ -170,4 +170,6 @@ export declare const MonthRangePickerEndInput: import("vue").DefineComponent<imp
|
|
|
170
170
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
171
171
|
export declare const MonthRangePickerPreviousYear: import("./internal/date-picker.js").PickerRootPartComponent<"date-range">;
|
|
172
172
|
export declare const MonthRangePickerNextYear: import("./internal/date-picker.js").PickerRootPartComponent<"date-range">;
|
|
173
|
-
export type {
|
|
173
|
+
export type { MonthRangePickerValue } from '@sectile/temporal/month-range-picker';
|
|
174
|
+
export type { MonthPickerValue } from '@sectile/temporal/month-picker';
|
|
175
|
+
export type { PickerMonthCellSlotProps as MonthRangePickerCellSlotProps, PickerPartProps as MonthRangePickerPartProps, PickerPortalProps as MonthRangePickerPortalProps, };
|
package/dist/year-picker.d.ts
CHANGED
|
@@ -130,4 +130,5 @@ export declare const YearPickerInput: import("vue").DefineComponent<import("vue"
|
|
|
130
130
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
131
131
|
export declare const YearPickerPreviousPage: import("./internal/date-picker.js").PickerRootPartComponent<"date">;
|
|
132
132
|
export declare const YearPickerNextPage: import("./internal/date-picker.js").PickerRootPartComponent<"date">;
|
|
133
|
-
export type {
|
|
133
|
+
export type { YearPickerValue } from '@sectile/temporal/year-picker';
|
|
134
|
+
export type { PickerPartProps as YearPickerPartProps, PickerPortalProps as YearPickerPortalProps, PickerYearCellSlotProps as YearPickerCellSlotProps, };
|
|
@@ -170,4 +170,6 @@ export declare const YearRangePickerEndInput: import("vue").DefineComponent<impo
|
|
|
170
170
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
171
171
|
export declare const YearRangePickerPreviousPage: import("./internal/date-picker.js").PickerRootPartComponent<"date-range">;
|
|
172
172
|
export declare const YearRangePickerNextPage: import("./internal/date-picker.js").PickerRootPartComponent<"date-range">;
|
|
173
|
-
export type {
|
|
173
|
+
export type { YearRangePickerValue } from '@sectile/temporal/year-range-picker';
|
|
174
|
+
export type { YearPickerValue } from '@sectile/temporal/year-picker';
|
|
175
|
+
export type { PickerPartProps as YearRangePickerPartProps, PickerPortalProps as YearRangePickerPortalProps, PickerYearCellSlotProps as YearRangePickerCellSlotProps, };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sectile/vue",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.3",
|
|
4
4
|
"description": "Headless Vue components for Sectile DOM interaction semantics.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -414,16 +414,16 @@
|
|
|
414
414
|
"./package.json": "./package.json"
|
|
415
415
|
},
|
|
416
416
|
"dependencies": {
|
|
417
|
-
"@sectile/core": "^0.14.
|
|
418
|
-
"@sectile/dom": "^0.16.
|
|
417
|
+
"@sectile/core": "^0.14.4",
|
|
418
|
+
"@sectile/dom": "^0.16.4"
|
|
419
419
|
},
|
|
420
420
|
"peerDependencies": {
|
|
421
|
-
"@sectile/chart": "^0.15.
|
|
422
|
-
"@sectile/form": "^0.14.
|
|
423
|
-
"@sectile/tabular": "^0.15.
|
|
424
|
-
"@sectile/virtual": "^0.15.
|
|
421
|
+
"@sectile/chart": "^0.15.2",
|
|
422
|
+
"@sectile/form": "^0.14.4",
|
|
423
|
+
"@sectile/tabular": "^0.15.1",
|
|
424
|
+
"@sectile/virtual": "^0.15.1",
|
|
425
425
|
"vue": "^3.5.0",
|
|
426
|
-
"@sectile/temporal": "^0.14.
|
|
426
|
+
"@sectile/temporal": "^0.14.4"
|
|
427
427
|
},
|
|
428
428
|
"peerDependenciesMeta": {
|
|
429
429
|
"@sectile/chart": {
|
|
@@ -443,10 +443,11 @@
|
|
|
443
443
|
}
|
|
444
444
|
},
|
|
445
445
|
"devDependencies": {
|
|
446
|
-
"@sectile/
|
|
447
|
-
"@sectile/
|
|
448
|
-
"@sectile/
|
|
449
|
-
"@sectile/
|
|
446
|
+
"@sectile/tooling": "0.0.0",
|
|
447
|
+
"@sectile/chart": "0.15.2",
|
|
448
|
+
"@sectile/form": "0.14.4",
|
|
449
|
+
"@sectile/tabular": "0.15.1",
|
|
450
|
+
"@sectile/virtual": "0.15.1",
|
|
450
451
|
"@vue/server-renderer": "^3.5.0",
|
|
451
452
|
"happy-dom": "^20.11.6",
|
|
452
453
|
"typescript": "7.0.2",
|
|
@@ -454,20 +455,20 @@
|
|
|
454
455
|
"vite": "5.4.21",
|
|
455
456
|
"vue": "^3.5.0",
|
|
456
457
|
"vue-tsc": "^3.0.6",
|
|
457
|
-
"@sectile/temporal": "0.14.
|
|
458
|
+
"@sectile/temporal": "0.14.4"
|
|
458
459
|
},
|
|
459
460
|
"scripts": {
|
|
460
|
-
"build": "
|
|
461
|
-
"build:verification": "
|
|
461
|
+
"build": "sectile-build production",
|
|
462
|
+
"build:verification": "sectile-build verification",
|
|
462
463
|
"benchmark:collections": "pnpm --silent run build && node benchmarks/collection-reconciliation.mjs",
|
|
463
464
|
"benchmark:chart": "pnpm --silent run build && node benchmarks/chart-reconciliation.mjs",
|
|
464
465
|
"check:controlled-reconciliation": "node scripts/check-controlled-reconciliation.mjs",
|
|
465
466
|
"check:hydration-contract": "node scripts/check-hydration-contract.mjs",
|
|
466
467
|
"serve:browser-verification": "pnpm --silent run build && node scripts/serve-browser-verification.mjs",
|
|
467
|
-
"typecheck": "
|
|
468
|
-
"typecheck:public": "pnpm --silent run build
|
|
469
|
-
"typecheck:public:prepared": "
|
|
468
|
+
"typecheck": "tsc --project tsconfig.json --pretty false",
|
|
469
|
+
"typecheck:public": "pnpm --silent run build && pnpm --silent run typecheck:public:prepared",
|
|
470
|
+
"typecheck:public:prepared": "tsc --project type-tests/tsconfig.json --pretty false && sectile-typecheck-sfc --project type-tests/tsconfig.vue.json --noEmit",
|
|
470
471
|
"test": "pnpm --silent run build:verification && node --test --test-concurrency=4 tests/*.test.mjs",
|
|
471
|
-
"verify:reproducible-build": "
|
|
472
|
+
"verify:reproducible-build": "sectile-check-build"
|
|
472
473
|
}
|
|
473
474
|
}
|