@topvisor/ui 0.9.21 → 0.9.23
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/datepicker-B28_yC8V.es.js +277 -0
- package/.chunks/datepicker-B28_yC8V.es.js.map +1 -0
- package/.chunks/datepicker-CDoo2d0x.amd.js +234 -0
- package/.chunks/datepicker-CDoo2d0x.amd.js.map +1 -0
- package/.chunks/forms-DNRGCC9P.amd.js +3 -0
- package/.chunks/forms-DNRGCC9P.amd.js.map +1 -0
- package/.chunks/{forms-gb7uf2K8.es.js → forms-U97cW1zp.es.js} +39 -39
- package/.chunks/forms-U97cW1zp.es.js.map +1 -0
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-2TAzIZZA.amd.js → listItem.vue_vue_type_script_setup_true_lang-C67aHWhi.amd.js} +2 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C67aHWhi.amd.js.map +1 -0
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Caw4oFU-.es.js → listItem.vue_vue_type_script_setup_true_lang-C_o5sC8m.es.js} +2 -2
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C_o5sC8m.es.js.map +1 -0
- package/.chunks/{popup-B-BAfp1v.es.js → popup-C1hmF9NI.es.js} +432 -442
- package/.chunks/popup-C1hmF9NI.es.js.map +1 -0
- package/.chunks/popup-Cg-GRa9u.amd.js +386 -0
- package/.chunks/popup-Cg-GRa9u.amd.js.map +1 -0
- package/.chunks/store-Bl79G7T_.amd.js.map +1 -1
- package/.chunks/store-PoMCiuBr.es.js.map +1 -1
- package/.chunks/{widgetInput-BxO9y9L7.amd.js → widgetInput-DgylW6NK.amd.js} +2 -2
- package/.chunks/widgetInput-DgylW6NK.amd.js.map +1 -0
- package/.chunks/{widgetInput-DPOH_qya.es.js → widgetInput-DmpYL1aA.es.js} +2 -2
- package/.chunks/widgetInput-DmpYL1aA.es.js.map +1 -0
- package/README.md +86 -86
- package/assets/dark.css +1 -1
- package/assets/forms.css +1 -1
- package/assets/light.css +1 -1
- package/core/core.amd.js +1 -1
- package/core/core.js +1 -1
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +1 -1
- package/forms/helpers.amd.js.map +1 -1
- package/forms/helpers.js.map +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.js +4 -4
- package/formsExt/formsExt.js.map +1 -1
- package/icomoon/Read Me.txt +7 -7
- package/icomoon/demo-files/demo.css +161 -161
- package/icomoon/demo-files/demo.js +30 -30
- package/icomoon/demo.html +3225 -3211
- package/icomoon/fonts/Topvisor-2.svg +252 -251
- package/icomoon/fonts/Topvisor-2.ttf +0 -0
- package/icomoon/fonts/Topvisor-2.woff +0 -0
- package/icomoon/selection.json +1 -1
- package/icomoon/style.css +707 -704
- package/package.json +20 -20
- package/popup/popup.amd.js +1 -1
- package/popup/popup.js +2 -2
- package/popup/worker.amd.js +1 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.js +2 -2
- package/popup/worker.js.map +1 -1
- package/require/css.amd.js +11 -11
- package/tabs/tabs.amd.js +1 -1
- package/tabs/tabs.js +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.js +19 -18
- package/tabsView/tabsView.js.map +1 -1
- package/utils/css.amd.js.map +1 -1
- package/utils/css.js.map +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.js +1 -1
- package/utils/dom.amd.js.map +1 -1
- package/utils/dom.js.map +1 -1
- package/utils/keyboard.amd.js.map +1 -1
- package/utils/keyboard.js.map +1 -1
- package/utils/route.amd.js.map +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.js +5 -5
- package/utils/scroll.js.map +1 -1
- package/utils/system.amd.js.map +1 -1
- package/utils/system.js.map +1 -1
- package/utils/window.amd.js +1 -1
- package/utils/window.js +1 -1
- package/.chunks/datepicker-B9eprAyk.amd.js +0 -234
- package/.chunks/datepicker-B9eprAyk.amd.js.map +0 -1
- package/.chunks/datepicker-C86O1mQq.es.js +0 -277
- package/.chunks/datepicker-C86O1mQq.es.js.map +0 -1
- package/.chunks/forms-DkNAMd-D.amd.js +0 -3
- package/.chunks/forms-DkNAMd-D.amd.js.map +0 -1
- package/.chunks/forms-gb7uf2K8.es.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-2TAzIZZA.amd.js.map +0 -1
- package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Caw4oFU-.es.js.map +0 -1
- package/.chunks/popup-B-BAfp1v.es.js.map +0 -1
- package/.chunks/popup-CV5MPPEu.amd.js +0 -396
- package/.chunks/popup-CV5MPPEu.amd.js.map +0 -1
- package/.chunks/widgetInput-BxO9y9L7.amd.js.map +0 -1
- package/.chunks/widgetInput-DPOH_qya.es.js.map +0 -1
package/tabsView/tabsView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabsView.js","sources":["../../src/core/utils/store/localStorage.ts","../../src/components/tabsView/tabsView/store.ts","../../src/components/tabsView/tabsView/menuItem.vue","../../src/components/tabsView/tabsView/utils.ts","../../src/components/tabsView/tabsView/menu.vue","../../src/components/tabsView/tabsView/tabsView.vue","../../src/components/tabsView/tabsView/menuDelimeter.vue","../../src/components/tabsView/tabsView/menuTitle.vue"],"sourcesContent":["import { watch } from 'vue';\r\nimport type { Store } from './store';\r\n\r\n/**\r\n * Сгенерировать имя для сохранения данных в localStorage\r\n * @param stateName - имя свойства состояния\r\n * @param stateKey - ключ состояния, разные компоненты могут использовать одинаковый ключ\r\n */\r\nconst genStorageKey = <T extends Store>(stateName: keyof T, stateKey: string): string => {\r\n\tconst stateNameString = String(stateName);\r\n\r\n\treturn `top:${stateNameString}:${stateKey}`;\r\n};\r\n\r\n/**\r\n * Загрузить состояние\r\n * @param stateName - имя свойства состояния\r\n * @param store\r\n */\r\nconst loadLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\r\n\t// если Store.key не знадан, значит сохранение состояния в компоненте отключено\r\n\tif (!store.$id) return;\r\n\r\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\r\n\r\n\ttry {\r\n\t\tconst localStorageValue: typeof store[keyof typeof store] = JSON.parse(localStorage.getItem(localStorageKey) as string);\r\n\r\n\t\tif (typeof localStorageValue === typeof store[stateName]) {\r\n\t\t\tstore[stateName] = localStorageValue;\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tconsole.warn(new Error(`В localStorage[${localStorageKey}] не корректный json`));\r\n\t}\r\n};\r\n\r\n/**\r\n * Добавить автосохранение состояние при его изменении\r\n * @param stateName - имя свойства состояния\r\n * @param store\r\n */\r\nconst addSaverLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\r\n\t// если store.$id не знадан, значит сохранение состояния в компоненте отключено\r\n\tif (!store.$id) return;\r\n\r\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\r\n\r\n\twatch(() => store[stateName], () => {\r\n\t\tlocalStorage.setItem(localStorageKey, JSON.stringify(store[stateName]));\r\n\t}, { immediate: true });\r\n};\r\n\r\nexport default {\r\n\tloadLocalStorge,\r\n\taddSaverLocalStorge,\r\n};","import type { ModelRef, InjectionKey } from 'vue';\r\nimport { ref, computed } from 'vue';\r\nimport Core from '@/core/core/core';\r\nimport { defineStore, useStore } from '@/core/utils/store';\r\nimport StoreLocalStorage from '@/core/utils/store/localStorage';\r\nimport type { Props, Store } from './tabsView';\r\n\r\nexport const injectionKey = Symbol() as InjectionKey<Store>;\r\n\r\n/**\r\n * Инициировать Store компонента\r\n */\r\nexport const defineTabsStore = (props: Props, model: ModelRef<string | undefined>) => {\r\n\tconst store = defineStore(injectionKey, () => {\r\n\t\tconst showMenuInPopup = computed(() => props.showMenuInPopup ?? Core.state.isMobile);\r\n\t\tconst pageMod = computed(() => props.pageMod);\r\n\t\tconst isShort = ref(false);\r\n\r\n\t\tconst component = ref(undefined);\r\n\t\tconst scrollable = ref(true);\r\n\r\n\t\treturn {\r\n\t\t\tshowMenuInPopup,\r\n\t\t\tpageMod,\r\n\t\t\tisShort,\r\n\t\t\tactiveItemName: model,\r\n\t\t\tcomponent,\r\n\t\t\tscrollable,\r\n\t\t};\r\n\t}, props.idState);\r\n\r\n\tif (props.isShortable) {\r\n\t\tconst stateName = 'isShort';\r\n\r\n\t\tStoreLocalStorage.loadLocalStorge(stateName, store);\r\n\t\tStoreLocalStorage.addSaverLocalStorge(stateName, store);\r\n\t}\r\n\r\n\treturn store;\r\n};\r\n\r\n/**\r\n * Получить Store компонента\r\n */\r\nexport const useTabsStore = () => useStore(injectionKey);","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { genHash } from '@/core/utils/route';\r\nimport { PopupListItem } from '@/components/popup/popup';\r\nimport { useTabsStore } from './store';\r\nimport type { PropsMenuItem } from './tabsView';\r\n\r\nconst props = withDefaults(defineProps<PropsMenuItem>(), {\r\n\tscrollable: true,\r\n\tcomponent: undefined,\r\n});\r\n\r\nconst store = useTabsStore();\r\n\r\nconst href = computed(() => {\r\n\t// это внутренняя хеш навигация, ссылка на вкладку\r\n\tif (props.name && store.$id) {\r\n\t\treturn genHash(store.$id, props.name);\r\n\t}\r\n\r\n\treturn props.href;\r\n});\r\n\r\nconst tagName = computed(() => {\r\n\tif (store.showMenuInPopup) {\r\n\t\treturn PopupListItem;\r\n\t}\r\n\r\n\treturn href ? 'a' : 'button';\r\n});\r\n\r\n/**\r\n * Клик по элементу меню\r\n */\r\nconst onClick = (e: MouseEvent) => {\r\n\t// это внутренняя хеш навигация, ссылка на вкладку\r\n\tif (!props.href && href.value) {\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\tif (props.name) {\r\n\t\tstore.activeItemName = props.name;\r\n\t}\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\ttarget=\"_self\"\r\n\t\t:class=\"{\r\n\t\t\t['top-tabsView_menuItem']: !store.showMenuInPopup,\r\n\t\t\t['top-active']: name && store.activeItemName === name,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t}\"\r\n\t\t:href=\"href\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t@click=\"onClick\"\r\n\t>\r\n\t\t<slot v-if=\"store.showMenuInPopup\"></slot>\r\n\r\n\t\t<span\r\n\t\t\tv-else-if=\"$slots.default && !store.isShort\"\r\n\t\t\tclass=\"top-ellipsis\"\r\n\t\t>\r\n\t\t\t<slot></slot>\r\n\t\t</span>\r\n\t</component>\r\n</template>\r\n\r\n<style module>\r\n.top-tabsView_menuItem {\r\n\t--top-icon-color: var(--color-text-1);\r\n\t--top-icon-width: calc(var(--top-icon-size));\r\n\r\n\tcursor: pointer;\r\n\tbox-sizing: border-box;\r\n\r\n\tborder: none;\r\n\tborder-radius: var(--top-radius-2);\r\n\tpadding: var(--top-padding-2);\r\n\tbackground: transparent;\r\n\theight: 40px;\r\n\r\n\tcolor: var(--color-text-1);\r\n\ttext-decoration: none;\r\n\twhite-space: nowrap;\r\n\r\n\tdisplay: flex;\r\n\tgap: var(--top-gap-2);\r\n\talign-items: center;\r\n\tjustify-content: flex-start;\r\n\ttransition: background var(--transition);\r\n}\r\n\r\n.top-tabsView_menuItem:hover {\r\n\tbackground: var(--color-secondary-2-opacity);\r\n\ttext-decoration: none;\r\n}\r\n\r\n.top-tabsView_menuItem.top-active {\r\n\tcursor: unset;\r\n\tbackground: var(--color-bg-3);\r\n}\r\n\r\n.top-tabsView_menuItem:disabled:not(option):not(optgroup):not(.top-forms-option),\r\n.top-tabsView_menuItem:disabled ~ .top-formsCaption,\r\n.top-tabsView_menuItem.top-disabled[data-top-icon]:before,\r\n.top-tabsView_menuItem.top-disabled[data-top-icon2]:after {\r\n\topacity: unset;\r\n\tfilter: unset;\r\n}\r\n\r\n.top-tabsView_menuItem.top-disabled {\r\n\t--top-icon-color: var(--color-text-4);\r\n\r\n\tcolor: var(--color-text-4);\r\n}\r\n</style>","// TODO: Эту функцию можно вынести в глобальный utils\r\n\r\nimport { sleepWhile } from '@/core/utils/system';\r\n\r\n/**\r\n * Проверка нахождения компонента в состояние загрузки\r\n * @param component\r\n */\r\nexport const checkComponentIsLoading = (component: any) => {\r\n\treturn component?.name === 'AsyncComponentWrapper' && !component?.__asyncResolved;\r\n};\r\n\r\n/**\r\n * Презагрузить компонент\r\n *\r\n * Некоторое время ожидает загрузку компонента, прежде чем завершит работу\r\n */\r\nexport const preResolveComponent = async (component: any, condition: Function) => {\r\n\tif(component?.name !== 'AsyncComponentWrapper') return;\r\n\tif(component?.__asyncResolved) return;\r\n\r\n\tcomponent.__asyncLoader();\r\n\r\n\tawait sleepWhile(() => {\r\n\t\treturn condition() && checkComponentIsLoading(component);\r\n\t}, 200);\r\n};","<script setup lang=\"ts\">\r\nimport { ref, watch, markRaw, useSlots, onMounted, onUnmounted } from 'vue';\r\nimport type { Ref, Component } from 'vue';\r\nimport { Popup } from '../../popup/popup';\r\nimport { sleepWhile } from '@/core/utils/system';\r\nimport { getHash, setHash } from '@/core/utils/route';\r\n\r\nimport type { PropsMenu, PropsMenuItem, MenuItem } from './tabsView';\r\nimport { useTabsStore } from './store';\r\nimport TabsViewMenuItem from './menuItem.vue';\r\nimport { preResolveComponent } from './utils';\r\n\r\ndefineProps<PropsMenu>();\r\n\r\nconst isLoading = defineModel('isLoading');\r\n\r\nconst store = useTabsStore();\r\n\r\nconst slots = useSlots();\r\n\r\n// словарь используется для оптимизации получения нужного menuItem\r\nconst menuItemByName: Map<PropsMenuItem['name'], MenuItem> = new Map();\r\n\r\n// сгенерировать словарь с menuItem, по элементам в slot\r\nconst genMenuItemByName = () => {\r\n\tif (!slots.default) return;\r\n\r\n\tconst component: any = slots.default().find(item => item.key === '_menu');\r\n\tif (!component) return;\r\n\r\n\tcomponent.children.forEach((subComponent: any) => {\r\n\t\tif (subComponent.type.__name !== TabsViewMenuItem.__name) return;\r\n\t\tif (!subComponent.props.name || subComponent.props.disabled) return;\r\n\r\n\t\tconst menuItem: MenuItem = {\r\n\t\t\ttitle: (subComponent.children.default?.()[0].children as string).trim(),\r\n\t\t\ticon: subComponent.props.icon,\r\n\t\t\tcomponent: subComponent.props.component ? markRaw(subComponent.props.component) : TabsViewMenuItem.props.component.default,\r\n\t\t\tscrollable: subComponent.props.scrollable ?? TabsViewMenuItem.props.scrollable.default,\r\n\t\t};\r\n\r\n\t\tmenuItemByName.set(subComponent.props.name, menuItem);\r\n\t});\r\n};\r\n\r\n/**\r\n * activeMenuItem нужен:\r\n * - для вывода текста активной вкладки в меню с popup\r\n * - для вывода компонента активной вкладки (store.component)\r\n * - для установки store.scrollable\r\n */\r\nconst activeMenuItem: Ref<MenuItem | null> = ref(null);\r\n\r\n/**\r\n * Кол-во изменений активной вкладки\r\n */\r\nlet countChanged = 0;\r\n\r\n/**\r\n * Смена активной вкладки\r\n *\r\n * TODO: смена slot, например смена языка, требует повторного выполнения genMenuItemByName()\r\n */\r\nwatch(\r\n\t() => store.activeItemName,\r\n\tasync () => {\r\n\t\tconst numberChanged = ++countChanged; // порядковый номер текущего изменения\r\n\r\n\t\tif (menuItemByName.size === 0) {\r\n\t\t\tgenMenuItemByName();\r\n\t\t}\r\n\r\n\t\tif (menuItemByName.size === 0) {\r\n\t\t\tstore.activeItemName = '';\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tactiveMenuItem.value = menuItemByName.get(store.activeItemName) ?? null;\r\n\r\n\t\t// элемент не найден, установить из хеша страницы\r\n\t\tif (!activeMenuItem.value && store.$id) {\r\n\t\t\tconst activeItemName = getHash(store.$id);\r\n\r\n\t\t\tactiveMenuItem.value = menuItemByName.get(activeItemName) ?? null;\r\n\r\n\t\t\tif (activeMenuItem.value) {\r\n\t\t\t\tstore.activeItemName = activeItemName;\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// элемент не найден, установить первый доступный\r\n\t\tif (!activeMenuItem.value) {\r\n\t\t\tstore.activeItemName = menuItemByName.keys().next().value;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// запрошена смена на уже активный элемент\r\n\t\tif (activeMenuItem.value.component === store.component) {\r\n\t\t\tisLoading.value = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (store.$id) setHash(store.$id, store.activeItemName, true);\r\n\r\n\t\t// флаг загрузки будет сброшен при инициализации компонента\r\n\t\tisLoading.value = true;\r\n\r\n\t\t/**\r\n\t\t * Презагрузить компонент\r\n\t\t *\r\n\t\t * Нужно для того, чтобы минимизировать скачки интерфейса при ожидании загрузки асинхронного компонента\r\n\t\t */\r\n\t\tawait preResolveComponent(activeMenuItem.value.component, () => numberChanged === countChanged);\r\n\r\n\t\t// влкадка была сменена еще раз во время sleepWhile\r\n\t\tif (numberChanged !== countChanged) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstore.scrollable = activeMenuItem.value.scrollable;\r\n\t\tstore.component = activeMenuItem.value.component;\r\n\r\n\t\tif (activeMenuItem.value && !store.component) {\r\n\t\t\tconsole.warn(`Компонент вкладки ${store.activeItemName} не найден. Добавьте props.component для пункта меню ${store.activeItemName}.`);\r\n\t\t}\r\n\t},\r\n\t{ immediate: true },\r\n);\r\n\r\nconst elRef = ref();\r\nlet resizeObserver: ResizeObserver;\r\n\r\nonMounted(() => {\r\n\tresizeObserver = new ResizeObserver(() => {\r\n\t\telRef.value.parentElement.style.setProperty('--top-tabsView-contents-offset-top', elRef.value.offsetHeight + 'px');\r\n\t});\r\n\r\n\tresizeObserver.observe(elRef.value);\r\n});\r\n\r\nonUnmounted(() => {\r\n\tresizeObserver.disconnect();\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tref=\"elRef\"\r\n\t\t:class=\"{\r\n\t\t\t'top-tabsView_menu': true,\r\n\t\t\t'top-tabsView_menu-inPopup_0': !store.showMenuInPopup,\r\n\t\t\t'top-tabsView_menu-inPopup_1': store.showMenuInPopup,\r\n\t\t\t'top-tabsView_menu-short': store.isShort && !store.showMenuInPopup,\r\n\t\t}\"\r\n\t>\r\n\t\t<!-- Спрятать меню под кнопку в popup -->\r\n\t\t<Popup v-if=\"store.showMenuInPopup\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<div class=\"top-tabsView_menuOpener\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tv-if=\"activeMenuItem\"\r\n\t\t\t\t\t\tclass=\"top-tabsView_menuOpenerActiveItem\"\r\n\t\t\t\t\t\t:data-top-icon=\"activeMenuItem.icon\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\r\n\t\t\t\t\t\t\t{{ activeMenuItem.title }}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"top-tabsView_menuOpenerIcon\" data-top-icon=\"\"></div>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<slot></slot>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\r\n\t\t<!-- Отобразить меню на странице -->\r\n\t\t<template v-else>\r\n\t\t\t<div class=\"top-tabsView_menuList\">\r\n\t\t\t\t<slot></slot>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div\r\n\t\t\t\tv-if=\"isShortable\"\r\n\t\t\t\tclass=\"top-tabsView_menuFooter\"\r\n\t\t\t>\r\n\t\t\t\t<TabsViewMenuItem\r\n\t\t\t\t\tv-if=\"isShortable\"\r\n\t\t\t\t\t:icon=\"store.isShort ? '' : ''\"\r\n\t\t\t\t\t@click=\"store.isShort = !store.isShort\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ store.isShort ? '' : 'Свернуть' }} <!--TODO: translate-->\r\n\t\t\t\t</TabsViewMenuItem>\r\n\t\t\t</div>\r\n\t\t</template>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n/* режим отображение табов в основной области документа */\r\n.top-tabsView-pageMod .top-tabsView_menu {\r\n\tbox-sizing: border-box;\r\n\tposition: sticky;\r\n\ttop: var(--top-tabsView-top);\r\n\tz-index: 10;\r\n}\r\n\r\n/* режим отображение табов в основной области документа без popup */\r\n.top-tabsView-pageMod .top-tabsView_menu-inPopup_0 {\r\n\theight: calc(var(--100vh) - var(--top-tabsView-top));\r\n}\r\n\r\n/* стантартный режим */\r\n.top-tabsView_menu-inPopup_0 {\r\n\tbox-sizing: border-box;\r\n\twidth: var(--top-tabsView-menu-width);\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n/* режим вывода в popup */\r\n.top-tabsView_menu-inPopup_1 {\r\n\tborder-bottom: 1px solid var(--color-line-2-opacity);\r\n}\r\n\r\n.top-tabsView_menu-short {\r\n\twidth: auto;\r\n}\r\n\r\n.top-tabsView_menu > .top-tabsView_menuOpener {\r\n\tdisplay: flex;\r\n\tjustify-content: flex-end;\r\n}\r\n\r\n.top-tabsView_menu > .top-tabsView_menuOpener:hover {\r\n\tbackground: var(--color-secondary-opacity);\r\n}\r\n\r\n.top-tabsView_menuOpenerIcon { display: flex; }\r\n\r\n.top-tabsView_menuOpenerActiveItem {\r\n\t--top-forms-padding: 0px;\r\n\r\n\tbox-sizing: border-box;\r\n\tpadding: var(--top-padding-2);\r\n\tmax-width: calc(100% - var(--top-forms-base-height));\r\n\twhite-space: nowrap;\r\n\tflex-grow: 1;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: var(--top-padding-2);\r\n}\r\n\r\n.top-tabsView_menuList,\r\n.top-tabsView_menuFooter {\r\n\tpadding: var(--top-padding-2);\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: var(--top-gap-2);\r\n}\r\n\r\n.top-tabsView_menuList {\r\n\toverflow-y: auto;\r\n}\r\n\r\n.top-tabsView_menu-short .top-tabsView_menuFooter > .top-tabsView_menuItem {\r\n\t--top-icon-width: 100%;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { defineModel, onUnmounted, ref, watch } from 'vue';\r\nimport { delHash } from '@/core/utils/route';\r\nimport type { Props } from './tabsView';\r\nimport { defineTabsStore } from './store';\r\nimport TabsViewMenu from './menu.vue';\r\nimport { Loadbar } from '@/components/forms/forms';\r\nimport { checkComponentIsLoading } from './utils';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowMenuInPopup: undefined,\r\n\tisShortable: false,\r\n});\r\n\r\nconst model = defineModel<string>();\r\n\r\nconst store = defineTabsStore(props, model);\r\n\r\n/**\r\n * Установка или снятие глобального модификатора\r\n * @see props.pageMod\r\n */\r\nconst setDocumentPageModModificator = (pageMod: boolean) => {\r\n\tdocument.documentElement.classList.toggle('top-hasTabsViewPageMod', pageMod);\r\n};\r\n\r\nif (props.pageMod) setDocumentPageModModificator(true);\r\n\r\nonUnmounted(() => {\r\n\tif (props.pageMod) setDocumentPageModModificator(false);\r\n\r\n\tif (store.$id) delHash(store.$id, store.activeItemName, true);\r\n});\r\n\r\nconst componentRef = ref();\r\nconst isLoading = ref(false);\r\n\r\nwatch([componentRef, () => store.component], () => {\r\n\tisLoading.value = checkComponentIsLoading(store.component);\r\n}, { immediate: true });\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-tabsView': true,\r\n\t\t\t'top-tabsView-pageMod': props.pageMod,\r\n\t\t\t'top-tabsView-inPopup': store.showMenuInPopup,\r\n\t\t}\"\r\n\t>\r\n\t\t<TabsViewMenu\r\n\t\t\t:isShortable=\"isShortable\"\r\n\t\t\tv-model:isLoading=\"isLoading\"\r\n\t\t>\r\n\t\t\t<!-- @slot Меню, ожидает передачу компонентов TabsViewMenuItem и TabsViewMenuTitle -->\r\n\t\t\t<slot name=\"menu\"></slot>\r\n\t\t</TabsViewMenu>\r\n\r\n\t\t<div\r\n\t\t\t:class=\"{\r\n\t\t\t\t'top-tabsView_contents': true,\r\n\t\t\t\t'top-tabsView_contents-isLoading': isLoading,\r\n\t\t\t\t'top-tabsView_contents-noScrollable': !store.scrollable,\r\n\t\t\t}\"\r\n\t\t>\r\n\t\t\t<Loadbar v-if=\"isLoading\"/>\r\n\t\t\t<keep-alive>\r\n\t\t\t\t<component\r\n\t\t\t\t\tref=\"componentRef\"\r\n\t\t\t\t\t:is=\"store.component\"\r\n\t\t\t\t/>\r\n\t\t\t</keep-alive>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n:root {\r\n\t--top-tabsView-top: 0px;\r\n\t--top-tabsView-menu-width: 220px;\r\n\t--top-tabsView-contents-offset-top: 0px;\r\n}\r\n\r\n.top-tabsView {\r\n\tbackground: var(--color-bg-2);\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n}\r\n\r\n.top-tabsView_contents {\r\n\tborder-radius: var(--top-radius-4);\r\n\tbackground: var(--color-bg-3);\r\n\tpadding: var(--top-padding-4);\r\n\tflex-grow: 1;\r\n\toverflow: auto;\r\n\tposition: relative;\r\n}\r\n\r\n.top-tabsView_contents-isLoading {\r\n\tpointer-events: none;\r\n}\r\n\r\n.top-tabsView_contents-noScrollable {\r\n\twidth: calc(100% - var(--top-tabsView-menu-width));\r\n\tpadding: 0;\r\n\toverflow: visible;\r\n}\r\n\r\n/* top-tabsView-inPopup */\r\n.top-tabsView-inPopup {\r\n\tbackground: var(--color-bg-3);\r\n\tflex-direction: column;\r\n}\r\n\r\n.top-tabsView-inPopup > .top-tabsView_contents {\r\n\tborder-radius: 0;\r\n}\r\n\r\n.top-tabsView-inPopup > .top-tabsView_contents-noScrollable {\r\n\twidth: auto;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-tabsView_menuDelimeter\"></div>\r\n</template>\r\n\r\n<style module>\r\n.top-tabsView_menuDelimeter {\r\n\tpadding: var(--top-padding-1) 0;\r\n\tdisplay: flex;\r\n}\r\n\r\n.top-tabsView_menuDelimeter:before {\r\n\tcontent: \"\";\r\n\theight: 2px;\r\n\tbackground: var(--color-line-2-opacity);\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-tabsView_menuDelimeter:first-child,\r\n.top-tabsView_menuDelimeter + .top-tabsView_menuDelimeter {\r\n\tdisplay: none;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { useTabsStore } from './store';\r\nimport type { PropsMenuTitle } from './tabsView';\r\nimport TabsViewMenuDelimeter from './menuDelimeter.vue';\r\nimport { PopupListItem } from '../../popup/popup';\r\n\r\ndefineProps<PropsMenuTitle>();\r\n\r\nconst store = useTabsStore();\r\n</script>\r\n\r\n<template>\r\n\t<PopupListItem\r\n\t\tv-if=\"store.showMenuInPopup\"\r\n\t\ttype=\"title\"\r\n\t>\r\n\t\t<slot></slot>\r\n\t</PopupListItem>\r\n\r\n\t<TabsViewMenuDelimeter v-else-if=\"store.isShort\"/>\r\n\r\n\t<div\r\n\t\tv-else\r\n\t\t:class=\"{\r\n\t\t\t'top-tabsView_menuTitle': true,\r\n\t\t\t'top-tabsView_menuTitle-subtitle': isSubtitle,\r\n\t\t}\"\r\n\t>\r\n\t\t<slot></slot>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-tabsView_menuTitle {\r\n\tpadding: var(--top-padding-4) var(--top-padding-2) var(--top-padding-1);\r\n\tfont-weight: 600;\r\n}\r\n\r\n.top-tabsView_menuTitle-subtitle {\r\n\tpadding-top: var(--top-padding-1);\r\n\tfont-size: 12px;\r\n\tfont-weight: 400;\r\n\tcolor: var(--color-text-2);\r\n}\r\n</style>"],"names":["genStorageKey","stateName","stateKey","loadLocalStorge","store","localStorageKey","localStorageValue","addSaverLocalStorge","watch","StoreLocalStorage","injectionKey","defineTabsStore","props","model","defineStore","showMenuInPopup","computed","Core","pageMod","isShort","ref","component","scrollable","useTabsStore","useStore","__props","href","genHash","tagName","_sfc_main$5","onClick","e","checkComponentIsLoading","preResolveComponent","condition","sleepWhile","isLoading","useModel","slots","useSlots","menuItemByName","genMenuItemByName","item","subComponent","TabsViewMenuItem","menuItem","_b","_a","markRaw","activeMenuItem","countChanged","numberChanged","activeItemName","getHash","setHash","elRef","resizeObserver","onMounted","onUnmounted","setDocumentPageModModificator","delHash","componentRef","_sfc_render","_ctx","_cache"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabsView.js","sources":["../../src/core/utils/store/localStorage.ts","../../src/components/tabsView/tabsView/store.ts","../../src/components/tabsView/tabsView/menuItem.vue","../../src/components/tabsView/tabsView/utils.ts","../../src/components/tabsView/tabsView/menu.vue","../../src/components/tabsView/tabsView/tabsView.vue","../../src/components/tabsView/tabsView/menuDelimeter.vue","../../src/components/tabsView/tabsView/menuTitle.vue"],"sourcesContent":["import { watch } from 'vue';\nimport type { Store } from './store';\n\n/**\n * Сгенерировать имя для сохранения данных в localStorage\n * @param stateName - имя свойства состояния\n * @param stateKey - ключ состояния, разные компоненты могут использовать одинаковый ключ\n */\nconst genStorageKey = <T extends Store>(stateName: keyof T, stateKey: string): string => {\n\tconst stateNameString = String(stateName);\n\n\treturn `top:${stateNameString}:${stateKey}`;\n};\n\n/**\n * Загрузить состояние\n * @param stateName - имя свойства состояния\n * @param store\n */\nconst loadLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\n\t// если Store.key не знадан, значит сохранение состояния в компоненте отключено\n\tif (!store.$id) return;\n\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\n\n\ttry {\n\t\tconst localStorageValue: typeof store[keyof typeof store] = JSON.parse(localStorage.getItem(localStorageKey) as string);\n\n\t\tif (typeof localStorageValue === typeof store[stateName]) {\n\t\t\tstore[stateName] = localStorageValue;\n\t\t}\n\t} catch (e) {\n\t\tconsole.warn(new Error(`В localStorage[${localStorageKey}] не корректный json`));\n\t}\n};\n\n/**\n * Добавить автосохранение состояние при его изменении\n * @param stateName - имя свойства состояния\n * @param store\n */\nconst addSaverLocalStorge = <T extends Store>(stateName: keyof T, store: T) => {\n\t// если store.$id не знадан, значит сохранение состояния в компоненте отключено\n\tif (!store.$id) return;\n\n\tconst localStorageKey = genStorageKey(stateName, store.$id);\n\n\twatch(() => store[stateName], () => {\n\t\tlocalStorage.setItem(localStorageKey, JSON.stringify(store[stateName]));\n\t}, { immediate: true });\n};\n\nexport default {\n\tloadLocalStorge,\n\taddSaverLocalStorge,\n};","import type { ModelRef, InjectionKey } from 'vue';\nimport { ref, computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { defineStore, useStore } from '@/core/utils/store';\nimport StoreLocalStorage from '@/core/utils/store/localStorage';\nimport type { Props, Store } from './tabsView';\n\nexport const injectionKey = Symbol() as InjectionKey<Store>;\n\n/**\n * Инициировать Store компонента\n */\nexport const defineTabsStore = (props: Props, model: ModelRef<string | undefined>) => {\n\tconst store = defineStore(injectionKey, () => {\n\t\tconst showMenuInPopup = computed(() => props.showMenuInPopup ?? Core.state.isMobile);\n\t\tconst pageMod = computed(() => props.pageMod);\n\t\tconst isShort = ref(false);\n\n\t\tconst component = ref(undefined);\n\t\tconst scrollable = ref(true);\n\n\t\treturn {\n\t\t\tshowMenuInPopup,\n\t\t\tpageMod,\n\t\t\tisShort,\n\t\t\tactiveItemName: model,\n\t\t\tcomponent,\n\t\t\tscrollable,\n\t\t};\n\t}, props.idState);\n\n\tif (props.isShortable) {\n\t\tconst stateName = 'isShort';\n\n\t\tStoreLocalStorage.loadLocalStorge(stateName, store);\n\t\tStoreLocalStorage.addSaverLocalStorge(stateName, store);\n\t}\n\n\treturn store;\n};\n\n/**\n * Получить Store компонента\n */\nexport const useTabsStore = () => useStore(injectionKey);","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { genHash } from '@/core/utils/route';\nimport { PopupListItem } from '@/components/popup/popup';\nimport { useTabsStore } from './store';\nimport type { PropsMenuItem } from './tabsView';\n\nconst props = withDefaults(defineProps<PropsMenuItem>(), {\n\tscrollable: true,\n\tcomponent: undefined,\n});\n\nconst store = useTabsStore();\n\nconst href = computed(() => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (props.name && store.$id) {\n\t\treturn genHash(store.$id, props.name);\n\t}\n\n\treturn props.href;\n});\n\nconst tagName = computed(() => {\n\tif (store.showMenuInPopup) {\n\t\treturn PopupListItem;\n\t}\n\n\treturn href ? 'a' : 'button';\n});\n\n/**\n * Клик по элементу меню\n */\nconst onClick = (e: MouseEvent) => {\n\t// это внутренняя хеш навигация, ссылка на вкладку\n\tif (!props.href && href.value) {\n\t\te.preventDefault();\n\t}\n\n\tif (props.name) {\n\t\tstore.activeItemName = props.name;\n\t}\n};\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\ttarget=\"_self\"\n\t\t:class=\"{\n\t\t\t['top-tabsView_menuItem']: !store.showMenuInPopup,\n\t\t\t['top-active']: name && store.activeItemName === name,\n\t\t\t['top-disabled']: disabled,\n\t\t\t['top-spa-disabled']: true,\n\t\t}\"\n\t\t:href=\"href\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t@click=\"onClick\"\n\t>\n\t\t<slot v-if=\"store.showMenuInPopup\"></slot>\n\n\t\t<span\n\t\t\tv-else-if=\"$slots.default && !store.isShort\"\n\t\t\tclass=\"top-ellipsis\"\n\t\t>\n\t\t\t<slot></slot>\n\t\t</span>\n\t</component>\n</template>\n\n<style module>\n.top-tabsView_menuItem {\n\t--top-icon-color: var(--color-text-1);\n\t--top-icon-width: calc(var(--top-icon-size));\n\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\n\tborder: none;\n\tborder-radius: var(--top-radius-2);\n\tpadding: var(--top-padding-2);\n\tbackground: transparent;\n\theight: 40px;\n\n\tcolor: var(--color-text-1);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n\n\tdisplay: flex;\n\tgap: var(--top-gap-2);\n\talign-items: center;\n\tjustify-content: flex-start;\n\ttransition: background var(--transition);\n}\n\n.top-tabsView_menuItem:hover {\n\tbackground: var(--color-secondary-2-opacity);\n\ttext-decoration: none;\n}\n\n.top-tabsView_menuItem.top-active {\n\tcursor: unset;\n\tbackground: var(--color-bg-3);\n}\n\n.top-tabsView_menuItem:disabled:not(option):not(optgroup):not(.top-forms-option),\n.top-tabsView_menuItem:disabled ~ .top-formsCaption,\n.top-tabsView_menuItem.top-disabled[data-top-icon]:before,\n.top-tabsView_menuItem.top-disabled[data-top-icon2]:after {\n\topacity: unset;\n\tfilter: unset;\n}\n\n.top-tabsView_menuItem.top-disabled {\n\t--top-icon-color: var(--color-text-4);\n\n\tcolor: var(--color-text-4);\n}\n</style>","// TODO: Эту функцию можно вынести в глобальный utils\n\nimport { sleepWhile } from '@/core/utils/system';\n\n/**\n * Проверка нахождения компонента в состояние загрузки\n * @param component\n */\nexport const checkComponentIsLoading = (component: any) => {\n\treturn component?.name === 'AsyncComponentWrapper' && !component?.__asyncResolved;\n};\n\n/**\n * Презагрузить компонент\n *\n * Некоторое время ожидает загрузку компонента, прежде чем завершит работу\n */\nexport const preResolveComponent = async (component: any, condition: Function) => {\n\tif(component?.name !== 'AsyncComponentWrapper') return;\n\tif(component?.__asyncResolved) return;\n\n\tcomponent.__asyncLoader();\n\n\tawait sleepWhile(() => {\n\t\treturn condition() && checkComponentIsLoading(component);\n\t}, 200);\n};","<script setup lang=\"ts\">\nimport { ref, watch, markRaw, useSlots, onMounted, onUnmounted } from 'vue';\nimport type { Ref, Component } from 'vue';\nimport { Popup } from '../../popup/popup';\nimport { sleepWhile } from '@/core/utils/system';\nimport { getHash, setHash } from '@/core/utils/route';\n\nimport type { PropsMenu, PropsMenuItem, MenuItem } from './tabsView';\nimport { useTabsStore } from './store';\nimport TabsViewMenuItem from './menuItem.vue';\nimport { preResolveComponent } from './utils';\n\ndefineProps<PropsMenu>();\n\nconst isLoading = defineModel('isLoading');\n\nconst store = useTabsStore();\n\nconst slots = useSlots();\n\n// словарь используется для оптимизации получения нужного menuItem\nconst menuItemByName: Map<PropsMenuItem['name'], MenuItem> = new Map();\n\n// сгенерировать словарь с menuItem, по элементам в slot\nconst genMenuItemByName = () => {\n\tif (!slots.default) return;\n\n\tconst component: any = slots.default().find(item => item.key === '_menu');\n\tif (!component) return;\n\n\tcomponent.children.forEach((subComponent: any) => {\n\t\tif (subComponent.type.__name !== TabsViewMenuItem.__name) return;\n\t\tif (!subComponent.props.name || subComponent.props.disabled) return;\n\n\t\tconst menuItem: MenuItem = {\n\t\t\ttitle: (subComponent.children.default?.()[0].children as string).trim(),\n\t\t\ticon: subComponent.props.icon,\n\t\t\tcomponent: subComponent.props.component ? markRaw(subComponent.props.component) : TabsViewMenuItem.props.component.default,\n\t\t\tscrollable: subComponent.props.scrollable ?? TabsViewMenuItem.props.scrollable.default,\n\t\t};\n\n\t\tmenuItemByName.set(subComponent.props.name, menuItem);\n\t});\n};\n\n/**\n * activeMenuItem нужен:\n * - для вывода текста активной вкладки в меню с popup\n * - для вывода компонента активной вкладки (store.component)\n * - для установки store.scrollable\n */\nconst activeMenuItem: Ref<MenuItem | null> = ref(null);\n\n/**\n * Кол-во изменений активной вкладки\n */\nlet countChanged = 0;\n\n/**\n * Смена активной вкладки\n *\n * TODO: смена slot, например смена языка, требует повторного выполнения genMenuItemByName()\n */\nwatch(\n\t() => store.activeItemName,\n\tasync () => {\n\t\tconst numberChanged = ++countChanged; // порядковый номер текущего изменения\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tgenMenuItemByName();\n\t\t}\n\n\t\tif (menuItemByName.size === 0) {\n\t\t\tstore.activeItemName = '';\n\n\t\t\treturn;\n\t\t}\n\n\t\tactiveMenuItem.value = menuItemByName.get(store.activeItemName) ?? null;\n\n\t\t// элемент не найден, установить из хеша страницы\n\t\tif (!activeMenuItem.value && store.$id) {\n\t\t\tconst activeItemName = getHash(store.$id);\n\n\t\t\tactiveMenuItem.value = menuItemByName.get(activeItemName) ?? null;\n\n\t\t\tif (activeMenuItem.value) {\n\t\t\t\tstore.activeItemName = activeItemName;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// элемент не найден, установить первый доступный\n\t\tif (!activeMenuItem.value) {\n\t\t\tstore.activeItemName = menuItemByName.keys().next().value;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// запрошена смена на уже активный элемент\n\t\tif (activeMenuItem.value.component === store.component) {\n\t\t\tisLoading.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (store.$id) setHash(store.$id, store.activeItemName, true);\n\n\t\t// флаг загрузки будет сброшен при инициализации компонента\n\t\tisLoading.value = true;\n\n\t\t/**\n\t\t * Презагрузить компонент\n\t\t *\n\t\t * Нужно для того, чтобы минимизировать скачки интерфейса при ожидании загрузки асинхронного компонента\n\t\t */\n\t\tawait preResolveComponent(activeMenuItem.value.component, () => numberChanged === countChanged);\n\n\t\t// влкадка была сменена еще раз во время sleepWhile\n\t\tif (numberChanged !== countChanged) {\n\t\t\treturn;\n\t\t}\n\n\t\tstore.scrollable = activeMenuItem.value.scrollable;\n\t\tstore.component = activeMenuItem.value.component;\n\n\t\tif (activeMenuItem.value && !store.component) {\n\t\t\tconsole.warn(`Компонент вкладки ${store.activeItemName} не найден. Добавьте props.component для пункта меню ${store.activeItemName}.`);\n\t\t}\n\t},\n\t{ immediate: true },\n);\n\nconst elRef = ref();\nlet resizeObserver: ResizeObserver;\n\nonMounted(() => {\n\tresizeObserver = new ResizeObserver(() => {\n\t\telRef.value.parentElement.style.setProperty('--top-tabsView-contents-offset-top', elRef.value.offsetHeight + 'px');\n\t});\n\n\tresizeObserver.observe(elRef.value);\n});\n\nonUnmounted(() => {\n\tresizeObserver.disconnect();\n});\n</script>\n\n<template>\n\t<div\n\t\tref=\"elRef\"\n\t\t:class=\"{\n\t\t\t'top-tabsView_menu': true,\n\t\t\t'top-tabsView_menu-inPopup_0': !store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-inPopup_1': store.showMenuInPopup,\n\t\t\t'top-tabsView_menu-short': store.isShort && !store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<!-- Спрятать меню под кнопку в popup -->\n\t\t<Popup v-if=\"store.showMenuInPopup\">\n\t\t\t<template #opener>\n\t\t\t\t<div class=\"top-tabsView_menuOpener\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"activeMenuItem\"\n\t\t\t\t\t\tclass=\"top-tabsView_menuOpenerActiveItem\"\n\t\t\t\t\t\t:data-top-icon=\"activeMenuItem.icon\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ activeMenuItem.title }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"top-tabsView_menuOpenerIcon\" data-top-icon=\"\"></div>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<slot></slot>\n\t\t\t</template>\n\t\t</Popup>\n\n\t\t<!-- Отобразить меню на странице -->\n\t\t<template v-else>\n\t\t\t<div class=\"top-tabsView_menuList\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tv-if=\"isShortable\"\n\t\t\t\tclass=\"top-tabsView_menuFooter\"\n\t\t\t>\n\t\t\t\t<TabsViewMenuItem\n\t\t\t\t\tv-if=\"isShortable\"\n\t\t\t\t\t:icon=\"store.isShort ? '' : ''\"\n\t\t\t\t\t@click=\"store.isShort = !store.isShort\"\n\t\t\t\t>\n\t\t\t\t\t{{ store.isShort ? '' : 'Свернуть' }} <!--TODO: translate-->\n\t\t\t\t</TabsViewMenuItem>\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<style module>\n/* режим отображение табов в основной области документа */\n.top-tabsView-pageMod .top-tabsView_menu {\n\tbox-sizing: border-box;\n\tposition: sticky;\n\ttop: var(--top-tabsView-top);\n\tz-index: 10;\n}\n\n/* режим отображение табов в основной области документа без popup */\n.top-tabsView-pageMod .top-tabsView_menu-inPopup_0 {\n\theight: calc(var(--100vh) - var(--top-tabsView-top));\n}\n\n/* стантартный режим */\n.top-tabsView_menu-inPopup_0 {\n\tbox-sizing: border-box;\n\twidth: var(--top-tabsView-menu-width);\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n}\n\n/* режим вывода в popup */\n.top-tabsView_menu-inPopup_1 {\n\tborder-bottom: 1px solid var(--color-line-2-opacity);\n}\n\n.top-tabsView_menu-short {\n\twidth: auto;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n}\n\n.top-tabsView_menu > .top-tabsView_menuOpener:hover {\n\tbackground: var(--color-secondary-opacity);\n}\n\n.top-tabsView_menuOpenerIcon { display: flex; }\n\n.top-tabsView_menuOpenerActiveItem {\n\t--top-forms-padding: 0px;\n\n\tbox-sizing: border-box;\n\tpadding: var(--top-padding-2);\n\tmax-width: calc(100% - var(--top-forms-base-height));\n\twhite-space: nowrap;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--top-padding-2);\n}\n\n.top-tabsView_menuList,\n.top-tabsView_menuFooter {\n\tpadding: var(--top-padding-2);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--top-gap-2);\n}\n\n.top-tabsView_menuList {\n\toverflow-y: auto;\n}\n\n.top-tabsView_menu-short .top-tabsView_menuFooter > .top-tabsView_menuItem {\n\t--top-icon-width: 100%;\n}\n</style>","<script setup lang=\"ts\">\nimport { defineModel, onUnmounted, ref, watch } from 'vue';\nimport { delHash } from '@/core/utils/route';\nimport type { Props } from './tabsView';\nimport { defineTabsStore } from './store';\nimport TabsViewMenu from './menu.vue';\nimport { Loadbar } from '@/components/forms/forms';\nimport { checkComponentIsLoading } from './utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowMenuInPopup: undefined,\n\tisShortable: false,\n});\n\nconst model = defineModel<string>();\n\nconst store = defineTabsStore(props, model);\n\n/**\n * Установка или снятие глобального модификатора\n * @see props.pageMod\n */\nconst setDocumentPageModModificator = (pageMod: boolean) => {\n\tdocument.documentElement.classList.toggle('top-hasTabsViewPageMod', pageMod);\n};\n\nif (props.pageMod) setDocumentPageModModificator(true);\n\nonUnmounted(() => {\n\tif (props.pageMod) setDocumentPageModModificator(false);\n\n\tif (store.$id) delHash(store.$id, store.activeItemName, true);\n});\n\nconst componentRef = ref();\nconst isLoading = ref(false);\n\nwatch([componentRef, () => store.component], () => {\n\tisLoading.value = checkComponentIsLoading(store.component);\n}, { immediate: true });\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tabsView': true,\n\t\t\t'top-tabsView-pageMod': props.pageMod,\n\t\t\t'top-tabsView-inPopup': store.showMenuInPopup,\n\t\t}\"\n\t>\n\t\t<TabsViewMenu\n\t\t\t:isShortable=\"isShortable\"\n\t\t\tv-model:isLoading=\"isLoading\"\n\t\t>\n\t\t\t<!-- @slot Меню, ожидает передачу компонентов TabsViewMenuItem и TabsViewMenuTitle -->\n\t\t\t<slot name=\"menu\"></slot>\n\t\t</TabsViewMenu>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-tabsView_contents': true,\n\t\t\t\t'top-tabsView_contents-isLoading': isLoading,\n\t\t\t\t'top-tabsView_contents-noScrollable': !store.scrollable,\n\t\t\t}\"\n\t\t>\n\t\t\t<Loadbar v-if=\"isLoading\"/>\n\t\t\t<keep-alive>\n\t\t\t\t<component\n\t\t\t\t\tref=\"componentRef\"\n\t\t\t\t\t:is=\"store.component\"\n\t\t\t\t/>\n\t\t\t</keep-alive>\n\t\t</div>\n\t</div>\n</template>\n\n<style module>\n:root {\n\t--top-tabsView-top: 0px;\n\t--top-tabsView-menu-width: 220px;\n\t--top-tabsView-contents-offset-top: 0px;\n}\n\n.top-tabsView {\n\tbackground: var(--color-bg-2);\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.top-tabsView_contents {\n\tborder-radius: var(--top-radius-4);\n\tbackground: var(--color-bg-3);\n\tpadding: var(--top-padding-4);\n\tflex-grow: 1;\n\toverflow: auto;\n\tposition: relative;\n}\n\n.top-tabsView_contents-isLoading {\n\tpointer-events: none;\n}\n\n.top-tabsView_contents-noScrollable {\n\twidth: calc(100% - var(--top-tabsView-menu-width));\n\tpadding: 0;\n\toverflow: visible;\n}\n\n/* top-tabsView-inPopup */\n.top-tabsView-inPopup {\n\tbackground: var(--color-bg-3);\n\tflex-direction: column;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents {\n\tborder-radius: 0;\n}\n\n.top-tabsView-inPopup > .top-tabsView_contents-noScrollable {\n\twidth: auto;\n}\n</style>","<script setup lang=\"ts\">\n\n</script>\n\n<template>\n\t<div class=\"top-tabsView_menuDelimeter\"></div>\n</template>\n\n<style module>\n.top-tabsView_menuDelimeter {\n\tpadding: var(--top-padding-1) 0;\n\tdisplay: flex;\n}\n\n.top-tabsView_menuDelimeter:before {\n\tcontent: \"\";\n\theight: 2px;\n\tbackground: var(--color-line-2-opacity);\n\tflex-grow: 1;\n}\n\n.top-tabsView_menuDelimeter:first-child,\n.top-tabsView_menuDelimeter + .top-tabsView_menuDelimeter {\n\tdisplay: none;\n}\n</style>","<script setup lang=\"ts\">\nimport { useTabsStore } from './store';\nimport type { PropsMenuTitle } from './tabsView';\nimport TabsViewMenuDelimeter from './menuDelimeter.vue';\nimport { PopupListItem } from '../../popup/popup';\n\ndefineProps<PropsMenuTitle>();\n\nconst store = useTabsStore();\n</script>\n\n<template>\n\t<PopupListItem\n\t\tv-if=\"store.showMenuInPopup\"\n\t\ttype=\"title\"\n\t>\n\t\t<slot></slot>\n\t</PopupListItem>\n\n\t<TabsViewMenuDelimeter v-else-if=\"store.isShort\"/>\n\n\t<div\n\t\tv-else\n\t\t:class=\"{\n\t\t\t'top-tabsView_menuTitle': true,\n\t\t\t'top-tabsView_menuTitle-subtitle': isSubtitle,\n\t\t}\"\n\t>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style module>\n.top-tabsView_menuTitle {\n\tpadding: var(--top-padding-4) var(--top-padding-2) var(--top-padding-1);\n\tfont-weight: 600;\n}\n\n.top-tabsView_menuTitle-subtitle {\n\tpadding-top: var(--top-padding-1);\n\tfont-size: 12px;\n\tfont-weight: 400;\n\tcolor: var(--color-text-2);\n}\n</style>"],"names":["genStorageKey","stateName","stateKey","loadLocalStorge","store","localStorageKey","localStorageValue","addSaverLocalStorge","watch","StoreLocalStorage","injectionKey","defineTabsStore","props","model","defineStore","showMenuInPopup","computed","Core","pageMod","isShort","ref","component","scrollable","useTabsStore","useStore","__props","href","genHash","tagName","_sfc_main$5","onClick","e","checkComponentIsLoading","preResolveComponent","condition","sleepWhile","isLoading","useModel","slots","useSlots","menuItemByName","genMenuItemByName","item","subComponent","TabsViewMenuItem","menuItem","_b","_a","markRaw","activeMenuItem","countChanged","numberChanged","activeItemName","getHash","setHash","elRef","resizeObserver","onMounted","onUnmounted","setDocumentPageModModificator","delHash","componentRef","_sfc_render","_ctx","_cache"],"mappings":"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"}
|
package/utils/css.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.amd.js","sources":["../../src/core/utils/css.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"css.amd.js","sources":["../../src/core/utils/css.ts"],"sourcesContent":["/**\n * Вставить css стили на страницу с автоматическим определением media\n * @param fileNames - список ссылок на css файлы\n */\nexport const insertToPage = async (fileNames: Array<string>) => {\n\tconst cssFilesByOptions = new Map();\n\tcssFilesByOptions.set('::', []);\n\n\tfileNames.forEach(filename => {\n\t\tlet m = false;\n\t\tlet pc = false;\n\n\t\tif (filename.match(/\\.m\\./)) {\n\t\t\tm = true;\n\t\t}\n\t\tif (filename.match(/\\.pc\\./)) {\n\t\t\tpc = true;\n\t\t}\n\n\t\tconst key = `${m}:${pc}`;\n\t\tif (!cssFilesByOptions.has(key)) {\n\t\t\tcssFilesByOptions.set(`${m}:${pc}`, []);\n\t\t}\n\t\tcssFilesByOptions.get(`${m}:${pc}`).push(filename);\n\t});\n\n\tconst promises: Array<Promise<unknown>> = [];\n\n\tcssFilesByOptions.forEach((fileNames, options: string) => {\n\t\tif (!fileNames.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [m, pc] = options.split(':').map(item => item === 'true');\n\n\t\tlet media = 'all';\n\t\tif (m) {\n\t\t\tmedia = '(max-width: 900px)';\n\t\t}\n\t\tif (pc) {\n\t\t\tmedia = '(min-width: 900px)';\n\t\t}\n\n\t\tconst promisesI = _insertToPage(fileNames, media);\n\t\tpromisesI.forEach(promise => promises.push(promise));\n\t});\n\n\treturn await Promise.all(promises);\n};\n\nconst _insertToPage = (fileNames: Array<string>, media: string): Array<Promise<unknown>> => {\n\tconst promises: Array<Promise<unknown>> = [];\n\n\tfileNames.forEach(fileName => {\n\t\tconst id = 'topCSSLink-' + fileName.replace(/\\W/g, '-');\n\n\t\t// стиль уже загружен\n\t\tif (window.hasOwnProperty(id)) return;\n\n\t\tlet resolve: Function;\n\t\tlet reject: Function;\n\t\tconst promise = new Promise((_resolve, _reject) => {\n\t\t\tresolve = _resolve;\n\t\t\treject = _reject;\n\t\t});\n\t\tpromises.push(promise);\n\n\t\tconst elLink = document.createElement('link');\n\t\telLink.id = id;\n\t\telLink.rel = 'stylesheet';\n\t\telLink.media = media;\n\t\telLink.href = fileName;\n\t\telLink.onload = () => resolve();\n\t\telLink.onerror = () => reject();\n\n\t\tdocument.head.append(elLink);\n\t});\n\n\treturn promises;\n};"],"names":["insertToPage","fileNames","cssFilesByOptions","filename","m","pc","key","promises","fileNames2","media","promise","_insertToPage","fileName","id","elLink","resolve","reject"],"mappings":"yFAIa,MAAAA,EAAA,MAAAC,GAAA,CACZ,MAAAC,EAAA,IAAA,mBAGAD,EAAA,QAAAE,GAAA,CACC,IAAAC,EAAA,GACAC,EAAA,GAEAF,EAAA,MAAA,OAAA,UAGAA,EAAA,MAAA,QAAA,UAIA,MAAAG,EAAA,GAAAF,CAAA,IAAAC,CAAA,aAECH,EAAA,IAAA,GAAAE,CAAA,IAAAC,CAAA,GAAA,CAAA,CAAA,EAEDH,EAAA,IAAA,GAAAE,CAAA,IAAAC,CAAA,EAAA,EAAA,KAAAF,CAAA,CAAiD,CAAA,EAGlD,MAAAI,EAAA,CAAA,2BAGC,GAAA,CAAAC,EAAA,OACC,kDAKD,IAAAC,EAAA,qEASA,QAAAC,GAAAH,EAAA,KAAAG,CAAA,CAAA,CAAmD,CAAA,wBAMrDC,EAAA,CAAAV,EAAAQ,IAAA,CACC,MAAAF,EAAA,CAAA,EAEA,OAAAN,EAAA,QAAAW,GAAA,CACC,MAAAC,EAAA,cAAAD,EAAA,QAAA,MAAA,GAAA,EAGA,GAAA,OAAA,eAAAC,CAAA,EAA+B,kDAMrB,CAAA,EAEVN,EAAA,KAAAG,CAAA,yCAGAI,EAAA,GAAAD,EACAC,EAAA,IAAA,aACAA,EAAA,MAAAL,EACAK,EAAA,KAAAF,EACAE,EAAA,OAAA,IAAAC,EAAA,EACAD,EAAA,QAAA,IAAAE,EAAA,yBAE2B,CAAA"}
|
package/utils/css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.js","sources":["../../src/core/utils/css.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"css.js","sources":["../../src/core/utils/css.ts"],"sourcesContent":["/**\n * Вставить css стили на страницу с автоматическим определением media\n * @param fileNames - список ссылок на css файлы\n */\nexport const insertToPage = async (fileNames: Array<string>) => {\n\tconst cssFilesByOptions = new Map();\n\tcssFilesByOptions.set('::', []);\n\n\tfileNames.forEach(filename => {\n\t\tlet m = false;\n\t\tlet pc = false;\n\n\t\tif (filename.match(/\\.m\\./)) {\n\t\t\tm = true;\n\t\t}\n\t\tif (filename.match(/\\.pc\\./)) {\n\t\t\tpc = true;\n\t\t}\n\n\t\tconst key = `${m}:${pc}`;\n\t\tif (!cssFilesByOptions.has(key)) {\n\t\t\tcssFilesByOptions.set(`${m}:${pc}`, []);\n\t\t}\n\t\tcssFilesByOptions.get(`${m}:${pc}`).push(filename);\n\t});\n\n\tconst promises: Array<Promise<unknown>> = [];\n\n\tcssFilesByOptions.forEach((fileNames, options: string) => {\n\t\tif (!fileNames.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [m, pc] = options.split(':').map(item => item === 'true');\n\n\t\tlet media = 'all';\n\t\tif (m) {\n\t\t\tmedia = '(max-width: 900px)';\n\t\t}\n\t\tif (pc) {\n\t\t\tmedia = '(min-width: 900px)';\n\t\t}\n\n\t\tconst promisesI = _insertToPage(fileNames, media);\n\t\tpromisesI.forEach(promise => promises.push(promise));\n\t});\n\n\treturn await Promise.all(promises);\n};\n\nconst _insertToPage = (fileNames: Array<string>, media: string): Array<Promise<unknown>> => {\n\tconst promises: Array<Promise<unknown>> = [];\n\n\tfileNames.forEach(fileName => {\n\t\tconst id = 'topCSSLink-' + fileName.replace(/\\W/g, '-');\n\n\t\t// стиль уже загружен\n\t\tif (window.hasOwnProperty(id)) return;\n\n\t\tlet resolve: Function;\n\t\tlet reject: Function;\n\t\tconst promise = new Promise((_resolve, _reject) => {\n\t\t\tresolve = _resolve;\n\t\t\treject = _reject;\n\t\t});\n\t\tpromises.push(promise);\n\n\t\tconst elLink = document.createElement('link');\n\t\telLink.id = id;\n\t\telLink.rel = 'stylesheet';\n\t\telLink.media = media;\n\t\telLink.href = fileName;\n\t\telLink.onload = () => resolve();\n\t\telLink.onerror = () => reject();\n\n\t\tdocument.head.append(elLink);\n\t});\n\n\treturn promises;\n};"],"names":["insertToPage","fileNames","cssFilesByOptions","filename","m","pc","key","promises","options","item","media","_insertToPage","promise","fileName","id","resolve","reject","_resolve","_reject","elLink"],"mappings":"AAIa,MAAAA,IAAe,OAAOC,MAA6B;AACzD,QAAAC,wBAAwB;AACZ,EAAAA,EAAA,IAAI,MAAM,CAAA,CAAE,GAE9BD,EAAU,QAAQ,CAAYE,MAAA;AAC7B,QAAIC,IAAI,IACJC,IAAK;AAEL,IAAAF,EAAS,MAAM,OAAO,MACrBC,IAAA,KAEDD,EAAS,MAAM,QAAQ,MACrBE,IAAA;AAGN,UAAMC,IAAM,GAAGF,CAAC,IAAIC,CAAE;AACtB,IAAKH,EAAkB,IAAII,CAAG,KAC7BJ,EAAkB,IAAI,GAAGE,CAAC,IAAIC,CAAE,IAAI,CAAA,CAAE,GAErBH,EAAA,IAAI,GAAGE,CAAC,IAAIC,CAAE,EAAE,EAAE,KAAKF,CAAQ;AAAA,EAAA,CACjD;AAED,QAAMI,IAAoC,CAAA;AAExB,SAAAL,EAAA,QAAQ,CAACD,GAAWO,MAAoB;AACrD,QAAA,CAACP,EAAU;AACd;AAGK,UAAA,CAACG,GAAGC,CAAE,IAAIG,EAAQ,MAAM,GAAG,EAAE,IAAI,CAAQC,MAAAA,MAAS,MAAM;AAE9D,QAAIC,IAAQ;AACZ,IAAIN,MACKM,IAAA,uBAELL,MACKK,IAAA,uBAGSC,EAAcV,GAAWS,CAAK,EACtC,QAAQ,CAAAE,MAAWL,EAAS,KAAKK,CAAO,CAAC;AAAA,EAAA,CACnD,GAEM,MAAM,QAAQ,IAAIL,CAAQ;AAClC,GAEMI,IAAgB,CAACV,GAA0BS,MAA2C;AAC3F,QAAMH,IAAoC,CAAA;AAE1C,SAAAN,EAAU,QAAQ,CAAYY,MAAA;AAC7B,UAAMC,IAAK,gBAAgBD,EAAS,QAAQ,OAAO,GAAG;AAGlD,QAAA,OAAO,eAAeC,CAAE;AAAG;AAE3B,QAAAC,GACAC;AACJ,UAAMJ,IAAU,IAAI,QAAQ,CAACK,GAAUC,MAAY;AACxC,MAAAH,IAAAE,GACDD,IAAAE;AAAA,IAAA,CACT;AACD,IAAAX,EAAS,KAAKK,CAAO;AAEf,UAAAO,IAAS,SAAS,cAAc,MAAM;AAC5C,IAAAA,EAAO,KAAKL,GACZK,EAAO,MAAM,cACbA,EAAO,QAAQT,GACfS,EAAO,OAAON,GACPM,EAAA,SAAS,MAAMJ,KACfI,EAAA,UAAU,MAAMH,KAEd,SAAA,KAAK,OAAOG,CAAM;AAAA,EAAA,CAC3B,GAEMZ;AACR;"}
|
package/utils/date.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-DNRGCC9P.amd"],function(n,e,t){"use strict";if(typeof a>"u")var a=window.Vue;e.dateFormat=t.dateFormat,e.dateUnformat=t.dateUnformat,e.genDate=t.genDate,e.stringToDate=t.stringToDate,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=date.amd.js.map
|
package/utils/date.js
CHANGED
package/utils/device.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-DNRGCC9P.amd"],function(n,i,e){"use strict";if(typeof a>"u")var a=window.Vue;i.getCommandKeyLabel=e.getCommandKeyLabel,i.isApp=e.isApp,i.isMacOS=e.isMacOS,i.isMobile=e.isMobile,i.isRetina=e.isRetina,i.isSafari=e.isSafari,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=device.amd.js.map
|
package/utils/device.js
CHANGED
package/utils/dom.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.amd.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"dom.amd.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Функции для работы с работы с Document Object Model (DOM)\n */\n\n/**\n * Создать элемент\n * @param {string} tagName\n * @param {any} attrs - атрибуты\n * @param {Element[]} elsChildrens\n * @returns {Element} - созданный элемент\n */\nfunction genEl(tagName: string, attrs: any, ...elsChildrens: Element[]): Element {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param {?Element} el\n * @returns boolean - вернет true, если элемент считается видимым\n */\nfunction isVisible(el?: Element) {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param {Element} el\n * @returns {{top: number, left: number}} - координаты элемента относительно документа\n */\nfunction offset(el: Element): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n * @param {Element} el\n * @param {string} property - имя свойства\n * @return {string} - значение css стиля\n */\nfunction css(el: Element, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param {Element} el - элемент, который требуется обернуть\n * @param {string} tagName - имя тега элемента, в который треубется обернуть элемент\n * @returns {Element}\n */\nfunction wrap(el: Element, tagName: string): Element {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element|null}\n */\nfunction querySelectorVisible(el: Element, selectors: string): Element | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element|null}\n */\nfunction querySelectorVisibleLast(el: Element, selectors: string): Element | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element[]} - обратите внимание, возвращается не NodeList[], а Element[]\n */\nfunction querySelectorAllVisible(el: Element, selectors: string): Element[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element[]}\n */\nfunction querySelectorAllArray(el: Element, selectors: string): Element[] {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param {Element} el\n * @param {string} contextName - контекст, обычно используется имя компонента\n * @param {?object | null} contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns {?object} - вернет объект контекста или undefined, если данные контекста не найдены\n */\nfunction storage(\n\tel?: Element & { topData?: any },\n\tcontextName: string = 'common', contextData: object | null | undefined = undefined,\n): object | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nfunction storageClear(el?: Element & { topData?: any }) {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["name","attrs","elsChildrens","elChildren","el","boundingClientRect","css","property","wrap","tagName","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","isVisible","querySelectorVisibleLast","querySelectorAllVisible","storage","contextName","contextData","DOM","genEl","offset","storageClear"],"mappings":"gJAcC,UAAAA,KAAAC,uDASA,OAAAC,EAAA,QAAAC,GAAA,CACC,OAAAA,GAAA,6CAGCC,EAAA,OAAAD,CAAA,CACD,CAAA,iCAgBD,MAAAE,EAAAD,EAAA,sBAAA,4CAUA,MAAAC,EAAAD,EAAA,sBAAA,EAEA,MAAA,oDAEwC,EAUzC,SAAAE,EAAAF,EAAAG,EAAA,CACC,OAAA,OAAA,iBAAAH,CAAA,EAAA,iBAAAG,CAAA,EASD,SAAAC,EAAAJ,EAAAK,EAAA,mCAEC,OAAAL,EAAA,MAAAM,CAAA,EAEAA,EAAA,OAAAN,CAAA,IAWD,SAAAO,EAAAP,EAAAQ,EAAA,CACC,OAAAC,EAAAT,EAAAQ,CAAA,EAAA,KAAAE,CAAA,GAAA,KASD,SAAAC,EAAAX,EAAAQ,EAAA,CACC,OAAAC,EAAAT,EAAAQ,CAAA,EAAA,SAAAE,CAAA,GAAA,KASD,SAAAE,EAAAZ,EAAAQ,EAAA,CACC,OAAAC,EAAAT,EAAAQ,CAAA,EAAA,OAAAE,CAAA,EASD,SAAAD,EAAAT,EAAAQ,EAAA,wCAeA,SAAAK,EAAAb,EAAAc,EAAA,SAAAC,EAAA,OAAA,MAQC,OAAAf,EAAA,UACCA,EAAA,QAAA,CAAA,uBAODe,IAAA,MACC,OAAAf,EAAA,QAAAc,CAAA,EAGDd,EAAA,QAAAc,CAAA,mBAWA,OAAAd,EAAA,QAGD,MAAAgB,EAAA,CAAe,MAAAC,EACd,UAAAP,EACA,OAAAQ,EACA,IAAAhB,EACA,KAAAE,EACA,qBAAAG,EACA,yBAAAI,EACA,wBAAAC,EACA,sBAAAH,EACA,QAAAI,EACA,aAAAM"}
|
package/utils/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"dom.js","sources":["../../src/core/utils/dom.ts"],"sourcesContent":["/**\n * Функции для работы с работы с Document Object Model (DOM)\n */\n\n/**\n * Создать элемент\n * @param {string} tagName\n * @param {any} attrs - атрибуты\n * @param {Element[]} elsChildrens\n * @returns {Element} - созданный элемент\n */\nfunction genEl(tagName: string, attrs: any, ...elsChildrens: Element[]): Element {\n\tconst el: any = document.createElement(tagName);\n\n\tfor (const name in attrs) {\n\t\tif (name.indexOf('on') === 0) {\n\t\t\t// events\n\t\t\tel[name] = attrs[name];\n\t\t} else {\n\t\t\tel.setAttribute(name, attrs[name]);\n\t\t}\n\t}\n\n\telsChildrens.forEach((elChildren) => {\n\t\tif (typeof (elChildren) === 'string') {\n\t\t\tel.insertAdjacentHTML('beforeend', elChildren);\n\t\t} else {\n\t\t\tel.append(elChildren);\n\t\t}\n\t});\n\n\treturn el;\n}\n\n/**\n * Проверить видимость элемента\n * @param {?Element} el\n * @returns boolean - вернет true, если элемент считается видимым\n */\nfunction isVisible(el?: Element) {\n\tif (!el) {\n\t\treturn false;\n\t}\n\n\tconst boundingClientRect = el.getBoundingClientRect();\n\treturn !!(boundingClientRect.width || boundingClientRect.height);\n}\n\n/**\n * Получить координаты элемента относительно документа\n * @param {Element} el\n * @returns {{top: number, left: number}} - координаты элемента относительно документа\n */\nfunction offset(el: Element): { top: number, left: number } {\n\tconst boundingClientRect = el.getBoundingClientRect();\n\n\treturn {\n\t\ttop: boundingClientRect.top + window.scrollY,\n\t\tleft: boundingClientRect.left + window.scrollX,\n\t};\n}\n\n/**\n * Получить значение css свойства элемента\n * @param {Element} el\n * @param {string} property - имя свойства\n * @return {string} - значение css стиля\n */\nfunction css(el: Element, property: string): string {\n\treturn window.getComputedStyle(el).getPropertyValue(property);\n}\n\n/**\n * Обернуть элемент и вернуть только что созданный элемент\n * @param {Element} el - элемент, который требуется обернуть\n * @param {string} tagName - имя тега элемента, в который треубется обернуть элемент\n * @returns {Element}\n */\nfunction wrap(el: Element, tagName: string): Element {\n\tconst elWrapper = document.createElement(tagName);\n\tel.after(elWrapper);\n\n\telWrapper.append(el);\n\n\treturn elWrapper;\n}\n\n/**\n * Найти и вернуть первый видимый элемент\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element|null}\n */\nfunction querySelectorVisible(el: Element, selectors: string): Element | null {\n\treturn querySelectorAllArray(el, selectors).find(isVisible) || null;\n}\n\n/**\n * Найти и вернуть последний видимый элемент\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element|null}\n */\nfunction querySelectorVisibleLast(el: Element, selectors: string): Element | null {\n\treturn querySelectorAllArray(el, selectors).findLast(isVisible) || null;\n}\n\n/**\n * Найти видимые элементы\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element[]} - обратите внимание, возвращается не NodeList[], а Element[]\n */\nfunction querySelectorAllVisible(el: Element, selectors: string): Element[] {\n\treturn querySelectorAllArray(el, selectors).filter(isVisible);\n}\n\n/**\n * Найти элементы и вернуть в виде массива\n * @param {?Document|Element} el - корневой элемент поиска\n * @param selectors - см. параметр selectors в Document.querySelectorAll()\n * @returns {Element[]}\n */\nfunction querySelectorAllArray(el: Element, selectors: string): Element[] {\n\tif (!el) {\n\t\treturn [];\n\t}\n\n\treturn [...el.querySelectorAll(selectors)];\n}\n\n/**\n * Хранилище данных элемента\n * @param {Element} el\n * @param {string} contextName - контекст, обычно используется имя компонента\n * @param {?object | null} contextData - установить объект с данными, предыдущие данные будут заменены, установите null для удаления данных\n * @returns {?object} - вернет объект контекста или undefined, если данные контекста не найдены\n */\nfunction storage(\n\tel?: Element & { topData?: any },\n\tcontextName: string = 'common', contextData: object | null | undefined = undefined,\n): object | undefined {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tif (!el.topData) {\n\t\tel.topData = {};\n\t}\n\n\tif (contextData) {\n\t\tel.topData[contextName] = contextData;\n\t}\n\n\tif (contextData === null) {\n\t\tdelete el.topData[contextName];\n\t}\n\n\treturn el.topData[contextName];\n}\n\n/**\n * Очистить хранилище элемента\n */\nfunction storageClear(el?: Element & { topData?: any }) {\n\tif (!el) {\n\t\treturn;\n\t}\n\n\tdelete el.topData;\n}\n\nexport default {\n\tgenEl,\n\tisVisible,\n\toffset,\n\tcss,\n\twrap,\n\tquerySelectorVisible,\n\tquerySelectorVisibleLast,\n\tquerySelectorAllVisible,\n\tquerySelectorAllArray,\n\tstorage,\n\tstorageClear,\n};\n"],"names":["genEl","tagName","attrs","elsChildrens","el","name","elChildren","isVisible","boundingClientRect","offset","css","property","wrap","elWrapper","querySelectorVisible","selectors","querySelectorAllArray","querySelectorVisibleLast","querySelectorAllVisible","storage","contextName","contextData","storageClear","DOM"],"mappings":"AAWA,SAASA,EAAMC,GAAiBC,MAAeC,GAAkC;AAC1E,QAAAC,IAAU,SAAS,cAAcH,CAAO;AAE9C,aAAWI,KAAQH;AAClB,IAAIG,EAAK,QAAQ,IAAI,MAAM,IAEvBD,EAAAC,CAAI,IAAIH,EAAMG,CAAI,IAErBD,EAAG,aAAaC,GAAMH,EAAMG,CAAI,CAAC;AAItB,SAAAF,EAAA,QAAQ,CAACG,MAAe;AAChC,IAAA,OAAQA,KAAgB,WACxBF,EAAA,mBAAmB,aAAaE,CAAU,IAE7CF,EAAG,OAAOE,CAAU;AAAA,EACrB,CACA,GAEMF;AACR;AAOA,SAASG,EAAUH,GAAc;AAChC,MAAI,CAACA;AACG,WAAA;AAGF,QAAAI,IAAqBJ,EAAG;AAC9B,SAAO,CAAC,EAAEI,EAAmB,SAASA,EAAmB;AAC1D;AAOA,SAASC,EAAOL,GAA4C;AACrD,QAAAI,IAAqBJ,EAAG;AAEvB,SAAA;AAAA,IACN,KAAKI,EAAmB,MAAM,OAAO;AAAA,IACrC,MAAMA,EAAmB,OAAO,OAAO;AAAA,EAAA;AAEzC;AAQA,SAASE,EAAIN,GAAaO,GAA0B;AACnD,SAAO,OAAO,iBAAiBP,CAAE,EAAE,iBAAiBO,CAAQ;AAC7D;AAQA,SAASC,EAAKR,GAAaH,GAA0B;AAC9C,QAAAY,IAAY,SAAS,cAAcZ,CAAO;AAChD,SAAAG,EAAG,MAAMS,CAAS,GAElBA,EAAU,OAAOT,CAAE,GAEZS;AACR;AAQA,SAASC,EAAqBV,GAAaW,GAAmC;AAC7E,SAAOC,EAAsBZ,GAAIW,CAAS,EAAE,KAAKR,CAAS,KAAK;AAChE;AAQA,SAASU,EAAyBb,GAAaW,GAAmC;AACjF,SAAOC,EAAsBZ,GAAIW,CAAS,EAAE,SAASR,CAAS,KAAK;AACpE;AAQA,SAASW,EAAwBd,GAAaW,GAA8B;AAC3E,SAAOC,EAAsBZ,GAAIW,CAAS,EAAE,OAAOR,CAAS;AAC7D;AAQA,SAASS,EAAsBZ,GAAaW,GAA8B;AACzE,SAAKX,IAIE,CAAC,GAAGA,EAAG,iBAAiBW,CAAS,CAAC,IAHjC;AAIT;AASA,SAASI,EACRf,GACAgB,IAAsB,UAAUC,IAAyC,QACpD;AACrB,MAAKjB;AAID,WAACA,EAAG,YACPA,EAAG,UAAU,KAGViB,MACAjB,EAAA,QAAQgB,CAAW,IAAIC,IAGvBA,MAAgB,QACZ,OAAAjB,EAAG,QAAQgB,CAAW,GAGvBhB,EAAG,QAAQgB,CAAW;AAC9B;AAKA,SAASE,EAAalB,GAAkC;AACvD,EAAKA,KAIL,OAAOA,EAAG;AACX;AAEA,MAAemB,IAAA;AAAA,EACd,OAAAvB;AAAA,EACA,WAAAO;AAAA,EACA,QAAAE;AAAA,EACA,KAAAC;AAAA,EACA,MAAAE;AAAA,EACA,sBAAAE;AAAA,EACA,0BAAAG;AAAA,EACA,yBAAAC;AAAA,EACA,uBAAAF;AAAA,EACA,SAAAG;AAAA,EACA,cAAAG;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.amd.js","sources":["../../src/core/utils/keyboard.ts"],"sourcesContent":["export function invertKeyboardLayout(string: string) {\
|
|
1
|
+
{"version":3,"file":"keyboard.amd.js","sources":["../../src/core/utils/keyboard.ts"],"sourcesContent":["export function invertKeyboardLayout(string: string) {\n\tconst a1 = 'qwertyuiop[]asdfghjkl;\\'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL;\"ZXCVBNM<>?';\n\tconst a2 = 'йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДжЭЯЧСМИТЬБЮ,';\n\tlet indexFinded: number;\n\n\tconst chars: Array<string> = string.split('');\n\tchars.forEach((char: string, index: number) => {\n\t\tindexFinded = a1.indexOf(char);\n\t\tif (indexFinded !== -1) {\n\t\t\tchars[index] = a2[indexFinded];\n\t\t} else {\n\t\t\tindexFinded = a2.indexOf(char);\n\t\t\tif (indexFinded !== -1) {\n\t\t\t\tchars[index] = a1[indexFinded];\n\t\t\t}\n\t\t}\n\t});\n\tstring = chars.join('');\n\n\treturn string;\n}"],"names":["a1","a2","indexFinded"],"mappings":"uGACC,MAAAA,EAAA,qEACAC,EAAA,uIAMCC,IAAA,6BAICA,IAAA,gBAGD,CAAA,gBAKF"}
|
package/utils/keyboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sources":["../../src/core/utils/keyboard.ts"],"sourcesContent":["export function invertKeyboardLayout(string: string) {\
|
|
1
|
+
{"version":3,"file":"keyboard.js","sources":["../../src/core/utils/keyboard.ts"],"sourcesContent":["export function invertKeyboardLayout(string: string) {\n\tconst a1 = 'qwertyuiop[]asdfghjkl;\\'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL;\"ZXCVBNM<>?';\n\tconst a2 = 'йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДжЭЯЧСМИТЬБЮ,';\n\tlet indexFinded: number;\n\n\tconst chars: Array<string> = string.split('');\n\tchars.forEach((char: string, index: number) => {\n\t\tindexFinded = a1.indexOf(char);\n\t\tif (indexFinded !== -1) {\n\t\t\tchars[index] = a2[indexFinded];\n\t\t} else {\n\t\t\tindexFinded = a2.indexOf(char);\n\t\t\tif (indexFinded !== -1) {\n\t\t\t\tchars[index] = a1[indexFinded];\n\t\t\t}\n\t\t}\n\t});\n\tstring = chars.join('');\n\n\treturn string;\n}"],"names":["invertKeyboardLayout","string","a1","a2","indexFinded","chars","char","index"],"mappings":"AAAO,SAASA,EAAqBC,GAAgB;AACpD,QAAMC,IAAK,sEACLC,IAAK;AACP,MAAAC;AAEE,QAAAC,IAAuBJ,EAAO,MAAM,EAAE;AACtC,SAAAI,EAAA,QAAQ,CAACC,GAAcC,MAAkB;AAChC,IAAAH,IAAAF,EAAG,QAAQI,CAAI,GACzBF,MAAgB,KACbC,EAAAE,CAAK,IAAIJ,EAAGC,CAAW,KAEfA,IAAAD,EAAG,QAAQG,CAAI,GACzBF,MAAgB,OACbC,EAAAE,CAAK,IAAIL,EAAGE,CAAW;AAAA,EAE/B,CACA,GACQH,IAAAI,EAAM,KAAK,EAAE,GAEfJ;AACR;"}
|
package/utils/route.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.amd.js","sources":["../../src/core/utils/route.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"route.amd.js","sources":["../../src/core/utils/route.ts"],"sourcesContent":["/**\n * Получить значение хэш параметра страницы\n */\nexport const getHash = function (name: string, locationHash: string = location.hash): string {\n\tconst re = new RegExp('[#?&]' + name + '=([^&]*)');\n\tconst value = locationHash.match(re);\n\tif (!value || value.length != 2) return '';\n\n\tvalue[1] = decodeURIComponent(value[1]);\n\tvalue[1] = value[1].replace(/\\+/g, ' ');\n\n\treturn value[1];\n};\n\n/**\n * Установить значение в хэш параметр страницы\n */\nexport const setHash = function (name: string, value: string | null, replaceState: boolean = true) {\n\tlet hash = genHash(name, value);\n\tif (hash == '#') hash = '';\n\n\tif (replaceState) {\n\t\thistorySetState(true, hash);\n\t} else {\n\t\tlocation.hash = hash;\n\t}\n};\n\n/**\n * Удалить значение из хэш параметра страницы\n */\nexport const delHash = function (name: string, value: string, replaceState: boolean = true) {\n\tsetHash(name, null, replaceState);\n};\n\n/**\n * Сгенерировать новое значение для хэш параметра страницы с указанным параметром\n */\nexport const genHash = function (name: string, value: string | null, locationHash: string = location.hash): string {\n\tconst re = new RegExp('&?' + name + '=[^&]*', 'g');\n\n\tlocationHash = locationHash.replace(re, '');\n\n\tif (value !== null) {\n\t\tvalue = (value + '').replace(' ', '%20');\n\t\tlocationHash = locationHash.replace(re, '&' + name + '=' + value);\n\n\t\tif (locationHash.indexOf('&' + name + '=') == -1) locationHash += '&' + name + '=' + value;\n\t}\n\n\tlocationHash = locationHash.replace(/&+/g, '&');\n\tlocationHash = locationHash.replace(/&$/, '');\n\n\tlocationHash = '#' + locationHash;\n\tlocationHash = locationHash.replace(/^#+/, '#');\n\n\t// hash страницы не должен быть пустым, чтобы не перекидывало к верху страницы\n\tlocationHash = locationHash.replace(/^#:-\\)/, '#');\n\tif ((locationHash == '' || locationHash == '#') && location.hash) locationHash = '#:-)';\n\n\treturn locationHash;\n};\n\n/**\n * Установить значения в хэш параметр страницы\n */\nexport const setHashs = function (data: Map<string, string> | object | any, replaceState: boolean) {\n\tif (data instanceof Map) data = Object.fromEntries(data);\n\n\tif (replaceState === undefined) replaceState = true;\n\tlet hash = location.hash;\n\n\tfor (const name in data) {\n\t\tconst re = new RegExp('&?' + name + '=[^&]*', 'g');\n\t\thash = hash.replace(re, '');\n\n\t\tif (data[name] !== null) {\n\t\t\tdata[name] = (data[name] + '').replace(' ', '%20');\n\t\t\thash += '&' + name + '=' + data[name];\n\t\t}\n\t}\n\n\thash = hash.replace(/&+/g, '&');\n\thash = hash.replace(/^(#)?&|&$/g, '$1');\n\thash = '#' + hash;\n\thash = hash.replace(/^#+/, '#');\n\n\tif (replaceState) {\n\t\tif (hash == '#') hash = '.';\n\t\thistorySetState(true, hash);\n\t} else {\n\t\tlocation.hash = hash;\n\t}\n};\n\n/**\n * Установть позицию в истории вкладки браузера\n * @see history.replaceState\n * @see history.pushState\n */\nexport const historySetState = (replace: boolean = false, hash: string) => {\n\t// if(requirejs.defined('es6!@/component/vue/app/page') && requirejs.defined('@/component/vue/app/spa') && requirejs('es6!@/component/vue/app/page').default.page.url){\n\t// \trequirejs('@/component/vue/app/spa').historySetState(replace, hash);\n\t// }else{\n\t// \tif(replace){\n\t// \t\thistory.replaceState(null, null, hash);\n\t// \t}else{\n\t// \t\thistory.pushState(null, null, hash);\n\t// \t}\n\t// }\n\n\tif (replace) {\n\t\thistory.replaceState(null, '', hash);\n\t} else {\n\t\thistory.pushState(null, '', hash);\n\t}\n};"],"names":["getHash","name","locationHash","re","value","setHash","replaceState","historySetState","hash","delHash","genHash","setHashs","data","replace"],"mappings":"yFAGO,MAAAA,EAAA,SAAAC,EAAAC,EAAA,SAAA,KAAA,CACN,MAAAC,EAAA,IAAA,OAAA,QAAAF,EAAA,UAAA,yCAIAG,EAAA,CAAA,EAAA,mBAAAA,EAAA,CAAA,CAAA,EACAA,EAAA,CAAA,EAAAA,EAAA,CAAA,EAAA,QAAA,MAAA,GAAA,EAEAA,EAAA,CAAA,IAMMC,EAAA,SAAAJ,EAAAG,EAAAE,EAAA,GAAA,+BAKLC,EAAA,GAAAC,CAAA,EAEA,SAAA,KAAAA,GAOKC,EAAA,SAAAR,EAAAG,EAAAE,EAAA,GAAA,cAOAI,EAAA,SAAAT,EAAAG,EAAAF,EAAA,SAAA,KAAA,CACN,MAAAC,EAAA,IAAA,OAAA,KAAAF,EAAA,SAAA,GAAA,2BAIAG,IAAA,OACCA,GAAAA,EAAA,IAAA,QAAA,IAAA,KAAA,EACAF,EAAAA,EAAA,QAAAC,EAAA,IAAAF,EAAA,IAAAG,CAAA,EAEAF,EAAA,QAAA,IAAAD,EAAA,GAAA,GAAA,kEAMDC,EAAA,IAAAA,oDAKAA,GAAA,IAAAA,GAAA,MAAA,SAAA,oBAQYS,EAAA,SAAAC,EAAAN,EAAA,6CAGZA,IAAA,eACA,IAAAE,EAAA,SAAA,KAEA,UAAAP,KAAAW,EAAA,CACC,MAAAT,EAAA,IAAA,OAAA,KAAAF,EAAA,SAAA,GAAA,oBAGAW,EAAAX,CAAA,IAAA,OACCW,EAAAX,CAAA,GAAAW,EAAAX,CAAA,EAAA,IAAA,QAAA,IAAA,KAAA,EACAO,GAAA,IAAAP,EAAA,IAAAW,EAAAX,CAAA,yDAMFO,EAAA,IAAAA,4CAKCD,EAAA,GAAAC,CAAA,GAEA,SAAA,KAAAA,GASKD,EAAA,CAAAM,EAAA,GAAAL,IAAA,+DAgBP"}
|
package/utils/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sources":["../../src/core/utils/route.ts"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"route.js","sources":["../../src/core/utils/route.ts"],"sourcesContent":["/**\n * Получить значение хэш параметра страницы\n */\nexport const getHash = function (name: string, locationHash: string = location.hash): string {\n\tconst re = new RegExp('[#?&]' + name + '=([^&]*)');\n\tconst value = locationHash.match(re);\n\tif (!value || value.length != 2) return '';\n\n\tvalue[1] = decodeURIComponent(value[1]);\n\tvalue[1] = value[1].replace(/\\+/g, ' ');\n\n\treturn value[1];\n};\n\n/**\n * Установить значение в хэш параметр страницы\n */\nexport const setHash = function (name: string, value: string | null, replaceState: boolean = true) {\n\tlet hash = genHash(name, value);\n\tif (hash == '#') hash = '';\n\n\tif (replaceState) {\n\t\thistorySetState(true, hash);\n\t} else {\n\t\tlocation.hash = hash;\n\t}\n};\n\n/**\n * Удалить значение из хэш параметра страницы\n */\nexport const delHash = function (name: string, value: string, replaceState: boolean = true) {\n\tsetHash(name, null, replaceState);\n};\n\n/**\n * Сгенерировать новое значение для хэш параметра страницы с указанным параметром\n */\nexport const genHash = function (name: string, value: string | null, locationHash: string = location.hash): string {\n\tconst re = new RegExp('&?' + name + '=[^&]*', 'g');\n\n\tlocationHash = locationHash.replace(re, '');\n\n\tif (value !== null) {\n\t\tvalue = (value + '').replace(' ', '%20');\n\t\tlocationHash = locationHash.replace(re, '&' + name + '=' + value);\n\n\t\tif (locationHash.indexOf('&' + name + '=') == -1) locationHash += '&' + name + '=' + value;\n\t}\n\n\tlocationHash = locationHash.replace(/&+/g, '&');\n\tlocationHash = locationHash.replace(/&$/, '');\n\n\tlocationHash = '#' + locationHash;\n\tlocationHash = locationHash.replace(/^#+/, '#');\n\n\t// hash страницы не должен быть пустым, чтобы не перекидывало к верху страницы\n\tlocationHash = locationHash.replace(/^#:-\\)/, '#');\n\tif ((locationHash == '' || locationHash == '#') && location.hash) locationHash = '#:-)';\n\n\treturn locationHash;\n};\n\n/**\n * Установить значения в хэш параметр страницы\n */\nexport const setHashs = function (data: Map<string, string> | object | any, replaceState: boolean) {\n\tif (data instanceof Map) data = Object.fromEntries(data);\n\n\tif (replaceState === undefined) replaceState = true;\n\tlet hash = location.hash;\n\n\tfor (const name in data) {\n\t\tconst re = new RegExp('&?' + name + '=[^&]*', 'g');\n\t\thash = hash.replace(re, '');\n\n\t\tif (data[name] !== null) {\n\t\t\tdata[name] = (data[name] + '').replace(' ', '%20');\n\t\t\thash += '&' + name + '=' + data[name];\n\t\t}\n\t}\n\n\thash = hash.replace(/&+/g, '&');\n\thash = hash.replace(/^(#)?&|&$/g, '$1');\n\thash = '#' + hash;\n\thash = hash.replace(/^#+/, '#');\n\n\tif (replaceState) {\n\t\tif (hash == '#') hash = '.';\n\t\thistorySetState(true, hash);\n\t} else {\n\t\tlocation.hash = hash;\n\t}\n};\n\n/**\n * Установть позицию в истории вкладки браузера\n * @see history.replaceState\n * @see history.pushState\n */\nexport const historySetState = (replace: boolean = false, hash: string) => {\n\t// if(requirejs.defined('es6!@/component/vue/app/page') && requirejs.defined('@/component/vue/app/spa') && requirejs('es6!@/component/vue/app/page').default.page.url){\n\t// \trequirejs('@/component/vue/app/spa').historySetState(replace, hash);\n\t// }else{\n\t// \tif(replace){\n\t// \t\thistory.replaceState(null, null, hash);\n\t// \t}else{\n\t// \t\thistory.pushState(null, null, hash);\n\t// \t}\n\t// }\n\n\tif (replace) {\n\t\thistory.replaceState(null, '', hash);\n\t} else {\n\t\thistory.pushState(null, '', hash);\n\t}\n};"],"names":["getHash","name","locationHash","re","value","setHash","replaceState","hash","genHash","historySetState","delHash","setHashs","data","replace"],"mappings":"AAGO,MAAMA,IAAU,SAAUC,GAAcC,IAAuB,SAAS,MAAc;AAC5F,QAAMC,IAAK,IAAI,OAAO,UAAUF,IAAO,UAAU,GAC3CG,IAAQF,EAAa,MAAMC,CAAE;AAC/B,SAAA,CAACC,KAASA,EAAM,UAAU,IAAU,MAExCA,EAAM,CAAC,IAAI,mBAAmBA,EAAM,CAAC,CAAC,GACtCA,EAAM,CAAC,IAAIA,EAAM,CAAC,EAAE,QAAQ,OAAO,GAAG,GAE/BA,EAAM,CAAC;AACf,GAKaC,IAAU,SAAUJ,GAAcG,GAAsBE,IAAwB,IAAM;AAC9F,MAAAC,IAAOC,EAAQP,GAAMG,CAAK;AAC9B,EAAIG,KAAQ,QAAYA,IAAA,KAEpBD,IACHG,EAAgB,IAAMF,CAAI,IAE1B,SAAS,OAAOA;AAElB,GAKaG,IAAU,SAAUT,GAAcG,GAAeE,IAAwB,IAAM;AACnF,EAAAD,EAAAJ,GAAM,MAAMK,CAAY;AACjC,GAKaE,IAAU,SAAUP,GAAcG,GAAsBF,IAAuB,SAAS,MAAc;AAClH,QAAMC,IAAK,IAAI,OAAO,OAAOF,IAAO,UAAU,GAAG;AAElC,SAAAC,IAAAA,EAAa,QAAQC,GAAI,EAAE,GAEtCC,MAAU,SACbA,KAASA,IAAQ,IAAI,QAAQ,KAAK,KAAK,GACvCF,IAAeA,EAAa,QAAQC,GAAI,MAAMF,IAAO,MAAMG,CAAK,GAE5DF,EAAa,QAAQ,MAAMD,IAAO,GAAG,KAAK,OAAoBC,KAAA,MAAMD,IAAO,MAAMG,KAGvEF,IAAAA,EAAa,QAAQ,OAAO,GAAG,GAC/BA,IAAAA,EAAa,QAAQ,MAAM,EAAE,GAE5CA,IAAe,MAAMA,GACNA,IAAAA,EAAa,QAAQ,OAAO,GAAG,GAG/BA,IAAAA,EAAa,QAAQ,UAAU,GAAG,IAC5CA,KAAgB,MAAMA,KAAgB,QAAQ,SAAS,SAAqBA,IAAA,SAE1EA;AACR,GAKaS,IAAW,SAAUC,GAA0CN,GAAuB;AAClG,EAAIM,aAAgB,QAAYA,IAAA,OAAO,YAAYA,CAAI,IAEnDN,MAAiB,WAA0BA,IAAA;AAC/C,MAAIC,IAAO,SAAS;AAEpB,aAAWN,KAAQW,GAAM;AACxB,UAAMT,IAAK,IAAI,OAAO,OAAOF,IAAO,UAAU,GAAG;AAC1C,IAAAM,IAAAA,EAAK,QAAQJ,GAAI,EAAE,GAEtBS,EAAKX,CAAI,MAAM,SACbW,EAAAX,CAAI,KAAKW,EAAKX,CAAI,IAAI,IAAI,QAAQ,KAAK,KAAK,GACjDM,KAAQ,MAAMN,IAAO,MAAMW,EAAKX,CAAI;AAAA,EAEtC;AAEO,EAAAM,IAAAA,EAAK,QAAQ,OAAO,GAAG,GACvBA,IAAAA,EAAK,QAAQ,cAAc,IAAI,GACtCA,IAAO,MAAMA,GACNA,IAAAA,EAAK,QAAQ,OAAO,GAAG,GAE1BD,KACCC,KAAQ,QAAYA,IAAA,MACxBE,EAAgB,IAAMF,CAAI,KAE1B,SAAS,OAAOA;AAElB,GAOaE,IAAkB,CAACI,IAAmB,IAAON,MAAiB;AAW1E,EAAIM,IACK,QAAA,aAAa,MAAM,IAAIN,CAAI,IAE3B,QAAA,UAAU,MAAM,IAAIA,CAAI;AAElC;"}
|
package/utils/scroll.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-DNRGCC9P.amd","./dom.amd"],function(l,e,o,i){"use strict";if(typeof r>"u")var r=window.Vue;const c=s=>{if(!s||!s.parentElement)return;if(o._window.dialogs){const t=s.closest(".ui-dialog");t!=null&&t.getBoundingClientRect()&&(t==null?void 0:t.getBoundingClientRect().bottom)>document.documentElement.clientHeight&&setTimeout(o._window.dialogs.onWindowResize)}const n=s.scrollHeight>s.offsetHeight;if(n?(s.parentElement.classList.add("has_scroll_container"),s.classList.add("has_scroll")):(s.parentElement.classList.remove("has_scroll_container"),s.classList.remove("has_scroll")),n){const t=i.default.offset(s).top-i.default.offset(s.parentElement).top;s.style.setProperty("--scroll-offset-top",t+"px");const a=s.offsetHeight;s.style.setProperty("--scroll-height",a+"px"),s.scrollTop>0?s.classList.add("has_scroll-started"):s.classList.remove("has_scroll-started"),s.scrollTop>=s.scrollHeight-s.offsetHeight?s.classList.add("has_scroll-finished"):s.classList.remove("has_scroll-finished")}};e.genHasScroll=c,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=scroll.amd.js.map
|
package/utils/scroll.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.amd.js","sources":["../../src/core/utils/scroll.ts"],"sourcesContent":["import { _window } from '@/core/utils/window';\
|
|
1
|
+
{"version":3,"file":"scroll.amd.js","sources":["../../src/core/utils/scroll.ts"],"sourcesContent":["import { _window } from '@/core/utils/window';\nimport UtilsDOM from '@/core/utils/dom';\n\n/**\n * Добавление модификатора тени при скролле\n */\nexport const genHasScroll = (el: HTMLElement) => {\n\tif (!el) return;\n\tif (!el.parentElement) return;\n\n\t// _window.dialogs - worker диалоговых окон\n\tif (_window.dialogs) {\n\t\tconst elDialog = el.closest('.ui-dialog');\n\t\tif (elDialog?.getBoundingClientRect() && elDialog?.getBoundingClientRect().bottom > document.documentElement.clientHeight) {\n\t\t\tsetTimeout(_window.dialogs.onWindowResize);\n\t\t}\n\t}\n\n\tconst hasScroll = (el.scrollHeight > el.offsetHeight);\n\tif (hasScroll) {\n\t\tel.parentElement.classList.add('has_scroll_container');\n\t\tel.classList.add('has_scroll');\n\t} else {\n\t\tel.parentElement.classList.remove('has_scroll_container');\n\t\tel.classList.remove('has_scroll');\n\t}\n\n\tif (hasScroll) {\n\t\tconst top: number = UtilsDOM.offset(el).top - UtilsDOM.offset(el.parentElement).top;\n\t\tel.style.setProperty('--scroll-offset-top', top + 'px');\n\n\t\tconst height = el.offsetHeight;\n\t\tel.style.setProperty('--scroll-height', height + 'px');\n\n\t\tif (el.scrollTop > 0) {\n\t\t\tel.classList.add('has_scroll-started');\n\t\t} else {\n\t\t\tel.classList.remove('has_scroll-started');\n\t\t}\n\n\t\tif (el.scrollTop >= el.scrollHeight - el.offsetHeight) {\n\t\t\tel.classList.add('has_scroll-finished');\n\t\t} else {\n\t\t\tel.classList.remove('has_scroll-finished');\n\t\t}\n\t}\n};"],"names":["genHasScroll","el","forms","elDialog","top","height"],"mappings":"yIAMa,MAAAA,EAAAC,GAAA,CAEZ,OAAA,CAAAA,EAAA,cAAuB,OAGvB,GAAAC,EAAA,QAAA,QAAA,iCAECC,GAAA,MAAAA,EAAA,0BAAAA,GAAA,YAAAA,EAAA,wBAAA,QAAA,SAAA,gBAAA,iWAgBAF,EAAA,MAAA,YAAA,sBAAAG,EAAA,IAAA,EAEA,MAAAC,EAAAJ,EAAA,aACAA,EAAA,MAAA,YAAA,kBAAAI,EAAA,IAAA,EAEAJ,EAAA,UAAA,iFAMAA,EAAA,WAAAA,EAAA,aAAAA,EAAA,8FAMF"}
|
package/utils/scroll.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as e } from "../.chunks/forms-
|
|
2
|
-
import
|
|
1
|
+
import { _ as e } from "../.chunks/forms-U97cW1zp.es.js";
|
|
2
|
+
import i from "./dom.js";
|
|
3
3
|
const a = (s) => {
|
|
4
4
|
if (!s || !s.parentElement)
|
|
5
5
|
return;
|
|
@@ -9,10 +9,10 @@ const a = (s) => {
|
|
|
9
9
|
}
|
|
10
10
|
const o = s.scrollHeight > s.offsetHeight;
|
|
11
11
|
if (o ? (s.parentElement.classList.add("has_scroll_container"), s.classList.add("has_scroll")) : (s.parentElement.classList.remove("has_scroll_container"), s.classList.remove("has_scroll")), o) {
|
|
12
|
-
const t =
|
|
12
|
+
const t = i.offset(s).top - i.offset(s.parentElement).top;
|
|
13
13
|
s.style.setProperty("--scroll-offset-top", t + "px");
|
|
14
|
-
const
|
|
15
|
-
s.style.setProperty("--scroll-height",
|
|
14
|
+
const r = s.offsetHeight;
|
|
15
|
+
s.style.setProperty("--scroll-height", r + "px"), s.scrollTop > 0 ? s.classList.add("has_scroll-started") : s.classList.remove("has_scroll-started"), s.scrollTop >= s.scrollHeight - s.offsetHeight ? s.classList.add("has_scroll-finished") : s.classList.remove("has_scroll-finished");
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
export {
|
package/utils/scroll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sources":["../../src/core/utils/scroll.ts"],"sourcesContent":["import { _window } from '@/core/utils/window';\
|
|
1
|
+
{"version":3,"file":"scroll.js","sources":["../../src/core/utils/scroll.ts"],"sourcesContent":["import { _window } from '@/core/utils/window';\nimport UtilsDOM from '@/core/utils/dom';\n\n/**\n * Добавление модификатора тени при скролле\n */\nexport const genHasScroll = (el: HTMLElement) => {\n\tif (!el) return;\n\tif (!el.parentElement) return;\n\n\t// _window.dialogs - worker диалоговых окон\n\tif (_window.dialogs) {\n\t\tconst elDialog = el.closest('.ui-dialog');\n\t\tif (elDialog?.getBoundingClientRect() && elDialog?.getBoundingClientRect().bottom > document.documentElement.clientHeight) {\n\t\t\tsetTimeout(_window.dialogs.onWindowResize);\n\t\t}\n\t}\n\n\tconst hasScroll = (el.scrollHeight > el.offsetHeight);\n\tif (hasScroll) {\n\t\tel.parentElement.classList.add('has_scroll_container');\n\t\tel.classList.add('has_scroll');\n\t} else {\n\t\tel.parentElement.classList.remove('has_scroll_container');\n\t\tel.classList.remove('has_scroll');\n\t}\n\n\tif (hasScroll) {\n\t\tconst top: number = UtilsDOM.offset(el).top - UtilsDOM.offset(el.parentElement).top;\n\t\tel.style.setProperty('--scroll-offset-top', top + 'px');\n\n\t\tconst height = el.offsetHeight;\n\t\tel.style.setProperty('--scroll-height', height + 'px');\n\n\t\tif (el.scrollTop > 0) {\n\t\t\tel.classList.add('has_scroll-started');\n\t\t} else {\n\t\t\tel.classList.remove('has_scroll-started');\n\t\t}\n\n\t\tif (el.scrollTop >= el.scrollHeight - el.offsetHeight) {\n\t\t\tel.classList.add('has_scroll-finished');\n\t\t} else {\n\t\t\tel.classList.remove('has_scroll-finished');\n\t\t}\n\t}\n};"],"names":["genHasScroll","el","_window","elDialog","hasScroll","top","UtilsDOM","height"],"mappings":";;AAMa,MAAAA,IAAe,CAACC,MAAoB;AAEhD,MADI,CAACA,KACD,CAACA,EAAG;AAAe;AAGvB,MAAIC,EAAQ,SAAS;AACd,UAAAC,IAAWF,EAAG,QAAQ,YAAY;AACpC,IAAAE,KAAA,QAAAA,EAAU,4BAA2BA,KAAA,gBAAAA,EAAU,wBAAwB,UAAS,SAAS,gBAAgB,gBACjG,WAAAD,EAAQ,QAAQ,cAAc;AAAA,EAE3C;AAEM,QAAAE,IAAaH,EAAG,eAAeA,EAAG;AASxC,MARIG,KACAH,EAAA,cAAc,UAAU,IAAI,sBAAsB,GAClDA,EAAA,UAAU,IAAI,YAAY,MAE1BA,EAAA,cAAc,UAAU,OAAO,sBAAsB,GACrDA,EAAA,UAAU,OAAO,YAAY,IAG7BG,GAAW;AACR,UAAAC,IAAcC,EAAS,OAAOL,CAAE,EAAE,MAAMK,EAAS,OAAOL,EAAG,aAAa,EAAE;AAChF,IAAAA,EAAG,MAAM,YAAY,uBAAuBI,IAAM,IAAI;AAEtD,UAAME,IAASN,EAAG;AAClB,IAAAA,EAAG,MAAM,YAAY,mBAAmBM,IAAS,IAAI,GAEjDN,EAAG,YAAY,IACfA,EAAA,UAAU,IAAI,oBAAoB,IAElCA,EAAA,UAAU,OAAO,oBAAoB,GAGrCA,EAAG,aAAaA,EAAG,eAAeA,EAAG,eACrCA,EAAA,UAAU,IAAI,qBAAqB,IAEnCA,EAAA,UAAU,OAAO,qBAAqB;AAAA,EAE3C;AACD;"}
|
package/utils/system.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.amd.js","sources":["../../src/core/utils/system.ts"],"sourcesContent":["export const _window = window as any;\
|
|
1
|
+
{"version":3,"file":"system.amd.js","sources":["../../src/core/utils/system.ts"],"sourcesContent":["export const _window = window as any;\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\tconsole.log(condition);\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 = (condition: Function, delay = 30_000) => {\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};"],"names":["_window","waitWhile","condition","period","timeout","timerTimeout","timer","reject","sleep","delay","resolve","sleepWhile","timerDelay"],"mappings":"yFAAO,MAAAA,EAAA,OASAC,EAAA,CAAAC,EAAAC,EAAA,GAAAC,EAAA,MAAA,mCAIL,MAAAC,EAAA,WAAA,IAAA,CACC,cAAAC,CAAA,EAEA,QAAA,IAAAJ,CAAA,EACAK,EAAA,kCAAA,MAGDD,EAAA,YAAA,IAAA,CACCJ,EAAA,IACC,aAAAG,CAAA,EACA,cAAAC,CAAA,UAIO,CAAA,GASJE,EAAA,CAAAN,EAAAO,EAAA,MACN,IAAA,QAAAC,GAAA,wBAGS,CAAA,EAUHC,EAAA,CAAAT,EAAAO,EAAA,IAAAN,EAAA,KAAA,QAGN,OAAA,IAAA,QAAAO,GAAA,CACC,MAAAE,EAAA,WAAA,IAAA,CACC,cAAAN,CAAA,UAKDA,EAAA,YAAA,IAAA,CACCJ,EAAA,IACC,aAAAU,CAAA,EACA,cAAAN,CAAA,UAIO,CAAA,CAEX"}
|
package/utils/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sources":["../../src/core/utils/system.ts"],"sourcesContent":["export const _window = window as any;\
|
|
1
|
+
{"version":3,"file":"system.js","sources":["../../src/core/utils/system.ts"],"sourcesContent":["export const _window = window as any;\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\tconsole.log(condition);\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 = (condition: Function, delay = 30_000) => {\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};"],"names":["_window","waitWhile","condition","period","timeout","resolve","reject","timerTimeout","timer","sleep","delay","sleepWhile","timerDelay"],"mappings":"AAAO,MAAMA,IAAU,QASVC,IAAY,CAACC,GAAqBC,IAAiB,IAAIC,IAAU,QAAW;AACxF,MAAKF,EAAU;AAEf,WAAO,IAAI,QAAc,CAACG,GAASC,MAAW;AACvC,YAAAC,IAAe,WAAW,MAAM;AACrC,sBAAcC,CAAK,GAEnB,QAAQ,IAAIN,CAAS,GACrBI,EAAO,kCAAkC;AAAA,SACvCF,CAAO,GAEJI,IAAQ,YAAY,MAAM;AAC3B,QAACN,QACJ,aAAaK,CAAY,GACzB,cAAcC,CAAK,GAEXH;SAEPF,CAAM;AAAA,IAAA,CACT;AACF,GAOaM,IAAQ,CAACP,GAAqBQ,IAAQ,QAC3C,IAAI,QAAc,CAACL,MAAY;AACrC,aAAW,MAAM;AACR,IAAAA;KACNK,CAAK;AAAA,CACR,GASWC,IAAa,CAACT,GAAqBQ,IAAgB,KAAKP,IAAiB,OAAO;AAC5F,MAAKD,EAAU;AAER,WAAA,IAAI,QAAc,CAAWG,MAAA;AAC7B,YAAAO,IAAa,WAAW,MAAM;AACnC,sBAAcJ,CAAK,GAEXH;SACNK,CAAK,GAEFF,IAAQ,YAAY,MAAM;AAC3B,QAACN,QACJ,aAAaU,CAAU,GACvB,cAAcJ,CAAK,GAEXH;SAEPF,CAAM;AAAA,IAAA,CACT;AACF;"}
|
package/utils/window.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-DNRGCC9P.amd"],function(o,e,i){"use strict";if(typeof n>"u")var n=window.Vue;e._window=i._window,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=window.amd.js.map
|
package/utils/window.js
CHANGED