@topvisor/ui 1.5.4-groupSelector.1 → 1.5.4-preloader.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/{api-DuS0Qura.amd.js → api-D-JuUXVn.amd.js} +2 -2
- package/.chunks/api-D-JuUXVn.amd.js.map +1 -0
- package/.chunks/{api-DuS0Qura.esm.js → api-D-JuUXVn.esm.js} +9 -9
- package/.chunks/{api-DuS0Qura.esm.js.map → api-D-JuUXVn.esm.js.map} +1 -1
- package/.chunks/app-DeBknp1Q.amd.js +2 -0
- package/.chunks/app-DeBknp1Q.amd.js.map +1 -0
- package/.chunks/{app-BXCICBAa.esm.js → app-DeBknp1Q.esm.js} +12 -13
- package/.chunks/app-DeBknp1Q.esm.js.map +1 -0
- package/.chunks/{datepicker-BnBQNlTc.amd.js → datepicker-B2Km72Vg.amd.js} +2 -2
- package/.chunks/datepicker-B2Km72Vg.amd.js.map +1 -0
- package/.chunks/{datepicker-BnBQNlTc.esm.js → datepicker-B2Km72Vg.esm.js} +2 -2
- package/.chunks/{datepicker-BnBQNlTc.esm.js.map → datepicker-B2Km72Vg.esm.js.map} +1 -1
- package/.chunks/dialog-DPTJ7VN5.amd.js +2 -0
- package/.chunks/dialog-DPTJ7VN5.amd.js.map +1 -0
- package/.chunks/{dialog-BPUICFiG.esm.js → dialog-DPTJ7VN5.esm.js} +3 -4
- package/.chunks/{dialog-BPUICFiG.esm.js.map → dialog-DPTJ7VN5.esm.js.map} +1 -1
- package/.chunks/dialog_regionSelectorRegions-ClRx55RP.amd.js +2 -0
- package/.chunks/dialog_regionSelectorRegions-ClRx55RP.amd.js.map +1 -0
- package/.chunks/{dialog_regionSelectorRegions-BKvg82IO.esm.js → dialog_regionSelectorRegions-ClRx55RP.esm.js} +14 -15
- package/.chunks/{dialog_regionSelectorRegions-BKvg82IO.esm.js.map → dialog_regionSelectorRegions-ClRx55RP.esm.js.map} +1 -1
- package/.chunks/{field-CjkpGeA7.amd.js → field-DEusYVqS.amd.js} +2 -2
- package/.chunks/field-DEusYVqS.amd.js.map +1 -0
- package/.chunks/{field-CjkpGeA7.esm.js → field-DEusYVqS.esm.js} +1 -1
- package/.chunks/{field-CjkpGeA7.esm.js.map → field-DEusYVqS.esm.js.map} +1 -1
- package/.chunks/forms-DKVIpGnH.amd.js +2 -0
- package/.chunks/forms-DKVIpGnH.amd.js.map +1 -0
- package/.chunks/{forms-CdCS6WAQ.esm.js → forms-DKVIpGnH.esm.js} +17 -14
- package/.chunks/forms-DKVIpGnH.esm.js.map +1 -0
- package/.chunks/formsExt-Dy7EHtJS.amd.js +2 -0
- package/.chunks/formsExt-Dy7EHtJS.amd.js.map +1 -0
- package/.chunks/{formsExt-Ck5q-jXI.esm.js → formsExt-Dy7EHtJS.esm.js} +192 -164
- package/.chunks/formsExt-Dy7EHtJS.esm.js.map +1 -0
- package/.chunks/lazy-DQU-hLos.amd.js +2 -0
- package/.chunks/lazy-DQU-hLos.amd.js.map +1 -0
- package/.chunks/lazy-DQU-hLos.esm.js +68 -0
- package/.chunks/{lazy-CGswTOPj.esm.js.map → lazy-DQU-hLos.esm.js.map} +1 -1
- package/.chunks/{mocker-CwZe-g4N.amd.js → mocker-DOnGwq3y.amd.js} +2 -2
- package/.chunks/mocker-DOnGwq3y.amd.js.map +1 -0
- package/.chunks/{mocker-CwZe-g4N.esm.js → mocker-DOnGwq3y.esm.js} +1 -1
- package/.chunks/{mocker-CwZe-g4N.esm.js.map → mocker-DOnGwq3y.esm.js.map} +1 -1
- package/.chunks/{notice-DA4p-RwX.amd.js → notice-C3_mXHCe.amd.js} +2 -2
- package/.chunks/notice-C3_mXHCe.amd.js.map +1 -0
- package/.chunks/{notice-DA4p-RwX.esm.js → notice-C3_mXHCe.esm.js} +2 -2
- package/.chunks/{notice-DA4p-RwX.esm.js.map → notice-C3_mXHCe.esm.js.map} +1 -1
- package/.chunks/{popup-CN7-bnQJ.amd.js → popup-B8Us9xZO.amd.js} +2 -2
- package/.chunks/popup-B8Us9xZO.amd.js.map +1 -0
- package/.chunks/{popup-CN7-bnQJ.esm.js → popup-B8Us9xZO.esm.js} +3 -3
- package/.chunks/{popup-CN7-bnQJ.esm.js.map → popup-B8Us9xZO.esm.js.map} +1 -1
- package/.chunks/{popup-DHCqvZzI.amd.js → popup-CtiL5V44.amd.js} +2 -2
- package/.chunks/popup-CtiL5V44.amd.js.map +1 -0
- package/.chunks/{popup-DHCqvZzI.esm.js → popup-CtiL5V44.esm.js} +4 -4
- package/.chunks/{popup-DHCqvZzI.esm.js.map → popup-CtiL5V44.esm.js.map} +1 -1
- package/.chunks/punycode.es6-BZRFIj88.amd.js +2 -0
- package/.chunks/punycode.es6-BZRFIj88.amd.js.map +1 -0
- package/.chunks/{punycode.es6-B-5kB2YI.esm.js → punycode.es6-BZRFIj88.esm.js} +5 -5
- package/.chunks/{punycode.es6-B-5kB2YI.esm.js.map → punycode.es6-BZRFIj88.esm.js.map} +1 -1
- package/.chunks/{store-DuQpSSLL.amd.js → store-DjQAOnrn.amd.js} +2 -2
- package/.chunks/store-DjQAOnrn.amd.js.map +1 -0
- package/.chunks/{store-DuQpSSLL.esm.js → store-DjQAOnrn.esm.js} +1 -1
- package/.chunks/{store-DuQpSSLL.esm.js.map → store-DjQAOnrn.esm.js.map} +1 -1
- package/.chunks/utils-C1xkXfK0.amd.js +2 -0
- package/.chunks/utils-C1xkXfK0.amd.js.map +1 -0
- package/.chunks/{dialogs-CbMNuvfF.esm.js → utils-C1xkXfK0.esm.js} +70 -37
- package/.chunks/utils-C1xkXfK0.esm.js.map +1 -0
- package/.chunks/utils-Cj8CJ22r.amd.js +2 -0
- package/.chunks/utils-Cj8CJ22r.amd.js.map +1 -0
- package/.chunks/{utils-lidKtVjF.esm.js → utils-Cj8CJ22r.esm.js} +16 -16
- package/.chunks/{utils-lidKtVjF.esm.js.map → utils-Cj8CJ22r.esm.js.map} +1 -1
- package/.chunks/{worker-spLieexQ.amd.js → worker-DYTgdzGP.amd.js} +2 -2
- package/.chunks/worker-DYTgdzGP.amd.js.map +1 -0
- package/.chunks/{worker-spLieexQ.esm.js → worker-DYTgdzGP.esm.js} +3 -3
- package/.chunks/{worker-spLieexQ.esm.js.map → worker-DYTgdzGP.esm.js.map} +1 -1
- package/api/additional.amd.js +1 -1
- package/api/additional.amd.js.map +1 -1
- package/api/additional.d.ts +1 -1
- package/api/additional.js +1 -1
- package/api/additional.js.map +1 -1
- package/api/index.amd.js +1 -1
- package/api/index.amd.js.map +1 -1
- package/api/index.d.ts +1 -1
- package/api/index.js +2 -2
- package/assets/themes/dark-th.css +1 -1
- package/assets/themes/dark.css +1 -1
- package/assets/themes/light.css +1 -1
- package/autoload-css-manifest.amd.json +4 -4
- package/autoload-css-manifest.json +4 -4
- 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 +3 -3
- 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 +1 -1
- package/core/app.js +4 -5
- 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 +3 -4
- package/extra/extra.amd.js +1 -1
- package/extra/extra.amd.js.map +1 -1
- package/extra/extra.d.ts +1 -1
- package/extra/extra.js.map +1 -1
- package/forms/forms.amd.js +1 -1
- package/forms/forms.amd.js.map +1 -1
- package/forms/forms.d.ts +1 -1
- package/forms/forms.js +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 +1 -1
- package/icomoon/demo-files/demo.amd.js.map +1 -1
- package/icomoon/demo.amd.js.map +1 -1
- 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 +3 -3
- package/layout/layout.js.map +1 -1
- package/package.json +1 -1
- 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 +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 +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 +368 -373
- package/project/project.js.map +1 -1
- package/src/components/dialog/dialog/composables/utils.d.ts +1 -1
- package/src/components/formsExt/selector2/cache.d.ts +22 -4
- package/src/components/formsExt/selector2/composables/useMenu.d.ts +1 -1
- package/src/components/formsExt/selector2/types.d.ts +9 -0
- package/src/components/project/groupSelector/folders/utils.d.ts +1 -0
- package/src/components/project/groupSelector/groups/types.d.ts +5 -2
- package/src/components/project/groupSelector/stories/mocks/groups.d.ts +4 -0
- package/src/components/project/groupSelector/stories/mocks/index.d.ts +2 -1
- package/src/components/project/groupSelector/types.d.ts +6 -0
- package/src/components/project/projectSelector/cache.d.ts +5 -3
- package/src/components/project/projectSelector/stories/mocks/index.d.ts +5 -0
- package/src/components/project/projectSelector/stories/mocks/projects.d.ts +3 -0
- package/src/components/project/projectSelector/utils.d.ts +1 -1
- package/src/components/project/regionSelector/utils/utils.d.ts +2 -5
- package/src/core/core/core.d.ts +7 -4
- package/src/core/core/options.d.ts +6 -0
- package/src/core/core/state.d.ts +3 -0
- package/src/core/plugins/core.d.ts +4 -5
- package/src/core/utils/composables/useEnteties.d.ts +94 -0
- 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 +1 -1
- 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 +6 -6
- 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 +1 -1
- 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.amd.js.map +1 -1
- package/utils/date.d.ts +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.amd.js.map +1 -1
- package/utils/device.d.ts +1 -1
- package/utils/device.js +1 -1
- 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.map +1 -1
- package/utils/image.amd.js +1 -1
- 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.amd.js.map +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.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 +1 -1
- package/utils/searchers.js.map +1 -1
- package/utils/store.amd.js +1 -1
- package/utils/store.amd.js.map +1 -1
- package/utils/store.d.ts +1 -1
- package/utils/store.js +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 +1 -1
- 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 +1 -1
- 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/.chunks/api-DuS0Qura.amd.js.map +0 -1
- package/.chunks/app-BXCICBAa.amd.js +0 -2
- package/.chunks/app-BXCICBAa.amd.js.map +0 -1
- package/.chunks/app-BXCICBAa.esm.js.map +0 -1
- package/.chunks/datepicker-BnBQNlTc.amd.js.map +0 -1
- package/.chunks/dialog-BPUICFiG.amd.js +0 -2
- package/.chunks/dialog-BPUICFiG.amd.js.map +0 -1
- package/.chunks/dialog_regionSelectorRegions-BKvg82IO.amd.js +0 -2
- package/.chunks/dialog_regionSelectorRegions-BKvg82IO.amd.js.map +0 -1
- package/.chunks/dialogs-CbMNuvfF.amd.js +0 -2
- package/.chunks/dialogs-CbMNuvfF.amd.js.map +0 -1
- package/.chunks/dialogs-CbMNuvfF.esm.js.map +0 -1
- package/.chunks/field-CjkpGeA7.amd.js.map +0 -1
- package/.chunks/forms-CdCS6WAQ.amd.js +0 -2
- package/.chunks/forms-CdCS6WAQ.amd.js.map +0 -1
- package/.chunks/forms-CdCS6WAQ.esm.js.map +0 -1
- package/.chunks/formsExt-Ck5q-jXI.amd.js +0 -2
- package/.chunks/formsExt-Ck5q-jXI.amd.js.map +0 -1
- package/.chunks/formsExt-Ck5q-jXI.esm.js.map +0 -1
- package/.chunks/lazy-CGswTOPj.amd.js +0 -2
- package/.chunks/lazy-CGswTOPj.amd.js.map +0 -1
- package/.chunks/lazy-CGswTOPj.esm.js +0 -68
- package/.chunks/mocker-CwZe-g4N.amd.js.map +0 -1
- package/.chunks/notice-DA4p-RwX.amd.js.map +0 -1
- package/.chunks/popup-CN7-bnQJ.amd.js.map +0 -1
- package/.chunks/popup-DHCqvZzI.amd.js.map +0 -1
- package/.chunks/punycode.es6-B-5kB2YI.amd.js +0 -2
- package/.chunks/punycode.es6-B-5kB2YI.amd.js.map +0 -1
- package/.chunks/store-DuQpSSLL.amd.js.map +0 -1
- package/.chunks/utils-DrvuXyXl.amd.js +0 -2
- package/.chunks/utils-DrvuXyXl.amd.js.map +0 -1
- package/.chunks/utils-DrvuXyXl.esm.js +0 -43
- package/.chunks/utils-DrvuXyXl.esm.js.map +0 -1
- package/.chunks/utils-lidKtVjF.amd.js +0 -2
- package/.chunks/utils-lidKtVjF.amd.js.map +0 -1
- package/.chunks/worker-spLieexQ.amd.js.map +0 -1
- package/src/components/charts/miniChart/miniChart.vue.d.ts +0 -15
- package/src/components/charts/miniCharts/miniCharts.vue.d.ts +0 -32
- package/src/components/core/notice/item/item.vue.d.ts +0 -10
- package/src/components/core/notice/notice.vue.d.ts +0 -5
- package/src/components/dialog/dialog/dialog.vue.d.ts +0 -28
- package/src/components/dialog/dialog/dialogs/dialogs.vue.d.ts +0 -13
- package/src/components/dialog/dialog/page/page.vue.d.ts +0 -19
- package/src/components/dialog/dialog/pageComponent/pageComponent.vue.d.ts +0 -6
- package/src/components/extra/rive/rive.vue.d.ts +0 -11
- package/src/components/forms/avatar/avatar.vue.d.ts +0 -10
- package/src/components/forms/button/button.vue.d.ts +0 -21
- package/src/components/forms/caption/caption.vue.d.ts +0 -17
- package/src/components/forms/checkbox/checkbox.vue.d.ts +0 -27
- package/src/components/forms/controlLabel/controlLabel.vue.d.ts +0 -19
- package/src/components/forms/hint/hint.vue.d.ts +0 -4
- package/src/components/forms/input/input.vue.d.ts +0 -25
- package/src/components/forms/inputDate/inputDate.vue.d.ts +0 -12
- package/src/components/forms/inputRange/inputRange.vue.d.ts +0 -19
- package/src/components/forms/loadbar/loadbar.vue.d.ts +0 -3
- package/src/components/forms/preloader/preloader.vue.d.ts +0 -4
- package/src/components/forms/radio/radio.vue.d.ts +0 -23
- package/src/components/forms/select/select.vue.d.ts +0 -30
- package/src/components/forms/switcher/switcher.vue.d.ts +0 -23
- package/src/components/forms/textarea/textarea.vue.d.ts +0 -12
- package/src/components/formsExt/checkboxGroup/checkboxGroup.vue.d.ts +0 -27
- package/src/components/formsExt/editArea/editArea.vue.d.ts +0 -31
- package/src/components/formsExt/editInput/editInput.vue.d.ts +0 -23
- package/src/components/formsExt/info/info.vue.d.ts +0 -20
- package/src/components/formsExt/libs/optionGroup/optionGroup.vue.d.ts +0 -16
- package/src/components/formsExt/menu/menu.vue.d.ts +0 -16
- package/src/components/formsExt/policy/policy.vue.d.ts +0 -8
- package/src/components/formsExt/radioGroup/radioGroup.vue.d.ts +0 -27
- package/src/components/formsExt/selector2/itemMulti.vue.d.ts +0 -8
- package/src/components/formsExt/selector2/selector2.vue.d.ts +0 -62
- package/src/components/layout/islandRows/islandRows.vue.d.ts +0 -17
- package/src/components/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +0 -18
- package/src/components/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue.d.ts +0 -18
- package/src/components/layout/rows/rows.vue.d.ts +0 -21
- package/src/components/popup/popup/listItem.vue.d.ts +0 -25
- package/src/components/popup/popup/opener/opener.vue.d.ts +0 -17
- package/src/components/popup/popup/popup.vue.d.ts +0 -38
- package/src/components/popup/popup/widgetInput/widgetInput.vue.d.ts +0 -17
- package/src/components/popup/popupAlert/popupAlert.vue.d.ts +0 -25
- package/src/components/popup/popupConfirm/popupConfirm.vue.d.ts +0 -26
- package/src/components/popup/popupHint/popupHint.vue.d.ts +0 -17
- package/src/components/popup/popupPrompt/popupPrompt.vue.d.ts +0 -26
- package/src/components/project/competitorSelector/competitorSelector.vue.d.ts +0 -14
- package/src/components/project/groupSelector/folders/folders.vue.d.ts +0 -18
- package/src/components/project/groupSelector/groupSelector.vue.d.ts +0 -205
- package/src/components/project/groupSelector/groups/groups.vue.d.ts +0 -146
- package/src/components/project/projectSelector/projectSelector.vue.d.ts +0 -132
- package/src/components/project/projectSelector/submenu/submenu.vue.d.ts +0 -4
- package/src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue.d.ts +0 -6
- package/src/components/project/regionSelector/regionSelector.vue.d.ts +0 -23
- package/src/components/project/tagSelector/popupListItem/tagPopupListItem.vue.d.ts +0 -20
- package/src/components/project/tagSelector/popupOpener/popupOpener.vue.d.ts +0 -27
- package/src/components/project/tagSelector/tagIcon/tagIcon.vue.d.ts +0 -4
- package/src/components/project/tagSelector/tagSelector.vue.d.ts +0 -38
- package/src/components/tabs/tabs/content.vue.d.ts +0 -19
- package/src/components/tabs/tabs/tab.vue.d.ts +0 -19
- package/src/components/tabs/tabs/tabs.vue.d.ts +0 -21
- package/src/components/tabsView/tabsView/menu.vue.d.ts +0 -28
- package/src/components/tabsView/tabsView/menuDelimeter.vue.d.ts +0 -3
- package/src/components/tabsView/tabsView/menuItem.vue.d.ts +0 -23
- package/src/components/tabsView/tabsView/menuTitle.vue.d.ts +0 -20
- package/src/components/tabsView/tabsView/tabsView.vue.d.ts +0 -34
package/utils/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","names":[],"sources":["../../src/core/utils/string.ts"],"sourcesContent":["/**\n * Работа со строками\n * @packageDocumentation\n */\n\nimport { getDomainRegexp } from '@/core/utils/check';\nimport { useI18nLang } from '@/core/plugins/i18n';\n\nexport const REGEXP_START_SYMBOL_ICON = new RegExp('^[^a-zа-я0-9_%#!?.:\\'\"«»[\\\\](){} \\\\r\\\\n\\\\t<>&/+-]', 'i');\n\n/**\n * Извлекает иконку и оставшийся контент из строки\n *\n * Возвращает объект со свойствами:\n * - `icon`: содержит символ иконки, если он присутствует, иначе `null`\n * - `content`: содержит оставшийся текст без символа иконки, если он был извлечен, или всю строку\n */\nexport const extractIconAndContent = (content: string) => {\n\tconst iconExists = content?.[0]?.match(REGEXP_START_SYMBOL_ICON);\n\n\treturn {\n\t\ticon: iconExists ? content[0] : null,\n\t\tcontent: iconExists ? content.substring(1) : content,\n\t};\n};\n\n/**\n * Сгенерировать числовой хэш от строки для идентификатора\n */\nexport const genIntHash = (string: string): number => {\n\tstring += '';\n\n\tlet hash = 0;\n\tif (!string.length) return hash;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst char = string.charCodeAt(i);\n\t\thash = ((hash << 5) - hash) + char;\n\t\thash = hash & hash;\n\t}\n\n\tif (hash < 0) hash *= -1;\n\n\treturn hash;\n};\n\n/**\n * Проверить, что переданная строка является URL\n */\nexport const isUrl = (url: string): boolean => {\n\treturn /^\\w+:\\/\\/([\\w-]+\\.)+[\\w-]+(:\\d+)?(\\/|$)/.test(url);\n};\n\n/**\n * Добавляет пробелы между разрядами если требуется\n * @param nStr строка с числом\n */\nexport const addCommasWhite = (n: number | string): string => {\n\tlet nStr = n + '';\n\n\tnStr = nStr.replace('-', '–');\n\n\tlet x = nStr.split('.');\n\tlet x1 = x[0];\n\tlet x2 = (x.length > 1) ? ('.' + x[1]) : '';\n\n\tif (x1.replace(/[+–]/, '').length <= 4) return nStr;\n\n\tconst rgx = /(\\d+)(\\d{3})/;\n\twhile (rgx.test(x1)) {\n\t\tx1 = x1.replace(rgx, '$1' + ' ' + '$2');\n\t}\n\treturn x1 + x2;\n};\n\n/**\n * Вставляет HTML-код разрыва строки перед каждым переводом строки\n */\nexport const nl2br = (str: string): string => {\n\tif (str === undefined) return '';\n\n\treturn str.replace(/\\r\\n|\\r|\\n/g, '<br>');\n};\n/**\n * Проверяет, является ли строка числом (целым или с плавающей точкой)\n */\nconst isNumeric = (string: number | string): boolean => {\n\tif (typeof string === 'string') {\n\t\treturn string.trim() !== '' && !isNaN(Number(string));\n\t}\n\n\treturn true;\n};\n\n/**\n * Перевести число без деситичной приставки в число с деситичной приставкой степеней тысячи (с параметрами по умолчанию 1255 -> '1.26 K')\n * @param number\n * @param precision - точность, количество знаков после запятой\n * @param dimension - размерность, по умолчанию 1000\n * @param suffix - суффикс к десятичной приставке (по умолчанию выводится латинская заглавная буква)\n */\nexport const numberWithWord = (number: number | string, precision = 2, dimension = 1000, suffix = ''): string => {\n\tif (!isNumeric(number)) {\n\t\treturn String(number);\n\t} else {\n\t\tnumber = Number(number);\n\t}\n\n\tconst k = Math.pow(10, precision);\n\n\tlet numberStr: string;\n\tif (Math.abs(number) > Math.pow(dimension, 3)) {\n\t\tnumberStr = Math.round(number / Math.pow(dimension, 3) * k) / k + ' <small>G' + suffix + '</small>';\n\t} else if (Math.abs(number) > Math.pow(dimension, 2)) {\n\t\tnumberStr = Math.round(number / Math.pow(dimension, 2) * k) / k + ' <small>M' + suffix + '</small>';\n\t} else if (Math.abs(number) > dimension) {\n\t\tnumberStr = Math.round(number / dimension * k) / k + ' <small>K' + suffix + '</small>';\n\t} else {\n\t\tnumberStr = Math.round(number * k) / k + '';\n\t}\n\n\tnumberStr = numberStr.replace(/^(-?\\d+)(\\d{3})/, '$1 $2');\n\n\treturn numberStr;\n};\n\n/**\n * Обрезать текст под три точки\n * @param string\n * @param max_length - максимальное количество символов текста, остальное обрежеться\n * @param pos - область обрезки 0-начало | 1-середина | 2-конец строки\n */\nexport const ellipsis = (string: string, max_length: number, pos: 0 | 1 | 2 = 1): string => {\n\tif (string == undefined) return '';\n\n\tstring += '';\n\tif (max_length == undefined || string.length <= max_length) return string;\n\n\tif (pos === 0) {\n\t\tstring = string.substr(string.length - max_length, max_length);\n\t\tstring = '...' + string;\n\t} else if (pos === 1) {\n\t\tconst string1 = string.substr(0, max_length / 2);\n\t\tconst string2 = string.substr(string.length - max_length / 2, Math.ceil(max_length / 2));\n\t\tstring = string1 + '...' + string2;\n\t} else if (pos === 2) {\n\t\tstring = string.substr(0, max_length);\n\t\tstring = string + '...';\n\t}\n\n\treturn string;\n};\n\n/**\n * Сгенерировать строку текста для вывода количества в разном склонении\n * @param num\n * @param ending0 - родительный падеж, множ. число (10 модулей)\n * @param ending1 - именительный падеж, ед. число (1 модуль)\n * @param ending2 - винительный падеж, множ. число (3 модуля)\n */\nexport const numberEnding = (num: number, ending0: string, ending1: string, ending2: string): string => {\n\t// склонение по множественному числу\n\tif (useI18nLang().value === 'en') {\n\t\tif (num === 1) {\n\t\t\treturn ending1;\n\t\t} else {\n\t\t\treturn ending0;\n\t\t}\n\t}\n\n\tconst num100 = num % 100;\n\tconst num10 = num % 10;\n\n\tif (num100 >= 5 && num100 <= 20) {\n\t\treturn ending0;\n\t} else if (num10 === 0) {\n\t\treturn ending0;\n\t} else if (num10 === 1) {\n\t\treturn ending1;\n\t} else if (num10 >= 2 && num10 <= 4) {\n\t\treturn ending2;\n\t} else if (num10 >= 5 && num10 <= 9) {\n\t\treturn ending0;\n\t} else {\n\t\treturn ending2;\n\t}\n};\n\n/**\n * Перевести строку в родительный падеж\n */\nexport const toRoditPadej = (str: string): string => {\n\tif (useI18nLang().value != 'ru' || str == '') return str;\n\n\tconst str_array = str.split(' ');\n\n\t$.map(str_array, function (str, index) {\n\t\tstr = str + 'а';\n\t\tstr = str.replace('оа', 'о');\n\t\tstr = str.replace('аяа', 'ой');\n\t\tstr = str.replace('шийа', 'шого');\n\t\tstr = str.replace('ыйа', 'ого');\n\t\tstr = str.replace('йа', 'я');\n\t\tstr = str.replace('ьа', 'я');\n\t\tstr = str.replace('яа', 'и');\n\t\tstr = str.replace('оваа', 'овой');\n\t\tstr = str.replace('аа', 'ы');\n\t\tstr = str.replace('кия', 'кого');\n\t\tstr = str.replace('каи', 'кой');\n\n\t\tstr_array[index] = str;\n\t});\n\n\tstr = str_array.join(' ');\n\n\treturn str;\n};\n\n/**\n * Транслитерация текста\n */\nexport const rusToLatin = (str: string): string => {\n\tconst ru: { [index: string]: string } = {\n\t\t'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd',\n\t\t'е': 'e', 'ё': 'e', 'ж': 'j', 'з': 'z', 'и': 'i',\n\t\t'й': 'i', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n',\n\t\t'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't',\n\t\t'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch',\n\t\t'ш': 'sh', 'щ': 'shch', 'ъ': '', 'ы': 'y', 'ь': '',\n\t\t'э': 'e', 'ю': 'u', 'я': 'ya',\n\t};\n\n\tconst str_array = str.split(' ');\n\n\t$.map(str_array, function (str, index) {\n\t\tconst newStr: string[] = [];\n\t\tfor (let i = 0; i < str.length; ++i) {\n\t\t\tnewStr.push(\n\t\t\t\tru[str[i]] || ru[str[i].toLowerCase()] == undefined && str[i] || ru[str[i].toLowerCase()].replace(/^(.)/, function (match) {\n\t\t\t\t\treturn match.toUpperCase();\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tstr_array[index] = newStr.join('');\n\t});\n\n\tstr = str_array.join(' ');\n\n\treturn str;\n};\n\n/**\n * Замена html-символов (`&`, `<`, `>`, `\"`, `'`) на имена литер (`&` -> `&`)\n */\nexport const htmlspecialchars = (str: string): string => {\n\tstr = str\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n\n\treturn str;\n};\n\n/**\n * Выделить нужное в тексте желтым цветом\n * поиск происходит по строке fieldFilter.values[0]\n */\nexport const highlightHtml = (text: string, fieldFilter: { operator: 'CONTAINS' | 'REGEXP', values: string[] }): string => {\n\tlet regExp: RegExp | null = null;\n\n\tswitch (fieldFilter.operator) {\n\t\tcase 'CONTAINS':\n\t\tcase 'REGEXP':\n\t\t\ttry {\n\t\t\t\tlet regExpString = fieldFilter.values[0];\n\t\t\t\tif (fieldFilter.operator != 'REGEXP') regExpString = regExpString.replace(/([()\\[\\]])/g, '\\\\$1');\n\n\t\t\t\tregExp = new RegExp('(' + regExpString + ')', 'gi');\n\t\t\t} catch (exception) {\n\t\t\t\treturn text;\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\ttext = text.replace(regExp!, '<b class=\"found\">$1</b>');\n\n\treturn text;\n};\n\n/**\n * Пример: logHTTPCodesHundreds => log_http_codes_hundreds\n */\nexport const camelToSnakeCase = (str: string): string | undefined => {\n\treturn str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)?.map(token => token.toLowerCase()).join('_');\n};\n\n/**\n * Получить url изображения флага, по коду страны по стандарту ISO 3166-1 alpha-2\n *\n * @todo Опубликовать в CDN или брать c публичного CDN\n */\nexport const genFlagLinkByCountryCode = (countryCode: string) => {\n\tconst urlImage = '/cloud/common/flags/' + countryCode.toUpperCase() + '.svg';\n\treturn `/controller/file/?src=${urlImage}`;\n};\n\n/**\n * Обернуть все ссылки и email в тексте в html-тег `<a>`.\n *\n * Для email ставиться префикс `mailto:`\n */\nexport const addLinkTags = (text: string): string => {\n\tconst domainRegexp = getDomainRegexp();\n\tconst afterDomainRegexp = '(([\\\\/?\\\\w&=%+#;:-]*(\\\\.\\\\w+)?))*';\n\n\tconst regexpMailto = new RegExp(`(^|[\\\\s>(),])([a-z0-9а-яё_.]+@${domainRegexp}${afterDomainRegexp})`, 'gui');\n\ttext = text.replace(regexpMailto, `$1<a href=\"mailto:$2\" target=\"_blank\" rel=\"noopener\">↑[$2]↓</a>`);\n\n\tconst regexpLink = new RegExp(`(^|[\\\\s>(),])(https?:\\/\\/)?(${domainRegexp}${afterDomainRegexp})`, 'gui');\n\ttext = text.replace(regexpLink, `$1<a href=\"√$2$3\" target=\"_blank\" rel=\"nofollow noopener\">$2$3</a>`);\n\n\ttext = text.replaceAll('√http', 'http');\n\ttext = text.replaceAll('√', 'http://');\n\ttext = text.replaceAll(/(↑\\[|]↓)/g, '');\n\n\treturn text;\n};\n\n/**\n * Перевести первую букву строки в верхний регистр\n */\nexport const toCapitalize = (str: string): string => {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n/**\n * Получить случайную строку\n */\nexport const getRandomHash = (length: number = 20): string => {\n\tconst l = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';\n\n\tlet result = '';\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += l[Math.floor(Math.random() * l.length)];\n\t}\n\n\treturn result;\n};\n"],"mappings":";;;AAQA,IAAa,IAA2B,gBAAI,OAAO,qDAAqD,IAAI,EAS/F,KAAyB,MAAoB;CACzD,IAAM,IAAa,IAAU,IAAI,MAAM,EAAyB;AAEhE,QAAO;EACN,MAAM,IAAa,EAAQ,KAAK;EAChC,SAAS,IAAa,EAAQ,UAAU,EAAE,GAAG;EAC7C;GAMW,KAAc,MAA2B;AACrD,MAAU;CAEV,IAAI,IAAO;AACX,KAAI,CAAC,EAAO,OAAQ,QAAO;AAE3B,MAAK,IAAI,IAAI,GAAG,IAAI,EAAO,QAAQ,KAAK;EACvC,IAAM,IAAO,EAAO,WAAW,EAAE;AAEjC,EADA,KAAS,KAAQ,KAAK,IAAQ,GAC9B,KAAc;;AAKf,QAFI,IAAO,MAAG,KAAQ,KAEf;GAMK,KAAS,MACd,0CAA0C,KAAK,EAAI,EAO9C,KAAkB,MAA+B;CAC7D,IAAI,IAAO,IAAI;AAEf,KAAO,EAAK,QAAQ,KAAK,IAAI;CAE7B,IAAI,IAAI,EAAK,MAAM,IAAI,EACnB,IAAK,EAAE,IACP,IAAM,EAAE,SAAS,IAAM,MAAM,EAAE,KAAM;AAEzC,KAAI,EAAG,QAAQ,QAAQ,GAAG,CAAC,UAAU,EAAG,QAAO;CAE/C,IAAM,IAAM;AACZ,QAAO,EAAI,KAAK,EAAG,EAClB,KAAK,EAAG,QAAQ,GAAK,QAAkB;AAExC,QAAO,IAAK;GAMA,KAAS,MACjB,MAAQ,KAAA,IAAkB,KAEvB,EAAI,QAAQ,eAAe,OAAO,EAKpC,KAAa,MACd,OAAO,KAAW,WACd,EAAO,MAAM,KAAK,MAAM,CAAC,MAAM,OAAO,EAAO,CAAC,GAG/C,IAUK,KAAkB,GAAyB,IAAY,GAAG,IAAY,KAAM,IAAS,OAAe;AAChH,KAAK,EAAU,EAAO,CAGrB,KAAS,OAAO,EAAO;KAFvB,QAAO,OAAO,EAAO;CAKtB,IAAM,IAAa,MAAI,GAEnB;AAaJ,QAZA,AAOC,IAPG,KAAK,IAAI,EAAO,GAAY,KAAW,IAC9B,KAAK,MAAM,IAAkB,KAAW,IAAK,EAAE,GAAG,IAAI,cAAc,IAAS,aAC/E,KAAK,IAAI,EAAO,GAAY,KAAW,IACrC,KAAK,MAAM,IAAkB,KAAW,IAAK,EAAE,GAAG,IAAI,cAAc,IAAS,aAC/E,KAAK,IAAI,EAAO,GAAG,IACjB,KAAK,MAAM,IAAS,IAAY,EAAE,GAAG,IAAI,cAAc,IAAS,aAEhE,KAAK,MAAM,IAAS,EAAE,GAAG,IAAI,IAG1C,IAAY,EAAU,QAAQ,mBAAmB,QAAQ,EAElD;GASK,KAAY,GAAgB,GAAoB,IAAiB,MAAc;AAC3F,KAAI,KAAU,KAAW,QAAO;AAGhC,KADA,KAAU,IACN,KAAc,QAAa,EAAO,UAAU,EAAY,QAAO;AAEnE,KAAI,MAAQ,EAEX,CADA,IAAS,EAAO,OAAO,EAAO,SAAS,GAAY,EAAW,EAC9D,IAAS,QAAQ;UACP,MAAQ,GAAG;EACrB,IAAM,IAAU,EAAO,OAAO,GAAG,IAAa,EAAE,EAC1C,IAAU,EAAO,OAAO,EAAO,SAAS,IAAa,GAAG,KAAK,KAAK,IAAa,EAAE,CAAC;AACxF,MAAS,IAAU,QAAQ;QACjB,MAAQ,MAClB,IAAS,EAAO,OAAO,GAAG,EAAW,EACrC,KAAkB;AAGnB,QAAO;GAUK,KAAgB,GAAa,GAAiB,GAAiB,MAA4B;AAEvG,KAAI,GAAa,CAAC,UAAU,KAI1B,QAHG,MAAQ,IACJ,IAEA;CAIT,IAAM,IAAS,IAAM,KACf,IAAQ,IAAM;AAanB,QAXG,KAAU,KAAK,KAAU,MAElB,MAAU,IADb,IAGG,MAAU,IACb,IACG,KAAS,KAAK,KAAS,IAC1B,IACG,KAAS,KAAK,KAAS,IAC1B,IAEA;GAOI,KAAgB,MAAwB;AACpD,KAAI,GAAa,CAAC,SAAS,QAAQ,KAAO,GAAI,QAAO;CAErD,IAAM,IAAY,EAAI,MAAM,IAAI;AAqBhC,QAnBA,EAAE,IAAI,GAAW,SAAU,GAAK,GAAO;AActC,EAbA,KAAY,KACZ,IAAM,EAAI,QAAQ,MAAM,IAAI,EAC5B,IAAM,EAAI,QAAQ,OAAO,KAAK,EAC9B,IAAM,EAAI,QAAQ,QAAQ,OAAO,EACjC,IAAM,EAAI,QAAQ,OAAO,MAAM,EAC/B,IAAM,EAAI,QAAQ,MAAM,IAAI,EAC5B,IAAM,EAAI,QAAQ,MAAM,IAAI,EAC5B,IAAM,EAAI,QAAQ,MAAM,IAAI,EAC5B,IAAM,EAAI,QAAQ,QAAQ,OAAO,EACjC,IAAM,EAAI,QAAQ,MAAM,IAAI,EAC5B,IAAM,EAAI,QAAQ,OAAO,OAAO,EAChC,IAAM,EAAI,QAAQ,OAAO,MAAM,EAE/B,EAAU,KAAS;GAClB,EAEF,IAAM,EAAU,KAAK,IAAI,EAElB;GAMK,KAAc,MAAwB;CAClD,IAAM,IAAkC;EACvC,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAC7C,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAC7C,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAC7C,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAC7C,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAAK,GAAK;EAC7C,GAAK;EAAM,GAAK;EAAQ,GAAK;EAAI,GAAK;EAAK,GAAK;EAChD,GAAK;EAAK,GAAK;EAAK,GAAK;EACzB,EAEK,IAAY,EAAI,MAAM,IAAI;AAiBhC,QAfA,EAAE,IAAI,GAAW,SAAU,GAAK,GAAO;EACtC,IAAM,IAAmB,EAAE;AAC3B,OAAK,IAAI,IAAI,GAAG,IAAI,EAAI,QAAQ,EAAE,EACjC,GAAO,KACN,EAAG,EAAI,OAAO,EAAG,EAAI,GAAG,aAAa,KAAK,QAAa,EAAI,MAAM,EAAG,EAAI,GAAG,aAAa,EAAE,QAAQ,QAAQ,SAAU,GAAO;AAC1H,UAAO,EAAM,aAAa;IACzB,CACF;AAGF,IAAU,KAAS,EAAO,KAAK,GAAG;GACjC,EAEF,IAAM,EAAU,KAAK,IAAI,EAElB;GAMK,KAAoB,OAChC,IAAM,EACJ,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,SAAS,EAElB,IAOK,KAAiB,GAAc,MAA+E;CAC1H,IAAI,IAAwB;AAE5B,SAAQ,EAAY,UAApB;EACC,KAAK;EACL,KAAK;AACJ,OAAI;IACH,IAAI,IAAe,EAAY,OAAO;AAGtC,IAFI,EAAY,YAAY,aAAU,IAAe,EAAa,QAAQ,eAAe,OAAO,GAEhG,IAAa,OAAO,MAAM,IAAe,KAAK,KAAK;WAChC;AACnB,WAAO;;AAGR;;AAKF,QAFA,IAAO,EAAK,QAAQ,GAAS,4BAA0B,EAEhD;GAMK,KAAoB,MACzB,EAAI,MAAM,qEAAqE,EAAE,KAAI,MAAS,EAAM,aAAa,CAAC,CAAC,KAAK,IAAI,EAQvH,KAA4B,MAEjC,yBADU,yBAAyB,EAAY,aAAa,GAAG,UAS1D,KAAe,MAAyB;CACpD,IAAM,IAAe,GAAiB,EAChC,IAAoB,qCAEpB,IAAmB,OAAO,iCAAiC,IAAe,EAAkB,IAAI,MAAM;AAC5G,KAAO,EAAK,QAAQ,GAAc,wEAAkE;CAEpG,IAAM,IAAiB,OAAO,+BAA+B,IAAe,EAAkB,IAAI,MAAM;AAOxG,QANA,IAAO,EAAK,QAAQ,GAAY,2EAAqE,EAErG,IAAO,EAAK,WAAW,SAAS,OAAO,EACvC,IAAO,EAAK,WAAW,KAAK,UAAU,EACtC,IAAO,EAAK,WAAW,aAAa,GAAG,EAEhC;GAMK,KAAgB,MACrB,EAAI,OAAO,EAAE,CAAC,aAAa,GAAG,EAAI,MAAM,EAAE,EAMrC,KAAiB,IAAiB,OAAe;CAC7D,IAEI,IAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,GAAQ,IAC3B,MAAU,iEAAE,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAS;AAGjD,QAAO"}
|
|
1
|
+
{"version":3,"file":"string.js","names":[],"sources":["../../src/core/utils/string.ts"],"sourcesContent":["/**\n * Работа со строками\n * @packageDocumentation\n */\n\nimport { getDomainRegexp } from '@/core/utils/check';\nimport { useI18nLang } from '@/core/plugins/i18n';\n\nexport const REGEXP_START_SYMBOL_ICON = new RegExp('^[^a-zа-я0-9_%#!?.:\\'\"«»[\\\\](){} \\\\r\\\\n\\\\t<>&/+-]', 'i');\n\n/**\n * Извлекает иконку и оставшийся контент из строки\n *\n * Возвращает объект со свойствами:\n * - `icon`: содержит символ иконки, если он присутствует, иначе `null`\n * - `content`: содержит оставшийся текст без символа иконки, если он был извлечен, или всю строку\n */\nexport const extractIconAndContent = (content: string) => {\n\tconst iconExists = content?.[0]?.match(REGEXP_START_SYMBOL_ICON);\n\n\treturn {\n\t\ticon: iconExists ? content[0] : null,\n\t\tcontent: iconExists ? content.substring(1) : content,\n\t};\n};\n\n/**\n * Сгенерировать числовой хэш от строки для идентификатора\n */\nexport const genIntHash = (string: string): number => {\n\tstring += '';\n\n\tlet hash = 0;\n\tif (!string.length) return hash;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst char = string.charCodeAt(i);\n\t\thash = ((hash << 5) - hash) + char;\n\t\thash = hash & hash;\n\t}\n\n\tif (hash < 0) hash *= -1;\n\n\treturn hash;\n};\n\n/**\n * Проверить, что переданная строка является URL\n */\nexport const isUrl = (url: string): boolean => {\n\treturn /^\\w+:\\/\\/([\\w-]+\\.)+[\\w-]+(:\\d+)?(\\/|$)/.test(url);\n};\n\n/**\n * Добавляет пробелы между разрядами если требуется\n * @param nStr строка с числом\n */\nexport const addCommasWhite = (n: number | string): string => {\n\tlet nStr = n + '';\n\n\tnStr = nStr.replace('-', '–');\n\n\tlet x = nStr.split('.');\n\tlet x1 = x[0];\n\tlet x2 = (x.length > 1) ? ('.' + x[1]) : '';\n\n\tif (x1.replace(/[+–]/, '').length <= 4) return nStr;\n\n\tconst rgx = /(\\d+)(\\d{3})/;\n\twhile (rgx.test(x1)) {\n\t\tx1 = x1.replace(rgx, '$1' + ' ' + '$2');\n\t}\n\treturn x1 + x2;\n};\n\n/**\n * Вставляет HTML-код разрыва строки перед каждым переводом строки\n */\nexport const nl2br = (str: string): string => {\n\tif (str === undefined) return '';\n\n\treturn str.replace(/\\r\\n|\\r|\\n/g, '<br>');\n};\n/**\n * Проверяет, является ли строка числом (целым или с плавающей точкой)\n */\nconst isNumeric = (string: number | string): boolean => {\n\tif (typeof string === 'string') {\n\t\treturn string.trim() !== '' && !isNaN(Number(string));\n\t}\n\n\treturn true;\n};\n\n/**\n * Перевести число без деситичной приставки в число с деситичной приставкой степеней тысячи (с параметрами по умолчанию 1255 -> '1.26 K')\n * @param number\n * @param precision - точность, количество знаков после запятой\n * @param dimension - размерность, по умолчанию 1000\n * @param suffix - суффикс к десятичной приставке (по умолчанию выводится латинская заглавная буква)\n */\nexport const numberWithWord = (number: number | string, precision = 2, dimension = 1000, suffix = ''): string => {\n\tif (!isNumeric(number)) {\n\t\treturn String(number);\n\t} else {\n\t\tnumber = Number(number);\n\t}\n\n\tconst k = Math.pow(10, precision);\n\n\tlet numberStr: string;\n\tif (Math.abs(number) > Math.pow(dimension, 3)) {\n\t\tnumberStr = Math.round(number / Math.pow(dimension, 3) * k) / k + ' <small>G' + suffix + '</small>';\n\t} else if (Math.abs(number) > Math.pow(dimension, 2)) {\n\t\tnumberStr = Math.round(number / Math.pow(dimension, 2) * k) / k + ' <small>M' + suffix + '</small>';\n\t} else if (Math.abs(number) > dimension) {\n\t\tnumberStr = Math.round(number / dimension * k) / k + ' <small>K' + suffix + '</small>';\n\t} else {\n\t\tnumberStr = Math.round(number * k) / k + '';\n\t}\n\n\tnumberStr = numberStr.replace(/^(-?\\d+)(\\d{3})/, '$1 $2');\n\n\treturn numberStr;\n};\n\n/**\n * Обрезать текст под три точки\n * @param string\n * @param max_length - максимальное количество символов текста, остальное обрежеться\n * @param pos - область обрезки 0-начало | 1-середина | 2-конец строки\n */\nexport const ellipsis = (string: string, max_length: number, pos: 0 | 1 | 2 = 1): string => {\n\tif (string == undefined) return '';\n\n\tstring += '';\n\tif (max_length == undefined || string.length <= max_length) return string;\n\n\tif (pos === 0) {\n\t\tstring = string.substr(string.length - max_length, max_length);\n\t\tstring = '...' + string;\n\t} else if (pos === 1) {\n\t\tconst string1 = string.substr(0, max_length / 2);\n\t\tconst string2 = string.substr(string.length - max_length / 2, Math.ceil(max_length / 2));\n\t\tstring = string1 + '...' + string2;\n\t} else if (pos === 2) {\n\t\tstring = string.substr(0, max_length);\n\t\tstring = string + '...';\n\t}\n\n\treturn string;\n};\n\n/**\n * Сгенерировать строку текста для вывода количества в разном склонении\n * @param num\n * @param ending0 - родительный падеж, множ. число (10 модулей)\n * @param ending1 - именительный падеж, ед. число (1 модуль)\n * @param ending2 - винительный падеж, множ. число (3 модуля)\n */\nexport const numberEnding = (num: number, ending0: string, ending1: string, ending2: string): string => {\n\t// склонение по множественному числу\n\tif (useI18nLang().value === 'en') {\n\t\tif (num === 1) {\n\t\t\treturn ending1;\n\t\t} else {\n\t\t\treturn ending0;\n\t\t}\n\t}\n\n\tconst num100 = num % 100;\n\tconst num10 = num % 10;\n\n\tif (num100 >= 5 && num100 <= 20) {\n\t\treturn ending0;\n\t} else if (num10 === 0) {\n\t\treturn ending0;\n\t} else if (num10 === 1) {\n\t\treturn ending1;\n\t} else if (num10 >= 2 && num10 <= 4) {\n\t\treturn ending2;\n\t} else if (num10 >= 5 && num10 <= 9) {\n\t\treturn ending0;\n\t} else {\n\t\treturn ending2;\n\t}\n};\n\n/**\n * Перевести строку в родительный падеж\n */\nexport const toRoditPadej = (str: string): string => {\n\tif (useI18nLang().value != 'ru' || str == '') return str;\n\n\tconst str_array = str.split(' ');\n\n\t$.map(str_array, function (str, index) {\n\t\tstr = str + 'а';\n\t\tstr = str.replace('оа', 'о');\n\t\tstr = str.replace('аяа', 'ой');\n\t\tstr = str.replace('шийа', 'шого');\n\t\tstr = str.replace('ыйа', 'ого');\n\t\tstr = str.replace('йа', 'я');\n\t\tstr = str.replace('ьа', 'я');\n\t\tstr = str.replace('яа', 'и');\n\t\tstr = str.replace('оваа', 'овой');\n\t\tstr = str.replace('аа', 'ы');\n\t\tstr = str.replace('кия', 'кого');\n\t\tstr = str.replace('каи', 'кой');\n\n\t\tstr_array[index] = str;\n\t});\n\n\tstr = str_array.join(' ');\n\n\treturn str;\n};\n\n/**\n * Транслитерация текста\n */\nexport const rusToLatin = (str: string): string => {\n\tconst ru: { [index: string]: string } = {\n\t\t'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd',\n\t\t'е': 'e', 'ё': 'e', 'ж': 'j', 'з': 'z', 'и': 'i',\n\t\t'й': 'i', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n',\n\t\t'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't',\n\t\t'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch',\n\t\t'ш': 'sh', 'щ': 'shch', 'ъ': '', 'ы': 'y', 'ь': '',\n\t\t'э': 'e', 'ю': 'u', 'я': 'ya',\n\t};\n\n\tconst str_array = str.split(' ');\n\n\t$.map(str_array, function (str, index) {\n\t\tconst newStr: string[] = [];\n\t\tfor (let i = 0; i < str.length; ++i) {\n\t\t\tnewStr.push(\n\t\t\t\tru[str[i]] || ru[str[i].toLowerCase()] == undefined && str[i] || ru[str[i].toLowerCase()].replace(/^(.)/, function (match) {\n\t\t\t\t\treturn match.toUpperCase();\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tstr_array[index] = newStr.join('');\n\t});\n\n\tstr = str_array.join(' ');\n\n\treturn str;\n};\n\n/**\n * Замена html-символов (`&`, `<`, `>`, `\"`, `'`) на имена литер (`&` -> `&`)\n */\nexport const htmlspecialchars = (str: string): string => {\n\tstr = str\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n\n\treturn str;\n};\n\n/**\n * Выделить нужное в тексте желтым цветом\n * поиск происходит по строке fieldFilter.values[0]\n */\nexport const highlightHtml = (text: string, fieldFilter: { operator: 'CONTAINS' | 'REGEXP', values: string[] }): string => {\n\tlet regExp: RegExp | null = null;\n\n\tswitch (fieldFilter.operator) {\n\t\tcase 'CONTAINS':\n\t\tcase 'REGEXP':\n\t\t\ttry {\n\t\t\t\tlet regExpString = fieldFilter.values[0];\n\t\t\t\tif (fieldFilter.operator != 'REGEXP') regExpString = regExpString.replace(/([()\\[\\]])/g, '\\\\$1');\n\n\t\t\t\tregExp = new RegExp('(' + regExpString + ')', 'gi');\n\t\t\t} catch (exception) {\n\t\t\t\treturn text;\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\ttext = text.replace(regExp!, '<b class=\"found\">$1</b>');\n\n\treturn text;\n};\n\n/**\n * Пример: logHTTPCodesHundreds => log_http_codes_hundreds\n */\nexport const camelToSnakeCase = (str: string): string | undefined => {\n\treturn str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)?.map(token => token.toLowerCase()).join('_');\n};\n\n/**\n * Получить url изображения флага, по коду страны по стандарту ISO 3166-1 alpha-2\n *\n * @todo Опубликовать в CDN или брать c публичного CDN\n */\nexport const genFlagLinkByCountryCode = (countryCode: string) => {\n\tconst urlImage = '/cloud/common/flags/' + countryCode.toUpperCase() + '.svg';\n\treturn `/controller/file/?src=${urlImage}`;\n};\n\n/**\n * Обернуть все ссылки и email в тексте в html-тег `<a>`.\n *\n * Для email ставиться префикс `mailto:`\n */\nexport const addLinkTags = (text: string): string => {\n\tconst domainRegexp = getDomainRegexp();\n\tconst afterDomainRegexp = '(([\\\\/?\\\\w&=%+#;:-]*(\\\\.\\\\w+)?))*';\n\n\tconst regexpMailto = new RegExp(`(^|[\\\\s>(),])([a-z0-9а-яё_.]+@${domainRegexp}${afterDomainRegexp})`, 'gui');\n\ttext = text.replace(regexpMailto, `$1<a href=\"mailto:$2\" target=\"_blank\" rel=\"noopener\">↑[$2]↓</a>`);\n\n\tconst regexpLink = new RegExp(`(^|[\\\\s>(),])(https?:\\/\\/)?(${domainRegexp}${afterDomainRegexp})`, 'gui');\n\ttext = text.replace(regexpLink, `$1<a href=\"√$2$3\" target=\"_blank\" rel=\"nofollow noopener\">$2$3</a>`);\n\n\ttext = text.replaceAll('√http', 'http');\n\ttext = text.replaceAll('√', 'http://');\n\ttext = text.replaceAll(/(↑\\[|]↓)/g, '');\n\n\treturn text;\n};\n\n/**\n * Перевести первую букву строки в верхний регистр\n */\nexport const toCapitalize = (str: string): string => {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n/**\n * Получить случайную строку\n */\nexport const getRandomHash = (length: number = 20): string => {\n\tconst l = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';\n\n\tlet result = '';\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += l[Math.floor(Math.random() * l.length)];\n\t}\n\n\treturn result;\n};\n"],"mappings":"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"}
|
package/utils/system.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([`require`,`exports`],function(e,t){"use strict";if(n===void 0)var n=window.Vue;Object.defineProperty(t
|
|
1
|
+
define([`require`,`exports`],function(e,t){"use strict";if(n===void 0)var n=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.waitWhile=t.sleepWhile=t.sleep=void 0,t.waitWhile=(e,t=10,n=3e4)=>{if(e())return new Promise((r,i)=>{let a=setTimeout(()=>{clearInterval(o),i(`Condition is no resolve: timeout`)},n),o=setInterval(()=>{e()||(clearTimeout(a),clearInterval(o),r())},t)})},t.sleep=e=>new Promise(t=>{setTimeout(()=>{t()},e)}),t.sleepWhile=(e,t=300,n=10)=>{if(e())return new Promise(r=>{let i=setTimeout(()=>{clearInterval(a),r()},t),a=setInterval(()=>{e()||(clearTimeout(i),clearInterval(a),r())},n)})}});
|
|
2
2
|
//# sourceMappingURL=system.amd.js.map
|
package/utils/system.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["utils/system.js","../../src/core/utils/system.ts"],"names":["vue","exports"],"mappings":"AAAA,OAAO,CAAC,UAAW,
|
|
1
|
+
{"version":3,"sources":["utils/system.js","../../src/core/utils/system.ts"],"names":["vue","exports"],"mappings":"AAAA,OAAO,CAAC,UAAW,SAAS,EAAG,SAAU,EAAS,EAAS,CCY9C,aAAA,GAAAA,IAAA,OAAA,IAAAA,EAAA,OAAA,IACP,OAEL,eAAWC,EAAwB,aAAW,CAAA,MAAA,EAAA,CAAA,EAC7C,EAAqB,UAAA,EAAiB,WAAA,EAAA,MAAA,IAAA,GDYpC,EAAQ,WCNI,EAAA,EAAA,GAAA,EAAA,MAAkB,CAChB,GACd,EAAA,EAKO,OAAA,IAAA,SAAA,EAAA,IAAA,CACT,IAAA,EAAA,eAAA,CASU,cAA2B,CAAA,EAAA,EAAA,kCAAA,CACrC,EAAiB,CAAA,EAAA,EAAA,gBAAA,CACR,EAAA,IAAA,aAAA,CAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EACD,EAAA,CAAA,CAUsC,CAAA,CAC1C,EDxBF,EAAQ,MC0BX,GAAO,IAAI,QAAc,GAAW,CAC7B,eAAa,CAClB,EAAA,CAGO,EAEF,CAAA,CACL,CAAe,EDjCd,EAAQ,YCkCR,EAAA,EAAA,IAAuB,EACvB,KAAA,CAIO,GAAA,EAAA,EACT,OAAA,IAAA,QAAA,GAAA,CACF,IAAA,EAAA,eAAA,CDjDoB,cAAc,CAAC,EAAG,EAAE,CACxB,EAAG,CAAC,EAAG,EAAI,gBAAkB,CACzB,EAAE,IAAM,aAAa,CAAC,EAAG,cAAc,CAAC,EAAG,EAAE,EACjD,EAAG,CAAC,CACR,CAAC,CACT,CAIJ,CAAC","sourcesContent":["define([\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.waitWhile = exports.sleepWhile = exports.sleep = void 0;\n //#region src/core/utils/system.ts\n var e = (e, t = 10, n = 3e4) => {\n if (e())\n return new Promise((r, i) => {\n let a = setTimeout(() => {\n clearInterval(o), i(\"Condition is no resolve: timeout\");\n }, n), o = setInterval(() => {\n e() || (clearTimeout(a), clearInterval(o), r());\n }, t);\n });\n }, t = (e) => new Promise((t) => {\n setTimeout(() => {\n t();\n }, e);\n }), n = (e, t = 300, n = 10) => {\n if (e())\n return new Promise((r) => {\n let i = setTimeout(() => {\n clearInterval(a), r();\n }, t), a = setInterval(() => {\n e() || (clearTimeout(i), clearInterval(a), r());\n }, n);\n });\n };\n exports.waitWhile = e;\n exports.sleep = t;\n exports.sleepWhile = n;\n});\n//# sourceMappingURL=system.js.map\n","/**\n * Системные утилиты\n * @packageDocumentation\n */\n\n/**\n * Ждать, пока условие истинно\n *\n * @param condition - функция, вычисляющая значение\n * @param period - период в мс между выполнениями condition()\n * @param timeout - максмальное время ожидания в мс\n */\nexport const waitWhile = (condition: Function, period: number = 10, timeout = 30_000) => {\n\tif (!condition()) return;\n\n\treturn new Promise<void>((resolve, reject) => {\n\t\tconst timerTimeout = setTimeout(() => {\n\t\t\tclearInterval(timer);\n\n\t\t\treject('Condition is no resolve: timeout');\n\t\t}, timeout);\n\n\t\tconst timer = setInterval(() => {\n\t\t\tif (!condition()) {\n\t\t\t\tclearTimeout(timerTimeout);\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, period);\n\t});\n};\n\n/**\n * Приостановить выполнение кода\n *\n * @param delay - длительность паузы в мс\n */\nexport const sleep = (delay: number) => {\n\treturn new Promise<void>((resolve) => {\n\t\tsetTimeout(() => {\n\t\t\tresolve();\n\t\t}, delay);\n\t});\n};\n\n/**\n * Приостановить выполнение кода пока условие истинно\n * @param condition - функция, вычисляющая значение\n * @param delay - время задержки в мс\n * @param period - период в мс между выполнениями condition()\n */\nexport const sleepWhile = (condition: Function, delay: number = 300, period: number = 10) => {\n\tif (!condition()) return;\n\n\treturn new Promise<void>(resolve => {\n\t\tconst timerDelay = setTimeout(() => {\n\t\t\tclearInterval(timer);\n\n\t\t\tresolve();\n\t\t}, delay);\n\n\t\tconst timer = setInterval(() => {\n\t\t\tif (!condition()) {\n\t\t\t\tclearTimeout(timerDelay);\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, period);\n\t});\n};\n"]}
|
package/utils/system.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '../src/core/utils/system'
|
|
1
|
+
export * from '../src/core/utils/system.js'
|
|
2
2
|
export {}
|
package/utils/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","names":[],"sources":["../../src/core/utils/system.ts"],"sourcesContent":["/**\n * Системные утилиты\n * @packageDocumentation\n */\n\n/**\n * Ждать, пока условие истинно\n *\n * @param condition - функция, вычисляющая значение\n * @param period - период в мс между выполнениями condition()\n * @param timeout - максмальное время ожидания в мс\n */\nexport const waitWhile = (condition: Function, period: number = 10, timeout = 30_000) => {\n\tif (!condition()) return;\n\n\treturn new Promise<void>((resolve, reject) => {\n\t\tconst timerTimeout = setTimeout(() => {\n\t\t\tclearInterval(timer);\n\n\t\t\treject('Condition is no resolve: timeout');\n\t\t}, timeout);\n\n\t\tconst timer = setInterval(() => {\n\t\t\tif (!condition()) {\n\t\t\t\tclearTimeout(timerTimeout);\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, period);\n\t});\n};\n\n/**\n * Приостановить выполнение кода\n *\n * @param delay - длительность паузы в мс\n */\nexport const sleep = (delay: number) => {\n\treturn new Promise<void>((resolve) => {\n\t\tsetTimeout(() => {\n\t\t\tresolve();\n\t\t}, delay);\n\t});\n};\n\n/**\n * Приостановить выполнение кода пока условие истинно\n * @param condition - функция, вычисляющая значение\n * @param delay - время задержки в мс\n * @param period - период в мс между выполнениями condition()\n */\nexport const sleepWhile = (condition: Function, delay: number = 300, period: number = 10) => {\n\tif (!condition()) return;\n\n\treturn new Promise<void>(resolve => {\n\t\tconst timerDelay = setTimeout(() => {\n\t\t\tclearInterval(timer);\n\n\t\t\tresolve();\n\t\t}, delay);\n\n\t\tconst timer = setInterval(() => {\n\t\t\tif (!condition()) {\n\t\t\t\tclearTimeout(timerDelay);\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, period);\n\t});\n};\n"],"mappings":";AAYA,IAAa,KAAa,GAAqB,IAAiB,IAAI,IAAU,QAAW;
|
|
1
|
+
{"version":3,"file":"system.js","names":[],"sources":["../../src/core/utils/system.ts"],"sourcesContent":["/**\n * Системные утилиты\n * @packageDocumentation\n */\n\n/**\n * Ждать, пока условие истинно\n *\n * @param condition - функция, вычисляющая значение\n * @param period - период в мс между выполнениями condition()\n * @param timeout - максмальное время ожидания в мс\n */\nexport const waitWhile = (condition: Function, period: number = 10, timeout = 30_000) => {\n\tif (!condition()) return;\n\n\treturn new Promise<void>((resolve, reject) => {\n\t\tconst timerTimeout = setTimeout(() => {\n\t\t\tclearInterval(timer);\n\n\t\t\treject('Condition is no resolve: timeout');\n\t\t}, timeout);\n\n\t\tconst timer = setInterval(() => {\n\t\t\tif (!condition()) {\n\t\t\t\tclearTimeout(timerTimeout);\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, period);\n\t});\n};\n\n/**\n * Приостановить выполнение кода\n *\n * @param delay - длительность паузы в мс\n */\nexport const sleep = (delay: number) => {\n\treturn new Promise<void>((resolve) => {\n\t\tsetTimeout(() => {\n\t\t\tresolve();\n\t\t}, delay);\n\t});\n};\n\n/**\n * Приостановить выполнение кода пока условие истинно\n * @param condition - функция, вычисляющая значение\n * @param delay - время задержки в мс\n * @param period - период в мс между выполнениями condition()\n */\nexport const sleepWhile = (condition: Function, delay: number = 300, period: number = 10) => {\n\tif (!condition()) return;\n\n\treturn new Promise<void>(resolve => {\n\t\tconst timerDelay = setTimeout(() => {\n\t\t\tclearInterval(timer);\n\n\t\t\tresolve();\n\t\t}, delay);\n\n\t\tconst timer = setInterval(() => {\n\t\t\tif (!condition()) {\n\t\t\t\tclearTimeout(timerDelay);\n\t\t\t\tclearInterval(timer);\n\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, period);\n\t});\n};\n"],"mappings":";AAYA,IAAa,KAAa,GAAqB,IAAiB,IAAI,IAAU,QAAW;CACnF,MAAU,GAEf,OAAO,IAAI,SAAe,GAAS,MAAW;EAC7C,IAAM,IAAe,iBAAiB;GAGrC,AAFA,cAAc,CAAK,GAEnB,EAAO,kCAAkC;EAC1C,GAAG,CAAO,GAEJ,IAAQ,kBAAkB;GAC/B,AAAK,EAAU,MACd,aAAa,CAAY,GACzB,cAAc,CAAK,GAEnB,EAAQ;EAEV,GAAG,CAAM;CACV,CAAC;AACF,GAOa,KAAS,MACd,IAAI,SAAe,MAAY;CACrC,iBAAiB;EAChB,EAAQ;CACT,GAAG,CAAK;AACT,CAAC,GASW,KAAc,GAAqB,IAAgB,KAAK,IAAiB,OAAO;CACvF,MAAU,GAEf,OAAO,IAAI,SAAc,MAAW;EACnC,IAAM,IAAa,iBAAiB;GAGnC,AAFA,cAAc,CAAK,GAEnB,EAAQ;EACT,GAAG,CAAK,GAEF,IAAQ,kBAAkB;GAC/B,AAAK,EAAU,MACd,aAAa,CAAU,GACvB,cAAc,CAAK,GAEnB,EAAQ;EAEV,GAAG,CAAM;CACV,CAAC;AACF"}
|
package/utils/url.amd.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
define([`require`,`exports`,`../.chunks/punycode.es6-
|
|
1
|
+
define([`require`,`exports`,`../.chunks/punycode.es6-BZRFIj88.amd`],function(e,t,n){"use strict";if(r===void 0)var r=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.toPuny=t.normalize=t.hostToLowerCase=t.getHost=t.fromPuny=t.encode=t.decode=t.base64URLEncode=t.base64URLDecode=void 0;var i=(e=``)=>{if(e=e.replace(/[\r\n]/g,` `).trim(),e.indexOf(`xn--`)===-1)return e;if(e.indexOf(`/`)===-1)return n.t.toUnicode(e);let t=o(e),r=t.toLowerCase();return r=n.t.toUnicode(r),t!==r&&(e=e.replace(t,r)),e},a=e=>{if(e=e.replace(/[\r\n]/g,` `).trim(),e.indexOf(`/`)===-1)return n.t.toASCII(e);let t=o(e),r=t.toLowerCase();return r=n.t.toASCII(r),t!==r&&(e=e.replace(t,r)),e},o=e=>e.replace(/(?:^\w+:\/\/)?([^:/]+).*/i,`$1`),s=e=>(e=i(e),e=c(e),e),c=e=>{let t=o(e),n=t.toLowerCase();return t!==n&&(e=e.replace(t,n)),e},l=e=>escape(p(e)),u=e=>m(unescape(e)),d=e=>btoa(p(e)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``),f=e=>{let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=t.length%4,r=n===0?t:t+`=`.repeat(4-n);try{return m(atob(r))}catch{return null}},p=e=>{e=e.replace(/\r\n/g,`
|
|
2
2
|
`);let t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r<128?t+=String.fromCharCode(r):r>127&&r<2048?(t+=String.fromCharCode(r>>6|192),t+=String.fromCharCode(r&63|128)):(t+=String.fromCharCode(r>>12|224),t+=String.fromCharCode(r>>6&63|128),t+=String.fromCharCode(r&63|128))}return t},m=e=>{let t=``,n=0,r=0,i=0;for(;n<e.length;)if(r=e.charCodeAt(n),r<128)t+=String.fromCharCode(r),n++;else if(r>191&&r<224)i=e.charCodeAt(n+1),t+=String.fromCharCode((r&31)<<6|i&63),n+=2;else{i=e.charCodeAt(n+1);let a=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(i&63)<<6|a&63),n+=3}return t};t.fromPuny=i,t.toPuny=a,t.getHost=o,t.normalize=s,t.hostToLowerCase=c,t.encode=l,t.decode=u,t.base64URLEncode=d,t.base64URLDecode=f});
|
|
3
3
|
//# sourceMappingURL=url.amd.js.map
|
package/utils/url.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["utils/url.js","../../src/core/utils/url.ts"],"names":["vue","exports","t","punycode_es6_B_5kB2YI_esm_js_1","n","r","i","a","o","u","s","d","c","l"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/punycode.es6-B-5kB2YI.esm.js\"], function (require, exports, punycode_es6_B_5kB2YI_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.toPuny = exports.normalize = exports.hostToLowerCase = exports.getHost = exports.fromPuny = exports.encode = exports.decode = exports.base64URLEncode = exports.base64URLDecode = void 0;\n //#region src/core/utils/url.ts\n var t = (t = \"\") => {\n if (t = t.replace(/[\\r\\n]/g, \" \").trim(), t.indexOf(\"xn--\") === -1)\n return t;\n if (t.indexOf(\"/\") === -1)\n return punycode_es6_B_5kB2YI_esm_js_1.t.toUnicode(t);\n let n = r(t), i = n.toLowerCase();\n return i = punycode_es6_B_5kB2YI_esm_js_1.t.toUnicode(i), n !== i && (t = t.replace(n, i)), t;\n }, n = (t) => {\n if (t = t.replace(/[\\r\\n]/g, \" \").trim(), t.indexOf(\"/\") === -1)\n return punycode_es6_B_5kB2YI_esm_js_1.t.toASCII(t);\n let n = r(t), i = n.toLowerCase();\n return i = punycode_es6_B_5kB2YI_esm_js_1.t.toASCII(i), n !== i && (t = t.replace(n, i)), t;\n }, r = (e) => e.replace(/(?:^\\w+:\\/\\/)?([^:/]+).*/i, \"$1\"), i = (e) => (e = t(e), e = a(e), e), a = (e) => {\n let t = r(e), n = t.toLowerCase();\n return t !== n && (e = e.replace(t, n)), e;\n }, o = (e) => escape(u(e)), s = (e) => d(unescape(e)), c = (e) => btoa(u(e)).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/g, \"\"), l = (e) => {\n let t = e.replace(/-/g, \"+\").replace(/_/g, \"/\"), n = t.length % 4, r = n === 0 ? t : t + \"=\".repeat(4 - n);\n try {\n return d(atob(r));\n }\n catch {\n return null;\n }\n }, u = (e) => {\n e = e.replace(/\\r\\n/g, \"\\n\");\n let t = \"\";\n for (let n = 0; n < e.length; n++) {\n let r = e.charCodeAt(n);\n r < 128 ? t += String.fromCharCode(r) : r > 127 && r < 2048 ? (t += String.fromCharCode(r >> 6 | 192), t += String.fromCharCode(r & 63 | 128)) : (t += String.fromCharCode(r >> 12 | 224), t += String.fromCharCode(r >> 6 & 63 | 128), t += String.fromCharCode(r & 63 | 128));\n }\n return t;\n }, d = (e) => {\n let t = \"\", n = 0, r = 0, i = 0;\n for (; n < e.length;)\n if (r = e.charCodeAt(n), r < 128)\n t += String.fromCharCode(r), n++;\n else if (r > 191 && r < 224)\n i = e.charCodeAt(n + 1), t += String.fromCharCode((r & 31) << 6 | i & 63), n += 2;\n else {\n i = e.charCodeAt(n + 1);\n let a = e.charCodeAt(n + 2);\n t += String.fromCharCode((r & 15) << 12 | (i & 63) << 6 | a & 63), n += 3;\n }\n return t;\n };\n exports.fromPuny = t;\n exports.toPuny = n;\n exports.getHost = r;\n exports.normalize = i;\n exports.hostToLowerCase = a;\n exports.encode = o;\n exports.decode = s;\n exports.base64URLEncode = c;\n exports.base64URLDecode = l;\n});\n//# sourceMappingURL=url.js.map\n","/**\n * Работа с урлами\n * @packageDocumentation\n */\n\nimport punycode from 'punycode';\n\n/**\n * Раскодировать все не ASCII символы в домене URL\n * @param url - домен в ASCII формате\n * @return домен в Unicode формате\n */\nexport const fromPuny = (url: string = ''): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('xn--') === -1) return url;\n\tif (url.indexOf('/') === -1) return punycode.toUnicode(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toUnicode(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Закодировать все не ASCII символы в домене URL\n * @param url - домен в Unicode формате\n * @return домен в ASCII формате\n */\nexport const toPuny = (url: string): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('/') === -1) return punycode.toASCII(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toASCII(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить имя хоста из URL\n */\nexport const getHost = (url: string): string => {\n\treturn url.replace(/(?:^\\w+:\\/\\/)?([^:/]+).*/i, '$1');\n};\n\n/**\n * Привести url к стандартному виду (не в пуникоде и хост в нижнем регистре)\n */\nexport const normalize = (url: string): string => {\n\turl = fromPuny(url);\n\turl = hostToLowerCase(url);\n\n\treturn url;\n};\n\n/**\n * Перевести в url имя хоста в нижний регистр\n */\nexport const hostToLowerCase = (url: string): string => {\n\tconst host = getHost(url);\n\tconst hostNormal = host.toLowerCase();\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить закодированную строку\n */\nexport const encode = (string: string): string => { return escape(utf8Encode(string)); };\n\n/**\n * Раскодировать строку, полученную функцией encode\n */\nexport const decode = (string: string): string => { return utf8Decode(unescape(string)); };\n\n/**\n * Кодирует строку в Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLEncode\n */\nexport const base64URLEncode = (value: string): string => {\n\tconst base64 = btoa(utf8Encode(value));\n\n\treturn base64\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_')\n\t\t.replace(/=+$/g, '');\n};\n\n/**\n * Декодирует строку из Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLDecode\n */\nexport const base64URLDecode = (value: string): string | null => {\n\tconst base64 = value\n\t\t.replace(/-/g, '+')\n\t\t.replace(/_/g, '/');\n\n\tconst paddingLength = base64.length % 4;\n\tconst padded = paddingLength === 0 ? base64 : base64 + '='.repeat(4 - paddingLength);\n\n\ttry {\n\t\treturn utf8Decode(atob(padded));\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nconst utf8Encode = (string: string): string => {\n\tstring = string.replace(/\\r\\n/g, '\\n');\n\tlet utftext = '';\n\n\tfor (let n = 0; n < string.length; n++) {\n\t\tconst c = string.charCodeAt(n);\n\n\t\tif (c < 128) {\n\t\t\tutftext += String.fromCharCode(c);\n\t\t} else if ((c > 127) && (c < 2048)) {\n\t\t\tutftext += String.fromCharCode((c >> 6) | 192);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t} else {\n\t\t\tutftext += String.fromCharCode((c >> 12) | 224);\n\t\t\tutftext += String.fromCharCode(((c >> 6) & 63) | 128);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t}\n\t}\n\n\treturn utftext;\n};\n\n/**\n * private method for UTF-8 decoding\n */\nconst utf8Decode = (utftext: string): string => {\n\tlet string = '';\n\tlet i = 0;\n\tlet c = 0,\n\t\tc1 = 0,\n\t\tc2 = 0;\n\n\twhile (i < utftext.length) {\n\t\tc = utftext.charCodeAt(i);\n\n\t\tif (c < 128) {\n\t\t\tstring += String.fromCharCode(c);\n\t\t\ti++;\n\t\t} else if ((c > 191) && (c < 224)) {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tstring += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\ti += 2;\n\t\t} else {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tlet c3 = utftext.charCodeAt(i + 2);\n\t\t\tstring += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn string;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["utils/url.js","../../src/core/utils/url.ts"],"names":["vue","exports","t","punycode_es6_BZRFIj88_esm_js_1","n","r","i","a","o","u","s","d","c","l"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/punycode.es6-BZRFIj88.esm.js\"], function (require, exports, punycode_es6_BZRFIj88_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.toPuny = exports.normalize = exports.hostToLowerCase = exports.getHost = exports.fromPuny = exports.encode = exports.decode = exports.base64URLEncode = exports.base64URLDecode = void 0;\n //#region src/core/utils/url.ts\n var t = (t = \"\") => {\n if (t = t.replace(/[\\r\\n]/g, \" \").trim(), t.indexOf(\"xn--\") === -1)\n return t;\n if (t.indexOf(\"/\") === -1)\n return punycode_es6_BZRFIj88_esm_js_1.t.toUnicode(t);\n let n = r(t), i = n.toLowerCase();\n return i = punycode_es6_BZRFIj88_esm_js_1.t.toUnicode(i), n !== i && (t = t.replace(n, i)), t;\n }, n = (t) => {\n if (t = t.replace(/[\\r\\n]/g, \" \").trim(), t.indexOf(\"/\") === -1)\n return punycode_es6_BZRFIj88_esm_js_1.t.toASCII(t);\n let n = r(t), i = n.toLowerCase();\n return i = punycode_es6_BZRFIj88_esm_js_1.t.toASCII(i), n !== i && (t = t.replace(n, i)), t;\n }, r = (e) => e.replace(/(?:^\\w+:\\/\\/)?([^:/]+).*/i, \"$1\"), i = (e) => (e = t(e), e = a(e), e), a = (e) => {\n let t = r(e), n = t.toLowerCase();\n return t !== n && (e = e.replace(t, n)), e;\n }, o = (e) => escape(u(e)), s = (e) => d(unescape(e)), c = (e) => btoa(u(e)).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/g, \"\"), l = (e) => {\n let t = e.replace(/-/g, \"+\").replace(/_/g, \"/\"), n = t.length % 4, r = n === 0 ? t : t + \"=\".repeat(4 - n);\n try {\n return d(atob(r));\n }\n catch {\n return null;\n }\n }, u = (e) => {\n e = e.replace(/\\r\\n/g, \"\\n\");\n let t = \"\";\n for (let n = 0; n < e.length; n++) {\n let r = e.charCodeAt(n);\n r < 128 ? t += String.fromCharCode(r) : r > 127 && r < 2048 ? (t += String.fromCharCode(r >> 6 | 192), t += String.fromCharCode(r & 63 | 128)) : (t += String.fromCharCode(r >> 12 | 224), t += String.fromCharCode(r >> 6 & 63 | 128), t += String.fromCharCode(r & 63 | 128));\n }\n return t;\n }, d = (e) => {\n let t = \"\", n = 0, r = 0, i = 0;\n for (; n < e.length;)\n if (r = e.charCodeAt(n), r < 128)\n t += String.fromCharCode(r), n++;\n else if (r > 191 && r < 224)\n i = e.charCodeAt(n + 1), t += String.fromCharCode((r & 31) << 6 | i & 63), n += 2;\n else {\n i = e.charCodeAt(n + 1);\n let a = e.charCodeAt(n + 2);\n t += String.fromCharCode((r & 15) << 12 | (i & 63) << 6 | a & 63), n += 3;\n }\n return t;\n };\n exports.fromPuny = t;\n exports.toPuny = n;\n exports.getHost = r;\n exports.normalize = i;\n exports.hostToLowerCase = a;\n exports.encode = o;\n exports.decode = s;\n exports.base64URLEncode = c;\n exports.base64URLDecode = l;\n});\n//# sourceMappingURL=url.js.map\n","/**\n * Работа с урлами\n * @packageDocumentation\n */\n\nimport punycode from 'punycode';\n\n/**\n * Раскодировать все не ASCII символы в домене URL\n * @param url - домен в ASCII формате\n * @return домен в Unicode формате\n */\nexport const fromPuny = (url: string = ''): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('xn--') === -1) return url;\n\tif (url.indexOf('/') === -1) return punycode.toUnicode(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toUnicode(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Закодировать все не ASCII символы в домене URL\n * @param url - домен в Unicode формате\n * @return домен в ASCII формате\n */\nexport const toPuny = (url: string): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('/') === -1) return punycode.toASCII(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toASCII(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить имя хоста из URL\n */\nexport const getHost = (url: string): string => {\n\treturn url.replace(/(?:^\\w+:\\/\\/)?([^:/]+).*/i, '$1');\n};\n\n/**\n * Привести url к стандартному виду (не в пуникоде и хост в нижнем регистре)\n */\nexport const normalize = (url: string): string => {\n\turl = fromPuny(url);\n\turl = hostToLowerCase(url);\n\n\treturn url;\n};\n\n/**\n * Перевести в url имя хоста в нижний регистр\n */\nexport const hostToLowerCase = (url: string): string => {\n\tconst host = getHost(url);\n\tconst hostNormal = host.toLowerCase();\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить закодированную строку\n */\nexport const encode = (string: string): string => { return escape(utf8Encode(string)); };\n\n/**\n * Раскодировать строку, полученную функцией encode\n */\nexport const decode = (string: string): string => { return utf8Decode(unescape(string)); };\n\n/**\n * Кодирует строку в Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLEncode\n */\nexport const base64URLEncode = (value: string): string => {\n\tconst base64 = btoa(utf8Encode(value));\n\n\treturn base64\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_')\n\t\t.replace(/=+$/g, '');\n};\n\n/**\n * Декодирует строку из Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLDecode\n */\nexport const base64URLDecode = (value: string): string | null => {\n\tconst base64 = value\n\t\t.replace(/-/g, '+')\n\t\t.replace(/_/g, '/');\n\n\tconst paddingLength = base64.length % 4;\n\tconst padded = paddingLength === 0 ? base64 : base64 + '='.repeat(4 - paddingLength);\n\n\ttry {\n\t\treturn utf8Decode(atob(padded));\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nconst utf8Encode = (string: string): string => {\n\tstring = string.replace(/\\r\\n/g, '\\n');\n\tlet utftext = '';\n\n\tfor (let n = 0; n < string.length; n++) {\n\t\tconst c = string.charCodeAt(n);\n\n\t\tif (c < 128) {\n\t\t\tutftext += String.fromCharCode(c);\n\t\t} else if ((c > 127) && (c < 2048)) {\n\t\t\tutftext += String.fromCharCode((c >> 6) | 192);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t} else {\n\t\t\tutftext += String.fromCharCode((c >> 12) | 224);\n\t\t\tutftext += String.fromCharCode(((c >> 6) & 63) | 128);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t}\n\t}\n\n\treturn utftext;\n};\n\n/**\n * private method for UTF-8 decoding\n */\nconst utf8Decode = (utftext: string): string => {\n\tlet string = '';\n\tlet i = 0;\n\tlet c = 0,\n\t\tc1 = 0,\n\t\tc2 = 0;\n\n\twhile (i < utftext.length) {\n\t\tc = utftext.charCodeAt(i);\n\n\t\tif (c < 128) {\n\t\t\tstring += String.fromCharCode(c);\n\t\t\ti++;\n\t\t} else if ((c > 191) && (c < 224)) {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tstring += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\ti += 2;\n\t\t} else {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tlet c3 = utftext.charCodeAt(i + 2);\n\t\t\tstring += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn string;\n};\n"]}
|
package/utils/url.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '../src/core/utils/url'
|
|
1
|
+
export * from '../src/core/utils/url.js'
|
|
2
2
|
export {}
|
package/utils/url.js
CHANGED
package/utils/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","names":[],"sources":["../../src/core/utils/url.ts"],"sourcesContent":["/**\n * Работа с урлами\n * @packageDocumentation\n */\n\nimport punycode from 'punycode';\n\n/**\n * Раскодировать все не ASCII символы в домене URL\n * @param url - домен в ASCII формате\n * @return домен в Unicode формате\n */\nexport const fromPuny = (url: string = ''): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('xn--') === -1) return url;\n\tif (url.indexOf('/') === -1) return punycode.toUnicode(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toUnicode(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Закодировать все не ASCII символы в домене URL\n * @param url - домен в Unicode формате\n * @return домен в ASCII формате\n */\nexport const toPuny = (url: string): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('/') === -1) return punycode.toASCII(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toASCII(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить имя хоста из URL\n */\nexport const getHost = (url: string): string => {\n\treturn url.replace(/(?:^\\w+:\\/\\/)?([^:/]+).*/i, '$1');\n};\n\n/**\n * Привести url к стандартному виду (не в пуникоде и хост в нижнем регистре)\n */\nexport const normalize = (url: string): string => {\n\turl = fromPuny(url);\n\turl = hostToLowerCase(url);\n\n\treturn url;\n};\n\n/**\n * Перевести в url имя хоста в нижний регистр\n */\nexport const hostToLowerCase = (url: string): string => {\n\tconst host = getHost(url);\n\tconst hostNormal = host.toLowerCase();\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить закодированную строку\n */\nexport const encode = (string: string): string => { return escape(utf8Encode(string)); };\n\n/**\n * Раскодировать строку, полученную функцией encode\n */\nexport const decode = (string: string): string => { return utf8Decode(unescape(string)); };\n\n/**\n * Кодирует строку в Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLEncode\n */\nexport const base64URLEncode = (value: string): string => {\n\tconst base64 = btoa(utf8Encode(value));\n\n\treturn base64\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_')\n\t\t.replace(/=+$/g, '');\n};\n\n/**\n * Декодирует строку из Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLDecode\n */\nexport const base64URLDecode = (value: string): string | null => {\n\tconst base64 = value\n\t\t.replace(/-/g, '+')\n\t\t.replace(/_/g, '/');\n\n\tconst paddingLength = base64.length % 4;\n\tconst padded = paddingLength === 0 ? base64 : base64 + '='.repeat(4 - paddingLength);\n\n\ttry {\n\t\treturn utf8Decode(atob(padded));\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nconst utf8Encode = (string: string): string => {\n\tstring = string.replace(/\\r\\n/g, '\\n');\n\tlet utftext = '';\n\n\tfor (let n = 0; n < string.length; n++) {\n\t\tconst c = string.charCodeAt(n);\n\n\t\tif (c < 128) {\n\t\t\tutftext += String.fromCharCode(c);\n\t\t} else if ((c > 127) && (c < 2048)) {\n\t\t\tutftext += String.fromCharCode((c >> 6) | 192);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t} else {\n\t\t\tutftext += String.fromCharCode((c >> 12) | 224);\n\t\t\tutftext += String.fromCharCode(((c >> 6) & 63) | 128);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t}\n\t}\n\n\treturn utftext;\n};\n\n/**\n * private method for UTF-8 decoding\n */\nconst utf8Decode = (utftext: string): string => {\n\tlet string = '';\n\tlet i = 0;\n\tlet c = 0,\n\t\tc1 = 0,\n\t\tc2 = 0;\n\n\twhile (i < utftext.length) {\n\t\tc = utftext.charCodeAt(i);\n\n\t\tif (c < 128) {\n\t\t\tstring += String.fromCharCode(c);\n\t\t\ti++;\n\t\t} else if ((c > 191) && (c < 224)) {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tstring += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\ti += 2;\n\t\t} else {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tlet c3 = utftext.charCodeAt(i + 2);\n\t\t\tstring += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn string;\n};\n"],"mappings":";;AAYA,IAAa,KAAY,IAAc,OAAe;
|
|
1
|
+
{"version":3,"file":"url.js","names":[],"sources":["../../src/core/utils/url.ts"],"sourcesContent":["/**\n * Работа с урлами\n * @packageDocumentation\n */\n\nimport punycode from 'punycode';\n\n/**\n * Раскодировать все не ASCII символы в домене URL\n * @param url - домен в ASCII формате\n * @return домен в Unicode формате\n */\nexport const fromPuny = (url: string = ''): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('xn--') === -1) return url;\n\tif (url.indexOf('/') === -1) return punycode.toUnicode(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toUnicode(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Закодировать все не ASCII символы в домене URL\n * @param url - домен в Unicode формате\n * @return домен в ASCII формате\n */\nexport const toPuny = (url: string): string => {\n\turl = url.replace(/[\\r\\n]/g, ' ').trim();\n\n\tif (url.indexOf('/') === -1) return punycode.toASCII(url);\n\n\tconst host = getHost(url);\n\n\tlet hostNormal = host.toLowerCase();\n\thostNormal = punycode.toASCII(hostNormal);\n\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить имя хоста из URL\n */\nexport const getHost = (url: string): string => {\n\treturn url.replace(/(?:^\\w+:\\/\\/)?([^:/]+).*/i, '$1');\n};\n\n/**\n * Привести url к стандартному виду (не в пуникоде и хост в нижнем регистре)\n */\nexport const normalize = (url: string): string => {\n\turl = fromPuny(url);\n\turl = hostToLowerCase(url);\n\n\treturn url;\n};\n\n/**\n * Перевести в url имя хоста в нижний регистр\n */\nexport const hostToLowerCase = (url: string): string => {\n\tconst host = getHost(url);\n\tconst hostNormal = host.toLowerCase();\n\tif (host !== hostNormal) url = url.replace(host, hostNormal);\n\n\treturn url;\n};\n\n/**\n * Получить закодированную строку\n */\nexport const encode = (string: string): string => { return escape(utf8Encode(string)); };\n\n/**\n * Раскодировать строку, полученную функцией encode\n */\nexport const decode = (string: string): string => { return utf8Decode(unescape(string)); };\n\n/**\n * Кодирует строку в Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLEncode\n */\nexport const base64URLEncode = (value: string): string => {\n\tconst base64 = btoa(utf8Encode(value));\n\n\treturn base64\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_')\n\t\t.replace(/=+$/g, '');\n};\n\n/**\n * Декодирует строку из Base64 с URL-безопасным алфавитом\n *\n * @see https://clickhouse.com/docs/ru/sql-reference/functions/string-functions#base64URLDecode\n */\nexport const base64URLDecode = (value: string): string | null => {\n\tconst base64 = value\n\t\t.replace(/-/g, '+')\n\t\t.replace(/_/g, '/');\n\n\tconst paddingLength = base64.length % 4;\n\tconst padded = paddingLength === 0 ? base64 : base64 + '='.repeat(4 - paddingLength);\n\n\ttry {\n\t\treturn utf8Decode(atob(padded));\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nconst utf8Encode = (string: string): string => {\n\tstring = string.replace(/\\r\\n/g, '\\n');\n\tlet utftext = '';\n\n\tfor (let n = 0; n < string.length; n++) {\n\t\tconst c = string.charCodeAt(n);\n\n\t\tif (c < 128) {\n\t\t\tutftext += String.fromCharCode(c);\n\t\t} else if ((c > 127) && (c < 2048)) {\n\t\t\tutftext += String.fromCharCode((c >> 6) | 192);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t} else {\n\t\t\tutftext += String.fromCharCode((c >> 12) | 224);\n\t\t\tutftext += String.fromCharCode(((c >> 6) & 63) | 128);\n\t\t\tutftext += String.fromCharCode((c & 63) | 128);\n\t\t}\n\t}\n\n\treturn utftext;\n};\n\n/**\n * private method for UTF-8 decoding\n */\nconst utf8Decode = (utftext: string): string => {\n\tlet string = '';\n\tlet i = 0;\n\tlet c = 0,\n\t\tc1 = 0,\n\t\tc2 = 0;\n\n\twhile (i < utftext.length) {\n\t\tc = utftext.charCodeAt(i);\n\n\t\tif (c < 128) {\n\t\t\tstring += String.fromCharCode(c);\n\t\t\ti++;\n\t\t} else if ((c > 191) && (c < 224)) {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tstring += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\ti += 2;\n\t\t} else {\n\t\t\tc2 = utftext.charCodeAt(i + 1);\n\t\t\tlet c3 = utftext.charCodeAt(i + 2);\n\t\t\tstring += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn string;\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[".chunks/api-DuS0Qura.esm.js","../../src/api/api/client/request-options.ts","../../src/api/api/utils/common.ts","../../src/api/api/client/request.ts","../../src/api/api/client/client.ts","../../src/api/api/index.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","i","vue","exports","t","n","r","a","e","require","resolve_1","reject_1","resolve_2","reject_2","s","c","l","u","d","f","resolve_3","reject_3","p","resolve_4","reject_4","h","g","_","y","b","x","forms_CdCS6WAQ_esm_js_1","resolve_5","reject_5","resolve_6","reject_6","resolve_7","reject_7"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\ndefine([\"require\", \"exports\", \"./forms-CdCS6WAQ.esm.js\"], function (require, exports, forms_CdCS6WAQ_esm_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.r = exports.o = exports.n = exports.i = exports.a = void 0;\n //#region src/api/api/client/request-options.ts\n var t = (e = {}) => (e = { ...e }, e.loadingEl ??= globalThis.document?.body, e.loadingShowSpinner ??= !0, e.method ??= \"POST\", e.accept ??= \"application/json\", e), n = (e, t, n) => ({\n result: e,\n errors: t,\n response: n\n }), r = (e) => e.startsWith(\"/system_2/common/\"), i = (e = !1, t = window.location.href, n) => {\n let { protocol: r, hostname: i, port: a } = new URL(t), o = i.split(\".\");\n return `${r}//${!e || o.length <= 2 || /^[\\d.]+$/.test(i) || i === \"localhost\" ? i : o.slice(-2).join(\".\")}${a ? `:${a}` : \"\"}`;\n }, a = (e) => Object.values(e).some((e) => e instanceof FileList || e instanceof File || e instanceof Blob || Array.isArray(e) && e.some((e) => e instanceof File || e instanceof Blob)), o = (e, r, i) => {\n let o = {\n inLoading: !1,\n path: r,\n url: e.options.baseUrl + r,\n options: t(e.options.requestOptions),\n mockerOptions: void 0,\n params: {},\n getInLoading: () => o.inLoading,\n setParams: (e) => (o.params = { ...e }, o),\n changeParams: (e) => (Object.assign(o.params, e), o),\n setOptions: (e) => (Object.assign(o.options, e), o),\n setMocker: (e) => (o.mockerOptions = e, o),\n call: async (e) => o.exec(e),\n callFetch: async (e, t) => o.exec(t, e),\n callInNewWindow: async (t) => {\n let n = o.genData(t), r = e.genMiddlewareCtx(o, n);\n e.options.onPrepareData?.(n, r);\n let { postInWindow: i } = await new Promise((resolve_1, reject_1) => { require([\"./lazy-CGswTOPj.esm.js\"], resolve_1, reject_1); }).then(__importStar);\n i(o.url, n, \"_blank\");\n },\n callInSelfWindow: async (t) => {\n let n = o.genData(t), r = e.genMiddlewareCtx(o, n);\n e.options.onPrepareData?.(n, r);\n let { postInWindow: i } = await new Promise((resolve_2, reject_2) => { require([\"./lazy-CGswTOPj.esm.js\"], resolve_2, reject_2); }).then(__importStar);\n i(o.url, n, \"_self\");\n },\n genData: (e, t) => {\n let n = { ...o.params };\n if (delete n.fetch_style, e) {\n let t = [...e];\n i && (t = t.filter((e) => i.includes(e))), n.fields = t;\n }\n else\n i && (n.fields = i);\n return t && (n.fetch_style = t), n;\n },\n abortByFingerprint: () => {\n if (!o.options.checkFingerprint)\n return;\n let t = o.path + o.options.checkFingerprint;\n e.abortControllers[t]?.abort(new DOMException(`Stopped previous request by fingerprint: ${o.options.checkFingerprint}`, \"AbortError\"));\n let n = new AbortController();\n return e.abortControllers[t] = n, n.signal;\n },\n async exec(t, r) {\n let i = e.options.Request, s = e.options.fetch, c = o.genData(t, r), l = e.genMiddlewareCtx(o, c);\n e.options.onPrepareData?.(c, l);\n let u = a(c);\n if (u && o.options.method !== \"POST\")\n throw Error(\"Files can be sent only in POST requests\");\n let d = o.url, f;\n if (u) {\n if (o.options.method !== \"POST\")\n throw Error(\"Files can be sent only in POST requests\");\n let { formDataSerializer: e } = await new Promise((resolve_3, reject_3) => { require([\"./lazy-CGswTOPj.esm.js\"], resolve_3, reject_3); }).then(__importStar);\n f = e(c);\n }\n else\n o.options.method === \"POST\" ? f = e.options.bodySerializer(c) : d += \"?\" + await e.options.querySerializer(c);\n let p = o.abortByFingerprint();\n if (o.mockerOptions) {\n let { genMockResponse: e } = await new Promise((resolve_4, reject_4) => { require([\"./mocker-CwZe-g4N.esm.js\"], resolve_4, reject_4); }).then(__importStar);\n return await e(o.mockerOptions, t, c, p);\n }\n let m = {\n ...e.options,\n method: o.options.method,\n body: f,\n signal: p\n }, h = new i(d, m);\n h.headers.set(\"x-request-id\", l.id), h.headers.set(\"accept\", o.options.accept), u || h.headers.set(\"content-type\", \"application/json\");\n let g = {\n ...l,\n request: h\n };\n o.inLoading = !0, o.options.onLoading?.(o.inLoading, g);\n let _, v = await e.middlewareOnRequest(h, g);\n if (v instanceof Response ? _ = v : v instanceof i && (h = v), !_)\n try {\n _ = await s(h);\n }\n catch (t) {\n _ = await e.middlewareOnError(t, g);\n }\n finally {\n o.inLoading = !1, o.options.onLoading?.(o.inLoading, g);\n }\n _ = await e.middlewareOnResponse(_, g);\n let y, b, x;\n try {\n let t = _.headers.get(\"content-type\")?.includes(\"application/json\");\n b = await _.text(), y = this.options.accept === \"application/json\" || t ? JSON.parse(b) : e.useExt ? n(b, void 0, _) : b;\n }\n catch (t) {\n if ((t instanceof SyntaxError || t instanceof TypeError) && (x = t, x.responseText = b), e.useExt && x) {\n let r = _.status, i = _.statusText;\n r === 200 && (r = 1e4, i = \"Error API response\"), y = n(null, [{\n code: r,\n string: i\n }], _), e.options.useApiConsole && console.error(t);\n }\n else\n throw t;\n }\n return e.useExt && (y.response = _, y && o.options.onApiLoaded?.(y, g, e.options.requestOptions?.onApiLoaded), y?.errors && (e.options.useApiConsole && console.warn(/* @__PURE__ */ Error(\"API error\"), { res: y }), o.options.onApiError?.(y, {\n ...g,\n formatError: x\n }, e.options.requestOptions?.onApiError)), y?.messages && o.options.onApiMessage?.(y, g)), y;\n }\n };\n return o;\n }, s = class {\n constructor(n = {}, r) {\n (0, forms_CdCS6WAQ_esm_js_1.K)(this, \"options\", void 0), (0, forms_CdCS6WAQ_esm_js_1.K)(this, \"useExt\", void 0), (0, forms_CdCS6WAQ_esm_js_1.K)(this, \"middlewares\", []), (0, forms_CdCS6WAQ_esm_js_1.K)(this, \"mokerByPath\", /* @__PURE__ */ new Map()), (0, forms_CdCS6WAQ_esm_js_1.K)(this, \"abortControllers\", {}), n.requestOptions = t(n.requestOptions), n.useApiConsole ??= !0, n.fetch ??= globalThis.fetch, n.Request ??= globalThis.Request, n.querySerializer ??= async (e) => {\n let { querySerializer: t } = await new Promise((resolve_5, reject_5) => { require([\"./lazy-CGswTOPj.esm.js\"], resolve_5, reject_5); }).then(__importStar);\n return t(e);\n }, n.bodySerializer ??= (e) => typeof e == \"string\" ? e : JSON.stringify(e), this.options = n, this.useExt = r;\n }\n generateUUID() {\n return crypto?.randomUUID ? crypto.randomUUID() : \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (e) => {\n let t = Math.random() * 16 | 0;\n return (e === \"x\" ? t : t & 3 | 8).toString(16);\n });\n }\n use(e) {\n this.middlewares.push(e);\n }\n gen(e, t) {\n return o(this, e, t);\n }\n genAny(e, t) {\n return this.gen(e, t);\n }\n genMiddlewareCtx(e, t) {\n let n = this.generateUUID(), r = Object.freeze({\n baseUrl: this.options.baseUrl,\n querySerializer: this.options.querySerializer,\n bodySerializer: this.options.bodySerializer,\n Request: this.options.Request,\n fetch: this.options.fetch\n });\n return {\n useExt: this.useExt,\n requestOptions: e.options,\n data: t,\n middlewareData: {},\n options: r,\n schemaPath: e.path,\n id: n\n };\n }\n async middlewareOnRequest(e, t) {\n for (let n of this.middlewares) {\n let r = await n.onRequest?.({\n ...t,\n request: e\n });\n if (r)\n if (r instanceof Request)\n e = r;\n else if (r instanceof Response)\n return r;\n else\n throw Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n return e;\n }\n async middlewareOnError(e, t) {\n let n = e;\n for (let e of this.middlewares) {\n let r = await e.onError?.({\n ...t,\n error: n\n });\n if (r) {\n if (r instanceof Response)\n return r;\n if (r instanceof Error) {\n n = r;\n continue;\n }\n throw Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n throw n;\n }\n async middlewareOnResponse(e, t) {\n for (let n of this.middlewares) {\n let r = await n.onResponse?.({\n ...t,\n response: e\n });\n if (r) {\n if (!(r instanceof Response))\n throw Error(\"onResponse: must return new Response() when modifying the response\");\n e = r;\n }\n }\n return e;\n }\n setMocker(e, t) {\n this.mokerByPath.set(e, t), this.genOriginal || (this.genOriginal = this.gen.bind(this), this.gen = (e, t) => {\n let n = this.genOriginal(e, t), r = this.mokerByPath.get(e);\n return r && n.setMocker(r), n;\n });\n }\n }, c = async (...e) => {\n let { postInWindow: t } = await new Promise((resolve_6, reject_6) => { require([\"./lazy-CGswTOPj.esm.js\"], resolve_6, reject_6); }).then(__importStar);\n return t(...e);\n }, l = async (...e) => {\n let { dataToForm: t } = await new Promise((resolve_7, reject_7) => { require([\"./lazy-CGswTOPj.esm.js\"], resolve_7, reject_7); }).then(__importStar);\n return t(...e);\n }, u = (e = {}, t) => new s(e, t);\n exports.i = n;\n exports.o = r;\n exports.a = i;\n exports.r = c;\n exports.n = l;\n exports.t = u;\n});\n//# sourceMappingURL=api-DuS0Qura.esm.js.map\n","export const createRequestOptions = (requestOptions: Partial<Api.ClientRequestOptions> = {}): Api.ClientRequestOptions => {\n\trequestOptions = { ...requestOptions };\n\trequestOptions.loadingEl ??= globalThis.document?.body;\n\trequestOptions.loadingShowSpinner ??= true;\n\trequestOptions.method ??= 'POST';\n\trequestOptions.accept ??= 'application/json';\n\n\treturn requestOptions as Api.ClientRequestOptions;\n};\n","/**\n * Сгенерировать объект ответа в формате расширения OpenAPI\n *\n * @see Api.Ext\n */\nexport const genExtRes = (\n\tresult: any,\n\terrors?: Api.Ext.Schemas['ResponseError']['errors'],\n\tresponse?: Response,\n): Api.Response<any> => {\n\treturn {\n\t\tresult,\n\t\terrors,\n\t\tresponse,\n\t};\n};\n\n/**\n * Это публичное API, к которому открыт доступ по прямой ссылке через GET\n *\n * Используется для кеширования и генерации файлов через API\n */\nexport const isPublicAPI = (path: Api.PathAbstract) => {\n\treturn path.startsWith('/system_2/common/');\n};\n\n/**\n * Сгенерировать baseUrl на основе текущего домена\n */\nexport const getBaseDomainUrl = (useMainDomain = false, input: string = window.location.href, subdomain?: string) => {\n\tconst { protocol, hostname, port } = new URL(input);\n\n\t/**\n\t * localhost / IP-адреса / одноуровневые домены оставляем как есть\n\t */\n\tconst parts = hostname.split('.');\n\tconst baseHostname = !useMainDomain || parts.length <= 2 || /^[\\d.]+$/.test(hostname) || hostname === 'localhost'\n\t\t? hostname\n\t\t: parts.slice(-2).join('.');\n\n\treturn `${protocol}//${baseHostname}${port ? `:${port}` : ''}`;\n};\n","import type { Client } from './client';\nimport { createRequestOptions } from './request-options';\nimport { genExtRes } from '../utils/common';\n\n/**\n * Проверить передаются ли файлы\n */\nconst checkHasFiles = (data: Record<string, any>): boolean => {\n\treturn Object.values(data).some(value =>\n\t\tvalue instanceof FileList ||\n\t\tvalue instanceof File ||\n\t\tvalue instanceof Blob ||\n\t\tArray.isArray(value) && value.some(item => item instanceof File || item instanceof Blob),\n\t);\n};\n\nexport const createRequest = <\n\tRequestContext extends Api.ClientRequestContext<any, any, any>,\n\tFieldsNarrow extends Api.ParamsFields<RequestContext>,\n>(\n\tclient: Client<RequestContext['Paths'], RequestContext['UseExt']>,\n\tpath: RequestContext['Path'],\n\tfieldsNarrow?: FieldsNarrow,\n): Api.ClientRequest<RequestContext, FieldsNarrow> => {\n\tconst clientRequest: Api.ClientRequest<RequestContext, FieldsNarrow> = {\n\t\tinLoading: false,\n\t\tpath: path as Api.PathAbstract,\n\t\turl: client.options.baseUrl + path,\n\t\toptions: createRequestOptions(client.options.requestOptions),\n\t\tmockerOptions: undefined as Api.Mocker.Options<any, any> | undefined,\n\t\tparams: {} as any, // незаполненное свойство\n\t\tgetInLoading: () => clientRequest.inLoading,\n\n\t\tsetParams: (params) => {\n\t\t\tclientRequest.params = { ...params } as any;\n\n\t\t\treturn clientRequest;\n\t\t},\n\n\t\tchangeParams: (params) => {\n\t\t\tObject.assign(clientRequest.params, params);\n\n\t\t\treturn clientRequest;\n\t\t},\n\n\t\tsetOptions: (options) => {\n\t\t\tObject.assign(clientRequest.options, options);\n\n\t\t\treturn clientRequest;\n\t\t},\n\n\t\tsetMocker: (options) => {\n\t\t\tclientRequest.mockerOptions = options;\n\n\t\t\treturn clientRequest;\n\t\t},\n\n\t\tcall: async (fields?) => {\n\t\t\treturn clientRequest.exec(fields);\n\t\t},\n\n\t\tcallFetch: async (fetchStyle, fields?) => {\n\t\t\treturn clientRequest.exec(fields, fetchStyle);\n\t\t},\n\n\t\tcallInNewWindow: async (fields?) => {\n\t\t\tconst data = clientRequest.genData(fields);\n\n\t\t\tconst middlewareCtx = client.genMiddlewareCtx(clientRequest, data);\n\n\t\t\tclient.options.onPrepareData?.(data, middlewareCtx);\n\n\t\t\tconst { postInWindow } = await import('../utils/lazy');\n\t\t\tvoid postInWindow(clientRequest.url, data, '_blank');\n\t\t},\n\n\t\tcallInSelfWindow: async (fields?) => {\n\t\t\tconst data = clientRequest.genData(fields);\n\n\t\t\tconst middlewareCtx = client.genMiddlewareCtx(clientRequest, data);\n\n\t\t\tclient.options.onPrepareData?.(data, middlewareCtx);\n\n\t\t\tconst { postInWindow } = await import('../utils/lazy');\n\t\t\tvoid postInWindow(clientRequest.url, data, '_self');\n\t\t},\n\n\t\tgenData: (fields?, fetchStyle?) => {\n\t\t\tconst post: any = { ...clientRequest.params };\n\n\t\t\t// в старом коде fields вставлялись в params, оставлено для совместимости\n\t\t\t// delete post.fields;\n\t\t\tdelete post.fetch_style;\n\n\t\t\t// поля, указанные при запуске запроса\n\t\t\tif (fields) {\n\t\t\t\tlet fieldsPrepared = [...fields as any[]];\n\n\t\t\t\t// поля, указанные при создании запроса\n\t\t\t\tif (fieldsNarrow) {\n\t\t\t\t\tfieldsPrepared = fieldsPrepared.filter(field => fieldsNarrow.includes(field));\n\t\t\t\t}\n\n\t\t\t\tpost.fields = fieldsPrepared;\n\t\t\t} else {\n\t\t\t\tif (fieldsNarrow) {\n\t\t\t\t\tpost.fields = fieldsNarrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (fetchStyle) {\n\t\t\t\tpost.fetch_style = fetchStyle;\n\t\t\t}\n\n\t\t\treturn post;\n\t\t},\n\n\t\tabortByFingerprint: () => {\n\t\t\tif (!clientRequest.options.checkFingerprint) return;\n\n\t\t\tconst fingerprint = clientRequest.path + clientRequest.options.checkFingerprint;\n\n\t\t\tclient.abortControllers[fingerprint]?.abort(\n\t\t\t\tnew DOMException(`Stopped previous request by fingerprint: ${clientRequest.options.checkFingerprint}`, 'AbortError'),\n\t\t\t);\n\n\t\t\tconst controller = new AbortController();\n\n\t\t\tclient.abortControllers[fingerprint] = controller;\n\n\t\t\treturn controller.signal;\n\t\t},\n\n\t\t/**\n\t\t * Общая функция выполнения запросов\n\t\t */\n\t\tasync exec(fields?, fetchStyle?) {\n\t\t\tconst Request = client.options.Request;\n\t\t\tconst fetch = client.options.fetch;\n\n\t\t\tconst data = clientRequest.genData(fields, fetchStyle);\n\n\t\t\tconst middlewareCtxWithoutRequest = client.genMiddlewareCtx(clientRequest, data);\n\n\t\t\tclient.options.onPrepareData?.(data, middlewareCtxWithoutRequest);\n\n\t\t\tconst hasFiles = checkHasFiles(data);\n\t\t\tif (hasFiles && clientRequest.options.method !== 'POST') {\n\t\t\t\tthrow new Error('Files can be sent only in POST requests');\n\t\t\t}\n\n\t\t\tlet url = clientRequest.url;\n\n\t\t\tlet requestInitBody: string | FormData | undefined = undefined;\n\n\t\t\tif (hasFiles) {\n\t\t\t\tif (clientRequest.options.method !== 'POST') {\n\t\t\t\t\tthrow new Error('Files can be sent only in POST requests');\n\t\t\t\t}\n\n\t\t\t\tconst { formDataSerializer } = await import('../utils/lazy');\n\t\t\t\trequestInitBody = formDataSerializer(data);\n\t\t\t} else if (clientRequest.options.method !== 'POST') {\n\t\t\t\turl += '?' + await client.options.querySerializer(data);\n\t\t\t} else {\n\t\t\t\trequestInitBody = client.options.bodySerializer(data);\n\t\t\t}\n\n\t\t\t// checkFingerprint\n\t\t\tlet requestInitSignal = clientRequest.abortByFingerprint();\n\n\t\t\tif (clientRequest.mockerOptions) {\n\t\t\t\tconst { genMockResponse } = await import('../mocker/');\n\n\t\t\t\treturn await genMockResponse(clientRequest.mockerOptions, fields, data, requestInitSignal);\n\t\t\t}\n\n\t\t\tconst requestInit: RequestInit = {\n\t\t\t\t...client.options,\n\t\t\t\tmethod: clientRequest.options.method,\n\t\t\t\tbody: requestInitBody,\n\t\t\t\tsignal: requestInitSignal,\n\t\t\t};\n\n\t\t\tlet request = new Request(url, requestInit);\n\n\t\t\trequest.headers.set('x-request-id', middlewareCtxWithoutRequest.id);\n\t\t\trequest.headers.set('accept', clientRequest.options.accept);\n\n\t\t\t// при отправке данных в `FormData` `fetch()` сам укажет правильный заголовок `multipart/form-data`\n\t\t\tif (!hasFiles) {\n\t\t\t\trequest.headers.set('content-type', 'application/json');\n\t\t\t}\n\n\t\t\tconst middlewareCtx: Api.MiddlewareCallbackParams = {\n\t\t\t\t...middlewareCtxWithoutRequest,\n\t\t\t\trequest,\n\t\t\t};\n\n\t\t\tclientRequest.inLoading = true;\n\t\t\tclientRequest.options.onLoading?.(clientRequest.inLoading, middlewareCtx);\n\n\t\t\tlet response: Response | undefined = undefined;\n\n\t\t\tconst requestOrResponse = await client.middlewareOnRequest(request, middlewareCtx);\n\n\t\t\tif (requestOrResponse instanceof Response) {\n\t\t\t\tresponse = requestOrResponse;\n\t\t\t} else if (requestOrResponse instanceof Request) {\n\t\t\t\trequest = requestOrResponse;\n\t\t\t}\n\n\t\t\tif (!response) {\n\t\t\t\ttry {\n\t\t\t\t\tresponse = await fetch(request);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tresponse = await client.middlewareOnError(e, middlewareCtx);\n\t\t\t\t} finally {\n\t\t\t\t\tclientRequest.inLoading = false;\n\t\t\t\t\tclientRequest.options.onLoading?.(clientRequest.inLoading, middlewareCtx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresponse = await client.middlewareOnResponse(response, middlewareCtx);\n\n\t\t\tlet res: any;\n\t\t\tlet responseText: string | undefined;\n\t\t\tlet formatError: undefined | Api.FormatError = undefined;\n\n\t\t\ttry {\n\t\t\t\t// json - стандартные формат, он может быть возвращен в запросах с другим responseType, если в них произошла ошибка\n\t\t\t\tconst isJSON = response.headers.get('content-type')?.includes('application/json');\n\n\t\t\t\tresponseText = await response.text();\n\n\t\t\t\tif (this.options.accept === 'application/json' || isJSON) {\n\t\t\t\t\tres = JSON.parse(responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (client.useExt) {\n\t\t\t\t\t\tres = genExtRes(responseText, undefined, response);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres = responseText;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof SyntaxError || e instanceof TypeError) {\n\t\t\t\t\tformatError = e;\n\t\t\t\t\tformatError.responseText = responseText;\n\t\t\t\t}\n\n\t\t\t\t// если в результате не пришел json, сгенерировать объект результата и добавить информацию об ответе API\n\t\t\t\tif (client.useExt && formatError) {\n\t\t\t\t\tlet errorCode = response.status;\n\t\t\t\t\tlet errorMessage = response.statusText;\n\n\t\t\t\t\tif (errorCode === 200) {\n\t\t\t\t\t\terrorCode = 10000;\n\t\t\t\t\t\terrorMessage = 'Error API response';\n\t\t\t\t\t}\n\n\t\t\t\t\tres = genExtRes(null, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: errorCode,\n\t\t\t\t\t\t\tstring: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t], response);\n\n\t\t\t\t\tif (client.options.useApiConsole) console.error(e);\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (client.useExt) {\n\t\t\t\tres.response = response;\n\n\t\t\t\tif (res) {\n\t\t\t\t\tclientRequest.options.onApiLoaded?.(res, middlewareCtx, client.options.requestOptions?.onApiLoaded);\n\t\t\t\t}\n\n\t\t\t\tif (res?.errors) {\n\t\t\t\t\tif (client.options.useApiConsole) console.warn(new Error('API error'), { res });\n\n\t\t\t\t\tclientRequest.options.onApiError?.(res, { ...middlewareCtx, formatError }, client.options.requestOptions?.onApiError);\n\t\t\t\t}\n\n\t\t\t\tif (res?.messages) {\n\t\t\t\t\tclientRequest.options.onApiMessage?.(res, middlewareCtx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn res;\n\t\t},\n\t};\n\n\treturn clientRequest;\n};\n","import { createRequestOptions } from './request-options';\nimport { createRequest } from './request';\n\nexport class Client<paths extends Api.PathsAbstract, UseExt extends Api.Ext.UseExt> {\n\n\treadonly options: Readonly<Api.ClientOptions>;\n\treadonly useExt: UseExt;\n\treadonly middlewares: Api.Middleware[] = [];\n\tprivate mokerByPath = new Map<Api.Path<paths>, Api.Mocker.Options<any, any>>();\n\tabortControllers: Record<string, AbortController> = {};\n\n\tconstructor(clientOptions: Partial<Api.ClientOptions> = {}, useExt: UseExt) {\n\t\tclientOptions.requestOptions = createRequestOptions(clientOptions.requestOptions);\n\t\tclientOptions.useApiConsole ??= true;\n\n\t\tclientOptions.fetch ??= globalThis.fetch;\n\t\tclientOptions.Request ??= globalThis.Request;\n\t\tclientOptions.querySerializer ??= async (params) => {\n\t\t\tconst { querySerializer } = await import('../utils/lazy');\n\n\t\t\treturn querySerializer(params);\n\t\t};\n\t\tclientOptions.bodySerializer ??= (body) => typeof body === 'string' ? body : JSON.stringify(body);\n\n\t\tthis.options = clientOptions as Api.ClientOptions;\n\n\t\tthis.useExt = useExt;\n\t}\n\n\tgenerateUUID() {\n\t\tif (crypto?.randomUUID) {\n\t\t\treturn crypto.randomUUID();\n\t\t}\n\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n\t\t\tconst r = Math.random() * 16 | 0;\n\t\t\tconst v = c === 'x' ? r : (r & 0x3 | 0x8);\n\t\t\treturn v.toString(16);\n\t\t});\n\t}\n\n\t/**\n\t * Зарегистрировать middleware\n\t */\n\tuse(middleware: Api.Middleware) {\n\t\tthis.middlewares.push(middleware);\n\t}\n\n\t/**\n\t * Создать объект запроса\n\t *\n\t * После создания объекта он заполняется необходимыми данными и выполняет запросы к API с помощью APIRequest2.call();\n\t *\n\t * Опционально generic указывать нельзя, поэтому необходимо дублировать определение fetchStyle, [см.](https://github.com/Microsoft/TypeScript/issues/26242)\n\t *\n\t * @param path Путь метода API\n\t * @param fieldsNarrow Список получаемых полей, для методов API с моделью. Если объект запроса переиспользуется, и список полей меняется, указывайте его непосредственно при вызове `api.call()`\n\t */\n\tgen<\n\t\tPath extends Api.Path<paths>,\n\t\tFieldsNarrow extends Api.ParamsFields<Api.ClientRequestContext<paths, Path, UseExt>>\n\t>(\n\t\tpath: Path,\n\t\tfieldsNarrow?: FieldsNarrow,\n\t): Api.ClientRequest<Api.ClientRequestContext<paths, Path, UseExt>, FieldsNarrow> {\n\t\ttype RequestContext = Api.ClientRequestContext<paths, Path, UseExt>;\n\n\t\treturn createRequest<RequestContext, FieldsNarrow>(this, path, fieldsNarrow);\n\t}\n\n\t/**\n\t * Создать объект запроса, не описанного в OpenAPI\n\t */\n\tgenAny<\n\t\tParams extends Record<string, any>,\n\t\tResult = any,\n\t\tFieldsNarrow extends Api.Ext.Schemas['Fields'] | undefined = undefined\n\t>(path: Api.PathAbstract, fieldsNarrow?: FieldsNarrow): Api.ClientRequestCustom<UseExt, Params, Result> {\n\t\treturn this.gen(path as any, fieldsNarrow as any) as unknown as Api.ClientRequestCustom<UseExt, Params, Result>;\n\t}\n\n\t/**\n\t * Создать контекст выполнения запроса\n\t */\n\tgenMiddlewareCtx(\n\t\tclientRequest: Api.ClientRequest<any, any, any>,\n\t\tdata: Record<string, any>,\n\t): Omit<Api.MiddlewareCallbackParams, 'request'> {\n\t\tconst id = this.generateUUID();\n\n\t\tconst options: Api.BaseOptions = Object.freeze({\n\t\t\tbaseUrl: this.options.baseUrl,\n\t\t\tquerySerializer: this.options.querySerializer,\n\t\t\tbodySerializer: this.options.bodySerializer,\n\t\t\tRequest: this.options.Request,\n\t\t\tfetch: this.options.fetch,\n\t\t});\n\n\t\treturn {\n\t\t\tuseExt: this.useExt,\n\t\t\trequestOptions: clientRequest.options,\n\t\t\tdata,\n\t\t\tmiddlewareData: {},\n\t\t\toptions,\n\t\t\tschemaPath: clientRequest.path,\n\t\t\tid,\n\t\t};\n\t};\n\n\t/**\n\t * Обработчик middleware.onRequest\n\t *\n\t * @param request Запрос для обработки\n\t * @param middlewareCtx Контекст выполнения запроса\n\t * @return Новый экземпляр `Request` или `Response` при модификации запроса, или undefined\n\t */\n\tasync middlewareOnRequest(\n\t\trequest: Request,\n\t\tmiddlewareCtx: Api.MiddlewareCallbackParams,\n\t): Promise<Request | Response | undefined> {\n\t\tfor (const middleware of this.middlewares) {\n\t\t\tconst result = await middleware.onRequest?.({\n\t\t\t\t...middlewareCtx,\n\t\t\t\trequest,\n\t\t\t});\n\n\t\t\tif (result) {\n\t\t\t\tif (result instanceof Request) {\n\t\t\t\t\trequest = result;\n\t\t\t\t} else if (result instanceof Response) {\n\t\t\t\t\treturn result;\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('onRequest: must return new Request() or Response() when modifying the request');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn request;\n\t}\n\n\t/**\n\t * Обработчик middleware.onResponse\n\t *\n\t * @param `error` Ошибка, переданная для обработки\n\t * @param middlewareCtx\n\t * @return Новый экземпляр `Response` при успешной обработке или выбрасывает ошибку\n\t */\n\tasync middlewareOnError(\n\t\terror: Error | unknown,\n\t\tmiddlewareCtx: Api.MiddlewareCallbackParams,\n\t): Promise<Response | never> {\n\t\tlet errorAfterMiddleware = error;\n\n\t\tfor (const middleware of this.middlewares) {\n\t\t\tconst result = await middleware.onError?.({\n\t\t\t\t...middlewareCtx,\n\t\t\t\terror: errorAfterMiddleware,\n\t\t\t});\n\n\t\t\tif (result) {\n\t\t\t\tif (result instanceof Response) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result instanceof Error) {\n\t\t\t\t\terrorAfterMiddleware = result;\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error('onError: must return new Response() or instance of Error');\n\t\t\t}\n\t\t}\n\n\t\tthrow errorAfterMiddleware;\n\t}\n\n\t/**\n\t * Обработчик middleware.onResponse\n\t *\n\t * @param response Ответ для обработки\n\t * @param middlewareCtx Контекст выполнения запроса\n\t * @return Новый экземпляр `Response` при модификации ответа, или undefined\n\t */\n\tasync middlewareOnResponse(\n\t\tresponse: Response,\n\t\tmiddlewareCtx: Api.MiddlewareCallbackParams,\n\t): Promise<Response> {\n\t\tfor (const middleware of this.middlewares) {\n\t\t\tconst result = await middleware.onResponse?.({\n\t\t\t\t...middlewareCtx,\n\t\t\t\tresponse,\n\t\t\t});\n\n\t\t\tif (result) {\n\t\t\t\tif (!(result instanceof Response)) {\n\t\t\t\t\tthrow new Error('onResponse: must return new Response() when modifying the response');\n\t\t\t\t}\n\n\t\t\t\tresponse = result;\n\t\t\t}\n\t\t}\n\n\t\treturn response;\n\t}\n\n\t/**\n\t * Установить генератор данных вместо реальных запросов к серверу для конкретного метода API\n\t */\n\tsetMocker<\n\t\tResult extends Api.Mocker.Result = Api.Mocker.Result,\n\t\tParams extends Api.Mocker.Params = Api.Mocker.Params\n\t>(\n\t\tpath: Api.Path<paths>,\n\t\tmocker: Api.Mocker.Options<Result, Params>,\n\t) {\n\t\tthis.mokerByPath.set(path, mocker);\n\n\t\t// @ts-ignore\n\t\tif (!this.genOriginal) {\n\t\t\t// @ts-ignore\n\t\t\tthis.genOriginal = this.gen.bind(this);\n\n\t\t\tthis.gen = (_path, fieldsNarrow) => {\n\t\t\t\t// @ts-ignore\n\t\t\t\tconst api = this.genOriginal(_path, fieldsNarrow);\n\n\t\t\t\tconst mocker = this.mokerByPath.get(_path);\n\t\t\t\tif (mocker) {\n\t\t\t\t\tapi.setMocker(mocker);\n\t\t\t\t}\n\n\t\t\t\treturn api;\n\t\t\t};\n\t\t}\n\t}\n\n}\n","import { Client } from './client/client';\n\nexport * from './utils/field';\nexport * from './utils/common';\n\nexport const postInWindow: typeof import('./utils/lazy').postInWindow = async (...args) => {\n\tconst { postInWindow } = await import('./utils/lazy');\n\n\treturn postInWindow(...args);\n};\n\nexport const dataToForm: typeof import('./utils/lazy').dataToForm = async (...args) => {\n\tconst { dataToForm } = await import('./utils/lazy');\n\n\treturn dataToForm(...args);\n};\n\n/**\n * Создать API клиент\n *\n * @see Api.Ext.UseExt\n */\nexport const createClient = <\n\tpaths extends Api.PathsAbstract,\n\tUseExt extends Api.Ext.UseExt\n>(\n\tclientOptions: Partial<Api.ClientOptions> = {},\n\tuseExt: UseExt,\n) => {\n\treturn new Client<paths, UseExt>(clientOptions, useExt);\n};\n"]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!==`default`&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`./forms-CdCS6WAQ.amd`,`../utils/dom.amd`,`./worker-spLieexQ.amd`,`./dialogs-CbMNuvfF.amd`,`../utils/route.amd`,`../utils/clipboard.amd`,`../utils/string.amd`,`vue`,`./utils-DrvuXyXl.amd`],function(e,t,r,i,a,o,s,ee,te,c){"use strict";if(ne===void 0)var ne=window.Vue;Object.defineProperty(t,`__esModule`,{value:!0}),t.t=t.n=void 0;var l=class{static init(){this.isInited||(this.isInited=!0,document.addEventListener(`mouseover`,e=>{!(e.target instanceof HTMLElement)||!e.target.dataset?.topPopupOpenByHover||e.target.click()}),document.addEventListener(`scroll`,()=>{r.O.state.isMobile||r.O.state.isMobileUA||a.t.getAll().forEach(e=>a.t.close(e))}),r.k.addOnReize(e=>{r.O.state.isMobile&&e.topEvent.widthDiff&&a.t.getAll().forEach(e=>a.t.close(e))}),document.addEventListener(`click`,this.onclick,{capture:!0}))}static async onclick(e){if(!(e.target instanceof HTMLElement)||e.target.dataset.topPopupDisabled)return;let t;switch(!0){case!!e.target.dataset?.topPopup:t=e.target;break;case!!e.target.parentElement?.dataset.topPopup:t=e.target.parentElement;break;case!!e.target.parentElement?.parentElement?.dataset.topPopup:t=e.target.parentElement?.parentElement;break}if(t&&!t.dataset.topPopupDisabled){if(t.dataset.topPopupOpened){let e=a.t.getPopupFromOpener(t);e?.openerIsInput||e?.close();return}e.preventDefault(),await a.t.openByOpener(t)}}};(0,r.K)(l,`isInited`,!1);var u,re={mounted:async(t,r)=>{u||=(await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar)).storage;let i=r.arg,a=r.value;u(t,i,a)}},d,f=[],p,ie=async()=>{let{isVisible:t}=await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar);f=f.filter(t),f.length&&(f[0].focus(),f=[])},m=async t=>{d||=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar),p||=d.debounce(ie,30),f.push(t),p()},ae={mounted:function(e,t){e.__TOP_V_FOCUS_VALUE=t.value??!0,(t.value??!0)&&m(e)},updated:function(e,t){t.modifiers.onupdate&&e.__TOP_V_FOCUS_VALUE!==(t.value??!0)&&(e.__TOP_V_FOCUS_VALUE=t.value??!0,(t.value??!0)&&m(e))}},h,g,_=e=>typeof e==`boolean`?e:(e=e?{...e}:{},e.behavior??=`smooth`,e.block??=`nearest`,e.inline??=`nearest`,e),v,y,oe=async()=>{if(!v)return;let e=await x(v);e.isVisible&&v.scrollIntoView(e.scrollIntoViewOptions)},b=async t=>{g||=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar),y||=g.debounce(oe,30),v=t,y()},x=async(t,r)=>{h||=await new Promise((t,n)=>{e([`../utils/dom.amd`],t,n)}).then(__importStar);let a=h.storage(t,`v-top-scrollIntoView`);return a||(a={isVisible:(0,i.isVisible)(t),scrollIntoViewOptions:_(r)},h.storage(t,`v-top-scrollIntoView`,a)),a},se={async mounted(e,t){await x(e,t.value),t.modifiers.immediate&&b(e)},async updated(e,t){let n=await x(e,t.value);n.scrollIntoViewOptions=_(t.value);let r=(0,i.isVisible)(e);r&&n.isVisible!==r&&b(e),n.isVisible=r}},S,ce={async mounted(t){S||=await new Promise((t,n)=>{e([`../utils/scroll.amd`],t,n)}).then(__importStar),S.connectScrollShadow(t)},async unmounted(t){S||=await new Promise((t,n)=>{e([`../utils/scroll.amd`],t,n)}).then(__importStar),S.unconnectScrollShadow(t)}},C=new Map,w,T=new Map,E=!1,le={ctrl:(0,r.H)()?`⌘`:`Ctrl`,alt:(0,r.H)()?`⌥`:`Alt`,shift:(0,r.H)()?`⇧`:`Shift`},ue=e=>{let t=e;return e.includes(`Key`)&&(t=e.replace(`Key`,``)),e.includes(`Digit`)&&(t=e.replace(`Digit`,``)),e===`Escape`&&(t=`Esc`),t},D=(e,t)=>{let n=ue(e);if(!t)return n;let{ctrl:i,alt:a,shift:o}=le,s=[];return t.ctrl&&s.push(i),t.alt&&s.push(a),t.shift&&s.push(o),s.push(n),s.join((0,r.H)()?``:`+`)},O=(e,t,n)=>{let r=D(t,n);if(e.__TOP_V_SHORTCUT_VALUE){console.warn(`Element already has shortcut "${e.__TOP_V_SHORTCUT_VALUE}"`);return}if(T.has(r)){console.warn(`Shortcut "${r}" is taken`);return}T.set(r,e),e.title=e.title?`${e.title} (${r})`:r,e.__TOP_V_SHORTCUT_VALUE=r},k=e=>{let t=e.__TOP_V_SHORTCUT_VALUE;t&&(T.delete(t),delete e.__TOP_V_SHORTCUT_VALUE,e.title===t&&e.removeAttribute(`title`),e.title.includes(` (${t})`)&&(e.title=e.title.replace(` (${t})`,``)))},de=()=>{for(let[e]of C)!(0,i.isVisible)(e)&&e.__TOP_V_SHORTCUT_VALUE&&k(e);for(let[e,t]of C)(0,i.isVisible)(e)&&!e.__TOP_V_SHORTCUT_VALUE&&O(e,t.value,t.modifiers);C.clear()},fe=async(t,r,i)=>{if(!w){let{debounce:t}=await new Promise((t,n)=>{e([`../utils/lodash.amd`],t,n)}).then(__importStar);w=t(de,30)}C.set(t,{value:r,modifiers:i}),w()},A=()=>{E||(E=!0,document.addEventListener(`keydown`,e=>{if(!(e.target instanceof HTMLElement)||[`INPUT`,`TEXTAREA`].includes(e.target.tagName)||e.target.isContentEditable)return;let t={ctrl:(0,r.H)()?e.metaKey:e.ctrlKey,alt:e.altKey,shift:e.shiftKey},n=D(e.code,t),a=T.get(n);a&&(a.disabled||!(0,i.isVisible)(a)||(e.preventDefault(),a.click()))}))},pe={mounted:function(e,t){let{value:n,modifiers:r}=t;!n||!(0,i.isVisible)(e)||(A(),O(e,n,r))},updated:function(e,t){if(!!e.__TOP_V_SHORTCUT_VALUE===(0,i.isVisible)(e))return;let{value:n,modifiers:r}=t;n&&(A(),fe(e,n,r))},unmounted:function(e){k(e)}},j,me={mounted(e,t,n){let r=t.value||`top-sticky`;j=new IntersectionObserver(n=>{let i=n[0].intersectionRatio<1;i&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(i=!1),e.classList.toggle(r,i)},{threshold:[1]}),j.observe(e)},unmounted(e,t,n){j?.disconnect()}},he=!1,M,N=new Map,ge=(e,t)=>{let{distance:n,percent:r}=e.directiveSwipUpOptions,i=e.getBoundingClientRect().top,a=t*r/100/n,o=(t-i)/a;o<=n?e.style.transform=`translateY(${n-o}px)`:e.style.transform=`translateY(0px)`},_e=e=>{let t=window.innerHeight;window.addEventListener(`scroll`,()=>{N.forEach(e=>ge(e,t))},{passive:!0}),M=new IntersectionObserver(e=>{t=window.innerHeight,e.forEach(e=>{let t=e.target;if(e.intersectionRatio<.1?N.delete(t):N.set(t,t),e.intersectionRatio===0){let{distance:e}=t.directiveSwipUpOptions;t.style.transform=`translateY(${e}px)`}})},{threshold:.1})},ve={mounted(e,t,n){r.O.state.isMobileUA||(e.directiveSwipUpOptions={distance:t.value?.distance??100,percent:t.value?.percent??30},he||=(_e(e),!0),M.observe(e))},unmounted(e,t,n){N.delete(e),M?.unobserve(e)}},P=e=>{if(!r.O.$?.ui?.tooltip){console.info(`Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip`);return}return r.O.$(e)},F=(e,t)=>{let n={...e.value??{}};return n.content??=t.getAttribute(`ui-tooltip-title`)??t.getAttribute(`title`)??``,n.content=String(n.content).replace(/([^<>])\r?\n([^<>])/g,`$1<br>$2`),n.position??={my:`bottom-18px`,at:`top center`,collision:`flipfit`},n},ye={mounted(e,t){P(e)?.tooltip(F(t,e))},updated(e,t){let n=F(t,e),r=P(e)?.tooltip(`instance`);if(!r){P(e)?.tooltip(n);return}r.options={...r.options,...n}},unmounted(e){P(e)?.tooltip(`destroy`)}},be=(0,c.defineAsyncComponent)(()=>new Promise((t,n)=>{e([`./notice-DA4p-RwX.amd`],t,n)}).then(__importStar));window.vd=console.log,t.n={install:(e,t)=>{e.config.globalProperties.$core=r.O,e.config.globalProperties.$vd=console.log;for(let e in t)r.O.state[e]=t[e];t.widthForMobile&&(r.O.widthForMobile=t.widthForMobile),t.themeName&&(r.O.themeName=t.themeName),r.O._setState(),t.topPopupOptions&&(a.t.options=t.topPopupOptions),l.init(),o.i.init(t.topDialogOptions),e.directive(`top-data`,re),e.directive(`top-focus`,ae),e.directive(`top-scroll-into-view`,se),e.directive(`top-scroll-shadow`,ce),e.directive(`top-shortcut`,pe),e.directive(`top-sticky`,me),e.directive(`top-swim-up`,ve),e.directive(`top-tooltip`,ye),e.component(`TopAvatar`,r.g),e.component(`TopButton`,r.h),e.component(`TopCheckbox`,r.f),e.component(`TopControlLabel`,r.p),e.component(`TopHint`,r.d),e.component(`TopInput`,r.c),e.component(`TopInputDate`,r.s),e.component(`TopInputRange`,r.o),e.component(`TopLoadbar`,r.l),e.component(`TopRadio`,r.a),e.component(`TopSelect`,r.n),e.component(`TopSwitcher`,r.i),e.component(`TopTextarea`,r.r),e.component(`TopNotice`,be),e.component(`TopDialogs`,o.t)}};function I(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function xe(e,t){I(e,t),t.add(e)}function L(e,t,n){I(e,t),t.set(e,n)}function R(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function z(e,t,n){return e.set(R(e,t),n),n}function B(e,t){return e.get(R(e,t))}var V=new WeakMap,H=new WeakMap,U=new WeakMap,W=new WeakMap,G=new WeakMap,K=new WeakMap,q=new WeakMap,J=new WeakMap,Y=new WeakMap,X=new WeakSet,Se=class{constructor(e){xe(this,X),L(this,V,void 0),L(this,H,void 0),L(this,U,void 0),L(this,W,void 0),L(this,G,void 0),L(this,K,[]),L(this,q,[]),L(this,J,[]),L(this,Y,[]),z(H,this,e.store),z(V,this,B(H,this).$id),z(U,this,e.options.Page),z(W,this,e.options.user),z(G,this,e.options.Api),z(K,this,e.options.tpaNamesUrlHash||[]),z(q,this,e.options.tpaNamesStorage||[]),z(J,this,e.options.tpaNamesStorageLocal||[]),z(Y,this,e.options.tpaNamesGuestLink||[]),e.store.genGuestLink=(e,t)=>this.genGuestLink(e,t),B(W,this).guest_data?.data||(R(X,this,De).call(this),R(X,this,De).call(this,!0),R(X,this,Te).call(this)),R(X,this,ke).call(this),R(X,this,Ae).call(this);let t=(0,r.P)(()=>{R(X,this,Ee).call(this),R(X,this,Oe).call(this),R(X,this,Oe).call(this,!0)});e.store.$subscribe(t)}async genGuestLink(e,t){let n=R(X,this,Ce).call(this);t=Object.assign(t,Object.fromEntries(n));let r=await B(G,this).gen(e).setParams(t).call();if(r?.errors)return;let i=r.result;await(0,ee.guestLinkToClipboard)(i)}};function Ce(){let e=new Map;return B(Y,this).forEach(t=>{let n=(0,te.camelToSnakeCase)(t);e.set(n,B(H,this)[t])}),e}function Z(e){e.forEach((e,t)=>{let n=B(H,this)[t];e!=null&&n!==void 0&&e?.constructor&&e.constructor===n.constructor&&(t.indexOf(`date`)===0&&!Array.isArray(e)&&typeof e==`string`&&!/\d\d\d\d-\d\d-\d\d/.test(e)||(B(H,this)[t]=e))})}function we(e){let t=new Map;return e.forEach((e,n)=>{e!==null&&(e=JSON.stringify(e),t.set(n,e))}),t}function Q(e){let t=new Map;return e.forEach((e,n)=>{if(!(e==null||e===`false`)){try{if(typeof e==`string`&&!/^\d\d\d\d-\d\d-\d\d$/.test(e)&&(e=JSON.parse(e)),e==null||e===`false`)return}catch{}t.set(n,e)}}),t}function Te(){let e;try{e=JSON.parse((0,s.getHash)(B(V,this)))}catch{}if(!e)return;let t=new Map;B(K,this).forEach(n=>{let r=e[n];r&&t.set(n,r)}),R(X,this,Z).call(this,t)}function Ee(){let e=new Map;B(K,this).forEach(t=>{let n=B(H,this)[t];e.set(t,n)});let t=Object.fromEntries(e),n=JSON.stringify(t);(0,s.setHash)(B(V,this),n)}function De(e=!1){let t=new Map,n=B(q,this),r=`state:`+B(V,this);e&&(n=B(J,this),r=`state:`+B(V,this)+`:`+location.pathname),n.forEach(e=>{let n=localStorage.getItem(r+`:`+e);t.set(e,n)});let i=R(X,this,Q).call(this,t);R(X,this,Z).call(this,i)}function Oe(e=!1){let t=new Map,n=B(q,this),r=`state:`+B(V,this);e&&(n=B(J,this),r=`state:`+B(V,this)+`:`+location.pathname),n.forEach(e=>{let n=B(H,this)[e];t.set(e,n)});let i=R(X,this,we).call(this,t);n.forEach(e=>{let t=i.get(e);localStorage.setItem(r+`:`+e,t)})}function ke(){let e=B(W,this)?.guest_data?.data;if(!e)return;B(W,this).id===-1&&(B(W,this).positionsReverseDates=e.positionsReverseDates);let t=new Map;B(Y,this).forEach(n=>{let r=e[n];t.set(n,r)});let n=R(X,this,Q).call(this,t);R(X,this,Z).call(this,n);let r=$(`.mod_guest_title`);if(B(H,this).competitorsIds?.length===1&&B(U,this).page.data.competitors){let t=B(U,this).page.data.competitors.filter(t=>t.id===e.competitorsIds[0]);t.length&&($(`a`,r).attr(`href`,`http://`+t[0].url),$(`a`,r).text(t[0].name))}}function Ae(){B(H,this).regionsIndexes&&(0,c.watch)(B(H,this).regionsIndexes,e=>{if(!e.length)return;e.forEach((t,n)=>e[n]=t);let t=TplProjectSelectorRegion.genSearchersMap(),n=[];t.forEach(e=>{e.regions.forEach(e=>{e.index!==-1&&n.push(e.index)})}),B(H,this).regionsIndexes=e.filter(e=>n.includes(e))},{immediate:!0}),B(H,this).competitorsIds&&(0,c.watch)(B(H,this).competitorsIds,e=>{if(!e.length)return;e.forEach((t,n)=>e[n]=t);let t=[B(U,this).page.data.project.id];B(U,this).page.data.project.competitors.forEach(e=>{e.on>=0&&t.push(e.id)}),B(H,this).competitorsIds=e.filter(e=>t.includes(e))},{immediate:!0})}t.t=e=>{let t=e;!t.options.tpaNamesUrlHash?.length&&!t.options.tpaNamesStorage?.length&&!t.options.tpaNamesStorageLocal?.length&&!t.options.tpaNamesGuestLink?.length||new Se(t)}});
|
|
2
|
-
//# sourceMappingURL=app-BXCICBAa.amd.js.map
|