@topvisor/ui 1.3.0 → 1.3.1-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/{core-CXqQSo9c.amd.js → core-DkD6AE7J.amd.js} +2 -2
- package/.chunks/{core-CXqQSo9c.amd.js.map → core-DkD6AE7J.amd.js.map} +1 -1
- package/.chunks/{core-CY6RkZz2.es.js → core-ZuvfeeJ3.es.js} +4 -4
- package/.chunks/{core-CY6RkZz2.es.js.map → core-ZuvfeeJ3.es.js.map} +1 -1
- package/.chunks/{datepicker-BiaXdEIn.es.js → datepicker-CxWa68gc.es.js} +2 -2
- package/.chunks/{datepicker-BiaXdEIn.es.js.map → datepicker-CxWa68gc.es.js.map} +1 -1
- package/.chunks/{datepicker-DUoArkDy.amd.js → datepicker-DeYFg9AM.amd.js} +2 -2
- package/.chunks/{datepicker-DUoArkDy.amd.js.map → datepicker-DeYFg9AM.amd.js.map} +1 -1
- package/.chunks/{dialog_selectorRegions-Zlm6K2mk.es.js → dialog_selectorRegions-D1ord0Ik.es.js} +4 -4
- package/.chunks/{dialog_selectorRegions-Zlm6K2mk.es.js.map → dialog_selectorRegions-D1ord0Ik.es.js.map} +1 -1
- package/.chunks/{dialog_selectorRegions-CPRVbPAk.amd.js → dialog_selectorRegions-vQD6LBdY.amd.js} +2 -2
- package/.chunks/{dialog_selectorRegions-CPRVbPAk.amd.js.map → dialog_selectorRegions-vQD6LBdY.amd.js.map} +1 -1
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CLahwA6M.es.js → dialogs.vue_vue_type_script_setup_true_lang-BMDSZwZJ.es.js} +2 -2
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-CLahwA6M.es.js.map → dialogs.vue_vue_type_script_setup_true_lang-BMDSZwZJ.es.js.map} +1 -1
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-D8NggYHD.amd.js → dialogs.vue_vue_type_script_setup_true_lang-DDR6uqak.amd.js} +2 -2
- package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-D8NggYHD.amd.js.map → dialogs.vue_vue_type_script_setup_true_lang-DDR6uqak.amd.js.map} +1 -1
- package/.chunks/{forms-DarRVke_.es.js → forms-CRHjU2Mj.es.js} +5 -5
- package/.chunks/{forms-DarRVke_.es.js.map → forms-CRHjU2Mj.es.js.map} +1 -1
- package/.chunks/{forms-CgtkdwgA.amd.js → forms-D4uFd45i.amd.js} +3 -3
- package/.chunks/{forms-CgtkdwgA.amd.js.map → forms-D4uFd45i.amd.js.map} +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd.js → listItem.vue_vue_type_script_setup_true_lang-B2Q4gqK6.amd.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CT-EXxJj.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-B2Q4gqK6.amd.js.map} +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js → listItem.vue_vue_type_script_setup_true_lang-DFWY29DS.es.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DzJ_pc-d.es.js.map → listItem.vue_vue_type_script_setup_true_lang-DFWY29DS.es.js.map} +1 -1
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js → menu.vue_vue_type_style_index_0_lang-Bm9sY3Ux.es.js} +2 -2
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-COD_4iTy.es.js.map → menu.vue_vue_type_style_index_0_lang-Bm9sY3Ux.es.js.map} +1 -1
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd.js → menu.vue_vue_type_style_index_0_lang-bMtkdrEt.amd.js} +2 -2
- package/.chunks/{menu.vue_vue_type_style_index_0_lang-BLMYjYLV.amd.js.map → menu.vue_vue_type_style_index_0_lang-bMtkdrEt.amd.js.map} +1 -1
- package/.chunks/notice-7-xEtFXT.amd.js +4 -0
- package/.chunks/notice-7-xEtFXT.amd.js.map +1 -0
- package/.chunks/notice-pFWJHCd7.es.js +180 -0
- package/.chunks/notice-pFWJHCd7.es.js.map +1 -0
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-DLebrPmi.amd.js → page.vue_vue_type_script_setup_true_lang-DzuM-_u7.amd.js} +2 -2
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-DLebrPmi.amd.js.map → page.vue_vue_type_script_setup_true_lang-DzuM-_u7.amd.js.map} +1 -1
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-BS0aEP4i.es.js → page.vue_vue_type_script_setup_true_lang-o3lCjjxW.es.js} +4 -4
- package/.chunks/{page.vue_vue_type_script_setup_true_lang-BS0aEP4i.es.js.map → page.vue_vue_type_script_setup_true_lang-o3lCjjxW.es.js.map} +1 -1
- package/.chunks/{popup-CtvJLWn3.amd.js → popup-C05LLKni.amd.js} +2 -2
- package/.chunks/{popup-CtvJLWn3.amd.js.map → popup-C05LLKni.amd.js.map} +1 -1
- package/.chunks/{popup-AG94kehM.es.js → popup-Dr3j_FOV.es.js} +2 -2
- package/.chunks/{popup-AG94kehM.es.js.map → popup-Dr3j_FOV.es.js.map} +1 -1
- package/.chunks/{utils-D9D3zzjc.amd.js → utils-BgEQlXpF.amd.js} +2 -2
- package/.chunks/{utils-D9D3zzjc.amd.js.map → utils-BgEQlXpF.amd.js.map} +1 -1
- package/.chunks/{utils-3M9LC_L_.es.js → utils-Bsv1-1_h.es.js} +2 -2
- package/.chunks/{utils-3M9LC_L_.es.js.map → utils-Bsv1-1_h.es.js.map} +1 -1
- package/.chunks/{utils-DcP4RFmH.amd.js → utils-DQvj_C9w.amd.js} +2 -2
- package/.chunks/{utils-DcP4RFmH.amd.js.map → utils-DQvj_C9w.amd.js.map} +1 -1
- package/.chunks/{utils-BitKP31L.es.js → utils-sKjgHYod.es.js} +3 -3
- package/.chunks/{utils-BitKP31L.es.js.map → utils-sKjgHYod.es.js.map} +1 -1
- package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js → widgetInput.vue_vue_type_script_setup_true_lang-5LVABONB.es.js} +2 -2
- package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-xwjgBq1L.es.js.map → widgetInput.vue_vue_type_script_setup_true_lang-5LVABONB.es.js.map} +1 -1
- package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd.js → widgetInput.vue_vue_type_script_setup_true_lang-B7zzY9Mx.amd.js} +2 -2
- package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-BK-pTu3V.amd.js.map → widgetInput.vue_vue_type_script_setup_true_lang-B7zzY9Mx.amd.js.map} +1 -1
- package/assets/notice.css +1 -1
- package/charts/charts.amd.js +1 -1
- package/charts/charts.js +1 -1
- package/core/app.amd.js +1 -1
- package/core/app.js +5 -5
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.js +2 -2
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.js +4 -4
- package/layout/layout.amd.js +1 -1
- package/layout/layout.js +1 -1
- package/package.json +1 -1
- package/popup/popup.amd.js +1 -1
- package/popup/popup.js +4 -4
- package/popup/worker.amd.js +1 -1
- package/popup/worker.js +2 -2
- package/project/project.amd.js +1 -1
- package/project/project.js +5 -5
- package/src/components/core/notice/item/types.d.ts +3 -3
- package/src/components/core/notice/utils.d.ts +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.js +2 -2
- package/utils/clipboard.amd.js +3 -3
- package/utils/clipboard.amd.js.map +1 -1
- package/utils/clipboard.js +9 -7
- package/utils/clipboard.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/lodash.amd.js +1 -1
- package/utils/lodash.js +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.js +1 -1
- package/utils/searchers.amd.js +1 -1
- package/utils/searchers.js +3 -3
- package/utils/string.amd.js +1 -1
- package/utils/string.js +1 -1
- package/.chunks/notice-CPtAnc7p.amd.js +0 -4
- package/.chunks/notice-CPtAnc7p.amd.js.map +0 -1
- package/.chunks/notice-fno9saBY.es.js +0 -175
- package/.chunks/notice-fno9saBY.es.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notice-CPtAnc7p.amd.js","sources":["../../src/components/core/notice/utils.ts","../../src/components/core/notice/item/item.vue","../../src/components/core/notice/notice.vue"],"sourcesContent":["import { reactive } from 'vue';\nimport type { Props as ItemProps, Props, Style } from '@/components/core/notice/item/types';\nimport Core from '@/core/core/core';\nimport { genIntHash } from '@/core/utils/string';\n\nexport const transitionDuration = 300;\n\nexport type Item = Props & { onClose?: Function };\n\nexport const itemById = reactive(new Map<string, Item>());\n\nconst genItemId = (text: ItemProps['text'], style: ItemProps['style'], options?: Options) => {\n\treturn 'top-notice_' + genIntHash(text + style + JSON.stringify(options));\n};\n\nexport type Options = {\n\ttitle?: ItemProps['title'],\n\tmetaText?: ItemProps['metaText'],\n\tbuttonProps?: ItemProps['buttonProps'],\n\tisSafeHTML?: ItemProps['isSafeHTML'],\n\tselectToClose?: ItemProps['selectToClose'],\n\tonClose?: Function\n}\n\n/**\n * Показать сообщением в стиле push уведомления\n *\n * title будет получен из первой строки text\n *\n * Если в options указан title, он будет взят оттуда\n */\nexport const show = (text: string, style: Style = 'info', options?: Options) => {\n\tlet title = '';\n\n\ttext = String(text);\n\n\tconst id = genItemId(text, style, options);\n\n\tif (options?.title) {\n\t\ttitle = options.title;\n\t} else {\n\t\tconst chunks = text.split('\\n');\n\n\t\tif (chunks.length) {\n\t\t\ttitle = String(chunks.shift());\n\t\t\ttext = chunks.join('\\n');\n\t\t}\n\t}\n\n\tconst itemExists = itemById.get(id);\n\tif (itemExists) {\n\t\thightlight(itemExists);\n\n\t\treturn;\n\t}\n\n\tconst item: Item = {\n\t\tid,\n\t\ttitle,\n\t\ttext,\n\t\tstyle,\n\t\tbuttonProps: options?.buttonProps,\n\t\tmetaText: options?.metaText,\n\t\tisSafeHTML: options?.isSafeHTML,\n\t\tselectToClose: options?.selectToClose,\n\t\tonClose: options?.onClose,\n\t};\n\n\titemById.set(item.id, item);\n\n\tif (itemById.size > 5) {\n\t\tconst [_firstId, firstItem] = [...itemById].at(0) || [];\n\t\tif (firstItem) close(firstItem);\n\t}\n\n\t/**\n\t * Автозакрытие ошибок форм\n\t *\n\t * Добавляет\n\t */\n\tif (Core.state.isMobile) {\n\t\t$('input').one('click', () => close(item));\n\t}\n};\n\nconst hightlight = (item: Item) => {\n\titem.hightlight = true;\n\n\tsetTimeout(() => item.hightlight = false, transitionDuration);\n};\n\nconst close = (item: Item) => {\n\titem.forceClosed = true;\n\n\tsetTimeout(() => {\n\t\titem.onClose?.();\n\n\t\titemById.delete(item.id);\n\t}, transitionDuration);\n};\n\n/**\n * Убрать подозрительный html код\n */\nexport const prepareText = (text: string) => {\n\tconst textNoSafety = 'hacking was detected';\n\n\ttext = text.replace(/<script/g, textNoSafety);\n\ttext = text.replace(/<img/g, textNoSafety);\n\ttext = text.replace(/<iframe/g, textNoSafety);\n\ttext = text.replace(/javascript:/g, textNoSafety);\n\ttext = text.replace(/<[^>]+ (@|on)\\w+=[^>]+>?/g, textNoSafety);\n\n\treturn text;\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, withDefaults } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { nl2br } from '@/core/utils/string';\n\nimport type { Emits, Props } from './types';\nimport { prepareText, transitionDuration } from '@/components/core/notice/utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tselectToClose: true,\n});\n\nconst emit = defineEmits<Emits>();\n\n// анимация появления\nconst showed = ref(false);\nsetTimeout(() => showed.value = true, 10);\n\n// анимация закрытия\nconst closed = ref(false);\nconst closedDirection = ref<'top' | 'right' | 'bottom' | 'left'>('right');\n\nconst title = computed(() => {\n\tlet res = props.title.replace(/ {2}/g, ' ');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst text = computed(() => {\n\tlet res = nl2br(props.text);\n\n\tres = res.replace(/ {2}/g, ' ');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst close = (direction?: typeof closedDirection.value) => {\n\tclosed.value = true;\n\n\tif (direction) {\n\t\tclosedDirection.value = direction;\n\t}\n\n\tsetTimeout(() => emit('close'), transitionDuration);\n};\n\nconst onClick = (e: MouseEvent) => {\n\tif (!props.selectToClose) return;\n\n\tconst { tagName } = e.target as HTMLElement;\n\n\tif (tagName === 'A') close();\n\tif (tagName === 'BUTTON') close();\n};\n\nconst vSwipe = {\n\tmounted: (el: HTMLElement) => {\n\t\tif (!Core.state.isMobile) return;\n\n\t\tif (!Core.$ || !Core.$.ui['draggable']) return;\n\n\t\tlet direction: typeof closedDirection.value = 'right';\n\n\t\tlet axis = 'x';\n\t\t// if (getOS() === 'iOS') axis = 'y';\n\n\t\tCore.$(el).draggable({\n\t\t\trevert: false,\n\t\t\taxis,\n\t\t\tdrag: (_e, ui) => {\n\t\t\t\tif (axis == 'x') {\n\t\t\t\t\tdirection = ui.position.left > 0 ? 'right' : 'left';\n\t\t\t\t} else {\n\t\t\t\t\tdirection = ui.position.top > 0 ? 'bottom' : 'top';\n\t\t\t\t}\n\t\t\t},\n\t\t\tstop: (_e, _ui) => {\n\t\t\t\tclose(direction);\n\t\t\t},\n\t\t});\n\t},\n};\n\n// const vSwipe = {\n// \tmounted: (el: HTMLElement) => {\n// \t\tconst { distanceX, direction } = usePointerSwipe(el, {\n// \t\t\tdisableTextSelect: true,\n// \t\t\tonSwipe(e: PointerEvent) {\n// \t\t\t\tleft.value = -distanceX.value + 'px';\n// \t\t\t},\n// \t\t\tonSwipeEnd: (_e, direction) => {\n// \t\t\t\tclose(direction);\n// \t\t\t},\n// \t\t});\n// \t},\n// };\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-notice_item\"\n\t\t:class=\"{\n\t\t\t['top-notice_item-' + style]: true,\n\t\t\t'top-notice_item-hightlight': hightlight,\n\t\t\t'top-notice_item-showed': showed,\n\t\t\t'top-notice_item-closed': closed || forceClosed,\n\t\t\t['top-notice_item-closed_' + closedDirection]: closed,\n\t\t}\"\n\t\t@click=\"onClick\"\n\t\tv-swipe\n\t>\n\t\t<div class=\"top-notice_itemTextWrapper\">\n\t\t\t<div v-if=\"title\" class=\"top-notice_itemTitle\" v-html=\"title\"></div>\n\t\t\t<div v-if=\"text\" class=\"top-notice_itemText\" v-html=\"text\"></div>\n\t\t</div>\n\n\t\t<TopButton\n\t\t\tv-if=\"buttonProps\"\n\t\t\tclass=\"top-notice_itemButton\"\n\t\t\tsize=\"s\"\n\t\t\t:=\"buttonProps\"\n\t\t\t:title=\"buttonProps.title\"\n\t\t\tv-html=\"buttonProps.default\"\n\t\t\t@click=\"close()\"\n\t\t/>\n\n\t\t<div v-if=\"metaText\" class=\"top-notice_itemMetaText\" v-html=\"metaText\"></div>\n\n\t\t<div\n\t\t\tclass=\"top-notice_itemClose\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t@click=\"() => close()\"\n\t\t></div>\n\t</div>\n</template>\n\n<style>\n@import \"style.css\";\n</style>\n","<!-- performance all in one file component, для Core.notice() -->\n<script lang=\"ts\">\nexport { show } from './utils';\n</script>\n\n<script setup lang=\"ts\">\nimport type { Item } from './utils';\nimport { itemById } from './utils';\n\nimport type { Props } from './types';\nimport TopNoticeItem from './item/item.vue';\n\ndefineProps<Props>();\n\nconst onCloseItem = (item: Item) => {\n\titem.onClose?.();\n\n\titemById.delete(item.id);\n};\n</script>\n\n<template>\n\t<teleport to=\"body\">\n\t\t<div class=\"top-notice\">\n\t\t\t<TopNoticeItem\n\t\t\t\tv-for=\"[_index, item] in itemById\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\t:id=\"item.id\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:text=\"item.text\"\n\t\t\t\t:style=\"item.style\"\n\t\t\t\t:buttonProps=\"item.buttonProps\"\n\t\t\t\t:metaText=\"item.metaText\"\n\t\t\t\t:isSafeHTML=\"item.isSafeHTML\"\n\t\t\t\t:forceClosed=\"item.forceClosed\"\n\t\t\t\t:hightlight=\"item.hightlight\"\n\t\t\t\t@close=\"onCloseItem(item)\"\n\t\t\t/>\n\t\t</div>\n\t</teleport>\n</template>\n\n<style>\n:root {\n\t--top-notice-top: var(--top-padding-4);\n\t--top-notice-right: var(--top-padding-4);\n}\n\n.top-notice {\n\twidth: 400px;\n\tfont-size: 14px;\n\tposition: fixed; top: var(--top-notice-top); right: var(--top-notice-right);\n\tz-index: 1000010;\n\tdisplay: flex; flex-direction: column-reverse; gap: var(--top-gap-2);\n}\n\n.top-notice ul {\n\tpadding: 0 0 0 var(--top-padding-5);\n}\n\n@media only screen and (max-width: 600px) {\n\t:root {\n\t\t--top-notice-top: var(--top-padding-4);\n\t\t--top-notice-right: var(--top-padding-4);\n\t}\n\n\t.top-notice { width: auto; left: var(--top-notice-right); }\n}\n</style>\n"],"names":["itemById","vue","utils_string","text","style","options","show","title","chunks","id","_firstId","firstItem","close","forms","item","hightlight","prepareText","showed","closed","closedDirection","res","props","direction","onClick","e","tagName","el","_e","ui","_ui","_ctx","_hoisted_2","_hoisted_3","_cache","$event","metaText","_hoisted_5","onCloseItem","_hoisted_1"],"mappings":"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"}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import { Core as w } from "../core/app.js";
|
|
2
|
-
import { reactive as N, defineComponent as k, ref as T, computed as L, resolveComponent as z, withDirectives as D, createElementBlock as m, openBlock as r, normalizeClass as E, createElementVNode as _, createBlock as C, createCommentVNode as p, mergeProps as j, Teleport as x, Fragment as O, renderList as V, unref as A, normalizeStyle as F } from "vue";
|
|
3
|
-
import { C as h } from "./forms-DarRVke_.es.js";
|
|
4
|
-
import { genIntHash as J, nl2br as U } from "../utils/string.js";
|
|
5
|
-
const I = ["../assets/notice.css"].map((e) => import.meta.resolve(e));
|
|
6
|
-
w.insertCSSLinkToPage(I, !0);
|
|
7
|
-
const v = 300, u = N(/* @__PURE__ */ new Map()), W = (e, s, t) => "top-notice_" + J(e + s + JSON.stringify(t)), se = (e, s = "info", t) => {
|
|
8
|
-
let i = "";
|
|
9
|
-
e = String(e);
|
|
10
|
-
const d = W(e, s, t);
|
|
11
|
-
if (t != null && t.title)
|
|
12
|
-
i = t.title;
|
|
13
|
-
else {
|
|
14
|
-
const c = e.split(`
|
|
15
|
-
`);
|
|
16
|
-
c.length && (i = String(c.shift()), e = c.join(`
|
|
17
|
-
`));
|
|
18
|
-
}
|
|
19
|
-
const l = u.get(d);
|
|
20
|
-
if (l) {
|
|
21
|
-
q(l);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const a = {
|
|
25
|
-
id: d,
|
|
26
|
-
title: i,
|
|
27
|
-
text: e,
|
|
28
|
-
style: s,
|
|
29
|
-
buttonProps: t == null ? void 0 : t.buttonProps,
|
|
30
|
-
metaText: t == null ? void 0 : t.metaText,
|
|
31
|
-
isSafeHTML: t == null ? void 0 : t.isSafeHTML,
|
|
32
|
-
selectToClose: t == null ? void 0 : t.selectToClose,
|
|
33
|
-
onClose: t == null ? void 0 : t.onClose
|
|
34
|
-
};
|
|
35
|
-
if (u.set(a.id, a), u.size > 5) {
|
|
36
|
-
const [c, f] = [...u].at(0) || [];
|
|
37
|
-
f && S(f);
|
|
38
|
-
}
|
|
39
|
-
h.state.isMobile && $("input").one("click", () => S(a));
|
|
40
|
-
}, q = (e) => {
|
|
41
|
-
e.hightlight = !0, setTimeout(() => e.hightlight = !1, v);
|
|
42
|
-
}, S = (e) => {
|
|
43
|
-
e.forceClosed = !0, setTimeout(() => {
|
|
44
|
-
var s;
|
|
45
|
-
(s = e.onClose) == null || s.call(e), u.delete(e.id);
|
|
46
|
-
}, v);
|
|
47
|
-
}, H = (e) => {
|
|
48
|
-
const s = "hacking was detected";
|
|
49
|
-
return e = e.replace(/<script/g, s), e = e.replace(/<img/g, s), e = e.replace(/<iframe/g, s), e = e.replace(/javascript:/g, s), e = e.replace(/<[^>]+ (@|on)\w+=[^>]+>?/g, s), e;
|
|
50
|
-
}, G = { class: "top-notice_itemTextWrapper" }, K = ["innerHTML"], Q = ["innerHTML"], R = ["innerHTML"], X = ["title"], Y = /* @__PURE__ */ k({
|
|
51
|
-
__name: "item",
|
|
52
|
-
props: {
|
|
53
|
-
id: {},
|
|
54
|
-
title: {},
|
|
55
|
-
text: {},
|
|
56
|
-
style: {},
|
|
57
|
-
metaText: {},
|
|
58
|
-
buttonProps: {},
|
|
59
|
-
isSafeHTML: { type: Boolean },
|
|
60
|
-
hightlight: { type: Boolean },
|
|
61
|
-
selectToClose: { type: Boolean, default: !0 },
|
|
62
|
-
forceClosed: { type: Boolean }
|
|
63
|
-
},
|
|
64
|
-
emits: ["close"],
|
|
65
|
-
setup(e, { emit: s }) {
|
|
66
|
-
const t = e, i = s, d = T(!1);
|
|
67
|
-
setTimeout(() => d.value = !0, 10);
|
|
68
|
-
const l = T(!1), a = T("right"), c = L(() => {
|
|
69
|
-
let o = t.title.replace(/ {2}/g, " ");
|
|
70
|
-
return t.isSafeHTML || (o = H(o)), o;
|
|
71
|
-
}), f = L(() => {
|
|
72
|
-
let o = U(t.text);
|
|
73
|
-
return o = o.replace(/ {2}/g, " "), t.isSafeHTML || (o = H(o)), o;
|
|
74
|
-
}), g = (o) => {
|
|
75
|
-
l.value = !0, o && (a.value = o), setTimeout(() => i("close"), v);
|
|
76
|
-
}, B = (o) => {
|
|
77
|
-
if (!t.selectToClose) return;
|
|
78
|
-
const { tagName: n } = o.target;
|
|
79
|
-
n === "A" && g(), n === "BUTTON" && g();
|
|
80
|
-
}, P = {
|
|
81
|
-
mounted: (o) => {
|
|
82
|
-
if (!h.state.isMobile || !h.$ || !h.$.ui.draggable) return;
|
|
83
|
-
let n = "right";
|
|
84
|
-
h.$(o).draggable({
|
|
85
|
-
revert: !1,
|
|
86
|
-
axis: "x",
|
|
87
|
-
drag: (b, y) => {
|
|
88
|
-
n = y.position.left > 0 ? "right" : "left";
|
|
89
|
-
},
|
|
90
|
-
stop: (b, y) => {
|
|
91
|
-
g(n);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
return (o, n) => {
|
|
97
|
-
const M = z("TopButton");
|
|
98
|
-
return D((r(), m("div", {
|
|
99
|
-
class: E(["top-notice_item", {
|
|
100
|
-
["top-notice_item-" + o.style]: !0,
|
|
101
|
-
"top-notice_item-hightlight": o.hightlight,
|
|
102
|
-
"top-notice_item-showed": d.value,
|
|
103
|
-
"top-notice_item-closed": l.value || o.forceClosed,
|
|
104
|
-
["top-notice_item-closed_" + a.value]: l.value
|
|
105
|
-
}]),
|
|
106
|
-
onClick: B
|
|
107
|
-
}, [
|
|
108
|
-
_("div", G, [
|
|
109
|
-
c.value ? (r(), m("div", {
|
|
110
|
-
key: 0,
|
|
111
|
-
class: "top-notice_itemTitle",
|
|
112
|
-
innerHTML: c.value
|
|
113
|
-
}, null, 8, K)) : p("", !0),
|
|
114
|
-
f.value ? (r(), m("div", {
|
|
115
|
-
key: 1,
|
|
116
|
-
class: "top-notice_itemText",
|
|
117
|
-
innerHTML: f.value
|
|
118
|
-
}, null, 8, Q)) : p("", !0)
|
|
119
|
-
]),
|
|
120
|
-
o.buttonProps ? (r(), C(M, j({
|
|
121
|
-
key: 0,
|
|
122
|
-
class: "top-notice_itemButton",
|
|
123
|
-
size: "s"
|
|
124
|
-
}, o.buttonProps, {
|
|
125
|
-
title: o.buttonProps.title,
|
|
126
|
-
innerHTML: o.buttonProps.default,
|
|
127
|
-
onClick: n[0] || (n[0] = (b) => g())
|
|
128
|
-
}), null, 16, ["title", "innerHTML"])) : p("", !0),
|
|
129
|
-
o.metaText ? (r(), m("div", {
|
|
130
|
-
key: 1,
|
|
131
|
-
class: "top-notice_itemMetaText",
|
|
132
|
-
innerHTML: o.metaText
|
|
133
|
-
}, null, 8, R)) : p("", !0),
|
|
134
|
-
_("div", {
|
|
135
|
-
class: "top-notice_itemClose",
|
|
136
|
-
"data-top-icon": "",
|
|
137
|
-
title: o.$i18n.Common.Close,
|
|
138
|
-
onClick: n[1] || (n[1] = () => g())
|
|
139
|
-
}, null, 8, X)
|
|
140
|
-
], 2)), [
|
|
141
|
-
[P]
|
|
142
|
-
]);
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}), Z = { class: "top-notice" }, ne = /* @__PURE__ */ k({
|
|
146
|
-
__name: "notice",
|
|
147
|
-
setup(e) {
|
|
148
|
-
const s = (t) => {
|
|
149
|
-
var i;
|
|
150
|
-
(i = t.onClose) == null || i.call(t), u.delete(t.id);
|
|
151
|
-
};
|
|
152
|
-
return (t, i) => (r(), C(x, { to: "body" }, [
|
|
153
|
-
_("div", Z, [
|
|
154
|
-
(r(!0), m(O, null, V(A(u), ([d, l]) => (r(), C(Y, {
|
|
155
|
-
key: l.id,
|
|
156
|
-
id: l.id,
|
|
157
|
-
title: l.title,
|
|
158
|
-
text: l.text,
|
|
159
|
-
style: F(l.style),
|
|
160
|
-
buttonProps: l.buttonProps,
|
|
161
|
-
metaText: l.metaText,
|
|
162
|
-
isSafeHTML: l.isSafeHTML,
|
|
163
|
-
forceClosed: l.forceClosed,
|
|
164
|
-
hightlight: l.hightlight,
|
|
165
|
-
onClose: (a) => s(l)
|
|
166
|
-
}, null, 8, ["id", "title", "text", "style", "buttonProps", "metaText", "isSafeHTML", "forceClosed", "hightlight", "onClose"]))), 128))
|
|
167
|
-
])
|
|
168
|
-
]));
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
export {
|
|
172
|
-
ne as default,
|
|
173
|
-
se as show
|
|
174
|
-
};
|
|
175
|
-
//# sourceMappingURL=notice-fno9saBY.es.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notice-fno9saBY.es.js","sources":["../../src/components/core/notice/utils.ts","../../src/components/core/notice/item/item.vue","../../src/components/core/notice/notice.vue"],"sourcesContent":["import { reactive } from 'vue';\nimport type { Props as ItemProps, Props, Style } from '@/components/core/notice/item/types';\nimport Core from '@/core/core/core';\nimport { genIntHash } from '@/core/utils/string';\n\nexport const transitionDuration = 300;\n\nexport type Item = Props & { onClose?: Function };\n\nexport const itemById = reactive(new Map<string, Item>());\n\nconst genItemId = (text: ItemProps['text'], style: ItemProps['style'], options?: Options) => {\n\treturn 'top-notice_' + genIntHash(text + style + JSON.stringify(options));\n};\n\nexport type Options = {\n\ttitle?: ItemProps['title'],\n\tmetaText?: ItemProps['metaText'],\n\tbuttonProps?: ItemProps['buttonProps'],\n\tisSafeHTML?: ItemProps['isSafeHTML'],\n\tselectToClose?: ItemProps['selectToClose'],\n\tonClose?: Function\n}\n\n/**\n * Показать сообщением в стиле push уведомления\n *\n * title будет получен из первой строки text\n *\n * Если в options указан title, он будет взят оттуда\n */\nexport const show = (text: string, style: Style = 'info', options?: Options) => {\n\tlet title = '';\n\n\ttext = String(text);\n\n\tconst id = genItemId(text, style, options);\n\n\tif (options?.title) {\n\t\ttitle = options.title;\n\t} else {\n\t\tconst chunks = text.split('\\n');\n\n\t\tif (chunks.length) {\n\t\t\ttitle = String(chunks.shift());\n\t\t\ttext = chunks.join('\\n');\n\t\t}\n\t}\n\n\tconst itemExists = itemById.get(id);\n\tif (itemExists) {\n\t\thightlight(itemExists);\n\n\t\treturn;\n\t}\n\n\tconst item: Item = {\n\t\tid,\n\t\ttitle,\n\t\ttext,\n\t\tstyle,\n\t\tbuttonProps: options?.buttonProps,\n\t\tmetaText: options?.metaText,\n\t\tisSafeHTML: options?.isSafeHTML,\n\t\tselectToClose: options?.selectToClose,\n\t\tonClose: options?.onClose,\n\t};\n\n\titemById.set(item.id, item);\n\n\tif (itemById.size > 5) {\n\t\tconst [_firstId, firstItem] = [...itemById].at(0) || [];\n\t\tif (firstItem) close(firstItem);\n\t}\n\n\t/**\n\t * Автозакрытие ошибок форм\n\t *\n\t * Добавляет\n\t */\n\tif (Core.state.isMobile) {\n\t\t$('input').one('click', () => close(item));\n\t}\n};\n\nconst hightlight = (item: Item) => {\n\titem.hightlight = true;\n\n\tsetTimeout(() => item.hightlight = false, transitionDuration);\n};\n\nconst close = (item: Item) => {\n\titem.forceClosed = true;\n\n\tsetTimeout(() => {\n\t\titem.onClose?.();\n\n\t\titemById.delete(item.id);\n\t}, transitionDuration);\n};\n\n/**\n * Убрать подозрительный html код\n */\nexport const prepareText = (text: string) => {\n\tconst textNoSafety = 'hacking was detected';\n\n\ttext = text.replace(/<script/g, textNoSafety);\n\ttext = text.replace(/<img/g, textNoSafety);\n\ttext = text.replace(/<iframe/g, textNoSafety);\n\ttext = text.replace(/javascript:/g, textNoSafety);\n\ttext = text.replace(/<[^>]+ (@|on)\\w+=[^>]+>?/g, textNoSafety);\n\n\treturn text;\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, withDefaults } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { nl2br } from '@/core/utils/string';\n\nimport type { Emits, Props } from './types';\nimport { prepareText, transitionDuration } from '@/components/core/notice/utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tselectToClose: true,\n});\n\nconst emit = defineEmits<Emits>();\n\n// анимация появления\nconst showed = ref(false);\nsetTimeout(() => showed.value = true, 10);\n\n// анимация закрытия\nconst closed = ref(false);\nconst closedDirection = ref<'top' | 'right' | 'bottom' | 'left'>('right');\n\nconst title = computed(() => {\n\tlet res = props.title.replace(/ {2}/g, ' ');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst text = computed(() => {\n\tlet res = nl2br(props.text);\n\n\tres = res.replace(/ {2}/g, ' ');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst close = (direction?: typeof closedDirection.value) => {\n\tclosed.value = true;\n\n\tif (direction) {\n\t\tclosedDirection.value = direction;\n\t}\n\n\tsetTimeout(() => emit('close'), transitionDuration);\n};\n\nconst onClick = (e: MouseEvent) => {\n\tif (!props.selectToClose) return;\n\n\tconst { tagName } = e.target as HTMLElement;\n\n\tif (tagName === 'A') close();\n\tif (tagName === 'BUTTON') close();\n};\n\nconst vSwipe = {\n\tmounted: (el: HTMLElement) => {\n\t\tif (!Core.state.isMobile) return;\n\n\t\tif (!Core.$ || !Core.$.ui['draggable']) return;\n\n\t\tlet direction: typeof closedDirection.value = 'right';\n\n\t\tlet axis = 'x';\n\t\t// if (getOS() === 'iOS') axis = 'y';\n\n\t\tCore.$(el).draggable({\n\t\t\trevert: false,\n\t\t\taxis,\n\t\t\tdrag: (_e, ui) => {\n\t\t\t\tif (axis == 'x') {\n\t\t\t\t\tdirection = ui.position.left > 0 ? 'right' : 'left';\n\t\t\t\t} else {\n\t\t\t\t\tdirection = ui.position.top > 0 ? 'bottom' : 'top';\n\t\t\t\t}\n\t\t\t},\n\t\t\tstop: (_e, _ui) => {\n\t\t\t\tclose(direction);\n\t\t\t},\n\t\t});\n\t},\n};\n\n// const vSwipe = {\n// \tmounted: (el: HTMLElement) => {\n// \t\tconst { distanceX, direction } = usePointerSwipe(el, {\n// \t\t\tdisableTextSelect: true,\n// \t\t\tonSwipe(e: PointerEvent) {\n// \t\t\t\tleft.value = -distanceX.value + 'px';\n// \t\t\t},\n// \t\t\tonSwipeEnd: (_e, direction) => {\n// \t\t\t\tclose(direction);\n// \t\t\t},\n// \t\t});\n// \t},\n// };\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-notice_item\"\n\t\t:class=\"{\n\t\t\t['top-notice_item-' + style]: true,\n\t\t\t'top-notice_item-hightlight': hightlight,\n\t\t\t'top-notice_item-showed': showed,\n\t\t\t'top-notice_item-closed': closed || forceClosed,\n\t\t\t['top-notice_item-closed_' + closedDirection]: closed,\n\t\t}\"\n\t\t@click=\"onClick\"\n\t\tv-swipe\n\t>\n\t\t<div class=\"top-notice_itemTextWrapper\">\n\t\t\t<div v-if=\"title\" class=\"top-notice_itemTitle\" v-html=\"title\"></div>\n\t\t\t<div v-if=\"text\" class=\"top-notice_itemText\" v-html=\"text\"></div>\n\t\t</div>\n\n\t\t<TopButton\n\t\t\tv-if=\"buttonProps\"\n\t\t\tclass=\"top-notice_itemButton\"\n\t\t\tsize=\"s\"\n\t\t\t:=\"buttonProps\"\n\t\t\t:title=\"buttonProps.title\"\n\t\t\tv-html=\"buttonProps.default\"\n\t\t\t@click=\"close()\"\n\t\t/>\n\n\t\t<div v-if=\"metaText\" class=\"top-notice_itemMetaText\" v-html=\"metaText\"></div>\n\n\t\t<div\n\t\t\tclass=\"top-notice_itemClose\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t@click=\"() => close()\"\n\t\t></div>\n\t</div>\n</template>\n\n<style>\n@import \"style.css\";\n</style>\n","<!-- performance all in one file component, для Core.notice() -->\n<script lang=\"ts\">\nexport { show } from './utils';\n</script>\n\n<script setup lang=\"ts\">\nimport type { Item } from './utils';\nimport { itemById } from './utils';\n\nimport type { Props } from './types';\nimport TopNoticeItem from './item/item.vue';\n\ndefineProps<Props>();\n\nconst onCloseItem = (item: Item) => {\n\titem.onClose?.();\n\n\titemById.delete(item.id);\n};\n</script>\n\n<template>\n\t<teleport to=\"body\">\n\t\t<div class=\"top-notice\">\n\t\t\t<TopNoticeItem\n\t\t\t\tv-for=\"[_index, item] in itemById\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\t:id=\"item.id\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:text=\"item.text\"\n\t\t\t\t:style=\"item.style\"\n\t\t\t\t:buttonProps=\"item.buttonProps\"\n\t\t\t\t:metaText=\"item.metaText\"\n\t\t\t\t:isSafeHTML=\"item.isSafeHTML\"\n\t\t\t\t:forceClosed=\"item.forceClosed\"\n\t\t\t\t:hightlight=\"item.hightlight\"\n\t\t\t\t@close=\"onCloseItem(item)\"\n\t\t\t/>\n\t\t</div>\n\t</teleport>\n</template>\n\n<style>\n:root {\n\t--top-notice-top: var(--top-padding-4);\n\t--top-notice-right: var(--top-padding-4);\n}\n\n.top-notice {\n\twidth: 400px;\n\tfont-size: 14px;\n\tposition: fixed; top: var(--top-notice-top); right: var(--top-notice-right);\n\tz-index: 1000010;\n\tdisplay: flex; flex-direction: column-reverse; gap: var(--top-gap-2);\n}\n\n.top-notice ul {\n\tpadding: 0 0 0 var(--top-padding-5);\n}\n\n@media only screen and (max-width: 600px) {\n\t:root {\n\t\t--top-notice-top: var(--top-padding-4);\n\t\t--top-notice-right: var(--top-padding-4);\n\t}\n\n\t.top-notice { width: auto; left: var(--top-notice-right); }\n}\n</style>\n"],"names":["transitionDuration","itemById","reactive","genItemId","text","style","options","genIntHash","show","title","id","chunks","itemExists","hightlight","item","_firstId","firstItem","close","Core","_a","prepareText","textNoSafety","props","__props","emit","__emit","showed","ref","closed","closedDirection","computed","res","nl2br","direction","onClick","e","tagName","vSwipe","el","_e","ui","_ui","normalizeClass","_ctx","forceClosed","openBlock","createElementBlock","_hoisted_2","createCommentVNode","_hoisted_3","_cache","$event","metaText","_hoisted_5","onCloseItem","createElementVNode","_hoisted_1","Fragment","renderList","unref","_index","normalizeStyle"],"mappings":"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"}
|