@sectile/vue 0.14.0 → 0.14.2
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/alert-dialog.d.ts +1 -1
- package/dist/cascade-select.d.ts +93 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/chart.js +1 -1
- package/dist/chart.js.map +1 -1
- package/dist/combobox.d.ts +93 -1
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/dialog.d.ts +1 -1
- package/dist/drawer.d.ts +1 -1
- package/dist/internal/popup.d.ts +2 -0
- package/dist/internal/popup.js +1 -1
- package/dist/internal/popup.js.map +1 -1
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/menu.d.ts +93 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tooltip.d.ts +1 -1
- package/package.json +15 -14
package/dist/alert-dialog.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const AlertDialogContent: import("vue").Component;
|
|
|
9
9
|
export declare const AlertDialogTitle: import("vue").Component;
|
|
10
10
|
export declare const AlertDialogDescription: import("vue").Component;
|
|
11
11
|
export declare const AlertDialogClose: import("vue").Component;
|
|
12
|
-
export type AlertDialogRootProps = Omit<PopupRootProps, 'modal'>;
|
|
12
|
+
export type AlertDialogRootProps = Omit<PopupRootProps, 'modal' | 'position'>;
|
|
13
13
|
export type AlertDialogRootSlotProps = PopupRootSlotProps;
|
|
14
14
|
export type AlertDialogPartProps = PopupPartProps;
|
|
15
15
|
export type AlertDialogPortalProps = PopupPortalProps;
|
package/dist/cascade-select.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type CascadeSelectItemDefinition, type CascadeSelectPolicies } from '@sectile/dom/cascade-select';
|
|
3
|
+
import type { PositionBoundary, PositionOptions, PositionPadding, PositionStrategy, PositionTracking } from '@sectile/dom/position';
|
|
3
4
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
5
|
import { type CascadeChoiceColumnProps, type CascadeChoiceColumnSlotProps, type CascadeChoiceItemProps, type CascadeChoiceItemSlotProps, type CascadeChoicePartProps, type CascadeChoiceRootState } from './internal/cascade-choice.js';
|
|
5
|
-
export interface CascadeSelectRootProps {
|
|
6
|
+
export interface CascadeSelectRootProps extends Omit<PositionOptions, 'arrowPadding'> {
|
|
6
7
|
readonly nodes: readonly CascadeSelectItemDefinition<string>[];
|
|
7
8
|
readonly modelValue?: string | null;
|
|
8
9
|
readonly defaultValue?: string | null;
|
|
@@ -12,6 +13,7 @@ export interface CascadeSelectRootProps {
|
|
|
12
13
|
readonly disabled?: boolean;
|
|
13
14
|
readonly?: boolean;
|
|
14
15
|
readonly label?: string;
|
|
16
|
+
readonly position?: boolean;
|
|
15
17
|
readonly name?: string;
|
|
16
18
|
readonly form?: string;
|
|
17
19
|
readonly required?: boolean;
|
|
@@ -78,6 +80,46 @@ export declare const CascadeSelectRoot: import("vue").DefineComponent<import("vu
|
|
|
78
80
|
type: BooleanConstructor;
|
|
79
81
|
default: boolean;
|
|
80
82
|
};
|
|
83
|
+
position: {
|
|
84
|
+
type: BooleanConstructor;
|
|
85
|
+
default: boolean;
|
|
86
|
+
};
|
|
87
|
+
side: {
|
|
88
|
+
type: PropType<'top' | 'right' | 'bottom' | 'left'>;
|
|
89
|
+
default: string;
|
|
90
|
+
};
|
|
91
|
+
align: {
|
|
92
|
+
type: PropType<'start' | 'center' | 'end'>;
|
|
93
|
+
default: string;
|
|
94
|
+
};
|
|
95
|
+
sideOffset: {
|
|
96
|
+
type: NumberConstructor;
|
|
97
|
+
default: number;
|
|
98
|
+
};
|
|
99
|
+
collisionPadding: {
|
|
100
|
+
type: PropType<PositionPadding>;
|
|
101
|
+
default: number;
|
|
102
|
+
};
|
|
103
|
+
collisionBoundary: {
|
|
104
|
+
type: PropType<PositionBoundary>;
|
|
105
|
+
default: undefined;
|
|
106
|
+
};
|
|
107
|
+
avoidCollisions: {
|
|
108
|
+
type: BooleanConstructor;
|
|
109
|
+
default: boolean;
|
|
110
|
+
};
|
|
111
|
+
hideWhenDetached: {
|
|
112
|
+
type: BooleanConstructor;
|
|
113
|
+
default: boolean;
|
|
114
|
+
};
|
|
115
|
+
strategy: {
|
|
116
|
+
type: PropType<PositionStrategy>;
|
|
117
|
+
default: string;
|
|
118
|
+
};
|
|
119
|
+
tracking: {
|
|
120
|
+
type: PropType<PositionTracking>;
|
|
121
|
+
default: string;
|
|
122
|
+
};
|
|
81
123
|
textValue: {
|
|
82
124
|
type: PropType<CascadeSelectTextValueResolver>;
|
|
83
125
|
default: undefined;
|
|
@@ -147,6 +189,46 @@ export declare const CascadeSelectRoot: import("vue").DefineComponent<import("vu
|
|
|
147
189
|
type: BooleanConstructor;
|
|
148
190
|
default: boolean;
|
|
149
191
|
};
|
|
192
|
+
position: {
|
|
193
|
+
type: BooleanConstructor;
|
|
194
|
+
default: boolean;
|
|
195
|
+
};
|
|
196
|
+
side: {
|
|
197
|
+
type: PropType<'top' | 'right' | 'bottom' | 'left'>;
|
|
198
|
+
default: string;
|
|
199
|
+
};
|
|
200
|
+
align: {
|
|
201
|
+
type: PropType<'start' | 'center' | 'end'>;
|
|
202
|
+
default: string;
|
|
203
|
+
};
|
|
204
|
+
sideOffset: {
|
|
205
|
+
type: NumberConstructor;
|
|
206
|
+
default: number;
|
|
207
|
+
};
|
|
208
|
+
collisionPadding: {
|
|
209
|
+
type: PropType<PositionPadding>;
|
|
210
|
+
default: number;
|
|
211
|
+
};
|
|
212
|
+
collisionBoundary: {
|
|
213
|
+
type: PropType<PositionBoundary>;
|
|
214
|
+
default: undefined;
|
|
215
|
+
};
|
|
216
|
+
avoidCollisions: {
|
|
217
|
+
type: BooleanConstructor;
|
|
218
|
+
default: boolean;
|
|
219
|
+
};
|
|
220
|
+
hideWhenDetached: {
|
|
221
|
+
type: BooleanConstructor;
|
|
222
|
+
default: boolean;
|
|
223
|
+
};
|
|
224
|
+
strategy: {
|
|
225
|
+
type: PropType<PositionStrategy>;
|
|
226
|
+
default: string;
|
|
227
|
+
};
|
|
228
|
+
tracking: {
|
|
229
|
+
type: PropType<PositionTracking>;
|
|
230
|
+
default: string;
|
|
231
|
+
};
|
|
150
232
|
textValue: {
|
|
151
233
|
type: PropType<CascadeSelectTextValueResolver>;
|
|
152
234
|
default: undefined;
|
|
@@ -179,6 +261,16 @@ export declare const CascadeSelectRoot: import("vue").DefineComponent<import("vu
|
|
|
179
261
|
name: string;
|
|
180
262
|
form: string;
|
|
181
263
|
required: boolean;
|
|
264
|
+
position: boolean;
|
|
265
|
+
side: "bottom" | "left" | "right" | "top";
|
|
266
|
+
align: "center" | "end" | "start";
|
|
267
|
+
sideOffset: number;
|
|
268
|
+
collisionPadding: PositionPadding;
|
|
269
|
+
collisionBoundary: PositionBoundary;
|
|
270
|
+
avoidCollisions: boolean;
|
|
271
|
+
hideWhenDetached: boolean;
|
|
272
|
+
strategy: PositionStrategy;
|
|
273
|
+
tracking: PositionTracking;
|
|
182
274
|
textValue: (id: string) => string;
|
|
183
275
|
policies: CascadeSelectPolicies<string>;
|
|
184
276
|
as: PrimitiveAs;
|
package/dist/cascade-select.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCascadeSelect}from"@sectile/dom/cascade-select";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{provideFormControlOwner}from"./internal/form-control.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns}from"./internal/cascade-choice.js";const rootKey=Symbol("SectileCascadeSelectRoot");const itemKey=Symbol("SectileCascadeSelectItem");const partProps=cascadeChoicePartProps;const CascadeSelectRoot=defineComponent({name:"SectileCascadeSelectRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},textValue:{type:Function,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:open":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef(null);const trigger=shallowRef(null);const popup=shallowRef();const submission=shallowRef(null);const connection=shallowRef();const participation=useCompositeFormControl({root,focusTarget:trigger,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}]});provideFormControlOwner();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const initialValuePath=cascadeItemPath(props.nodes,localValue.value);const initialBranchPath=initialValuePath.slice(0,-1);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(localValue.value);const path=shallowRef(initialBranchPath);const columns=shallowRef(initialCascadeColumns(props.nodes,initialBranchPath));const valuePath=shallowRef(initialValuePath);const valueControlled=useControlledStateInvariant("CascadeSelectRoot","modelValue",()=>props.modelValue);const openControlled=useControlledStateInvariant("CascadeSelectRoot","open",()=>props.open);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,valuePath:valuePath.value,highlightedValue:highlighted.value,path:path.value,columns:columns.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const refresh=()=>{const current=connection.value?.getSnapshot().state;if(current===void 0)return;localValue.value=current.value;localOpen.value=current.open;highlighted.value=current.highlighted;path.value=current.path;columns.value=connection.value?.getColumns()??[];valuePath.value=connection.value?.getValuePath()??[];refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-cascade-select-id]").forEach(element=>{const id=element.dataset["sectileCascadeSelectId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const connect=()=>{connection.value?.disconnect();if(root.value===null||trigger.value===null||popup.value===void 0)return;const branchIDs=cascadeBranchItems(props.nodes);const leafIDs=new Set(props.nodes.filter(node=>!branchIDs.has(node.id)).map(node=>node.id));const requestedValue=valueControlled?props.modelValue:localValue.value;const value=requestedValue!==null&&leafIDs.has(requestedValue)?requestedValue:null;localValue.value=value;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCascadeSelect({root:root.value,trigger:trigger.value,popup:popup.value,nodes:props.nodes,disabledItems:props.disabledItems,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},...openControlled?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,...props.label===void 0?{}:{label:props.label},onValueChange:next=>{localValue.value=next;emit("update:modelValue",next)},onHighlightedValueChange:next=>{highlighted.value=next;emit("highlight",next)},onOpenChange:next=>{localOpen.value=next;emit("update:open",next)},onUpdate:refresh});refresh()};const branches=computed(()=>cascadeBranchItems(props.nodes));provide(rootKey,{state,label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id=>id)),disabledItems:computed(()=>new Set(props.disabledItems)),branchItems:branches,registerTrigger:element=>{trigger.value=element??null},registerPopup:element=>{popup.value=element},registerColumn:(element,depth,label)=>connection.value?.setColumnAttributes(element,depth===0?null:state.value.path[depth-1]??null,label),registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.open],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...valueControlled?{value:props.modelValue}:{},...openControlled?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>{const visual=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.value=node instanceof HTMLElement?node:null},"data-scope":"cascade-select","data-part":"root","data-state":state.value.open?"open":"closed"},participation.controlProps.value),{default:()=>slots["default"]?.(state.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return visual;return[visual,h("select",{ref:element=>{submission.value=element instanceof HTMLSelectElement?element:null},name:props.name,form:props.form,required:props.required,disabled:props.disabled,value:state.value.value??"",tabindex:-1,"aria-hidden":"true",style:visuallyHiddenInputStyle},[h("option",{value:""}),...props.nodes.filter(node=>!branches.value.has(node.id)).map(node=>h("option",{value:node.id,disabled:props.disabledItems.includes(node.id)},props.textValue?.(node.id)??node.id))])]}}});const CascadeSelectTrigger=defineComponent({name:"SectileCascadeSelectTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectTrigger");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.registerTrigger(node instanceof HTMLButtonElement?node:void 0),type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"listbox","aria-expanded":String(root.state.value.open),"data-scope":"cascade-select","data-part":"trigger","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const CascadeSelectValue=defineComponent({name:"SectileCascadeSelectValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},separator:{type:String,default:" / "},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"cascade-select","data-part":"value","data-placeholder":root.state.value.value===null?"":void 0}),{default:()=>slots["default"]?.(root.state.value)??(root.state.value.value===null?props.placeholder:root.state.value.valuePath.map(root.textValue.value).join(props.separator))})}});const CascadeSelectContent=defineComponent({name:"SectileCascadeSelectContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectContent");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.registerPopup(node instanceof HTMLElement?node:void 0),role:"group",hidden:!root.state.value.open,"aria-label":root.label.value,"data-scope":"cascade-select","data-part":"content","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const cascadeSelectParts=createCascadeChoiceParts({scope:"cascade-select",componentName:"CascadeSelect",itemAttribute:"data-sectile-cascade-select-id",rootKey,itemKey});const CascadeSelectColumn=cascadeSelectParts.Column;const CascadeSelectItem=cascadeSelectParts.Item;const CascadeSelectItemIndicator=cascadeSelectParts.ItemIndicator;const CascadeSelectItemChevron=cascadeSelectParts.ItemChevron;function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside CascadeSelectRoot.`);return root}export{CascadeSelectColumn,CascadeSelectContent,CascadeSelectItem,CascadeSelectItemChevron,CascadeSelectItemIndicator,CascadeSelectRoot,CascadeSelectTrigger,CascadeSelectValue};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCascadeSelect}from"@sectile/dom/cascade-select";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{provideFormControlOwner}from"./internal/form-control.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns}from"./internal/cascade-choice.js";const rootKey=Symbol("SectileCascadeSelectRoot");const itemKey=Symbol("SectileCascadeSelectItem");const partProps=cascadeChoicePartProps;const CascadeSelectRoot=defineComponent({name:"SectileCascadeSelectRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{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"},textValue:{type:Function,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:open":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef(null);const trigger=shallowRef(null);const popup=shallowRef();const submission=shallowRef(null);const connection=shallowRef();const participation=useCompositeFormControl({root,focusTarget:trigger,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}]});provideFormControlOwner();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const initialValuePath=cascadeItemPath(props.nodes,localValue.value);const initialBranchPath=initialValuePath.slice(0,-1);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(localValue.value);const path=shallowRef(initialBranchPath);const columns=shallowRef(initialCascadeColumns(props.nodes,initialBranchPath));const valuePath=shallowRef(initialValuePath);const valueControlled=useControlledStateInvariant("CascadeSelectRoot","modelValue",()=>props.modelValue);const openControlled=useControlledStateInvariant("CascadeSelectRoot","open",()=>props.open);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,valuePath:valuePath.value,highlightedValue:highlighted.value,path:path.value,columns:columns.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const refresh=()=>{const current=connection.value?.getSnapshot().state;if(current===void 0)return;localValue.value=current.value;localOpen.value=current.open;highlighted.value=current.highlighted;path.value=current.path;columns.value=connection.value?.getColumns()??[];valuePath.value=connection.value?.getValuePath()??[];refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-cascade-select-id]").forEach(element=>{const id=element.dataset["sectileCascadeSelectId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const connect=()=>{connection.value?.disconnect();if(root.value===null||trigger.value===null||popup.value===void 0)return;const branchIDs=cascadeBranchItems(props.nodes);const leafIDs=new Set(props.nodes.filter(node=>!branchIDs.has(node.id)).map(node=>node.id));const requestedValue=valueControlled?props.modelValue:localValue.value;const value=requestedValue!==null&&leafIDs.has(requestedValue)?requestedValue:null;localValue.value=value;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCascadeSelect({root:root.value,trigger:trigger.value,popup:popup.value,nodes:props.nodes,disabledItems:props.disabledItems,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},...openControlled?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,...props.label===void 0?{}:{label:props.label},onValueChange:next=>{localValue.value=next;emit("update:modelValue",next)},onHighlightedValueChange:next=>{highlighted.value=next;emit("highlight",next)},onOpenChange:next=>{localOpen.value=next;emit("update:open",next)},onUpdate:refresh});refresh()};const branches=computed(()=>cascadeBranchItems(props.nodes));let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(rootKey,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id=>id)),disabledItems:computed(()=>new Set(props.disabledItems)),branchItems:branches,registerTrigger:element=>{const next=element??null;const changed=trigger.value!==next;trigger.value=next;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},registerColumn:(element,depth,label)=>connection.value?.setColumnAttributes(element,depth===0?null:state.value.path[depth-1]??null,label),registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.open],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...valueControlled?{value:props.modelValue}:{},...openControlled?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});const registerRoot=node=>{const next=node instanceof HTMLElement?node:null;const changed=root.value!==next;root.value=next;if(changed)scheduleConnect()};return()=>{const visual=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerRoot,"data-scope":"cascade-select","data-part":"root","data-state":state.value.open?"open":"closed"},participation.controlProps.value),{default:()=>slots["default"]?.(state.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return visual;return[visual,h("select",{ref:element=>{submission.value=element instanceof HTMLSelectElement?element:null},name:props.name,form:props.form,required:props.required,disabled:props.disabled,value:state.value.value??"",tabindex:-1,"aria-hidden":"true",style:visuallyHiddenInputStyle},[h("option",{value:""}),...props.nodes.filter(node=>!branches.value.has(node.id)).map(node=>h("option",{value:node.id,disabled:props.disabledItems.includes(node.id)},props.textValue?.(node.id)??node.id))])]}}});const CascadeSelectTrigger=defineComponent({name:"SectileCascadeSelectTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectTrigger");const registerTrigger=node=>root.registerTrigger(node instanceof HTMLButtonElement?node:void 0);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerTrigger,type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"listbox","aria-expanded":String(root.state.value.open),"data-scope":"cascade-select","data-part":"trigger","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const CascadeSelectValue=defineComponent({name:"SectileCascadeSelectValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},separator:{type:String,default:" / "},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"cascade-select","data-part":"value","data-placeholder":root.state.value.value===null?"":void 0}),{default:()=>slots["default"]?.(root.state.value)??(root.state.value.value===null?props.placeholder:root.state.value.valuePath.map(root.textValue.value).join(props.separator))})}});const CascadeSelectContent=defineComponent({name:"SectileCascadeSelectContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectContent");const element=shallowRef();const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"group",hidden:!root.state.value.open,"aria-label":root.label.value,style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"cascade-select","data-part":"content","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const cascadeSelectParts=createCascadeChoiceParts({scope:"cascade-select",componentName:"CascadeSelect",itemAttribute:"data-sectile-cascade-select-id",rootKey,itemKey});const CascadeSelectColumn=cascadeSelectParts.Column;const CascadeSelectItem=cascadeSelectParts.Item;const CascadeSelectItemIndicator=cascadeSelectParts.ItemIndicator;const CascadeSelectItemChevron=cascadeSelectParts.ItemChevron;function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside CascadeSelectRoot.`);return root}export{CascadeSelectColumn,CascadeSelectContent,CascadeSelectItem,CascadeSelectItemChevron,CascadeSelectItemIndicator,CascadeSelectRoot,CascadeSelectTrigger,CascadeSelectValue};
|
|
2
2
|
//# sourceMappingURL=cascade-select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cascade-select.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,OAAQ,WAAY,gBAAiB,UAAW,
|
|
1
|
+
{"version":3,"sources":["../src/cascade-select.ts"],"mappings":"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","names":[],"file":"cascade-select.js"}
|
package/dist/chart.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createChartController}from"@sectile/chart/controller";import{createDOMChart}from"@sectile/dom/chart";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:props.activeDatum!==void 0,cursor:props.cursor!==void 0,selection:props.modelValue!==void 0,view:props.view!==void 0});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){if(!controlled.activeDatum&&prior.activeDatum!==current.state.activeDatum)emit("update:activeDatum",current.state.activeDatum);if(!controlled.cursor&&prior.cursor!==current.state.cursor)emit("update:cursor",current.state.cursor);if(!controlled.selection&&prior.selection!==current.state.selection)emit("update:modelValue",current.state.selection);if(!controlled.view&&prior.view!==current.state.view)emit("update:view",current.state.view)}};const onCommand=command=>{emit("command",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);publishSnapshot()};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)}});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 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;if(!controlledFlags.activeDatum&¤t.state.activeDatum!==previous.state.activeDatum)options.onActiveDatumChange?.(current.state.activeDatum);if(!controlledFlags.cursor&¤t.state.cursor!==previous.state.cursor)options.onCursorChange?.(current.state.cursor);if(!controlledFlags.selection&¤t.state.selection!==previous.state.selection)options.onSelectionChange?.(current.state.selection);if(!controlledFlags.view&¤t.state.view!==previous.state.view)options.onViewChange?.(current.state.view)};const unsubscribeCommands=controller.subscribeCommands(command=>{options.onCommand?.(command);if(command.type==="active-change-requested"){if(options.activeDatum!==void 0)options.activeDatum.value=command.id;options.onActiveDatumChange?.(command.id)}else if(command.type==="cursor-change-requested"){if(options.cursor!==void 0)options.cursor.value=command.id;options.onCursorChange?.(command.id)}else if(command.type==="selection-change-requested"){if(options.selection!==void 0)options.selection.value=command.selection;options.onSelectionChange?.(command.selection)}else if(command.type==="view-change-requested"){if(options.view!==void 0)options.view.value=command.view;options.onViewChange?.(command.view)}publish()});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{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:props.activeDatum!==void 0,cursor:props.cursor!==void 0,selection:props.modelValue!==void 0,view:props.view!==void 0});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 onCommand=command=>{let failure;try{publishSnapshot()}catch(error){failure??=[error]}try{emit("command",command)}catch(error){failure??=[error]}try{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)}catch(error){failure??=[error]}if(failure!==void 0)throw failure[0]};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)}});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 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 unsubscribeCommands=controller.subscribeCommands(command=>{let failure;if(command.type==="active-change-requested"&&options.activeDatum!==void 0){try{options.activeDatum.value=command.id}catch(error){failure??=[error]}}else if(command.type==="cursor-change-requested"&&options.cursor!==void 0){try{options.cursor.value=command.id}catch(error){failure??=[error]}}else if(command.type==="selection-change-requested"&&options.selection!==void 0){try{options.selection.value=command.selection}catch(error){failure??=[error]}}else if(command.type==="view-change-requested"&&options.view!==void 0){try{options.view.value=command.view}catch(error){failure??=[error]}}try{publish()}catch(error){failure??=[error]}try{options.onCommand?.(command)}catch(error){failure??=[error]}try{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)}catch(error){failure??=[error]}if(failure!==void 0)throw failure[0]});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};
|
|
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,"sources":["../src/chart.ts"],"mappings":"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","names":["controlledValues"],"file":"chart.js"}
|