@vuetify/nightly 3.2.0-dev-20230407.0 → 3.2.0-dev-20230415.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/json/attributes.json +24 -8
  3. package/dist/json/importMap.json +14 -14
  4. package/dist/json/tags.json +5 -1
  5. package/dist/json/web-types.json +83 -47
  6. package/dist/vuetify-labs.css +2299 -2280
  7. package/dist/vuetify-labs.d.ts +548 -498
  8. package/dist/vuetify-labs.esm.js +92 -50
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +92 -50
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +23 -4
  13. package/dist/vuetify.d.ts +430 -406
  14. package/dist/vuetify.esm.js +74 -33
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +74 -33
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +280 -270
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -2
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/index.d.ts +38 -32
  24. package/lib/components/VCheckbox/index.d.ts +14 -14
  25. package/lib/components/VChip/VChip.mjs +2 -2
  26. package/lib/components/VChip/VChip.mjs.map +1 -1
  27. package/lib/components/VChip/index.d.ts +14 -14
  28. package/lib/components/VCombobox/VCombobox.mjs +6 -3
  29. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  30. package/lib/components/VCombobox/index.d.ts +38 -32
  31. package/lib/components/VField/VField.mjs +3 -3
  32. package/lib/components/VField/VField.mjs.map +1 -1
  33. package/lib/components/VField/index.d.ts +20 -20
  34. package/lib/components/VFileInput/VFileInput.mjs +0 -1
  35. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  36. package/lib/components/VFileInput/index.d.ts +50 -56
  37. package/lib/components/VImg/VImg.mjs +3 -3
  38. package/lib/components/VImg/VImg.mjs.map +1 -1
  39. package/lib/components/VImg/index.d.ts +19 -19
  40. package/lib/components/VInput/VInput.mjs +2 -2
  41. package/lib/components/VInput/VInput.mjs.map +1 -1
  42. package/lib/components/VInput/index.d.ts +14 -14
  43. package/lib/components/VList/VList.mjs +2 -1
  44. package/lib/components/VList/VList.mjs.map +1 -1
  45. package/lib/components/VList/VListItem.css +12 -0
  46. package/lib/components/VList/VListItem.mjs +2 -2
  47. package/lib/components/VList/VListItem.mjs.map +1 -1
  48. package/lib/components/VList/VListItem.sass +5 -0
  49. package/lib/components/VList/index.d.ts +14 -14
  50. package/lib/components/VOverlay/useActivator.mjs +1 -0
  51. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  52. package/lib/components/VProgressCircular/VProgressCircular.css +3 -1
  53. package/lib/components/VProgressCircular/VProgressCircular.sass +3 -1
  54. package/lib/components/VProgressCircular/_variables.scss +1 -0
  55. package/lib/components/VProgressLinear/VProgressLinear.css +5 -2
  56. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -0
  57. package/lib/components/VProgressLinear/_variables.scss +1 -1
  58. package/lib/components/VRadioGroup/index.d.ts +14 -14
  59. package/lib/components/VRangeSlider/index.d.ts +14 -14
  60. package/lib/components/VSelect/VSelect.mjs +31 -2
  61. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  62. package/lib/components/VSelect/index.d.ts +38 -32
  63. package/lib/components/VSlider/index.d.ts +14 -14
  64. package/lib/components/VSwitch/index.d.ts +14 -14
  65. package/lib/components/VTextField/VTextField.mjs +2 -2
  66. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  67. package/lib/components/VTextField/index.d.ts +83 -77
  68. package/lib/components/VTextarea/VTextarea.mjs +8 -5
  69. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  70. package/lib/components/VTextarea/index.d.ts +56 -50
  71. package/lib/components/VToolbar/VToolbar.css +2 -0
  72. package/lib/components/VToolbar/VToolbar.sass +2 -0
  73. package/lib/components/index.d.ts +426 -402
  74. package/lib/composables/proxiedModel.mjs +2 -1
  75. package/lib/composables/proxiedModel.mjs.map +1 -1
  76. package/lib/composables/theme.mjs +1 -1
  77. package/lib/composables/theme.mjs.map +1 -1
  78. package/lib/entry-bundler.mjs +1 -1
  79. package/lib/framework.mjs +1 -1
  80. package/lib/index.d.ts +4 -4
  81. package/lib/labs/VDataTable/VDataTable.mjs +4 -4
  82. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  83. package/lib/labs/VDataTable/VDataTableRows.mjs +5 -7
  84. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  85. package/lib/labs/VDataTable/VDataTableServer.mjs +4 -3
  86. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  87. package/lib/labs/VDataTable/VDataTableVirtual.mjs +5 -3
  88. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  89. package/lib/labs/VDataTable/index.d.ts +122 -96
  90. package/lib/labs/components.d.ts +122 -96
  91. package/lib/util/helpers.mjs +1 -1
  92. package/lib/util/helpers.mjs.map +1 -1
  93. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VChip","VCounter","VField","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","useRender","wrapInArray","VFileInput","name","inheritAttrs","props","chips","Boolean","counter","counterSizeString","type","String","default","counterString","multiple","hint","persistentHint","placeholder","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","val","every","clearable","emits","e","files","setup","_ref","attrs","emit","slots","t","model","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","isFocused","inputRef","messages","onFocus","document","activeElement","focus","onClickPrepend","onControlClick","onControlMousedown","click","onClear","stopPropagation","newValue","hasModelReset","isArray","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","fieldProps","_createVNode","_mergeProps","$event","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","class","fieldClass","slotProps","_Fragment","target","onBlur","selection","text","color","join"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & MakeSlots<{\n counter: []\n}>\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: {\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n hint: String,\n persistentHint: Boolean,\n placeholder: String,\n showSize: {\n type: [Boolean, Number] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const isFocused = ref(false)\n const inputRef = ref<HTMLInputElement>()\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (props.persistentHint) ? props.hint : ''\n })\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) {\n isFocused.value = true\n }\n }\n function onClickPrepend (e: MouseEvent) {\n callEvent(props['onClick:prepend'], e)\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class=\"v-file-input\"\n onClick:prepend={ onClickPrepend }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isDirty.value || isFocused.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VFileInput.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VChip","VCounter","VField","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","useRender","wrapInArray","VFileInput","name","inheritAttrs","props","chips","Boolean","counter","counterSizeString","type","String","default","counterString","multiple","hint","persistentHint","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","val","every","clearable","emits","e","files","setup","_ref","attrs","emit","slots","t","model","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","isFocused","inputRef","messages","onFocus","document","activeElement","focus","onClickPrepend","onControlClick","onControlMousedown","click","onClear","stopPropagation","newValue","hasModelReset","isArray","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","fieldProps","_createVNode","_mergeProps","$event","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","class","fieldClass","slotProps","_Fragment","target","onBlur","selection","text","color","join"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & MakeSlots<{\n counter: []\n}>\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: {\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n hint: String,\n persistentHint: Boolean,\n showSize: {\n type: [Boolean, Number] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const isFocused = ref(false)\n const inputRef = ref<HTMLInputElement>()\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (props.persistentHint) ? props.hint : ''\n })\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) {\n isFocused.value = true\n }\n }\n function onClickPrepend (e: MouseEvent) {\n callEvent(props['onClick:prepend'], e)\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class=\"v-file-input\"\n onClick:prepend={ onClickPrepend }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isDirty.value || isFocused.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ () => (isFocused.value = false) }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,gBAAgB,EAAEC,eAAe;AAAA,SACjCC,gBAAgB,EAAEC,eAAe,EAAEC,MAAM;AAAA,SACzCC,KAAK;AAAA,SACLC,QAAQ;AAAA,SACRC,MAAM,+BAEf;AAAA,SACSC,WAAW;AAAA,SACXC,SAAS;AAAA,SACTC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAElDC,SAAS,EACTC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,SAAS,EACTC,WAAW,gCAGb;AAUA,OAAO,MAAMC,UAAU,GAAGJ,gBAAgB,EAAmB,CAAC;EAC5DK,IAAI,EAAE,YAAY;EAElBC,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAE;IACLC,KAAK,EAAEC,OAAO;IACdC,OAAO,EAAED,OAAO;IAChBE,iBAAiB,EAAE;MACjBC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDC,aAAa,EAAE;MACbH,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDE,QAAQ,EAAEP,OAAO;IACjBQ,IAAI,EAAEJ,MAAM;IACZK,cAAc,EAAET,OAAO;IACvBU,QAAQ,EAAE;MACRP,IAAI,EAAE,CAACH,OAAO,EAAEW,MAAM,CAAoC;MAC1DN,OAAO,EAAE,KAAK;MACdO,SAAS,EAAGC,CAAmB,IAAK;QAClC,OACE,OAAOA,CAAC,KAAK,SAAS,IACtB,CAAC,IAAI,EAAE,IAAI,CAAC,CAACC,QAAQ,CAACD,CAAC,CAAC;MAE5B;IACF,CAAC;IAED,GAAGpC,eAAe,CAAC;MAAEsC,WAAW,EAAE;IAAQ,CAAC,CAAC;IAE5CC,UAAU,EAAE;MACVb,IAAI,EAAEc,KAAyB;MAC/BZ,OAAO,EAAEA,CAAA,KAAO,EAAG;MACnBO,SAAS,EAAGM,GAAQ,IAAK;QACvB,OAAOxB,WAAW,CAACwB,GAAG,CAAC,CAACC,KAAK,CAACN,CAAC,IAAIA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,CAAC;MACxE;IACF,CAAC;IAED,GAAGtC,eAAe,CAAC;MAAE6C,SAAS,EAAE;IAAK,CAAC;EACxC,CAAC;EAEDC,KAAK,EAAE;IACL,eAAe,EAAGC,CAAa,IAAK,IAAI;IACxC,mBAAmB,EAAGA,CAAa,IAAK,IAAI;IAC5C,mBAAmB,EAAGC,KAAa,IAAK;EAC1C,CAAC;EAEDC,KAAKA,CAAE1B,KAAK,EAAA2B,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAM;MAAEI;IAAE,CAAC,GAAG9C,SAAS,EAAE;IACzB,MAAM+C,KAAK,GAAG9C,eAAe,CAACc,KAAK,EAAE,YAAY,CAAC;IAClD,MAAMiC,IAAI,GAAG9C,QAAQ,CAAC,MAAM,OAAOa,KAAK,CAACY,QAAQ,KAAK,SAAS,GAAGZ,KAAK,CAACY,QAAQ,GAAGsB,SAAS,CAAC;IAC7F,MAAMC,UAAU,GAAGhD,QAAQ,CAAC,MAAM,CAAC6C,KAAK,CAACI,KAAK,IAAI,EAAE,EAAEC,MAAM,CAAC,CAACC,KAAK,EAAAC,KAAA;MAAA,IAAE;QAAEC,IAAI,GAAG;MAAE,CAAC,GAAAD,KAAA;MAAA,OAAKD,KAAK,GAAGE,IAAI;IAAA,GAAE,CAAC,CAAC,CAAC;IACvG,MAAMC,kBAAkB,GAAGtD,QAAQ,CAAC,MAAMO,qBAAqB,CAACyC,UAAU,CAACC,KAAK,EAAEH,IAAI,CAACG,KAAK,CAAC,CAAC;IAE9F,MAAMM,SAAS,GAAGvD,QAAQ,CAAC,MAAM,CAAC6C,KAAK,CAACI,KAAK,IAAI,EAAE,EAAEO,GAAG,CAACC,IAAI,IAAI;MAC/D,MAAM;QAAE9C,IAAI,GAAG,EAAE;QAAE0C,IAAI,GAAG;MAAE,CAAC,GAAGI,IAAI;MAEpC,OAAO,CAAC5C,KAAK,CAACY,QAAQ,GAClBd,IAAI,GACH,GAAEA,IAAK,KAAIJ,qBAAqB,CAAC8C,IAAI,EAAEP,IAAI,CAACG,KAAK,CAAE,GAAE;IAC5D,CAAC,CAAC,CAAC;IAEH,MAAMS,YAAY,GAAG1D,QAAQ,CAAC,MAAM;MAClC,MAAM2D,SAAS,GAAGd,KAAK,CAACI,KAAK,EAAEW,MAAM,IAAI,CAAC;MAC1C,IAAI/C,KAAK,CAACY,QAAQ,EAAE,OAAOmB,CAAC,CAAC/B,KAAK,CAACI,iBAAiB,EAAE0C,SAAS,EAAEL,kBAAkB,CAACL,KAAK,CAAC,MACrF,OAAOL,CAAC,CAAC/B,KAAK,CAACQ,aAAa,EAAEsC,SAAS,CAAC;IAC/C,CAAC,CAAC;IACF,MAAME,SAAS,GAAG3D,GAAG,EAAU;IAC/B,MAAM4D,SAAS,GAAG5D,GAAG,EAAU;IAC/B,MAAM6D,SAAS,GAAG7D,GAAG,CAAC,KAAK,CAAC;IAC5B,MAAM8D,QAAQ,GAAG9D,GAAG,EAAoB;IACxC,MAAM+D,QAAQ,GAAGjE,QAAQ,CAAC,MAAM;MAC9B,OAAOa,KAAK,CAACoD,QAAQ,CAACL,MAAM,GACxB/C,KAAK,CAACoD,QAAQ,GACbpD,KAAK,CAACW,cAAc,GAAIX,KAAK,CAACU,IAAI,GAAG,EAAE;IAC9C,CAAC,CAAC;IACF,SAAS2C,OAAOA,CAAA,EAAI;MAClB,IAAIF,QAAQ,CAACf,KAAK,KAAKkB,QAAQ,CAACC,aAAa,EAAE;QAC7CJ,QAAQ,CAACf,KAAK,EAAEoB,KAAK,EAAE;MACzB;MAEA,IAAI,CAACN,SAAS,CAACd,KAAK,EAAE;QACpBc,SAAS,CAACd,KAAK,GAAG,IAAI;MACxB;IACF;IACA,SAASqB,cAAcA,CAAEjC,CAAa,EAAE;MACtCjC,SAAS,CAACS,KAAK,CAAC,iBAAiB,CAAC,EAAEwB,CAAC,CAAC;MACtCkC,cAAc,CAAClC,CAAC,CAAC;IACnB;IACA,SAASmC,kBAAkBA,CAAEnC,CAAa,EAAE;MAC1CK,IAAI,CAAC,mBAAmB,EAAEL,CAAC,CAAC;IAC9B;IACA,SAASkC,cAAcA,CAAElC,CAAa,EAAE;MACtC2B,QAAQ,CAACf,KAAK,EAAEwB,KAAK,EAAE;MAEvB/B,IAAI,CAAC,eAAe,EAAEL,CAAC,CAAC;IAC1B;IACA,SAASqC,OAAOA,CAAErC,CAAa,EAAE;MAC/BA,CAAC,CAACsC,eAAe,EAAE;MAEnBT,OAAO,EAAE;MAETjE,QAAQ,CAAC,MAAM;QACb4C,KAAK,CAACI,KAAK,GAAG,EAAE;QAEhB7C,SAAS,CAACS,KAAK,CAAC,eAAe,CAAC,EAAEwB,CAAC,CAAC;MACtC,CAAC,CAAC;IACJ;IAEAlC,KAAK,CAAC0C,KAAK,EAAE+B,QAAQ,IAAI;MACvB,MAAMC,aAAa,GAAG,CAAC7C,KAAK,CAAC8C,OAAO,CAACF,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAAChB,MAAM;MAElE,IAAIiB,aAAa,IAAIb,QAAQ,CAACf,KAAK,EAAE;QACnCe,QAAQ,CAACf,KAAK,CAACA,KAAK,GAAG,EAAE;MAC3B;IACF,CAAC,CAAC;IAEFzC,SAAS,CAAC,MAAM;MACd,MAAMuE,UAAU,GAAG,CAAC,EAAEpC,KAAK,CAAC3B,OAAO,IAAIH,KAAK,CAACG,OAAO,CAAC;MACrD,MAAMgE,UAAU,GAAG,CAAC,EAAED,UAAU,IAAIpC,KAAK,CAACsC,OAAO,CAAC;MAClD,MAAM,CAACC,SAAS,EAAEC,UAAU,CAAC,GAAG9E,gBAAgB,CAACoC,KAAK,CAAC;MACvD,MAAM,CAAC;QAAEV,UAAU,EAAEqD,CAAC;QAAE,GAAGC;MAAW,CAAC,CAAC,GAAG9F,gBAAgB,CAACsB,KAAK,CAAC;MAClE,MAAM,CAACyE,UAAU,CAAC,GAAGjG,gBAAgB,CAACwB,KAAK,CAAC;MAE5C,OAAA0E,YAAA,CAAA9F,MAAA,EAAA+F,WAAA;QAAA,OAEU3B,SAAS;QAAA,cACLhB,KAAK,CAACI,KAAK;QAAA,uBAAAwC,MAAA,IAAX5C,KAAK,CAACI,KAAK,GAAAwC,MAAA;QAAA,SACf,cAAc;QAAA,mBACFnB,cAAc;QAAA,kBACfzD,KAAK,CAAC,gBAAgB;MAAC,GACnCqE,SAAS,EACTG,UAAU;QAAA,WACLtB,SAAS,CAACd,KAAK;QAAA,YACdgB,QAAQ,CAAChB;MAAK;QAGvB,GAAGN,KAAK;QACRvB,OAAO,EAAEsE,KAAA;UAAA,IAAC;YACRC,EAAE;YACFC,UAAU;YACVC,OAAO;YACPC,UAAU;YACVC;UACF,CAAC,GAAAL,KAAA;UAAA,OAAAH,YAAA,CAAA3F,MAAA,EAAA4F,WAAA;YAAA,OAES1B,SAAS;YAAA,gBACAjD,KAAK,CAACiB,WAAW;YAAA,eAClB0C,kBAAkB;YAAA,WACtBD,cAAc;YAAA,iBACRG,OAAO;YAAA,wBACA7D,KAAK,CAAC,sBAAsB,CAAC;YAAA,uBAC9BA,KAAK,CAAC,qBAAqB;UAAC,GAC7CyE,UAAU;YAAA,MACVK,EAAE,CAAC1C,KAAK;YAAA,UACJ4C,OAAO,CAAC5C,KAAK,IAAIc,SAAS,CAACd,KAAK;YAAA,SACjC4C,OAAO,CAAC5C,KAAK;YAAA,YACV2C,UAAU,CAAC3C,KAAK;YAAA,WACjBc,SAAS,CAACd,KAAK;YAAA,SACjB8C,OAAO,CAAC9C,KAAK,KAAK;UAAK;YAG7B,GAAGN,KAAK;YACRvB,OAAO,EAAE4E,KAAA;cAAA,IAAC;gBACRnF,KAAK,EAAE;kBAAEoF,KAAK,EAAEC,UAAU;kBAAE,GAAGC;gBAAU;cAC3C,CAAC,GAAAH,KAAA;cAAA,OAAAT,YAAA,CAAAa,SAAA,SAAAb,YAAA,UAAAC,WAAA;gBAAA,OAGWxB,QAAQ;gBAAA,QACT,MAAM;gBAAA,YACA8B,UAAU,CAAC7C,KAAK;gBAAA,YAChB2C,UAAU,CAAC3C,KAAK;gBAAA,YAChBpC,KAAK,CAACS,QAAQ;gBAAA,QAClBT,KAAK,CAACF,IAAI;gBAAA,WACP0B,CAAC,IAAI;kBACbA,CAAC,CAACsC,eAAe,EAAE;kBAEnBT,OAAO,EAAE;gBACX,CAAC;gBAAA,YACU7B,CAAC,IAAI;kBACd,IAAI,CAACA,CAAC,CAACgE,MAAM,EAAE;kBAEf,MAAMA,MAAM,GAAGhE,CAAC,CAACgE,MAA0B;kBAC3CxD,KAAK,CAACI,KAAK,GAAG,CAAC,IAAGoD,MAAM,CAAC/D,KAAK,IAAI,EAAE,EAAC;gBACvC,CAAC;gBAAA,WACS4B,OAAO;gBAAA,UACRoC,CAAA,KAAOvC,SAAS,CAACd,KAAK,GAAG;cAAM,GACnCkD,SAAS,EACThB,UAAU,UAAAI,YAAA;gBAAA,SAGJW;cAAU,IACnB,CAAC,CAACrD,KAAK,CAACI,KAAK,EAAEW,MAAM,KACrBjB,KAAK,CAAC4D,SAAS,GAAG5D,KAAK,CAAC4D,SAAS,CAAC;gBAChChD,SAAS,EAAEA,SAAS,CAACN,KAAK;gBAC1BD,UAAU,EAAEA,UAAU,CAACC,KAAK;gBAC5BK,kBAAkB,EAAEA,kBAAkB,CAACL;cACzC,CAAC,CAAC,GACApC,KAAK,CAACC,KAAK,GAAGyC,SAAS,CAACN,KAAK,CAACO,GAAG,CAACgD,IAAI,IAAAjB,YAAA,CAAA7F,KAAA;gBAAA,OAE9B8G,IAAI;gBAAA,QACL,OAAO;gBAAA,SACJ3F,KAAK,CAAC4F;cAAK;gBAAArF,OAAA,EAAAA,CAAA,MAClBoF,IAAI;cAAA,EACR,CAAC,GACAjD,SAAS,CAACN,KAAK,CAACyD,IAAI,CAAC,IAAI,CAAC,CAC7B;YAAA;UAGN;QAAA,CAGN;QACDzB,OAAO,EAAED,UAAU,GAAGmB,SAAS,IAAAZ,YAAA,CAAAa,SAAA,SAEzBzD,KAAK,CAACsC,OAAO,GAAGkB,SAAS,CAAC,EAE1BpB,UAAU,IAAAQ,YAAA,CAAAa,SAAA,SAAAb,YAAA,sBAAAA,YAAA,CAAA5F,QAAA;UAAA,UAKG,CAAC,CAACkD,KAAK,CAACI,KAAK,EAAEW,MAAM;UAAA,SACtBF,YAAY,CAACT;QAAK,GACRN,KAAK,CAAC3B,OAAO,GAGpC,EAEJ,GAAG+B;MAAS;IAIrB,CAAC,CAAC;IAEF,OAAOlD,WAAW,CAAC,CAAC,CAAC,EAAEgE,SAAS,EAAEC,SAAS,EAAEE,QAAQ,CAAC;EACxD;AACF,CAAC,CAAC"}
