vuetify 3.1.5 → 3.1.6
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/json/attributes.json +1 -1
- package/dist/json/importMap.json +36 -36
- package/dist/json/web-types.json +2 -2
- package/dist/vuetify-labs.css +139 -134
- package/dist/vuetify-labs.d.ts +2 -2
- package/dist/vuetify-labs.esm.js +105 -66
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +105 -66
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +74 -69
- package/dist/vuetify.d.ts +11 -11
- package/dist/vuetify.esm.js +102 -63
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +102 -63
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +674 -669
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.mjs +9 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.css +2 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +36 -18
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +2 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -4
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs +2 -5
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VFooter/index.d.ts +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VSheet/VSheet.mjs +22 -12
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSheet/index.d.ts +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +5 -1
- package/lib/components/VSystemBar/VSystemBar.sass +5 -1
- package/lib/components/VSystemBar/_variables.scss +4 -1
- package/lib/components/index.d.ts +2 -2
- package/lib/composables/nested/nested.mjs +2 -2
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +7 -1
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/theme.mjs +21 -13
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +9 -9
- package/lib/labs/VDataTable/VDataTableServer.mjs +2 -2
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +3 -3
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +4 -5
- package/lib/util/colorUtils.mjs.map +1 -1
- package/package.json +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSheet.mjs","names":["makeBorderProps","useBorder","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useBackgroundColor","
|
|
1
|
+
{"version":3,"file":"VSheet.mjs","names":["makeBorderProps","useBorder","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useBackgroundColor","genericComponent","pick","propsFactory","useRender","toRef","makeVSheetProps","color","String","VSheet","name","props","setup","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","value","filterSheetProps","Object","keys"],"sources":["../../../src/components/VSheet/VSheet.tsx"],"sourcesContent":["// Styles\nimport './VSheet.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { genericComponent, pick, propsFactory, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { ExtractPropTypes } from 'vue'\n\nexport const makeVSheetProps = propsFactory({\n color: String,\n\n ...makeBorderProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'v-sheet')\n\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n\n props: {\n ...makeVSheetProps(),\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-sheet',\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VSheet = InstanceType<typeof VSheet>\n\nexport function filterSheetProps (props: ExtractPropTypes<ReturnType<typeof makeVSheetProps>>) {\n return pick(props, Object.keys(VSheet?.props ?? {}) as any)\n}\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,iBAAiB,EAAEC,WAAW;AAAA,SAC9BC,iBAAiB,EAAEC,WAAW;AAAA,SAC9BC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,kBAAkB,uCAE3B;AAAA,SACSC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS;AACxD,SAASC,KAAK,QAAQ,KAAK;;AAE3B;;AAGA,OAAO,MAAMC,eAAe,GAAGH,YAAY,CAAC;EAC1CI,KAAK,EAAEC,MAAM;EAEb,GAAGvB,eAAe,EAAE;EACpB,GAAGE,kBAAkB,EAAE;EACvB,GAAGE,kBAAkB,EAAE;EACvB,GAAGE,iBAAiB,EAAE;EACtB,GAAGE,iBAAiB,EAAE;EACtB,GAAGE,gBAAgB,EAAE;EACrB,GAAGE,YAAY,EAAE;EACjB,GAAGC,cAAc;AACnB,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,MAAMW,MAAM,GAAGR,gBAAgB,EAAE,CAAC;EACvCS,IAAI,EAAE,QAAQ;EAEdC,KAAK,EAAE;IACL,GAAGL,eAAe;EACpB,CAAC;EAEDM,KAAK,CAAED,KAAK,QAAa;IAAA,IAAX;MAAEE;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAa,CAAC,GAAGf,YAAY,CAACY,KAAK,CAAC;IAC5C,MAAM;MAAEI,sBAAsB;MAAEC;IAAsB,CAAC,GAAGhB,kBAAkB,CAACK,KAAK,CAACM,KAAK,EAAE,OAAO,CAAC,CAAC;IACnG,MAAM;MAAEM;IAAc,CAAC,GAAG/B,SAAS,CAACyB,KAAK,CAAC;IAC1C,MAAM;MAAEO;IAAgB,CAAC,GAAG9B,YAAY,CAACuB,KAAK,CAAC;IAC/C,MAAM;MAAEQ;IAAiB,CAAC,GAAG7B,YAAY,CAACqB,KAAK,CAAC;IAChD,MAAM;MAAES;IAAe,CAAC,GAAG5B,WAAW,CAACmB,KAAK,CAAC;IAC7C,MAAM;MAAEU;IAAgB,CAAC,GAAG3B,WAAW,CAACiB,KAAK,CAAC;IAC9C,MAAM;MAAEW;IAAe,CAAC,GAAG1B,UAAU,CAACe,KAAK,CAAC;IAE5CP,SAAS,CAAC;MAAA,SAEC,CACL,SAAS,EACTU,YAAY,CAACS,KAAK,EAClBR,sBAAsB,CAACQ,KAAK,EAC5BN,aAAa,CAACM,KAAK,EACnBJ,gBAAgB,CAACI,KAAK,EACtBF,eAAe,CAACE,KAAK,EACrBD,cAAc,CAACC,KAAK,CACrB;MAAA,SACM,CACLP,qBAAqB,CAACO,KAAK,EAC3BL,eAAe,CAACK,KAAK,EACrBH,cAAc,CAACG,KAAK;IACrB,GACSV,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC;AAIF,OAAO,SAASW,gBAAgB,CAAEb,KAA2D,EAAE;EAC7F,OAAOT,IAAI,CAACS,KAAK,EAAEc,MAAM,CAACC,IAAI,CAACjB,MAAM,EAAEE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAQ;AAC7D"}
|
|
@@ -31,7 +31,7 @@ declare const VSheet: vue.DefineComponent<{
|
|
|
31
31
|
} | undefined;
|
|
32
32
|
} & {
|
|
33
33
|
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
|
|
34
|
-
},
|
|
34
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, {
|
|
35
35
|
tag: string;
|
|
36
36
|
} & {
|
|
37
37
|
location?: Anchor | undefined;
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
height: 24px;
|
|
6
6
|
justify-content: flex-end;
|
|
7
7
|
max-width: 100%;
|
|
8
|
-
padding:
|
|
8
|
+
padding-inline-start: 8px;
|
|
9
|
+
padding-inline-end: 8px;
|
|
9
10
|
position: relative;
|
|
10
11
|
text-align: end;
|
|
11
12
|
width: 100%;
|
|
@@ -32,4 +33,7 @@
|
|
|
32
33
|
}
|
|
33
34
|
.v-system-bar--window {
|
|
34
35
|
height: 32px;
|
|
36
|
+
}
|
|
37
|
+
.v-system-bar:not(.v-system-bar--absolute) {
|
|
38
|
+
padding-inline-end: calc(var(--v-scrollbar-offset) + 8px);
|
|
35
39
|
}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
height: $system-bar-height
|
|
9
9
|
justify-content: $system-bar-justify-content
|
|
10
10
|
max-width: 100%
|
|
11
|
-
padding: $system-bar-padding
|
|
11
|
+
padding-inline-start: $system-bar-padding-x
|
|
12
|
+
padding-inline-end: $system-bar-padding-x
|
|
12
13
|
position: relative
|
|
13
14
|
text-align: $system-bar-text-align
|
|
14
15
|
width: 100%
|
|
@@ -26,3 +27,6 @@
|
|
|
26
27
|
|
|
27
28
|
&--window
|
|
28
29
|
height: $system-bar-window-height
|
|
30
|
+
|
|
31
|
+
&:not(.v-system-bar--absolute)
|
|
32
|
+
padding-inline-end: calc(var(--v-scrollbar-offset) + #{$system-bar-padding-x})
|
|
@@ -16,7 +16,7 @@ $system-bar-justify-content: flex-end !default;
|
|
|
16
16
|
$system-bar-letter-spacing: tools.map-deep-get(settings.$typography, 'caption', 'letter-spacing') !default;
|
|
17
17
|
$system-bar-lights-out-background: rgba(var(--v-theme-background), 0.7) !default;
|
|
18
18
|
$system-bar-line-height: tools.map-deep-get(settings.$typography, 'caption', 'line-height') !default;
|
|
19
|
-
$system-bar-padding:
|
|
19
|
+
$system-bar-padding-x: 8px !default;
|
|
20
20
|
$system-bar-positions: absolute fixed !default;
|
|
21
21
|
$system-bar-text-align: end !default;
|
|
22
22
|
$system-bar-text-transform: tools.map-deep-get(settings.$typography, 'caption', 'text-transform') !default;
|
|
@@ -35,3 +35,6 @@ $system-bar-typography: (
|
|
|
35
35
|
$system-bar-line-height,
|
|
36
36
|
$system-bar-text-transform
|
|
37
37
|
);
|
|
38
|
+
|
|
39
|
+
// Deprecated
|
|
40
|
+
$system-bar-padding: 0 8px !default;
|
|
@@ -8165,8 +8165,8 @@ declare const VFooter: vue.DefineComponent<{
|
|
|
8165
8165
|
height: string | number;
|
|
8166
8166
|
order: string | number;
|
|
8167
8167
|
tag: string;
|
|
8168
|
-
rounded: string | number | boolean;
|
|
8169
8168
|
app: boolean;
|
|
8169
|
+
rounded: string | number | boolean;
|
|
8170
8170
|
}>;
|
|
8171
8171
|
type VFooter = InstanceType<typeof VFooter>;
|
|
8172
8172
|
|
|
@@ -13641,7 +13641,7 @@ declare const VSheet: vue.DefineComponent<{
|
|
|
13641
13641
|
} | undefined;
|
|
13642
13642
|
} & {
|
|
13643
13643
|
"v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
|
|
13644
|
-
},
|
|
13644
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, {
|
|
13645
13645
|
tag: string;
|
|
13646
13646
|
} & {
|
|
13647
13647
|
location?: Anchor | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useProxiedModel } from "../proxiedModel.mjs";
|
|
2
2
|
import { getCurrentInstance, getUid, propsFactory } from "../../util/index.mjs";
|
|
3
|
-
import { computed, inject, onBeforeUnmount, provide, ref } from 'vue';
|
|
3
|
+
import { computed, inject, onBeforeUnmount, provide, ref, toRaw } from 'vue';
|
|
4
4
|
import { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from "./openStrategies.mjs";
|
|
5
5
|
import { classicSelectStrategy, independentSelectStrategy, independentSingleSelectStrategy, leafSelectStrategy, leafSingleSelectStrategy } from "./selectStrategies.mjs"; // Types
|
|
6
6
|
export const VNestedSymbol = Symbol.for('vuetify:nested');
|
|
@@ -169,7 +169,7 @@ export const useNestedItem = (id, isGroup) => {
|
|
|
169
169
|
isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
|
|
170
170
|
parent: computed(() => parent.root.parents.value.get(computedId.value)),
|
|
171
171
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
172
|
-
isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
|
172
|
+
isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),
|
|
173
173
|
isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
174
174
|
isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),
|
|
175
175
|
isGroupActivator: parent.isGroupActivator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested.mjs","names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Object","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","uidSymbol","computedId","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: unknown[] | undefined\n opened: unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: Array as PropType<unknown[]>,\n selected: Array as PropType<unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol(getUid())\n const computedId = computed(() => id.value ?? uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nested.mjs","names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","toRaw","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Object","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","uidSymbol","computedId","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref, toRaw } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: unknown[] | undefined\n opened: unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: Array as PropType<unknown[]>,\n selected: Array as PropType<unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol(getUid())\n const computedId = computed(() => id.value ?? uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"SAASA,eAAe;AAAA,SACfC,kBAAkB,EAAEC,MAAM,EAAEC,YAAY;AACjD,SAASC,QAAQ,EAAEC,MAAM,EAAEC,eAAe,EAAEC,OAAO,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACnEC,gBAAgB,EAAEC,oBAAoB,EAAEC,kBAAkB;AAAA,SAEjEC,qBAAqB,EACrBC,yBAAyB,EACzBC,+BAA+B,EAC/BC,kBAAkB,EAClBC,wBAAwB,kCAG1B;AAmCA,OAAO,MAAMC,aAA0C,GAAGC,MAAM,CAACC,GAAG,CAAC,gBAAgB,CAAC;AAEtF,OAAO,MAAMC,WAA0B,GAAG;EACxCC,EAAE,EAAEd,GAAG,EAAE;EACTe,IAAI,EAAE;IACJC,QAAQ,EAAE,MAAM,IAAI;IACpBC,UAAU,EAAE,MAAM,IAAI;IACtBC,OAAO,EAAElB,GAAG,CAAC,IAAImB,GAAG,EAAE,CAAC;IACvBC,QAAQ,EAAEpB,GAAG,CAAC,IAAImB,GAAG,EAAE,CAAC;IACxBE,IAAI,EAAE,MAAM,IAAI;IAChBC,YAAY,EAAE,MAAM,IAAI;IACxBC,MAAM,EAAE,MAAM,IAAI;IAClBC,MAAM,EAAExB,GAAG,CAAC,IAAIyB,GAAG,EAAE,CAAC;IACtBC,QAAQ,EAAE1B,GAAG,CAAC,IAAImB,GAAG,EAAE,CAAC;IACxBQ,cAAc,EAAE3B,GAAG,CAAC,EAAE;EACxB;AACF,CAAC;AAED,OAAO,MAAM4B,eAAe,GAAGjC,YAAY,CAAC;EAC1CkC,cAAc,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAA6B;EAC9DC,YAAY,EAAE,CAACF,MAAM,EAAEG,MAAM,CAA+B;EAC5DT,MAAM,EAAEU,KAA4B;EACpCR,QAAQ,EAAEQ,KAA4B;EACtCC,SAAS,EAAEC;AACb,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMC,SAAS,GAAIC,KAAkB,IAAK;EAC/C,IAAIC,WAAW,GAAG,KAAK;EACvB,MAAMnB,QAAQ,GAAGpB,GAAG,CAAC,IAAImB,GAAG,EAAsB,CAAC;EACnD,MAAMD,OAAO,GAAGlB,GAAG,CAAC,IAAImB,GAAG,EAAoB,CAAC;EAEhD,MAAMK,MAAM,GAAGhC,eAAe,CAAC8C,KAAK,EAAE,QAAQ,EAAEA,KAAK,CAACd,MAAM,EAAEgB,CAAC,IAAI,IAAIf,GAAG,CAACe,CAAC,CAAC,EAAEA,CAAC,IAAI,CAAC,GAAGA,CAAC,CAACC,MAAM,EAAE,CAAC,CAAC;EAEpG,MAAMZ,cAAc,GAAGjC,QAAQ,CAAC,MAAM;IACpC,IAAI,OAAO0C,KAAK,CAACT,cAAc,KAAK,QAAQ,EAAE,OAAOS,KAAK,CAACT,cAAc;IAEzE,QAAQS,KAAK,CAACT,cAAc;MAC1B,KAAK,aAAa;QAAE,OAAOpB,wBAAwB,CAAC6B,KAAK,CAACH,SAAS,CAAC;MACpE,KAAK,MAAM;QAAE,OAAO3B,kBAAkB,CAAC8B,KAAK,CAACH,SAAS,CAAC;MACvD,KAAK,aAAa;QAAE,OAAO7B,yBAAyB,CAACgC,KAAK,CAACH,SAAS,CAAC;MACrE,KAAK,oBAAoB;QAAE,OAAO5B,+BAA+B,CAAC+B,KAAK,CAACH,SAAS,CAAC;MAClF,KAAK,SAAS;MACd;QAAS,OAAO9B,qBAAqB,CAACiC,KAAK,CAACH,SAAS,CAAC;IAAA;EAE1D,CAAC,CAAC;EAEF,MAAMH,YAAY,GAAGpC,QAAQ,CAAC,MAAM;IAClC,IAAI,OAAO0C,KAAK,CAACN,YAAY,KAAK,QAAQ,EAAE,OAAOM,KAAK,CAACN,YAAY;IAErE,QAAQM,KAAK,CAACN,YAAY;MACxB,KAAK,MAAM;QAAE,OAAO9B,gBAAgB;MACpC,KAAK,QAAQ;QAAE,OAAOE,kBAAkB;MACxC,KAAK,UAAU;MACf;QAAS,OAAOD,oBAAoB;IAAA;EAExC,CAAC,CAAC;EAEF,MAAMuB,QAAQ,GAAGlC,eAAe,CAC9B8C,KAAK,EACL,UAAU,EACVA,KAAK,CAACZ,QAAQ,EACdc,CAAC,IAAIX,cAAc,CAACa,KAAK,CAACC,EAAE,CAACH,CAAC,EAAEpB,QAAQ,CAACsB,KAAK,EAAExB,OAAO,CAACwB,KAAK,CAAC,EAC9DF,CAAC,IAAIX,cAAc,CAACa,KAAK,CAACE,GAAG,CAACJ,CAAC,EAAEpB,QAAQ,CAACsB,KAAK,EAAExB,OAAO,CAACwB,KAAK,CAAC,CAChE;EAED5C,eAAe,CAAC,MAAM;IACpByC,WAAW,GAAG,IAAI;EACpB,CAAC,CAAC;EAEF,SAASM,OAAO,CAAE/B,EAAW,EAAE;IAC7B,MAAMgC,IAAe,GAAG,EAAE;IAC1B,IAAIC,MAAe,GAAGjC,EAAE;IAExB,OAAOiC,MAAM,IAAI,IAAI,EAAE;MACrBD,IAAI,CAACE,OAAO,CAACD,MAAM,CAAC;MACpBA,MAAM,GAAG7B,OAAO,CAACwB,KAAK,CAACO,GAAG,CAACF,MAAM,CAAC;IACpC;IAEA,OAAOD,IAAI;EACb;EAEA,MAAMI,EAAE,GAAGzD,kBAAkB,CAAC,QAAQ,CAAC;EAEvC,MAAM0D,MAAqB,GAAG;IAC5BrC,EAAE,EAAEd,GAAG,EAAE;IACTe,IAAI,EAAE;MACJS,MAAM;MACNE,QAAQ;MACRC,cAAc,EAAE/B,QAAQ,CAAC,MAAM;QAC7B,MAAMwD,GAAG,GAAG,EAAE;QAEd,KAAK,MAAM,CAACC,GAAG,EAAEX,KAAK,CAAC,IAAIhB,QAAQ,CAACgB,KAAK,CAACY,OAAO,EAAE,EAAE;UACnD,IAAIZ,KAAK,KAAK,IAAI,EAAEU,GAAG,CAACG,IAAI,CAACF,GAAG,CAAC;QACnC;QAEA,OAAOD,GAAG;MACZ,CAAC,CAAC;MACFpC,QAAQ,EAAE,CAACF,EAAE,EAAE0C,QAAQ,EAAEC,OAAO,KAAK;QACnCD,QAAQ,IAAI1C,EAAE,KAAK0C,QAAQ,IAAItC,OAAO,CAACwB,KAAK,CAACgB,GAAG,CAAC5C,EAAE,EAAE0C,QAAQ,CAAC;QAE9DC,OAAO,IAAIrC,QAAQ,CAACsB,KAAK,CAACgB,GAAG,CAAC5C,EAAE,EAAE,EAAE,CAAC;QAErC,IAAI0C,QAAQ,IAAI,IAAI,EAAE;UACpBpC,QAAQ,CAACsB,KAAK,CAACgB,GAAG,CAACF,QAAQ,EAAE,CAAC,IAAGpC,QAAQ,CAACsB,KAAK,CAACO,GAAG,CAACO,QAAQ,CAAC,IAAI,EAAE,GAAE1C,EAAE,CAAC,CAAC;QAC3E;MACF,CAAC;MACDG,UAAU,EAAEH,EAAE,IAAI;QAChB,IAAIyB,WAAW,EAAE;QAEjBnB,QAAQ,CAACsB,KAAK,CAACiB,MAAM,CAAC7C,EAAE,CAAC;QACzB,MAAMiC,MAAM,GAAG7B,OAAO,CAACwB,KAAK,CAACO,GAAG,CAACnC,EAAE,CAAC;QACpC,IAAIiC,MAAM,EAAE;UACV,MAAMa,IAAI,GAAGxC,QAAQ,CAACsB,KAAK,CAACO,GAAG,CAACF,MAAM,CAAC,IAAI,EAAE;UAC7C3B,QAAQ,CAACsB,KAAK,CAACgB,GAAG,CAACX,MAAM,EAAEa,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,KAAKhD,EAAE,CAAC,CAAC;QAChE;QACAI,OAAO,CAACwB,KAAK,CAACiB,MAAM,CAAC7C,EAAE,CAAC;QACxBU,MAAM,CAACkB,KAAK,CAACiB,MAAM,CAAC7C,EAAE,CAAC;MACzB,CAAC;MACDO,IAAI,EAAE,CAACP,EAAE,EAAE4B,KAAK,EAAEqB,KAAK,KAAK;QAC1Bb,EAAE,CAACc,IAAI,CAAC,YAAY,EAAE;UAAElD,EAAE;UAAE4B,KAAK;UAAEI,IAAI,EAAED,OAAO,CAAC/B,EAAE,CAAC;UAAEiD;QAAM,CAAC,CAAC;QAE9D,MAAME,SAAS,GAAGjC,YAAY,CAACU,KAAK,CAACrB,IAAI,CAAC;UACxCP,EAAE;UACF4B,KAAK;UACLlB,MAAM,EAAE,IAAIC,GAAG,CAACD,MAAM,CAACkB,KAAK,CAAC;UAC7BtB,QAAQ,EAAEA,QAAQ,CAACsB,KAAK;UACxBxB,OAAO,EAAEA,OAAO,CAACwB,KAAK;UACtBqB;QACF,CAAC,CAAC;QAEFE,SAAS,KAAKzC,MAAM,CAACkB,KAAK,GAAGuB,SAAS,CAAC;MACzC,CAAC;MACD3C,YAAY,EAAE,CAACR,EAAE,EAAE4B,KAAK,EAAEqB,KAAK,KAAK;QAClC,MAAME,SAAS,GAAGjC,YAAY,CAACU,KAAK,CAACnB,MAAM,CAAC;UAC1CT,EAAE;UACF4B,KAAK;UACLhB,QAAQ,EAAE,IAAIP,GAAG,CAACO,QAAQ,CAACgB,KAAK,CAAC;UACjClB,MAAM,EAAE,IAAIC,GAAG,CAACD,MAAM,CAACkB,KAAK,CAAC;UAC7BtB,QAAQ,EAAEA,QAAQ,CAACsB,KAAK;UACxBxB,OAAO,EAAEA,OAAO,CAACwB,KAAK;UACtBqB;QACF,CAAC,CAAC;QACFE,SAAS,KAAKzC,MAAM,CAACkB,KAAK,GAAGuB,SAAS,CAAC;MACzC,CAAC;MACD1C,MAAM,EAAE,CAACT,EAAE,EAAE4B,KAAK,EAAEqB,KAAK,KAAK;QAC5Bb,EAAE,CAACc,IAAI,CAAC,cAAc,EAAE;UAAElD,EAAE;UAAE4B,KAAK;UAAEI,IAAI,EAAED,OAAO,CAAC/B,EAAE,CAAC;UAAEiD;QAAM,CAAC,CAAC;QAEhE,MAAMG,WAAW,GAAGrC,cAAc,CAACa,KAAK,CAACnB,MAAM,CAAC;UAC9CT,EAAE;UACF4B,KAAK;UACLhB,QAAQ,EAAE,IAAIP,GAAG,CAACO,QAAQ,CAACgB,KAAK,CAAC;UACjCtB,QAAQ,EAAEA,QAAQ,CAACsB,KAAK;UACxBxB,OAAO,EAAEA,OAAO,CAACwB,KAAK;UACtBqB;QACF,CAAC,CAAC;QACFG,WAAW,KAAKxC,QAAQ,CAACgB,KAAK,GAAGwB,WAAW,CAAC;QAE7Cf,MAAM,CAACpC,IAAI,CAACO,YAAY,CAACR,EAAE,EAAE4B,KAAK,EAAEqB,KAAK,CAAC;MAC5C,CAAC;MACD3C,QAAQ;MACRF;IACF;EACF,CAAC;EAEDnB,OAAO,CAACW,aAAa,EAAEyC,MAAM,CAAC;EAE9B,OAAOA,MAAM,CAACpC,IAAI;AACpB,CAAC;AAED,OAAO,MAAMoD,aAAa,GAAG,CAACrD,EAAgB,EAAE2C,OAAgB,KAAK;EACnE,MAAMV,MAAM,GAAGlD,MAAM,CAACa,aAAa,EAAEG,WAAW,CAAC;EAEjD,MAAMuD,SAAS,GAAGzD,MAAM,CAACjB,MAAM,EAAE,CAAC;EAClC,MAAM2E,UAAU,GAAGzE,QAAQ,CAAC,MAAMkB,EAAE,CAAC4B,KAAK,IAAI0B,SAAS,CAAC;EAExD,MAAME,IAAI,GAAG;IACX,GAAGvB,MAAM;IACTjC,EAAE,EAAEuD,UAAU;IACdhD,IAAI,EAAE,CAACA,IAAa,EAAEkD,CAAQ,KAAKxB,MAAM,CAAChC,IAAI,CAACM,IAAI,CAACgD,UAAU,CAAC3B,KAAK,EAAErB,IAAI,EAAEkD,CAAC,CAAC;IAC9EjD,YAAY,EAAE,CAACD,IAAa,EAAEkD,CAAS,KAAKxB,MAAM,CAAChC,IAAI,CAACO,YAAY,CAAC+C,UAAU,CAAC3B,KAAK,EAAErB,IAAI,EAAEkD,CAAC,CAAC;IAC/FC,MAAM,EAAE5E,QAAQ,CAAC,MAAMmD,MAAM,CAAChC,IAAI,CAACS,MAAM,CAACkB,KAAK,CAAC+B,GAAG,CAACJ,UAAU,CAAC3B,KAAK,CAAC,CAAC;IACtEK,MAAM,EAAEnD,QAAQ,CAAC,MAAMmD,MAAM,CAAChC,IAAI,CAACG,OAAO,CAACwB,KAAK,CAACO,GAAG,CAACoB,UAAU,CAAC3B,KAAK,CAAC,CAAC;IACvEnB,MAAM,EAAE,CAACG,QAAiB,EAAE6C,CAAS,KAAKxB,MAAM,CAAChC,IAAI,CAACQ,MAAM,CAAC8C,UAAU,CAAC3B,KAAK,EAAEhB,QAAQ,EAAE6C,CAAC,CAAC;IAC3FG,UAAU,EAAE9E,QAAQ,CAAC,MAAMmD,MAAM,CAAChC,IAAI,CAACW,QAAQ,CAACgB,KAAK,CAACO,GAAG,CAAChD,KAAK,CAACoE,UAAU,CAAC3B,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5FiC,eAAe,EAAE/E,QAAQ,CAAC,MAAMmD,MAAM,CAAChC,IAAI,CAACW,QAAQ,CAACgB,KAAK,CAACO,GAAG,CAACoB,UAAU,CAAC3B,KAAK,CAAC,KAAK,eAAe,CAAC;IACrGkC,MAAM,EAAEhF,QAAQ,CAAC,MAAM,CAACmD,MAAM,CAAChC,IAAI,CAACK,QAAQ,CAACsB,KAAK,CAACO,GAAG,CAACoB,UAAU,CAAC3B,KAAK,CAAC,CAAC;IACzEmC,gBAAgB,EAAE9B,MAAM,CAAC8B;EAC3B,CAAC;EAED,CAAC9B,MAAM,CAAC8B,gBAAgB,IAAI9B,MAAM,CAAChC,IAAI,CAACC,QAAQ,CAACqD,UAAU,CAAC3B,KAAK,EAAEK,MAAM,CAACjC,EAAE,CAAC4B,KAAK,EAAEe,OAAO,CAAC;EAE5F3D,eAAe,CAAC,MAAM;IACpB,CAACiD,MAAM,CAAC8B,gBAAgB,IAAI9B,MAAM,CAAChC,IAAI,CAACE,UAAU,CAACoD,UAAU,CAAC3B,KAAK,CAAC;EACtE,CAAC,CAAC;EAEFe,OAAO,IAAI1D,OAAO,CAACW,aAAa,EAAE4D,IAAI,CAAC;EAEvC,OAAOA,IAAI;AACb,CAAC;AAED,OAAO,MAAMQ,uBAAuB,GAAG,MAAM;EAC3C,MAAM/B,MAAM,GAAGlD,MAAM,CAACa,aAAa,EAAEG,WAAW,CAAC;EAEjDd,OAAO,CAACW,aAAa,EAAE;IAAE,GAAGqC,MAAM;IAAE8B,gBAAgB,EAAE;EAAK,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable sonarjs/no-identical-functions */
|
|
2
|
-
|
|
2
|
+
import { toRaw } from 'vue';
|
|
3
3
|
export const independentSelectStrategy = mandatory => {
|
|
4
4
|
const strategy = {
|
|
5
5
|
select: _ref => {
|
|
@@ -8,6 +8,8 @@ export const independentSelectStrategy = mandatory => {
|
|
|
8
8
|
value,
|
|
9
9
|
selected
|
|
10
10
|
} = _ref;
|
|
11
|
+
id = toRaw(id);
|
|
12
|
+
|
|
11
13
|
// When mandatory and we're trying to deselect when id
|
|
12
14
|
// is the only currently selected item then do nothing
|
|
13
15
|
if (mandatory && !value) {
|
|
@@ -52,6 +54,7 @@ export const independentSingleSelectStrategy = mandatory => {
|
|
|
52
54
|
id,
|
|
53
55
|
...rest
|
|
54
56
|
} = _ref3;
|
|
57
|
+
id = toRaw(id);
|
|
55
58
|
const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
|
|
56
59
|
return parentStrategy.select({
|
|
57
60
|
...rest,
|
|
@@ -82,6 +85,7 @@ export const leafSelectStrategy = mandatory => {
|
|
|
82
85
|
children,
|
|
83
86
|
...rest
|
|
84
87
|
} = _ref4;
|
|
88
|
+
id = toRaw(id);
|
|
85
89
|
if (children.has(id)) return selected;
|
|
86
90
|
return parentStrategy.select({
|
|
87
91
|
id,
|
|
@@ -105,6 +109,7 @@ export const leafSingleSelectStrategy = mandatory => {
|
|
|
105
109
|
children,
|
|
106
110
|
...rest
|
|
107
111
|
} = _ref5;
|
|
112
|
+
id = toRaw(id);
|
|
108
113
|
if (children.has(id)) return selected;
|
|
109
114
|
return parentStrategy.select({
|
|
110
115
|
id,
|
|
@@ -128,6 +133,7 @@ export const classicSelectStrategy = mandatory => {
|
|
|
128
133
|
children,
|
|
129
134
|
parents
|
|
130
135
|
} = _ref6;
|
|
136
|
+
id = toRaw(id);
|
|
131
137
|
const original = new Map(selected);
|
|
132
138
|
const items = [id];
|
|
133
139
|
while (items.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectStrategies.mjs","names":["independentSelectStrategy","mandatory","strategy","select","id","value","selected","on","Array","from","entries","reduce","arr","key","length","set","in","v","children","parents","map","Map","out","push","independentSingleSelectStrategy","parentStrategy","rest","singleSelected","has","get","slice","leafSelectStrategy","leafSingleSelectStrategy","classicSelectStrategy","original","items","item","shift","parent","childrenIds","everySelected","every","cid","noneSelected"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\nexport type SelectStrategyFn = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectStrategies.mjs","names":["toRaw","independentSelectStrategy","mandatory","strategy","select","id","value","selected","on","Array","from","entries","reduce","arr","key","length","set","in","v","children","parents","map","Map","out","push","independentSingleSelectStrategy","parentStrategy","rest","singleSelected","has","get","slice","leafSelectStrategy","leafSingleSelectStrategy","classicSelectStrategy","original","items","item","shift","parent","childrenIds","everySelected","every","cid","noneSelected"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\nimport { toRaw } from 'vue'\n\nexport type SelectStrategyFn = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export function useProxiedModel(props, prop, defaultValue) {
|
|
|
24
24
|
});
|
|
25
25
|
const model = computed({
|
|
26
26
|
get() {
|
|
27
|
-
return transformIn(
|
|
27
|
+
return transformIn(isControlled.value ? props[prop] : internal.value);
|
|
28
28
|
},
|
|
29
29
|
set(internalValue) {
|
|
30
30
|
const newValue = transformOut(internalValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxiedModel.mjs","names":["computed","ref","toRaw","watch","getCurrentInstance","toKebabCase","useToggleScope","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","internal","undefined","kebabProp","checkKebab","isControlled","vnode","hasOwnProperty","value","val","model","get","set","internalValue","newValue","emit","Object","defineProperty"],"sources":["../../src/composables/proxiedModel.ts"],"sourcesContent":["// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype InnerVal<T> = T extends any[] ? Readonly<T> : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue) as Ref<Props[Prop]>\n const kebabProp = toKebabCase(prop)\n const checkKebab = kebabProp !== prop\n\n const isControlled = checkKebab\n ? computed(() => {\n void props[prop]\n return !!(\n (vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) &&\n (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`))\n )\n })\n : computed(() => {\n void props[prop]\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`))\n })\n\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val\n })\n })\n\n const model = computed({\n get (): any {\n return transformIn(
|
|
1
|
+
{"version":3,"file":"proxiedModel.mjs","names":["computed","ref","toRaw","watch","getCurrentInstance","toKebabCase","useToggleScope","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","internal","undefined","kebabProp","checkKebab","isControlled","vnode","hasOwnProperty","value","val","model","get","set","internalValue","newValue","emit","Object","defineProperty"],"sources":["../../src/composables/proxiedModel.ts"],"sourcesContent":["// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype InnerVal<T> = T extends any[] ? Readonly<T> : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue) as Ref<Props[Prop]>\n const kebabProp = toKebabCase(prop)\n const checkKebab = kebabProp !== prop\n\n const isControlled = checkKebab\n ? computed(() => {\n void props[prop]\n return !!(\n (vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) &&\n (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`))\n )\n })\n : computed(() => {\n void props[prop]\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`))\n })\n\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val\n })\n })\n\n const model = computed({\n get (): any {\n return transformIn(isControlled.value ? props[prop] : internal.value)\n },\n set (internalValue) {\n const newValue = transformOut(internalValue)\n const value = toRaw(isControlled.value ? props[prop] : internal.value)\n if (value === newValue || transformIn(value) === internalValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, newValue)\n },\n }) as any as Ref<InnerVal<Inner>> & { readonly externalValue: Props[Prop] }\n\n Object.defineProperty(model, 'externalValue', {\n get: () => isControlled.value ? props[prop] : internal.value,\n })\n\n return model\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACxCC,kBAAkB,EAAEC,WAAW;AAAA,SAC/BC,cAAc,6BAEvB;AAKA;AACA,OAAO,SAASC,eAAe,CAK7BC,KAAY,EACZC,IAAU,EACVC,YAA0B,EAG1B;EAAA,IAFAC,WAA2C,uEAAIC,CAAM,IAAKA,CAAC;EAAA,IAC3DC,YAA2C,uEAAID,CAAM,IAAKA,CAAC;EAE3D,MAAME,EAAE,GAAGV,kBAAkB,CAAC,iBAAiB,CAAC;EAChD,MAAMW,QAAQ,GAAGd,GAAG,CAACO,KAAK,CAACC,IAAI,CAAC,KAAKO,SAAS,GAAGR,KAAK,CAACC,IAAI,CAAC,GAAGC,YAAY,CAAqB;EAChG,MAAMO,SAAS,GAAGZ,WAAW,CAACI,IAAI,CAAC;EACnC,MAAMS,UAAU,GAAGD,SAAS,KAAKR,IAAI;EAErC,MAAMU,YAAY,GAAGD,UAAU,GAC3BlB,QAAQ,CAAC,MAAM;IACf,KAAKQ,KAAK,CAACC,IAAI,CAAC;IAChB,OAAO,CAAC,EACN,CAACK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAACZ,IAAI,CAAC,IAAIK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAACJ,SAAS,CAAC,MACjFH,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAAE,YAAWZ,IAAK,EAAC,CAAC,IAAIK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAAE,YAAWJ,SAAU,EAAC,CAAC,CAAC,CAChH;EACH,CAAC,CAAC,GACAjB,QAAQ,CAAC,MAAM;IACf,KAAKQ,KAAK,CAACC,IAAI,CAAC;IAChB,OAAO,CAAC,EAAEK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAACZ,IAAI,CAAC,IAAIK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAAE,YAAWZ,IAAK,EAAC,CAAC,CAAC;EACvG,CAAC,CAAC;EAEJH,cAAc,CAAC,MAAM,CAACa,YAAY,CAACG,KAAK,EAAE,MAAM;IAC9CnB,KAAK,CAAC,MAAMK,KAAK,CAACC,IAAI,CAAC,EAAEc,GAAG,IAAI;MAC9BR,QAAQ,CAACO,KAAK,GAAGC,GAAG;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMC,KAAK,GAAGxB,QAAQ,CAAC;IACrByB,GAAG,GAAS;MACV,OAAOd,WAAW,CAACQ,YAAY,CAACG,KAAK,GAAGd,KAAK,CAACC,IAAI,CAAC,GAAGM,QAAQ,CAACO,KAAK,CAAC;IACvE,CAAC;IACDI,GAAG,CAAEC,aAAa,EAAE;MAClB,MAAMC,QAAQ,GAAGf,YAAY,CAACc,aAAa,CAAC;MAC5C,MAAML,KAAK,GAAGpB,KAAK,CAACiB,YAAY,CAACG,KAAK,GAAGd,KAAK,CAACC,IAAI,CAAC,GAAGM,QAAQ,CAACO,KAAK,CAAC;MACtE,IAAIA,KAAK,KAAKM,QAAQ,IAAIjB,WAAW,CAACW,KAAK,CAAC,KAAKK,aAAa,EAAE;QAC9D;MACF;MACAZ,QAAQ,CAACO,KAAK,GAAGM,QAAQ;MACzBd,EAAE,EAAEe,IAAI,CAAE,UAASpB,IAAK,EAAC,EAAEmB,QAAQ,CAAC;IACtC;EACF,CAAC,CAA0E;EAE3EE,MAAM,CAACC,cAAc,CAACP,KAAK,EAAE,eAAe,EAAE;IAC5CC,GAAG,EAAE,MAAMN,YAAY,CAACG,KAAK,GAAGd,KAAK,CAACC,IAAI,CAAC,GAAGM,QAAQ,CAACO;EACzD,CAAC,CAAC;EAEF,OAAOE,KAAK;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resizeObserver.mjs","names":["onBeforeUnmount","readonly","ref","watch","IN_BROWSER","useResizeObserver","callback","resizeRef","contentRect","observer","ResizeObserver","entries","length","value","disconnect","newValue","oldValue","unobserve","undefined","observe","flush"],"sources":["../../src/composables/resizeObserver.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\n// Globals\nimport { IN_BROWSER } from '@/util/globals'\n\ninterface ResizeState {\n resizeRef: Ref<
|
|
1
|
+
{"version":3,"file":"resizeObserver.mjs","names":["onBeforeUnmount","readonly","ref","watch","IN_BROWSER","useResizeObserver","callback","resizeRef","contentRect","observer","ResizeObserver","entries","length","value","disconnect","newValue","oldValue","unobserve","undefined","observe","flush"],"sources":["../../src/composables/resizeObserver.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\n// Globals\nimport { IN_BROWSER } from '@/util/globals'\n\ninterface ResizeState {\n resizeRef: Ref<HTMLElement | undefined>\n contentRect: DeepReadonly<Ref<DOMRectReadOnly | undefined>>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback): ResizeState {\n const resizeRef = ref<HTMLElement>()\n const contentRect = ref<DOMRectReadOnly>()\n\n if (IN_BROWSER) {\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n callback?.(entries, observer)\n\n if (!entries.length) return\n\n contentRect.value = entries[0].contentRect\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(resizeRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n contentRect.value = undefined\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return {\n resizeRef,\n contentRect: readonly(contentRect),\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,eAAe,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAG3D;AAAA,SACSC,UAAU;AAOnB,OAAO,SAASC,iBAAiB,CAAEC,QAAiC,EAAe;EACjF,MAAMC,SAAS,GAAGL,GAAG,EAAe;EACpC,MAAMM,WAAW,GAAGN,GAAG,EAAmB;EAE1C,IAAIE,UAAU,EAAE;IACd,MAAMK,QAAQ,GAAG,IAAIC,cAAc,CAAEC,OAA8B,IAAK;MACtEL,QAAQ,GAAGK,OAAO,EAAEF,QAAQ,CAAC;MAE7B,IAAI,CAACE,OAAO,CAACC,MAAM,EAAE;MAErBJ,WAAW,CAACK,KAAK,GAAGF,OAAO,CAAC,CAAC,CAAC,CAACH,WAAW;IAC5C,CAAC,CAAC;IAEFR,eAAe,CAAC,MAAM;MACpBS,QAAQ,CAACK,UAAU,EAAE;IACvB,CAAC,CAAC;IAEFX,KAAK,CAACI,SAAS,EAAE,CAACQ,QAAQ,EAAEC,QAAQ,KAAK;MACvC,IAAIA,QAAQ,EAAE;QACZP,QAAQ,CAACQ,SAAS,CAACD,QAAQ,CAAC;QAC5BR,WAAW,CAACK,KAAK,GAAGK,SAAS;MAC/B;MAEA,IAAIH,QAAQ,EAAEN,QAAQ,CAACU,OAAO,CAACJ,QAAQ,CAAC;IAC1C,CAAC,EAAE;MACDK,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAEA,OAAO;IACLb,SAAS;IACTC,WAAW,EAAEP,QAAQ,CAACO,WAAW;EACnC,CAAC;AACH"}
|
|
@@ -184,22 +184,30 @@ export function createTheme(options) {
|
|
|
184
184
|
lines.push(...bgLines, ...fgLines);
|
|
185
185
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
|
186
186
|
});
|
|
187
|
+
function getHead() {
|
|
188
|
+
return {
|
|
189
|
+
style: [{
|
|
190
|
+
children: styles.value,
|
|
191
|
+
id: 'vuetify-theme-stylesheet',
|
|
192
|
+
nonce: parsedOptions.cspNonce || false
|
|
193
|
+
}]
|
|
194
|
+
};
|
|
195
|
+
}
|
|
187
196
|
function install(app) {
|
|
188
197
|
const head = app._context.provides.usehead;
|
|
189
198
|
if (head) {
|
|
190
|
-
head.
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
watchEffect(() => head.updateDOM());
|
|
199
|
+
if (head.push) {
|
|
200
|
+
const entry = head.push(getHead);
|
|
201
|
+
watch(styles, () => {
|
|
202
|
+
entry.patch(getHead);
|
|
203
|
+
});
|
|
204
|
+
} else {
|
|
205
|
+
if (IN_BROWSER) {
|
|
206
|
+
head.addHeadObjs(computed(getHead));
|
|
207
|
+
watchEffect(() => head.updateDOM());
|
|
208
|
+
} else {
|
|
209
|
+
head.addHeadObjs(getHead());
|
|
210
|
+
}
|
|
203
211
|
}
|
|
204
212
|
} else {
|
|
205
213
|
let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","themeName","genCssVariables","map","startsWith","undefined","rgb","r","g","b","bgLines","fgLines","Set","values","flatMap","push","str","i","join","install","app","head","_context","provides","usehead","addHeadObjs","style","children","type","id","cspNonce","nonce","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadAttrs, HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n const { variables, dark } = theme\n\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ...Object.keys(variables).map(key => {\n const value = variables[key]\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n\n return `--v-${key}: ${rgb ?? value}`\n }),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n head.addHeadObjs(computed(() => {\n const style: HeadAttrs = {\n children: styles.value,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n }\n if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce\n\n return { style: [style] }\n }))\n\n if (IN_BROWSER) {\n watchEffect(() => head.updateDOM())\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n return variables\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","themeName","genCssVariables","map","startsWith","undefined","rgb","r","g","b","bgLines","fgLines","Set","values","flatMap","push","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n const { variables, dark } = theme\n\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ...Object.keys(variables).map(key => {\n const value = variables[key]\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n\n return `--v-${key}: ${rgb ?? value}`\n }),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n watch(styles, () => { entry.patch(getHead) })\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n return variables\n}\n"],"mappings":"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"}
|
package/lib/entry-bundler.mjs
CHANGED