Major overhaul to the theme and now functioning.
This commit is contained in:
+466
-6
@@ -1,15 +1,475 @@
|
||||
{
|
||||
"hash": "de5351f0",
|
||||
"configHash": "ad9d2ba9",
|
||||
"lockfileHash": "d8cac6d1",
|
||||
"browserHash": "85657f81",
|
||||
"hash": "58793c98",
|
||||
"configHash": "939bcc17",
|
||||
"lockfileHash": "b10062e0",
|
||||
"browserHash": "e6aae6df",
|
||||
"optimized": {
|
||||
"vue": {
|
||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "936bccf3",
|
||||
"fileHash": "c9954258",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue-router": {
|
||||
"src": "../../vue-router/dist/vue-router.mjs",
|
||||
"file": "vue-router.js",
|
||||
"fileHash": "e764d986",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify": {
|
||||
"src": "../../vuetify/lib/framework.js",
|
||||
"file": "vuetify.js",
|
||||
"fileHash": "369c86f0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components": {
|
||||
"src": "../../vuetify/lib/components/index.js",
|
||||
"file": "vuetify_components.js",
|
||||
"fileHash": "721553c0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/directives": {
|
||||
"src": "../../vuetify/lib/directives/index.js",
|
||||
"file": "vuetify_directives.js",
|
||||
"fileHash": "cf4c59e7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/iconsets/mdi": {
|
||||
"src": "../../vuetify/lib/iconsets/mdi.js",
|
||||
"file": "vuetify_iconsets_mdi.js",
|
||||
"fileHash": "590e0963",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VApp": {
|
||||
"src": "../../vuetify/lib/components/VApp/index.js",
|
||||
"file": "vuetify_components_VApp.js",
|
||||
"fileHash": "f6cb1574",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VAppBar": {
|
||||
"src": "../../vuetify/lib/components/VAppBar/index.js",
|
||||
"file": "vuetify_components_VAppBar.js",
|
||||
"fileHash": "bd33378b",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VBtn": {
|
||||
"src": "../../vuetify/lib/components/VBtn/index.js",
|
||||
"file": "vuetify_components_VBtn.js",
|
||||
"fileHash": "b2541520",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDivider": {
|
||||
"src": "../../vuetify/lib/components/VDivider/index.js",
|
||||
"file": "vuetify_components_VDivider.js",
|
||||
"fileHash": "1201295e",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VGrid": {
|
||||
"src": "../../vuetify/lib/components/VGrid/index.js",
|
||||
"file": "vuetify_components_VGrid.js",
|
||||
"fileHash": "dec97038",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VList": {
|
||||
"src": "../../vuetify/lib/components/VList/index.js",
|
||||
"file": "vuetify_components_VList.js",
|
||||
"fileHash": "92076a71",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VMain": {
|
||||
"src": "../../vuetify/lib/components/VMain/index.js",
|
||||
"file": "vuetify_components_VMain.js",
|
||||
"fileHash": "aea7930b",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VNavigationDrawer": {
|
||||
"src": "../../vuetify/lib/components/VNavigationDrawer/index.js",
|
||||
"file": "vuetify_components_VNavigationDrawer.js",
|
||||
"fileHash": "fa7c5e03",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VAlert": {
|
||||
"src": "../../vuetify/lib/components/VAlert/index.js",
|
||||
"file": "vuetify_components_VAlert.js",
|
||||
"fileHash": "5dc7580a",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VCard": {
|
||||
"src": "../../vuetify/lib/components/VCard/index.js",
|
||||
"file": "vuetify_components_VCard.js",
|
||||
"fileHash": "90108afc",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDialog": {
|
||||
"src": "../../vuetify/lib/components/VDialog/index.js",
|
||||
"file": "vuetify_components_VDialog.js",
|
||||
"fileHash": "e56ad233",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VIcon": {
|
||||
"src": "../../vuetify/lib/components/VIcon/index.js",
|
||||
"file": "vuetify_components_VIcon.js",
|
||||
"fileHash": "ccd96f39",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VToolbar": {
|
||||
"src": "../../vuetify/lib/components/VToolbar/index.js",
|
||||
"file": "vuetify_components_VToolbar.js",
|
||||
"fileHash": "f4e18631",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VBreadcrumbs": {
|
||||
"src": "../../vuetify/lib/components/VBreadcrumbs/index.js",
|
||||
"file": "vuetify_components_VBreadcrumbs.js",
|
||||
"fileHash": "b9da5690",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDataTable": {
|
||||
"src": "../../vuetify/lib/components/VDataTable/index.js",
|
||||
"file": "vuetify_components_VDataTable.js",
|
||||
"fileHash": "d06d0545",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VFileInput": {
|
||||
"src": "../../vuetify/lib/components/VFileInput/index.js",
|
||||
"file": "vuetify_components_VFileInput.js",
|
||||
"fileHash": "9b6d1640",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VMenu": {
|
||||
"src": "../../vuetify/lib/components/VMenu/index.js",
|
||||
"file": "vuetify_components_VMenu.js",
|
||||
"fileHash": "6401d9c7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VProgressLinear": {
|
||||
"src": "../../vuetify/lib/components/VProgressLinear/index.js",
|
||||
"file": "vuetify_components_VProgressLinear.js",
|
||||
"fileHash": "f6998592",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSelect": {
|
||||
"src": "../../vuetify/lib/components/VSelect/index.js",
|
||||
"file": "vuetify_components_VSelect.js",
|
||||
"fileHash": "fff4e409",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSnackbar": {
|
||||
"src": "../../vuetify/lib/components/VSnackbar/index.js",
|
||||
"file": "vuetify_components_VSnackbar.js",
|
||||
"fileHash": "e8e1d7d3",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VCheckbox": {
|
||||
"src": "../../vuetify/lib/components/VCheckbox/index.js",
|
||||
"file": "vuetify_components_VCheckbox.js",
|
||||
"fileHash": "6c2a3d1f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VChip": {
|
||||
"src": "../../vuetify/lib/components/VChip/index.js",
|
||||
"file": "vuetify_components_VChip.js",
|
||||
"fileHash": "149d1552",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VExpansionPanel": {
|
||||
"src": "../../vuetify/lib/components/VExpansionPanel/index.js",
|
||||
"file": "vuetify_components_VExpansionPanel.js",
|
||||
"fileHash": "e8175e4b",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSlider": {
|
||||
"src": "../../vuetify/lib/components/VSlider/index.js",
|
||||
"file": "vuetify_components_VSlider.js",
|
||||
"fileHash": "70d54e33",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/transitions": {
|
||||
"src": "../../vuetify/lib/components/transitions/index.js",
|
||||
"file": "vuetify_components_transitions.js",
|
||||
"fileHash": "1ae42e15",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VImg": {
|
||||
"src": "../../vuetify/lib/components/VImg/index.js",
|
||||
"file": "vuetify_components_VImg.js",
|
||||
"fileHash": "55902c55",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VProgressCircular": {
|
||||
"src": "../../vuetify/lib/components/VProgressCircular/index.js",
|
||||
"file": "vuetify_components_VProgressCircular.js",
|
||||
"fileHash": "4ac970e2",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSheet": {
|
||||
"src": "../../vuetify/lib/components/VSheet/index.js",
|
||||
"file": "vuetify_components_VSheet.js",
|
||||
"fileHash": "60500776",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VForm": {
|
||||
"src": "../../vuetify/lib/components/VForm/index.js",
|
||||
"file": "vuetify_components_VForm.js",
|
||||
"fileHash": "6098d2ad",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VTextField": {
|
||||
"src": "../../vuetify/lib/components/VTextField/index.js",
|
||||
"file": "vuetify_components_VTextField.js",
|
||||
"fileHash": "6c3b6c9f",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VBtnToggle": {
|
||||
"src": "../../vuetify/lib/components/VBtnToggle/index.js",
|
||||
"file": "vuetify_components_VBtnToggle.js",
|
||||
"fileHash": "92b719ca",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VTextarea": {
|
||||
"src": "../../vuetify/lib/components/VTextarea/index.js",
|
||||
"file": "vuetify_components_VTextarea.js",
|
||||
"fileHash": "c4710e99",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {}
|
||||
"chunks": {
|
||||
"chunk-KPWCGWEX": {
|
||||
"file": "chunk-KPWCGWEX.js"
|
||||
},
|
||||
"chunk-5LZQZ6A5": {
|
||||
"file": "chunk-5LZQZ6A5.js"
|
||||
},
|
||||
"chunk-F6LZGKE2": {
|
||||
"file": "chunk-F6LZGKE2.js"
|
||||
},
|
||||
"chunk-4MMPKXON": {
|
||||
"file": "chunk-4MMPKXON.js"
|
||||
},
|
||||
"chunk-LHMOJDYM": {
|
||||
"file": "chunk-LHMOJDYM.js"
|
||||
},
|
||||
"chunk-TSTWIJCO": {
|
||||
"file": "chunk-TSTWIJCO.js"
|
||||
},
|
||||
"chunk-YDVSSFCH": {
|
||||
"file": "chunk-YDVSSFCH.js"
|
||||
},
|
||||
"chunk-RNFCLGZV": {
|
||||
"file": "chunk-RNFCLGZV.js"
|
||||
},
|
||||
"chunk-WNCBJDZZ": {
|
||||
"file": "chunk-WNCBJDZZ.js"
|
||||
},
|
||||
"chunk-34XWDQGB": {
|
||||
"file": "chunk-34XWDQGB.js"
|
||||
},
|
||||
"chunk-RH43OVWP": {
|
||||
"file": "chunk-RH43OVWP.js"
|
||||
},
|
||||
"chunk-PEUMXYT2": {
|
||||
"file": "chunk-PEUMXYT2.js"
|
||||
},
|
||||
"chunk-4HCXUCLO": {
|
||||
"file": "chunk-4HCXUCLO.js"
|
||||
},
|
||||
"chunk-ERI3RTQS": {
|
||||
"file": "chunk-ERI3RTQS.js"
|
||||
},
|
||||
"chunk-VSEC5QGQ": {
|
||||
"file": "chunk-VSEC5QGQ.js"
|
||||
},
|
||||
"chunk-BYBKODOB": {
|
||||
"file": "chunk-BYBKODOB.js"
|
||||
},
|
||||
"chunk-SHBPUR7N": {
|
||||
"file": "chunk-SHBPUR7N.js"
|
||||
},
|
||||
"chunk-HGIC64KW": {
|
||||
"file": "chunk-HGIC64KW.js"
|
||||
},
|
||||
"chunk-BXEVD6W6": {
|
||||
"file": "chunk-BXEVD6W6.js"
|
||||
},
|
||||
"chunk-LPZZJ62X": {
|
||||
"file": "chunk-LPZZJ62X.js"
|
||||
},
|
||||
"chunk-UIXKNP5E": {
|
||||
"file": "chunk-UIXKNP5E.js"
|
||||
},
|
||||
"chunk-DRSCVHAQ": {
|
||||
"file": "chunk-DRSCVHAQ.js"
|
||||
},
|
||||
"chunk-TSYQL5U3": {
|
||||
"file": "chunk-TSYQL5U3.js"
|
||||
},
|
||||
"chunk-MVBFAXEB": {
|
||||
"file": "chunk-MVBFAXEB.js"
|
||||
},
|
||||
"chunk-QC7VWQER": {
|
||||
"file": "chunk-QC7VWQER.js"
|
||||
},
|
||||
"chunk-NURQ3473": {
|
||||
"file": "chunk-NURQ3473.js"
|
||||
},
|
||||
"chunk-ET5GCC5W": {
|
||||
"file": "chunk-ET5GCC5W.js"
|
||||
},
|
||||
"chunk-W6DJL42A": {
|
||||
"file": "chunk-W6DJL42A.js"
|
||||
},
|
||||
"chunk-HV7P7R7J": {
|
||||
"file": "chunk-HV7P7R7J.js"
|
||||
},
|
||||
"chunk-MPVSDM4V": {
|
||||
"file": "chunk-MPVSDM4V.js"
|
||||
},
|
||||
"chunk-HOEZWRBG": {
|
||||
"file": "chunk-HOEZWRBG.js"
|
||||
},
|
||||
"chunk-Z3677HMS": {
|
||||
"file": "chunk-Z3677HMS.js"
|
||||
},
|
||||
"chunk-ADXDXPPR": {
|
||||
"file": "chunk-ADXDXPPR.js"
|
||||
},
|
||||
"chunk-7SKEB5LN": {
|
||||
"file": "chunk-7SKEB5LN.js"
|
||||
},
|
||||
"chunk-PCKQGDLK": {
|
||||
"file": "chunk-PCKQGDLK.js"
|
||||
},
|
||||
"chunk-6CRS5HI4": {
|
||||
"file": "chunk-6CRS5HI4.js"
|
||||
},
|
||||
"chunk-X7YBE6PF": {
|
||||
"file": "chunk-X7YBE6PF.js"
|
||||
},
|
||||
"chunk-YJD2PNP6": {
|
||||
"file": "chunk-YJD2PNP6.js"
|
||||
},
|
||||
"chunk-I4SZJCEY": {
|
||||
"file": "chunk-I4SZJCEY.js"
|
||||
},
|
||||
"chunk-OI3EYDCB": {
|
||||
"file": "chunk-OI3EYDCB.js"
|
||||
},
|
||||
"chunk-IZQZFEAL": {
|
||||
"file": "chunk-IZQZFEAL.js"
|
||||
},
|
||||
"chunk-J7Q2NMV7": {
|
||||
"file": "chunk-J7Q2NMV7.js"
|
||||
},
|
||||
"chunk-4VABFUPG": {
|
||||
"file": "chunk-4VABFUPG.js"
|
||||
},
|
||||
"chunk-GAYXO4FM": {
|
||||
"file": "chunk-GAYXO4FM.js"
|
||||
},
|
||||
"chunk-B4JFJDWM": {
|
||||
"file": "chunk-B4JFJDWM.js"
|
||||
},
|
||||
"chunk-U2DSRSME": {
|
||||
"file": "chunk-U2DSRSME.js"
|
||||
},
|
||||
"chunk-FVDWV4NO": {
|
||||
"file": "chunk-FVDWV4NO.js"
|
||||
},
|
||||
"chunk-AJ7MUB7M": {
|
||||
"file": "chunk-AJ7MUB7M.js"
|
||||
},
|
||||
"chunk-KTTVT6V2": {
|
||||
"file": "chunk-KTTVT6V2.js"
|
||||
},
|
||||
"chunk-TM3MIDYC": {
|
||||
"file": "chunk-TM3MIDYC.js"
|
||||
},
|
||||
"chunk-CMZ4UYUX": {
|
||||
"file": "chunk-CMZ4UYUX.js"
|
||||
},
|
||||
"chunk-PIT7IT55": {
|
||||
"file": "chunk-PIT7IT55.js"
|
||||
},
|
||||
"chunk-VH7QIDM4": {
|
||||
"file": "chunk-VH7QIDM4.js"
|
||||
},
|
||||
"chunk-AQK3CYVW": {
|
||||
"file": "chunk-AQK3CYVW.js"
|
||||
},
|
||||
"chunk-2HZIACSB": {
|
||||
"file": "chunk-2HZIACSB.js"
|
||||
},
|
||||
"chunk-WGYWYQOA": {
|
||||
"file": "chunk-WGYWYQOA.js"
|
||||
},
|
||||
"chunk-NJV3GUE4": {
|
||||
"file": "chunk-NJV3GUE4.js"
|
||||
},
|
||||
"chunk-6VKWM6MN": {
|
||||
"file": "chunk-6VKWM6MN.js"
|
||||
},
|
||||
"chunk-TS6Y6OVT": {
|
||||
"file": "chunk-TS6Y6OVT.js"
|
||||
},
|
||||
"chunk-YGX2Z63P": {
|
||||
"file": "chunk-YGX2Z63P.js"
|
||||
},
|
||||
"chunk-5BPWKCNA": {
|
||||
"file": "chunk-5BPWKCNA.js"
|
||||
},
|
||||
"chunk-BVUPSGRF": {
|
||||
"file": "chunk-BVUPSGRF.js"
|
||||
},
|
||||
"chunk-573D4TYC": {
|
||||
"file": "chunk-573D4TYC.js"
|
||||
},
|
||||
"chunk-GUNW7S2L": {
|
||||
"file": "chunk-GUNW7S2L.js"
|
||||
},
|
||||
"chunk-5ONGSJQ2": {
|
||||
"file": "chunk-5ONGSJQ2.js"
|
||||
},
|
||||
"chunk-CAGZXMOS": {
|
||||
"file": "chunk-CAGZXMOS.js"
|
||||
},
|
||||
"chunk-6EZKHCRW": {
|
||||
"file": "chunk-6EZKHCRW.js"
|
||||
},
|
||||
"chunk-N4LJHDYD": {
|
||||
"file": "chunk-N4LJHDYD.js"
|
||||
},
|
||||
"chunk-OJDZBU5D": {
|
||||
"file": "chunk-OJDZBU5D.js"
|
||||
},
|
||||
"chunk-IYFY4IHW": {
|
||||
"file": "chunk-IYFY4IHW.js"
|
||||
},
|
||||
"chunk-KQXZAEJP": {
|
||||
"file": "chunk-KQXZAEJP.js"
|
||||
},
|
||||
"chunk-XDSAO7OT": {
|
||||
"file": "chunk-XDSAO7OT.js"
|
||||
},
|
||||
"chunk-ENTLCOCZ": {
|
||||
"file": "chunk-ENTLCOCZ.js"
|
||||
},
|
||||
"chunk-KA77II4V": {
|
||||
"file": "chunk-KA77II4V.js"
|
||||
},
|
||||
"chunk-WXMECWZN": {
|
||||
"file": "chunk-WXMECWZN.js"
|
||||
},
|
||||
"chunk-BHV5Z34M": {
|
||||
"file": "chunk-BHV5Z34M.js"
|
||||
},
|
||||
"chunk-3DSR7NCB": {
|
||||
"file": "chunk-3DSR7NCB.js"
|
||||
},
|
||||
"chunk-LZ5T2ERG": {
|
||||
"file": "chunk-LZ5T2ERG.js"
|
||||
},
|
||||
"chunk-2MKFL3BX": {
|
||||
"file": "chunk-2MKFL3BX.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
import {
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/tag.js
|
||||
var makeTagProps = propsFactory({
|
||||
tag: {
|
||||
type: [String, Object, Function],
|
||||
default: "div"
|
||||
}
|
||||
}, "tag");
|
||||
|
||||
export {
|
||||
makeTagProps
|
||||
};
|
||||
//# sourceMappingURL=chunk-2HZIACSB.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/tag.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { JSXComponent } from '@/util'\n\n// Types\nexport interface TagProps {\n tag: string | JSXComponent\n}\n\n// Composables\nexport const makeTagProps = propsFactory({\n tag: {\n type: [String, Object, Function] as PropType<string | JSXComponent>,\n default: 'div',\n },\n}, 'tag')\n"],
|
||||
"mappings": ";;;;;AAaO,IAAMA,eAAeC,aAAa;EACvCC,KAAK;IACHC,MAAM,CAACC,QAAQC,QAAQC,QAAQ;IAC/BC,SAAS;EACX;AACF,GAAG,KAAK;",
|
||||
"names": ["makeTagProps", "propsFactory", "tag", "type", "String", "Object", "Function", "default"]
|
||||
}
|
||||
+12787
File diff suppressed because it is too large
Load Diff
+7
File diff suppressed because one or more lines are too long
+137
@@ -0,0 +1,137 @@
|
||||
import {
|
||||
VDialogTransition
|
||||
} from "./chunk-B4JFJDWM.js";
|
||||
import {
|
||||
VDefaultsProvider
|
||||
} from "./chunk-VH7QIDM4.js";
|
||||
import {
|
||||
VOverlay,
|
||||
makeVOverlayProps
|
||||
} from "./chunk-TS6Y6OVT.js";
|
||||
import {
|
||||
useScopeId
|
||||
} from "./chunk-BVUPSGRF.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
genericComponent,
|
||||
omit,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
createVNode,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
ref,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VDialog/VDialog.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VDialog/VDialog.css";
|
||||
var makeVDialogProps = propsFactory({
|
||||
fullscreen: Boolean,
|
||||
scrollable: Boolean,
|
||||
...omit(makeVOverlayProps({
|
||||
captureFocus: true,
|
||||
origin: "center center",
|
||||
scrollStrategy: "block",
|
||||
transition: {
|
||||
component: VDialogTransition
|
||||
},
|
||||
zIndex: 2400,
|
||||
retainFocus: true
|
||||
}), ["disableInitialFocus"])
|
||||
}, "VDialog");
|
||||
var VDialog = genericComponent()({
|
||||
name: "VDialog",
|
||||
props: makeVDialogProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true,
|
||||
afterEnter: () => true,
|
||||
afterLeave: () => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const isActive = useProxiedModel(props, "modelValue");
|
||||
const {
|
||||
scopeId
|
||||
} = useScopeId();
|
||||
const overlay = ref();
|
||||
function onAfterEnter() {
|
||||
emit("afterEnter");
|
||||
if ((props.scrim || props.retainFocus) && overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {
|
||||
overlay.value.contentEl.focus({
|
||||
preventScroll: true
|
||||
});
|
||||
}
|
||||
}
|
||||
function onAfterLeave() {
|
||||
emit("afterLeave");
|
||||
}
|
||||
watch(isActive, async (val) => {
|
||||
if (!val) {
|
||||
await nextTick();
|
||||
overlay.value.activatorEl?.focus({
|
||||
preventScroll: true
|
||||
});
|
||||
}
|
||||
});
|
||||
useRender(() => {
|
||||
const overlayProps = VOverlay.filterProps(props);
|
||||
const activatorProps = mergeProps({
|
||||
"aria-haspopup": "dialog"
|
||||
}, props.activatorProps);
|
||||
const contentProps = mergeProps({
|
||||
tabindex: -1
|
||||
}, props.contentProps);
|
||||
return createVNode(VOverlay, mergeProps({
|
||||
"ref": overlay,
|
||||
"class": ["v-dialog", {
|
||||
"v-dialog--fullscreen": props.fullscreen,
|
||||
"v-dialog--scrollable": props.scrollable
|
||||
}, props.class],
|
||||
"style": props.style
|
||||
}, overlayProps, {
|
||||
"modelValue": isActive.value,
|
||||
"onUpdate:modelValue": ($event) => isActive.value = $event,
|
||||
"aria-modal": "true",
|
||||
"activatorProps": activatorProps,
|
||||
"contentProps": contentProps,
|
||||
"height": !props.fullscreen ? props.height : void 0,
|
||||
"width": !props.fullscreen ? props.width : void 0,
|
||||
"maxHeight": !props.fullscreen ? props.maxHeight : void 0,
|
||||
"maxWidth": !props.fullscreen ? props.maxWidth : void 0,
|
||||
"role": "dialog",
|
||||
"onAfterEnter": onAfterEnter,
|
||||
"onAfterLeave": onAfterLeave
|
||||
}, scopeId), {
|
||||
activator: slots.activator,
|
||||
default: function() {
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
return createVNode(VDefaultsProvider, {
|
||||
"root": "VDialog"
|
||||
}, {
|
||||
default: () => [slots.default?.(...args)]
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
return forwardRefs({}, overlay);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
makeVDialogProps,
|
||||
VDialog
|
||||
};
|
||||
//# sourceMappingURL=chunk-34XWDQGB.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/components/VDialog/VDialog.tsx"],
|
||||
"sourcesContent": ["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n scrollable: Boolean,\n\n ...omit(makeVOverlayProps({\n captureFocus: true,\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition },\n zIndex: 2400,\n retainFocus: true,\n }), ['disableInitialFocus']),\n}, 'VDialog')\n\nexport const VDialog = genericComponent<OverlaySlots>()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref<VOverlay>()\n\n function onAfterEnter () {\n emit('afterEnter')\n if (\n (props.scrim || props.retainFocus) &&\n overlay.value?.contentEl &&\n !overlay.value.contentEl.contains(document.activeElement)\n ) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n aria-modal=\"true\"\n activatorProps={ activatorProps }\n contentProps={ contentProps }\n height={ !props.fullscreen ? props.height : undefined }\n width={ !props.fullscreen ? props.width : undefined }\n maxHeight={ !props.fullscreen ? props.maxHeight : undefined }\n maxWidth={ !props.fullscreen ? props.maxWidth : undefined }\n role=\"dialog\"\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VDialog\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAA;AAoBO,IAAMA,mBAAmBC,aAAa;EAC3CC,YAAYC;EACZC,YAAYD;EAEZ,GAAGE,KAAKC,kBAAkB;IACxBC,cAAc;IACdC,QAAQ;IACRC,gBAAgB;IAChBC,YAAY;MAAEC,WAAWC;IAAkB;IAC3CC,QAAQ;IACRC,aAAa;EACf,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAC7B,GAAG,SAAS;AAEL,IAAMC,UAAUC,iBAA+B,EAAE;EACtDC,MAAM;EAENC,OAAOlB,iBAAiB;EAExBmB,OAAO;IACL,qBAAsBC,WAAmB;IACzCC,YAAYA,MAAM;IAClBC,YAAYA,MAAM;EACpB;EAEAC,MAAOL,OAAKM,MAAmB;AAAA,QAAjB;MAAEC;MAAMC;IAAM,IAACF;AAC3B,UAAMG,WAAWC,gBAAgBV,OAAO,YAAY;AACpD,UAAM;MAAEW;IAAQ,IAAIC,WAAW;AAE/B,UAAMC,UAAUC,IAAc;AAE9B,aAASC,eAAgB;AACvBR,WAAK,YAAY;AACjB,WACGP,MAAMgB,SAAShB,MAAMJ,gBACtBiB,QAAQX,OAAOe,aACf,CAACJ,QAAQX,MAAMe,UAAUC,SAASC,SAASC,aAAa,GACxD;AACAP,gBAAQX,MAAMe,UAAUI,MAAM;UAAEC,eAAe;QAAK,CAAC;MACvD;IACF;AAEA,aAASC,eAAgB;AACvBhB,WAAK,YAAY;IACnB;AAEAiB,UAAMf,UAAU,OAAMgB,QAAO;AAC3B,UAAI,CAACA,KAAK;AACR,cAAMC,SAAS;AACfb,gBAAQX,MAAOyB,aAAaN,MAAM;UAAEC,eAAe;QAAK,CAAC;MAC3D;IACF,CAAC;AAEDM,cAAU,MAAM;AACd,YAAMC,eAAeC,SAASC,YAAY/B,KAAK;AAC/C,YAAMgC,iBAAiBC,WAAW;QAChC,iBAAiB;MACnB,GAAGjC,MAAMgC,cAAc;AACvB,YAAME,eAAeD,WAAW;QAC9BE,UAAU;MACZ,GAAGnC,MAAMkC,YAAY;AAErB,aAAAE,YAAAN,UAAAO,WAAA;QAAA,OAEUxB;QAAO,SACN,CACL,YACA;UACE,wBAAwBb,MAAMhB;UAC9B,wBAAwBgB,MAAMd;QAChC,GACAc,MAAMsC,KAAK;QACZ,SACOtC,MAAMuC;MAAK,GACdV,cAAY;QAAA,cACPpB,SAASP;QAAK,uBAAAsC,YAAd/B,SAASP,QAAKsC;QAAA,cAAA;QAAA,kBAEPR;QAAc,gBAChBE;QAAY,UAClB,CAAClC,MAAMhB,aAAagB,MAAMyC,SAASC;QAAS,SAC7C,CAAC1C,MAAMhB,aAAagB,MAAM2C,QAAQD;QAAS,aACvC,CAAC1C,MAAMhB,aAAagB,MAAM4C,YAAYF;QAAS,YAChD,CAAC1C,MAAMhB,aAAagB,MAAM6C,WAAWH;QAAS,QAAA;QAAA,gBAE1C3B;QAAY,gBACZQ;MAAY,GACtBZ,OAAO,GAAA;QAGVmC,WAAWtC,MAAMsC;QACjBC,SAAS,WAAA;AAAA,mBAAAC,OAAAC,UAAAC,QAAIC,OAAI,IAAAC,MAAAJ,IAAA,GAAAK,OAAA,GAAAA,OAAAL,MAAAK,QAAA;AAAJF,iBAAIE,IAAA,IAAAJ,UAAAI,IAAA;UAAA;AAAA,iBAAAjB,YAAAkB,mBAAA;YAAA,QAAA;UAAA,GAAA;YAAAP,SAAAA,MAAA,CAEXvC,MAAMuC,UAAU,GAAGI,IAAI,CAAC;UAAA,CAAA;QAAA;MAE7B,CAAA;IAIT,CAAC;AAED,WAAOI,YAAY,CAAC,GAAG1C,OAAO;EAChC;AACF,CAAC;",
|
||||
"names": ["makeVDialogProps", "propsFactory", "fullscreen", "Boolean", "scrollable", "omit", "makeVOverlayProps", "captureFocus", "origin", "scrollStrategy", "transition", "component", "VDialogTransition", "zIndex", "retainFocus", "VDialog", "genericComponent", "name", "props", "emits", "value", "afterEnter", "afterLeave", "setup", "_ref", "emit", "slots", "isActive", "useProxiedModel", "scopeId", "useScopeId", "overlay", "ref", "onAfterEnter", "scrim", "contentEl", "contains", "document", "activeElement", "focus", "preventScroll", "onAfterLeave", "watch", "val", "nextTick", "activatorEl", "useRender", "overlayProps", "VOverlay", "filterProps", "activatorProps", "mergeProps", "contentProps", "tabindex", "_createVNode", "_mergeProps", "class", "style", "$event", "height", "undefined", "width", "maxHeight", "maxWidth", "activator", "default", "_len", "arguments", "length", "args", "Array", "_key", "VDefaultsProvider", "forwardRefs"]
|
||||
}
|
||||
+427
@@ -0,0 +1,427 @@
|
||||
import {
|
||||
IN_BROWSER,
|
||||
RGBtoHex,
|
||||
SUPPORTS_MATCH_MEDIA,
|
||||
consoleWarn,
|
||||
createRange,
|
||||
darken,
|
||||
deprecate,
|
||||
getCurrentInstance,
|
||||
getForeground,
|
||||
getLuma,
|
||||
lighten,
|
||||
mergeDeep,
|
||||
parseColor,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
getCurrentScope,
|
||||
inject,
|
||||
onScopeDispose,
|
||||
provide,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
watch,
|
||||
watchEffect
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/theme.js
|
||||
var ThemeSymbol = /* @__PURE__ */ Symbol.for("vuetify:theme");
|
||||
var makeThemeProps = propsFactory({
|
||||
theme: String
|
||||
}, "theme");
|
||||
function genDefaults() {
|
||||
return {
|
||||
defaultTheme: "light",
|
||||
prefix: "v-",
|
||||
variations: {
|
||||
colors: [],
|
||||
lighten: 0,
|
||||
darken: 0
|
||||
},
|
||||
themes: {
|
||||
light: {
|
||||
dark: false,
|
||||
colors: {
|
||||
background: "#FFFFFF",
|
||||
surface: "#FFFFFF",
|
||||
"surface-bright": "#FFFFFF",
|
||||
"surface-light": "#EEEEEE",
|
||||
"surface-variant": "#424242",
|
||||
"on-surface-variant": "#EEEEEE",
|
||||
primary: "#1867C0",
|
||||
"primary-darken-1": "#1F5592",
|
||||
secondary: "#48A9A6",
|
||||
"secondary-darken-1": "#018786",
|
||||
error: "#B00020",
|
||||
info: "#2196F3",
|
||||
success: "#4CAF50",
|
||||
warning: "#FB8C00"
|
||||
},
|
||||
variables: {
|
||||
"border-color": "#000000",
|
||||
"border-opacity": 0.12,
|
||||
"high-emphasis-opacity": 0.87,
|
||||
"medium-emphasis-opacity": 0.6,
|
||||
"disabled-opacity": 0.38,
|
||||
"idle-opacity": 0.04,
|
||||
"hover-opacity": 0.04,
|
||||
"focus-opacity": 0.12,
|
||||
"selected-opacity": 0.08,
|
||||
"activated-opacity": 0.12,
|
||||
"pressed-opacity": 0.12,
|
||||
"dragged-opacity": 0.08,
|
||||
"theme-kbd": "#EEEEEE",
|
||||
"theme-on-kbd": "#000000",
|
||||
"theme-code": "#F5F5F5",
|
||||
"theme-on-code": "#000000"
|
||||
}
|
||||
},
|
||||
dark: {
|
||||
dark: true,
|
||||
colors: {
|
||||
background: "#121212",
|
||||
surface: "#212121",
|
||||
"surface-bright": "#ccbfd6",
|
||||
"surface-light": "#424242",
|
||||
"surface-variant": "#c8c8c8",
|
||||
"on-surface-variant": "#000000",
|
||||
primary: "#2196F3",
|
||||
"primary-darken-1": "#277CC1",
|
||||
secondary: "#54B6B2",
|
||||
"secondary-darken-1": "#48A9A6",
|
||||
error: "#CF6679",
|
||||
info: "#2196F3",
|
||||
success: "#4CAF50",
|
||||
warning: "#FB8C00"
|
||||
},
|
||||
variables: {
|
||||
"border-color": "#FFFFFF",
|
||||
"border-opacity": 0.12,
|
||||
"high-emphasis-opacity": 1,
|
||||
"medium-emphasis-opacity": 0.7,
|
||||
"disabled-opacity": 0.5,
|
||||
"idle-opacity": 0.1,
|
||||
"hover-opacity": 0.04,
|
||||
"focus-opacity": 0.12,
|
||||
"selected-opacity": 0.08,
|
||||
"activated-opacity": 0.12,
|
||||
"pressed-opacity": 0.16,
|
||||
"dragged-opacity": 0.08,
|
||||
"theme-kbd": "#424242",
|
||||
"theme-on-kbd": "#FFFFFF",
|
||||
"theme-code": "#343434",
|
||||
"theme-on-code": "#CCCCCC"
|
||||
}
|
||||
}
|
||||
},
|
||||
stylesheetId: "vuetify-theme-stylesheet",
|
||||
scoped: false,
|
||||
unimportant: false,
|
||||
utilities: true
|
||||
};
|
||||
}
|
||||
function parseThemeOptions() {
|
||||
let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : genDefaults();
|
||||
const defaults = genDefaults();
|
||||
if (!options) return {
|
||||
...defaults,
|
||||
isDisabled: true
|
||||
};
|
||||
const themes = {};
|
||||
for (const [key, theme] of Object.entries(options.themes ?? {})) {
|
||||
const defaultTheme = theme.dark || key === "dark" ? defaults.themes?.dark : defaults.themes?.light;
|
||||
themes[key] = mergeDeep(defaultTheme, theme);
|
||||
}
|
||||
return mergeDeep(defaults, {
|
||||
...options,
|
||||
themes
|
||||
});
|
||||
}
|
||||
function createCssClass(lines, selector, content, scope) {
|
||||
lines.push(`${getScopedSelector(selector, scope)} {
|
||||
`, ...content.map((line) => ` ${line};
|
||||
`), "}\n");
|
||||
}
|
||||
function genCssVariables(theme, prefix) {
|
||||
const lightOverlay = theme.dark ? 2 : 1;
|
||||
const darkOverlay = theme.dark ? 1 : 2;
|
||||
const variables = [];
|
||||
for (const [key, value] of Object.entries(theme.colors)) {
|
||||
const rgb = parseColor(value);
|
||||
variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
||||
if (!key.startsWith("on-")) {
|
||||
variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
||||
}
|
||||
}
|
||||
for (const [key, value] of Object.entries(theme.variables)) {
|
||||
const color = typeof value === "string" && value.startsWith("#") ? parseColor(value) : void 0;
|
||||
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : void 0;
|
||||
variables.push(`--${prefix}${key}: ${rgb ?? value}`);
|
||||
}
|
||||
return variables;
|
||||
}
|
||||
function genVariation(name, color, variations) {
|
||||
const object = {};
|
||||
if (variations) {
|
||||
for (const variation of ["lighten", "darken"]) {
|
||||
const fn = variation === "lighten" ? lighten : darken;
|
||||
for (const amount of createRange(variations[variation], 1)) {
|
||||
object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
|
||||
}
|
||||
}
|
||||
}
|
||||
return object;
|
||||
}
|
||||
function genVariations(colors, variations) {
|
||||
if (!variations) return {};
|
||||
let variationColors = {};
|
||||
for (const name of variations.colors) {
|
||||
const color = colors[name];
|
||||
if (!color) continue;
|
||||
variationColors = {
|
||||
...variationColors,
|
||||
...genVariation(name, color, variations)
|
||||
};
|
||||
}
|
||||
return variationColors;
|
||||
}
|
||||
function genOnColors(colors) {
|
||||
const onColors = {};
|
||||
for (const color of Object.keys(colors)) {
|
||||
if (color.startsWith("on-") || colors[`on-${color}`]) continue;
|
||||
const onColor = `on-${color}`;
|
||||
const colorVal = parseColor(colors[color]);
|
||||
onColors[onColor] = getForeground(colorVal);
|
||||
}
|
||||
return onColors;
|
||||
}
|
||||
function getScopedSelector(selector, scope) {
|
||||
if (!scope) return selector;
|
||||
const scopeSelector = `:where(${scope})`;
|
||||
return selector === ":root" ? scopeSelector : `${scopeSelector} ${selector}`;
|
||||
}
|
||||
function upsertStyles(id, cspNonce, styles) {
|
||||
const styleEl = getOrCreateStyleElement(id, cspNonce);
|
||||
if (!styleEl) return;
|
||||
styleEl.innerHTML = styles;
|
||||
}
|
||||
function getOrCreateStyleElement(id, cspNonce) {
|
||||
if (!IN_BROWSER) return null;
|
||||
let style = document.getElementById(id);
|
||||
if (!style) {
|
||||
style = document.createElement("style");
|
||||
style.id = id;
|
||||
style.type = "text/css";
|
||||
if (cspNonce) style.setAttribute("nonce", cspNonce);
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
return style;
|
||||
}
|
||||
function createTheme(options) {
|
||||
const parsedOptions = parseThemeOptions(options);
|
||||
const _name = shallowRef(parsedOptions.defaultTheme);
|
||||
const themes = ref(parsedOptions.themes);
|
||||
const systemName = shallowRef("light");
|
||||
const name = computed({
|
||||
get() {
|
||||
return _name.value === "system" ? systemName.value : _name.value;
|
||||
},
|
||||
set(val) {
|
||||
_name.value = val;
|
||||
}
|
||||
});
|
||||
const computedThemes = computed(() => {
|
||||
const acc = {};
|
||||
for (const [name2, original] of Object.entries(themes.value)) {
|
||||
const colors = {
|
||||
...original.colors,
|
||||
...genVariations(original.colors, parsedOptions.variations)
|
||||
};
|
||||
acc[name2] = {
|
||||
...original,
|
||||
colors: {
|
||||
...colors,
|
||||
...genOnColors(colors)
|
||||
}
|
||||
};
|
||||
}
|
||||
return acc;
|
||||
});
|
||||
const current = toRef(() => computedThemes.value[name.value]);
|
||||
const isSystem = toRef(() => _name.value === "system");
|
||||
const styles = computed(() => {
|
||||
const lines = [];
|
||||
const important = parsedOptions.unimportant ? "" : " !important";
|
||||
const scoped = parsedOptions.scoped ? parsedOptions.prefix : "";
|
||||
if (current.value?.dark) {
|
||||
createCssClass(lines, ":root", ["color-scheme: dark"], parsedOptions.scope);
|
||||
}
|
||||
createCssClass(lines, ":root", genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
|
||||
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
||||
createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? "dark" : "normal"}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
|
||||
}
|
||||
if (parsedOptions.utilities) {
|
||||
const bgLines = [];
|
||||
const fgLines = [];
|
||||
const colors = new Set(Object.values(computedThemes.value).flatMap((theme) => Object.keys(theme.colors)));
|
||||
for (const key of colors) {
|
||||
if (key.startsWith("on-")) {
|
||||
createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
||||
} else {
|
||||
createCssClass(bgLines, `.${scoped}bg-${key}`, [`--${parsedOptions.prefix}theme-overlay-multiplier: var(--${parsedOptions.prefix}theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`, `color: rgb(var(--${parsedOptions.prefix}theme-on-${key}))${important}`], parsedOptions.scope);
|
||||
createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
|
||||
createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
|
||||
}
|
||||
}
|
||||
if (parsedOptions.layers) {
|
||||
lines.push("@layer background {\n", ...bgLines.map((v) => ` ${v}`), "}\n", "@layer foreground {\n", ...fgLines.map((v) => ` ${v}`), "}\n");
|
||||
} else {
|
||||
lines.push(...bgLines, ...fgLines);
|
||||
}
|
||||
}
|
||||
let final = lines.map((str, i) => i === 0 ? str : ` ${str}`).join("");
|
||||
if (parsedOptions.layers) {
|
||||
final = "@layer vuetify.theme {\n" + lines.map((v) => ` ${v}`).join("") + "\n}";
|
||||
}
|
||||
return final;
|
||||
});
|
||||
const themeClasses = toRef(() => parsedOptions.isDisabled ? void 0 : `${parsedOptions.prefix}theme--${name.value}`);
|
||||
const themeNames = toRef(() => Object.keys(computedThemes.value));
|
||||
if (SUPPORTS_MATCH_MEDIA) {
|
||||
let updateSystemName = function() {
|
||||
systemName.value = media.matches ? "dark" : "light";
|
||||
};
|
||||
const media = window.matchMedia("(prefers-color-scheme: dark)");
|
||||
updateSystemName();
|
||||
media.addEventListener("change", updateSystemName, {
|
||||
passive: true
|
||||
});
|
||||
if (getCurrentScope()) {
|
||||
onScopeDispose(() => {
|
||||
media.removeEventListener("change", updateSystemName);
|
||||
});
|
||||
}
|
||||
}
|
||||
function install(app) {
|
||||
if (parsedOptions.isDisabled) return;
|
||||
const head = app._context.provides.usehead;
|
||||
if (head) {
|
||||
let getHead = function() {
|
||||
return {
|
||||
style: [{
|
||||
textContent: styles.value,
|
||||
id: parsedOptions.stylesheetId,
|
||||
nonce: parsedOptions.cspNonce || false
|
||||
}]
|
||||
};
|
||||
};
|
||||
if (head.push) {
|
||||
const entry = head.push(getHead);
|
||||
if (IN_BROWSER) {
|
||||
watch(styles, () => {
|
||||
entry.patch(getHead);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (IN_BROWSER) {
|
||||
head.addHeadObjs(toRef(getHead));
|
||||
watchEffect(() => head.updateDOM());
|
||||
} else {
|
||||
head.addHeadObjs(getHead());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let updateStyles = function() {
|
||||
upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
|
||||
};
|
||||
if (IN_BROWSER) {
|
||||
watch(styles, updateStyles, {
|
||||
immediate: true
|
||||
});
|
||||
} else {
|
||||
updateStyles();
|
||||
}
|
||||
}
|
||||
}
|
||||
function change(themeName) {
|
||||
if (themeName !== "system" && !themeNames.value.includes(themeName)) {
|
||||
consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
|
||||
return;
|
||||
}
|
||||
name.value = themeName;
|
||||
}
|
||||
function cycle() {
|
||||
let themeArray = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : themeNames.value;
|
||||
const currentIndex = themeArray.indexOf(name.value);
|
||||
const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
|
||||
change(themeArray[nextIndex]);
|
||||
}
|
||||
function toggle() {
|
||||
let themeArray = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ["light", "dark"];
|
||||
cycle(themeArray);
|
||||
}
|
||||
const globalName = new Proxy(name, {
|
||||
get(target, prop) {
|
||||
return Reflect.get(target, prop);
|
||||
},
|
||||
set(target, prop, val) {
|
||||
if (prop === "value") {
|
||||
deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
|
||||
}
|
||||
return Reflect.set(target, prop, val);
|
||||
}
|
||||
});
|
||||
return {
|
||||
install,
|
||||
change,
|
||||
cycle,
|
||||
toggle,
|
||||
isDisabled: parsedOptions.isDisabled,
|
||||
isSystem,
|
||||
name,
|
||||
themes,
|
||||
current,
|
||||
computedThemes,
|
||||
prefix: parsedOptions.prefix,
|
||||
themeClasses,
|
||||
styles,
|
||||
global: {
|
||||
name: globalName,
|
||||
current
|
||||
}
|
||||
};
|
||||
}
|
||||
function provideTheme(props) {
|
||||
getCurrentInstance("provideTheme");
|
||||
const theme = inject(ThemeSymbol, null);
|
||||
if (!theme) throw new Error("Could not find Vuetify theme injection");
|
||||
const name = toRef(() => props.theme ?? theme.name.value);
|
||||
const current = toRef(() => theme.themes.value[name.value]);
|
||||
const themeClasses = toRef(() => theme.isDisabled ? void 0 : `${theme.prefix}theme--${name.value}`);
|
||||
const newTheme = {
|
||||
...theme,
|
||||
name,
|
||||
current,
|
||||
themeClasses
|
||||
};
|
||||
provide(ThemeSymbol, newTheme);
|
||||
return newTheme;
|
||||
}
|
||||
function useTheme() {
|
||||
getCurrentInstance("useTheme");
|
||||
const theme = inject(ThemeSymbol, null);
|
||||
if (!theme) throw new Error("Could not find Vuetify theme injection");
|
||||
return theme;
|
||||
}
|
||||
|
||||
export {
|
||||
ThemeSymbol,
|
||||
makeThemeProps,
|
||||
createTheme,
|
||||
provideTheme,
|
||||
useTheme
|
||||
};
|
||||
//# sourceMappingURL=chunk-3DSR7NCB.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+3189
File diff suppressed because it is too large
Load Diff
+7
File diff suppressed because one or more lines are too long
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
+562
@@ -0,0 +1,562 @@
|
||||
import {
|
||||
useForm
|
||||
} from "./chunk-GAYXO4FM.js";
|
||||
import {
|
||||
VSlideYTransition
|
||||
} from "./chunk-B4JFJDWM.js";
|
||||
import {
|
||||
makeDensityProps,
|
||||
useDensity
|
||||
} from "./chunk-TM3MIDYC.js";
|
||||
import {
|
||||
VIcon
|
||||
} from "./chunk-CMZ4UYUX.js";
|
||||
import {
|
||||
MaybeTransition,
|
||||
makeTransitionProps
|
||||
} from "./chunk-CAGZXMOS.js";
|
||||
import {
|
||||
makeDimensionProps,
|
||||
useDimension
|
||||
} from "./chunk-6EZKHCRW.js";
|
||||
import {
|
||||
IconValue
|
||||
} from "./chunk-OJDZBU5D.js";
|
||||
import {
|
||||
useLocale,
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useProxiedModel,
|
||||
useToggleScope
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
EventProp,
|
||||
callEvent,
|
||||
genericComponent,
|
||||
getCurrentInstance,
|
||||
getCurrentInstanceName,
|
||||
makeComponentProps,
|
||||
pick,
|
||||
propsFactory,
|
||||
useRender,
|
||||
wrapInArray
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
inject,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onMounted,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
unref,
|
||||
useId,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VLabel/VLabel.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VLabel/VLabel.css";
|
||||
var makeVLabelProps = propsFactory({
|
||||
text: String,
|
||||
onClick: EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeThemeProps()
|
||||
}, "VLabel");
|
||||
var VLabel = genericComponent()({
|
||||
name: "VLabel",
|
||||
props: makeVLabelProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => createBaseVNode("label", {
|
||||
"class": normalizeClass(["v-label", {
|
||||
"v-label--clickable": !!props.onClick
|
||||
}, props.class]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"onClick": props.onClick
|
||||
}, [props.text, slots.default?.()]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VMessages/VMessages.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VMessages/VMessages.css";
|
||||
var makeVMessagesProps = propsFactory({
|
||||
active: Boolean,
|
||||
color: String,
|
||||
messages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeTransitionProps({
|
||||
transition: {
|
||||
component: VSlideYTransition,
|
||||
leaveAbsolute: true,
|
||||
group: true
|
||||
}
|
||||
})
|
||||
}, "VMessages");
|
||||
var VMessages = genericComponent()({
|
||||
name: "VMessages",
|
||||
props: makeVMessagesProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const messages = computed(() => wrapInArray(props.messages));
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(() => props.color);
|
||||
useRender(() => createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"tag": "div",
|
||||
"class": normalizeClass(["v-messages", textColorClasses.value, props.class]),
|
||||
"style": normalizeStyle([textColorStyles.value, props.style])
|
||||
}, {
|
||||
default: () => [props.active && messages.value.map((message, i) => createBaseVNode("div", {
|
||||
"class": "v-messages__message",
|
||||
"key": `${i}-${messages.value}`
|
||||
}, [slots.message ? slots.message({
|
||||
message
|
||||
}) : message]))]
|
||||
}));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VInput/VInput.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VInput/VInput.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VInput/InputIcon.js
|
||||
function useInputIcon(props) {
|
||||
const {
|
||||
t
|
||||
} = useLocale();
|
||||
function InputIcon(_ref) {
|
||||
let {
|
||||
name,
|
||||
color,
|
||||
...attrs
|
||||
} = _ref;
|
||||
const localeKey = {
|
||||
prepend: "prependAction",
|
||||
prependInner: "prependAction",
|
||||
append: "appendAction",
|
||||
appendInner: "appendAction",
|
||||
clear: "clear"
|
||||
}[name];
|
||||
const listener = props[`onClick:${name}`];
|
||||
function onKeydown(e) {
|
||||
if (e.key !== "Enter" && e.key !== " ") return;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
callEvent(listener, new PointerEvent("click", e));
|
||||
}
|
||||
const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? "") : void 0;
|
||||
return createVNode(VIcon, mergeProps({
|
||||
"icon": props[`${name}Icon`],
|
||||
"aria-label": label,
|
||||
"onClick": listener,
|
||||
"onKeydown": onKeydown,
|
||||
"color": color
|
||||
}, attrs), null);
|
||||
}
|
||||
return {
|
||||
InputIcon
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/focus.js
|
||||
var makeFocusProps = propsFactory({
|
||||
focused: Boolean,
|
||||
"onUpdate:focused": EventProp()
|
||||
}, "focus");
|
||||
function useFocus(props) {
|
||||
let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getCurrentInstanceName();
|
||||
const isFocused = useProxiedModel(props, "focused");
|
||||
const focusClasses = toRef(() => {
|
||||
return {
|
||||
[`${name}--focused`]: isFocused.value
|
||||
};
|
||||
});
|
||||
function focus() {
|
||||
isFocused.value = true;
|
||||
}
|
||||
function blur() {
|
||||
isFocused.value = false;
|
||||
}
|
||||
return {
|
||||
focusClasses,
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/labs/rules/rules.js
|
||||
var RulesSymbol = /* @__PURE__ */ Symbol.for("vuetify:rules");
|
||||
function useRules(fn) {
|
||||
const rules = inject(RulesSymbol, null);
|
||||
if (!fn) {
|
||||
if (!rules) {
|
||||
throw new Error("Could not find Vuetify rules injection");
|
||||
}
|
||||
return rules.aliases;
|
||||
}
|
||||
return rules?.resolve(fn) ?? toRef(fn);
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/validation.js
|
||||
var makeValidationProps = propsFactory({
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
error: Boolean,
|
||||
errorMessages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
maxErrors: {
|
||||
type: [Number, String],
|
||||
default: 1
|
||||
},
|
||||
name: String,
|
||||
label: String,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
rules: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
modelValue: null,
|
||||
validateOn: String,
|
||||
validationValue: null,
|
||||
...makeFocusProps()
|
||||
}, "validation");
|
||||
function useValidation(props) {
|
||||
let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getCurrentInstanceName();
|
||||
let id = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : useId();
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
const validationModel = computed(() => props.validationValue === void 0 ? model.value : props.validationValue);
|
||||
const form = useForm(props);
|
||||
const rules = useRules(() => props.rules);
|
||||
const internalErrorMessages = ref([]);
|
||||
const isPristine = shallowRef(true);
|
||||
const isDirty = computed(() => !!(wrapInArray(model.value === "" ? null : model.value).length || wrapInArray(validationModel.value === "" ? null : validationModel.value).length));
|
||||
const errorMessages = computed(() => {
|
||||
return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors))) : internalErrorMessages.value;
|
||||
});
|
||||
const validateOn = computed(() => {
|
||||
let value = (props.validateOn ?? form.validateOn?.value) || "input";
|
||||
if (value === "lazy") value = "input lazy";
|
||||
if (value === "eager") value = "input eager";
|
||||
const set = new Set(value?.split(" ") ?? []);
|
||||
return {
|
||||
input: set.has("input"),
|
||||
blur: set.has("blur") || set.has("input") || set.has("invalid-input"),
|
||||
invalidInput: set.has("invalid-input"),
|
||||
lazy: set.has("lazy"),
|
||||
eager: set.has("eager")
|
||||
};
|
||||
});
|
||||
const isValid = computed(() => {
|
||||
if (props.error || props.errorMessages?.length) return false;
|
||||
if (!props.rules.length) return true;
|
||||
if (isPristine.value) {
|
||||
return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
|
||||
} else {
|
||||
return !internalErrorMessages.value.length;
|
||||
}
|
||||
});
|
||||
const isValidating = shallowRef(false);
|
||||
const validationClasses = computed(() => {
|
||||
return {
|
||||
[`${name}--error`]: isValid.value === false,
|
||||
[`${name}--dirty`]: isDirty.value,
|
||||
[`${name}--disabled`]: form.isDisabled.value,
|
||||
[`${name}--readonly`]: form.isReadonly.value
|
||||
};
|
||||
});
|
||||
const vm = getCurrentInstance("validation");
|
||||
const uid = computed(() => props.name ?? unref(id));
|
||||
onBeforeMount(() => {
|
||||
form.register?.({
|
||||
id: uid.value,
|
||||
vm,
|
||||
validate,
|
||||
reset,
|
||||
resetValidation
|
||||
});
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
form.unregister?.(uid.value);
|
||||
});
|
||||
onMounted(async () => {
|
||||
if (!validateOn.value.lazy) {
|
||||
await validate(!validateOn.value.eager);
|
||||
}
|
||||
form.update?.(uid.value, isValid.value, errorMessages.value);
|
||||
});
|
||||
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
||||
watch(validationModel, () => {
|
||||
if (validationModel.value != null) {
|
||||
validate();
|
||||
} else if (props.focused) {
|
||||
const unwatch = watch(() => props.focused, (val) => {
|
||||
if (!val) validate();
|
||||
unwatch();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
useToggleScope(() => validateOn.value.blur, () => {
|
||||
watch(() => props.focused, (val) => {
|
||||
if (!val) validate();
|
||||
});
|
||||
});
|
||||
watch([isValid, errorMessages], () => {
|
||||
form.update?.(uid.value, isValid.value, errorMessages.value);
|
||||
});
|
||||
async function reset() {
|
||||
model.value = null;
|
||||
await nextTick();
|
||||
await resetValidation();
|
||||
}
|
||||
async function resetValidation() {
|
||||
isPristine.value = true;
|
||||
if (!validateOn.value.lazy) {
|
||||
await validate(!validateOn.value.eager);
|
||||
} else {
|
||||
internalErrorMessages.value = [];
|
||||
}
|
||||
}
|
||||
async function validate() {
|
||||
let silent = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
|
||||
const results = [];
|
||||
isValidating.value = true;
|
||||
for (const rule of rules.value) {
|
||||
if (results.length >= Number(props.maxErrors ?? 1)) {
|
||||
break;
|
||||
}
|
||||
const handler = typeof rule === "function" ? rule : () => rule;
|
||||
const result = await handler(validationModel.value);
|
||||
if (result === true) continue;
|
||||
if (result !== false && typeof result !== "string") {
|
||||
console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);
|
||||
continue;
|
||||
}
|
||||
results.push(result || "");
|
||||
}
|
||||
internalErrorMessages.value = results;
|
||||
isValidating.value = false;
|
||||
isPristine.value = silent;
|
||||
return internalErrorMessages.value;
|
||||
}
|
||||
return {
|
||||
errorMessages,
|
||||
isDirty,
|
||||
isDisabled: form.isDisabled,
|
||||
isReadonly: form.isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
validationClasses
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/VInput/VInput.js
|
||||
var makeVInputProps = propsFactory({
|
||||
id: String,
|
||||
appendIcon: IconValue,
|
||||
baseColor: String,
|
||||
centerAffix: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
color: String,
|
||||
glow: Boolean,
|
||||
iconColor: [Boolean, String],
|
||||
prependIcon: IconValue,
|
||||
hideDetails: [Boolean, String],
|
||||
hideSpinButtons: Boolean,
|
||||
hint: String,
|
||||
persistentHint: Boolean,
|
||||
messages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal",
|
||||
validator: (v) => ["horizontal", "vertical"].includes(v)
|
||||
},
|
||||
"onClick:prepend": EventProp(),
|
||||
"onClick:append": EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...pick(makeDimensionProps(), ["maxWidth", "minWidth", "width"]),
|
||||
...makeThemeProps(),
|
||||
...makeValidationProps()
|
||||
}, "VInput");
|
||||
var VInput = genericComponent()({
|
||||
name: "VInput",
|
||||
props: {
|
||||
...makeVInputProps()
|
||||
},
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots,
|
||||
emit
|
||||
} = _ref;
|
||||
const {
|
||||
densityClasses
|
||||
} = useDensity(props);
|
||||
const {
|
||||
dimensionStyles
|
||||
} = useDimension(props);
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
const {
|
||||
InputIcon
|
||||
} = useInputIcon(props);
|
||||
const uid = useId();
|
||||
const id = computed(() => props.id || `input-${uid}`);
|
||||
const {
|
||||
errorMessages,
|
||||
isDirty,
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
validationClasses
|
||||
} = useValidation(props, "v-input", id);
|
||||
const messages = computed(() => {
|
||||
if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) {
|
||||
return errorMessages.value;
|
||||
} else if (props.hint && (props.persistentHint || props.focused)) {
|
||||
return props.hint;
|
||||
} else {
|
||||
return props.messages;
|
||||
}
|
||||
});
|
||||
const hasMessages = toRef(() => messages.value.length > 0);
|
||||
const hasDetails = toRef(() => !props.hideDetails || props.hideDetails === "auto" && (hasMessages.value || !!slots.details));
|
||||
const messagesId = computed(() => hasDetails.value ? `${id.value}-messages` : void 0);
|
||||
const slotProps = computed(() => ({
|
||||
id,
|
||||
messagesId,
|
||||
isDirty,
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
hasDetails,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate
|
||||
}));
|
||||
const color = toRef(() => {
|
||||
return props.error || props.disabled ? void 0 : props.focused ? props.color : props.baseColor;
|
||||
});
|
||||
const iconColor = toRef(() => {
|
||||
if (!props.iconColor) return void 0;
|
||||
return props.iconColor === true ? color.value : props.iconColor;
|
||||
});
|
||||
useRender(() => {
|
||||
const hasPrepend = !!(slots.prepend || props.prependIcon);
|
||||
const hasAppend = !!(slots.append || props.appendIcon);
|
||||
return createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-input", `v-input--${props.direction}`, {
|
||||
"v-input--center-affix": props.centerAffix,
|
||||
"v-input--focused": props.focused,
|
||||
"v-input--glow": props.glow,
|
||||
"v-input--hide-spin-buttons": props.hideSpinButtons
|
||||
}, densityClasses.value, themeClasses.value, rtlClasses.value, validationClasses.value, props.class]),
|
||||
"style": normalizeStyle([dimensionStyles.value, props.style])
|
||||
}, [hasPrepend && createBaseVNode("div", {
|
||||
"key": "prepend",
|
||||
"class": "v-input__prepend"
|
||||
}, [slots.prepend ? slots.prepend(slotProps.value) : props.prependIcon && createVNode(InputIcon, {
|
||||
"key": "prepend-icon",
|
||||
"name": "prepend",
|
||||
"color": iconColor.value
|
||||
}, null)]), slots.default && createBaseVNode("div", {
|
||||
"class": "v-input__control"
|
||||
}, [slots.default?.(slotProps.value)]), hasAppend && createBaseVNode("div", {
|
||||
"key": "append",
|
||||
"class": "v-input__append"
|
||||
}, [slots.append ? slots.append(slotProps.value) : props.appendIcon && createVNode(InputIcon, {
|
||||
"key": "append-icon",
|
||||
"name": "append",
|
||||
"color": iconColor.value
|
||||
}, null)]), hasDetails.value && createBaseVNode("div", {
|
||||
"id": messagesId.value,
|
||||
"class": "v-input__details",
|
||||
"role": "alert",
|
||||
"aria-live": "polite"
|
||||
}, [createVNode(VMessages, {
|
||||
"active": hasMessages.value,
|
||||
"messages": messages.value
|
||||
}, {
|
||||
message: slots.message
|
||||
}), slots.details?.(slotProps.value)])]);
|
||||
});
|
||||
return {
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
isValid,
|
||||
errorMessages
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VLabel,
|
||||
useInputIcon,
|
||||
makeFocusProps,
|
||||
useFocus,
|
||||
VMessages,
|
||||
makeValidationProps,
|
||||
useValidation,
|
||||
makeVInputProps,
|
||||
VInput
|
||||
};
|
||||
//# sourceMappingURL=chunk-4VABFUPG.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+118
@@ -0,0 +1,118 @@
|
||||
import {
|
||||
IN_BROWSER,
|
||||
deepEqual,
|
||||
getCurrentInstance,
|
||||
hasEvent,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
nextTick,
|
||||
onScopeDispose,
|
||||
reactive,
|
||||
resolveDynamicComponent,
|
||||
toRef
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/router.js
|
||||
function useRoute() {
|
||||
const vm = getCurrentInstance("useRoute");
|
||||
return computed(() => vm?.proxy?.$route);
|
||||
}
|
||||
function useRouter() {
|
||||
return getCurrentInstance("useRouter")?.proxy?.$router;
|
||||
}
|
||||
function useLink(props, attrs) {
|
||||
const RouterLink = resolveDynamicComponent("RouterLink");
|
||||
const isLink = toRef(() => !!(props.href || props.to));
|
||||
const isClickable = computed(() => {
|
||||
return isLink?.value || hasEvent(attrs, "click") || hasEvent(props, "click");
|
||||
});
|
||||
if (typeof RouterLink === "string" || !("useLink" in RouterLink)) {
|
||||
const href2 = toRef(() => props.href);
|
||||
return {
|
||||
isLink,
|
||||
isRouterLink: toRef(() => false),
|
||||
isClickable,
|
||||
href: href2,
|
||||
linkProps: reactive({
|
||||
href: href2
|
||||
})
|
||||
};
|
||||
}
|
||||
const routerLink = RouterLink.useLink({
|
||||
to: toRef(() => props.to || ""),
|
||||
replace: toRef(() => props.replace)
|
||||
});
|
||||
const link = computed(() => props.to ? routerLink : void 0);
|
||||
const route = useRoute();
|
||||
const isActive = computed(() => {
|
||||
if (!link.value) return false;
|
||||
if (!props.exact) return link.value.isActive?.value ?? false;
|
||||
if (!route.value) return link.value.isExactActive?.value ?? false;
|
||||
return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
|
||||
});
|
||||
const href = computed(() => props.to ? link.value?.route.value.href : props.href);
|
||||
const isRouterLink = toRef(() => !!props.to);
|
||||
return {
|
||||
isLink,
|
||||
isRouterLink,
|
||||
isClickable,
|
||||
isActive,
|
||||
route: link.value?.route,
|
||||
navigate: link.value?.navigate,
|
||||
href,
|
||||
linkProps: reactive({
|
||||
href,
|
||||
"aria-current": toRef(() => isActive.value ? "page" : void 0),
|
||||
"aria-disabled": toRef(() => props.disabled && isLink.value ? "true" : void 0),
|
||||
tabindex: toRef(() => props.disabled && isLink.value ? "-1" : void 0)
|
||||
})
|
||||
};
|
||||
}
|
||||
var makeRouterProps = propsFactory({
|
||||
href: String,
|
||||
replace: Boolean,
|
||||
to: [String, Object],
|
||||
exact: Boolean
|
||||
}, "router");
|
||||
var inTransition = false;
|
||||
function useBackButton(router, cb) {
|
||||
let popped = false;
|
||||
let removeBefore;
|
||||
let removeAfter;
|
||||
if (IN_BROWSER && router?.beforeEach) {
|
||||
nextTick(() => {
|
||||
window.addEventListener("popstate", onPopstate);
|
||||
removeBefore = router.beforeEach((to, from, next) => {
|
||||
if (!inTransition) {
|
||||
setTimeout(() => popped ? cb(next) : next());
|
||||
} else {
|
||||
popped ? cb(next) : next();
|
||||
}
|
||||
inTransition = true;
|
||||
});
|
||||
removeAfter = router?.afterEach(() => {
|
||||
inTransition = false;
|
||||
});
|
||||
});
|
||||
onScopeDispose(() => {
|
||||
window.removeEventListener("popstate", onPopstate);
|
||||
removeBefore?.();
|
||||
removeAfter?.();
|
||||
});
|
||||
}
|
||||
function onPopstate(e) {
|
||||
if (e.state?.replaced) return;
|
||||
popped = true;
|
||||
setTimeout(() => popped = false);
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
useRouter,
|
||||
useLink,
|
||||
makeRouterProps,
|
||||
useBackButton
|
||||
};
|
||||
//# sourceMappingURL=chunk-573D4TYC.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/router.tsx"],
|
||||
"sourcesContent": ["// Utilities\nimport {\n computed,\n nextTick,\n onScopeDispose, reactive,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref<RouteLocationNormalizedLoaded | undefined> {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n disabled: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit<Partial<ReturnType<typeof _useLink>>, 'href'> {\n isLink: Readonly<Ref<boolean>>\n isRouterLink: Readonly<Ref<boolean>>\n isClickable: Readonly<Ref<boolean>>\n href: Ref<string | undefined>\n linkProps: Record<string, string | undefined>\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = toRef(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {\n const href = toRef(() => props.href)\n return {\n isLink,\n isRouterLink: toRef(() => false),\n isClickable,\n href,\n linkProps: reactive({ href }),\n }\n }\n\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const routerLink = RouterLink.useLink({\n to: toRef(() => props.to || ''),\n replace: toRef(() => props.replace),\n })\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined)\n const route = useRoute()\n const isActive = computed(() => {\n if (!link.value) return false\n if (!props.exact) return link.value.isActive?.value ?? false\n if (!route.value) return link.value.isExactActive?.value ?? false\n\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query)\n })\n const href = computed(() => props.to ? link.value?.route.value.href : props.href)\n const isRouterLink = toRef(() => !!props.to)\n\n return {\n isLink,\n isRouterLink,\n isClickable,\n isActive,\n route: link.value?.route,\n navigate: link.value?.navigate,\n href,\n linkProps: reactive({\n href,\n 'aria-current': toRef(() => isActive.value ? 'page' : undefined),\n 'aria-disabled': toRef(() => props.disabled && isLink.value ? 'true' : undefined),\n tabindex: toRef(() => props.disabled && isLink.value ? '-1' : undefined),\n }),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER && router?.beforeEach) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;AAsBO,SAASA,WAA4D;AAC1E,QAAMC,KAAKC,mBAAmB,UAAU;AAExC,SAAOC,SAAS,MAAMF,IAAIG,OAAOC,MAAM;AACzC;AAEO,SAASC,YAAiC;AAC/C,SAAOJ,mBAAmB,WAAW,GAAGE,OAAOG;AACjD;AAuBO,SAASC,QAASC,OAAkCC,OAAuC;AAChG,QAAMC,aAAaC,wBAAwB,YAAY;AAEvD,QAAMC,SAASC,MAAM,MAAM,CAAC,EAAEL,MAAMM,QAAQN,MAAMO,GAAG;AACrD,QAAMC,cAAcd,SAAS,MAAM;AACjC,WAAOU,QAAQK,SAASC,SAAST,OAAO,OAAO,KAAKS,SAASV,OAAO,OAAO;EAC7E,CAAC;AAED,MAAI,OAAOE,eAAe,YAAY,EAAE,aAAaA,aAAa;AAChE,UAAMI,QAAOD,MAAM,MAAML,MAAMM,IAAI;AACnC,WAAO;MACLF;MACAO,cAAcN,MAAM,MAAM,KAAK;MAC/BG;MACAF,MAAAA;MACAM,WAAWC,SAAS;QAAEP,MAAAA;MAAK,CAAC;IAC9B;EACF;AAGA,QAAMQ,aAAaZ,WAAWH,QAAQ;IACpCQ,IAAIF,MAAM,MAAML,MAAMO,MAAM,EAAE;IAC9BQ,SAASV,MAAM,MAAML,MAAMe,OAAO;EACpC,CAAC;AAED,QAAMC,OAAOtB,SAAS,MAAMM,MAAMO,KAAKO,aAAaG,MAAS;AAC7D,QAAMC,QAAQ3B,SAAS;AACvB,QAAM4B,WAAWzB,SAAS,MAAM;AAC9B,QAAI,CAACsB,KAAKP,MAAO,QAAO;AACxB,QAAI,CAACT,MAAMoB,MAAO,QAAOJ,KAAKP,MAAMU,UAAUV,SAAS;AACvD,QAAI,CAACS,MAAMT,MAAO,QAAOO,KAAKP,MAAMY,eAAeZ,SAAS;AAE5D,WAAOO,KAAKP,MAAMY,eAAeZ,SAASa,UAAUN,KAAKP,MAAMS,MAAMT,MAAMc,OAAOL,MAAMT,MAAMc,KAAK;EACrG,CAAC;AACD,QAAMjB,OAAOZ,SAAS,MAAMM,MAAMO,KAAKS,KAAKP,OAAOS,MAAMT,MAAMH,OAAON,MAAMM,IAAI;AAChF,QAAMK,eAAeN,MAAM,MAAM,CAAC,CAACL,MAAMO,EAAE;AAE3C,SAAO;IACLH;IACAO;IACAH;IACAW;IACAD,OAAOF,KAAKP,OAAOS;IACnBM,UAAUR,KAAKP,OAAOe;IACtBlB;IACAM,WAAWC,SAAS;MAClBP;MACA,gBAAgBD,MAAM,MAAMc,SAASV,QAAQ,SAASQ,MAAS;MAC/D,iBAAiBZ,MAAM,MAAML,MAAMyB,YAAYrB,OAAOK,QAAQ,SAASQ,MAAS;MAChFS,UAAUrB,MAAM,MAAML,MAAMyB,YAAYrB,OAAOK,QAAQ,OAAOQ,MAAS;IACzE,CAAC;EACH;AACF;AAEO,IAAMU,kBAAkBC,aAAa;EAC1CtB,MAAMuB;EACNd,SAASe;EACTvB,IAAI,CAACsB,QAAQE,MAAM;EACnBX,OAAOU;AACT,GAAG,QAAQ;AAEX,IAAIE,eAAe;AACZ,SAASC,cAAeC,QAA4BC,IAAyC;AAClG,MAAIC,SAAS;AACb,MAAIC;AACJ,MAAIC;AAEJ,MAAIC,cAAcL,QAAQM,YAAY;AACpCC,aAAS,MAAM;AACbC,aAAOC,iBAAiB,YAAYC,UAAU;AAC9CP,qBAAeH,OAAOM,WAAW,CAACjC,IAAIsC,MAAMC,SAAS;AACnD,YAAI,CAACd,cAAc;AACjBe,qBAAW,MAAMX,SAASD,GAAGW,IAAI,IAAIA,KAAK,CAAC;QAC7C,OAAO;AACLV,mBAASD,GAAGW,IAAI,IAAIA,KAAK;QAC3B;AACAd,uBAAe;MACjB,CAAC;AACDM,oBAAcJ,QAAQc,UAAU,MAAM;AACpChB,uBAAe;MACjB,CAAC;IACH,CAAC;AACDiB,mBAAe,MAAM;AACnBP,aAAOQ,oBAAoB,YAAYN,UAAU;AACjDP,qBAAe;AACfC,oBAAc;IAChB,CAAC;EACH;AAEA,WAASM,WAAYO,GAAkB;AACrC,QAAIA,EAAEC,OAAOC,SAAU;AAEvBjB,aAAS;AACTW,eAAW,MAAOX,SAAS,KAAM;EACnC;AACF;",
|
||||
"names": ["useRoute", "vm", "getCurrentInstance", "computed", "proxy", "$route", "useRouter", "$router", "useLink", "props", "attrs", "RouterLink", "resolveDynamicComponent", "isLink", "toRef", "href", "to", "isClickable", "value", "hasEvent", "isRouterLink", "linkProps", "reactive", "routerLink", "replace", "link", "undefined", "route", "isActive", "exact", "isExactActive", "deepEqual", "query", "navigate", "disabled", "tabindex", "makeRouterProps", "propsFactory", "String", "Boolean", "Object", "inTransition", "useBackButton", "router", "cb", "popped", "removeBefore", "removeAfter", "IN_BROWSER", "beforeEach", "nextTick", "window", "addEventListener", "onPopstate", "from", "next", "setTimeout", "afterEach", "onScopeDispose", "removeEventListener", "e", "state", "replaced"]
|
||||
}
|
||||
+290
@@ -0,0 +1,290 @@
|
||||
import {
|
||||
isObject
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
|
||||
// node_modules/vuetify/lib/directives/ripple/index.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/directives/ripple/VRipple.css";
|
||||
var stopSymbol = /* @__PURE__ */ Symbol("rippleStop");
|
||||
var DELAY_RIPPLE = 80;
|
||||
function transform(el, value) {
|
||||
el.style.transform = value;
|
||||
el.style.webkitTransform = value;
|
||||
}
|
||||
function isTouchEvent(e) {
|
||||
return e.constructor.name === "TouchEvent";
|
||||
}
|
||||
function isKeyboardEvent(e) {
|
||||
return e.constructor.name === "KeyboardEvent";
|
||||
}
|
||||
var calculate = function(e, el) {
|
||||
let value = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
||||
let localX = 0;
|
||||
let localY = 0;
|
||||
if (!isKeyboardEvent(e)) {
|
||||
const offset = el.getBoundingClientRect();
|
||||
const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;
|
||||
localX = target.clientX - offset.left;
|
||||
localY = target.clientY - offset.top;
|
||||
}
|
||||
let radius = 0;
|
||||
let scale = 0.3;
|
||||
if (el._ripple?.circle) {
|
||||
scale = 0.15;
|
||||
radius = el.clientWidth / 2;
|
||||
radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4;
|
||||
} else {
|
||||
radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2;
|
||||
}
|
||||
const centerX = `${(el.clientWidth - radius * 2) / 2}px`;
|
||||
const centerY = `${(el.clientHeight - radius * 2) / 2}px`;
|
||||
const x = value.center ? centerX : `${localX - radius}px`;
|
||||
const y = value.center ? centerY : `${localY - radius}px`;
|
||||
return {
|
||||
radius,
|
||||
scale,
|
||||
x,
|
||||
y,
|
||||
centerX,
|
||||
centerY
|
||||
};
|
||||
};
|
||||
var ripples = {
|
||||
/* eslint-disable max-statements */
|
||||
show(e, el) {
|
||||
let value = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
||||
if (!el?._ripple?.enabled) {
|
||||
return;
|
||||
}
|
||||
const container = document.createElement("span");
|
||||
const animation = document.createElement("span");
|
||||
container.appendChild(animation);
|
||||
container.className = "v-ripple__container";
|
||||
if (value.class) {
|
||||
container.className += ` ${value.class}`;
|
||||
}
|
||||
const {
|
||||
radius,
|
||||
scale,
|
||||
x,
|
||||
y,
|
||||
centerX,
|
||||
centerY
|
||||
} = calculate(e, el, value);
|
||||
const size = `${radius * 2}px`;
|
||||
animation.className = "v-ripple__animation";
|
||||
animation.style.width = size;
|
||||
animation.style.height = size;
|
||||
el.appendChild(container);
|
||||
const computed = window.getComputedStyle(el);
|
||||
if (computed && computed.position === "static") {
|
||||
el.style.position = "relative";
|
||||
el.dataset.previousPosition = "static";
|
||||
}
|
||||
animation.classList.add("v-ripple__animation--enter");
|
||||
animation.classList.add("v-ripple__animation--visible");
|
||||
transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
|
||||
animation.dataset.activated = String(performance.now());
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
animation.classList.remove("v-ripple__animation--enter");
|
||||
animation.classList.add("v-ripple__animation--in");
|
||||
transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
|
||||
});
|
||||
});
|
||||
},
|
||||
hide(el) {
|
||||
if (!el?._ripple?.enabled) return;
|
||||
const ripples2 = el.getElementsByClassName("v-ripple__animation");
|
||||
if (ripples2.length === 0) return;
|
||||
const animation = Array.from(ripples2).findLast((ripple) => !ripple.dataset.isHiding);
|
||||
if (!animation) return;
|
||||
else animation.dataset.isHiding = "true";
|
||||
const diff = performance.now() - Number(animation.dataset.activated);
|
||||
const delay = Math.max(250 - diff, 0);
|
||||
setTimeout(() => {
|
||||
animation.classList.remove("v-ripple__animation--in");
|
||||
animation.classList.add("v-ripple__animation--out");
|
||||
setTimeout(() => {
|
||||
const ripples3 = el.getElementsByClassName("v-ripple__animation");
|
||||
if (ripples3.length === 1 && el.dataset.previousPosition) {
|
||||
el.style.position = el.dataset.previousPosition;
|
||||
delete el.dataset.previousPosition;
|
||||
}
|
||||
if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode);
|
||||
}, 300);
|
||||
}, delay);
|
||||
}
|
||||
};
|
||||
function isRippleEnabled(value) {
|
||||
return typeof value === "undefined" || !!value;
|
||||
}
|
||||
function rippleShow(e) {
|
||||
const value = {};
|
||||
const element = e.currentTarget;
|
||||
if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return;
|
||||
e[stopSymbol] = true;
|
||||
if (isTouchEvent(e)) {
|
||||
element._ripple.touched = true;
|
||||
element._ripple.isTouch = true;
|
||||
} else {
|
||||
if (element._ripple.isTouch) return;
|
||||
}
|
||||
value.center = element._ripple.centered || isKeyboardEvent(e);
|
||||
if (element._ripple.class) {
|
||||
value.class = element._ripple.class;
|
||||
}
|
||||
if (isTouchEvent(e)) {
|
||||
if (element._ripple.showTimerCommit) return;
|
||||
element._ripple.showTimerCommit = () => {
|
||||
ripples.show(e, element, value);
|
||||
};
|
||||
element._ripple.showTimer = window.setTimeout(() => {
|
||||
if (element?._ripple?.showTimerCommit) {
|
||||
element._ripple.showTimerCommit();
|
||||
element._ripple.showTimerCommit = null;
|
||||
}
|
||||
}, DELAY_RIPPLE);
|
||||
} else {
|
||||
ripples.show(e, element, value);
|
||||
}
|
||||
}
|
||||
function rippleStop(e) {
|
||||
e[stopSymbol] = true;
|
||||
}
|
||||
function rippleHide(e) {
|
||||
const element = e.currentTarget;
|
||||
if (!element?._ripple) return;
|
||||
window.clearTimeout(element._ripple.showTimer);
|
||||
if (e.type === "touchend" && element._ripple.showTimerCommit) {
|
||||
element._ripple.showTimerCommit();
|
||||
element._ripple.showTimerCommit = null;
|
||||
element._ripple.showTimer = window.setTimeout(() => {
|
||||
rippleHide(e);
|
||||
});
|
||||
return;
|
||||
}
|
||||
window.setTimeout(() => {
|
||||
if (element._ripple) {
|
||||
element._ripple.touched = false;
|
||||
}
|
||||
});
|
||||
ripples.hide(element);
|
||||
}
|
||||
function rippleCancelShow(e) {
|
||||
const element = e.currentTarget;
|
||||
if (!element?._ripple) return;
|
||||
if (element._ripple.showTimerCommit) {
|
||||
element._ripple.showTimerCommit = null;
|
||||
}
|
||||
window.clearTimeout(element._ripple.showTimer);
|
||||
}
|
||||
var keyboardRipple = false;
|
||||
function keyboardRippleShow(e, keys) {
|
||||
if (!keyboardRipple && keys.includes(e.key)) {
|
||||
keyboardRipple = true;
|
||||
rippleShow(e);
|
||||
}
|
||||
}
|
||||
function keyboardRippleHide(e) {
|
||||
keyboardRipple = false;
|
||||
rippleHide(e);
|
||||
}
|
||||
function focusRippleHide(e) {
|
||||
if (keyboardRipple) {
|
||||
keyboardRipple = false;
|
||||
rippleHide(e);
|
||||
}
|
||||
}
|
||||
function updateRipple(el, binding, wasEnabled) {
|
||||
const {
|
||||
value,
|
||||
modifiers
|
||||
} = binding;
|
||||
const enabled = isRippleEnabled(value);
|
||||
if (!enabled) {
|
||||
ripples.hide(el);
|
||||
}
|
||||
el._ripple = el._ripple ?? {};
|
||||
el._ripple.enabled = enabled;
|
||||
el._ripple.centered = modifiers.center;
|
||||
el._ripple.circle = modifiers.circle;
|
||||
const bindingValue = isObject(value) ? value : {};
|
||||
if (bindingValue.class) {
|
||||
el._ripple.class = bindingValue.class;
|
||||
}
|
||||
const allowedKeys = bindingValue.keys ?? ["Enter", "Space"];
|
||||
el._ripple.keyDownHandler = (e) => keyboardRippleShow(e, allowedKeys);
|
||||
if (enabled && !wasEnabled) {
|
||||
if (modifiers.stop) {
|
||||
el.addEventListener("touchstart", rippleStop, {
|
||||
passive: true
|
||||
});
|
||||
el.addEventListener("mousedown", rippleStop);
|
||||
return;
|
||||
}
|
||||
el.addEventListener("touchstart", rippleShow, {
|
||||
passive: true
|
||||
});
|
||||
el.addEventListener("touchend", rippleHide, {
|
||||
passive: true
|
||||
});
|
||||
el.addEventListener("touchmove", rippleCancelShow, {
|
||||
passive: true
|
||||
});
|
||||
el.addEventListener("touchcancel", rippleHide);
|
||||
el.addEventListener("mousedown", rippleShow);
|
||||
el.addEventListener("mouseup", rippleHide);
|
||||
el.addEventListener("mouseleave", rippleHide);
|
||||
el.addEventListener("keydown", el._ripple.keyDownHandler);
|
||||
el.addEventListener("keyup", keyboardRippleHide);
|
||||
el.addEventListener("blur", focusRippleHide);
|
||||
el.addEventListener("dragstart", rippleHide, {
|
||||
passive: true
|
||||
});
|
||||
} else if (!enabled && wasEnabled) {
|
||||
removeListeners(el);
|
||||
}
|
||||
}
|
||||
function removeListeners(el) {
|
||||
el.removeEventListener("touchstart", rippleStop);
|
||||
el.removeEventListener("mousedown", rippleStop);
|
||||
el.removeEventListener("touchstart", rippleShow);
|
||||
el.removeEventListener("touchend", rippleHide);
|
||||
el.removeEventListener("touchmove", rippleCancelShow);
|
||||
el.removeEventListener("touchcancel", rippleHide);
|
||||
el.removeEventListener("mousedown", rippleShow);
|
||||
el.removeEventListener("mouseup", rippleHide);
|
||||
el.removeEventListener("mouseleave", rippleHide);
|
||||
if (el._ripple?.keyDownHandler) {
|
||||
el.removeEventListener("keydown", el._ripple.keyDownHandler);
|
||||
}
|
||||
el.removeEventListener("keyup", keyboardRippleHide);
|
||||
el.removeEventListener("blur", focusRippleHide);
|
||||
el.removeEventListener("dragstart", rippleHide);
|
||||
}
|
||||
function mounted(el, binding) {
|
||||
updateRipple(el, binding, false);
|
||||
}
|
||||
function unmounted(el) {
|
||||
removeListeners(el);
|
||||
delete el._ripple;
|
||||
}
|
||||
function updated(el, binding) {
|
||||
if (binding.value === binding.oldValue) {
|
||||
return;
|
||||
}
|
||||
const wasEnabled = isRippleEnabled(binding.oldValue);
|
||||
updateRipple(el, binding, wasEnabled);
|
||||
}
|
||||
var Ripple = {
|
||||
mounted,
|
||||
unmounted,
|
||||
updated
|
||||
};
|
||||
var ripple_default = Ripple;
|
||||
|
||||
export {
|
||||
Ripple,
|
||||
ripple_default
|
||||
};
|
||||
//# sourceMappingURL=chunk-5BPWKCNA.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+78
@@ -0,0 +1,78 @@
|
||||
import {
|
||||
createForm,
|
||||
makeFormProps
|
||||
} from "./chunk-GAYXO4FM.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
createBaseVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
ref
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VForm/VForm.js
|
||||
var makeVFormProps = propsFactory({
|
||||
...makeComponentProps(),
|
||||
...makeFormProps()
|
||||
}, "VForm");
|
||||
var VForm = genericComponent()({
|
||||
name: "VForm",
|
||||
props: makeVFormProps(),
|
||||
emits: {
|
||||
"update:modelValue": (val) => true,
|
||||
submit: (e) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit
|
||||
} = _ref;
|
||||
const form = createForm(props);
|
||||
const formRef = ref();
|
||||
function onReset(e) {
|
||||
e.preventDefault();
|
||||
form.reset();
|
||||
}
|
||||
function onSubmit(_e) {
|
||||
const e = _e;
|
||||
const ready = form.validate();
|
||||
e.then = ready.then.bind(ready);
|
||||
e.catch = ready.catch.bind(ready);
|
||||
e.finally = ready.finally.bind(ready);
|
||||
emit("submit", e);
|
||||
if (!e.defaultPrevented) {
|
||||
ready.then((_ref2) => {
|
||||
let {
|
||||
valid
|
||||
} = _ref2;
|
||||
if (valid) {
|
||||
formRef.value?.submit();
|
||||
}
|
||||
});
|
||||
}
|
||||
e.preventDefault();
|
||||
}
|
||||
useRender(() => createBaseVNode("form", {
|
||||
"ref": formRef,
|
||||
"class": normalizeClass(["v-form", props.class]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"novalidate": true,
|
||||
"onReset": onReset,
|
||||
"onSubmit": onSubmit
|
||||
}, [slots.default?.(form)]));
|
||||
return forwardRefs(form, formRef);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VForm
|
||||
};
|
||||
//# sourceMappingURL=chunk-5LZQZ6A5.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/components/VForm/VForm.tsx"],
|
||||
"sourcesContent": ["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createForm, makeFormProps } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { SubmitEventPromise } from '@/composables/form'\n\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps(),\n}, 'VForm')\n\ntype VFormSlots = {\n default: ReturnType<typeof createForm>\n}\n\nexport const VForm = genericComponent<VFormSlots>()({\n name: 'VForm',\n\n props: makeVFormProps(),\n\n emits: {\n 'update:modelValue': (val: boolean | null) => true,\n submit: (e: SubmitEventPromise) => true,\n },\n\n setup (props, { slots, emit }) {\n const form = createForm(props)\n const formRef = ref<HTMLFormElement>()\n\n function onReset (e: Event) {\n e.preventDefault()\n form.reset()\n }\n\n function onSubmit (_e: Event) {\n const e = _e as SubmitEventPromise\n\n const ready = form.validate()\n e.then = ready.then.bind(ready)\n e.catch = ready.catch.bind(ready)\n e.finally = ready.finally.bind(ready)\n\n emit('submit', e)\n\n if (!e.defaultPrevented) {\n ready.then(({ valid }) => {\n if (valid) {\n formRef.value?.submit()\n }\n })\n }\n\n e.preventDefault()\n }\n\n useRender(() => ((\n <form\n ref={ formRef }\n class={[\n 'v-form',\n props.class,\n ]}\n style={ props.style }\n novalidate\n onReset={ onReset }\n onSubmit={ onSubmit }\n >\n { slots.default?.(form) }\n </form>\n )))\n\n return forwardRefs(form, formRef)\n },\n})\n\nexport type VForm = InstanceType<typeof VForm>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAYO,IAAMA,iBAAiBC,aAAa;EACzC,GAAGC,mBAAmB;EACtB,GAAGC,cAAc;AACnB,GAAG,OAAO;AAMH,IAAMC,QAAQC,iBAA6B,EAAE;EAClDC,MAAM;EAENC,OAAOP,eAAe;EAEtBQ,OAAO;IACL,qBAAsBC,SAAwB;IAC9CC,QAASC,OAA0B;EACrC;EAEAC,MAAOL,OAAKM,MAAmB;AAAA,QAAjB;MAAEC;MAAOC;IAAK,IAACF;AAC3B,UAAMG,OAAOC,WAAWV,KAAK;AAC7B,UAAMW,UAAUC,IAAqB;AAErC,aAASC,QAAST,GAAU;AAC1BA,QAAEU,eAAe;AACjBL,WAAKM,MAAM;IACb;AAEA,aAASC,SAAUC,IAAW;AAC5B,YAAMb,IAAIa;AAEV,YAAMC,QAAQT,KAAKU,SAAS;AAC5Bf,QAAEgB,OAAOF,MAAME,KAAKC,KAAKH,KAAK;AAC9Bd,QAAEkB,QAAQJ,MAAMI,MAAMD,KAAKH,KAAK;AAChCd,QAAEmB,UAAUL,MAAMK,QAAQF,KAAKH,KAAK;AAEpCV,WAAK,UAAUJ,CAAC;AAEhB,UAAI,CAACA,EAAEoB,kBAAkB;AACvBN,cAAME,KAAKK,WAAe;AAAA,cAAd;YAAEC;UAAM,IAACD;AACnB,cAAIC,OAAO;AACTf,oBAAQgB,OAAOxB,OAAO;UACxB;QACF,CAAC;MACH;AAEAC,QAAEU,eAAe;IACnB;AAEAc,cAAU,MAAAC,gBAAA,QAAA;MAAA,OAEAlB;MAAO,SAAAmB,eACN,CACL,UACA9B,MAAM+B,KAAK,CACZ;MAAA,SAAAC,eACOhC,MAAMiC,KAAK;MAAA,cAAA;MAAA,WAETpB;MAAO,YACNG;IAAQ,GAAA,CAEjBT,MAAM2B,UAAUzB,IAAI,CAAC,CAAA,CAEzB;AAEF,WAAO0B,YAAY1B,MAAME,OAAO;EAClC;AACF,CAAC;",
|
||||
"names": ["makeVFormProps", "propsFactory", "makeComponentProps", "makeFormProps", "VForm", "genericComponent", "name", "props", "emits", "val", "submit", "e", "setup", "_ref", "slots", "emit", "form", "createForm", "formRef", "ref", "onReset", "preventDefault", "reset", "onSubmit", "_e", "ready", "validate", "then", "bind", "catch", "finally", "defaultPrevented", "_ref2", "valid", "value", "useRender", "_createElementVNode", "_normalizeClass", "class", "_normalizeStyle", "style", "default", "forwardRefs"]
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
import {
|
||||
SUPPORTS_INTERSECTION
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
|
||||
// node_modules/vuetify/lib/directives/intersect/index.js
|
||||
function mounted(el, binding) {
|
||||
if (!SUPPORTS_INTERSECTION) return;
|
||||
const modifiers = binding.modifiers || {};
|
||||
const value = binding.value;
|
||||
const {
|
||||
handler,
|
||||
options
|
||||
} = typeof value === "object" ? value : {
|
||||
handler: value,
|
||||
options: {}
|
||||
};
|
||||
const observer = new IntersectionObserver(function() {
|
||||
let entries = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
|
||||
let observer2 = arguments.length > 1 ? arguments[1] : void 0;
|
||||
const _observe = el._observe?.[binding.instance.$.uid];
|
||||
if (!_observe) return;
|
||||
const isIntersecting = entries.some((entry) => entry.isIntersecting);
|
||||
if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) {
|
||||
handler(isIntersecting, entries, observer2);
|
||||
}
|
||||
if (isIntersecting && modifiers.once) unmounted(el, binding);
|
||||
else _observe.init = true;
|
||||
}, options);
|
||||
el._observe = Object(el._observe);
|
||||
el._observe[binding.instance.$.uid] = {
|
||||
init: false,
|
||||
observer
|
||||
};
|
||||
observer.observe(el);
|
||||
}
|
||||
function unmounted(el, binding) {
|
||||
const observe = el._observe?.[binding.instance.$.uid];
|
||||
if (!observe) return;
|
||||
observe.observer.unobserve(el);
|
||||
delete el._observe[binding.instance.$.uid];
|
||||
}
|
||||
var Intersect = {
|
||||
mounted,
|
||||
unmounted
|
||||
};
|
||||
var intersect_default = Intersect;
|
||||
|
||||
export {
|
||||
Intersect,
|
||||
intersect_default
|
||||
};
|
||||
//# sourceMappingURL=chunk-5ONGSJQ2.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/directives/intersect/index.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\ntype ObserveHandler = (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n) => void\n\nexport interface ObserveDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n if (!SUPPORTS_INTERSECTION) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[binding.instance!.$.uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(isIntersecting, entries, observer)\n }\n\n if (isIntersecting && modifiers.once) unmounted(el, binding)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![binding.instance!.$.uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unmounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n const observe = el._observe?.[binding.instance!.$.uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![binding.instance!.$.uid]\n}\n\nexport const Intersect = {\n mounted,\n unmounted,\n}\n\nexport default Intersect\n"],
|
||||
"mappings": ";;;;;AAsBA,SAASA,QAASC,IAAiBC,SAAkC;AACnE,MAAI,CAACC,sBAAuB;AAE5B,QAAMC,YAAYF,QAAQE,aAAa,CAAC;AACxC,QAAMC,QAAQH,QAAQG;AACtB,QAAM;IAAEC;IAASC;EAAQ,IAAI,OAAOF,UAAU,WAC1CA,QACA;IAAEC,SAASD;IAAOE,SAAS,CAAC;EAAE;AAElC,QAAMC,WAAW,IAAIC,qBAAqB,WAGrC;AAAA,QAFHC,UAAoCC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAG,CAAA;AAAE,QACzCH,YAA8BG,UAAAC,SAAA,IAAAD,UAAA,CAAA,IAAAE;AAE9B,UAAMC,WAAWb,GAAGa,WAAWZ,QAAQa,SAAUC,EAAEC,GAAG;AACtD,QAAI,CAACH,SAAU;AAEf,UAAMI,iBAAiBR,QAAQS,KAAKC,WAASA,MAAMF,cAAc;AAIjE,QACEZ,YACE,CAACF,UAAUiB,SACXP,SAASQ,UAET,CAAClB,UAAUmB,QACXL,kBACAJ,SAASQ,OAEX;AACAhB,cAAQY,gBAAgBR,SAASF,SAAQ;IAC3C;AAEA,QAAIU,kBAAkBd,UAAUmB,KAAMC,WAAUvB,IAAIC,OAAO;QACtDY,UAASQ,OAAO;EACvB,GAAGf,OAAO;AAEVN,KAAGa,WAAWW,OAAOxB,GAAGa,QAAQ;AAChCb,KAAGa,SAAUZ,QAAQa,SAAUC,EAAEC,GAAG,IAAI;IAAEK,MAAM;IAAOd;EAAS;AAEhEA,WAASkB,QAAQzB,EAAE;AACrB;AAEA,SAASuB,UAAWvB,IAAiBC,SAAkC;AACrE,QAAMwB,UAAUzB,GAAGa,WAAWZ,QAAQa,SAAUC,EAAEC,GAAG;AACrD,MAAI,CAACS,QAAS;AAEdA,UAAQlB,SAASmB,UAAU1B,EAAE;AAC7B,SAAOA,GAAGa,SAAUZ,QAAQa,SAAUC,EAAEC,GAAG;AAC7C;AAEO,IAAMW,YAAY;EACvB5B;EACAwB;AACF;AAEA,IAAA,oBAAeI;",
|
||||
"names": ["mounted", "el", "binding", "SUPPORTS_INTERSECTION", "modifiers", "value", "handler", "options", "observer", "IntersectionObserver", "entries", "arguments", "length", "undefined", "_observe", "instance", "$", "uid", "isIntersecting", "some", "entry", "quiet", "init", "once", "unmounted", "Object", "observe", "unobserve", "Intersect"]
|
||||
}
|
||||
+387
@@ -0,0 +1,387 @@
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
intersect_default
|
||||
} from "./chunk-5ONGSJQ2.js";
|
||||
import {
|
||||
MaybeTransition,
|
||||
makeTransitionProps
|
||||
} from "./chunk-CAGZXMOS.js";
|
||||
import {
|
||||
makeDimensionProps,
|
||||
useDimension
|
||||
} from "./chunk-6EZKHCRW.js";
|
||||
import {
|
||||
useBackgroundColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
SUPPORTS_INTERSECTION,
|
||||
convertToUnit,
|
||||
genericComponent,
|
||||
getCurrentInstance,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
vShow,
|
||||
watch,
|
||||
withDirectives
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VImg/VImg.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VImg/VImg.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VResponsive/VResponsive.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VResponsive/VResponsive.css";
|
||||
function useAspectStyles(props) {
|
||||
return {
|
||||
aspectStyles: computed(() => {
|
||||
const ratio = Number(props.aspectRatio);
|
||||
return ratio ? {
|
||||
paddingBottom: String(1 / ratio * 100) + "%"
|
||||
} : void 0;
|
||||
})
|
||||
};
|
||||
}
|
||||
var makeVResponsiveProps = propsFactory({
|
||||
aspectRatio: [String, Number],
|
||||
contentClass: null,
|
||||
inline: Boolean,
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps()
|
||||
}, "VResponsive");
|
||||
var VResponsive = genericComponent()({
|
||||
name: "VResponsive",
|
||||
props: makeVResponsiveProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
aspectStyles
|
||||
} = useAspectStyles(props);
|
||||
const {
|
||||
dimensionStyles
|
||||
} = useDimension(props);
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-responsive", {
|
||||
"v-responsive--inline": props.inline
|
||||
}, props.class]),
|
||||
"style": normalizeStyle([dimensionStyles.value, props.style])
|
||||
}, [createBaseVNode("div", {
|
||||
"class": "v-responsive__sizer",
|
||||
"style": normalizeStyle(aspectStyles.value)
|
||||
}, null), slots.additional?.(), slots.default && createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-responsive__content", props.contentClass])
|
||||
}, [slots.default()])]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VImg/VImg.js
|
||||
var makeVImgProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
alt: String,
|
||||
cover: Boolean,
|
||||
color: String,
|
||||
draggable: {
|
||||
type: [Boolean, String],
|
||||
default: void 0
|
||||
},
|
||||
eager: Boolean,
|
||||
gradient: String,
|
||||
lazySrc: String,
|
||||
options: {
|
||||
type: Object,
|
||||
// For more information on types, navigate to:
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
|
||||
default: () => ({
|
||||
root: void 0,
|
||||
rootMargin: void 0,
|
||||
threshold: void 0
|
||||
})
|
||||
},
|
||||
sizes: String,
|
||||
src: {
|
||||
type: [String, Object],
|
||||
default: ""
|
||||
},
|
||||
crossorigin: String,
|
||||
referrerpolicy: String,
|
||||
srcset: String,
|
||||
position: String,
|
||||
...makeVResponsiveProps(),
|
||||
...makeComponentProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTransitionProps()
|
||||
}, "VImg");
|
||||
var VImg = genericComponent()({
|
||||
name: "VImg",
|
||||
directives: {
|
||||
vIntersect: intersect_default
|
||||
},
|
||||
props: makeVImgProps(),
|
||||
emits: {
|
||||
loadstart: (value) => true,
|
||||
load: (value) => true,
|
||||
error: (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => props.color);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const vm = getCurrentInstance("VImg");
|
||||
const currentSrc = shallowRef("");
|
||||
const image = ref();
|
||||
const state = shallowRef(props.eager ? "loading" : "idle");
|
||||
const naturalWidth = shallowRef();
|
||||
const naturalHeight = shallowRef();
|
||||
const normalisedSrc = computed(() => {
|
||||
return props.src && typeof props.src === "object" ? {
|
||||
src: props.src.src,
|
||||
srcset: props.srcset || props.src.srcset,
|
||||
lazySrc: props.lazySrc || props.src.lazySrc,
|
||||
aspect: Number(props.aspectRatio || props.src.aspect || 0)
|
||||
} : {
|
||||
src: props.src,
|
||||
srcset: props.srcset,
|
||||
lazySrc: props.lazySrc,
|
||||
aspect: Number(props.aspectRatio || 0)
|
||||
};
|
||||
});
|
||||
const aspectRatio = computed(() => {
|
||||
return normalisedSrc.value.aspect || naturalWidth.value / naturalHeight.value || 0;
|
||||
});
|
||||
watch(() => props.src, () => {
|
||||
init(state.value !== "idle");
|
||||
});
|
||||
watch(aspectRatio, (val, oldVal) => {
|
||||
if (!val && oldVal && image.value) {
|
||||
pollForSize(image.value);
|
||||
}
|
||||
});
|
||||
onBeforeMount(() => init());
|
||||
function init(isIntersecting) {
|
||||
if (props.eager && isIntersecting) return;
|
||||
if (SUPPORTS_INTERSECTION && !isIntersecting && !props.eager) return;
|
||||
state.value = "loading";
|
||||
if (normalisedSrc.value.lazySrc) {
|
||||
const lazyImg = new Image();
|
||||
lazyImg.src = normalisedSrc.value.lazySrc;
|
||||
pollForSize(lazyImg, null);
|
||||
}
|
||||
if (!normalisedSrc.value.src) return;
|
||||
nextTick(() => {
|
||||
emit("loadstart", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
setTimeout(() => {
|
||||
if (vm.isUnmounted) return;
|
||||
if (image.value?.complete) {
|
||||
if (!image.value.naturalWidth) {
|
||||
onError();
|
||||
}
|
||||
if (state.value === "error") return;
|
||||
if (!aspectRatio.value) pollForSize(image.value, null);
|
||||
if (state.value === "loading") onLoad();
|
||||
} else {
|
||||
if (!aspectRatio.value) pollForSize(image.value);
|
||||
getSrc();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function onLoad() {
|
||||
if (vm.isUnmounted) return;
|
||||
getSrc();
|
||||
pollForSize(image.value);
|
||||
state.value = "loaded";
|
||||
emit("load", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
}
|
||||
function onError() {
|
||||
if (vm.isUnmounted) return;
|
||||
state.value = "error";
|
||||
emit("error", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
}
|
||||
function getSrc() {
|
||||
const img = image.value;
|
||||
if (img) currentSrc.value = img.currentSrc || img.src;
|
||||
}
|
||||
let timer = -1;
|
||||
onBeforeUnmount(() => {
|
||||
clearTimeout(timer);
|
||||
});
|
||||
function pollForSize(img) {
|
||||
let timeout = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 100;
|
||||
const poll = () => {
|
||||
clearTimeout(timer);
|
||||
if (vm.isUnmounted) return;
|
||||
const {
|
||||
naturalHeight: imgHeight,
|
||||
naturalWidth: imgWidth
|
||||
} = img;
|
||||
if (imgHeight || imgWidth) {
|
||||
naturalWidth.value = imgWidth;
|
||||
naturalHeight.value = imgHeight;
|
||||
} else if (!img.complete && state.value === "loading" && timeout != null) {
|
||||
timer = window.setTimeout(poll, timeout);
|
||||
} else if (img.currentSrc.endsWith(".svg") || img.currentSrc.startsWith("data:image/svg+xml")) {
|
||||
naturalWidth.value = 1;
|
||||
naturalHeight.value = 1;
|
||||
}
|
||||
};
|
||||
poll();
|
||||
}
|
||||
const containClasses = toRef(() => ({
|
||||
"v-img__img--cover": props.cover,
|
||||
"v-img__img--contain": !props.cover
|
||||
}));
|
||||
const __image = () => {
|
||||
if (!normalisedSrc.value.src || state.value === "idle") return null;
|
||||
const img = createBaseVNode("img", {
|
||||
"class": normalizeClass(["v-img__img", containClasses.value]),
|
||||
"style": {
|
||||
objectPosition: props.position
|
||||
},
|
||||
"crossorigin": props.crossorigin,
|
||||
"src": normalisedSrc.value.src,
|
||||
"srcset": normalisedSrc.value.srcset,
|
||||
"alt": props.alt,
|
||||
"referrerpolicy": props.referrerpolicy,
|
||||
"draggable": props.draggable,
|
||||
"sizes": props.sizes,
|
||||
"ref": image,
|
||||
"onLoad": onLoad,
|
||||
"onError": onError
|
||||
}, null);
|
||||
const sources = slots.sources?.();
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, {
|
||||
default: () => [withDirectives(sources ? createBaseVNode("picture", {
|
||||
"class": "v-img__picture"
|
||||
}, [sources, img]) : img, [[vShow, state.value === "loaded"]])]
|
||||
});
|
||||
};
|
||||
const __preloadImage = () => createVNode(MaybeTransition, {
|
||||
"transition": props.transition
|
||||
}, {
|
||||
default: () => [normalisedSrc.value.lazySrc && state.value !== "loaded" && createBaseVNode("img", {
|
||||
"class": normalizeClass(["v-img__img", "v-img__img--preload", containClasses.value]),
|
||||
"style": {
|
||||
objectPosition: props.position
|
||||
},
|
||||
"crossorigin": props.crossorigin,
|
||||
"src": normalisedSrc.value.lazySrc,
|
||||
"alt": props.alt,
|
||||
"referrerpolicy": props.referrerpolicy,
|
||||
"draggable": props.draggable
|
||||
}, null)]
|
||||
});
|
||||
const __placeholder = () => {
|
||||
if (!slots.placeholder) return null;
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, {
|
||||
default: () => [(state.value === "loading" || state.value === "error" && !slots.error) && createBaseVNode("div", {
|
||||
"class": "v-img__placeholder"
|
||||
}, [slots.placeholder()])]
|
||||
});
|
||||
};
|
||||
const __error = () => {
|
||||
if (!slots.error) return null;
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, {
|
||||
default: () => [state.value === "error" && createBaseVNode("div", {
|
||||
"class": "v-img__error"
|
||||
}, [slots.error()])]
|
||||
});
|
||||
};
|
||||
const __gradient = () => {
|
||||
if (!props.gradient) return null;
|
||||
return createBaseVNode("div", {
|
||||
"class": "v-img__gradient",
|
||||
"style": {
|
||||
backgroundImage: `linear-gradient(${props.gradient})`
|
||||
}
|
||||
}, null);
|
||||
};
|
||||
const isBooted = shallowRef(false);
|
||||
{
|
||||
const stop = watch(aspectRatio, (val) => {
|
||||
if (val) {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
isBooted.value = true;
|
||||
});
|
||||
});
|
||||
stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
useRender(() => {
|
||||
const responsiveProps = VResponsive.filterProps(props);
|
||||
return withDirectives(createVNode(VResponsive, mergeProps({
|
||||
"class": ["v-img", {
|
||||
"v-img--absolute": props.absolute,
|
||||
"v-img--booting": !isBooted.value
|
||||
}, backgroundColorClasses.value, roundedClasses.value, props.class],
|
||||
"style": [{
|
||||
width: convertToUnit(props.width === "auto" ? naturalWidth.value : props.width)
|
||||
}, backgroundColorStyles.value, props.style]
|
||||
}, responsiveProps, {
|
||||
"aspectRatio": aspectRatio.value,
|
||||
"aria-label": props.alt,
|
||||
"role": props.alt ? "img" : void 0
|
||||
}), {
|
||||
additional: () => createBaseVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
|
||||
default: slots.default
|
||||
}), [[intersect_default, {
|
||||
handler: init,
|
||||
options: props.options
|
||||
}, null, {
|
||||
once: true
|
||||
}]]);
|
||||
});
|
||||
return {
|
||||
currentSrc,
|
||||
image,
|
||||
state,
|
||||
naturalWidth,
|
||||
naturalHeight
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VResponsive,
|
||||
makeVImgProps,
|
||||
VImg
|
||||
};
|
||||
//# sourceMappingURL=chunk-6CRS5HI4.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+44
@@ -0,0 +1,44 @@
|
||||
import {
|
||||
convertToUnit,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/dimensions.js
|
||||
var makeDimensionProps = propsFactory({
|
||||
height: [Number, String],
|
||||
maxHeight: [Number, String],
|
||||
maxWidth: [Number, String],
|
||||
minHeight: [Number, String],
|
||||
minWidth: [Number, String],
|
||||
width: [Number, String]
|
||||
}, "dimension");
|
||||
function useDimension(props) {
|
||||
const dimensionStyles = computed(() => {
|
||||
const styles = {};
|
||||
const height = convertToUnit(props.height);
|
||||
const maxHeight = convertToUnit(props.maxHeight);
|
||||
const maxWidth = convertToUnit(props.maxWidth);
|
||||
const minHeight = convertToUnit(props.minHeight);
|
||||
const minWidth = convertToUnit(props.minWidth);
|
||||
const width = convertToUnit(props.width);
|
||||
if (height != null) styles.height = height;
|
||||
if (maxHeight != null) styles.maxHeight = maxHeight;
|
||||
if (maxWidth != null) styles.maxWidth = maxWidth;
|
||||
if (minHeight != null) styles.minHeight = minHeight;
|
||||
if (minWidth != null) styles.minWidth = minWidth;
|
||||
if (width != null) styles.width = width;
|
||||
return styles;
|
||||
});
|
||||
return {
|
||||
dimensionStyles
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makeDimensionProps,
|
||||
useDimension
|
||||
};
|
||||
//# sourceMappingURL=chunk-6EZKHCRW.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/dimensions.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { computed } from 'vue'\nimport { convertToUnit, propsFactory } from '@/util'\n\n// Types\nexport interface DimensionProps {\n height?: number | string\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n width?: number | string\n}\n\n// Composables\nexport const makeDimensionProps = propsFactory({\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String],\n}, 'dimension')\n\nexport function useDimension (props: DimensionProps) {\n const dimensionStyles = computed(() => {\n const styles: Record<string, any> = {}\n\n const height = convertToUnit(props.height)\n const maxHeight = convertToUnit(props.maxHeight)\n const maxWidth = convertToUnit(props.maxWidth)\n const minHeight = convertToUnit(props.minHeight)\n const minWidth = convertToUnit(props.minWidth)\n const width = convertToUnit(props.width)\n\n if (height != null) styles.height = height\n if (maxHeight != null) styles.maxHeight = maxHeight\n if (maxWidth != null) styles.maxWidth = maxWidth\n if (minHeight != null) styles.minHeight = minHeight\n if (minWidth != null) styles.minWidth = minWidth\n if (width != null) styles.width = width\n\n return styles\n })\n\n return { dimensionStyles }\n}\n"],
|
||||
"mappings": ";;;;;;;;;AAeO,IAAMA,qBAAqBC,aAAa;EAC7CC,QAAQ,CAACC,QAAQC,MAAM;EACvBC,WAAW,CAACF,QAAQC,MAAM;EAC1BE,UAAU,CAACH,QAAQC,MAAM;EACzBG,WAAW,CAACJ,QAAQC,MAAM;EAC1BI,UAAU,CAACL,QAAQC,MAAM;EACzBK,OAAO,CAACN,QAAQC,MAAM;AACxB,GAAG,WAAW;AAEP,SAASM,aAAcC,OAAuB;AACnD,QAAMC,kBAAkBC,SAAS,MAAM;AACrC,UAAMC,SAA8B,CAAC;AAErC,UAAMZ,SAASa,cAAcJ,MAAMT,MAAM;AACzC,UAAMG,YAAYU,cAAcJ,MAAMN,SAAS;AAC/C,UAAMC,WAAWS,cAAcJ,MAAML,QAAQ;AAC7C,UAAMC,YAAYQ,cAAcJ,MAAMJ,SAAS;AAC/C,UAAMC,WAAWO,cAAcJ,MAAMH,QAAQ;AAC7C,UAAMC,QAAQM,cAAcJ,MAAMF,KAAK;AAEvC,QAAIP,UAAU,KAAMY,QAAOZ,SAASA;AACpC,QAAIG,aAAa,KAAMS,QAAOT,YAAYA;AAC1C,QAAIC,YAAY,KAAMQ,QAAOR,WAAWA;AACxC,QAAIC,aAAa,KAAMO,QAAOP,YAAYA;AAC1C,QAAIC,YAAY,KAAMM,QAAON,WAAWA;AACxC,QAAIC,SAAS,KAAMK,QAAOL,QAAQA;AAElC,WAAOK;EACT,CAAC;AAED,SAAO;IAAEF;EAAgB;AAC3B;",
|
||||
"names": ["makeDimensionProps", "propsFactory", "height", "Number", "String", "maxHeight", "maxWidth", "minHeight", "minWidth", "width", "useDimension", "props", "dimensionStyles", "computed", "styles", "convertToUnit"]
|
||||
}
|
||||
+257
@@ -0,0 +1,257 @@
|
||||
import {
|
||||
VOverlay,
|
||||
makeVOverlayProps
|
||||
} from "./chunk-TS6Y6OVT.js";
|
||||
import {
|
||||
useScopeId
|
||||
} from "./chunk-BVUPSGRF.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
genericComponent,
|
||||
keys,
|
||||
omit,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
ref,
|
||||
toRef,
|
||||
useId
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/directives/resize/index.js
|
||||
function mounted(el, binding) {
|
||||
const handler = binding.value;
|
||||
const options = {
|
||||
passive: !binding.modifiers?.active
|
||||
};
|
||||
window.addEventListener("resize", handler, options);
|
||||
el._onResize = Object(el._onResize);
|
||||
el._onResize[binding.instance.$.uid] = {
|
||||
handler,
|
||||
options
|
||||
};
|
||||
if (!binding.modifiers?.quiet) {
|
||||
handler();
|
||||
}
|
||||
}
|
||||
function unmounted(el, binding) {
|
||||
if (!el._onResize?.[binding.instance.$.uid]) return;
|
||||
const {
|
||||
handler,
|
||||
options
|
||||
} = el._onResize[binding.instance.$.uid];
|
||||
window.removeEventListener("resize", handler, options);
|
||||
delete el._onResize[binding.instance.$.uid];
|
||||
}
|
||||
var Resize = {
|
||||
mounted,
|
||||
unmounted
|
||||
};
|
||||
var resize_default = Resize;
|
||||
|
||||
// node_modules/vuetify/lib/directives/touch/index.js
|
||||
var handleGesture = (wrapper) => {
|
||||
const {
|
||||
touchstartX,
|
||||
touchendX,
|
||||
touchstartY,
|
||||
touchendY
|
||||
} = wrapper;
|
||||
const dirRatio = 0.5;
|
||||
const minDistance = 16;
|
||||
wrapper.offsetX = touchendX - touchstartX;
|
||||
wrapper.offsetY = touchendY - touchstartY;
|
||||
if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {
|
||||
wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);
|
||||
wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);
|
||||
}
|
||||
if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {
|
||||
wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);
|
||||
wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);
|
||||
}
|
||||
};
|
||||
function touchstart(event, wrapper) {
|
||||
const touch = event.changedTouches[0];
|
||||
wrapper.touchstartX = touch.clientX;
|
||||
wrapper.touchstartY = touch.clientY;
|
||||
wrapper.start?.({
|
||||
originalEvent: event,
|
||||
...wrapper
|
||||
});
|
||||
}
|
||||
function touchend(event, wrapper) {
|
||||
const touch = event.changedTouches[0];
|
||||
wrapper.touchendX = touch.clientX;
|
||||
wrapper.touchendY = touch.clientY;
|
||||
wrapper.end?.({
|
||||
originalEvent: event,
|
||||
...wrapper
|
||||
});
|
||||
handleGesture(wrapper);
|
||||
}
|
||||
function touchmove(event, wrapper) {
|
||||
const touch = event.changedTouches[0];
|
||||
wrapper.touchmoveX = touch.clientX;
|
||||
wrapper.touchmoveY = touch.clientY;
|
||||
wrapper.move?.({
|
||||
originalEvent: event,
|
||||
...wrapper
|
||||
});
|
||||
}
|
||||
function createHandlers() {
|
||||
let value = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
||||
const wrapper = {
|
||||
touchstartX: 0,
|
||||
touchstartY: 0,
|
||||
touchendX: 0,
|
||||
touchendY: 0,
|
||||
touchmoveX: 0,
|
||||
touchmoveY: 0,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
left: value.left,
|
||||
right: value.right,
|
||||
up: value.up,
|
||||
down: value.down,
|
||||
start: value.start,
|
||||
move: value.move,
|
||||
end: value.end
|
||||
};
|
||||
return {
|
||||
touchstart: (e) => touchstart(e, wrapper),
|
||||
touchend: (e) => touchend(e, wrapper),
|
||||
touchmove: (e) => touchmove(e, wrapper)
|
||||
};
|
||||
}
|
||||
function mounted2(el, binding) {
|
||||
const value = binding.value;
|
||||
const target = value?.parent ? el.parentElement : el;
|
||||
const options = value?.options ?? {
|
||||
passive: true
|
||||
};
|
||||
const uid = binding.instance?.$.uid;
|
||||
if (!target || uid === void 0) return;
|
||||
const handlers = createHandlers(binding.value);
|
||||
target._touchHandlers = target._touchHandlers ?? /* @__PURE__ */ Object.create(null);
|
||||
target._touchHandlers[uid] = handlers;
|
||||
keys(handlers).forEach((eventName) => {
|
||||
target.addEventListener(eventName, handlers[eventName], options);
|
||||
});
|
||||
}
|
||||
function unmounted2(el, binding) {
|
||||
const target = binding.value?.parent ? el.parentElement : el;
|
||||
const uid = binding.instance?.$.uid;
|
||||
if (!target?._touchHandlers || uid === void 0) return;
|
||||
const handlers = target._touchHandlers[uid];
|
||||
keys(handlers).forEach((eventName) => {
|
||||
target.removeEventListener(eventName, handlers[eventName]);
|
||||
});
|
||||
delete target._touchHandlers[uid];
|
||||
}
|
||||
var Touch = {
|
||||
mounted: mounted2,
|
||||
unmounted: unmounted2
|
||||
};
|
||||
var touch_default = Touch;
|
||||
|
||||
// node_modules/vuetify/lib/components/VTooltip/VTooltip.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VTooltip/VTooltip.css";
|
||||
var makeVTooltipProps = propsFactory({
|
||||
id: String,
|
||||
interactive: Boolean,
|
||||
text: String,
|
||||
...omit(makeVOverlayProps({
|
||||
closeOnBack: false,
|
||||
location: "end",
|
||||
locationStrategy: "connected",
|
||||
eager: true,
|
||||
minWidth: 0,
|
||||
offset: 10,
|
||||
openOnClick: false,
|
||||
openOnHover: true,
|
||||
origin: "auto",
|
||||
scrim: false,
|
||||
scrollStrategy: "reposition",
|
||||
transition: null
|
||||
}), ["absolute", "retainFocus", "captureFocus", "disableInitialFocus"])
|
||||
}, "VTooltip");
|
||||
var VTooltip = genericComponent()({
|
||||
name: "VTooltip",
|
||||
props: makeVTooltipProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const isActive = useProxiedModel(props, "modelValue");
|
||||
const {
|
||||
scopeId
|
||||
} = useScopeId();
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-tooltip-${uid}`);
|
||||
const overlay = ref();
|
||||
const location = computed(() => {
|
||||
return props.location.split(" ").length > 1 ? props.location : props.location + " center";
|
||||
});
|
||||
const origin = computed(() => {
|
||||
return props.origin === "auto" || props.origin === "overlap" || props.origin.split(" ").length > 1 || props.location.split(" ").length > 1 ? props.origin : props.origin + " center";
|
||||
});
|
||||
const transition = toRef(() => {
|
||||
if (props.transition != null) return props.transition;
|
||||
return isActive.value ? "scale-transition" : "fade-transition";
|
||||
});
|
||||
const activatorProps = computed(() => mergeProps({
|
||||
"aria-describedby": id.value
|
||||
}, props.activatorProps));
|
||||
useRender(() => {
|
||||
const overlayProps = VOverlay.filterProps(props);
|
||||
return createVNode(VOverlay, mergeProps({
|
||||
"ref": overlay,
|
||||
"class": ["v-tooltip", {
|
||||
"v-tooltip--interactive": props.interactive
|
||||
}, props.class],
|
||||
"style": props.style,
|
||||
"id": id.value
|
||||
}, overlayProps, {
|
||||
"modelValue": isActive.value,
|
||||
"onUpdate:modelValue": ($event) => isActive.value = $event,
|
||||
"transition": transition.value,
|
||||
"absolute": true,
|
||||
"location": location.value,
|
||||
"origin": origin.value,
|
||||
"role": "tooltip",
|
||||
"activatorProps": activatorProps.value,
|
||||
"_disableGlobalStack": true
|
||||
}, scopeId), {
|
||||
activator: slots.activator,
|
||||
default: function() {
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
return slots.default?.(...args) ?? props.text;
|
||||
}
|
||||
});
|
||||
});
|
||||
return forwardRefs({}, overlay);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
Resize,
|
||||
resize_default,
|
||||
Touch,
|
||||
touch_default,
|
||||
VTooltip
|
||||
};
|
||||
//# sourceMappingURL=chunk-6VKWM6MN.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+643
@@ -0,0 +1,643 @@
|
||||
import {
|
||||
useSsrBoot
|
||||
} from "./chunk-PCKQGDLK.js";
|
||||
import {
|
||||
VImg
|
||||
} from "./chunk-6CRS5HI4.js";
|
||||
import {
|
||||
makeBorderProps,
|
||||
useBorder
|
||||
} from "./chunk-X7YBE6PF.js";
|
||||
import {
|
||||
makeElevationProps,
|
||||
useElevation
|
||||
} from "./chunk-YJD2PNP6.js";
|
||||
import {
|
||||
VDefaultsProvider
|
||||
} from "./chunk-VH7QIDM4.js";
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
makeDelayProps,
|
||||
makeFocusTrapProps,
|
||||
useDelay,
|
||||
useFocusTrap,
|
||||
useScopeId
|
||||
} from "./chunk-BVUPSGRF.js";
|
||||
import {
|
||||
useRouter
|
||||
} from "./chunk-573D4TYC.js";
|
||||
import {
|
||||
makeDisplayProps,
|
||||
useDisplay
|
||||
} from "./chunk-N4LJHDYD.js";
|
||||
import {
|
||||
makeLayoutItemProps,
|
||||
useLayoutItem
|
||||
} from "./chunk-KQXZAEJP.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useProxiedModel,
|
||||
useToggleScope
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
useBackgroundColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
CircularBuffer,
|
||||
clamp,
|
||||
convertToUnit,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
omit,
|
||||
propsFactory,
|
||||
provideDefaults,
|
||||
toPhysical,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
Transition,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
onBeforeUnmount,
|
||||
onMounted,
|
||||
onScopeDispose,
|
||||
readonly,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
watch,
|
||||
watchEffect
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VNavigationDrawer/sticky.js
|
||||
function useSticky(_ref) {
|
||||
let {
|
||||
rootEl,
|
||||
isSticky,
|
||||
layoutItemStyles
|
||||
} = _ref;
|
||||
const isStuck = shallowRef(false);
|
||||
const stuckPosition = shallowRef(0);
|
||||
const stickyStyles = computed(() => {
|
||||
const side = typeof isStuck.value === "boolean" ? "top" : isStuck.value;
|
||||
return [isSticky.value ? {
|
||||
top: "auto",
|
||||
bottom: "auto",
|
||||
height: void 0
|
||||
} : void 0, isStuck.value ? {
|
||||
[side]: convertToUnit(stuckPosition.value)
|
||||
} : {
|
||||
top: layoutItemStyles.value.top
|
||||
}];
|
||||
});
|
||||
onMounted(() => {
|
||||
watch(isSticky, (val) => {
|
||||
if (val) {
|
||||
window.addEventListener("scroll", onScroll, {
|
||||
passive: true
|
||||
});
|
||||
} else {
|
||||
window.removeEventListener("scroll", onScroll);
|
||||
}
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener("scroll", onScroll);
|
||||
});
|
||||
let lastScrollTop = 0;
|
||||
function onScroll() {
|
||||
const direction = lastScrollTop > window.scrollY ? "up" : "down";
|
||||
const rect = rootEl.value.getBoundingClientRect();
|
||||
const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0);
|
||||
const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop);
|
||||
const bottom = rect.height + Math.max(stuckPosition.value, layoutTop) - window.scrollY - window.innerHeight;
|
||||
const bodyScroll = parseFloat(getComputedStyle(rootEl.value).getPropertyValue("--v-body-scroll-y")) || 0;
|
||||
if (rect.height < window.innerHeight - layoutTop) {
|
||||
isStuck.value = "top";
|
||||
stuckPosition.value = layoutTop;
|
||||
} else if (direction === "up" && isStuck.value === "bottom" || direction === "down" && isStuck.value === "top") {
|
||||
stuckPosition.value = window.scrollY + rect.top - bodyScroll;
|
||||
isStuck.value = true;
|
||||
} else if (direction === "down" && bottom <= 0) {
|
||||
stuckPosition.value = 0;
|
||||
isStuck.value = "bottom";
|
||||
} else if (direction === "up" && top <= 0) {
|
||||
if (!bodyScroll) {
|
||||
stuckPosition.value = rect.top + top;
|
||||
isStuck.value = "top";
|
||||
} else if (isStuck.value !== "top") {
|
||||
stuckPosition.value = -top + bodyScroll + layoutTop;
|
||||
isStuck.value = "top";
|
||||
}
|
||||
}
|
||||
lastScrollTop = window.scrollY;
|
||||
}
|
||||
return {
|
||||
isStuck,
|
||||
stickyStyles
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/touch.js
|
||||
var HORIZON = 100;
|
||||
var HISTORY = 20;
|
||||
function kineticEnergyToVelocity(work) {
|
||||
const sqrt2 = 1.41421356237;
|
||||
return (work < 0 ? -1 : 1) * Math.sqrt(Math.abs(work)) * sqrt2;
|
||||
}
|
||||
function calculateImpulseVelocity(samples) {
|
||||
if (samples.length < 2) {
|
||||
return 0;
|
||||
}
|
||||
if (samples.length === 2) {
|
||||
if (samples[1].t === samples[0].t) {
|
||||
return 0;
|
||||
}
|
||||
return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
|
||||
}
|
||||
let work = 0;
|
||||
for (let i = samples.length - 1; i > 0; i--) {
|
||||
if (samples[i].t === samples[i - 1].t) {
|
||||
continue;
|
||||
}
|
||||
const vprev = kineticEnergyToVelocity(work);
|
||||
const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t);
|
||||
work += (vcurr - vprev) * Math.abs(vcurr);
|
||||
if (i === samples.length - 1) {
|
||||
work *= 0.5;
|
||||
}
|
||||
}
|
||||
return kineticEnergyToVelocity(work) * 1e3;
|
||||
}
|
||||
function useVelocity() {
|
||||
const touches = {};
|
||||
function addMovement(e) {
|
||||
Array.from(e.changedTouches).forEach((touch) => {
|
||||
const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
|
||||
samples.push([e.timeStamp, touch]);
|
||||
});
|
||||
}
|
||||
function endTouch(e) {
|
||||
Array.from(e.changedTouches).forEach((touch) => {
|
||||
delete touches[touch.identifier];
|
||||
});
|
||||
}
|
||||
function getVelocity(id) {
|
||||
const samples = touches[id]?.values().reverse();
|
||||
if (!samples) {
|
||||
throw new Error(`No samples for touch id ${id}`);
|
||||
}
|
||||
const newest = samples[0];
|
||||
const x = [];
|
||||
const y = [];
|
||||
for (const val of samples) {
|
||||
if (newest[0] - val[0] > HORIZON) break;
|
||||
x.push({
|
||||
t: val[0],
|
||||
d: val[1].clientX
|
||||
});
|
||||
y.push({
|
||||
t: val[0],
|
||||
d: val[1].clientY
|
||||
});
|
||||
}
|
||||
return {
|
||||
x: calculateImpulseVelocity(x),
|
||||
y: calculateImpulseVelocity(y),
|
||||
get direction() {
|
||||
const {
|
||||
x: x2,
|
||||
y: y2
|
||||
} = this;
|
||||
const [absX, absY] = [Math.abs(x2), Math.abs(y2)];
|
||||
return absX > absY && x2 >= 0 ? "right" : absX > absY && x2 <= 0 ? "left" : absY > absX && y2 >= 0 ? "down" : absY > absX && y2 <= 0 ? "up" : oops();
|
||||
}
|
||||
};
|
||||
}
|
||||
return {
|
||||
addMovement,
|
||||
endTouch,
|
||||
getVelocity
|
||||
};
|
||||
}
|
||||
function oops() {
|
||||
throw new Error();
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/VNavigationDrawer/touch.js
|
||||
function useTouch(_ref) {
|
||||
let {
|
||||
el,
|
||||
isActive,
|
||||
isTemporary,
|
||||
width,
|
||||
touchless,
|
||||
position
|
||||
} = _ref;
|
||||
onMounted(() => {
|
||||
window.addEventListener("touchstart", onTouchstart, {
|
||||
passive: true
|
||||
});
|
||||
window.addEventListener("touchmove", onTouchmove, {
|
||||
passive: false
|
||||
});
|
||||
window.addEventListener("touchend", onTouchend, {
|
||||
passive: true
|
||||
});
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener("touchstart", onTouchstart);
|
||||
window.removeEventListener("touchmove", onTouchmove);
|
||||
window.removeEventListener("touchend", onTouchend);
|
||||
});
|
||||
const isHorizontal = computed(() => ["left", "right"].includes(position.value));
|
||||
const {
|
||||
addMovement,
|
||||
endTouch,
|
||||
getVelocity
|
||||
} = useVelocity();
|
||||
let maybeDragging = false;
|
||||
const isDragging = shallowRef(false);
|
||||
const dragProgress = shallowRef(0);
|
||||
const offset = shallowRef(0);
|
||||
let start;
|
||||
function getOffset(pos, active) {
|
||||
return (position.value === "left" ? pos : position.value === "right" ? document.documentElement.clientWidth - pos : position.value === "top" ? pos : position.value === "bottom" ? document.documentElement.clientHeight - pos : oops2()) - (active ? width.value : 0);
|
||||
}
|
||||
function getProgress(pos) {
|
||||
let limit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
||||
const progress = position.value === "left" ? (pos - offset.value) / width.value : position.value === "right" ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === "top" ? (pos - offset.value) / width.value : position.value === "bottom" ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops2();
|
||||
return limit ? clamp(progress) : progress;
|
||||
}
|
||||
function onTouchstart(e) {
|
||||
if (touchless.value) return;
|
||||
const touchX = e.changedTouches[0].clientX;
|
||||
const touchY = e.changedTouches[0].clientY;
|
||||
const touchZone = 25;
|
||||
const inTouchZone = position.value === "left" ? touchX < touchZone : position.value === "right" ? touchX > document.documentElement.clientWidth - touchZone : position.value === "top" ? touchY < touchZone : position.value === "bottom" ? touchY > document.documentElement.clientHeight - touchZone : oops2();
|
||||
const inElement = isActive.value && (position.value === "left" ? touchX < width.value : position.value === "right" ? touchX > document.documentElement.clientWidth - width.value : position.value === "top" ? touchY < width.value : position.value === "bottom" ? touchY > document.documentElement.clientHeight - width.value : oops2());
|
||||
if (inTouchZone || inElement || isActive.value && isTemporary.value) {
|
||||
start = [touchX, touchY];
|
||||
offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value);
|
||||
dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY);
|
||||
maybeDragging = offset.value > -20 && offset.value < 80;
|
||||
endTouch(e);
|
||||
addMovement(e);
|
||||
}
|
||||
}
|
||||
function onTouchmove(e) {
|
||||
const touchX = e.changedTouches[0].clientX;
|
||||
const touchY = e.changedTouches[0].clientY;
|
||||
if (maybeDragging) {
|
||||
if (!e.cancelable) {
|
||||
maybeDragging = false;
|
||||
return;
|
||||
}
|
||||
const dx = Math.abs(touchX - start[0]);
|
||||
const dy = Math.abs(touchY - start[1]);
|
||||
const thresholdMet = isHorizontal.value ? dx > dy && dx > 3 : dy > dx && dy > 3;
|
||||
if (thresholdMet) {
|
||||
isDragging.value = true;
|
||||
maybeDragging = false;
|
||||
} else if ((isHorizontal.value ? dy : dx) > 3) {
|
||||
maybeDragging = false;
|
||||
}
|
||||
}
|
||||
if (!isDragging.value) return;
|
||||
e.preventDefault();
|
||||
addMovement(e);
|
||||
const progress = getProgress(isHorizontal.value ? touchX : touchY, false);
|
||||
dragProgress.value = Math.max(0, Math.min(1, progress));
|
||||
if (progress > 1) {
|
||||
offset.value = getOffset(isHorizontal.value ? touchX : touchY, true);
|
||||
} else if (progress < 0) {
|
||||
offset.value = getOffset(isHorizontal.value ? touchX : touchY, false);
|
||||
}
|
||||
}
|
||||
function onTouchend(e) {
|
||||
maybeDragging = false;
|
||||
if (!isDragging.value) return;
|
||||
addMovement(e);
|
||||
isDragging.value = false;
|
||||
const velocity = getVelocity(e.changedTouches[0].identifier);
|
||||
const vx = Math.abs(velocity.x);
|
||||
const vy = Math.abs(velocity.y);
|
||||
const thresholdMet = isHorizontal.value ? vx > vy && vx > 400 : vy > vx && vy > 3;
|
||||
if (thresholdMet) {
|
||||
isActive.value = velocity.direction === ({
|
||||
left: "right",
|
||||
right: "left",
|
||||
top: "down",
|
||||
bottom: "up"
|
||||
}[position.value] || oops2());
|
||||
} else {
|
||||
isActive.value = dragProgress.value > 0.5;
|
||||
}
|
||||
}
|
||||
const dragStyles = computed(() => {
|
||||
return isDragging.value ? {
|
||||
transform: position.value === "left" ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === "right" ? `translateX(calc(100% - ${dragProgress.value * width.value}px))` : position.value === "top" ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))` : position.value === "bottom" ? `translateY(calc(100% - ${dragProgress.value * width.value}px))` : oops2(),
|
||||
transition: "none"
|
||||
} : void 0;
|
||||
});
|
||||
useToggleScope(isDragging, () => {
|
||||
const transform = el.value?.style.transform ?? null;
|
||||
const transition = el.value?.style.transition ?? null;
|
||||
watchEffect(() => {
|
||||
el.value?.style.setProperty("transform", dragStyles.value?.transform || "none");
|
||||
el.value?.style.setProperty("transition", dragStyles.value?.transition || null);
|
||||
});
|
||||
onScopeDispose(() => {
|
||||
el.value?.style.setProperty("transform", transform);
|
||||
el.value?.style.setProperty("transition", transition);
|
||||
});
|
||||
});
|
||||
return {
|
||||
isDragging,
|
||||
dragProgress,
|
||||
dragStyles
|
||||
};
|
||||
}
|
||||
function oops2() {
|
||||
throw new Error();
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.js
|
||||
var locations = ["start", "end", "left", "right", "top", "bottom"];
|
||||
var makeVNavigationDrawerProps = propsFactory({
|
||||
color: String,
|
||||
disableResizeWatcher: Boolean,
|
||||
disableRouteWatcher: Boolean,
|
||||
expandOnHover: Boolean,
|
||||
floating: Boolean,
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
permanent: Boolean,
|
||||
rail: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
railWidth: {
|
||||
type: [Number, String],
|
||||
default: 56
|
||||
},
|
||||
scrim: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
image: String,
|
||||
temporary: Boolean,
|
||||
persistent: Boolean,
|
||||
touchless: Boolean,
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: 256
|
||||
},
|
||||
location: {
|
||||
type: String,
|
||||
default: "start",
|
||||
validator: (value) => locations.includes(value)
|
||||
},
|
||||
sticky: Boolean,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDelayProps(),
|
||||
...makeDisplayProps({
|
||||
mobile: null
|
||||
}),
|
||||
...makeElevationProps(),
|
||||
...makeLayoutItemProps(),
|
||||
...makeRoundedProps(),
|
||||
...omit(makeFocusTrapProps(), ["disableInitialFocus"]),
|
||||
...makeTagProps({
|
||||
tag: "nav"
|
||||
}),
|
||||
...makeThemeProps()
|
||||
}, "VNavigationDrawer");
|
||||
var VNavigationDrawer = genericComponent()({
|
||||
name: "VNavigationDrawer",
|
||||
props: makeVNavigationDrawerProps(),
|
||||
emits: {
|
||||
"update:modelValue": (val) => true,
|
||||
"update:rail": (val) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
isRtl
|
||||
} = useRtl();
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
borderClasses
|
||||
} = useBorder(props);
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => props.color);
|
||||
const {
|
||||
elevationClasses
|
||||
} = useElevation(props);
|
||||
const {
|
||||
displayClasses,
|
||||
mobile
|
||||
} = useDisplay(props);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const router = useRouter();
|
||||
const isActive = useProxiedModel(props, "modelValue", null, (v) => !!v);
|
||||
const {
|
||||
ssrBootStyles
|
||||
} = useSsrBoot();
|
||||
const {
|
||||
scopeId
|
||||
} = useScopeId();
|
||||
const rootEl = ref();
|
||||
const isHovering = shallowRef(false);
|
||||
const {
|
||||
runOpenDelay,
|
||||
runCloseDelay
|
||||
} = useDelay(props, (value) => {
|
||||
isHovering.value = value;
|
||||
});
|
||||
const width = computed(() => {
|
||||
return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);
|
||||
});
|
||||
const location = computed(() => {
|
||||
return toPhysical(props.location, isRtl.value);
|
||||
});
|
||||
const isPersistent = toRef(() => props.persistent);
|
||||
const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
|
||||
const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== "bottom");
|
||||
useFocusTrap(props, {
|
||||
isActive,
|
||||
localTop: isTemporary,
|
||||
contentEl: rootEl
|
||||
});
|
||||
useToggleScope(() => props.expandOnHover && props.rail != null, () => {
|
||||
watch(isHovering, (val) => emit("update:rail", !val));
|
||||
});
|
||||
useToggleScope(() => !props.disableResizeWatcher, () => {
|
||||
watch(isTemporary, (val) => !props.permanent && nextTick(() => isActive.value = !val));
|
||||
});
|
||||
useToggleScope(() => !props.disableRouteWatcher && !!router, () => {
|
||||
watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
|
||||
});
|
||||
watch(() => props.permanent, (val) => {
|
||||
if (val) isActive.value = true;
|
||||
});
|
||||
if (props.modelValue == null && !isTemporary.value) {
|
||||
isActive.value = props.permanent || !mobile.value;
|
||||
}
|
||||
const {
|
||||
isDragging,
|
||||
dragProgress
|
||||
} = useTouch({
|
||||
el: rootEl,
|
||||
isActive,
|
||||
isTemporary,
|
||||
width,
|
||||
touchless: toRef(() => props.touchless),
|
||||
position: location
|
||||
});
|
||||
const layoutSize = computed(() => {
|
||||
const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;
|
||||
return isDragging.value ? size * dragProgress.value : size;
|
||||
});
|
||||
const {
|
||||
layoutItemStyles,
|
||||
layoutItemScrimStyles
|
||||
} = useLayoutItem({
|
||||
id: props.name,
|
||||
order: computed(() => parseInt(props.order, 10)),
|
||||
position: location,
|
||||
layoutSize,
|
||||
elementSize: width,
|
||||
active: readonly(isActive),
|
||||
disableTransitions: toRef(() => isDragging.value),
|
||||
absolute: computed(() => (
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
props.absolute || isSticky.value && typeof isStuck.value !== "string"
|
||||
))
|
||||
});
|
||||
const {
|
||||
isStuck,
|
||||
stickyStyles
|
||||
} = useSticky({
|
||||
rootEl,
|
||||
isSticky,
|
||||
layoutItemStyles
|
||||
});
|
||||
const scrimColor = useBackgroundColor(() => {
|
||||
return typeof props.scrim === "string" ? props.scrim : null;
|
||||
});
|
||||
const scrimStyles = computed(() => ({
|
||||
...isDragging.value ? {
|
||||
opacity: dragProgress.value * 0.2,
|
||||
transition: "none"
|
||||
} : void 0,
|
||||
...layoutItemScrimStyles.value
|
||||
}));
|
||||
provideDefaults({
|
||||
VList: {
|
||||
bgColor: "transparent"
|
||||
}
|
||||
});
|
||||
useRender(() => {
|
||||
const hasImage = slots.image || props.image;
|
||||
return createBaseVNode(Fragment, null, [createVNode(props.tag, mergeProps({
|
||||
"ref": rootEl,
|
||||
"onMouseenter": runOpenDelay,
|
||||
"onMouseleave": runCloseDelay,
|
||||
"class": ["v-navigation-drawer", `v-navigation-drawer--${location.value}`, {
|
||||
"v-navigation-drawer--expand-on-hover": props.expandOnHover,
|
||||
"v-navigation-drawer--floating": props.floating,
|
||||
"v-navigation-drawer--is-hovering": isHovering.value,
|
||||
"v-navigation-drawer--rail": props.rail,
|
||||
"v-navigation-drawer--temporary": isTemporary.value,
|
||||
"v-navigation-drawer--persistent": isPersistent.value,
|
||||
"v-navigation-drawer--active": isActive.value,
|
||||
"v-navigation-drawer--sticky": isSticky.value
|
||||
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
||||
"style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style],
|
||||
"inert": !isActive.value
|
||||
}, scopeId, attrs), {
|
||||
default: () => [hasImage && createBaseVNode("div", {
|
||||
"key": "image",
|
||||
"class": "v-navigation-drawer__img"
|
||||
}, [!slots.image ? createVNode(VImg, {
|
||||
"key": "image-img",
|
||||
"alt": "",
|
||||
"cover": true,
|
||||
"height": "inherit",
|
||||
"src": props.image
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "image-defaults",
|
||||
"disabled": !props.image,
|
||||
"defaults": {
|
||||
VImg: {
|
||||
alt: "",
|
||||
cover: true,
|
||||
height: "inherit",
|
||||
src: props.image
|
||||
}
|
||||
}
|
||||
}, slots.image)]), slots.prepend && createBaseVNode("div", {
|
||||
"class": "v-navigation-drawer__prepend"
|
||||
}, [slots.prepend?.()]), createBaseVNode("div", {
|
||||
"class": "v-navigation-drawer__content"
|
||||
}, [slots.default?.()]), slots.append && createBaseVNode("div", {
|
||||
"class": "v-navigation-drawer__append"
|
||||
}, [slots.append?.()])]
|
||||
}), createVNode(Transition, {
|
||||
"name": "fade-transition"
|
||||
}, {
|
||||
default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && createBaseVNode("div", mergeProps({
|
||||
"class": ["v-navigation-drawer__scrim", scrimColor.backgroundColorClasses.value],
|
||||
"style": [scrimStyles.value, scrimColor.backgroundColorStyles.value],
|
||||
"onClick": () => {
|
||||
if (isPersistent.value) return;
|
||||
isActive.value = false;
|
||||
}
|
||||
}, scopeId), null)]
|
||||
})]);
|
||||
});
|
||||
return {
|
||||
isStuck
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VNavigationDrawer
|
||||
};
|
||||
//# sourceMappingURL=chunk-7SKEB5LN.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+67
@@ -0,0 +1,67 @@
|
||||
import {
|
||||
useColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
getCurrentInstanceName,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
createBaseVNode,
|
||||
normalizeClass,
|
||||
toRef,
|
||||
toValue
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/variant.js
|
||||
var allowedVariants = ["elevated", "flat", "tonal", "outlined", "text", "plain"];
|
||||
function genOverlays(isClickable, name) {
|
||||
return createBaseVNode(Fragment, null, [isClickable && createBaseVNode("span", {
|
||||
"key": "overlay",
|
||||
"class": normalizeClass(`${name}__overlay`)
|
||||
}, null), createBaseVNode("span", {
|
||||
"key": "underlay",
|
||||
"class": normalizeClass(`${name}__underlay`)
|
||||
}, null)]);
|
||||
}
|
||||
var makeVariantProps = propsFactory({
|
||||
color: String,
|
||||
variant: {
|
||||
type: String,
|
||||
default: "elevated",
|
||||
validator: (v) => allowedVariants.includes(v)
|
||||
}
|
||||
}, "variant");
|
||||
function useVariant(props) {
|
||||
let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getCurrentInstanceName();
|
||||
const variantClasses = toRef(() => {
|
||||
const {
|
||||
variant
|
||||
} = toValue(props);
|
||||
return `${name}--variant-${variant}`;
|
||||
});
|
||||
const {
|
||||
colorClasses,
|
||||
colorStyles
|
||||
} = useColor(() => {
|
||||
const {
|
||||
variant,
|
||||
color
|
||||
} = toValue(props);
|
||||
return {
|
||||
[["elevated", "flat"].includes(variant) ? "background" : "text"]: color
|
||||
};
|
||||
});
|
||||
return {
|
||||
colorClasses,
|
||||
colorStyles,
|
||||
variantClasses
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
genOverlays,
|
||||
makeVariantProps,
|
||||
useVariant
|
||||
};
|
||||
//# sourceMappingURL=chunk-ADXDXPPR.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/variant.tsx"],
|
||||
"sourcesContent": ["// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { toRef, toValue } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { MaybeRefOrGetter, PropType } from 'vue'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <span key=\"overlay\" class={ `${name}__overlay` } /> }\n\n <span key=\"underlay\" class={ `${name}__underlay` } />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRefOrGetter<VariantProps>,\n name = getCurrentInstanceName(),\n) {\n const variantClasses = toRef(() => {\n const { variant } = toValue(props)\n return `${name}--variant-${variant}`\n })\n\n const { colorClasses, colorStyles } = useColor(() => {\n const { variant, color } = toValue(props)\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n }\n })\n\n return { colorClasses, colorStyles, variantClasses }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;AAUO,IAAMA,kBAAkB,CAC7B,YACA,QACA,SACA,YACA,QACA,OAAO;AAUF,SAASC,YAAaC,aAAsBC,MAAc;AAC/D,SAAAC,gBAAAC,UAAA,MAAA,CAEMH,eAAWE,gBAAA,QAAA;IAAA,OAAA;IAAA,SAAAE,eAAgC,GAAGH,IAAI,WAAW;EAAA,GAAA,IAAA,GAAKC,gBAAA,QAAA;IAAA,OAAA;IAAA,SAAAE,eAEvC,GAAGH,IAAI,YAAY;EAAA,GAAA,IAAA,CAAA,CAAA;AAGtD;AAEO,IAAMI,mBAAmBC,aAAa;EAC3CC,OAAOC;EACPC,SAAS;IACPC,MAAMF;IACNG,SAAS;IACTC,WAAYC,OAAWf,gBAAgBgB,SAASD,CAAC;EACnD;AACF,GAAG,SAAS;AAEL,SAASE,WACdC,OAEA;AAAA,MADAf,OAAIgB,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAGG,uBAAuB;AAE9B,QAAMC,iBAAiBC,MAAM,MAAM;AACjC,UAAM;MAAEb;IAAQ,IAAIc,QAAQP,KAAK;AACjC,WAAO,GAAGf,IAAI,aAAaQ,OAAO;EACpC,CAAC;AAED,QAAM;IAAEe;IAAcC;EAAY,IAAIC,SAAS,MAAM;AACnD,UAAM;MAAEjB;MAASF;IAAM,IAAIgB,QAAQP,KAAK;AACxC,WAAO;MACL,CAAC,CAAC,YAAY,MAAM,EAAEF,SAASL,OAAO,IAAI,eAAe,MAAM,GAAGF;IACpE;EACF,CAAC;AAED,SAAO;IAAEiB;IAAcC;IAAaJ;EAAe;AACrD;",
|
||||
"names": ["allowedVariants", "genOverlays", "isClickable", "name", "_createElementVNode", "_Fragment", "_normalizeClass", "makeVariantProps", "propsFactory", "color", "String", "variant", "type", "default", "validator", "v", "includes", "useVariant", "props", "arguments", "length", "undefined", "getCurrentInstanceName", "variantClasses", "toRef", "toValue", "colorClasses", "colorStyles", "useColor"]
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
import {
|
||||
SUPPORTS_INTERSECTION
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
onScopeDispose,
|
||||
ref,
|
||||
shallowRef,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/intersectionObserver.js
|
||||
function useIntersectionObserver(callback, options) {
|
||||
const intersectionRef = ref();
|
||||
const isIntersecting = shallowRef(false);
|
||||
if (SUPPORTS_INTERSECTION) {
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
callback?.(entries, observer);
|
||||
isIntersecting.value = !!entries.find((entry) => entry.isIntersecting);
|
||||
}, options);
|
||||
onScopeDispose(() => {
|
||||
observer.disconnect();
|
||||
});
|
||||
watch(intersectionRef, (newValue, oldValue) => {
|
||||
if (oldValue) {
|
||||
observer.unobserve(oldValue);
|
||||
isIntersecting.value = false;
|
||||
}
|
||||
if (newValue) observer.observe(newValue);
|
||||
}, {
|
||||
flush: "post"
|
||||
});
|
||||
}
|
||||
return {
|
||||
intersectionRef,
|
||||
isIntersecting
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
useIntersectionObserver
|
||||
};
|
||||
//# sourceMappingURL=chunk-AJ7MUB7M.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/intersectionObserver.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { onScopeDispose, ref, shallowRef, watch } from 'vue'\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\nexport function useIntersectionObserver (callback?: IntersectionObserverCallback, options?: IntersectionObserverInit) {\n const intersectionRef = ref<HTMLElement>()\n const isIntersecting = shallowRef(false)\n\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n callback?.(entries, observer)\n\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting)\n }, options)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n isIntersecting.value = false\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return { intersectionRef, isIntersecting }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;;AAIO,SAASA,wBAAyBC,UAAyCC,SAAoC;AACpH,QAAMC,kBAAkBC,IAAiB;AACzC,QAAMC,iBAAiBC,WAAW,KAAK;AAEvC,MAAIC,uBAAuB;AACzB,UAAMC,WAAW,IAAIC,qBAAsBC,aAAyC;AAClFT,iBAAWS,SAASF,QAAQ;AAE5BH,qBAAeM,QAAQ,CAAC,CAACD,QAAQE,KAAKC,WAASA,MAAMR,cAAc;IACrE,GAAGH,OAAO;AAEVY,mBAAe,MAAM;AACnBN,eAASO,WAAW;IACtB,CAAC;AAEDC,UAAMb,iBAAiB,CAACc,UAAUC,aAAa;AAC7C,UAAIA,UAAU;AACZV,iBAASW,UAAUD,QAAQ;AAC3Bb,uBAAeM,QAAQ;MACzB;AAEA,UAAIM,SAAUT,UAASY,QAAQH,QAAQ;IACzC,GAAG;MACDI,OAAO;IACT,CAAC;EACH;AAEA,SAAO;IAAElB;IAAiBE;EAAe;AAC3C;",
|
||||
"names": ["useIntersectionObserver", "callback", "options", "intersectionRef", "ref", "isIntersecting", "shallowRef", "SUPPORTS_INTERSECTION", "observer", "IntersectionObserver", "entries", "value", "find", "entry", "onScopeDispose", "disconnect", "watch", "newValue", "oldValue", "unobserve", "observe", "flush"]
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
import {
|
||||
getCurrentInstanceName,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
isRef
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/rounded.js
|
||||
var makeRoundedProps = propsFactory({
|
||||
rounded: {
|
||||
type: [Boolean, Number, String],
|
||||
default: void 0
|
||||
},
|
||||
tile: Boolean
|
||||
}, "rounded");
|
||||
function useRounded(props) {
|
||||
let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getCurrentInstanceName();
|
||||
const roundedClasses = computed(() => {
|
||||
const rounded = isRef(props) ? props.value : props.rounded;
|
||||
const tile = isRef(props) ? false : props.tile;
|
||||
const classes = [];
|
||||
if (tile || rounded === false) {
|
||||
classes.push("rounded-0");
|
||||
} else if (rounded === true || rounded === "") {
|
||||
classes.push(`${name}--rounded`);
|
||||
} else if (typeof rounded === "string" || rounded === 0) {
|
||||
for (const value of String(rounded).split(" ")) {
|
||||
classes.push(`rounded-${value}`);
|
||||
}
|
||||
}
|
||||
return classes;
|
||||
});
|
||||
return {
|
||||
roundedClasses
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
};
|
||||
//# sourceMappingURL=chunk-AQK3CYVW.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/rounded.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype RoundedValue = boolean | string | number | null | undefined\n\nexport interface RoundedProps {\n rounded?: RoundedValue\n tile?: boolean\n}\n\ntype RoundedData = {\n roundedClasses: Ref<string[]>\n}\n\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined,\n },\n tile: Boolean,\n}, 'rounded')\n\nexport function useRounded (\n props: RoundedProps | Ref<RoundedValue>,\n name = getCurrentInstanceName(),\n): RoundedData {\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded\n const tile = isRef(props) ? false : props.tile\n const classes: string[] = []\n\n if (tile || rounded === false) {\n classes.push('rounded-0')\n } else if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`)\n } else if (typeof rounded === 'string' || rounded === 0) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`)\n }\n }\n\n return classes\n })\n\n return { roundedClasses }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;AAmBO,IAAMA,mBAAmBC,aAAa;EAC3CC,SAAS;IACPC,MAAM,CAACC,SAASC,QAAQC,MAAM;IAC9BC,SAASC;EACX;EACAC,MAAML;AACR,GAAG,SAAS;AAEL,SAASM,WACdC,OAEa;AAAA,MADbC,OAAIC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAL,SAAAK,UAAA,CAAA,IAAGE,uBAAuB;AAE9B,QAAMC,iBAAiBC,SAAS,MAAM;AACpC,UAAMf,UAAUgB,MAAMP,KAAK,IAAIA,MAAMQ,QAAQR,MAAMT;AACnD,UAAMO,OAAOS,MAAMP,KAAK,IAAI,QAAQA,MAAMF;AAC1C,UAAMW,UAAoB,CAAA;AAE1B,QAAIX,QAAQP,YAAY,OAAO;AAC7BkB,cAAQC,KAAK,WAAW;IAC1B,WAAWnB,YAAY,QAAQA,YAAY,IAAI;AAC7CkB,cAAQC,KAAK,GAAGT,IAAI,WAAW;IACjC,WAAW,OAAOV,YAAY,YAAYA,YAAY,GAAG;AACvD,iBAAWiB,SAASb,OAAOJ,OAAO,EAAEoB,MAAM,GAAG,GAAG;AAC9CF,gBAAQC,KAAK,WAAWF,KAAK,EAAE;MACjC;IACF;AAEA,WAAOC;EACT,CAAC;AAED,SAAO;IAAEJ;EAAe;AAC1B;",
|
||||
"names": ["makeRoundedProps", "propsFactory", "rounded", "type", "Boolean", "Number", "String", "default", "undefined", "tile", "useRounded", "props", "name", "arguments", "length", "getCurrentInstanceName", "roundedClasses", "computed", "isRef", "value", "classes", "push", "split"]
|
||||
}
|
||||
+394
@@ -0,0 +1,394 @@
|
||||
import {
|
||||
PREFERS_REDUCED_MOTION,
|
||||
acceleratedEasing,
|
||||
animate,
|
||||
deceleratedEasing,
|
||||
genericComponent,
|
||||
getTargetBox,
|
||||
nullifyTransforms,
|
||||
propsFactory,
|
||||
standardEasing
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
camelize,
|
||||
createVNode,
|
||||
h,
|
||||
mergeProps
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/transitions/createTransition.js
|
||||
var makeTransitionProps = propsFactory({
|
||||
disabled: Boolean,
|
||||
group: Boolean,
|
||||
hideOnLeave: Boolean,
|
||||
leaveAbsolute: Boolean,
|
||||
mode: String,
|
||||
origin: String
|
||||
}, "transition");
|
||||
function createCssTransition(name, origin, mode) {
|
||||
return genericComponent()({
|
||||
name,
|
||||
props: makeTransitionProps({
|
||||
mode,
|
||||
origin
|
||||
}),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const functions = {
|
||||
onBeforeEnter(el) {
|
||||
if (props.origin) {
|
||||
el.style.transformOrigin = props.origin;
|
||||
}
|
||||
},
|
||||
onLeave(el) {
|
||||
if (props.leaveAbsolute) {
|
||||
const {
|
||||
offsetTop,
|
||||
offsetLeft,
|
||||
offsetWidth,
|
||||
offsetHeight
|
||||
} = el;
|
||||
el._transitionInitialStyles = {
|
||||
position: el.style.position,
|
||||
top: el.style.top,
|
||||
left: el.style.left,
|
||||
width: el.style.width,
|
||||
height: el.style.height
|
||||
};
|
||||
el.style.position = "absolute";
|
||||
el.style.top = `${offsetTop}px`;
|
||||
el.style.left = `${offsetLeft}px`;
|
||||
el.style.width = `${offsetWidth}px`;
|
||||
el.style.height = `${offsetHeight}px`;
|
||||
}
|
||||
if (props.hideOnLeave) {
|
||||
el.style.setProperty("display", "none", "important");
|
||||
}
|
||||
},
|
||||
onAfterLeave(el) {
|
||||
if (props.leaveAbsolute && el?._transitionInitialStyles) {
|
||||
const {
|
||||
position,
|
||||
top,
|
||||
left,
|
||||
width,
|
||||
height
|
||||
} = el._transitionInitialStyles;
|
||||
delete el._transitionInitialStyles;
|
||||
el.style.position = position || "";
|
||||
el.style.top = top || "";
|
||||
el.style.left = left || "";
|
||||
el.style.width = width || "";
|
||||
el.style.height = height || "";
|
||||
}
|
||||
}
|
||||
};
|
||||
return () => {
|
||||
const tag = props.group ? TransitionGroup : Transition;
|
||||
return h(tag, {
|
||||
name: props.disabled ? "" : name,
|
||||
css: !props.disabled,
|
||||
...props.group ? void 0 : {
|
||||
mode: props.mode
|
||||
},
|
||||
...props.disabled ? {} : functions
|
||||
}, slots.default);
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
function createJavascriptTransition(name, functions) {
|
||||
let mode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "in-out";
|
||||
return genericComponent()({
|
||||
name,
|
||||
props: {
|
||||
mode: {
|
||||
type: String,
|
||||
default: mode
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: PREFERS_REDUCED_MOTION()
|
||||
},
|
||||
group: Boolean
|
||||
},
|
||||
setup(props, _ref2) {
|
||||
let {
|
||||
slots
|
||||
} = _ref2;
|
||||
const tag = props.group ? TransitionGroup : Transition;
|
||||
return () => {
|
||||
return h(tag, {
|
||||
name: props.disabled ? "" : name,
|
||||
css: !props.disabled,
|
||||
// mode: props.mode, // TODO: vuejs/vue-next#3104
|
||||
...props.disabled ? {} : functions
|
||||
}, slots.default);
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/transitions/expand-transition.js
|
||||
function expand_transition_default() {
|
||||
let expandedParentClass = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
|
||||
let x = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
||||
const sizeProperty = x ? "width" : "height";
|
||||
const offsetProperty = camelize(`offset-${sizeProperty}`);
|
||||
return {
|
||||
onBeforeEnter(el) {
|
||||
el._parent = el.parentNode;
|
||||
el._initialStyle = {
|
||||
transition: el.style.transition,
|
||||
overflow: el.style.overflow,
|
||||
[sizeProperty]: el.style[sizeProperty]
|
||||
};
|
||||
},
|
||||
onEnter(el) {
|
||||
const initialStyle = el._initialStyle;
|
||||
if (!initialStyle) return;
|
||||
el.style.setProperty("transition", "none", "important");
|
||||
el.style.overflow = "hidden";
|
||||
const offset = `${el[offsetProperty]}px`;
|
||||
el.style[sizeProperty] = "0";
|
||||
void el.offsetHeight;
|
||||
el.style.transition = initialStyle.transition;
|
||||
if (expandedParentClass && el._parent) {
|
||||
el._parent.classList.add(expandedParentClass);
|
||||
}
|
||||
requestAnimationFrame(() => {
|
||||
el.style[sizeProperty] = offset;
|
||||
});
|
||||
},
|
||||
onAfterEnter: resetStyles,
|
||||
onEnterCancelled: resetStyles,
|
||||
onLeave(el) {
|
||||
el._initialStyle = {
|
||||
transition: "",
|
||||
overflow: el.style.overflow,
|
||||
[sizeProperty]: el.style[sizeProperty]
|
||||
};
|
||||
el.style.overflow = "hidden";
|
||||
el.style[sizeProperty] = `${el[offsetProperty]}px`;
|
||||
void el.offsetHeight;
|
||||
requestAnimationFrame(() => el.style[sizeProperty] = "0");
|
||||
},
|
||||
onAfterLeave,
|
||||
onLeaveCancelled: onAfterLeave
|
||||
};
|
||||
function onAfterLeave(el) {
|
||||
if (expandedParentClass && el._parent) {
|
||||
el._parent.classList.remove(expandedParentClass);
|
||||
}
|
||||
resetStyles(el);
|
||||
}
|
||||
function resetStyles(el) {
|
||||
if (!el._initialStyle) return;
|
||||
const size = el._initialStyle[sizeProperty];
|
||||
el.style.overflow = el._initialStyle.overflow;
|
||||
if (size != null) el.style[sizeProperty] = size;
|
||||
delete el._initialStyle;
|
||||
}
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/transitions/dialog-transition.js
|
||||
var makeVDialogTransitionProps = propsFactory({
|
||||
target: [Object, Array]
|
||||
}, "v-dialog-transition");
|
||||
var saved = /* @__PURE__ */ new WeakMap();
|
||||
var VDialogTransition = genericComponent()({
|
||||
name: "VDialogTransition",
|
||||
props: makeVDialogTransitionProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const functions = {
|
||||
onBeforeEnter(el) {
|
||||
el.style.pointerEvents = "none";
|
||||
el.style.visibility = "hidden";
|
||||
},
|
||||
async onEnter(el, done) {
|
||||
await new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
await new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
el.style.visibility = "";
|
||||
const dimensions = getDimensions(props.target, el);
|
||||
const {
|
||||
x,
|
||||
y,
|
||||
sx,
|
||||
sy,
|
||||
speed
|
||||
} = dimensions;
|
||||
saved.set(el, dimensions);
|
||||
if (PREFERS_REDUCED_MOTION()) {
|
||||
animate(el, [{
|
||||
opacity: 0
|
||||
}, {}], {
|
||||
duration: 125 * speed,
|
||||
easing: deceleratedEasing
|
||||
}).finished.then(() => done());
|
||||
} else {
|
||||
const animation = animate(el, [{
|
||||
transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
|
||||
opacity: 0
|
||||
}, {}], {
|
||||
duration: 225 * speed,
|
||||
easing: deceleratedEasing
|
||||
});
|
||||
getChildren(el)?.forEach((el2) => {
|
||||
animate(el2, [{
|
||||
opacity: 0
|
||||
}, {
|
||||
opacity: 0,
|
||||
offset: 0.33
|
||||
}, {}], {
|
||||
duration: 225 * 2 * speed,
|
||||
easing: standardEasing
|
||||
});
|
||||
});
|
||||
animation.finished.then(() => done());
|
||||
}
|
||||
},
|
||||
onAfterEnter(el) {
|
||||
el.style.removeProperty("pointer-events");
|
||||
},
|
||||
onBeforeLeave(el) {
|
||||
el.style.pointerEvents = "none";
|
||||
},
|
||||
async onLeave(el, done) {
|
||||
await new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
let dimensions;
|
||||
if (!saved.has(el) || Array.isArray(props.target) || props.target.offsetParent || props.target.getClientRects().length) {
|
||||
dimensions = getDimensions(props.target, el);
|
||||
} else {
|
||||
dimensions = saved.get(el);
|
||||
}
|
||||
const {
|
||||
x,
|
||||
y,
|
||||
sx,
|
||||
sy,
|
||||
speed
|
||||
} = dimensions;
|
||||
if (PREFERS_REDUCED_MOTION()) {
|
||||
animate(el, [{}, {
|
||||
opacity: 0
|
||||
}], {
|
||||
duration: 85 * speed,
|
||||
easing: acceleratedEasing
|
||||
}).finished.then(() => done());
|
||||
} else {
|
||||
const animation = animate(el, [{}, {
|
||||
transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
|
||||
opacity: 0
|
||||
}], {
|
||||
duration: 125 * speed,
|
||||
easing: acceleratedEasing
|
||||
});
|
||||
animation.finished.then(() => done());
|
||||
getChildren(el)?.forEach((el2) => {
|
||||
animate(el2, [{}, {
|
||||
opacity: 0,
|
||||
offset: 0.2
|
||||
}, {
|
||||
opacity: 0
|
||||
}], {
|
||||
duration: 125 * 2 * speed,
|
||||
easing: standardEasing
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
onAfterLeave(el) {
|
||||
el.style.removeProperty("pointer-events");
|
||||
}
|
||||
};
|
||||
return () => {
|
||||
return props.target ? createVNode(Transition, mergeProps({
|
||||
"name": "dialog-transition"
|
||||
}, functions, {
|
||||
"css": false
|
||||
}), slots) : createVNode(Transition, {
|
||||
"name": "dialog-transition"
|
||||
}, slots);
|
||||
};
|
||||
}
|
||||
});
|
||||
function getChildren(el) {
|
||||
const els = el.querySelector(":scope > .v-card, :scope > .v-sheet, :scope > .v-list")?.children;
|
||||
return els && [...els];
|
||||
}
|
||||
function getDimensions(target, el) {
|
||||
const targetBox = getTargetBox(target);
|
||||
const elBox = nullifyTransforms(el);
|
||||
const [originX, originY] = getComputedStyle(el).transformOrigin.split(" ").map((v) => parseFloat(v));
|
||||
const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue("--v-overlay-anchor-origin").split(" ");
|
||||
let offsetX = targetBox.left + targetBox.width / 2;
|
||||
if (anchorSide === "left" || anchorOffset === "left") {
|
||||
offsetX -= targetBox.width / 2;
|
||||
} else if (anchorSide === "right" || anchorOffset === "right") {
|
||||
offsetX += targetBox.width / 2;
|
||||
}
|
||||
let offsetY = targetBox.top + targetBox.height / 2;
|
||||
if (anchorSide === "top" || anchorOffset === "top") {
|
||||
offsetY -= targetBox.height / 2;
|
||||
} else if (anchorSide === "bottom" || anchorOffset === "bottom") {
|
||||
offsetY += targetBox.height / 2;
|
||||
}
|
||||
const tsx = targetBox.width / elBox.width;
|
||||
const tsy = targetBox.height / elBox.height;
|
||||
const maxs = Math.max(1, tsx, tsy);
|
||||
const sx = tsx / maxs || 0;
|
||||
const sy = tsy / maxs || 0;
|
||||
const asa = elBox.width * elBox.height / (window.innerWidth * window.innerHeight);
|
||||
const speed = asa > 0.12 ? Math.min(1.5, (asa - 0.12) * 10 + 1) : 1;
|
||||
return {
|
||||
x: offsetX - (originX + elBox.left),
|
||||
y: offsetY - (originY + elBox.top),
|
||||
sx,
|
||||
sy,
|
||||
speed
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/transitions/index.js
|
||||
var VFabTransition = createCssTransition("fab-transition", "center center", "out-in");
|
||||
var VDialogBottomTransition = createCssTransition("dialog-bottom-transition");
|
||||
var VDialogTopTransition = createCssTransition("dialog-top-transition");
|
||||
var VFadeTransition = createCssTransition("fade-transition");
|
||||
var VScaleTransition = createCssTransition("scale-transition");
|
||||
var VScrollXTransition = createCssTransition("scroll-x-transition");
|
||||
var VScrollXReverseTransition = createCssTransition("scroll-x-reverse-transition");
|
||||
var VScrollYTransition = createCssTransition("scroll-y-transition");
|
||||
var VScrollYReverseTransition = createCssTransition("scroll-y-reverse-transition");
|
||||
var VSlideXTransition = createCssTransition("slide-x-transition");
|
||||
var VSlideXReverseTransition = createCssTransition("slide-x-reverse-transition");
|
||||
var VSlideYTransition = createCssTransition("slide-y-transition");
|
||||
var VSlideYReverseTransition = createCssTransition("slide-y-reverse-transition");
|
||||
var VExpandTransition = createJavascriptTransition("expand-transition", expand_transition_default());
|
||||
var VExpandXTransition = createJavascriptTransition("expand-x-transition", expand_transition_default("", true));
|
||||
|
||||
export {
|
||||
VDialogTransition,
|
||||
VFabTransition,
|
||||
VDialogBottomTransition,
|
||||
VDialogTopTransition,
|
||||
VFadeTransition,
|
||||
VScaleTransition,
|
||||
VScrollXTransition,
|
||||
VScrollXReverseTransition,
|
||||
VScrollYTransition,
|
||||
VScrollYReverseTransition,
|
||||
VSlideXTransition,
|
||||
VSlideXReverseTransition,
|
||||
VSlideYTransition,
|
||||
VSlideYReverseTransition,
|
||||
VExpandTransition,
|
||||
VExpandXTransition
|
||||
};
|
||||
//# sourceMappingURL=chunk-B4JFJDWM.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+88
@@ -0,0 +1,88 @@
|
||||
import {
|
||||
destructComputed,
|
||||
getForeground,
|
||||
isCssColor,
|
||||
isParsableColor,
|
||||
parseColor
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
toValue
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/color.js
|
||||
function useColor(colors) {
|
||||
return destructComputed(() => {
|
||||
const {
|
||||
class: colorClasses,
|
||||
style: colorStyles
|
||||
} = computeColor(colors);
|
||||
return {
|
||||
colorClasses,
|
||||
colorStyles
|
||||
};
|
||||
});
|
||||
}
|
||||
function useTextColor(color) {
|
||||
const {
|
||||
colorClasses: textColorClasses,
|
||||
colorStyles: textColorStyles
|
||||
} = useColor(() => ({
|
||||
text: toValue(color)
|
||||
}));
|
||||
return {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
};
|
||||
}
|
||||
function useBackgroundColor(color) {
|
||||
const {
|
||||
colorClasses: backgroundColorClasses,
|
||||
colorStyles: backgroundColorStyles
|
||||
} = useColor(() => ({
|
||||
background: toValue(color)
|
||||
}));
|
||||
return {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
};
|
||||
}
|
||||
function computeColor(colors) {
|
||||
const _colors = toValue(colors);
|
||||
const classes = [];
|
||||
const styles = {};
|
||||
if (_colors.background) {
|
||||
if (isCssColor(_colors.background)) {
|
||||
styles.backgroundColor = _colors.background;
|
||||
if (!_colors.text && isParsableColor(_colors.background)) {
|
||||
const backgroundColor = parseColor(_colors.background);
|
||||
if (backgroundColor.a == null || backgroundColor.a === 1) {
|
||||
const textColor = getForeground(backgroundColor);
|
||||
styles.color = textColor;
|
||||
styles.caretColor = textColor;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
classes.push(`bg-${_colors.background}`);
|
||||
}
|
||||
}
|
||||
if (_colors.text) {
|
||||
if (isCssColor(_colors.text)) {
|
||||
styles.color = _colors.text;
|
||||
styles.caretColor = _colors.text;
|
||||
} else {
|
||||
classes.push(`text-${_colors.text}`);
|
||||
}
|
||||
}
|
||||
return {
|
||||
class: classes,
|
||||
style: styles
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
useColor,
|
||||
useTextColor,
|
||||
useBackgroundColor,
|
||||
computeColor
|
||||
};
|
||||
//# sourceMappingURL=chunk-BHV5Z34M.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/color.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { toValue } from 'vue'\nimport { destructComputed, getForeground, isCssColor, isParsableColor, parseColor } from '@/util'\n\n// Types\nimport type { CSSProperties, MaybeRefOrGetter, Ref } from 'vue'\n\nexport type ColorValue = string | false | null | undefined\n\nexport interface TextColorData {\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n}\n\nexport interface BackgroundColorData {\n backgroundColorClasses: Ref<string[]>\n backgroundColorStyles: Ref<CSSProperties>\n}\n\n// Composables\nexport function useColor (colors: MaybeRefOrGetter<{ background?: ColorValue, text?: ColorValue }>) {\n return destructComputed(() => {\n const {\n class: colorClasses,\n style: colorStyles,\n } = computeColor(colors)\n\n return { colorClasses, colorStyles }\n })\n}\n\nexport function useTextColor (color: MaybeRefOrGetter<ColorValue>): TextColorData {\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles,\n } = useColor(() => ({\n text: toValue(color),\n }))\n\n return { textColorClasses, textColorStyles }\n}\n\nexport function useBackgroundColor (color: MaybeRefOrGetter<ColorValue>): BackgroundColorData {\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles,\n } = useColor(() => ({\n background: toValue(color),\n }))\n\n return { backgroundColorClasses, backgroundColorStyles }\n}\n\nexport function computeColor (colors: MaybeRefOrGetter<{ background?: ColorValue, text?: ColorValue }>) {\n const _colors = toValue(colors)\n const classes: string[] = []\n const styles: CSSProperties = {}\n\n if (_colors.background) {\n if (isCssColor(_colors.background)) {\n styles.backgroundColor = _colors.background\n\n if (!_colors.text && isParsableColor(_colors.background)) {\n const backgroundColor = parseColor(_colors.background)\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n const textColor = getForeground(backgroundColor)\n\n styles.color = textColor\n styles.caretColor = textColor\n }\n }\n } else {\n classes.push(`bg-${_colors.background}`)\n }\n }\n\n if (_colors.text) {\n if (isCssColor(_colors.text)) {\n styles.color = _colors.text\n styles.caretColor = _colors.text\n } else {\n classes.push(`text-${_colors.text}`)\n }\n }\n\n return { class: classes, style: styles }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;;;AAoBO,SAASA,SAAUC,QAA0E;AAClG,SAAOC,iBAAiB,MAAM;AAC5B,UAAM;MACJC,OAAOC;MACPC,OAAOC;IACT,IAAIC,aAAaN,MAAM;AAEvB,WAAO;MAAEG;MAAcE;IAAY;EACrC,CAAC;AACH;AAEO,SAASE,aAAcC,OAAoD;AAChF,QAAM;IACJL,cAAcM;IACdJ,aAAaK;EACf,IAAIX,SAAS,OAAO;IAClBY,MAAMC,QAAQJ,KAAK;EACrB,EAAE;AAEF,SAAO;IAAEC;IAAkBC;EAAgB;AAC7C;AAEO,SAASG,mBAAoBL,OAA0D;AAC5F,QAAM;IACJL,cAAcW;IACdT,aAAaU;EACf,IAAIhB,SAAS,OAAO;IAClBiB,YAAYJ,QAAQJ,KAAK;EAC3B,EAAE;AAEF,SAAO;IAAEM;IAAwBC;EAAsB;AACzD;AAEO,SAAST,aAAcN,QAA0E;AACtG,QAAMiB,UAAUL,QAAQZ,MAAM;AAC9B,QAAMkB,UAAoB,CAAA;AAC1B,QAAMC,SAAwB,CAAC;AAE/B,MAAIF,QAAQD,YAAY;AACtB,QAAII,WAAWH,QAAQD,UAAU,GAAG;AAClCG,aAAOE,kBAAkBJ,QAAQD;AAEjC,UAAI,CAACC,QAAQN,QAAQW,gBAAgBL,QAAQD,UAAU,GAAG;AACxD,cAAMK,kBAAkBE,WAAWN,QAAQD,UAAU;AACrD,YAAIK,gBAAgBG,KAAK,QAAQH,gBAAgBG,MAAM,GAAG;AACxD,gBAAMC,YAAYC,cAAcL,eAAe;AAE/CF,iBAAOX,QAAQiB;AACfN,iBAAOQ,aAAaF;QACtB;MACF;IACF,OAAO;AACLP,cAAQU,KAAK,MAAMX,QAAQD,UAAU,EAAE;IACzC;EACF;AAEA,MAAIC,QAAQN,MAAM;AAChB,QAAIS,WAAWH,QAAQN,IAAI,GAAG;AAC5BQ,aAAOX,QAAQS,QAAQN;AACvBQ,aAAOQ,aAAaV,QAAQN;IAC9B,OAAO;AACLO,cAAQU,KAAK,QAAQX,QAAQN,IAAI,EAAE;IACrC;EACF;AAEA,SAAO;IAAET,OAAOgB;IAASd,OAAOe;EAAO;AACzC;",
|
||||
"names": ["useColor", "colors", "destructComputed", "class", "colorClasses", "style", "colorStyles", "computeColor", "useTextColor", "color", "textColorClasses", "textColorStyles", "text", "toValue", "useBackgroundColor", "backgroundColorClasses", "backgroundColorStyles", "background", "_colors", "classes", "styles", "isCssColor", "backgroundColor", "isParsableColor", "parseColor", "a", "textColor", "getForeground", "caretColor", "push"]
|
||||
}
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
import {
|
||||
IN_BROWSER,
|
||||
defer,
|
||||
focusableChildren,
|
||||
getCurrentInstance,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
nextTick,
|
||||
onScopeDispose,
|
||||
toRef,
|
||||
toValue,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/delay.js
|
||||
var makeDelayProps = propsFactory({
|
||||
closeDelay: [Number, String],
|
||||
openDelay: [Number, String]
|
||||
}, "delay");
|
||||
function useDelay(props, cb) {
|
||||
let clearDelay = () => {
|
||||
};
|
||||
function runDelay(isOpening, options) {
|
||||
clearDelay?.();
|
||||
const delay = isOpening ? props.openDelay : props.closeDelay;
|
||||
const normalizedDelay = Math.max(options?.minDelay ?? 0, Number(delay ?? 0));
|
||||
return new Promise((resolve) => {
|
||||
clearDelay = defer(normalizedDelay, () => {
|
||||
cb?.(isOpening);
|
||||
resolve(isOpening);
|
||||
});
|
||||
});
|
||||
}
|
||||
function runOpenDelay() {
|
||||
return runDelay(true);
|
||||
}
|
||||
function runCloseDelay(options) {
|
||||
return runDelay(false, options);
|
||||
}
|
||||
return {
|
||||
clearDelay,
|
||||
runOpenDelay,
|
||||
runCloseDelay
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/focusTrap.js
|
||||
var makeFocusTrapProps = propsFactory({
|
||||
retainFocus: Boolean,
|
||||
captureFocus: Boolean,
|
||||
/** @deprecated */
|
||||
disableInitialFocus: Boolean
|
||||
}, "focusTrap");
|
||||
var registry = /* @__PURE__ */ new Map();
|
||||
var subscribers = 0;
|
||||
function onKeydown(e) {
|
||||
const activeElement = document.activeElement;
|
||||
if (e.key !== "Tab" || !activeElement) return;
|
||||
const parentTraps = Array.from(registry.values()).filter((_ref) => {
|
||||
let {
|
||||
isActive,
|
||||
contentEl
|
||||
} = _ref;
|
||||
return isActive.value && contentEl.value?.contains(activeElement);
|
||||
}).map((x) => x.contentEl.value);
|
||||
let closestTrap;
|
||||
let currentParent = activeElement.parentElement;
|
||||
while (currentParent) {
|
||||
if (parentTraps.includes(currentParent)) {
|
||||
closestTrap = currentParent;
|
||||
break;
|
||||
}
|
||||
currentParent = currentParent.parentElement;
|
||||
}
|
||||
if (!closestTrap) return;
|
||||
const focusable = focusableChildren(closestTrap).filter((x) => x.tabIndex >= 0);
|
||||
if (!focusable.length) return;
|
||||
const active = document.activeElement;
|
||||
if (focusable.length === 1 && focusable[0].classList.contains("v-list") && focusable[0].contains(active)) {
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
const firstElement = focusable[0];
|
||||
const lastElement = focusable[focusable.length - 1];
|
||||
if (e.shiftKey && (active === firstElement || firstElement.classList.contains("v-list") && firstElement.contains(active))) {
|
||||
e.preventDefault();
|
||||
lastElement.focus();
|
||||
}
|
||||
if (!e.shiftKey && (active === lastElement || lastElement.classList.contains("v-list") && lastElement.contains(active))) {
|
||||
e.preventDefault();
|
||||
firstElement.focus();
|
||||
}
|
||||
}
|
||||
function useFocusTrap(props, _ref2) {
|
||||
let {
|
||||
isActive,
|
||||
localTop,
|
||||
activatorEl,
|
||||
contentEl
|
||||
} = _ref2;
|
||||
const trapId = /* @__PURE__ */ Symbol("trap");
|
||||
let focusTrapSuppressed = false;
|
||||
let focusTrapSuppressionTimeout = -1;
|
||||
async function onPointerdown() {
|
||||
focusTrapSuppressed = true;
|
||||
focusTrapSuppressionTimeout = window.setTimeout(() => {
|
||||
focusTrapSuppressed = false;
|
||||
}, 100);
|
||||
}
|
||||
async function captureOnFocus(e) {
|
||||
const before = e.relatedTarget;
|
||||
const after = e.target;
|
||||
document.removeEventListener("pointerdown", onPointerdown);
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
await nextTick();
|
||||
if (isActive.value && !focusTrapSuppressed && before !== after && contentEl.value && // We're the menu without open submenus or overlays
|
||||
toValue(localTop) && // It isn't the document or the container body
|
||||
![document, contentEl.value].includes(after) && // It isn't inside the container body
|
||||
!contentEl.value.contains(after)) {
|
||||
const focusable = focusableChildren(contentEl.value);
|
||||
focusable[0]?.focus();
|
||||
}
|
||||
}
|
||||
function captureOnKeydown(e) {
|
||||
if (e.key !== "Tab") return;
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
if (isActive.value && contentEl.value && e.target && !contentEl.value.contains(e.target)) {
|
||||
const allFocusableElements = focusableChildren(document.documentElement);
|
||||
if (e.shiftKey && e.target === allFocusableElements.at(0) || !e.shiftKey && e.target === allFocusableElements.at(-1)) {
|
||||
const focusable = focusableChildren(contentEl.value);
|
||||
if (focusable.length > 0) {
|
||||
e.preventDefault();
|
||||
focusable[0].focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const shouldCapture = toRef(() => isActive.value && props.captureFocus && !props.disableInitialFocus);
|
||||
if (IN_BROWSER) {
|
||||
watch(() => props.retainFocus, (val) => {
|
||||
if (val) {
|
||||
registry.set(trapId, {
|
||||
isActive,
|
||||
contentEl
|
||||
});
|
||||
} else {
|
||||
registry.delete(trapId);
|
||||
}
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
watch(shouldCapture, (val) => {
|
||||
if (val) {
|
||||
document.addEventListener("pointerdown", onPointerdown);
|
||||
document.addEventListener("focusin", captureOnFocus, {
|
||||
once: true
|
||||
});
|
||||
document.addEventListener("keydown", captureOnKeydown);
|
||||
} else {
|
||||
document.removeEventListener("pointerdown", onPointerdown);
|
||||
document.removeEventListener("focusin", captureOnFocus);
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
}
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
if (subscribers++ < 1) {
|
||||
document.addEventListener("keydown", onKeydown);
|
||||
}
|
||||
}
|
||||
onScopeDispose(() => {
|
||||
registry.delete(trapId);
|
||||
clearTimeout(focusTrapSuppressionTimeout);
|
||||
document.removeEventListener("pointerdown", onPointerdown);
|
||||
document.removeEventListener("focusin", captureOnFocus);
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
if (--subscribers < 1) {
|
||||
document.removeEventListener("keydown", onKeydown);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/scopeId.js
|
||||
function useScopeId() {
|
||||
const vm = getCurrentInstance("useScopeId");
|
||||
const scopeId = vm.vnode.scopeId;
|
||||
return {
|
||||
scopeId: scopeId ? {
|
||||
[scopeId]: ""
|
||||
} : void 0
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makeDelayProps,
|
||||
useDelay,
|
||||
makeFocusTrapProps,
|
||||
useFocusTrap,
|
||||
useScopeId
|
||||
};
|
||||
//# sourceMappingURL=chunk-BVUPSGRF.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+360
@@ -0,0 +1,360 @@
|
||||
import {
|
||||
VToolbar,
|
||||
VToolbarTitle,
|
||||
makeVToolbarProps,
|
||||
makeVToolbarTitleProps
|
||||
} from "./chunk-LPZZJ62X.js";
|
||||
import {
|
||||
VBtn,
|
||||
makeVBtnProps
|
||||
} from "./chunk-QC7VWQER.js";
|
||||
import {
|
||||
useSsrBoot
|
||||
} from "./chunk-PCKQGDLK.js";
|
||||
import {
|
||||
makeLayoutItemProps,
|
||||
useLayoutItem
|
||||
} from "./chunk-KQXZAEJP.js";
|
||||
import {
|
||||
useProxiedModel,
|
||||
useToggleScope
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
clamp,
|
||||
consoleWarn,
|
||||
genericComponent,
|
||||
omit,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
onBeforeUnmount,
|
||||
onMounted,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
watch,
|
||||
watchEffect
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VAppBar/VAppBar.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VAppBar/VAppBar.css";
|
||||
|
||||
// node_modules/vuetify/lib/composables/scroll.js
|
||||
var makeScrollProps = propsFactory({
|
||||
scrollTarget: {
|
||||
type: String
|
||||
},
|
||||
scrollThreshold: {
|
||||
type: [String, Number],
|
||||
default: 300
|
||||
}
|
||||
}, "scroll");
|
||||
function useScroll(props) {
|
||||
let args = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||||
const {
|
||||
canScroll,
|
||||
layoutSize
|
||||
} = args;
|
||||
let previousScroll = 0;
|
||||
let previousScrollHeight = 0;
|
||||
const target = ref(null);
|
||||
const currentScroll = shallowRef(0);
|
||||
const savedScroll = shallowRef(0);
|
||||
const currentThreshold = shallowRef(0);
|
||||
const isScrollActive = shallowRef(false);
|
||||
const isScrollingUp = shallowRef(false);
|
||||
const isAtBottom = shallowRef(false);
|
||||
const reachedBottomWhileScrollingDown = shallowRef(false);
|
||||
const hasEnoughScrollableSpace = shallowRef(true);
|
||||
const scrollThreshold = computed(() => {
|
||||
return Number(props.scrollThreshold);
|
||||
});
|
||||
const scrollRatio = computed(() => {
|
||||
return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
|
||||
});
|
||||
function getScrollMetrics(targetEl) {
|
||||
const clientHeight = "window" in targetEl ? window.innerHeight : targetEl.clientHeight;
|
||||
const scrollHeight = "window" in targetEl ? document.documentElement.scrollHeight : targetEl.scrollHeight;
|
||||
return {
|
||||
clientHeight,
|
||||
scrollHeight
|
||||
};
|
||||
}
|
||||
function checkScrollableSpace() {
|
||||
const targetEl = target.value;
|
||||
if (!targetEl) return;
|
||||
const {
|
||||
clientHeight,
|
||||
scrollHeight
|
||||
} = getScrollMetrics(targetEl);
|
||||
const maxScrollableDistance = scrollHeight - clientHeight;
|
||||
const elementHeight = layoutSize?.value || 0;
|
||||
const minRequiredDistance = scrollThreshold.value + elementHeight;
|
||||
hasEnoughScrollableSpace.value = maxScrollableDistance > minRequiredDistance;
|
||||
}
|
||||
function onResize() {
|
||||
checkScrollableSpace();
|
||||
}
|
||||
function onScroll() {
|
||||
const targetEl = target.value;
|
||||
if (!targetEl || canScroll && !canScroll.value) return;
|
||||
previousScroll = currentScroll.value;
|
||||
currentScroll.value = "window" in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
|
||||
const currentScrollHeight = targetEl instanceof Window ? document.documentElement.scrollHeight : targetEl.scrollHeight;
|
||||
if (previousScrollHeight !== currentScrollHeight) {
|
||||
if (currentScrollHeight > previousScrollHeight) {
|
||||
checkScrollableSpace();
|
||||
}
|
||||
previousScrollHeight = currentScrollHeight;
|
||||
}
|
||||
isScrollingUp.value = currentScroll.value < previousScroll;
|
||||
currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
|
||||
const {
|
||||
clientHeight,
|
||||
scrollHeight
|
||||
} = getScrollMetrics(targetEl);
|
||||
const atBottom = currentScroll.value + clientHeight >= scrollHeight - 5;
|
||||
if (!isScrollingUp.value && atBottom && currentScroll.value >= scrollThreshold.value && hasEnoughScrollableSpace.value) {
|
||||
reachedBottomWhileScrollingDown.value = true;
|
||||
}
|
||||
const scrollJumped = Math.abs(currentScroll.value - previousScroll) > 100;
|
||||
const atTop = currentScroll.value <= 5;
|
||||
const scrolledUpSignificantly = isScrollingUp.value && previousScroll - currentScroll.value > 1;
|
||||
if (scrolledUpSignificantly && !atBottom || scrollJumped && currentScroll.value < scrollThreshold.value || atTop) {
|
||||
reachedBottomWhileScrollingDown.value = false;
|
||||
}
|
||||
isAtBottom.value = atBottom;
|
||||
}
|
||||
watch(isScrollingUp, () => {
|
||||
savedScroll.value = savedScroll.value || currentScroll.value;
|
||||
});
|
||||
watch(isScrollActive, () => {
|
||||
savedScroll.value = 0;
|
||||
});
|
||||
onMounted(() => {
|
||||
watch(() => props.scrollTarget, (scrollTarget) => {
|
||||
const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
|
||||
if (!newTarget) {
|
||||
consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);
|
||||
return;
|
||||
}
|
||||
if (newTarget === target.value) return;
|
||||
target.value?.removeEventListener("scroll", onScroll);
|
||||
target.value = newTarget;
|
||||
target.value.addEventListener("scroll", onScroll, {
|
||||
passive: true
|
||||
});
|
||||
Promise.resolve().then(() => {
|
||||
checkScrollableSpace();
|
||||
});
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
window.addEventListener("resize", onResize, {
|
||||
passive: true
|
||||
});
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
target.value?.removeEventListener("scroll", onScroll);
|
||||
window.removeEventListener("resize", onResize);
|
||||
});
|
||||
canScroll && watch(canScroll, onScroll, {
|
||||
immediate: true
|
||||
});
|
||||
return {
|
||||
scrollThreshold,
|
||||
currentScroll,
|
||||
currentThreshold,
|
||||
isScrollActive,
|
||||
scrollRatio,
|
||||
// required only for testing
|
||||
// probably can be removed
|
||||
// later (2 chars chlng)
|
||||
isScrollingUp,
|
||||
savedScroll,
|
||||
isAtBottom,
|
||||
reachedBottomWhileScrollingDown,
|
||||
hasEnoughScrollableSpace
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/VAppBar/VAppBar.js
|
||||
var makeVAppBarProps = propsFactory({
|
||||
scrollBehavior: String,
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
location: {
|
||||
type: String,
|
||||
default: "top",
|
||||
validator: (value) => ["top", "bottom"].includes(value)
|
||||
},
|
||||
...makeVToolbarProps(),
|
||||
...makeLayoutItemProps(),
|
||||
...makeScrollProps(),
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: 64
|
||||
}
|
||||
}, "VAppBar");
|
||||
var VAppBar = genericComponent()({
|
||||
name: "VAppBar",
|
||||
props: makeVAppBarProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const vToolbarRef = ref();
|
||||
const isActive = useProxiedModel(props, "modelValue");
|
||||
const scrollBehavior = computed(() => {
|
||||
const behavior = new Set(props.scrollBehavior?.split(" ") ?? []);
|
||||
return {
|
||||
hide: behavior.has("hide"),
|
||||
fullyHide: behavior.has("fully-hide"),
|
||||
inverted: behavior.has("inverted"),
|
||||
collapse: behavior.has("collapse"),
|
||||
elevate: behavior.has("elevate"),
|
||||
fadeImage: behavior.has("fade-image")
|
||||
// shrink: behavior.has('shrink'),
|
||||
};
|
||||
});
|
||||
const canScroll = computed(() => {
|
||||
const behavior = scrollBehavior.value;
|
||||
return behavior.hide || behavior.fullyHide || behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage || // behavior.shrink ||
|
||||
!isActive.value;
|
||||
});
|
||||
const appBarHeight = computed(() => {
|
||||
const height2 = vToolbarRef.value?.contentHeight ?? 0;
|
||||
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
||||
return height2 + extensionHeight;
|
||||
});
|
||||
const {
|
||||
currentScroll,
|
||||
scrollThreshold,
|
||||
isScrollingUp,
|
||||
scrollRatio,
|
||||
isAtBottom,
|
||||
reachedBottomWhileScrollingDown,
|
||||
hasEnoughScrollableSpace
|
||||
} = useScroll(props, {
|
||||
canScroll,
|
||||
layoutSize: appBarHeight
|
||||
});
|
||||
const canHide = toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
|
||||
const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
|
||||
const isFlat = computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
|
||||
const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : void 0);
|
||||
const height = computed(() => {
|
||||
if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
|
||||
const height2 = vToolbarRef.value?.contentHeight ?? 0;
|
||||
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
||||
if (!canHide.value) return height2 + extensionHeight;
|
||||
return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height2 + extensionHeight : height2;
|
||||
});
|
||||
useToggleScope(() => !!props.scrollBehavior, () => {
|
||||
watchEffect(() => {
|
||||
if (!canHide.value) {
|
||||
isActive.value = true;
|
||||
return;
|
||||
}
|
||||
if (scrollBehavior.value.inverted) {
|
||||
isActive.value = currentScroll.value > scrollThreshold.value;
|
||||
return;
|
||||
}
|
||||
if (!hasEnoughScrollableSpace.value) {
|
||||
isActive.value = true;
|
||||
return;
|
||||
}
|
||||
if (reachedBottomWhileScrollingDown.value) {
|
||||
isActive.value = false;
|
||||
return;
|
||||
}
|
||||
isActive.value = isScrollingUp.value && !isAtBottom.value || currentScroll.value < scrollThreshold.value;
|
||||
});
|
||||
});
|
||||
const {
|
||||
ssrBootStyles
|
||||
} = useSsrBoot();
|
||||
const {
|
||||
layoutItemStyles
|
||||
} = useLayoutItem({
|
||||
id: props.name,
|
||||
order: computed(() => parseInt(props.order, 10)),
|
||||
position: toRef(() => props.location),
|
||||
layoutSize: height,
|
||||
elementSize: shallowRef(void 0),
|
||||
active: isActive,
|
||||
absolute: toRef(() => props.absolute)
|
||||
});
|
||||
useRender(() => {
|
||||
const toolbarProps = VToolbar.filterProps(props);
|
||||
return createVNode(VToolbar, mergeProps({
|
||||
"ref": vToolbarRef,
|
||||
"class": ["v-app-bar", {
|
||||
"v-app-bar--bottom": props.location === "bottom"
|
||||
}, props.class],
|
||||
"style": [{
|
||||
...layoutItemStyles.value,
|
||||
"--v-toolbar-image-opacity": opacity.value,
|
||||
height: void 0,
|
||||
...ssrBootStyles.value
|
||||
}, props.style]
|
||||
}, toolbarProps, {
|
||||
"collapse": isCollapsed.value,
|
||||
"flat": isFlat.value
|
||||
}), slots);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VAppBar/VAppBarNavIcon.js
|
||||
var makeVAppBarNavIconProps = propsFactory({
|
||||
...omit(makeVBtnProps({
|
||||
icon: "$menu",
|
||||
variant: "text"
|
||||
}), ["spaced"])
|
||||
}, "VAppBarNavIcon");
|
||||
var VAppBarNavIcon = genericComponent()({
|
||||
name: "VAppBarNavIcon",
|
||||
props: makeVAppBarNavIconProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => createVNode(VBtn, mergeProps(props, {
|
||||
"class": ["v-app-bar-nav-icon"]
|
||||
}), slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VAppBar/VAppBarTitle.js
|
||||
var VAppBarTitle = genericComponent()({
|
||||
name: "VAppBarTitle",
|
||||
props: makeVToolbarTitleProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => createVNode(VToolbarTitle, mergeProps(props, {
|
||||
"class": "v-app-bar-title"
|
||||
}), slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VAppBar,
|
||||
VAppBarNavIcon,
|
||||
VAppBarTitle
|
||||
};
|
||||
//# sourceMappingURL=chunk-BXEVD6W6.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+501
@@ -0,0 +1,501 @@
|
||||
import {
|
||||
VInput,
|
||||
VLabel,
|
||||
makeVInputProps,
|
||||
useFocus
|
||||
} from "./chunk-4VABFUPG.js";
|
||||
import {
|
||||
makeDensityProps,
|
||||
useDensity
|
||||
} from "./chunk-TM3MIDYC.js";
|
||||
import {
|
||||
VIcon
|
||||
} from "./chunk-CMZ4UYUX.js";
|
||||
import {
|
||||
ripple_default
|
||||
} from "./chunk-5BPWKCNA.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
IconValue
|
||||
} from "./chunk-OJDZBU5D.js";
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
useBackgroundColor,
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
deepEqual,
|
||||
filterInputAttrs,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
matchesSelector,
|
||||
omit,
|
||||
propsFactory,
|
||||
provideDefaults,
|
||||
useRender,
|
||||
wrapInArray
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
inject,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
onScopeDispose,
|
||||
provide,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
useId,
|
||||
withDirectives
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VCheckbox/VCheckbox.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VCheckbox/VCheckbox.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.css";
|
||||
var VSelectionControlGroupSymbol = /* @__PURE__ */ Symbol.for("vuetify:selection-control-group");
|
||||
var makeSelectionControlGroupProps = propsFactory({
|
||||
color: String,
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
defaultsTarget: String,
|
||||
error: Boolean,
|
||||
id: String,
|
||||
inline: Boolean,
|
||||
falseIcon: IconValue,
|
||||
trueIcon: IconValue,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
name: String,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
modelValue: null,
|
||||
type: String,
|
||||
valueComparator: {
|
||||
type: Function,
|
||||
default: deepEqual
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeThemeProps()
|
||||
}, "SelectionControlGroup");
|
||||
var makeVSelectionControlGroupProps = propsFactory({
|
||||
...makeSelectionControlGroupProps({
|
||||
defaultsTarget: "VSelectionControl"
|
||||
})
|
||||
}, "VSelectionControlGroup");
|
||||
var VSelectionControlGroup = genericComponent()({
|
||||
name: "VSelectionControlGroup",
|
||||
props: makeVSelectionControlGroupProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const modelValue = useProxiedModel(props, "modelValue");
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-selection-control-group-${uid}`);
|
||||
const name = toRef(() => props.name || id.value);
|
||||
const updateHandlers = /* @__PURE__ */ new Set();
|
||||
provide(VSelectionControlGroupSymbol, {
|
||||
modelValue,
|
||||
forceUpdate: () => {
|
||||
updateHandlers.forEach((fn) => fn());
|
||||
},
|
||||
onForceUpdate: (cb) => {
|
||||
updateHandlers.add(cb);
|
||||
onScopeDispose(() => {
|
||||
updateHandlers.delete(cb);
|
||||
});
|
||||
}
|
||||
});
|
||||
provideDefaults({
|
||||
[props.defaultsTarget]: {
|
||||
color: toRef(() => props.color),
|
||||
disabled: toRef(() => props.disabled),
|
||||
density: toRef(() => props.density),
|
||||
error: toRef(() => props.error),
|
||||
inline: toRef(() => props.inline),
|
||||
modelValue,
|
||||
multiple: toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
|
||||
name,
|
||||
falseIcon: toRef(() => props.falseIcon),
|
||||
trueIcon: toRef(() => props.trueIcon),
|
||||
readonly: toRef(() => props.readonly),
|
||||
ripple: toRef(() => props.ripple),
|
||||
type: toRef(() => props.type),
|
||||
valueComparator: toRef(() => props.valueComparator)
|
||||
}
|
||||
});
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-selection-control-group", {
|
||||
"v-selection-control-group--inline": props.inline
|
||||
}, props.class]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"role": props.type === "radio" ? "radiogroup" : void 0
|
||||
}, [slots.default?.()]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.js
|
||||
var makeVSelectionControlProps = propsFactory({
|
||||
label: String,
|
||||
baseColor: String,
|
||||
trueValue: null,
|
||||
falseValue: null,
|
||||
value: null,
|
||||
...makeComponentProps(),
|
||||
...makeSelectionControlGroupProps()
|
||||
}, "VSelectionControl");
|
||||
function useSelectionControl(props) {
|
||||
const group = inject(VSelectionControlGroupSymbol, void 0);
|
||||
const {
|
||||
densityClasses
|
||||
} = useDensity(props);
|
||||
const modelValue = useProxiedModel(props, "modelValue");
|
||||
const trueValue = computed(() => props.trueValue !== void 0 ? props.trueValue : props.value !== void 0 ? props.value : true);
|
||||
const falseValue = computed(() => props.falseValue !== void 0 ? props.falseValue : false);
|
||||
const isMultiple = computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value));
|
||||
const model = computed({
|
||||
get() {
|
||||
const val = group ? group.modelValue.value : modelValue.value;
|
||||
return isMultiple.value ? wrapInArray(val).some((v) => props.valueComparator(v, trueValue.value)) : props.valueComparator(val, trueValue.value);
|
||||
},
|
||||
set(val) {
|
||||
if (props.readonly) return;
|
||||
const currentValue = val ? trueValue.value : falseValue.value;
|
||||
let newVal = currentValue;
|
||||
if (isMultiple.value) {
|
||||
newVal = val ? [...wrapInArray(modelValue.value), currentValue] : wrapInArray(modelValue.value).filter((item) => !props.valueComparator(item, trueValue.value));
|
||||
}
|
||||
if (group) {
|
||||
group.modelValue.value = newVal;
|
||||
} else {
|
||||
modelValue.value = newVal;
|
||||
}
|
||||
}
|
||||
});
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(() => {
|
||||
if (props.error || props.disabled) return void 0;
|
||||
return model.value ? props.color : props.baseColor;
|
||||
});
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => {
|
||||
return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
|
||||
});
|
||||
const icon = computed(() => model.value ? props.trueIcon : props.falseIcon);
|
||||
return {
|
||||
group,
|
||||
densityClasses,
|
||||
trueValue,
|
||||
falseValue,
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
icon
|
||||
};
|
||||
}
|
||||
var VSelectionControl = genericComponent()({
|
||||
name: "VSelectionControl",
|
||||
directives: {
|
||||
vRipple: ripple_default
|
||||
},
|
||||
inheritAttrs: false,
|
||||
props: makeVSelectionControlProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
group,
|
||||
densityClasses,
|
||||
icon,
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
trueValue
|
||||
} = useSelectionControl(props);
|
||||
const uid = useId();
|
||||
const isFocused = shallowRef(false);
|
||||
const isFocusVisible = shallowRef(false);
|
||||
const input = ref();
|
||||
const id = toRef(() => props.id || `input-${uid}`);
|
||||
const isInteractive = toRef(() => !props.disabled && !props.readonly);
|
||||
group?.onForceUpdate(() => {
|
||||
if (input.value) {
|
||||
input.value.checked = model.value;
|
||||
}
|
||||
});
|
||||
function onFocus(e) {
|
||||
if (!isInteractive.value) return;
|
||||
isFocused.value = true;
|
||||
if (matchesSelector(e.target, ":focus-visible") !== false) {
|
||||
isFocusVisible.value = true;
|
||||
}
|
||||
}
|
||||
function onBlur() {
|
||||
isFocused.value = false;
|
||||
isFocusVisible.value = false;
|
||||
}
|
||||
function onClickLabel(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
function onInput(e) {
|
||||
if (!isInteractive.value) {
|
||||
if (input.value) {
|
||||
input.value.checked = model.value;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (props.readonly && group) {
|
||||
nextTick(() => group.forceUpdate());
|
||||
}
|
||||
model.value = e.target.checked;
|
||||
}
|
||||
useRender(() => {
|
||||
const label = slots.label ? slots.label({
|
||||
label: props.label,
|
||||
props: {
|
||||
for: id.value
|
||||
}
|
||||
}) : props.label;
|
||||
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
||||
const inputNode = createBaseVNode("input", mergeProps({
|
||||
"ref": input,
|
||||
"checked": model.value,
|
||||
"disabled": !!props.disabled,
|
||||
"id": id.value,
|
||||
"onBlur": onBlur,
|
||||
"onFocus": onFocus,
|
||||
"onInput": onInput,
|
||||
"aria-disabled": !!props.disabled,
|
||||
"aria-label": props.label,
|
||||
"type": props.type,
|
||||
"value": trueValue.value,
|
||||
"name": props.name,
|
||||
"aria-checked": props.type === "checkbox" ? model.value : void 0
|
||||
}, inputAttrs), null);
|
||||
return createBaseVNode("div", mergeProps({
|
||||
"class": ["v-selection-control", {
|
||||
"v-selection-control--dirty": model.value,
|
||||
"v-selection-control--disabled": props.disabled,
|
||||
"v-selection-control--error": props.error,
|
||||
"v-selection-control--focused": isFocused.value,
|
||||
"v-selection-control--focus-visible": isFocusVisible.value,
|
||||
"v-selection-control--inline": props.inline
|
||||
}, densityClasses.value, props.class]
|
||||
}, rootAttrs, {
|
||||
"style": props.style
|
||||
}), [createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-selection-control__wrapper", textColorClasses.value]),
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, [slots.default?.({
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
}), withDirectives(createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-selection-control__input"])
|
||||
}, [slots.input?.({
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
inputNode,
|
||||
icon: icon.value,
|
||||
props: {
|
||||
onFocus,
|
||||
onBlur,
|
||||
id: id.value
|
||||
}
|
||||
}) ?? createBaseVNode(Fragment, null, [icon.value && createVNode(VIcon, {
|
||||
"key": "icon",
|
||||
"icon": icon.value
|
||||
}, null), inputNode])]), [[ripple_default, !props.disabled && !props.readonly && props.ripple, null, {
|
||||
center: true,
|
||||
circle: true
|
||||
}]])]), label && createVNode(VLabel, {
|
||||
"for": id.value,
|
||||
"onClick": onClickLabel
|
||||
}, {
|
||||
default: () => [label]
|
||||
})]);
|
||||
});
|
||||
return {
|
||||
isFocused,
|
||||
input
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VCheckbox/VCheckboxBtn.js
|
||||
var makeVCheckboxBtnProps = propsFactory({
|
||||
indeterminate: Boolean,
|
||||
indeterminateIcon: {
|
||||
type: IconValue,
|
||||
default: "$checkboxIndeterminate"
|
||||
},
|
||||
...makeVSelectionControlProps({
|
||||
falseIcon: "$checkboxOff",
|
||||
trueIcon: "$checkboxOn"
|
||||
})
|
||||
}, "VCheckboxBtn");
|
||||
var VCheckboxBtn = genericComponent()({
|
||||
name: "VCheckboxBtn",
|
||||
props: makeVCheckboxBtnProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true,
|
||||
"update:indeterminate": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const indeterminate = useProxiedModel(props, "indeterminate");
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
function onChange(v) {
|
||||
if (indeterminate.value) {
|
||||
indeterminate.value = false;
|
||||
}
|
||||
}
|
||||
const falseIcon = toRef(() => {
|
||||
return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
|
||||
});
|
||||
const trueIcon = toRef(() => {
|
||||
return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
|
||||
});
|
||||
useRender(() => {
|
||||
const controlProps = omit(VSelectionControl.filterProps(props), ["modelValue"]);
|
||||
return createVNode(VSelectionControl, mergeProps(controlProps, {
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": [($event) => model.value = $event, onChange],
|
||||
"class": ["v-checkbox-btn", props.class],
|
||||
"style": props.style,
|
||||
"type": "checkbox",
|
||||
"falseIcon": falseIcon.value,
|
||||
"trueIcon": trueIcon.value,
|
||||
"aria-checked": indeterminate.value ? "mixed" : void 0
|
||||
}), slots);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VCheckbox/VCheckbox.js
|
||||
var makeVCheckboxProps = propsFactory({
|
||||
...makeVInputProps(),
|
||||
...omit(makeVCheckboxBtnProps(), ["inline"])
|
||||
}, "VCheckbox");
|
||||
var VCheckbox = genericComponent()({
|
||||
name: "VCheckbox",
|
||||
inheritAttrs: false,
|
||||
props: makeVCheckboxProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true,
|
||||
"update:focused": (focused) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
const {
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
} = useFocus(props);
|
||||
const inputRef = ref();
|
||||
const uid = useId();
|
||||
useRender(() => {
|
||||
const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
|
||||
const inputProps = VInput.filterProps(props);
|
||||
const checkboxProps = VCheckboxBtn.filterProps(props);
|
||||
return createVNode(VInput, mergeProps({
|
||||
"ref": inputRef,
|
||||
"class": ["v-checkbox", props.class]
|
||||
}, rootAttrs, inputProps, {
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": ($event) => model.value = $event,
|
||||
"id": props.id || `checkbox-${uid}`,
|
||||
"focused": isFocused.value,
|
||||
"style": props.style
|
||||
}), {
|
||||
...slots,
|
||||
default: (_ref2) => {
|
||||
let {
|
||||
id,
|
||||
messagesId,
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isValid
|
||||
} = _ref2;
|
||||
return createVNode(VCheckboxBtn, mergeProps(checkboxProps, {
|
||||
"id": id.value,
|
||||
"aria-describedby": messagesId.value,
|
||||
"disabled": isDisabled.value,
|
||||
"readonly": isReadonly.value
|
||||
}, controlAttrs, {
|
||||
"error": isValid.value === false,
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": ($event) => model.value = $event,
|
||||
"onFocus": focus,
|
||||
"onBlur": blur
|
||||
}), slots);
|
||||
}
|
||||
});
|
||||
});
|
||||
return forwardRefs({}, inputRef);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
makeSelectionControlGroupProps,
|
||||
VSelectionControlGroup,
|
||||
makeVSelectionControlProps,
|
||||
VSelectionControl,
|
||||
VCheckboxBtn,
|
||||
VCheckbox
|
||||
};
|
||||
//# sourceMappingURL=chunk-BYBKODOB.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+53
@@ -0,0 +1,53 @@
|
||||
import {
|
||||
isObject,
|
||||
onlyDefinedProps,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
h,
|
||||
mergeProps
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/transition.js
|
||||
var makeTransitionProps = propsFactory({
|
||||
transition: {
|
||||
type: null,
|
||||
default: "fade-transition",
|
||||
validator: (val) => val !== true
|
||||
}
|
||||
}, "transition");
|
||||
var MaybeTransition = (props, _ref) => {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
transition,
|
||||
disabled,
|
||||
group,
|
||||
...rest
|
||||
} = props;
|
||||
const {
|
||||
component = group ? TransitionGroup : Transition,
|
||||
...customProps
|
||||
} = isObject(transition) ? transition : {};
|
||||
let transitionProps;
|
||||
if (isObject(transition)) {
|
||||
transitionProps = mergeProps(customProps, onlyDefinedProps({
|
||||
disabled,
|
||||
group
|
||||
}), rest);
|
||||
} else {
|
||||
transitionProps = mergeProps({
|
||||
name: disabled || !transition ? "" : transition
|
||||
}, rest);
|
||||
}
|
||||
return h(component, transitionProps, slots);
|
||||
};
|
||||
|
||||
export {
|
||||
makeTransitionProps,
|
||||
MaybeTransition
|
||||
};
|
||||
//# sourceMappingURL=chunk-CAGZXMOS.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/transition.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } from 'vue'\nimport { isObject, onlyDefinedProps, propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, Prop, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: null,\n default: 'fade-transition',\n validator: val => val !== true,\n } as Prop<null | string | boolean | TransitionProps & { component?: Component }>,\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: null | string | boolean | TransitionProps & { component?: any }\n disabled?: boolean\n group?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props\n\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = isObject(transition) ? transition : {}\n\n let transitionProps\n if (isObject(transition)) {\n transitionProps = mergeProps(\n customProps,\n onlyDefinedProps({ disabled, group }),\n rest,\n )\n } else {\n transitionProps = mergeProps(\n { name: disabled || !transition ? '' : transition },\n rest,\n )\n }\n\n return h(\n component,\n transitionProps,\n slots\n )\n}\n"],
|
||||
"mappings": ";;;;;;;;;;;;;AAOO,IAAMA,sBAAsBC,aAAa;EAC9CC,YAAY;IACVC,MAAM;IACNC,SAAS;IACTC,WAAWC,SAAOA,QAAQ;EAC5B;AACF,GAAG,YAAY;AAQR,IAAMC,kBAA6DA,CAACC,OAAKC,SAAgB;AAAA,MAAd;IAAEC;EAAM,IAACD;AACzF,QAAM;IAAEP;IAAYS;IAAUC;IAAO,GAAGC;EAAK,IAAIL;AAEjD,QAAM;IACJM,YAAYF,QAAQG,kBAAkBC;IACtC,GAAGC;EACL,IAAIC,SAAShB,UAAU,IAAIA,aAAa,CAAC;AAEzC,MAAIiB;AACJ,MAAID,SAAShB,UAAU,GAAG;AACxBiB,sBAAkBC,WAChBH,aACAI,iBAAiB;MAAEV;MAAUC;IAAM,CAAC,GACpCC,IACF;EACF,OAAO;AACLM,sBAAkBC,WAChB;MAAEE,MAAMX,YAAY,CAACT,aAAa,KAAKA;IAAW,GAClDW,IACF;EACF;AAEA,SAAOU,EACLT,WACAK,iBACAT,KACF;AACF;",
|
||||
"names": ["makeTransitionProps", "propsFactory", "transition", "type", "default", "validator", "val", "MaybeTransition", "props", "_ref", "slots", "disabled", "group", "rest", "component", "TransitionGroup", "Transition", "customProps", "isObject", "transitionProps", "mergeProps", "onlyDefinedProps", "name", "h"]
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
import {
|
||||
makeSizeProps,
|
||||
useSize
|
||||
} from "./chunk-PIT7IT55.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
IconValue,
|
||||
useIcon
|
||||
} from "./chunk-OJDZBU5D.js";
|
||||
import {
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
useTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
convertToUnit,
|
||||
flattenFragments,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Text,
|
||||
createVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
shallowRef
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VIcon/VIcon.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VIcon/VIcon.css";
|
||||
var makeVIconProps = propsFactory({
|
||||
color: String,
|
||||
disabled: Boolean,
|
||||
start: Boolean,
|
||||
end: Boolean,
|
||||
icon: IconValue,
|
||||
opacity: [String, Number],
|
||||
...makeComponentProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({
|
||||
tag: "i"
|
||||
}),
|
||||
...makeThemeProps()
|
||||
}, "VIcon");
|
||||
var VIcon = genericComponent()({
|
||||
name: "VIcon",
|
||||
props: makeVIconProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const slotIcon = shallowRef();
|
||||
const {
|
||||
themeClasses
|
||||
} = useTheme();
|
||||
const {
|
||||
iconData
|
||||
} = useIcon(() => slotIcon.value || props.icon);
|
||||
const {
|
||||
sizeClasses
|
||||
} = useSize(props);
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(() => props.color);
|
||||
useRender(() => {
|
||||
const slotValue = slots.default?.();
|
||||
if (slotValue) {
|
||||
slotIcon.value = flattenFragments(slotValue).filter((node) => node.type === Text && node.children && typeof node.children === "string")[0]?.children;
|
||||
}
|
||||
const hasClick = !!(attrs.onClick || attrs.onClickOnce);
|
||||
return createVNode(iconData.value.component, {
|
||||
"tag": props.tag,
|
||||
"icon": iconData.value.icon,
|
||||
"class": normalizeClass(["v-icon", "notranslate", themeClasses.value, sizeClasses.value, textColorClasses.value, {
|
||||
"v-icon--clickable": hasClick,
|
||||
"v-icon--disabled": props.disabled,
|
||||
"v-icon--start": props.start,
|
||||
"v-icon--end": props.end
|
||||
}, props.class]),
|
||||
"style": normalizeStyle([{
|
||||
"--v-icon-opacity": props.opacity
|
||||
}, !sizeClasses.value ? {
|
||||
fontSize: convertToUnit(props.size),
|
||||
height: convertToUnit(props.size),
|
||||
width: convertToUnit(props.size)
|
||||
} : void 0, textColorStyles.value, props.style]),
|
||||
"role": hasClick ? "button" : void 0,
|
||||
"aria-hidden": !hasClick,
|
||||
"tabindex": hasClick ? props.disabled ? -1 : 0 : void 0
|
||||
}, {
|
||||
default: () => [slotValue]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VIcon
|
||||
};
|
||||
//# sourceMappingURL=chunk-CMZ4UYUX.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/components/VIcon/VIcon.tsx"],
|
||||
"sourcesContent": ["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\n\n// Utilities\nimport { shallowRef, Text } from 'vue'\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n disabled: Boolean,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n opacity: [String, Number],\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = shallowRef<string>()\n\n const { themeClasses } = useTheme()\n const { iconData } = useIcon(() => slotIcon.value || props.icon)\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(() => props.color)\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n const hasClick = !!(attrs.onClick || attrs.onClickOnce)\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': hasClick,\n 'v-icon--disabled': props.disabled,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n {\n '--v-icon-opacity': props.opacity,\n },\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ hasClick ? 'button' : undefined }\n aria-hidden={ !hasClick }\n tabindex={ hasClick ? props.disabled ? -1 : 0 : undefined }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAA;AAcO,IAAMA,iBAAiBC,aAAa;EACzCC,OAAOC;EACPC,UAAUC;EACVC,OAAOD;EACPE,KAAKF;EACLG,MAAMC;EACNC,SAAS,CAACP,QAAQQ,MAAM;EAExB,GAAGC,mBAAmB;EACtB,GAAGC,cAAc;EACjB,GAAGC,aAAa;IAAEC,KAAK;EAAI,CAAC;EAC5B,GAAGC,eAAe;AACpB,GAAG,OAAO;AAEH,IAAMC,QAAQC,iBAAiB,EAAE;EACtCC,MAAM;EAENC,OAAOpB,eAAe;EAEtBqB,MAAOD,OAAKE,MAAoB;AAAA,QAAlB;MAAEC;MAAOC;IAAM,IAACF;AAC5B,UAAMG,WAAWC,WAAmB;AAEpC,UAAM;MAAEC;IAAa,IAAIC,SAAS;AAClC,UAAM;MAAEC;IAAS,IAAIC,QAAQ,MAAML,SAASM,SAASX,MAAMZ,IAAI;AAC/D,UAAM;MAAEwB;IAAY,IAAIC,QAAQb,KAAK;AACrC,UAAM;MAAEc;MAAkBC;IAAgB,IAAIC,aAAa,MAAMhB,MAAMlB,KAAK;AAE5EmC,cAAU,MAAM;AACd,YAAMC,YAAYd,MAAMe,UAAU;AAClC,UAAID,WAAW;AACbb,iBAASM,QAAQS,iBAAiBF,SAAS,EAAEG,OAAOC,UAClDA,KAAKC,SAASC,QAAQF,KAAKG,YAAY,OAAOH,KAAKG,aAAa,QAClE,EAAE,CAAC,GAAGA;MACR;AACA,YAAMC,WAAW,CAAC,EAAEvB,MAAMwB,WAAWxB,MAAMyB;AAE3C,aAAAC,YAAApB,SAAAE,MAAAmB,WAAA;QAAA,OAEU9B,MAAML;QAAG,QACRc,SAASE,MAAMvB;QAAI,SAAA2C,eACnB,CACL,UACA,eACAxB,aAAaI,OACbC,YAAYD,OACZG,iBAAiBH,OACjB;UACE,qBAAqBe;UACrB,oBAAoB1B,MAAMhB;UAC1B,iBAAiBgB,MAAMd;UACvB,eAAec,MAAMb;QACvB,GACAa,MAAMgC,KAAK,CACZ;QAAA,SAAAC,eACM,CACL;UACE,oBAAoBjC,MAAMV;QAC5B,GACA,CAACsB,YAAYD,QAAS;UACpBuB,UAAUC,cAAcnC,MAAMoC,IAAI;UAClCC,QAAQF,cAAcnC,MAAMoC,IAAI;UAChCE,OAAOH,cAAcnC,MAAMoC,IAAI;QACjC,IAAKG,QACLxB,gBAAgBJ,OAChBX,MAAMwC,KAAK,CACZ;QAAA,QACMd,WAAW,WAAWa;QAAS,eACxB,CAACb;QAAQ,YACZA,WAAW1B,MAAMhB,WAAW,KAAK,IAAIuD;MAAS,GAAA;QAAApB,SAAAA,MAAA,CAEvDD,SAAS;MAAA,CAAA;IAGjB,CAAC;AAED,WAAO,CAAC;EACV;AACF,CAAC;",
|
||||
"names": ["makeVIconProps", "propsFactory", "color", "String", "disabled", "Boolean", "start", "end", "icon", "IconValue", "opacity", "Number", "makeComponentProps", "makeSizeProps", "makeTagProps", "tag", "makeThemeProps", "VIcon", "genericComponent", "name", "props", "setup", "_ref", "attrs", "slots", "slotIcon", "shallowRef", "themeClasses", "useTheme", "iconData", "useIcon", "value", "sizeClasses", "useSize", "textColorClasses", "textColorStyles", "useTextColor", "useRender", "slotValue", "default", "flattenFragments", "filter", "node", "type", "Text", "children", "hasClick", "onClick", "onClickOnce", "_createVNode", "component", "_normalizeClass", "class", "_normalizeStyle", "fontSize", "convertToUnit", "size", "height", "width", "undefined", "style"]
|
||||
}
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
useSsrBoot
|
||||
} from "./chunk-PCKQGDLK.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
makeDimensionProps,
|
||||
useDimension
|
||||
} from "./chunk-6EZKHCRW.js";
|
||||
import {
|
||||
useLayout
|
||||
} from "./chunk-KQXZAEJP.js";
|
||||
import {
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VMain/VMain.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VMain/VMain.css";
|
||||
var makeVMainProps = propsFactory({
|
||||
scrollable: Boolean,
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps(),
|
||||
...makeTagProps({
|
||||
tag: "main"
|
||||
})
|
||||
}, "VMain");
|
||||
var VMain = genericComponent()({
|
||||
name: "VMain",
|
||||
props: makeVMainProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
dimensionStyles
|
||||
} = useDimension(props);
|
||||
const {
|
||||
mainStyles
|
||||
} = useLayout();
|
||||
const {
|
||||
ssrBootStyles
|
||||
} = useSsrBoot();
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-main", {
|
||||
"v-main--scrollable": props.scrollable
|
||||
}, props.class]),
|
||||
"style": normalizeStyle([mainStyles.value, ssrBootStyles.value, dimensionStyles.value, props.style])
|
||||
}, {
|
||||
default: () => [props.scrollable ? createBaseVNode("div", {
|
||||
"class": "v-main__scroller"
|
||||
}, [slots.default?.()]) : slots.default?.()]
|
||||
}));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VMain
|
||||
};
|
||||
//# sourceMappingURL=chunk-DRSCVHAQ.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/components/VMain/VMain.tsx"],
|
||||
"sourcesContent": ["// Styles\nimport './VMain.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useLayout } from '@/composables/layout'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({ tag: 'main' }),\n}, 'VMain')\n\nexport const VMain = genericComponent()({\n name: 'VMain',\n\n props: makeVMainProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n const { mainStyles } = useLayout()\n const { ssrBootStyles } = useSsrBoot()\n\n useRender(() => (\n <props.tag\n class={[\n 'v-main',\n { 'v-main--scrollable': props.scrollable },\n props.class,\n ]}\n style={[\n mainStyles.value,\n ssrBootStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n >\n { props.scrollable\n ? (\n <div class=\"v-main__scroller\">\n { slots.default?.() }\n </div>\n )\n : slots.default?.()\n }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VMain = InstanceType<typeof VMain>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAA;AAYO,IAAMA,iBAAiBC,aAAa;EACzCC,YAAYC;EAEZ,GAAGC,mBAAmB;EACtB,GAAGC,mBAAmB;EACtB,GAAGC,aAAa;IAAEC,KAAK;EAAO,CAAC;AACjC,GAAG,OAAO;AAEH,IAAMC,QAAQC,iBAAiB,EAAE;EACtCC,MAAM;EAENC,OAAOX,eAAe;EAEtBY,MAAOD,OAAKE,MAAa;AAAA,QAAX;MAAEC;IAAM,IAACD;AACrB,UAAM;MAAEE;IAAgB,IAAIC,aAAaL,KAAK;AAC9C,UAAM;MAAEM;IAAW,IAAIC,UAAU;AACjC,UAAM;MAAEC;IAAc,IAAIC,WAAW;AAErCC,cAAU,MAAAC,YAAAX,MAAAJ,KAAA;MAAA,SAAAgB,eAEC,CACL,UACA;QAAE,sBAAsBZ,MAAMT;MAAW,GACzCS,MAAMa,KAAK,CACZ;MAAA,SAAAC,eACM,CACLR,WAAWS,OACXP,cAAcO,OACdX,gBAAgBW,OAChBf,MAAMgB,KAAK,CACZ;IAAA,GAAA;MAAAC,SAAAA,MAAA,CAECjB,MAAMT,aAAU2B,gBAAA,OAAA;QAAA,SAAA;MAAA,GAAA,CAGVf,MAAMc,UAAU,CAAC,CAAA,IAGrBd,MAAMc,UAAU,CAAC;IAAA,CAAA,CAGxB;AAED,WAAO,CAAC;EACV;AACF,CAAC;",
|
||||
"names": ["makeVMainProps", "propsFactory", "scrollable", "Boolean", "makeComponentProps", "makeDimensionProps", "makeTagProps", "tag", "VMain", "genericComponent", "name", "props", "setup", "_ref", "slots", "dimensionStyles", "useDimension", "mainStyles", "useLayout", "ssrBootStyles", "useSsrBoot", "useRender", "_createVNode", "_normalizeClass", "class", "_normalizeStyle", "value", "style", "default", "_createElementVNode"]
|
||||
}
|
||||
+409
@@ -0,0 +1,409 @@
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
consoleError,
|
||||
consoleWarn,
|
||||
getObjectValueByPath
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
inject,
|
||||
provide,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/locale/en.js
|
||||
var en_default = {
|
||||
badge: "Badge",
|
||||
open: "Open",
|
||||
close: "Close",
|
||||
dismiss: "Dismiss",
|
||||
confirmEdit: {
|
||||
ok: "OK",
|
||||
cancel: "Cancel"
|
||||
},
|
||||
dataIterator: {
|
||||
noResultsText: "No matching records found",
|
||||
loadingText: "Loading items..."
|
||||
},
|
||||
dataTable: {
|
||||
itemsPerPageText: "Rows per page:",
|
||||
ariaLabel: {
|
||||
sortDescending: "Sorted descending.",
|
||||
sortAscending: "Sorted ascending.",
|
||||
sortNone: "Not sorted.",
|
||||
activateNone: "Activate to remove sorting.",
|
||||
activateDescending: "Activate to sort descending.",
|
||||
activateAscending: "Activate to sort ascending."
|
||||
},
|
||||
sortBy: "Sort by"
|
||||
},
|
||||
dataFooter: {
|
||||
itemsPerPageText: "Items per page:",
|
||||
itemsPerPageAll: "All",
|
||||
nextPage: "Next page",
|
||||
prevPage: "Previous page",
|
||||
firstPage: "First page",
|
||||
lastPage: "Last page",
|
||||
pageText: "{0}-{1} of {2}"
|
||||
},
|
||||
dateRangeInput: {
|
||||
divider: "to"
|
||||
},
|
||||
datePicker: {
|
||||
itemsSelected: "{0} selected",
|
||||
range: {
|
||||
title: "Select dates",
|
||||
header: "Enter dates"
|
||||
},
|
||||
title: "Select date",
|
||||
header: "Enter date",
|
||||
input: {
|
||||
placeholder: "Enter date"
|
||||
},
|
||||
ariaLabel: {
|
||||
previousMonth: "Previous month",
|
||||
nextMonth: "Next month",
|
||||
selectYear: "Select year",
|
||||
previousYear: "Previous year",
|
||||
nextYear: "Next year",
|
||||
selectMonth: "Select month",
|
||||
selectDate: "{0}",
|
||||
// Full date format
|
||||
currentDate: "Today, {0}"
|
||||
}
|
||||
},
|
||||
noDataText: "No data available",
|
||||
carousel: {
|
||||
prev: "Previous visual",
|
||||
next: "Next visual",
|
||||
ariaLabel: {
|
||||
delimiter: "Carousel slide {0} of {1}"
|
||||
}
|
||||
},
|
||||
calendar: {
|
||||
moreEvents: "{0} more",
|
||||
today: "Today"
|
||||
},
|
||||
input: {
|
||||
clear: "Clear {0}",
|
||||
prependAction: "{0} prepended action",
|
||||
appendAction: "{0} appended action",
|
||||
otp: "Please enter OTP character {0}"
|
||||
},
|
||||
fileInput: {
|
||||
counter: "{0} files",
|
||||
counterSize: "{0} files ({1} in total)"
|
||||
},
|
||||
fileUpload: {
|
||||
title: "Drag and drop files here",
|
||||
divider: "or",
|
||||
browse: "Browse Files"
|
||||
},
|
||||
timePicker: {
|
||||
am: "AM",
|
||||
pm: "PM",
|
||||
title: "Select Time",
|
||||
hour: "Hour",
|
||||
minute: "Minute",
|
||||
second: "Second"
|
||||
},
|
||||
pagination: {
|
||||
ariaLabel: {
|
||||
root: "Pagination Navigation",
|
||||
next: "Next page",
|
||||
previous: "Previous page",
|
||||
page: "Go to page {0}",
|
||||
currentPage: "Page {0}, Current page",
|
||||
first: "First page",
|
||||
last: "Last page"
|
||||
}
|
||||
},
|
||||
stepper: {
|
||||
next: "Next",
|
||||
prev: "Previous"
|
||||
},
|
||||
rating: {
|
||||
ariaLabel: {
|
||||
item: "Rating {0} of {1}"
|
||||
}
|
||||
},
|
||||
loading: "Loading...",
|
||||
infiniteScroll: {
|
||||
loadMore: "Load more",
|
||||
empty: "No more"
|
||||
},
|
||||
rules: {
|
||||
required: "This field is required",
|
||||
email: "Please enter a valid email",
|
||||
number: "This field can only contain numbers",
|
||||
integer: "This field can only contain integer values",
|
||||
capital: "This field can only contain uppercase letters",
|
||||
maxLength: "You must enter a maximum of {0} characters",
|
||||
minLength: "You must enter a minimum of {0} characters",
|
||||
strictLength: "The length of the entered field is invalid",
|
||||
exclude: "The {0} character is not allowed",
|
||||
notEmpty: "Please choose at least one value",
|
||||
pattern: "Invalid format"
|
||||
},
|
||||
hotkey: {
|
||||
then: "then",
|
||||
ctrl: "Ctrl",
|
||||
command: "Command",
|
||||
space: "Space",
|
||||
shift: "Shift",
|
||||
alt: "Alt",
|
||||
enter: "Enter",
|
||||
escape: "Escape",
|
||||
upArrow: "Up Arrow",
|
||||
downArrow: "Down Arrow",
|
||||
leftArrow: "Left Arrow",
|
||||
rightArrow: "Right Arrow",
|
||||
backspace: "Backspace",
|
||||
option: "Option",
|
||||
plus: "plus",
|
||||
shortcut: "Keyboard shortcut: {0}",
|
||||
or: "or"
|
||||
},
|
||||
video: {
|
||||
play: "Play",
|
||||
pause: "Pause",
|
||||
seek: "Seek",
|
||||
volume: "Volume",
|
||||
showVolume: "Show volume control",
|
||||
mute: "Mute",
|
||||
unmute: "Unmute",
|
||||
enterFullscreen: "Full screen",
|
||||
exitFullscreen: "Exit full screen"
|
||||
},
|
||||
colorPicker: {
|
||||
ariaLabel: {
|
||||
eyedropper: "Select color with eyedropper",
|
||||
hueSlider: "Hue",
|
||||
alphaSlider: "Alpha",
|
||||
redInput: "Red value",
|
||||
greenInput: "Green value",
|
||||
blueInput: "Blue value",
|
||||
alphaInput: "Alpha value",
|
||||
hueInput: "Hue value",
|
||||
saturationInput: "Saturation value",
|
||||
lightnessInput: "Lightness value",
|
||||
hexInput: "HEX value",
|
||||
hexaInput: "HEX with alpha value",
|
||||
changeFormat: "Change color format"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/vuetify/lib/locale/adapters/vuetify.js
|
||||
var LANG_PREFIX = "$vuetify.";
|
||||
var replace = (str, params) => {
|
||||
return str.replace(/\{(\d+)\}/g, (match, index) => {
|
||||
return String(params[Number(index)]);
|
||||
});
|
||||
};
|
||||
var createTranslateFunction = (current, fallback, messages) => {
|
||||
return function(key) {
|
||||
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||||
params[_key - 1] = arguments[_key];
|
||||
}
|
||||
if (!key.startsWith(LANG_PREFIX)) {
|
||||
return replace(key, params);
|
||||
}
|
||||
const shortKey = key.replace(LANG_PREFIX, "");
|
||||
const currentLocale = current.value && messages.value[current.value];
|
||||
const fallbackLocale = fallback.value && messages.value[fallback.value];
|
||||
let str = getObjectValueByPath(currentLocale, shortKey, null);
|
||||
if (!str) {
|
||||
consoleWarn(`Translation key "${key}" not found in "${current.value}", trying fallback locale`);
|
||||
str = getObjectValueByPath(fallbackLocale, shortKey, null);
|
||||
}
|
||||
if (!str) {
|
||||
consoleError(`Translation key "${key}" not found in fallback`);
|
||||
str = key;
|
||||
}
|
||||
if (typeof str !== "string") {
|
||||
consoleError(`Translation key "${key}" has a non-string value`);
|
||||
str = key;
|
||||
}
|
||||
return replace(str, params);
|
||||
};
|
||||
};
|
||||
function createNumberFunction(current, fallback) {
|
||||
return (value, options) => {
|
||||
const numberFormat = new Intl.NumberFormat([current.value, fallback.value], options);
|
||||
return numberFormat.format(value);
|
||||
};
|
||||
}
|
||||
function inferDecimalSeparator(current, fallback) {
|
||||
const format = createNumberFunction(current, fallback);
|
||||
return format(0.1).includes(",") ? "," : ".";
|
||||
}
|
||||
function useProvided(props, prop, provided) {
|
||||
const internal = useProxiedModel(props, prop, props[prop] ?? provided.value);
|
||||
internal.value = props[prop] ?? provided.value;
|
||||
watch(provided, (v) => {
|
||||
if (props[prop] == null) {
|
||||
internal.value = provided.value;
|
||||
}
|
||||
});
|
||||
return internal;
|
||||
}
|
||||
function createProvideFunction(state) {
|
||||
return (props) => {
|
||||
const current = useProvided(props, "locale", state.current);
|
||||
const fallback = useProvided(props, "fallback", state.fallback);
|
||||
const messages = useProvided(props, "messages", state.messages);
|
||||
return {
|
||||
name: "vuetify",
|
||||
current,
|
||||
fallback,
|
||||
messages,
|
||||
decimalSeparator: toRef(() => inferDecimalSeparator(current, fallback)),
|
||||
t: createTranslateFunction(current, fallback, messages),
|
||||
n: createNumberFunction(current, fallback),
|
||||
provide: createProvideFunction({
|
||||
current,
|
||||
fallback,
|
||||
messages
|
||||
})
|
||||
};
|
||||
};
|
||||
}
|
||||
function createVuetifyAdapter(options) {
|
||||
const current = shallowRef(options?.locale ?? "en");
|
||||
const fallback = shallowRef(options?.fallback ?? "en");
|
||||
const messages = ref({
|
||||
en: en_default,
|
||||
...options?.messages
|
||||
});
|
||||
return {
|
||||
name: "vuetify",
|
||||
current,
|
||||
fallback,
|
||||
messages,
|
||||
decimalSeparator: toRef(() => options?.decimalSeparator ?? inferDecimalSeparator(current, fallback)),
|
||||
t: createTranslateFunction(current, fallback, messages),
|
||||
n: createNumberFunction(current, fallback),
|
||||
provide: createProvideFunction({
|
||||
current,
|
||||
fallback,
|
||||
messages
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/locale.js
|
||||
var LocaleSymbol = /* @__PURE__ */ Symbol.for("vuetify:locale");
|
||||
function isLocaleInstance(obj) {
|
||||
return obj.name != null;
|
||||
}
|
||||
function createLocale(options) {
|
||||
const i18n = options?.adapter && isLocaleInstance(options?.adapter) ? options?.adapter : createVuetifyAdapter(options);
|
||||
const rtl = createRtl(i18n, options);
|
||||
return {
|
||||
...i18n,
|
||||
...rtl
|
||||
};
|
||||
}
|
||||
function useLocale() {
|
||||
const locale = inject(LocaleSymbol);
|
||||
if (!locale) throw new Error("[Vuetify] Could not find injected locale instance");
|
||||
return locale;
|
||||
}
|
||||
function provideLocale(props) {
|
||||
const locale = inject(LocaleSymbol);
|
||||
if (!locale) throw new Error("[Vuetify] Could not find injected locale instance");
|
||||
const i18n = locale.provide(props);
|
||||
const rtl = provideRtl(i18n, locale.rtl, props);
|
||||
const data = {
|
||||
...i18n,
|
||||
...rtl
|
||||
};
|
||||
provide(LocaleSymbol, data);
|
||||
return data;
|
||||
}
|
||||
function genDefaults() {
|
||||
return {
|
||||
af: false,
|
||||
ar: true,
|
||||
bg: false,
|
||||
ca: false,
|
||||
ckb: false,
|
||||
cs: false,
|
||||
de: false,
|
||||
el: false,
|
||||
en: false,
|
||||
es: false,
|
||||
et: false,
|
||||
fa: true,
|
||||
fi: false,
|
||||
fr: false,
|
||||
hr: false,
|
||||
hu: false,
|
||||
he: true,
|
||||
id: false,
|
||||
it: false,
|
||||
ja: false,
|
||||
km: false,
|
||||
ko: false,
|
||||
lv: false,
|
||||
lt: false,
|
||||
nl: false,
|
||||
no: false,
|
||||
pl: false,
|
||||
pt: false,
|
||||
ro: false,
|
||||
ru: false,
|
||||
sk: false,
|
||||
sl: false,
|
||||
srCyrl: false,
|
||||
srLatn: false,
|
||||
sv: false,
|
||||
th: false,
|
||||
tr: false,
|
||||
az: false,
|
||||
uk: false,
|
||||
vi: false,
|
||||
zhHans: false,
|
||||
zhHant: false
|
||||
};
|
||||
}
|
||||
function createRtl(i18n, options) {
|
||||
const rtl = ref(options?.rtl ?? genDefaults());
|
||||
const isRtl = computed(() => rtl.value[i18n.current.value] ?? false);
|
||||
return {
|
||||
isRtl,
|
||||
rtl,
|
||||
rtlClasses: toRef(() => `v-locale--is-${isRtl.value ? "rtl" : "ltr"}`)
|
||||
};
|
||||
}
|
||||
function provideRtl(locale, rtl, props) {
|
||||
const isRtl = computed(() => props.rtl ?? rtl.value[locale.current.value] ?? false);
|
||||
return {
|
||||
isRtl,
|
||||
rtl,
|
||||
rtlClasses: toRef(() => `v-locale--is-${isRtl.value ? "rtl" : "ltr"}`)
|
||||
};
|
||||
}
|
||||
function useRtl() {
|
||||
const locale = inject(LocaleSymbol);
|
||||
if (!locale) throw new Error("[Vuetify] Could not find injected rtl instance");
|
||||
return {
|
||||
isRtl: locale.isRtl,
|
||||
rtlClasses: locale.rtlClasses
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
LocaleSymbol,
|
||||
createLocale,
|
||||
useLocale,
|
||||
provideLocale,
|
||||
useRtl
|
||||
};
|
||||
//# sourceMappingURL=chunk-ENTLCOCZ.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+1082
File diff suppressed because it is too large
Load Diff
+7
File diff suppressed because one or more lines are too long
+171
@@ -0,0 +1,171 @@
|
||||
import {
|
||||
useIntersectionObserver
|
||||
} from "./chunk-AJ7MUB7M.js";
|
||||
import {
|
||||
makeSizeProps,
|
||||
useSize
|
||||
} from "./chunk-PIT7IT55.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
useResizeObserver
|
||||
} from "./chunk-XDSAO7OT.js";
|
||||
import {
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
PREFERS_REDUCED_MOTION,
|
||||
clamp,
|
||||
convertToUnit,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
ref,
|
||||
toRef,
|
||||
watchEffect
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.css";
|
||||
var makeVProgressCircularProps = propsFactory({
|
||||
bgColor: String,
|
||||
color: String,
|
||||
indeterminate: [Boolean, String],
|
||||
rounded: Boolean,
|
||||
modelValue: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
rotate: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: 4
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({
|
||||
tag: "div"
|
||||
}),
|
||||
...makeThemeProps()
|
||||
}, "VProgressCircular");
|
||||
var VProgressCircular = genericComponent()({
|
||||
name: "VProgressCircular",
|
||||
props: makeVProgressCircularProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const MAGIC_RADIUS_CONSTANT = 20;
|
||||
const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT;
|
||||
const root = ref();
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
sizeClasses,
|
||||
sizeStyles
|
||||
} = useSize(props);
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(() => props.color);
|
||||
const {
|
||||
textColorClasses: underlayColorClasses,
|
||||
textColorStyles: underlayColorStyles
|
||||
} = useTextColor(() => props.bgColor);
|
||||
const {
|
||||
intersectionRef,
|
||||
isIntersecting
|
||||
} = useIntersectionObserver();
|
||||
const {
|
||||
resizeRef,
|
||||
contentRect
|
||||
} = useResizeObserver();
|
||||
const normalizedValue = toRef(() => clamp(parseFloat(props.modelValue), 0, 100));
|
||||
const width = toRef(() => Number(props.width));
|
||||
const size = toRef(() => {
|
||||
return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
|
||||
});
|
||||
const diameter = toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
|
||||
const strokeWidth = toRef(() => width.value / size.value * diameter.value);
|
||||
const strokeDashOffset = toRef(() => {
|
||||
const baseLength = (100 - normalizedValue.value) / 100 * CIRCUMFERENCE;
|
||||
return props.rounded && normalizedValue.value > 0 && normalizedValue.value < 100 ? convertToUnit(Math.min(CIRCUMFERENCE - 0.01, baseLength + strokeWidth.value)) : convertToUnit(baseLength);
|
||||
});
|
||||
const startAngle = computed(() => {
|
||||
const baseAngle = Number(props.rotate);
|
||||
return props.rounded ? baseAngle + strokeWidth.value / 2 / CIRCUMFERENCE * 360 : baseAngle;
|
||||
});
|
||||
watchEffect(() => {
|
||||
intersectionRef.value = root.value;
|
||||
resizeRef.value = root.value;
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"ref": root,
|
||||
"class": normalizeClass(["v-progress-circular", {
|
||||
"v-progress-circular--indeterminate": !!props.indeterminate,
|
||||
"v-progress-circular--visible": isIntersecting.value,
|
||||
"v-progress-circular--disable-shrink": props.indeterminate && (props.indeterminate === "disable-shrink" || PREFERS_REDUCED_MOTION())
|
||||
}, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class]),
|
||||
"style": normalizeStyle([sizeStyles.value, textColorStyles.value, props.style]),
|
||||
"role": "progressbar",
|
||||
"aria-valuemin": "0",
|
||||
"aria-valuemax": "100",
|
||||
"aria-valuenow": props.indeterminate ? void 0 : normalizedValue.value
|
||||
}, {
|
||||
default: () => [createBaseVNode("svg", {
|
||||
"style": {
|
||||
transform: `rotate(calc(-90deg + ${startAngle.value}deg))`
|
||||
},
|
||||
"xmlns": "http://www.w3.org/2000/svg",
|
||||
"viewBox": `0 0 ${diameter.value} ${diameter.value}`
|
||||
}, [createBaseVNode("circle", {
|
||||
"class": normalizeClass(["v-progress-circular__underlay", underlayColorClasses.value]),
|
||||
"style": normalizeStyle(underlayColorStyles.value),
|
||||
"fill": "transparent",
|
||||
"cx": "50%",
|
||||
"cy": "50%",
|
||||
"r": MAGIC_RADIUS_CONSTANT,
|
||||
"stroke-width": strokeWidth.value,
|
||||
"stroke-dasharray": CIRCUMFERENCE,
|
||||
"stroke-dashoffset": 0
|
||||
}, null), createBaseVNode("circle", {
|
||||
"class": "v-progress-circular__overlay",
|
||||
"fill": "transparent",
|
||||
"cx": "50%",
|
||||
"cy": "50%",
|
||||
"r": MAGIC_RADIUS_CONSTANT,
|
||||
"stroke-width": strokeWidth.value,
|
||||
"stroke-dasharray": CIRCUMFERENCE,
|
||||
"stroke-dashoffset": strokeDashOffset.value,
|
||||
"stroke-linecap": props.rounded ? "round" : void 0
|
||||
}, null)]), slots.default && createBaseVNode("div", {
|
||||
"class": "v-progress-circular__content"
|
||||
}, [slots.default({
|
||||
value: normalizedValue.value
|
||||
})])]
|
||||
}));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VProgressCircular
|
||||
};
|
||||
//# sourceMappingURL=chunk-ET5GCC5W.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
+321
@@ -0,0 +1,321 @@
|
||||
import {
|
||||
useIntersectionObserver
|
||||
} from "./chunk-AJ7MUB7M.js";
|
||||
import {
|
||||
makeLocationProps,
|
||||
useLocation
|
||||
} from "./chunk-KTTVT6V2.js";
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
useResizeObserver
|
||||
} from "./chunk-XDSAO7OT.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useProxiedModel,
|
||||
useToggleScope
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
useBackgroundColor,
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
clamp,
|
||||
convertToUnit,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Transition,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
toValue,
|
||||
watchEffect
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VProgressLinear/chunks.js
|
||||
var makeChunksProps = propsFactory({
|
||||
chunkCount: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
},
|
||||
chunkWidth: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
},
|
||||
chunkGap: {
|
||||
type: [Number, String],
|
||||
default: 4
|
||||
}
|
||||
}, "chunks");
|
||||
function useChunks(props, containerWidth) {
|
||||
const hasChunks = toRef(() => !!props.chunkCount || !!props.chunkWidth);
|
||||
const chunkWidth = computed(() => {
|
||||
const containerSize = toValue(containerWidth);
|
||||
if (!containerSize) {
|
||||
return 0;
|
||||
}
|
||||
if (!props.chunkCount) {
|
||||
return Number(props.chunkWidth);
|
||||
}
|
||||
const count = Number(props.chunkCount);
|
||||
const availableWidth = containerSize - Number(props.chunkGap) * (count - 1);
|
||||
return availableWidth / count;
|
||||
});
|
||||
const chunkGap = toRef(() => Number(props.chunkGap));
|
||||
const chunksMaskStyles = computed(() => {
|
||||
if (!hasChunks.value) {
|
||||
return {};
|
||||
}
|
||||
const chunkGapPx = convertToUnit(chunkGap.value);
|
||||
const chunkWidthPx = convertToUnit(chunkWidth.value);
|
||||
return {
|
||||
maskRepeat: "repeat-x",
|
||||
maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,
|
||||
maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`
|
||||
};
|
||||
});
|
||||
function snapValueToChunk(val) {
|
||||
const containerSize = toValue(containerWidth);
|
||||
if (!containerSize) {
|
||||
return val;
|
||||
}
|
||||
const gapRelativeSize = 100 * chunkGap.value / containerSize;
|
||||
const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
|
||||
const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
|
||||
return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
|
||||
}
|
||||
return {
|
||||
hasChunks,
|
||||
chunksMaskStyles,
|
||||
snapValueToChunk
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/components/VProgressLinear/VProgressLinear.js
|
||||
var makeVProgressLinearProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
active: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
bgColor: String,
|
||||
bgOpacity: [Number, String],
|
||||
bufferValue: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
bufferColor: String,
|
||||
bufferOpacity: [Number, String],
|
||||
clickable: Boolean,
|
||||
color: String,
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: 4
|
||||
},
|
||||
indeterminate: Boolean,
|
||||
max: {
|
||||
type: [Number, String],
|
||||
default: 100
|
||||
},
|
||||
modelValue: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
opacity: [Number, String],
|
||||
reverse: Boolean,
|
||||
stream: Boolean,
|
||||
striped: Boolean,
|
||||
roundedBar: Boolean,
|
||||
...makeChunksProps(),
|
||||
...makeComponentProps(),
|
||||
...makeLocationProps({
|
||||
location: "top"
|
||||
}),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps()
|
||||
}, "VProgressLinear");
|
||||
var VProgressLinear = genericComponent()({
|
||||
name: "VProgressLinear",
|
||||
props: makeVProgressLinearProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const root = ref();
|
||||
const progress = useProxiedModel(props, "modelValue");
|
||||
const {
|
||||
isRtl,
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
locationStyles
|
||||
} = useLocation(props);
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(() => props.color);
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => props.bgColor || props.color);
|
||||
const {
|
||||
backgroundColorClasses: bufferColorClasses,
|
||||
backgroundColorStyles: bufferColorStyles
|
||||
} = useBackgroundColor(() => props.bufferColor || props.bgColor || props.color);
|
||||
const {
|
||||
backgroundColorClasses: barColorClasses,
|
||||
backgroundColorStyles: barColorStyles
|
||||
} = useBackgroundColor(() => props.color);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const {
|
||||
intersectionRef,
|
||||
isIntersecting
|
||||
} = useIntersectionObserver();
|
||||
const max = computed(() => parseFloat(props.max));
|
||||
const height = computed(() => parseFloat(props.height));
|
||||
const normalizedBuffer = computed(() => clamp(parseFloat(props.bufferValue) / max.value * 100, 0, 100));
|
||||
const normalizedValue = computed(() => clamp(parseFloat(progress.value) / max.value * 100, 0, 100));
|
||||
const isReversed = computed(() => isRtl.value !== props.reverse);
|
||||
const transition = computed(() => props.indeterminate ? "fade-transition" : "slide-x-transition");
|
||||
const containerWidth = shallowRef(0);
|
||||
const {
|
||||
hasChunks,
|
||||
chunksMaskStyles,
|
||||
snapValueToChunk
|
||||
} = useChunks(props, containerWidth);
|
||||
useToggleScope(hasChunks, () => {
|
||||
const {
|
||||
resizeRef
|
||||
} = useResizeObserver((entries) => containerWidth.value = entries[0].contentRect.width);
|
||||
watchEffect(() => resizeRef.value = root.value);
|
||||
});
|
||||
const bufferWidth = computed(() => {
|
||||
return hasChunks.value ? snapValueToChunk(normalizedBuffer.value) : normalizedBuffer.value;
|
||||
});
|
||||
const barWidth = computed(() => {
|
||||
return hasChunks.value ? snapValueToChunk(normalizedValue.value) : normalizedValue.value;
|
||||
});
|
||||
function handleClick(e) {
|
||||
if (!intersectionRef.value) return;
|
||||
const {
|
||||
left,
|
||||
right,
|
||||
width
|
||||
} = intersectionRef.value.getBoundingClientRect();
|
||||
const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
|
||||
progress.value = Math.round(value / width * max.value);
|
||||
}
|
||||
watchEffect(() => {
|
||||
intersectionRef.value = root.value;
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"ref": root,
|
||||
"class": normalizeClass(["v-progress-linear", {
|
||||
"v-progress-linear--absolute": props.absolute,
|
||||
"v-progress-linear--active": props.active && isIntersecting.value,
|
||||
"v-progress-linear--reverse": isReversed.value,
|
||||
"v-progress-linear--rounded": props.rounded,
|
||||
"v-progress-linear--rounded-bar": props.roundedBar,
|
||||
"v-progress-linear--striped": props.striped,
|
||||
"v-progress-linear--clickable": props.clickable
|
||||
}, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class]),
|
||||
"style": normalizeStyle([{
|
||||
bottom: props.location === "bottom" ? 0 : void 0,
|
||||
top: props.location === "top" ? 0 : void 0,
|
||||
height: props.active ? convertToUnit(height.value) : 0,
|
||||
"--v-progress-linear-height": convertToUnit(height.value),
|
||||
...props.absolute ? locationStyles.value : {}
|
||||
}, chunksMaskStyles.value, props.style]),
|
||||
"role": "progressbar",
|
||||
"aria-hidden": props.active ? "false" : "true",
|
||||
"aria-valuemin": "0",
|
||||
"aria-valuemax": props.max,
|
||||
"aria-valuenow": props.indeterminate ? void 0 : Math.min(parseFloat(progress.value), max.value),
|
||||
"onClick": props.clickable && handleClick
|
||||
}, {
|
||||
default: () => [props.stream && createBaseVNode("div", {
|
||||
"key": "stream",
|
||||
"class": normalizeClass(["v-progress-linear__stream", textColorClasses.value]),
|
||||
"style": {
|
||||
...textColorStyles.value,
|
||||
[isReversed.value ? "left" : "right"]: convertToUnit(-height.value),
|
||||
borderTop: `${convertToUnit(height.value / 2)} dotted`,
|
||||
opacity: parseFloat(props.bufferOpacity),
|
||||
top: `calc(50% - ${convertToUnit(height.value / 4)})`,
|
||||
width: convertToUnit(100 - normalizedBuffer.value, "%"),
|
||||
"--v-progress-linear-stream-to": convertToUnit(height.value * (isReversed.value ? 1 : -1))
|
||||
}
|
||||
}, null), createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-progress-linear__background", backgroundColorClasses.value]),
|
||||
"style": normalizeStyle([backgroundColorStyles.value, {
|
||||
opacity: parseFloat(props.bgOpacity),
|
||||
width: props.stream ? 0 : void 0
|
||||
}])
|
||||
}, null), createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-progress-linear__buffer", bufferColorClasses.value]),
|
||||
"style": normalizeStyle([bufferColorStyles.value, {
|
||||
opacity: parseFloat(props.bufferOpacity),
|
||||
width: convertToUnit(bufferWidth.value, "%")
|
||||
}])
|
||||
}, null), createVNode(Transition, {
|
||||
"name": transition.value
|
||||
}, {
|
||||
default: () => [!props.indeterminate ? createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-progress-linear__determinate", barColorClasses.value]),
|
||||
"style": normalizeStyle([barColorStyles.value, {
|
||||
width: convertToUnit(barWidth.value, "%")
|
||||
}])
|
||||
}, null) : createBaseVNode("div", {
|
||||
"class": "v-progress-linear__indeterminate"
|
||||
}, [["long", "short"].map((bar) => createBaseVNode("div", {
|
||||
"key": bar,
|
||||
"class": normalizeClass(["v-progress-linear__indeterminate", bar, barColorClasses.value]),
|
||||
"style": normalizeStyle(barColorStyles.value)
|
||||
}, null))])]
|
||||
}), slots.default && createBaseVNode("div", {
|
||||
"class": "v-progress-linear__content"
|
||||
}, [slots.default({
|
||||
value: normalizedValue.value,
|
||||
buffer: normalizedBuffer.value
|
||||
})])]
|
||||
}));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VProgressLinear
|
||||
};
|
||||
//# sourceMappingURL=chunk-FVDWV4NO.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+155
@@ -0,0 +1,155 @@
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
consoleWarn,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
inject,
|
||||
markRaw,
|
||||
provide,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/form.js
|
||||
var FormKey = /* @__PURE__ */ Symbol.for("vuetify:form");
|
||||
var makeFormProps = propsFactory({
|
||||
disabled: Boolean,
|
||||
fastFail: Boolean,
|
||||
readonly: Boolean,
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
validateOn: {
|
||||
type: String,
|
||||
default: "input"
|
||||
}
|
||||
}, "form");
|
||||
function createForm(props) {
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
const isDisabled = toRef(() => props.disabled);
|
||||
const isReadonly = toRef(() => props.readonly);
|
||||
const isValidating = shallowRef(false);
|
||||
const items = ref([]);
|
||||
const errors = ref([]);
|
||||
async function validate() {
|
||||
const results = [];
|
||||
let valid = true;
|
||||
errors.value = [];
|
||||
isValidating.value = true;
|
||||
for (const item of items.value) {
|
||||
const itemErrorMessages = await item.validate();
|
||||
if (itemErrorMessages.length > 0) {
|
||||
valid = false;
|
||||
results.push({
|
||||
id: item.id,
|
||||
errorMessages: itemErrorMessages
|
||||
});
|
||||
}
|
||||
if (!valid && props.fastFail) break;
|
||||
}
|
||||
errors.value = results;
|
||||
isValidating.value = false;
|
||||
return {
|
||||
valid,
|
||||
errors: errors.value
|
||||
};
|
||||
}
|
||||
function reset() {
|
||||
items.value.forEach((item) => item.reset());
|
||||
}
|
||||
function resetValidation() {
|
||||
items.value.forEach((item) => item.resetValidation());
|
||||
}
|
||||
watch(items, () => {
|
||||
let valid = 0;
|
||||
let invalid = 0;
|
||||
const results = [];
|
||||
for (const item of items.value) {
|
||||
if (item.isValid === false) {
|
||||
invalid++;
|
||||
results.push({
|
||||
id: item.id,
|
||||
errorMessages: item.errorMessages
|
||||
});
|
||||
} else if (item.isValid === true) valid++;
|
||||
}
|
||||
errors.value = results;
|
||||
model.value = invalid > 0 ? false : valid === items.value.length ? true : null;
|
||||
}, {
|
||||
deep: true,
|
||||
flush: "post"
|
||||
});
|
||||
provide(FormKey, {
|
||||
register: (_ref) => {
|
||||
let {
|
||||
id,
|
||||
vm,
|
||||
validate: validate2,
|
||||
reset: reset2,
|
||||
resetValidation: resetValidation2
|
||||
} = _ref;
|
||||
if (items.value.some((item) => item.id === id)) {
|
||||
consoleWarn(`Duplicate input name "${id}"`);
|
||||
}
|
||||
items.value.push({
|
||||
id,
|
||||
validate: validate2,
|
||||
reset: reset2,
|
||||
resetValidation: resetValidation2,
|
||||
vm: markRaw(vm),
|
||||
isValid: null,
|
||||
errorMessages: []
|
||||
});
|
||||
},
|
||||
unregister: (id) => {
|
||||
items.value = items.value.filter((item) => {
|
||||
return item.id !== id;
|
||||
});
|
||||
},
|
||||
update: (id, isValid, errorMessages) => {
|
||||
const found = items.value.find((item) => item.id === id);
|
||||
if (!found) return;
|
||||
found.isValid = isValid;
|
||||
found.errorMessages = errorMessages;
|
||||
},
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isValidating,
|
||||
isValid: model,
|
||||
items,
|
||||
validateOn: toRef(() => props.validateOn)
|
||||
});
|
||||
return {
|
||||
errors,
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isValidating,
|
||||
isValid: model,
|
||||
items,
|
||||
validate,
|
||||
reset,
|
||||
resetValidation
|
||||
};
|
||||
}
|
||||
function useForm(props) {
|
||||
const form = inject(FormKey, null);
|
||||
return {
|
||||
...form,
|
||||
isReadonly: computed(() => !!(props?.readonly ?? form?.isReadonly.value)),
|
||||
isDisabled: computed(() => !!(props?.disabled ?? form?.isDisabled.value))
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makeFormProps,
|
||||
createForm,
|
||||
useForm
|
||||
};
|
||||
//# sourceMappingURL=chunk-GAYXO4FM.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+83
@@ -0,0 +1,83 @@
|
||||
// node_modules/vuetify/lib/composables/forwardRefs.js
|
||||
var Refs = /* @__PURE__ */ Symbol("Forwarded refs");
|
||||
function getDescriptor(obj, key) {
|
||||
let currentObj = obj;
|
||||
while (currentObj) {
|
||||
const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);
|
||||
if (descriptor) return descriptor;
|
||||
currentObj = Object.getPrototypeOf(currentObj);
|
||||
}
|
||||
return void 0;
|
||||
}
|
||||
function forwardRefs(target) {
|
||||
for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||||
refs[_key - 1] = arguments[_key];
|
||||
}
|
||||
target[Refs] = refs;
|
||||
return new Proxy(target, {
|
||||
get(target2, key) {
|
||||
if (Reflect.has(target2, key)) {
|
||||
return Reflect.get(target2, key);
|
||||
}
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return;
|
||||
for (const ref of refs) {
|
||||
if (ref.value && Reflect.has(ref.value, key)) {
|
||||
const val = Reflect.get(ref.value, key);
|
||||
return typeof val === "function" ? val.bind(ref.value) : val;
|
||||
}
|
||||
}
|
||||
},
|
||||
has(target2, key) {
|
||||
if (Reflect.has(target2, key)) {
|
||||
return true;
|
||||
}
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return false;
|
||||
for (const ref of refs) {
|
||||
if (ref.value && Reflect.has(ref.value, key)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
set(target2, key, value) {
|
||||
if (Reflect.has(target2, key)) {
|
||||
return Reflect.set(target2, key, value);
|
||||
}
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return false;
|
||||
for (const ref of refs) {
|
||||
if (ref.value && Reflect.has(ref.value, key)) {
|
||||
return Reflect.set(ref.value, key, value);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
getOwnPropertyDescriptor(target2, key) {
|
||||
const descriptor = Reflect.getOwnPropertyDescriptor(target2, key);
|
||||
if (descriptor) return descriptor;
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return;
|
||||
for (const ref of refs) {
|
||||
if (!ref.value) continue;
|
||||
const descriptor2 = getDescriptor(ref.value, key) ?? ("_" in ref.value ? getDescriptor(ref.value._?.setupState, key) : void 0);
|
||||
if (descriptor2) return descriptor2;
|
||||
}
|
||||
for (const ref of refs) {
|
||||
const childRefs = ref.value && ref.value[Refs];
|
||||
if (!childRefs) continue;
|
||||
const queue = childRefs.slice();
|
||||
while (queue.length) {
|
||||
const ref2 = queue.shift();
|
||||
const descriptor2 = getDescriptor(ref2.value, key);
|
||||
if (descriptor2) return descriptor2;
|
||||
const childRefs2 = ref2.value && ref2.value[Refs];
|
||||
if (childRefs2) queue.push(...childRefs2);
|
||||
}
|
||||
}
|
||||
return void 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export {
|
||||
forwardRefs
|
||||
};
|
||||
//# sourceMappingURL=chunk-GUNW7S2L.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/forwardRefs.ts"],
|
||||
"sourcesContent": ["// Types\nimport type { ComponentOptionsBase, ComponentPublicInstance, Ref, UnwrapRef } from 'vue'\nimport type { NonEmptyArray, UnionToIntersection } from '@/util'\n\nconst Refs = Symbol('Forwarded refs')\n\n/** Omit properties starting with P */\ntype OmitPrefix<\n T,\n P extends string,\n E = Extract<keyof T, `${P}${any}`>,\n> = [E] extends [never] ? T : Omit<T, `${P}${any}`>\ntype OmitPrivate<T> = OmitPrefix<T, '$'>\n\n/** Omit keyof $props from T */\ntype OmitProps<T> = T extends { $props: any } ? Omit<T, keyof T['$props']> : T\n\nfunction getDescriptor (obj: any, key: PropertyKey) {\n let currentObj = obj\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key)\n if (descriptor) return descriptor\n currentObj = Object.getPrototypeOf(currentObj)\n }\n return undefined\n}\n\nexport function forwardRefs<\n T extends {},\n U extends NonEmptyArray<Ref<HTMLElement | Omit<ComponentPublicInstance, '$emit' | '$slots'> | undefined>>,\n UU = { [K in keyof U]: NonNullable<UnwrapRef<U[K]>> }[number],\n UC = { [K in keyof U]: OmitPrivate<OmitProps<NonNullable<UnwrapRef<U[K]>>>> }[number],\n R = T & UnionToIntersection<UC> & {\n _allExposed: T | (\n UU extends { $options: infer O }\n ? O extends ComponentOptionsBase<any, infer E, any, any, any, any, any, any>\n ? E\n : never\n : never\n )\n }\n> (target: T, ...refs: U): R {\n (target as any)[Refs] = refs\n\n return new Proxy(target, {\n get (target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key)\n return typeof val === 'function'\n ? val.bind(ref.value)\n : val\n }\n }\n },\n has (target, key) {\n if (Reflect.has(target, key)) {\n return true\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true\n }\n }\n return false\n },\n set (target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value)\n }\n }\n\n return false\n },\n getOwnPropertyDescriptor (target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key)\n if (descriptor) return descriptor\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined)\n if (descriptor) return descriptor\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (!childRefs) continue\n const queue = childRefs.slice()\n while (queue.length) {\n const ref = queue.shift()\n const descriptor = getDescriptor(ref.value, key)\n if (descriptor) return descriptor\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (childRefs) queue.push(...childRefs)\n }\n }\n\n return undefined\n },\n }) as any\n}\n"],
|
||||
"mappings": ";AAIA,IAAMA,OAAOC,uBAAO,gBAAgB;AAapC,SAASC,cAAeC,KAAUC,KAAkB;AAClD,MAAIC,aAAaF;AACjB,SAAOE,YAAY;AACjB,UAAMC,aAAaC,QAAQC,yBAAyBH,YAAYD,GAAG;AACnE,QAAIE,WAAY,QAAOA;AACvBD,iBAAaI,OAAOC,eAAeL,UAAU;EAC/C;AACA,SAAOM;AACT;AAEO,SAASC,YAcbC,QAA0B;AAAA,WAAAC,OAAAC,UAAAC,QAAZC,OAAI,IAAAC,MAAAJ,OAAA,IAAAA,OAAA,IAAA,CAAA,GAAAK,OAAA,GAAAA,OAAAL,MAAAK,QAAA;AAAJF,SAAIE,OAAA,CAAA,IAAAJ,UAAAI,IAAA;EAAA;AAClBN,SAAeb,IAAI,IAAIiB;AAExB,SAAO,IAAIG,MAAMP,QAAQ;IACvBQ,IAAKR,SAAQT,KAAK;AAChB,UAAIG,QAAQe,IAAIT,SAAQT,GAAG,GAAG;AAC5B,eAAOG,QAAQc,IAAIR,SAAQT,GAAG;MAChC;AAGA,UAAI,OAAOA,QAAQ,YAAYA,IAAImB,WAAW,GAAG,KAAKnB,IAAImB,WAAW,IAAI,EAAG;AAE5E,iBAAWC,OAAOP,MAAM;AACtB,YAAIO,IAAIC,SAASlB,QAAQe,IAAIE,IAAIC,OAAOrB,GAAG,GAAG;AAC5C,gBAAMsB,MAAMnB,QAAQc,IAAIG,IAAIC,OAAOrB,GAAG;AACtC,iBAAO,OAAOsB,QAAQ,aAClBA,IAAIC,KAAKH,IAAIC,KAAK,IAClBC;QACN;MACF;IACF;IACAJ,IAAKT,SAAQT,KAAK;AAChB,UAAIG,QAAQe,IAAIT,SAAQT,GAAG,GAAG;AAC5B,eAAO;MACT;AAGA,UAAI,OAAOA,QAAQ,YAAYA,IAAImB,WAAW,GAAG,KAAKnB,IAAImB,WAAW,IAAI,EAAG,QAAO;AAEnF,iBAAWC,OAAOP,MAAM;AACtB,YAAIO,IAAIC,SAASlB,QAAQe,IAAIE,IAAIC,OAAOrB,GAAG,GAAG;AAC5C,iBAAO;QACT;MACF;AACA,aAAO;IACT;IACAwB,IAAKf,SAAQT,KAAKqB,OAAO;AACvB,UAAIlB,QAAQe,IAAIT,SAAQT,GAAG,GAAG;AAC5B,eAAOG,QAAQqB,IAAIf,SAAQT,KAAKqB,KAAK;MACvC;AAGA,UAAI,OAAOrB,QAAQ,YAAYA,IAAImB,WAAW,GAAG,KAAKnB,IAAImB,WAAW,IAAI,EAAG,QAAO;AAEnF,iBAAWC,OAAOP,MAAM;AACtB,YAAIO,IAAIC,SAASlB,QAAQe,IAAIE,IAAIC,OAAOrB,GAAG,GAAG;AAC5C,iBAAOG,QAAQqB,IAAIJ,IAAIC,OAAOrB,KAAKqB,KAAK;QAC1C;MACF;AAEA,aAAO;IACT;IACAjB,yBAA0BK,SAAQT,KAAK;AACrC,YAAME,aAAaC,QAAQC,yBAAyBK,SAAQT,GAAG;AAC/D,UAAIE,WAAY,QAAOA;AAGvB,UAAI,OAAOF,QAAQ,YAAYA,IAAImB,WAAW,GAAG,KAAKnB,IAAImB,WAAW,IAAI,EAAG;AAG5E,iBAAWC,OAAOP,MAAM;AACtB,YAAI,CAACO,IAAIC,MAAO;AAChB,cAAMnB,cAAaJ,cAAcsB,IAAIC,OAAOrB,GAAG,MAAM,OAAOoB,IAAIC,QAAQvB,cAAcsB,IAAIC,MAAMI,GAAGC,YAAY1B,GAAG,IAAIO;AACtH,YAAIL,YAAY,QAAOA;MACzB;AAGA,iBAAWkB,OAAOP,MAAM;AACtB,cAAMc,YAAYP,IAAIC,SAAUD,IAAIC,MAAczB,IAAI;AACtD,YAAI,CAAC+B,UAAW;AAChB,cAAMC,QAAQD,UAAUE,MAAM;AAC9B,eAAOD,MAAMhB,QAAQ;AACnB,gBAAMQ,OAAMQ,MAAME,MAAM;AACxB,gBAAM5B,cAAaJ,cAAcsB,KAAIC,OAAOrB,GAAG;AAC/C,cAAIE,YAAY,QAAOA;AACvB,gBAAMyB,aAAYP,KAAIC,SAAUD,KAAIC,MAAczB,IAAI;AACtD,cAAI+B,WAAWC,OAAMG,KAAK,GAAGJ,UAAS;QACxC;MACF;AAEA,aAAOpB;IACT;EACF,CAAC;AACH;",
|
||||
"names": ["Refs", "Symbol", "getDescriptor", "obj", "key", "currentObj", "descriptor", "Reflect", "getOwnPropertyDescriptor", "Object", "getPrototypeOf", "undefined", "forwardRefs", "target", "_len", "arguments", "length", "refs", "Array", "_key", "Proxy", "get", "has", "startsWith", "ref", "value", "val", "bind", "set", "_", "setupState", "childRefs", "queue", "slice", "shift", "push"]
|
||||
}
|
||||
+206
@@ -0,0 +1,206 @@
|
||||
import {
|
||||
VDialogTransition
|
||||
} from "./chunk-B4JFJDWM.js";
|
||||
import {
|
||||
VDefaultsProvider
|
||||
} from "./chunk-VH7QIDM4.js";
|
||||
import {
|
||||
VMenuSymbol,
|
||||
VOverlay,
|
||||
makeVOverlayProps
|
||||
} from "./chunk-TS6Y6OVT.js";
|
||||
import {
|
||||
useScopeId
|
||||
} from "./chunk-BVUPSGRF.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
focusChild,
|
||||
focusableChildren,
|
||||
genericComponent,
|
||||
getNextElement,
|
||||
isClickInsideElement,
|
||||
omit,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
createVNode,
|
||||
inject,
|
||||
mergeProps,
|
||||
onBeforeUnmount,
|
||||
onDeactivated,
|
||||
provide,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
useId,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VMenu/VMenu.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VMenu/VMenu.css";
|
||||
var makeVMenuProps = propsFactory({
|
||||
// TODO
|
||||
// disableKeys: Boolean,
|
||||
id: String,
|
||||
submenu: Boolean,
|
||||
...omit(makeVOverlayProps({
|
||||
captureFocus: true,
|
||||
closeDelay: 250,
|
||||
closeOnContentClick: true,
|
||||
locationStrategy: "connected",
|
||||
location: void 0,
|
||||
openDelay: 300,
|
||||
scrim: false,
|
||||
scrollStrategy: "reposition",
|
||||
transition: {
|
||||
component: VDialogTransition
|
||||
}
|
||||
}), ["absolute"])
|
||||
}, "VMenu");
|
||||
var VMenu = genericComponent()({
|
||||
name: "VMenu",
|
||||
props: makeVMenuProps(),
|
||||
emits: {
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const isActive = useProxiedModel(props, "modelValue");
|
||||
const {
|
||||
scopeId
|
||||
} = useScopeId();
|
||||
const {
|
||||
isRtl
|
||||
} = useRtl();
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-menu-${uid}`);
|
||||
const overlay = ref();
|
||||
const parent = inject(VMenuSymbol, null);
|
||||
const openChildren = shallowRef(/* @__PURE__ */ new Set());
|
||||
provide(VMenuSymbol, {
|
||||
register() {
|
||||
openChildren.value.add(uid);
|
||||
},
|
||||
unregister() {
|
||||
openChildren.value.delete(uid);
|
||||
},
|
||||
closeParents(e) {
|
||||
setTimeout(() => {
|
||||
if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
||||
isActive.value = false;
|
||||
parent?.closeParents();
|
||||
}
|
||||
}, 40);
|
||||
}
|
||||
});
|
||||
onBeforeUnmount(() => parent?.unregister());
|
||||
onDeactivated(() => isActive.value = false);
|
||||
watch(isActive, (val) => {
|
||||
val ? parent?.register() : parent?.unregister();
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
function onClickOutside(e) {
|
||||
parent?.closeParents(e);
|
||||
}
|
||||
function onKeydown(e) {
|
||||
if (props.disabled) return;
|
||||
if (e.key === "Tab" || e.key === "Enter" && !props.closeOnContentClick) {
|
||||
if (e.key === "Enter" && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest("form"))) return;
|
||||
if (e.key === "Enter") e.preventDefault();
|
||||
const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? "prev" : "next", (el) => el.tabIndex >= 0);
|
||||
if (!nextElement && !props.retainFocus) {
|
||||
isActive.value = false;
|
||||
overlay.value?.activatorEl?.focus();
|
||||
}
|
||||
} else if (props.submenu && e.key === (isRtl.value ? "ArrowRight" : "ArrowLeft")) {
|
||||
isActive.value = false;
|
||||
overlay.value?.activatorEl?.focus();
|
||||
}
|
||||
}
|
||||
function onActivatorKeydown(e) {
|
||||
if (props.disabled) return;
|
||||
const el = overlay.value?.contentEl;
|
||||
if (el && isActive.value) {
|
||||
if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
focusChild(el, "next");
|
||||
} else if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
focusChild(el, "prev");
|
||||
} else if (props.submenu) {
|
||||
if (e.key === (isRtl.value ? "ArrowRight" : "ArrowLeft")) {
|
||||
isActive.value = false;
|
||||
} else if (e.key === (isRtl.value ? "ArrowLeft" : "ArrowRight")) {
|
||||
e.preventDefault();
|
||||
focusChild(el, "first");
|
||||
}
|
||||
}
|
||||
} else if (props.submenu ? e.key === (isRtl.value ? "ArrowLeft" : "ArrowRight") : ["ArrowDown", "ArrowUp"].includes(e.key)) {
|
||||
isActive.value = true;
|
||||
e.preventDefault();
|
||||
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
||||
}
|
||||
}
|
||||
const activatorProps = computed(() => mergeProps({
|
||||
"aria-haspopup": "menu",
|
||||
"aria-expanded": String(isActive.value),
|
||||
"aria-controls": id.value,
|
||||
"aria-owns": id.value,
|
||||
onKeydown: onActivatorKeydown
|
||||
}, props.activatorProps));
|
||||
useRender(() => {
|
||||
const overlayProps = VOverlay.filterProps(props);
|
||||
return createVNode(VOverlay, mergeProps({
|
||||
"ref": overlay,
|
||||
"id": id.value,
|
||||
"class": ["v-menu", props.class],
|
||||
"style": props.style
|
||||
}, overlayProps, {
|
||||
"modelValue": isActive.value,
|
||||
"onUpdate:modelValue": ($event) => isActive.value = $event,
|
||||
"absolute": true,
|
||||
"activatorProps": activatorProps.value,
|
||||
"location": props.location ?? (props.submenu ? "end" : "bottom"),
|
||||
"onClick:outside": onClickOutside,
|
||||
"onKeydown": onKeydown
|
||||
}, scopeId), {
|
||||
activator: slots.activator,
|
||||
default: function() {
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
return createVNode(VDefaultsProvider, {
|
||||
"root": "VMenu"
|
||||
}, {
|
||||
default: () => [slots.default?.(...args)]
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
return forwardRefs({
|
||||
id,
|
||||
ΨopenChildren: openChildren
|
||||
}, overlay);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
makeVMenuProps,
|
||||
VMenu
|
||||
};
|
||||
//# sourceMappingURL=chunk-HGIC64KW.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+34
@@ -0,0 +1,34 @@
|
||||
import {
|
||||
getCurrentInstanceName,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
toRef
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/position.js
|
||||
var positionValues = ["static", "relative", "fixed", "absolute", "sticky"];
|
||||
var makePositionProps = propsFactory({
|
||||
position: {
|
||||
type: String,
|
||||
validator: (
|
||||
/* istanbul ignore next */
|
||||
(v) => positionValues.includes(v)
|
||||
)
|
||||
}
|
||||
}, "position");
|
||||
function usePosition(props) {
|
||||
let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getCurrentInstanceName();
|
||||
const positionClasses = toRef(() => {
|
||||
return props.position ? `${name}--${props.position}` : void 0;
|
||||
});
|
||||
return {
|
||||
positionClasses
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makePositionProps,
|
||||
usePosition
|
||||
};
|
||||
//# sourceMappingURL=chunk-HOEZWRBG.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/position.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { toRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst positionValues = ['static', 'relative', 'fixed', 'absolute', 'sticky'] as const\n\ntype Position = typeof positionValues[number]\n\nexport interface PositionProps {\n position: Position | undefined\n}\n\n// Composables\nexport const makePositionProps = propsFactory({\n position: {\n type: String as PropType<Position>,\n validator: /* istanbul ignore next */ (v: any) => positionValues.includes(v),\n },\n}, 'position')\n\nexport function usePosition (\n props: PositionProps,\n name = getCurrentInstanceName(),\n) {\n const positionClasses = toRef(() => {\n return props.position ? `${name}--${props.position}` : undefined\n })\n\n return { positionClasses }\n}\n"],
|
||||
"mappings": ";;;;;;;;;AAOA,IAAMA,iBAAiB,CAAC,UAAU,YAAY,SAAS,YAAY,QAAQ;AASpE,IAAMC,oBAAoBC,aAAa;EAC5CC,UAAU;IACRC,MAAMC;IACNC;;MAAuCC,OAAWP,eAAeQ,SAASD,CAAC;;EAC7E;AACF,GAAG,UAAU;AAEN,SAASE,YACdC,OAEA;AAAA,MADAC,OAAIC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAGG,uBAAuB;AAE9B,QAAMC,kBAAkBC,MAAM,MAAM;AAClC,WAAOP,MAAMP,WAAW,GAAGQ,IAAI,KAAKD,MAAMP,QAAQ,KAAKW;EACzD,CAAC;AAED,SAAO;IAAEE;EAAgB;AAC3B;",
|
||||
"names": ["positionValues", "makePositionProps", "propsFactory", "position", "type", "String", "validator", "v", "includes", "usePosition", "props", "name", "arguments", "length", "undefined", "getCurrentInstanceName", "positionClasses", "toRef"]
|
||||
}
|
||||
+1896
File diff suppressed because it is too large
Load Diff
+7
File diff suppressed because one or more lines are too long
+353
@@ -0,0 +1,353 @@
|
||||
import {
|
||||
makeAutocompleteProps,
|
||||
useAutocomplete,
|
||||
useAutofocus
|
||||
} from "./chunk-IZQZFEAL.js";
|
||||
import {
|
||||
VCounter,
|
||||
VField,
|
||||
makeVFieldProps
|
||||
} from "./chunk-J7Q2NMV7.js";
|
||||
import {
|
||||
VInput,
|
||||
makeVInputProps,
|
||||
useFocus
|
||||
} from "./chunk-4VABFUPG.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
intersect_default
|
||||
} from "./chunk-5ONGSJQ2.js";
|
||||
import {
|
||||
useDisplay
|
||||
} from "./chunk-N4LJHDYD.js";
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
callEvent,
|
||||
clamp,
|
||||
convertToUnit,
|
||||
filterInputAttrs,
|
||||
genericComponent,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
onBeforeUnmount,
|
||||
onMounted,
|
||||
ref,
|
||||
shallowRef,
|
||||
vModelText,
|
||||
watch,
|
||||
watchEffect,
|
||||
withDirectives
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VTextarea/VTextarea.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VTextarea/VTextarea.css";
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VTextField/VTextField.css";
|
||||
var makeVTextareaProps = propsFactory({
|
||||
autoGrow: Boolean,
|
||||
autofocus: Boolean,
|
||||
counter: [Boolean, Number, String],
|
||||
counterValue: Function,
|
||||
prefix: String,
|
||||
placeholder: String,
|
||||
persistentPlaceholder: Boolean,
|
||||
persistentCounter: Boolean,
|
||||
noResize: Boolean,
|
||||
rows: {
|
||||
type: [Number, String],
|
||||
default: 5,
|
||||
validator: (v) => !isNaN(parseFloat(v))
|
||||
},
|
||||
maxHeight: {
|
||||
type: [Number, String],
|
||||
validator: (v) => !isNaN(parseFloat(v))
|
||||
},
|
||||
maxRows: {
|
||||
type: [Number, String],
|
||||
validator: (v) => !isNaN(parseFloat(v))
|
||||
},
|
||||
suffix: String,
|
||||
modelModifiers: Object,
|
||||
...makeAutocompleteProps(),
|
||||
...makeVInputProps(),
|
||||
...makeVFieldProps()
|
||||
}, "VTextarea");
|
||||
var VTextarea = genericComponent()({
|
||||
name: "VTextarea",
|
||||
directives: {
|
||||
vIntersect: intersect_default
|
||||
},
|
||||
inheritAttrs: false,
|
||||
props: makeVTextareaProps(),
|
||||
emits: {
|
||||
"click:control": (e) => true,
|
||||
"mousedown:control": (e) => true,
|
||||
"update:focused": (focused) => true,
|
||||
"update:modelValue": (val) => true,
|
||||
"update:rows": (rows) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
const {
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
} = useFocus(props);
|
||||
const {
|
||||
onIntersect
|
||||
} = useAutofocus(props);
|
||||
const counterValue = computed(() => {
|
||||
return typeof props.counterValue === "function" ? props.counterValue(model.value) : (model.value || "").toString().length;
|
||||
});
|
||||
const max = computed(() => {
|
||||
if (attrs.maxlength) return attrs.maxlength;
|
||||
if (!props.counter || typeof props.counter !== "number" && typeof props.counter !== "string") return void 0;
|
||||
return props.counter;
|
||||
});
|
||||
const vInputRef = ref();
|
||||
const vFieldRef = ref();
|
||||
const controlHeight = shallowRef("");
|
||||
const textareaRef = ref();
|
||||
const scrollbarWidth = ref(0);
|
||||
const {
|
||||
platform
|
||||
} = useDisplay();
|
||||
const autocomplete = useAutocomplete(props);
|
||||
const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
|
||||
function onFocus() {
|
||||
if (autocomplete.isSuppressing.value) {
|
||||
autocomplete.update();
|
||||
}
|
||||
if (textareaRef.value !== document.activeElement) {
|
||||
textareaRef.value?.focus();
|
||||
}
|
||||
if (!isFocused.value) focus();
|
||||
}
|
||||
function onControlClick(e) {
|
||||
onFocus();
|
||||
emit("click:control", e);
|
||||
}
|
||||
function onControlMousedown(e) {
|
||||
emit("mousedown:control", e);
|
||||
}
|
||||
function onClear(e) {
|
||||
e.stopPropagation();
|
||||
onFocus();
|
||||
nextTick(() => {
|
||||
model.value = "";
|
||||
callEvent(props["onClick:clear"], e);
|
||||
});
|
||||
}
|
||||
function onInput(e) {
|
||||
const el = e.target;
|
||||
if (!props.modelModifiers?.trim) {
|
||||
model.value = el.value;
|
||||
return;
|
||||
}
|
||||
const value = el.value;
|
||||
const start = el.selectionStart;
|
||||
const end = el.selectionEnd;
|
||||
model.value = value;
|
||||
nextTick(() => {
|
||||
let offset = 0;
|
||||
if (value.trimStart().length === el.value.length) {
|
||||
offset = value.length - el.value.length;
|
||||
}
|
||||
if (start != null) el.selectionStart = start - offset;
|
||||
if (end != null) el.selectionEnd = end - offset;
|
||||
});
|
||||
}
|
||||
const sizerRef = ref();
|
||||
const rows = ref(Number(props.rows));
|
||||
const isPlainOrUnderlined = computed(() => ["plain", "underlined"].includes(props.variant));
|
||||
watchEffect(() => {
|
||||
if (!props.autoGrow) rows.value = Number(props.rows);
|
||||
});
|
||||
function calculateInputHeight() {
|
||||
nextTick(() => {
|
||||
if (!textareaRef.value) return;
|
||||
if (platform.value.firefox) {
|
||||
scrollbarWidth.value = 12;
|
||||
return;
|
||||
}
|
||||
const {
|
||||
offsetWidth,
|
||||
clientWidth
|
||||
} = textareaRef.value;
|
||||
scrollbarWidth.value = Math.max(0, offsetWidth - clientWidth);
|
||||
});
|
||||
if (!props.autoGrow) return;
|
||||
nextTick(() => {
|
||||
if (!sizerRef.value || !vFieldRef.value) return;
|
||||
const style = getComputedStyle(sizerRef.value);
|
||||
const fieldStyle = getComputedStyle(vFieldRef.value.$el);
|
||||
const padding = parseFloat(style.getPropertyValue("--v-field-padding-top")) + parseFloat(style.getPropertyValue("--v-input-padding-top")) + parseFloat(style.getPropertyValue("--v-field-padding-bottom"));
|
||||
const height = sizerRef.value.scrollHeight;
|
||||
const lineHeight = parseFloat(style.lineHeight);
|
||||
const minHeight = Math.max(parseFloat(props.rows) * lineHeight + padding, parseFloat(fieldStyle.getPropertyValue("--v-input-control-height")));
|
||||
const maxHeight = props.maxHeight ? parseFloat(props.maxHeight) : parseFloat(props.maxRows) * lineHeight + padding || Infinity;
|
||||
const newHeight = clamp(height ?? 0, minHeight, maxHeight);
|
||||
rows.value = Math.floor((newHeight - padding) / lineHeight);
|
||||
controlHeight.value = convertToUnit(newHeight);
|
||||
});
|
||||
}
|
||||
onMounted(calculateInputHeight);
|
||||
watch(model, calculateInputHeight);
|
||||
watch(() => props.rows, calculateInputHeight);
|
||||
watch(() => props.maxHeight, calculateInputHeight);
|
||||
watch(() => props.maxRows, calculateInputHeight);
|
||||
watch(() => props.density, calculateInputHeight);
|
||||
watch(rows, (val) => {
|
||||
emit("update:rows", val);
|
||||
});
|
||||
let observer;
|
||||
watch(sizerRef, (val) => {
|
||||
if (val) {
|
||||
observer = new ResizeObserver(calculateInputHeight);
|
||||
observer.observe(sizerRef.value);
|
||||
} else {
|
||||
observer?.disconnect();
|
||||
}
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
observer?.disconnect();
|
||||
});
|
||||
useRender(() => {
|
||||
const hasCounter = !!(slots.counter || props.counter || props.counterValue);
|
||||
const hasDetails = !!(hasCounter || slots.details);
|
||||
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
||||
const {
|
||||
modelValue: _,
|
||||
...inputProps
|
||||
} = VInput.filterProps(props);
|
||||
const fieldProps = {
|
||||
...VField.filterProps(props),
|
||||
"onClick:clear": onClear
|
||||
};
|
||||
return createVNode(VInput, mergeProps({
|
||||
"ref": vInputRef,
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": ($event) => model.value = $event,
|
||||
"class": ["v-textarea v-text-field", {
|
||||
"v-textarea--prefixed": props.prefix,
|
||||
"v-textarea--suffixed": props.suffix,
|
||||
"v-text-field--prefixed": props.prefix,
|
||||
"v-text-field--suffixed": props.suffix,
|
||||
"v-textarea--auto-grow": props.autoGrow,
|
||||
"v-textarea--no-resize": props.noResize || props.autoGrow,
|
||||
"v-input--plain-underlined": isPlainOrUnderlined.value
|
||||
}, props.class],
|
||||
"style": [{
|
||||
"--v-textarea-max-height": props.maxHeight ? convertToUnit(props.maxHeight) : void 0,
|
||||
"--v-textarea-scroll-bar-width": convertToUnit(scrollbarWidth.value)
|
||||
}, props.style]
|
||||
}, rootAttrs, inputProps, {
|
||||
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
||||
"focused": isFocused.value
|
||||
}), {
|
||||
...slots,
|
||||
default: (_ref2) => {
|
||||
let {
|
||||
id,
|
||||
isDisabled,
|
||||
isDirty,
|
||||
isReadonly,
|
||||
isValid,
|
||||
hasDetails: hasDetails2
|
||||
} = _ref2;
|
||||
return createVNode(VField, mergeProps({
|
||||
"ref": vFieldRef,
|
||||
"style": {
|
||||
"--v-textarea-control-height": controlHeight.value
|
||||
},
|
||||
"onClick": onControlClick,
|
||||
"onMousedown": onControlMousedown,
|
||||
"onClick:prependInner": props["onClick:prependInner"],
|
||||
"onClick:appendInner": props["onClick:appendInner"]
|
||||
}, fieldProps, {
|
||||
"id": id.value,
|
||||
"active": isActive.value || isDirty.value,
|
||||
"labelId": `${id.value}-label`,
|
||||
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
||||
"dirty": isDirty.value || props.dirty,
|
||||
"disabled": isDisabled.value,
|
||||
"focused": isFocused.value,
|
||||
"details": hasDetails2.value,
|
||||
"error": isValid.value === false
|
||||
}), {
|
||||
...slots,
|
||||
default: (_ref3) => {
|
||||
let {
|
||||
props: {
|
||||
class: fieldClass,
|
||||
...slotProps
|
||||
},
|
||||
controlRef
|
||||
} = _ref3;
|
||||
return createBaseVNode(Fragment, null, [props.prefix && createBaseVNode("span", {
|
||||
"class": "v-text-field__prefix"
|
||||
}, [props.prefix]), withDirectives(createBaseVNode("textarea", mergeProps({
|
||||
"ref": (val) => textareaRef.value = controlRef.value = val,
|
||||
"class": fieldClass,
|
||||
"value": model.value,
|
||||
"onInput": onInput,
|
||||
"autofocus": props.autofocus,
|
||||
"readonly": isReadonly.value,
|
||||
"disabled": isDisabled.value,
|
||||
"placeholder": props.placeholder,
|
||||
"rows": props.rows,
|
||||
"name": autocomplete.fieldName.value,
|
||||
"autocomplete": autocomplete.fieldAutocomplete.value,
|
||||
"onFocus": onFocus,
|
||||
"onBlur": blur,
|
||||
"aria-labelledby": `${id.value}-label`
|
||||
}, slotProps, inputAttrs), null), [[intersect_default, {
|
||||
handler: onIntersect
|
||||
}, null, {
|
||||
once: true
|
||||
}]]), props.autoGrow && withDirectives(createBaseVNode("textarea", {
|
||||
"class": normalizeClass([fieldClass, "v-textarea__sizer"]),
|
||||
"id": `${slotProps.id}-sizer`,
|
||||
"onUpdate:modelValue": ($event) => model.value = $event,
|
||||
"ref": sizerRef,
|
||||
"readonly": true,
|
||||
"aria-hidden": "true"
|
||||
}, null), [[vModelText, model.value]]), props.suffix && createBaseVNode("span", {
|
||||
"class": "v-text-field__suffix"
|
||||
}, [props.suffix])]);
|
||||
}
|
||||
});
|
||||
},
|
||||
details: hasDetails ? (slotProps) => createBaseVNode(Fragment, null, [slots.details?.(slotProps), hasCounter && createBaseVNode(Fragment, null, [createBaseVNode("span", null, null), createVNode(VCounter, {
|
||||
"active": props.persistentCounter || isFocused.value,
|
||||
"value": counterValue.value,
|
||||
"max": max.value,
|
||||
"disabled": props.disabled
|
||||
}, slots.counter)])]) : void 0
|
||||
});
|
||||
});
|
||||
return forwardRefs({}, vInputRef, vFieldRef, textareaRef);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VTextarea
|
||||
};
|
||||
//# sourceMappingURL=chunk-I4SZJCEY.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+70
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
createLayout,
|
||||
makeLayoutProps
|
||||
} from "./chunk-KQXZAEJP.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
omit,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
createBaseVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VApp/VApp.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VApp/VApp.css";
|
||||
var makeVAppProps = propsFactory({
|
||||
...makeComponentProps(),
|
||||
...omit(makeLayoutProps(), ["fullHeight"]),
|
||||
...makeThemeProps()
|
||||
}, "VApp");
|
||||
var VApp = genericComponent()({
|
||||
name: "VApp",
|
||||
props: makeVAppProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const theme = provideTheme(props);
|
||||
const {
|
||||
layoutClasses,
|
||||
getLayoutItem,
|
||||
items,
|
||||
layoutRef
|
||||
} = createLayout({
|
||||
...props,
|
||||
fullHeight: true
|
||||
});
|
||||
const {
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"ref": layoutRef,
|
||||
"class": normalizeClass(["v-application", theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class]),
|
||||
"style": normalizeStyle([props.style])
|
||||
}, [createBaseVNode("div", {
|
||||
"class": "v-application__wrap"
|
||||
}, [slots.default?.()])]));
|
||||
return {
|
||||
getLayoutItem,
|
||||
items,
|
||||
theme
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VApp
|
||||
};
|
||||
//# sourceMappingURL=chunk-IYFY4IHW.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/components/VApp/VApp.tsx"],
|
||||
"sourcesContent": ["// Styles\nimport './VApp.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\nimport { useRtl } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...omit(makeLayoutProps(), ['fullHeight']),\n ...makeThemeProps(),\n}, 'VApp')\n\nexport const VApp = genericComponent()({\n name: 'VApp',\n\n props: makeVAppProps(),\n\n setup (props, { slots }) {\n const theme = provideTheme(props)\n const { layoutClasses, getLayoutItem, items, layoutRef } = createLayout({ ...props, fullHeight: true })\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n <div\n ref={ layoutRef }\n class={[\n 'v-application',\n theme.themeClasses.value,\n layoutClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n >\n <div class=\"v-application__wrap\">\n { slots.default?.() }\n </div>\n </div>\n ))\n\n return {\n getLayoutItem,\n items,\n theme,\n }\n },\n})\n\nexport type VApp = InstanceType<typeof VApp>\n"],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAA;AAWO,IAAMA,gBAAgBC,aAAa;EACxC,GAAGC,mBAAmB;EACtB,GAAGC,KAAKC,gBAAgB,GAAG,CAAC,YAAY,CAAC;EACzC,GAAGC,eAAe;AACpB,GAAG,MAAM;AAEF,IAAMC,OAAOC,iBAAiB,EAAE;EACrCC,MAAM;EAENC,OAAOT,cAAc;EAErBU,MAAOD,OAAKE,MAAa;AAAA,QAAX;MAAEC;IAAM,IAACD;AACrB,UAAME,QAAQC,aAAaL,KAAK;AAChC,UAAM;MAAEM;MAAeC;MAAeC;MAAOC;IAAU,IAAIC,aAAa;MAAE,GAAGV;MAAOW,YAAY;IAAK,CAAC;AACtG,UAAM;MAAEC;IAAW,IAAIC,OAAO;AAE9BC,cAAU,MAAAC,gBAAA,OAAA;MAAA,OAEAN;MAAS,SAAAO,eACR,CACL,iBACAZ,MAAMa,aAAaC,OACnBZ,cAAcY,OACdN,WAAWM,OACXlB,MAAMmB,KAAK,CACZ;MAAA,SAAAC,eACM,CACLpB,MAAMqB,KAAK,CACZ;IAAA,GAAA,CAAAN,gBAAA,OAAA;MAAA,SAAA;IAAA,GAAA,CAGGZ,MAAMmB,UAAU,CAAC,CAAA,CAAA,CAAA,CAGxB;AAED,WAAO;MACLf;MACAC;MACAJ;IACF;EACF;AACF,CAAC;",
|
||||
"names": ["makeVAppProps", "propsFactory", "makeComponentProps", "omit", "makeLayoutProps", "makeThemeProps", "VApp", "genericComponent", "name", "props", "setup", "_ref", "slots", "theme", "provideTheme", "layoutClasses", "getLayoutItem", "items", "layoutRef", "createLayout", "fullHeight", "rtlClasses", "useRtl", "useRender", "_createElementVNode", "_normalizeClass", "themeClasses", "value", "class", "_normalizeStyle", "style", "default"]
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
import {
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
shallowRef,
|
||||
toRef,
|
||||
useId
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/autocomplete.js
|
||||
var makeAutocompleteProps = propsFactory({
|
||||
autocomplete: String
|
||||
}, "autocomplete");
|
||||
function useAutocomplete(props) {
|
||||
const uniqueId = useId();
|
||||
const reloadTrigger = shallowRef(0);
|
||||
const isSuppressing = toRef(() => props.autocomplete === "suppress");
|
||||
const fieldName = toRef(() => {
|
||||
if (!props.name) return void 0;
|
||||
return isSuppressing.value ? `${props.name}-${uniqueId}-${reloadTrigger.value}` : props.name;
|
||||
});
|
||||
const fieldAutocomplete = toRef(() => {
|
||||
return isSuppressing.value ? "off" : props.autocomplete;
|
||||
});
|
||||
return {
|
||||
isSuppressing,
|
||||
fieldAutocomplete,
|
||||
fieldName,
|
||||
update: () => reloadTrigger.value = (/* @__PURE__ */ new Date()).getTime()
|
||||
};
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/autofocus.js
|
||||
function useAutofocus(props) {
|
||||
function onIntersect(isIntersecting, entries) {
|
||||
if (!props.autofocus || !isIntersecting) return;
|
||||
const el = entries[0].target;
|
||||
const target = el.matches("input,textarea") ? el : el.querySelector("input,textarea");
|
||||
target?.focus();
|
||||
}
|
||||
return {
|
||||
onIntersect
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makeAutocompleteProps,
|
||||
useAutocomplete,
|
||||
useAutofocus
|
||||
};
|
||||
//# sourceMappingURL=chunk-IZQZFEAL.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/autocomplete.ts", "../../vuetify/src/composables/autofocus.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { shallowRef, toRef, useId } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface InputAutocompleteProps {\n autocomplete: 'suppress' | string | undefined\n name?: string\n}\n\n// Composables\nexport const makeAutocompleteProps = propsFactory({\n autocomplete: String as PropType<'suppress' | string>,\n}, 'autocomplete')\n\nexport function useAutocomplete (props: InputAutocompleteProps) {\n const uniqueId = useId()\n const reloadTrigger = shallowRef(0)\n\n const isSuppressing = toRef(() => props.autocomplete === 'suppress')\n\n const fieldName = toRef(() => {\n if (!props.name) return undefined\n\n return isSuppressing.value\n ? `${props.name}-${uniqueId}-${reloadTrigger.value}`\n : props.name\n })\n\n const fieldAutocomplete = toRef(() => {\n return isSuppressing.value\n ? 'off'\n : props.autocomplete\n })\n\n return {\n isSuppressing,\n fieldAutocomplete,\n fieldName,\n update: () => reloadTrigger.value = new Date().getTime(),\n }\n}\n", "interface AutofocusProps {\n autofocus: boolean\n}\n\nexport function useAutofocus (props: AutofocusProps) {\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n const el = entries[0].target\n const target = (el.matches('input,textarea') ? el : el.querySelector('input,textarea')) as HTMLElement | null\n target?.focus()\n }\n\n return {\n onIntersect,\n }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;AAcO,IAAMA,wBAAwBC,aAAa;EAChDC,cAAcC;AAChB,GAAG,cAAc;AAEV,SAASC,gBAAiBC,OAA+B;AAC9D,QAAMC,WAAWC,MAAM;AACvB,QAAMC,gBAAgBC,WAAW,CAAC;AAElC,QAAMC,gBAAgBC,MAAM,MAAMN,MAAMH,iBAAiB,UAAU;AAEnE,QAAMU,YAAYD,MAAM,MAAM;AAC5B,QAAI,CAACN,MAAMQ,KAAM,QAAOC;AAExB,WAAOJ,cAAcK,QACjB,GAAGV,MAAMQ,IAAI,IAAIP,QAAQ,IAAIE,cAAcO,KAAK,KAChDV,MAAMQ;EACZ,CAAC;AAED,QAAMG,oBAAoBL,MAAM,MAAM;AACpC,WAAOD,cAAcK,QACjB,QACAV,MAAMH;EACZ,CAAC;AAED,SAAO;IACLQ;IACAM;IACAJ;IACAK,QAAQA,MAAMT,cAAcO,SAAQ,oBAAIG,KAAK,GAAEC,QAAQ;EACzD;AACF;;;ACxCO,SAASC,aAAcC,OAAuB;AACnD,WAASC,YACPC,gBACAC,SACA;AACA,QAAI,CAACH,MAAMI,aAAa,CAACF,eAAgB;AAEzC,UAAMG,KAAKF,QAAQ,CAAC,EAAEG;AACtB,UAAMA,SAAUD,GAAGE,QAAQ,gBAAgB,IAAIF,KAAKA,GAAGG,cAAc,gBAAgB;AACrFF,YAAQG,MAAM;EAChB;AAEA,SAAO;IACLR;EACF;AACF;",
|
||||
"names": ["makeAutocompleteProps", "propsFactory", "autocomplete", "String", "useAutocomplete", "props", "uniqueId", "useId", "reloadTrigger", "shallowRef", "isSuppressing", "toRef", "fieldName", "name", "undefined", "value", "fieldAutocomplete", "update", "Date", "getTime", "useAutofocus", "props", "onIntersect", "isIntersecting", "entries", "autofocus", "el", "target", "matches", "querySelector", "focus"]
|
||||
}
|
||||
+455
@@ -0,0 +1,455 @@
|
||||
import {
|
||||
VLabel,
|
||||
makeFocusProps,
|
||||
useFocus,
|
||||
useInputIcon
|
||||
} from "./chunk-4VABFUPG.js";
|
||||
import {
|
||||
VExpandXTransition,
|
||||
VSlideYTransition
|
||||
} from "./chunk-B4JFJDWM.js";
|
||||
import {
|
||||
LoaderSlot,
|
||||
makeLoaderProps,
|
||||
useLoader
|
||||
} from "./chunk-U2DSRSME.js";
|
||||
import {
|
||||
VDefaultsProvider
|
||||
} from "./chunk-VH7QIDM4.js";
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
MaybeTransition,
|
||||
makeTransitionProps
|
||||
} from "./chunk-CAGZXMOS.js";
|
||||
import {
|
||||
IconValue
|
||||
} from "./chunk-OJDZBU5D.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useBackgroundColor,
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
EventProp,
|
||||
PREFERS_REDUCED_MOTION,
|
||||
animate,
|
||||
convertToUnit,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
nullifyTransforms,
|
||||
propsFactory,
|
||||
standardEasing,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
ref,
|
||||
toRef,
|
||||
useId,
|
||||
vShow,
|
||||
watch,
|
||||
withDirectives
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VCounter/VCounter.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VCounter/VCounter.css";
|
||||
var makeVCounterProps = propsFactory({
|
||||
active: Boolean,
|
||||
disabled: Boolean,
|
||||
max: [Number, String],
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeTransitionProps({
|
||||
transition: {
|
||||
component: VSlideYTransition
|
||||
}
|
||||
})
|
||||
}, "VCounter");
|
||||
var VCounter = genericComponent()({
|
||||
name: "VCounter",
|
||||
functional: true,
|
||||
props: makeVCounterProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const counter = toRef(() => {
|
||||
return props.max ? `${props.value} / ${props.max}` : String(props.value);
|
||||
});
|
||||
useRender(() => createVNode(MaybeTransition, {
|
||||
"transition": props.transition
|
||||
}, {
|
||||
default: () => [withDirectives(createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-counter", {
|
||||
"text-error": props.max && !props.disabled && parseFloat(props.value) > parseFloat(props.max)
|
||||
}, props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, [slots.default ? slots.default({
|
||||
counter: counter.value,
|
||||
max: props.max,
|
||||
value: props.value
|
||||
}) : counter.value]), [[vShow, props.active]])]
|
||||
}));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VField/VFieldLabel.js
|
||||
var makeVFieldLabelProps = propsFactory({
|
||||
floating: Boolean,
|
||||
...makeComponentProps()
|
||||
}, "VFieldLabel");
|
||||
var VFieldLabel = genericComponent()({
|
||||
name: "VFieldLabel",
|
||||
props: makeVFieldLabelProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => createVNode(VLabel, {
|
||||
"class": normalizeClass(["v-field-label", {
|
||||
"v-field-label--floating": props.floating
|
||||
}, props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VField/VField.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VField/VField.css";
|
||||
var allowedVariants = ["underlined", "outlined", "filled", "solo", "solo-inverted", "solo-filled", "plain"];
|
||||
var makeVFieldProps = propsFactory({
|
||||
appendInnerIcon: IconValue,
|
||||
bgColor: String,
|
||||
clearable: Boolean,
|
||||
clearIcon: {
|
||||
type: IconValue,
|
||||
default: "$clear"
|
||||
},
|
||||
active: Boolean,
|
||||
centerAffix: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
color: String,
|
||||
baseColor: String,
|
||||
dirty: Boolean,
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
glow: Boolean,
|
||||
error: Boolean,
|
||||
flat: Boolean,
|
||||
iconColor: [Boolean, String],
|
||||
label: String,
|
||||
persistentClear: Boolean,
|
||||
prependInnerIcon: IconValue,
|
||||
reverse: Boolean,
|
||||
singleLine: Boolean,
|
||||
variant: {
|
||||
type: String,
|
||||
default: "filled",
|
||||
validator: (v) => allowedVariants.includes(v)
|
||||
},
|
||||
"onClick:clear": EventProp(),
|
||||
"onClick:appendInner": EventProp(),
|
||||
"onClick:prependInner": EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeLoaderProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeThemeProps()
|
||||
}, "VField");
|
||||
var VField = genericComponent()({
|
||||
name: "VField",
|
||||
inheritAttrs: false,
|
||||
props: {
|
||||
id: String,
|
||||
details: Boolean,
|
||||
labelId: String,
|
||||
...makeFocusProps(),
|
||||
...makeVFieldProps()
|
||||
},
|
||||
emits: {
|
||||
"update:focused": (focused) => true,
|
||||
"update:modelValue": (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
loaderClasses
|
||||
} = useLoader(props);
|
||||
const {
|
||||
focusClasses,
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
} = useFocus(props);
|
||||
const {
|
||||
InputIcon
|
||||
} = useInputIcon(props);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const {
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
const isActive = toRef(() => props.dirty || props.active);
|
||||
const hasLabel = toRef(() => !!(props.label || slots.label));
|
||||
const hasFloatingLabel = toRef(() => !props.singleLine && hasLabel.value);
|
||||
const uid = useId();
|
||||
const id = computed(() => props.id || `input-${uid}`);
|
||||
const messagesId = toRef(() => !props.details ? void 0 : `${id.value}-messages`);
|
||||
const labelRef = ref();
|
||||
const floatingLabelRef = ref();
|
||||
const controlRef = ref();
|
||||
const isPlainOrUnderlined = computed(() => ["plain", "underlined"].includes(props.variant));
|
||||
const color = computed(() => {
|
||||
return props.error || props.disabled ? void 0 : isActive.value && isFocused.value ? props.color : props.baseColor;
|
||||
});
|
||||
const iconColor = computed(() => {
|
||||
if (!props.iconColor || props.glow && !isFocused.value) return void 0;
|
||||
return props.iconColor === true ? color.value : props.iconColor;
|
||||
});
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => props.bgColor);
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(color);
|
||||
watch(isActive, (val) => {
|
||||
if (hasFloatingLabel.value && !PREFERS_REDUCED_MOTION()) {
|
||||
const el = labelRef.value.$el;
|
||||
const targetEl = floatingLabelRef.value.$el;
|
||||
requestAnimationFrame(() => {
|
||||
const rect = nullifyTransforms(el);
|
||||
const targetRect = targetEl.getBoundingClientRect();
|
||||
const x = targetRect.x - rect.x;
|
||||
const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2);
|
||||
const targetWidth = targetRect.width / 0.75;
|
||||
const width = Math.abs(targetWidth - rect.width) > 1 ? {
|
||||
maxWidth: convertToUnit(targetWidth)
|
||||
} : void 0;
|
||||
const style = getComputedStyle(el);
|
||||
const targetStyle = getComputedStyle(targetEl);
|
||||
const duration = parseFloat(style.transitionDuration) * 1e3 || 150;
|
||||
const scale = parseFloat(targetStyle.getPropertyValue("--v-field-label-scale"));
|
||||
const color2 = targetStyle.getPropertyValue("color");
|
||||
el.style.visibility = "visible";
|
||||
targetEl.style.visibility = "hidden";
|
||||
animate(el, {
|
||||
transform: `translate(${x}px, ${y}px) scale(${scale})`,
|
||||
color: color2,
|
||||
...width
|
||||
}, {
|
||||
duration,
|
||||
easing: standardEasing,
|
||||
direction: val ? "normal" : "reverse"
|
||||
}).finished.then(() => {
|
||||
el.style.removeProperty("visibility");
|
||||
targetEl.style.removeProperty("visibility");
|
||||
});
|
||||
});
|
||||
}
|
||||
}, {
|
||||
flush: "post"
|
||||
});
|
||||
const slotProps = computed(() => ({
|
||||
isActive,
|
||||
isFocused,
|
||||
controlRef,
|
||||
iconColor,
|
||||
blur,
|
||||
focus
|
||||
}));
|
||||
function onClick(e) {
|
||||
if (e.target !== document.activeElement) {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
useRender(() => {
|
||||
const isOutlined = props.variant === "outlined";
|
||||
const hasPrepend = !!(slots["prepend-inner"] || props.prependInnerIcon);
|
||||
const hasClear = !!(props.clearable || slots.clear) && !props.disabled;
|
||||
const hasAppend = !!(slots["append-inner"] || props.appendInnerIcon || hasClear);
|
||||
const label = () => slots.label ? slots.label({
|
||||
...slotProps.value,
|
||||
label: props.label,
|
||||
props: {
|
||||
for: id.value
|
||||
}
|
||||
}) : props.label;
|
||||
return createBaseVNode("div", mergeProps({
|
||||
"class": ["v-field", {
|
||||
"v-field--active": isActive.value,
|
||||
"v-field--appended": hasAppend,
|
||||
"v-field--center-affix": props.centerAffix ?? !isPlainOrUnderlined.value,
|
||||
"v-field--disabled": props.disabled,
|
||||
"v-field--dirty": props.dirty,
|
||||
"v-field--error": props.error,
|
||||
"v-field--glow": props.glow,
|
||||
"v-field--flat": props.flat,
|
||||
"v-field--has-background": !!props.bgColor,
|
||||
"v-field--persistent-clear": props.persistentClear,
|
||||
"v-field--prepended": hasPrepend,
|
||||
"v-field--reverse": props.reverse,
|
||||
"v-field--single-line": props.singleLine,
|
||||
"v-field--no-label": !label(),
|
||||
[`v-field--variant-${props.variant}`]: true
|
||||
}, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, rtlClasses.value, props.class],
|
||||
"style": [backgroundColorStyles.value, props.style],
|
||||
"onClick": onClick
|
||||
}, attrs), [createBaseVNode("div", {
|
||||
"class": "v-field__overlay"
|
||||
}, null), createVNode(LoaderSlot, {
|
||||
"name": "v-field",
|
||||
"active": !!props.loading,
|
||||
"color": props.error ? "error" : typeof props.loading === "string" ? props.loading : props.color
|
||||
}, {
|
||||
default: slots.loader
|
||||
}), hasPrepend && createBaseVNode("div", {
|
||||
"key": "prepend",
|
||||
"class": "v-field__prepend-inner"
|
||||
}, [slots["prepend-inner"] ? slots["prepend-inner"](slotProps.value) : props.prependInnerIcon && createVNode(InputIcon, {
|
||||
"key": "prepend-icon",
|
||||
"name": "prependInner",
|
||||
"color": iconColor.value
|
||||
}, null)]), createBaseVNode("div", {
|
||||
"class": "v-field__field",
|
||||
"data-no-activator": ""
|
||||
}, [["filled", "solo", "solo-inverted", "solo-filled"].includes(props.variant) && hasFloatingLabel.value && createVNode(VFieldLabel, {
|
||||
"key": "floating-label",
|
||||
"ref": floatingLabelRef,
|
||||
"class": normalizeClass([textColorClasses.value]),
|
||||
"floating": true,
|
||||
"for": id.value,
|
||||
"aria-hidden": !isActive.value,
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, {
|
||||
default: () => [label()]
|
||||
}), hasLabel.value && createVNode(VFieldLabel, {
|
||||
"key": "label",
|
||||
"ref": labelRef,
|
||||
"id": props.labelId,
|
||||
"for": id.value,
|
||||
"aria-hidden": hasFloatingLabel.value && isActive.value
|
||||
}, {
|
||||
default: () => [label()]
|
||||
}), slots.default?.({
|
||||
...slotProps.value,
|
||||
props: {
|
||||
id: id.value,
|
||||
class: "v-field__input",
|
||||
"aria-describedby": messagesId.value
|
||||
},
|
||||
focus,
|
||||
blur
|
||||
}) ?? createBaseVNode("div", {
|
||||
"id": id.value,
|
||||
"class": "v-field__input",
|
||||
"aria-describedby": messagesId.value
|
||||
}, null)]), hasClear && createVNode(VExpandXTransition, {
|
||||
"key": "clear"
|
||||
}, {
|
||||
default: () => [withDirectives(createBaseVNode("div", {
|
||||
"class": "v-field__clearable",
|
||||
"onMousedown": (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
}, [createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VIcon: {
|
||||
icon: props.clearIcon
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.clear ? slots.clear({
|
||||
...slotProps.value,
|
||||
props: {
|
||||
onFocus: focus,
|
||||
onBlur: blur,
|
||||
onClick: props["onClick:clear"],
|
||||
tabindex: -1
|
||||
}
|
||||
}) : createVNode(InputIcon, {
|
||||
"name": "clear",
|
||||
"onFocus": focus,
|
||||
"onBlur": blur,
|
||||
"tabindex": -1
|
||||
}, null)]
|
||||
})]), [[vShow, props.dirty]])]
|
||||
}), hasAppend && createBaseVNode("div", {
|
||||
"key": "append",
|
||||
"class": "v-field__append-inner"
|
||||
}, [slots["append-inner"] ? slots["append-inner"](slotProps.value) : props.appendInnerIcon && createVNode(InputIcon, {
|
||||
"key": "append-icon",
|
||||
"name": "appendInner",
|
||||
"color": iconColor.value
|
||||
}, null)]), createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-field__outline", textColorClasses.value]),
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, [isOutlined && createBaseVNode(Fragment, null, [createBaseVNode("div", {
|
||||
"class": "v-field__outline__start"
|
||||
}, null), hasFloatingLabel.value && createBaseVNode("div", {
|
||||
"class": "v-field__outline__notch"
|
||||
}, [createVNode(VFieldLabel, {
|
||||
"ref": floatingLabelRef,
|
||||
"floating": true,
|
||||
"for": id.value,
|
||||
"aria-hidden": !isActive.value
|
||||
}, {
|
||||
default: () => [label()]
|
||||
})]), createBaseVNode("div", {
|
||||
"class": "v-field__outline__end"
|
||||
}, null)]), isPlainOrUnderlined.value && hasFloatingLabel.value && createVNode(VFieldLabel, {
|
||||
"ref": floatingLabelRef,
|
||||
"floating": true,
|
||||
"for": id.value,
|
||||
"aria-hidden": !isActive.value
|
||||
}, {
|
||||
default: () => [label()]
|
||||
})])]);
|
||||
});
|
||||
return {
|
||||
controlRef,
|
||||
fieldIconColor: iconColor
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VCounter,
|
||||
VFieldLabel,
|
||||
makeVFieldProps,
|
||||
VField
|
||||
};
|
||||
//# sourceMappingURL=chunk-J7Q2NMV7.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+84
@@ -0,0 +1,84 @@
|
||||
import {
|
||||
getCurrentInstance,
|
||||
toKebabCase
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
effectScope,
|
||||
onScopeDispose,
|
||||
ref,
|
||||
toRaw,
|
||||
watch
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/toggleScope.js
|
||||
function useToggleScope(source, fn) {
|
||||
let scope;
|
||||
function start() {
|
||||
scope = effectScope();
|
||||
scope.run(() => fn.length ? fn(() => {
|
||||
scope?.stop();
|
||||
start();
|
||||
}) : fn());
|
||||
}
|
||||
watch(source, (active) => {
|
||||
if (active && !scope) {
|
||||
start();
|
||||
} else if (!active) {
|
||||
scope?.stop();
|
||||
scope = void 0;
|
||||
}
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
onScopeDispose(() => {
|
||||
scope?.stop();
|
||||
});
|
||||
}
|
||||
|
||||
// node_modules/vuetify/lib/composables/proxiedModel.js
|
||||
function useProxiedModel(props, prop, defaultValue) {
|
||||
let transformIn = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : (v) => v;
|
||||
let transformOut = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : (v) => v;
|
||||
const vm = getCurrentInstance("useProxiedModel");
|
||||
const internal = ref(props[prop] !== void 0 ? props[prop] : defaultValue);
|
||||
const kebabProp = toKebabCase(prop);
|
||||
const checkKebab = kebabProp !== prop;
|
||||
const isControlled = checkKebab ? computed(() => {
|
||||
void props[prop];
|
||||
return !!((vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) && (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`)));
|
||||
}) : computed(() => {
|
||||
void props[prop];
|
||||
return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`));
|
||||
});
|
||||
useToggleScope(() => !isControlled.value, () => {
|
||||
watch(() => props[prop], (val) => {
|
||||
internal.value = val;
|
||||
});
|
||||
});
|
||||
const model = computed({
|
||||
get() {
|
||||
const externalValue = props[prop];
|
||||
return transformIn(isControlled.value ? externalValue : internal.value);
|
||||
},
|
||||
set(internalValue) {
|
||||
const newValue = transformOut(internalValue);
|
||||
const value = toRaw(isControlled.value ? props[prop] : internal.value);
|
||||
if (value === newValue || transformIn(value) === internalValue) {
|
||||
return;
|
||||
}
|
||||
internal.value = newValue;
|
||||
vm?.emit(`update:${prop}`, newValue);
|
||||
}
|
||||
});
|
||||
Object.defineProperty(model, "externalValue", {
|
||||
get: () => isControlled.value ? props[prop] : internal.value
|
||||
});
|
||||
return model;
|
||||
}
|
||||
|
||||
export {
|
||||
useToggleScope,
|
||||
useProxiedModel
|
||||
};
|
||||
//# sourceMappingURL=chunk-KA77II4V.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/toggleScope.ts", "../../vuetify/src/composables/proxiedModel.ts"],
|
||||
"sourcesContent": ["// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue'\n\n// Types\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, fn: (reset: () => void) => void) {\n let scope: EffectScope | undefined\n function start () {\n scope = effectScope()\n scope.run(() => fn.length\n ? fn(() => { scope?.stop(); start() })\n : (fn as any)()\n )\n }\n\n watch(source, active => {\n if (active && !scope) {\n start()\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n", "// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { EventProp } from '@/util'\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}`]: EventProp | 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 const externalValue = props[prop]\n return transformIn(isControlled.value ? externalValue : 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": ";;;;;;;;;;;;;;AAMO,SAASA,eAAgBC,QAA8BC,IAAiC;AAC7F,MAAIC;AACJ,WAASC,QAAS;AAChBD,YAAQE,YAAY;AACpBF,UAAMG,IAAI,MAAMJ,GAAGK,SACfL,GAAG,MAAM;AAAEC,aAAOK,KAAK;AAAGJ,YAAM;IAAE,CAAC,IAClCF,GAAW,CAChB;EACF;AAEAO,QAAMR,QAAQS,YAAU;AACtB,QAAIA,UAAU,CAACP,OAAO;AACpBC,YAAM;IACR,WAAW,CAACM,QAAQ;AAClBP,aAAOK,KAAK;AACZL,cAAQQ;IACV;EACF,GAAG;IAAEC,WAAW;EAAK,CAAC;AAEtBC,iBAAe,MAAM;AACnBV,WAAOK,KAAK;EACd,CAAC;AACH;;;ACdO,SAASM,gBAKdC,OACAC,MACAC,cAGA;AAAA,MAFAC,cAA2CC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAIG,OAAWA;AAAC,MAC3DC,eAA2CJ,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAIG,OAAWA;AAE1D,QAAME,KAAKC,mBAAmB,iBAAiB;AAC/C,QAAMC,WAAWC,IAAIZ,MAAMC,IAAI,MAAMK,SAAYN,MAAMC,IAAI,IAAIC,YAAY;AAC3E,QAAMW,YAAYC,YAAYb,IAAI;AAClC,QAAMc,aAAaF,cAAcZ;AAEjC,QAAMe,eAAeD,aACjBE,SAAS,MAAM;AACf,SAAKjB,MAAMC,IAAI;AACf,WAAO,CAAC,GACLQ,GAAGS,MAAMlB,OAAOmB,eAAelB,IAAI,KAAKQ,GAAGS,MAAMlB,OAAOmB,eAAeN,SAAS,OAChFJ,GAAGS,MAAMlB,OAAOmB,eAAe,YAAYlB,IAAI,EAAE,KAAKQ,GAAGS,MAAMlB,OAAOmB,eAAe,YAAYN,SAAS,EAAE;EAEjH,CAAC,IACCI,SAAS,MAAM;AACf,SAAKjB,MAAMC,IAAI;AACf,WAAO,CAAC,EAAEQ,GAAGS,MAAMlB,OAAOmB,eAAelB,IAAI,KAAKQ,GAAGS,MAAMlB,OAAOmB,eAAe,YAAYlB,IAAI,EAAE;EACrG,CAAC;AAEHmB,iBAAe,MAAM,CAACJ,aAAaK,OAAO,MAAM;AAC9CC,UAAM,MAAMtB,MAAMC,IAAI,GAAGsB,SAAO;AAC9BZ,eAASU,QAAQE;IACnB,CAAC;EACH,CAAC;AAED,QAAMC,QAAQP,SAAS;IACrBQ,MAAY;AACV,YAAMC,gBAAgB1B,MAAMC,IAAI;AAChC,aAAOE,YAAYa,aAAaK,QAAQK,gBAAgBf,SAASU,KAAK;IACxE;IACAM,IAAKC,eAAe;AAClB,YAAMC,WAAWrB,aAAaoB,aAAa;AAC3C,YAAMP,QAAQS,MAAMd,aAAaK,QAAQrB,MAAMC,IAAI,IAAIU,SAASU,KAAK;AACrE,UAAIA,UAAUQ,YAAY1B,YAAYkB,KAAK,MAAMO,eAAe;AAC9D;MACF;AACAjB,eAASU,QAAQQ;AACjBpB,UAAIsB,KAAK,UAAU9B,IAAI,IAAI4B,QAAQ;IACrC;EACF,CAAC;AAEDG,SAAOC,eAAeT,OAAO,iBAAiB;IAC5CC,KAAKA,MAAMT,aAAaK,QAAQrB,MAAMC,IAAI,IAAIU,SAASU;EACzD,CAAC;AAED,SAAOG;AACT;",
|
||||
"names": ["useToggleScope", "source", "fn", "scope", "start", "effectScope", "run", "length", "stop", "watch", "active", "undefined", "immediate", "onScopeDispose", "useProxiedModel", "props", "prop", "defaultValue", "transformIn", "arguments", "length", "undefined", "v", "transformOut", "vm", "getCurrentInstance", "internal", "ref", "kebabProp", "toKebabCase", "checkKebab", "isControlled", "computed", "vnode", "hasOwnProperty", "useToggleScope", "value", "watch", "val", "model", "get", "externalValue", "set", "internalValue", "newValue", "toRaw", "emit", "Object", "defineProperty"]
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
import {
|
||||
VClassIcon
|
||||
} from "./chunk-OJDZBU5D.js";
|
||||
import {
|
||||
h
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/iconsets/mdi.js
|
||||
var aliases = {
|
||||
collapse: "mdi-chevron-up",
|
||||
complete: "mdi-check",
|
||||
cancel: "mdi-close-circle",
|
||||
close: "mdi-close",
|
||||
delete: "mdi-close-circle",
|
||||
// delete (e.g. v-chip close)
|
||||
clear: "mdi-close-circle",
|
||||
success: "mdi-check-circle",
|
||||
info: "mdi-information",
|
||||
warning: "mdi-alert-circle",
|
||||
error: "mdi-close-circle",
|
||||
prev: "mdi-chevron-left",
|
||||
next: "mdi-chevron-right",
|
||||
checkboxOn: "mdi-checkbox-marked",
|
||||
checkboxOff: "mdi-checkbox-blank-outline",
|
||||
checkboxIndeterminate: "mdi-minus-box",
|
||||
delimiter: "mdi-circle",
|
||||
// for carousel
|
||||
sortAsc: "mdi-arrow-up",
|
||||
sortDesc: "mdi-arrow-down",
|
||||
expand: "mdi-chevron-down",
|
||||
menu: "mdi-menu",
|
||||
subgroup: "mdi-menu-down",
|
||||
dropdown: "mdi-menu-down",
|
||||
radioOn: "mdi-radiobox-marked",
|
||||
radioOff: "mdi-radiobox-blank",
|
||||
edit: "mdi-pencil",
|
||||
ratingEmpty: "mdi-star-outline",
|
||||
ratingFull: "mdi-star",
|
||||
ratingHalf: "mdi-star-half-full",
|
||||
loading: "mdi-cached",
|
||||
first: "mdi-page-first",
|
||||
last: "mdi-page-last",
|
||||
unfold: "mdi-unfold-more-horizontal",
|
||||
file: "mdi-paperclip",
|
||||
plus: "mdi-plus",
|
||||
minus: "mdi-minus",
|
||||
calendar: "mdi-calendar",
|
||||
treeviewCollapse: "mdi-menu-down",
|
||||
treeviewExpand: "mdi-menu-right",
|
||||
tableGroupCollapse: "mdi-chevron-down",
|
||||
tableGroupExpand: "mdi-chevron-right",
|
||||
eyeDropper: "mdi-eyedropper",
|
||||
upload: "mdi-cloud-upload",
|
||||
color: "mdi-palette",
|
||||
command: "mdi-apple-keyboard-command",
|
||||
ctrl: "mdi-apple-keyboard-control",
|
||||
space: "mdi-keyboard-space",
|
||||
shift: "mdi-apple-keyboard-shift",
|
||||
alt: "mdi-apple-keyboard-option",
|
||||
enter: "mdi-keyboard-return",
|
||||
arrowup: "mdi-arrow-up",
|
||||
arrowdown: "mdi-arrow-down",
|
||||
arrowleft: "mdi-arrow-left",
|
||||
arrowright: "mdi-arrow-right",
|
||||
backspace: "mdi-backspace",
|
||||
play: "mdi-play",
|
||||
pause: "mdi-pause",
|
||||
fullscreen: "mdi-fullscreen",
|
||||
fullscreenExit: "mdi-fullscreen-exit",
|
||||
volumeHigh: "mdi-volume-high",
|
||||
volumeMedium: "mdi-volume-medium",
|
||||
volumeLow: "mdi-volume-low",
|
||||
volumeOff: "mdi-volume-variant-off"
|
||||
};
|
||||
var mdi = {
|
||||
// Not using mergeProps here, functional components merge props by default (?)
|
||||
component: (props) => h(VClassIcon, {
|
||||
...props,
|
||||
class: "mdi"
|
||||
})
|
||||
};
|
||||
|
||||
export {
|
||||
aliases,
|
||||
mdi
|
||||
};
|
||||
//# sourceMappingURL=chunk-KPWCGWEX.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/iconsets/mdi.ts"],
|
||||
"sourcesContent": ["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n tableGroupCollapse: 'mdi-chevron-down',\n tableGroupExpand: 'mdi-chevron-right',\n eyeDropper: 'mdi-eyedropper',\n upload: 'mdi-cloud-upload',\n color: 'mdi-palette',\n command: 'mdi-apple-keyboard-command',\n ctrl: 'mdi-apple-keyboard-control',\n space: 'mdi-keyboard-space',\n shift: 'mdi-apple-keyboard-shift',\n alt: 'mdi-apple-keyboard-option',\n enter: 'mdi-keyboard-return',\n arrowup: 'mdi-arrow-up',\n arrowdown: 'mdi-arrow-down',\n arrowleft: 'mdi-arrow-left',\n arrowright: 'mdi-arrow-right',\n backspace: 'mdi-backspace',\n play: 'mdi-play',\n pause: 'mdi-pause',\n fullscreen: 'mdi-fullscreen',\n fullscreenExit: 'mdi-fullscreen-exit',\n volumeHigh: 'mdi-volume-high',\n volumeMedium: 'mdi-volume-medium',\n volumeLow: 'mdi-volume-low',\n volumeOff: 'mdi-volume-variant-off',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],
|
||||
"mappings": ";;;;;;;;AASA,IAAMA,UAAuB;EAC3BC,UAAU;EACVC,UAAU;EACVC,QAAQ;EACRC,OAAO;EACPC,QAAQ;;EACRC,OAAO;EACPC,SAAS;EACTC,MAAM;EACNC,SAAS;EACTC,OAAO;EACPC,MAAM;EACNC,MAAM;EACNC,YAAY;EACZC,aAAa;EACbC,uBAAuB;EACvBC,WAAW;;EACXC,SAAS;EACTC,UAAU;EACVC,QAAQ;EACRC,MAAM;EACNC,UAAU;EACVC,UAAU;EACVC,SAAS;EACTC,UAAU;EACVC,MAAM;EACNC,aAAa;EACbC,YAAY;EACZC,YAAY;EACZC,SAAS;EACTC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC,MAAM;EACNC,MAAM;EACNC,OAAO;EACPC,UAAU;EACVC,kBAAkB;EAClBC,gBAAgB;EAChBC,oBAAoB;EACpBC,kBAAkB;EAClBC,YAAY;EACZC,QAAQ;EACRC,OAAO;EACPC,SAAS;EACTC,MAAM;EACNC,OAAO;EACPC,OAAO;EACPC,KAAK;EACLC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,YAAY;EACZC,WAAW;EACXC,MAAM;EACNC,OAAO;EACPC,YAAY;EACZC,gBAAgB;EAChBC,YAAY;EACZC,cAAc;EACdC,WAAW;EACXC,WAAW;AACb;AAEA,IAAMC,MAAe;;EAEnBC,WAAYC,WAAeC,EAAEC,YAAY;IAAE,GAAGF;IAAOG,OAAO;EAAM,CAAC;AACrE;",
|
||||
"names": ["aliases", "collapse", "complete", "cancel", "close", "delete", "clear", "success", "info", "warning", "error", "prev", "next", "checkboxOn", "checkboxOff", "checkboxIndeterminate", "delimiter", "sortAsc", "sortDesc", "expand", "menu", "subgroup", "dropdown", "radioOn", "radioOff", "edit", "ratingEmpty", "ratingFull", "ratingHalf", "loading", "first", "last", "unfold", "file", "plus", "minus", "calendar", "treeviewCollapse", "treeviewExpand", "tableGroupCollapse", "tableGroupExpand", "eyeDropper", "upload", "color", "command", "ctrl", "space", "shift", "alt", "enter", "arrowup", "arrowdown", "arrowleft", "arrowright", "backspace", "play", "pause", "fullscreen", "fullscreenExit", "volumeHigh", "volumeMedium", "volumeLow", "volumeOff", "mdi", "component", "props", "h", "VClassIcon", "class"]
|
||||
}
|
||||
+304
@@ -0,0 +1,304 @@
|
||||
import {
|
||||
useResizeObserver
|
||||
} from "./chunk-XDSAO7OT.js";
|
||||
import {
|
||||
consoleWarn,
|
||||
convertToUnit,
|
||||
findChildrenWithProvide,
|
||||
getCurrentInstance,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
inject,
|
||||
onActivated,
|
||||
onBeforeUnmount,
|
||||
onDeactivated,
|
||||
onMounted,
|
||||
provide,
|
||||
reactive,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
useId
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/layout.js
|
||||
var VuetifyLayoutKey = /* @__PURE__ */ Symbol.for("vuetify:layout");
|
||||
var VuetifyLayoutItemKey = /* @__PURE__ */ Symbol.for("vuetify:layout-item");
|
||||
var ROOT_ZINDEX = 1e3;
|
||||
var makeLayoutProps = propsFactory({
|
||||
overlaps: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
fullHeight: Boolean
|
||||
}, "layout");
|
||||
var makeLayoutItemProps = propsFactory({
|
||||
name: {
|
||||
type: String
|
||||
},
|
||||
order: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
absolute: Boolean
|
||||
}, "layout-item");
|
||||
function useLayout() {
|
||||
const layout = inject(VuetifyLayoutKey);
|
||||
if (!layout) throw new Error("[Vuetify] Could not find injected layout");
|
||||
return {
|
||||
getLayoutItem: layout.getLayoutItem,
|
||||
mainRect: layout.mainRect,
|
||||
mainStyles: layout.mainStyles
|
||||
};
|
||||
}
|
||||
function useLayoutItem(options) {
|
||||
const layout = inject(VuetifyLayoutKey);
|
||||
if (!layout) throw new Error("[Vuetify] Could not find injected layout");
|
||||
const id = options.id ?? `layout-item-${useId()}`;
|
||||
const vm = getCurrentInstance("useLayoutItem");
|
||||
provide(VuetifyLayoutItemKey, {
|
||||
id
|
||||
});
|
||||
const isKeptAlive = shallowRef(false);
|
||||
onDeactivated(() => isKeptAlive.value = true);
|
||||
onActivated(() => isKeptAlive.value = false);
|
||||
const {
|
||||
layoutItemStyles,
|
||||
layoutItemScrimStyles
|
||||
} = layout.register(vm, {
|
||||
...options,
|
||||
active: computed(() => isKeptAlive.value ? false : options.active.value),
|
||||
id
|
||||
});
|
||||
onBeforeUnmount(() => layout.unregister(id));
|
||||
return {
|
||||
layoutItemStyles,
|
||||
layoutRect: layout.layoutRect,
|
||||
layoutItemScrimStyles
|
||||
};
|
||||
}
|
||||
var generateLayers = (layout, positions, layoutSizes, activeItems) => {
|
||||
let previousLayer = {
|
||||
top: 0,
|
||||
left: 0,
|
||||
right: 0,
|
||||
bottom: 0
|
||||
};
|
||||
const layers = [{
|
||||
id: "",
|
||||
layer: {
|
||||
...previousLayer
|
||||
}
|
||||
}];
|
||||
for (const id of layout) {
|
||||
const position = positions.get(id);
|
||||
const amount = layoutSizes.get(id);
|
||||
const active = activeItems.get(id);
|
||||
if (!position || !amount || !active) continue;
|
||||
const layer = {
|
||||
...previousLayer,
|
||||
[position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0)
|
||||
};
|
||||
layers.push({
|
||||
id,
|
||||
layer
|
||||
});
|
||||
previousLayer = layer;
|
||||
}
|
||||
return layers;
|
||||
};
|
||||
function createLayout(props) {
|
||||
const parentLayout = inject(VuetifyLayoutKey, null);
|
||||
const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX);
|
||||
const registered = ref([]);
|
||||
const positions = reactive(/* @__PURE__ */ new Map());
|
||||
const layoutSizes = reactive(/* @__PURE__ */ new Map());
|
||||
const priorities = reactive(/* @__PURE__ */ new Map());
|
||||
const activeItems = reactive(/* @__PURE__ */ new Map());
|
||||
const disabledTransitions = reactive(/* @__PURE__ */ new Map());
|
||||
const {
|
||||
resizeRef,
|
||||
contentRect: layoutRect
|
||||
} = useResizeObserver();
|
||||
const computedOverlaps = computed(() => {
|
||||
const map = /* @__PURE__ */ new Map();
|
||||
const overlaps = props.overlaps ?? [];
|
||||
for (const overlap of overlaps.filter((item) => item.includes(":"))) {
|
||||
const [top, bottom] = overlap.split(":");
|
||||
if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;
|
||||
const topPosition = positions.get(top);
|
||||
const bottomPosition = positions.get(bottom);
|
||||
const topAmount = layoutSizes.get(top);
|
||||
const bottomAmount = layoutSizes.get(bottom);
|
||||
if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;
|
||||
map.set(bottom, {
|
||||
position: topPosition.value,
|
||||
amount: parseInt(topAmount.value, 10)
|
||||
});
|
||||
map.set(top, {
|
||||
position: bottomPosition.value,
|
||||
amount: -parseInt(bottomAmount.value, 10)
|
||||
});
|
||||
}
|
||||
return map;
|
||||
});
|
||||
const layers = computed(() => {
|
||||
const uniquePriorities = [...new Set([...priorities.values()].map((p) => p.value))].sort((a, b) => a - b);
|
||||
const layout = [];
|
||||
for (const p of uniquePriorities) {
|
||||
const items2 = registered.value.filter((id) => priorities.get(id)?.value === p);
|
||||
layout.push(...items2);
|
||||
}
|
||||
return generateLayers(layout, positions, layoutSizes, activeItems);
|
||||
});
|
||||
const transitionsEnabled = computed(() => {
|
||||
return !Array.from(disabledTransitions.values()).some((ref2) => ref2.value);
|
||||
});
|
||||
const mainRect = computed(() => {
|
||||
return layers.value[layers.value.length - 1].layer;
|
||||
});
|
||||
const mainStyles = toRef(() => {
|
||||
return {
|
||||
"--v-layout-left": convertToUnit(mainRect.value.left),
|
||||
"--v-layout-right": convertToUnit(mainRect.value.right),
|
||||
"--v-layout-top": convertToUnit(mainRect.value.top),
|
||||
"--v-layout-bottom": convertToUnit(mainRect.value.bottom),
|
||||
...transitionsEnabled.value ? void 0 : {
|
||||
transition: "none"
|
||||
}
|
||||
};
|
||||
});
|
||||
const items = computed(() => {
|
||||
return layers.value.slice(1).map((_ref, index) => {
|
||||
let {
|
||||
id
|
||||
} = _ref;
|
||||
const {
|
||||
layer
|
||||
} = layers.value[index];
|
||||
const size = layoutSizes.get(id);
|
||||
const position = positions.get(id);
|
||||
return {
|
||||
id,
|
||||
...layer,
|
||||
size: Number(size.value),
|
||||
position: position.value
|
||||
};
|
||||
});
|
||||
});
|
||||
const getLayoutItem = (id) => {
|
||||
return items.value.find((item) => item.id === id);
|
||||
};
|
||||
const rootVm = getCurrentInstance("createLayout");
|
||||
const isMounted = shallowRef(false);
|
||||
onMounted(() => {
|
||||
isMounted.value = true;
|
||||
});
|
||||
provide(VuetifyLayoutKey, {
|
||||
register: (vm, _ref2) => {
|
||||
let {
|
||||
id,
|
||||
order,
|
||||
position,
|
||||
layoutSize,
|
||||
elementSize,
|
||||
active,
|
||||
disableTransitions,
|
||||
absolute
|
||||
} = _ref2;
|
||||
priorities.set(id, order);
|
||||
positions.set(id, position);
|
||||
layoutSizes.set(id, layoutSize);
|
||||
activeItems.set(id, active);
|
||||
disableTransitions && disabledTransitions.set(id, disableTransitions);
|
||||
const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode);
|
||||
const instanceIndex = instances.indexOf(vm);
|
||||
if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id);
|
||||
else registered.value.push(id);
|
||||
const index = computed(() => items.value.findIndex((i) => i.id === id));
|
||||
const zIndex = computed(() => rootZIndex.value + layers.value.length * 2 - index.value * 2);
|
||||
const layoutItemStyles = computed(() => {
|
||||
const isHorizontal = position.value === "left" || position.value === "right";
|
||||
const isOppositeHorizontal = position.value === "right";
|
||||
const isOppositeVertical = position.value === "bottom";
|
||||
const size = elementSize.value ?? layoutSize.value;
|
||||
const unit = size === 0 ? "%" : "px";
|
||||
const styles = {
|
||||
[position.value]: 0,
|
||||
zIndex: zIndex.value,
|
||||
transform: `translate${isHorizontal ? "X" : "Y"}(${(active.value ? 0 : -(size === 0 ? 100 : size)) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}${unit})`,
|
||||
position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? "absolute" : "fixed",
|
||||
...transitionsEnabled.value ? void 0 : {
|
||||
transition: "none"
|
||||
}
|
||||
};
|
||||
if (!isMounted.value) return styles;
|
||||
const item = items.value[index.value];
|
||||
if (!item) consoleWarn(`[Vuetify] Could not find layout item "${id}"`);
|
||||
const overlap = computedOverlaps.value.get(id);
|
||||
if (overlap) {
|
||||
item[overlap.position] += overlap.amount;
|
||||
}
|
||||
return {
|
||||
...styles,
|
||||
height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : void 0,
|
||||
left: isOppositeHorizontal ? void 0 : `${item.left}px`,
|
||||
right: isOppositeHorizontal ? `${item.right}px` : void 0,
|
||||
top: position.value !== "bottom" ? `${item.top}px` : void 0,
|
||||
bottom: position.value !== "top" ? `${item.bottom}px` : void 0,
|
||||
width: !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)` : elementSize.value ? `${elementSize.value}px` : void 0
|
||||
};
|
||||
});
|
||||
const layoutItemScrimStyles = computed(() => ({
|
||||
zIndex: zIndex.value - 1
|
||||
}));
|
||||
return {
|
||||
layoutItemStyles,
|
||||
layoutItemScrimStyles,
|
||||
zIndex
|
||||
};
|
||||
},
|
||||
unregister: (id) => {
|
||||
priorities.delete(id);
|
||||
positions.delete(id);
|
||||
layoutSizes.delete(id);
|
||||
activeItems.delete(id);
|
||||
disabledTransitions.delete(id);
|
||||
registered.value = registered.value.filter((v) => v !== id);
|
||||
},
|
||||
mainRect,
|
||||
mainStyles,
|
||||
getLayoutItem,
|
||||
items,
|
||||
layoutRect,
|
||||
rootZIndex
|
||||
});
|
||||
const layoutClasses = toRef(() => ["v-layout", {
|
||||
"v-layout--full-height": props.fullHeight
|
||||
}]);
|
||||
const layoutStyles = toRef(() => ({
|
||||
zIndex: parentLayout ? rootZIndex.value : void 0,
|
||||
position: parentLayout ? "relative" : void 0,
|
||||
overflow: parentLayout ? "hidden" : void 0
|
||||
}));
|
||||
return {
|
||||
layoutClasses,
|
||||
layoutStyles,
|
||||
getLayoutItem,
|
||||
items,
|
||||
layoutRect,
|
||||
layoutRef: resizeRef
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
VuetifyLayoutKey,
|
||||
makeLayoutProps,
|
||||
makeLayoutItemProps,
|
||||
useLayout,
|
||||
useLayoutItem,
|
||||
createLayout
|
||||
};
|
||||
//# sourceMappingURL=chunk-KQXZAEJP.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+75
@@ -0,0 +1,75 @@
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
parseAnchor,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/location.js
|
||||
var oppositeMap = {
|
||||
center: "center",
|
||||
top: "bottom",
|
||||
bottom: "top",
|
||||
left: "right",
|
||||
right: "left"
|
||||
};
|
||||
var makeLocationProps = propsFactory({
|
||||
location: String
|
||||
}, "location");
|
||||
function useLocation(props) {
|
||||
let opposite = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
||||
let offset = arguments.length > 2 ? arguments[2] : void 0;
|
||||
const {
|
||||
isRtl
|
||||
} = useRtl();
|
||||
const locationStyles = computed(() => {
|
||||
if (!props.location) return {};
|
||||
const {
|
||||
side,
|
||||
align
|
||||
} = parseAnchor(props.location.split(" ").length > 1 ? props.location : `${props.location} center`, isRtl.value);
|
||||
function getOffset(side2) {
|
||||
return offset ? offset(side2) : 0;
|
||||
}
|
||||
const styles = {};
|
||||
if (side !== "center") {
|
||||
if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;
|
||||
else styles[side] = 0;
|
||||
}
|
||||
if (align !== "center") {
|
||||
if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;
|
||||
else styles[align] = 0;
|
||||
} else {
|
||||
if (side === "center") styles.top = styles.left = "50%";
|
||||
else {
|
||||
styles[{
|
||||
top: "left",
|
||||
bottom: "left",
|
||||
left: "top",
|
||||
right: "top"
|
||||
}[side]] = "50%";
|
||||
}
|
||||
styles.transform = {
|
||||
top: "translateX(-50%)",
|
||||
bottom: "translateX(-50%)",
|
||||
left: "translateY(-50%)",
|
||||
right: "translateY(-50%)",
|
||||
center: "translate(-50%, -50%)"
|
||||
}[side];
|
||||
}
|
||||
return styles;
|
||||
});
|
||||
return {
|
||||
locationStyles
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
makeLocationProps,
|
||||
useLocation
|
||||
};
|
||||
//# sourceMappingURL=chunk-KTTVT6V2.js.map
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../vuetify/src/composables/location.ts"],
|
||||
"sourcesContent": ["// Composables\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { parseAnchor, propsFactory } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType } from 'vue'\nimport type { Anchor } from '@/util'\n\nconst oppositeMap = {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n} as const\n\nexport interface LocationProps {\n location: Anchor | null | undefined\n}\n\nexport const makeLocationProps = propsFactory({\n location: String as PropType<Anchor | null>,\n}, 'location')\n\nexport function useLocation (props: LocationProps, opposite = false, offset?: (side: string) => number) {\n const { isRtl } = useRtl()\n\n const locationStyles = computed(() => {\n if (!props.location) return {}\n\n const { side, align } = parseAnchor(\n props.location.split(' ').length > 1\n ? props.location\n : `${props.location} center` as Anchor,\n isRtl.value\n )\n\n function getOffset (side: string) {\n return offset\n ? offset(side)\n : 0\n }\n\n const styles = {} as CSSProperties\n\n if (side !== 'center') {\n if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`\n else styles[side] = 0\n }\n if (align !== 'center') {\n if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`\n else styles[align] = 0\n } else {\n if (side === 'center') styles.top = styles.left = '50%'\n else {\n styles[({\n top: 'left',\n bottom: 'left',\n left: 'top',\n right: 'top',\n } as const)[side]] = '50%'\n }\n styles.transform = {\n top: 'translateX(-50%)',\n bottom: 'translateX(-50%)',\n left: 'translateY(-50%)',\n right: 'translateY(-50%)',\n center: 'translate(-50%, -50%)',\n }[side]\n }\n\n return styles\n })\n\n return { locationStyles }\n}\n"],
|
||||
"mappings": ";;;;;;;;;;;;AAWA,IAAMA,cAAc;EAClBC,QAAQ;EACRC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,OAAO;AACT;AAMO,IAAMC,oBAAoBC,aAAa;EAC5CC,UAAUC;AACZ,GAAG,UAAU;AAEN,SAASC,YAAaC,OAA2E;AAAA,MAArDC,WAAQC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAG;AAAK,MAAEG,SAAiCH,UAAAC,SAAA,IAAAD,UAAA,CAAA,IAAAE;AACpG,QAAM;IAAEE;EAAM,IAAIC,OAAO;AAEzB,QAAMC,iBAAiBC,SAAS,MAAM;AACpC,QAAI,CAACT,MAAMH,SAAU,QAAO,CAAC;AAE7B,UAAM;MAAEa;MAAMC;IAAM,IAAIC,YACtBZ,MAAMH,SAASgB,MAAM,GAAG,EAAEV,SAAS,IAC/BH,MAAMH,WACN,GAAGG,MAAMH,QAAQ,WACrBS,MAAMQ,KACR;AAEA,aAASC,UAAWL,OAAc;AAChC,aAAOL,SACHA,OAAOK,KAAI,IACX;IACN;AAEA,UAAMM,SAAS,CAAC;AAEhB,QAAIN,SAAS,UAAU;AACrB,UAAIT,SAAUe,QAAO3B,YAAYqB,IAAI,CAAC,IAAI,eAAeK,UAAUL,IAAI,CAAC;UACnEM,QAAON,IAAI,IAAI;IACtB;AACA,QAAIC,UAAU,UAAU;AACtB,UAAIV,SAAUe,QAAO3B,YAAYsB,KAAK,CAAC,IAAI,eAAeI,UAAUJ,KAAK,CAAC;UACrEK,QAAOL,KAAK,IAAI;IACvB,OAAO;AACL,UAAID,SAAS,SAAUM,QAAOzB,MAAMyB,OAAOvB,OAAO;WAC7C;AACHuB,eAAQ;UACNzB,KAAK;UACLC,QAAQ;UACRC,MAAM;UACNC,OAAO;QACT,EAAYgB,IAAI,CAAC,IAAI;MACvB;AACAM,aAAOC,YAAY;QACjB1B,KAAK;QACLC,QAAQ;QACRC,MAAM;QACNC,OAAO;QACPJ,QAAQ;MACV,EAAEoB,IAAI;IACR;AAEA,WAAOM;EACT,CAAC;AAED,SAAO;IAAER;EAAe;AAC1B;",
|
||||
"names": ["oppositeMap", "center", "top", "bottom", "left", "right", "makeLocationProps", "propsFactory", "location", "String", "useLocation", "props", "opposite", "arguments", "length", "undefined", "offset", "isRtl", "useRtl", "locationStyles", "computed", "side", "align", "parseAnchor", "split", "value", "getOffset", "styles", "transform"]
|
||||
}
|
||||
+830
@@ -0,0 +1,830 @@
|
||||
import {
|
||||
makeElevationProps,
|
||||
useElevation
|
||||
} from "./chunk-YJD2PNP6.js";
|
||||
import {
|
||||
VInput,
|
||||
VLabel,
|
||||
makeFocusProps,
|
||||
makeVInputProps,
|
||||
useFocus
|
||||
} from "./chunk-4VABFUPG.js";
|
||||
import {
|
||||
useForm
|
||||
} from "./chunk-GAYXO4FM.js";
|
||||
import {
|
||||
VScaleTransition
|
||||
} from "./chunk-B4JFJDWM.js";
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
ripple_default
|
||||
} from "./chunk-5BPWKCNA.js";
|
||||
import {
|
||||
forwardRefs
|
||||
} from "./chunk-GUNW7S2L.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useProxiedModel
|
||||
} from "./chunk-KA77II4V.js";
|
||||
import {
|
||||
useBackgroundColor,
|
||||
useTextColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
clamp,
|
||||
convertToUnit,
|
||||
createRange,
|
||||
filterInputAttrs,
|
||||
genericComponent,
|
||||
getDecimals,
|
||||
keyValues,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
inject,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
onScopeDispose,
|
||||
provide,
|
||||
ref,
|
||||
shallowRef,
|
||||
toRef,
|
||||
vShow,
|
||||
withDirectives
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VSlider/VSlider.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VSlider/VSlider.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VSlider/VSliderThumb.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VSlider/VSliderThumb.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VSlider/slider.js
|
||||
var VSliderSymbol = /* @__PURE__ */ Symbol.for("vuetify:v-slider");
|
||||
function getOffset(e, el, direction) {
|
||||
const vertical = direction === "vertical";
|
||||
const rect = el.getBoundingClientRect();
|
||||
const touch = "touches" in e ? e.touches[0] : e;
|
||||
return vertical ? touch.clientY - (rect.top + rect.height / 2) : touch.clientX - (rect.left + rect.width / 2);
|
||||
}
|
||||
function getPosition(e, position) {
|
||||
if ("touches" in e && e.touches.length) return e.touches[0][position];
|
||||
else if ("changedTouches" in e && e.changedTouches.length) return e.changedTouches[0][position];
|
||||
else return e[position];
|
||||
}
|
||||
var makeSliderProps = propsFactory({
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
error: Boolean,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
max: {
|
||||
type: [Number, String],
|
||||
default: 100
|
||||
},
|
||||
min: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
step: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
thumbColor: String,
|
||||
thumbLabel: {
|
||||
type: [Boolean, String],
|
||||
default: void 0,
|
||||
validator: (v) => typeof v === "boolean" || v === "always"
|
||||
},
|
||||
thumbSize: {
|
||||
type: [Number, String],
|
||||
default: 20
|
||||
},
|
||||
showTicks: {
|
||||
type: [Boolean, String],
|
||||
default: false,
|
||||
validator: (v) => typeof v === "boolean" || v === "always"
|
||||
},
|
||||
ticks: {
|
||||
type: [Array, Object]
|
||||
},
|
||||
tickSize: {
|
||||
type: [Number, String],
|
||||
default: 2
|
||||
},
|
||||
color: String,
|
||||
trackColor: String,
|
||||
trackFillColor: String,
|
||||
trackSize: {
|
||||
type: [Number, String],
|
||||
default: 4
|
||||
},
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal",
|
||||
validator: (v) => ["vertical", "horizontal"].includes(v)
|
||||
},
|
||||
reverse: Boolean,
|
||||
noKeyboard: Boolean,
|
||||
...makeRoundedProps(),
|
||||
...makeElevationProps({
|
||||
elevation: 2
|
||||
}),
|
||||
ripple: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
}, "Slider");
|
||||
var useSteps = (props) => {
|
||||
const min = computed(() => parseFloat(props.min));
|
||||
const max = computed(() => parseFloat(props.max));
|
||||
const step = computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0);
|
||||
const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
|
||||
function roundValue(value) {
|
||||
value = parseFloat(value);
|
||||
if (step.value <= 0) return value;
|
||||
const clamped = clamp(value, min.value, max.value);
|
||||
const offset = min.value % step.value;
|
||||
let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
||||
if (clamped > newValue && newValue + step.value > max.value) {
|
||||
newValue = max.value;
|
||||
}
|
||||
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
||||
}
|
||||
return {
|
||||
min,
|
||||
max,
|
||||
step,
|
||||
decimals,
|
||||
roundValue
|
||||
};
|
||||
};
|
||||
var useSlider = (_ref) => {
|
||||
let {
|
||||
props,
|
||||
steps,
|
||||
onSliderStart,
|
||||
onSliderMove,
|
||||
onSliderEnd,
|
||||
getActiveThumb
|
||||
} = _ref;
|
||||
const form = useForm(props);
|
||||
const {
|
||||
isRtl
|
||||
} = useRtl();
|
||||
const isReversed = toRef(() => props.reverse);
|
||||
const vertical = computed(() => props.direction === "vertical");
|
||||
const indexFromEnd = computed(() => vertical.value !== isReversed.value);
|
||||
const {
|
||||
min,
|
||||
max,
|
||||
step,
|
||||
decimals,
|
||||
roundValue
|
||||
} = steps;
|
||||
const thumbSize = computed(() => parseInt(props.thumbSize, 10));
|
||||
const tickSize = computed(() => parseInt(props.tickSize, 10));
|
||||
const trackSize = computed(() => parseInt(props.trackSize, 10));
|
||||
const numTicks = computed(() => (max.value - min.value) / step.value);
|
||||
const thumbColor = computed(() => props.error || form.isDisabled.value ? void 0 : props.thumbColor ?? props.color);
|
||||
const thumbLabelColor = computed(() => props.error || form.isDisabled.value ? void 0 : props.thumbColor);
|
||||
const trackColor = computed(() => props.error || form.isDisabled.value ? void 0 : props.trackColor ?? props.color);
|
||||
const trackFillColor = computed(() => props.error || form.isDisabled.value ? void 0 : props.trackFillColor ?? props.color);
|
||||
const mousePressed = shallowRef(false);
|
||||
const startOffset = shallowRef(0);
|
||||
const trackContainerRef = ref();
|
||||
const activeThumbRef = ref();
|
||||
function parseMouseMove(e) {
|
||||
const el = trackContainerRef.value?.$el;
|
||||
if (!el) return;
|
||||
const vertical2 = props.direction === "vertical";
|
||||
const start = vertical2 ? "top" : "left";
|
||||
const length = vertical2 ? "height" : "width";
|
||||
const position2 = vertical2 ? "clientY" : "clientX";
|
||||
const {
|
||||
[start]: trackStart,
|
||||
[length]: trackLength
|
||||
} = el.getBoundingClientRect();
|
||||
const clickOffset = getPosition(e, position2);
|
||||
let clickPos = clamp((clickOffset - trackStart - startOffset.value) / trackLength) || 0;
|
||||
if (vertical2 ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
|
||||
return roundValue(min.value + clickPos * (max.value - min.value));
|
||||
}
|
||||
const handleStop = (e) => {
|
||||
const value = parseMouseMove(e);
|
||||
if (value != null) {
|
||||
onSliderEnd({
|
||||
value
|
||||
});
|
||||
}
|
||||
mousePressed.value = false;
|
||||
startOffset.value = 0;
|
||||
};
|
||||
const handleStart = (e) => {
|
||||
const value = parseMouseMove(e);
|
||||
activeThumbRef.value = getActiveThumb(e);
|
||||
if (!activeThumbRef.value) return;
|
||||
mousePressed.value = true;
|
||||
if (activeThumbRef.value.contains(e.target)) {
|
||||
startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
|
||||
} else {
|
||||
startOffset.value = 0;
|
||||
if (value != null) {
|
||||
onSliderMove({
|
||||
value
|
||||
});
|
||||
}
|
||||
}
|
||||
if (value != null) {
|
||||
onSliderStart({
|
||||
value
|
||||
});
|
||||
}
|
||||
nextTick(() => activeThumbRef.value?.focus());
|
||||
};
|
||||
const moveListenerOptions = {
|
||||
passive: true,
|
||||
capture: true
|
||||
};
|
||||
function onMouseMove(e) {
|
||||
const value = parseMouseMove(e);
|
||||
if (value != null) {
|
||||
onSliderMove({
|
||||
value
|
||||
});
|
||||
}
|
||||
}
|
||||
function onSliderMouseUp(e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
handleStop(e);
|
||||
window.removeEventListener("mousemove", onMouseMove, moveListenerOptions);
|
||||
window.removeEventListener("mouseup", onSliderMouseUp);
|
||||
}
|
||||
function onSliderTouchend(e) {
|
||||
handleStop(e);
|
||||
window.removeEventListener("touchmove", onMouseMove, moveListenerOptions);
|
||||
e.target?.removeEventListener("touchend", onSliderTouchend);
|
||||
}
|
||||
function onSliderTouchstart(e) {
|
||||
handleStart(e);
|
||||
window.addEventListener("touchmove", onMouseMove, moveListenerOptions);
|
||||
e.target?.addEventListener("touchend", onSliderTouchend, {
|
||||
passive: false
|
||||
});
|
||||
}
|
||||
function onSliderMousedown(e) {
|
||||
if (e.button !== 0) return;
|
||||
e.preventDefault();
|
||||
handleStart(e);
|
||||
window.addEventListener("mousemove", onMouseMove, moveListenerOptions);
|
||||
window.addEventListener("mouseup", onSliderMouseUp, {
|
||||
passive: false
|
||||
});
|
||||
}
|
||||
onScopeDispose(() => {
|
||||
window.removeEventListener("touchmove", onMouseMove);
|
||||
window.removeEventListener("mousemove", onMouseMove);
|
||||
window.removeEventListener("mouseup", onSliderMouseUp);
|
||||
});
|
||||
const position = (val) => {
|
||||
const percentage = (val - min.value) / (max.value - min.value) * 100;
|
||||
return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
|
||||
};
|
||||
const showTicks = toRef(() => props.showTicks);
|
||||
const parsedTicks = computed(() => {
|
||||
if (!showTicks.value) return [];
|
||||
if (!props.ticks) {
|
||||
return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map((t) => {
|
||||
const value = min.value + t * step.value;
|
||||
return {
|
||||
value,
|
||||
position: position(value)
|
||||
};
|
||||
}) : [];
|
||||
}
|
||||
if (Array.isArray(props.ticks)) return props.ticks.map((t) => ({
|
||||
value: t,
|
||||
position: position(t),
|
||||
label: t.toString()
|
||||
}));
|
||||
return Object.keys(props.ticks).map((key) => ({
|
||||
value: parseFloat(key),
|
||||
position: position(parseFloat(key)),
|
||||
label: props.ticks[key]
|
||||
}));
|
||||
});
|
||||
const hasLabels = computed(() => parsedTicks.value.some((_ref2) => {
|
||||
let {
|
||||
label
|
||||
} = _ref2;
|
||||
return !!label;
|
||||
}));
|
||||
const data = {
|
||||
activeThumbRef,
|
||||
color: toRef(() => props.color),
|
||||
decimals,
|
||||
disabled: form.isDisabled,
|
||||
direction: toRef(() => props.direction),
|
||||
elevation: toRef(() => props.elevation),
|
||||
hasLabels,
|
||||
isReversed,
|
||||
indexFromEnd,
|
||||
min,
|
||||
max,
|
||||
mousePressed,
|
||||
noKeyboard: toRef(() => props.noKeyboard),
|
||||
numTicks,
|
||||
onSliderMousedown,
|
||||
onSliderTouchstart,
|
||||
parsedTicks,
|
||||
parseMouseMove,
|
||||
position,
|
||||
readonly: form.isReadonly,
|
||||
rounded: toRef(() => props.rounded),
|
||||
roundValue,
|
||||
showTicks,
|
||||
startOffset,
|
||||
step,
|
||||
thumbSize,
|
||||
thumbColor,
|
||||
thumbLabelColor,
|
||||
thumbLabel: toRef(() => props.thumbLabel),
|
||||
ticks: toRef(() => props.ticks),
|
||||
tickSize,
|
||||
trackColor,
|
||||
trackContainerRef,
|
||||
trackFillColor,
|
||||
trackSize,
|
||||
vertical
|
||||
};
|
||||
provide(VSliderSymbol, data);
|
||||
return data;
|
||||
};
|
||||
|
||||
// node_modules/vuetify/lib/components/VSlider/VSliderThumb.js
|
||||
var makeVSliderThumbProps = propsFactory({
|
||||
focused: Boolean,
|
||||
max: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
min: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
modelValue: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
position: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
name: String,
|
||||
noKeyboard: Boolean,
|
||||
...makeComponentProps()
|
||||
}, "VSliderThumb");
|
||||
var VSliderThumb = genericComponent()({
|
||||
name: "VSliderThumb",
|
||||
directives: {
|
||||
vRipple: ripple_default
|
||||
},
|
||||
props: makeVSliderThumbProps(),
|
||||
emits: {
|
||||
"update:modelValue": (v) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit
|
||||
} = _ref;
|
||||
const slider = inject(VSliderSymbol);
|
||||
const {
|
||||
isRtl,
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
if (!slider) throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");
|
||||
const {
|
||||
min,
|
||||
max,
|
||||
thumbColor,
|
||||
thumbLabelColor,
|
||||
step,
|
||||
disabled,
|
||||
thumbSize,
|
||||
thumbLabel,
|
||||
direction,
|
||||
isReversed,
|
||||
vertical,
|
||||
readonly,
|
||||
elevation,
|
||||
mousePressed,
|
||||
decimals,
|
||||
indexFromEnd
|
||||
} = slider;
|
||||
const elevationProps = computed(() => !disabled.value ? elevation.value : void 0);
|
||||
const {
|
||||
elevationClasses
|
||||
} = useElevation(elevationProps);
|
||||
const {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
} = useTextColor(thumbColor);
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(thumbLabelColor);
|
||||
const {
|
||||
pageup,
|
||||
pagedown,
|
||||
end,
|
||||
home,
|
||||
left,
|
||||
right,
|
||||
down,
|
||||
up
|
||||
} = keyValues;
|
||||
const relevantKeys = [pageup, pagedown, end, home, left, right, down, up];
|
||||
const multipliers = computed(() => {
|
||||
if (step.value) return [1, 2, 3];
|
||||
else return [1, 5, 10];
|
||||
});
|
||||
function parseKeydown(e, value) {
|
||||
if (props.noKeyboard || disabled.value) return;
|
||||
if (!relevantKeys.includes(e.key)) return;
|
||||
e.preventDefault();
|
||||
const _step = step.value || 0.1;
|
||||
const steps = (max.value - min.value) / _step;
|
||||
if ([left, right, down, up].includes(e.key)) {
|
||||
const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
|
||||
const direction2 = increase.includes(e.key) ? 1 : -1;
|
||||
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
||||
if (direction2 === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
|
||||
value = value - steps % 1 * _step;
|
||||
} else {
|
||||
value = value + direction2 * _step * multipliers.value[multiplier];
|
||||
}
|
||||
} else if (e.key === home) {
|
||||
value = min.value;
|
||||
} else if (e.key === end) {
|
||||
value = max.value;
|
||||
} else {
|
||||
const direction2 = e.key === pagedown ? 1 : -1;
|
||||
value = value - direction2 * _step * (steps > 100 ? steps / 10 : 10);
|
||||
}
|
||||
return Math.max(props.min, Math.min(props.max, value));
|
||||
}
|
||||
function onKeydown(e) {
|
||||
const newValue = parseKeydown(e, props.modelValue);
|
||||
newValue != null && emit("update:modelValue", newValue);
|
||||
}
|
||||
useRender(() => {
|
||||
const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, "%");
|
||||
return createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-thumb", {
|
||||
"v-slider-thumb--focused": props.focused,
|
||||
"v-slider-thumb--pressed": props.focused && mousePressed.value
|
||||
}, props.class, rtlClasses.value]),
|
||||
"style": normalizeStyle([{
|
||||
"--v-slider-thumb-position": positionPercentage,
|
||||
"--v-slider-thumb-size": convertToUnit(thumbSize.value)
|
||||
}, props.style]),
|
||||
"role": "slider",
|
||||
"tabindex": disabled.value ? -1 : 0,
|
||||
"aria-label": props.name,
|
||||
"aria-valuemin": min.value,
|
||||
"aria-valuemax": max.value,
|
||||
"aria-valuenow": props.modelValue,
|
||||
"aria-readonly": !!readonly.value,
|
||||
"aria-orientation": direction.value,
|
||||
"onKeydown": !readonly.value ? onKeydown : void 0
|
||||
}, [createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-thumb__surface", textColorClasses.value, elevationClasses.value]),
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, null), withDirectives(createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-thumb__ripple", textColorClasses.value]),
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, null), [[ripple_default, props.ripple, null, {
|
||||
circle: true,
|
||||
center: true
|
||||
}]]), createVNode(VScaleTransition, {
|
||||
"origin": "bottom center"
|
||||
}, {
|
||||
default: () => [withDirectives(createBaseVNode("div", {
|
||||
"class": "v-slider-thumb__label-container"
|
||||
}, [createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-thumb__label", backgroundColorClasses.value]),
|
||||
"style": normalizeStyle(backgroundColorStyles.value)
|
||||
}, [createBaseVNode("div", null, [slots["thumb-label"]?.({
|
||||
modelValue: props.modelValue
|
||||
}) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)]), createBaseVNode("div", {
|
||||
"class": "v-slider-thumb__label-wedge"
|
||||
}, null)])]), [[vShow, thumbLabel.value && props.focused || thumbLabel.value === "always"]])]
|
||||
})]);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VSlider/VSliderTrack.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VSlider/VSliderTrack.css";
|
||||
var makeVSliderTrackProps = propsFactory({
|
||||
start: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
stop: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
...makeComponentProps()
|
||||
}, "VSliderTrack");
|
||||
var VSliderTrack = genericComponent()({
|
||||
name: "VSliderTrack",
|
||||
props: makeVSliderTrackProps(),
|
||||
emits: {},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const slider = inject(VSliderSymbol);
|
||||
if (!slider) throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");
|
||||
const {
|
||||
color,
|
||||
parsedTicks,
|
||||
rounded,
|
||||
showTicks,
|
||||
tickSize,
|
||||
trackColor,
|
||||
trackFillColor,
|
||||
trackSize,
|
||||
vertical,
|
||||
min,
|
||||
max,
|
||||
indexFromEnd
|
||||
} = slider;
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(rounded);
|
||||
const {
|
||||
backgroundColorClasses: trackFillColorClasses,
|
||||
backgroundColorStyles: trackFillColorStyles
|
||||
} = useBackgroundColor(trackFillColor);
|
||||
const {
|
||||
backgroundColorClasses: trackColorClasses,
|
||||
backgroundColorStyles: trackColorStyles
|
||||
} = useBackgroundColor(trackColor);
|
||||
const startDir = computed(() => `inset-${vertical.value ? "block" : "inline"}-${indexFromEnd.value ? "end" : "start"}`);
|
||||
const endDir = computed(() => vertical.value ? "height" : "width");
|
||||
const backgroundStyles = computed(() => {
|
||||
return {
|
||||
[startDir.value]: "0%",
|
||||
[endDir.value]: "100%"
|
||||
};
|
||||
});
|
||||
const trackFillWidth = computed(() => props.stop - props.start);
|
||||
const trackFillStyles = computed(() => {
|
||||
return {
|
||||
[startDir.value]: convertToUnit(props.start, "%"),
|
||||
[endDir.value]: convertToUnit(trackFillWidth.value, "%")
|
||||
};
|
||||
});
|
||||
const computedTicks = computed(() => {
|
||||
if (!showTicks.value) return [];
|
||||
const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
|
||||
return ticks.map((tick, index) => {
|
||||
const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, "%") : void 0;
|
||||
return createBaseVNode("div", {
|
||||
"key": tick.value,
|
||||
"class": normalizeClass(["v-slider-track__tick", {
|
||||
"v-slider-track__tick--filled": tick.position >= props.start && tick.position <= props.stop,
|
||||
"v-slider-track__tick--first": tick.value === min.value,
|
||||
"v-slider-track__tick--last": tick.value === max.value
|
||||
}]),
|
||||
"style": {
|
||||
[startDir.value]: directionValue
|
||||
}
|
||||
}, [(tick.label || slots["tick-label"]) && createBaseVNode("div", {
|
||||
"class": "v-slider-track__tick-label"
|
||||
}, [slots["tick-label"]?.({
|
||||
tick,
|
||||
index
|
||||
}) ?? tick.label])]);
|
||||
});
|
||||
});
|
||||
useRender(() => {
|
||||
return createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-track", roundedClasses.value, props.class]),
|
||||
"style": normalizeStyle([{
|
||||
"--v-slider-track-size": convertToUnit(trackSize.value),
|
||||
"--v-slider-tick-size": convertToUnit(tickSize.value)
|
||||
}, props.style])
|
||||
}, [createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-track__background", trackColorClasses.value, {
|
||||
"v-slider-track__background--opacity": !!color.value || !trackFillColor.value
|
||||
}]),
|
||||
"style": {
|
||||
...backgroundStyles.value,
|
||||
...trackColorStyles.value
|
||||
}
|
||||
}, null), createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-track__fill", trackFillColorClasses.value]),
|
||||
"style": {
|
||||
...trackFillStyles.value,
|
||||
...trackFillColorStyles.value
|
||||
}
|
||||
}, null), showTicks.value && createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-slider-track__ticks", {
|
||||
"v-slider-track__ticks--always-show": showTicks.value === "always"
|
||||
}])
|
||||
}, [computedTicks.value])]);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VSlider/VSlider.js
|
||||
var makeVSliderProps = propsFactory({
|
||||
...makeFocusProps(),
|
||||
...makeSliderProps(),
|
||||
...makeVInputProps(),
|
||||
modelValue: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
}
|
||||
}, "VSlider");
|
||||
var VSlider = genericComponent()({
|
||||
name: "VSlider",
|
||||
inheritAttrs: false,
|
||||
props: makeVSliderProps(),
|
||||
emits: {
|
||||
"update:focused": (value) => true,
|
||||
"update:modelValue": (v) => true,
|
||||
start: (value) => true,
|
||||
end: (value) => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit,
|
||||
attrs
|
||||
} = _ref;
|
||||
const thumbContainerRef = ref();
|
||||
const inputRef = ref();
|
||||
const {
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
const steps = useSteps(props);
|
||||
const model = useProxiedModel(props, "modelValue", void 0, (value) => {
|
||||
return steps.roundValue(value == null ? steps.min.value : value);
|
||||
});
|
||||
const {
|
||||
min,
|
||||
max,
|
||||
mousePressed,
|
||||
roundValue,
|
||||
onSliderMousedown,
|
||||
onSliderTouchstart,
|
||||
trackContainerRef,
|
||||
position,
|
||||
hasLabels,
|
||||
disabled,
|
||||
readonly,
|
||||
noKeyboard
|
||||
} = useSlider({
|
||||
props,
|
||||
steps,
|
||||
onSliderStart: () => {
|
||||
if (!disabled.value && !readonly.value) {
|
||||
emit("start", model.value);
|
||||
}
|
||||
},
|
||||
onSliderEnd: (_ref2) => {
|
||||
let {
|
||||
value
|
||||
} = _ref2;
|
||||
const roundedValue = roundValue(value);
|
||||
if (!disabled.value && !readonly.value) {
|
||||
model.value = roundedValue;
|
||||
}
|
||||
emit("end", roundedValue);
|
||||
},
|
||||
onSliderMove: (_ref3) => {
|
||||
let {
|
||||
value
|
||||
} = _ref3;
|
||||
if (!disabled.value && !readonly.value) {
|
||||
model.value = roundValue(value);
|
||||
}
|
||||
},
|
||||
getActiveThumb: () => thumbContainerRef.value?.$el
|
||||
});
|
||||
const {
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
} = useFocus(props);
|
||||
const trackStop = computed(() => position(model.value));
|
||||
useRender(() => {
|
||||
const inputProps = VInput.filterProps(props);
|
||||
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
||||
const hasPrepend = !!(props.label || slots.label || slots.prepend);
|
||||
return createVNode(VInput, mergeProps({
|
||||
"ref": inputRef,
|
||||
"class": ["v-slider", {
|
||||
"v-slider--has-labels": !!slots["tick-label"] || hasLabels.value,
|
||||
"v-slider--focused": isFocused.value,
|
||||
"v-slider--pressed": mousePressed.value,
|
||||
"v-slider--disabled": disabled.value
|
||||
}, rtlClasses.value, props.class],
|
||||
"style": props.style
|
||||
}, inputProps, rootAttrs, {
|
||||
"focused": isFocused.value
|
||||
}), {
|
||||
...slots,
|
||||
prepend: hasPrepend ? (slotProps) => createBaseVNode(Fragment, null, [slots.label?.(slotProps) ?? (props.label ? createVNode(VLabel, {
|
||||
"id": slotProps.id.value,
|
||||
"class": "v-slider__label",
|
||||
"text": props.label
|
||||
}, null) : void 0), slots.prepend?.(slotProps)]) : void 0,
|
||||
default: (_ref4) => {
|
||||
let {
|
||||
id,
|
||||
messagesId
|
||||
} = _ref4;
|
||||
return createBaseVNode("div", {
|
||||
"class": "v-slider__container",
|
||||
"onMousedown": !readonly.value ? onSliderMousedown : void 0,
|
||||
"onTouchstartPassive": !readonly.value ? onSliderTouchstart : void 0
|
||||
}, [createBaseVNode("input", {
|
||||
"id": id.value,
|
||||
"name": props.name || id.value,
|
||||
"disabled": disabled.value,
|
||||
"readonly": readonly.value,
|
||||
"tabindex": "-1",
|
||||
"value": model.value
|
||||
}, null), createVNode(VSliderTrack, {
|
||||
"ref": trackContainerRef,
|
||||
"start": 0,
|
||||
"stop": trackStop.value
|
||||
}, {
|
||||
"tick-label": slots["tick-label"]
|
||||
}), createVNode(VSliderThumb, mergeProps({
|
||||
"ref": thumbContainerRef,
|
||||
"aria-describedby": messagesId.value,
|
||||
"focused": isFocused.value,
|
||||
"noKeyboard": noKeyboard.value,
|
||||
"min": min.value,
|
||||
"max": max.value,
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": (v) => model.value = v,
|
||||
"position": trackStop.value,
|
||||
"elevation": props.elevation,
|
||||
"onFocus": focus,
|
||||
"onBlur": blur,
|
||||
"ripple": props.ripple,
|
||||
"name": props.name
|
||||
}, inputAttrs), {
|
||||
"thumb-label": slots["thumb-label"]
|
||||
})]);
|
||||
}
|
||||
});
|
||||
});
|
||||
return forwardRefs({
|
||||
focus: () => thumbContainerRef.value?.$el.focus()
|
||||
}, inputRef);
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
getOffset,
|
||||
makeSliderProps,
|
||||
useSteps,
|
||||
useSlider,
|
||||
VSliderThumb,
|
||||
VSliderTrack,
|
||||
VSlider
|
||||
};
|
||||
//# sourceMappingURL=chunk-LHMOJDYM.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+239
@@ -0,0 +1,239 @@
|
||||
import {
|
||||
VImg
|
||||
} from "./chunk-6CRS5HI4.js";
|
||||
import {
|
||||
makeBorderProps,
|
||||
useBorder
|
||||
} from "./chunk-X7YBE6PF.js";
|
||||
import {
|
||||
makeElevationProps,
|
||||
useElevation
|
||||
} from "./chunk-YJD2PNP6.js";
|
||||
import {
|
||||
VExpandTransition
|
||||
} from "./chunk-B4JFJDWM.js";
|
||||
import {
|
||||
VDefaultsProvider
|
||||
} from "./chunk-VH7QIDM4.js";
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
useRtl
|
||||
} from "./chunk-ENTLCOCZ.js";
|
||||
import {
|
||||
useBackgroundColor
|
||||
} from "./chunk-BHV5Z34M.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
convertToUnit,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
provideDefaults,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
shallowRef
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VToolbar/VToolbarTitle.js
|
||||
var makeVToolbarTitleProps = propsFactory({
|
||||
text: String,
|
||||
...makeComponentProps(),
|
||||
...makeTagProps()
|
||||
}, "VToolbarTitle");
|
||||
var VToolbarTitle = genericComponent()({
|
||||
name: "VToolbarTitle",
|
||||
props: makeVToolbarTitleProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => {
|
||||
const hasText = !!(slots.default || slots.text || props.text);
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-toolbar-title", props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, {
|
||||
default: () => [hasText && createBaseVNode("div", {
|
||||
"class": "v-toolbar-title__placeholder"
|
||||
}, [slots.text ? slots.text() : props.text, slots.default?.()])]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VToolbar/VToolbar.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VToolbar/VToolbar.css";
|
||||
var allowedDensities = [null, "prominent", "default", "comfortable", "compact"];
|
||||
var makeVToolbarProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
collapse: Boolean,
|
||||
collapsePosition: {
|
||||
type: String,
|
||||
default: "start"
|
||||
},
|
||||
color: String,
|
||||
density: {
|
||||
type: String,
|
||||
default: "default",
|
||||
validator: (v) => allowedDensities.includes(v)
|
||||
},
|
||||
extended: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
extensionHeight: {
|
||||
type: [Number, String],
|
||||
default: 48
|
||||
},
|
||||
flat: Boolean,
|
||||
floating: Boolean,
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: 64
|
||||
},
|
||||
image: String,
|
||||
title: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeElevationProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps({
|
||||
tag: "header"
|
||||
}),
|
||||
...makeThemeProps()
|
||||
}, "VToolbar");
|
||||
var VToolbar = genericComponent()({
|
||||
name: "VToolbar",
|
||||
props: makeVToolbarProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => props.color);
|
||||
const {
|
||||
borderClasses
|
||||
} = useBorder(props);
|
||||
const {
|
||||
elevationClasses
|
||||
} = useElevation(props);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
rtlClasses
|
||||
} = useRtl();
|
||||
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
||||
const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === "prominent" ? Number(props.height) : 0) - (props.density === "comfortable" ? 8 : 0) - (props.density === "compact" ? 16 : 0), 10));
|
||||
const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === "prominent" ? Number(props.extensionHeight) : 0) - (props.density === "comfortable" ? 4 : 0) - (props.density === "compact" ? 8 : 0), 10) : 0);
|
||||
provideDefaults({
|
||||
VBtn: {
|
||||
variant: "text"
|
||||
}
|
||||
});
|
||||
useRender(() => {
|
||||
const hasTitle = !!(props.title || slots.title);
|
||||
const hasImage = !!(slots.image || props.image);
|
||||
const extension = slots.extension?.();
|
||||
isExtended.value = props.extended === null ? !!extension : props.extended;
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-toolbar", `v-toolbar--collapse-${props.collapsePosition}`, {
|
||||
"v-toolbar--absolute": props.absolute,
|
||||
"v-toolbar--collapse": props.collapse,
|
||||
"v-toolbar--flat": props.flat,
|
||||
"v-toolbar--floating": props.floating,
|
||||
[`v-toolbar--density-${props.density}`]: true
|
||||
}, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, rtlClasses.value, props.class]),
|
||||
"style": normalizeStyle([backgroundColorStyles.value, props.style])
|
||||
}, {
|
||||
default: () => [hasImage && createBaseVNode("div", {
|
||||
"key": "image",
|
||||
"class": "v-toolbar__image"
|
||||
}, [!slots.image ? createVNode(VImg, {
|
||||
"key": "image-img",
|
||||
"cover": true,
|
||||
"src": props.image
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "image-defaults",
|
||||
"disabled": !props.image,
|
||||
"defaults": {
|
||||
VImg: {
|
||||
cover: true,
|
||||
src: props.image
|
||||
}
|
||||
}
|
||||
}, slots.image)]), createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VTabs: {
|
||||
height: convertToUnit(contentHeight.value)
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [createBaseVNode("div", {
|
||||
"class": "v-toolbar__content",
|
||||
"style": {
|
||||
height: convertToUnit(contentHeight.value)
|
||||
}
|
||||
}, [slots.prepend && createBaseVNode("div", {
|
||||
"class": "v-toolbar__prepend"
|
||||
}, [slots.prepend?.()]), hasTitle && createVNode(VToolbarTitle, {
|
||||
"key": "title",
|
||||
"text": props.title
|
||||
}, {
|
||||
text: slots.title
|
||||
}), slots.default?.(), slots.append && createBaseVNode("div", {
|
||||
"class": "v-toolbar__append"
|
||||
}, [slots.append?.()])])]
|
||||
}), createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VTabs: {
|
||||
height: convertToUnit(extensionHeight.value)
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [createVNode(VExpandTransition, null, {
|
||||
default: () => [isExtended.value && createBaseVNode("div", {
|
||||
"class": "v-toolbar__extension",
|
||||
"style": {
|
||||
height: convertToUnit(extensionHeight.value)
|
||||
}
|
||||
}, [extension])]
|
||||
})]
|
||||
})]
|
||||
});
|
||||
});
|
||||
return {
|
||||
contentHeight,
|
||||
extensionHeight
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
makeVToolbarTitleProps,
|
||||
VToolbarTitle,
|
||||
makeVToolbarProps,
|
||||
VToolbar
|
||||
};
|
||||
//# sourceMappingURL=chunk-LPZZJ62X.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+1721
File diff suppressed because it is too large
Load Diff
+7
File diff suppressed because one or more lines are too long
+444
@@ -0,0 +1,444 @@
|
||||
import {
|
||||
makePositionProps,
|
||||
usePosition
|
||||
} from "./chunk-HOEZWRBG.js";
|
||||
import {
|
||||
VAvatar
|
||||
} from "./chunk-Z3677HMS.js";
|
||||
import {
|
||||
genOverlays,
|
||||
makeVariantProps,
|
||||
useVariant
|
||||
} from "./chunk-ADXDXPPR.js";
|
||||
import {
|
||||
VImg
|
||||
} from "./chunk-6CRS5HI4.js";
|
||||
import {
|
||||
makeBorderProps,
|
||||
useBorder
|
||||
} from "./chunk-X7YBE6PF.js";
|
||||
import {
|
||||
makeElevationProps,
|
||||
useElevation
|
||||
} from "./chunk-YJD2PNP6.js";
|
||||
import {
|
||||
LoaderSlot,
|
||||
makeLoaderProps,
|
||||
useLoader
|
||||
} from "./chunk-U2DSRSME.js";
|
||||
import {
|
||||
makeLocationProps,
|
||||
useLocation
|
||||
} from "./chunk-KTTVT6V2.js";
|
||||
import {
|
||||
makeDensityProps,
|
||||
useDensity
|
||||
} from "./chunk-TM3MIDYC.js";
|
||||
import {
|
||||
VIcon
|
||||
} from "./chunk-CMZ4UYUX.js";
|
||||
import {
|
||||
VDefaultsProvider
|
||||
} from "./chunk-VH7QIDM4.js";
|
||||
import {
|
||||
makeRoundedProps,
|
||||
useRounded
|
||||
} from "./chunk-AQK3CYVW.js";
|
||||
import {
|
||||
makeTagProps
|
||||
} from "./chunk-2HZIACSB.js";
|
||||
import {
|
||||
ripple_default
|
||||
} from "./chunk-5BPWKCNA.js";
|
||||
import {
|
||||
makeRouterProps,
|
||||
useLink
|
||||
} from "./chunk-573D4TYC.js";
|
||||
import {
|
||||
makeDimensionProps,
|
||||
useDimension
|
||||
} from "./chunk-6EZKHCRW.js";
|
||||
import {
|
||||
IconValue
|
||||
} from "./chunk-OJDZBU5D.js";
|
||||
import {
|
||||
makeThemeProps,
|
||||
provideTheme
|
||||
} from "./chunk-3DSR7NCB.js";
|
||||
import {
|
||||
createSimpleFunctional,
|
||||
genericComponent,
|
||||
makeComponentProps,
|
||||
propsFactory,
|
||||
provideDefaults,
|
||||
useRender
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
Fragment,
|
||||
createBaseVNode,
|
||||
createVNode,
|
||||
mergeProps,
|
||||
normalizeClass,
|
||||
normalizeStyle,
|
||||
shallowRef,
|
||||
toDisplayString,
|
||||
watch,
|
||||
withDirectives
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCard.js
|
||||
import "/home/david/Documents/vscode/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VCard/VCard.css";
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCardActions.js
|
||||
var makeVCardActionsProps = propsFactory({
|
||||
...makeComponentProps(),
|
||||
...makeTagProps()
|
||||
}, "VCardActions");
|
||||
var VCardActions = genericComponent()({
|
||||
name: "VCardActions",
|
||||
props: makeVCardActionsProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
provideDefaults({
|
||||
VBtn: {
|
||||
slim: true,
|
||||
variant: "text"
|
||||
}
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-card-actions", props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCardSubtitle.js
|
||||
var makeVCardSubtitleProps = propsFactory({
|
||||
opacity: [Number, String],
|
||||
...makeComponentProps(),
|
||||
...makeTagProps()
|
||||
}, "VCardSubtitle");
|
||||
var VCardSubtitle = genericComponent()({
|
||||
name: "VCardSubtitle",
|
||||
props: makeVCardSubtitleProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-card-subtitle", props.class]),
|
||||
"style": normalizeStyle([{
|
||||
"--v-card-subtitle-opacity": props.opacity
|
||||
}, props.style])
|
||||
}, slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCardTitle.js
|
||||
var VCardTitle = createSimpleFunctional("v-card-title");
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCardItem.js
|
||||
var makeCardItemProps = propsFactory({
|
||||
appendAvatar: String,
|
||||
appendIcon: IconValue,
|
||||
prependAvatar: String,
|
||||
prependIcon: IconValue,
|
||||
subtitle: {
|
||||
type: [String, Number, Boolean],
|
||||
default: void 0
|
||||
},
|
||||
title: {
|
||||
type: [String, Number, Boolean],
|
||||
default: void 0
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeTagProps()
|
||||
}, "VCardItem");
|
||||
var VCardItem = genericComponent()({
|
||||
name: "VCardItem",
|
||||
props: makeCardItemProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => {
|
||||
const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
|
||||
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
||||
const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
|
||||
const hasAppend = !!(hasAppendMedia || slots.append);
|
||||
const hasTitle = !!(props.title != null || slots.title);
|
||||
const hasSubtitle = !!(props.subtitle != null || slots.subtitle);
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-card-item", props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, {
|
||||
default: () => [hasPrepend && createBaseVNode("div", {
|
||||
"key": "prepend",
|
||||
"class": "v-card-item__prepend"
|
||||
}, [!slots.prepend ? createBaseVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, {
|
||||
"key": "prepend-avatar",
|
||||
"density": props.density,
|
||||
"image": props.prependAvatar
|
||||
}, null), props.prependIcon && createVNode(VIcon, {
|
||||
"key": "prepend-icon",
|
||||
"density": props.density,
|
||||
"icon": props.prependIcon
|
||||
}, null)]) : createVNode(VDefaultsProvider, {
|
||||
"key": "prepend-defaults",
|
||||
"disabled": !hasPrependMedia,
|
||||
"defaults": {
|
||||
VAvatar: {
|
||||
density: props.density,
|
||||
image: props.prependAvatar
|
||||
},
|
||||
VIcon: {
|
||||
density: props.density,
|
||||
icon: props.prependIcon
|
||||
}
|
||||
}
|
||||
}, slots.prepend)]), createBaseVNode("div", {
|
||||
"class": "v-card-item__content"
|
||||
}, [hasTitle && createVNode(VCardTitle, {
|
||||
"key": "title"
|
||||
}, {
|
||||
default: () => [slots.title?.() ?? toDisplayString(props.title)]
|
||||
}), hasSubtitle && createVNode(VCardSubtitle, {
|
||||
"key": "subtitle"
|
||||
}, {
|
||||
default: () => [slots.subtitle?.() ?? toDisplayString(props.subtitle)]
|
||||
}), slots.default?.()]), hasAppend && createBaseVNode("div", {
|
||||
"key": "append",
|
||||
"class": "v-card-item__append"
|
||||
}, [!slots.append ? createBaseVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, {
|
||||
"key": "append-icon",
|
||||
"density": props.density,
|
||||
"icon": props.appendIcon
|
||||
}, null), props.appendAvatar && createVNode(VAvatar, {
|
||||
"key": "append-avatar",
|
||||
"density": props.density,
|
||||
"image": props.appendAvatar
|
||||
}, null)]) : createVNode(VDefaultsProvider, {
|
||||
"key": "append-defaults",
|
||||
"disabled": !hasAppendMedia,
|
||||
"defaults": {
|
||||
VAvatar: {
|
||||
density: props.density,
|
||||
image: props.appendAvatar
|
||||
},
|
||||
VIcon: {
|
||||
density: props.density,
|
||||
icon: props.appendIcon
|
||||
}
|
||||
}
|
||||
}, slots.append)])]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCardText.js
|
||||
var makeVCardTextProps = propsFactory({
|
||||
opacity: [Number, String],
|
||||
...makeComponentProps(),
|
||||
...makeTagProps()
|
||||
}, "VCardText");
|
||||
var VCardText = genericComponent()({
|
||||
name: "VCardText",
|
||||
props: makeVCardTextProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-card-text", props.class]),
|
||||
"style": normalizeStyle([{
|
||||
"--v-card-text-opacity": props.opacity
|
||||
}, props.style])
|
||||
}, slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/vuetify/lib/components/VCard/VCard.js
|
||||
var makeVCardProps = propsFactory({
|
||||
appendAvatar: String,
|
||||
appendIcon: IconValue,
|
||||
disabled: Boolean,
|
||||
flat: Boolean,
|
||||
hover: Boolean,
|
||||
image: String,
|
||||
link: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
prependAvatar: String,
|
||||
prependIcon: IconValue,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
subtitle: {
|
||||
type: [String, Number, Boolean],
|
||||
default: void 0
|
||||
},
|
||||
text: {
|
||||
type: [String, Number, Boolean],
|
||||
default: void 0
|
||||
},
|
||||
title: {
|
||||
type: [String, Number, Boolean],
|
||||
default: void 0
|
||||
},
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeDimensionProps(),
|
||||
...makeElevationProps(),
|
||||
...makeLoaderProps(),
|
||||
...makeLocationProps(),
|
||||
...makePositionProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeRouterProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps({
|
||||
variant: "elevated"
|
||||
})
|
||||
}, "VCard");
|
||||
var VCard = genericComponent()({
|
||||
name: "VCard",
|
||||
directives: {
|
||||
vRipple: ripple_default
|
||||
},
|
||||
props: makeVCardProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
borderClasses
|
||||
} = useBorder(props);
|
||||
const {
|
||||
colorClasses,
|
||||
colorStyles,
|
||||
variantClasses
|
||||
} = useVariant(props);
|
||||
const {
|
||||
densityClasses
|
||||
} = useDensity(props);
|
||||
const {
|
||||
dimensionStyles
|
||||
} = useDimension(props);
|
||||
const {
|
||||
elevationClasses
|
||||
} = useElevation(props);
|
||||
const {
|
||||
loaderClasses
|
||||
} = useLoader(props);
|
||||
const {
|
||||
locationStyles
|
||||
} = useLocation(props);
|
||||
const {
|
||||
positionClasses
|
||||
} = usePosition(props);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const link = useLink(props, attrs);
|
||||
const loadingColor = shallowRef(void 0);
|
||||
watch(() => props.loading, (val, old) => {
|
||||
loadingColor.value = !val && typeof old === "string" ? old : typeof val === "boolean" ? void 0 : val;
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
useRender(() => {
|
||||
const isLink = props.link !== false && link.isLink.value;
|
||||
const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
|
||||
const Tag = isLink ? "a" : props.tag;
|
||||
const hasTitle = !!(slots.title || props.title != null);
|
||||
const hasSubtitle = !!(slots.subtitle || props.subtitle != null);
|
||||
const hasHeader = hasTitle || hasSubtitle;
|
||||
const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
|
||||
const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
|
||||
const hasImage = !!(slots.image || props.image);
|
||||
const hasCardItem = hasHeader || hasPrepend || hasAppend;
|
||||
const hasText = !!(slots.text || props.text != null);
|
||||
return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
|
||||
"class": ["v-card", {
|
||||
"v-card--disabled": props.disabled,
|
||||
"v-card--flat": props.flat,
|
||||
"v-card--hover": props.hover && !(props.disabled || props.flat),
|
||||
"v-card--link": isClickable
|
||||
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
||||
"style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
|
||||
"onClick": isClickable && link.navigate,
|
||||
"tabindex": props.disabled ? -1 : void 0
|
||||
}), {
|
||||
default: () => [hasImage && createBaseVNode("div", {
|
||||
"key": "image",
|
||||
"class": "v-card__image"
|
||||
}, [!slots.image ? createVNode(VImg, {
|
||||
"key": "image-img",
|
||||
"cover": true,
|
||||
"src": props.image
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "image-defaults",
|
||||
"disabled": !props.image,
|
||||
"defaults": {
|
||||
VImg: {
|
||||
cover: true,
|
||||
src: props.image
|
||||
}
|
||||
}
|
||||
}, slots.image)]), createVNode(LoaderSlot, {
|
||||
"name": "v-card",
|
||||
"active": !!props.loading,
|
||||
"color": loadingColor.value
|
||||
}, {
|
||||
default: slots.loader
|
||||
}), hasCardItem && createVNode(VCardItem, {
|
||||
"key": "item",
|
||||
"prependAvatar": props.prependAvatar,
|
||||
"prependIcon": props.prependIcon,
|
||||
"title": props.title,
|
||||
"subtitle": props.subtitle,
|
||||
"appendAvatar": props.appendAvatar,
|
||||
"appendIcon": props.appendIcon
|
||||
}, {
|
||||
default: slots.item,
|
||||
prepend: slots.prepend,
|
||||
title: slots.title,
|
||||
subtitle: slots.subtitle,
|
||||
append: slots.append
|
||||
}), hasText && createVNode(VCardText, {
|
||||
"key": "text"
|
||||
}, {
|
||||
default: () => [slots.text?.() ?? props.text]
|
||||
}), slots.default?.(), slots.actions && createVNode(VCardActions, null, {
|
||||
default: slots.actions
|
||||
}), genOverlays(isClickable, "v-card")]
|
||||
}), [[ripple_default, isClickable && props.ripple]]);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
VCardActions,
|
||||
VCardSubtitle,
|
||||
VCardTitle,
|
||||
VCardItem,
|
||||
VCardText,
|
||||
VCard
|
||||
};
|
||||
//# sourceMappingURL=chunk-MPVSDM4V.js.map
|
||||
+7
File diff suppressed because one or more lines are too long
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
+185
@@ -0,0 +1,185 @@
|
||||
import {
|
||||
IN_BROWSER,
|
||||
SUPPORTS_TOUCH,
|
||||
getCurrentInstanceName,
|
||||
mergeDeep,
|
||||
propsFactory
|
||||
} from "./chunk-LZ5T2ERG.js";
|
||||
import {
|
||||
computed,
|
||||
inject,
|
||||
onScopeDispose,
|
||||
reactive,
|
||||
shallowRef,
|
||||
toRef,
|
||||
toRefs,
|
||||
watchEffect
|
||||
} from "./chunk-2MKFL3BX.js";
|
||||
|
||||
// node_modules/vuetify/lib/composables/display.js
|
||||
var breakpoints = ["sm", "md", "lg", "xl", "xxl"];
|
||||
var DisplaySymbol = /* @__PURE__ */ Symbol.for("vuetify:display");
|
||||
var defaultDisplayOptions = {
|
||||
mobileBreakpoint: "lg",
|
||||
thresholds: {
|
||||
xs: 0,
|
||||
sm: 600,
|
||||
md: 960,
|
||||
lg: 1280,
|
||||
xl: 1920,
|
||||
xxl: 2560
|
||||
}
|
||||
};
|
||||
var parseDisplayOptions = function() {
|
||||
let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : defaultDisplayOptions;
|
||||
return mergeDeep(defaultDisplayOptions, options);
|
||||
};
|
||||
function getClientWidth(ssr) {
|
||||
return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === "object" && ssr.clientWidth || 0;
|
||||
}
|
||||
function getClientHeight(ssr) {
|
||||
return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === "object" && ssr.clientHeight || 0;
|
||||
}
|
||||
function getPlatform(ssr) {
|
||||
const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : "ssr";
|
||||
function match(regexp) {
|
||||
return Boolean(userAgent.match(regexp));
|
||||
}
|
||||
const android = match(/android/i);
|
||||
const ios = match(/iphone|ipad|ipod/i);
|
||||
const cordova = match(/cordova/i);
|
||||
const electron = match(/electron/i);
|
||||
const chrome = match(/chrome/i);
|
||||
const edge = match(/edge/i);
|
||||
const firefox = match(/firefox/i);
|
||||
const opera = match(/opera/i);
|
||||
const win = match(/win/i);
|
||||
const mac = match(/mac/i);
|
||||
const linux = match(/linux/i);
|
||||
return {
|
||||
android,
|
||||
ios,
|
||||
cordova,
|
||||
electron,
|
||||
chrome,
|
||||
edge,
|
||||
firefox,
|
||||
opera,
|
||||
win,
|
||||
mac,
|
||||
linux,
|
||||
touch: SUPPORTS_TOUCH,
|
||||
ssr: userAgent === "ssr"
|
||||
};
|
||||
}
|
||||
function createDisplay(options, ssr) {
|
||||
const {
|
||||
thresholds,
|
||||
mobileBreakpoint
|
||||
} = parseDisplayOptions(options);
|
||||
const height = shallowRef(getClientHeight(ssr));
|
||||
const platform = shallowRef(getPlatform(ssr));
|
||||
const state = reactive({});
|
||||
const width = shallowRef(getClientWidth(ssr));
|
||||
function updateSize() {
|
||||
height.value = getClientHeight();
|
||||
width.value = getClientWidth();
|
||||
}
|
||||
function update() {
|
||||
updateSize();
|
||||
platform.value = getPlatform();
|
||||
}
|
||||
watchEffect(() => {
|
||||
const xs = width.value < thresholds.sm;
|
||||
const sm = width.value < thresholds.md && !xs;
|
||||
const md = width.value < thresholds.lg && !(sm || xs);
|
||||
const lg = width.value < thresholds.xl && !(md || sm || xs);
|
||||
const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);
|
||||
const xxl = width.value >= thresholds.xxl;
|
||||
const name = xs ? "xs" : sm ? "sm" : md ? "md" : lg ? "lg" : xl ? "xl" : "xxl";
|
||||
const breakpointValue = typeof mobileBreakpoint === "number" ? mobileBreakpoint : thresholds[mobileBreakpoint];
|
||||
const mobile = width.value < breakpointValue;
|
||||
state.xs = xs;
|
||||
state.sm = sm;
|
||||
state.md = md;
|
||||
state.lg = lg;
|
||||
state.xl = xl;
|
||||
state.xxl = xxl;
|
||||
state.smAndUp = !xs;
|
||||
state.mdAndUp = !(xs || sm);
|
||||
state.lgAndUp = !(xs || sm || md);
|
||||
state.xlAndUp = !(xs || sm || md || lg);
|
||||
state.smAndDown = !(md || lg || xl || xxl);
|
||||
state.mdAndDown = !(lg || xl || xxl);
|
||||
state.lgAndDown = !(xl || xxl);
|
||||
state.xlAndDown = !xxl;
|
||||
state.name = name;
|
||||
state.height = height.value;
|
||||
state.width = width.value;
|
||||
state.mobile = mobile;
|
||||
state.mobileBreakpoint = mobileBreakpoint;
|
||||
state.platform = platform.value;
|
||||
state.thresholds = thresholds;
|
||||
});
|
||||
if (IN_BROWSER) {
|
||||
window.addEventListener("resize", updateSize, {
|
||||
passive: true
|
||||
});
|
||||
onScopeDispose(() => {
|
||||
window.removeEventListener("resize", updateSize);
|
||||
}, true);
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
update,
|
||||
ssr: !!ssr
|
||||
};
|
||||
}
|
||||
var makeDisplayProps = propsFactory({
|
||||
mobile: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
mobileBreakpoint: [Number, String]
|
||||
}, "display");
|
||||
function useDisplay() {
|
||||
let props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
|
||||
mobile: null
|
||||
};
|
||||
let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getCurrentInstanceName();
|
||||
const display = inject(DisplaySymbol);
|
||||
if (!display) throw new Error("Could not find Vuetify display injection");
|
||||
const mobile = computed(() => {
|
||||
if (props.mobile) {
|
||||
return true;
|
||||
} else if (typeof props.mobileBreakpoint === "number") {
|
||||
return display.width.value < props.mobileBreakpoint;
|
||||
} else if (props.mobileBreakpoint) {
|
||||
return display.width.value < display.thresholds.value[props.mobileBreakpoint];
|
||||
} else if (props.mobile === null) {
|
||||
return display.mobile.value;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
const displayClasses = toRef(() => {
|
||||
if (!name) return {};
|
||||
return {
|
||||
[`${name}--mobile`]: mobile.value
|
||||
};
|
||||
});
|
||||
return {
|
||||
...display,
|
||||
displayClasses,
|
||||
mobile
|
||||
};
|
||||
}
|
||||
|
||||
export {
|
||||
breakpoints,
|
||||
DisplaySymbol,
|
||||
createDisplay,
|
||||
makeDisplayProps,
|
||||
useDisplay
|
||||
};
|
||||
//# sourceMappingURL=chunk-N4LJHDYD.js.map
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user