vuetify 3.0.7 → 3.1.1

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 (211) hide show
  1. package/_settings.scss +1 -0
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +452 -4
  4. package/dist/json/importMap-labs.json +28 -0
  5. package/dist/json/importMap.json +92 -92
  6. package/dist/json/tags.json +154 -8
  7. package/dist/json/web-types.json +1578 -18
  8. package/dist/vuetify-labs.css +25743 -0
  9. package/dist/vuetify-labs.d.ts +26770 -0
  10. package/dist/vuetify-labs.esm.js +20101 -0
  11. package/dist/vuetify-labs.esm.js.map +1 -0
  12. package/dist/vuetify-labs.js +20116 -0
  13. package/dist/vuetify-labs.min.css +12 -0
  14. package/dist/vuetify.css +92 -113
  15. package/dist/vuetify.d.ts +182 -204
  16. package/dist/vuetify.esm.js +213 -136
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +212 -135
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +790 -784
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/blueprints/index.d.ts +3 -2
  24. package/lib/blueprints/md1.d.ts +3 -2
  25. package/lib/blueprints/md2.d.ts +3 -2
  26. package/lib/blueprints/md3.d.ts +3 -2
  27. package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
  28. package/lib/components/VAlert/index.d.ts +1 -0
  29. package/lib/components/VAppBar/VAppBarTitle.mjs +4 -4
  30. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  31. package/lib/components/VAutocomplete/VAutocomplete.mjs +23 -16
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  33. package/lib/components/VAutocomplete/index.d.ts +4 -12
  34. package/lib/components/VAvatar/VAvatar.mjs +2 -1
  35. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  36. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +23 -20
  37. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  38. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +21 -2
  39. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  40. package/lib/components/VBreadcrumbs/index.d.ts +4 -15
  41. package/lib/components/VCheckbox/VCheckbox.mjs +2 -0
  42. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  43. package/lib/components/VCombobox/VCombobox.mjs +23 -16
  44. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  45. package/lib/components/VCombobox/index.d.ts +4 -12
  46. package/lib/components/VDivider/VDivider.css +1 -1
  47. package/lib/components/VDivider/VDivider.sass +1 -0
  48. package/lib/components/VDivider/_variables.scss +2 -1
  49. package/lib/components/VField/VField.mjs +3 -1
  50. package/lib/components/VField/VField.mjs.map +1 -1
  51. package/lib/components/VField/index.d.ts +1 -0
  52. package/lib/components/VFileInput/VFileInput.mjs +2 -0
  53. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  54. package/lib/components/VFileInput/index.d.ts +1 -0
  55. package/lib/components/VIcon/VIcon.mjs +25 -20
  56. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  57. package/lib/components/VIcon/index.d.ts +4 -8
  58. package/lib/components/VInput/VInput.mjs +3 -0
  59. package/lib/components/VInput/VInput.mjs.map +1 -1
  60. package/lib/components/VInput/index.d.ts +1 -0
  61. package/lib/components/VList/VListItem.css +0 -4
  62. package/lib/components/VList/VListItem.sass +12 -6
  63. package/lib/components/VMessages/VMessages.mjs +3 -1
  64. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  65. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +10 -2
  66. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  67. package/lib/components/VNavigationDrawer/index.d.ts +11 -3
  68. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -0
  69. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  70. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -1
  71. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  72. package/lib/components/VSelect/VSelect.mjs +29 -17
  73. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  74. package/lib/components/VSelect/index.d.ts +1 -0
  75. package/lib/components/VSlider/VSlider.mjs +4 -1
  76. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  77. package/lib/components/VSwitch/VSwitch.mjs +2 -0
  78. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  79. package/lib/components/VTable/VTable.css +12 -29
  80. package/lib/components/VTable/VTable.mjs +3 -3
  81. package/lib/components/VTable/VTable.mjs.map +1 -1
  82. package/lib/components/VTable/VTable.sass +10 -17
  83. package/lib/components/VTable/_variables.scss +4 -2
  84. package/lib/components/VTextField/index.d.ts +1 -0
  85. package/lib/components/VTextarea/index.d.ts +1 -0
  86. package/lib/components/index.d.ts +27 -50
  87. package/lib/components/transitions/dialog-transition.mjs +3 -9
  88. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  89. package/lib/composables/filter.mjs +18 -10
  90. package/lib/composables/filter.mjs.map +1 -1
  91. package/lib/composables/icons.mjs +12 -7
  92. package/lib/composables/icons.mjs.map +1 -1
  93. package/lib/entry-bundler.mjs +1 -1
  94. package/lib/framework.mjs +1 -1
  95. package/lib/iconsets/fa-svg.d.ts +3 -2
  96. package/lib/iconsets/fa.d.ts +3 -2
  97. package/lib/iconsets/fa.mjs +2 -1
  98. package/lib/iconsets/fa.mjs.map +1 -1
  99. package/lib/iconsets/fa4.d.ts +3 -2
  100. package/lib/iconsets/fa4.mjs +2 -1
  101. package/lib/iconsets/fa4.mjs.map +1 -1
  102. package/lib/iconsets/md.d.ts +3 -2
  103. package/lib/iconsets/md.mjs +2 -1
  104. package/lib/iconsets/md.mjs.map +1 -1
  105. package/lib/iconsets/mdi-svg.d.ts +3 -2
  106. package/lib/iconsets/mdi-svg.mjs +2 -1
  107. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  108. package/lib/iconsets/mdi.d.ts +3 -2
  109. package/lib/iconsets/mdi.mjs +2 -1
  110. package/lib/iconsets/mdi.mjs.map +1 -1
  111. package/lib/index.d.ts +28 -27
  112. package/lib/labs/VDataTable/VDataTable.css +119 -0
  113. package/lib/labs/VDataTable/VDataTable.mjs +146 -0
  114. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -0
  115. package/lib/labs/VDataTable/VDataTable.sass +106 -0
  116. package/lib/labs/VDataTable/VDataTableColumn.mjs +37 -0
  117. package/lib/labs/VDataTable/VDataTableColumn.mjs.map +1 -0
  118. package/lib/labs/VDataTable/VDataTableFooter.css +22 -0
  119. package/lib/labs/VDataTable/VDataTableFooter.mjs +105 -0
  120. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -0
  121. package/lib/labs/VDataTable/VDataTableFooter.sass +23 -0
  122. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +88 -0
  123. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -0
  124. package/lib/labs/VDataTable/VDataTableHeaders.mjs +143 -0
  125. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -0
  126. package/lib/labs/VDataTable/VDataTableRow.mjs +75 -0
  127. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -0
  128. package/lib/labs/VDataTable/VDataTableRows.mjs +87 -0
  129. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -0
  130. package/lib/labs/VDataTable/VDataTableServer.mjs +124 -0
  131. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -0
  132. package/lib/labs/VDataTable/VDataTableVirtual.mjs +154 -0
  133. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -0
  134. package/lib/labs/VDataTable/_variables.scss +6 -0
  135. package/lib/labs/VDataTable/composables/expand.mjs +51 -0
  136. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -0
  137. package/lib/labs/VDataTable/composables/group.mjs +124 -0
  138. package/lib/labs/VDataTable/composables/group.mjs.map +1 -0
  139. package/lib/labs/VDataTable/composables/headers.mjs +152 -0
  140. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -0
  141. package/lib/labs/VDataTable/composables/items.mjs +30 -0
  142. package/lib/labs/VDataTable/composables/items.mjs.map +1 -0
  143. package/lib/labs/VDataTable/composables/options.mjs +44 -0
  144. package/lib/labs/VDataTable/composables/options.mjs.map +1 -0
  145. package/lib/labs/VDataTable/composables/paginate.mjs +62 -0
  146. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -0
  147. package/lib/labs/VDataTable/composables/select.mjs +57 -0
  148. package/lib/labs/VDataTable/composables/select.mjs.map +1 -0
  149. package/lib/labs/VDataTable/composables/sort.mjs +109 -0
  150. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -0
  151. package/lib/labs/VDataTable/composables/virtual.mjs +77 -0
  152. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -0
  153. package/lib/labs/VDataTable/index.d.ts +705 -0
  154. package/lib/labs/VDataTable/index.mjs +6 -0
  155. package/lib/labs/VDataTable/index.mjs.map +1 -0
  156. package/lib/labs/VDataTable/types.mjs +2 -0
  157. package/lib/labs/VDataTable/types.mjs.map +1 -0
  158. package/lib/labs/VVirtualScroll/VVirtualScroll.css +11 -0
  159. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +118 -0
  160. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -0
  161. package/lib/{components → labs}/VVirtualScroll/VVirtualScroll.sass +0 -5
  162. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs +35 -0
  163. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -0
  164. package/lib/labs/VVirtualScroll/index.d.ts +154 -0
  165. package/lib/labs/VVirtualScroll/index.mjs +2 -0
  166. package/lib/labs/VVirtualScroll/index.mjs.map +1 -0
  167. package/lib/labs/allComponents.mjs +3 -0
  168. package/lib/labs/allComponents.mjs.map +1 -0
  169. package/lib/labs/components.d.ts +856 -0
  170. package/lib/labs/components.mjs +3 -0
  171. package/lib/labs/components.mjs.map +1 -0
  172. package/lib/labs/entry-bundler.mjs +14 -0
  173. package/lib/labs/entry-bundler.mjs.map +1 -0
  174. package/lib/labs/index.mjs +3 -0
  175. package/lib/labs/index.mjs.map +1 -0
  176. package/lib/util/defineComponent.mjs +5 -1
  177. package/lib/util/defineComponent.mjs.map +1 -1
  178. package/lib/util/helpers.mjs +0 -38
  179. package/lib/util/helpers.mjs.map +1 -1
  180. package/package.json +4 -2
  181. package/lib/components/VDataTable/MobileRow.mjs +0 -63
  182. package/lib/components/VDataTable/MobileRow.mjs.map +0 -1
  183. package/lib/components/VDataTable/Row.mjs +0 -57
  184. package/lib/components/VDataTable/Row.mjs.map +0 -1
  185. package/lib/components/VDataTable/RowGroup.mjs +0 -48
  186. package/lib/components/VDataTable/RowGroup.mjs.map +0 -1
  187. package/lib/components/VDataTable/VDataTable.mjs +0 -577
  188. package/lib/components/VDataTable/VDataTable.mjs.map +0 -1
  189. package/lib/components/VDataTable/VDataTable.sass +0 -98
  190. package/lib/components/VDataTable/VDataTableHeader.mjs +0 -42
  191. package/lib/components/VDataTable/VDataTableHeader.mjs.map +0 -1
  192. package/lib/components/VDataTable/VDataTableHeader.sass +0 -80
  193. package/lib/components/VDataTable/VDataTableHeaderDesktop.mjs +0 -96
  194. package/lib/components/VDataTable/VDataTableHeaderDesktop.mjs.map +0 -1
  195. package/lib/components/VDataTable/VDataTableHeaderMobile.mjs +0 -89
  196. package/lib/components/VDataTable/VDataTableHeaderMobile.mjs.map +0 -1
  197. package/lib/components/VDataTable/VEditDialog.mjs +0 -127
  198. package/lib/components/VDataTable/VEditDialog.mjs.map +0 -1
  199. package/lib/components/VDataTable/VEditDialog.sass +0 -22
  200. package/lib/components/VDataTable/VVirtualTable.mjs +0 -132
  201. package/lib/components/VDataTable/VVirtualTable.mjs.map +0 -1
  202. package/lib/components/VDataTable/VVirtualTable.sass +0 -13
  203. package/lib/components/VDataTable/_variables.scss +0 -24
  204. package/lib/components/VDataTable/index.mjs +0 -21
  205. package/lib/components/VDataTable/index.mjs.map +0 -1
  206. package/lib/components/VDataTable/mixins/header.mjs +0 -71
  207. package/lib/components/VDataTable/mixins/header.mjs.map +0 -1
  208. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +0 -108
  209. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +0 -1
  210. package/lib/components/VVirtualScroll/index.mjs +0 -4
  211. package/lib/components/VVirtualScroll/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VChip","VCounter","VField","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","callEvent","defineComponent","filterInputAttrs","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","attrs","emit","slots","t","model","base","undefined","totalBytes","value","reduce","bytes","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","isFocused","inputRef","messages","onFocus","document","activeElement","focus","onClickPrepend","onControlClick","click","onClear","stopPropagation","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","fieldProps","isDisabled","isDirty","isReadonly","isValid","class","fieldClass","slotProps","target","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 } from 'vue'\nimport { callEvent, defineComponent, filterInputAttrs, humanReadableFileSize, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VFileInput = defineComponent({\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 '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 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 if (inputRef?.value) {\n inputRef.value.value = ''\n }\n\n callEvent(props['onClick:clear'], e)\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 isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onClick:control={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n active={ isDirty.value || isFocused.value }\n dirty={ isDirty.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={ 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","callEvent","defineComponent","filterInputAttrs","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","attrs","emit","slots","t","model","base","undefined","totalBytes","value","reduce","bytes","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","isFocused","inputRef","messages","onFocus","document","activeElement","focus","onClickPrepend","onControlClick","click","onClear","stopPropagation","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","fieldProps","id","isDisabled","isDirty","isReadonly","isValid","class","fieldClass","slotProps","target","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 } from 'vue'\nimport { callEvent, defineComponent, filterInputAttrs, humanReadableFileSize, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VFileInput = defineComponent({\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 '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 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 if (inputRef?.value) {\n inputRef.value.value = ''\n }\n\n callEvent(props['onClick:clear'], e)\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 onClick:control={ 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 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={ 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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"}
@@ -14,6 +14,7 @@ declare const IconValue: PropType<IconValue>;
14
14
 
15
15
  interface VInputSlot {
16
16
  id: ComputedRef<string>;
17
+ messagesId: ComputedRef<string>;
17
18
  isDirty: ComputedRef<boolean>;
18
19
  isDisabled: ComputedRef<boolean>;
19
20
  isReadonly: ComputedRef<boolean>;
@@ -8,8 +8,8 @@ import { makeSizeProps, useSize } from "../../composables/size.mjs";
8
8
  import { makeTagProps } from "../../composables/tag.mjs";
9
9
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
10
10
  import { useTextColor } from "../../composables/color.mjs"; // Utilities
11
- import { computed, toRef } from 'vue';
12
- import { convertToUnit, defineComponent, flattenFragments, propsFactory, useRender } from "../../util/index.mjs"; // Types
11
+ import { computed, Text, toRef } from 'vue';
12
+ import { convertToUnit, defineComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
13
13
  export const makeVIconProps = propsFactory({
14
14
  color: String,
15
15
  start: Boolean,
@@ -32,10 +32,10 @@ export const VIcon = defineComponent({
32
32
  let slotIcon;
33
33
  if (slots.default) {
34
34
  slotIcon = computed(() => {
35
- var _slots$default, _flattenFragments$fil;
35
+ var _slots$default, _slot$filter$;
36
36
  const slot = (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots);
37
37
  if (!slot) return;
38
- return (_flattenFragments$fil = flattenFragments(slot).filter(node => node.children && typeof node.children === 'string')[0]) == null ? void 0 : _flattenFragments$fil.children;
38
+ return (_slot$filter$ = slot.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]) == null ? void 0 : _slot$filter$.children;
39
39
  });
40
40
  }
41
41
  const {
@@ -51,22 +51,27 @@ export const VIcon = defineComponent({
51
51
  textColorClasses,
52
52
  textColorStyles
53
53
  } = useTextColor(toRef(props, 'color'));
54
- useRender(() => _createVNode(iconData.value.component, {
55
- "tag": props.tag,
56
- "icon": iconData.value.icon,
57
- "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
58
- 'v-icon--clickable': !!attrs.onClick,
59
- 'v-icon--start': props.start,
60
- 'v-icon--end': props.end
61
- }],
62
- "style": [!sizeClasses.value ? {
63
- fontSize: convertToUnit(props.size),
64
- height: convertToUnit(props.size),
65
- width: convertToUnit(props.size)
66
- } : undefined, textColorStyles.value],
67
- "role": attrs.onClick ? 'button' : undefined,
68
- "aria-hidden": !attrs.onClick
69
- }, null));
54
+ useRender(() => {
55
+ var _slots$default2;
56
+ return _createVNode(iconData.value.component, {
57
+ "tag": props.tag,
58
+ "icon": iconData.value.icon,
59
+ "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
60
+ 'v-icon--clickable': !!attrs.onClick,
61
+ 'v-icon--start': props.start,
62
+ 'v-icon--end': props.end
63
+ }],
64
+ "style": [!sizeClasses.value ? {
65
+ fontSize: convertToUnit(props.size),
66
+ height: convertToUnit(props.size),
67
+ width: convertToUnit(props.size)
68
+ } : undefined, textColorStyles.value],
69
+ "role": attrs.onClick ? 'button' : undefined,
70
+ "aria-hidden": !attrs.onClick
71
+ }, {
72
+ default: () => [(_slots$default2 = slots.default) == null ? void 0 : _slots$default2.call(slots)]
73
+ });
74
+ });
70
75
  return {};
71
76
  }
72
77
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VIcon.mjs","names":["IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","useTextColor","computed","toRef","convertToUnit","defineComponent","flattenFragments","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","attrs","slots","slotIcon","default","slot","filter","node","children","themeClasses","iconData","sizeClasses","textColorClasses","textColorStyles","value","onClick","fontSize","size","height","width","undefined"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, defineComponent, flattenFragments, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef } from 'vue'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'v-icon')\n\nexport const VIcon = defineComponent({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n let slotIcon: ComputedRef<string | undefined> | undefined\n if (slots.default) {\n slotIcon = computed(() => {\n const slot = slots.default?.()\n if (!slot) return\n\n return flattenFragments(slot).filter(node =>\n node.children && typeof node.children === 'string'\n )[0]?.children as string\n })\n }\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(slotIcon || props)\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => (\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': !!attrs.onClick,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n ]}\n style={[\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n ]}\n role={ attrs.onClick ? 'button' : undefined }\n aria-hidden={ !attrs.onClick }\n />\n ))\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,SAAS,EAAEC,OAAO;AAAA,SAClBC,aAAa,EAAEC,OAAO;AAAA,SACtBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,YAAY,uCAErB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,aAAa,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElF;AAGA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,KAAK,EAAEC,MAAM;EACbC,KAAK,EAAEC,OAAO;EACdC,GAAG,EAAED,OAAO;EACZE,IAAI,EAAErB,SAAS;EAEf,GAAGE,aAAa,EAAE;EAClB,GAAGE,YAAY,CAAC;IAAEkB,GAAG,EAAE;EAAI,CAAC,CAAC;EAC7B,GAAGjB,cAAc;AACnB,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMkB,KAAK,GAAGZ,eAAe,CAAC;EACnCa,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEV,cAAc,EAAE;EAEvBW,KAAK,CAAED,KAAK,QAAoB;IAAA,IAAlB;MAAEE,KAAK;MAAEC;IAAM,CAAC;IAC5B,IAAIC,QAAqD;IACzD,IAAID,KAAK,CAACE,OAAO,EAAE;MACjBD,QAAQ,GAAGrB,QAAQ,CAAC,MAAM;QAAA;QACxB,MAAMuB,IAAI,qBAAGH,KAAK,CAACE,OAAO,qBAAb,oBAAAF,KAAK,CAAY;QAC9B,IAAI,CAACG,IAAI,EAAE;QAEX,gCAAOnB,gBAAgB,CAACmB,IAAI,CAAC,CAACC,MAAM,CAACC,IAAI,IACvCA,IAAI,CAACC,QAAQ,IAAI,OAAOD,IAAI,CAACC,QAAQ,KAAK,QAAQ,CACnD,CAAC,CAAC,CAAC,qBAFG,sBAEDA,QAAQ;MAChB,CAAC,CAAC;IACJ;IAEA,MAAM;MAAEC;IAAa,CAAC,GAAG7B,YAAY,CAACmB,KAAK,CAAC;IAC5C,MAAM;MAAEW;IAAS,CAAC,GAAGnC,OAAO,CAAC4B,QAAQ,IAAIJ,KAAK,CAAC;IAC/C,MAAM;MAAEY;IAAY,CAAC,GAAGlC,OAAO,CAACsB,KAAK,CAAC;IACtC,MAAM;MAAEa,gBAAgB;MAAEC;IAAgB,CAAC,GAAGhC,YAAY,CAACE,KAAK,CAACgB,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjFX,SAAS,CAAC;MAAA,OAEAW,KAAK,CAACH,GAAG;MAAA,QACRc,QAAQ,CAACI,KAAK,CAACnB,IAAI;MAAA,SACnB,CACL,QAAQ,EACR,aAAa,EACbc,YAAY,CAACK,KAAK,EAClBH,WAAW,CAACG,KAAK,EACjBF,gBAAgB,CAACE,KAAK,EACtB;QACE,mBAAmB,EAAE,CAAC,CAACb,KAAK,CAACc,OAAO;QACpC,eAAe,EAAEhB,KAAK,CAACP,KAAK;QAC5B,aAAa,EAAEO,KAAK,CAACL;MACvB,CAAC,CACF;MAAA,SACM,CACL,CAACiB,WAAW,CAACG,KAAK,GAAI;QACpBE,QAAQ,EAAEhC,aAAa,CAACe,KAAK,CAACkB,IAAI,CAAC;QACnCC,MAAM,EAAElC,aAAa,CAACe,KAAK,CAACkB,IAAI,CAAC;QACjCE,KAAK,EAAEnC,aAAa,CAACe,KAAK,CAACkB,IAAI;MACjC,CAAC,GAAIG,SAAS,EACdP,eAAe,CAACC,KAAK,CACtB;MAAA,QACMb,KAAK,CAACc,OAAO,GAAG,QAAQ,GAAGK,SAAS;MAAA,eAC7B,CAACnB,KAAK,CAACc;IAAO,QAE/B,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VIcon.mjs","names":["IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","useTextColor","computed","Text","toRef","convertToUnit","defineComponent","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","attrs","slots","slotIcon","default","slot","filter","node","type","children","themeClasses","iconData","sizeClasses","textColorClasses","textColorStyles","value","onClick","fontSize","size","height","width","undefined"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, Text, toRef } from 'vue'\nimport { convertToUnit, defineComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef } from 'vue'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'v-icon')\n\nexport const VIcon = defineComponent({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n let slotIcon: ComputedRef<string | undefined> | undefined\n if (slots.default) {\n slotIcon = computed(() => {\n const slot = slots.default?.()\n if (!slot) return\n\n return slot.filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n })\n }\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(slotIcon || props)\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => (\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': !!attrs.onClick,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n ]}\n style={[\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n ]}\n role={ attrs.onClick ? 'button' : undefined }\n aria-hidden={ !attrs.onClick }\n >\n { slots.default?.() }\n </iconData.value.component>\n ))\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ declare const IconValue: PropType<IconValue>;
6
6
  declare const VComponentIcon: vue.DefineComponent<{
7
7
  icon: {
8
8
  type: PropType<IconValue>;
9
- required: true;
10
9
  };
11
10
  tag: {
12
11
  type: StringConstructor;
@@ -15,17 +14,16 @@ declare const VComponentIcon: vue.DefineComponent<{
15
14
  }, () => JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
16
15
  icon: {
17
16
  type: PropType<IconValue>;
18
- required: true;
19
17
  };
20
18
  tag: {
21
19
  type: StringConstructor;
22
20
  required: true;
23
21
  };
24
22
  }>>, {}>;
23
+ declare type VComponentIcon = InstanceType<typeof VComponentIcon>;
25
24
  declare const VSvgIcon: vue.DefineComponent<{
26
25
  icon: {
27
26
  type: PropType<IconValue>;
28
- required: true;
29
27
  };
30
28
  tag: {
31
29
  type: StringConstructor;
@@ -34,17 +32,16 @@ declare const VSvgIcon: vue.DefineComponent<{
34
32
  }, () => JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
35
33
  icon: {
36
34
  type: PropType<IconValue>;
37
- required: true;
38
35
  };
39
36
  tag: {
40
37
  type: StringConstructor;
41
38
  required: true;
42
39
  };
43
40
  }>>, {}>;
41
+ declare type VSvgIcon = InstanceType<typeof VSvgIcon>;
44
42
  declare const VLigatureIcon: vue.DefineComponent<{
45
43
  icon: {
46
44
  type: PropType<IconValue>;
47
- required: true;
48
45
  };
49
46
  tag: {
50
47
  type: StringConstructor;
@@ -53,17 +50,16 @@ declare const VLigatureIcon: vue.DefineComponent<{
53
50
  }, () => JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
54
51
  icon: {
55
52
  type: PropType<IconValue>;
56
- required: true;
57
53
  };
58
54
  tag: {
59
55
  type: StringConstructor;
60
56
  required: true;
61
57
  };
62
58
  }>>, {}>;
59
+ declare type VLigatureIcon = InstanceType<typeof VLigatureIcon>;
63
60
  declare const VClassIcon: vue.DefineComponent<{
64
61
  icon: {
65
62
  type: PropType<IconValue>;
66
- required: true;
67
63
  };
68
64
  tag: {
69
65
  type: StringConstructor;
@@ -72,13 +68,13 @@ declare const VClassIcon: vue.DefineComponent<{
72
68
  }, () => JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
73
69
  icon: {
74
70
  type: PropType<IconValue>;
75
- required: true;
76
71
  };
77
72
  tag: {
78
73
  type: StringConstructor;
79
74
  required: true;
80
75
  };
81
76
  }>>, {}>;
77
+ declare type VClassIcon = InstanceType<typeof VClassIcon>;
82
78
 
83
79
  declare const VIcon: vue.DefineComponent<{
84
80
  theme: StringConstructor;
@@ -51,6 +51,7 @@ export const VInput = genericComponent()({
51
51
  } = useInputIcon(props);
52
52
  const uid = getUid();
53
53
  const id = computed(() => props.id || `input-${uid}`);
54
+ const messagesId = computed(() => `${id.value}-messages`);
54
55
  const {
55
56
  errorMessages,
56
57
  isDirty,
@@ -66,6 +67,7 @@ export const VInput = genericComponent()({
66
67
  } = useValidation(props, 'v-input', id);
67
68
  const slotProps = computed(() => ({
68
69
  id,
70
+ messagesId,
69
71
  isDirty,
70
72
  isDisabled,
71
73
  isReadonly,
@@ -101,6 +103,7 @@ export const VInput = genericComponent()({
101
103
  }, null), (_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value)]), hasDetails && _createVNode("div", {
102
104
  "class": "v-input__details"
103
105
  }, [_createVNode(VMessages, {
106
+ "id": messagesId.value,
104
107
  "active": hasMessages,
105
108
  "messages": errorMessages.value.length > 0 ? errorMessages.value : props.messages
106
109
  }, {
@@ -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","attrs","slots","emit","densityClasses","InputIcon","uid","errorMessages","isDirty","isDisabled","isReadonly","isPristine","isValid","isValidating","reset","resetValidation","validate","validationClasses","slotProps","hasPrepend","prepend","hasAppend","append","hasMessages","length","value","hasDetails","details","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, SlotsToProps } from '@/util'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\nexport interface VInputSlot {\n id: 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<new () => {\n $props: SlotsToProps<VInputSlots>\n}>()({\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\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 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 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","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","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, SlotsToProps } 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<new () => {\n $props: SlotsToProps<VInputSlots>\n}>()({\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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"}
@@ -29,6 +29,7 @@ declare const IconValue: PropType<IconValue>;
29
29
 
30
30
  interface VInputSlot {
31
31
  id: ComputedRef<string>;
32
+ messagesId: ComputedRef<string>;
32
33
  isDirty: ComputedRef<boolean>;
33
34
  isDisabled: ComputedRef<boolean>;
34
35
  isReadonly: ComputedRef<boolean>;
@@ -262,8 +262,6 @@
262
262
  }
263
263
  .v-list-item--density-comfortable.v-list-item--one-line {
264
264
  min-height: 44px;
265
- padding-top: 0px;
266
- padding-bottom: 0px;
267
265
  }
268
266
  .v-list-item--density-comfortable.v-list-item--two-line {
269
267
  min-height: 60px;
@@ -293,8 +291,6 @@
293
291
  }
294
292
  .v-list-item--density-compact.v-list-item--one-line {
295
293
  min-height: 40px;
296
- padding-top: -4px;
297
- padding-bottom: -4px;
298
294
  }
299
295
  .v-list-item--density-compact.v-list-item--two-line {
300
296
  min-height: 56px;
@@ -157,22 +157,28 @@
157
157
  $one-line-padding: (list.nth($list-item-padding, 1) + $modifier)
158
158
 
159
159
  min-height: $list-item-one-line-min-height + $modifier
160
- padding-top: $one-line-padding
161
- padding-bottom: $one-line-padding
160
+
161
+ @if ($one-line-padding > 0)
162
+ padding-top: $one-line-padding
163
+ padding-bottom: $one-line-padding
162
164
 
163
165
  &.v-list-item--two-line
164
166
  $two-line-padding: (list.nth($list-item-two-line-padding, 1) + $modifier)
165
167
 
166
168
  min-height: $list-item-two-line-min-height + $modifier
167
- padding-top: $two-line-padding
168
- padding-bottom: $two-line-padding
169
+
170
+ @if ($two-line-padding > 0)
171
+ padding-top: $two-line-padding
172
+ padding-bottom: $two-line-padding
169
173
 
170
174
  &.v-list-item--three-line
171
175
  $three-line-padding: (list.nth($list-item-three-line-padding, 1) + $modifier)
172
176
 
173
177
  min-height: $list-item-three-line-min-height + $modifier
174
- padding-top: $three-line-padding
175
- padding-bottom: $three-line-padding
178
+
179
+ @if ($three-line-padding > 0)
180
+ padding-top: $three-line-padding
181
+ padding-bottom: $three-line-padding
176
182
 
177
183
  &:not(.v-list-item--nav)
178
184
  &.v-list-item--one-line
@@ -38,7 +38,9 @@ export const VMessages = defineComponent({
38
38
  "transition": props.transition,
39
39
  "tag": "div",
40
40
  "class": ['v-messages', textColorClasses.value],
41
- "style": textColorStyles.value
41
+ "style": textColorStyles.value,
42
+ "role": "alert",
43
+ "aria-live": "polite"
42
44
  }, {
43
45
  default: () => [props.active && messages.value.map((message, i) => _createVNode("div", {
44
46
  "class": "v-messages__message",
@@ -1 +1 @@
1
- {"version":3,"file":"VMessages.mjs","names":["VSlideYTransition","makeTransitionProps","MaybeTransition","useTextColor","computed","defineComponent","useRender","wrapInArray","VMessages","name","props","active","Boolean","color","String","messages","type","Array","default","transition","component","leaveAbsolute","group","setup","slots","textColorClasses","textColorStyles","value","map","message","i"],"sources":["../../../src/components/VMessages/VMessages.tsx"],"sourcesContent":["// Styles\nimport './VMessages.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VMessages = defineComponent({\n name: 'VMessages',\n\n props: {\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition,\n leaveAbsolute: true,\n group: true,\n },\n }),\n },\n\n setup (props, { slots }) {\n const messages = computed(() => wrapInArray(props.messages))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => props.color))\n\n useRender(() => (\n <MaybeTransition\n transition={ props.transition }\n tag=\"div\"\n class={[\n 'v-messages',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { props.active && (\n messages.value.map((message, i) => (\n <div\n class=\"v-messages__message\"\n key={ `${i}-${messages.value}` }\n >\n { slots.message ? slots.message({ message }) : message }\n </div>\n ))\n ) }\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType<typeof VMessages>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB,oCAE1B;AAAA,SACSC,mBAAmB,EAAEC,eAAe;AAAA,SACpCC,YAAY,uCAErB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,eAAe,EAAEC,SAAS,EAAEC,WAAW,gCAEhD;AAGA,OAAO,MAAMC,SAAS,GAAGH,eAAe,CAAC;EACvCI,IAAI,EAAE,WAAW;EAEjBC,KAAK,EAAE;IACLC,MAAM,EAAEC,OAAO;IACfC,KAAK,EAAEC,MAAM;IACbC,QAAQ,EAAE;MACRC,IAAI,EAAE,CAACC,KAAK,EAAEH,MAAM,CAAgC;MACpDI,OAAO,EAAE,MAAO;IAClB,CAAC;IAED,GAAGjB,mBAAmB,CAAC;MACrBkB,UAAU,EAAE;QACVC,SAAS,EAAEpB,iBAAiB;QAC5BqB,aAAa,EAAE,IAAI;QACnBC,KAAK,EAAE;MACT;IACF,CAAC;EACH,CAAC;EAEDC,KAAK,CAAEb,KAAK,QAAa;IAAA,IAAX;MAAEc;IAAM,CAAC;IACrB,MAAMT,QAAQ,GAAGX,QAAQ,CAAC,MAAMG,WAAW,CAACG,KAAK,CAACK,QAAQ,CAAC,CAAC;IAC5D,MAAM;MAAEU,gBAAgB;MAAEC;IAAgB,CAAC,GAAGvB,YAAY,CAACC,QAAQ,CAAC,MAAMM,KAAK,CAACG,KAAK,CAAC,CAAC;IAEvFP,SAAS,CAAC;MAAA,cAEOI,KAAK,CAACS,UAAU;MAAA,OACzB,KAAK;MAAA,SACF,CACL,YAAY,EACZM,gBAAgB,CAACE,KAAK,CACvB;MAAA,SACOD,eAAe,CAACC;IAAK;MAAA,gBAE3BjB,KAAK,CAACC,MAAM,IACZI,QAAQ,CAACY,KAAK,CAACC,GAAG,CAAC,CAACC,OAAO,EAAEC,CAAC;QAAA,SAEpB,qBAAqB;QAAA,OACpB,GAAEA,CAAE,IAAGf,QAAQ,CAACY,KAAM;MAAC,IAE5BH,KAAK,CAACK,OAAO,GAAGL,KAAK,CAACK,OAAO,CAAC;QAAEA;MAAQ,CAAC,CAAC,GAAGA,OAAO,EAEzD,CACF;IAAA,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VMessages.mjs","names":["VSlideYTransition","makeTransitionProps","MaybeTransition","useTextColor","computed","defineComponent","useRender","wrapInArray","VMessages","name","props","active","Boolean","color","String","messages","type","Array","default","transition","component","leaveAbsolute","group","setup","slots","textColorClasses","textColorStyles","value","map","message","i"],"sources":["../../../src/components/VMessages/VMessages.tsx"],"sourcesContent":["// Styles\nimport './VMessages.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VMessages = defineComponent({\n name: 'VMessages',\n\n props: {\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition,\n leaveAbsolute: true,\n group: true,\n },\n }),\n },\n\n setup (props, { slots }) {\n const messages = computed(() => wrapInArray(props.messages))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => props.color))\n\n useRender(() => (\n <MaybeTransition\n transition={ props.transition }\n tag=\"div\"\n class={[\n 'v-messages',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n role=\"alert\"\n aria-live=\"polite\"\n >\n { props.active && (\n messages.value.map((message, i) => (\n <div\n class=\"v-messages__message\"\n key={ `${i}-${messages.value}` }\n >\n { slots.message ? slots.message({ message }) : message }\n </div>\n ))\n ) }\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType<typeof VMessages>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB,oCAE1B;AAAA,SACSC,mBAAmB,EAAEC,eAAe;AAAA,SACpCC,YAAY,uCAErB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,eAAe,EAAEC,SAAS,EAAEC,WAAW,gCAEhD;AAGA,OAAO,MAAMC,SAAS,GAAGH,eAAe,CAAC;EACvCI,IAAI,EAAE,WAAW;EAEjBC,KAAK,EAAE;IACLC,MAAM,EAAEC,OAAO;IACfC,KAAK,EAAEC,MAAM;IACbC,QAAQ,EAAE;MACRC,IAAI,EAAE,CAACC,KAAK,EAAEH,MAAM,CAAgC;MACpDI,OAAO,EAAE,MAAO;IAClB,CAAC;IAED,GAAGjB,mBAAmB,CAAC;MACrBkB,UAAU,EAAE;QACVC,SAAS,EAAEpB,iBAAiB;QAC5BqB,aAAa,EAAE,IAAI;QACnBC,KAAK,EAAE;MACT;IACF,CAAC;EACH,CAAC;EAEDC,KAAK,CAAEb,KAAK,QAAa;IAAA,IAAX;MAAEc;IAAM,CAAC;IACrB,MAAMT,QAAQ,GAAGX,QAAQ,CAAC,MAAMG,WAAW,CAACG,KAAK,CAACK,QAAQ,CAAC,CAAC;IAC5D,MAAM;MAAEU,gBAAgB;MAAEC;IAAgB,CAAC,GAAGvB,YAAY,CAACC,QAAQ,CAAC,MAAMM,KAAK,CAACG,KAAK,CAAC,CAAC;IAEvFP,SAAS,CAAC;MAAA,cAEOI,KAAK,CAACS,UAAU;MAAA,OACzB,KAAK;MAAA,SACF,CACL,YAAY,EACZM,gBAAgB,CAACE,KAAK,CACvB;MAAA,SACOD,eAAe,CAACC,KAAK;MAAA,QACxB,OAAO;MAAA,aACF;IAAQ;MAAA,gBAEhBjB,KAAK,CAACC,MAAM,IACZI,QAAQ,CAACY,KAAK,CAACC,GAAG,CAAC,CAACC,OAAO,EAAEC,CAAC;QAAA,SAEpB,qBAAqB;QAAA,OACpB,GAAEA,CAAE,IAAGf,QAAQ,CAACY,KAAM;MAAC,IAE5BH,KAAK,CAACK,OAAO,GAAGL,KAAK,CAACK,OAAO,CAAC;QAAEA;MAAQ,CAAC,CAAC,GAAGA,OAAO,EAEzD,CACF;IAAA,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -34,7 +34,10 @@ export const VNavigationDrawer = defineComponent({
34
34
  default: null
35
35
  },
36
36
  permanent: Boolean,
37
- rail: Boolean,
37
+ rail: {
38
+ type: Boolean,
39
+ default: null
40
+ },
38
41
  railWidth: {
39
42
  type: [Number, String],
40
43
  default: 56
@@ -66,11 +69,13 @@ export const VNavigationDrawer = defineComponent({
66
69
  ...makeThemeProps()
67
70
  },
68
71
  emits: {
69
- 'update:modelValue': val => true
72
+ 'update:modelValue': val => true,
73
+ 'update:rail': val => true
70
74
  },
71
75
  setup(props, _ref) {
72
76
  let {
73
77
  attrs,
78
+ emit,
74
79
  slots
75
80
  } = _ref;
76
81
  const {
@@ -110,6 +115,9 @@ export const VNavigationDrawer = defineComponent({
110
115
  });
111
116
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
112
117
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
118
+ if (props.expandOnHover && props.rail != null) {
119
+ watch(isHovering, val => emit('update:rail', !val));
120
+ }
113
121
  if (!props.disableResizeWatcher) {
114
122
  watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));
115
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VNavigationDrawer.mjs","names":["makeBorderProps","useBorder","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","useDisplay","useProxiedModel","useRouter","useRtl","useSsrBoot","useSticky","useTouch","computed","nextTick","onBeforeMount","ref","toRef","Transition","watch","convertToUnit","defineComponent","toPhysical","useRender","locations","VNavigationDrawer","name","props","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","scrim","image","temporary","touchless","width","location","validator","value","includes","sticky","tag","emits","val","setup","attrs","slots","isRtl","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","mobile","roundedClasses","router","isActive","v","ssrBootStyles","rootEl","isHovering","isTemporary","isSticky","currentRoute","isDragging","dragProgress","dragStyles","position","layoutSize","size","layoutItemStyles","layoutRect","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","isStuck","stickyStyles","scrimColor","scrimStyles","opacity","transition","undefined","left","right","top","bottom","VList","bgColor","hasImage","prepend","append"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useDisplay } from '@/composables/display'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRouter } from '@/composables/router'\nimport { useRtl } from '@/composables'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, toRef, Transition, watch } from 'vue'\nimport { convertToUnit, defineComponent, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst locations = ['start', 'end', 'left', 'right', 'bottom'] as const\n\nexport const VNavigationDrawer = defineComponent({\n name: 'VNavigationDrawer',\n\n props: {\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: Boolean,\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = ref(false)\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n\n const { layoutItemStyles, layoutRect, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutRect.value ? {\n left: convertToUnit(layoutRect.value.left),\n right: convertToUnit(layoutRect.value.right),\n top: convertToUnit(layoutRect.value.top),\n bottom: convertToUnit(layoutRect.value.bottom),\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ () => (isHovering.value = true) }\n onMouseleave={ () => (isHovering.value = false) }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n ]}\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => isActive.value = false }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VNavigationDrawer.mjs","names":["makeBorderProps","useBorder","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","useDisplay","useProxiedModel","useRouter","useRtl","useSsrBoot","useSticky","useTouch","computed","nextTick","onBeforeMount","ref","toRef","Transition","watch","convertToUnit","defineComponent","toPhysical","useRender","locations","VNavigationDrawer","name","props","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","scrim","image","temporary","touchless","width","location","validator","value","includes","sticky","tag","emits","val","setup","attrs","emit","slots","isRtl","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","mobile","roundedClasses","router","isActive","v","ssrBootStyles","rootEl","isHovering","isTemporary","isSticky","currentRoute","isDragging","dragProgress","dragStyles","position","layoutSize","size","layoutItemStyles","layoutRect","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","isStuck","stickyStyles","scrimColor","scrimStyles","opacity","transition","undefined","left","right","top","bottom","VList","bgColor","hasImage","prepend","append"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useDisplay } from '@/composables/display'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRouter } from '@/composables/router'\nimport { useRtl } from '@/composables'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, toRef, Transition, watch } from 'vue'\nimport { convertToUnit, defineComponent, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst locations = ['start', 'end', 'left', 'right', 'bottom'] as const\n\nexport const VNavigationDrawer = defineComponent({\n name: 'VNavigationDrawer',\n\n props: {\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = ref(false)\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n if (props.expandOnHover && props.rail != null) {\n watch(isHovering, val => emit('update:rail', !val))\n }\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n\n const { layoutItemStyles, layoutRect, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutRect.value ? {\n left: convertToUnit(layoutRect.value.left),\n right: convertToUnit(layoutRect.value.right),\n top: convertToUnit(layoutRect.value.top),\n bottom: convertToUnit(layoutRect.value.bottom),\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ () => (isHovering.value = true) }\n onMouseleave={ () => (isHovering.value = false) }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n ]}\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => isActive.value = false }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,eAAe;AAAA,SACfC,kBAAkB;AAAA,SAClBC,UAAU;AAAA,SACVC,eAAe;AAAA,SACfC,SAAS;AAAA,SACTC,MAAM;AAAA,SACNC,UAAU;AAAA,SACVC,SAAS;AAAA,SACTC,QAAQ,uBAEjB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,aAAa,EAAEC,GAAG,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC7EC,aAAa,EAAEC,eAAe,EAAEC,UAAU,EAAEC,SAAS,gCAE9D;AAGA,MAAMC,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAU;AAEtE,OAAO,MAAMC,iBAAiB,GAAGJ,eAAe,CAAC;EAC/CK,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAAM;IACbC,oBAAoB,EAAEC,OAAO;IAC7BC,mBAAmB,EAAED,OAAO;IAC5BE,aAAa,EAAEF,OAAO;IACtBG,QAAQ,EAAEH,OAAO;IACjBI,UAAU,EAAE;MACVC,IAAI,EAAEL,OAAmC;MACzCM,OAAO,EAAE;IACX,CAAC;IACDC,SAAS,EAAEP,OAAO;IAClBQ,IAAI,EAAE;MACJH,IAAI,EAAEL,OAAmC;MACzCM,OAAO,EAAE;IACX,CAAC;IACDG,SAAS,EAAE;MACTJ,IAAI,EAAE,CAACK,MAAM,EAAEZ,MAAM,CAAC;MACtBQ,OAAO,EAAE;IACX,CAAC;IACDK,KAAK,EAAE;MACLN,IAAI,EAAE,CAACP,MAAM,EAAEE,OAAO,CAAC;MACvBM,OAAO,EAAE;IACX,CAAC;IACDM,KAAK,EAAEd,MAAM;IACbe,SAAS,EAAEb,OAAO;IAClBc,SAAS,EAAEd,OAAO;IAClBe,KAAK,EAAE;MACLV,IAAI,EAAE,CAACK,MAAM,EAAEZ,MAAM,CAAC;MACtBQ,OAAO,EAAE;IACX,CAAC;IACDU,QAAQ,EAAE;MACRX,IAAI,EAAEP,MAA4C;MAClDQ,OAAO,EAAE,OAAO;MAChBW,SAAS,EAAGC,KAAU,IAAKzB,SAAS,CAAC0B,QAAQ,CAACD,KAAK;IACrD,CAAC;IACDE,MAAM,EAAEpB,OAAO;IAEf,GAAGtC,eAAe,EAAE;IACpB,GAAGE,kBAAkB,EAAE;IACvB,GAAGE,mBAAmB,EAAE;IACxB,GAAGE,gBAAgB,EAAE;IACrB,GAAGE,YAAY,CAAC;MAAEmD,GAAG,EAAE;IAAM,CAAC,CAAC;IAC/B,GAAGlD,cAAc;EACnB,CAAC;EAEDmD,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAY,IAAK,IAAI;IAC3C,aAAa,EAAGA,GAAY,IAAK;EACnC,CAAC;EAEDC,KAAK,CAAE5B,KAAK,QAA0B;IAAA,IAAxB;MAAE6B,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC;IAClC,MAAM;MAAEC;IAAM,CAAC,GAAGlD,MAAM,EAAE;IAC1B,MAAM;MAAEmD;IAAa,CAAC,GAAGzD,YAAY,CAACwB,KAAK,CAAC;IAC5C,MAAM;MAAEkC;IAAc,CAAC,GAAGnE,SAAS,CAACiC,KAAK,CAAC;IAC1C,MAAM;MAAEmC,sBAAsB;MAAEC;IAAsB,CAAC,GAAG1D,kBAAkB,CAACY,KAAK,CAACU,KAAK,EAAE,OAAO,CAAC,CAAC;IACnG,MAAM;MAAEqC;IAAiB,CAAC,GAAGpE,YAAY,CAAC+B,KAAK,CAAC;IAChD,MAAM;MAAEsC;IAAO,CAAC,GAAG3D,UAAU,EAAE;IAC/B,MAAM;MAAE4D;IAAe,CAAC,GAAGlE,UAAU,CAAC2B,KAAK,CAAC;IAC5C,MAAMwC,MAAM,GAAG3D,SAAS,EAAE;IAC1B,MAAM4D,QAAQ,GAAG7D,eAAe,CAACoB,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE0C,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC;IACrE,MAAM;MAAEC;IAAc,CAAC,GAAG5D,UAAU,EAAE;IAEtC,MAAM6D,MAAM,GAAGvD,GAAG,EAAe;IACjC,MAAMwD,UAAU,GAAGxD,GAAG,CAAC,KAAK,CAAC;IAE7B,MAAM8B,KAAK,GAAGjC,QAAQ,CAAC,MAAM;MAC3B,OAAQc,KAAK,CAACY,IAAI,IAAIZ,KAAK,CAACM,aAAa,IAAIuC,UAAU,CAACvB,KAAK,GACzDR,MAAM,CAACd,KAAK,CAACmB,KAAK,CAAC,GACnBL,MAAM,CAACd,KAAK,CAACY,IAAI,GAAGZ,KAAK,CAACa,SAAS,GAAGb,KAAK,CAACmB,KAAK,CAAC;IACxD,CAAC,CAAC;IACF,MAAMC,QAAQ,GAAGlC,QAAQ,CAAC,MAAM;MAC9B,OAAOS,UAAU,CAACK,KAAK,CAACoB,QAAQ,EAAEY,KAAK,CAACV,KAAK,CAAC;IAChD,CAAC,CAAC;IACF,MAAMwB,WAAW,GAAG5D,QAAQ,CAAC,MAAM,CAACc,KAAK,CAACW,SAAS,KAAK2B,MAAM,CAAChB,KAAK,IAAItB,KAAK,CAACiB,SAAS,CAAC,CAAC;IACzF,MAAM8B,QAAQ,GAAG7D,QAAQ,CAAC,MACxBc,KAAK,CAACwB,MAAM,IACZ,CAACsB,WAAW,CAACxB,KAAK,IAClBF,QAAQ,CAACE,KAAK,KAAK,QAAQ,CAC5B;IAED,IAAItB,KAAK,CAACM,aAAa,IAAIN,KAAK,CAACY,IAAI,IAAI,IAAI,EAAE;MAC7CpB,KAAK,CAACqD,UAAU,EAAElB,GAAG,IAAIG,IAAI,CAAC,aAAa,EAAE,CAACH,GAAG,CAAC,CAAC;IACrD;IAEA,IAAI,CAAC3B,KAAK,CAACG,oBAAoB,EAAE;MAC/BX,KAAK,CAACsD,WAAW,EAAEnB,GAAG,IAAI,CAAC3B,KAAK,CAACW,SAAS,IAAKxB,QAAQ,CAAC,MAAMsD,QAAQ,CAACnB,KAAK,GAAG,CAACK,GAAG,CAAE,CAAC;IACxF;IAEA,IAAI,CAAC3B,KAAK,CAACK,mBAAmB,IAAImC,MAAM,EAAE;MACxChD,KAAK,CAACgD,MAAM,CAACQ,YAAY,EAAE,MAAMF,WAAW,CAACxB,KAAK,KAAKmB,QAAQ,CAACnB,KAAK,GAAG,KAAK,CAAC,CAAC;IACjF;IAEA9B,KAAK,CAAC,MAAMQ,KAAK,CAACW,SAAS,EAAEgB,GAAG,IAAI;MAClC,IAAIA,GAAG,EAAEc,QAAQ,CAACnB,KAAK,GAAG,IAAI;IAChC,CAAC,CAAC;IAEFlC,aAAa,CAAC,MAAM;MAClB,IAAIY,KAAK,CAACQ,UAAU,IAAI,IAAI,IAAIsC,WAAW,CAACxB,KAAK,EAAE;MAEnDmB,QAAQ,CAACnB,KAAK,GAAGtB,KAAK,CAACW,SAAS,IAAI,CAAC2B,MAAM,CAAChB,KAAK;IACnD,CAAC,CAAC;IAEF,MAAM;MAAE2B,UAAU;MAAEC,YAAY;MAAEC;IAAW,CAAC,GAAGlE,QAAQ,CAAC;MACxDwD,QAAQ;MACRK,WAAW;MACX3B,KAAK;MACLD,SAAS,EAAE5B,KAAK,CAACU,KAAK,EAAE,WAAW,CAAC;MACpCoD,QAAQ,EAAEhC;IACZ,CAAC,CAAC;IAEF,MAAMiC,UAAU,GAAGnE,QAAQ,CAAC,MAAM;MAChC,MAAMoE,IAAI,GAAGR,WAAW,CAACxB,KAAK,GAAG,CAAC,GAC9BtB,KAAK,CAACY,IAAI,IAAIZ,KAAK,CAACM,aAAa,GAAGQ,MAAM,CAACd,KAAK,CAACa,SAAS,CAAC,GAC3DM,KAAK,CAACG,KAAK;MAEf,OAAO2B,UAAU,CAAC3B,KAAK,GAAGgC,IAAI,GAAGJ,YAAY,CAAC5B,KAAK,GAAGgC,IAAI;IAC5D,CAAC,CAAC;IAEF,MAAM;MAAEC,gBAAgB;MAAEC,UAAU;MAAEC;IAAsB,CAAC,GAAGtF,aAAa,CAAC;MAC5EuF,EAAE,EAAE1D,KAAK,CAACD,IAAI;MACd4D,KAAK,EAAEzE,QAAQ,CAAC,MAAM0E,QAAQ,CAAC5D,KAAK,CAAC2D,KAAK,EAAE,EAAE,CAAC,CAAC;MAChDP,QAAQ,EAAEhC,QAAQ;MAClBiC,UAAU;MACVQ,WAAW,EAAE1C,KAAK;MAClB2C,MAAM,EAAE5E,QAAQ,CAAC,MAAMuD,QAAQ,CAACnB,KAAK,IAAI2B,UAAU,CAAC3B,KAAK,CAAC;MAC1DyC,kBAAkB,EAAE7E,QAAQ,CAAC,MAAM+D,UAAU,CAAC3B,KAAK,CAAC;MACpD0C,QAAQ,EAAE9E,QAAQ,CAAC;MACjB;MACAc,KAAK,CAACgE,QAAQ,IAAKjB,QAAQ,CAACzB,KAAK,IAAI,OAAO2C,OAAO,CAAC3C,KAAK,KAAK,QAAS;IAE3E,CAAC,CAAC;IAEF,MAAM;MAAE2C,OAAO;MAAEC;IAAa,CAAC,GAAGlF,SAAS,CAAC;MAAE4D,MAAM;MAAEG,QAAQ;MAAEQ;IAAiB,CAAC,CAAC;IAEnF,MAAMY,UAAU,GAAGzF,kBAAkB,CAACQ,QAAQ,CAAC,MAAM;MACnD,OAAO,OAAOc,KAAK,CAACe,KAAK,KAAK,QAAQ,GAAGf,KAAK,CAACe,KAAK,GAAG,IAAI;IAC7D,CAAC,CAAC,CAAC;IACH,MAAMqD,WAAW,GAAGlF,QAAQ,CAAC,OAAO;MAClC,IAAG+D,UAAU,CAAC3B,KAAK,GAAG;QACpB+C,OAAO,EAAEnB,YAAY,CAAC5B,KAAK,GAAG,GAAG;QACjCgD,UAAU,EAAE;MACd,CAAC,GAAGC,SAAS;MACb,IAAGf,UAAU,CAAClC,KAAK,GAAG;QACpBkD,IAAI,EAAE/E,aAAa,CAAC+D,UAAU,CAAClC,KAAK,CAACkD,IAAI,CAAC;QAC1CC,KAAK,EAAEhF,aAAa,CAAC+D,UAAU,CAAClC,KAAK,CAACmD,KAAK,CAAC;QAC5CC,GAAG,EAAEjF,aAAa,CAAC+D,UAAU,CAAClC,KAAK,CAACoD,GAAG,CAAC;QACxCC,MAAM,EAAElF,aAAa,CAAC+D,UAAU,CAAClC,KAAK,CAACqD,MAAM;MAC/C,CAAC,GAAGJ,SAAS;MACb,GAAGd,qBAAqB,CAACnC;IAC3B,CAAC,CAAC,CAAC;IAEH7C,eAAe,CAAC;MACdmG,KAAK,EAAE;QACLC,OAAO,EAAE;MACX;IACF,CAAC,CAAC;IAEFjF,SAAS,CAAC,MAAM;MAAA;MACd,MAAMkF,QAAQ,GAAI/C,KAAK,CAACf,KAAK,IAAIhB,KAAK,CAACgB,KAAM;MAE7C;QAAA,OAGY4B,MAAM;QAAA,gBACG,MAAOC,UAAU,CAACvB,KAAK,GAAG,IAAK;QAAA,gBAC/B,MAAOuB,UAAU,CAACvB,KAAK,GAAG,KAAM;QAAA,SACxC,CACL,qBAAqB,EACpB,wBAAuBF,QAAQ,CAACE,KAAM,EAAC,EACxC;UACE,sCAAsC,EAAEtB,KAAK,CAACM,aAAa;UAC3D,+BAA+B,EAAEN,KAAK,CAACO,QAAQ;UAC/C,kCAAkC,EAAEsC,UAAU,CAACvB,KAAK;UACpD,2BAA2B,EAAEtB,KAAK,CAACY,IAAI;UACvC,gCAAgC,EAAEkC,WAAW,CAACxB,KAAK;UACnD,6BAA6B,EAAEmB,QAAQ,CAACnB,KAAK;UAC7C,6BAA6B,EAAEyB,QAAQ,CAACzB;QAC1C,CAAC,EACDW,YAAY,CAACX,KAAK,EAClBa,sBAAsB,CAACb,KAAK,EAC5BY,aAAa,CAACZ,KAAK,EACnBe,gBAAgB,CAACf,KAAK,EACtBiB,cAAc,CAACjB,KAAK,CACrB;QAAA,SACM,CACLc,qBAAqB,CAACd,KAAK,EAC3BiC,gBAAgB,CAACjC,KAAK,EACtB6B,UAAU,CAAC7B,KAAK,EAChBqB,aAAa,CAACrB,KAAK,EACnB4C,YAAY,CAAC5C,KAAK;MACnB,GACIO,KAAK;QAAA,gBAERiD,QAAQ;UAAA,OACC,OAAO;UAAA,SAAO;QAA0B,IAC7C/C,KAAK,CAACf,KAAK,mBACTe,KAAK,CAACf,KAAK,qBAAX,kBAAAe,KAAK,EAAS;UAAEf,KAAK,EAAEhB,KAAK,CAACgB;QAAM,CAAC,CAAC;UAAA,OACzBhB,KAAK,CAACgB,KAAK;UAAA,OAAO;QAAE,QAAI,EAG3C,EAECe,KAAK,CAACgD,OAAO;UAAA,SACF;QAA8B,sBACrChD,KAAK,CAACgD,OAAO,qBAAb,oBAAAhD,KAAK,CAAY,EAEtB;UAAA,SAEU;QAA8B,sBACrCA,KAAK,CAACrB,OAAO,qBAAb,oBAAAqB,KAAK,CAAY,IAGnBA,KAAK,CAACiD,MAAM;UAAA,SACD;QAA6B,qBACpCjD,KAAK,CAACiD,MAAM,qBAAZ,mBAAAjD,KAAK,CAAW,EAErB;MAAA;QAAA,QAGc;MAAiB;QAAA,gBAC9Be,WAAW,CAACxB,KAAK,KAAK2B,UAAU,CAAC3B,KAAK,IAAImB,QAAQ,CAACnB,KAAK,CAAC,IAAI,CAAC,CAACtB,KAAK,CAACe,KAAK;UAAA,SAEjE,CAAC,4BAA4B,EAAEoD,UAAU,CAAChC,sBAAsB,CAACb,KAAK,CAAC;UAAA,SACvE,CAAC8C,WAAW,CAAC9C,KAAK,EAAE6C,UAAU,CAAC/B,qBAAqB,CAACd,KAAK,CAAC;UAAA,WACxD,MAAMmB,QAAQ,CAACnB,KAAK,GAAG;QAAK,QAEzC;MAAA;IAIT,CAAC,CAAC;IAEF,OAAO;MACL2C;IACF,CAAC;EACH;AACF,CAAC,CAAC"}