@topvisor/ui 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/core-CXqQSo9c.amd.js +2 -0
- package/.chunks/core-CXqQSo9c.amd.js.map +1 -0
- package/.chunks/{core-Dsl28h7N.es.js → core-CY6RkZz2.es.js} +47 -46
- package/.chunks/core-CY6RkZz2.es.js.map +1 -0
- package/.chunks/{datepicker-BTiE5Grw.es.js → datepicker-BiaXdEIn.es.js} +2 -2
- package/.chunks/datepicker-BiaXdEIn.es.js.map +1 -0
- package/.chunks/datepicker-DUoArkDy.amd.js +2 -0
- package/.chunks/datepicker-DUoArkDy.amd.js.map +1 -0
- package/.chunks/dialog_selectorRegions-CPRVbPAk.amd.js +2 -0
- package/.chunks/dialog_selectorRegions-CPRVbPAk.amd.js.map +1 -0
- package/.chunks/dialog_selectorRegions-Zlm6K2mk.es.js +188 -0
- package/.chunks/dialog_selectorRegions-Zlm6K2mk.es.js.map +1 -0
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CLahwA6M.es.js +322 -0
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CLahwA6M.es.js.map +1 -0
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-D8NggYHD.amd.js +2 -0
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-D8NggYHD.amd.js.map +1 -0
- package/.chunks/field-Cvv0SRcJ.amd.js +2 -0
- package/.chunks/field-Cvv0SRcJ.amd.js.map +1 -0
- package/.chunks/field-CyyFzM-Y.es.js +16 -0
- package/.chunks/field-CyyFzM-Y.es.js.map +1 -0
- package/.chunks/forms-CgtkdwgA.amd.js +3 -0
- package/.chunks/forms-CgtkdwgA.amd.js.map +1 -0
- package/.chunks/forms-DarRVke_.es.js +2045 -0
- package/.chunks/forms-DarRVke_.es.js.map +1 -0
- package/.chunks/index-BEI7XZmU.amd.js +2 -0
- package/.chunks/index-BEI7XZmU.amd.js.map +1 -0
- package/.chunks/index-igPkes8X.es.js +48 -0
- package/.chunks/index-igPkes8X.es.js.map +1 -0
- package/.chunks/lazy-40pjr8cZ.es.js +71 -0
- package/.chunks/lazy-40pjr8cZ.es.js.map +1 -0
- package/.chunks/lazy-DSFLxvj4.amd.js +2 -0
- package/.chunks/lazy-DSFLxvj4.amd.js.map +1 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd.js +2 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd.js.map +1 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js +184 -0
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js.map +1 -0
- package/.chunks/menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd.js +2 -0
- package/.chunks/menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd.js.map +1 -0
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-DmY5w4yr.es.js → menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js} +35 -34
- package/.chunks/menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js.map +1 -0
- package/.chunks/{notice-CJdCc72d.amd.js → notice-CPtAnc7p.amd.js} +3 -3
- package/.chunks/notice-CPtAnc7p.amd.js.map +1 -0
- package/.chunks/{notice-Cqs1dKt8.es.js → notice-fno9saBY.es.js} +2 -2
- package/.chunks/notice-fno9saBY.es.js.map +1 -0
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-BCfksgg3.es.js → page.vue_vue_type_script_setup_true_lang-BS0aEP4i.es.js} +4 -4
- package/.chunks/page.vue_vue_type_script_setup_true_lang-BS0aEP4i.es.js.map +1 -0
- package/.chunks/page.vue_vue_type_script_setup_true_lang-DLebrPmi.amd.js +2 -0
- package/.chunks/page.vue_vue_type_script_setup_true_lang-DLebrPmi.amd.js.map +1 -0
- package/.chunks/popup-AG94kehM.es.js +459 -0
- package/.chunks/popup-AG94kehM.es.js.map +1 -0
- package/.chunks/popup-CtvJLWn3.amd.js +2 -0
- package/.chunks/popup-CtvJLWn3.amd.js.map +1 -0
- package/.chunks/punycode.es6-CNOnFR2-.amd.js +2 -0
- package/.chunks/{punycode.es6-C2yitnNb.amd.js.map → punycode.es6-CNOnFR2-.amd.js.map} +1 -1
- package/.chunks/punycode.es6-CgGegfA_.es.js +134 -0
- package/.chunks/{punycode.es6-CNI-zL6U.es.js.map → punycode.es6-CgGegfA_.es.js.map} +1 -1
- package/.chunks/store-CX_6ZXhO.es.js.map +1 -1
- package/.chunks/store-YRW59xEF.amd.js +2 -0
- package/.chunks/store-YRW59xEF.amd.js.map +1 -0
- package/.chunks/{utils-B1H3EGkg.es.js → utils-3M9LC_L_.es.js} +2 -2
- package/.chunks/utils-3M9LC_L_.es.js.map +1 -0
- package/.chunks/utils-BitKP31L.es.js +302 -0
- package/.chunks/utils-BitKP31L.es.js.map +1 -0
- package/.chunks/utils-D9D3zzjc.amd.js +2 -0
- package/.chunks/utils-D9D3zzjc.amd.js.map +1 -0
- package/.chunks/utils-DcP4RFmH.amd.js +2 -0
- package/.chunks/utils-DcP4RFmH.amd.js.map +1 -0
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd.js +2 -0
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd.js.map +1 -0
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js +39 -0
- package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js.map +1 -0
- package/.chunks/widgetInput.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd.js +2 -0
- package/.chunks/widgetInput.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd.js.map +1 -0
- package/README.md +82 -82
- package/api/additional.amd.js +2 -0
- package/api/additional.amd.js.map +1 -0
- package/api/additional.d.ts +2 -0
- package/api/additional.js +66 -0
- package/api/additional.js.map +1 -0
- package/api/index.amd.js +2 -0
- package/api/index.amd.js.map +1 -0
- package/api/index.d.ts +2 -0
- package/api/index.js +280 -0
- package/api/index.js.map +1 -0
- package/assets/core.css +1 -1
- package/assets/extra.css +1 -0
- package/assets/forms.css +1 -1
- package/assets/formsExt.css +1 -1
- package/assets/layout.css +1 -1
- package/assets/notice.css +1 -1
- package/assets/project.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/charts/charts.amd.js +1 -1
- package/charts/charts.amd.js.map +1 -1
- package/charts/charts.d.ts +1 -1
- package/charts/charts.js +11 -11
- package/charts/charts.js.map +1 -1
- package/core/app.amd.js +1 -1
- package/core/app.amd.js.map +1 -1
- package/core/app.d.ts +2 -8
- package/core/app.js +36 -34
- package/core/app.js.map +1 -1
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.amd.js.map +1 -1
- package/dialog/dialog.d.ts +1 -1
- package/dialog/dialog.js +2 -2
- package/dialog/dialog.js.map +1 -1
- package/extra/extra.amd.js +2 -0
- package/extra/extra.amd.js.map +1 -0
- package/extra/extra.d.ts +2 -0
- package/extra/extra.js +72 -0
- package/extra/extra.js.map +1 -0
- package/forms/forms.amd.js +1 -1
- package/forms/forms.d.ts +1 -1
- package/forms/forms.js +11 -9
- package/forms/helpers.amd.js +1 -1
- package/forms/helpers.amd.js.map +1 -1
- package/forms/helpers.d.ts +0 -1
- package/forms/helpers.js +1 -9
- package/forms/helpers.js.map +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.d.ts +1 -1
- package/formsExt/formsExt.js +524 -320
- package/formsExt/formsExt.js.map +1 -1
- package/icomoon/Read Me.txt +7 -7
- package/icomoon/demo-files/demo.css +158 -158
- package/icomoon/demo-files/demo.js +30 -30
- package/icomoon/demo.css +158 -0
- package/icomoon/demo.html +3782 -3558
- package/icomoon/demo.js +30 -0
- package/icomoon/fonts/Topvisor-2.eot +0 -0
- package/icomoon/fonts/Topvisor-2.svg +292 -276
- 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 +828 -780
- package/jquery-ui.min.css +5 -5
- package/layout/layout.amd.js +1 -1
- package/layout/layout.amd.js.map +1 -1
- package/layout/layout.d.ts +1 -1
- package/layout/layout.js +29 -29
- package/layout/layout.js.map +1 -1
- package/package.json +36 -33
- package/popup/popup.amd.js +1 -1
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.d.ts +1 -1
- package/popup/popup.js +120 -136
- package/popup/popup.js.map +1 -1
- package/popup/worker.amd.js +1 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.d.ts +1 -1
- package/popup/worker.js +31 -22
- package/popup/worker.js.map +1 -1
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.d.ts +1 -1
- package/project/project.js +396 -386
- package/project/project.js.map +1 -1
- package/require/css.amd.js +12 -12
- package/src/api/api/additional.d.ts +1 -0
- package/src/api/api/client/client.d.ts +55 -0
- package/src/api/api/client/request-options.d.ts +1 -0
- package/src/api/api/client/request.d.ts +2 -0
- package/src/api/api/index.d.ts +12 -0
- package/src/api/api/mocker/index.d.ts +9 -0
- package/src/api/api/tests/types.test-d.d.ts +1 -0
- package/src/api/api/types/api.d.ts +144 -0
- package/src/api/api/types/client/client.d.ts +8 -0
- package/src/api/api/types/client/middleware.d.ts +65 -0
- package/src/api/api/types/client/options.d.ts +60 -0
- package/src/api/api/types/client/request-context.d.ts +35 -0
- package/src/api/api/types/client/request-options.d.ts +73 -0
- package/src/api/api/types/client/request.d.ts +91 -0
- package/src/api/api/types/ext.d.ts +51 -0
- package/src/api/api/types/field.d.ts +33 -0
- package/src/api/api/types/index.d.ts +13 -0
- package/src/api/api/types/mocker.d.ts +106 -0
- package/src/api/api/types/schema.d.ts +50 -0
- package/src/api/api/types/tv.d.ts +59 -0
- package/src/api/api/types/utils.d.ts +51 -0
- package/src/api/api/utils/common.d.ts +16 -0
- package/src/api/api/utils/field.d.ts +8 -0
- package/src/api/api/utils/filters.d.ts +48 -0
- package/src/api/api/utils/lazy.d.ts +26 -0
- package/src/components/charts/charts.d.ts +2 -0
- package/{components → src/components}/charts/miniChart/miniChart.vue.d.ts +1 -1
- package/{components → src/components}/charts/miniCharts/miniCharts.d.ts +1 -1
- package/{components → src/components}/charts/miniCharts/miniCharts.vue.d.ts +1 -1
- package/{components → src/components}/core/notice/item/types.d.ts +2 -0
- package/{components → src/components}/dialog/dialog/dialogs/dialogs.vue.d.ts +3 -0
- package/{components → src/components}/dialog/dialog/page/types.d.ts +2 -2
- package/{components → src/components}/dialog/lib/types.d.ts +23 -0
- package/src/components/dialog/lib/utils.d.ts +14 -0
- package/{components → src/components}/dialog/lib/utils.globalEvents.d.ts +2 -2
- package/{components → src/components}/dialog/lib/worker.d.ts +27 -11
- package/src/components/extra/extra.d.ts +1 -0
- package/src/components/extra/rive/rive.vue.d.ts +11 -0
- package/src/components/extra/rive/types.d.ts +7 -0
- package/{components → src/components}/forms/avatar/avatar.vue.d.ts +2 -2
- package/{components/forms/avatar/avatar.d.ts → src/components/forms/avatar/types.d.ts} +4 -10
- package/{components → src/components}/forms/button/button.vue.d.ts +3 -7
- package/{components → src/components}/forms/button/types.d.ts +15 -19
- package/src/components/forms/caption/caption.vue.d.ts +17 -0
- package/src/components/forms/caption/types.d.ts +9 -0
- package/{components → src/components}/forms/checkbox/checkbox.vue.d.ts +3 -3
- package/{components → src/components}/forms/controlLabel/controlLabel.vue.d.ts +1 -1
- package/src/components/forms/forms.d.ts +15 -0
- package/src/components/forms/helpers.d.ts +1 -0
- package/{components → src/components}/forms/hint/hint.vue.d.ts +1 -1
- package/{components → src/components}/forms/input/input.vue.d.ts +2 -3
- package/src/components/forms/input/types.d.ts +23 -0
- package/{components → src/components}/forms/inputDate/inputDate.vue.d.ts +1 -1
- package/src/components/forms/inputDate/types.d.ts +1 -0
- package/src/components/forms/preloader/types.d.ts +3 -0
- package/{components → src/components}/forms/radio/radio.vue.d.ts +1 -1
- package/src/components/forms/select/select.vue.d.ts +17 -0
- package/{components/forms/select/select.d.ts → src/components/forms/select/types.d.ts} +3 -3
- package/{components → src/components}/forms/switcher/switcher.vue.d.ts +1 -1
- package/{components → src/components}/forms/textarea/textarea.vue.d.ts +1 -1
- package/{components/forms/textarea/textarea.d.ts → src/components/forms/textarea/types.d.ts} +4 -0
- package/{components/formsExt/radioGroup/radioGroup.vue.d.ts → src/components/formsExt/checkboxGroup/checkboxGroup.vue.d.ts} +7 -10
- package/src/components/formsExt/checkboxGroup/types.d.ts +19 -0
- package/{components → src/components}/formsExt/editArea/editArea.vue.d.ts +1 -1
- package/{components/formsExt/editArea/editArea.d.ts → src/components/formsExt/editArea/types.d.ts} +1 -1
- package/{components → src/components}/formsExt/editInput/editInput.vue.d.ts +1 -1
- package/{components/formsExt/editInput/editInput.d.ts → src/components/formsExt/editInput/types.d.ts} +1 -1
- package/src/components/formsExt/formsExt.d.ts +8 -0
- package/{components → src/components}/formsExt/info/types.d.ts +1 -1
- package/{components → src/components}/formsExt/menu/menu.vue.d.ts +1 -1
- package/src/components/formsExt/policy/policy.vue.d.ts +8 -0
- package/src/components/formsExt/policy/types.d.ts +20 -0
- package/{components/forms/select/select.vue.d.ts → src/components/formsExt/radioGroup/radioGroup.vue.d.ts} +4 -6
- package/{components/formsExt/radioGroup/radioGroup.d.ts → src/components/formsExt/radioGroup/types.d.ts} +3 -3
- package/src/components/formsExt/selector2/composables/useAPI.d.ts +18 -0
- package/src/components/formsExt/selector2/composables/useMenu.d.ts +16 -0
- package/{components → src/components}/formsExt/selector2/itemMulti.vue.d.ts +1 -1
- package/src/components/formsExt/selector2/selector2.vue.d.ts +43 -0
- package/{components/formsExt/selector2/selector2.d.ts → src/components/formsExt/selector2/types.d.ts} +66 -34
- package/src/components/formsExt/selector2/utils.d.ts +6 -0
- package/{components → src/components}/layout/islandRows/types.d.ts +1 -1
- package/src/components/layout/layout.d.ts +4 -0
- package/src/components/popup/alert/alert.vue.d.ts +25 -0
- package/src/components/popup/alert/types.d.ts +8 -0
- package/src/components/popup/confirm/confirm.vue.d.ts +26 -0
- package/{components/popup/confirm/confirm.d.ts → src/components/popup/confirm/types.d.ts} +3 -3
- package/{components → src/components}/popup/lib/popup.d.ts +6 -2
- package/{components → src/components}/popup/lib/popup.globalEvents.d.ts +6 -0
- package/{components → src/components}/popup/lib/worker.d.ts +8 -6
- package/{components → src/components}/popup/popup/listItem.vue.d.ts +1 -1
- package/src/components/popup/popup/opener.vue.d.ts +17 -0
- package/src/components/popup/popup/popup.vue.d.ts +38 -0
- package/{components/popup/popup/popup.d.ts → src/components/popup/popup/types.d.ts} +20 -11
- package/{components → src/components}/popup/popup/widgetInput.vue.d.ts +1 -1
- package/src/components/popup/popup.d.ts +7 -0
- package/src/components/popup/prompt/prompt.vue.d.ts +26 -0
- package/{components/popup/prompt/prompt.d.ts → src/components/popup/prompt/types.d.ts} +3 -3
- package/src/components/project/project.d.ts +9 -0
- package/{components → src/components}/project/selectorCompetitors/composables.d.ts +1 -2
- package/{components → src/components}/project/selectorCompetitors/selectorCompetitors.vue.d.ts +1 -1
- package/{components/project/selectorCompetitors/selectorCompetitors.d.ts → src/components/project/selectorCompetitors/types.d.ts} +7 -0
- package/{components → src/components}/project/selectorRegion/composables/compare.d.ts +1 -1
- package/{components → src/components}/project/selectorRegion/composables/selectRegion.d.ts +2 -3
- package/{components → src/components}/project/selectorRegion/composables/selectSearcher.d.ts +2 -2
- package/{components → src/components}/project/selectorRegion/composables/selectorRegion.d.ts +2 -2
- package/{components → src/components}/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue.d.ts +3 -1
- package/{components → src/components}/project/selectorRegion/dialog_selectorRegions/types.d.ts +1 -1
- package/{components → src/components}/project/selectorRegion/selectorRegion.vue.d.ts +1 -1
- package/{components/project/selectorRegion/selectorRegion.d.ts → src/components/project/selectorRegion/types.d.ts} +2 -0
- package/src/components/project/selectorRegion/utils/consts.d.ts +31 -0
- package/{components → src/components}/project/selectorRegion/utils/utils.d.ts +4 -2
- package/{components → src/components}/project/tagSelector/popupOpener/types.d.ts +2 -0
- package/src/components/project/tagSelector/tagIcon/tagIcon.vue.d.ts +4 -0
- package/{components → src/components}/project/tagSelector/types.d.ts +2 -0
- package/{components → src/components}/project/tagSelector/utils/el.d.ts +1 -1
- package/{components → src/components}/tabs/tabs/content.vue.d.ts +1 -1
- package/{components → src/components}/tabs/tabs/tab.vue.d.ts +1 -1
- package/{components → src/components}/tabs/tabs/tabs.vue.d.ts +1 -1
- package/src/components/tabs/tabs.d.ts +3 -0
- package/{components → src/components}/tabsView/tabsView/menu.vue.d.ts +1 -1
- package/{components → src/components}/tabsView/tabsView/menuItem.vue.d.ts +1 -1
- package/{components → src/components}/tabsView/tabsView/menuTitle.vue.d.ts +1 -1
- package/src/components/tabsView/tabsView/store.d.ts +12 -0
- package/{components → src/components}/tabsView/tabsView/tabsView.vue.d.ts +1 -1
- package/{components/tabsView/tabsView/tabsView.d.ts → src/components/tabsView/tabsView/types.d.ts} +2 -2
- package/src/components/tabsView/tabsView.d.ts +3 -0
- package/src/core/app.d.ts +8 -0
- package/{core → src/core}/core/core.d.ts +1 -1
- package/{core → src/core}/core/options.d.ts +7 -6
- package/{core → src/core}/core/state.d.ts +1 -1
- package/src/core/directives/preloader.d.ts +8 -0
- package/{core → src/core}/plugins/core.d.ts +2 -2
- package/{core → src/core}/plugins/i18n.d.ts +4 -4
- package/{core → src/core}/utils/date.d.ts +30 -12
- package/{core → src/core}/utils/dom.d.ts +11 -1
- package/{core → src/core}/utils/route.d.ts +1 -1
- package/{core → src/core}/utils/searchers.d.ts +1 -1
- package/{core → src/core}/utils/store.d.ts +1 -1
- package/{core → src/core}/utils/string.d.ts +13 -1
- package/tabs/tabs.amd.js +1 -1
- package/tabs/tabs.amd.js.map +1 -1
- package/tabs/tabs.d.ts +1 -1
- package/tabs/tabs.js +14 -14
- package/tabs/tabs.js.map +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.d.ts +1 -1
- package/tabsView/tabsView.js +49 -48
- package/tabsView/tabsView.js.map +1 -1
- package/utils/check.amd.js +1 -1
- package/utils/check.amd.js.map +1 -1
- package/utils/check.d.ts +1 -1
- package/utils/check.js.map +1 -1
- package/utils/clipboard.amd.js +2 -2
- package/utils/clipboard.amd.js.map +1 -1
- package/utils/clipboard.d.ts +1 -1
- package/utils/clipboard.js +1 -1
- package/utils/clipboard.js.map +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.d.ts +1 -1
- package/utils/date.js +4 -3
- package/utils/device.amd.js +1 -1
- package/utils/device.d.ts +1 -1
- package/utils/device.js +4 -4
- package/utils/dom.amd.js +1 -1
- package/utils/dom.amd.js.map +1 -1
- package/utils/dom.d.ts +3 -3
- package/utils/dom.js +27 -22
- package/utils/dom.js.map +1 -1
- package/utils/image.amd.js +2 -2
- package/utils/image.amd.js.map +1 -1
- package/utils/image.d.ts +1 -1
- package/utils/image.js +1 -1
- package/utils/image.js.map +1 -1
- package/utils/keyboard.amd.js +1 -1
- package/utils/keyboard.amd.js.map +1 -1
- package/utils/keyboard.d.ts +1 -1
- package/utils/keyboard.js.map +1 -1
- package/utils/lodash.amd.js +1 -1
- package/utils/lodash.d.ts +1 -1
- package/utils/lodash.js +1 -1
- package/utils/number.amd.js +1 -1
- package/utils/number.amd.js.map +1 -1
- package/utils/number.d.ts +1 -1
- package/utils/number.js.map +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.amd.js.map +1 -1
- package/utils/price.d.ts +1 -1
- package/utils/price.js +1 -1
- package/utils/price.js.map +1 -1
- package/utils/route.amd.js +1 -1
- package/utils/route.amd.js.map +1 -1
- package/utils/route.d.ts +1 -1
- package/utils/route.js +26 -19
- package/utils/route.js.map +1 -1
- package/utils/scroll.amd.js +1 -1
- package/utils/scroll.amd.js.map +1 -1
- package/utils/scroll.d.ts +1 -1
- package/utils/scroll.js.map +1 -1
- package/utils/searchers.amd.js +1 -1
- package/utils/searchers.amd.js.map +1 -1
- package/utils/searchers.d.ts +1 -1
- package/utils/searchers.js +3 -3
- package/utils/searchers.js.map +1 -1
- package/utils/store.amd.js +1 -1
- package/utils/store.d.ts +1 -1
- package/utils/string.amd.js +1 -1
- package/utils/string.amd.js.map +1 -1
- package/utils/string.d.ts +1 -1
- package/utils/string.js +41 -28
- package/utils/string.js.map +1 -1
- package/utils/system.amd.js +1 -1
- package/utils/system.amd.js.map +1 -1
- package/utils/system.d.ts +1 -1
- package/utils/system.js.map +1 -1
- package/utils/url.amd.js +2 -2
- package/utils/url.amd.js.map +1 -1
- package/utils/url.d.ts +1 -1
- package/utils/url.js +1 -1
- package/utils/url.js.map +1 -1
- package/web-types.json +130 -130
- package/.chunks/core-CcWs0qYw.amd.js +0 -2
- package/.chunks/core-CcWs0qYw.amd.js.map +0 -1
- package/.chunks/core-Dsl28h7N.es.js.map +0 -1
- package/.chunks/datepicker-B6kIyIcw.amd.js +0 -2
- package/.chunks/datepicker-B6kIyIcw.amd.js.map +0 -1
- package/.chunks/datepicker-BTiE5Grw.es.js.map +0 -1
- package/.chunks/dialog_selectorRegions-BZcnnvJM.es.js +0 -140
- package/.chunks/dialog_selectorRegions-BZcnnvJM.es.js.map +0 -1
- package/.chunks/dialog_selectorRegions-CePGUsCo.amd.js +0 -2
- package/.chunks/dialog_selectorRegions-CePGUsCo.amd.js.map +0 -1
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-B5hK613K.es.js +0 -266
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-B5hK613K.es.js.map +0 -1
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-izSFcRLb.amd.js +0 -2
- package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-izSFcRLb.amd.js.map +0 -1
- package/.chunks/forms-BsuCen2-.es.js +0 -1999
- package/.chunks/forms-BsuCen2-.es.js.map +0 -1
- package/.chunks/forms-BwGakScF.amd.js +0 -3
- package/.chunks/forms-BwGakScF.amd.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CfM8kOV1.amd.js +0 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CfM8kOV1.amd.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CszHDnB0.es.js +0 -181
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CszHDnB0.es.js.map +0 -1
- package/.chunks/menu.vue_vue_type_style_index_0_lang-DQTVNJGq.amd.js +0 -2
- package/.chunks/menu.vue_vue_type_style_index_0_lang-DQTVNJGq.amd.js.map +0 -1
- package/.chunks/menu.vue_vue_type_style_index_0_lang-DmY5w4yr.es.js.map +0 -1
- package/.chunks/notice-CJdCc72d.amd.js.map +0 -1
- package/.chunks/notice-Cqs1dKt8.es.js.map +0 -1
- package/.chunks/page.vue_vue_type_script_setup_true_lang-1JWduCTr.amd.js +0 -2
- package/.chunks/page.vue_vue_type_script_setup_true_lang-1JWduCTr.amd.js.map +0 -1
- package/.chunks/page.vue_vue_type_script_setup_true_lang-BCfksgg3.es.js.map +0 -1
- package/.chunks/popup-CLhWWJDe.amd.js +0 -2
- package/.chunks/popup-CLhWWJDe.amd.js.map +0 -1
- package/.chunks/popup-N10MDafw.es.js +0 -416
- package/.chunks/popup-N10MDafw.es.js.map +0 -1
- package/.chunks/punycode.es6-C2yitnNb.amd.js +0 -2
- package/.chunks/punycode.es6-CNI-zL6U.es.js +0 -134
- package/.chunks/store-esTid5oI.amd.js +0 -2
- package/.chunks/store-esTid5oI.amd.js.map +0 -1
- package/.chunks/utils-B1H3EGkg.es.js.map +0 -1
- package/.chunks/utils-B7GVqGBH.amd.js +0 -2
- package/.chunks/utils-B7GVqGBH.amd.js.map +0 -1
- package/.chunks/utils-DIy2mbYd.amd.js +0 -2
- package/.chunks/utils-DIy2mbYd.amd.js.map +0 -1
- package/.chunks/utils-bjr7c5my.es.js +0 -225
- package/.chunks/utils-bjr7c5my.es.js.map +0 -1
- package/CHANGELOG.md +0 -14
- package/components/charts/charts.d.ts +0 -5
- package/components/charts/miniChart/stories/dummy.d.ts +0 -13
- package/components/charts/miniCharts/stories/dummy.d.ts +0 -6
- package/components/dialog/dialog/stories/autoload.d.ts +0 -2
- package/components/dialog/lib/utils.d.ts +0 -14
- package/components/forms/forms.d.ts +0 -27
- package/components/forms/helpers.d.ts +0 -10
- package/components/forms/input/input.d.ts +0 -34
- package/components/forms/inputDate/inputDate.d.ts +0 -3
- package/components/forms/select/stories/exampleOptions.d.ts +0 -5
- package/components/formsExt/formsExt.d.ts +0 -13
- package/components/formsExt/menu/stories/items.d.ts +0 -3
- package/components/formsExt/navigationMenu/navigationMenu.d.ts +0 -24
- package/components/formsExt/navigationMenu/stories/items.d.ts +0 -3
- package/components/formsExt/selector2/api.d.ts +0 -8
- package/components/formsExt/selector2/selector2.vue.d.ts +0 -210
- package/components/formsExt/selector2/stories/dummyAPIRequest.d.ts +0 -10
- package/components/layout/layout.d.ts +0 -9
- package/components/popup/alert/alert.d.ts +0 -8
- package/components/popup/alert/alert.vue.d.ts +0 -31
- package/components/popup/confirm/confirm.vue.d.ts +0 -33
- package/components/popup/popup/opener.vue.d.ts +0 -23
- package/components/popup/popup/popup.vue.d.ts +0 -40
- package/components/popup/popup.d.ts +0 -15
- package/components/popup/prompt/prompt.vue.d.ts +0 -33
- package/components/project/project.d.ts +0 -15
- package/components/project/selectorCompetitors/stories/items.d.ts +0 -3
- package/components/project/selectorCompetitors/types/competitor.d.ts +0 -7
- package/components/project/selectorRegion/stories/searchers.d.ts +0 -3
- package/components/project/selectorRegion/utils/consts.d.ts +0 -18
- package/components/tabs/tabs.d.ts +0 -7
- package/components/tabsView/tabsView/store.d.ts +0 -192
- package/components/tabsView/tabsView.d.ts +0 -7
- package/icomoon/Topvisor icons.json +0 -6260
- /package/assets/{popup.css → widgetInput.css} +0 -0
- /package/{components/charts/miniChart/miniChart.d.ts → src/components/charts/miniChart/types.d.ts} +0 -0
- /package/{components → src/components}/charts/miniChart/utils/consts.d.ts +0 -0
- /package/{components → src/components}/core/notice/item/item.vue.d.ts +0 -0
- /package/{components → src/components}/core/notice/notice.vue.d.ts +0 -0
- /package/{components → src/components}/core/notice/types.d.ts +0 -0
- /package/{components → src/components}/core/notice/utils.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/composables/asyncDialogHandle.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/composables/dialogHandle.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/composables/types.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/composables/utils.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/dialog.vue.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/page/page.vue.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/pageComponent/pageComponent.vue.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/pageComponent/types.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/stories/dialog_example/pages/utils.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog/types.d.ts +0 -0
- /package/{components → src/components}/dialog/dialog.d.ts +0 -0
- /package/{components/forms/checkbox/checkbox.d.ts → src/components/forms/checkbox/types.d.ts} +0 -0
- /package/{components/forms/controlLabel/controlLabel.d.ts → src/components/forms/controlLabel/types.d.ts} +0 -0
- /package/{components/forms/hint/hint.d.ts → src/components/forms/hint/types.d.ts} +0 -0
- /package/{components → src/components}/forms/inputDate/datepicker.d.ts +0 -0
- /package/{components → src/components}/forms/inputRange/inputRange.vue.d.ts +0 -0
- /package/{components/layout/islandRows/islandRowsRow → src/components/forms/inputRange}/types.d.ts +0 -0
- /package/{components → src/components}/forms/loadbar/loadbar.vue.d.ts +0 -0
- /package/{components/project/tagSelector/tagIcon/tagIcon.vue.d.ts → src/components/forms/preloader/preloader.vue.d.ts} +0 -0
- /package/{components/forms/radio/radio.d.ts → src/components/forms/radio/types.d.ts} +0 -0
- /package/{components/forms/switcher/switcher.d.ts → src/components/forms/switcher/types.d.ts} +0 -0
- /package/{components → src/components}/formsExt/info/info.vue.d.ts +0 -0
- /package/{components/formsExt/menu/menu.d.ts → src/components/formsExt/menu/types.d.ts} +0 -0
- /package/{components → src/components}/layout/islandRows/islandRows.vue.d.ts +0 -0
- /package/{components → src/components}/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +0 -0
- /package/{components/forms/inputRange/inputRange.d.ts → src/components/layout/islandRows/islandRowsRow/types.d.ts} +0 -0
- /package/{components → src/components}/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue.d.ts +0 -0
- /package/{components → src/components}/layout/rows/rows.vue.d.ts +0 -0
- /package/{components → src/components}/layout/rows/types.d.ts +0 -0
- /package/{components → src/components}/popup/lib/worker.globalEvents.d.ts +0 -0
- /package/{components → src/components}/popup/worker.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/popupListItem/tagPopupListItem.vue.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/popupListItem/types.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/popupOpener/popupOpener.vue.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/tagIcon/types.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/tagSelector.vue.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/tagsDefaults.d.ts +0 -0
- /package/{components → src/components}/project/tagSelector/utils/utils.d.ts +0 -0
- /package/{components/tabs/tabs/tabs.d.ts → src/components/tabs/tabs/types.d.ts} +0 -0
- /package/{components → src/components}/tabsView/tabsView/menuDelimeter.vue.d.ts +0 -0
- /package/{components → src/components}/tabsView/tabsView/utils.d.ts +0 -0
- /package/{core → src/core}/core/events/resize.d.ts +0 -0
- /package/{core → src/core}/core/events.d.ts +0 -0
- /package/{core → src/core}/core/preloaders.d.ts +0 -0
- /package/{core → src/core}/directives/data.d.ts +0 -0
- /package/{core → src/core}/directives/focus.d.ts +0 -0
- /package/{core → src/core}/directives/scrollIntoView.d.ts +0 -0
- /package/{core → src/core}/directives/scrollShadow.d.ts +0 -0
- /package/{core → src/core}/directives/sticky.d.ts +0 -0
- /package/{core → src/core}/directives/swimUp.d.ts +0 -0
- /package/{core → src/core}/directives/tooltip.d.ts +0 -0
- /package/{core → src/core}/plugins/piniaTPA.d.ts +0 -0
- /package/{core → src/core}/utils/check.d.ts +0 -0
- /package/{core → src/core}/utils/clipboard.d.ts +0 -0
- /package/{core → src/core}/utils/device.d.ts +0 -0
- /package/{core → src/core}/utils/image.d.ts +0 -0
- /package/{core → src/core}/utils/keyboard.d.ts +0 -0
- /package/{core → src/core}/utils/lodash.d.ts +0 -0
- /package/{core → src/core}/utils/number.d.ts +0 -0
- /package/{core → src/core}/utils/price.d.ts +0 -0
- /package/{core → src/core}/utils/scroll.d.ts +0 -0
- /package/{core → src/core}/utils/store/localStorage.d.ts +0 -0
- /package/{core → src/core}/utils/store/plugin.d.ts +0 -0
- /package/{core → src/core}/utils/store/store.d.ts +0 -0
- /package/{core → src/core}/utils/system.d.ts +0 -0
- /package/{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","../../src/components/tabsView/tabsView.ts"],"sourcesContent":["import { watch } from 'vue';\r\nimport type { Store } from './store';\r\n\r\n/**\r\n * Сгенерировать имя для сохранения данных в localStorage\r\n * @param stateName - имя свойства состояния\r\n * @param stateKey - ключ состояния, разные компоненты могут использовать одинаковый ключ\r\n */\r\nconst genStorageKey = <T extends Store>(stateName: keyof T, stateKey: string): string => {\r\n\tconst stateNameString = String(stateName);\r\n\r\n\treturn `top:${stateNameString}:${stateKey}`;\r\n};\r\n\r\n/**\r\n * Загрузить состояние\r\n * @param stateName - имя свойства состояния\r\n * @param store\r\n */\r\nconst loadLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\r\n\t// если Store.key не знадан, значит сохранение состояния в компоненте отключено\r\n\tif (!store.$id) return;\r\n\r\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\r\n\r\n\ttry {\r\n\t\tconst localStorageValue: typeof store[keyof typeof store] = JSON.parse(localStorage.getItem(localStorageKey) as string);\r\n\r\n\t\tif (typeof localStorageValue === typeof store[stateName]) {\r\n\t\t\tstore[stateName] = localStorageValue;\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tconsole.warn(new Error(`В localStorage[${localStorageKey}] не корректный json`));\r\n\t}\r\n};\r\n\r\n/**\r\n * Добавить автосохранение состояние при его изменении\r\n * @param stateName - имя свойства состояния\r\n * @param store\r\n */\r\nconst addSaverLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\r\n\t// если store.$id не знадан, значит сохранение состояния в компоненте отключено\r\n\tif (!store.$id) return;\r\n\r\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\r\n\r\n\twatch(() => store[stateName], () => {\r\n\t\tlocalStorage.setItem(localStorageKey, JSON.stringify(store[stateName]));\r\n\t}, { immediate: true });\r\n};\r\n\r\nexport default {\r\n\tloadLocalStorge,\r\n\taddSaverLocalStorge,\r\n};","import type { InjectionKey, ModelRef } from 'vue';\r\nimport { computed, ref } from 'vue';\r\nimport Core from '@/core/core/core';\r\nimport { defineStore, useStore } from '@/core/utils/store';\r\nimport StoreLocalStorage from '@/core/utils/store/localStorage';\r\nimport type { Props, Store } from './tabsView';\r\nimport { getHash } from '@/core/utils/route';\r\n\r\nconst popstateCallbacks = new Set<(e: PopStateEvent) => void>();\r\n\r\naddEventListener('popstate', (e) => {\r\n\tpopstateCallbacks.forEach(popstateCallback => popstateCallback(e));\r\n});\r\n\r\nexport const injectionKey = Symbol() as InjectionKey<Store>;\r\n\r\n/**\r\n * Инициировать Store компонента\r\n */\r\nexport const defineTabsStore = (props: Props, model: ModelRef<string | undefined>) => {\r\n\tconst store = defineStore(injectionKey, () => {\r\n\t\tconst showMenuInPopup = computed(() => props.showMenuInPopup ?? Core.state.isMobile);\r\n\t\tconst pageMod = computed(() => props.pageMod);\r\n\t\tconst isShort = ref(false);\r\n\r\n\t\tconst component = ref(undefined);\r\n\t\tconst scrollable = ref(true);\r\n\r\n\t\treturn {\r\n\t\t\tshowMenuInPopup,\r\n\t\t\tpageMod,\r\n\t\t\tisShort,\r\n\t\t\tactiveItemName: model,\r\n\t\t\tcomponent,\r\n\t\t\tscrollable,\r\n\t\t};\r\n\t}, props.idState);\r\n\r\n\tif (props.isShortable) {\r\n\t\tconst stateName = 'isShort';\r\n\r\n\t\tStoreLocalStorage.loadLocalStorge(stateName, store);\r\n\t\tStoreLocalStorage.addSaverLocalStorge(stateName, store);\r\n\t}\r\n\r\n\tif (store.$id) {\r\n\t\tconst popstateCallback = (e: PopStateEvent) => {\r\n\t\t\tmodel.value = getHash(store.$id!);\r\n\t\t};\r\n\r\n\t\tpopstateCallbacks.add(popstateCallback);\r\n\t}\r\n\r\n\treturn store;\r\n};\r\n\r\n/**\r\n * Получить Store компонента\r\n */\r\nexport const useTabsStore = () => useStore(injectionKey);\r\n","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { genHash } from '@/core/utils/route';\r\nimport { TopPopupListItem } from '@/components/popup/popup';\r\nimport { useTabsStore } from './store';\r\nimport type { PropsMenuItem } from './tabsView';\r\n\r\nconst props = withDefaults(defineProps<PropsMenuItem>(), {\r\n\tscrollable: true,\r\n\tcomponent: undefined,\r\n});\r\n\r\nconst store = useTabsStore();\r\n\r\nconst href = computed(() => {\r\n\t// это внутренняя хеш навигация, ссылка на вкладку\r\n\tif (props.name && store.$id) {\r\n\t\treturn genHash(store.$id, props.name);\r\n\t}\r\n\r\n\treturn props.href;\r\n});\r\n\r\nconst tagName = computed(() => {\r\n\tif (store.showMenuInPopup) {\r\n\t\treturn TopPopupListItem;\r\n\t}\r\n\r\n\treturn href ? 'a' : 'button';\r\n});\r\n\r\n/**\r\n * Клик по элементу меню\r\n */\r\nconst onClick = (e: MouseEvent) => {\r\n\t// это внутренняя хеш навигация, ссылка на вкладку\r\n\tif (!props.href && href.value) {\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\tif (props.name) {\r\n\t\tstore.activeItemName = props.name;\r\n\t}\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\ttarget=\"_self\"\r\n\t\t:class=\"{\r\n\t\t\t['top-tabsView_menuItem']: !store.showMenuInPopup,\r\n\t\t\t['top-active']: name && store.activeItemName === name,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-spa-disabled']: true,\r\n\t\t}\"\r\n\t\t:href=\"href\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t@click=\"onClick\"\r\n\t>\r\n\t\t<slot v-if=\"store.showMenuInPopup\"></slot>\r\n\r\n\t\t<span\r\n\t\t\tv-else-if=\"$slots.default && !store.isShort\"\r\n\t\t\tclass=\"top-ellipsis\"\r\n\t\t>\r\n\t\t\t<slot></slot>\r\n\t\t</span>\r\n\t</component>\r\n</template>\r\n\r\n<style>\r\n.top-tabsView_menuItem {\r\n\t--top-icon-color: var(--color-text-2);\r\n\t--top-icon-width: calc(var(--top-icon-size));\r\n\r\n\tcursor: pointer;\r\n\tbox-sizing: border-box;\r\n\r\n\tborder: none;\r\n\tborder-radius: var(--top-radius-2);\r\n\tpadding: var(--top-padding-2);\r\n\tbackground: transparent;\r\n\theight: 40px;\r\n\r\n\tcolor: var(--color-text-1);\r\n\ttext-decoration: none;\r\n\twhite-space: nowrap;\r\n\r\n\tdisplay: flex;\r\n\tgap: var(--top-gap-2);\r\n\talign-items: center;\r\n\tjustify-content: flex-start;\r\n\ttransition: background var(--transition);\r\n}\r\n\r\n.top-tabsView_menuItem:hover {\r\n\t--top-icon-color: var(--color-text-1);\r\n\r\n\tbackground: var(--color-bg-shading-1);\r\n\ttext-decoration: none;\r\n}\r\n\r\n.top-tabsView_menuItem.top-active {\r\n\t--top-icon-color: inherit;\r\n\r\n\tbackground: var(--color-layout-front-1);\r\n\tcolor: inherit;\r\n}\r\n\r\n.top-tabsView_menuItem:disabled:not(option):not(optgroup):not(.top-forms-option),\r\n.top-tabsView_menuItem:disabled ~ .top-formsCaption,\r\n.top-tabsView_menuItem.top-disabled[data-top-icon]:before,\r\n.top-tabsView_menuItem.top-disabled[data-top-icon2]:after {\r\n\topacity: unset;\r\n\tfilter: unset;\r\n}\r\n\r\n.top-tabsView_menuItem.top-disabled {\r\n\t--top-icon-color: var(--color-text-4);\r\n\r\n\tcolor: var(--color-text-4);\r\n}\r\n</style>\r\n","// TODO: Эту функцию можно вынести в глобальный utils\r\n\r\nimport { sleepWhile } from '@/core/utils/system';\r\n\r\n/**\r\n * Проверка нахождения компонента в состояние загрузки\r\n * @param component\r\n */\r\nexport const checkComponentIsLoading = (component: any) => {\r\n\treturn component?.name === 'AsyncComponentWrapper' && !component?.__asyncResolved;\r\n};\r\n\r\n/**\r\n * Презагрузить компонент\r\n *\r\n * Некоторое время ожидает загрузку компонента, прежде чем завершит работу\r\n */\r\nexport const preResolveComponent = async (component: any, condition: Function) => {\r\n\tif (component?.name !== 'AsyncComponentWrapper') return;\r\n\tif (component?.__asyncResolved) return;\r\n\r\n\tcomponent.__asyncLoader();\r\n\r\n\tawait sleepWhile(() => {\r\n\t\treturn condition() && checkComponentIsLoading(component);\r\n\t}, 200);\r\n};\r\n","<script setup lang=\"ts\">\r\nimport type { Ref, VNode } from 'vue';\r\nimport { markRaw, onMounted, onUnmounted, ref, useSlots, watch } from 'vue';\r\nimport { TopPopup } from '../../popup/popup';\r\nimport { getHash, setHash } from '@/core/utils/route';\r\n\r\nimport type { MenuItem, PropsMenu, PropsMenuItem } from './tabsView';\r\nimport { useTabsStore } from './store';\r\nimport TabsViewMenuItem from './menuItem.vue';\r\nimport { preResolveComponent } from './utils';\r\n\r\ndefineProps<PropsMenu>();\r\n\r\nconst isLoading = defineModel('isLoading');\r\n\r\nconst store = useTabsStore();\r\n\r\nconst slots = useSlots();\r\n\r\n// словарь используется для оптимизации получения нужного menuItem\r\nconst menuItemByName: Map<PropsMenuItem['name'], MenuItem> = new Map();\r\n\r\n// заполнить словарь с menuItem, по элементам в slot default\r\nconst setMenuItemByName = () => {\r\n\tif (!slots.default) return;\r\n\r\n\tconst component: any = slots.default().find(item => item.key === '_menu');\r\n\tif (!component) return;\r\n\r\n\tsetMenuItemByNameFromItems(component.children);\r\n};\r\n\r\n// заполнить словарь с menuItem, по элементам\r\nconst setMenuItemByNameFromItems = (menuItems: VNode[]) => {\r\n\tmenuItems.forEach((subComponent: any) => {\r\n\t\t// это не компонент элемента меню\r\n\t\tif (subComponent.type.__name && subComponent.type.__name !== TabsViewMenuItem.__name) return;\r\n\r\n\t\t// это не компонент, например template\r\n\t\tif (!subComponent.type.__name && typeof subComponent.children === 'object') {\r\n\t\t\tsetMenuItemByNameFromItems(subComponent.children);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!subComponent.props?.name || subComponent.props?.disabled) return;\r\n\r\n\t\tconst menuItem: MenuItem = {\r\n\t\t\ttitle: (subComponent.children.default?.()[0].children as string).trim(),\r\n\t\t\ticon: subComponent.props.icon,\r\n\t\t\tcomponent: subComponent.props.component ? markRaw(subComponent.props.component) : TabsViewMenuItem.props.component.default,\r\n\t\t\tscrollable: subComponent.props.scrollable ?? TabsViewMenuItem.props.scrollable.default,\r\n\t\t};\r\n\r\n\t\tmenuItemByName.set(subComponent.props.name, menuItem);\r\n\t});\r\n};\r\n\r\n/**\r\n * activeMenuItem нужен:\r\n * - для вывода текста активной вкладки в меню с popup\r\n * - для вывода компонента активной вкладки (store.component)\r\n * - для установки store.scrollable\r\n */\r\nconst activeMenuItem: Ref<MenuItem | null> = ref(null);\r\n\r\n/**\r\n * Кол-во изменений активной вкладки\r\n */\r\nlet countChanged = 0;\r\n\r\n/**\r\n * Смена активной вкладки\r\n *\r\n * TODO: смена slot, например смена языка, требует повторного выполнения setMenuItemByName()\r\n */\r\nwatch(\r\n\t() => store.activeItemName,\r\n\tasync () => {\r\n\t\tconst numberChanged = ++countChanged; // порядковый номер текущего изменения\r\n\r\n\t\tif (menuItemByName.size === 0) {\r\n\t\t\tsetMenuItemByName();\r\n\t\t}\r\n\r\n\t\tif (menuItemByName.size === 0) {\r\n\t\t\tstore.activeItemName = '';\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tactiveMenuItem.value = menuItemByName.get(store.activeItemName) ?? null;\r\n\r\n\t\t// элемент не найден, установить из хеша страницы\r\n\t\tif (!activeMenuItem.value && store.$id) {\r\n\t\t\tconst activeItemName = getHash(store.$id);\r\n\r\n\t\t\tactiveMenuItem.value = menuItemByName.get(activeItemName) ?? null;\r\n\r\n\t\t\tif (activeMenuItem.value) {\r\n\t\t\t\tstore.activeItemName = activeItemName;\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// элемент не найден, установить первый доступный\r\n\t\tif (!activeMenuItem.value) {\r\n\t\t\tstore.activeItemName = menuItemByName.keys().next().value!;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// запрошена смена на уже активный элемент\r\n\t\tif (activeMenuItem.value.component === store.component) {\r\n\t\t\tisLoading.value = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (store.$id) setHash(store.$id, store.activeItemName, false);\r\n\r\n\t\t// флаг загрузки будет сброшен при инициализации компонента\r\n\t\tisLoading.value = true;\r\n\r\n\t\t/**\r\n\t\t * Презагрузить компонент\r\n\t\t *\r\n\t\t * Нужно для того, чтобы минимизировать скачки интерфейса при ожидании загрузки асинхронного компонента\r\n\t\t */\r\n\t\tawait preResolveComponent(activeMenuItem.value.component, () => numberChanged === countChanged);\r\n\r\n\t\t// влкадка была сменена еще раз во время sleepWhile\r\n\t\tif (numberChanged !== countChanged) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstore.scrollable = activeMenuItem.value.scrollable;\r\n\t\tstore.component = activeMenuItem.value.component;\r\n\r\n\t\tif (activeMenuItem.value && !store.component) {\r\n\t\t\tconsole.warn(`Компонент вкладки ${store.activeItemName} не найден. Добавьте props.component для пункта меню ${store.activeItemName}.`);\r\n\t\t}\r\n\t},\r\n\t{ immediate: true },\r\n);\r\n\r\nconst elRef = ref();\r\nlet resizeObserver: ResizeObserver;\r\n\r\nonMounted(() => {\r\n\tresizeObserver = new ResizeObserver(() => {\r\n\t\telRef.value.parentElement.style.setProperty('--top-tabsView-contents-offset-top', elRef.value.offsetHeight + 'px');\r\n\t});\r\n\r\n\tresizeObserver.observe(elRef.value);\r\n});\r\n\r\nonUnmounted(() => {\r\n\tresizeObserver.disconnect();\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tref=\"elRef\"\r\n\t\t:class=\"{\r\n\t\t\t'top-tabsView_menu': true,\r\n\t\t\t'top-tabsView_menu-inPopup_0': !store.showMenuInPopup,\r\n\t\t\t'top-tabsView_menu-inPopup_1': store.showMenuInPopup,\r\n\t\t\t'top-tabsView_menu-short': store.isShort && !store.showMenuInPopup,\r\n\t\t}\"\r\n\t>\r\n\t\t<!-- Спрятать меню под кнопку в popup -->\r\n\t\t<TopPopup v-if=\"store.showMenuInPopup\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<div class=\"top-tabsView_menuOpener\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tv-if=\"activeMenuItem\"\r\n\t\t\t\t\t\tclass=\"top-tabsView_menuOpenerActiveItem\"\r\n\t\t\t\t\t\t:data-top-icon=\"activeMenuItem.icon\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\r\n\t\t\t\t\t\t\t{{ activeMenuItem.title }}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"top-tabsView_menuOpenerIcon\" data-top-icon=\"\"></div>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<slot></slot>\r\n\t\t\t</template>\r\n\t\t</TopPopup>\r\n\r\n\t\t<!-- Отобразить меню на странице -->\r\n\t\t<template v-else>\r\n\t\t\t<div class=\"top-tabsView_menuList\">\r\n\t\t\t\t<slot></slot>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div\r\n\t\t\t\tv-if=\"isShortable\"\r\n\t\t\t\tclass=\"top-tabsView_menuFooter\"\r\n\t\t\t>\r\n\t\t\t\t<TabsViewMenuItem\r\n\t\t\t\t\tv-if=\"isShortable\"\r\n\t\t\t\t\t:icon=\"store.isShort ? '' : ''\"\r\n\t\t\t\t\t@click=\"store.isShort = !store.isShort\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ store.isShort ? '' : 'Свернуть' }} <!--TODO: translate-->\r\n\t\t\t\t</TabsViewMenuItem>\r\n\t\t\t</div>\r\n\t\t</template>\r\n\t</div>\r\n</template>\r\n\r\n<style>\r\n/* режим отображение табов в основной области документа */\r\n.top-tabsView-pageMod .top-tabsView_menu {\r\n\tbox-sizing: border-box;\r\n\tposition: sticky;\r\n\ttop: var(--top-tabsView-top);\r\n\tz-index: 10;\r\n}\r\n\r\n/* режим отображение табов в основной области документа без popup */\r\n.top-tabsView-pageMod .top-tabsView_menu-inPopup_0 {\r\n\theight: calc(var(--100vh) - var(--top-tabsView-top));\r\n}\r\n\r\n/* стантартный режим */\r\n.top-tabsView_menu-inPopup_0 {\r\n\tbox-sizing: border-box;\r\n\twidth: var(--top-tabsView-menu-width);\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tjustify-content: space-between;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n/* режим вывода в popup */\r\n.top-tabsView_menu-inPopup_1 {\r\n\tborder-bottom: 1px solid var(--color-line-2-opacity);\r\n}\r\n\r\n.top-tabsView_menu-short {\r\n\twidth: auto;\r\n}\r\n\r\n.top-tabsView_menu > .top-tabsView_menuOpener {\r\n\tdisplay: flex;\r\n\tjustify-content: flex-end;\r\n}\r\n\r\n.top-tabsView_menu > .top-tabsView_menuOpener:hover {\r\n\tbackground: var(--color-layer-1);\r\n}\r\n\r\n.top-tabsView_menuOpenerIcon { display: flex; }\r\n\r\n.top-tabsView_menuOpenerActiveItem {\r\n\t--top-forms-padding: 0px;\r\n\r\n\tbox-sizing: border-box;\r\n\tpadding: var(--top-padding-2);\r\n\tmax-width: calc(100% - var(--top-forms-base-height));\r\n\twhite-space: nowrap;\r\n\tflex-grow: 1;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: var(--top-padding-2);\r\n}\r\n\r\n.top-tabsView_menuList,\r\n.top-tabsView_menuFooter {\r\n\tpadding: var(--top-padding-2);\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: var(--top-gap-2);\r\n}\r\n\r\n.top-tabsView_menuList {\r\n\toverflow-y: auto;\r\n}\r\n\r\n.top-tabsView_menu-short .top-tabsView_menuFooter > .top-tabsView_menuItem {\r\n\t--top-icon-width: 100%;\r\n}\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { defineModel, onMounted, onUnmounted, ref, watch } from 'vue';\r\nimport Core from '@/core/core/core';\r\nimport { delHash } from '@/core/utils/route';\r\nimport type { Props } from './tabsView';\r\nimport { defineTabsStore } from './store';\r\nimport TabsViewMenu from './menu.vue';\r\nimport TopLoadbar from '@/components/forms/loadbar/loadbar.vue';\r\nimport { checkComponentIsLoading } from './utils';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowMenuInPopup: undefined,\r\n\tisShortable: false,\r\n});\r\n\r\nconst model = defineModel<string>();\r\n\r\nconst store = defineTabsStore(props, model);\r\n\r\nconst uid = Math.random();\r\n\r\nif (props.pageMod) Core.state.documentClassModificators.set(uid, 'top-hasTabsViewPageMod');\r\n\r\nonUnmounted(() => {\r\n\tif (props.pageMod) Core.state.documentClassModificators.delete(uid);\r\n\r\n\tif (store.$id) delHash(store.$id, store.activeItemName, true);\r\n});\r\n\r\nconst componentRef = ref();\r\nconst isLoading = ref(false);\r\n\r\nwatch([componentRef, () => store.component], () => {\r\n\tisLoading.value = checkComponentIsLoading(store.component);\r\n}, { immediate: true });\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-tabsView': true,\r\n\t\t\t'top-tabsView-pageMod': props.pageMod,\r\n\t\t\t'top-tabsView-inPopup': store.showMenuInPopup,\r\n\t\t}\"\r\n\t>\r\n\t\t<TabsViewMenu\r\n\t\t\t:isShortable=\"isShortable\"\r\n\t\t\tv-model:isLoading=\"isLoading\"\r\n\t\t>\r\n\t\t\t<!-- @slot Меню, ожидает передачу компонентов TabsViewMenuItem и TabsViewMenuTitle -->\r\n\t\t\t<slot name=\"menu\"></slot>\r\n\t\t</TabsViewMenu>\r\n\r\n\t\t<div\r\n\t\t\t:class=\"{\r\n\t\t\t\t'top-tabsView_contents': true,\r\n\t\t\t\t'top-tabsView_contents-isLoading': isLoading,\r\n\t\t\t\t'top-tabsView_contents-noScrollable': !store.scrollable,\r\n\t\t\t}\"\r\n\t\t>\r\n\t\t\t<TopLoadbar v-if=\"isLoading\"/>\r\n\r\n\t\t\t<keep-alive>\r\n\t\t\t\t<component\r\n\t\t\t\t\tref=\"componentRef\"\r\n\t\t\t\t\t:is=\"store.component\"\r\n\t\t\t\t/>\r\n\t\t\t</keep-alive>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<style>\r\n:root {\r\n\t--top-tabsView-top: 0px;\r\n\t--top-tabsView-menu-width: 220px;\r\n\t--top-tabsView-contents-offset-top: 0px;\r\n}\r\n\r\n.top-tabsView {\r\n\tbackground: var(--color-layout-middle);\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n}\r\n\r\n.top-tabsView_contents {\r\n\tborder-radius: var(--top-radius-4);\r\n\tbackground: var(--color-layout-front-1);\r\n\tpadding: var(--top-padding-4);\r\n\tflex-grow: 1;\r\n\toverflow: auto;\r\n\tposition: relative;\r\n}\r\n\r\n.top-tabsView_contents-isLoading {\r\n\tpointer-events: none;\r\n}\r\n\r\n.top-tabsView_contents-noScrollable {\r\n\twidth: calc(100% - var(--top-tabsView-menu-width));\r\n\tpadding: 0;\r\n\toverflow: visible;\r\n}\r\n\r\n/* top-tabsView-inPopup */\r\n.top-tabsView-inPopup {\r\n\tbackground: var(--color-layout-front-1);\r\n\tflex-direction: column;\r\n}\r\n\r\n.top-tabsView-inPopup > .top-tabsView_contents {\r\n\tborder-radius: 0;\r\n}\r\n\r\n.top-tabsView-inPopup > .top-tabsView_contents-noScrollable {\r\n\twidth: auto;\r\n}\r\n</style>\r\n","<script setup lang=\"ts\">\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-tabsView_menuDelimeter\"></div>\r\n</template>\r\n\r\n<style>\r\n.top-tabsView_menuDelimeter {\r\n\tpadding: var(--top-padding-1) 0;\r\n\tdisplay: flex;\r\n}\r\n\r\n.top-tabsView_menuDelimeter:before {\r\n\tcontent: \"\";\r\n\theight: 2px;\r\n\tbackground: var(--color-line-2);\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-tabsView_menuDelimeter:first-child,\r\n.top-tabsView_menuDelimeter + .top-tabsView_menuDelimeter {\r\n\tdisplay: none;\r\n}\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { useTabsStore } from './store';\r\nimport type { PropsMenuTitle } from './tabsView';\r\nimport TabsViewMenuDelimeter from './menuDelimeter.vue';\r\nimport { TopPopupListItem } from '../../popup/popup';\r\n\r\ndefineProps<PropsMenuTitle>();\r\n\r\nconst store = useTabsStore();\r\n</script>\r\n\r\n<template>\r\n\t<TopPopupListItem\r\n\t\tv-if=\"store.showMenuInPopup\"\r\n\t\ttype=\"title\"\r\n\t>\r\n\t\t<slot></slot>\r\n\t</TopPopupListItem>\r\n\r\n\t<TabsViewMenuDelimeter v-else-if=\"store.isShort\"/>\r\n\r\n\t<div\r\n\t\tv-else\r\n\t\t:class=\"{\r\n\t\t\t'top-tabsView_menuTitle': true,\r\n\t\t\t'top-tabsView_menuTitle-subtitle': isSubtitle,\r\n\t\t}\"\r\n\t>\r\n\t\t<slot></slot>\r\n\t</div>\r\n</template>\r\n\r\n<style>\r\n.top-tabsView_menuTitle {\r\n\tpadding: var(--top-padding-4) var(--top-padding-2) var(--top-padding-1);\r\n\tfont-weight: 600;\r\n\tcolor: var(--color-text-1);\r\n}\r\n\r\n.top-tabsView_menuTitle-subtitle {\r\n\tpadding-top: var(--top-padding-1);\r\n\tfont-size: 12px;\r\n\tfont-weight: 400;\r\n\tcolor: var(--color-text-2);\r\n}\r\n</style>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport TabsView from './tabsView/tabsView.vue';\r\nimport TabsViewMenuItem from './tabsView/menuItem.vue';\r\nimport TabsViewMenuTitle from './tabsView/menuTitle.vue';\r\n\r\nexport const TopTabsView = TabsView as typeof TabsView & ComponentCustomProps;\r\nexport const TopTabsViewMenuItem = TabsViewMenuItem as typeof TabsViewMenuItem & ComponentCustomProps;\r\nexport const TopTabsViewMenuTitle = TabsViewMenuTitle as typeof TabsViewMenuTitle & ComponentCustomProps;\r\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","getHash","useTabsStore","useStore","__props","href","genHash","tagName","TopPopupListItem","onClick","checkComponentIsLoading","preResolveComponent","condition","sleepWhile","isLoading","useModel","slots","useSlots","menuItemByName","setMenuItemByName","item","setMenuItemByNameFromItems","menuItems","subComponent","_sfc_main$4","_a","_b","menuItem","_d","_c","markRaw","activeMenuItem","countChanged","numberChanged","activeItemName","setHash","elRef","resizeObserver","onMounted","onUnmounted","uid","delHash","componentRef","_sfc_render","_ctx","_cache","TopTabsView","_sfc_main$2","TopTabsViewMenuItem","TopTabsViewMenuTitle","_sfc_main"],"mappings":";;;;;;;;;AAQA,MAAAA,IAAA,CAAAC,GAAAC,MAGC,OAFA,OAAAD,CAAA,CAEA,IAAAC,CAAA,IAQDC,KAAA,CAAAF,GAAAG,MAAA;AAEC,MAAA,CAAAA,EAAA,IAAA;AAEA,QAAAC,IAAAL,EAAAC,GAAAG,EAAA,GAAA;AAEA,MAAA;AACC,UAAAE,IAAA,KAAA,MAAA,aAAA,QAAAD,CAAA,CAAA;AAEA,IAAA,OAAAC,KAAA,OAAAF,EAAAH,CAAA,MACCG,EAAAH,CAAA,IAAAK;AAAA,EACD,QAAA;AAEA,YAAA,KAAA,IAAA,MAAA,kBAAAD,CAAA,sBAAA,CAAA;AAAA,EAA+E;AAEjF,GAOAE,KAAA,CAAAN,GAAAG,MAAA;AAEC,MAAA,CAAAA,EAAA,IAAA;AAEA,QAAAC,IAAAL,EAAAC,GAAAG,EAAA,GAAA;AAEA,EAAAI,EAAA,MAAAJ,EAAAH,CAAA,GAAA,MAAA;AACC,iBAAA,QAAAI,GAAA,KAAA,UAAAD,EAAAH,CAAA,CAAA,CAAA;AAAA,EAAsE,GAAA,EAAA,WAAA,GAAA,CAAA;AAExE,GAEAQ,IAAA;AAAA,EAAe,iBAAAN;AAAA,EACd,qBAAAI;AAED,GC/CAG,IAAA,oBAAA,IAAA;AAEA,iBAAA,YAAA,CAAAC,MAAA;AACC,EAAAD,EAAA,QAAA,CAAAE,MAAAA,EAAAD,CAAA,CAAA;AACD,CAAA;AAEO,MAAAE,IAAA,OAAA,GAKMC,KAAA,CAAAC,GAAAC,MAAA;AACZ,QAAAZ,IAAAa,GAAAJ,GAAA,MAAA;AACC,UAAAK,IAAAC,EAAA,MAAAJ,EAAA,mBAAAK,EAAA,MAAA,QAAA,GACAC,IAAAF,EAAA,MAAAJ,EAAA,OAAA,GACAO,IAAAC,EAAA,EAAA,GAEAC,IAAAD,EAAA,MAAA,GACAE,IAAAF,EAAA,EAAA;AAEA,WAAA;AAAA,MAAO,iBAAAL;AAAA,MACN,SAAAG;AAAA,MACA,SAAAC;AAAA,MACA,gBAAAN;AAAA,MACgB,WAAAQ;AAAA,MAChB,YAAAC;AAAA,IACA;AAAA,EACD,GAAAV,EAAA,OAAA;AAGD,MAAAA,EAAA,aAAA;AACC,UAAAd,IAAA;AAEA,IAAAQ,EAAA,gBAAAR,GAAAG,CAAA,GACAK,EAAA,oBAAAR,GAAAG,CAAA;AAAA,EAAsD;AAGvD,MAAAA,EAAA,KAAA;AACC,UAAAQ,IAAA,CAAAD,MAAA;AACC,MAAAK,EAAA,QAAAU,EAAAtB,EAAA,GAAA;AAAA,IAAgC;AAGjC,IAAAM,EAAA,IAAAE,CAAA;AAAA,EAAsC;AAGvC,SAAAR;AACD,GAKauB,IAAA,MAAAC,GAAAf,CAAA;;;;;;;;;;;;;;ACpDb,UAAAE,IAAAc,GAKAzB,IAAAuB,EAAA,GAEAG,IAAAX,EAAA,MAECJ,EAAA,QAAAX,EAAA,MACC2B,GAAA3B,EAAA,KAAAW,EAAA,IAAA,IAGDA,EAAA,IAAa,GAGdiB,IAAAb,EAAA,MACCf,EAAA,kBACC6B,IAGDH,IAAA,MAAA,QAAoB,GAMrBI,IAAA,CAAAvB,MAAA;AAEC,MAAA,CAAAI,EAAA,QAAAe,EAAA,SACCnB,EAAA,eAAA,GAGDI,EAAA,SACCX,EAAA,iBAAAW,EAAA;AAAA,IACD;;;;;;;;;;;;;;;;;;;;;;IClCYoB,IAAA,CAAAX,OACZA,KAAA,gBAAAA,EAAA,UAAA,2BAAA,EAAAA,KAAA,QAAAA,EAAA,kBAQYY,KAAA,OAAAZ,GAAAa,MAAA;AACZ,GAAAb,KAAA,gBAAAA,EAAA,UAAA,4BACAA,KAAA,QAAAA,EAAA,oBAEAA,EAAA,cAAA,GAEA,MAAAc,GAAA,MACCD,EAAA,KAAAF,EAAAX,CAAA,GAAuD,GAAA;AAEzD;;;;;;;;;;;;;;ACbA,UAAAe,IAAAC,EAAAX,GAAA,WAAA,GAEAzB,IAAAuB,EAAA,GAEAc,IAAAC,EAAA,GAGAC,IAAA,oBAAA,IAAA,GAGAC,IAAA,MAAA;AACC,UAAA,CAAAH,EAAA,QAAA;AAEA,YAAAjB,IAAAiB,EAAA,QAAA,EAAA,KAAA,CAAAI,MAAAA,EAAA,QAAA,OAAA;AACA,MAAArB,KAEAsB,EAAAtB,EAAA,QAAA;AAAA,IAA6C,GAI9CsB,IAAA,CAAAC,MAAA;AACC,MAAAA,EAAA,QAAA,CAAAC,MAAA;;AAEC,YAAAA,EAAA,KAAA,UAAAA,EAAA,KAAA,WAAAC,EAAA,OAAA;AAGA,YAAA,CAAAD,EAAA,KAAA,UAAA,OAAAA,EAAA,YAAA,UAAA;AACC,UAAAF,EAAAE,EAAA,QAAA;AAEA;AAAA,QAAA;AAGD,YAAA,GAAAE,IAAAF,EAAA,UAAA,QAAAE,EAAA,UAAAC,IAAAH,EAAA,UAAA,QAAAG,EAAA,SAAA;AAEA,cAAAC,IAAA;AAAA,UAA2B,SAAAC,KAAAC,IAAAN,EAAA,UAAA,YAAA,gBAAAK,EAAA,KAAAC,GAAA,GAAA,UAAA,KAAA;AAAA,UAC4C,MAAAN,EAAA,MAAA;AAAA,UAC7C,WAAAA,EAAA,MAAA,YAAAO,EAAAP,EAAA,MAAA,SAAA,IAAAC,EAAA,MAAA,UAAA;AAAA,UAC0F,YAAAD,EAAA,MAAA,cAAAC,EAAA,MAAA,WAAA;AAAA,QACpC;AAGhF,QAAAN,EAAA,IAAAK,EAAA,MAAA,MAAAI,CAAA;AAAA,MAAoD,CAAA;AAAA,IACpD,GASFI,IAAAjC,EAAA,IAAA;AAKA,QAAAkC,IAAA;AAOA,IAAAjD;AAAA,MAAA,MAAAJ,EAAA;AAAA,MACa,YAAA;AAEX,cAAAsD,IAAA,EAAAD;AAMA,YAJAd,EAAA,SAAA,KACCC,EAAA,GAGDD,EAAA,SAAA,GAAA;AACC,UAAAvC,EAAA,iBAAA;AAEA;AAAA,QAAA;AAMD,YAHAoD,EAAA,QAAAb,EAAA,IAAAvC,EAAA,cAAA,KAAA,MAGA,CAAAoD,EAAA,SAAApD,EAAA,KAAA;AACC,gBAAAuD,IAAAjC,EAAAtB,EAAA,GAAA;AAIA,cAFAoD,EAAA,QAAAb,EAAA,IAAAgB,CAAA,KAAA,MAEAH,EAAA,OAAA;AACC,YAAApD,EAAA,iBAAAuD;AAEA;AAAA,UAAA;AAAA,QACD;AAID,YAAA,CAAAH,EAAA,OAAA;AACC,UAAApD,EAAA,iBAAAuC,EAAA,KAAA,EAAA,KAAA,EAAA;AAEA;AAAA,QAAA;AAID,YAAAa,EAAA,MAAA,cAAApD,EAAA,WAAA;AACC,UAAAmC,EAAA,QAAA;AAEA;AAAA,QAAA;AAgBD,QAbAnC,EAAA,OAAAwD,GAAAxD,EAAA,KAAAA,EAAA,gBAAA,EAAA,GAGAmC,EAAA,QAAA,IAOA,MAAAH,GAAAoB,EAAA,MAAA,WAAA,MAAAE,MAAAD,CAAA,GAGAC,MAAAD,MAIArD,EAAA,aAAAoD,EAAA,MAAA,YACApD,EAAA,YAAAoD,EAAA,MAAA,WAEAA,EAAA,SAAA,CAAApD,EAAA,aACC,QAAA,KAAA,qBAAAA,EAAA,cAAA,wDAAAA,EAAA,cAAA,GAAA;AAAA,MACD;AAAA,MACD,EAAA,WAAA,GAAA;AAAA,IACkB;AAGnB,UAAAyD,IAAAtC,EAAA;AACA,QAAAuC;AAEA,WAAAC,EAAA,MAAA;AACC,MAAAD,IAAA,IAAA,eAAA,MAAA;AACC,QAAAD,EAAA,MAAA,cAAA,MAAA,YAAA,sCAAAA,EAAA,MAAA,eAAA,IAAA;AAAA,MAAiH,CAAA,GAGlHC,EAAA,QAAAD,EAAA,KAAA;AAAA,IAAkC,CAAA,GAGnCG,EAAA,MAAA;AACC,MAAAF,EAAA,WAAA;AAAA,IAA0B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrJ3B,UAAA/C,IAAAc,GAKAb,IAAAwB,EAAAX,GAAA,YAAA,GAEAzB,IAAAU,GAAAC,GAAAC,CAAA,GAEAiD,IAAA,KAAA,OAAA;AAEA,IAAAlD,EAAA,WAAAK,EAAA,MAAA,0BAAA,IAAA6C,GAAA,wBAAA,GAEAD,EAAA,MAAA;AACC,MAAAjD,EAAA,WAAAK,EAAA,MAAA,0BAAA,OAAA6C,CAAA,GAEA7D,EAAA,OAAA8D,GAAA9D,EAAA,KAAAA,EAAA,gBAAA,EAAA;AAAA,IAA4D,CAAA;AAG7D,UAAA+D,IAAA5C,EAAA,GACAgB,IAAAhB,EAAA,EAAA;AAEA,WAAAf,EAAA,CAAA2D,GAAA,MAAA/D,EAAA,SAAA,GAAA,MAAA;AACC,MAAAmC,EAAA,QAAAJ,EAAA/B,EAAA,SAAA;AAAA,IAAyD,GAAA,EAAA,WAAA,GAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BzD,SAAAgE,GAAAC,GAAAC,GAAA;;;;;;;;;ACGD,UAAAlE,IAAAuB,EAAA;;;;;;;;;;;;;;;;;;;ICFO4C,KAAAC,IACAC,KAAAxB,GACAyB,KAAAC;"}
|
|
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","_sfc_main$5","onClick","openBlock","createBlock","resolveDynamicComponent","normalizeClass","unref","_ctx","name","disabled","renderSlot","createElementBlock","_hoisted_1$2","createCommentVNode","checkComponentIsLoading","preResolveComponent","condition","sleepWhile","isLoading","useModel","slots","useSlots","menuItemByName","setMenuItemByName","item","setMenuItemByNameFromItems","menuItems","subComponent","_sfc_main$4","_a","_b","menuItem","_d","_c","markRaw","activeMenuItem","countChanged","numberChanged","activeItemName","setHash","elRef","resizeObserver","onMounted","onUnmounted","withCtx","createElementVNode","_hoisted_1$1","_hoisted_2","_hoisted_4","_cache","$event","createTextVNode","toDisplayString","uid","delHash","componentRef","isShortable","_hoisted_1","isSubtitle"],"mappings":";;;;;;;;;;AAQA,MAAAA,IAAA,CAAAC,GAAAC,MAGC,OAFA,OAAAD,CAAA,CAEA,IAAAC,CAAA,IAQDC,KAAA,CAAAF,GAAAG,MAAA;AAEC,MAAA,CAAAA,EAAA,IAAA;AAEA,QAAAC,IAAAL,EAAAC,GAAAG,EAAA,GAAA;AAEA,MAAA;AACC,UAAAE,IAAA,KAAA,MAAA,aAAA,QAAAD,CAAA,CAAA;AAEA,IAAA,OAAAC,KAAA,OAAAF,EAAAH,CAAA,MACCG,EAAAH,CAAA,IAAAK;AAAA,EACD,QAAA;AAEA,YAAA,KAAA,IAAA,MAAA,kBAAAD,CAAA,sBAAA,CAAA;AAAA,EAA+E;AAEjF,GAOAE,KAAA,CAAAN,GAAAG,MAAA;AAEC,MAAA,CAAAA,EAAA,IAAA;AAEA,QAAAC,IAAAL,EAAAC,GAAAG,EAAA,GAAA;AAEA,EAAAI,EAAA,MAAAJ,EAAAH,CAAA,GAAA,MAAA;AACC,iBAAA,QAAAI,GAAA,KAAA,UAAAD,EAAAH,CAAA,CAAA,CAAA;AAAA,EAAsE,GAAA,EAAA,WAAA,GAAA,CAAA;AAExE,GAEAQ,IAAA;AAAA,EAAe,iBAAAN;AAAA,EACd,qBAAAI;AAED,GC/CAG,IAAA,oBAAA,IAAA;AAEA,iBAAA,YAAA,CAAAC,MAAA;AACC,EAAAD,EAAA,QAAA,CAAAE,MAAAA,EAAAD,CAAA,CAAA;AACD,CAAA;AAEO,MAAAE,IAAA,OAAA,GAKAC,KAAA,CAAAC,GAAAC,MAAA;AACN,QAAAZ,IAAAa,GAAAJ,GAAA,MAAA;AACC,UAAAK,IAAAC,EAAA,MAAAJ,EAAA,mBAAAK,EAAA,MAAA,QAAA,GACAC,IAAAF,EAAA,MAAAJ,EAAA,OAAA,GACAO,IAAAC,EAAA,EAAA,GAEAC,IAAAD,EAAA,MAAA,GACAE,IAAAF,EAAA,EAAA;AAEA,WAAA;AAAA,MAAO,iBAAAL;AAAA,MACN,SAAAG;AAAA,MACA,SAAAC;AAAA,MACA,gBAAAN;AAAA,MACgB,WAAAQ;AAAA,MAChB,YAAAC;AAAA,IACA;AAAA,EACD,GAAAV,EAAA,OAAA;AAGD,MAAAA,EAAA,aAAA;AACC,UAAAd,IAAA;AAEA,IAAAQ,EAAA,gBAAAR,GAAAG,CAAA,GACAK,EAAA,oBAAAR,GAAAG,CAAA;AAAA,EAAsD;AAGvD,MAAAA,EAAA,KAAA;AACC,UAAAQ,IAAA,CAAAc,MAAA;AACC,MAAAV,EAAA,QAAAW,EAAAvB,EAAA,GAAA;AAAA,IAAgC;AAGjC,IAAAM,EAAA,IAAAE,CAAA;AAAA,EAAsC;AAGvC,SAAAR;AACD,GAKOwB,IAAA,MAAAC,GAAAhB,CAAA;;;;;;;;;;;;;;ACpDP,UAAAE,IAAAe,GAKA1B,IAAAwB,EAAA,GAEAG,IAAAZ,EAAA,MAECJ,EAAA,QAAAX,EAAA,MACC4B,GAAA5B,EAAA,KAAAW,EAAA,IAAA,IAGDA,EAAA,IAAa,GAGdkB,IAAAd,EAAA,MACCf,EAAA,kBACC8B,IAGDH,IAAA,MAAA,QAAoB,GAMrBI,IAAA,CAAAxB,MAAA;AAEC,MAAA,CAAAI,EAAA,QAAAgB,EAAA,SACCpB,EAAA,eAAA,GAGDI,EAAA,SACCX,EAAA,iBAAAW,EAAA;AAAA,IACD;sBAKAqB,EAAA,GAAAC,EAAAC,EAAAL,EAAA,KAAA,GAAA;AAAA,MACa,QAAA;AAAA,MACL,OAAAM,EAAA;AAAA,QACD,yBAAA,CAAAC,EAAApC,CAAA,EAAA;AAAA,QAAyC,cAAAqC,EAAA,QAAAD,EAAApC,CAAA,EAAA,mBAAAqC,EAAA;AAAA,QAAqEC,gBAAAA,EAAAA;AAAAA,QAA2BC,oBAAAA;AAAAA;;MAMxI,iBAAAF,EAAA,QAAA;AAAA,MACiB,UAAAA,EAAA,YAAA;AAAA,MACD,SAAAN;AAAA,IACtB,GAAA;AAAA;QAEwDK,EAAApC,CAAA,EAAA,kBAAAwC,EAAAH,EAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA,IAAAA,EAAA,OAAA,WAAA,CAAAD,EAAApC,CAAA,EAAA,WAAAgC,EAAA,GAAAS,EAAA,QAAAC,IAAA;AAAA,UAOlDF,EAAAH,EAAA,QAAA,SAAA;AAAA,QADsB,CAAA,KAAAM,EAAA,IAAA,EAAA;AAAA;;;;IC3DxBC,IAAA,CAAAxB,OACNA,KAAA,gBAAAA,EAAA,UAAA,2BAAA,EAAAA,KAAA,QAAAA,EAAA,kBAQMyB,KAAA,OAAAzB,GAAA0B,MAAA;AACN,GAAA1B,KAAA,gBAAAA,EAAA,UAAA,4BACAA,KAAA,QAAAA,EAAA,oBAEAA,EAAA,cAAA,GAEA,MAAA2B,GAAA,MACCD,EAAA,KAAAF,EAAAxB,CAAA,GAAuD,GAAA;AAEzD;;;;;;;;;;;;;;ACbA,UAAA4B,IAAAC,EAAAvB,GAAA,WAAA,GAEA1B,IAAAwB,EAAA,GAEA0B,IAAAC,EAAA,GAGAC,IAAA,oBAAA,IAAA,GAGAC,IAAA,MAAA;AACC,UAAA,CAAAH,EAAA,QAAA;AAEA,YAAA9B,IAAA8B,EAAA,QAAA,CAAA,CAAA,EAAA,KAAA,CAAAI,MAAAA,EAAA,QAAA,OAAA;AACA,MAAAlC,KAEAmC,EAAAnC,EAAA,QAAA;AAAA,IAA6C,GAI9CmC,IAAA,CAAAC,MAAA;AACC,MAAAA,EAAA,QAAA,CAAAC,MAAA;;AAEC,YAAAA,EAAA,KAAA,UAAAA,EAAA,KAAA,WAAAC,EAAA,OAAA;AAGA,YAAA,CAAAD,EAAA,KAAA,UAAA,OAAAA,EAAA,YAAA,UAAA;AACC,UAAAF,EAAAE,EAAA,QAAA;AAEA;AAAA,QAAA;AAGD,YAAA,GAAAE,IAAAF,EAAA,UAAA,QAAAE,EAAA,UAAAC,IAAAH,EAAA,UAAA,QAAAG,EAAA,SAAA;AAEA,cAAAC,IAAA;AAAA,UAA2B,SAAAC,KAAAC,IAAAN,EAAA,UAAA,YAAA,gBAAAK,EAAA,KAAAC,GAAA,GAAA,UAAA,KAAA;AAAA,UAC4C,MAAAN,EAAA,MAAA;AAAA,UAC7C,WAAAA,EAAA,MAAA,YAAAO,EAAAP,EAAA,MAAA,SAAA,IAAAC,EAAA,MAAA,UAAA;AAAA,UAC0F,YAAAD,EAAA,MAAA,cAAAC,EAAA,MAAA,WAAA;AAAA,QACpC;AAGhF,QAAAN,EAAA,IAAAK,EAAA,MAAA,MAAAI,CAAA;AAAA,MAAoD,CAAA;AAAA,IACpD,GASFI,IAAA9C,EAAA,IAAA;AAKA,QAAA+C,IAAA;AAOA,IAAA9D;AAAA,MAAA,MAAAJ,EAAA;AAAA,MACa,YAAA;AAEX,cAAAmE,IAAA,EAAAD;AAMA,YAJAd,EAAA,SAAA,KACCC,EAAA,GAGDD,EAAA,SAAA,GAAA;AACC,UAAApD,EAAA,iBAAA;AAEA;AAAA,QAAA;AAMD,YAHAiE,EAAA,QAAAb,EAAA,IAAApD,EAAA,cAAA,KAAA,MAGA,CAAAiE,EAAA,SAAAjE,EAAA,KAAA;AACC,gBAAAoE,IAAA7C,EAAAvB,EAAA,GAAA;AAIA,cAFAiE,EAAA,QAAAb,EAAA,IAAAgB,CAAA,KAAA,MAEAH,EAAA,OAAA;AACC,YAAAjE,EAAA,iBAAAoE;AAEA;AAAA,UAAA;AAAA,QACD;AAID,YAAA,CAAAH,EAAA,OAAA;AACC,UAAAjE,EAAA,iBAAAoD,EAAA,KAAA,EAAA,KAAA,EAAA;AAEA;AAAA,QAAA;AAID,YAAAa,EAAA,MAAA,cAAAjE,EAAA,WAAA;AACC,UAAAgD,EAAA,QAAA;AAEA;AAAA,QAAA;AAgBD,QAbAhD,EAAA,OAAAqE,GAAArE,EAAA,KAAAA,EAAA,gBAAA,EAAA,GAGAgD,EAAA,QAAA,IAOA,MAAAH,GAAAoB,EAAA,MAAA,WAAA,MAAAE,MAAAD,CAAA,GAGAC,MAAAD,MAIAlE,EAAA,aAAAiE,EAAA,MAAA,YACAjE,EAAA,YAAAiE,EAAA,MAAA,WAEAA,EAAA,SAAA,CAAAjE,EAAA,aACC,QAAA,KAAA,qBAAAA,EAAA,cAAA,wDAAAA,EAAA,cAAA,GAAA;AAAA,MACD;AAAA,MACD,EAAA,WAAA,GAAA;AAAA,IACkB;AAGnB,UAAAsE,IAAAnD,EAAA;AACA,QAAAoD;AAEA,WAAAC,EAAA,MAAA;AACC,MAAAD,IAAA,IAAA,eAAA,MAAA;AACC,QAAAD,EAAA,MAAA,cAAA,MAAA,YAAA,sCAAAA,EAAA,MAAA,eAAA,IAAA;AAAA,MAAiH,CAAA,GAGlHC,EAAA,QAAAD,EAAA,KAAA;AAAA,IAAkC,CAAA,GAGnCG,EAAA,MAAA;AACC,MAAAF,EAAA,WAAA;AAAA,IAA0B,CAAA;MAwDpB,SAAA;AAAA,MAlDD,KAAAD;AAAA,MAAA,OAAAnC,EAAA;AAAA,QACE,qBAAA;AAAA;QAA2E,+BAAAC,EAAApC,CAAA,EAAA;AAAA,QAAyD,2BAAAoC,EAAApC,CAAA,EAAA,WAAA,CAAAoC,EAAApC,CAAA,EAAA;AAAA,MAAuE,CAAA;AAAA;;QA4BtM,QAAA0E,EAAA,MAAA;AAAA,UANHC,EAAA,OAAAC,IAAA;AAAA,YAAAX,EAAA,SAAAjC,EAAA,GAAAS,EAAA,OAAA;AAAA,cAHC,KAAA;AAAA;cANC,iBAAAwB,EAAA,MAAA;AAAA,YACyB,GAAA;AAAA;YAGP,GAAA,GAAAY,EAAA,KAAAlC,EAAA,IAAA,EAAA;AAAA;cAIwC,OAAA;AAAA,cAAtD,iBAAA;AAAA,YAA4C,GAAA,MAAA,EAAA;AAAA;;;UAK3CH,EAAAH,EAAA,QAAA,SAAA;AAAA,QAAA,CAAA;AAAA;;QAsBJsC,EAAA,OAAAG,IAAA;AAAA,UAdJtC,EAAAH,EAAA,QAAA,SAAA;AAAA,QADQ,CAAA;AAAA;UAcRA,EAAA,eAAAL,EAAA,GAAAC,EAAAyB,GAAA;AAAA,YADc,KAAA;AAAA;YAJE,SAAAqB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAA5C,EAAApC,CAAA,EAAA,UAAA,CAAAoC,EAAApC,CAAA,EAAA;AAAA,UACW,GAAA;AAAA;cAEMiF,EAAAC,EAAA9C,EAAApC,CAAA,EAAA,UAAA,KAAA,UAAA,GAAA,CAAA;AAAA,YAArB,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACzMrB,UAAAW,IAAAe,GAKAd,IAAAqC,EAAAvB,GAAA,YAAA,GAEA1B,IAAAU,GAAAC,GAAAC,CAAA,GAEAuE,IAAA,KAAA,OAAA;AAEA,IAAAxE,EAAA,WAAAK,EAAA,MAAA,0BAAA,IAAAmE,GAAA,wBAAA,GAEAV,EAAA,MAAA;AACC,MAAA9D,EAAA,WAAAK,EAAA,MAAA,0BAAA,OAAAmE,CAAA,GAEAnF,EAAA,OAAAoF,GAAApF,EAAA,KAAAA,EAAA,gBAAA,EAAA;AAAA,IAA4D,CAAA;AAG7D,UAAAqF,IAAAlE,EAAA,GACA6B,IAAA7B,EAAA,EAAA;AAEA,WAAAf,EAAA,CAAAiF,GAAA,MAAArF,EAAA,SAAA,GAAA,MAAA;AACC,MAAAgD,EAAA,QAAAJ,EAAA5C,EAAA,SAAA;AAAA,IAAyD,GAAA,EAAA,WAAA,GAAA,CAAA;MAoCnD,OAAAmC,EAAA;AAAA,QA9BC,gBAAA;AAAA;QAA8D,wBAAAC,EAAApC,CAAA,EAAA;AAAA,MAA0C,CAAA;AAAA;;QAY/F,aAAAqC,EAAA;AAAA,QALAiD,WAAAA,EAAAA;AAAAA,QACK,sBAAAP,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAhC,EAAA,QAAAgC;AAAA,MAAS,GAAA;AAAA;UAGHxC,EAAAH,EAAA,QAAA,MAAA;AAAA,QAAA,CAAA;AAAA;;;QAkBpB,OAAAF,EAAA;AAAA,UAdC,yBAAA;AAAA;UAA8E,sCAAA,CAAAC,EAAApC,CAAA,EAAA;AAAA,QAA4D,CAAA;AAAA;;;WAanIgC,EAAA,GAAAC,EAAAC,EAAAE,EAAApC,CAAA,EAAA,SAAA,GAAA;AAAA,YAFS,SAAA;AAAA,YADhB,KAAAqF;AAAA,UAAA,GAAA,MAAA,GAAA;AAAA;;;;aC3DHE,KAAA,EAAA,OAAA,6BAAA;;AAAL,SAAAvD,EAAA,GAAAS,EAAA,OAAA8C,EAAA;;;;;;;;ACGD,UAAAvF,IAAAwB,EAAA;qBAKQY,EAAApC,CAAA,EAAA,mBAAAgC,EAAA,GAAAC,EAAAG,EAAAN,CAAA,GAAA;AAAA,MAIY,KAAA;AAAA;IAHb,GAAA;AAAA;QAEQU,EAAAH,EAAA,QAAA,SAAA;AAAA,MAAA,CAAA;AAAA;;MAaR,KAAA;AAAA;QANC,0BAAA;AAAA;MAA6EmD,CAAAA;AAAAA;;IAKtE,GAAA,CAAA;AAAA;;"}
|
package/utils/check.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","./url.amd"],function(b,i,t){"use strict";if(typeof d>"u")var d=window.Vue;const l="ru|com|abbott|ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|asia|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|boo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|coop|cr|cs|gb|cu|cv|cx|cy|cyou|cz|dd|de|dj|dk|dm|do|dz|ec|eco|edu|ee|eg|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|icu|id|ie|il|im|in|int|info|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|live|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mh|mil|mg|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|ng|ni|nl|no|np|nr|nu|nz|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|rs|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vn|vu|wf|ws|ye|yt|za|zm|zw|academy|agency|art|arte|audible|audio|band|bargains|bike|blog|boutique|builders|buzz|cab|camera|camp|cam|careers|center|cheap|clothing|club|codes|coffee|company|computer|condos|construction|contractors|cool|cruises|dance|dating|democrat|diamonds|directory|domains|education|email|enterprises|equipment|estate|events|expert|exposed|farm|flights|florist|foundation|futbol|gallery|gal|gift|glass|graphics|guitars|guru|holdings|holiday|house|immobilien|kitchen|land|lighting|limo|link|maison|management|marketing|menu|men|moe|ninja|partners|photo|photography|photos|pics|plumbing|plus|productions|properties|recipes|rentals|repair|review|reviews|sandvik|sexy|shoes|singles|social|solar|solutions|support|systems|tattoo|technology|tienda|tips|today|training|travel|vacations|ventures|viajes|villas|voyage|watch|works|zone|xxx|ads|associates|booking|business|ceo|ecom|forum|gives|global|gmbh|inc|institute|insure|lifeinsurance|llc|llp|ltd|ltda|mba|new|news|ngo|press|sarl|services|srl|studio|trade|trading|wiki|xin|auction|bid|blackfriday|buy|capital|charity|claims|compare|coupon|coupons|deal|dealer|deals|delivery|discount|exchange|flowers|free|furniture|gifts|gripe|grocery|jewelry|kaufen|lotto|parts|promo|qpon|racing|rsvp|sale|salon|save|seat|shop|shopping|silk|spa|store|supplies|supply|taxi|tickets|tires|tools|toys|watches|college|courses|degree|ged|phd|prof|scholarships|school|schule|science|shiksha|study|translations|university|beer|cafe|catering|cityeats|cooking|diet|food|organic|pet|pizza|pub|rest|restaurant|soy|wine|blue|circle|dot|duck|fast|final|finish|fire|fun|fyi|goo|got|green|here|horse|how|ieee|jot|joy|like|limited|makeup|meme|mint|moi|moto|now|nowruz|ong|onl|ooo|page|pars|pid|pink|play|plus|read|red|reise|reisen|rocks|safe|safety|seek|select|sky|smile|spot|sucks|talk|top|trust|uno|vin|vodka|web|wed|win|winners|wow|wtf|xyz|yamaxun|you|zero|abudhabi|africa|alsace|amsterdam|aquitaine|arab|barcelona|bayern|berlin|boston|broadway|brussels|budapest|bzh|capetown|cologne|corsica|country|cymru|desi|doha|dubai|durban|earth|eus|gent|hamburg|helsinki|international|irish|istanbul|joburg|kiwi|koeln|kyoto|london|madrid|market|melbourne|miami|monster|nagoya|nrw|nyc|okinawa|osaka|paris|persiangulf|place|quebec|rio|roma|ryukyu|saarland|scot|shia|show|stockholm|stream|swiss|sydney|taipei|tatar|thai|tirol|tokyo|vegas|vlaanderen|wales|wanggou|wien|world|yokohama|zuerich|clinic|dental|dentist|docs|doctor|health|healthcare|hiv|hospital|med|medical|pharmacy|physio|rehab|surgery|auto|autos|bio|boats|cars|cleaning|consulting|design|energy|industries|motorcycles|adult|baby|beauty|beknown|best|bet|bingo|bom|cards|community|contact|dad|diy|dog|express|family|fan|fans|fashion|garden|gay|giving|group|guide|hair|halal|hiphop|imamat|jetzt|kid|kids|kim|kinder|latino|lgbt|lifestyle|style|living|love|luxe|luxury|moda|mom|navy|pets|poker|porn|republican|vip|vision|vote|voting|voto|wedding|feedback|film|media|mov|movie|movistar|music|pictures|radio|show|song|theater|theatre|tunes|video|accountant|accountants|analytics|bank|banque|broker|cash|cashbackbonus|cfd|cpa|credit|creditcard|finance|financial|financialaid|fund|gold|gratis|investments|ira|loan|loans|markets|money|mortgage|mutual|mutualfunds|pay|reit|prime|security|yun|abogado|airforce|archi|architect|army|attorney|author|dds|engineer|engineering|esq|law|lawyer|legal|retirement|vet|apartments|casa|case|forsale|haus|homes|lease|property|realestate|realtor|realty|rent|room|baseball|basketball|coach|cricket|fish|fishing|fit|fitness|football|game|games|golf|hockey|juegos|mls|rodeo|rugby|run|ski|soccer|sport|sports|spreadbetting|surf|team|tennis|yoga|app|box|chat|click|cloud|comsec|bot|data|date|dev|digital|download|drive|call|fail|help|host|hosting|map|mobile|network|online|original-tor|phone|report|search|secure|site|software|space|storage|tube|webcam|webs|website|weibo|zip|active|casino|christmas|hangout|hoteis|hotel|hoteles|hotels|meet|party|tech|tour|tours|bible|church|catholic|faith|indians|islam|ismaili|memorial|moscow|actor|bar|black|build|care|city|direct|immo|ink|life|tax|town|work|one|insure|saxo|sex|shell|weber|yandex|rip|car|ist|lat|lol|bond|om|skin|day|quest|wang|sbs|dhl|ing|yachts|gdn|foo",u="рф|дети|онлайн|сайт|укр|католик|ком|москва|орг|рус|бел|бг|ישראל";let s="";const m=()=>s||(s=u.split("|").map(e=>t.toPuny(e)).join("|"),s),n=()=>{const e=`(?:${l})`,a=`(?:${m()})`;return`(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:${e}|${a})\\/?`},g=(e,a=!1)=>{e+="",e=e.toLowerCase();let o="^[-0-9a-z_\\.\\+]+@([-0-9a-z_^\\.]+\\.)+[a-z]{2,20}$";return a&&(o="^[-0-9a-zа-яё_\\.\\+]+@([-0-9a-zа-яё_^\\.]+\\.)+[a-zа-яё]{2,20}$"),new RegExp(o).test(e)},p=(e,a=!1)=>{if(e=e.trim(),e.includes(" "))return!1;const o=e.replace(/^(https?:\/\/)?(www\.)?([^/]+).*/,"$3");return a&&c(o)?!0:r(o)},r=e=>(e=t.toPuny(e),new RegExp(`^${n()}$`).test(e)),c=e=>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*$))").test(e);i.getDomainRegexp=n,i.isDomain=r,i.isEmail=g,i.isIp=c,i.validUrl=p,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
define(["require","exports","./url.amd"],(function(b,i,t){"use strict";if(typeof d>"u")var d=window.Vue;const l="ru|com|abbott|ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|asia|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|boo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|coop|cr|cs|gb|cu|cv|cx|cy|cyou|cz|dd|de|dj|dk|dm|do|dz|ec|eco|edu|ee|eg|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|icu|id|ie|il|im|in|int|info|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|live|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mh|mil|mg|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|ng|ni|nl|no|np|nr|nu|nz|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|rs|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vn|vu|wf|ws|ye|yt|za|zm|zw|academy|agency|art|arte|audible|audio|band|bargains|bike|blog|boutique|builders|buzz|cab|camera|camp|cam|careers|center|cheap|clothing|club|codes|coffee|company|computer|condos|construction|contractors|cool|cruises|dance|dating|democrat|diamonds|directory|domains|education|email|enterprises|equipment|estate|events|expert|exposed|farm|flights|florist|foundation|futbol|gallery|gal|gift|glass|graphics|guitars|guru|holdings|holiday|house|immobilien|kitchen|land|lighting|limo|link|maison|management|marketing|menu|men|moe|ninja|partners|photo|photography|photos|pics|plumbing|plus|productions|properties|recipes|rentals|repair|review|reviews|sandvik|sexy|shoes|singles|social|solar|solutions|support|systems|tattoo|technology|tienda|tips|today|training|travel|vacations|ventures|viajes|villas|voyage|watch|works|zone|xxx|ads|associates|booking|business|ceo|ecom|forum|gives|global|gmbh|inc|institute|insure|lifeinsurance|llc|llp|ltd|ltda|mba|new|news|ngo|press|sarl|services|srl|studio|trade|trading|wiki|xin|auction|bid|blackfriday|buy|capital|charity|claims|compare|coupon|coupons|deal|dealer|deals|delivery|discount|exchange|flowers|free|furniture|gifts|gripe|grocery|jewelry|kaufen|lotto|parts|promo|qpon|racing|rsvp|sale|salon|save|seat|shop|shopping|silk|spa|store|supplies|supply|taxi|tickets|tires|tools|toys|watches|college|courses|degree|ged|phd|prof|scholarships|school|schule|science|shiksha|study|translations|university|beer|cafe|catering|cityeats|cooking|diet|food|organic|pet|pizza|pub|rest|restaurant|soy|wine|blue|circle|dot|duck|fast|final|finish|fire|fun|fyi|goo|got|green|here|horse|how|ieee|jot|joy|like|limited|makeup|meme|mint|moi|moto|now|nowruz|ong|onl|ooo|page|pars|pid|pink|play|plus|read|red|reise|reisen|rocks|safe|safety|seek|select|sky|smile|spot|sucks|talk|top|trust|uno|vin|vodka|web|wed|win|winners|wow|wtf|xyz|yamaxun|you|zero|abudhabi|africa|alsace|amsterdam|aquitaine|arab|barcelona|bayern|berlin|boston|broadway|brussels|budapest|bzh|capetown|cologne|corsica|country|cymru|desi|doha|dubai|durban|earth|eus|gent|hamburg|helsinki|international|irish|istanbul|joburg|kiwi|koeln|kyoto|london|madrid|market|melbourne|miami|monster|nagoya|nrw|nyc|okinawa|osaka|paris|persiangulf|place|quebec|rio|roma|ryukyu|saarland|scot|shia|show|stockholm|stream|swiss|sydney|taipei|tatar|thai|tirol|tokyo|vegas|vlaanderen|wales|wanggou|wien|world|yokohama|zuerich|clinic|dental|dentist|docs|doctor|health|healthcare|hiv|hospital|med|medical|pharmacy|physio|rehab|surgery|auto|autos|bio|boats|cars|cleaning|consulting|design|energy|industries|motorcycles|adult|baby|beauty|beknown|best|bet|bingo|bom|cards|community|contact|dad|diy|dog|express|family|fan|fans|fashion|garden|gay|giving|group|guide|hair|halal|hiphop|imamat|jetzt|kid|kids|kim|kinder|latino|lgbt|lifestyle|style|living|love|luxe|luxury|moda|mom|navy|pets|poker|porn|republican|vip|vision|vote|voting|voto|wedding|feedback|film|media|mov|movie|movistar|music|pictures|radio|show|song|theater|theatre|tunes|video|accountant|accountants|analytics|bank|banque|broker|cash|cashbackbonus|cfd|cpa|credit|creditcard|finance|financial|financialaid|fund|gold|gratis|investments|ira|loan|loans|markets|money|mortgage|mutual|mutualfunds|pay|reit|prime|security|yun|abogado|airforce|archi|architect|army|attorney|author|dds|engineer|engineering|esq|law|lawyer|legal|retirement|vet|apartments|casa|case|forsale|haus|homes|lease|property|realestate|realtor|realty|rent|room|baseball|basketball|coach|cricket|fish|fishing|fit|fitness|football|game|games|golf|hockey|juegos|mls|rodeo|rugby|run|ski|soccer|sport|sports|spreadbetting|surf|team|tennis|yoga|app|box|chat|click|cloud|comsec|bot|data|date|dev|digital|download|drive|call|fail|help|host|hosting|map|mobile|network|online|original-tor|phone|report|search|secure|site|software|space|storage|tube|webcam|webs|website|weibo|zip|active|casino|christmas|hangout|hoteis|hotel|hoteles|hotels|meet|party|tech|tour|tours|bible|church|catholic|faith|indians|islam|ismaili|memorial|moscow|actor|bar|black|build|care|city|direct|immo|ink|life|tax|town|work|one|insure|saxo|sex|shell|weber|yandex|rip|car|ist|lat|lol|bond|om|skin|day|quest|wang|sbs|dhl|ing|yachts|gdn|foo",u="рф|дети|онлайн|сайт|укр|католик|ком|москва|орг|рус|бел|бг|ישראל";let s="";const m=()=>s||(s=u.split("|").map(e=>t.toPuny(e)).join("|"),s),n=()=>{const e=`(?:${l})`,a=`(?:${m()})`;return`(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:${e}|${a})\\/?`},g=(e,a=!1)=>{e+="",e=e.toLowerCase();let o="^[-0-9a-z_\\.\\+]+@([-0-9a-z_^\\.]+\\.)+[a-z]{2,20}$";return a&&(o="^[-0-9a-zа-яё_\\.\\+]+@([-0-9a-zа-яё_^\\.]+\\.)+[a-zа-яё]{2,20}$"),new RegExp(o).test(e)},p=(e,a=!1)=>{if(e=e.trim(),e.includes(" "))return!1;const o=e.replace(/^(https?:\/\/)?(www\.)?([^/]+).*/,"$3");return a&&c(o)?!0:r(o)},r=e=>(e=t.toPuny(e),new RegExp(`^${n()}$`).test(e)),c=e=>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*$))").test(e);i.getDomainRegexp=n,i.isDomain=r,i.isEmail=g,i.isIp=c,i.validUrl=p,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=check.amd.js.map
|
package/utils/check.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.amd.js","sources":["../../src/core/utils/check.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"check.amd.js","sources":["../../src/core/utils/check.ts"],"sourcesContent":["/**\n * Функции для проверки данных\n * @packageDocumentation\n */\n\nimport { toPuny } from '@/core/utils/url';\n\nconst domainASCII: string = 'ru|com|abbott|ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|asia|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|boo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|coop|cr|cs|gb|cu|cv|cx|cy|cyou|cz|dd|de|dj|dk|dm|do|dz|ec|eco|edu|ee|eg|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|icu|id|ie|il|im|in|int|info|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|live|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mh|mil|mg|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|ng|ni|nl|no|np|nr|nu|nz|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|rs|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vn|vu|wf|ws|ye|yt|za|zm|zw|academy|agency|art|arte|audible|audio|band|bargains|bike|blog|boutique|builders|buzz|cab|camera|camp|cam|careers|center|cheap|clothing|club|codes|coffee|company|computer|condos|construction|contractors|cool|cruises|dance|dating|democrat|diamonds|directory|domains|education|email|enterprises|equipment|estate|events|expert|exposed|farm|flights|florist|foundation|futbol|gallery|gal|gift|glass|graphics|guitars|guru|holdings|holiday|house|immobilien|kitchen|land|lighting|limo|link|maison|management|marketing|menu|men|moe|ninja|partners|photo|photography|photos|pics|plumbing|plus|productions|properties|recipes|rentals|repair|review|reviews|sandvik|sexy|shoes|singles|social|solar|solutions|support|systems|tattoo|technology|tienda|tips|today|training|travel|vacations|ventures|viajes|villas|voyage|watch|works|zone|xxx|ads|associates|booking|business|ceo|ecom|forum|gives|global|gmbh|inc|institute|insure|lifeinsurance|llc|llp|ltd|ltda|mba|new|news|ngo|press|sarl|services|srl|studio|trade|trading|wiki|xin|auction|bid|blackfriday|buy|capital|charity|claims|compare|coupon|coupons|deal|dealer|deals|delivery|discount|exchange|flowers|free|furniture|gifts|gripe|grocery|jewelry|kaufen|lotto|parts|promo|qpon|racing|rsvp|sale|salon|save|seat|shop|shopping|silk|spa|store|supplies|supply|taxi|tickets|tires|tools|toys|watches|college|courses|degree|ged|phd|prof|scholarships|school|schule|science|shiksha|study|translations|university|beer|cafe|catering|cityeats|cooking|diet|food|organic|pet|pizza|pub|rest|restaurant|soy|wine|blue|circle|dot|duck|fast|final|finish|fire|fun|fyi|goo|got|green|here|horse|how|ieee|jot|joy|like|limited|makeup|meme|mint|moi|moto|now|nowruz|ong|onl|ooo|page|pars|pid|pink|play|plus|read|red|reise|reisen|rocks|safe|safety|seek|select|sky|smile|spot|sucks|talk|top|trust|uno|vin|vodka|web|wed|win|winners|wow|wtf|xyz|yamaxun|you|zero|abudhabi|africa|alsace|amsterdam|aquitaine|arab|barcelona|bayern|berlin|boston|broadway|brussels|budapest|bzh|capetown|cologne|corsica|country|cymru|desi|doha|dubai|durban|earth|eus|gent|hamburg|helsinki|international|irish|istanbul|joburg|kiwi|koeln|kyoto|london|madrid|market|melbourne|miami|monster|nagoya|nrw|nyc|okinawa|osaka|paris|persiangulf|place|quebec|rio|roma|ryukyu|saarland|scot|shia|show|stockholm|stream|swiss|sydney|taipei|tatar|thai|tirol|tokyo|vegas|vlaanderen|wales|wanggou|wien|world|yokohama|zuerich|clinic|dental|dentist|docs|doctor|health|healthcare|hiv|hospital|med|medical|pharmacy|physio|rehab|surgery|auto|autos|bio|boats|cars|cleaning|consulting|design|energy|industries|motorcycles|adult|baby|beauty|beknown|best|bet|bingo|bom|cards|community|contact|dad|diy|dog|express|family|fan|fans|fashion|garden|gay|giving|group|guide|hair|halal|hiphop|imamat|jetzt|kid|kids|kim|kinder|latino|lgbt|lifestyle|style|living|love|luxe|luxury|moda|mom|navy|pets|poker|porn|republican|vip|vision|vote|voting|voto|wedding|feedback|film|media|mov|movie|movistar|music|pictures|radio|show|song|theater|theatre|tunes|video|accountant|accountants|analytics|bank|banque|broker|cash|cashbackbonus|cfd|cpa|credit|creditcard|finance|financial|financialaid|fund|gold|gratis|investments|ira|loan|loans|markets|money|mortgage|mutual|mutualfunds|pay|reit|prime|security|yun|abogado|airforce|archi|architect|army|attorney|author|dds|engineer|engineering|esq|law|lawyer|legal|retirement|vet|apartments|casa|case|forsale|haus|homes|lease|property|realestate|realtor|realty|rent|room|baseball|basketball|coach|cricket|fish|fishing|fit|fitness|football|game|games|golf|hockey|juegos|mls|rodeo|rugby|run|ski|soccer|sport|sports|spreadbetting|surf|team|tennis|yoga|app|box|chat|click|cloud|comsec|bot|data|date|dev|digital|download|drive|call|fail|help|host|hosting|map|mobile|network|online|original-tor|phone|report|search|secure|site|software|space|storage|tube|webcam|webs|website|weibo|zip|active|casino|christmas|hangout|hoteis|hotel|hoteles|hotels|meet|party|tech|tour|tours|bible|church|catholic|faith|indians|islam|ismaili|memorial|moscow|actor|bar|black|build|care|city|direct|immo|ink|life|tax|town|work|one|insure|saxo|sex|shell|weber|yandex|rip|car|ist|lat|lol|bond|om|skin|day|quest|wang|sbs|dhl|ing|yachts|gdn|foo';\nconst domainUnicode: string = 'рф|дети|онлайн|сайт|укр|католик|ком|москва|орг|рус|бел|бг|ישראל';\nlet punyDomainUnicode = '';\n\n/**\n * Получить строку национализированных доменов верхнего уровня в ASCII формате\n */\nconst getPunyDomainUnicode = (): string => {\n\tif (punyDomainUnicode) return punyDomainUnicode;\n\n\tpunyDomainUnicode = domainUnicode.split('|').map(domain => toPuny(domain)).join('|');\n\n\treturn punyDomainUnicode;\n};\n\n/**\n * Получить строку с регулярным выражение для домена\n */\nexport const getDomainRegexp = (): string => {\n\tconst regexpASCII = `(?:${domainASCII})`;\n\tconst regexpUnicode = `(?:${getPunyDomainUnicode()})`;\n\n\treturn `(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+(?:${regexpASCII}|${regexpUnicode})\\\\/?`;\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()}$`);\n\n\treturn regexp.test(domain);\n};\n\n/**\n * Проверка валидности ip\n */\nexport const isIp = (ip: string): boolean => {\n\tconst regexp = new RegExp(\n\t\t'((^\\\\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"],"names":["punyDomainUnicode","getDomainRegexp","isEmail","email","rus_allow","emailTest","validUrl","url","allowIP","isDomain","domain","utils_url","isIp","ip"],"mappings":"ynKAeCA,iDAIAA,GAMMC,EAAA,IAAA,mGAKP,EAOOC,EAAA,CAAAC,EAAAC,EAAA,KAAA,OAGND,EAAAA,EAAA,YAAA,gJAQA,IAAA,OAAAE,CAAA,EACA,KAAAF,CAAA,CACD,EAKOG,EAAA,CAAAC,EAAAC,EAAA,KAAA,CAEN,GADAD,EAAAA,EAAA,KAAA,EACAA,EAAA,SAAA,GAAA,EACC,MAAA,gFAODE,EAAAC,CAAA,CACD,EAKOD,EAAAC,IACNA,EAAAC,EAAA,OAAAD,CAAA,EAEA,IAAA,OAAA,IAAAT,EAAA,CAAA,GAAA,EAEA,KAAAS,CAAA,GAMME,EAAAC,GACN,IAAA,2vCAGA,KAAAA,CAAA"}
|
package/utils/check.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '../core/utils/check'
|
|
1
|
+
export * from '../src/core/utils/check'
|
|
2
2
|
export {}
|
package/utils/check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sources":["../../src/core/utils/check.ts"],"sourcesContent":["/**\
|
|
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\nconst domainASCII: string = 'ru|com|abbott|ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|asia|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|boo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|coop|cr|cs|gb|cu|cv|cx|cy|cyou|cz|dd|de|dj|dk|dm|do|dz|ec|eco|edu|ee|eg|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|icu|id|ie|il|im|in|int|info|io|iq|ir|is|it|je|jm|jo|jobs|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|live|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mh|mil|mg|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|ng|ni|nl|no|np|nr|nu|nz|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|rs|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vn|vu|wf|ws|ye|yt|za|zm|zw|academy|agency|art|arte|audible|audio|band|bargains|bike|blog|boutique|builders|buzz|cab|camera|camp|cam|careers|center|cheap|clothing|club|codes|coffee|company|computer|condos|construction|contractors|cool|cruises|dance|dating|democrat|diamonds|directory|domains|education|email|enterprises|equipment|estate|events|expert|exposed|farm|flights|florist|foundation|futbol|gallery|gal|gift|glass|graphics|guitars|guru|holdings|holiday|house|immobilien|kitchen|land|lighting|limo|link|maison|management|marketing|menu|men|moe|ninja|partners|photo|photography|photos|pics|plumbing|plus|productions|properties|recipes|rentals|repair|review|reviews|sandvik|sexy|shoes|singles|social|solar|solutions|support|systems|tattoo|technology|tienda|tips|today|training|travel|vacations|ventures|viajes|villas|voyage|watch|works|zone|xxx|ads|associates|booking|business|ceo|ecom|forum|gives|global|gmbh|inc|institute|insure|lifeinsurance|llc|llp|ltd|ltda|mba|new|news|ngo|press|sarl|services|srl|studio|trade|trading|wiki|xin|auction|bid|blackfriday|buy|capital|charity|claims|compare|coupon|coupons|deal|dealer|deals|delivery|discount|exchange|flowers|free|furniture|gifts|gripe|grocery|jewelry|kaufen|lotto|parts|promo|qpon|racing|rsvp|sale|salon|save|seat|shop|shopping|silk|spa|store|supplies|supply|taxi|tickets|tires|tools|toys|watches|college|courses|degree|ged|phd|prof|scholarships|school|schule|science|shiksha|study|translations|university|beer|cafe|catering|cityeats|cooking|diet|food|organic|pet|pizza|pub|rest|restaurant|soy|wine|blue|circle|dot|duck|fast|final|finish|fire|fun|fyi|goo|got|green|here|horse|how|ieee|jot|joy|like|limited|makeup|meme|mint|moi|moto|now|nowruz|ong|onl|ooo|page|pars|pid|pink|play|plus|read|red|reise|reisen|rocks|safe|safety|seek|select|sky|smile|spot|sucks|talk|top|trust|uno|vin|vodka|web|wed|win|winners|wow|wtf|xyz|yamaxun|you|zero|abudhabi|africa|alsace|amsterdam|aquitaine|arab|barcelona|bayern|berlin|boston|broadway|brussels|budapest|bzh|capetown|cologne|corsica|country|cymru|desi|doha|dubai|durban|earth|eus|gent|hamburg|helsinki|international|irish|istanbul|joburg|kiwi|koeln|kyoto|london|madrid|market|melbourne|miami|monster|nagoya|nrw|nyc|okinawa|osaka|paris|persiangulf|place|quebec|rio|roma|ryukyu|saarland|scot|shia|show|stockholm|stream|swiss|sydney|taipei|tatar|thai|tirol|tokyo|vegas|vlaanderen|wales|wanggou|wien|world|yokohama|zuerich|clinic|dental|dentist|docs|doctor|health|healthcare|hiv|hospital|med|medical|pharmacy|physio|rehab|surgery|auto|autos|bio|boats|cars|cleaning|consulting|design|energy|industries|motorcycles|adult|baby|beauty|beknown|best|bet|bingo|bom|cards|community|contact|dad|diy|dog|express|family|fan|fans|fashion|garden|gay|giving|group|guide|hair|halal|hiphop|imamat|jetzt|kid|kids|kim|kinder|latino|lgbt|lifestyle|style|living|love|luxe|luxury|moda|mom|navy|pets|poker|porn|republican|vip|vision|vote|voting|voto|wedding|feedback|film|media|mov|movie|movistar|music|pictures|radio|show|song|theater|theatre|tunes|video|accountant|accountants|analytics|bank|banque|broker|cash|cashbackbonus|cfd|cpa|credit|creditcard|finance|financial|financialaid|fund|gold|gratis|investments|ira|loan|loans|markets|money|mortgage|mutual|mutualfunds|pay|reit|prime|security|yun|abogado|airforce|archi|architect|army|attorney|author|dds|engineer|engineering|esq|law|lawyer|legal|retirement|vet|apartments|casa|case|forsale|haus|homes|lease|property|realestate|realtor|realty|rent|room|baseball|basketball|coach|cricket|fish|fishing|fit|fitness|football|game|games|golf|hockey|juegos|mls|rodeo|rugby|run|ski|soccer|sport|sports|spreadbetting|surf|team|tennis|yoga|app|box|chat|click|cloud|comsec|bot|data|date|dev|digital|download|drive|call|fail|help|host|hosting|map|mobile|network|online|original-tor|phone|report|search|secure|site|software|space|storage|tube|webcam|webs|website|weibo|zip|active|casino|christmas|hangout|hoteis|hotel|hoteles|hotels|meet|party|tech|tour|tours|bible|church|catholic|faith|indians|islam|ismaili|memorial|moscow|actor|bar|black|build|care|city|direct|immo|ink|life|tax|town|work|one|insure|saxo|sex|shell|weber|yandex|rip|car|ist|lat|lol|bond|om|skin|day|quest|wang|sbs|dhl|ing|yachts|gdn|foo';\nconst domainUnicode: string = 'рф|дети|онлайн|сайт|укр|католик|ком|москва|орг|рус|бел|бг|ישראל';\nlet punyDomainUnicode = '';\n\n/**\n * Получить строку национализированных доменов верхнего уровня в ASCII формате\n */\nconst getPunyDomainUnicode = (): string => {\n\tif (punyDomainUnicode) return punyDomainUnicode;\n\n\tpunyDomainUnicode = domainUnicode.split('|').map(domain => toPuny(domain)).join('|');\n\n\treturn punyDomainUnicode;\n};\n\n/**\n * Получить строку с регулярным выражение для домена\n */\nexport const getDomainRegexp = (): string => {\n\tconst regexpASCII = `(?:${domainASCII})`;\n\tconst regexpUnicode = `(?:${getPunyDomainUnicode()})`;\n\n\treturn `(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+(?:${regexpASCII}|${regexpUnicode})\\\\/?`;\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()}$`);\n\n\treturn regexp.test(domain);\n};\n\n/**\n * Проверка валидности ip\n */\nexport const isIp = (ip: string): boolean => {\n\tconst regexp = new RegExp(\n\t\t'((^\\\\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"],"names":["domainASCII","domainUnicode","punyDomainUnicode","getPunyDomainUnicode","domain","toPuny","getDomainRegexp","regexpASCII","regexpUnicode","isEmail","email","rus_allow","emailTest","validUrl","url","allowIP","isIp","isDomain","ip"],"mappings":";AAOA,MAAMA,IAAsB,i7JACtBC,IAAwB;AAC9B,IAAIC,IAAoB;AAKxB,MAAMC,IAAuB,MACxBD,MAEJA,IAAoBD,EAAc,MAAM,GAAG,EAAE,IAAI,CAAAG,MAAUC,EAAOD,CAAM,CAAC,EAAE,KAAK,GAAG,GAE5EF,IAMKI,IAAkB,MAAc;AAC5C,QAAMC,IAAc,MAAMP,CAAW,KAC/BQ,IAAgB,MAAML,EAAA,CAAsB;AAElD,SAAO,6CAA6CI,CAAW,IAAIC,CAAa;AACjF,GAOaC,IAAU,CAACC,GAAeC,IAAqB,OAAmB;AAC9E,EAAAD,KAAS,IAETA,IAAQA,EAAM,YAAA;AAEd,MAAIE,IAAY;AAEhB,SAAID,MACHC,IAAY,qEAGC,IAAI,OAAOA,CAAS,EACrB,KAAKF,CAAK;AACxB,GAKaG,IAAW,CAACC,GAAaC,IAAU,OAAmB;AAElE,MADAD,IAAMA,EAAI,KAAA,GACNA,EAAI,SAAS,GAAG;AACnB,WAAO;AAGR,QAAMV,IAASU,EAAI,QAAQ,oCAAoC,IAAI;AAEnE,SAAIC,KAAWC,EAAKZ,CAAM,IAAU,KAE7Ba,EAASb,CAAM;AACvB,GAKaa,IAAW,CAACb,OACxBA,IAASC,EAAOD,CAAM,GAEP,IAAI,OAAO,IAAIE,EAAA,CAAiB,GAAG,EAEpC,KAAKF,CAAM,IAMbY,IAAO,CAACE,MACL,IAAI;AAAA,EAClB;AAAA,EAEa,KAAKA,CAAE;"}
|
package/utils/clipboard.amd.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-CgtkdwgA.amd"],(function(l,t,e){"use strict";if(typeof r>"u")var r=window.Vue;async function a(o,n=!1){let i=!1;return navigator.clipboard&&(await navigator.clipboard.writeText(o),i=!0,n&&e.Core.notice(e.useI18n().Common.Copied_to_clipboard+"","info")),i}async function u(o){let n=!1;e.isSafari()||(n=await a(o));const i='<a href="'+o+'" target="_blank">'+o+"</a>",c=e.useI18n().Common.Copied_to_clipboard+`:
|
|
2
2
|
`+i;if(n)e.Core.notice(c,"info");else{if(!navigator.clipboard){e.Core.notice(e.useI18n().Common.Cannot_copied_to_clipboard+`:
|
|
3
3
|
`+e.useI18n().Common.Copy_guest_link_manually+`
|
|
4
4
|
`+i,"error");return}const d={onclick:()=>a(o).then(()=>e.Core.notice(c,"info")),default:e.useI18n().Common.Copy+"",class:"copy"};await e.Core.notice(e.useI18n().Common.Guest_link_created+`
|
|
5
|
-
`+i,"info",{buttonProps:d})}}t.guestLinkToClipboard=u,t.setClipboard=a,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
|
|
5
|
+
`+i,"info",{buttonProps:d})}}t.guestLinkToClipboard=u,t.setClipboard=a,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));
|
|
6
6
|
//# sourceMappingURL=clipboard.amd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.amd.js","sources":["../../src/core/utils/clipboard.ts"],"sourcesContent":["import Core from '@/core/core/core';\
|
|
1
|
+
{"version":3,"file":"clipboard.amd.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\tonclick: () => setClipboard(link).then(() => Core.notice(copiedMessage, 'info')),\n\t\t\tdefault: useI18n().Common.Copy + '',\n\t\t\tclass: 'copy',\n\t\t};\n\n\t\tawait Core.notice(useI18n().Common.Guest_link_created + `\\n` + aLink, 'info', { buttonProps });\n\t}\n};\n"],"names":["setClipboard","text","isInfoShowing","forms","copyOk","aLink","link","copiedMessage","buttonProps"],"mappings":"4HAYA,eAAAA,EAAAC,EAAAC,EAAA,GAAA,UAGC,OAAA,UAAA,wDAGCA,GAAAC,EAAA,KAAA,OAAAA,EAAA,QAAA,EAAA,OAAA,oBAAA,GAAA,MAAA,GAGDC,CACD;EAU8DC,mCAGtB,CAEtC,GAAA,CAAA,UAAA,UAAA,CACCF,EAAA,KAAA,OAAAA,EAAA,QAAA,EAAA,OAAA,2BAAA;AAAA,EAA+DA,EAAA,QAAA,EAAA,OAAA,yBAAA;AAAA,EAAoDE,EAAA,OAAA,kBAIhG,QAAA,IAAAL,EAAAM,CAAA,EAAA,KAAA,IAAAH,EAAA,KAAA,OAAAI,EAAA,MAAA,CAAA,qCAEc,MAAA;EAIsBF,EAAA,OAAA,CAAA,YAAAG,CAAA,CAAA,EAE1D"}
|
package/utils/clipboard.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '../core/utils/clipboard'
|
|
1
|
+
export * from '../src/core/utils/clipboard'
|
|
2
2
|
export {}
|
package/utils/clipboard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as t, u as a, b as s } from "../.chunks/forms-
|
|
1
|
+
import { C as t, u as a, b as s } from "../.chunks/forms-DarRVke_.es.js";
|
|
2
2
|
async function r(o, e = !1) {
|
|
3
3
|
let i = !1;
|
|
4
4
|
return navigator.clipboard && (await navigator.clipboard.writeText(o), i = !0, e && t.notice(a().Common.Copied_to_clipboard + "", "info")), i;
|
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';\
|
|
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\tonclick: () => setClipboard(link).then(() => Core.notice(copiedMessage, 'info')),\n\t\t\tdefault: useI18n().Common.Copy + '',\n\t\t\tclass: 'copy',\n\t\t};\n\n\t\tawait Core.notice(useI18n().Common.Guest_link_created + `\\n` + aLink, 'info', { buttonProps });\n\t}\n};\n"],"names":["setClipboard","text","isInfoShowing","copyOk","Core","useI18n","guestLinkToClipboard","link","isCopied","isSafari","aLink","copiedMessage","buttonProps"],"mappings":";AAYA,eAAsBA,EAAaC,GAAcC,IAAgB,IAAO;AACvE,MAAIC,IAAS;AAEb,SAAI,UAAU,cACb,MAAM,UAAU,UAAU,UAAUF,CAAI,GACxCE,IAAS,IACLD,KAAoBE,EAAK,OAAOC,IAAU,OAAO,sBAAsB,IAAI,MAAM,IAG/EF;AACR;AAKA,eAAsBG,EAAqBC,GAAc;AACxD,MAAIC,IAAW;AACf,EAAKC,EAAA,MAAYD,IAAW,MAAMR,EAAaO,CAAI;AAEnD,QAAMG,IAAQ,cAAcH,IAAO,uBAAuBA,IAAO,QAC3DI,IAAgBN,EAAA,EAAU,OAAO,sBAAsB;AAAA,IAAQK;AAErE,MAAIF;AACH,IAAKJ,EAAK,OAAOO,GAAe,MAAM;AAAA,OAChC;AACN,QAAI,CAAC,UAAU,WAAW;AACzB,MAAKP,EAAK,OAAOC,EAAA,EAAU,OAAO,6BAA6B;AAAA,IAAQA,EAAA,EAAU,OAAO,2BAA2B;AAAA,IAAOK,GAAO,OAAO;AACxI;AAAA,IACD;AAEA,UAAME,IAAc;AAAA,MACnB,SAAS,MAAMZ,EAAaO,CAAI,EAAE,KAAK,MAAMH,EAAK,OAAOO,GAAe,MAAM,CAAC;AAAA,MAC/E,SAASN,EAAA,EAAU,OAAO,OAAO;AAAA,MACjC,OAAO;AAAA,IAAA;AAGR,UAAMD,EAAK,OAAOC,EAAA,EAAU,OAAO,qBAAqB;AAAA,IAAOK,GAAO,QAAQ,EAAE,aAAAE,GAAa;AAAA,EAC9F;AACD;"}
|
package/utils/date.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-CgtkdwgA.amd"],(function(n,e,t){"use strict";if(typeof a>"u")var a=window.Vue;e.dateFormat=t.dateFormat,e.dateToString=t.dateToString,e.dateUnformat=t.dateUnformat,e.genDate=t.genDate,e.genDateMoscow=t.genDateMoscow,e.genUserDate=t.genUserDate,e.getDayOfWeek=t.getDayOfWeek,e.stringToDate=t.stringToDate,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=date.amd.js.map
|
package/utils/date.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '../core/utils/date'
|
|
1
|
+
export * from '../src/core/utils/date'
|
|
2
2
|
export {}
|
package/utils/date.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { e as t, K as s, P as o, N as r, O as g, M as n, J as D, L as d } from "../.chunks/forms-DarRVke_.es.js";
|
|
2
2
|
export {
|
|
3
3
|
t as dateFormat,
|
|
4
4
|
s as dateToString,
|
|
5
5
|
o as dateUnformat,
|
|
6
6
|
r as genDate,
|
|
7
7
|
g as genDateMoscow,
|
|
8
|
-
n as
|
|
9
|
-
D as
|
|
8
|
+
n as genUserDate,
|
|
9
|
+
D as getDayOfWeek,
|
|
10
|
+
d as stringToDate
|
|
10
11
|
};
|
|
11
12
|
//# sourceMappingURL=date.js.map
|
package/utils/device.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-CgtkdwgA.amd"],(function(a,e,i){"use strict";if(typeof l>"u")var l=window.Vue;e.get$scroll=i.get$scroll,e.getCommandKeyLabel=i.getCommandKeyLabel,e.getElsScroll=i.getElsScroll,e.getOS=i.getOS,e.getOSAsync=i.getOSAsync,e.getScrollTop=i.getScrollTop,e.isApp=i.isApp,e.isMacOS=i.isMacOS,e.isMobile=i.isMobile,e.isRetina=i.isRetina,e.isSafari=i.isSafari,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=device.amd.js.map
|
package/utils/device.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '../core/utils/device'
|
|
1
|
+
export * from '../src/core/utils/device'
|
|
2
2
|
export {}
|
package/utils/device.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z as e, x as l, A as t, B as i, D as o, y as g, v as r, w as S, t as c, s as p, b } from "../.chunks/forms-DarRVke_.es.js";
|
|
2
2
|
export {
|
|
3
3
|
e as get$scroll,
|
|
4
4
|
l as getCommandKeyLabel,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
t as getElsScroll,
|
|
6
|
+
i as getOS,
|
|
7
|
+
o as getOSAsync,
|
|
8
8
|
g as getScrollTop,
|
|
9
9
|
r as isApp,
|
|
10
10
|
S as isMacOS,
|
package/utils/dom.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports"],function(
|
|
1
|
+
define(["require","exports"],(function(V,n){"use strict";if(typeof w>"u")var w=window.Vue;function c(e,t,...r){const l=document.createElement(e);for(const i in t)i.indexOf("on")===0?l[i]=t[i]:l.setAttribute(i,t[i]);return r.forEach(i=>{typeof i=="string"?l.insertAdjacentHTML("beforeend",i):l.append(i)}),l}function u(e){if(!e)return!1;const t=e.getBoundingClientRect();return!!(t.width||t.height)}function a(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX}}function f(e,t){return window.getComputedStyle(e).getPropertyValue(t)}function s(e,t){return parseInt(f(e,t))}function d(e,t){const r=document.createElement(t);return e.after(r),r.append(e),r}function g(e,t){return o(e,t).find(u)||null}function b(e,t){return o(e,t).findLast(u)||null}function y(e,t){return o(e,t).filter(u)}function o(e,t){return e?[...e.querySelectorAll(t)]:[]}function S(e,t="common",r=void 0){if(e)return e.topData||(e.topData={}),r&&(e.topData[t]=r),r===null&&delete e.topData[t],e.topData[t]}function q(e){e&&delete e.topData}const p={genEl:c,isVisible:u,offset:a,css:f,cssNumber:s,wrap:d,querySelectorVisible:g,querySelectorVisibleLast:b,querySelectorAllVisible:y,querySelectorAllArray:o,storage:S,storageClear:q};n.css=f,n.cssNumber=s,n.default=p,n.genEl=c,n.isVisible=u,n.offset=a,n.querySelectorAllArray=o,n.querySelectorAllVisible=y,n.querySelectorVisible=g,n.querySelectorVisibleLast=b,n.storage=S,n.storageClear=q,n.wrap=d,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
2
2
|
//# sourceMappingURL=dom.amd.js.map
|
package/utils/dom.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.amd.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"dom.amd.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Работа с Document Object Model (DOM)\n * @packageDocumentation\n */\n\n/**\n * Создать элемент\n * @param tagName\n * @param attrs - атрибуты\n * @param elsChildrens\n * @returns - созданный элемент\n */\nexport function genEl(tagName: string, attrs?: Record<string, string>, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren: HTMLElement | string) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param el\n * @returns - вернет true, если элемент считается видимым\n */\nexport function isVisible(el?: HTMLElement): boolean {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param el\n * @returns - координаты элемента относительно документа\n */\nexport function offset(el: HTMLElement): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function css(el: HTMLElement, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Получить значение css свойства целочисленного типа\n *\n * @param el\n * @param property - имя свойства\n * @return - значение css стиля\n */\nexport function cssNumber(el: HTMLElement, property: string): number {\n\treturn parseInt(css(el, property));\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param el - элемент, который требуется обернуть\n * @param tagName - имя тега элемента, в который треубется обернуть элемент\n */\nexport function wrap(el: HTMLElement, tagName: string): HTMLElement {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisible(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorVisibleLast(el: HTMLElement, selectors: string): HTMLElement | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllVisible(el: HTMLElement | Document, selectors: string): HTMLElement[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n */\nexport function querySelectorAllArray<El extends HTMLElement = HTMLElement>(el: HTMLElement | Document, selectors: string) {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll<El>(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param el\n * @param contextName - контекст, обычно используется имя компонента\n * @param contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns - вернет объект контекста или undefined, если данные контекста не найдены\n */\nexport function storage(\n\tel?: HTMLElement & { topData?: any },\n\tcontextName: string = 'common',\n\tcontextData: object | null | undefined = undefined,\n): any | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nexport function storageClear(el?: HTMLElement & { topData?: any }): void {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\tcssNumber,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["name","attrs","elsChildrens","elChildren","el","boundingClientRect","css","property","cssNumber","wrap","tagName","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","isVisible","querySelectorVisibleLast","querySelectorAllVisible","contextName","contextData","DOM","genEl","offset","storage"],"mappings":"iJAeC,UAAAA,KAAAC,uDASA,OAAAC,EAAA,QAAAC,GAAA,CACC,OAAAA,GAAA,SACCC,EAAA,mBAAA,YAAAD,CAAA,EAEAC,EAAA,OAAAD,CAAA,CACD,CAAA,EAGDC,CACD,qBASE,MAAA,GAGD,MAAAC,EAAAD,EAAA,sBAAA,6BAED,eAQC,MAAAC,EAAAD,EAAA,sBAAA,EAEA,MAAA,0BACsC,KAAAC,EAAA,KAAA,OAAA,QAGvC,CASO,SAAAC,EAAAF,EAAAG,EAAA,sDAEP,CASO,SAAAC,EAAAJ,EAAAG,EAAA,wBAEP,CAOO,SAAAE,EAAAL,EAAAM,EAAA,mCAEN,OAAAN,EAAA,MAAAO,CAAA,EAEAA,EAAA,OAAAP,CAAA,EAEAO,CACD,CAOO,SAAAC,EAAAR,EAAAS,EAAA,CACN,OAAAC,EAAAV,EAAAS,CAAA,EAAA,KAAAE,CAAA,GAAA,IACD,CAOO,SAAAC,EAAAZ,EAAAS,EAAA,CACN,OAAAC,EAAAV,EAAAS,CAAA,EAAA,SAAAE,CAAA,GAAA,IACD,CAOO,SAAAE,EAAAb,EAAAS,EAAA,wBAEP,CAOO,SAAAC,EAAAV,EAAAS,EAAA,qCAEL,CAAA,CAIF,wCAkBC,OAAAT,EAAA,UACCA,EAAA,QAAA,CAAA,OAIAA,EAAA,QAAAc,CAAA,EAAAC,GAGDA,IAAA,MACC,OAAAf,EAAA,QAAAc,CAAA,EAGDd,EAAA,QAAAc,CAAA,CACD,kCAWA,CAEA,MAAAE,EAAA,CAAe,MAAAC,EACd,UAAAN,EACA,OAAAO,EACA,IAAAhB,EACA,UAAAE,EACA,KAAAC,EACA,qBAAAG,EACA,yBAAAI,EACA,wBAAAC,EACA,sBAAAH,EACA,QAAAS"}
|
package/utils/dom.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from '../core/utils/dom'
|
|
1
|
+
export * from '../src/core/utils/dom'
|
|
2
2
|
export {}
|
|
3
|
-
import topvisorui from '../core/utils/dom'
|
|
3
|
+
import topvisorui from '../src/core/utils/dom'
|
|
4
4
|
export default topvisorui
|
|
5
|
-
export * from '../core/utils/dom'
|
|
5
|
+
export * from '../src/core/utils/dom'
|
|
6
6
|
export {}
|
package/utils/dom.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function
|
|
1
|
+
function c(t, e, ...n) {
|
|
2
2
|
const o = document.createElement(t);
|
|
3
3
|
for (const r in e)
|
|
4
4
|
r.indexOf("on") === 0 ? o[r] = e[r] : o.setAttribute(r, e[r]);
|
|
@@ -19,57 +19,62 @@ function l(t) {
|
|
|
19
19
|
left: e.left + window.scrollX
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function f(t, e) {
|
|
23
23
|
return window.getComputedStyle(t).getPropertyValue(e);
|
|
24
24
|
}
|
|
25
25
|
function s(t, e) {
|
|
26
|
+
return parseInt(f(t, e));
|
|
27
|
+
}
|
|
28
|
+
function a(t, e) {
|
|
26
29
|
const n = document.createElement(e);
|
|
27
30
|
return t.after(n), n.append(t), n;
|
|
28
31
|
}
|
|
29
|
-
function
|
|
32
|
+
function d(t, e) {
|
|
30
33
|
return u(t, e).find(i) || null;
|
|
31
34
|
}
|
|
32
|
-
function
|
|
35
|
+
function p(t, e) {
|
|
33
36
|
return u(t, e).findLast(i) || null;
|
|
34
37
|
}
|
|
35
|
-
function
|
|
38
|
+
function g(t, e) {
|
|
36
39
|
return u(t, e).filter(i);
|
|
37
40
|
}
|
|
38
41
|
function u(t, e) {
|
|
39
42
|
return t ? [...t.querySelectorAll(e)] : [];
|
|
40
43
|
}
|
|
41
|
-
function
|
|
44
|
+
function b(t, e = "common", n = void 0) {
|
|
42
45
|
if (t)
|
|
43
46
|
return t.topData || (t.topData = {}), n && (t.topData[e] = n), n === null && delete t.topData[e], t.topData[e];
|
|
44
47
|
}
|
|
45
48
|
function y(t) {
|
|
46
49
|
t && delete t.topData;
|
|
47
50
|
}
|
|
48
|
-
const
|
|
49
|
-
genEl:
|
|
51
|
+
const w = {
|
|
52
|
+
genEl: c,
|
|
50
53
|
isVisible: i,
|
|
51
54
|
offset: l,
|
|
52
|
-
css:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
css: f,
|
|
56
|
+
cssNumber: s,
|
|
57
|
+
wrap: a,
|
|
58
|
+
querySelectorVisible: d,
|
|
59
|
+
querySelectorVisibleLast: p,
|
|
60
|
+
querySelectorAllVisible: g,
|
|
57
61
|
querySelectorAllArray: u,
|
|
58
|
-
storage:
|
|
62
|
+
storage: b,
|
|
59
63
|
storageClear: y
|
|
60
64
|
};
|
|
61
65
|
export {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
f as css,
|
|
67
|
+
s as cssNumber,
|
|
68
|
+
w as default,
|
|
69
|
+
c as genEl,
|
|
65
70
|
i as isVisible,
|
|
66
71
|
l as offset,
|
|
67
72
|
u as querySelectorAllArray,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
g as querySelectorAllVisible,
|
|
74
|
+
d as querySelectorVisible,
|
|
75
|
+
p as querySelectorVisibleLast,
|
|
76
|
+
b as storage,
|
|
72
77
|
y as storageClear,
|
|
73
|
-
|
|
78
|
+
a as wrap
|
|
74
79
|
};
|
|
75
80
|
//# sourceMappingURL=dom.js.map
|