@topvisor/ui 1.4.3-updateVue.1 → 1.5.0-updates.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/api-CawzY1Cw.amd.js +2 -0
- package/.chunks/api-CawzY1Cw.amd.js.map +1 -0
- package/.chunks/api-CawzY1Cw.esm.js +208 -0
- package/.chunks/api-CawzY1Cw.esm.js.map +1 -0
- package/.chunks/app-CCX-gNqz.amd.js +2 -0
- package/.chunks/app-CCX-gNqz.amd.js.map +1 -0
- package/.chunks/app-CCX-gNqz.esm.js +396 -0
- package/.chunks/app-CCX-gNqz.esm.js.map +1 -0
- package/.chunks/datepicker-BTkZOq7d.amd.js +2 -0
- package/.chunks/datepicker-BTkZOq7d.amd.js.map +1 -0
- package/.chunks/datepicker-BTkZOq7d.esm.js +38 -0
- package/.chunks/datepicker-BTkZOq7d.esm.js.map +1 -0
- package/.chunks/dialog-DeM4SApg.amd.js +2 -0
- package/.chunks/dialog-DeM4SApg.amd.js.map +1 -0
- package/.chunks/dialog-DeM4SApg.esm.js +117 -0
- package/.chunks/dialog-DeM4SApg.esm.js.map +1 -0
- package/.chunks/dialog_regionSelectorRegions-CYrmaDt3.amd.js +2 -0
- package/.chunks/dialog_regionSelectorRegions-CYrmaDt3.amd.js.map +1 -0
- package/.chunks/dialog_regionSelectorRegions-CYrmaDt3.esm.js +169 -0
- package/.chunks/dialog_regionSelectorRegions-CYrmaDt3.esm.js.map +1 -0
- package/.chunks/dialogs-CMrERMI7.amd.js +2 -0
- package/.chunks/dialogs-CMrERMI7.amd.js.map +1 -0
- package/.chunks/dialogs-CMrERMI7.esm.js +237 -0
- package/.chunks/dialogs-CMrERMI7.esm.js.map +1 -0
- package/.chunks/field-CjkpGeA7.amd.js +2 -0
- package/.chunks/field-CjkpGeA7.amd.js.map +1 -0
- package/.chunks/field-CjkpGeA7.esm.js +16 -0
- package/.chunks/field-CjkpGeA7.esm.js.map +1 -0
- package/.chunks/forms-CbUt-6Ff.amd.js +2 -0
- package/.chunks/forms-CbUt-6Ff.amd.js.map +1 -0
- package/.chunks/forms-CbUt-6Ff.esm.js +1991 -0
- package/.chunks/forms-CbUt-6Ff.esm.js.map +1 -0
- package/.chunks/formsExt-CrTmBhja.amd.js +2 -0
- package/.chunks/formsExt-CrTmBhja.amd.js.map +1 -0
- package/.chunks/formsExt-CrTmBhja.esm.js +807 -0
- package/.chunks/formsExt-CrTmBhja.esm.js.map +1 -0
- package/.chunks/lazy-CGswTOPj.amd.js +2 -0
- package/.chunks/lazy-CGswTOPj.amd.js.map +1 -0
- package/.chunks/lazy-CGswTOPj.esm.js +68 -0
- package/.chunks/lazy-CGswTOPj.esm.js.map +1 -0
- package/.chunks/mocker-CwZe-g4N.amd.js +2 -0
- package/.chunks/mocker-CwZe-g4N.amd.js.map +1 -0
- package/.chunks/mocker-CwZe-g4N.esm.js +45 -0
- package/.chunks/mocker-CwZe-g4N.esm.js.map +1 -0
- package/.chunks/notice-CslVdVNm.amd.js +4 -0
- package/.chunks/notice-CslVdVNm.amd.js.map +1 -0
- package/.chunks/notice-CslVdVNm.esm.js +191 -0
- package/.chunks/notice-CslVdVNm.esm.js.map +1 -0
- package/.chunks/popup-DrByVU-k.amd.js +2 -0
- package/.chunks/popup-DrByVU-k.amd.js.map +1 -0
- package/.chunks/popup-DrByVU-k.esm.js +444 -0
- package/.chunks/popup-DrByVU-k.esm.js.map +1 -0
- package/.chunks/popup-dNrN-eKi.amd.js +2 -0
- package/.chunks/popup-dNrN-eKi.amd.js.map +1 -0
- package/.chunks/popup-dNrN-eKi.esm.js +323 -0
- package/.chunks/popup-dNrN-eKi.esm.js.map +1 -0
- package/.chunks/punycode.es6-B-5kB2YI.amd.js +2 -0
- package/.chunks/{punycode.es6-CgGegfA_.es.js.map → punycode.es6-B-5kB2YI.amd.js.map} +1 -1
- package/.chunks/punycode.es6-B-5kB2YI.esm.js +105 -0
- package/.chunks/punycode.es6-B-5kB2YI.esm.js.map +1 -0
- package/.chunks/store-DuQpSSLL.amd.js +2 -0
- package/.chunks/{store-CX_6ZXhO.es.js.map → store-DuQpSSLL.amd.js.map} +1 -1
- package/.chunks/store-DuQpSSLL.esm.js +27 -0
- package/.chunks/store-DuQpSSLL.esm.js.map +1 -0
- package/.chunks/utils-BwiXsV0S.amd.js +2 -0
- package/.chunks/utils-BwiXsV0S.amd.js.map +1 -0
- package/.chunks/utils-BwiXsV0S.esm.js +43 -0
- package/.chunks/utils-BwiXsV0S.esm.js.map +1 -0
- package/.chunks/utils-Dd0MZgyw.amd.js +2 -0
- package/.chunks/utils-Dd0MZgyw.amd.js.map +1 -0
- package/.chunks/utils-Dd0MZgyw.esm.js +287 -0
- package/.chunks/utils-Dd0MZgyw.esm.js.map +1 -0
- package/.chunks/worker-Db8YrEHo.amd.js +2 -0
- package/.chunks/worker-Db8YrEHo.amd.js.map +1 -0
- package/.chunks/worker-Db8YrEHo.esm.js +100 -0
- package/.chunks/worker-Db8YrEHo.esm.js.map +1 -0
- package/api/additional.amd.js +2 -2
- package/api/additional.amd.js.map +1 -1
- package/api/additional.d.ts +0 -1
- package/api/additional.js +70 -66
- package/api/additional.js.map +1 -1
- package/api/index.amd.js +2 -2
- package/api/index.amd.js.map +1 -1
- package/api/index.d.ts +0 -1
- package/api/index.js +3 -285
- package/assets/charts.css +1 -1
- package/assets/core.css +1 -1
- package/assets/dialog_regionSelectorRegions.css +1 -1
- package/assets/extra.css +1 -1
- package/assets/forms.css +1 -1
- package/assets/formsExt.css +1 -0
- package/assets/layout.css +1 -1
- package/assets/notice.css +1 -1
- package/assets/popup.css +1 -0
- package/assets/project.css +1 -1
- package/assets/tabs.css +1 -1
- package/assets/tabsView.css +1 -1
- package/assets/themes/dark-th.css +1 -1
- package/assets/themes/dark.css +1 -1
- package/assets/themes/light.css +1 -1
- package/autoload-css-manifest.amd.json +79 -0
- package/autoload-css-manifest.json +90 -0
- package/charts/charts.amd.js +2 -2
- package/charts/charts.amd.js.map +1 -1
- package/charts/charts.d.ts +0 -1
- package/charts/charts.js +146 -174
- package/charts/charts.js.map +1 -1
- package/core/app.amd.js +2 -2
- package/core/app.amd.js.map +1 -1
- package/core/app.d.ts +0 -1
- package/core/app.js +5 -213
- package/dialog/dialog.amd.js +2 -2
- package/dialog/dialog.amd.js.map +1 -1
- package/dialog/dialog.d.ts +0 -1
- package/dialog/dialog.js +4 -60
- package/extra/extra.amd.js +2 -2
- package/extra/extra.amd.js.map +1 -1
- package/extra/extra.d.ts +0 -1
- package/extra/extra.js +73 -68
- package/extra/extra.js.map +1 -1
- package/forms/forms.amd.js +2 -2
- package/forms/forms.amd.js.map +1 -1
- package/forms/forms.d.ts +0 -1
- package/forms/forms.js +2 -19
- package/forms/helpers.amd.js +2 -2
- package/forms/helpers.amd.js.map +1 -1
- package/forms/helpers.js +0 -2
- package/formsExt/formsExt.amd.js +2 -2
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.d.ts +0 -1
- package/formsExt/formsExt.js +2 -372
- package/icomoon/Topvisor icons.json +776 -334
- package/icomoon/demo-files/demo.amd.js +2 -0
- package/icomoon/demo-files/demo.amd.js.map +1 -0
- package/icomoon/demo.amd.js +2 -0
- package/icomoon/demo.amd.js.map +1 -0
- package/icomoon/demo.html +85 -1
- package/icomoon/fonts/Topvisor-2.eot +0 -0
- package/icomoon/fonts/Topvisor-2.svg +6 -0
- package/icomoon/fonts/Topvisor-2.ttf +0 -0
- package/icomoon/fonts/Topvisor-2.woff +0 -0
- package/icomoon/selection.json +1 -1
- package/icomoon/style.css +23 -5
- package/layout/layout.amd.js +2 -2
- package/layout/layout.amd.js.map +1 -1
- package/layout/layout.d.ts +0 -1
- package/layout/layout.js +41 -57
- package/layout/layout.js.map +1 -1
- package/package.json +6 -6
- package/popup/popup.amd.js +2 -2
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.d.ts +0 -1
- package/popup/popup.js +2 -282
- package/popup/worker.amd.js +2 -2
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.d.ts +0 -1
- package/popup/worker.js +2 -144
- package/project/project.amd.js +2 -2
- package/project/project.amd.js.map +1 -1
- package/project/project.d.ts +0 -1
- package/project/project.js +1685 -1253
- package/project/project.js.map +1 -1
- package/src/{components → src/components}/charts/miniCharts/miniCharts.d.ts +1 -1
- package/src/{components → src/components}/core/notice/item/types.d.ts +1 -1
- package/src/{components → src/components}/core/notice/utils.d.ts +1 -1
- package/src/{components → src/components}/dialog/dialog/composables/dialogHandle.d.ts +1 -1
- package/src/{components → src/components}/dialog/dialog/dialogs/dialogs.vue.d.ts +2 -2
- package/src/{components → src/components}/dialog/dialog/stories/dialog_example/pages/utils.d.ts +1 -1
- package/src/src/components/dialog/dialog.d.ts +6 -0
- package/src/{components → src/components}/dialog/lib/worker.d.ts +1 -1
- package/src/{components → src/components}/forms/button/types.d.ts +1 -1
- package/src/{components → src/components}/forms/input/types.d.ts +1 -1
- package/src/src/components/forms/inputDate/types.d.ts +1 -0
- package/src/{components → src/components}/forms/select/types.d.ts +1 -1
- package/src/{components → src/components}/formsExt/editArea/types.d.ts +1 -1
- package/src/{components → src/components}/formsExt/editInput/types.d.ts +6 -2
- package/src/{components → src/components}/formsExt/libs/optionGroup/types.d.ts +1 -1
- package/src/{components → src/components}/formsExt/menu/types.d.ts +1 -1
- package/src/{components → src/components}/formsExt/policy/policy.vue.d.ts +1 -1
- package/src/{components → src/components}/formsExt/selector2/composables/useAPI.d.ts +210 -124
- package/src/{components → src/components}/formsExt/selector2/composables/useMenu.d.ts +211 -125
- package/src/{components → src/components}/formsExt/selector2/selector2.vue.d.ts +8 -5
- package/src/{components → src/components}/formsExt/selector2/types.d.ts +45 -3
- package/src/{components → src/components}/formsExt/selector2/utils.d.ts +2 -0
- package/src/{components → src/components}/popup/lib/popup.d.ts +3 -3
- package/src/{components → src/components}/popup/lib/worker.d.ts +2 -2
- package/src/{components → src/components}/popup/popup/opener/types.d.ts +1 -1
- package/src/{components → src/components}/popup/popup/popup.vue.d.ts +1 -1
- package/src/{components → src/components}/popup/popup/widgetInput/widgetInput.vue.d.ts +1 -1
- package/src/{components → src/components}/popup/popupConfirm/popupConfirm.vue.d.ts +1 -1
- package/src/{components → src/components}/project/competitorSelector/composables.d.ts +1 -1
- package/src/{components → src/components}/project/competitorSelector/types.d.ts +1 -1
- package/src/{components → src/components}/project/groupSelector/folders/types.d.ts +2 -1
- package/src/src/components/project/groupSelector/folders/utils.d.ts +422 -0
- package/src/{components → src/components}/project/groupSelector/groupSelector.vue.d.ts +2 -1
- package/src/{components → src/components}/project/groupSelector/groups/groups.vue.d.ts +20 -10
- package/src/{components → src/components}/project/groupSelector/groups/types.d.ts +2 -1
- package/src/src/components/project/groupSelector/groups/utils.d.ts +791 -0
- package/src/{components → src/components}/project/groupSelector/stories/mocks/index.d.ts +1 -1
- package/src/{components → src/components}/project/groupSelector/types.d.ts +6 -0
- package/src/src/components/project/groupSelector/utils.d.ts +37 -0
- package/src/{components → src/components}/project/project.d.ts +2 -0
- package/src/src/components/project/projectSelector/cache.d.ts +29 -0
- package/src/src/components/project/projectSelector/projectSelector.vue.d.ts +128 -0
- package/src/src/components/project/projectSelector/submenu/submenu.vue.d.ts +4 -0
- package/src/src/components/project/projectSelector/submenu/types.d.ts +17 -0
- package/src/src/components/project/projectSelector/types.d.ts +48 -0
- package/src/src/components/project/projectSelector/utils.d.ts +248 -0
- package/src/{components → src/components}/project/regionSelector/composables/selectRegion.d.ts +1 -1
- package/src/{components → src/components}/project/regionSelector/composables/selectSearcher.d.ts +1 -1
- package/src/{components → src/components}/project/regionSelector/dialog_regionSelectorRegions/types.d.ts +1 -1
- package/src/{components → src/components}/project/regionSelector/types.d.ts +9 -4
- package/src/{components → src/components}/project/regionSelector/utils/utils.d.ts +5 -5
- package/src/{components → src/components}/project/tagSelector/popupOpener/types.d.ts +1 -1
- package/src/{components → src/components}/project/tagSelector/types.d.ts +1 -1
- package/src/{components → src/components}/project/tagSelector/utils/el.d.ts +1 -1
- package/src/{components → src/components}/tabsView/tabsView/menu.vue.d.ts +2 -6
- package/src/{components → src/components}/tabsView/tabsView/store.d.ts +1 -1
- package/src/{core → src/core}/app.d.ts +2 -2
- package/src/{core → src/core}/core/core.d.ts +3 -3
- package/src/{core → src/core}/directives/shortcut.d.ts +2 -1
- package/src/src/core/directives/tooltip.d.ts +6 -0
- package/src/{core → src/core}/plugins/core.d.ts +6 -6
- package/src/{core → src/core}/utils/price.d.ts +2 -2
- package/src/src/core/utils/store.d.ts +6 -0
- package/tabs/tabs.amd.js +2 -2
- package/tabs/tabs.amd.js.map +1 -1
- package/tabs/tabs.d.ts +0 -1
- package/tabs/tabs.js +63 -77
- package/tabs/tabs.js.map +1 -1
- package/tabsView/tabsView.amd.js +2 -2
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.d.ts +0 -1
- package/tabsView/tabsView.js +245 -299
- package/tabsView/tabsView.js.map +1 -1
- package/utils/check.amd.js +2 -2
- package/utils/check.amd.js.map +1 -1
- package/utils/check.d.ts +0 -1
- package/utils/check.js +15 -19
- package/utils/check.js.map +1 -1
- package/utils/clipboard.amd.js +6 -6
- package/utils/clipboard.amd.js.map +1 -1
- package/utils/clipboard.d.ts +0 -1
- package/utils/clipboard.js +26 -31
- package/utils/clipboard.js.map +1 -1
- package/utils/date.amd.js +2 -2
- package/utils/date.amd.js.map +1 -1
- package/utils/date.d.ts +0 -1
- package/utils/date.js +2 -12
- package/utils/device.amd.js +2 -2
- package/utils/device.amd.js.map +1 -1
- package/utils/device.d.ts +0 -1
- package/utils/device.js +2 -15
- package/utils/dom.amd.js +2 -2
- package/utils/dom.amd.js.map +1 -1
- package/utils/dom.d.ts +0 -5
- package/utils/dom.js +53 -67
- package/utils/dom.js.map +1 -1
- package/utils/image.amd.js +3 -3
- package/utils/image.amd.js.map +1 -1
- package/utils/image.d.ts +0 -1
- package/utils/image.js +12 -22
- package/utils/image.js.map +1 -1
- package/utils/keyboard.amd.js +2 -2
- package/utils/keyboard.amd.js.map +1 -1
- package/utils/keyboard.d.ts +0 -1
- package/utils/keyboard.js +10 -11
- package/utils/keyboard.js.map +1 -1
- package/utils/lodash.amd.js +2 -2
- package/utils/lodash.amd.js.map +1 -1
- package/utils/lodash.d.ts +0 -1
- package/utils/lodash.js +2 -9
- package/utils/number.amd.js +2 -2
- package/utils/number.amd.js.map +1 -1
- package/utils/number.d.ts +0 -1
- package/utils/number.js +12 -12
- package/utils/number.js.map +1 -1
- package/utils/price.amd.js +2 -2
- package/utils/price.amd.js.map +1 -1
- package/utils/price.d.ts +0 -1
- package/utils/price.js +14 -9
- package/utils/price.js.map +1 -1
- package/utils/route.amd.js +2 -2
- package/utils/route.amd.js.map +1 -1
- package/utils/route.d.ts +0 -1
- package/utils/route.js +33 -37
- package/utils/route.js.map +1 -1
- package/utils/scroll.amd.js +2 -2
- package/utils/scroll.amd.js.map +1 -1
- package/utils/scroll.d.ts +0 -1
- package/utils/scroll.js +39 -43
- package/utils/scroll.js.map +1 -1
- package/utils/searchers.amd.js +2 -2
- package/utils/searchers.amd.js.map +1 -1
- package/utils/searchers.d.ts +0 -1
- package/utils/searchers.js +128 -133
- package/utils/searchers.js.map +1 -1
- package/utils/store.amd.js +2 -2
- package/utils/store.amd.js.map +1 -1
- package/utils/store.d.ts +0 -1
- package/utils/store.js +2 -7
- package/utils/string.amd.js +2 -2
- package/utils/string.amd.js.map +1 -1
- package/utils/string.d.ts +0 -1
- package/utils/string.js +120 -147
- package/utils/string.js.map +1 -1
- package/utils/system.amd.js +2 -2
- package/utils/system.amd.js.map +1 -1
- package/utils/system.d.ts +0 -1
- package/utils/system.js +25 -28
- package/utils/system.js.map +1 -1
- package/utils/url.amd.js +3 -3
- package/utils/url.amd.js.map +1 -1
- package/utils/url.d.ts +0 -1
- package/utils/url.js +36 -47
- package/utils/url.js.map +1 -1
- package/.chunks/core-BEpKBNHt.amd.js +0 -2
- package/.chunks/core-BEpKBNHt.amd.js.map +0 -1
- package/.chunks/core-DBWAn2Eg.es.js +0 -242
- package/.chunks/core-DBWAn2Eg.es.js.map +0 -1
- package/.chunks/datepicker-C5ErMHwe.amd.js +0 -2
- package/.chunks/datepicker-C5ErMHwe.amd.js.map +0 -1
- package/.chunks/datepicker-DMYB1RFK.es.js +0 -41
- package/.chunks/datepicker-DMYB1RFK.es.js.map +0 -1
- package/.chunks/dialog_regionSelectorRegions-BMWyYCfD.es.js +0 -180
- package/.chunks/dialog_regionSelectorRegions-BMWyYCfD.es.js.map +0 -1
- package/.chunks/dialog_regionSelectorRegions-CHC-Blbu.amd.js +0 -2
- package/.chunks/dialog_regionSelectorRegions-CHC-Blbu.amd.js.map +0 -1
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BZM_iKPW.es.js +0 -323
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BZM_iKPW.es.js.map +0 -1
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-C3qaTBlO.amd.js +0 -2
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-C3qaTBlO.amd.js.map +0 -1
- package/.chunks/field-Cvv0SRcJ.amd.js +0 -2
- package/.chunks/field-Cvv0SRcJ.amd.js.map +0 -1
- package/.chunks/field-CyyFzM-Y.es.js +0 -16
- package/.chunks/field-CyyFzM-Y.es.js.map +0 -1
- package/.chunks/forms-CUaoBGD5.es.js +0 -2053
- package/.chunks/forms-CUaoBGD5.es.js.map +0 -1
- package/.chunks/forms-EhKRBbpk.amd.js +0 -3
- package/.chunks/forms-EhKRBbpk.amd.js.map +0 -1
- package/.chunks/index-DLUtoTUg.amd.js +0 -2
- package/.chunks/index-DLUtoTUg.amd.js.map +0 -1
- package/.chunks/index-DkQWJkMc.es.js +0 -54
- package/.chunks/index-DkQWJkMc.es.js.map +0 -1
- package/.chunks/lazy-40pjr8cZ.es.js +0 -71
- package/.chunks/lazy-40pjr8cZ.es.js.map +0 -1
- package/.chunks/lazy-DSFLxvj4.amd.js +0 -2
- package/.chunks/lazy-DSFLxvj4.amd.js.map +0 -1
- package/.chunks/notice-Chj1PUTD.es.js +0 -191
- package/.chunks/notice-Chj1PUTD.es.js.map +0 -1
- package/.chunks/notice-DQb_Za5_.amd.js +0 -4
- package/.chunks/notice-DQb_Za5_.amd.js.map +0 -1
- package/.chunks/page.vue_vue_type_script_setup_true_lang-C-xQ-eC7.es.js +0 -139
- package/.chunks/page.vue_vue_type_script_setup_true_lang-C-xQ-eC7.es.js.map +0 -1
- package/.chunks/page.vue_vue_type_script_setup_true_lang-bUK5c5qn.amd.js +0 -2
- package/.chunks/page.vue_vue_type_script_setup_true_lang-bUK5c5qn.amd.js.map +0 -1
- package/.chunks/policy.vue_vue_type_style_index_0_lang-8Te7yOxJ.amd.js +0 -2
- package/.chunks/policy.vue_vue_type_style_index_0_lang-8Te7yOxJ.amd.js.map +0 -1
- package/.chunks/policy.vue_vue_type_style_index_0_lang-uPC0N7jl.es.js +0 -496
- package/.chunks/policy.vue_vue_type_style_index_0_lang-uPC0N7jl.es.js.map +0 -1
- package/.chunks/popup-CDaQNt-3.amd.js +0 -2
- package/.chunks/popup-CDaQNt-3.amd.js.map +0 -1
- package/.chunks/popup-COONSpqs.es.js +0 -470
- package/.chunks/popup-COONSpqs.es.js.map +0 -1
- package/.chunks/popupHint.vue_vue_type_style_index_0_lang-24i49Ad3.amd.js +0 -2
- package/.chunks/popupHint.vue_vue_type_style_index_0_lang-24i49Ad3.amd.js.map +0 -1
- package/.chunks/popupHint.vue_vue_type_style_index_0_lang-DzT1BFMx.es.js +0 -209
- package/.chunks/popupHint.vue_vue_type_style_index_0_lang-DzT1BFMx.es.js.map +0 -1
- package/.chunks/punycode.es6-CNOnFR2-.amd.js +0 -2
- package/.chunks/punycode.es6-CNOnFR2-.amd.js.map +0 -1
- package/.chunks/punycode.es6-CgGegfA_.es.js +0 -134
- package/.chunks/store-CX_6ZXhO.es.js +0 -29
- package/.chunks/store-YRW59xEF.amd.js +0 -2
- package/.chunks/store-YRW59xEF.amd.js.map +0 -1
- package/.chunks/utils-C2_4b48S.amd.js +0 -2
- package/.chunks/utils-C2_4b48S.amd.js.map +0 -1
- package/.chunks/utils-DQ-xahGh.es.js +0 -288
- package/.chunks/utils-DQ-xahGh.es.js.map +0 -1
- package/.chunks/utils-DsGgpnXD.amd.js +0 -2
- package/.chunks/utils-DsGgpnXD.amd.js.map +0 -1
- package/.chunks/utils-Kzz2mc2t.es.js +0 -78
- package/.chunks/utils-Kzz2mc2t.es.js.map +0 -1
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-BuoAaghB.es.js +0 -39
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-BuoAaghB.es.js.map +0 -1
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-Dgjj70vU.amd.js +0 -2
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-Dgjj70vU.amd.js.map +0 -1
- package/api/index.js.map +0 -1
- package/assets/policy.css +0 -1
- package/assets/popupHint.css +0 -1
- package/core/app.js.map +0 -1
- package/dialog/dialog.js.map +0 -1
- package/forms/forms.js.map +0 -1
- package/forms/helpers.js.map +0 -1
- package/formsExt/formsExt.js.map +0 -1
- package/popup/popup.js.map +0 -1
- package/popup/worker.js.map +0 -1
- package/src/components/dialog/dialog.d.ts +0 -6
- package/src/components/forms/inputDate/types.d.ts +0 -1
- package/src/components/project/groupSelector/folders/utils.d.ts +0 -63
- package/src/components/project/groupSelector/groups/utils.d.ts +0 -92
- package/src/core/directives/tooltip.d.ts +0 -10
- package/src/core/utils/store.d.ts +0 -6
- package/utils/date.js.map +0 -1
- package/utils/device.js.map +0 -1
- package/utils/lodash.js.map +0 -1
- package/utils/store.js.map +0 -1
- /package/src/{api → src/api}/api/additional.d.ts +0 -0
- /package/src/{api → src/api}/api/client/client.d.ts +0 -0
- /package/src/{api → src/api}/api/client/request-options.d.ts +0 -0
- /package/src/{api → src/api}/api/client/request.d.ts +0 -0
- /package/src/{api → src/api}/api/index.d.ts +0 -0
- /package/src/{api → src/api}/api/mocker/index.d.ts +0 -0
- /package/src/{api → src/api}/api/tests/types.test-d.d.ts +0 -0
- /package/src/{api → src/api}/api/types/api.d.ts +0 -0
- /package/src/{api → src/api}/api/types/client/client.d.ts +0 -0
- /package/src/{api → src/api}/api/types/client/middleware.d.ts +0 -0
- /package/src/{api → src/api}/api/types/client/options.d.ts +0 -0
- /package/src/{api → src/api}/api/types/client/request-context.d.ts +0 -0
- /package/src/{api → src/api}/api/types/client/request-options.d.ts +0 -0
- /package/src/{api → src/api}/api/types/client/request.d.ts +0 -0
- /package/src/{api → src/api}/api/types/ext.d.ts +0 -0
- /package/src/{api → src/api}/api/types/field.d.ts +0 -0
- /package/src/{api → src/api}/api/types/index.d.ts +0 -0
- /package/src/{api → src/api}/api/types/mocker.d.ts +0 -0
- /package/src/{api → src/api}/api/types/schema.d.ts +0 -0
- /package/src/{api → src/api}/api/types/tv.d.ts +0 -0
- /package/src/{api → src/api}/api/types/utils.d.ts +0 -0
- /package/src/{api → src/api}/api/utils/common.d.ts +0 -0
- /package/src/{api → src/api}/api/utils/field.d.ts +0 -0
- /package/src/{api → src/api}/api/utils/filters.d.ts +0 -0
- /package/src/{api → src/api}/api/utils/lazy.d.ts +0 -0
- /package/src/{components → src/components}/charts/charts.d.ts +0 -0
- /package/src/{components → src/components}/charts/miniChart/miniChart.vue.d.ts +0 -0
- /package/src/{components → src/components}/charts/miniChart/types.d.ts +0 -0
- /package/src/{components → src/components}/charts/miniChart/utils/consts.d.ts +0 -0
- /package/src/{components → src/components}/charts/miniCharts/miniCharts.vue.d.ts +0 -0
- /package/src/{components → src/components}/core/notice/item/item.vue.d.ts +0 -0
- /package/src/{components → src/components}/core/notice/notice.vue.d.ts +0 -0
- /package/src/{components → src/components}/core/notice/types.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/composables/asyncDialogHandle.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/composables/types.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/composables/utils.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/dialog.vue.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/page/page.vue.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/page/types.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/pageComponent/pageComponent.vue.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/pageComponent/types.d.ts +0 -0
- /package/src/{components → src/components}/dialog/dialog/types.d.ts +0 -0
- /package/src/{components → src/components}/dialog/lib/types.d.ts +0 -0
- /package/src/{components → src/components}/dialog/lib/utils.d.ts +0 -0
- /package/src/{components → src/components}/dialog/lib/utils.globalEvents.d.ts +0 -0
- /package/src/{components → src/components}/extra/extra.d.ts +0 -0
- /package/src/{components → src/components}/extra/rive/rive.vue.d.ts +0 -0
- /package/src/{components → src/components}/extra/rive/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/avatar/avatar.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/avatar/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/button/button.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/caption/caption.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/caption/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/checkbox/checkbox.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/checkbox/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/controlLabel/controlLabel.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/controlLabel/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/forms.d.ts +0 -0
- /package/src/{components → src/components}/forms/helpers.d.ts +0 -0
- /package/src/{components → src/components}/forms/hint/hint.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/hint/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/input/input.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/inputDate/datepicker.d.ts +0 -0
- /package/src/{components → src/components}/forms/inputDate/inputDate.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/inputRange/inputRange.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/inputRange/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/loadbar/loadbar.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/preloader/preloader.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/preloader/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/radio/radio.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/radio/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/select/select.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/switcher/switcher.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/switcher/types.d.ts +0 -0
- /package/src/{components → src/components}/forms/textarea/textarea.vue.d.ts +0 -0
- /package/src/{components → src/components}/forms/textarea/types.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/checkboxGroup/checkboxGroup.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/checkboxGroup/types.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/editArea/editArea.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/editInput/editInput.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/formsExt.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/info/info.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/info/types.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/libs/optionGroup/optionGroup.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/menu/menu.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/policy/types.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/radioGroup/radioGroup.vue.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/radioGroup/types.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/selector2/cache.d.ts +0 -0
- /package/src/{components → src/components}/formsExt/selector2/itemMulti.vue.d.ts +0 -0
- /package/src/{components → src/components}/layout/islandRows/islandRows.vue.d.ts +0 -0
- /package/src/{components → src/components}/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +0 -0
- /package/src/{components → src/components}/layout/islandRows/islandRowsRow/types.d.ts +0 -0
- /package/src/{components → src/components}/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue.d.ts +0 -0
- /package/src/{components → src/components}/layout/islandRows/types.d.ts +0 -0
- /package/src/{components → src/components}/layout/layout.d.ts +0 -0
- /package/src/{components → src/components}/layout/rows/rows.vue.d.ts +0 -0
- /package/src/{components → src/components}/layout/rows/types.d.ts +0 -0
- /package/src/{components → src/components}/popup/lib/popup.globalEvents.d.ts +0 -0
- /package/src/{components → src/components}/popup/lib/worker.globalEvents.d.ts +0 -0
- /package/src/{components → src/components}/popup/popup/listItem.vue.d.ts +0 -0
- /package/src/{components → src/components}/popup/popup/opener/opener.vue.d.ts +0 -0
- /package/src/{components → src/components}/popup/popup/types.d.ts +0 -0
- /package/src/{components → src/components}/popup/popup.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupAlert/popupAlert.vue.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupAlert/types.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupConfirm/types.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupHint/popupHint.vue.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupHint/types.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupPrompt/popupPrompt.vue.d.ts +0 -0
- /package/src/{components → src/components}/popup/popupPrompt/types.d.ts +0 -0
- /package/src/{components → src/components}/popup/worker.d.ts +0 -0
- /package/src/{components → src/components}/project/competitorSelector/competitorSelector.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/groupSelector/folders/folders.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/groupSelector/stories/mocks/folders.d.ts +0 -0
- /package/src/{components → src/components}/project/groupSelector/stories/mocks/groups.d.ts +0 -0
- /package/src/{components → src/components}/project/regionSelector/composables/compare.d.ts +0 -0
- /package/src/{components → src/components}/project/regionSelector/composables/selectorRegion.d.ts +0 -0
- /package/src/{components → src/components}/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/regionSelector/regionSelector.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/regionSelector/utils/consts.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/popupListItem/tagPopupListItem.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/popupListItem/types.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/popupOpener/popupOpener.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/tagIcon/tagIcon.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/tagIcon/types.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/tagSelector.vue.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/tagsDefaults.d.ts +0 -0
- /package/src/{components → src/components}/project/tagSelector/utils/utils.d.ts +0 -0
- /package/src/{components → src/components}/tabs/tabs/content.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabs/tabs/tab.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabs/tabs/tabs.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabs/tabs/types.d.ts +0 -0
- /package/src/{components → src/components}/tabs/tabs.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView/menuDelimeter.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView/menuItem.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView/menuTitle.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView/tabsView.vue.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView/types.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView/utils.d.ts +0 -0
- /package/src/{components → src/components}/tabsView/tabsView.d.ts +0 -0
- /package/src/{core → src/core}/core/events/resize.d.ts +0 -0
- /package/src/{core → src/core}/core/events.d.ts +0 -0
- /package/src/{core → src/core}/core/options.d.ts +0 -0
- /package/src/{core → src/core}/core/preloaders.d.ts +0 -0
- /package/src/{core → src/core}/core/state.d.ts +0 -0
- /package/src/{core → src/core}/directives/data.d.ts +0 -0
- /package/src/{core → src/core}/directives/focus.d.ts +0 -0
- /package/src/{core → src/core}/directives/preloader.d.ts +0 -0
- /package/src/{core → src/core}/directives/scrollIntoView.d.ts +0 -0
- /package/src/{core → src/core}/directives/scrollShadow.d.ts +0 -0
- /package/src/{core → src/core}/directives/sticky.d.ts +0 -0
- /package/src/{core → src/core}/directives/swimUp.d.ts +0 -0
- /package/src/{core → src/core}/plugins/i18n.d.ts +0 -0
- /package/src/{core → src/core}/plugins/piniaTPA.d.ts +0 -0
- /package/src/{core → src/core}/utils/check.d.ts +0 -0
- /package/src/{core → src/core}/utils/clipboard.d.ts +0 -0
- /package/src/{core → src/core}/utils/composables/useWatch.d.ts +0 -0
- /package/src/{core → src/core}/utils/date.d.ts +0 -0
- /package/src/{core → src/core}/utils/device.d.ts +0 -0
- /package/src/{core → src/core}/utils/dom.d.ts +0 -0
- /package/src/{core → src/core}/utils/image.d.ts +0 -0
- /package/src/{core → src/core}/utils/keyboard.d.ts +0 -0
- /package/src/{core → src/core}/utils/lodash.d.ts +0 -0
- /package/src/{core → src/core}/utils/number.d.ts +0 -0
- /package/src/{core → src/core}/utils/route.d.ts +0 -0
- /package/src/{core → src/core}/utils/scroll.d.ts +0 -0
- /package/src/{core → src/core}/utils/searchers.d.ts +0 -0
- /package/src/{core → src/core}/utils/store/localStorage.d.ts +0 -0
- /package/src/{core → src/core}/utils/store/plugin.d.ts +0 -0
- /package/src/{core → src/core}/utils/store/store.d.ts +0 -0
- /package/src/{core → src/core}/utils/string.d.ts +0 -0
- /package/src/{core → src/core}/utils/system.d.ts +0 -0
- /package/src/{core → src/core}/utils/tests/date/dateFormat.test.d.ts +0 -0
- /package/src/{core → src/core}/utils/url.d.ts +0 -0
package/tabsView/tabsView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabsView.js","sources":["../../src/core/utils/store/localStorage.ts","../../src/components/tabsView/tabsView/store.ts","../../src/components/tabsView/tabsView/menuItem.vue","../../src/components/tabsView/tabsView/utils.ts","../../src/components/tabsView/tabsView/menu.vue","../../src/components/tabsView/tabsView/tabsView.vue","../../src/components/tabsView/tabsView/menuDelimeter.vue","../../src/components/tabsView/tabsView/menuTitle.vue"],"sourcesContent":["import { watch } from 'vue';\nimport type { Store } from './store';\n\n/**\n * Сгенерировать имя для сохранения данных в localStorage\n * @param stateName - имя свойства состояния\n * @param stateKey - ключ состояния, разные компоненты могут использовать одинаковый ключ\n */\nconst genStorageKey = <T extends Store>(stateName: keyof T, stateKey: string): string => {\n\tconst stateNameString = String(stateName);\n\n\treturn `top:${stateNameString}:${stateKey}`;\n};\n\n/**\n * Загрузить состояние\n * @param stateName - имя свойства состояния\n * @param store\n */\nconst loadLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\n\t// если Store.key не знадан, значит сохранение состояния в компоненте отключено\n\tif (!store.$id) return;\n\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\n\n\ttry {\n\t\tconst localStorageValue: typeof store[keyof typeof store] = JSON.parse(localStorage.getItem(localStorageKey) as string);\n\n\t\tif (typeof localStorageValue === typeof store[stateName]) {\n\t\t\tstore[stateName] = localStorageValue;\n\t\t}\n\t} catch (e) {\n\t\tconsole.warn(new Error(`В localStorage[${localStorageKey}] не корректный json`));\n\t}\n};\n\n/**\n * Добавить автосохранение состояние при его изменении\n * @param stateName - имя свойства состояния\n * @param store\n */\nconst addSaverLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\n\t// если store.$id не знадан, значит сохранение состояния в компоненте отключено\n\tif (!store.$id) return;\n\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\n\n\twatch(() => store[stateName], () => {\n\t\tlocalStorage.setItem(localStorageKey, JSON.stringify(store[stateName]));\n\t}, { immediate: true });\n};\n\nexport default {\n\tloadLocalStorge,\n\taddSaverLocalStorge,\n};","import type { InjectionKey, ModelRef, UnwrapNestedRefs } from 'vue';\nimport { computed, ref } from 'vue';\nimport Core from '@/core/core/core';\nimport { defineStore, useStore, type Store as DefineStore } from '@/core/utils/store';\nimport StoreLocalStorage from '@/core/utils/store/localStorage';\nimport type { Props, Store } from './types';\nimport { getHash } from '@/core/utils/route';\n\nconst popstateCallbacks = new Set<(e: PopStateEvent) => void>();\n\naddEventListener('popstate', (e) => {\n\tpopstateCallbacks.forEach(popstateCallback => popstateCallback(e));\n});\n\nexport const injectionKey = Symbol() as InjectionKey<Store>;\n\n/**\n * Инициировать Store компонента\n */\nexport const defineTabsStore = (props: Props, model: ModelRef<string | undefined>): UnwrapNestedRefs<Store> & DefineStore => {\n\tconst store = defineStore(injectionKey, () => {\n\t\tconst showMenuInPopup = computed(() => props.showMenuInPopup ?? Core.state.isMobile);\n\t\tconst pageMod = computed(() => props.pageMod);\n\t\tconst isShort = ref(false);\n\n\t\tconst component = ref(undefined);\n\t\tconst scrollable = ref(true);\n\n\t\treturn {\n\t\t\tshowMenuInPopup,\n\t\t\tpageMod,\n\t\t\tisShort,\n\t\t\tactiveItemName: model,\n\t\t\tcomponent,\n\t\t\tscrollable,\n\t\t};\n\t}, props.idState);\n\n\tif (props.isShortable) {\n\t\tconst stateName = 'isShort';\n\n\t\tStoreLocalStorage.loadLocalStorge(stateName, store);\n\t\tStoreLocalStorage.addSaverLocalStorge(stateName, store);\n\t}\n\n\tif (store.$id) {\n\t\tconst popstateCallback = (_e: PopStateEvent) => {\n\t\t\tmodel.value = getHash(store.$id!);\n\t\t};\n\n\t\tpopstateCallbacks.add(popstateCallback);\n\t}\n\n\treturn store;\n};\n\n/**\n * Получить Store компонента\n */\nexport const useTabsStore = () => useStore(injectionKey);\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { genHash } from '@/core/utils/route';\nimport { TopPopupListItem } from '@/components/popup/popup';\nimport { useTabsStore } from './store';\nimport type { PropsMenuItem } from './types';\n\nconst props = withDefaults(defineProps<PropsMenuItem>(), {\n\tscrollable: true,\n\tcomponent: undefined,\n});\n\nconst store = useTabsStore();\n\nconst href = computed(() => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (props.name && store.$id) {\n\t\treturn genHash(store.$id, props.name);\n\t}\n\n\treturn props.href;\n});\n\nconst tagName = computed(() => {\n\tif (store.showMenuInPopup) {\n\t\treturn TopPopupListItem;\n\t}\n\n\treturn href ? 'a' : 'button';\n});\n\n/**\n * Клик по элементу меню\n */\nconst onClick = (e: MouseEvent) => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (!props.href && href.value) {\n\t\te.preventDefault();\n\t}\n\n\tif (props.name) {\n\t\tstore.activeItemName = props.name;\n\t}\n};\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\ttarget=\"_self\"\n\t\t:class=\"{\n\t\t\t['top-tabsView_menuItem']: !store.showMenuInPopup,\n\t\t\t['top-active']: name && store.activeItemName === name,\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-spa-disabled']: true,\n\t\t}\"\n\t\t:href=\"href\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t@click=\"onClick\"\n\t>\n\t\t<slot name=\"default\" v-if=\"store.showMenuInPopup\"></slot>\n\n\t\t<span\n\t\t\tv-else-if=\"$slots.default && !store.isShort\"\n\t\t\tclass=\"top-ellipsis\"\n\t\t>\n\t\t\t<slot name=\"default\"></slot>\n\t\t</span>\n\t</component>\n</template>\n\n<style>\n.top-tabsView_menuItem {\n\t--top-icon-color: var(--color-text-2);\n\t--top-icon-width: calc(var(--top-icon-size));\n\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\n\tborder: none;\n\tborder-radius: var(--top-radius-2);\n\tpadding: var(--top-padding-2);\n\tbackground: transparent;\n\theight: 40px;\n\n\tcolor: var(--color-text-1);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n\n\tdisplay: flex;\n\tgap: var(--top-gap-2);\n\talign-items: center;\n\tjustify-content: flex-start;\n\ttransition: background var(--transition);\n}\n\n.top-tabsView_menuItem:hover {\n\t--top-icon-color: var(--color-text-1);\n\n\tbackground: var(--color-bg-shading-1);\n\ttext-decoration: none;\n}\n\n.top-tabsView_menuItem.top-active {\n\t--top-icon-color: inherit;\n\n\tbackground: var(--color-layout-front-1);\n\tcolor: inherit;\n}\n\n.top-tabsView_menuItem:disabled:not(option):not(optgroup):not(.top-forms-option),\n.top-tabsView_menuItem:disabled ~ .top-formsCaption,\n.top-tabsView_menuItem.top-disabled[data-top-icon]:before,\n.top-tabsView_menuItem.top-disabled[data-top-icon2]:after {\n\topacity: unset;\n\tfilter: unset;\n}\n\n.top-tabsView_menuItem.top-disabled {\n\t--top-icon-color: var(--color-text-4);\n\n\tcolor: var(--color-text-4);\n}\n</style>\n","// TODO: Эту функцию можно вынести в глобальный utils\n\nimport { sleepWhile } from '@/core/utils/system';\n\n/**\n * Проверка нахождения компонента в состояние загрузки\n * @param component\n */\nexport const checkComponentIsLoading = (component: any) => {\n\treturn component?.name === 'AsyncComponentWrapper' && !component?.__asyncResolved;\n};\n\n/**\n * Презагрузить компонент\n *\n * Некоторое время ожидает загрузку компонента, прежде чем завершит работу\n */\nexport const preResolveComponent = async (component: any, condition: Function) => {\n\tif (component?.name !== 'AsyncComponentWrapper') return;\n\tif (component?.__asyncResolved) return;\n\n\tcomponent.__asyncLoader();\n\n\tawait sleepWhile(() => {\n\t\treturn condition() && checkComponentIsLoading(component);\n\t}, 200);\n};\n","<script setup lang=\"ts\">\nimport type { Ref, VNode } from 'vue';\nimport { markRaw, onMounted, onUnmounted, ref, useSlots, watch } from 'vue';\nimport { TopPopup } from '../../popup/popup';\nimport { getHash, setHash } from '@/core/utils/route';\n\nimport type { MenuItem, PropsMenu, PropsMenuItem } from './types';\nimport { useTabsStore } from './store';\nimport TabsViewMenuItem from './menuItem.vue';\nimport { preResolveComponent } from './utils';\n\ndefineProps<PropsMenu>();\n\nconst isLoading = defineModel('isLoading');\n\nconst store = useTabsStore();\n\nconst slots = useSlots();\n\n// словарь используется для оптимизации получения нужного menuItem\nconst menuItemByName: Map<PropsMenuItem['name'], MenuItem> = new Map();\n\n// заполнить словарь с menuItem, по элементам в slot default\nconst setMenuItemByName = () => {\n\tif (!slots.default) return;\n\n\tconst component: any = slots.default({}).find(item => item.key === '_menu');\n\tif (!component) return;\n\n\tsetMenuItemByNameFromItems(component.children);\n};\n\n// заполнить словарь с menuItem, по элементам\nconst setMenuItemByNameFromItems = (menuItems: VNode[]) => {\n\tmenuItems.forEach((subComponent: any) => {\n\t\t// это не компонент элемента меню\n\t\tif (subComponent.type.__name && subComponent.type.__name !== TabsViewMenuItem.__name) return;\n\n\t\t// это не компонент, например template\n\t\tif (!subComponent.type.__name && typeof subComponent.children === 'object') {\n\t\t\tsetMenuItemByNameFromItems(subComponent.children);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!subComponent.props?.name || subComponent.props?.disabled) return;\n\n\t\tconst menuItem: MenuItem = {\n\t\t\ttitle: (subComponent.children.default?.()[0].children as string).trim(),\n\t\t\ticon: subComponent.props.icon,\n\t\t\tcomponent: subComponent.props.component ? markRaw(subComponent.props.component) : TabsViewMenuItem.props.component.default,\n\t\t\tscrollable: subComponent.props.scrollable ?? TabsViewMenuItem.props.scrollable.default,\n\t\t};\n\n\t\tmenuItemByName.set(subComponent.props.name, menuItem);\n\t});\n};\n\n/**\n * activeMenuItem нужен:\n * - для вывода текста активной вкладки в меню с popup\n * - для вывода компонента активной вкладки (store.component)\n * - для установки store.scrollable\n */\nconst activeMenuItem: Ref<MenuItem | null> = ref(null);\n\n/**\n * Кол-во изменений активной вкладки\n */\nlet countChanged = 0;\n\n/**\n * Смена активной вкладки\n *\n * TODO: смена slot, например смена языка, требует повторного выполнения setMenuItemByName()\n */\nwatch(\n\t() => store.activeItemName,\n\tasync () => {\n\t\tconst numberChanged = ++countChanged; // порядковый номер текущего изменения\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tsetMenuItemByName();\n\t\t}\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tstore.activeItemName = '';\n\n\t\t\treturn;\n\t\t}\n\n\t\tactiveMenuItem.value = menuItemByName.get(store.activeItemName) ?? null;\n\n\t\t// элемент не найден, установить из хеша страницы\n\t\tif (!activeMenuItem.value && store.$id) {\n\t\t\tconst activeItemName = getHash(store.$id);\n\n\t\t\tactiveMenuItem.value = menuItemByName.get(activeItemName) ?? null;\n\n\t\t\tif (activeMenuItem.value) {\n\t\t\t\tstore.activeItemName = activeItemName;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// элемент не найден, установить первый доступный\n\t\tif (!activeMenuItem.value) {\n\t\t\tstore.activeItemName = menuItemByName.keys().next().value!;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// запрошена смена на уже активный элемент\n\t\tif (activeMenuItem.value.component === store.component) {\n\t\t\tisLoading.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (store.$id) setHash(store.$id, store.activeItemName, false);\n\n\t\t// флаг загрузки будет сброшен при инициализации компонента\n\t\tisLoading.value = true;\n\n\t\t/**\n\t\t * Презагрузить компонент\n\t\t *\n\t\t * Нужно для того, чтобы минимизировать скачки интерфейса при ожидании загрузки асинхронного компонента\n\t\t */\n\t\tawait preResolveComponent(activeMenuItem.value.component, () => numberChanged === countChanged);\n\n\t\t// влкадка была сменена еще раз во время sleepWhile\n\t\tif (numberChanged !== countChanged) {\n\t\t\treturn;\n\t\t}\n\n\t\tstore.scrollable = activeMenuItem.value.scrollable;\n\t\tstore.component = activeMenuItem.value.component;\n\n\t\tif (activeMenuItem.value && !store.component) {\n\t\t\tconsole.warn(`Компонент вкладки ${store.activeItemName} не найден. Добавьте props.component для пункта меню ${store.activeItemName}.`);\n\t\t}\n\t},\n\t{ immediate: true },\n);\n\nconst elRef = ref();\nlet resizeObserver: ResizeObserver;\n\nonMounted(() => {\n\tresizeObserver = new ResizeObserver(() => {\n\t\telRef.value.parentElement.style.setProperty('--top-tabsView-contents-offset-top', elRef.value.offsetHeight + 'px');\n\t});\n\n\tresizeObserver.observe(elRef.value);\n});\n\nonUnmounted(() => {\n\tresizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tref=\"elRef\"\n\t\t:class=\"{\n\t\t\t'top-tabsView_menu': true,\n\t\t\t'top-tabsView_menu-inPopup_0': !store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-inPopup_1': store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-short': store.isShort && !store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<!-- Спрятать меню под кнопку в popup -->\n\t\t<TopPopup v-if=\"store.showMenuInPopup\">\n\t\t\t<template #opener>\n\t\t\t\t<div class=\"top-tabsView_menuOpener\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"activeMenuItem\"\n\t\t\t\t\t\tclass=\"top-tabsView_menuOpenerActiveItem\"\n\t\t\t\t\t\t:data-top-icon=\"activeMenuItem.icon\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ activeMenuItem.title }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"top-tabsView_menuOpenerIcon\" data-top-icon=\"\"></div>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<slot></slot>\n\t\t\t</template>\n\t\t</TopPopup>\n\n\t\t<!-- Отобразить меню на странице -->\n\t\t<template v-else>\n\t\t\t<div class=\"top-tabsView_menuList\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tv-if=\"isShortable\"\n\t\t\t\tclass=\"top-tabsView_menuFooter\"\n\t\t\t>\n\t\t\t\t<TabsViewMenuItem\n\t\t\t\t\tv-if=\"isShortable\"\n\t\t\t\t\t:icon=\"store.isShort ? '' : ''\"\n\t\t\t\t\t@click=\"store.isShort = !store.isShort\"\n\t\t\t\t>\n\t\t\t\t\t{{ store.isShort ? '' : 'Свернуть' }} <!--TODO: translate-->\n\t\t\t\t</TabsViewMenuItem>\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<style>\n/* режим отображение табов в основной области документа */\n.top-tabsView-pageMod .top-tabsView_menu {\n\tbox-sizing: border-box;\n\tposition: sticky;\n\ttop: var(--top-tabsView-top);\n\tz-index: 10;\n}\n\n/* режим отображение табов в основной области документа без popup */\n.top-tabsView-pageMod .top-tabsView_menu-inPopup_0 {\n\theight: calc(var(--100vh) - var(--top-tabsView-top));\n}\n\n/* стантартный режим */\n.top-tabsView_menu-inPopup_0 {\n\tbox-sizing: border-box;\n\twidth: var(--top-tabsView-menu-width);\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\tflex-shrink: 0;\n}\n\n/* режим вывода в popup */\n.top-tabsView_menu-inPopup_1 {\n\tborder-bottom: 1px solid var(--color-line-2-opacity);\n}\n\n.top-tabsView_menu-short {\n\twidth: auto;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener:hover {\n\tbackground: var(--color-layer-1);\n}\n\n.top-tabsView_menuOpenerIcon { display: flex; }\n\n.top-tabsView_menuOpenerActiveItem {\n\t--top-forms-padding: 0px;\n\n\tbox-sizing: border-box;\n\tpadding: var(--top-padding-2);\n\tmax-width: calc(100% - var(--top-forms-base-height));\n\twhite-space: nowrap;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--top-padding-2);\n}\n\n.top-tabsView_menuList,\n.top-tabsView_menuFooter {\n\tpadding: var(--top-padding-2);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-2);\n}\n\n.top-tabsView_menuList {\n\toverflow-y: auto;\n}\n\n.top-tabsView_menu-short .top-tabsView_menuFooter > .top-tabsView_menuItem {\n\t--top-icon-width: 100%;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { defineModel, onUnmounted, ref, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { delHash } from '@/core/utils/route';\nimport type { Props } from './types';\nimport { defineTabsStore } from './store';\nimport TabsViewMenu from './menu.vue';\nimport TopLoadbar from '@/components/forms/loadbar/loadbar.vue';\nimport { checkComponentIsLoading } from './utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowMenuInPopup: undefined,\n\tisShortable: false,\n});\n\nconst model = defineModel<string>();\n\nconst store = defineTabsStore(props, model);\n\nconst uid = Math.random();\n\nif (props.pageMod) Core.state.documentClassModificators.set(uid, 'top-hasTabsViewPageMod');\n\nonUnmounted(() => {\n\tif (props.pageMod) Core.state.documentClassModificators.delete(uid);\n\n\tif (store.$id) delHash(store.$id, store.activeItemName, true);\n});\n\nconst componentRef = ref();\nconst isLoading = ref(false);\n\nwatch([componentRef, () => store.component], () => {\n\tisLoading.value = checkComponentIsLoading(store.component);\n}, { immediate: true });\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tabsView': true,\n\t\t\t'top-tabsView-pageMod': props.pageMod,\n\t\t\t'top-tabsView-inPopup': store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<TabsViewMenu\n\t\t\t:isShortable=\"isShortable\"\n\t\t\tv-model:isLoading=\"isLoading\"\n\t\t>\n\t\t\t<!-- @slot Меню, ожидает передачу компонентов TabsViewMenuItem и TabsViewMenuTitle -->\n\t\t\t<slot name=\"menu\"></slot>\n\t\t</TabsViewMenu>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-tabsView_contents': true,\n\t\t\t\t'top-tabsView_contents-isLoading': isLoading,\n\t\t\t\t'top-tabsView_contents-noScrollable': !store.scrollable,\n\t\t\t}\"\n\t\t>\n\t\t\t<TopLoadbar v-if=\"isLoading\"/>\n\n\t\t\t<keep-alive>\n\t\t\t\t<component\n\t\t\t\t\tref=\"componentRef\"\n\t\t\t\t\t:is=\"store.component\"\n\t\t\t\t/>\n\t\t\t</keep-alive>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n:root {\n\t--top-tabsView-top: 0px;\n\t--top-tabsView-menu-width: 220px;\n\t--top-tabsView-contents-offset-top: 0px;\n}\n\n.top-tabsView {\n\tbackground: var(--color-layout-middle);\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.top-tabsView_contents {\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-layout-front-1);\n\tpadding: var(--top-padding-4);\n\tflex-grow: 1;\n\toverflow: auto;\n\tposition: relative;\n}\n\n.top-tabsView_contents-isLoading {\n\tpointer-events: none;\n}\n\n.top-tabsView_contents-noScrollable {\n\twidth: calc(100% - var(--top-tabsView-menu-width));\n\tpadding: 0;\n\toverflow: visible;\n}\n\n/* top-tabsView-inPopup */\n.top-tabsView-inPopup {\n\tbackground: var(--color-layout-front-1);\n\tflex-direction: column;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents {\n\tborder-radius: 0;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents-noScrollable {\n\twidth: auto;\n}\n</style>\n","<script setup lang=\"ts\">\n\n</script>\n\n<template>\n\t<div class=\"top-tabsView_menuDelimeter\"></div>\n</template>\n\n<style>\n.top-tabsView_menuDelimeter {\n\tpadding: var(--top-padding-1) 0;\n\tdisplay: flex;\n}\n\n.top-tabsView_menuDelimeter:before {\n\tcontent: \"\";\n\theight: 2px;\n\tbackground: var(--color-line-2);\n\tflex-grow: 1;\n}\n\n.top-tabsView_menuDelimeter:first-child,\n.top-tabsView_menuDelimeter + .top-tabsView_menuDelimeter {\n\tdisplay: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTabsStore } from './store';\nimport type { PropsMenuTitle } from './types';\nimport TabsViewMenuDelimeter from './menuDelimeter.vue';\nimport { TopPopupListItem } from '../../popup/popup';\n\ndefineProps<PropsMenuTitle>();\n\nconst store = useTabsStore();\n</script>\n\n<template>\n\t<TopPopupListItem\n\t\tv-if=\"store.showMenuInPopup\"\n\t\ttype=\"title\"\n\t>\n\t\t<slot></slot>\n\t</TopPopupListItem>\n\n\t<TabsViewMenuDelimeter v-else-if=\"store.isShort\"/>\n\n\t<div\n\t\tv-else\n\t\t:class=\"{\n\t\t\t'top-tabsView_menuTitle': true,\n\t\t\t'top-tabsView_menuTitle-subtitle': isSubtitle,\n\t\t}\"\n\t>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n.top-tabsView_menuTitle {\n\tpadding: var(--top-padding-4) var(--top-padding-2) var(--top-padding-1);\n\tfont-weight: 600;\n\tcolor: var(--color-text-1);\n}\n\n.top-tabsView_menuTitle-subtitle {\n\tpadding-top: var(--top-padding-1);\n\tfont-size: 12px;\n\tfont-weight: 400;\n\tcolor: var(--color-text-2);\n}\n</style>\n"],"names":["genStorageKey","stateName","stateKey","loadLocalStorge","store","localStorageKey","localStorageValue","addSaverLocalStorge","watch","StoreLocalStorage","popstateCallbacks","e","popstateCallback","injectionKey","defineTabsStore","props","model","defineStore","showMenuInPopup","computed","Core","pageMod","isShort","ref","component","scrollable","_e","getHash","useTabsStore","useStore","__props","href","genHash","tagName","TopPopupListItem","onClick","_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_unref","_renderSlot","_ctx","$slots","_createElementBlock","_hoisted_1","checkComponentIsLoading","preResolveComponent","condition","sleepWhile","isLoading","_useModel","slots","useSlots","menuItemByName","setMenuItemByName","item","setMenuItemByNameFromItems","menuItems","subComponent","TabsViewMenuItem","menuItem","markRaw","activeMenuItem","countChanged","numberChanged","activeItemName","setHash","elRef","resizeObserver","onMounted","onUnmounted","TopPopup","_createElementVNode","_hoisted_3","_toDisplayString","_Fragment","_hoisted_4","_hoisted_5","_createTextVNode","uid","delHash","componentRef","_createVNode","TabsViewMenu","$event","TopLoadbar","_KeepAlive","TabsViewMenuDelimeter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabsView.js","names":["$slots"],"sources":["../../src/core/utils/store/localStorage.ts","../../src/components/tabsView/tabsView/store.ts","../../src/components/tabsView/tabsView/menuItem.vue","../../src/components/tabsView/tabsView/menuItem.vue","../../src/components/tabsView/tabsView/utils.ts","../../src/components/tabsView/tabsView/menu.vue","../../src/components/tabsView/tabsView/menu.vue","../../src/components/tabsView/tabsView/tabsView.vue","../../src/components/tabsView/tabsView/tabsView.vue","../../src/components/tabsView/tabsView/menuDelimeter.vue","../../src/components/tabsView/tabsView/menuTitle.vue","../../src/components/tabsView/tabsView/menuTitle.vue"],"sourcesContent":["import { watch } from 'vue';\nimport type { Store } from './store';\n\n/**\n * Сгенерировать имя для сохранения данных в localStorage\n * @param stateName - имя свойства состояния\n * @param stateKey - ключ состояния, разные компоненты могут использовать одинаковый ключ\n */\nconst genStorageKey = <T extends Store>(stateName: keyof T, stateKey: string): string => {\n\tconst stateNameString = String(stateName);\n\n\treturn `top:${stateNameString}:${stateKey}`;\n};\n\n/**\n * Загрузить состояние\n * @param stateName - имя свойства состояния\n * @param store\n */\nconst loadLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\n\t// если Store.key не знадан, значит сохранение состояния в компоненте отключено\n\tif (!store.$id) return;\n\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\n\n\ttry {\n\t\tconst localStorageValue: typeof store[keyof typeof store] = JSON.parse(localStorage.getItem(localStorageKey) as string);\n\n\t\tif (typeof localStorageValue === typeof store[stateName]) {\n\t\t\tstore[stateName] = localStorageValue;\n\t\t}\n\t} catch (e) {\n\t\tconsole.warn(new Error(`В localStorage[${localStorageKey}] не корректный json`));\n\t}\n};\n\n/**\n * Добавить автосохранение состояние при его изменении\n * @param stateName - имя свойства состояния\n * @param store\n */\nconst addSaverLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\n\t// если store.$id не знадан, значит сохранение состояния в компоненте отключено\n\tif (!store.$id) return;\n\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\n\n\twatch(() => store[stateName], () => {\n\t\tlocalStorage.setItem(localStorageKey, JSON.stringify(store[stateName]));\n\t}, { immediate: true });\n};\n\nexport default {\n\tloadLocalStorge,\n\taddSaverLocalStorge,\n};","import type { InjectionKey, ModelRef, UnwrapNestedRefs } from 'vue';\nimport { computed, ref } from 'vue';\nimport Core from '@/core/core/core';\nimport { defineStore, useStore, type Store as DefineStore } from '@/core/utils/store';\nimport StoreLocalStorage from '@/core/utils/store/localStorage';\nimport type { Props, Store } from './types';\nimport { getHash } from '@/core/utils/route';\n\nconst popstateCallbacks = new Set<(e: PopStateEvent) => void>();\n\naddEventListener('popstate', (e) => {\n\tpopstateCallbacks.forEach(popstateCallback => popstateCallback(e));\n});\n\nexport const injectionKey = Symbol() as InjectionKey<Store>;\n\n/**\n * Инициировать Store компонента\n */\nexport const defineTabsStore = (props: Props, model: ModelRef<string | undefined>): UnwrapNestedRefs<Store> & DefineStore => {\n\tconst store = defineStore(injectionKey, () => {\n\t\tconst showMenuInPopup = computed(() => props.showMenuInPopup ?? Core.state.isMobile);\n\t\tconst pageMod = computed(() => props.pageMod);\n\t\tconst isShort = ref(false);\n\n\t\tconst component = ref(undefined);\n\t\tconst scrollable = ref(true);\n\n\t\treturn {\n\t\t\tshowMenuInPopup,\n\t\t\tpageMod,\n\t\t\tisShort,\n\t\t\tactiveItemName: model,\n\t\t\tcomponent,\n\t\t\tscrollable,\n\t\t};\n\t}, props.idState);\n\n\tif (props.isShortable) {\n\t\tconst stateName = 'isShort';\n\n\t\tStoreLocalStorage.loadLocalStorge(stateName, store);\n\t\tStoreLocalStorage.addSaverLocalStorge(stateName, store);\n\t}\n\n\tif (store.$id) {\n\t\tconst popstateCallback = (_e: PopStateEvent) => {\n\t\t\tmodel.value = getHash(store.$id!);\n\t\t};\n\n\t\tpopstateCallbacks.add(popstateCallback);\n\t}\n\n\treturn store;\n};\n\n/**\n * Получить Store компонента\n */\nexport const useTabsStore = () => useStore(injectionKey);\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { genHash } from '@/core/utils/route';\nimport { TopPopupListItem } from '@/components/popup/popup';\nimport { useTabsStore } from './store';\nimport type { PropsMenuItem } from './types';\n\nconst props = withDefaults(defineProps<PropsMenuItem>(), {\n\tscrollable: true,\n\tcomponent: undefined,\n});\n\nconst store = useTabsStore();\n\nconst href = computed(() => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (props.name && store.$id) {\n\t\treturn genHash(store.$id, props.name);\n\t}\n\n\treturn props.href;\n});\n\nconst tagName = computed(() => {\n\tif (store.showMenuInPopup) {\n\t\treturn TopPopupListItem;\n\t}\n\n\treturn href ? 'a' : 'button';\n});\n\n/**\n * Клик по элементу меню\n */\nconst onClick = (e: MouseEvent) => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (!props.href && href.value) {\n\t\te.preventDefault();\n\t}\n\n\tif (props.name) {\n\t\tstore.activeItemName = props.name;\n\t}\n};\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\ttarget=\"_self\"\n\t\t:class=\"{\n\t\t\t['top-tabsView_menuItem']: !store.showMenuInPopup,\n\t\t\t['top-active']: name && store.activeItemName === name,\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-spa-disabled']: true,\n\t\t}\"\n\t\t:href=\"href\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t@click=\"onClick\"\n\t>\n\t\t<slot name=\"default\" v-if=\"store.showMenuInPopup\"></slot>\n\n\t\t<span\n\t\t\tv-else-if=\"$slots.default && !store.isShort\"\n\t\t\tclass=\"top-ellipsis\"\n\t\t>\n\t\t\t<slot name=\"default\"></slot>\n\t\t</span>\n\t</component>\n</template>\n\n<style>\n.top-tabsView_menuItem {\n\t--top-icon-color: var(--color-text-2);\n\t--top-icon-width: calc(var(--top-icon-size));\n\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\n\tborder: none;\n\tborder-radius: var(--top-radius-2);\n\tpadding: var(--top-padding-2);\n\tbackground: transparent;\n\theight: 40px;\n\n\tcolor: var(--color-text-1);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n\n\tdisplay: flex;\n\tgap: var(--top-gap-2);\n\talign-items: center;\n\tjustify-content: flex-start;\n\ttransition: background var(--transition);\n}\n\n.top-tabsView_menuItem:hover {\n\t--top-icon-color: var(--color-text-1);\n\n\tbackground: var(--color-bg-shading-1);\n\ttext-decoration: none;\n}\n\n.top-tabsView_menuItem.top-active {\n\t--top-icon-color: inherit;\n\n\tbackground: var(--color-layout-front-1);\n\tcolor: inherit;\n}\n\n.top-tabsView_menuItem:disabled:not(option):not(optgroup):not(.top-forms-option),\n.top-tabsView_menuItem:disabled ~ .top-formsCaption,\n.top-tabsView_menuItem.top-disabled[data-top-icon]:before,\n.top-tabsView_menuItem.top-disabled[data-top-icon2]:after {\n\topacity: unset;\n\tfilter: unset;\n}\n\n.top-tabsView_menuItem.top-disabled {\n\t--top-icon-color: var(--color-text-4);\n\n\tcolor: var(--color-text-4);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { genHash } from '@/core/utils/route';\nimport { TopPopupListItem } from '@/components/popup/popup';\nimport { useTabsStore } from './store';\nimport type { PropsMenuItem } from './types';\n\nconst props = withDefaults(defineProps<PropsMenuItem>(), {\n\tscrollable: true,\n\tcomponent: undefined,\n});\n\nconst store = useTabsStore();\n\nconst href = computed(() => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (props.name && store.$id) {\n\t\treturn genHash(store.$id, props.name);\n\t}\n\n\treturn props.href;\n});\n\nconst tagName = computed(() => {\n\tif (store.showMenuInPopup) {\n\t\treturn TopPopupListItem;\n\t}\n\n\treturn href ? 'a' : 'button';\n});\n\n/**\n * Клик по элементу меню\n */\nconst onClick = (e: MouseEvent) => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (!props.href && href.value) {\n\t\te.preventDefault();\n\t}\n\n\tif (props.name) {\n\t\tstore.activeItemName = props.name;\n\t}\n};\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\ttarget=\"_self\"\n\t\t:class=\"{\n\t\t\t['top-tabsView_menuItem']: !store.showMenuInPopup,\n\t\t\t['top-active']: name && store.activeItemName === name,\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-spa-disabled']: true,\n\t\t}\"\n\t\t:href=\"href\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t@click=\"onClick\"\n\t>\n\t\t<slot name=\"default\" v-if=\"store.showMenuInPopup\"></slot>\n\n\t\t<span\n\t\t\tv-else-if=\"$slots.default && !store.isShort\"\n\t\t\tclass=\"top-ellipsis\"\n\t\t>\n\t\t\t<slot name=\"default\"></slot>\n\t\t</span>\n\t</component>\n</template>\n\n<style>\n.top-tabsView_menuItem {\n\t--top-icon-color: var(--color-text-2);\n\t--top-icon-width: calc(var(--top-icon-size));\n\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\n\tborder: none;\n\tborder-radius: var(--top-radius-2);\n\tpadding: var(--top-padding-2);\n\tbackground: transparent;\n\theight: 40px;\n\n\tcolor: var(--color-text-1);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n\n\tdisplay: flex;\n\tgap: var(--top-gap-2);\n\talign-items: center;\n\tjustify-content: flex-start;\n\ttransition: background var(--transition);\n}\n\n.top-tabsView_menuItem:hover {\n\t--top-icon-color: var(--color-text-1);\n\n\tbackground: var(--color-bg-shading-1);\n\ttext-decoration: none;\n}\n\n.top-tabsView_menuItem.top-active {\n\t--top-icon-color: inherit;\n\n\tbackground: var(--color-layout-front-1);\n\tcolor: inherit;\n}\n\n.top-tabsView_menuItem:disabled:not(option):not(optgroup):not(.top-forms-option),\n.top-tabsView_menuItem:disabled ~ .top-formsCaption,\n.top-tabsView_menuItem.top-disabled[data-top-icon]:before,\n.top-tabsView_menuItem.top-disabled[data-top-icon2]:after {\n\topacity: unset;\n\tfilter: unset;\n}\n\n.top-tabsView_menuItem.top-disabled {\n\t--top-icon-color: var(--color-text-4);\n\n\tcolor: var(--color-text-4);\n}\n</style>\n","// TODO: Эту функцию можно вынести в глобальный utils\n\nimport { sleepWhile } from '@/core/utils/system';\n\n/**\n * Проверка нахождения компонента в состояние загрузки\n * @param component\n */\nexport const checkComponentIsLoading = (component: any) => {\n\treturn component?.name === 'AsyncComponentWrapper' && !component?.__asyncResolved;\n};\n\n/**\n * Презагрузить компонент\n *\n * Некоторое время ожидает загрузку компонента, прежде чем завершит работу\n */\nexport const preResolveComponent = async (component: any, condition: Function) => {\n\tif (component?.name !== 'AsyncComponentWrapper') return;\n\tif (component?.__asyncResolved) return;\n\n\tcomponent.__asyncLoader();\n\n\tawait sleepWhile(() => {\n\t\treturn condition() && checkComponentIsLoading(component);\n\t}, 200);\n};\n","<script setup lang=\"ts\">\nimport type { Ref, VNode } from 'vue';\nimport { markRaw, ref, useSlots, watch } from 'vue';\nimport { TopPopup } from '../../popup/popup';\nimport { getHash, setHash } from '@/core/utils/route';\n\nimport type { MenuItem, PropsMenu, PropsMenuItem } from './types';\nimport { useTabsStore } from './store';\nimport TabsViewMenuItem from './menuItem.vue';\nimport { preResolveComponent } from './utils';\n\ndefineProps<PropsMenu>();\n\nconst isLoading = defineModel('isLoading');\n\nconst store = useTabsStore();\n\nconst slots = useSlots();\n\n// словарь используется для оптимизации получения нужного menuItem\nconst menuItemByName: Map<PropsMenuItem['name'], MenuItem> = new Map();\n\n// заполнить словарь с menuItem, по элементам в slot default\nconst setMenuItemByName = () => {\n\tif (!slots.default) return;\n\n\tconst component: any = slots.default({}).find(item => item.key === '_menu');\n\tif (!component) return;\n\n\tsetMenuItemByNameFromItems(component.children);\n};\n\n// заполнить словарь с menuItem, по элементам\nconst setMenuItemByNameFromItems = (menuItems: VNode[]) => {\n\tmenuItems.forEach((subComponent: any) => {\n\t\t// это не компонент элемента меню\n\t\tif (subComponent.type.__name && subComponent.type.__name !== TabsViewMenuItem.__name) return;\n\n\t\t// это не компонент, например template\n\t\tif (!subComponent.type.__name && typeof subComponent.children === 'object') {\n\t\t\tsetMenuItemByNameFromItems(subComponent.children);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!subComponent.props?.name || subComponent.props?.disabled) return;\n\n\t\tconst menuItem: MenuItem = {\n\t\t\ttitle: (subComponent.children.default?.()[0].children as string).trim(),\n\t\t\ticon: subComponent.props.icon,\n\t\t\tcomponent: subComponent.props.component ? markRaw(subComponent.props.component) : TabsViewMenuItem.props.component.default,\n\t\t\tscrollable: subComponent.props.scrollable ?? TabsViewMenuItem.props.scrollable.default,\n\t\t};\n\n\t\tmenuItemByName.set(subComponent.props.name, menuItem);\n\t});\n};\n\n/**\n * activeMenuItem нужен:\n * - для вывода текста активной вкладки в меню с popup\n * - для вывода компонента активной вкладки (store.component)\n * - для установки store.scrollable\n */\nconst activeMenuItem: Ref<MenuItem | null> = ref(null);\n\n/**\n * Кол-во изменений активной вкладки\n */\nlet countChanged = 0;\n\n/**\n * Смена активной вкладки\n *\n * TODO: смена slot, например смена языка, требует повторного выполнения setMenuItemByName()\n */\nwatch(\n\t() => store.activeItemName,\n\tasync () => {\n\t\tconst numberChanged = ++countChanged; // порядковый номер текущего изменения\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tsetMenuItemByName();\n\t\t}\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tstore.activeItemName = '';\n\n\t\t\treturn;\n\t\t}\n\n\t\tactiveMenuItem.value = menuItemByName.get(store.activeItemName) ?? null;\n\n\t\t// элемент не найден, установить из хеша страницы\n\t\tif (!activeMenuItem.value && store.$id) {\n\t\t\tconst activeItemName = getHash(store.$id);\n\n\t\t\tactiveMenuItem.value = menuItemByName.get(activeItemName) ?? null;\n\n\t\t\tif (activeMenuItem.value) {\n\t\t\t\tstore.activeItemName = activeItemName;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// элемент не найден, установить первый доступный\n\t\tif (!activeMenuItem.value) {\n\t\t\tstore.activeItemName = menuItemByName.keys().next().value!;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// запрошена смена на уже активный элемент\n\t\tif (activeMenuItem.value.component === store.component) {\n\t\t\tisLoading.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (store.$id) setHash(store.$id, store.activeItemName, false);\n\n\t\t// флаг загрузки будет сброшен при инициализации компонента\n\t\tisLoading.value = true;\n\n\t\t/**\n\t\t * Презагрузить компонент\n\t\t *\n\t\t * Нужно для того, чтобы минимизировать скачки интерфейса при ожидании загрузки асинхронного компонента\n\t\t */\n\t\tawait preResolveComponent(activeMenuItem.value.component, () => numberChanged === countChanged);\n\n\t\t// влкадка была сменена еще раз во время sleepWhile\n\t\tif (numberChanged !== countChanged) {\n\t\t\treturn;\n\t\t}\n\n\t\tstore.scrollable = activeMenuItem.value.scrollable;\n\t\tstore.component = activeMenuItem.value.component;\n\n\t\tif (activeMenuItem.value && !store.component) {\n\t\t\tconsole.warn(`Компонент вкладки ${store.activeItemName} не найден. Добавьте props.component для пункта меню ${store.activeItemName}.`);\n\t\t}\n\t},\n\t{ immediate: true },\n);\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tabsView_menu': true,\n\t\t\t'top-tabsView_menu-inPopup_0': !store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-inPopup_1': store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-short': store.isShort && !store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<!-- Спрятать меню под кнопку в popup -->\n\t\t<TopPopup v-if=\"store.showMenuInPopup\">\n\t\t\t<template #opener>\n\t\t\t\t<div class=\"top-tabsView_menuOpener\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"activeMenuItem\"\n\t\t\t\t\t\tclass=\"top-tabsView_menuOpenerActiveItem\"\n\t\t\t\t\t\t:data-top-icon=\"activeMenuItem.icon\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ activeMenuItem.title }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"top-tabsView_menuOpenerIcon\" data-top-icon=\"\"></div>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<slot></slot>\n\t\t\t</template>\n\t\t</TopPopup>\n\n\t\t<!-- Отобразить меню на странице -->\n\t\t<template v-else>\n\t\t\t<div class=\"top-tabsView_menuList\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tv-if=\"isShortable\"\n\t\t\t\tclass=\"top-tabsView_menuFooter\"\n\t\t\t>\n\t\t\t\t<TabsViewMenuItem\n\t\t\t\t\tv-if=\"isShortable\"\n\t\t\t\t\t:icon=\"store.isShort ? '' : ''\"\n\t\t\t\t\t@click=\"store.isShort = !store.isShort\"\n\t\t\t\t>\n\t\t\t\t\t{{ store.isShort ? '' : 'Свернуть' }} <!--TODO: translate-->\n\t\t\t\t</TabsViewMenuItem>\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<style>\n/* режим отображение табов в основной области документа */\n.top-tabsView-pageMod .top-tabsView_menu {\n\tbox-sizing: border-box;\n\tposition: sticky;\n\ttop: var(--top-tabsView-top);\n\tz-index: 10;\n}\n\n/* режим отображение табов в основной области документа без popup */\n.top-tabsView-pageMod .top-tabsView_menu-inPopup_0 {\n\theight: calc(var(--100vh) - var(--top-tabsView-top));\n}\n\n/* стантартный режим */\n.top-tabsView_menu-inPopup_0 {\n\tbox-sizing: border-box;\n\twidth: var(--top-tabsView-menu-width);\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\tflex-shrink: 0;\n}\n\n/* режим вывода в popup */\n.top-tabsView_menu-inPopup_1 {\n\tborder-bottom: var(--top-tabsView-menu-border-bottom-width) solid var(--color-line-2-opacity);\n}\n\n.top-tabsView_menu-short {\n\twidth: auto;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener:hover {\n\tbackground: var(--color-layer-1);\n}\n\n.top-tabsView_menuOpenerIcon { display: flex; }\n\n.top-tabsView_menuOpenerActiveItem {\n\t--top-forms-padding: 0px;\n\n\tbox-sizing: border-box;\n\tpadding: var(--top-tabsView-menu-opener-padding);\n\tmax-width: calc(100% - var(--top-forms-base-height));\n\twhite-space: nowrap;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--top-padding-2);\n}\n\n.top-tabsView_menuList,\n.top-tabsView_menuFooter {\n\tpadding: var(--top-padding-2);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-2);\n}\n\n.top-tabsView_menuList {\n\toverflow-y: auto;\n}\n\n.top-tabsView_menu-short .top-tabsView_menuFooter > .top-tabsView_menuItem {\n\t--top-icon-width: 100%;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Ref, VNode } from 'vue';\nimport { markRaw, ref, useSlots, watch } from 'vue';\nimport { TopPopup } from '../../popup/popup';\nimport { getHash, setHash } from '@/core/utils/route';\n\nimport type { MenuItem, PropsMenu, PropsMenuItem } from './types';\nimport { useTabsStore } from './store';\nimport TabsViewMenuItem from './menuItem.vue';\nimport { preResolveComponent } from './utils';\n\ndefineProps<PropsMenu>();\n\nconst isLoading = defineModel('isLoading');\n\nconst store = useTabsStore();\n\nconst slots = useSlots();\n\n// словарь используется для оптимизации получения нужного menuItem\nconst menuItemByName: Map<PropsMenuItem['name'], MenuItem> = new Map();\n\n// заполнить словарь с menuItem, по элементам в slot default\nconst setMenuItemByName = () => {\n\tif (!slots.default) return;\n\n\tconst component: any = slots.default({}).find(item => item.key === '_menu');\n\tif (!component) return;\n\n\tsetMenuItemByNameFromItems(component.children);\n};\n\n// заполнить словарь с menuItem, по элементам\nconst setMenuItemByNameFromItems = (menuItems: VNode[]) => {\n\tmenuItems.forEach((subComponent: any) => {\n\t\t// это не компонент элемента меню\n\t\tif (subComponent.type.__name && subComponent.type.__name !== TabsViewMenuItem.__name) return;\n\n\t\t// это не компонент, например template\n\t\tif (!subComponent.type.__name && typeof subComponent.children === 'object') {\n\t\t\tsetMenuItemByNameFromItems(subComponent.children);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!subComponent.props?.name || subComponent.props?.disabled) return;\n\n\t\tconst menuItem: MenuItem = {\n\t\t\ttitle: (subComponent.children.default?.()[0].children as string).trim(),\n\t\t\ticon: subComponent.props.icon,\n\t\t\tcomponent: subComponent.props.component ? markRaw(subComponent.props.component) : TabsViewMenuItem.props.component.default,\n\t\t\tscrollable: subComponent.props.scrollable ?? TabsViewMenuItem.props.scrollable.default,\n\t\t};\n\n\t\tmenuItemByName.set(subComponent.props.name, menuItem);\n\t});\n};\n\n/**\n * activeMenuItem нужен:\n * - для вывода текста активной вкладки в меню с popup\n * - для вывода компонента активной вкладки (store.component)\n * - для установки store.scrollable\n */\nconst activeMenuItem: Ref<MenuItem | null> = ref(null);\n\n/**\n * Кол-во изменений активной вкладки\n */\nlet countChanged = 0;\n\n/**\n * Смена активной вкладки\n *\n * TODO: смена slot, например смена языка, требует повторного выполнения setMenuItemByName()\n */\nwatch(\n\t() => store.activeItemName,\n\tasync () => {\n\t\tconst numberChanged = ++countChanged; // порядковый номер текущего изменения\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tsetMenuItemByName();\n\t\t}\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tstore.activeItemName = '';\n\n\t\t\treturn;\n\t\t}\n\n\t\tactiveMenuItem.value = menuItemByName.get(store.activeItemName) ?? null;\n\n\t\t// элемент не найден, установить из хеша страницы\n\t\tif (!activeMenuItem.value && store.$id) {\n\t\t\tconst activeItemName = getHash(store.$id);\n\n\t\t\tactiveMenuItem.value = menuItemByName.get(activeItemName) ?? null;\n\n\t\t\tif (activeMenuItem.value) {\n\t\t\t\tstore.activeItemName = activeItemName;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// элемент не найден, установить первый доступный\n\t\tif (!activeMenuItem.value) {\n\t\t\tstore.activeItemName = menuItemByName.keys().next().value!;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// запрошена смена на уже активный элемент\n\t\tif (activeMenuItem.value.component === store.component) {\n\t\t\tisLoading.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (store.$id) setHash(store.$id, store.activeItemName, false);\n\n\t\t// флаг загрузки будет сброшен при инициализации компонента\n\t\tisLoading.value = true;\n\n\t\t/**\n\t\t * Презагрузить компонент\n\t\t *\n\t\t * Нужно для того, чтобы минимизировать скачки интерфейса при ожидании загрузки асинхронного компонента\n\t\t */\n\t\tawait preResolveComponent(activeMenuItem.value.component, () => numberChanged === countChanged);\n\n\t\t// влкадка была сменена еще раз во время sleepWhile\n\t\tif (numberChanged !== countChanged) {\n\t\t\treturn;\n\t\t}\n\n\t\tstore.scrollable = activeMenuItem.value.scrollable;\n\t\tstore.component = activeMenuItem.value.component;\n\n\t\tif (activeMenuItem.value && !store.component) {\n\t\t\tconsole.warn(`Компонент вкладки ${store.activeItemName} не найден. Добавьте props.component для пункта меню ${store.activeItemName}.`);\n\t\t}\n\t},\n\t{ immediate: true },\n);\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tabsView_menu': true,\n\t\t\t'top-tabsView_menu-inPopup_0': !store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-inPopup_1': store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-short': store.isShort && !store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<!-- Спрятать меню под кнопку в popup -->\n\t\t<TopPopup v-if=\"store.showMenuInPopup\">\n\t\t\t<template #opener>\n\t\t\t\t<div class=\"top-tabsView_menuOpener\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"activeMenuItem\"\n\t\t\t\t\t\tclass=\"top-tabsView_menuOpenerActiveItem\"\n\t\t\t\t\t\t:data-top-icon=\"activeMenuItem.icon\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ activeMenuItem.title }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"top-tabsView_menuOpenerIcon\" data-top-icon=\"\"></div>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<slot></slot>\n\t\t\t</template>\n\t\t</TopPopup>\n\n\t\t<!-- Отобразить меню на странице -->\n\t\t<template v-else>\n\t\t\t<div class=\"top-tabsView_menuList\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tv-if=\"isShortable\"\n\t\t\t\tclass=\"top-tabsView_menuFooter\"\n\t\t\t>\n\t\t\t\t<TabsViewMenuItem\n\t\t\t\t\tv-if=\"isShortable\"\n\t\t\t\t\t:icon=\"store.isShort ? '' : ''\"\n\t\t\t\t\t@click=\"store.isShort = !store.isShort\"\n\t\t\t\t>\n\t\t\t\t\t{{ store.isShort ? '' : 'Свернуть' }} <!--TODO: translate-->\n\t\t\t\t</TabsViewMenuItem>\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<style>\n/* режим отображение табов в основной области документа */\n.top-tabsView-pageMod .top-tabsView_menu {\n\tbox-sizing: border-box;\n\tposition: sticky;\n\ttop: var(--top-tabsView-top);\n\tz-index: 10;\n}\n\n/* режим отображение табов в основной области документа без popup */\n.top-tabsView-pageMod .top-tabsView_menu-inPopup_0 {\n\theight: calc(var(--100vh) - var(--top-tabsView-top));\n}\n\n/* стантартный режим */\n.top-tabsView_menu-inPopup_0 {\n\tbox-sizing: border-box;\n\twidth: var(--top-tabsView-menu-width);\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\tflex-shrink: 0;\n}\n\n/* режим вывода в popup */\n.top-tabsView_menu-inPopup_1 {\n\tborder-bottom: var(--top-tabsView-menu-border-bottom-width) solid var(--color-line-2-opacity);\n}\n\n.top-tabsView_menu-short {\n\twidth: auto;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener:hover {\n\tbackground: var(--color-layer-1);\n}\n\n.top-tabsView_menuOpenerIcon { display: flex; }\n\n.top-tabsView_menuOpenerActiveItem {\n\t--top-forms-padding: 0px;\n\n\tbox-sizing: border-box;\n\tpadding: var(--top-tabsView-menu-opener-padding);\n\tmax-width: calc(100% - var(--top-forms-base-height));\n\twhite-space: nowrap;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--top-padding-2);\n}\n\n.top-tabsView_menuList,\n.top-tabsView_menuFooter {\n\tpadding: var(--top-padding-2);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-2);\n}\n\n.top-tabsView_menuList {\n\toverflow-y: auto;\n}\n\n.top-tabsView_menu-short .top-tabsView_menuFooter > .top-tabsView_menuItem {\n\t--top-icon-width: 100%;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { defineModel, onUnmounted, ref, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { delHash } from '@/core/utils/route';\nimport type { Props } from './types';\nimport { defineTabsStore } from './store';\nimport TabsViewMenu from './menu.vue';\nimport TopLoadbar from '@/components/forms/loadbar/loadbar.vue';\nimport { checkComponentIsLoading } from './utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowMenuInPopup: undefined,\n\tisShortable: false,\n});\n\nconst model = defineModel<string>();\n\nconst store = defineTabsStore(props, model);\n\nconst uid = Math.random();\n\nif (props.pageMod) Core.state.documentClassModificators.set(uid, 'top-hasTabsViewPageMod');\n\nonUnmounted(() => {\n\tif (props.pageMod) Core.state.documentClassModificators.delete(uid);\n\n\tif (store.$id) delHash(store.$id, store.activeItemName, true);\n});\n\nconst componentRef = ref();\nconst isLoading = ref(false);\n\nwatch([componentRef, () => store.component], () => {\n\tisLoading.value = checkComponentIsLoading(store.component);\n}, { immediate: true });\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tabsView': true,\n\t\t\t'top-tabsView-pageMod': props.pageMod,\n\t\t\t'top-tabsView-inPopup': store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<TabsViewMenu\n\t\t\t:isShortable=\"isShortable\"\n\t\t\tv-model:isLoading=\"isLoading\"\n\t\t>\n\t\t\t<!-- @slot Меню, ожидает передачу компонентов TabsViewMenuItem и TabsViewMenuTitle -->\n\t\t\t<slot name=\"menu\"></slot>\n\t\t</TabsViewMenu>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-tabsView_contents': true,\n\t\t\t\t'top-tabsView_contents-isLoading': isLoading,\n\t\t\t\t'top-tabsView_contents-noScrollable': !store.scrollable,\n\t\t\t}\"\n\t\t>\n\t\t\t<TopLoadbar v-if=\"isLoading\"/>\n\n\t\t\t<keep-alive>\n\t\t\t\t<component\n\t\t\t\t\tref=\"componentRef\"\n\t\t\t\t\t:is=\"store.component\"\n\t\t\t\t/>\n\t\t\t</keep-alive>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n:root {\n\t--top-tabsView-top: 0px;\n\t--top-tabsView-menu-width: 220px;\n\t--top-tabsView-contents-offset-top: 0px;\n\t--top-tabsView-menu-border-bottom-width: 1px;\n\t--top-tabsView-menu-opener-padding: var(--top-padding-2);\n}\n\n.top-tabsView {\n\tbackground: var(--color-layout-middle);\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.top-tabsView_contents {\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-layout-front-1);\n\tpadding: var(--top-padding-4);\n\tflex-grow: 1;\n\toverflow: auto;\n\tposition: relative;\n}\n\n.top-tabsView_contents-isLoading {\n\tpointer-events: none;\n}\n\n.top-tabsView_contents-noScrollable {\n\twidth: calc(100% - var(--top-tabsView-menu-width));\n\tpadding: 0;\n\toverflow: visible;\n}\n\n/* top-tabsView-inPopup */\n.top-tabsView-inPopup {\n\tbackground: var(--color-layout-front-1);\n\tflex-direction: column;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents {\n\tborder-radius: 0;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents-noScrollable {\n\twidth: auto;\n}\n\n@media only screen and (max-width: 900px) {\n\t:root {\n\t\t/* Суммарно должна быть высота элемента \".top-tabsView_menu\" */\n\t\t--top-tabsView-contents-offset-top: calc(var(--top-icon-size) + var(--top-tabsView-menu-opener-padding) * 2 + var(--top-tabsView-menu-border-bottom-width));\n\t}\n}\n</style>\n","<script setup lang=\"ts\">\nimport { defineModel, onUnmounted, ref, watch } from 'vue';\nimport Core from '@/core/core/core';\nimport { delHash } from '@/core/utils/route';\nimport type { Props } from './types';\nimport { defineTabsStore } from './store';\nimport TabsViewMenu from './menu.vue';\nimport TopLoadbar from '@/components/forms/loadbar/loadbar.vue';\nimport { checkComponentIsLoading } from './utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowMenuInPopup: undefined,\n\tisShortable: false,\n});\n\nconst model = defineModel<string>();\n\nconst store = defineTabsStore(props, model);\n\nconst uid = Math.random();\n\nif (props.pageMod) Core.state.documentClassModificators.set(uid, 'top-hasTabsViewPageMod');\n\nonUnmounted(() => {\n\tif (props.pageMod) Core.state.documentClassModificators.delete(uid);\n\n\tif (store.$id) delHash(store.$id, store.activeItemName, true);\n});\n\nconst componentRef = ref();\nconst isLoading = ref(false);\n\nwatch([componentRef, () => store.component], () => {\n\tisLoading.value = checkComponentIsLoading(store.component);\n}, { immediate: true });\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tabsView': true,\n\t\t\t'top-tabsView-pageMod': props.pageMod,\n\t\t\t'top-tabsView-inPopup': store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<TabsViewMenu\n\t\t\t:isShortable=\"isShortable\"\n\t\t\tv-model:isLoading=\"isLoading\"\n\t\t>\n\t\t\t<!-- @slot Меню, ожидает передачу компонентов TabsViewMenuItem и TabsViewMenuTitle -->\n\t\t\t<slot name=\"menu\"></slot>\n\t\t</TabsViewMenu>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-tabsView_contents': true,\n\t\t\t\t'top-tabsView_contents-isLoading': isLoading,\n\t\t\t\t'top-tabsView_contents-noScrollable': !store.scrollable,\n\t\t\t}\"\n\t\t>\n\t\t\t<TopLoadbar v-if=\"isLoading\"/>\n\n\t\t\t<keep-alive>\n\t\t\t\t<component\n\t\t\t\t\tref=\"componentRef\"\n\t\t\t\t\t:is=\"store.component\"\n\t\t\t\t/>\n\t\t\t</keep-alive>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n:root {\n\t--top-tabsView-top: 0px;\n\t--top-tabsView-menu-width: 220px;\n\t--top-tabsView-contents-offset-top: 0px;\n\t--top-tabsView-menu-border-bottom-width: 1px;\n\t--top-tabsView-menu-opener-padding: var(--top-padding-2);\n}\n\n.top-tabsView {\n\tbackground: var(--color-layout-middle);\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.top-tabsView_contents {\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-layout-front-1);\n\tpadding: var(--top-padding-4);\n\tflex-grow: 1;\n\toverflow: auto;\n\tposition: relative;\n}\n\n.top-tabsView_contents-isLoading {\n\tpointer-events: none;\n}\n\n.top-tabsView_contents-noScrollable {\n\twidth: calc(100% - var(--top-tabsView-menu-width));\n\tpadding: 0;\n\toverflow: visible;\n}\n\n/* top-tabsView-inPopup */\n.top-tabsView-inPopup {\n\tbackground: var(--color-layout-front-1);\n\tflex-direction: column;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents {\n\tborder-radius: 0;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents-noScrollable {\n\twidth: auto;\n}\n\n@media only screen and (max-width: 900px) {\n\t:root {\n\t\t/* Суммарно должна быть высота элемента \".top-tabsView_menu\" */\n\t\t--top-tabsView-contents-offset-top: calc(var(--top-icon-size) + var(--top-tabsView-menu-opener-padding) * 2 + var(--top-tabsView-menu-border-bottom-width));\n\t}\n}\n</style>\n","<script setup lang=\"ts\">\n\n</script>\n\n<template>\n\t<div class=\"top-tabsView_menuDelimeter\"></div>\n</template>\n\n<style>\n.top-tabsView_menuDelimeter {\n\tpadding: var(--top-padding-1) 0;\n\tdisplay: flex;\n}\n\n.top-tabsView_menuDelimeter:before {\n\tcontent: \"\";\n\theight: 2px;\n\tbackground: var(--color-line-2);\n\tflex-grow: 1;\n}\n\n.top-tabsView_menuDelimeter:first-child,\n.top-tabsView_menuDelimeter + .top-tabsView_menuDelimeter {\n\tdisplay: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTabsStore } from './store';\nimport type { PropsMenuTitle } from './types';\nimport TabsViewMenuDelimeter from './menuDelimeter.vue';\nimport { TopPopupListItem } from '../../popup/popup';\n\ndefineProps<PropsMenuTitle>();\n\nconst store = useTabsStore();\n</script>\n\n<template>\n\t<TopPopupListItem\n\t\tv-if=\"store.showMenuInPopup\"\n\t\ttype=\"title\"\n\t>\n\t\t<slot></slot>\n\t</TopPopupListItem>\n\n\t<TabsViewMenuDelimeter v-else-if=\"store.isShort\"/>\n\n\t<div\n\t\tv-else\n\t\t:class=\"{\n\t\t\t'top-tabsView_menuTitle': true,\n\t\t\t'top-tabsView_menuTitle-subtitle': isSubtitle,\n\t\t}\"\n\t>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n.top-tabsView_menuTitle {\n\tpadding: var(--top-padding-4) var(--top-padding-2) var(--top-padding-1);\n\tfont-weight: 600;\n\tcolor: var(--color-text-1);\n}\n\n.top-tabsView_menuTitle-subtitle {\n\tpadding-top: var(--top-padding-1);\n\tfont-size: 12px;\n\tfont-weight: 400;\n\tcolor: var(--color-text-2);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTabsStore } from './store';\nimport type { PropsMenuTitle } from './types';\nimport TabsViewMenuDelimeter from './menuDelimeter.vue';\nimport { TopPopupListItem } from '../../popup/popup';\n\ndefineProps<PropsMenuTitle>();\n\nconst store = useTabsStore();\n</script>\n\n<template>\n\t<TopPopupListItem\n\t\tv-if=\"store.showMenuInPopup\"\n\t\ttype=\"title\"\n\t>\n\t\t<slot></slot>\n\t</TopPopupListItem>\n\n\t<TabsViewMenuDelimeter v-else-if=\"store.isShort\"/>\n\n\t<div\n\t\tv-else\n\t\t:class=\"{\n\t\t\t'top-tabsView_menuTitle': true,\n\t\t\t'top-tabsView_menuTitle-subtitle': isSubtitle,\n\t\t}\"\n\t>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n.top-tabsView_menuTitle {\n\tpadding: var(--top-padding-4) var(--top-padding-2) var(--top-padding-1);\n\tfont-weight: 600;\n\tcolor: var(--color-text-1);\n}\n\n.top-tabsView_menuTitle-subtitle {\n\tpadding-top: var(--top-padding-1);\n\tfont-size: 12px;\n\tfont-weight: 400;\n\tcolor: var(--color-text-2);\n}\n</style>\n"],"mappings":"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"}
|
package/utils/check.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([
|
|
2
|
-
//# sourceMappingURL=check.amd.js.map
|
|
1
|
+
define([`require`,`exports`,`./url.amd.js`],function(e,t,n){"use strict";Object.defineProperty(t,`__esModule`,{value:!0}),t.validUrl=t.isIp=t.isEmail=t.isDomain=t.getDomainRegexp=void 0;var r=()=>`(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(xn--)?(?:[\\w-]+)\\/?`,i=(e,t=!1)=>{e+=``,e=e.toLowerCase();let n=`^[-0-9a-z_\\.\\+]+@([-0-9a-z_^\\.]+\\.)+[a-z]{2,20}$`;return t&&(n=`^[-0-9a-zа-яё_\\.\\+]+@([-0-9a-zа-яё_^\\.]+\\.)+[a-zа-яё]{2,20}$`),new RegExp(n).test(e)},a=(e,t=!1)=>{if(e=e.trim(),e.includes(` `))return!1;let n=e.replace(/^(https?:\/\/)?(www\.)?([^/]+).*/,`$3`);return t&&s(n)?!0:o(n)},o=e=>(e=(0,n.toPuny)(e),RegExp(`^${r()}$`,`u`).test(e)),s=e=>RegExp(`((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`).test(e);t.getDomainRegexp=r,t.isEmail=i,t.validUrl=a,t.isDomain=o,t.isIp=s});
|
|
2
|
+
//# sourceMappingURL=check.amd.js.map
|
package/utils/check.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["utils/check.js","../../src/core/utils/check.ts"],"names":["exports","t","n","r","a","i","url_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,eAAW,CAAE,SAAU,EAAS,EAAS,EAAU,CAC7E,aCaS,OAAA,eACLA,EAAA,aAAA,CAAA,MAAA,GAAA,CAAA,CASP,EAEA,SAAc,EAAa,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,IAAA,GAS3B,IALIC,MACS,gEAAAC,GAGC,EAAI,EAAA,CAAA,IACL,CAMW,GAAa,GAAU,EAAA,EAAmB,aAAA,CAClE,IAAU,EAAA,uDAKJ,OAAa,IAAQ,EAAA,oEAAyC,IAAA,OAAA,EAAA,CAAA,KAAA,EAAA,EAIpEC,GAFI,EAAgB,EAAO,CAAS,IAE7B,CAMiB,GAAA,EACxB,EAAA,MAAuB,CAEJ,EAAA,SAAW,IAAkB,CDjDrC,MAAO,CAAC,EACZ,IAAI,EAAI,EAAE,QAAQ,mCAAoC,KAAK,CAC3D,OAAO,GAAKC,EAAE,EAAE,CAAG,CAAC,EAAIC,EAAE,EAAE,EAC7BA,EAAK,IAAO,GAAK,EAAGC,EAAS,QAAQJ,EAAE,CAAE,OAAO,IAAID,GAAG,CAAC,GAAI,IAAI,CAAC,KAAKC,EAAE,EAAGE,EAAK,GAAuB,OAAO,mvCAAmvC,CAAE,KAAK,EAAE,CAC72C,EAAQ,gBAAkBH,EAC1B,EAAQ,QAAUC,EAClB,EAAQ,SAAWC,EACnB,EAAQ,SAAWE,EACnB,EAAQ,KAAOD,GACjB","sourcesContent":["define([\"require\", \"exports\", \"./url.js\"], function (require, exports, url_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.validUrl = exports.isIp = exports.isEmail = exports.isDomain = exports.getDomainRegexp = void 0;\n //#region src/core/utils/check.ts\n var t = () => \"(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+(xn--)?(?:[\\\\w-]+)\\\\/?\", n = (e, t = !1) => {\n e += \"\", e = e.toLowerCase();\n let n = \"^[-0-9a-z_\\\\.\\\\+]+@([-0-9a-z_^\\\\.]+\\\\.)+[a-z]{2,20}$\";\n return t && (n = \"^[-0-9a-zа-яё_\\\\.\\\\+]+@([-0-9a-zа-яё_^\\\\.]+\\\\.)+[a-zа-яё]{2,20}$\"), new RegExp(n).test(e);\n }, r = (e, t = !1) => {\n if (e = e.trim(), e.includes(\" \"))\n return !1;\n let n = e.replace(/^(https?:\\/\\/)?(www\\.)?([^/]+).*/, \"$3\");\n return t && a(n) ? !0 : i(n);\n }, i = (n) => (n = (0, url_js_1.toPuny)(n), RegExp(`^${t()}$`, \"u\").test(n)), a = (e) => ( /* @__PURE__ */RegExp(\"((^\\\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\\\s*$)|(^\\\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))(%.+)?\\\\s*$))\")).test(e);\n exports.getDomainRegexp = t;\n exports.isEmail = n;\n exports.validUrl = r;\n exports.isDomain = i;\n exports.isIp = a;\n});\n//# sourceMappingURL=check.js.map\n","/**\n * Функции для проверки данных\n * @packageDocumentation\n */\n\nimport { toPuny } from '@/core/utils/url';\n\n/**\n * Получить строку с регулярным выражением для домена\n *\n * Разрешена только латиница, в том числе пуни-код\n *\n * Строгая проверка на корректность домена должна происходить в API\n */\nexport const getDomainRegexp = (): string => {\n\treturn `(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+(xn--)?(?:[\\\\w-]+)\\\\/?`;\n};\n\n/**\n * Проверка валидности email\n * @param email\n * @param rus_allow - если true, русскоязычные адреса тоже будут валидны\n */\nexport const isEmail = (email: string, rus_allow: boolean = false): boolean => {\n\temail += '';\n\n\temail = email.toLowerCase();\n\n\tlet emailTest = '^[-0-9a-z_\\\\.\\\\+]+@([-0-9a-z_^\\\\.]+\\\\.)+[a-z]{2,20}$';\n\n\tif (rus_allow) {\n\t\temailTest = '^[-0-9a-zа-яё_\\\\.\\\\+]+@([-0-9a-zа-яё_^\\\\.]+\\\\.)+[a-zа-яё]{2,20}$';\n\t}\n\n\tconst regex = new RegExp(emailTest);\n\treturn regex.test(email);\n};\n\n/**\n * Проверка валидности URL-адреса\n */\nexport const validUrl = (url: string, allowIP = false): boolean => {\n\turl = url.trim();\n\tif (url.includes(' ')) {\n\t\treturn false;\n\t}\n\n\tconst domain = url.replace(/^(https?:\\/\\/)?(www\\.)?([^/]+).*/, '$3');\n\n\tif (allowIP && isIp(domain)) return true;\n\n\treturn isDomain(domain);\n};\n\n/**\n * Проверка валидности домена\n */\nexport const isDomain = (domain: string): boolean => {\n\tdomain = toPuny(domain);\n\n\tconst regexp = new RegExp(`^${getDomainRegexp()}$`, 'u');\n\n\treturn regexp.test(domain);\n};\n\n/**\n * Проверка валидности ip\n */\nexport const isIp = (ip: string): boolean => {\n\tconst regexp = new RegExp('((^\\\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\\\s*$)|(^\\\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))(%.+)?\\\\s*$))');\n\n\treturn regexp.test(ip);\n};\n"]}
|
package/utils/check.d.ts
CHANGED
package/utils/check.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import { toPuny as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
r as isIp,
|
|
17
|
-
o as validUrl
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=check.js.map
|
|
1
|
+
import { toPuny as e } from "./url.js";
|
|
2
|
+
//#region src/core/utils/check.ts
|
|
3
|
+
var t = () => "(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(xn--)?(?:[\\w-]+)\\/?", n = (e, t = !1) => {
|
|
4
|
+
e += "", e = e.toLowerCase();
|
|
5
|
+
let n = "^[-0-9a-z_\\.\\+]+@([-0-9a-z_^\\.]+\\.)+[a-z]{2,20}$";
|
|
6
|
+
return t && (n = "^[-0-9a-zа-яё_\\.\\+]+@([-0-9a-zа-яё_^\\.]+\\.)+[a-zа-яё]{2,20}$"), new RegExp(n).test(e);
|
|
7
|
+
}, r = (e, t = !1) => {
|
|
8
|
+
if (e = e.trim(), e.includes(" ")) return !1;
|
|
9
|
+
let n = e.replace(/^(https?:\/\/)?(www\.)?([^/]+).*/, "$3");
|
|
10
|
+
return t && a(n) ? !0 : i(n);
|
|
11
|
+
}, i = (n) => (n = e(n), RegExp(`^${t()}$`, "u").test(n)), a = (e) => (/* @__PURE__ */ RegExp("((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))")).test(e);
|
|
12
|
+
//#endregion
|
|
13
|
+
export { t as getDomainRegexp, i as isDomain, n as isEmail, a as isIp, r as validUrl };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=check.js.map
|
package/utils/check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sources":["../../src/core/utils/check.ts"],"sourcesContent":["/**\n * Функции для проверки данных\n * @packageDocumentation\n */\n\nimport { toPuny } from '@/core/utils/url';\n\n/**\n * Получить строку с регулярным выражением для домена\n *\n * Разрешена только латиница, в том числе пуни-код\n *\n * Строгая проверка на корректность домена должна происходить в API\n */\nexport const getDomainRegexp = (): string => {\n\treturn `(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+(xn--)?(?:[\\\\w-]+)\\\\/?`;\n};\n\n/**\n * Проверка валидности email\n * @param email\n * @param rus_allow - если true, русскоязычные адреса тоже будут валидны\n */\nexport const isEmail = (email: string, rus_allow: boolean = false): boolean => {\n\temail += '';\n\n\temail = email.toLowerCase();\n\n\tlet emailTest = '^[-0-9a-z_\\\\.\\\\+]+@([-0-9a-z_^\\\\.]+\\\\.)+[a-z]{2,20}$';\n\n\tif (rus_allow) {\n\t\temailTest = '^[-0-9a-zа-яё_\\\\.\\\\+]+@([-0-9a-zа-яё_^\\\\.]+\\\\.)+[a-zа-яё]{2,20}$';\n\t}\n\n\tconst regex = new RegExp(emailTest);\n\treturn regex.test(email);\n};\n\n/**\n * Проверка валидности URL-адреса\n */\nexport const validUrl = (url: string, allowIP = false): boolean => {\n\turl = url.trim();\n\tif (url.includes(' ')) {\n\t\treturn false;\n\t}\n\n\tconst domain = url.replace(/^(https?:\\/\\/)?(www\\.)?([^/]+).*/, '$3');\n\n\tif (allowIP && isIp(domain)) return true;\n\n\treturn isDomain(domain);\n};\n\n/**\n * Проверка валидности домена\n */\nexport const isDomain = (domain: string): boolean => {\n\tdomain = toPuny(domain);\n\n\tconst regexp = new RegExp(`^${getDomainRegexp()}$`, 'u');\n\n\treturn regexp.test(domain);\n};\n\n/**\n * Проверка валидности ip\n */\nexport const isIp = (ip: string): boolean => {\n\tconst regexp = new RegExp('((^\\\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\\\s*$)|(^\\\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))(%.+)?\\\\s*$))');\n\n\treturn regexp.test(ip);\n};\n"],"
|
|
1
|
+
{"version":3,"file":"check.js","names":[],"sources":["../../src/core/utils/check.ts"],"sourcesContent":["/**\n * Функции для проверки данных\n * @packageDocumentation\n */\n\nimport { toPuny } from '@/core/utils/url';\n\n/**\n * Получить строку с регулярным выражением для домена\n *\n * Разрешена только латиница, в том числе пуни-код\n *\n * Строгая проверка на корректность домена должна происходить в API\n */\nexport const getDomainRegexp = (): string => {\n\treturn `(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+(xn--)?(?:[\\\\w-]+)\\\\/?`;\n};\n\n/**\n * Проверка валидности email\n * @param email\n * @param rus_allow - если true, русскоязычные адреса тоже будут валидны\n */\nexport const isEmail = (email: string, rus_allow: boolean = false): boolean => {\n\temail += '';\n\n\temail = email.toLowerCase();\n\n\tlet emailTest = '^[-0-9a-z_\\\\.\\\\+]+@([-0-9a-z_^\\\\.]+\\\\.)+[a-z]{2,20}$';\n\n\tif (rus_allow) {\n\t\temailTest = '^[-0-9a-zа-яё_\\\\.\\\\+]+@([-0-9a-zа-яё_^\\\\.]+\\\\.)+[a-zа-яё]{2,20}$';\n\t}\n\n\tconst regex = new RegExp(emailTest);\n\treturn regex.test(email);\n};\n\n/**\n * Проверка валидности URL-адреса\n */\nexport const validUrl = (url: string, allowIP = false): boolean => {\n\turl = url.trim();\n\tif (url.includes(' ')) {\n\t\treturn false;\n\t}\n\n\tconst domain = url.replace(/^(https?:\\/\\/)?(www\\.)?([^/]+).*/, '$3');\n\n\tif (allowIP && isIp(domain)) return true;\n\n\treturn isDomain(domain);\n};\n\n/**\n * Проверка валидности домена\n */\nexport const isDomain = (domain: string): boolean => {\n\tdomain = toPuny(domain);\n\n\tconst regexp = new RegExp(`^${getDomainRegexp()}$`, 'u');\n\n\treturn regexp.test(domain);\n};\n\n/**\n * Проверка валидности ip\n */\nexport const isIp = (ip: string): boolean => {\n\tconst regexp = new RegExp('((^\\\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\\\s*$)|(^\\\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))(%.+)?\\\\s*$))');\n\n\treturn regexp.test(ip);\n};\n"],"mappings":";;AAcA,IAAa,UACL,iEAQK,KAAW,GAAe,IAAqB,OAAmB;AAG9E,CAFA,KAAS,IAET,IAAQ,EAAM,aAAa;CAE3B,IAAI,IAAY;AAOhB,QALI,MACH,IAAY,qEAGC,IAAI,OAAO,EAAU,CACtB,KAAK,EAAM;GAMZ,KAAY,GAAa,IAAU,OAAmB;AAElE,KADA,IAAM,EAAI,MAAM,EACZ,EAAI,SAAS,IAAI,CACpB,QAAO;CAGR,IAAM,IAAS,EAAI,QAAQ,oCAAoC,KAAK;AAIpE,QAFI,KAAW,EAAK,EAAO,GAAS,KAE7B,EAAS,EAAO;GAMX,KAAY,OACxB,IAAS,EAAO,EAAO,EAEJ,OAAO,IAAI,GAAiB,CAAC,IAAI,IAAI,CAE1C,KAAK,EAAO,GAMd,KAAQ,OACL,gBAAI,OAAO,mvCAAmvC,EAE/vC,KAAK,EAAG"}
|
package/utils/clipboard.amd.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
define([
|
|
2
|
-
`+i;if(n
|
|
3
|
-
`+
|
|
4
|
-
`+i
|
|
5
|
-
`+i
|
|
6
|
-
//# sourceMappingURL=clipboard.amd.js.map
|
|
1
|
+
define([`require`,`exports`,`../.chunks/forms-CbUt-6Ff.amd.js`],function(e,t,n){"use strict";Object.defineProperty(t,`__esModule`,{value:!0}),t.guestLinkToClipboard=i,t.setClipboard=r;async function r(e,t=!1){let r=!1;return navigator.clipboard&&(await navigator.clipboard.writeText(e),r=!0,t&&n.O.notice((0,n.E)().Common.Copied_to_clipboard+``,`info`)),r}async function i(e){let t=!1;(0,n.G)()||(t=await r(e));let i=`<a href="`+e+`" target="_blank">`+e+`</a>`,a=(0,n.E)().Common.Copied_to_clipboard+`:
|
|
2
|
+
`+i;if(t)n.O.notice(a,`info`);else{if(!navigator.clipboard){n.O.notice((0,n.E)().Common.Cannot_copied_to_clipboard+`:
|
|
3
|
+
`+(0,n.E)().Common.Copy_guest_link_manually+`
|
|
4
|
+
`+i,`error`);return}let t={onclick:()=>r(e).then(()=>n.O.notice(a,`info`)),default:(0,n.E)().Common.Copy+``,class:`copy`};await n.O.notice((0,n.E)().Common.Guest_link_created+`
|
|
5
|
+
`+i,`info`,{buttonProps:t})}}});
|
|
6
|
+
//# sourceMappingURL=clipboard.amd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["utils/clipboard.js","../../src/core/utils/clipboard.ts"],"names":["exports","i","t","r","forms_CbUt_6Ff_esm_js_1","a","o","s"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,mCAAmC,CAAE,SAAU,EAAS,EAAS,EAAyB,CACpH,aCWJ,OAAA,eAAiEA,EAAO,aAAA,CAAA,MAAA,GAAA,CAAA,CACvE,EAAa,qBAAA,EAQb,EANI,aAAU,EAYf,eAA2C,EAAc,EAAA,EAAA,CAAA,EAAA,CACpD,IAAWC,EAAA,CAAA,EACA,OAAa,UAAwB,YAAA,MAAA,UAAA,UAAA,UAAAC,EAAA,CAAA,EAAA,CAAA,EAAAC,GAAAC,EAAA,EAAA,QAAA,EAAAA,EAAA,IAAA,CAAA,OAAA,oBAAA,GAAA,OAAA,EAAAH,EAKpD,eACkB,EAAe,EAAA,CAC1B,IAAAI,EAAA,CAAA,GACD,EAAAD,EAAqB,IAAA,GAAA,EAAA,MAAA,EAAAH,EAAA,EACf,IAAOK,EAAU,YAAOL,EAAA,qBAAqCA,EAAU,OAAOM,GAAA,EAAAH,EAAkC,IAAO,CAAA,OAAQ,oBAAA;EAAAE,EACzI,GAAAD,EDxBSD,EAAwB,EAAE,OAAOG,EAAG,OAAO,KC2BjC,CAClB,GAAA,CAAA,UAAkC,UAAgB,CAC/BH,EAAc,EAAA,QAAA,EAAAA,EAAA,IAAA,CAAA,OAAA,2BAAA;GAAA,EAAAA,EAAA,IAAA,CAAA,OAAA,yBAAA;EAAAE,EAAA,QAAA,CAC1B,OAGE,IAAA,EAAgB,CD1Bb,YAAe,EAAEL,EAAE,CAAC,SAAWG,EAAwB,EAAE,OAAOG,EAAG,OAAO,CAAC,CAC3E,SAAU,EAAGH,EAAwB,IAAI,CAAC,OAAO,KAAO,GACxD,MAAO,OACV,CACD,MAAMA,EAAwB,EAAE,QAAQ,EAAGA,EAAwB,IAAI,CAAC,OAAO,mBAAqB;EAAOE,EAAG,OAAQ,CAAE,YAAa,EAAG,CAAC,IAGnJ","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-CbUt-6Ff.esm.js\"], function (require, exports, forms_CbUt_6Ff_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.guestLinkToClipboard = i;\n exports.setClipboard = r;\n //#region src/core/utils/clipboard.ts\n async function r(t, r = !1) {\n let i = !1;\n return navigator.clipboard && (await navigator.clipboard.writeText(t), i = !0, r && forms_CbUt_6Ff_esm_js_1.O.notice((0, forms_CbUt_6Ff_esm_js_1.E)().Common.Copied_to_clipboard + \"\", \"info\")), i;\n }\n async function i(i) {\n let a = !1;\n (0, forms_CbUt_6Ff_esm_js_1.G)() || (a = await r(i));\n let o = \"<a href=\\\"\" + i + \"\\\" target=\\\"_blank\\\">\" + i + \"</a>\", s = (0, forms_CbUt_6Ff_esm_js_1.E)().Common.Copied_to_clipboard + \":\\n\" + o;\n if (a)\n forms_CbUt_6Ff_esm_js_1.O.notice(s, \"info\");\n else {\n if (!navigator.clipboard) {\n forms_CbUt_6Ff_esm_js_1.O.notice((0, forms_CbUt_6Ff_esm_js_1.E)().Common.Cannot_copied_to_clipboard + \":\\n\" + (0, forms_CbUt_6Ff_esm_js_1.E)().Common.Copy_guest_link_manually + \"\\n\" + o, \"error\");\n return;\n }\n let t = {\n onclick: () => r(i).then(() => forms_CbUt_6Ff_esm_js_1.O.notice(s, \"info\")),\n default: (0, forms_CbUt_6Ff_esm_js_1.E)().Common.Copy + \"\",\n class: \"copy\"\n };\n await forms_CbUt_6Ff_esm_js_1.O.notice((0, forms_CbUt_6Ff_esm_js_1.E)().Common.Guest_link_created + \"\\n\" + o, \"info\", { buttonProps: t });\n }\n }\n});\n//# sourceMappingURL=clipboard.js.map\n","import Core from '@/core/core/core';\nimport { useI18n } from '@/core/plugins/i18n';\nimport { isSafari } from '@/core/utils/device';\n\n/**\n * Работа с буфером обмена\n * @packageDocumentation\n */\n\n/**\n * Скопировать текст в буфер омбена\n */\nexport async function setClipboard(text: string, isInfoShowing = false) {\n\tlet copyOk = false;\n\n\tif (navigator.clipboard) {\n\t\tawait navigator.clipboard.writeText(text);\n\t\tcopyOk = true;\n\t\tif (isInfoShowing) void Core.notice(useI18n().Common.Copied_to_clipboard + '', 'info');\n\t}\n\n\treturn copyOk;\n}\n\n/**\n * Скопировать гостевую ссылку в буфер обмена\n */\nexport async function guestLinkToClipboard(link: string) {\n\tlet isCopied = false;\n\tif (!isSafari()) isCopied = await setClipboard(link);\n\n\tconst aLink = '<a href=\"' + link + '\" target=\"_blank\">' + link + '</a>';\n\tconst copiedMessage = useI18n().Common.Copied_to_clipboard + `:\\n` + aLink;\n\n\tif (isCopied) {\n\t\tvoid Core.notice(copiedMessage, 'info');\n\t} else {\n\t\tif (!navigator.clipboard) {\n\t\t\tvoid Core.notice(useI18n().Common.Cannot_copied_to_clipboard + `:\\n` + useI18n().Common.Copy_guest_link_manually + `\\n` + aLink, 'error');\n\t\t\treturn;\n\t\t}\n\n\t\tconst buttonProps = {\n\t\t\t\tonclick: () => setClipboard(link).then(() => Core.notice(copiedMessage, 'info')),\n\t\t\t\tdefault: useI18n().Common.Copy + '',\n\t\t\t\tclass: 'copy',\n\t\t\t};\n\n\t\tawait Core.notice(useI18n().Common.Guest_link_created + `\\n` + aLink, 'info', { buttonProps });\n\t}\n};\n"]}
|
package/utils/clipboard.d.ts
CHANGED
package/utils/clipboard.js
CHANGED
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { E as e, G as t, O as n } from "../.chunks/forms-CbUt-6Ff.esm.js";
|
|
2
|
+
//#region src/core/utils/clipboard.ts
|
|
3
|
+
async function r(t, r = !1) {
|
|
4
|
+
let i = !1;
|
|
5
|
+
return navigator.clipboard && (await navigator.clipboard.writeText(t), i = !0, r && n.notice(e().Common.Copied_to_clipboard + "", "info")), i;
|
|
5
6
|
}
|
|
6
|
-
async function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class: "copy"
|
|
24
|
-
};
|
|
25
|
-
await t.notice(a().Common.Guest_link_created + `
|
|
26
|
-
` + i, "info", { buttonProps: c });
|
|
27
|
-
}
|
|
7
|
+
async function i(i) {
|
|
8
|
+
let a = !1;
|
|
9
|
+
t() || (a = await r(i));
|
|
10
|
+
let o = "<a href=\"" + i + "\" target=\"_blank\">" + i + "</a>", s = e().Common.Copied_to_clipboard + ":\n" + o;
|
|
11
|
+
if (a) n.notice(s, "info");
|
|
12
|
+
else {
|
|
13
|
+
if (!navigator.clipboard) {
|
|
14
|
+
n.notice(e().Common.Cannot_copied_to_clipboard + ":\n" + e().Common.Copy_guest_link_manually + "\n" + o, "error");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
let t = {
|
|
18
|
+
onclick: () => r(i).then(() => n.notice(s, "info")),
|
|
19
|
+
default: e().Common.Copy + "",
|
|
20
|
+
class: "copy"
|
|
21
|
+
};
|
|
22
|
+
await n.notice(e().Common.Guest_link_created + "\n" + o, "info", { buttonProps: t });
|
|
23
|
+
}
|
|
28
24
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=clipboard.js.map
|
|
25
|
+
//#endregion
|
|
26
|
+
export { i as guestLinkToClipboard, r as setClipboard };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=clipboard.js.map
|
package/utils/clipboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sources":["../../src/core/utils/clipboard.ts"],"sourcesContent":["import Core from '@/core/core/core';\nimport { useI18n } from '@/core/plugins/i18n';\nimport { isSafari } from '@/core/utils/device';\n\n/**\n * Работа с буфером обмена\n * @packageDocumentation\n */\n\n/**\n * Скопировать текст в буфер омбена\n */\nexport async function setClipboard(text: string, isInfoShowing = false) {\n\tlet copyOk = false;\n\n\tif (navigator.clipboard) {\n\t\tawait navigator.clipboard.writeText(text);\n\t\tcopyOk = true;\n\t\tif (isInfoShowing) void Core.notice(useI18n().Common.Copied_to_clipboard + '', 'info');\n\t}\n\n\treturn copyOk;\n}\n\n/**\n * Скопировать гостевую ссылку в буфер обмена\n */\nexport async function guestLinkToClipboard(link: string) {\n\tlet isCopied = false;\n\tif (!isSafari()) isCopied = await setClipboard(link);\n\n\tconst aLink = '<a href=\"' + link + '\" target=\"_blank\">' + link + '</a>';\n\tconst copiedMessage = useI18n().Common.Copied_to_clipboard + `:\\n` + aLink;\n\n\tif (isCopied) {\n\t\tvoid Core.notice(copiedMessage, 'info');\n\t} else {\n\t\tif (!navigator.clipboard) {\n\t\t\tvoid Core.notice(useI18n().Common.Cannot_copied_to_clipboard + `:\\n` + useI18n().Common.Copy_guest_link_manually + `\\n` + aLink, 'error');\n\t\t\treturn;\n\t\t}\n\n\t\tconst buttonProps = {\n\t\t\t\tonclick: () => setClipboard(link).then(() => Core.notice(copiedMessage, 'info')),\n\t\t\t\tdefault: useI18n().Common.Copy + '',\n\t\t\t\tclass: 'copy',\n\t\t\t};\n\n\t\tawait Core.notice(useI18n().Common.Guest_link_created + `\\n` + aLink, 'info', { buttonProps });\n\t}\n};\n"],"
|
|
1
|
+
{"version":3,"file":"clipboard.js","names":[],"sources":["../../src/core/utils/clipboard.ts"],"sourcesContent":["import Core from '@/core/core/core';\nimport { useI18n } from '@/core/plugins/i18n';\nimport { isSafari } from '@/core/utils/device';\n\n/**\n * Работа с буфером обмена\n * @packageDocumentation\n */\n\n/**\n * Скопировать текст в буфер омбена\n */\nexport async function setClipboard(text: string, isInfoShowing = false) {\n\tlet copyOk = false;\n\n\tif (navigator.clipboard) {\n\t\tawait navigator.clipboard.writeText(text);\n\t\tcopyOk = true;\n\t\tif (isInfoShowing) void Core.notice(useI18n().Common.Copied_to_clipboard + '', 'info');\n\t}\n\n\treturn copyOk;\n}\n\n/**\n * Скопировать гостевую ссылку в буфер обмена\n */\nexport async function guestLinkToClipboard(link: string) {\n\tlet isCopied = false;\n\tif (!isSafari()) isCopied = await setClipboard(link);\n\n\tconst aLink = '<a href=\"' + link + '\" target=\"_blank\">' + link + '</a>';\n\tconst copiedMessage = useI18n().Common.Copied_to_clipboard + `:\\n` + aLink;\n\n\tif (isCopied) {\n\t\tvoid Core.notice(copiedMessage, 'info');\n\t} else {\n\t\tif (!navigator.clipboard) {\n\t\t\tvoid Core.notice(useI18n().Common.Cannot_copied_to_clipboard + `:\\n` + useI18n().Common.Copy_guest_link_manually + `\\n` + aLink, 'error');\n\t\t\treturn;\n\t\t}\n\n\t\tconst buttonProps = {\n\t\t\t\tonclick: () => setClipboard(link).then(() => Core.notice(copiedMessage, 'info')),\n\t\t\t\tdefault: useI18n().Common.Copy + '',\n\t\t\t\tclass: 'copy',\n\t\t\t};\n\n\t\tawait Core.notice(useI18n().Common.Guest_link_created + `\\n` + aLink, 'info', { buttonProps });\n\t}\n};\n"],"mappings":";;AAYA,eAAsB,EAAa,GAAc,IAAgB,IAAO;CACvE,IAAI,IAAS;AAQb,QANI,UAAU,cACb,MAAM,UAAU,UAAU,UAAU,EAAK,EACzC,IAAS,IACL,KAAoB,EAAK,OAAO,GAAS,CAAC,OAAO,sBAAsB,IAAI,OAAO,GAGhF;;AAMR,eAAsB,EAAqB,GAAc;CACxD,IAAI,IAAW;AACf,CAAK,GAAU,KAAE,IAAW,MAAM,EAAa,EAAK;CAEpD,IAAM,IAAQ,eAAc,IAAO,0BAAuB,IAAO,QAC3D,IAAgB,GAAS,CAAC,OAAO,sBAAsB,QAAQ;AAErE,KAAI,EACE,GAAK,OAAO,GAAe,OAAO;MACjC;AACN,MAAI,CAAC,UAAU,WAAW;AACpB,KAAK,OAAO,GAAS,CAAC,OAAO,6BAA6B,QAAQ,GAAS,CAAC,OAAO,2BAA2B,OAAO,GAAO,QAAQ;AACzI;;EAGD,IAAM,IAAc;GAClB,eAAe,EAAa,EAAK,CAAC,WAAW,EAAK,OAAO,GAAe,OAAO,CAAC;GAChF,SAAS,GAAS,CAAC,OAAO,OAAO;GACjC,OAAO;GACP;AAEF,QAAM,EAAK,OAAO,GAAS,CAAC,OAAO,qBAAqB,OAAO,GAAO,QAAQ,EAAE,gBAAa,CAAC"}
|
package/utils/date.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([
|
|
2
|
-
//# sourceMappingURL=date.amd.js.map
|
|
1
|
+
define([`require`,`exports`,`../.chunks/forms-CbUt-6Ff.amd.js`],function(e,t,n){"use strict";Object.defineProperty(t,`__esModule`,{value:!0}),t.stringToDate=t.getDayOfWeek=t.genUserDate=t.genDateMoscow=t.genDate=t.dateUnformat=t.dateToString=t.dateFormat=void 0,Object.defineProperty(t,`getDayOfWeek`,{enumerable:!0,get:function(){return n.C}}),Object.defineProperty(t,`genUserDate`,{enumerable:!0,get:function(){return n.S}}),Object.defineProperty(t,`dateFormat`,{enumerable:!0,get:function(){return n._}}),Object.defineProperty(t,`genDate`,{enumerable:!0,get:function(){return n.b}}),Object.defineProperty(t,`dateToString`,{enumerable:!0,get:function(){return n.v}}),Object.defineProperty(t,`stringToDate`,{enumerable:!0,get:function(){return n.w}}),Object.defineProperty(t,`genDateMoscow`,{enumerable:!0,get:function(){return n.x}}),Object.defineProperty(t,`dateUnformat`,{enumerable:!0,get:function(){return n.y}})});
|
|
2
|
+
//# sourceMappingURL=date.amd.js.map
|
package/utils/date.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["utils/date.js"],"names":["exports","forms_CbUt_6Ff_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,mCAAmC,CAAE,SAAU,EAAS,EAAS,EAAyB,CACpH,aACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,GAAM,CAAC,CAC7D,EAAQ,aAAe,EAAQ,aAAe,EAAQ,YAAc,EAAQ,cAAgB,EAAQ,QAAU,EAAQ,aAAe,EAAQ,aAAe,EAAQ,WAAa,IAAK,GACtL,OAAO,eAAeA,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC5H,OAAO,eAAeD,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC3H,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC1H,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACvH,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC5H,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC5H,OAAO,eAAeD,EAAS,gBAAiB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC7H,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,EAC9H","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-CbUt-6Ff.esm.js\"], function (require, exports, forms_CbUt_6Ff_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.stringToDate = exports.getDayOfWeek = exports.genUserDate = exports.genDateMoscow = exports.genDate = exports.dateUnformat = exports.dateToString = exports.dateFormat = void 0;\n Object.defineProperty(exports, \"getDayOfWeek\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.C; } });\n Object.defineProperty(exports, \"genUserDate\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.S; } });\n Object.defineProperty(exports, \"dateFormat\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1._; } });\n Object.defineProperty(exports, \"genDate\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.b; } });\n Object.defineProperty(exports, \"dateToString\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.v; } });\n Object.defineProperty(exports, \"stringToDate\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.w; } });\n Object.defineProperty(exports, \"genDateMoscow\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.x; } });\n Object.defineProperty(exports, \"dateUnformat\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.y; } });\n});\n"]}
|
package/utils/date.d.ts
CHANGED
package/utils/date.js
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
t as dateFormat,
|
|
4
|
-
s as dateToString,
|
|
5
|
-
o as dateUnformat,
|
|
6
|
-
r as genDate,
|
|
7
|
-
g as genDateMoscow,
|
|
8
|
-
n as genUserDate,
|
|
9
|
-
D as getDayOfWeek,
|
|
10
|
-
d as stringToDate
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=date.js.map
|
|
1
|
+
import { C as e, S as t, _ as n, b as r, v as i, w as a, x as o, y as s } from "../.chunks/forms-CbUt-6Ff.esm.js";
|
|
2
|
+
export { n as dateFormat, i as dateToString, s as dateUnformat, r as genDate, o as genDateMoscow, t as genUserDate, e as getDayOfWeek, a as stringToDate };
|
package/utils/device.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([
|
|
2
|
-
//# sourceMappingURL=device.amd.js.map
|
|
1
|
+
define([`require`,`exports`,`../.chunks/forms-CbUt-6Ff.amd.js`],function(e,t,n){"use strict";Object.defineProperty(t,`__esModule`,{value:!0}),t.isSafari=t.isRetina=t.isMobile=t.isMacOS=t.isApp=t.getScrollTop=t.getOSAsync=t.getOS=t.getElsScroll=t.getCommandKeyLabel=t.get$scroll=void 0,Object.defineProperty(t,`getScrollTop`,{enumerable:!0,get:function(){return n.B}}),Object.defineProperty(t,`get$scroll`,{enumerable:!0,get:function(){return n.F}}),Object.defineProperty(t,`isSafari`,{enumerable:!0,get:function(){return n.G}}),Object.defineProperty(t,`isMacOS`,{enumerable:!0,get:function(){return n.H}}),Object.defineProperty(t,`getCommandKeyLabel`,{enumerable:!0,get:function(){return n.I}}),Object.defineProperty(t,`getElsScroll`,{enumerable:!0,get:function(){return n.L}}),Object.defineProperty(t,`getOS`,{enumerable:!0,get:function(){return n.R}}),Object.defineProperty(t,`isMobile`,{enumerable:!0,get:function(){return n.U}}),Object.defineProperty(t,`isApp`,{enumerable:!0,get:function(){return n.V}}),Object.defineProperty(t,`isRetina`,{enumerable:!0,get:function(){return n.W}}),Object.defineProperty(t,`getOSAsync`,{enumerable:!0,get:function(){return n.z}})});
|
|
2
|
+
//# sourceMappingURL=device.amd.js.map
|
package/utils/device.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["utils/device.js"],"names":["exports","forms_CbUt_6Ff_esm_js_1"],"mappings":"AAAA,OAAO,CAAC,UAAW,UAAW,mCAAmC,CAAE,SAAU,EAAS,EAAS,EAAyB,CACpH,aACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,GAAM,CAAC,CAC7D,EAAQ,SAAW,EAAQ,SAAW,EAAQ,SAAW,EAAQ,QAAU,EAAQ,MAAQ,EAAQ,aAAe,EAAQ,WAAa,EAAQ,MAAQ,EAAQ,aAAe,EAAQ,mBAAqB,EAAQ,WAAa,IAAK,GACrO,OAAO,eAAeA,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC5H,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC1H,OAAO,eAAeD,EAAS,WAAY,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACxH,OAAO,eAAeD,EAAS,UAAW,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACvH,OAAO,eAAeD,EAAS,qBAAsB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAClI,OAAO,eAAeD,EAAS,eAAgB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CAC5H,OAAO,eAAeD,EAAS,QAAS,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACrH,OAAO,eAAeD,EAAS,WAAY,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACxH,OAAO,eAAeD,EAAS,QAAS,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACrH,OAAO,eAAeD,EAAS,WAAY,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,CACxH,OAAO,eAAeD,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOC,EAAwB,GAAM,CAAC,EAC5H","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-CbUt-6Ff.esm.js\"], function (require, exports, forms_CbUt_6Ff_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.isSafari = exports.isRetina = exports.isMobile = exports.isMacOS = exports.isApp = exports.getScrollTop = exports.getOSAsync = exports.getOS = exports.getElsScroll = exports.getCommandKeyLabel = exports.get$scroll = void 0;\n Object.defineProperty(exports, \"getScrollTop\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.B; } });\n Object.defineProperty(exports, \"get$scroll\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.F; } });\n Object.defineProperty(exports, \"isSafari\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.G; } });\n Object.defineProperty(exports, \"isMacOS\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.H; } });\n Object.defineProperty(exports, \"getCommandKeyLabel\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.I; } });\n Object.defineProperty(exports, \"getElsScroll\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.L; } });\n Object.defineProperty(exports, \"getOS\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.R; } });\n Object.defineProperty(exports, \"isMobile\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.U; } });\n Object.defineProperty(exports, \"isApp\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.V; } });\n Object.defineProperty(exports, \"isRetina\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.W; } });\n Object.defineProperty(exports, \"getOSAsync\", { enumerable: true, get: function () { return forms_CbUt_6Ff_esm_js_1.z; } });\n});\n"]}
|
package/utils/device.d.ts
CHANGED
package/utils/device.js
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
e as get$scroll,
|
|
4
|
-
l as getCommandKeyLabel,
|
|
5
|
-
t as getElsScroll,
|
|
6
|
-
i as getOS,
|
|
7
|
-
o as getOSAsync,
|
|
8
|
-
g as getScrollTop,
|
|
9
|
-
r as isApp,
|
|
10
|
-
S as isMacOS,
|
|
11
|
-
c as isMobile,
|
|
12
|
-
p as isRetina,
|
|
13
|
-
b as isSafari
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=device.js.map
|
|
1
|
+
import { B as e, F as t, G as n, H as r, I as i, L as a, R as o, U as s, V as c, W as l, z as u } from "../.chunks/forms-CbUt-6Ff.esm.js";
|
|
2
|
+
export { t as get$scroll, i as getCommandKeyLabel, a as getElsScroll, o as getOS, u as getOSAsync, e as getScrollTop, c as isApp, r as isMacOS, s as isMobile, l as isRetina, n as isSafari };
|
package/utils/dom.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([
|
|
2
|
-
//# sourceMappingURL=dom.amd.js.map
|
|
1
|
+
define([`require`,`exports`],function(e,t){"use strict";Object.defineProperty(t,`__esModule`,{value:!0}),t.default=void 0,t.css=a,t.cssNumber=o,t.genEl=n,t.isVisible=r,t.offset=i,t.querySelectorAllArray=d,t.querySelectorAllVisible=u,t.querySelectorVisible=c,t.querySelectorVisibleLast=l,t.storage=f,t.storageClear=p,t.wrap=s;function n(e,t,...n){let r=document.createElement(e);for(let e in t)e.indexOf(`on`)===0?r[e]=t[e]:r.setAttribute(e,t[e]);return n.forEach(e=>{typeof e==`string`?r.insertAdjacentHTML(`beforeend`,e):r.append(e)}),r}function r(e){if(!e)return!1;let t=e.getBoundingClientRect();return!!(t.width||t.height)}function i(e){let t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX}}function a(e,t){return window.getComputedStyle(e).getPropertyValue(t)}function o(e,t){return parseInt(a(e,t))}function s(e,t){let n=document.createElement(t);return e.after(n),n.append(e),n}function c(e,t){return d(e,t).find(r)||null}function l(e,t){return d(e,t).findLast(r)||null}function u(e,t){return d(e,t).filter(r)}function d(e,t){return e?[...e.querySelectorAll(t)]:[]}function f(e,t=`common`,n=void 0){if(e)return e.topData||={},n&&(e.topData[t]=n),n===null&&delete e.topData[t],e.topData[t]}function p(e){e&&delete e.topData}t.default={genEl:n,isVisible:r,offset:i,css:a,cssNumber:o,wrap:s,querySelectorVisible:c,querySelectorVisibleLast:l,querySelectorAllVisible:u,querySelectorAllArray:d,storage:f,storageClear:p}});
|
|
2
|
+
//# sourceMappingURL=dom.amd.js.map
|