@element-plus/nightly 0.0.20250908 → 0.0.20250910
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.json +1 -1
- package/dist/index.full.js +135 -81
- package/dist/index.full.min.js +14 -14
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +15 -15
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +136 -83
- package/dist/locale/af.js +1 -1
- package/dist/locale/af.min.js +1 -1
- package/dist/locale/af.min.mjs +1 -1
- package/dist/locale/af.mjs +1 -1
- package/dist/locale/ar-eg.js +1 -1
- package/dist/locale/ar-eg.min.js +1 -1
- package/dist/locale/ar-eg.min.mjs +1 -1
- package/dist/locale/ar-eg.mjs +1 -1
- package/dist/locale/ar.js +1 -1
- package/dist/locale/ar.min.js +1 -1
- package/dist/locale/ar.min.mjs +1 -1
- package/dist/locale/ar.mjs +1 -1
- package/dist/locale/az.js +1 -1
- package/dist/locale/az.min.js +1 -1
- package/dist/locale/az.min.mjs +1 -1
- package/dist/locale/az.mjs +1 -1
- package/dist/locale/bg.js +1 -1
- package/dist/locale/bg.min.js +1 -1
- package/dist/locale/bg.min.mjs +1 -1
- package/dist/locale/bg.mjs +1 -1
- package/dist/locale/bn.js +1 -1
- package/dist/locale/bn.min.js +1 -1
- package/dist/locale/bn.min.mjs +1 -1
- package/dist/locale/bn.mjs +1 -1
- package/dist/locale/ca.js +1 -1
- package/dist/locale/ca.min.js +1 -1
- package/dist/locale/ca.min.mjs +1 -1
- package/dist/locale/ca.mjs +1 -1
- package/dist/locale/ckb.js +1 -1
- package/dist/locale/ckb.min.js +1 -1
- package/dist/locale/ckb.min.mjs +1 -1
- package/dist/locale/ckb.mjs +1 -1
- package/dist/locale/cs.js +1 -1
- package/dist/locale/cs.min.js +1 -1
- package/dist/locale/cs.min.mjs +1 -1
- package/dist/locale/cs.mjs +1 -1
- package/dist/locale/da.js +1 -1
- package/dist/locale/da.min.js +1 -1
- package/dist/locale/da.min.mjs +1 -1
- package/dist/locale/da.mjs +1 -1
- package/dist/locale/de.js +1 -1
- package/dist/locale/de.min.js +1 -1
- package/dist/locale/de.min.mjs +1 -1
- package/dist/locale/de.mjs +1 -1
- package/dist/locale/el.js +1 -1
- package/dist/locale/el.min.js +1 -1
- package/dist/locale/el.min.mjs +1 -1
- package/dist/locale/el.mjs +1 -1
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.min.js +1 -1
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.mjs +1 -1
- package/dist/locale/eo.js +1 -1
- package/dist/locale/eo.min.js +1 -1
- package/dist/locale/eo.min.mjs +1 -1
- package/dist/locale/eo.mjs +1 -1
- package/dist/locale/es.js +1 -1
- package/dist/locale/es.min.js +1 -1
- package/dist/locale/es.min.mjs +1 -1
- package/dist/locale/es.mjs +1 -1
- package/dist/locale/et.js +1 -1
- package/dist/locale/et.min.js +1 -1
- package/dist/locale/et.min.mjs +1 -1
- package/dist/locale/et.mjs +1 -1
- package/dist/locale/eu.js +1 -1
- package/dist/locale/eu.min.js +1 -1
- package/dist/locale/eu.min.mjs +1 -1
- package/dist/locale/eu.mjs +1 -1
- package/dist/locale/fa.js +1 -1
- package/dist/locale/fa.min.js +1 -1
- package/dist/locale/fa.min.mjs +1 -1
- package/dist/locale/fa.mjs +1 -1
- package/dist/locale/fi.js +1 -1
- package/dist/locale/fi.min.js +1 -1
- package/dist/locale/fi.min.mjs +1 -1
- package/dist/locale/fi.mjs +1 -1
- package/dist/locale/fr.js +1 -1
- package/dist/locale/fr.min.js +1 -1
- package/dist/locale/fr.min.mjs +1 -1
- package/dist/locale/fr.mjs +1 -1
- package/dist/locale/he.js +1 -1
- package/dist/locale/he.min.js +1 -1
- package/dist/locale/he.min.mjs +1 -1
- package/dist/locale/he.mjs +1 -1
- package/dist/locale/hi.js +1 -1
- package/dist/locale/hi.min.js +1 -1
- package/dist/locale/hi.min.mjs +1 -1
- package/dist/locale/hi.mjs +1 -1
- package/dist/locale/hr.js +1 -1
- package/dist/locale/hr.min.js +1 -1
- package/dist/locale/hr.min.mjs +1 -1
- package/dist/locale/hr.mjs +1 -1
- package/dist/locale/hu.js +1 -1
- package/dist/locale/hu.min.js +1 -1
- package/dist/locale/hu.min.mjs +1 -1
- package/dist/locale/hu.mjs +1 -1
- package/dist/locale/hy-am.js +1 -1
- package/dist/locale/hy-am.min.js +1 -1
- package/dist/locale/hy-am.min.mjs +1 -1
- package/dist/locale/hy-am.mjs +1 -1
- package/dist/locale/id.js +1 -1
- package/dist/locale/id.min.js +1 -1
- package/dist/locale/id.min.mjs +1 -1
- package/dist/locale/id.mjs +1 -1
- package/dist/locale/it.js +1 -1
- package/dist/locale/it.min.js +1 -1
- package/dist/locale/it.min.mjs +1 -1
- package/dist/locale/it.mjs +1 -1
- package/dist/locale/ja.js +1 -1
- package/dist/locale/ja.min.js +1 -1
- package/dist/locale/ja.min.mjs +1 -1
- package/dist/locale/ja.mjs +1 -1
- package/dist/locale/kk.js +1 -1
- package/dist/locale/kk.min.js +1 -1
- package/dist/locale/kk.min.mjs +1 -1
- package/dist/locale/kk.mjs +1 -1
- package/dist/locale/km.js +1 -1
- package/dist/locale/km.min.js +1 -1
- package/dist/locale/km.min.mjs +1 -1
- package/dist/locale/km.mjs +1 -1
- package/dist/locale/ko.js +1 -1
- package/dist/locale/ko.min.js +1 -1
- package/dist/locale/ko.min.mjs +1 -1
- package/dist/locale/ko.mjs +1 -1
- package/dist/locale/ku.js +1 -1
- package/dist/locale/ku.min.js +1 -1
- package/dist/locale/ku.min.mjs +1 -1
- package/dist/locale/ku.mjs +1 -1
- package/dist/locale/ky.js +1 -1
- package/dist/locale/ky.min.js +1 -1
- package/dist/locale/ky.min.mjs +1 -1
- package/dist/locale/ky.mjs +1 -1
- package/dist/locale/lo.js +1 -1
- package/dist/locale/lo.min.js +1 -1
- package/dist/locale/lo.min.mjs +1 -1
- package/dist/locale/lo.mjs +1 -1
- package/dist/locale/lt.js +1 -1
- package/dist/locale/lt.min.js +1 -1
- package/dist/locale/lt.min.mjs +1 -1
- package/dist/locale/lt.mjs +1 -1
- package/dist/locale/lv.js +1 -1
- package/dist/locale/lv.min.js +1 -1
- package/dist/locale/lv.min.mjs +1 -1
- package/dist/locale/lv.mjs +1 -1
- package/dist/locale/mg.js +1 -1
- package/dist/locale/mg.min.js +1 -1
- package/dist/locale/mg.min.mjs +1 -1
- package/dist/locale/mg.mjs +1 -1
- package/dist/locale/mn.js +1 -1
- package/dist/locale/mn.min.js +1 -1
- package/dist/locale/mn.min.mjs +1 -1
- package/dist/locale/mn.mjs +1 -1
- package/dist/locale/ms.js +1 -1
- package/dist/locale/ms.min.js +1 -1
- package/dist/locale/ms.min.mjs +1 -1
- package/dist/locale/ms.mjs +1 -1
- package/dist/locale/my.js +1 -1
- package/dist/locale/my.min.js +1 -1
- package/dist/locale/my.min.mjs +1 -1
- package/dist/locale/my.mjs +1 -1
- package/dist/locale/nb-no.js +1 -1
- package/dist/locale/nb-no.min.js +1 -1
- package/dist/locale/nb-no.min.mjs +1 -1
- package/dist/locale/nb-no.mjs +1 -1
- package/dist/locale/nl.js +1 -1
- package/dist/locale/nl.min.js +1 -1
- package/dist/locale/nl.min.mjs +1 -1
- package/dist/locale/nl.mjs +1 -1
- package/dist/locale/no.js +1 -1
- package/dist/locale/no.min.js +1 -1
- package/dist/locale/no.min.mjs +1 -1
- package/dist/locale/no.mjs +1 -1
- package/dist/locale/pa.js +1 -1
- package/dist/locale/pa.min.js +1 -1
- package/dist/locale/pa.min.mjs +1 -1
- package/dist/locale/pa.mjs +1 -1
- package/dist/locale/pl.js +1 -1
- package/dist/locale/pl.min.js +1 -1
- package/dist/locale/pl.min.mjs +1 -1
- package/dist/locale/pl.mjs +1 -1
- package/dist/locale/pt-br.js +1 -1
- package/dist/locale/pt-br.min.js +1 -1
- package/dist/locale/pt-br.min.mjs +1 -1
- package/dist/locale/pt-br.mjs +1 -1
- package/dist/locale/pt.js +1 -1
- package/dist/locale/pt.min.js +1 -1
- package/dist/locale/pt.min.mjs +1 -1
- package/dist/locale/pt.mjs +1 -1
- package/dist/locale/ro.js +1 -1
- package/dist/locale/ro.min.js +1 -1
- package/dist/locale/ro.min.mjs +1 -1
- package/dist/locale/ro.mjs +1 -1
- package/dist/locale/ru.js +1 -1
- package/dist/locale/ru.min.js +1 -1
- package/dist/locale/ru.min.mjs +1 -1
- package/dist/locale/ru.mjs +1 -1
- package/dist/locale/sk.js +1 -1
- package/dist/locale/sk.min.js +1 -1
- package/dist/locale/sk.min.mjs +1 -1
- package/dist/locale/sk.mjs +1 -1
- package/dist/locale/sl.js +1 -1
- package/dist/locale/sl.min.js +1 -1
- package/dist/locale/sl.min.mjs +1 -1
- package/dist/locale/sl.mjs +1 -1
- package/dist/locale/sr.js +1 -1
- package/dist/locale/sr.min.js +1 -1
- package/dist/locale/sr.min.mjs +1 -1
- package/dist/locale/sr.mjs +1 -1
- package/dist/locale/sv.js +1 -1
- package/dist/locale/sv.min.js +1 -1
- package/dist/locale/sv.min.mjs +1 -1
- package/dist/locale/sv.mjs +1 -1
- package/dist/locale/sw.js +1 -1
- package/dist/locale/sw.min.js +1 -1
- package/dist/locale/sw.min.mjs +1 -1
- package/dist/locale/sw.mjs +1 -1
- package/dist/locale/ta.js +1 -1
- package/dist/locale/ta.min.js +1 -1
- package/dist/locale/ta.min.mjs +1 -1
- package/dist/locale/ta.mjs +1 -1
- package/dist/locale/te.js +1 -1
- package/dist/locale/te.min.js +1 -1
- package/dist/locale/te.min.mjs +1 -1
- package/dist/locale/te.mjs +1 -1
- package/dist/locale/th.js +1 -1
- package/dist/locale/th.min.js +1 -1
- package/dist/locale/th.min.mjs +1 -1
- package/dist/locale/th.mjs +1 -1
- package/dist/locale/tk.js +1 -1
- package/dist/locale/tk.min.js +1 -1
- package/dist/locale/tk.min.mjs +1 -1
- package/dist/locale/tk.mjs +1 -1
- package/dist/locale/tr.js +1 -1
- package/dist/locale/tr.min.js +1 -1
- package/dist/locale/tr.min.mjs +1 -1
- package/dist/locale/tr.mjs +1 -1
- package/dist/locale/ug-cn.js +1 -1
- package/dist/locale/ug-cn.min.js +1 -1
- package/dist/locale/ug-cn.min.mjs +1 -1
- package/dist/locale/ug-cn.mjs +1 -1
- package/dist/locale/uk.js +1 -1
- package/dist/locale/uk.min.js +1 -1
- package/dist/locale/uk.min.mjs +1 -1
- package/dist/locale/uk.mjs +1 -1
- package/dist/locale/uz-uz.js +1 -1
- package/dist/locale/uz-uz.min.js +1 -1
- package/dist/locale/uz-uz.min.mjs +1 -1
- package/dist/locale/uz-uz.mjs +1 -1
- package/dist/locale/vi.js +1 -1
- package/dist/locale/vi.min.js +1 -1
- package/dist/locale/vi.min.mjs +1 -1
- package/dist/locale/vi.mjs +1 -1
- package/dist/locale/zh-cn.js +1 -1
- package/dist/locale/zh-cn.min.js +1 -1
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.mjs +1 -1
- package/dist/locale/zh-hk.js +1 -1
- package/dist/locale/zh-hk.min.js +1 -1
- package/dist/locale/zh-hk.min.mjs +1 -1
- package/dist/locale/zh-hk.mjs +1 -1
- package/dist/locale/zh-mo.js +1 -1
- package/dist/locale/zh-mo.min.js +1 -1
- package/dist/locale/zh-mo.min.mjs +1 -1
- package/dist/locale/zh-mo.mjs +1 -1
- package/dist/locale/zh-tw.js +1 -1
- package/dist/locale/zh-tw.min.js +1 -1
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.mjs +1 -1
- package/es/components/affix/index.mjs +2 -2
- package/es/components/affix/src/affix.mjs +129 -24
- package/es/components/affix/src/affix.mjs.map +1 -1
- package/es/components/affix/src/affix2.mjs +24 -129
- package/es/components/affix/src/affix2.mjs.map +1 -1
- package/es/components/backtop/index.mjs +2 -2
- package/es/components/backtop/src/backtop.mjs +53 -21
- package/es/components/backtop/src/backtop.mjs.map +1 -1
- package/es/components/backtop/src/backtop2.mjs +21 -53
- package/es/components/backtop/src/backtop2.mjs.map +1 -1
- package/es/components/badge/index.mjs +2 -2
- package/es/components/badge/src/badge.mjs +71 -32
- package/es/components/badge/src/badge.mjs.map +1 -1
- package/es/components/badge/src/badge2.mjs +32 -71
- package/es/components/badge/src/badge2.mjs.map +1 -1
- package/es/components/cascader/src/cascader2.mjs +6 -1
- package/es/components/cascader/src/cascader2.mjs.map +1 -1
- package/es/components/checkbox/src/checkbox2.mjs +48 -59
- package/es/components/checkbox/src/checkbox2.mjs.map +1 -1
- package/es/components/collection/index.mjs +1 -1
- package/es/components/collection/src/collection.mjs +62 -10
- package/es/components/collection/src/collection.mjs.map +1 -1
- package/es/components/collection/src/collection2.mjs +10 -62
- package/es/components/collection/src/collection2.mjs.map +1 -1
- package/es/components/color-picker/src/color-picker2.mjs +1 -1
- package/es/components/color-picker-panel/index.mjs +2 -2
- package/es/components/color-picker-panel/src/color-picker-panel.mjs +117 -23
- package/es/components/color-picker-panel/src/color-picker-panel.mjs.map +1 -1
- package/es/components/color-picker-panel/src/color-picker-panel2.mjs +23 -117
- package/es/components/color-picker-panel/src/color-picker-panel2.mjs.map +1 -1
- package/es/components/color-picker-panel/src/components/predefine.mjs +1 -1
- package/es/components/dropdown/src/dropdown-item-impl.mjs +1 -1
- package/es/components/dropdown/src/dropdown.d.ts +8 -0
- package/es/components/dropdown/src/dropdown.mjs +7 -1
- package/es/components/dropdown/src/dropdown.mjs.map +1 -1
- package/es/components/dropdown/src/dropdown.vue.d.ts +18 -0
- package/es/components/dropdown/src/dropdown2.mjs +5 -4
- package/es/components/dropdown/src/dropdown2.mjs.map +1 -1
- package/es/components/index.mjs +10 -10
- package/es/components/mention/index.mjs +1 -1
- package/es/components/mention/src/helper.mjs +1 -1
- package/es/components/mention/src/helper.mjs.map +1 -1
- package/es/components/mention/src/mention.d.ts +8 -0
- package/es/components/mention/src/mention.mjs +12 -3
- package/es/components/mention/src/mention.mjs.map +1 -1
- package/es/components/mention/src/mention.vue.d.ts +3 -0
- package/es/components/mention/src/mention2.mjs +24 -6
- package/es/components/mention/src/mention2.mjs.map +1 -1
- package/es/components/mention/src/types.d.ts +1 -1
- package/es/components/menu/index.mjs +2 -2
- package/es/components/menu/src/menu-item.mjs +101 -15
- package/es/components/menu/src/menu-item.mjs.map +1 -1
- package/es/components/menu/src/menu-item2.mjs +15 -101
- package/es/components/menu/src/menu-item2.mjs.map +1 -1
- package/es/components/pagination/src/components/prev.mjs +17 -35
- package/es/components/pagination/src/components/prev.mjs.map +1 -1
- package/es/components/pagination/src/components/prev2.mjs +35 -17
- package/es/components/pagination/src/components/prev2.mjs.map +1 -1
- package/es/components/pagination/src/pagination.mjs +1 -1
- package/es/components/roving-focus-group/src/roving-focus-group.mjs +1 -1
- package/es/components/select/index.mjs +2 -2
- package/es/components/select/src/select.mjs +145 -527
- package/es/components/select/src/select.mjs.map +1 -1
- package/es/components/select/src/select2.mjs +527 -145
- package/es/components/select/src/select2.mjs.map +1 -1
- package/es/components/skeleton/index.mjs +2 -2
- package/es/components/skeleton/src/skeleton-item.mjs +22 -17
- package/es/components/skeleton/src/skeleton-item.mjs.map +1 -1
- package/es/components/skeleton/src/skeleton-item2.mjs +17 -22
- package/es/components/skeleton/src/skeleton-item2.mjs.map +1 -1
- package/es/components/skeleton/src/skeleton2.mjs +1 -1
- package/es/components/tabs/src/tab-nav.mjs +37 -10
- package/es/components/tabs/src/tab-nav.mjs.map +1 -1
- package/es/components/tooltip/index.mjs +2 -2
- package/es/components/tooltip/src/tooltip.mjs +166 -30
- package/es/components/tooltip/src/tooltip.mjs.map +1 -1
- package/es/components/tooltip/src/tooltip2.mjs +30 -166
- package/es/components/tooltip/src/tooltip2.mjs.map +1 -1
- package/es/components/upload/index.mjs +2 -2
- package/es/components/upload/src/upload-content.mjs +1 -1
- package/es/components/upload/src/upload-content2.mjs +1 -1
- package/es/components/upload/src/upload-list.mjs +1 -1
- package/es/components/upload/src/upload.mjs +125 -97
- package/es/components/upload/src/upload.mjs.map +1 -1
- package/es/components/upload/src/upload2.mjs +97 -125
- package/es/components/upload/src/upload2.mjs.map +1 -1
- package/es/components/upload/src/use-handlers.mjs +1 -1
- package/es/index.d.ts +38 -1
- package/es/index.mjs +10 -10
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/affix/index.js +2 -2
- package/lib/components/affix/src/affix.js +129 -25
- package/lib/components/affix/src/affix.js.map +1 -1
- package/lib/components/affix/src/affix2.js +25 -129
- package/lib/components/affix/src/affix2.js.map +1 -1
- package/lib/components/backtop/index.js +2 -2
- package/lib/components/backtop/src/backtop.js +53 -22
- package/lib/components/backtop/src/backtop.js.map +1 -1
- package/lib/components/backtop/src/backtop2.js +22 -53
- package/lib/components/backtop/src/backtop2.js.map +1 -1
- package/lib/components/badge/index.js +2 -2
- package/lib/components/badge/src/badge.js +71 -32
- package/lib/components/badge/src/badge.js.map +1 -1
- package/lib/components/badge/src/badge2.js +32 -71
- package/lib/components/badge/src/badge2.js.map +1 -1
- package/lib/components/cascader/src/cascader2.js +6 -1
- package/lib/components/cascader/src/cascader2.js.map +1 -1
- package/lib/components/checkbox/src/checkbox2.js +47 -58
- package/lib/components/checkbox/src/checkbox2.js.map +1 -1
- package/lib/components/collection/index.js +1 -1
- package/lib/components/collection/src/collection.js +62 -9
- package/lib/components/collection/src/collection.js.map +1 -1
- package/lib/components/collection/src/collection2.js +9 -62
- package/lib/components/collection/src/collection2.js.map +1 -1
- package/lib/components/color-picker/src/color-picker2.js +1 -1
- package/lib/components/color-picker-panel/index.js +2 -2
- package/lib/components/color-picker-panel/src/color-picker-panel.js +117 -26
- package/lib/components/color-picker-panel/src/color-picker-panel.js.map +1 -1
- package/lib/components/color-picker-panel/src/color-picker-panel2.js +26 -117
- package/lib/components/color-picker-panel/src/color-picker-panel2.js.map +1 -1
- package/lib/components/color-picker-panel/src/components/predefine.js +1 -1
- package/lib/components/dropdown/src/dropdown-item-impl.js +1 -1
- package/lib/components/dropdown/src/dropdown.d.ts +8 -0
- package/lib/components/dropdown/src/dropdown.js +7 -1
- package/lib/components/dropdown/src/dropdown.js.map +1 -1
- package/lib/components/dropdown/src/dropdown.vue.d.ts +18 -0
- package/lib/components/dropdown/src/dropdown2.js +5 -4
- package/lib/components/dropdown/src/dropdown2.js.map +1 -1
- package/lib/components/index.js +10 -9
- package/lib/components/index.js.map +1 -1
- package/lib/components/mention/index.js +1 -0
- package/lib/components/mention/index.js.map +1 -1
- package/lib/components/mention/src/helper.js +1 -1
- package/lib/components/mention/src/helper.js.map +1 -1
- package/lib/components/mention/src/mention.d.ts +8 -0
- package/lib/components/mention/src/mention.js +11 -1
- package/lib/components/mention/src/mention.js.map +1 -1
- package/lib/components/mention/src/mention.vue.d.ts +3 -0
- package/lib/components/mention/src/mention2.js +23 -5
- package/lib/components/mention/src/mention2.js.map +1 -1
- package/lib/components/mention/src/types.d.ts +1 -1
- package/lib/components/menu/index.js +2 -2
- package/lib/components/menu/src/menu-item.js +101 -16
- package/lib/components/menu/src/menu-item.js.map +1 -1
- package/lib/components/menu/src/menu-item2.js +16 -101
- package/lib/components/menu/src/menu-item2.js.map +1 -1
- package/lib/components/pagination/src/components/prev.js +18 -35
- package/lib/components/pagination/src/components/prev.js.map +1 -1
- package/lib/components/pagination/src/components/prev2.js +35 -18
- package/lib/components/pagination/src/components/prev2.js.map +1 -1
- package/lib/components/pagination/src/pagination.js +1 -1
- package/lib/components/roving-focus-group/src/roving-focus-group.js +1 -1
- package/lib/components/select/index.js +2 -2
- package/lib/components/select/src/select.js +145 -526
- package/lib/components/select/src/select.js.map +1 -1
- package/lib/components/select/src/select2.js +526 -145
- package/lib/components/select/src/select2.js.map +1 -1
- package/lib/components/skeleton/index.js +2 -2
- package/lib/components/skeleton/src/skeleton-item.js +22 -17
- package/lib/components/skeleton/src/skeleton-item.js.map +1 -1
- package/lib/components/skeleton/src/skeleton-item2.js +17 -22
- package/lib/components/skeleton/src/skeleton-item2.js.map +1 -1
- package/lib/components/skeleton/src/skeleton2.js +1 -1
- package/lib/components/tabs/src/tab-nav.js +36 -9
- package/lib/components/tabs/src/tab-nav.js.map +1 -1
- package/lib/components/tooltip/index.js +2 -2
- package/lib/components/tooltip/src/tooltip.js +166 -34
- package/lib/components/tooltip/src/tooltip.js.map +1 -1
- package/lib/components/tooltip/src/tooltip2.js +34 -166
- package/lib/components/tooltip/src/tooltip2.js.map +1 -1
- package/lib/components/upload/index.js +2 -2
- package/lib/components/upload/src/upload-content.js +1 -1
- package/lib/components/upload/src/upload-content2.js +1 -1
- package/lib/components/upload/src/upload-list.js +1 -1
- package/lib/components/upload/src/upload.js +125 -100
- package/lib/components/upload/src/upload.js.map +1 -1
- package/lib/components/upload/src/upload2.js +100 -125
- package/lib/components/upload/src/upload2.js.map +1 -1
- package/lib/components/upload/src/use-handlers.js +1 -1
- package/lib/index.d.ts +38 -1
- package/lib/index.js +10 -9
- package/lib/index.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/tags.json +1 -1
- package/web-types.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"helper.mjs","sources":["../../../../../../packages/components/mention/src/helper.ts"],"sourcesContent":["import { ensureArray, isFirefox } from '@element-plus/utils'\n\nimport type { MentionCtx, MentionOption } from './types'\n\nexport const filterOption = (\n pattern: string,\n option: MentionOption\n): boolean => {\n const lowerCase = pattern.toLowerCase()\n const label = option.label || option.value\n return label.toLowerCase().includes(lowerCase)\n}\n\nexport const getMentionCtx = (\n inputEl: HTMLInputElement | HTMLTextAreaElement,\n prefix: string | string[],\n split: string\n) => {\n const { selectionEnd } = inputEl\n if (selectionEnd === null) return\n const inputValue = inputEl.value\n const prefixArray = ensureArray(prefix)\n let splitIndex = -1\n let mentionCtx: MentionCtx | undefined\n for (let i = selectionEnd - 1; i >= 0; --i) {\n const char = inputValue[i]\n if (char === split || char === '\\n' || char === '\\r') {\n splitIndex = i\n continue\n }\n if (prefixArray.includes(char)) {\n const end = splitIndex === -1 ? selectionEnd : splitIndex\n const pattern = inputValue.slice(i + 1, end)\n mentionCtx = {\n pattern,\n start: i + 1,\n end,\n prefix: char,\n prefixIndex: i,\n splitIndex,\n selectionEnd,\n }\n break\n }\n }\n return mentionCtx\n}\n\n/**\n * fork from textarea-caret-position\n * https://github.com/component/textarea-caret-position\n * The MIT License (MIT)\n * Copyright (c) 2015 Jonathan Ong me@jongleberry.com\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport const getCursorPosition = (\n element: HTMLInputElement | HTMLTextAreaElement,\n options = {\n debug: false,\n useSelectionEnd: false,\n }\n) => {\n const selectionStart =\n element.selectionStart !== null ? element.selectionStart : 0\n const selectionEnd = element.selectionEnd !== null ? element.selectionEnd : 0\n const position = options.useSelectionEnd ? selectionEnd : selectionStart\n // We'll copy the properties below into the mirror div.\n // Note that some browsers, such as Firefox, do not concatenate properties\n // into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n // so we have to list every single property explicitly.\n const properties: string[] = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n 'letterSpacing',\n 'wordSpacing',\n 'tabSize',\n 'MozTabSize',\n ]\n\n if (options.debug) {\n const el = document.querySelector(\n '#input-textarea-caret-position-mirror-div'\n )\n if (el?.parentNode) el.parentNode.removeChild(el)\n }\n\n // The mirror div will replicate the textareas style\n const div = document.createElement('div')\n div.id = 'input-textarea-caret-position-mirror-div'\n document.body.appendChild(div)\n\n const style = div.style\n const computed = window.getComputedStyle(element)\n\n const isInput = element.nodeName === 'INPUT'\n\n // Default textarea styles\n style.whiteSpace = isInput ? 'nowrap' : 'pre-wrap'\n if (!isInput) style.wordWrap = 'break-word' // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute' // required to return coordinates properly\n if (!options.debug) style.visibility = 'hidden' // not 'display: none' because we want rendering\n\n // Transfer the element's properties to the div\n properties.forEach((prop) => {\n if (isInput && prop === 'lineHeight') {\n // Special case for <input>s because text is rendered centered and line height may be != height\n if (computed.boxSizing === 'border-box') {\n const height = Number.parseInt(computed.height as string)\n const outerHeight =\n Number.parseInt(computed.paddingTop as string) +\n Number.parseInt(computed.paddingBottom as string) +\n Number.parseInt(computed.borderTopWidth as string) +\n Number.parseInt(computed.borderBottomWidth as string)\n const targetHeight =\n outerHeight + Number.parseInt(computed.lineHeight as string)\n if (height > targetHeight) {\n style.lineHeight = `${height - outerHeight}px`\n } else if (height === targetHeight) {\n style.lineHeight = computed.lineHeight\n } else {\n style.lineHeight = '0'\n }\n } else {\n style.lineHeight = computed.height\n }\n } else {\n style[prop as any] = computed[prop as any]\n }\n })\n\n if (isFirefox()) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > Number.parseInt(computed.height as string)) {\n style.overflowY = 'scroll'\n }\n } else {\n style.overflow = 'hidden' // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n\n div.textContent = element.value.slice(0, Math.max(0, position))\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput && div.textContent) {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00A0')\n }\n\n const span = document.createElement('span')\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textareas content into the <span> created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.slice(Math.max(0, position)) || '.' // || because a completely empty faux span doesn't render at all\n span.style.position = 'relative'\n span.style.left = `${-element.scrollLeft}px`\n span.style.top = `${-element.scrollTop}px`\n div.appendChild(span)\n\n const relativePosition = {\n top: span.offsetTop + Number.parseInt(computed.borderTopWidth as string),\n left: span.offsetLeft + Number.parseInt(computed.borderLeftWidth as string),\n // We don't use line-height since it may be too large for position. Eg. 34px\n // for input\n height: Number.parseInt(computed.fontSize as string) * 1.5,\n }\n\n if (options.debug) {\n span.style.backgroundColor = '#aaa'\n } else {\n document.body.removeChild(div)\n }\n\n if (relativePosition.left >= element.clientWidth) {\n relativePosition.left = element.clientWidth\n }\n return relativePosition\n}\n"],"names":["ensureArray"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"helper.mjs","sources":["../../../../../../packages/components/mention/src/helper.ts"],"sourcesContent":["import { ensureArray, isFirefox } from '@element-plus/utils'\n\nimport type { MentionCtx, MentionOption } from './types'\n\nexport const filterOption = (\n pattern: string,\n option: MentionOption\n): boolean => {\n const lowerCase = pattern.toLowerCase()\n const label = option.label || option.value || ''\n return label.toLowerCase().includes(lowerCase)\n}\n\nexport const getMentionCtx = (\n inputEl: HTMLInputElement | HTMLTextAreaElement,\n prefix: string | string[],\n split: string\n) => {\n const { selectionEnd } = inputEl\n if (selectionEnd === null) return\n const inputValue = inputEl.value\n const prefixArray = ensureArray(prefix)\n let splitIndex = -1\n let mentionCtx: MentionCtx | undefined\n for (let i = selectionEnd - 1; i >= 0; --i) {\n const char = inputValue[i]\n if (char === split || char === '\\n' || char === '\\r') {\n splitIndex = i\n continue\n }\n if (prefixArray.includes(char)) {\n const end = splitIndex === -1 ? selectionEnd : splitIndex\n const pattern = inputValue.slice(i + 1, end)\n mentionCtx = {\n pattern,\n start: i + 1,\n end,\n prefix: char,\n prefixIndex: i,\n splitIndex,\n selectionEnd,\n }\n break\n }\n }\n return mentionCtx\n}\n\n/**\n * fork from textarea-caret-position\n * https://github.com/component/textarea-caret-position\n * The MIT License (MIT)\n * Copyright (c) 2015 Jonathan Ong me@jongleberry.com\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport const getCursorPosition = (\n element: HTMLInputElement | HTMLTextAreaElement,\n options = {\n debug: false,\n useSelectionEnd: false,\n }\n) => {\n const selectionStart =\n element.selectionStart !== null ? element.selectionStart : 0\n const selectionEnd = element.selectionEnd !== null ? element.selectionEnd : 0\n const position = options.useSelectionEnd ? selectionEnd : selectionStart\n // We'll copy the properties below into the mirror div.\n // Note that some browsers, such as Firefox, do not concatenate properties\n // into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n // so we have to list every single property explicitly.\n const properties: string[] = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n 'letterSpacing',\n 'wordSpacing',\n 'tabSize',\n 'MozTabSize',\n ]\n\n if (options.debug) {\n const el = document.querySelector(\n '#input-textarea-caret-position-mirror-div'\n )\n if (el?.parentNode) el.parentNode.removeChild(el)\n }\n\n // The mirror div will replicate the textareas style\n const div = document.createElement('div')\n div.id = 'input-textarea-caret-position-mirror-div'\n document.body.appendChild(div)\n\n const style = div.style\n const computed = window.getComputedStyle(element)\n\n const isInput = element.nodeName === 'INPUT'\n\n // Default textarea styles\n style.whiteSpace = isInput ? 'nowrap' : 'pre-wrap'\n if (!isInput) style.wordWrap = 'break-word' // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute' // required to return coordinates properly\n if (!options.debug) style.visibility = 'hidden' // not 'display: none' because we want rendering\n\n // Transfer the element's properties to the div\n properties.forEach((prop) => {\n if (isInput && prop === 'lineHeight') {\n // Special case for <input>s because text is rendered centered and line height may be != height\n if (computed.boxSizing === 'border-box') {\n const height = Number.parseInt(computed.height as string)\n const outerHeight =\n Number.parseInt(computed.paddingTop as string) +\n Number.parseInt(computed.paddingBottom as string) +\n Number.parseInt(computed.borderTopWidth as string) +\n Number.parseInt(computed.borderBottomWidth as string)\n const targetHeight =\n outerHeight + Number.parseInt(computed.lineHeight as string)\n if (height > targetHeight) {\n style.lineHeight = `${height - outerHeight}px`\n } else if (height === targetHeight) {\n style.lineHeight = computed.lineHeight\n } else {\n style.lineHeight = '0'\n }\n } else {\n style.lineHeight = computed.height\n }\n } else {\n style[prop as any] = computed[prop as any]\n }\n })\n\n if (isFirefox()) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > Number.parseInt(computed.height as string)) {\n style.overflowY = 'scroll'\n }\n } else {\n style.overflow = 'hidden' // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n\n div.textContent = element.value.slice(0, Math.max(0, position))\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput && div.textContent) {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00A0')\n }\n\n const span = document.createElement('span')\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textareas content into the <span> created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.slice(Math.max(0, position)) || '.' // || because a completely empty faux span doesn't render at all\n span.style.position = 'relative'\n span.style.left = `${-element.scrollLeft}px`\n span.style.top = `${-element.scrollTop}px`\n div.appendChild(span)\n\n const relativePosition = {\n top: span.offsetTop + Number.parseInt(computed.borderTopWidth as string),\n left: span.offsetLeft + Number.parseInt(computed.borderLeftWidth as string),\n // We don't use line-height since it may be too large for position. Eg. 34px\n // for input\n height: Number.parseInt(computed.fontSize as string) * 1.5,\n }\n\n if (options.debug) {\n span.style.backgroundColor = '#aaa'\n } else {\n document.body.removeChild(div)\n }\n\n if (relativePosition.left >= element.clientWidth) {\n relativePosition.left = element.clientWidth\n }\n return relativePosition\n}\n"],"names":["ensureArray"],"mappings":"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"}
|
@@ -21,6 +21,7 @@ export declare const mentionProps: {
|
|
21
21
|
loading: BooleanConstructor;
|
22
22
|
popperClass: import("@element-plus/nightly/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, string, boolean>;
|
23
23
|
popperOptions: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => Partial<Options>) | (() => Partial<Options>) | ((new (...args: any[]) => Partial<Options>) | (() => Partial<Options>))[], unknown, unknown, () => Partial<Options>, boolean>;
|
24
|
+
props: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => MentionOptionProps) | (() => MentionOptionProps) | ((new (...args: any[]) => MentionOptionProps) | (() => MentionOptionProps))[], unknown, unknown, () => Required<MentionOptionProps>, boolean>;
|
24
25
|
inputmode: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal") | (() => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined) | ((new (...args: any[]) => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal") | (() => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined))[], unknown, unknown, undefined, boolean>;
|
25
26
|
name: StringConstructor;
|
26
27
|
ariaLabel: StringConstructor;
|
@@ -126,3 +127,10 @@ export type MentionProps = ExtractPropTypes<typeof mentionProps>;
|
|
126
127
|
export type MentionPropsPublic = __ExtractPublicPropTypes<typeof mentionProps>;
|
127
128
|
export type MentionInstance = InstanceType<typeof Mention> & unknown;
|
128
129
|
export type { MentionOption } from './types';
|
130
|
+
export type MentionOptionProps = {
|
131
|
+
value?: string;
|
132
|
+
label?: string;
|
133
|
+
disabled?: string;
|
134
|
+
[key: string]: string | undefined;
|
135
|
+
};
|
136
|
+
export declare const mentionDefaultProps: Required<MentionOptionProps>;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { filterOption } from './helper.mjs';
|
2
2
|
import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
|
3
3
|
import { inputProps } from '../../input/src/input.mjs';
|
4
|
-
import { isString, isFunction } from '@vue/shared';
|
4
|
+
import { isString, isFunction, isObject } from '@vue/shared';
|
5
5
|
import { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';
|
6
6
|
|
7
7
|
const mentionProps = buildProps({
|
@@ -55,6 +55,10 @@ const mentionProps = buildProps({
|
|
55
55
|
popperOptions: {
|
56
56
|
type: definePropType(Object),
|
57
57
|
default: () => ({})
|
58
|
+
},
|
59
|
+
props: {
|
60
|
+
type: definePropType(Object),
|
61
|
+
default: () => mentionDefaultProps
|
58
62
|
}
|
59
63
|
});
|
60
64
|
const mentionEmits = {
|
@@ -62,10 +66,15 @@ const mentionEmits = {
|
|
62
66
|
"whole-remove": (pattern, prefix) => isString(pattern) && isString(prefix),
|
63
67
|
input: (value) => isString(value),
|
64
68
|
search: (pattern, prefix) => isString(pattern) && isString(prefix),
|
65
|
-
select: (option, prefix) =>
|
69
|
+
select: (option, prefix) => isObject(option) && isString(prefix),
|
66
70
|
focus: (evt) => evt instanceof FocusEvent,
|
67
71
|
blur: (evt) => evt instanceof FocusEvent
|
68
72
|
};
|
73
|
+
const mentionDefaultProps = {
|
74
|
+
value: "value",
|
75
|
+
label: "label",
|
76
|
+
disabled: "disabled"
|
77
|
+
};
|
69
78
|
|
70
|
-
export { mentionEmits, mentionProps };
|
79
|
+
export { mentionDefaultProps, mentionEmits, mentionProps };
|
71
80
|
//# sourceMappingURL=mention.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mention.mjs","sources":["../../../../../../packages/components/mention/src/mention.ts"],"sourcesContent":["import {\n buildProps,\n definePropType,\n isFunction,\n isString,\n} from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { inputProps } from '@element-plus/components/input'\nimport { filterOption } from './helper'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Mention from './mention.vue'\nimport type { MentionOption } from './types'\nimport type { Options } from '@element-plus/components/popper'\n\nexport const mentionProps = buildProps({\n ...inputProps,\n /**\n * @description mention options list\n */\n options: {\n type: definePropType<MentionOption[]>(Array),\n default: () => [],\n },\n /**\n * @description prefix character to trigger mentions. The string length must be exactly 1.\n */\n prefix: {\n type: definePropType<string | string[]>([String, Array]),\n default: '@',\n validator: (val: string | string[]) => {\n if (isString(val)) return val.length === 1\n return val.every((v) => isString(v) && v.length === 1)\n },\n },\n /**\n * @description character to split mentions. The string length must be exactly 1.\n */\n split: {\n type: String,\n default: ' ',\n validator: (val: string) => val.length === 1,\n },\n /**\n * @description customize filter option logic.\n */\n filterOption: {\n type: definePropType<false | typeof filterOption>([Boolean, Function]),\n default: () => filterOption,\n validator: (val) => {\n if (val === false) return true\n return isFunction(val)\n },\n },\n /**\n * @description set popup placement\n */\n placement: {\n type: definePropType<'bottom' | 'top'>(String),\n default: 'bottom',\n },\n /**\n * @description whether the dropdown panel has an arrow\n */\n showArrow: Boolean,\n /**\n * @description offset of the dropdown panel\n */\n offset: {\n type: Number,\n default: 0,\n },\n /**\n * @description when backspace is pressed to delete, whether the mention content is deleted as a whole\n */\n whole: Boolean,\n /**\n * @description when backspace is pressed to delete, check if the mention is a whole\n */\n checkIsWhole: {\n type: definePropType<(pattern: string, prefix: string) => boolean>(\n Function\n ),\n },\n /**\n * @description input value\n */\n modelValue: String,\n /**\n * @description whether the dropdown panel of mentions is in a loading state.\n */\n loading: Boolean,\n /**\n * @description custom class name for dropdown panel\n */\n popperClass: {\n type: String,\n default: '',\n },\n /**\n * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n */\n popperOptions: {\n type: definePropType<Partial<Options>>(Object),\n default: () => ({} as Partial<Options>),\n },\n})\n\nexport const mentionEmits = {\n [UPDATE_MODEL_EVENT]: (value: string) => isString(value),\n 'whole-remove': (pattern: string, prefix: string) =>\n isString(pattern) && isString(prefix),\n input: (value: string) => isString(value),\n search: (pattern: string, prefix: string) =>\n isString(pattern) && isString(prefix),\n select: (option: MentionOption, prefix: string) =>\n
|
1
|
+
{"version":3,"file":"mention.mjs","sources":["../../../../../../packages/components/mention/src/mention.ts"],"sourcesContent":["import {\n buildProps,\n definePropType,\n isFunction,\n isObject,\n isString,\n} from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { inputProps } from '@element-plus/components/input'\nimport { filterOption } from './helper'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Mention from './mention.vue'\nimport type { MentionOption } from './types'\nimport type { Options } from '@element-plus/components/popper'\n\nexport const mentionProps = buildProps({\n ...inputProps,\n /**\n * @description mention options list\n */\n options: {\n type: definePropType<MentionOption[]>(Array),\n default: () => [],\n },\n /**\n * @description prefix character to trigger mentions. The string length must be exactly 1.\n */\n prefix: {\n type: definePropType<string | string[]>([String, Array]),\n default: '@',\n validator: (val: string | string[]) => {\n if (isString(val)) return val.length === 1\n return val.every((v) => isString(v) && v.length === 1)\n },\n },\n /**\n * @description character to split mentions. The string length must be exactly 1.\n */\n split: {\n type: String,\n default: ' ',\n validator: (val: string) => val.length === 1,\n },\n /**\n * @description customize filter option logic.\n */\n filterOption: {\n type: definePropType<false | typeof filterOption>([Boolean, Function]),\n default: () => filterOption,\n validator: (val) => {\n if (val === false) return true\n return isFunction(val)\n },\n },\n /**\n * @description set popup placement\n */\n placement: {\n type: definePropType<'bottom' | 'top'>(String),\n default: 'bottom',\n },\n /**\n * @description whether the dropdown panel has an arrow\n */\n showArrow: Boolean,\n /**\n * @description offset of the dropdown panel\n */\n offset: {\n type: Number,\n default: 0,\n },\n /**\n * @description when backspace is pressed to delete, whether the mention content is deleted as a whole\n */\n whole: Boolean,\n /**\n * @description when backspace is pressed to delete, check if the mention is a whole\n */\n checkIsWhole: {\n type: definePropType<(pattern: string, prefix: string) => boolean>(\n Function\n ),\n },\n /**\n * @description input value\n */\n modelValue: String,\n /**\n * @description whether the dropdown panel of mentions is in a loading state.\n */\n loading: Boolean,\n /**\n * @description custom class name for dropdown panel\n */\n popperClass: {\n type: String,\n default: '',\n },\n /**\n * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n */\n popperOptions: {\n type: definePropType<Partial<Options>>(Object),\n default: () => ({} as Partial<Options>),\n },\n /**\n * @description configuration options\n */\n props: {\n type: definePropType<MentionOptionProps>(Object),\n default: () => mentionDefaultProps,\n },\n})\n\nexport const mentionEmits = {\n [UPDATE_MODEL_EVENT]: (value: string) => isString(value),\n 'whole-remove': (pattern: string, prefix: string) =>\n isString(pattern) && isString(prefix),\n input: (value: string) => isString(value),\n search: (pattern: string, prefix: string) =>\n isString(pattern) && isString(prefix),\n select: (option: MentionOption, prefix: string) =>\n isObject(option) && isString(prefix),\n focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n}\n\nexport type MentionEmits = typeof mentionEmits\nexport type MentionProps = ExtractPropTypes<typeof mentionProps>\nexport type MentionPropsPublic = __ExtractPublicPropTypes<typeof mentionProps>\nexport type MentionInstance = InstanceType<typeof Mention> & unknown\n\nexport type { MentionOption } from './types'\n\nexport type MentionOptionProps = {\n value?: string\n label?: string\n disabled?: string\n [key: string]: string | undefined\n}\n\nexport const mentionDefaultProps: Required<MentionOptionProps> = {\n value: 'value',\n label: 'label',\n disabled: 'disabled',\n}\n"],"names":[],"mappings":"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"}
|
@@ -22,6 +22,7 @@ declare const __VLS_component: import("vue").DefineComponent<{
|
|
22
22
|
loading: BooleanConstructor;
|
23
23
|
popperClass: import("@element-plus/nightly/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, string, boolean>;
|
24
24
|
popperOptions: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => Partial<import("@popperjs/core").Options>) | (() => Partial<import("@popperjs/core").Options>) | ((new (...args: any[]) => Partial<import("@popperjs/core").Options>) | (() => Partial<import("@popperjs/core").Options>))[], unknown, unknown, () => Partial<import("@popperjs/core").Options>, boolean>;
|
25
|
+
props: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => import("./mention").MentionOptionProps) | (() => import("./mention").MentionOptionProps) | ((new (...args: any[]) => import("./mention").MentionOptionProps) | (() => import("./mention").MentionOptionProps))[], unknown, unknown, () => Required<import("./mention").MentionOptionProps>, boolean>;
|
25
26
|
inputmode: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal") | (() => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined) | ((new (...args: any[]) => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal") | (() => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined))[], unknown, unknown, undefined, boolean>;
|
26
27
|
name: StringConstructor;
|
27
28
|
ariaLabel: StringConstructor;
|
@@ -143,6 +144,7 @@ declare const __VLS_component: import("vue").DefineComponent<{
|
|
143
144
|
loading: BooleanConstructor;
|
144
145
|
popperClass: import("@element-plus/nightly/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, string, boolean>;
|
145
146
|
popperOptions: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => Partial<import("@popperjs/core").Options>) | (() => Partial<import("@popperjs/core").Options>) | ((new (...args: any[]) => Partial<import("@popperjs/core").Options>) | (() => Partial<import("@popperjs/core").Options>))[], unknown, unknown, () => Partial<import("@popperjs/core").Options>, boolean>;
|
147
|
+
props: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => import("./mention").MentionOptionProps) | (() => import("./mention").MentionOptionProps) | ((new (...args: any[]) => import("./mention").MentionOptionProps) | (() => import("./mention").MentionOptionProps))[], unknown, unknown, () => Required<import("./mention").MentionOptionProps>, boolean>;
|
146
148
|
inputmode: import("@element-plus/nightly/es/utils").EpPropFinalized<(new (...args: any[]) => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal") | (() => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined) | ((new (...args: any[]) => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal") | (() => "search" | "text" | "none" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined))[], unknown, unknown, undefined, boolean>;
|
147
149
|
name: StringConstructor;
|
148
150
|
ariaLabel: StringConstructor;
|
@@ -247,6 +249,7 @@ declare const __VLS_component: import("vue").DefineComponent<{
|
|
247
249
|
offset: number;
|
248
250
|
id: string;
|
249
251
|
type: string;
|
252
|
+
props: import("./mention").MentionOptionProps;
|
250
253
|
split: string;
|
251
254
|
loading: boolean;
|
252
255
|
placement: import("@element-plus/nightly/es/utils").EpPropMergeType<(new (...args: any[]) => "top" | "bottom") | (() => "top" | "bottom") | ((new (...args: any[]) => "top" | "bottom") | (() => "top" | "bottom"))[], unknown, unknown>;
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, openBlock, createElementBlock, normaliz
|
|
2
2
|
import { pick } from 'lodash-unified';
|
3
3
|
import { ElInput } from '../../input/index.mjs';
|
4
4
|
import { ElTooltip } from '../../tooltip/index.mjs';
|
5
|
-
import { mentionProps, mentionEmits } from './mention.mjs';
|
5
|
+
import { mentionProps, mentionEmits, mentionDefaultProps } from './mention.mjs';
|
6
6
|
import { getCursorPosition, getMentionCtx } from './helper.mjs';
|
7
7
|
import ElMentionDropdown from './mention-dropdown2.mjs';
|
8
8
|
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
|
@@ -37,11 +37,24 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
37
37
|
const mentionCtx = ref();
|
38
38
|
const computedPlacement = computed(() => props.showArrow ? props.placement : `${props.placement}-start`);
|
39
39
|
const computedFallbackPlacements = computed(() => props.showArrow ? ["bottom", "top"] : ["bottom-start", "top-start"]);
|
40
|
+
const aliasProps = computed(() => ({
|
41
|
+
...mentionDefaultProps,
|
42
|
+
...props.props
|
43
|
+
}));
|
44
|
+
const mapOption = (option) => {
|
45
|
+
const base = {
|
46
|
+
label: option[aliasProps.value.label],
|
47
|
+
value: option[aliasProps.value.value],
|
48
|
+
disabled: option[aliasProps.value.disabled]
|
49
|
+
};
|
50
|
+
return { ...option, ...base };
|
51
|
+
};
|
52
|
+
const options = computed(() => props.options.map(mapOption));
|
40
53
|
const filteredOptions = computed(() => {
|
41
|
-
const { filterOption
|
54
|
+
const { filterOption } = props;
|
42
55
|
if (!mentionCtx.value || !filterOption)
|
43
|
-
return options;
|
44
|
-
return options.filter((option) => filterOption(mentionCtx.value.pattern, option));
|
56
|
+
return options.value;
|
57
|
+
return options.value.filter((option) => filterOption(mentionCtx.value.pattern, option));
|
45
58
|
});
|
46
59
|
const dropdownVisible = computed(() => {
|
47
60
|
return visible.value && (!!filteredOptions.value.length || props.loading);
|
@@ -95,7 +108,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
95
108
|
if (!inputEl)
|
96
109
|
return;
|
97
110
|
const inputValue = inputEl.value;
|
98
|
-
const matchOption =
|
111
|
+
const matchOption = options.value.find((item) => item.value === pattern);
|
99
112
|
const isWhole = isFunction(props.checkIsWhole) ? props.checkIsWhole(pattern, prefix) : matchOption;
|
100
113
|
if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {
|
101
114
|
event.preventDefault();
|
@@ -129,6 +142,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
129
142
|
const handleInputMouseDown = () => {
|
130
143
|
syncAfterCursorMove();
|
131
144
|
};
|
145
|
+
const getOriginalOption = (mentionOption) => {
|
146
|
+
return props.options.find((option) => {
|
147
|
+
return mentionOption.value === option[aliasProps.value.value];
|
148
|
+
});
|
149
|
+
};
|
132
150
|
const handleSelect = (item) => {
|
133
151
|
if (!mentionCtx.value)
|
134
152
|
return;
|
@@ -143,7 +161,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
143
161
|
const newValue = inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart;
|
144
162
|
emit(UPDATE_MODEL_EVENT, newValue);
|
145
163
|
emit(INPUT_EVENT, newValue);
|
146
|
-
emit("select", item, mentionCtx.value.prefix);
|
164
|
+
emit("select", getOriginalOption(item), mentionCtx.value.prefix);
|
147
165
|
const newSelectionEnd = mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0);
|
148
166
|
nextTick(() => {
|
149
167
|
inputEl.selectionStart = newSelectionEnd;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mention2.mjs","sources":["../../../../../../packages/components/mention/src/mention.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" :class=\"ns.b()\">\n <el-input\n v-bind=\"mergeProps(passInputProps, $attrs)\"\n ref=\"elInputRef\"\n :model-value=\"modelValue\"\n :disabled=\"disabled\"\n :role=\"dropdownVisible ? 'combobox' : undefined\"\n :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n :aria-controls=\"dropdownVisible ? contentId : undefined\"\n :aria-expanded=\"dropdownVisible || undefined\"\n :aria-label=\"ariaLabel\"\n :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n @input=\"handleInputChange\"\n @keydown=\"handleInputKeyDown\"\n @mousedown=\"handleInputMouseDown\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-input>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownVisible\"\n :popper-class=\"[ns.e('popper'), popperClass]\"\n :popper-options=\"popperOptions\"\n :placement=\"computedPlacement\"\n :fallback-placements=\"computedFallbackPlacements\"\n effect=\"light\"\n pure\n :offset=\"offset\"\n :show-arrow=\"showArrow\"\n >\n <template #default>\n <div :style=\"cursorStyle\" />\n </template>\n <template #content>\n <el-mention-dropdown\n ref=\"dropdownRef\"\n :options=\"filteredOptions\"\n :disabled=\"disabled\"\n :loading=\"loading\"\n :content-id=\"contentId\"\n :aria-label=\"ariaLabel\"\n @select=\"handleSelect\"\n @click.stop=\"elInputRef?.focus\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-mention-dropdown>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { useFocusController, useId, useNamespace } from '@element-plus/hooks'\nimport ElInput, { inputProps } from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { isFunction } from '@element-plus/utils'\nimport { mentionEmits, mentionProps } from './mention'\nimport { getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n name: 'ElMention',\n inheritAttrs: false,\n})\n\nconst props = defineProps(mentionProps)\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst filteredOptions = computed(() => {\n const { filterOption, options } = props\n if (!mentionCtx.value || !filterOption) return options\n return options.filter((option) =>\n filterOption(mentionCtx.value!.pattern, option)\n )\n})\n\nconst dropdownVisible = computed(() => {\n return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n if (!('code' in event) || elInputRef.value?.isComposing) return\n\n switch (event.code) {\n case EVENT_CODE.left:\n case EVENT_CODE.right:\n syncAfterCursorMove()\n break\n case EVENT_CODE.up:\n case EVENT_CODE.down:\n if (!visible.value) return\n event.preventDefault()\n dropdownRef.value?.navigateOptions(\n event.code === EVENT_CODE.up ? 'prev' : 'next'\n )\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!visible.value) return\n event.preventDefault()\n if (dropdownRef.value?.hoverOption) {\n dropdownRef.value?.selectHoverOption()\n } else {\n visible.value = false\n }\n break\n case EVENT_CODE.esc:\n if (!visible.value) return\n event.preventDefault()\n visible.value = false\n break\n case EVENT_CODE.backspace:\n if (props.whole && mentionCtx.value) {\n const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n mentionCtx.value\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const matchOption = props.options.find((item) => item.value === pattern)\n const isWhole = isFunction(props.checkIsWhole)\n ? props.checkIsWhole(pattern, prefix)\n : matchOption\n if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n event.preventDefault()\n const newValue =\n inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('whole-remove', pattern, prefix)\n\n const newSelectionEnd = prefixIndex\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n syncDropdownVisible()\n })\n }\n }\n }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n disabled,\n afterFocus() {\n syncAfterCursorMove()\n },\n beforeBlur(event) {\n return tooltipRef.value?.isFocusInsideContent(event)\n },\n afterBlur() {\n visible.value = false\n },\n})\n\nconst handleInputMouseDown = () => {\n syncAfterCursorMove()\n}\n\nconst handleSelect = (item: MentionOption) => {\n if (!mentionCtx.value) return\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const { split } = props\n\n const newEndPart = inputValue.slice(mentionCtx.value.end)\n const alreadySeparated = newEndPart.startsWith(split)\n const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n const newValue =\n inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('select', item, mentionCtx.value.prefix)\n\n const newSelectionEnd =\n mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n inputEl.focus()\n syncDropdownVisible()\n })\n}\n\nconst getInputEl = () =>\n props.type === 'textarea'\n ? elInputRef.value?.textarea\n : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n // can't use nextTick(), get cursor position will be wrong\n setTimeout(() => {\n syncCursor()\n syncDropdownVisible()\n nextTick(() => tooltipRef.value?.updatePopper())\n }, 0)\n}\n\nconst syncCursor = () => {\n const inputEl = getInputEl()\n if (!inputEl) return\n\n const caretPosition = getCursorPosition(inputEl)\n const inputRect = inputEl.getBoundingClientRect()\n const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n cursorStyle.value = {\n position: 'absolute',\n width: 0,\n height: `${caretPosition.height}px`,\n left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n }\n}\n\nconst syncDropdownVisible = () => {\n const inputEl = getInputEl()\n if (document.activeElement !== inputEl) {\n visible.value = false\n return\n }\n const { prefix, split } = props\n mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n visible.value = true\n emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n return\n }\n visible.value = false\n}\n\ndefineExpose({\n input: elInputRef,\n tooltip: tooltipRef,\n dropdownVisible,\n})\n</script>\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"mention2.mjs","sources":["../../../../../../packages/components/mention/src/mention.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" :class=\"ns.b()\">\n <el-input\n v-bind=\"mergeProps(passInputProps, $attrs)\"\n ref=\"elInputRef\"\n :model-value=\"modelValue\"\n :disabled=\"disabled\"\n :role=\"dropdownVisible ? 'combobox' : undefined\"\n :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n :aria-controls=\"dropdownVisible ? contentId : undefined\"\n :aria-expanded=\"dropdownVisible || undefined\"\n :aria-label=\"ariaLabel\"\n :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n @input=\"handleInputChange\"\n @keydown=\"handleInputKeyDown\"\n @mousedown=\"handleInputMouseDown\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-input>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownVisible\"\n :popper-class=\"[ns.e('popper'), popperClass]\"\n :popper-options=\"popperOptions\"\n :placement=\"computedPlacement\"\n :fallback-placements=\"computedFallbackPlacements\"\n effect=\"light\"\n pure\n :offset=\"offset\"\n :show-arrow=\"showArrow\"\n >\n <template #default>\n <div :style=\"cursorStyle\" />\n </template>\n <template #content>\n <el-mention-dropdown\n ref=\"dropdownRef\"\n :options=\"filteredOptions\"\n :disabled=\"disabled\"\n :loading=\"loading\"\n :content-id=\"contentId\"\n :aria-label=\"ariaLabel\"\n @select=\"handleSelect\"\n @click.stop=\"elInputRef?.focus\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-mention-dropdown>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { useFocusController, useId, useNamespace } from '@element-plus/hooks'\nimport ElInput, { inputProps } from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { isFunction } from '@element-plus/utils'\nimport { mentionDefaultProps, mentionEmits, mentionProps } from './mention'\nimport { getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n name: 'ElMention',\n inheritAttrs: false,\n})\n\nconst props = defineProps(mentionProps)\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n ...mentionDefaultProps,\n ...props.props,\n}))\n\nconst mapOption = (option: MentionOption) => {\n const base = {\n label: option[aliasProps.value.label],\n value: option[aliasProps.value.value],\n disabled: option[aliasProps.value.disabled],\n }\n return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n const { filterOption } = props\n if (!mentionCtx.value || !filterOption) return options.value\n return options.value.filter((option) =>\n filterOption(mentionCtx.value!.pattern, option)\n )\n})\n\nconst dropdownVisible = computed(() => {\n return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n if (!('code' in event) || elInputRef.value?.isComposing) return\n\n switch (event.code) {\n case EVENT_CODE.left:\n case EVENT_CODE.right:\n syncAfterCursorMove()\n break\n case EVENT_CODE.up:\n case EVENT_CODE.down:\n if (!visible.value) return\n event.preventDefault()\n dropdownRef.value?.navigateOptions(\n event.code === EVENT_CODE.up ? 'prev' : 'next'\n )\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!visible.value) return\n event.preventDefault()\n if (dropdownRef.value?.hoverOption) {\n dropdownRef.value?.selectHoverOption()\n } else {\n visible.value = false\n }\n break\n case EVENT_CODE.esc:\n if (!visible.value) return\n event.preventDefault()\n visible.value = false\n break\n case EVENT_CODE.backspace:\n if (props.whole && mentionCtx.value) {\n const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n mentionCtx.value\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const matchOption = options.value.find((item) => item.value === pattern)\n const isWhole = isFunction(props.checkIsWhole)\n ? props.checkIsWhole(pattern, prefix)\n : matchOption\n if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n event.preventDefault()\n const newValue =\n inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('whole-remove', pattern, prefix)\n\n const newSelectionEnd = prefixIndex\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n syncDropdownVisible()\n })\n }\n }\n }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n disabled,\n afterFocus() {\n syncAfterCursorMove()\n },\n beforeBlur(event) {\n return tooltipRef.value?.isFocusInsideContent(event)\n },\n afterBlur() {\n visible.value = false\n },\n})\n\nconst handleInputMouseDown = () => {\n syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n return props.options.find((option: MentionOption) => {\n return mentionOption.value === option[aliasProps.value.value]\n })\n}\n\nconst handleSelect = (item: MentionOption) => {\n if (!mentionCtx.value) return\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const { split } = props\n\n const newEndPart = inputValue.slice(mentionCtx.value.end)\n const alreadySeparated = newEndPart.startsWith(split)\n const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n const newValue =\n inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n const newSelectionEnd =\n mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n inputEl.focus()\n syncDropdownVisible()\n })\n}\n\nconst getInputEl = () =>\n props.type === 'textarea'\n ? elInputRef.value?.textarea\n : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n // can't use nextTick(), get cursor position will be wrong\n setTimeout(() => {\n syncCursor()\n syncDropdownVisible()\n nextTick(() => tooltipRef.value?.updatePopper())\n }, 0)\n}\n\nconst syncCursor = () => {\n const inputEl = getInputEl()\n if (!inputEl) return\n\n const caretPosition = getCursorPosition(inputEl)\n const inputRect = inputEl.getBoundingClientRect()\n const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n cursorStyle.value = {\n position: 'absolute',\n width: 0,\n height: `${caretPosition.height}px`,\n left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n }\n}\n\nconst syncDropdownVisible = () => {\n const inputEl = getInputEl()\n if (document.activeElement !== inputEl) {\n visible.value = false\n return\n }\n const { prefix, split } = props\n mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n visible.value = true\n emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n return\n }\n visible.value = false\n}\n\ndefineExpose({\n input: elInputRef,\n tooltip: tooltipRef,\n dropdownVisible,\n})\n</script>\n"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import Menu from './src/menu.mjs';
|
2
2
|
export { menuEmits, menuProps } from './src/menu.mjs';
|
3
|
-
import MenuItem from './src/menu-
|
3
|
+
import MenuItem from './src/menu-item.mjs';
|
4
4
|
import MenuItemGroup from './src/menu-item-group2.mjs';
|
5
5
|
import SubMenu from './src/sub-menu.mjs';
|
6
6
|
export { subMenuProps } from './src/sub-menu.mjs';
|
7
|
-
export { menuItemEmits, menuItemProps } from './src/menu-
|
7
|
+
export { menuItemEmits, menuItemProps } from './src/menu-item2.mjs';
|
8
8
|
export { menuItemGroupProps } from './src/menu-item-group.mjs';
|
9
9
|
export { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './src/tokens.mjs';
|
10
10
|
import { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';
|
@@ -1,19 +1,105 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import { defineComponent, getCurrentInstance, inject, toRef, computed, reactive, onMounted, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, unref, createBlock, withCtx, renderSlot, createElementVNode, Fragment } from 'vue';
|
2
|
+
import { ElTooltip } from '../../tooltip/index.mjs';
|
3
|
+
import useMenu from './use-menu.mjs';
|
4
|
+
import { menuItemProps, menuItemEmits } from './menu-item2.mjs';
|
5
|
+
import { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens.mjs';
|
6
|
+
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
|
7
|
+
import { isPropAbsent } from '../../../utils/types.mjs';
|
8
|
+
import { debugWarn, throwError } from '../../../utils/error.mjs';
|
9
|
+
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
|
3
10
|
|
4
|
-
const
|
5
|
-
|
6
|
-
|
7
|
-
default: null
|
8
|
-
},
|
9
|
-
route: {
|
10
|
-
type: definePropType([String, Object])
|
11
|
-
},
|
12
|
-
disabled: Boolean
|
11
|
+
const COMPONENT_NAME = "ElMenuItem";
|
12
|
+
const __default__ = defineComponent({
|
13
|
+
name: COMPONENT_NAME
|
13
14
|
});
|
14
|
-
const
|
15
|
-
|
16
|
-
|
15
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
16
|
+
...__default__,
|
17
|
+
props: menuItemProps,
|
18
|
+
emits: menuItemEmits,
|
19
|
+
setup(__props, { expose, emit }) {
|
20
|
+
const props = __props;
|
21
|
+
isPropAbsent(props.index) && debugWarn();
|
22
|
+
const instance = getCurrentInstance();
|
23
|
+
const rootMenu = inject(MENU_INJECTION_KEY);
|
24
|
+
const nsMenu = useNamespace("menu");
|
25
|
+
const nsMenuItem = useNamespace("menu-item");
|
26
|
+
if (!rootMenu)
|
27
|
+
throwError(COMPONENT_NAME, "can not inject root menu");
|
28
|
+
const { parentMenu, indexPath } = useMenu(instance, toRef(props, "index"));
|
29
|
+
const subMenu = inject(`${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`);
|
30
|
+
if (!subMenu)
|
31
|
+
throwError(COMPONENT_NAME, "can not inject sub menu");
|
32
|
+
const active = computed(() => props.index === rootMenu.activeIndex);
|
33
|
+
const item = reactive({
|
34
|
+
index: props.index,
|
35
|
+
indexPath,
|
36
|
+
active
|
37
|
+
});
|
38
|
+
const handleClick = () => {
|
39
|
+
if (!props.disabled) {
|
40
|
+
rootMenu.handleMenuItemClick({
|
41
|
+
index: props.index,
|
42
|
+
indexPath: indexPath.value,
|
43
|
+
route: props.route
|
44
|
+
});
|
45
|
+
emit("click", item);
|
46
|
+
}
|
47
|
+
};
|
48
|
+
onMounted(() => {
|
49
|
+
subMenu.addSubMenu(item);
|
50
|
+
rootMenu.addMenuItem(item);
|
51
|
+
});
|
52
|
+
onBeforeUnmount(() => {
|
53
|
+
subMenu.removeSubMenu(item);
|
54
|
+
rootMenu.removeMenuItem(item);
|
55
|
+
});
|
56
|
+
expose({
|
57
|
+
parentMenu,
|
58
|
+
rootMenu,
|
59
|
+
active,
|
60
|
+
nsMenu,
|
61
|
+
nsMenuItem,
|
62
|
+
handleClick
|
63
|
+
});
|
64
|
+
return (_ctx, _cache) => {
|
65
|
+
return openBlock(), createElementBlock("li", {
|
66
|
+
class: normalizeClass([
|
67
|
+
unref(nsMenuItem).b(),
|
68
|
+
unref(nsMenuItem).is("active", unref(active)),
|
69
|
+
unref(nsMenuItem).is("disabled", _ctx.disabled)
|
70
|
+
]),
|
71
|
+
role: "menuitem",
|
72
|
+
tabindex: "-1",
|
73
|
+
onClick: handleClick
|
74
|
+
}, [
|
75
|
+
unref(parentMenu).type.name === "ElMenu" && unref(rootMenu).props.collapse && _ctx.$slots.title ? (openBlock(), createBlock(unref(ElTooltip), {
|
76
|
+
key: 0,
|
77
|
+
effect: unref(rootMenu).props.popperEffect,
|
78
|
+
placement: "right",
|
79
|
+
"fallback-placements": ["left"],
|
80
|
+
persistent: unref(rootMenu).props.persistent,
|
81
|
+
"focus-on-target": ""
|
82
|
+
}, {
|
83
|
+
content: withCtx(() => [
|
84
|
+
renderSlot(_ctx.$slots, "title")
|
85
|
+
]),
|
86
|
+
default: withCtx(() => [
|
87
|
+
createElementVNode("div", {
|
88
|
+
class: normalizeClass(unref(nsMenu).be("tooltip", "trigger"))
|
89
|
+
}, [
|
90
|
+
renderSlot(_ctx.$slots, "default")
|
91
|
+
], 2)
|
92
|
+
]),
|
93
|
+
_: 3
|
94
|
+
}, 8, ["effect", "persistent"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
95
|
+
renderSlot(_ctx.$slots, "default"),
|
96
|
+
renderSlot(_ctx.$slots, "title")
|
97
|
+
], 64))
|
98
|
+
], 2);
|
99
|
+
};
|
100
|
+
}
|
101
|
+
});
|
102
|
+
var MenuItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "menu-item.vue"]]);
|
17
103
|
|
18
|
-
export {
|
104
|
+
export { MenuItem as default };
|
19
105
|
//# sourceMappingURL=menu-item.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"menu-item.mjs","sources":["../../../../../../packages/components/menu/src/menu-item.
|
1
|
+
{"version":3,"file":"menu-item.mjs","sources":["../../../../../../packages/components/menu/src/menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n nsMenuItem.b(),\n nsMenuItem.is('active', active),\n nsMenuItem.is('disabled', disabled),\n ]\"\n role=\"menuitem\"\n tabindex=\"-1\"\n @click=\"handleClick\"\n >\n <el-tooltip\n v-if=\"\n parentMenu.type.name === 'ElMenu' &&\n rootMenu.props.collapse &&\n $slots.title\n \"\n :effect=\"rootMenu.props.popperEffect\"\n placement=\"right\"\n :fallback-placements=\"['left']\"\n :persistent=\"rootMenu.props.persistent\"\n focus-on-target\n >\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </el-tooltip>\n <template v-else>\n <slot />\n <slot name=\"title\" />\n </template>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\n// @ts-nocheck\nimport {\n computed,\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n onMounted,\n reactive,\n toRef,\n} from 'vue'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { debugWarn, isPropAbsent, throwError } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport useMenu from './use-menu'\nimport { menuItemEmits, menuItemProps } from './menu-item'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'ElMenuItem'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = defineProps(menuItemProps)\nconst emit = defineEmits(menuItemEmits)\n\nisPropAbsent(props.index) &&\n debugWarn(COMPONENT_NAME, 'Missing required prop: \"index\"')\n\nconst instance = getCurrentInstance()!\nconst rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\nconst nsMenu = useNamespace('menu')\nconst nsMenuItem = useNamespace('menu-item')\nif (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\nconst { parentMenu, indexPath } = useMenu(instance, toRef(props, 'index'))\n\nconst subMenu = inject<SubMenuProvider>(\n `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`\n)\nif (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\nconst active = computed(() => props.index === rootMenu.activeIndex)\nconst item: MenuItemRegistered = reactive({\n index: props.index,\n indexPath,\n active,\n})\n\nconst handleClick = () => {\n if (!props.disabled) {\n rootMenu.handleMenuItemClick({\n index: props.index,\n indexPath: indexPath.value,\n route: props.route,\n })\n emit('click', item)\n }\n}\n\nonMounted(() => {\n subMenu.addSubMenu(item)\n rootMenu.addMenuItem(item)\n})\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item)\n rootMenu.removeMenuItem(item)\n})\n\ndefineExpose({\n parentMenu,\n rootMenu,\n active,\n nsMenu,\n nsMenuItem,\n handleClick,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;mCA0Dc,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;;AAIA,IAAA,YAAA,CAAa,KAAM,CAAA,KAAK,CACtB,IAAA,SAAA,CAA0D,CAAA,CAAA;AAE5D,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAM,MAAA,QAAA,GAAW,OAAqB,kBAAkB,CAAA,CAAA;AACxD,IAAM,MAAA,MAAA,GAAS,aAAa,MAAM,CAAA,CAAA;AAClC,IAAM,MAAA,UAAA,GAAa,aAAa,WAAW,CAAA,CAAA;AAC3C,IAAA,IAAI,CAAC,QAAA;AAEL,MAAM,yBAAwB,EAAA,0BAAsB,CAAA,CAAA;AAEpD,IAAA,MAAM,EAAU,UAAA,EAAA,SAAA,EAAA,GAAA,OAAA,CAAA,QAAA,EAAA,KAAA,CAAA,KAAA,EAAA,OAAA,CAAA,CAAA,CAAA;AAAA,IAAA,MACX,OAAA,GAAA,MAAA,CAAA,CAAA,EAAA,sBAA6C,CAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAClD,IAAA,CAAA,OAAA;AACA,MAAA,UAAK,CAAS,cAAW,EAAA,yBAAyC,CAAA,CAAA;AAElE,IAAA,MAAM,SAAS,QAAS,CAAA,MAAM,KAAM,CAAA,KAAA,KAAU,SAAS,WAAW,CAAA,CAAA;AAClE,IAAA,MAAM,OAA2B,QAAS,CAAA;AAAA,MACxC,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,SAAA;AAAA,MACA,MAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,cAAc,MAAM;AACxB,MAAI,IAAA,CAAC,MAAM,QAAU,EAAA;AACnB,QAAA,QAAA,CAAS,mBAAoB,CAAA;AAAA,UAC3B,OAAO,KAAM,CAAA,KAAA;AAAA,UACb,WAAW,SAAU,CAAA,KAAA;AAAA,UACrB,OAAO,KAAM,CAAA,KAAA;AAAA,SACd,CAAA,CAAA;AACD,QAAA,IAAA,CAAK,SAAS,IAAI,CAAA,CAAA;AAAA,OACpB;AAAA,KACF,CAAA;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAA;AACvB,MAAA,QAAA,CAAS,YAAY,IAAI,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,OAAA,CAAQ,cAAc,IAAI,CAAA,CAAA;AAC1B,MAAA,QAAA,CAAS,eAAe,IAAI,CAAA,CAAA;AAAA,KAC7B,CAAA,CAAA;AAED,IAAa,MAAA,CAAA;AAAA,MACX,UAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|