@vuetify/nightly 3.7.5-master.2024-12-11 → 3.7.5-master.2024-12-15

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 (129) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +3306 -3010
  3. package/dist/json/importMap-labs.json +22 -14
  4. package/dist/json/importMap.json +134 -134
  5. package/dist/json/tags.json +84 -0
  6. package/dist/json/web-types.json +6104 -5163
  7. package/dist/vuetify-labs.css +3485 -3412
  8. package/dist/vuetify-labs.d.ts +1314 -1
  9. package/dist/vuetify-labs.esm.js +332 -8
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +332 -8
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +1263 -1263
  14. package/dist/vuetify.d.ts +47 -45
  15. package/dist/vuetify.esm.js +10 -4
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +10 -4
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +5 -5
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/entry-bundler.mjs +1 -1
  23. package/lib/framework.mjs +1 -1
  24. package/lib/iconsets/mdi.mjs +2 -1
  25. package/lib/iconsets/mdi.mjs.map +1 -1
  26. package/lib/index.d.mts +47 -45
  27. package/lib/labs/VFileUpload/VFileUpload.css +74 -0
  28. package/lib/labs/VFileUpload/VFileUpload.mjs +241 -0
  29. package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -0
  30. package/lib/labs/VFileUpload/VFileUpload.sass +75 -0
  31. package/lib/labs/VFileUpload/VFileUploadItem.mjs +95 -0
  32. package/lib/labs/VFileUpload/VFileUploadItem.mjs.map +1 -0
  33. package/lib/labs/VFileUpload/_variables.scss +12 -0
  34. package/lib/labs/VFileUpload/index.d.mts +1365 -0
  35. package/lib/labs/VFileUpload/index.mjs +3 -0
  36. package/lib/labs/VFileUpload/index.mjs.map +1 -0
  37. package/lib/labs/VNumberInput/VNumberInput.mjs +7 -4
  38. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  39. package/lib/labs/components.d.mts +1348 -37
  40. package/lib/labs/components.mjs +1 -0
  41. package/lib/labs/components.mjs.map +1 -1
  42. package/lib/locale/af.mjs +5 -0
  43. package/lib/locale/af.mjs.map +1 -1
  44. package/lib/locale/ar.mjs +5 -0
  45. package/lib/locale/ar.mjs.map +1 -1
  46. package/lib/locale/az.mjs +5 -0
  47. package/lib/locale/az.mjs.map +1 -1
  48. package/lib/locale/bg.mjs +5 -0
  49. package/lib/locale/bg.mjs.map +1 -1
  50. package/lib/locale/ca.mjs +5 -0
  51. package/lib/locale/ca.mjs.map +1 -1
  52. package/lib/locale/ckb.mjs +5 -0
  53. package/lib/locale/ckb.mjs.map +1 -1
  54. package/lib/locale/cs.mjs +5 -0
  55. package/lib/locale/cs.mjs.map +1 -1
  56. package/lib/locale/da.mjs +5 -0
  57. package/lib/locale/da.mjs.map +1 -1
  58. package/lib/locale/de.mjs +5 -0
  59. package/lib/locale/de.mjs.map +1 -1
  60. package/lib/locale/el.mjs +5 -0
  61. package/lib/locale/el.mjs.map +1 -1
  62. package/lib/locale/en.mjs +5 -0
  63. package/lib/locale/en.mjs.map +1 -1
  64. package/lib/locale/es.mjs +5 -0
  65. package/lib/locale/es.mjs.map +1 -1
  66. package/lib/locale/et.mjs +5 -0
  67. package/lib/locale/et.mjs.map +1 -1
  68. package/lib/locale/fa.mjs +5 -0
  69. package/lib/locale/fa.mjs.map +1 -1
  70. package/lib/locale/fi.mjs +5 -0
  71. package/lib/locale/fi.mjs.map +1 -1
  72. package/lib/locale/fr.mjs +5 -0
  73. package/lib/locale/fr.mjs.map +1 -1
  74. package/lib/locale/he.mjs +5 -0
  75. package/lib/locale/he.mjs.map +1 -1
  76. package/lib/locale/hr.mjs +5 -0
  77. package/lib/locale/hr.mjs.map +1 -1
  78. package/lib/locale/hu.mjs +5 -0
  79. package/lib/locale/hu.mjs.map +1 -1
  80. package/lib/locale/id.mjs +5 -0
  81. package/lib/locale/id.mjs.map +1 -1
  82. package/lib/locale/index.d.mts +215 -0
  83. package/lib/locale/it.mjs +5 -0
  84. package/lib/locale/it.mjs.map +1 -1
  85. package/lib/locale/ja.mjs +5 -0
  86. package/lib/locale/ja.mjs.map +1 -1
  87. package/lib/locale/km.mjs +5 -0
  88. package/lib/locale/km.mjs.map +1 -1
  89. package/lib/locale/ko.mjs +5 -0
  90. package/lib/locale/ko.mjs.map +1 -1
  91. package/lib/locale/lt.mjs +5 -0
  92. package/lib/locale/lt.mjs.map +1 -1
  93. package/lib/locale/lv.mjs +5 -0
  94. package/lib/locale/lv.mjs.map +1 -1
  95. package/lib/locale/nl.mjs +5 -0
  96. package/lib/locale/nl.mjs.map +1 -1
  97. package/lib/locale/no.mjs +5 -0
  98. package/lib/locale/no.mjs.map +1 -1
  99. package/lib/locale/pl.mjs +5 -0
  100. package/lib/locale/pl.mjs.map +1 -1
  101. package/lib/locale/pt.mjs +5 -0
  102. package/lib/locale/pt.mjs.map +1 -1
  103. package/lib/locale/ro.mjs +5 -0
  104. package/lib/locale/ro.mjs.map +1 -1
  105. package/lib/locale/ru.mjs +5 -0
  106. package/lib/locale/ru.mjs.map +1 -1
  107. package/lib/locale/sk.mjs +5 -0
  108. package/lib/locale/sk.mjs.map +1 -1
  109. package/lib/locale/sl.mjs +5 -0
  110. package/lib/locale/sl.mjs.map +1 -1
  111. package/lib/locale/sr-Cyrl.mjs +5 -0
  112. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  113. package/lib/locale/sr-Latn.mjs +5 -0
  114. package/lib/locale/sr-Latn.mjs.map +1 -1
  115. package/lib/locale/sv.mjs +5 -0
  116. package/lib/locale/sv.mjs.map +1 -1
  117. package/lib/locale/th.mjs +5 -0
  118. package/lib/locale/th.mjs.map +1 -1
  119. package/lib/locale/tr.mjs +5 -0
  120. package/lib/locale/tr.mjs.map +1 -1
  121. package/lib/locale/uk.mjs +5 -0
  122. package/lib/locale/uk.mjs.map +1 -1
  123. package/lib/locale/vi.mjs +5 -0
  124. package/lib/locale/vi.mjs.map +1 -1
  125. package/lib/locale/zh-Hans.mjs +5 -0
  126. package/lib/locale/zh-Hans.mjs.map +1 -1
  127. package/lib/locale/zh-Hant.mjs +5 -0
  128. package/lib/locale/zh-Hant.mjs.map +1 -1
  129. package/package.json +1 -1
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.5-master.2024-12-11";
19
+ export const version = "3.7.5-master.2024-12-15";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.5-master.2024-12-11";
100
+ export const version = "3.7.5-master.2024-12-15";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
@@ -45,7 +45,8 @@ const aliases = {
45
45
  calendar: 'mdi-calendar',
46
46
  treeviewCollapse: 'mdi-menu-down',
47
47
  treeviewExpand: 'mdi-menu-right',
48
- eyeDropper: 'mdi-eyedropper'
48
+ eyeDropper: 'mdi-eyedropper',
49
+ upload: 'mdi-cloud-upload'
49
50
  };