@@ -5,8 +5,8 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
6
6
  }
7
7
 
8
- type EventProp<T = (...args: any[]) => any> = T | T[];
9
- declare const EventProp: PropType<EventProp<(...args: any[]) => any>>;
8
+ type EventProp<T extends any[] = any[], F = (...args: T) => any> = F | F[];
9
+ declare const EventProp: <T extends any[] = any[]>() => PropType<EventProp<T, (...args: T) => any>>;
10
10
 
11
11
  interface LoaderSlotProps {
12
12
  color: string | undefined;
@@ -112,17 +112,16 @@ declare const VFileInput: {
112
112
  color?: string | undefined;
113
113
  loading?: string | boolean | undefined;
114
114
  label?: string | undefined;
115
- placeholder?: string | undefined;
116
115
  theme?: string | undefined;
117
116
  bgColor?: string | undefined;
118
117
  appendIcon?: IconValue | undefined;
119
118
  appendInnerIcon?: IconValue | undefined;
120
119
  prependInnerIcon?: IconValue | undefined;
121
- 'onClick:clear'?: EventProp<(...args: any[]) => any> | undefined;
122
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
123
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
124
- 'onClick:appendInner'?: EventProp<(...args: any[]) => any> | undefined;
125
- 'onClick:prependInner'?: EventProp<(...args: any[]) => any> | undefined;
120
+ 'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
121
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
122
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
123
+ 'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
124
+ 'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
126
125
  validateOn?: "input" | "blur" | "submit" | undefined;
127
126
  validationValue?: any;
128
127
  hideDetails?: boolean | "auto" | undefined;
@@ -227,17 +226,16 @@ declare const VFileInput: {
227
226
  color?: string | undefined;
228
227
  loading?: string | boolean | undefined;
229
228
  label?: string | undefined;
230
- placeholder?: string | undefined;
231
229
  theme?: string | undefined;
232
230
  bgColor?: string | undefined;
233
231
  appendIcon?: IconValue | undefined;
234
232
  appendInnerIcon?: IconValue | undefined;
235
233
  prependInnerIcon?: IconValue | undefined;
236
- 'onClick:clear'?: EventProp<(...args: any[]) => any> | undefined;
237
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
238
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
239
- 'onClick:appendInner'?: EventProp<(...args: any[]) => any> | undefined;
240
- 'onClick:prependInner'?: EventProp<(...args: any[]) => any> | undefined;
234
+ 'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
235
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
236
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
237
+ 'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
238
+ 'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
241
239
  validateOn?: "input" | "blur" | "submit" | undefined;
242
240
  validationValue?: any;
243
241
  hideDetails?: boolean | "auto" | undefined;
@@ -326,8 +324,8 @@ declare const VFileInput: {
326
324
  modelValue?: any;
327
325
  prependIcon?: IconValue | undefined;
328
326
  appendIcon?: IconValue | undefined;
329
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
330
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
327
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
328
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
331
329
  validateOn?: "input" | "blur" | "submit" | undefined;
332
330
  validationValue?: any;
333
331
  hideDetails?: boolean | "auto" | undefined;
@@ -389,8 +387,8 @@ declare const VFileInput: {
389
387
  modelValue?: any;
390
388
  prependIcon?: IconValue | undefined;
391
389
  appendIcon?: IconValue | undefined;
392
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
393
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
390
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
391
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
394
392
  validateOn?: "input" | "blur" | "submit" | undefined;
395
393
  validationValue?: any;
396
394
  hideDetails?: boolean | "auto" | undefined;
@@ -475,8 +473,8 @@ declare const VFileInput: {
475
473
  modelValue?: any;
476
474
  prependIcon?: IconValue | undefined;
477
475
  appendIcon?: IconValue | undefined;
478
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
479
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
476
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
477
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
480
478
  validateOn?: "input" | "blur" | "submit" | undefined;
481
479
  validationValue?: any;
482
480
  hideDetails?: boolean | "auto" | undefined;
@@ -596,17 +594,16 @@ declare const VFileInput: {
596
594
  color?: string | undefined;
597
595
  loading?: string | boolean | undefined;
598
596
  label?: string | undefined;
599
- placeholder?: string | undefined;
600
597
  theme?: string | undefined;
601
598
  bgColor?: string | undefined;
602
599
  appendIcon?: IconValue | undefined;
603
600
  appendInnerIcon?: IconValue | undefined;
604
601
  prependInnerIcon?: IconValue | undefined;
605
- 'onClick:clear'?: EventProp<(...args: any[]) => any> | undefined;
606
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
607
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
608
- 'onClick:appendInner'?: EventProp<(...args: any[]) => any> | undefined;
609
- 'onClick:prependInner'?: EventProp<(...args: any[]) => any> | undefined;
602
+ 'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
603
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
604
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
605
+ 'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
606
+ 'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
610
607
  validateOn?: "input" | "blur" | "submit" | undefined;
611
608
  validationValue?: any;
612
609
  hideDetails?: boolean | "auto" | undefined;
@@ -695,8 +692,8 @@ declare const VFileInput: {
695
692
  modelValue?: any;
696
693
  prependIcon?: IconValue | undefined;
697
694
  appendIcon?: IconValue | undefined;
698
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
699
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
695
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
696
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
700
697
  validateOn?: "input" | "blur" | "submit" | undefined;
701
698
  validationValue?: any;
702
699
  hideDetails?: boolean | "auto" | undefined;
@@ -758,8 +755,8 @@ declare const VFileInput: {
758
755
  modelValue?: any;
759
756
  prependIcon?: IconValue | undefined;
760
757
  appendIcon?: IconValue | undefined;
761
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
762
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
758
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
759
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
763
760
  validateOn?: "input" | "blur" | "submit" | undefined;
764
761
  validationValue?: any;
765
762
  hideDetails?: boolean | "auto" | undefined;
@@ -844,8 +841,8 @@ declare const VFileInput: {
844
841
  modelValue?: any;
845
842
  prependIcon?: IconValue | undefined;
846
843
  appendIcon?: IconValue | undefined;
847
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
848
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
844
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
845
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
849
846
  validateOn?: "input" | "blur" | "submit" | undefined;
850
847
  validationValue?: any;
851
848
  hideDetails?: boolean | "auto" | undefined;
@@ -917,17 +914,16 @@ declare const VFileInput: {
917
914
  color?: string | undefined;
918
915
  loading?: string | boolean | undefined;
919
916
  label?: string | undefined;
920
- placeholder?: string | undefined;
921
917
  theme?: string | undefined;
922
918
  bgColor?: string | undefined;
923
919
  appendIcon?: IconValue | undefined;
924
920
  appendInnerIcon?: IconValue | undefined;
925
921
  prependInnerIcon?: IconValue | undefined;
926
- 'onClick:clear'?: EventProp<(...args: any[]) => any> | undefined;
927
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
928
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
929
- 'onClick:appendInner'?: EventProp<(...args: any[]) => any> | undefined;
930
- 'onClick:prependInner'?: EventProp<(...args: any[]) => any> | undefined;
922
+ 'onClick:clear'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
923
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
924
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
925
+ 'onClick:appendInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
926
+ 'onClick:prependInner'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
931
927
  validateOn?: "input" | "blur" | "submit" | undefined;
932
928
  validationValue?: any;
933
929
  hideDetails?: boolean | "auto" | undefined;
@@ -1016,8 +1012,8 @@ declare const VFileInput: {
1016
1012
  modelValue?: any;
1017
1013
  prependIcon?: IconValue | undefined;
1018
1014
  appendIcon?: IconValue | undefined;
1019
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
1020
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
1015
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1016
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1021
1017
  validateOn?: "input" | "blur" | "submit" | undefined;
1022
1018
  validationValue?: any;
1023
1019
  hideDetails?: boolean | "auto" | undefined;
@@ -1079,8 +1075,8 @@ declare const VFileInput: {
1079
1075
  modelValue?: any;
1080
1076
  prependIcon?: IconValue | undefined;
1081
1077
  appendIcon?: IconValue | undefined;
1082
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
1083
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
1078
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1079
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1084
1080
  validateOn?: "input" | "blur" | "submit" | undefined;
1085
1081
  validationValue?: any;
1086
1082
  hideDetails?: boolean | "auto" | undefined;
@@ -1165,8 +1161,8 @@ declare const VFileInput: {
1165
1161
  modelValue?: any;
1166
1162
  prependIcon?: IconValue | undefined;
1167
1163
  appendIcon?: IconValue | undefined;
1168
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
1169
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
1164
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1165
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1170
1166
  validateOn?: "input" | "blur" | "submit" | undefined;
1171
1167
  validationValue?: any;
1172
1168
  hideDetails?: boolean | "auto" | undefined;
@@ -1260,9 +1256,9 @@ declare const VFileInput: {
1260
1256
  default: string;
1261
1257
  validator: (v: any) => boolean;
1262
1258
  };
1263
- 'onClick:clear': PropType<EventProp<(...args: any[]) => any>>;
1264
- 'onClick:appendInner': PropType<EventProp<(...args: any[]) => any>>;
1265
- 'onClick:prependInner': PropType<EventProp<(...args: any[]) => any>>;
1259
+ 'onClick:clear': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1260
+ 'onClick:appendInner': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1261
+ 'onClick:prependInner': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1266
1262
  modelValue: {
1267
1263
  type: PropType<File[]>;
1268
1264
  default: () => never[];
@@ -1306,8 +1302,8 @@ declare const VFileInput: {
1306
1302
  default: string;
1307
1303
  validator: (v: any) => boolean;
1308
1304
  };
1309
- 'onClick:prepend': PropType<EventProp<(...args: any[]) => any>>;
1310
- 'onClick:append': PropType<EventProp<(...args: any[]) => any>>;
1305
+ 'onClick:prepend': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1306
+ 'onClick:append': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1311
1307
  chips: BooleanConstructor;
1312
1308
  counter: BooleanConstructor;
1313
1309
  counterSizeString: {
@@ -1321,7 +1317,6 @@ declare const VFileInput: {
1321
1317
  multiple: BooleanConstructor;
1322
1318
  hint: StringConstructor;
1323
1319
  persistentHint: BooleanConstructor;
1324
- placeholder: StringConstructor;
1325
1320
  showSize: {
1326
1321
  type: PropType<boolean | 1024 | 1000>;
1327
1322
  default: boolean;
@@ -1355,9 +1350,9 @@ declare const VFileInput: {
1355
1350
  default: string;
1356
1351
  validator: (v: any) => boolean;
1357
1352
  };
1358
- 'onClick:clear': PropType<EventProp<(...args: any[]) => any>>;
1359
- 'onClick:appendInner': PropType<EventProp<(...args: any[]) => any>>;
1360
- 'onClick:prependInner': PropType<EventProp<(...args: any[]) => any>>;
1353
+ 'onClick:clear': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1354
+ 'onClick:appendInner': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1355
+ 'onClick:prependInner': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1361
1356
  modelValue: {
1362
1357
  type: PropType<File[]>;
1363
1358
  default: () => never[];
@@ -1401,8 +1396,8 @@ declare const VFileInput: {
1401
1396
  default: string;
1402
1397
  validator: (v: any) => boolean;
1403
1398
  };
1404
- 'onClick:prepend': PropType<EventProp<(...args: any[]) => any>>;
1405
- 'onClick:append': PropType<EventProp<(...args: any[]) => any>>;
1399
+ 'onClick:prepend': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1400
+ 'onClick:append': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1406
1401
  chips: BooleanConstructor;
1407
1402
  counter: BooleanConstructor;
1408
1403
  counterSizeString: {
@@ -1416,7 +1411,6 @@ declare const VFileInput: {
1416
1411
  multiple: BooleanConstructor;
1417
1412
  hint: StringConstructor;
1418
1413
  persistentHint: BooleanConstructor;
1419
- placeholder: StringConstructor;
1420
1414
  showSize: {
1421
1415
  type: PropType<boolean | 1024 | 1000>;
1422
1416
  default: boolean;
@@ -39,9 +39,9 @@ export const VImg = genericComponent()({
39
39
  ...makeTransitionProps()
40
40
  },
41
41
  emits: {
42
- loadstart: event => true,
43
- load: event => true,
44
- error: event => true
42
+ loadstart: value => true,
43
+ load: value => true,
44
+ error: value => true
45
45
  },
46
46
  setup(props, _ref) {
47
47
  let {
@@ -1 +1 @@
1
- {"version":3,"file":"VImg.mjs","names":["VResponsive","intersect","makeTransitionProps","MaybeTransition","computed","nextTick","onBeforeMount","ref","vShow","watch","withDirectives","convertToUnit","genericComponent","SUPPORTS_INTERSECTION","useRender","VImg","name","directives","props","aspectRatio","String","Number","alt","cover","Boolean","eager","gradient","lazySrc","options","type","Object","default","root","undefined","rootMargin","threshold","sizes","src","srcset","width","emits","loadstart","event","load","error","setup","_ref","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","value","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","complete","onError","onLoad","getSrc","img","timer","timeout","arguments","length","poll","clearTimeout","imgHeight","imgWidth","window","setTimeout","endsWith","startsWith","containClasses","__image","_createVNode","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","_withDirectives","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["import './VImg.sass'\n\n// Components\nimport { VResponsive } from '@/components/VResponsive'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Composables\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: []\n placeholder: []\n error: []\n sources: []\n}\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: {\n aspectRatio: [String, Number],\n alt: String,\n cover: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n srcset: String,\n width: [String, Number],\n\n ...makeTransitionProps(),\n },\n\n emits: {\n loadstart: (event: string | undefined) => true,\n load: (event: string | undefined) => true,\n error: (event: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = ref('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = ref<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = ref<number>()\n const naturalHeight = ref<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n }\n\n function onLoad () {\n getSrc()\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = ref(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n ]}\n style={{ width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) }}\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n ))\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VImg.mjs","names":["VResponsive","intersect","makeTransitionProps","MaybeTransition","computed","nextTick","onBeforeMount","ref","vShow","watch","withDirectives","convertToUnit","genericComponent","SUPPORTS_INTERSECTION","useRender","VImg","name","directives","props","aspectRatio","String","Number","alt","cover","Boolean","eager","gradient","lazySrc","options","type","Object","default","root","undefined","rootMargin","threshold","sizes","src","srcset","width","emits","loadstart","value","load","error","setup","_ref","emit","slots","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","complete","onError","onLoad","getSrc","img","timer","timeout","arguments","length","poll","clearTimeout","imgHeight","imgWidth","window","setTimeout","endsWith","startsWith","containClasses","__image","_createVNode","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","_withDirectives","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["import './VImg.sass'\n\n// Components\nimport { VResponsive } from '@/components/VResponsive'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Composables\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: []\n placeholder: []\n error: []\n sources: []\n}\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: {\n aspectRatio: [String, Number],\n alt: String,\n cover: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n srcset: String,\n width: [String, Number],\n\n ...makeTransitionProps(),\n },\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const currentSrc = ref('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = ref<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = ref<number>()\n const naturalHeight = ref<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n }\n\n function onLoad () {\n getSrc()\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = ref(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => (\n <VResponsive\n class={[\n 'v-img',\n { 'v-img--booting': !isBooted.value },\n ]}\n style={{ width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) }}\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n ))\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":"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"}
@@ -64,9 +64,9 @@ declare const VImg: {
64
64
  "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
65
65
  "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
66
66
  } & {
67
- onError?: ((event: string | undefined) => any) | undefined;
68
- onLoad?: ((event: string | undefined) => any) | undefined;
69
- onLoadstart?: ((event: string | undefined) => any) | undefined;
67
+ onError?: ((value: string | undefined) => any) | undefined;
68
+ onLoad?: ((value: string | undefined) => any) | undefined;
69
+ onLoadstart?: ((value: string | undefined) => any) | undefined;
70
70
  } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "transition" | "eager" | "options" | "cover" | "src">;
71
71
  $attrs: {
72
72
  [x: string]: unknown;
@@ -79,7 +79,7 @@ declare const VImg: {
79
79
  }>;
80
80
  $root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
81
81
  $parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
82
- $emit: ((event: "error", event: string | undefined) => void) & ((event: "load", event: string | undefined) => void) & ((event: "loadstart", event: string | undefined) => void);
82
+ $emit: ((event: "error", value: string | undefined) => void) & ((event: "load", value: string | undefined) => void) & ((event: "loadstart", value: string | undefined) => void);
83
83
  $el: any;
84
84
  $options: vue.ComponentOptionsBase<{
85
85
  transition: string | boolean | (vue.TransitionProps & {
@@ -122,9 +122,9 @@ declare const VImg: {
122
122
  "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
123
123
  "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
124
124
  } & {
125
- onError?: ((event: string | undefined) => any) | undefined;
126
- onLoad?: ((event: string | undefined) => any) | undefined;
127
- onLoadstart?: ((event: string | undefined) => any) | undefined;
125
+ onError?: ((value: string | undefined) => any) | undefined;
126
+ onLoad?: ((value: string | undefined) => any) | undefined;
127
+ onLoadstart?: ((value: string | undefined) => any) | undefined;
128
128
  }, {
129
129
  currentSrc: vue.Ref<string>;
130
130
  image: vue.Ref<HTMLImageElement | undefined>;
@@ -132,9 +132,9 @@ declare const VImg: {
132
132
  naturalWidth: vue.Ref<number | undefined>;
133
133
  naturalHeight: vue.Ref<number | undefined>;
134
134
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
135
- loadstart: (event: string | undefined) => true;
136
- load: (event: string | undefined) => true;
137
- error: (event: string | undefined) => true;
135
+ loadstart: (value: string | undefined) => true;
136
+ load: (value: string | undefined) => true;
137
+ error: (value: string | undefined) => true;
138
138
  }, string, {
139
139
  transition: string | boolean | (vue.TransitionProps & {
140
140
  component?: vue.Component | undefined;
@@ -204,9 +204,9 @@ declare const VImg: {
204
204
  "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
205
205
  "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
206
206
  } & {
207
- onError?: ((event: string | undefined) => any) | undefined;
208
- onLoad?: ((event: string | undefined) => any) | undefined;
209
- onLoadstart?: ((event: string | undefined) => any) | undefined;
207
+ onError?: ((value: string | undefined) => any) | undefined;
208
+ onLoad?: ((value: string | undefined) => any) | undefined;
209
+ onLoadstart?: ((value: string | undefined) => any) | undefined;
210
210
  } & vue.ShallowUnwrapRef<{
211
211
  currentSrc: vue.Ref<string>;
212
212
  image: vue.Ref<HTMLImageElement | undefined>;
@@ -258,9 +258,9 @@ declare const VImg: {
258
258
  "v-slot:error"?: false | (() => vue.VNodeChild) | undefined;
259
259
  "v-slot:sources"?: false | (() => vue.VNodeChild) | undefined;
260
260
  } & {
261
- onError?: ((event: string | undefined) => any) | undefined;
262
- onLoad?: ((event: string | undefined) => any) | undefined;
263
- onLoadstart?: ((event: string | undefined) => any) | undefined;
261
+ onError?: ((value: string | undefined) => any) | undefined;
262
+ onLoad?: ((value: string | undefined) => any) | undefined;
263
+ onLoadstart?: ((value: string | undefined) => any) | undefined;
264
264
  }, {
265
265
  currentSrc: vue.Ref<string>;
266
266
  image: vue.Ref<HTMLImageElement | undefined>;
@@ -268,9 +268,9 @@ declare const VImg: {
268
268
  naturalWidth: vue.Ref<number | undefined>;
269
269
  naturalHeight: vue.Ref<number | undefined>;
270
270
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
271
- loadstart: (event: string | undefined) => true;
272
- load: (event: string | undefined) => true;
273
- error: (event: string | undefined) => true;
271
+ loadstart: (value: string | undefined) => true;
272
+ load: (value: string | undefined) => true;
273
+ error: (value: string | undefined) => true;
274
274
  }, string, {
275
275
  transition: string | boolean | (vue.TransitionProps & {
276
276
  component?: vue.Component | undefined;
@@ -24,8 +24,8 @@ export const makeVInputProps = propsFactory({
24
24
  default: 'horizontal',
25
25
  validator: v => ['horizontal', 'vertical'].includes(v)
26
26
  },
27
- 'onClick:prepend': EventProp,
28
- 'onClick:append': EventProp,
27
+ 'onClick:prepend': EventProp(),
28
+ 'onClick:append': EventProp(),
29
29
  ...makeDensityProps(),
30
30
  ...makeValidationProps()
31
31
  }, 'v-input');
@@ -1 +1 @@
1
- {"version":3,"file":"VInput.mjs","names":["VMessages","IconValue","makeDensityProps","useDensity","makeValidationProps","useValidation","computed","EventProp","genericComponent","getUid","isOn","pick","propsFactory","useRender","useInputIcon","makeVInputProps","id","String","appendIcon","prependIcon","hideDetails","Boolean","messages","type","Array","default","direction","validator","v","includes","VInput","name","props","emits","val","setup","_ref","attrs","slots","emit","densityClasses","InputIcon","uid","messagesId","value","errorMessages","isDirty","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","slotProps","hasPrepend","prepend","hasAppend","append","hasMessages","length","hasDetails","details","_createVNode","message","filterInputProps","keys","Object","filter","k"],"sources":["../../../src/components/VInput/VInput.tsx"],"sourcesContent":["// Styles\nimport './VInput.sass'\n\n// Components\nimport { VMessages } from '@/components/VMessages'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, isOn, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n messagesId: ComputedRef<string>\n isDirty: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n prependIcon: IconValue,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n 'onClick:prepend': EventProp,\n 'onClick:append': EventProp,\n\n ...makeDensityProps(),\n ...makeValidationProps(),\n}, 'v-input')\n\nexport type VInputSlots = MakeSlots<{\n default: [VInputSlot]\n prepend: [VInputSlot]\n append: [VInputSlot]\n details: [VInputSlot]\n}>\n\nexport const VInput = genericComponent<VInputSlots>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { InputIcon } = useInputIcon(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props, 'v-input', id)\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon)\n const hasAppend = !!(slots.append || props.appendIcon)\n const hasMessages = !!(\n props.messages?.length ||\n errorMessages.value.length\n )\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || !!slots.details)\n )\n\n return (\n <div class={[\n 'v-input',\n `v-input--${props.direction}`,\n densityClasses.value,\n validationClasses.value,\n ]}\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-input__prepend\">\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <InputIcon\n key=\"prepend-icon\"\n name=\"prepend\"\n />\n )}\n </div>\n )}\n\n { slots.default && (\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-input__append\">\n { props.appendIcon && (\n <InputIcon\n key=\"append-icon\"\n name=\"append\"\n />\n )}\n\n { slots.append?.(slotProps.value) }\n </div>\n )}\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n id={ messagesId.value }\n active={ hasMessages }\n messages={ errorMessages.value.length > 0\n ? errorMessages.value\n : props.messages\n }\n v-slots={{ message: slots.message }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n )}\n </div>\n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n\nexport function filterInputProps (props: Record<string, unknown>) {\n const keys = Object.keys(VInput.props).filter(k => !isOn(k))\n return pick(props, keys)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VInput.mjs","names":["VMessages","IconValue","makeDensityProps","useDensity","makeValidationProps","useValidation","computed","EventProp","genericComponent","getUid","isOn","pick","propsFactory","useRender","useInputIcon","makeVInputProps","id","String","appendIcon","prependIcon","hideDetails","Boolean","messages","type","Array","default","direction","validator","v","includes","VInput","name","props","emits","val","setup","_ref","attrs","slots","emit","densityClasses","InputIcon","uid","messagesId","value","errorMessages","isDirty","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","slotProps","hasPrepend","prepend","hasAppend","append","hasMessages","length","hasDetails","details","_createVNode","message","filterInputProps","keys","Object","filter","k"],"sources":["../../../src/components/VInput/VInput.tsx"],"sourcesContent":["// Styles\nimport './VInput.sass'\n\n// Components\nimport { VMessages } from '@/components/VMessages'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, isOn, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\nexport interface VInputSlot {\n id: ComputedRef<string>\n messagesId: ComputedRef<string>\n isDirty: ComputedRef<boolean>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isPristine: Ref<boolean>\n isValid: ComputedRef<boolean | null>\n isValidating: Ref<boolean>\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n prependIcon: IconValue,\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n 'onClick:prepend': EventProp<[MouseEvent]>(),\n 'onClick:append': EventProp<[MouseEvent]>(),\n\n ...makeDensityProps(),\n ...makeValidationProps(),\n}, 'v-input')\n\nexport type VInputSlots = MakeSlots<{\n default: [VInputSlot]\n prepend: [VInputSlot]\n append: [VInputSlot]\n details: [VInputSlot]\n}>\n\nexport const VInput = genericComponent<VInputSlots>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { InputIcon } = useInputIcon(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props, 'v-input', id)\n\n const slotProps = computed<VInputSlot>(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon)\n const hasAppend = !!(slots.append || props.appendIcon)\n const hasMessages = !!(\n props.messages?.length ||\n errorMessages.value.length\n )\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || !!slots.details)\n )\n\n return (\n <div class={[\n 'v-input',\n `v-input--${props.direction}`,\n densityClasses.value,\n validationClasses.value,\n ]}\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-input__prepend\">\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n <InputIcon\n key=\"prepend-icon\"\n name=\"prepend\"\n />\n )}\n </div>\n )}\n\n { slots.default && (\n <div class=\"v-input__control\">\n { slots.default?.(slotProps.value) }\n </div>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-input__append\">\n { props.appendIcon && (\n <InputIcon\n key=\"append-icon\"\n name=\"append\"\n />\n )}\n\n { slots.append?.(slotProps.value) }\n </div>\n )}\n\n { hasDetails && (\n <div class=\"v-input__details\">\n <VMessages\n id={ messagesId.value }\n active={ hasMessages }\n messages={ errorMessages.value.length > 0\n ? errorMessages.value\n : props.messages\n }\n v-slots={{ message: slots.message }}\n />\n\n { slots.details?.(slotProps.value) }\n </div>\n )}\n </div>\n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n }\n },\n})\n\nexport type VInput = InstanceType<typeof VInput>\n\nexport function filterInputProps (props: Record<string, unknown>) {\n const keys = Object.keys(VInput.props).filter(k => !isOn(k))\n return pick(props, keys)\n}\n"],"mappings":"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"}