50
51
  const mdi = {
51
52
  // Not using mergeProps here, functional components merge props by default (?)
@@ -1 +1 @@
1
- {"version":3,"file":"mdi.mjs","names":["VClassIcon","h","aliases","collapse","complete","cancel","close","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","first","last","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","mdi","component","props","class"],"sources":["../../src/iconsets/mdi.ts"],"sourcesContent":["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,oCAEnB;AACA,SAASC,CAAC,QAAQ,KAAK;;AAEvB;;AAGA,MAAMC,OAAoB,GAAG;EAC3BC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,WAAW;EACrBC,MAAM,EAAE,kBAAkB;EAC1BC,KAAK,EAAE,WAAW;EAClBC,MAAM,EAAE,kBAAkB;EAAE;EAC5BC,KAAK,EAAE,kBAAkB;EACzBC,OAAO,EAAE,kBAAkB;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,OAAO,EAAE,kBAAkB;EAC3BC,KAAK,EAAE,kBAAkB;EACzBC,IAAI,EAAE,kBAAkB;EACxBC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,WAAW,EAAE,4BAA4B;EACzCC,qBAAqB,EAAE,eAAe;EACtCC,SAAS,EAAE,YAAY;EAAE;EACzBC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE,kBAAkB;EAC1BC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE,eAAe;EACzBC,QAAQ,EAAE,eAAe;EACzBC,OAAO,EAAE,qBAAqB;EAC9BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,kBAAkB;EAC/BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAE,oBAAoB;EAChCC,OAAO,EAAE,YAAY;EACrBC,KAAK,EAAE,gBAAgB;EACvBC,IAAI,EAAE,eAAe;EACrBC,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,WAAW;EAClBC,QAAQ,EAAE,cAAc;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,UAAU,EAAE;AACd,CAAC;AAED,MAAMC,GAAY,GAAG;EACnB;EACAC,SAAS,EAAGC,KAAU,IAAK3C,CAAC,CAACD,UAAU,EAAE;IAAE,GAAG4C,KAAK;IAAEC,KAAK,EAAE;EAAM,CAAC;AACrE,CAAC;AAED,SAAS3C,OAAO,EAAEwC,GAAG","ignoreList":[]}
1
+ {"version":3,"file":"mdi.mjs","names":["VClassIcon","h","aliases","collapse","complete","cancel","close","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","first","last","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","upload","mdi","component","props","class"],"sources":["../../src/iconsets/mdi.ts"],"sourcesContent":["// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n upload: 'mdi-cloud-upload',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n"],"mappings":"AAAA;AAAA,SACSA,UAAU,oCAEnB;AACA,SAASC,CAAC,QAAQ,KAAK;;AAEvB;;AAGA,MAAMC,OAAoB,GAAG;EAC3BC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,WAAW;EACrBC,MAAM,EAAE,kBAAkB;EAC1BC,KAAK,EAAE,WAAW;EAClBC,MAAM,EAAE,kBAAkB;EAAE;EAC5BC,KAAK,EAAE,kBAAkB;EACzBC,OAAO,EAAE,kBAAkB;EAC3BC,IAAI,EAAE,iBAAiB;EACvBC,OAAO,EAAE,kBAAkB;EAC3BC,KAAK,EAAE,kBAAkB;EACzBC,IAAI,EAAE,kBAAkB;EACxBC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE,qBAAqB;EACjCC,WAAW,EAAE,4BAA4B;EACzCC,qBAAqB,EAAE,eAAe;EACtCC,SAAS,EAAE,YAAY;EAAE;EACzBC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE,kBAAkB;EAC1BC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE,eAAe;EACzBC,QAAQ,EAAE,eAAe;EACzBC,OAAO,EAAE,qBAAqB;EAC9BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,kBAAkB;EAC/BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAE,oBAAoB;EAChCC,OAAO,EAAE,YAAY;EACrBC,KAAK,EAAE,gBAAgB;EACvBC,IAAI,EAAE,eAAe;EACrBC,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,WAAW;EAClBC,QAAQ,EAAE,cAAc;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,cAAc,EAAE,gBAAgB;EAChCC,UAAU,EAAE,gBAAgB;EAC5BC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,GAAY,GAAG;EACnB;EACAC,SAAS,EAAGC,KAAU,IAAK5C,CAAC,CAACD,UAAU,EAAE;IAAE,GAAG6C,KAAK;IAAEC,KAAK,EAAE;EAAM,CAAC;AACrE,CAAC;AAED,SAAS5C,OAAO,EAAEyC,GAAG","ignoreList":[]}
package/lib/index.d.mts CHANGED
@@ -487,38 +487,36 @@ declare module 'vue' {
487
487
  }
488
488
  export interface GlobalComponents {
489
489
  VApp: typeof import('vuetify/components')['VApp']
490
- VAvatar: typeof import('vuetify/components')['VAvatar']
491
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
492
490
  VAppBar: typeof import('vuetify/components')['VAppBar']
493
491
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
494
492
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
493
+ VAlert: typeof import('vuetify/components')['VAlert']
494
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
495
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
496
+ VAvatar: typeof import('vuetify/components')['VAvatar']
497
+ VBadge: typeof import('vuetify/components')['VBadge']
495
498
  VBanner: typeof import('vuetify/components')['VBanner']
496
499
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
497
500
  VBannerText: typeof import('vuetify/components')['VBannerText']
498
- VBadge: typeof import('vuetify/components')['VBadge']
499
- VAlert: typeof import('vuetify/components')['VAlert']
500
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
501
501
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
502
502
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
503
503
  VBtn: typeof import('vuetify/components')['VBtn']
504
504
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
505
505
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
506
506
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
507
- VCode: typeof import('vuetify/components')['VCode']
507
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
508
508
  VCard: typeof import('vuetify/components')['VCard']
509
509
  VCardActions: typeof import('vuetify/components')['VCardActions']
510
510
  VCardItem: typeof import('vuetify/components')['VCardItem']
511
511
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
512
512
  VCardText: typeof import('vuetify/components')['VCardText']
513
513
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
514
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
515
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
516
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
517
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
514
+ VChip: typeof import('vuetify/components')['VChip']
515
+ VCode: typeof import('vuetify/components')['VCode']
518
516
  VCarousel: typeof import('vuetify/components')['VCarousel']
519
517
  VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
520
- VChip: typeof import('vuetify/components')['VChip']
521
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
518
+ VCombobox: typeof import('vuetify/components')['VCombobox']
519
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
522
520
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
523
521
  VDataTable: typeof import('vuetify/components')['VDataTable']
524
522
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
@@ -527,38 +525,36 @@ declare module 'vue' {
527
525
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
528
526
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
529
527
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
530
- VCombobox: typeof import('vuetify/components')['VCombobox']
531
- VCounter: typeof import('vuetify/components')['VCounter']
532
- VDivider: typeof import('vuetify/components')['VDivider']
533
- VFab: typeof import('vuetify/components')['VFab']
534
528
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
535
529
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
536
530
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
537
531
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
538
532
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
539
533
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
534
+ VCounter: typeof import('vuetify/components')['VCounter']
535
+ VDialog: typeof import('vuetify/components')['VDialog']
536
+ VDivider: typeof import('vuetify/components')['VDivider']
540
537
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
541
538
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
542
539
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
543
540
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
544
- VFileInput: typeof import('vuetify/components')['VFileInput']
541
+ VFab: typeof import('vuetify/components')['VFab']
545
542
  VField: typeof import('vuetify/components')['VField']
546
543
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
544
+ VFileInput: typeof import('vuetify/components')['VFileInput']
547
545
  VFooter: typeof import('vuetify/components')['VFooter']
548
- VDialog: typeof import('vuetify/components')['VDialog']
549
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
550
546
  VIcon: typeof import('vuetify/components')['VIcon']
551
547
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
552
548
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
553
549
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
554
550
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
555
551
  VImg: typeof import('vuetify/components')['VImg']
552
+ VInput: typeof import('vuetify/components')['VInput']
556
553
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
557
- VKbd: typeof import('vuetify/components')['VKbd']
558
554
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
559
555
  VItem: typeof import('vuetify/components')['VItem']
556
+ VKbd: typeof import('vuetify/components')['VKbd']
560
557
  VLabel: typeof import('vuetify/components')['VLabel']
561
- VInput: typeof import('vuetify/components')['VInput']
562
558
  VList: typeof import('vuetify/components')['VList']
563
559
  VListGroup: typeof import('vuetify/components')['VListGroup']
564
560
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -569,65 +565,65 @@ declare module 'vue' {
569
565
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
570
566
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
571
567
  VMenu: typeof import('vuetify/components')['VMenu']
572
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
573
- VMain: typeof import('vuetify/components')['VMain']
574
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
575
568
  VMessages: typeof import('vuetify/components')['VMessages']
576
- VPagination: typeof import('vuetify/components')['VPagination']
577
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
569
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
570
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
571
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
572
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
578
573
  VOverlay: typeof import('vuetify/components')['VOverlay']
579
574
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
580
- VRating: typeof import('vuetify/components')['VRating']
575
+ VPagination: typeof import('vuetify/components')['VPagination']
576
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
581
577
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
578
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
579
+ VRating: typeof import('vuetify/components')['VRating']
582
580
  VSelect: typeof import('vuetify/components')['VSelect']
583
581
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
584
582
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
583
+ VSheet: typeof import('vuetify/components')['VSheet']
584
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
585
585
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
586
586
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
587
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
588
587
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
589
- VSheet: typeof import('vuetify/components')['VSheet']
590
588
  VStepper: typeof import('vuetify/components')['VStepper']
591
589
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
592
590
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
593
591
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
594
592
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
595
593
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
596
- VSlider: typeof import('vuetify/components')['VSlider']
594
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
595
+ VTable: typeof import('vuetify/components')['VTable']
597
596
  VTab: typeof import('vuetify/components')['VTab']
598
597
  VTabs: typeof import('vuetify/components')['VTabs']
599
598
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
600
599
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
601
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
602
- VSwitch: typeof import('vuetify/components')['VSwitch']
603
600
  VTextarea: typeof import('vuetify/components')['VTextarea']
604
- VTable: typeof import('vuetify/components')['VTable']
605
- VTimeline: typeof import('vuetify/components')['VTimeline']
606
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
607
601
  VTextField: typeof import('vuetify/components')['VTextField']
602
+ VSlider: typeof import('vuetify/components')['VSlider']
608
603
  VToolbar: typeof import('vuetify/components')['VToolbar']
609
604
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
610
605
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
606
+ VTimeline: typeof import('vuetify/components')['VTimeline']
607
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
608
+ VTooltip: typeof import('vuetify/components')['VTooltip']
611
609
  VWindow: typeof import('vuetify/components')['VWindow']
612
610
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
613
- VTooltip: typeof import('vuetify/components')['VTooltip']
611
+ VSwitch: typeof import('vuetify/components')['VSwitch']
614
612
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
615
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
616
613
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
614
+ VForm: typeof import('vuetify/components')['VForm']
617
615
  VContainer: typeof import('vuetify/components')['VContainer']
618
616
  VCol: typeof import('vuetify/components')['VCol']
619
617
  VRow: typeof import('vuetify/components')['VRow']
620
618
  VSpacer: typeof import('vuetify/components')['VSpacer']
621
- VForm: typeof import('vuetify/components')['VForm']
622
619
  VHover: typeof import('vuetify/components')['VHover']
623
- VLazy: typeof import('vuetify/components')['VLazy']
624
620
  VLayout: typeof import('vuetify/components')['VLayout']
625
621
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
622
+ VLazy: typeof import('vuetify/components')['VLazy']
626
623
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
627
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
624
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
628
625
  VParallax: typeof import('vuetify/components')['VParallax']
629
626
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
630
- VRadio: typeof import('vuetify/components')['VRadio']
631
627
  VResponsive: typeof import('vuetify/components')['VResponsive']
632
628
  VSparkline: typeof import('vuetify/components')['VSparkline']
633
629
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
@@ -650,24 +646,30 @@ declare module 'vue' {
650
646
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
651
647
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
652
648
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
649
+ VRadio: typeof import('vuetify/components')['VRadio']
650
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
651
+ VMain: typeof import('vuetify/components')['VMain']
652
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
653
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
654
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
653
655
  VPicker: typeof import('vuetify/labs/components')['VPicker']
654
656
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
655
- VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
656
657
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
657
658
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
658
659
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
659
660
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
660
661
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
661
662
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
662
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
663
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
664
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
663
+ VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
665
664
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
666
665
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
667
666
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
668
667
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
669
668
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
670
669
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
670
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
671
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
672
674
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
673
675
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
@@ -0,0 +1,74 @@
1
+ .v-file-upload {
2
+ padding: 64px 0;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ align-items: center;
6
+ position: relative;
7
+ }
8
+ .v-file-upload.v-sheet {
9
+ display: flex;
10
+ border-radius: 4px;
11
+ border-style: dashed;
12
+ border-width: 2px;
13
+ }
14
+ .v-file-upload.v-file-upload--density-compact {
15
+ padding: 32px 0;
16
+ flex-direction: row;
17
+ gap: 1rem;
18
+ }
19
+ .v-file-upload .v-overlay__scrim {
20
+ pointer-events: none;
21
+ }
22
+ .v-file-upload--disabled {
23
+ pointer-events: none;
24
+ opacity: var(--v-disabled-opacity);
25
+ }
26
+ .v-file-upload--dragging > * {
27
+ pointer-events: none;
28
+ }
29
+ .v-file-upload--clickable {
30
+ cursor: pointer;
31
+ }
32
+ .v-file-upload input[type=file] {
33
+ left: 0;
34
+ opacity: 0;
35
+ position: absolute;
36
+ cursor: pointer;
37
+ top: 0;
38
+ z-index: -1;
39
+ }
40
+
41
+ .v-file-upload-title {
42
+ font-size: 1.5rem;
43
+ font-weight: 600;
44
+ }
45
+
46
+ .v-file-upload-icon {
47
+ opacity: var(--v-medium-emphasis-opacity);
48
+ font-size: 3rem;
49
+ margin-bottom: 1rem;
50
+ }
51
+ .v-file-upload--density-comfortable .v-file-upload-icon {
52
+ font-size: 2.5rem;
53
+ margin-bottom: 0.5rem;
54
+ }
55
+ .v-file-upload--density-compact .v-file-upload-icon {
56
+ font-size: 2rem;
57
+ margin-bottom: 0rem;
58
+ }
59
+
60
+ .v-file-upload-divider {
61
+ align-items: center;
62
+ display: flex;
63
+ margin: 32px 0;
64
+ justify-content: center;
65
+ width: 100%;
66
+ }
67
+
68
+ .v-file-upload-items {
69
+ margin: 16px 0;
70
+ }
71
+
72
+ .v-file-upload-item:not(:first-child) {
73
+ margin-top: 8px;
74
+ }
@@ -0,0 +1,241 @@
1
+ import { resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
+ // Styles
3
+ import "./VFileUpload.css";
4
+
5
+ // Components
6
+ import { VFileUploadItem } from "./VFileUploadItem.mjs";
7
+ import { VBtn } from "../../components/VBtn/VBtn.mjs";
8
+ import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.mjs";
9
+ import { makeVDividerProps, VDivider } from "../../components/VDivider/VDivider.mjs";
10
+ import { VIcon } from "../../components/VIcon/VIcon.mjs";
11
+ import { VOverlay } from "../../components/VOverlay/VOverlay.mjs";
12
+ import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.mjs"; // Composables
13
+ import { makeDelayProps } from "../../composables/delay.mjs";
14
+ import { makeDensityProps, useDensity } from "../../composables/density.mjs";
15
+ import { IconValue } from "../../composables/icons.mjs";
16
+ import { useLocale } from "../../composables/locale.mjs";
17
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
18
+ import { onMounted, onUnmounted, ref, shallowRef } from 'vue';
19
+ import { filterInputAttrs, genericComponent, only, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
20
+ export const makeVFileUploadProps = propsFactory({
21
+ browseText: {
22
+ type: String,
23
+ default: '$vuetify.fileUpload.browse'
24
+ },
25
+ dividerText: {
26
+ type: String,
27
+ default: '$vuetify.fileUpload.divider'
28
+ },
29
+ title: {
30
+ type: String,
31
+ default: '$vuetify.fileUpload.title'
32
+ },
33
+ subtitle: String,
34
+ icon: {
35
+ type: IconValue,
36
+ default: '$upload'
37
+ },
38
+ modelValue: {
39
+ type: [Array, Object],
40
+ default: null,
41
+ validator: val => {
42
+ return wrapInArray(val).every(v => v != null && typeof v === 'object');
43
+ }
44
+ },
45
+ clearable: Boolean,
46
+ disabled: Boolean,
47
+ hideBrowse: Boolean,
48
+ multiple: Boolean,
49
+ scrim: {
50
+ type: [Boolean, String],
51
+ default: true
52
+ },
53
+ showSize: Boolean,
54
+ name: String,
55
+ ...makeDelayProps(),
56
+ ...makeDensityProps(),
57
+ ...only(makeVDividerProps({
58
+ length: 150
59
+ }), ['length', 'thickness', 'opacity']),
60
+ ...makeVSheetProps()
61
+ }, 'VFileUpload');
62
+ export const VFileUpload = genericComponent()({
63
+ name: 'VFileUpload',
64
+ inheritAttrs: false,
65
+ props: makeVFileUploadProps(),
66
+ emits: {
67
+ 'update:modelValue': files => true
68
+ },
69
+ setup(props, _ref) {
70
+ let {
71
+ attrs,
72
+ slots
73
+ } = _ref;
74
+ const {
75
+ t
76
+ } = useLocale();
77
+ const {
78
+ densityClasses
79
+ } = useDensity(props);
80
+ const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
81
+ const dragOver = shallowRef(false);
82
+ const vSheetRef = ref(null);
83
+ const inputRef = ref(null);
84
+ onMounted(() => {
85
+ vSheetRef.value?.$el.addEventListener('dragover', onDragOver);
86
+ vSheetRef.value?.$el.addEventListener('drop', onDrop);
87
+ });
88
+ onUnmounted(() => {
89
+ vSheetRef.value?.$el.removeEventListener('dragover', onDragOver);
90
+ vSheetRef.value?.$el.removeEventListener('drop', onDrop);
91
+ });
92
+ function onDragOver(e) {
93
+ e.preventDefault();
94
+ e.stopImmediatePropagation();
95
+ dragOver.value = true;
96
+ }
97
+ function onDragLeave(e) {
98
+ e.preventDefault();
99
+ dragOver.value = false;
100
+ }
101
+ function onDrop(e) {
102
+ e.preventDefault();
103
+ e.stopImmediatePropagation();
104
+ dragOver.value = false;
105
+ const files = Array.from(e.dataTransfer?.files ?? []);
106
+ if (!files.length) return;
107
+ if (!props.multiple) {
108
+ model.value = [files[0]];
109
+ return;
110
+ }
111
+ const array = model.value.slice();
112
+ for (const file of files) {
113
+ if (!array.some(f => f.name === file.name)) {
114
+ array.push(file);
115
+ }
116
+ }
117
+ model.value = array;
118
+ }
119
+ function onClick() {
120
+ inputRef.value?.click();
121
+ }
122
+ function onClickRemove(index) {
123
+ model.value = model.value.filter((_, i) => i !== index);
124
+ if (model.value.length > 0 || !inputRef.value) return;
125
+ inputRef.value.value = '';
126
+ }
127
+ useRender(() => {
128
+ const hasTitle = !!(slots.title || props.title);
129
+ const hasIcon = !!(slots.icon || props.icon);
130
+ const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'));
131
+ const cardProps = VSheet.filterProps(props);
132
+ const dividerProps = VDivider.filterProps(props);
133
+ const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
134
+ const inputNode = _createVNode("input", _mergeProps({
135
+ "ref": inputRef,
136
+ "type": "file",
137
+ "disabled": props.disabled,
138
+ "multiple": props.multiple,
139
+ "name": props.name,
140
+ "onChange": e => {
141
+ if (!e.target) return;
142
+ const target = e.target;
143
+ model.value = [...(target.files ?? [])];
144
+ }
145
+ }, inputAttrs), null);
146
+ return _createVNode(_Fragment, null, [_createVNode(VSheet, _mergeProps({
147
+ "ref": vSheetRef
148
+ }, cardProps, {
149
+ "class": ['v-file-upload', {
150
+ 'v-file-upload--clickable': !hasBrowse,
151
+ 'v-file-upload--disabled': props.disabled,
152
+ 'v-file-upload--dragging': dragOver.value
153
+ }, densityClasses.value],
154
+ "onDragleave": onDragLeave,
155
+ "onDragover": onDragOver,
156
+ "onDrop": onDrop,
157
+ "onClick": !hasBrowse ? onClick : undefined
158
+ }, rootAttrs), {
159
+ default: () => [hasIcon && _createVNode("div", {
160
+ "key": "icon",
161
+ "class": "v-file-upload-icon"
162
+ }, [!slots.icon ? _createVNode(VIcon, {
163
+ "key": "icon-icon",
164
+ "icon": props.icon
165
+ }, null) : _createVNode(VDefaultsProvider, {
166
+ "key": "icon-defaults",
167
+ "defaults": {
168
+ VIcon: {
169
+ icon: props.icon
170
+ }
171
+ }
172
+ }, {
173
+ default: () => [slots.icon()]
174
+ })]), hasTitle && _createVNode("div", {
175
+ "key": "title",
176
+ "class": "v-file-upload-title"
177
+ }, [slots.title?.() ?? t(props.title)]), props.density === 'default' && _createVNode(_Fragment, null, [_createVNode("div", {
178
+ "key": "upload-divider",
179
+ "class": "v-file-upload-divider"
180
+ }, [slots.divider?.() ?? _createVNode(VDivider, dividerProps, {
181
+ default: () => [t(props.dividerText)]
182
+ })]), hasBrowse && _createVNode(_Fragment, null, [!slots.browse ? _createVNode(VBtn, {
183
+ "readonly": props.disabled,
184
+ "size": "large",
185
+ "text": t(props.browseText),
186
+ "variant": "tonal",
187
+ "onClick": onClick
188
+ }, null) : _createVNode(VDefaultsProvider, {
189
+ "defaults": {
190
+ VBtn: {
191
+ readonly: props.disabled,
192
+ size: 'large',
193
+ text: t(props.browseText),
194
+ variant: 'tonal'
195
+ }
196
+ }
197
+ }, {
198
+ default: () => [slots.browse({
199
+ props: {
200
+ onClick
201
+ }
202
+ })]
203
+ })]), props.subtitle && _createVNode("div", {
204
+ "class": "v-file-upload-subtitle"
205
+ }, [props.subtitle])]), _createVNode(VOverlay, {
206
+ "model-value": dragOver.value,
207
+ "contained": true,
208
+ "scrim": props.scrim
209
+ }, null), slots.input?.({
210
+ inputNode
211
+ }) ?? inputNode]
212
+ }), model.value.length > 0 && _createVNode("div", {
213
+ "class": "v-file-upload-items"
214
+ }, [model.value.map((file, i) => {
215
+ const slotProps = {
216
+ file,
217
+ props: {
218
+ 'onClick:remove': () => onClickRemove(i)
219
+ }
220
+ };
221
+ return _createVNode(VDefaultsProvider, {
222
+ "key": i,
223
+ "defaults": {
224
+ VFileUploadItem: {
225
+ file,
226
+ clearable: props.clearable,
227
+ disabled: props.disabled,
228
+ showSize: props.showSize
229
+ }
230
+ }
231
+ }, {
232
+ default: () => [slots.item?.(slotProps) ?? _createVNode(VFileUploadItem, {
233
+ "key": i,
234
+ "onClick:remove": () => onClickRemove(i)
235
+ }, slots)]
236
+ });
237
+ })])]);
238
+ });
239
+ }
240
+ });
241
+ //# sourceMappingURL=VFileUpload.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VFileUpload.mjs","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","IconValue","useLocale","useProxiedModel","onMounted","onUnmounted","ref","shallowRef","filterInputAttrs","genericComponent","only","propsFactory","useRender","wrapInArray","makeVFileUploadProps","browseText","type","String","default","dividerText","title","subtitle","icon","modelValue","Array","Object","validator","val","every","v","clearable","Boolean","disabled","hideBrowse","multiple","scrim","showSize","name","length","VFileUpload","inheritAttrs","props","emits","files","setup","_ref","attrs","slots","t","densityClasses","model","isArray","dragOver","vSheetRef","inputRef","value","$el","addEventListener","onDragOver","onDrop","removeEventListener","e","preventDefault","stopImmediatePropagation","onDragLeave","from","dataTransfer","array","slice","file","some","f","push","onClick","click","onClickRemove","index","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","inputNode","_createVNode","_mergeProps","target","_Fragment","undefined","divider","readonly","size","text","variant","input","map","slotProps","onClick:remove","item"],"sources":["../../../src/labs/VFileUpload/VFileUpload.tsx"],"sourcesContent":["// Styles\nimport './VFileUpload.sass'\n\n// Components\nimport { VFileUploadItem } from './VFileUploadItem'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVDividerProps, VDivider } from '@/components/VDivider/VDivider'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { makeDelayProps } from '@/composables/delay'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, onUnmounted, ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, only, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\nexport type VFileUploadSlots = {\n browse: {\n props: { onClick: (e: MouseEvent) => void }\n }\n default: never\n icon: never\n input: {\n inputNode: VNode\n }\n item: {\n file: File\n props: { 'onClick:remove': () => void }\n }\n title: never\n divider: never\n}\n\nexport const makeVFileUploadProps = propsFactory({\n browseText: {\n type: String,\n default: '$vuetify.fileUpload.browse',\n },\n dividerText: {\n type: String,\n default: '$vuetify.fileUpload.divider',\n },\n title: {\n type: String,\n default: '$vuetify.fileUpload.title',\n },\n subtitle: String,\n icon: {\n type: IconValue,\n default: '$upload',\n },\n modelValue: {\n type: [Array, Object] as PropType<File[] | File>,\n default: null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n clearable: Boolean,\n disabled: Boolean,\n hideBrowse: Boolean,\n multiple: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n showSize: Boolean,\n name: String,\n\n ...makeDelayProps(),\n ...makeDensityProps(),\n ...only(makeVDividerProps({\n length: 150,\n }), ['length', 'thickness', 'opacity']),\n ...makeVSheetProps(),\n}, 'VFileUpload')\n\nexport const VFileUpload = genericComponent<VFileUploadSlots>()({\n name: 'VFileUpload',\n\n inheritAttrs: false,\n\n props: makeVFileUploadProps(),\n\n emits: {\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { t } = useLocale()\n const { densityClasses } = useDensity(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : val[0],\n )\n\n const dragOver = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n\n onMounted(() => {\n vSheetRef.value?.$el.addEventListener('dragover', onDragOver)\n vSheetRef.value?.$el.addEventListener('drop', onDrop)\n })\n\n onUnmounted(() => {\n vSheetRef.value?.$el.removeEventListener('dragover', onDragOver)\n vSheetRef.value?.$el.removeEventListener('drop', onDrop)\n })\n\n function onDragOver (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n dragOver.value = true\n }\n\n function onDragLeave (e: DragEvent) {\n e.preventDefault()\n dragOver.value = false\n }\n\n function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n dragOver.value = false\n\n const files = Array.from(e.dataTransfer?.files ?? [])\n\n if (!files.length) return\n\n if (!props.multiple) {\n model.value = [files[0]]\n\n return\n }\n\n const array = model.value.slice()\n\n for (const file of files) {\n if (!array.some(f => f.name === file.name)) {\n array.push(file)\n }\n }\n\n model.value = array\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n model.value = model.value.filter((_, i) => i !== index)\n\n if (model.value.length > 0 || !inputRef.value) return\n\n inputRef.value.value = ''\n }\n\n useRender(() => {\n const hasTitle = !!(slots.title || props.title)\n const hasIcon = !!(slots.icon || props.icon)\n const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'))\n const cardProps = VSheet.filterProps(props)\n const dividerProps = VDivider.filterProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n <input\n ref={ inputRef }\n type=\"file\"\n disabled={ props.disabled }\n multiple={ props.multiple }\n name={ props.name }\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n <VSheet\n ref={ vSheetRef }\n { ...cardProps }\n class={[\n 'v-file-upload',\n {\n 'v-file-upload--clickable': !hasBrowse,\n 'v-file-upload--disabled': props.disabled,\n 'v-file-upload--dragging': dragOver.value,\n },\n densityClasses.value,\n ]}\n onDragleave={ onDragLeave }\n onDragover={ onDragOver }\n onDrop={ onDrop }\n onClick={ !hasBrowse ? onClick : undefined }\n { ...rootAttrs }\n >\n { hasIcon && (\n <div key=\"icon\" class=\"v-file-upload-icon\">\n { !slots.icon ? (\n <VIcon\n key=\"icon-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.icon() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { hasTitle && (\n <div key=\"title\" class=\"v-file-upload-title\">\n { slots.title?.() ?? t(props.title) }\n </div>\n )}\n\n { props.density === 'default' && (\n <>\n <div key=\"upload-divider\" class=\"v-file-upload-divider\">\n { slots.divider?.() ?? (\n <VDivider { ...dividerProps }>\n { t(props.dividerText) }\n </VDivider>\n )}\n </div>\n\n { hasBrowse && (\n <>\n { !slots.browse ? (\n <VBtn\n readonly={ props.disabled }\n size=\"large\"\n text={ t(props.browseText) }\n variant=\"tonal\"\n onClick={ onClick }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n readonly: props.disabled,\n size: 'large',\n text: t(props.browseText),\n variant: 'tonal',\n },\n }}\n >\n { slots.browse({ props: { onClick } }) }\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { props.subtitle && (\n <div class=\"v-file-upload-subtitle\">\n { props.subtitle }\n </div>\n )}\n </>\n )}\n\n <VOverlay\n model-value={ dragOver.value }\n contained\n scrim={ props.scrim }\n />\n\n { slots.input?.({ inputNode }) ?? inputNode }\n </VSheet>\n\n { model.value.length > 0 && (\n <div class=\"v-file-upload-items\">\n { model.value.map((file, i) => {\n const slotProps = {\n file,\n props: {\n 'onClick:remove': () => onClickRemove(i),\n },\n }\n\n return (\n <VDefaultsProvider\n key={ i }\n defaults={{\n VFileUploadItem: {\n file,\n clearable: props.clearable,\n disabled: props.disabled,\n showSize: props.showSize,\n },\n }}\n >\n { slots.item?.(slotProps) ?? (\n <VFileUploadItem\n key={ i }\n onClick:remove={ () => onClickRemove(i) }\n v-slots={ slots }\n />\n )}\n </VDefaultsProvider>\n )\n })}\n </div>\n )}\n </>\n )\n })\n },\n})\n\nexport type VFileUpload = InstanceType<typeof VFileUpload>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe;AAAA,SACfC,IAAI;AAAA,SACJC,iBAAiB;AAAA,SACjBC,iBAAiB,EAAEC,QAAQ;AAAA,SAC3BC,KAAK;AAAA,SACLC,QAAQ;AAAA,SACRC,eAAe,EAAEC,MAAM,8CAEhC;AAAA,SACSC,cAAc;AAAA,SACdC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,SAAS;AAAA,SACTC,SAAS;AAAA,SACTC,eAAe,8CAExB;AACA,SAASC,SAAS,EAAEC,WAAW,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACpDC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,gCAEvF;AAoBA,OAAO,MAAMC,oBAAoB,GAAGH,YAAY,CAAC;EAC/CI,UAAU,EAAE;IACVC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,WAAW,EAAE;IACXH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLJ,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDG,QAAQ,EAAEJ,MAAM;EAChBK,IAAI,EAAE;IACJN,IAAI,EAAEf,SAAS;IACfiB,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAE;IACVP,IAAI,EAAE,CAACQ,KAAK,EAAEC,MAAM,CAA4B;IAChDP,OAAO,EAAE,IAAI;IACbQ,SAAS,EAAGC,GAAQ,IAAK;MACvB,OAAOd,WAAW,CAACc,GAAG,CAAC,CAACC,KAAK,CAACC,CAAC,IAAIA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,CAAC;IACxE;EACF,CAAC;EACDC,SAAS,EAAEC,OAAO;EAClBC,QAAQ,EAAED,OAAO;EACjBE,UAAU,EAAEF,OAAO;EACnBG,QAAQ,EAAEH,OAAO;EACjBI,KAAK,EAAE;IACLnB,IAAI,EAAE,CAACe,OAAO,EAAEd,MAAM,CAAC;IACvBC,OAAO,EAAE;EACX,CAAC;EACDkB,QAAQ,EAAEL,OAAO;EACjBM,IAAI,EAAEpB,MAAM;EAEZ,GAAGnB,cAAc,CAAC,CAAC;EACnB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGW,IAAI,CAAClB,iBAAiB,CAAC;IACxB8C,MAAM,EAAE;EACV,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;EACvC,GAAG1C,eAAe,CAAC;AACrB,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAM2C,WAAW,GAAG9B,gBAAgB,CAAmB,CAAC,CAAC;EAC9D4B,IAAI,EAAE,aAAa;EAEnBG,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAE3B,oBAAoB,CAAC,CAAC;EAE7B4B,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAa,IAAK;EAC1C,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAM;MAAEG;IAAE,CAAC,GAAG9C,SAAS,CAAC,CAAC;IACzB,MAAM;MAAE+C;IAAe,CAAC,GAAGjD,UAAU,CAACyC,KAAK,CAAC;IAC5C,MAAMS,KAAK,GAAG/C,eAAe,CAC3BsC,KAAK,EACL,YAAY,EACZA,KAAK,CAAClB,UAAU,EAChBI,GAAG,IAAId,WAAW,CAACc,GAAG,CAAC,EACvBA,GAAG,IAAKc,KAAK,CAACP,QAAQ,IAAIV,KAAK,CAAC2B,OAAO,CAACV,KAAK,CAAClB,UAAU,CAAC,GAAII,GAAG,GAAGA,GAAG,CAAC,CAAC,CAC1E,CAAC;IAED,MAAMyB,QAAQ,GAAG7C,UAAU,CAAC,KAAK,CAAC;IAClC,MAAM8C,SAAS,GAAG/C,GAAG,CAAqC,IAAI,CAAC;IAC/D,MAAMgD,QAAQ,GAAGhD,GAAG,CAA0B,IAAI,CAAC;IAEnDF,SAAS,CAAC,MAAM;MACdiD,SAAS,CAACE,KAAK,EAAEC,GAAG,CAACC,gBAAgB,CAAC,UAAU,EAAEC,UAAU,CAAC;MAC7DL,SAAS,CAACE,KAAK,EAAEC,GAAG,CAACC,gBAAgB,CAAC,MAAM,EAAEE,MAAM,CAAC;IACvD,CAAC,CAAC;IAEFtD,WAAW,CAAC,MAAM;MAChBgD,SAAS,CAACE,KAAK,EAAEC,GAAG,CAACI,mBAAmB,CAAC,UAAU,EAAEF,UAAU,CAAC;MAChEL,SAAS,CAACE,KAAK,EAAEC,GAAG,CAACI,mBAAmB,CAAC,MAAM,EAAED,MAAM,CAAC;IAC1D,CAAC,CAAC;IAEF,SAASD,UAAUA,CAAEG,CAAY,EAAE;MACjCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBD,CAAC,CAACE,wBAAwB,CAAC,CAAC;MAC5BX,QAAQ,CAACG,KAAK,GAAG,IAAI;IACvB;IAEA,SAASS,WAAWA,CAAEH,CAAY,EAAE;MAClCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBV,QAAQ,CAACG,KAAK,GAAG,KAAK;IACxB;IAEA,SAASI,MAAMA,CAAEE,CAAY,EAAE;MAC7BA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBD,CAAC,CAACE,wBAAwB,CAAC,CAAC;MAC5BX,QAAQ,CAACG,KAAK,GAAG,KAAK;MAEtB,MAAMZ,KAAK,GAAGnB,KAAK,CAACyC,IAAI,CAACJ,CAAC,CAACK,YAAY,EAAEvB,KAAK,IAAI,EAAE,CAAC;MAErD,IAAI,CAACA,KAAK,CAACL,MAAM,EAAE;MAEnB,IAAI,CAACG,KAAK,CAACP,QAAQ,EAAE;QACnBgB,KAAK,CAACK,KAAK,GAAG,CAACZ,KAAK,CAAC,CAAC,CAAC,CAAC;QAExB;MACF;MAEA,MAAMwB,KAAK,GAAGjB,KAAK,CAACK,KAAK,CAACa,KAAK,CAAC,CAAC;MAEjC,KAAK,MAAMC,IAAI,IAAI1B,KAAK,EAAE;QACxB,IAAI,CAACwB,KAAK,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAClC,IAAI,KAAKgC,IAAI,CAAChC,IAAI,CAAC,EAAE;UAC1C8B,KAAK,CAACK,IAAI,CAACH,IAAI,CAAC;QAClB;MACF;MAEAnB,KAAK,CAACK,KAAK,GAAGY,KAAK;IACrB;IAEA,SAASM,OAAOA,CAAA,EAAI;MAClBnB,QAAQ,CAACC,KAAK,EAAEmB,KAAK,CAAC,CAAC;IACzB;IAEA,SAASC,aAAaA,CAAEC,KAAa,EAAE;MACrC1B,KAAK,CAACK,KAAK,GAAGL,KAAK,CAACK,KAAK,CAACsB,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,KAAKH,KAAK,CAAC;MAEvD,IAAI1B,KAAK,CAACK,KAAK,CAACjB,MAAM,GAAG,CAAC,IAAI,CAACgB,QAAQ,CAACC,KAAK,EAAE;MAE/CD,QAAQ,CAACC,KAAK,CAACA,KAAK,GAAG,EAAE;IAC3B;IAEA3C,SAAS,CAAC,MAAM;MACd,MAAMoE,QAAQ,GAAG,CAAC,EAAEjC,KAAK,CAAC3B,KAAK,IAAIqB,KAAK,CAACrB,KAAK,CAAC;MAC/C,MAAM6D,OAAO,GAAG,CAAC,EAAElC,KAAK,CAACzB,IAAI,IAAImB,KAAK,CAACnB,IAAI,CAAC;MAC5C,MAAM4D,SAAS,GAAG,CAAC,EAAE,CAACzC,KAAK,CAACR,UAAU,KAAKc,KAAK,CAACoC,MAAM,IAAI1C,KAAK,CAAC2C,OAAO,KAAK,SAAS,CAAC,CAAC;MACxF,MAAMC,SAAS,GAAGxF,MAAM,CAACyF,WAAW,CAAC7C,KAAK,CAAC;MAC3C,MAAM8C,YAAY,GAAG9F,QAAQ,CAAC6F,WAAW,CAAC7C,KAAK,CAAC;MAChD,MAAM,CAAC+C,SAAS,EAAEC,UAAU,CAAC,GAAGjF,gBAAgB,CAACsC,KAAK,CAAC;MAEvD,MAAM4C,SAAS,GAAAC,YAAA,UAAAC,WAAA;QAAA,OAELtC,QAAQ;QAAA;QAAA,YAEHb,KAAK,CAACT,QAAQ;QAAA,YACdS,KAAK,CAACP,QAAQ;QAAA,QAClBO,KAAK,CAACJ,IAAI;QAAA,YACNwB,CAAC,IAAI;UACd,IAAI,CAACA,CAAC,CAACgC,MAAM,EAAE;UAEf,MAAMA,MAAM,GAAGhC,CAAC,CAACgC,MAA0B;UAC3C3C,KAAK,CAACK,KAAK,GAAG,CAAC,IAAGsC,MAAM,CAAClD,KAAK,IAAI,EAAE,EAAC;QACvC;MAAC,GACI8C,UAAU,QAElB;MAED,OAAAE,YAAA,CAAAG,SAAA,SAAAH,YAAA,CAAA9F,MAAA,EAAA+F,WAAA;QAAA,OAGYvC;MAAS,GACVgC,SAAS;QAAA,SACP,CACL,eAAe,EACf;UACE,0BAA0B,EAAE,CAACH,SAAS;UACtC,yBAAyB,EAAEzC,KAAK,CAACT,QAAQ;UACzC,yBAAyB,EAAEoB,QAAQ,CAACG;QACtC,CAAC,EACDN,cAAc,CAACM,KAAK,CACrB;QAAA,eACaS,WAAW;QAAA,cACZN,UAAU;QAAA,UACdC,MAAM;QAAA,WACL,CAACuB,SAAS,GAAGT,OAAO,GAAGsB;MAAS,GACrCP,SAAS;QAAAtE,OAAA,EAAAA,CAAA,MAEZ+D,OAAO,IAAAU,YAAA;UAAA;UAAA;QAAA,IAEH,CAAC5C,KAAK,CAACzB,IAAI,GAAAqE,YAAA,CAAAjG,KAAA;UAAA;UAAA,QAGF+C,KAAK,CAACnB;QAAI,WAAAqE,YAAA,CAAApG,iBAAA;UAAA;UAAA,YAKP;YACRG,KAAK,EAAE;cACL4B,IAAI,EAAEmB,KAAK,CAACnB;YACd;UACF;QAAC;UAAAJ,OAAA,EAAAA,CAAA,MAEC6B,KAAK,CAACzB,IAAI,CAAC,CAAC;QAAA,EAEjB,EAEJ,EAEC0D,QAAQ,IAAAW,YAAA;UAAA;UAAA;QAAA,IAEJ5C,KAAK,CAAC3B,KAAK,GAAG,CAAC,IAAI4B,CAAC,CAACP,KAAK,CAACrB,KAAK,CAAC,EAEtC,EAECqB,KAAK,CAAC2C,OAAO,KAAK,SAAS,IAAAO,YAAA,CAAAG,SAAA,SAAAH,YAAA;UAAA;UAAA;QAAA,IAGrB5C,KAAK,CAACiD,OAAO,GAAG,CAAC,IAAAL,YAAA,CAAAlG,QAAA,EACF8F,YAAY;UAAArE,OAAA,EAAAA,CAAA,MACvB8B,CAAC,CAACP,KAAK,CAACtB,WAAW,CAAC;QAAA,EAEzB,IAGD+D,SAAS,IAAAS,YAAA,CAAAG,SAAA,SAEL,CAAC/C,KAAK,CAACoC,MAAM,GAAAQ,YAAA,CAAArG,IAAA;UAAA,YAEAmD,KAAK,CAACT,QAAQ;UAAA;UAAA,QAElBgB,CAAC,CAACP,KAAK,CAAC1B,UAAU,CAAC;UAAA;UAAA,WAEhB0D;QAAO,WAAAkB,YAAA,CAAApG,iBAAA;UAAA,YAIP;YACRD,IAAI,EAAE;cACJ2G,QAAQ,EAAExD,KAAK,CAACT,QAAQ;cACxBkE,IAAI,EAAE,OAAO;cACbC,IAAI,EAAEnD,CAAC,CAACP,KAAK,CAAC1B,UAAU,CAAC;cACzBqF,OAAO,EAAE;YACX;UACF;QAAC;UAAAlF,OAAA,EAAAA,CAAA,MAEC6B,KAAK,CAACoC,MAAM,CAAC;YAAE1C,KAAK,EAAE;cAAEgC;YAAQ;UAAE,CAAC,CAAC;QAAA,EAEzC,EAEJ,EAEChC,KAAK,CAACpB,QAAQ,IAAAsE,YAAA;UAAA;QAAA,IAEVlD,KAAK,CAACpB,QAAQ,EAEnB,EAEJ,EAAAsE,YAAA,CAAAhG,QAAA;UAAA,eAGeyD,QAAQ,CAACG,KAAK;UAAA;UAAA,SAEpBd,KAAK,CAACN;QAAK,UAGnBY,KAAK,CAACsD,KAAK,GAAG;UAAEX;QAAU,CAAC,CAAC,IAAIA,SAAS;MAAA,IAG3CxC,KAAK,CAACK,KAAK,CAACjB,MAAM,GAAG,CAAC,IAAAqD,YAAA;QAAA;MAAA,IAElBzC,KAAK,CAACK,KAAK,CAAC+C,GAAG,CAAC,CAACjC,IAAI,EAAEU,CAAC,KAAK;QAC7B,MAAMwB,SAAS,GAAG;UAChBlC,IAAI;UACJ5B,KAAK,EAAE;YACL,gBAAgB,EAAE+D,CAAA,KAAM7B,aAAa,CAACI,CAAC;UACzC;QACF,CAAC;QAED,OAAAY,YAAA,CAAApG,iBAAA;UAAA,OAEUwF,CAAC;UAAA,YACG;YACR1F,eAAe,EAAE;cACfgF,IAAI;cACJvC,SAAS,EAAEW,KAAK,CAACX,SAAS;cAC1BE,QAAQ,EAAES,KAAK,CAACT,QAAQ;cACxBI,QAAQ,EAAEK,KAAK,CAACL;YAClB;UACF;QAAC;UAAAlB,OAAA,EAAAA,CAAA,MAEC6B,KAAK,CAAC0D,IAAI,GAAGF,SAAS,CAAC,IAAAZ,YAAA,CAAAtG,eAAA;YAAA,OAEf0F,CAAC;YAAA,kBACUyB,CAAA,KAAM7B,aAAa,CAACI,CAAC;UAAC,GAC7BhC,KAAK,CAElB;QAAA;MAGP,CAAC,CAAC,EAEL;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}