{"version":3,"file":"spa-static/js/chunk-common-components.749d84e7.js","mappings":"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","sources":["webpack://sirius-cms/./src/components/BaseCombobox/BaseCombobox.vue","webpack://sirius-cms/./src/components/BaseCombobox/BaseCombobox.ts","webpack://sirius-cms/./src/components/BaseCombobox/BaseCombobox.ts?4580","webpack://sirius-cms/./src/components/BaseCombobox/BaseCombobox.vue?71e8","webpack://sirius-cms/./src/components/EditorContainer/EditorContainer.vue","webpack://sirius-cms/./src/components/EditorContainer/EditorContainer.ts","webpack://sirius-cms/./src/components/EditorContainer/EditorContainer.ts?cd86","webpack://sirius-cms/./src/components/EditorContainer/EditorContainer.vue?8b2f","webpack://sirius-cms/./src/components/FormField/FormField.vue","webpack://sirius-cms/./src/components/FormField/FormField.ts","webpack://sirius-cms/./src/components/FormField/FormField.ts?d0f6","webpack://sirius-cms/./src/components/FormField/FormField.vue?f099","webpack://sirius-cms/./src/components/Editor/Editor.vue","webpack://sirius-cms/./src/components/Editor/plugins/spellCheck.ts","webpack://sirius-cms/./src/components/Editor/Editor.ts","webpack://sirius-cms/./src/components/Editor/Editor.ts?9e37","webpack://sirius-cms/./src/components/Editor/Editor.vue?1c0a","webpack://sirius-cms/./src/components/Topbar/Topbar.vue","webpack://sirius-cms/./src/components/Topbar/Topbar.ts","webpack://sirius-cms/./src/components/Topbar/Topbar.ts?5064","webpack://sirius-cms/./src/components/Topbar/Topbar.vue?95ae","webpack://sirius-cms/./src/components/WidgetsList/WidgetsList.vue","webpack://sirius-cms/./src/components/WidgetsList/WidgetsList.ts","webpack://sirius-cms/./src/components/WidgetsList/WidgetsList.ts?af35","webpack://sirius-cms/./src/components/WidgetsList/WidgetsList.vue?e3ff","webpack://sirius-cms/./src/components/ImageSourceCombobox/ImageSourceCombobox.vue","webpack://sirius-cms/./src/components/ImageSourceCombobox/ImageSourceCombobox.ts","webpack://sirius-cms/./src/components/ImageSourceCombobox/ImageSourceCombobox.ts?7aa4","webpack://sirius-cms/./src/components/ImageSourceCombobox/ImageSourceCombobox.vue?d338","webpack://sirius-cms/./src/components/TableFooter/TableFooter.vue","webpack://sirius-cms/./src/components/TableFooter/TableFooter.ts","webpack://sirius-cms/./src/components/TableFooter/TableFooter.ts?f6bf","webpack://sirius-cms/./src/components/TableFooter/TableFooter.vue?ca6c","webpack://sirius-cms/./src/components/DateTime/DateTime.vue","webpack://sirius-cms/./src/components/DateTime/DateTime.ts","webpack://sirius-cms/./src/components/DateTime/DateTime.ts?b0e5","webpack://sirius-cms/./src/components/DateTime/DateTime.vue?cf4f","webpack://sirius-cms/./src/components/ImageUploader/ImageUploader.vue","webpack://sirius-cms/./src/components/ImageUploader/ImageUploader.ts","webpack://sirius-cms/./src/components/ImageUploader/ImageUploader.ts?3b7e","webpack://sirius-cms/./src/components/ImageUploader/ImageUploader.vue?c262","webpack://sirius-cms/./src/components/BreadCrumbs/BreadCrumbs.vue","webpack://sirius-cms/./src/components/BreadCrumbs/BreadCrumbs.ts","webpack://sirius-cms/./src/components/BreadCrumbs/BreadCrumbs.ts?0a7d","webpack://sirius-cms/./src/components/BreadCrumbs/BreadCrumbs.vue?16f1","webpack://sirius-cms/./src/components/InfiniteScroll/InfiniteScroll.vue","webpack://sirius-cms/./src/components/InfiniteScroll/InfiniteScroll.ts","webpack://sirius-cms/./src/components/InfiniteScroll/InfiniteScroll.ts?04de","webpack://sirius-cms/./src/components/InfiniteScroll/InfiniteScroll.vue?cb31","webpack://sirius-cms/./src/components/CounterValue/CounterValue.vue","webpack://sirius-cms/./src/components/CounterValue/CounterValue.ts","webpack://sirius-cms/./src/components/CounterValue/CounterValue.ts?53a7","webpack://sirius-cms/./src/components/CounterValue/CounterValue.vue?b7f1","webpack://sirius-cms/./src/components/BaseAutocomplete/BaseAutocomplete.vue","webpack://sirius-cms/./src/components/BaseAutocomplete/BaseAutocomplete.ts","webpack://sirius-cms/./src/components/BaseAutocomplete/BaseAutocomplete.ts?1313","webpack://sirius-cms/./src/components/BaseAutocomplete/BaseAutocomplete.vue?cabf","webpack://sirius-cms/./src/components/ConfirmDialog/ConfirmDialog.vue","webpack://sirius-cms/./src/components/ConfirmDialog/ConfirmDialog.ts","webpack://sirius-cms/./src/components/ConfirmDialog/ConfirmDialog.ts?10e6","webpack://sirius-cms/./src/components/ConfirmDialog/ConfirmDialog.vue?36cb","webpack://sirius-cms/./src/components/DataTable/DataTable.vue","webpack://sirius-cms/./src/components/DataTable/DataTable.ts","webpack://sirius-cms/./src/components/DataTable/DataTable.ts?c05f","webpack://sirius-cms/./src/components/DataTable/DataTable.vue?8e44","webpack://sirius-cms/./src/components/ImageUi/ImageUi.vue","webpack://sirius-cms/./src/components/ImageUi/ImageUi.ts","webpack://sirius-cms/./src/components/ImageUi/ImageUi.ts?740a","webpack://sirius-cms/./src/components/ImageUi/ImageUi.vue?ee2c","webpack://sirius-cms/./src/components/Editor/plugins/autoTargetLink.ts","webpack://sirius-cms/./src/components/UrlCodeTextarea/UrlCodeTextarea.vue","webpack://sirius-cms/./src/components/UrlCodeTextarea/UrlCodeTextarea.ts","webpack://sirius-cms/./src/components/UrlCodeTextarea/UrlCodeTextarea.ts?311c","webpack://sirius-cms/./src/components/UrlCodeTextarea/UrlCodeTextarea.vue?9d65","webpack://sirius-cms/./src/components/FilteredSearchBlock/FilteredSearchBlock.vue","webpack://sirius-cms/./src/components/FilteredSearchBlock/FilteredSearchBlock.ts","webpack://sirius-cms/./src/components/FilteredSearchBlock/FilteredSearchBlock.ts?d180","webpack://sirius-cms/./src/components/FilteredSearchBlock/FilteredSearchBlock.vue?56a7","webpack://sirius-cms/./src/components/ImageCropper/ImageCropper.vue","webpack://sirius-cms/./src/components/ImageCropper/ImageCropperPreview/ImageCropperPreview.vue","webpack://sirius-cms/./src/components/ImageCropper/ImageCropperPreview/ImageCropperPreview.ts","webpack://sirius-cms/./src/components/ImageCropper/ImageCropperPreview/ImageCropperPreview.ts?cd1e","webpack://sirius-cms/./src/components/ImageCropper/ImageCropperPreview/ImageCropperPreview.vue?474a","webpack://sirius-cms/./src/components/ImageCropper/CustomBackgroundWrapper/CustomBackgroundWrapper.vue","webpack://sirius-cms/./src/components/ImageCropper/CustomBackgroundWrapper/CustomBackgroundWrapper.js","webpack://sirius-cms/./src/components/ImageCropper/CustomBackgroundWrapper/CustomBackgroundWrapper.js?0f97","webpack://sirius-cms/./src/components/ImageCropper/CustomBackgroundWrapper/CustomBackgroundWrapper.vue?aca9","webpack://sirius-cms/./src/components/ImageCropper/ImageCropper.ts","webpack://sirius-cms/./src/components/ImageCropper/ImageCropper.ts?e936","webpack://sirius-cms/./src/components/ImageCropper/ImageCropper.vue?febd","webpack://sirius-cms/./src/components/DatePicker/DatePicker.vue","webpack://sirius-cms/./src/components/DatePicker/DatePicker.ts","webpack://sirius-cms/./src/components/DatePicker/DatePicker.ts?e158","webpack://sirius-cms/./src/components/DatePicker/DatePicker.vue?27b9"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-combobox',_vm._g(_vm._b({ref:\"combobox\",staticClass:\"base-combobox\",attrs:{\"value\":_vm.value,\"items\":_vm.localItems,\"loading\":_vm.localLoading,\"outlined\":_vm.outlined,\"dense\":_vm.dense,\"item-text\":_vm.itemText,\"item-value\":_vm.itemValue,\"multiple\":_vm.multiple,\"placeholder\":_vm.placeholder,\"disabled\":_vm.disabled},on:{\"input\":_vm.onInput,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"~focus\":function($event){return _vm.initInfinityLoader.apply(null, arguments)},\"update:search-input\":_vm.onUpdateSearchInput},scopedSlots:_vm._u([{key:\"selection\",fn:function({ item, parent }){return [_c('div',{staticClass:\"d-flex flex-wrap mr-2 align-center\",style:({\n marginTop: '2px',\n marginBottom: '2px',\n })},[_c('span',{class:[\n 'pr-1 text-caption',\n { 'primary--text': !_vm.disabled, 'text--disabled': _vm.disabled },\n ]},[_vm._t(\"selection-item-text\",function(){return [_vm._v(\" \"+_vm._s(item[_vm.itemText])+\" \")]},{\"item\":item})],2),_c('v-icon',{attrs:{\"disabled\":_vm.disabled,\"color\":\"primary\",\"small\":\"\"},on:{\"click\":function($event){_vm.multiple ? parent.selectItem(item) : parent.clearableCallback()}}},[_vm._v(\" $delete \")])],1)]}},(_vm.usedInfinityLoader)?{key:\"no-data\",fn:function(){return [_c('span',{staticClass:\"pa-3 d-block base-combobox__no-data\"},[_vm._v(\" \"+_vm._s(_vm.noDataText)+\" \")])]},proxy:true}:null,(_vm.usedInfinityLoader && _vm.infinityLoaderPagination)?{key:\"append-item\",fn:function(){return [_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowInfinityLoaderPagination),expression:\"isShowInfinityLoaderPagination\"}],ref:\"infinityLoaderPagination\",staticClass:\"text-center base-combobox__infinity-loader\"},[_c('v-skeleton-loader',{attrs:{\"type\":\"list-item\"}})],1)]},proxy:true}:null],null,true)},'v-combobox',_vm.$attrs,false),_vm.localListeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import debounce from 'lodash.debounce'\nimport { Vue, Component, Prop, Ref } from 'vue-property-decorator'\n\n@Component({\n inheritAttrs: false,\n})\nexport default class BaseCombobox extends Vue {\n @Ref('combobox') private readonly comboboxRef?: {\n lazyValue?: unknown\n focus: () => void\n updateMenuDimensions: () => void\n clearableCallback: () => void\n updateCombobox: () => void\n }\n @Ref('infinityLoaderPagination')\n private readonly infinityLoaderPaginationRef?: HTMLDivElement\n\n @Prop({ type: [String, Number, Array] }) private readonly value?: unknown\n @Prop({ type: Boolean, default: false })\n private readonly infinityLoaderPagination!: boolean\n @Prop({ type: Array }) private readonly items?: unknown[]\n @Prop({ type: Boolean, default: true }) private readonly outlined!: boolean\n @Prop({ type: Boolean, default: false }) private readonly loading!: boolean\n @Prop({ type: Boolean, default: true }) private readonly dense!: boolean\n @Prop({ type: Boolean, default: false }) private readonly multiple!: boolean\n @Prop({ type: String, default: 'text' }) private readonly itemText!: string\n @Prop({ type: String, default: 'value' }) private readonly itemValue!: string\n @Prop({ type: String, default: '' }) private readonly placeholder!: string\n @Prop({ type: Boolean, default: true }) private selectionFromItems!: boolean\n @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean\n @Prop({ type: Function })\n private readonly infinityLoadFunction?: (payload: {\n page: number\n search: string\n count: number\n }) => Promise<{ items: unknown[] }>\n\n private debouncedInfinityLoaderSearch!: ReturnType\n private autoUpdateValue!: ReturnType\n\n private isFocused = false\n\n private infinityLoader: {\n searching: boolean\n hasMore: boolean\n loading: boolean\n page: number\n count: number\n items: unknown[]\n search: string\n searchKey: number\n inited: boolean\n } = {\n searching: false,\n page: 1,\n count: 10,\n hasMore: true,\n loading: false,\n items: [],\n search: '',\n searchKey: Date.now(),\n inited: false,\n }\n\n private get isShowInfinityLoaderPagination() {\n return (\n this.infinityLoader.hasMore &&\n this.localItems.length > 0 &&\n !this.infinityLoader.searching\n )\n }\n\n private get localLoading() {\n return (\n this.infinityLoader.searching ||\n this.infinityLoader.loading ||\n this.loading\n )\n }\n\n private get usedInfinityLoader() {\n return !!this.infinityLoadFunction\n }\n\n private get localItems() {\n if (this.usedInfinityLoader) {\n return this.infinityLoader.items\n }\n\n return this.items || []\n }\n\n private get localListeners() {\n const $listeners = { ...this.$listeners }\n\n delete $listeners.input\n delete $listeners.focus\n delete $listeners.blur\n\n return $listeners\n }\n\n private get noDataText() {\n if (this.localLoading) {\n return 'Поиск...'\n }\n\n if (!this.infinityLoader.search.length) {\n return 'Начните ввод для поиска'\n }\n\n return 'Ничего не найдено'\n }\n\n private initInfinityLoader() {\n if (!this.usedInfinityLoader) return\n\n const loadItems = async ({\n page,\n search,\n count,\n }: {\n page: number\n search: string\n count: number\n }) => {\n if (\n !search ||\n this.infinityLoader.loading ||\n !this.infinityLoadFunction\n ) {\n return\n }\n\n this.infinityLoader.loading = true\n\n try {\n const { items } = await this.infinityLoadFunction({\n page,\n search,\n count,\n })\n\n this.infinityLoader.searching = false\n this.infinityLoader.loading = false\n\n const changedParams = [\n {\n oldValue: page,\n newValue: this.infinityLoader.page,\n },\n {\n oldValue: search,\n newValue: this.infinityLoader.search,\n },\n {\n oldValue: count,\n newValue: this.infinityLoader.count,\n },\n ].some(({ oldValue, newValue }) => oldValue !== newValue)\n\n if (!changedParams) {\n this.infinityLoader.items =\n page === 1 ? [] : this.infinityLoader.items\n\n items.forEach((item) => {\n this.infinityLoader.items.push(Object.freeze(item))\n })\n\n this.infinityLoader.hasMore = count <= items.length\n } else {\n loadItems({\n page: this.infinityLoader.page,\n search: this.infinityLoader.search,\n count: this.infinityLoader.count,\n })\n }\n } catch (err) {\n this.infinityLoader.searching = false\n this.infinityLoader.loading = false\n\n console.error(err)\n }\n }\n\n let intervalId = 0\n let visibleObserver: IntersectionObserver | null = null\n\n if (this.infinityLoaderPagination) {\n visibleObserver = new IntersectionObserver(\n ([{ isIntersecting }]) => {\n if (!isIntersecting || this.localLoading) {\n return\n }\n\n this.infinityLoader.page++\n },\n {\n threshold: 0,\n }\n )\n\n intervalId = window.setInterval(() => {\n if (!this.infinityLoaderPaginationRef) return\n\n window.clearInterval(intervalId)\n this.infinityLoader.inited = true\n }, 500)\n } else {\n this.infinityLoader.inited = true\n }\n\n this.$watch(\n () => {\n return [\n this.localItems.length,\n this.localLoading,\n this.infinityLoader.inited,\n ].join('-')\n },\n () => {\n const infinityLoaderPaginationRef = this.infinityLoaderPaginationRef\n\n if (!infinityLoaderPaginationRef) return\n\n visibleObserver?.unobserve(infinityLoaderPaginationRef)\n visibleObserver?.observe(infinityLoaderPaginationRef)\n },\n {\n immediate: true,\n }\n )\n\n this.$watch(\n () => {\n return [\n this.infinityLoader.searchKey,\n this.infinityLoader.page,\n this.infinityLoader.count,\n ].join('-')\n },\n () => {\n loadItems({\n page: this.infinityLoader.page,\n search: this.infinityLoader.search,\n count: this.infinityLoader.count,\n })\n }\n )\n\n this.$once('hook:beforeDestroy', () => {\n visibleObserver?.disconnect()\n window.clearInterval(intervalId)\n })\n }\n\n private onInput(value: unknown | unknown[]) {\n if (!this.selectionFromItems) {\n this.$emit('input', value)\n\n return\n }\n\n if (Array.isArray(value)) {\n this.$emit(\n 'input',\n value.filter((v) => typeof v !== 'string')\n )\n\n this.autoUpdateValue()\n\n return\n }\n\n if (typeof value === 'object') {\n this.$emit('input', value)\n\n this.autoUpdateValue()\n return\n }\n\n this.comboboxRef?.clearableCallback()\n }\n\n private onFocus(event: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', event)\n }\n\n private onBlur(event: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', event)\n }\n\n private onUpdateSearchInput(value: string | null) {\n value = value?.trim() || this.infinityLoader.search\n\n if (value !== this.infinityLoader.search) {\n this.infinityLoader.searching = this.infinityLoader.inited\n this.infinityLoader.hasMore = true\n this.infinityLoader.page = 1\n this.infinityLoader.items = []\n this.debouncedInfinityLoaderSearch()\n }\n\n this.infinityLoader.search = value\n\n this.$emit('update:search-input', value)\n }\n\n private focus() {\n this.comboboxRef?.focus()\n }\n\n private created() {\n this.debouncedInfinityLoaderSearch = debounce(() => {\n this.infinityLoader.searchKey++\n }, 600)\n\n this.autoUpdateValue = debounce(() => {\n if (!this.comboboxRef) {\n return\n }\n\n this.comboboxRef.lazyValue = this.value\n }, 50)\n }\n\n private mounted() {\n const onScroll = () => {\n this.comboboxRef?.updateMenuDimensions()\n }\n\n this.$watch(\n () => {\n return this.isFocused\n },\n (isFocused) => {\n if (!isFocused) {\n window.removeEventListener('scroll', onScroll)\n } else {\n window.addEventListener('scroll', onScroll, { passive: true })\n }\n },\n { immediate: true }\n )\n\n this.$once('hook:beforeDestroy', () => {\n window.removeEventListener('scroll', onScroll)\n })\n }\n\n private beforeDestroy() {\n this.debouncedInfinityLoaderSearch.cancel()\n this.autoUpdateValue.cancel()\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./BaseCombobox.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./BaseCombobox.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./BaseCombobox.vue?vue&type=template&id=6918d81a&scoped=true\"\nimport script from \"./BaseCombobox.ts?vue&type=script&lang=ts&external\"\nexport * from \"./BaseCombobox.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./BaseCombobox.scss?vue&type=style&index=0&id=6918d81a&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6918d81a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:[\n 'editor-container',\n {\n [`editor-container_place_${_vm.place}`]: !!_vm.place,\n 'editor-container_with_side': _vm.defineSide,\n 'editor-container_hide-topbar': _vm.hideTopbar,\n 'editor-container_visible-topbar': !_vm.hideTopbar,\n 'editor-container_hide-scrollbar': _vm.hideSideScrollbar,\n },\n ]},[(!_vm.hideTopbar)?_c('v-card',{attrs:{\"elevation\":\"0\",\"rounded\":\"0\",\"height\":_vm.$vuetify.breakpoint.mdAndUp ? 56 : 40,\"color\":\"editor-container__bar blue-grey lighten-4 px-4 d-flex overflow-auto mb-md-4\"}},[_c('div',{staticClass:\"d-flex align-center justify-end flex-shrink-0 flex-grow-1 editor-container__bar-content mx-auto\"},[(_vm.$vuetify.breakpoint.width > 700 && _vm.topBarTitle)?_c('h3',{staticClass:\"text-h5 font-weight-medium blue-grey--text text--darken-3 pl-6 pr-2 px-md-2 flex-grow-1 text-md-center\"},[_vm._v(\" \"+_vm._s(_vm.topBarTitle)+\" \")]):_vm._e(),(_vm.defineSide && _vm.$vuetify.breakpoint.smAndDown)?_c('v-btn',{attrs:{\"icon\":!_vm.showedSide,\"fab\":\"\",\"x-small\":\"\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.toggleSide()}}},[_c('v-icon',{attrs:{\"size\":\"24\",\"color\":\"blue-grey darken-3\"}},[_vm._v(\" mdi-cog-outline \")])],1):_vm._e(),(!_vm.hideViewButton)?_c('div',{staticClass:\"d-flex align-self-stretch ml-2 ml-md-4 py-4\"},[_c('v-divider',{staticClass:\"white--text\",attrs:{\"vertical\":\"\"}})],1):_vm._e(),(!_vm.hideViewButton)?_c('v-btn',_vm._b({staticClass:\"ml-2 ml-md-4\",attrs:{\"fab\":\"\",\"icon\":\"\",\"x-small\":\"\",\"elevation\":\"0\"}},'v-btn',_vm.localViewButtonProps,false),[_c('v-icon',{attrs:{\"size\":\"24\",\"color\":\"blue-grey darken-3\"}},[_vm._v(\"mdi-eye-outline\")])],1):_vm._e(),(!_vm.hideHistoryDetailButton)?_c('v-btn',_vm._g({staticClass:\"ml-2 ml-md-4\",attrs:{\"fab\":\"\",\"icon\":\"\",\"x-small\":\"\",\"elevation\":\"0\"}},_vm.localHistoryDetailButtonListeners),[_c('v-icon',{attrs:{\"size\":\"24\",\"color\":\"blue-grey darken-3\"}},[_vm._v(\"mdi-history\")])],1):_vm._e(),(!_vm.hideSaveButton)?_c('v-btn',_vm._g(_vm._b({staticClass:\"font-weight-bold ml-2 ml-md-4 white--text\",attrs:{\"height\":_vm.$vuetify.breakpoint.mdAndUp ? 36 : 24,\"rounded\":\"\",\"elevation\":\"0\"}},'v-btn',_vm.localSaveButtonProps,false),_vm.localSaveButtonListeners),[_vm._v(\" \"+_vm._s(_vm.saveButtonText)+\" \")]):_vm._e(),_c('v-hover',{on:{\"input\":function($event){return _vm.$emit('update:hover-publish-button', $event)}}},[(!_vm.hidePublishButton)?_c('v-btn',_vm._g(_vm._b({class:[\n 'font-weight-bold white--text ml-2 ml-md-4 white--text',\n { 'cursor-default': !_vm.localPublishButtonListeners.click },\n ],attrs:{\"height\":_vm.$vuetify.breakpoint.mdAndUp ? 36 : 24,\"rounded\":\"\",\"elevation\":\"0\"}},'v-btn',_vm.localPublishButtonProps,false),_vm.localPublishButtonListeners),[(_vm.publishButtonIcon)?_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.publishButtonIcon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.publishButtonText)+\" \")],1):_vm._e()],1)],1)]):_vm._e(),_c('div',{staticClass:\"editor-container__tabs\"},[_vm._t(\"tabs\")],2),_c('div',{staticClass:\"d-flex mx-auto editor-container__content-wrapper\"},[_c('div',{class:[\n 'flex-grow-1',\n 'px-sm-4',\n {\n 'px-3': _vm.noStyleContent,\n },\n ],style:({ width: 0 })},[_c('div',{class:[\n 'editor-container__content',\n 'flex-grow-1',\n { 'pt-4 pb-10 px-3 white': !_vm.noStyleContent },\n ]},[_vm._t(\"content\",null,{\"toggleSide\":_vm.toggleSide})],2)]),_c('v-overlay',{staticClass:\"editor-container__overlay\",attrs:{\"value\":!_vm.$vuetify.breakpoint.mdAndUp && _vm.showedSide,\"z-index\":1},nativeOn:{\"click\":function($event){return _vm.toggleSide()}}}),(_vm.defineSide)?_c('div',{class:[\n { white: !_vm.noStyleSidebar },\n 'align-self-start',\n 'flex-shrink-0',\n 'd-flex',\n 'flex-column',\n 'editor-container__side',\n {\n 'editor-container__side_fixed': !_vm.$vuetify.breakpoint.mdAndUp,\n 'editor-container__side_showed':\n _vm.showedSide || _vm.$vuetify.breakpoint.mdAndUp,\n },\n ]},[_c('div',{class:[\n 'd-flex',\n 'align-center',\n { 'py-1': !_vm.noStyleSidebar },\n { 'py-md-3': !_vm.noStyleSidebar },\n {\n 'blue-grey lighten-5': _vm.$vuetify.breakpoint.smAndDown,\n },\n ]},[(!_vm.hideSideTitle)?_c('h4',{class:[\n 'blue-grey--text',\n 'text--darken-3',\n 'font-weight-medium',\n 'mx-3',\n 'flex-shrink-1',\n {\n 'text-h6': _vm.$vuetify.breakpoint.mdAndUp,\n 'text-subtitle-1': !_vm.$vuetify.breakpoint.mdAndUp,\n },\n ]},[_vm._v(\" \"+_vm._s(_vm.sideTitle)+\" \")]):_vm._e(),(!_vm.$vuetify.breakpoint.mdAndUp)?_c('v-btn',{staticClass:\"d-block ml-auto mr-2\",attrs:{\"icon\":\"\",\"color\":\"red\"},on:{\"click\":function($event){return _vm.toggleSide(false)}}},[_c('v-icon',[_vm._v(\" mdi-close \")])],1):_vm._e()],1),_c('div',{staticClass:\"editor-container__side-tabs\"},[_vm._t(\"side-tabs\")],2),_c('div',{class:[\n 'flex-shrink-1 flex-grow-1',\n 'editor-container__side-content',\n { 'pb-4': !_vm.noStyleSidebar },\n { 'overflow-auto': _vm.isOverflowSidebar },\n {\n 'editor-container__side-content_with-scrollbar':\n !_vm.hideSideScrollbar,\n },\n ]},[_vm._t(\"side\")],2)]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Component from 'vue-class-component'\nimport { Prop } from 'vue-property-decorator'\n\n@Component\nexport default class EditorContainer extends Vue {\n @Prop({ type: String, default: '' })\n private readonly sideTitle!: boolean\n @Prop({ type: String, default: '' })\n private readonly topBarTitle!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hoverPublishButton!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hideSideScrollbar!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hideViewButton!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hideSaveButton!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hideTopbar!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly noStyleContent!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly noStyleSidebar!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hidePublishButton!: boolean\n @Prop({ type: Object }) private readonly saveButtonProps?: Record\n @Prop({ type: Object }) private readonly viewButtonProps?: Record\n @Prop({ type: Object }) private readonly linkButtonProps?: Record\n @Prop({ type: Object }) private readonly historyDetailButtonProps?: Record<\n string,\n any\n >\n @Prop({ type: String, default: '' })\n private readonly place!: string\n @Prop({ type: Object }) private readonly publishButtonProps?: Record<\n string,\n any\n >\n @Prop({ type: Boolean, default: true }) private isOverflowSidebar!: boolean\n @Prop({ type: Boolean, default: false }) private hideSideTitle!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hideHistoryDetailButton!: boolean\n\n private showedSide = false\n\n private get localViewButtonProps() {\n const { to, href, target } = {\n to: undefined,\n href: undefined,\n target: undefined,\n ...this.viewButtonProps,\n }\n\n return { to, href, target }\n }\n\n private get localLinkButtonProps() {\n const { loading, disabled } = {\n loading: false,\n disabled: false,\n ...this.linkButtonProps,\n }\n\n return { loading, disabled }\n }\n\n private get localLinkButtonListeners() {\n const { onClick } = { onClick: () => '', ...this.linkButtonProps }\n\n return { click: onClick }\n }\n\n private get publishButtonText() {\n return this.publishButtonProps?.text || ''\n }\n\n private get publishButtonIcon() {\n return this.publishButtonProps?.icon || ''\n }\n\n private get localPublishButtonProps() {\n const {\n loading = false,\n disabled = false,\n color = 'primary',\n minWidth = undefined,\n } = {\n ...this.publishButtonProps,\n }\n\n return {\n loading,\n disabled,\n color,\n minWidth,\n }\n }\n\n private get localPublishButtonListeners() {\n const { onClick = undefined } = {\n ...this.publishButtonProps,\n }\n\n const listeners: Record = {}\n\n if (onClick) {\n listeners.click = onClick\n }\n\n return listeners\n }\n\n private get localSaveButtonProps() {\n const { loading, disabled, outlined, color } = {\n loading: false,\n disabled: false,\n outlined: true,\n color: 'primary',\n ...this.saveButtonProps,\n }\n\n return {\n loading,\n disabled,\n outlined,\n color,\n }\n }\n\n private get localSaveButtonListeners() {\n const { onClick } = { onClick: () => '', ...this.saveButtonProps }\n\n return { click: onClick }\n }\n\n private get localHistoryDetailButtonListeners() {\n const { onClick } = { onClick: () => '', ...this.historyDetailButtonProps }\n\n return { click: onClick }\n }\n\n private get saveButtonText() {\n return this.saveButtonProps?.text || 'Сохранить'\n }\n\n private get defineSide() {\n return !!this.$slots.side\n }\n\n private toggleSide(showed = !this.showedSide) {\n this.showedSide = showed\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./EditorContainer.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./EditorContainer.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./EditorContainer.vue?vue&type=template&id=53617348&scoped=true\"\nimport script from \"./EditorContainer.ts?vue&type=script&lang=ts&external\"\nexport * from \"./EditorContainer.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./EditorContainer.scss?vue&type=style&index=0&id=53617348&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53617348\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"form-field text-left\"},[_c('p',{staticClass:\"text-caption-1 font-weight-bold mb-1 blue-grey--text d-flex\",class:_vm.disabled ? 'text--lighten-2' : 'text--darken-3'},[_vm._t(\"pre-icon\"),_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"form-field__symbol\"},[_vm._v(\"*\")]):_vm._e()],2),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Prop, Vue } from 'vue-property-decorator'\n\n@Component\nexport default class FormField extends Vue {\n @Prop({ type: String, default: '' }) private readonly label!: string\n @Prop({ type: Boolean, default: false }) private readonly required!: boolean\n @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./FormField.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./FormField.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./FormField.vue?vue&type=template&id=359ae905&scoped=true\"\nimport script from \"./FormField.ts?vue&type=script&lang=ts&external\"\nexport * from \"./FormField.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./FormField.scss?vue&type=style&index=0&id=359ae905&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"359ae905\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.hiddenCounter && _vm.maxlength)?_c('CounterValue',{class:[\n 'sirius-editor',\n {\n 'sirius-editor_disabled': _vm.disabled,\n },\n ],attrs:{\"value\":_vm.localValue,\"maxlength\":_vm.maxlength}},[_c('ckeditor',_vm._g(_vm._b({ref:\"CKEditor\",attrs:{\"config\":_vm.localConfig,\"throttle\":0},on:{\"ready\":_vm.onReady}},'ckeditor',_vm.$attrs,false),_vm.localListeners))],1):_c('ckeditor',_vm._g(_vm._b({class:[\n 'sirius-editor',\n {\n 'sirius-editor_disabled': _vm.disabled,\n },\n ],attrs:{\"config\":_vm.localConfig,\"throttle\":0},on:{\"ready\":_vm.onReady}},'ckeditor',_vm.$attrs,false),_vm.localListeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from 'axios'\nimport htmlToText from '@/helpers/htmlToText'\nimport getWords from '@/helpers/getWords'\n\nexport default class SpellCheck {\n constructor({\n editor,\n onInput,\n }: {\n editor: CKEDITOR.editor\n onInput: (value: string) => void\n }) {\n let focusTimeoutId = 0\n let isActivated = false\n let isFocused = false\n let isSettingData = false\n let currentText = ''\n let oldText = ''\n let spellCheckLoading = false\n let spellCheckResult: Record = {}\n\n const spellCheckMisspell = () => {\n if (isFocused) return\n\n const newHTML = getWords(htmlToText(editor.editable().getHtml())).reduce(\n (acc, word) => {\n if (!spellCheckResult[word]) {\n acc += word\n } else {\n acc += `${word}`\n }\n\n return acc\n },\n ''\n )\n\n editor.editable().setHtml(newHTML)\n }\n\n const spellCheck = async () => {\n if (spellCheckLoading) return\n\n currentText = htmlToText(editor.getData())\n\n spellCheckLoading = true\n\n spellCheckMisspell()\n\n try {\n if (currentText !== oldText) {\n const { data } = await axios.post>(\n '/api/v1/spell/',\n {\n text: currentText,\n },\n { useRetry: false }\n )\n\n spellCheckResult = data\n }\n\n oldText = currentText\n spellCheckLoading = false\n spellCheckMisspell()\n } catch (error) {\n spellCheckLoading = false\n }\n }\n\n editor.on('focus', () => {\n isActivated = true\n\n isFocused = true\n\n window.clearTimeout(focusTimeoutId)\n\n focusTimeoutId = window.setTimeout(() => {\n editor.fire('lockSnapshot')\n\n const bookmark2 = editor.getSelection().createBookmarks(true)\n\n editor.setData(editor.editable().getHtml(), {\n callback: () => {\n editor.getSelection().selectBookmarks(bookmark2)\n editor.fire('unlockSnapshot')\n },\n })\n }, 30)\n })\n\n const changeListenner = () => {\n onInput(editor.getData())\n }\n\n editor.on('setData', () => {\n isSettingData = true\n })\n\n editor.on('afterSetData', () => {\n isSettingData = false\n spellCheck()\n })\n\n editor.on('change', () => {\n if (!isActivated || isSettingData) return\n\n changeListenner()\n })\n\n editor.on('blur', () => {\n isFocused = false\n\n window.clearTimeout(focusTimeoutId)\n\n spellCheck()\n })\n\n spellCheck()\n }\n}\n","import { Component, Prop, Vue } from 'vue-property-decorator'\nimport debounce from 'lodash.debounce'\nimport CKEditor from 'ckeditor4-vue'\nimport getCountLetters from '@/helpers/getCountLetters'\nimport decodeHTMLString from '@/helpers/decodeHTMLString'\nimport sliceText from '@/helpers/sliceText'\nimport SpellCheck from './plugins/spellCheck'\n\n@Component({\n components: {\n ckeditor: CKEditor.component,\n },\n inheritAttrs: false,\n})\nexport default class Editor extends Vue {\n @Prop({ type: String })\n private readonly placeholder?: string\n @Prop({ type: Boolean, default: true })\n private readonly hiddenCounter!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly disabled!: boolean\n @Prop({ type: String, default: '' }) private readonly value!: string\n @Prop({ type: Number, default: 200 }) private readonly throttle!: number\n @Prop({ type: String, default: 'html-text' })\n private readonly valueType!: 'plain-text' | 'html-text'\n @Prop({ type: Number }) private readonly maxlength?: number\n @Prop({ type: Object }) private readonly config?: CKEDITOR.config\n\n private isFocused = false\n private isSettingData = false\n private isLoading = false\n private localValue = ''\n\n private get isEmptyText() {\n return getCountLetters(this.localValue) === 0\n }\n\n private get enabledSpellCheck() {\n return !!this.config?.extraPlugins?.includes('sirius-spell-check')\n }\n\n private get localListeners() {\n const listeners = { ...this.$listeners }\n\n delete listeners.input\n delete listeners.focus\n delete listeners.ready\n\n return listeners\n }\n\n private get localConfig() {\n const extraPlugins = this.config?.extraPlugins\n ?.split(',')\n .filter((pluginName) => pluginName.trim() !== 'sirius-spell-check')\n .join(',')\n\n return this.config && { ...this.config, extraPlugins }\n }\n\n private get hiddenToolbar() {\n return !this.localConfig?.toolbar?.length\n }\n\n private onReady(editor: CKEDITOR.editor) {\n const inputListenner = (value: string) => {\n if (this.valueType === 'plain-text') {\n if (this.maxlength && getCountLetters(value) > this.maxlength) {\n value = sliceText({\n text: value,\n start: 0,\n end: this.maxlength,\n })\n }\n }\n\n this.isLoading = false\n this.localValue = value\n this.$emit('input', value)\n }\n\n const debouncedInput = this.throttle\n ? debounce(inputListenner, this.throttle, {\n maxWait: this.throttle,\n })\n : null\n\n const onInput = (value: string) => {\n if (this.isSettingData) return\n\n if (debouncedInput) {\n this.isLoading = true\n debouncedInput(value)\n } else {\n inputListenner(value)\n }\n }\n\n const onChangeEditor = (value = editor.getData()) => {\n this.localValue = value\n onInput(value)\n this.$emit('update:value', value)\n }\n\n const onFocusEditor = (event: CKEDITOR.eventInfo) => {\n this.isFocused = true\n\n this.$emit('focus', event, editor)\n }\n\n const onBlurEditor = (event: CKEDITOR.eventInfo) => {\n this.isFocused = false\n this.$emit('blur', event, editor)\n }\n\n const onKeyEditor = (event: CKEDITOR.eventInfo) => {\n const keyCode = event.data.domEvent.$.key\n const metaKey = event.data.domEvent.$.metaKey\n const ctrlKey = event.data.domEvent.$.ctrlKey\n\n if (this.valueType === 'plain-text') {\n if (keyCode === 'Enter') {\n event.cancel()\n\n return\n }\n\n const [range] = editor.getSelection().getRanges()\n\n if (\n range.startOffset !== range.endOffset ||\n [\n 'Backspace',\n 'Delete',\n 'Meta',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n ].includes(keyCode) ||\n metaKey ||\n ctrlKey\n ) {\n return\n }\n\n if (\n this.maxlength &&\n getCountLetters(editor.getData()) >= this.maxlength\n ) {\n event.cancel()\n }\n }\n }\n\n if (this.enabledSpellCheck) {\n new SpellCheck({\n editor,\n onInput: (value) => {\n onChangeEditor(value)\n },\n })\n } else {\n editor.on('change', () => {\n onChangeEditor()\n })\n }\n\n editor.on('paste', (eventInfo) => {\n if (\n eventInfo.data.method !== 'paste' &&\n !['html', 'text'].includes(eventInfo.data.type)\n ) {\n return\n }\n\n eventInfo.data.dataValue = decodeHTMLString(eventInfo.data.dataValue)\n })\n\n editor.on('afterPaste', () => {\n if (this.maxlength) {\n const pastedText = editor.getData()\n\n if (getCountLetters(pastedText) > this.maxlength) {\n editor.setData(\n sliceText({\n text: pastedText,\n start: 0,\n end: this.maxlength,\n }),\n {\n callback: () => {\n const range = editor.createRange()\n\n range.moveToElementEditEnd(range.root)\n\n editor.getSelection().selectRanges([range])\n\n editor.fire('unlockSnapshot')\n },\n }\n )\n }\n }\n })\n\n editor.on('focus', onFocusEditor)\n editor.on('blur', onBlurEditor)\n editor.on('key', onKeyEditor)\n\n editor.on('setData', () => {\n this.isSettingData = true\n })\n\n editor.on('afterSetData', () => {\n this.localValue = editor.getData()\n this.isSettingData = false\n })\n\n this.$watch(\n () => {\n return this.value\n },\n (value) => {\n this.localValue = value\n },\n {\n immediate: true,\n }\n )\n\n let loadingTimeoutId = 0\n\n this.$watch(\n () => {\n return this.isLoading\n },\n (isLoading) => {\n window.clearTimeout(loadingTimeoutId)\n\n if (isLoading) {\n this.$emit('update:loading', true)\n } else {\n loadingTimeoutId = window.setTimeout(() => {\n this.$emit('update:loading', false)\n }, 100)\n }\n }\n )\n\n this.$watch(\n () => {\n return [this.isFocused, this.localValue, this.isSettingData].join('-')\n },\n () => {\n if (this.isFocused || this.isSettingData) return\n\n const oldValue = editor.getData()\n const newValue = this.localValue\n\n if (oldValue === newValue) return\n\n editor.fire('lockSnapshot')\n\n editor.setData(this.localValue, {\n callback: () => {\n editor.fire('unlockSnapshot')\n },\n })\n },\n {\n immediate: true,\n }\n )\n\n this.$watch(\n () => {\n return this.hiddenToolbar\n },\n (hiddenToolbar) => {\n const toolbarEl = document.getElementById(`cke_${editor.name}`)\n\n if (!toolbarEl) return\n\n toolbarEl.style.opacity = hiddenToolbar ? '0' : ''\n toolbarEl.style.pointerEvents = hiddenToolbar ? 'none' : ''\n },\n {\n immediate: true,\n }\n )\n\n this.$watch(\n () => {\n return [this.isEmptyText, this.placeholder].join('-')\n },\n () => {\n if (typeof this.placeholder !== 'string') return\n\n if (this.isEmptyText && this.placeholder) {\n editor\n .editable()\n .setAttribute('data-cke-editorplaceholder', this.placeholder)\n } else {\n editor.editable().removeAttribute('data-cke-editorplaceholder')\n }\n },\n {\n immediate: true,\n }\n )\n\n this.$emit('ready', editor)\n\n this.$once('hook:beforeDestroy', () => {\n window.clearTimeout(loadingTimeoutId)\n debouncedInput?.cancel()\n this.$emit('update:loading', false)\n })\n\n this.$once('hook:destroyed', () => {\n // Костыль для очистки памяти, т.к. происходит утечка в ckeditor.js\n Object.keys(editor).forEach((key) => {\n // @ts-ignore\n editor[key] = null\n })\n })\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./Editor.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./Editor.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=4ad3b46f&scoped=true\"\nimport script from \"./Editor.ts?vue&type=script&lang=ts&external\"\nexport * from \"./Editor.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./Editor.scss?vue&type=style&index=0&id=4ad3b46f&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ad3b46f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"topbar white d-sm-flex flex-row align-center mb-4 elevation-2 rounded pa-2 pa-sm-3 black--text font-weight-medium\"},[_vm._t(\"default\"),_c('div',{staticClass:\"d-flex align-center caption grey--text ml-auto pl-3 justify-end mt-3 mt-sm-0\"},[(_vm.isLoadingUpdate)?_c('span',{staticClass:\"mr-3\"},[_vm._v(\"Сохраняется...\")]):(_vm.isSuccess)?_c('div',{staticClass:\"mr-3\"},[_vm._v(\" Успешно сохранено! \")]):(_vm.isError)?_c('span',{staticClass:\"mr-3\"},[_vm._v(\"Не сохранено\")]):_vm._e(),_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"disabled\":_vm.isLoading || _vm.disabledSaveButton,\"color\":!_vm.isError ? 'primary' : 'warning',\"loading\":_vm.isLoadingUpdate,\"small\":_vm.$vuetify.breakpoint.xsOnly,\"elevation\":\"0\",\"height\":\"32\"},on:{\"click\":_vm.onClickSave}},[(_vm.isSuccess)?_c('v-icon',[_vm._v(\"mdi-check-circle\")]):(_vm.isError)?_c('v-icon',[_vm._v(\"mdi-alert-circle\")]):_c('span',[_vm._v(\"Сохранить\")])],1)],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import RequestStatus from '@/types/requestStatus'\nimport { format } from 'date-fns'\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\n\n@Component\nexport default class Topbar extends Vue {\n @Prop({ type: String, required: true, default: RequestStatus.NOT_STARTED })\n private readonly requestStatusUpdate!: RequestStatus\n\n @Prop({ type: String, required: true, default: RequestStatus.NOT_STARTED })\n private readonly requestStatusFetch!: RequestStatus\n\n @Prop({ type: Boolean, default: false })\n private readonly disabledSaveButton!: boolean\n\n private startSaveDate = format(new Date(), 'dd.MM.yyyy HH:mm')\n private timeoutId = 0\n\n private get saveDate() {\n return this.isSuccess ? format(new Date(), 'dd.MM.yyyy HH:mm') : ''\n }\n\n private get isLoadingUpdate() {\n return this.requestStatusUpdate === RequestStatus.PENDING\n }\n\n private get isSuccess() {\n return this.requestStatusUpdate === RequestStatus.SUCCESS\n }\n\n private get isNotStart() {\n return this.requestStatusUpdate === RequestStatus.NOT_STARTED\n }\n\n private get isError() {\n return this.requestStatusUpdate === RequestStatus.FAILED\n }\n\n private get isLoading() {\n return this.requestStatusFetch === RequestStatus.PENDING\n }\n\n @Watch('isLoadingUpdate')\n private deleteBtnStatus() {\n if (this.isLoadingUpdate) return\n\n window.clearTimeout(this.timeoutId)\n\n this.timeoutId = window.setTimeout(() => {\n this.$emit('delete:btn-status', RequestStatus.NOT_STARTED)\n this.timeoutId = 0\n }, 2e3)\n }\n\n private onClickSave() {\n this.$emit('save')\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./Topbar.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./Topbar.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./Topbar.vue?vue&type=template&id=280dc8a5&scoped=true\"\nimport script from \"./Topbar.ts?vue&type=script&lang=ts&external\"\nexport * from \"./Topbar.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./Topbar.scss?vue&type=style&index=0&id=280dc8a5&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"280dc8a5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{staticClass:\"widgets-list mx-0\"},[_c('v-card-title',{staticClass:\"col-12 blue-grey--text text--darken-3 widgets-list__title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_vm._l((_vm.widgetItems),function(widget,widgetIndex){return [(_vm.isShowLink(widget.platform))?_c('v-col',{key:widgetIndex,staticClass:\"widgets-list__item\",class:{ 'ma-auto': widgetIndex === _vm.widgetItems.length - 1 },attrs:{\"cols\":\"12\",\"md\":_vm.itemSize,\"sm\":\"6\"}},[_c(!_vm.isDisabledLink(widget) ? 'router-link' : 'span',{tag:\"router-link\",staticClass:\"widgets-list__link d-flex align-center pa-4 theme--light text-decoration-none flex-column\",class:{ 'widgets-list__link--disabled': _vm.isDisabledLink(widget) },attrs:{\"to\":!_vm.isDisabledLink(widget) ? widget.url : undefined}},[(widget.icon)?_c('v-icon',{staticClass:\"mb-2 deep-purple--text widgets-list__icon\",class:{ 'text--lighten-3': _vm.isDisabledLink(widget) }},[_vm._v(\" \"+_vm._s(widget.icon)+\" \")]):_vm._e(),_c('span',{staticClass:\"mb-1 font-weight-bold text-uppercase deep-purple--text text-center widgets-list__item-title\",class:{ 'text--lighten-3': _vm.isDisabledLink(widget) }},[_vm._v(\" \"+_vm._s(widget.title)+\" \")]),_c('span',{staticClass:\"blue-grey--text text--darken-2 ma-0 text-center widgets-list__item-text\",class:{ 'text--lighten-2': _vm.isDisabledLink(widget) }},[_vm._v(\" \"+_vm._s(widget.text)+\" \")])],1)],1):_vm._e()]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue, Prop } from 'vue-property-decorator'\nimport { IWidget } from '@/types/widget'\nimport { Getter } from 'vuex-class'\nimport { RootGetters } from '@/store/types'\nimport { Platform } from '@/types/platform'\n\n@Component({\n name: 'WidgetsList',\n})\nexport default class WidgetsList extends Vue {\n @Prop({ type: Array, required: true })\n private readonly widgetItems!: IWidget[]\n @Prop({ type: String, default: '' })\n private readonly title?: string\n @Prop({ type: String, default: '6' }) private readonly itemSize?:\n | number\n | string\n @Getter private readonly getPlatform!: RootGetters['getPlatform']\n\n private isDisabledLink(item: IWidget) {\n return item.disabled || !item.url\n }\n\n private isShowLink(platform?: Platform | Platform[]) {\n if (Array.isArray(platform)) {\n return platform.some((item: string) => item === this.getPlatform)\n }\n\n return !platform || platform === this.getPlatform\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./WidgetsList.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./WidgetsList.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./WidgetsList.vue?vue&type=template&id=6c2daee0\"\nimport script from \"./WidgetsList.ts?vue&type=script&lang=ts&external\"\nexport * from \"./WidgetsList.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./WidgetsList.scss?vue&type=style&index=0&prod&lang=scss&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-combobox',_vm._g(_vm._b({ref:\"combobox\",attrs:{\"value\":_vm.localValue,\"items\":_vm.items,\"return-object\":false,\"autofocus\":_vm.autofocus,\"placeholder\":_vm.placeholder,\"menu-props\":{ allowOverflow: true }},on:{\"input\":_vm.onInput,\"blur\":_vm.onBlur,\"focus\":_vm.onFocus,\"update:search-input\":_vm.onUpdateSearchInput},scopedSlots:_vm._u([(_vm.selectionLabel && !_vm.isFocused)?{key:\"prepend-inner\",fn:function(){return [_c('span',{staticClass:\"combobox__selection\"},[_c('span',{staticClass:\"combobox__selection-label\"},[_vm._v(\" \"+_vm._s(_vm.selectionLabel)+\" \")])])]},proxy:true}:null],null,true)},'v-combobox',_vm.$attrs,false),_vm.localListeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Getter } from 'vuex-class'\nimport { Vue, Component, Model, Ref, Prop } from 'vue-property-decorator'\nimport { imageSources } from '@/config/image'\nimport { RootGetters } from '@/store/types'\nimport htmlToText from '@/helpers/htmlToText'\n\n@Component\nexport default class ImageSourceCombobox extends Vue {\n @Ref('combobox') private readonly comboboxRef?: {\n activateMenu: () => void\n }\n @Model('input', { type: String }) private readonly value!: string | null\n @Getter private readonly getPlatform!: RootGetters['getPlatform']\n @Prop({ type: Boolean, default: false }) private readonly autofocus!: boolean\n @Prop({ type: String, default: '' }) private readonly placeholder!: string\n @Prop({ type: String, default: '' }) private readonly selectionLabel!: string\n\n private localValue: string | null = ''\n private isFocused = false\n private lazyIsFocused = false\n private blurTimeoutId = 0\n\n private get items() {\n return imageSources({ platform: this.getPlatform })\n }\n\n private get localListeners() {\n const $listeners = { ...this.$listeners }\n\n delete $listeners['update:search-input']\n delete $listeners['input']\n delete $listeners['focus']\n delete $listeners['blur']\n\n return $listeners\n }\n\n private onUpdateSearchInput(value: string | null) {\n value = value?.trim() ?? null\n\n if (this.isFocused) {\n this.$emit('input', htmlToText(value))\n }\n this.$emit('update:search-input', value)\n }\n\n private onInput(value: string | null) {\n this.localValue = value\n\n this.$emit('input', value)\n }\n\n private onBlur(event: Event) {\n window.clearTimeout(this.blurTimeoutId)\n\n this.isFocused = false\n this.blurTimeoutId = window.setTimeout(() => {\n this.lazyIsFocused = false\n }, 1500)\n\n this.$emit('blur', event)\n }\n\n private onFocus(event: Event) {\n window.clearTimeout(this.blurTimeoutId)\n this.isFocused = true\n this.lazyIsFocused = true\n this.$emit('focus', event)\n }\n\n private created() {\n this.localValue = htmlToText(this.value)\n\n this.$watch(\n () => {\n return [this.lazyIsFocused, this.value].join('-')\n },\n () => {\n if (this.lazyIsFocused) return\n\n this.localValue = this.value\n }\n )\n }\n\n private mounted() {\n this.$watch(\n () => {\n return this.autofocus\n },\n (autofocus) => {\n if (!autofocus) return\n\n this.comboboxRef?.activateMenu()\n },\n {\n immediate: true,\n }\n )\n }\n\n private beforeDestroy() {\n window.clearTimeout(this.blurTimeoutId)\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageSourceCombobox.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageSourceCombobox.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./ImageSourceCombobox.vue?vue&type=template&id=3c4dc459&scoped=true\"\nimport script from \"./ImageSourceCombobox.ts?vue&type=script&lang=ts&external\"\nexport * from \"./ImageSourceCombobox.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./ImageSourceCombobox.scss?vue&type=style&index=0&id=3c4dc459&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c4dc459\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"table-footer d-flex align-center flex-column flex-sm-row pr-sm-10\"},[_vm._t(\"prepend\"),_c('div',{staticClass:\"table-footer__content\"},[_c('div',{staticClass:\"d-flex align-center flex-shrink-0 text-no-wrap table-footer__left\"},[_c('span',{staticClass:\"text-caption-1 blue-grey--text text--darken-3\"},[_vm._v(\" Строк на странице \")]),_c('div',{staticClass:\"table-footer__select ml-5\"},[_c('v-select',{attrs:{\"value\":_vm.itemsPerPage,\"items\":_vm.itemsPerPageOptions,\"outlined\":\"\",\"hide-details\":\"\",\"color\":\"blue-grey lighten-3\",\"append-icon\":\"$chevronDown\"},on:{\"change\":_vm.onChangeItemsPerPage}})],1)]),_c('div',{staticClass:\"d-flex align-center flex-shrink-0 text-no-wrap table-footer__right\"},[_c('span',{staticClass:\"text-caption-1 blue-grey--text text--darken-3\"},[_vm._v(\" \"+_vm._s(_vm.startLength)+\"-\"+_vm._s(_vm.endLength)+\" из \"+_vm._s(_vm.totalCount)+\" \")]),_c('div',{staticClass:\"d-flex ml-4\"},[_c('v-btn',{staticClass:\"flex-shrink-0\",attrs:{\"disabled\":_vm.disabledPrevPage,\"icon\":\"\",\"color\":\"blue-grey darken-3\"},on:{\"click\":_vm.goToPrevPage}},[_c('v-icon',{attrs:{\"size\":\"14\"}},[_vm._v(\" $chevronLeft \")])],1),_c('div',{staticClass:\"table-footer__page-field\"},[_c('v-text-field',{ref:\"pageTextField\",attrs:{\"value\":_vm.page,\"outlined\":\"\",\"hide-details\":\"\",\"color\":\"blue-grey lighten-3\"},on:{\"change\":_vm.goToPage}})],1),_c('v-btn',{staticClass:\"flex-shrink-0\",attrs:{\"disabled\":_vm.disabledNextPage,\"icon\":\"\",\"color\":\"blue-grey darken-3\"},on:{\"click\":_vm.goToNextPage}},[_c('v-icon',{attrs:{\"size\":\"14\"}},[_vm._v(\" $chevronRight \")])],1)],1)])])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Prop, Vue, Component, Ref } from 'vue-property-decorator'\nimport { setLocalItemsPerPage } from '@/helpers/localItemsPerPage'\nimport isEmpty from '@/helpers/isEmpty'\n\n@Component\nexport default class TableFooter extends Vue {\n @Ref('pageTextField') private readonly pageTextFieldRef?: {\n lazyValue: string\n }\n\n @Prop({ type: Number, default: 0 }) private readonly totalCount!: number\n @Prop({ type: Array, default: () => [10, 15, 20, 50] })\n private readonly itemsPerPageOptions!: number[]\n @Prop({ type: Number, default: 1 }) private readonly page!: number\n @Prop({ type: Number, default: 1 }) private readonly itemsPerPage!: number\n @Prop({ type: Boolean, default: false }) private readonly savedInUrl!: boolean\n\n private get totalPage() {\n return Math.ceil(this.totalCount / this.itemsPerPage)\n }\n\n private get disabledPrevPage() {\n return this.page === 1\n }\n\n private get disabledNextPage() {\n return this.totalCount === this.endLength\n }\n\n private get startLength() {\n return Math.max(this.page - 1, 0) * this.itemsPerPage + 1\n }\n\n private get endLength() {\n return Math.min(this.startLength + this.itemsPerPage - 1, this.totalCount)\n }\n\n private downloadTableData() {\n this.$emit('download:table')\n }\n\n private onChangeItemsPerPage(value: number) {\n setLocalItemsPerPage(value)\n this.goToPage(1)\n this.$emit('update:itemsPerPage', +value)\n }\n\n private goToPage(val?: number | string) {\n let page = !val || isEmpty(val) || !Number.isFinite(+val) ? 1 : +val\n\n page = Math.min(Math.max(page, 1), this.totalPage)\n\n if (this.pageTextFieldRef) {\n this.pageTextFieldRef.lazyValue = page.toString()\n }\n\n this.$emit('update:page', page)\n }\n\n private goToPrevPage() {\n this.goToPage(this.page - 1)\n }\n\n private goToNextPage() {\n this.goToPage(this.page + 1)\n }\n\n private saveParamsInUrl({\n page,\n itemsPerPage,\n }: {\n page?: number\n itemsPerPage?: number\n }) {\n if (!this.savedInUrl) {\n return\n }\n\n const newUrl = new URL(window.location.href)\n\n if (page) {\n newUrl.searchParams.set('page', page.toString())\n }\n\n if (itemsPerPage) {\n newUrl.searchParams.set('itemsPerPage', itemsPerPage.toString())\n }\n\n if (newUrl.toString() === window.location.href) {\n return\n }\n\n window.history.replaceState(null, document.title, newUrl.toString())\n }\n\n private created() {\n const pageFromQuery = +this.$route.query.page\n const itemsPerPageFromQuery = +this.$route.query.itemsPerPage\n\n const page = Number.isInteger(pageFromQuery)\n ? Math.max(pageFromQuery, 1)\n : this.page\n\n let itemsPerPage = Number.isInteger(itemsPerPageFromQuery)\n ? itemsPerPageFromQuery\n : this.itemsPerPage\n\n itemsPerPage = this.itemsPerPageOptions.includes(itemsPerPage)\n ? itemsPerPage\n : this.itemsPerPageOptions[0]\n\n if (page !== this.page) {\n this.$emit('update:page', page)\n }\n\n if (itemsPerPage !== this.itemsPerPage) {\n this.$emit('update:itemsPerPage', itemsPerPage)\n }\n\n this.$watch(\n () => this.page,\n (page) => {\n this.saveParamsInUrl({ page })\n }\n )\n\n this.$watch(\n () => this.itemsPerPage,\n (itemsPerPage) => {\n this.saveParamsInUrl({ itemsPerPage })\n }\n )\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./TableFooter.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./TableFooter.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./TableFooter.vue?vue&type=template&id=1b92379e&scoped=true\"\nimport script from \"./TableFooter.ts?vue&type=script&lang=ts&external\"\nexport * from \"./TableFooter.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./TableFooter.scss?vue&type=style&index=0&id=1b92379e&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b92379e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"date-time d-flex align-center flex-wrap\"},[_c('div',{staticClass:\"d-flex align-center\",style:({\n pointerEvents: _vm.disabled ? 'none' : undefined,\n maxWidth: _vm.maxWidth === 'none' ? 'none' : `${_vm.maxWidth}px`,\n opacity: _vm.disabled ? '0.5' : undefined,\n width: _vm.maxWidth === 'none' ? '100%' : 'auto',\n })},[_c('v-menu',{attrs:{\"close-on-content-click\":false,\"disabled\":_vm.disabled,\"attach\":_vm.attach,\"offset-y\":\"\",\"max-width\":\"290\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',{class:['date-time__date mr-2 flex-grow-1']},[_c('v-text-field',_vm._g(_vm._b({ref:\"dateInput\",attrs:{\"value\":_vm.formatedDate,\"disabled\":_vm.disabled,\"rules\":_vm.validate ? [_vm.rules.required] : undefined,\"placeholder\":!_vm.disabled ? 'Выберите дату' : undefined,\"error-messages\":_vm.errorMessages,\"readonly\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\"}},'v-text-field',attrs,false),on))],1)]}}]),model:{value:(_vm.showedDatePicker),callback:function ($$v) {_vm.showedDatePicker=$$v},expression:\"showedDatePicker\"}},[_c('DatePicker',{attrs:{\"disabled\":_vm.disabled,\"first-day-of-week\":1,\"min\":_vm.datePickerMin,\"max\":_vm.datePickerMax,\"full-width\":\"\",\"no-title\":\"\",\"locale\":\"ru-RU\",\"color\":\"deep-purple accent-4\"},on:{\"change\":_vm.onBlur},model:{value:(_vm.datePickerValue),callback:function ($$v) {_vm.datePickerValue=$$v},expression:\"datePickerValue\"}})],1),_c('div',{class:['date-time__time flex-grow-0 flex-shrink-0']},[_c('MaskInput',{attrs:{\"disabled\":_vm.disabled,\"placeholder\":!_vm.disabled ? '00:00' : undefined,\"autofocus\":_vm.autofocus,\"options\":_vm.optionMask,\"error-messages\":_vm.errorMessages,\"inputmode\":\"numeric\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"required\":\"\"},on:{\"blur\":_vm.onBlur},model:{value:(_vm.timePickerValue),callback:function ($$v) {_vm.timePickerValue=$$v},expression:\"timePickerValue\"}})],1)],1),(_vm.isShowIcon)?_c('v-menu',{attrs:{\"open-on-hover\":\"\",\"top\":\"\",\"right\":\"\",\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-3\",style:({ pointerEvents: 'auto' }),attrs:{\"icon\":\"\",\"small\":\"\",\"color\":\"error\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"size\":\"24\"}},[_vm._v(\" mdi-information-outline \")])],1)]}}],null,false,956073785)},[_c('v-card',{staticClass:\"pa-2\",style:({\n background: '#00000099',\n color: 'white',\n }),attrs:{\"flat\":\"\",\"max-width\":\"300\"}},[_c('span',[_vm._v(\" Используется московское время.\"),_c('br'),_vm._v(\" Время в Москве: \"+_vm._s(_vm.timeToInfo)+\" (GMT +3) \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.dateToInfo)+\" \")])])],1):_vm._e(),(_vm.errorMessages?.length)?_c('div',{staticClass:\"date-time__messages\"},_vm._l((_vm.errorMessages),function(errorMessage,errorMessageIndex){return _c('p',{key:errorMessageIndex,staticClass:\"error--text mb-0 mt-1 text-caption\"},[_vm._v(\" \"+_vm._s(errorMessage)+\" \")])}),0):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Mixins, Model, Prop, Ref } from 'vue-property-decorator'\nimport {\n parse as parseDate,\n format as formatDate,\n isValid as isValidDate,\n} from 'date-fns'\nimport IMask from 'imask'\nimport validTime from '@/helpers/validTime'\nimport { isMoscowTimeZone } from '@/helpers/timeZone'\nimport MoscowTimeMixin from '@/mixins/moscow-time.mixin'\n\n@Component\nexport default class DateTime extends Mixins(MoscowTimeMixin) {\n @Ref('dateInput') private readonly dateInputRef!: {\n focus: () => void\n }\n @Model('change', { type: String, default: '' })\n private readonly dateValue!: string\n @Prop({ type: Boolean, default: false }) private readonly validate!: boolean\n @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean\n @Prop({ type: Boolean, default: true }) private readonly attach!: boolean\n @Prop({ type: [Number, String], default: '284' })\n private readonly maxWidth!: number | string\n @Prop({ type: String })\n private readonly maxDate?: string\n @Prop({ type: String })\n private readonly minDate?: string\n @Prop({ type: Boolean, default: false }) private readonly autofocus!: boolean\n @Prop({ type: Boolean, default: true }) private readonly isShowInfo!: boolean\n @Prop({ type: Array }) private readonly errorMessages?: string[]\n\n private showedDatePicker = false\n\n private optionMask = {\n mask: 'HH:MM',\n overwrite: true,\n lazy: false,\n blocks: {\n HH: {\n mask: IMask.MaskedRange,\n placeholderChar: '0',\n from: 0,\n to: 23,\n maxLength: 2,\n },\n MM: {\n mask: IMask.MaskedRange,\n placeholderChar: '0',\n from: 0,\n to: 59,\n maxLength: 2,\n },\n },\n }\n\n private get isShowIcon() {\n return this.isShowInfo && !isMoscowTimeZone\n }\n\n private get rules() {\n return {\n required: (v: string) => !!v,\n time: (v: string) => validTime(v),\n }\n }\n\n private get parsedDate() {\n const date = this.dateValue\n ? parseDate(this.dateValue, 'yyyy-MM-dd HH:mm:ss', new Date())\n : null\n\n return date && isValidDate(date) ? date : null\n }\n\n private set parsedDate(val) {\n const dateValue = val ? formatDate(val, 'yyyy-MM-dd HH:mm:ss') : null\n\n this.$emit('change', dateValue)\n }\n\n private get formatedDate() {\n return this.parsedDate?.toLocaleString('ru-RU', {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n }\n\n private get datePickerValue() {\n return this.parsedDate && formatDate(this.parsedDate, 'yyyy-MM-dd')\n }\n\n private set datePickerValue(val) {\n if (val) {\n const date = parseDate(val, 'yyyy-MM-dd', new Date())\n const [hourStr, minuteStr] = this.timePickerValue?.split(':') || []\n const hour = +hourStr\n const minute = +minuteStr\n\n if (!isNaN(hour)) {\n date.setHours(hour)\n }\n\n if (!isNaN(minute)) {\n date.setMinutes(minute)\n }\n\n this.parsedDate = date\n } else {\n this.parsedDate = null\n }\n }\n\n private get timeToInfo() {\n return (\n this.moscowTime.toLocaleString('ru-RU', {\n hour: 'numeric',\n minute: 'numeric',\n }) || ''\n )\n }\n\n private get dateToInfo() {\n return this.moscowTime.toLocaleString('ru-RU', {\n weekday: 'short',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n }\n\n private get timePickerValue() {\n return (\n this.parsedDate?.toLocaleString('ru-RU', {\n hour: 'numeric',\n minute: 'numeric',\n }) || ''\n )\n }\n\n private set timePickerValue(timeString) {\n if (!this.parsedDate || !timeString) return\n\n const date = new Date(this.parsedDate.getTime())\n const [hourStr, minuteStr] = timeString.split(':')\n\n const hour = +hourStr\n const minute = +minuteStr\n\n if (!isNaN(hour)) {\n date.setHours(Math.min(Math.max(0, hour), 23))\n }\n\n if (!isNaN(minute)) {\n date.setMinutes(Math.min(Math.max(0, minute), 59))\n }\n\n this.parsedDate = date\n }\n\n private get datePickerMin() {\n if (!this.minDate) return\n\n return formatDate(\n parseDate(this.minDate, 'yyyy-MM-dd HH:mm:ss', new Date()),\n 'yyyy-MM-dd'\n )\n }\n\n private get datePickerMax() {\n if (!this.maxDate) return\n\n return formatDate(\n parseDate(this.maxDate, 'yyyy-MM-dd HH:mm:ss', new Date()),\n 'yyyy-MM-dd'\n )\n }\n\n private onBlur() {\n this.$emit('blur')\n this.showedDatePicker = false\n }\n\n private focus() {\n this.dateInputRef.focus()\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./DateTime.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./DateTime.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./DateTime.vue?vue&type=template&id=1ed3cf62&scoped=true\"\nimport script from \"./DateTime.ts?vue&type=script&lang=ts&external\"\nexport * from \"./DateTime.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./DateTime.scss?vue&type=style&index=0&id=1ed3cf62&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ed3cf62\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:[\n 'image-uploader',\n `image-uploader_place_${_vm.place}`,\n\n {\n 'image-uploader_invalid': _vm.error,\n 'image-uploader_valid': !_vm.error,\n 'image-uploader_rounded': _vm.rounded,\n 'image-uploader-disabled': _vm.disabled,\n },\n ],style:({ '--aspect-ratio': _vm.aspectRatio }),on:{\"dragover\":_vm.onDragover,\"dragleave\":_vm.onDragleave,\"drop\":_vm.onDrop}},[_vm._t(\"prepend\"),(_vm.uploaderVisible)?[(_vm.title)?_c('h4',{staticClass:\"image-uploader__title blue-grey--text text--darken-3\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_vm._e(),_c('div',{class:[\n 'image-uploader-zone',\n `image-uploader-zone_${_vm.place}`,\n {\n 'image-uploader-zone_dragged': _vm.dragged,\n },\n ]},[_c('div',{staticClass:\"image-uploader-zone__inner text-center pa-3\"},[(_vm.isShowSpinner)?_c('v-progress-circular',{attrs:{\"size\":_vm.iconSize,\"indeterminate\":\"\",\"color\":\"blue-grey lighten-1\",\"width\":\"1\"}}):_c('v-icon',{attrs:{\"size\":_vm.iconSize,\"color\":\"blue-grey lighten-1\"}},[_vm._v(\" mdi-wallpaper \")]),(!_vm.hideChangeButton)?_c('div',{staticClass:\"image-uploader-zone__button-zone\"},[_c('div',{class:[\n 'blue-grey--text',\n 'text--darken-2',\n 'font-weight-regular',\n {\n 'text-body-2': ![\n 'new-expert-widget',\n 'new-adv-expert-widget',\n ].includes(_vm.place),\n 'text-caption-1': [\n 'new-expert-widget',\n 'new-adv-expert-widget',\n ].includes(_vm.place),\n 'text-caption-2': ['new-adv-expert-widget'].includes(_vm.place),\n 'mt-2': !['new-adv-expert-widget'].includes(_vm.place),\n },\n ]},[_vm._v(\" \"+_vm._s(['new-expert-widget', 'new-adv-expert-widget'].includes(_vm.place) ? 'Загрузить изображение' : 'Чтобы загрузить изображение')+\" \")]),_c('v-btn',{staticClass:\"font-weight-bold mt-2 image-uploader__upload-button\",attrs:{\"outlined\":\"\",\"small\":\"\",\"color\":\"deep-purple\",\"height\":\"24\"}},[_c('input',{key:_vm.inputFileKey,attrs:{\"accept\":_vm.localAcceptFiles.join(','),\"multiple\":\"\",\"type\":\"file\"},on:{\"change\":_vm.onChangeFile}}),_vm._v(\" выберите файл \")])],1):_vm._e(),_c('div',{class:[\n 'image-uploader-zone__input-zone',\n 'blue-grey--text',\n 'text--darken-2',\n {\n 'text-body-2 mt-4 px-2': ![\n 'citation-widget',\n 'new-expert-widget',\n 'new-adv-expert-widget',\n 'video-preview',\n 'video-edit-preview',\n 'native-post',\n ].includes(_vm.place),\n },\n ]},[_vm._v(\" Перетащите картинку сюда или \"),_c('label',{staticClass:\"image-uploader-zone__file-input deep-purple--text\"},[_vm._v(\" выберите \"),(_vm.place === 'citation-widget')?_c('br'):_vm._e(),_vm._v(\" файл \"),_c('input',{key:_vm.inputFileKey,attrs:{\"accept\":_vm.localAcceptFiles.join(','),\"multiple\":\"\",\"type\":\"file\"},on:{\"change\":_vm.onChangeFile}})])])],1)]),(_vm.localInfoText)?_c('p',{staticClass:\"image-uploader__info text-center blue-grey--text text--lighten-2 mt-2 mb-0 font-weight-500\"},[_vm._v(\" \"+_vm._s(_vm.localInfoText)+\" \")]):_vm._e()]:_vm._e(),(!_vm.uploaderVisible)?_vm._t(\"image\"):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Component from 'vue-class-component'\nimport { Prop } from 'vue-property-decorator'\nimport uniqCid from '@/helpers/uniqCid'\n\nimport { SizeImage } from '@/types/image'\nimport SiriusAPI from '@/api'\n\n@Component({\n inheritAttrs: false,\n})\nexport default class ImageUploader extends Vue {\n @Prop({ type: Boolean, default: false }) private readonly loading!: boolean\n @Prop({ type: Boolean, default: false }) private readonly rounded!: boolean\n @Prop({ type: Boolean, default: true })\n private readonly uploaderVisible!: boolean\n\n @Prop({ type: String, default: '' }) private readonly title!: string\n @Prop({ type: Array }) private readonly acceptFiles!: string[]\n @Prop({ type: String, default: '' }) private readonly infoText!: string\n @Prop({ type: Boolean, default: false })\n private readonly hiddenInfoText!: string\n @Prop({ type: String, default: 'content' })\n private readonly place!: string\n @Prop({ type: Number, default: 0 }) private readonly minWidth!: number\n @Prop({ type: Number, default: 0 }) private readonly minHeight!: number\n @Prop({ type: Number, default: 15728640 }) private maxSize!: number\n @Prop({ type: Boolean, default: false }) private readonly error!: boolean\n @Prop({ type: Function, default: null })\n private readonly uploadFunction!: (payload: { file: File }) => void\n @Prop({ type: Boolean, default: false })\n private readonly hideChangeButton!: boolean\n @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean\n @Prop({ type: Number }) private readonly aspectRatio?: number\n @Prop({ type: Boolean, default: false })\n private readonly imageDinamicAspectRatio!: boolean\n\n private dragged = false\n private checking = false\n private pendingRequests: number[] = []\n private inputFileKey = Date.now()\n\n private get isShowSpinner() {\n return this.pendingRequests.length > 0 || this.checking || this.loading\n }\n\n private get localAcceptFiles() {\n return Array.isArray(this.acceptFiles)\n ? this.acceptFiles\n : ['image/jpeg', 'image/gif', 'image/png']\n }\n\n private get iconSize() {\n if (this.place === 'new-expert-widget') {\n return 24\n }\n\n if (this.place === 'new-adv-expert-widget') {\n return this.$vuetify.breakpoint.lgAndUp ? 32 : 24\n }\n\n if (this.place === 'content') {\n return this.$vuetify.breakpoint.xsOnly ? 24 : 40\n }\n\n if (this.place === 'verstka-editor') {\n return this.$vuetify.breakpoint.xsOnly ? 24 : 40\n }\n\n if (this.place === 'popup-page') {\n return this.$vuetify.breakpoint.smAndDown ? 24 : 40\n }\n\n if (this.place === 'native-post') {\n return this.$vuetify.breakpoint.xsOnly ? 32 : 40\n }\n\n if (this.place === 'citation-widget') {\n return 40\n }\n\n if (this.place === 'media-library' || this.place === 'video-preview') {\n return 30\n }\n\n return this.$vuetify.breakpoint.xsOnly ? 24 : 40\n }\n\n private get localInfoText() {\n if (this.hiddenInfoText) return ''\n\n if (this.infoText) return this.infoText\n\n if (!this.minWidth && !this.minHeight) return ''\n\n const infoParts = ['Формат изображения — JPG, PNG, GIF']\n\n if (this.imageDinamicAspectRatio) {\n infoParts.push(\n `картинка может быть любой пропорции, но ширина изображения должна быть не менее ${this.minWidth} пикселей, а высота - не менее ${this.minHeight} пикселей`\n )\n } else {\n infoParts.push(`минимальные размеры — ${this.minWidth}x${this.minHeight}`)\n }\n\n infoParts.push(\n `максимальный вес — ${(this.maxSize / 1024 / 1024).toLocaleString(\n 'ru-RU'\n )} Mb`\n )\n\n return `${infoParts.join('; ')}.`\n }\n\n private onDragover(e: DragEvent) {\n e.preventDefault()\n\n this.dragged = true\n }\n\n private onDragleave(e: DragEvent) {\n e.preventDefault()\n this.dragged = false\n }\n\n private async onDrop(e: DragEvent) {\n e.preventDefault()\n this.dragged = false\n const imageJSON = e.dataTransfer?.getData('siriusImage')\n const image = imageJSON && (JSON.parse(imageJSON) as SizeImage)\n\n if (image) {\n this.$emit('load:start')\n this.checking = true\n\n const checked = await this.checkImg(image)\n\n if (checked) {\n await this.setImage(image)\n }\n\n this.checking = false\n } else if (e.dataTransfer?.files.length) {\n this.setFiles(Array.from(e.dataTransfer.files))\n }\n }\n\n private onChangeFile(e: Event) {\n const inputFile = e.target as HTMLInputElement\n\n if (!inputFile.files) return\n\n this.setFiles(Array.from(inputFile.files))\n }\n\n private async setFiles(files: File[]) {\n this.inputFileKey++\n this.$emit('load:start')\n for (const file of files) {\n await this.setFile(file)\n }\n }\n\n private async checkFile(file: File | null) {\n return await new Promise((resolve) => {\n if (\n !file ||\n !this.localAcceptFiles.includes(file.type) ||\n file.size > this.maxSize\n ) {\n this.$notify({\n type: 'error',\n title: 'Размер картинки больше рекомендуемого',\n })\n // resolve(false)\n resolve(true)\n } else {\n resolve(true)\n }\n })\n }\n\n private checkImg(value: string | SizeImage) {\n return new Promise((resolve) => {\n if (!this.minWidth && !this.minHeight) {\n resolve(true)\n\n return\n }\n\n const check = ({ width, height }: { width: number; height: number }) => {\n const correctImg = width >= this.minWidth && height >= this.minHeight\n\n if (!correctImg) {\n this.$notify({\n type: 'error',\n title: 'Размер загруженной картинки меньше рекомендуемого',\n })\n }\n\n // resolve(correctImg)\n resolve(true)\n }\n\n if (typeof value === 'string') {\n const img = new Image()\n\n img.src = value\n\n img.onload = () => {\n check({\n width: img.width,\n height: img.height,\n })\n }\n\n img.onerror = () => {\n resolve(false)\n }\n } else {\n check({\n width: value.width,\n height: value.width,\n })\n }\n })\n }\n\n private async addImage(file: File) {\n if (!file) return\n\n const requestId = uniqCid()\n\n this.pendingRequests.push(requestId)\n\n const data = new FormData()\n\n data.append('file', file)\n\n const fileName = file.name\n\n try {\n if (this.uploadFunction) {\n await this.uploadFunction({\n file,\n })\n } else {\n const { item } = await SiriusAPI.image.addImage({ file: data })\n await this.setImage(item)\n }\n } catch (err) {\n this.$notify({\n type: 'error',\n title: `Произошла ошибка при загрузке изображения ${fileName}`,\n })\n console.error(err)\n } finally {\n this.pendingRequests = this.pendingRequests.filter(\n (id) => id !== requestId\n )\n }\n }\n\n private setImage(\n value: Omit &\n Partial>\n ) {\n return new Promise((resolve) => {\n if (value.width && value.height) {\n this.$emit('load', value)\n\n resolve(null)\n\n return\n }\n\n const img = new Image()\n\n img.src = value.url\n\n img.onload = () => {\n this.$emit('load', {\n ...value,\n width: img.width,\n height: img.height,\n })\n\n resolve(null)\n }\n })\n }\n\n private async setFile(file: File | null) {\n if (!file) return\n\n this.checking = true\n\n try {\n const checkedFile = await this.checkFile(file)\n const objectURL = URL.createObjectURL(file)\n const checkedImg = checkedFile && (await this.checkImg(objectURL))\n\n const checked = checkedFile && checkedImg\n\n URL.revokeObjectURL(objectURL)\n\n if (checked) {\n await this.addImage(file)\n }\n } finally {\n this.checking = false\n }\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageUploader.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageUploader.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./ImageUploader.vue?vue&type=template&id=d5d62b8c&scoped=true\"\nimport script from \"./ImageUploader.ts?vue&type=script&lang=ts&external\"\nexport * from \"./ImageUploader.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./ImageUploader.scss?vue&type=style&index=0&id=d5d62b8c&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d5d62b8c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-breadcrumbs',{staticClass:\"breadcrumbs px-2\",attrs:{\"items\":_vm.breadcrumbsItems},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-breadcrumbs-item',{attrs:{\"to\":item.to,\"exact\":item.exact,\"disabled\":item.disabled,\"link\":item.link}},[_c('span',{staticClass:\"blue-grey--text text--darken-3 text-truncate\",class:{ 'op-65': item.disabled },style:({ maxWidth: '183px' })},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])]}},{key:\"divider\",fn:function(){return [_c('v-icon',[_vm._v(\"mdi-chevron-right\")])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { BreadCrumb } from '@/types/breadCrumb'\nimport { RootGetters } from '@/store/types'\nimport { Component, Vue } from 'vue-property-decorator'\n\nimport { Getter } from 'vuex-class'\nimport { platformsSettings } from '@/config/platformConfig'\nimport { articleModule, podcastModule, episodeModule } from '@/store/namespaces'\nimport { ArticleGetters } from '@/store/modules/article/types'\nimport { PodcastGetters } from '@/store/modules/podcast/types'\nimport { EpisodeGetters } from '@/store/modules/episode/types'\nimport htmlToText from '@/helpers/htmlToText'\n\n@Component\nexport default class BreadCrumbs extends Vue {\n @articleModule.Getter('articleName')\n private readonly articleNameGetter!: ArticleGetters['articleName']\n @podcastModule.Getter('podcastName')\n private readonly podcastNameGetter!: PodcastGetters['podcastName']\n @episodeModule.Getter('episodeName')\n private readonly episodeNameGetter!: EpisodeGetters['episodeName']\n @Getter private readonly getPlatform!: RootGetters['getPlatform']\n\n private get platformParams() {\n return platformsSettings.find(\n (platform) => platform.slug === this.getPlatform\n )\n }\n\n private get breadcrumbsItems() {\n const countVisible = 3\n const breadcrumbs = this.$route.path\n .replace(/\\/$/, '')\n .replace(/^\\//, '')\n .split('/')\n .reduce((acc: BreadCrumb[], item, index, arr) => {\n const path = `/${arr.slice(0, index + 1).join('/')}`\n const to = this.$router.resolve({ path }).resolved\n const text: string | undefined = to.meta?.breadcrumb?.name\n\n if (typeof text === 'string') {\n acc.push({\n text,\n link: true,\n disabled: index === arr.length - 1,\n to,\n exact: true,\n })\n }\n return acc\n }, [])\n\n // Срез до последних элеменов массива крошек\n const items = breadcrumbs.slice(\n Math.max(breadcrumbs.length - countVisible, 0),\n breadcrumbs.length\n )\n\n const routeNameMapConfig: Record = {\n content_article: this.articleNameGetter,\n content_podcast: this.podcastNameGetter,\n content_episode: this.episodeNameGetter,\n }\n\n const articleNameGetter =\n this.$route.name && routeNameMapConfig[this.$route.name]\n ? htmlToText(routeNameMapConfig[this.$route.name])\n : ''\n\n if (articleNameGetter) {\n items.push({\n text: articleNameGetter,\n link: true,\n disabled: true,\n to: undefined,\n })\n }\n\n return items\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./BreadCrumbs.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./BreadCrumbs.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=780b4896&scoped=true\"\nimport script from \"./BreadCrumbs.ts?vue&type=script&lang=ts&external\"\nexport * from \"./BreadCrumbs.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./BreadCrumbs.scss?vue&type=style&index=0&id=780b4896&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"780b4896\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._t(\"default\"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasMore && _vm.showedLoader),expression:\"hasMore && showedLoader\"}],ref:\"loader\",staticClass:\"text-center py-5\"},[_c('v-progress-circular',{attrs:{\"size\":30,\"indeterminate\":\"\",\"width\":\"2\",\"color\":\"primary\"}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue, Component, Ref, Prop } from 'vue-property-decorator'\n\n@Component\nexport default class InfiniteScroll extends Vue {\n @Ref('loader') private readonly loaderRef?: HTMLDivElement\n @Prop({ type: Boolean, default: true }) private readonly hasMore!: boolean\n @Prop({ type: Function, required: true })\n private readonly loadMoreFunc!: () => Promise\n\n private showedLoader = true\n\n private mounted() {\n let observeTimeoutId = 0\n\n const loaderObserver = new IntersectionObserver(\n async ([{ isIntersecting }]) => {\n if (!isIntersecting) return\n\n if (this.loaderRef) {\n loaderObserver.unobserve(this.loaderRef)\n }\n\n try {\n await this.loadMoreFunc()\n\n if (this.loaderRef) {\n loaderObserver.observe(this.loaderRef)\n }\n } catch (error) {\n this.showedLoader = false\n console.error(error)\n }\n },\n {\n threshold: 0,\n }\n )\n\n this.$watch(\n () => {\n return this.showedLoader\n },\n (showedLoader) => {\n window.clearTimeout(observeTimeoutId)\n\n observeTimeoutId = window.setTimeout(() => {\n if (!this.loaderRef) return\n\n if (showedLoader) {\n loaderObserver.observe(this.loaderRef)\n } else {\n loaderObserver.unobserve(this.loaderRef)\n }\n }, 10)\n },\n {\n immediate: true,\n }\n )\n\n this.$once('hook:beforeDestroy', () => {\n window.clearTimeout(observeTimeoutId)\n loaderObserver.disconnect()\n })\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./InfiniteScroll.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./InfiniteScroll.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./InfiniteScroll.vue?vue&type=template&id=3af931ed\"\nimport script from \"./InfiniteScroll.ts?vue&type=script&lang=ts&external\"\nexport * from \"./InfiniteScroll.ts?vue&type=script&lang=ts&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._t(\"default\"),_c('span',{class:[\n 'text-caption-1 d-block mt-1 text-none font-weight-regular',\n {\n 'blue-grey--text text--lighten-2': _vm.count >= 0,\n 'red--text': _vm.count < 0,\n },\n ]},[_vm._v(\" \"+_vm._s(_vm.counterInfo)+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Prop, Component, Vue } from 'vue-property-decorator'\nimport capitalizeFirstLetter from '@/helpers/capitalizeFirstLetter'\nimport numWord from '@/helpers/numWord'\nimport getCountLetters from '@/helpers/getCountLetters'\nimport debounce from 'lodash.debounce'\n\n@Component\nexport default class CounterValue extends Vue {\n @Prop({ type: String, default: '' }) private readonly value!: string\n @Prop({ type: Number, default: 25 }) private readonly maxlength!: number\n\n private count = 0\n\n private get counterInfo() {\n return `${capitalizeFirstLetter(\n numWord(this.count, ['остался', 'осталось', 'осталось'])\n )} ${this.count} ${numWord(this.count, ['символ', 'символа', 'символов'])}`\n }\n\n private mounted() {\n const debouncedChangeCount = debounce(\n (value: string) => {\n this.count = this.maxlength - getCountLetters(value)\n },\n 150,\n { maxWait: 150 }\n )\n\n this.$watch(\n () => {\n return this.value\n },\n debouncedChangeCount,\n { immediate: true }\n )\n\n this.$once('hook:beforeDestroy', () => {\n debouncedChangeCount.cancel()\n })\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./CounterValue.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./CounterValue.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./CounterValue.vue?vue&type=template&id=3767c650\"\nimport script from \"./CounterValue.ts?vue&type=script&lang=ts&external\"\nexport * from \"./CounterValue.ts?vue&type=script&lang=ts&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',_vm._g(_vm._b({ref:\"autocomplete\",attrs:{\"attach\":_vm.attach},on:{\"focus\":_vm.onFocus},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slotName){return {key:slotName,fn:function(scope){return [_vm._t(slotName,null,null,scope)]}}})],null,true)},'v-autocomplete',_vm.$attrs,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue, Component, Prop, Ref } from 'vue-property-decorator'\n\n@Component({\n inheritAttrs: false,\n})\nexport default class BaseAutocomplete extends Vue {\n @Ref('autocomplete') private readonly autocompleteRef?: {\n focus: () => void\n setValue: (value: T) => void\n }\n\n @Prop({ type: String }) private readonly attach?: string\n @Prop({ type: Boolean })\n private readonly autoScrollIntoViewActive!: boolean\n @Prop({ type: Number }) private readonly autoScrollIntoViewOffsetTop?: number\n\n private autoScrollIntoViewTimeoutId = 0\n\n private getScrollParentEl(node: HTMLElement | null): HTMLElement | null {\n if (!node) {\n return null\n }\n\n if (node.scrollHeight > node.clientHeight) {\n return node\n }\n\n if (node.parentElement) {\n return this.getScrollParentEl(node.parentElement)\n }\n\n return null\n }\n\n private focus() {\n this.autocompleteRef?.focus()\n }\n\n private setValue(value: T) {\n this.autocompleteRef?.setValue(value)\n }\n\n private onFocus() {\n console.log('onFocus')\n this.autoScrollIntoView()\n }\n\n private autoScrollIntoView() {\n window.clearTimeout(this.autoScrollIntoViewTimeoutId)\n\n if (!this.autoScrollIntoViewActive) {\n return\n }\n\n const targetEl = this.$el as HTMLElement\n const scrollParentEl = this.getScrollParentEl(targetEl)\n\n if (!scrollParentEl) {\n return\n }\n\n const targetRect = targetEl.getBoundingClientRect()\n const containerRect = scrollParentEl.getBoundingClientRect()\n\n const autoScrollIntoViewOffsetTop = this.autoScrollIntoViewOffsetTop ?? 0\n\n const scrollTo =\n targetRect.top -\n containerRect.top +\n scrollParentEl.scrollTop -\n autoScrollIntoViewOffsetTop\n\n this.autoScrollIntoViewTimeoutId = window.setTimeout(() => {\n scrollParentEl.scrollTo({\n top: scrollTo,\n behavior: 'smooth',\n })\n }, 200)\n }\n\n private beforeDestroy() {\n window.clearTimeout(this.autoScrollIntoViewTimeoutId)\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./BaseAutocomplete.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./BaseAutocomplete.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./BaseAutocomplete.vue?vue&type=template&id=4f03d9ba\"\nimport script from \"./BaseAutocomplete.ts?vue&type=script&lang=ts&external\"\nexport * from \"./BaseAutocomplete.ts?vue&type=script&lang=ts&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{staticClass:\"confirm-dialog\",attrs:{\"max-width\":_vm.maxWidth,\"persistent\":\"\"},model:{value:(_vm.showed),callback:function ($$v) {_vm.showed=$$v},expression:\"showed\"}},[_c('v-card',[_c('v-card-title',[_vm._t(\"title\")],2),_c('v-card-text',{staticClass:\"blue-grey--text text-center pa-0\"},[_vm._t(\"text\")],2),_c('div',{staticClass:\"d-flex px-4 pb-4 align-center justify-center confirm-dialog__actions\"},[_c('v-btn',{staticClass:\"font-weight-bold confirm-dialog__btn\",attrs:{\"loading\":_vm.confirmButtonProps.loading,\"disabled\":_vm.confirmButtonProps.disabled,\"elevation\":\"0\",\"color\":\"primary\",\"height\":_vm.confirmButtonProps.height},on:{\"click\":_vm.confirmButtonProps.onClick}},[_vm._v(\" \"+_vm._s(_vm.confirmButtonProps.text)+\" \")]),_c('v-btn',{staticClass:\"font-weight-bold confirm-dialog__btn\",attrs:{\"loading\":_vm.cancelButtonProps.loading,\"disabled\":_vm.cancelButtonProps.disabled,\"outlined\":\"\",\"color\":\"error\",\"height\":_vm.cancelButtonProps.height},on:{\"click\":_vm.cancelButtonProps.onClick}},[_vm._v(\" \"+_vm._s(_vm.cancelButtonProps.text)+\" \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue, Component, Prop, Model } from 'vue-property-decorator'\n\ninterface ButtonProps {\n text: string\n onClick: () => void\n height: string\n loading?: boolean\n disabled?: boolean\n}\n\n@Component\nexport default class ConfirmDialog extends Vue {\n @Model('input', { type: Boolean, default: false })\n private readonly showed!: boolean\n\n @Prop({ type: String, default: '360' }) private maxWidth!: string\n @Prop({ type: Object, required: true })\n private readonly confirmButtonProps!: ButtonProps\n @Prop({ type: Object, required: true })\n private readonly cancelButtonProps!: ButtonProps\n\n private get isMobile() {\n return this.$vuetify.breakpoint.smAndDown\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ConfirmDialog.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ConfirmDialog.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./ConfirmDialog.vue?vue&type=template&id=7d26e69f&scoped=true\"\nimport script from \"./ConfirmDialog.ts?vue&type=script&lang=ts&external\"\nexport * from \"./ConfirmDialog.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./ConfirmDialog.scss?vue&type=style&index=0&id=7d26e69f&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d26e69f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',_vm._g(_vm._b({staticClass:\"data-table\",attrs:{\"headers\":_vm.headers,\"footer-props\":{\n ..._vm.$attrs.footerProps,\n itemsPerPageOptions: !_vm.hideFooter ? [10, 15, 20, 50] : [-1],\n },\"page\":_vm.localPage,\"items-per-page\":_vm.localItemsPerPage,\"mobile-breakpoint\":960,\"hide-default-footer\":\"\"},on:{\"update:page\":_vm.onUpdatePage,\"update:items-per-page\":_vm.onUpdateItemsPerPage},scopedSlots:_vm._u([{key:`item._title`,fn:function({ item }){return [_c('div',{staticClass:\"d-flex flex-column flex-md-row\"},[_vm._t(\"info.avatar\",null,{\"item\":item}),_c('div',{staticClass:\"data-table__main\",style:({ width: _vm.widgetSelect ? '100%' : '' })},[_vm._t(\"info.before\",null,{\"item\":item}),_c('div',{class:{ 'd-flex flex-grow-1': _vm.widgetSelect },style:({ width: _vm.widgetSelect ? '100%' : '' })},[(!_vm.hideEditItem)?_c('div',{staticClass:\"text-start\"},[(!_vm.hiddenEditTooltipText && _vm.editTooltipText)?_c('v-tooltip',{attrs:{\"nudge-right\":_vm.editTooltipNudeRight,\"left\":\"\",\"nudge-top\":\"30\",\"open-delay\":\"150\",\"close-delay\":\"100\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('div',{staticClass:\"text-subtitle-2 data-table__title cursor-pointer my-1 font-weight-bold blue-grey--text text--darken-3\",on:{\"click\":function($event){return _vm.$emit('edit:item', item)}}},[_vm._t(\"edit\",null,{\"item\":item})],2)])]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.editTooltipText))])]):_c('div',{staticClass:\"text-subtitle-2 data-table__title my-1 font-weight-bold blue-grey--text text--darken-3\",on:{\"click\":function($event){return _vm.$emit('edit:item', item)}}},[_vm._t(\"edit\",null,{\"item\":item})],2),_vm._t(\"edit.after\",null,{\"item\":item})],2):_vm._e(),(_vm.$scopedSlots['view'] || _vm.$scopedSlots['view.after'])?_c('div',{class:[\n 'd-flex flex-wrap align-center text-left',\n { 'flex-grow-1': _vm.widgetSelect },\n ]},[(!_vm.hideViewItem)?_c('div',{staticClass:\"flex-shrink-0\"},[(_vm.viewTooltipText)?_c('v-tooltip',{attrs:{\"left\":\"\",\"nudge-right\":_vm.viewTooltipNudeRight,\"nudge-top\":\"30\",\"open-delay\":\"150\",\"close-delay\":\"100\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('div',{staticClass:\"data-table__id font-weight-500 blue-grey--text text-caption-2 mr-3 mb-2 cursor-pointer\",on:{\"click\":function($event){return _vm.$emit('view:item', item)}}},[_vm._t(\"view\",null,{\"item\":item})],2)])]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.viewTooltipText))])]):_c('div',{staticClass:\"data-table__id font-weight-500 blue-grey--text text-caption-2 mr-3 mb-2\",on:{\"click\":function($event){return _vm.$emit('view:item', item)}}},[_vm._t(\"view\",null,{\"item\":item})],2)],1):_vm._e(),_c('div',{class:[\n 'blue-grey--text text-caption-2 mb-2 mr-3',\n { 'flex-grow-1': _vm.widgetSelect },\n ]},[_vm._t(\"view.after\",null,{\"item\":item})],2)]):_vm._e()])],2)],2)]}},_vm._l((_vm.localScopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [(_vm.lastSlotName.header === slot)?_c('div',{key:slot,staticClass:\"d-flex justify-end\"},[_c('div',{staticClass:\"flex-shrink-1 flex-grow-0\"},[(_)?_vm._t(slot,null,null,scope):_c('span',[_vm._v(\" \"+_vm._s(scope.header.text))])],2)]):(_vm.lastSlotName.item === slot)?_c('div',{key:slot,staticClass:\"d-flex justify-end\"},[(_)?_c('div',{staticClass:\"flex-shrink-1 flex-grow-0\"},[_vm._t(slot,null,null,scope)],2):_c('div',{staticClass:\"flex-shrink-1 flex-grow-0\"},[_vm._v(\" \"+_vm._s(scope.value)+\" \")])]):_vm._t(slot,null,null,scope)]}}}),{key:`item._actions`,fn:function({ item }){return [_c('v-lazy',[_c('div',{staticClass:\"d-flex justify-end text-no-wrap mb-sm-0\",class:{ 'data-table__actions': _vm.isWidget }},[_vm._t(\"actions.before\",null,{\"item\":item}),_c('ConfirmDeleteDialog',{attrs:{\"disabled\":_vm.localDisabledDelete,\"dialogTitle\":_vm.deleteTitle(item),\"settings\":_vm.popUpDeleteSettings,\"icon\":\"\"},on:{\"confirmed:delete\":function($event){return _vm.$emit('delete:item', item)}}})],2)])]}},(!_vm.hideFooter)?{key:\"footer\",fn:function({\n on,\n options,\n props: {\n itemsPerPageOptions,\n pagination: { itemsLength },\n },\n }){return [_c('TableFooter',{attrs:{\"total-count\":itemsLength,\"page\":_vm.localPage,\"items-per-page\":_vm.localItemsPerPage,\"items-per-page-options\":itemsPerPageOptions,\"saved-in-url\":_vm.savedOptionsInUrl},on:{\"update:page\":_vm.onUpdatePage,\"update:itemsPerPage\":function($event){return on['update:options']({ ...options, itemsPerPage: $event })}}})]}}:null],null,true)},'v-data-table',_vm.$attrs,false),_vm.localListeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Component from 'vue-class-component'\nimport { Prop } from 'vue-property-decorator'\nimport { deleteSettingsPopup } from '@/config/settingsPopup'\nimport { userModule } from '@/store/namespaces'\nimport { UserGetters } from '@/store/modules/user/types'\n\n@Component({\n inheritAttrs: false,\n})\nexport default class DataTable extends Vue {\n @Prop({ type: Array, required: true }) private readonly headers!: {\n value: string\n align?: string\n }[]\n @Prop({ type: String, default: 'id' }) private readonly viewItemKey!: string\n @Prop({ type: Boolean, default: false }) private hideViewItem!: boolean\n @Prop({ type: Boolean, default: false }) private hideEditItem!: boolean\n @Prop({ type: Boolean, default: false }) private widgetSelect!: boolean\n @Prop({ type: Boolean, default: false }) private hideFooter!: boolean\n @Prop({ type: Boolean, default: undefined })\n private savedOptionsInUrl?: boolean\n\n @userModule.Getter private readonly userIsAdmin!: UserGetters['userIsAdmin']\n\n @Prop({ type: String, default: 'Редактировать' })\n private editTooltipText!: string\n @Prop({ type: Boolean, default: false })\n private hiddenEditTooltipText!: boolean\n @Prop({ type: String, default: 'Просмотр на сайте' })\n private viewTooltipText!: string\n @Prop({ type: Number, default: 143 })\n private readonly editTooltipNudeRight!: number\n @Prop({ type: Number, default: 170 })\n private readonly viewTooltipNudeRight!: number\n @Prop({ type: Boolean, default: null })\n private readonly disabledDelete!: boolean\n @Prop({ type: Number }) private readonly page?: number\n @Prop({ type: Number }) private readonly itemsPerPage?: number\n\n private localPage = 1\n private localItemsPerPage = 10\n\n private get localListeners() {\n const $listeners = { ...this.$listeners }\n\n delete $listeners['update:page']\n delete $listeners['update:items-per-page']\n\n return $listeners\n }\n\n private get localDisabledDelete() {\n return this.disabledDelete ?? !this.userIsAdmin\n }\n\n private get lastSlotName() {\n const lastHeader =\n this.headers.length > 1 ? this.headers[this.headers.length - 1] : null\n\n return lastHeader?.value\n ? {\n item: `item.${lastHeader.value}`,\n header: `header.${lastHeader.value}`,\n }\n : null\n }\n\n private get popUpDeleteSettings() {\n return deleteSettingsPopup\n }\n\n private deleteTitle(item: any) {\n // ToDo: продумать, как передавать динамически через родительский компонент\n const name =\n item.name ||\n item.title ||\n [item.first_name, item.last_name].filter((v) => !!v).join(' ') ||\n item.email ||\n item?.article?.name\n\n return name?.replace(/\\?$/, '')\n }\n\n private get isWidget() {\n return this.$route.name === 'content_article'\n }\n\n private get localScopedSlots() {\n const scopedSlots = { ...this.$scopedSlots }\n\n if (this.lastSlotName) {\n if (!scopedSlots[this.lastSlotName.item]) {\n scopedSlots[this.lastSlotName.item] = undefined\n }\n\n if (!scopedSlots[this.lastSlotName.header]) {\n scopedSlots[this.lastSlotName.header] = undefined\n }\n }\n\n return scopedSlots\n }\n\n private created() {\n this.$watch(\n () => {\n return [this.page, this.itemsPerPage].join('-')\n },\n () => {\n this.localPage = this.page ?? this.localPage\n this.localItemsPerPage = this.itemsPerPage ?? this.localItemsPerPage\n },\n {\n immediate: true,\n }\n )\n }\n\n private onUpdatePage(value: number) {\n if (this.localPage === value) {\n return\n }\n\n this.localPage = value\n this.$emit('update:page', value)\n }\n\n private onUpdateItemsPerPage(value: number) {\n if (this.localItemsPerPage === value) {\n return\n }\n\n this.localItemsPerPage = value\n this.$emit('update:items-per-page', value)\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./DataTable.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./DataTable.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./DataTable.vue?vue&type=template&id=453044f8&scoped=true\"\nimport script from \"./DataTable.ts?vue&type=script&lang=ts&external\"\nexport * from \"./DataTable.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./DataTable.scss?vue&type=style&index=0&id=453044f8&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"453044f8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-responsive',_vm._g({class:[\n 'image-wrapper',\n {\n 'image-wrapper_defined_aspect-ratio': !!_vm.localAspectRatio,\n },\n ],attrs:{\"id\":_vm.divId,\"aspect-ratio\":_vm.localAspectRatio}},_vm.$listeners),[(!_vm.localImageLoaded)?_c('v-skeleton-loader',{style:({\n position: 'absolute',\n top: 0,\n left: 0,\n }),attrs:{\"type\":\"image\",\"width\":\"100%\",\"height\":\"100%\"}}):_vm._e(),_c('img',{class:[\n 'image',\n {\n image_contain: _vm.contain,\n image_cover: !_vm.contain,\n image_loaded: _vm.localImageLoaded,\n },\n ],attrs:{\"src\":_vm.localImageUrl,\"draggable\":_vm.draggable},on:{\"load\":_vm.onLoad}}),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue, Component, Prop } from 'vue-property-decorator'\nimport * as Sentry from '@sentry/vue'\nimport { ENABLED_SENTRY } from '@/config/base'\nimport randomUUID from '@/helpers/randomUUID'\nimport { visibleObserver } from '@/lib/visible-observer'\n\n@Component\nexport default class ImageUi extends Vue {\n @Prop({ type: Boolean, default: false }) private readonly contain!: boolean\n @Prop({ type: String }) private readonly src?: string\n @Prop({ type: Number }) private readonly aspectRatio!: number\n @Prop({ type: Boolean, default: false })\n private readonly draggable!: boolean\n\n private localImageUrl = ''\n private imageWidth = 0\n private imageHeight = 0\n private divId = randomUUID()\n private performanceNowImageLoad = 0\n\n private localImageLoaded = false\n\n private get localAspectRatio() {\n if (!this.aspectRatio && !this.localImageLoaded) {\n return 1.5\n }\n\n return this.aspectRatio\n }\n\n private async onLoad() {\n const loadedInSeconds = Math.round(\n (performance.now() - this.performanceNowImageLoad) / 1e3\n )\n\n this.localImageLoaded = true\n\n if (ENABLED_SENTRY && loadedInSeconds > 30) {\n Sentry.captureException(\n new Error(\n JSON.stringify(\n {\n message: 'Долгая загрузка изображения',\n seconds: loadedInSeconds,\n url: this.src,\n },\n null,\n 2\n )\n )\n )\n }\n }\n\n private mounted() {\n let imageEl: HTMLImageElement | null = null\n let retryLoadImage = 3\n let retryLoadTimeoutId = 0\n\n const onErrorImage = () => {\n if (!retryLoadImage) {\n return\n }\n\n window.clearTimeout(retryLoadTimeoutId)\n\n retryLoadTimeoutId = window.setTimeout(() => {\n loadImage()\n }, 2e3)\n }\n\n const onLoadImage = () => {\n const $el = this.$el as HTMLDivElement | undefined\n\n if (!$el?.parentElement || !imageEl) return\n\n if (imageEl.width < 700 && imageEl.height < 700) {\n URL.revokeObjectURL(this.localImageUrl)\n this.localImageUrl = imageEl.src\n\n return\n }\n\n const canvas = document.createElement('canvas')\n const width = Math.min(imageEl.width, $el.offsetWidth + 160)\n const height = width * (imageEl.height / imageEl.width)\n\n canvas.width = width\n canvas.height = height\n\n const canvasCtx = canvas.getContext('2d')\n\n if (!canvasCtx) return\n\n canvasCtx.imageSmoothingQuality = 'high'\n canvasCtx.imageSmoothingEnabled = true\n\n canvasCtx.drawImage(imageEl, 0, 0, width, height)\n\n canvas.toBlob(\n (imageBlob) => {\n if (!imageBlob) return\n\n URL.revokeObjectURL(this.localImageUrl)\n\n this.localImageUrl = URL.createObjectURL(imageBlob)\n\n imageEl?.removeEventListener('load', onLoadImage)\n imageEl?.remove()\n canvas.remove()\n imageEl = null\n },\n 'image/jpeg',\n 0.8\n )\n }\n\n let requestAnimationFrameId = 0\n\n const loadImage = () => {\n const src = this.src\n\n if (!src) {\n return\n }\n\n retryLoadImage--\n imageEl = new Image()\n\n imageEl.addEventListener('load', onLoadImage)\n imageEl.addEventListener('error', onErrorImage)\n imageEl.crossOrigin = 'anonymous'\n imageEl.src = src\n }\n\n this.$watch(\n () => {\n return this.src\n },\n (src) => {\n if (!src) {\n this.localImageLoaded = false\n this.localImageUrl = ''\n visibleObserver.unobserve(this.divId)\n return\n }\n\n visibleObserver.observe(this.divId, () => {\n window.cancelAnimationFrame(requestAnimationFrameId)\n\n requestAnimationFrameId = window.requestAnimationFrame(() => {\n this.performanceNowImageLoad = performance.now()\n this.localImageLoaded = false\n\n loadImage()\n })\n })\n },\n {\n immediate: true,\n }\n )\n\n this.$once('hook:beforeDestroy', () => {\n visibleObserver.unobserve(this.divId)\n window.cancelAnimationFrame(requestAnimationFrameId)\n window.clearTimeout(retryLoadTimeoutId)\n imageEl?.removeEventListener('load', onLoadImage)\n imageEl?.removeEventListener('error', onErrorImage)\n imageEl?.remove()\n URL.revokeObjectURL(this.localImageUrl)\n })\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageUi.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageUi.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./ImageUi.vue?vue&type=template&id=0f0c23bd&scoped=true\"\nimport script from \"./ImageUi.ts?vue&type=script&lang=ts&external\"\nexport * from \"./ImageUi.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./ImageUi.scss?vue&type=style&index=0&id=0f0c23bd&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f0c23bd\",\n null\n \n)\n\nexport default component.exports","import { PlatformOrigin } from '@/types/platform'\n\nexport function initAutoTargetLinkPlugin({\n editor,\n getPlatformOrigin,\n}: {\n editor: CKEDITOR.editor\n getPlatformOrigin: () => PlatformOrigin\n}) {\n let linkInputEl: HTMLInputElement | null = null\n let targetSelectEl: HTMLSelectElement | null = null\n\n const onChangeLinkInputEl = (event: Event) => {\n if (!targetSelectEl) {\n return\n }\n\n const target = event.target as HTMLInputElement\n const [host] = target.value.split('/')\n const origin = `https://${host}`\n\n const newValue = origin === getPlatformOrigin() ? '_self' : '_blank'\n\n if (newValue === targetSelectEl.value) {\n return\n }\n\n targetSelectEl.value = newValue\n\n targetSelectEl.dispatchEvent(new Event('change'))\n }\n\n const clearEvents = () => {\n linkInputEl?.removeEventListener('change', onChangeLinkInputEl)\n linkInputEl = null\n targetSelectEl = null\n }\n\n editor.on('dialogShow', ({ data }) => {\n if (data?._?.name !== 'link') {\n return\n }\n\n const linkDialogEl = (data?.parts?.dialog?.$ as HTMLElement) || null\n\n if (!linkDialogEl) {\n return\n }\n\n const [linkPanelEl = null, targetPanelEl = null] =\n linkDialogEl.querySelectorAll('.cke_dialog_page_contents')\n\n linkInputEl =\n linkPanelEl\n ?.querySelector('.cke_dialog_ui_hbox_last')\n ?.querySelector('input.cke_dialog_ui_input_text[type=text]') || null\n\n if (!linkInputEl) {\n return\n }\n\n targetSelectEl =\n targetPanelEl\n ?.querySelector('.cke_dialog_ui_hbox_first')\n ?.querySelector('select.cke_dialog_ui_input_select') || null\n\n if (!targetSelectEl) {\n return\n }\n\n linkInputEl.addEventListener('change', onChangeLinkInputEl)\n })\n\n editor.on('dialogHide', ({ data }) => {\n if (data?._?.name !== 'link') {\n return\n }\n\n clearEvents()\n })\n\n const destroy = () => {\n clearEvents()\n }\n\n editor.on('destroy', destroy)\n\n return {\n destroy,\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-textarea',_vm._g(_vm._b({attrs:{\"value\":_vm.localValue,\"auto-grow\":_vm.autoGrow,\"rows\":_vm.rows,\"row-height\":_vm.localRowHeight,\"outlined\":_vm.outlined,\"dense\":_vm.dense,\"label\":_vm.label,\"disabled\":_vm.disabled},on:{\"input\":_vm.onInput,\"blur\":_vm.onBlur}},'v-textarea',_vm.$attrs,false),_vm.localListeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Component from 'vue-class-component'\nimport { Prop } from 'vue-property-decorator'\nimport urlCodeFromText from '@/helpers/urlCodeFromText'\n\n@Component({\n inheritAttrs: false,\n})\nexport default class UrlCodeTextarea extends Vue {\n @Prop({ type: Boolean, default: true }) private readonly autoGrow!: boolean\n @Prop({ type: Number, default: 2 }) private readonly rows!: number\n @Prop({ type: Number }) private readonly rowHeight!: number\n @Prop({ type: Boolean, default: true }) private readonly dense!: boolean\n @Prop({ type: Boolean, default: true }) private readonly outlined!: boolean\n @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean\n @Prop({ type: String, default: '' }) private readonly label!: boolean\n @Prop({ type: String, required: true }) private readonly value!: string\n\n private localValue = ''\n\n private get localListeners() {\n const $listeners = { ...this.$listeners }\n\n delete $listeners.input\n\n return $listeners\n }\n\n private get localRowHeight() {\n return this.rowHeight || (this.dense ? 17 : 16)\n }\n\n private onInput(value: string) {\n this.localValue = urlCodeFromText(value)\n\n this.$emit('input', this.localValue)\n }\n\n private onBlur() {\n const value = this.localValue\n\n this.localValue = ''\n\n this.$nextTick(() => {\n this.localValue = value\n })\n }\n\n private mounted() {\n this.$watch(\n () => {\n return this.value\n },\n () => {\n this.localValue = this.value\n },\n { immediate: true }\n )\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./UrlCodeTextarea.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./UrlCodeTextarea.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./UrlCodeTextarea.vue?vue&type=template&id=59e2b870\"\nimport script from \"./UrlCodeTextarea.ts?vue&type=script&lang=ts&external\"\nexport * from \"./UrlCodeTextarea.ts?vue&type=script&lang=ts&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:{ 'pa-4': !_vm.noGutters }},[_c('v-row',{staticClass:\"filtered-search-block\",attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":_vm.breakXs ? 8 : 12,\"md\":_vm.sortOff ? 12 : 8}},[_c('div',{staticClass:\"d-flex align-center font-weight-bold caption blue-grey--text text--darken-3 mb-1\"},[_vm._v(\" Поиск или фильтрация \"),_vm._t(\"append-search-label\")],2),_c('v-form',{staticClass:\"d-flex align-start filtered-search-block__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.onEnterCombobox.apply(null, arguments)}}},[_c('v-combobox',{ref:\"combobox\",class:[\n 'filtered-search-block__form-combobox',\n {\n 'filtered-search-block__form-combobox_disabled':\n _vm.disabledSearchInput,\n },\n ],attrs:{\"value\":_vm.comboboxVal,\"hide-selected\":\"\",\"search-input\":_vm.searchInputVal,\"append-icon\":null,\"menu-props\":{\n allowOverflow: true,\n nudgeLeft: -_vm.nudgeLeftMenu,\n minWidth: 140,\n rounded: 'sm t-0',\n maxHeight: 425,\n closeOnContentClick: !_vm.searchMode,\n contentClass: _vm.disabledSearchInput\n ? `filtered-search-block-combobox-menu filtered-search-block__form-combobox_hide ${_vm.comboboxClassName}`\n : `filtered-search-block-combobox-menu ${_vm.comboboxClassName}`,\n },\"items\":_vm.comboboxItems,\"disabled\":_vm.disabled,\"loader-height\":\"3\",\"multiple\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\",\"clearable\":false,\"item-value\":\"fieldName\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnterCombobox.apply(null, arguments)},\"input\":_vm.onInputCombobox,\"change\":_vm.onChangeCombobox,\"update:search-input\":_vm.onUpdateSearchInput},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [(_vm.searchInputVal || _vm.comboboxVal.length > 0)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[_c('v-icon',{attrs:{\"disabled\":_vm.disabled,\"color\":\"primary\",\"size\":\"24\"},on:{\"click\":_vm.clearCombobox}},[_vm._v(\" mdi-close \")])],1)]}}],null,false,1643274117)},[_c('span',[_vm._v(\"Отменить поиск\")])]):_vm._e()]},proxy:true},(_vm.showDropdown)?{key:\"no-data\",fn:function(){return [(_vm.syncedLoading)?_c('span',{staticClass:\"px-4\"},[_vm._v(\" Поиск... \")]):(_vm.searchMode)?_c('div',[(_vm.currentFieldType === 'datepicker')?_c('v-card',{staticClass:\"filtered-search-block__datepicker\",attrs:{\"elevation\":\"0\",\"max-width\":\"290\"}},[_c('DatePicker',{attrs:{\"first-day-of-week\":1,\"range\":_vm.datePicker.range,\"full-width\":\"\",\"color\":\"primary\",\"locale\":\"ru-RU\"},on:{\"change\":_vm.onChangeDate},model:{value:(_vm.datePicker.value),callback:function ($$v) {_vm.$set(_vm.datePicker, \"value\", $$v)},expression:\"datePicker.value\"}}),(!_vm.onlyOneDayDatePicker)?_c('v-checkbox',{staticClass:\"mt-1 mb-3 mx-4\",attrs:{\"true-value\":false,\"false-value\":true,\"hide-details\":\"\",\"dense\":\"\",\"label\":\"Поиск по одному дню\"},on:{\"change\":_vm.onChangeDatePickerRange},model:{value:(_vm.datePicker.range),callback:function ($$v) {_vm.$set(_vm.datePicker, \"range\", $$v)},expression:\"datePicker.range\"}}):_vm._e()],1):(\n !!_vm.localFilterFieldItems &&\n (!_vm.searchInputVal || _vm.searchInputVal.length >= 2)\n )?_c('div',[(_vm.localFilterFieldItems.length > 0)?_c('div',_vm._l((_vm.localFilterFieldItems),function(serchFieldValue,i){return _c('v-list-item',{key:`${serchFieldValue.value}_${i}`,on:{\"click\":function($event){return _vm.setFilterValue({\n value: serchFieldValue.value,\n text: serchFieldValue.text,\n filter: serchFieldValue.filter,\n })}}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{domProps:{\"innerHTML\":_vm._s(serchFieldValue.text)}})])],1)],1)}),1):_c('span',{staticClass:\"px-4\"},[_vm._v(\" Ничего не найдено \")])]):_c('span',{staticClass:\"px-4\"},[_vm._v(\" Начните ввод для поиска \")])],1):(_vm.comboboxVal.length > 0)?_c('span',{staticClass:\"px-4\"},[_vm._v(\" Ничего не найдено \")]):(false)?_c('span',{staticClass:\"px-4\"},[_vm._v(\" Нажмите Enter для начала поиска \")]):_vm._e()]},proxy:true}:null,{key:\"selection\",fn:function({ item, selected }){return [(item.text)?_c('div',{staticClass:\"filtered-search-block__item\"},[_c('div',{class:[\n 'subtitle-2',\n 'ma-1',\n 'grey',\n 'grey--text',\n 'text--darken-4',\n 'px-1',\n 'd-flex',\n 'align-center',\n { 'lighten-2': !selected, 'lighten-1': selected },\n ]},[_c('span',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){return _vm.changeFilterValue(item)}}},[_vm._v(\" \"+_vm._s(item.text)+\" = \"+_vm._s(_vm.htmlToText(item.filterText || item.filterValue))+\" \")]),_c('v-icon',{staticClass:\"ml-1 flex-grow-0 flex-shrink-0\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.deleteComboboxVal(item)}}},[_vm._v(\" mdi-close \")])],1)]):_vm._e()]}}],null,true)}),_c('div',{staticClass:\"filtered-search-block__form-btn-wrap\"},[_c('v-btn',{ref:\"submitButton\",staticClass:\"rounded-l-0 filtered-search-block__form-btn d-block px-0\",attrs:{\"disabled\":_vm.disabled,\"block\":\"\",\"type\":\"submit\",\"outlined\":\"\",\"color\":\"rgba(0, 0, 0, 0.4)\"}},[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\" mdi-magnify \")])],1)],1)],1)],1),(!_vm.sortOff)?_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":_vm.breakXs ? 4 : 12,\"md\":\"4\"}},[_c('div',{staticClass:\"font-weight-bold caption blue-grey--text text--darken-3 mb-1\"},[_vm._v(\" Сортировка \")]),_c('v-form',{staticClass:\"d-flex\"},[_c('v-select',{attrs:{\"menu-props\":{ minWidth: 80 },\"items\":_vm.sortFields,\"disabled\":_vm.disabled,\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.sortField),callback:function ($$v) {_vm.sortField=$$v},expression:\"sortField\"}}),(false)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({staticClass:\"filtered-search-block__form-btn-wrap\"},'div',attrs,false),on),[_c('v-btn',{staticClass:\"rounded-l-0 filtered-search-block__form-btn\",attrs:{\"block\":\"\",\"outlined\":\"\",\"disabled\":_vm.disabled,\"color\":\"rgba(0, 0, 0, 0.4)\"},on:{\"click\":_vm.toggleSortType}},[_c('v-icon',{attrs:{\"color\":\"rgba(0, 0, 0, 0.65)\"}},[_vm._v(\" \"+_vm._s(`mdi-sort-${_vm.sortType}ending`)+\" \")])],1)],1)]}}],null,false,2809067719)},[_c('span',[_vm._v(_vm._s(_vm.sortType === 'desc' ? 'По возрастанию' : 'По убыванию')+\" \")])]):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios, { CancelTokenSource } from 'axios'\nimport {\n Vue,\n Component,\n Prop,\n PropSync,\n Ref,\n Watch,\n} from 'vue-property-decorator'\nimport { format as formatDate, parse as parseDate } from 'date-fns'\nimport debounce from 'lodash.debounce'\nimport { Getter } from 'vuex-class'\nimport { FilterField, FilterFieldItem } from '@/types/filter'\nimport { getDefaultSort, getSortField, getSortType } from '@/helpers/tableSort'\nimport htmlToText from '@/helpers/htmlToText'\nimport uniqCid from '@/helpers/uniqCid'\nimport cloneDeep from '@/helpers/cloneDeep'\nimport { RootGetters } from '@/store/types'\n\ninterface ComboboxItem extends FilterField {\n filterValue: string\n filterText: string\n withoutSymbol?: boolean\n}\n\nconst cleanSearchText = (value: string) =>\n value\n .trim()\n .replace(/[^\\wа-яА-ЯёЁ\\s\\d]/g, ' ')\n .replace(/\\s{2,}/g, ' ')\n\n@Component\nexport default class FilteredSearchBlock extends Vue {\n @Getter('getPlatform') private readonly platform!: RootGetters['getPlatform']\n\n @Ref('combobox') private readonly comboboxRef?: {\n updateMenuDimensions: () => void\n lazySearch: string | null\n }\n @Ref('submitButton') private readonly submitButtonRef?: {\n $el: HTMLButtonElement\n }\n @PropSync('loading', { type: Boolean, default: false })\n private syncedLoading!: boolean\n @Prop({ type: Boolean, default: false }) private readonly noGutters!: boolean\n @Prop({ type: Boolean, default: false }) private readonly breakXs!: boolean\n @Prop({ type: Array, default: () => [] }) private readonly sortFields!: {\n text: string\n value: string\n }[]\n @Prop({ type: Array, required: true })\n private readonly filterFields!: FilterField[]\n @Prop({ type: Array })\n private readonly filterFieldItems?: FilterFieldItem[]\n @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean\n @Prop({ type: String, default: getDefaultSort() })\n private readonly initialSort!: string\n @Prop({ type: String, default: '' })\n private readonly usedFor!: string\n @Prop({ type: Boolean, default: false })\n private readonly onlyOneDayDatePicker!: boolean\n\n private datePicker: {\n range: boolean\n value: string | string[] | null\n } = {\n range: true,\n value: null,\n }\n\n private comboboxClassName = `combobox-${uniqCid()}`\n private nudgeLeftMenu = 0\n private sortType = 'asc'\n private sortField = ''\n private comboboxVal: ComboboxItem[] = []\n private searchInputVal: string | null = null\n private searchInputEl?: HTMLInputElement | null\n private _cancelToken: CancelTokenSource | null = null\n private showDropdown = true\n\n private get sortOff() {\n return this.sortFields.length === 0\n }\n\n private get localFilterFieldItems() {\n if (Array.isArray(this.filterFieldItems)) {\n const searchInputVal =\n this.searchInputVal &&\n cleanSearchText(this.searchInputVal).toLowerCase()\n\n return searchInputVal\n ? this.filterFieldItems.filter(({ text }) => {\n text = cleanSearchText(text).toLowerCase()\n\n return (\n text.includes(searchInputVal) || searchInputVal.includes(text)\n )\n })\n : this.filterFieldItems\n }\n\n return null\n }\n\n private get currentFieldType() {\n return this.searchMode\n ? this.comboboxVal[this.currentFieldIndex]?.fieldType\n : undefined\n }\n\n private get searchMode() {\n return (\n this.comboboxVal.length > 0 &&\n !this.comboboxVal[this.currentFieldIndex].filterValue\n )\n }\n\n private get localFilterFields() {\n return this.filterFields.filter(({ text }) => !!text)\n }\n\n private get disabledSearchInput() {\n return (\n this.localFilterFields.length === this.comboboxVal.length &&\n !this.searchMode\n )\n }\n\n private get comboboxItems() {\n return !this.searchMode && !this.syncedLoading ? this.localFilterFields : []\n }\n\n private get currentFieldIndex() {\n const index = this.comboboxVal.findIndex(({ filterValue }) => !filterValue)\n\n return index > -1 ? index : this.comboboxVal.length - 1\n }\n\n private htmlToText(str: string) {\n return htmlToText(str)\n }\n\n private setFilter({\n field,\n value,\n text,\n filter,\n }: {\n field: string\n text: string\n value: string\n filter?: string\n }) {\n const newItems = this.comboboxVal.filter(\n ({ filterValue, fieldName }) => !!filterValue && fieldName !== field\n )\n\n this.onInputCombobox(\n (\n this.localFilterFields.filter(\n ({ fieldName }) => fieldName === field\n ) as ComboboxItem[]\n ).concat(newItems),\n false\n )\n\n this.setFilterValue({ value, text, autofocus: false, filter })\n }\n\n private onChangeSort() {\n const isType =\n this.sortField.includes('.desc') || this.sortField.includes('.asc')\n\n const value =\n this.sortField && this.sortType\n ? `${this.sortField}${isType ? '' : `.${this.sortType}`}`\n : ''\n this.$emit('change:sort', value)\n }\n\n @Watch('currentFieldIndex')\n private onChangeCurrentFieldIndex() {\n const item = this.comboboxVal[this.currentFieldIndex]\n\n if (item) {\n this.moveSearchInputEl(this.currentFieldIndex)\n this.$emit('change:filter-field', item)\n }\n\n this.datePicker.value = null\n }\n\n @Watch('comboboxVal.length')\n private onChangeComboboxValLength(newLength: number, oldLength: number) {\n if (newLength < oldLength) {\n this.onSubmitFilterForm({\n searchInputVal: '',\n })\n }\n }\n\n // Изменение значения фильтра\n private changeFilterValue(item: ComboboxItem) {\n const currentComboboxItem = this.comboboxVal[this.currentFieldIndex]\n this.isShowDropdown(item)\n\n const searchInputVal = this.searchInputVal || ''\n // Ищем значение фильтра по значению input в текущем списке\n const currentFilterFieldItem =\n searchInputVal &&\n this.filterFieldItems?.find(({ text }) =>\n text.toLowerCase().includes(searchInputVal?.trim().toLowerCase())\n )\n\n if (currentComboboxItem && !currentComboboxItem.filterValue) {\n if (currentFilterFieldItem) {\n currentComboboxItem.filterValue = currentFilterFieldItem.value\n currentComboboxItem.filterText = currentFilterFieldItem.text\n } else {\n currentComboboxItem.filterValue = searchInputVal\n currentComboboxItem.filterText = searchInputVal\n }\n }\n\n // Удаляем фильтр без значения\n if (!currentComboboxItem.filterValue) {\n this.deleteComboboxVal(currentComboboxItem)\n }\n\n this.searchInputVal = this.htmlToText(item.filterText)\n item.filterValue = ''\n item.filterText = ''\n this.moveSearchInputEl()\n }\n\n // Перемещаем input перед редактируемым значением фильтра\n private async moveSearchInputEl(fieldIndex = this.comboboxVal.length - 1) {\n await this.$nextTick()\n\n const itemEl = this.$el.querySelectorAll('.filtered-search-block__item')[\n fieldIndex\n ]\n\n if (this.searchInputEl && itemEl) {\n itemEl.insertAdjacentElement('afterend', this.searchInputEl)\n this.moveMenu()\n }\n }\n\n // Перемещает меню v-combobox к активному фильтру\n private async moveMenu() {\n await this.$nextTick()\n this.comboboxRef?.updateMenuDimensions()\n const inputEl = this.$el.querySelector(\n '.v-select__selections input'\n )\n\n const comboboxEl = document.body.querySelector(\n `.${this.comboboxClassName}`\n )\n\n if (comboboxEl && inputEl) {\n comboboxEl.style.setProperty('--input-width', `${inputEl.offsetWidth}px`)\n }\n\n console.log('comboboxEl', comboboxEl)\n\n this.nudgeLeftMenu = inputEl?.offsetLeft || 0\n }\n\n private toggleSortType() {\n this.sortType = this.sortType === 'asc' ? 'desc' : 'asc'\n }\n\n // Получение параметра filter для API в формате [column.operator]=[value]\n private getFilter(fullKey: string, fullVal: string | number) {\n if (fullKey.includes('||')) {\n const formatedFilter = fullKey\n .split('||')\n .map((key) => `${key}=${fullVal}`)\n .join(',')\n return `(,${formatedFilter},)`\n }\n\n const val =\n typeof fullVal === 'string' &&\n !fullVal.includes('||') &&\n !fullKey.includes('.match')\n ? fullVal.split(' ')\n : [fullVal]\n\n const separators = ['&', ',']\n const separator =\n separators.find((v) => fullKey.includes(v)) || separators[0]\n\n return fullKey\n .split(separator)\n .reduce((acc, key, index, list) => {\n const value = val[index]\n\n if (val[index] === undefined) return acc\n\n if (!key) {\n acc.push(fullVal.toString())\n\n return acc\n }\n\n if (list.length === 1) {\n acc.push(`${key}=${fullVal}`)\n\n return acc\n }\n\n acc.push(`${key}=${value}`)\n\n return acc\n }, [])\n .join(separator)\n }\n\n private onChangeDatePickerRange(oneDay: boolean) {\n if (\n oneDay ||\n !Array.isArray(this.datePicker.value) ||\n !this.datePicker.value.length\n ) {\n return\n }\n\n this.onChangeDate(this.datePicker.value[0])\n }\n\n private onChangeDate(value: string | string[]) {\n const text = Array.isArray(value)\n ? value\n .map((str) =>\n parseDate(str, 'yyyy-MM-dd', new Date()).toLocaleDateString(\n 'ru-RU',\n {\n day: '2-digit',\n month: 'long',\n year: 'numeric',\n }\n )\n )\n .join('—')\n : parseDate(value, 'yyyy-MM-dd', new Date()).toLocaleDateString('ru-RU', {\n day: '2-digit',\n month: 'long',\n year: 'numeric',\n })\n\n if (Array.isArray(value)) {\n value.sort(\n (a, b) =>\n parseDate(a, 'yyyy-MM-dd', new Date()).getTime() -\n parseDate(b, 'yyyy-MM-dd', new Date()).getTime()\n )\n } else {\n value = [value, value]\n }\n\n value = value.map((str, index) => {\n const date = parseDate(str, 'yyyy-MM-dd', new Date())\n\n if (index > 0) {\n date.setHours(23)\n date.setMinutes(59)\n date.setSeconds(59)\n }\n\n return formatDate(date, 'yyyy-MM-dd HH:mm:ss')\n })\n\n this.setFilterValue({ value: value.join('||'), text })\n }\n\n private setFilterValue({\n value,\n text,\n filter,\n autofocus = true,\n }: {\n value: string\n text: string\n filter?: string\n autofocus?: boolean\n }) {\n const item = this.comboboxVal[this.currentFieldIndex]\n item.filterKey = filter || item.filterKey\n item.filterValue = value\n item.filterText = text ?? item.filterText\n\n this.$emit('change:filter-field', item)\n\n this.searchInputVal = null\n this.moveMenu()\n\n if (autofocus) {\n this.focusCombobox()\n }\n\n this.onSubmitFilterForm({\n searchInputVal: '',\n })\n }\n\n private deleteComboboxVal(item: ComboboxItem) {\n this.comboboxVal = this.comboboxVal.filter(\n ({ fieldName }) => fieldName !== item.fieldName\n )\n\n // this.searchInputVal = null\n\n this.moveMenu()\n this.$emit('delete:filter-field', item.fieldName)\n this.onSubmitFilterForm({\n searchInputVal: '',\n })\n }\n\n private onEnterCombobox() {\n let searchInputVal = this.searchInputVal\n\n if (!searchInputVal?.length) {\n this.onSubmitFilterForm()\n\n return\n }\n\n const newComboboxVal = [...this.comboboxVal]\n\n const item = this.comboboxVal.find(({ filterText }) => !filterText)\n\n if (item) {\n const comboboxItem = {\n ...item,\n filterValue: searchInputVal,\n filterText: searchInputVal,\n }\n\n const newComboboxValIndex = newComboboxVal.findIndex(\n ({ fieldName }) => fieldName === item.fieldName\n )\n\n if (newComboboxValIndex > -1) {\n newComboboxVal.splice(newComboboxValIndex, 1, comboboxItem)\n } else {\n newComboboxVal.push(comboboxItem)\n }\n\n this.onInputCombobox(newComboboxVal)\n searchInputVal = ''\n }\n\n this.onChangeSearchInputVal(searchInputVal)\n this.onSubmitFilterForm({\n searchInputVal,\n })\n }\n\n private onInputCombobox(items: (ComboboxItem | string)[], autofocus = true) {\n this.moveMenu()\n\n this.comboboxVal = items.reduce((acc: ComboboxItem[], item) => {\n // Добавляем название фильтра с пустыми значениями\n if (typeof item !== 'string') {\n acc.push(\n cloneDeep({\n ...item,\n // Значение, которое отправляется в API для параметра filter\n filterValue: item.filterValue || '',\n // Значение, которое выводится пользователю\n filterText: item.filterText || '',\n })\n )\n }\n return acc\n }, [])\n\n if (\n autofocus &&\n items.length > 0 &&\n typeof items[items.length - 1] !== 'string'\n ) {\n this.focusCombobox()\n }\n this.searchInputVal = null\n }\n\n private onUpdateSearchInput(value: string | null) {\n this.searchInputVal = value === null ? this.searchInputVal : value\n\n this.$nextTick(() => {\n if (this.comboboxRef) {\n this.comboboxRef.lazySearch = this.searchInputVal\n }\n\n if (!this.comboboxVal.length) {\n // @ts-ignore\n this.focusCombobox.cancel()\n }\n })\n }\n\n private isShowDropdown(item: ComboboxItem) {\n this.showDropdown = item?.autocomplete ?? true\n }\n\n private onChangeCombobox(items: ComboboxItem[]) {\n this.isShowDropdown(items[this.currentFieldIndex])\n\n this.$nextTick(() => {\n const lastItem = items[items.length - 1]\n\n if (typeof lastItem === 'string' && !this.disabledSearchInput) {\n // Сохраняем значение поиска, т.к. v-combobox делает сброс значения input при blur событии\n this.searchInputVal = lastItem\n }\n })\n }\n\n // Отправка формы\n private onSubmitFilterForm(\n params: {\n searchInputVal?: string\n } = {}\n ) {\n const { searchInputVal = this.searchInputVal } = params\n\n this.comboboxVal = this.comboboxVal.filter(\n ({ filterValue }) => !!filterValue\n )\n this.searchInputVal = searchInputVal\n\n const filter = this.comboboxVal.reduce(\n (acc: string[], { filterKey, filterValue, withoutSymbol }) => {\n if (withoutSymbol) {\n const formatedValue = cleanSearchText(filterValue)\n\n acc.push(this.getFilter(filterKey, formatedValue))\n return acc\n }\n\n acc.push(this.getFilter(filterKey, filterValue))\n return acc\n },\n []\n )\n\n let searchText = ''\n\n if (!filter.length && searchInputVal) {\n const searchByText = this.filterFields.some(\n ({ fieldName }) => fieldName === 'searchByText'\n )\n\n if (searchByText) {\n searchText = searchInputVal\n } else {\n const filterFieldKey =\n this.filterFields.find(({ fieldName }) => fieldName === 'name')\n ?.filterKey || 'name.like'\n\n filter.push(`${filterFieldKey}=${searchInputVal}`)\n }\n }\n\n this.$emit('change:filter', filter.join(','), searchText)\n }\n\n private onChangeSearchInputVal(newStr: string | null) {\n if (!newStr || newStr.length < 3) {\n return\n }\n\n this._cancelToken?.cancel()\n this._cancelToken = axios.CancelToken.source()\n\n if (\n !this.comboboxVal.length ||\n this.comboboxVal[this.comboboxVal.length - 1].filterValue\n ) {\n this.syncedLoading = false\n return\n }\n\n const { fieldName, filterKey, withoutSymbol } =\n this.comboboxVal[this.currentFieldIndex]\n\n let formatedStr = ''\n\n if (newStr) {\n formatedStr = withoutSymbol ? cleanSearchText(newStr) : newStr.trim()\n }\n // Поиск данных по фильтру\n this.$emit('check:filter', {\n field: fieldName,\n value: newStr,\n filter: this.getFilter(filterKey, formatedStr),\n cancelToken: this._cancelToken?.token,\n })\n }\n\n private clearCombobox() {\n this.comboboxVal = []\n this.searchInputVal = null\n this.moveMenu()\n this.onSubmitFilterForm({\n searchInputVal: '',\n })\n }\n\n private focusCombobox() {\n this.$nextTick(() => {\n // Вызываем клик на input для фокусировки на v-combobox с открытым меню\n this.searchInputEl?.click()\n this.searchInputEl?.focus()\n })\n }\n\n private initLocalStorage() {\n if (!this.usedFor) return\n\n const onChangeFilterParams = debounce(\n () => {\n const newFullPath = this.$router.resolve({\n query: {\n ...this.$route.query,\n comboboxVal: this.comboboxVal.map(\n ({\n fieldName,\n filterKey,\n filterText,\n filterValue,\n text,\n withoutSymbol,\n }) =>\n [\n `fieldName:=${fieldName}`,\n `filterText:=${filterText}`,\n `filterKey:=${filterKey}`,\n `filterValue:=${filterValue}`,\n `text:=${text}`,\n withoutSymbol ? `withoutSymbol:=${withoutSymbol}` : '',\n ].join(';')\n ),\n sortType: this.sortType,\n sortField: this.sortField,\n searchText: this.searchInputVal || undefined,\n },\n }).resolved.fullPath\n\n if (newFullPath !== this.$route.fullPath) {\n this.$router.replace(newFullPath)\n }\n\n localStorage.setItem(\n storageKey,\n JSON.stringify({\n comboboxVal: this.comboboxVal,\n sortType: this.sortType,\n sortField: this.sortField,\n })\n )\n },\n 500,\n { maxWait: 500 }\n )\n\n this.$watch(() => {\n return this.comboboxVal\n .map(({ filterValue }) => filterValue)\n .concat([\n this.sortType,\n this.sortField,\n this.searchInputVal?.trim() || '',\n ])\n .join('-')\n }, onChangeFilterParams)\n\n const storageKey = `searchBlock.${this.platform}.${this.usedFor}`\n const jsonDataFromStorage = localStorage.getItem(storageKey)\n\n if (jsonDataFromStorage) {\n const dataFromStorage = JSON.parse(jsonDataFromStorage)\n\n this.comboboxVal = dataFromStorage.comboboxVal\n this.sortType = dataFromStorage.sortType\n this.sortField = dataFromStorage.sortField\n }\n\n const {\n comboboxVal,\n sortType = this.sortType,\n sortField = this.sortField,\n searchText: querySearchText,\n } = this.$route.query\n\n const searchText =\n typeof querySearchText === 'string'\n ? querySearchText.trim()\n : this.searchInputVal\n\n if (typeof sortType === 'string') {\n this.sortType = sortType\n }\n\n if (typeof sortField === 'string') {\n this.sortField = sortField\n }\n\n if (comboboxVal) {\n const parsedComboboxVal = (\n Array.isArray(comboboxVal) ? comboboxVal : [comboboxVal]\n ).reduce((newComboboxVal, item) => {\n if (!item) return newComboboxVal\n\n const newComboboxItem = item\n .split(';')\n .reduce>((comboboxItem, entry) => {\n const [key, value] = entry.split(':=')\n\n comboboxItem[key] = value\n return comboboxItem\n }, {})\n\n newComboboxVal.push(newComboboxItem as unknown as ComboboxItem)\n\n return newComboboxVal\n }, [])\n\n this.comboboxVal = parsedComboboxVal\n }\n\n if (this.comboboxVal.length > 0 || searchText?.length) {\n this.onSubmitFilterForm({\n searchInputVal: searchText || '',\n })\n }\n\n if (typeof searchText === 'string') {\n this.searchInputVal = searchText\n }\n\n this.$once('hook:beforeDestroy', () => {\n onChangeFilterParams.cancel()\n })\n }\n\n private created() {\n if (this.onlyOneDayDatePicker) {\n this.datePicker.range = false\n }\n\n this.sortField =\n this.sortFields.find((item) => item.value.includes(this.initialSort))\n ?.value || getSortField(this.initialSort)\n\n this.sortType = getSortType(this.initialSort)\n this.$watch('sortType', this.onChangeSort)\n this.$watch('sortField', this.onChangeSort)\n this.focusCombobox = debounce(this.focusCombobox.bind(this), 100)\n\n this.$watch('searchInputVal', debounce(this.onChangeSearchInputVal, 500))\n this.initLocalStorage()\n }\n\n private mounted() {\n this.searchInputEl = this.$el.querySelector(\n '.v-select__selections input'\n ) as HTMLInputElement | null\n\n this.$watch(\n () => {\n return this.syncedLoading\n },\n () => {\n this.moveMenu()\n }\n )\n }\n\n private beforeDestroy() {\n this._cancelToken?.cancel()\n this.syncedLoading = false\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./FilteredSearchBlock.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./FilteredSearchBlock.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./FilteredSearchBlock.vue?vue&type=template&id=38ab8780&scoped=true\"\nimport script from \"./FilteredSearchBlock.ts?vue&type=script&lang=ts&external\"\nexport * from \"./FilteredSearchBlock.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./FilteredSearchBlock.scss?vue&type=style&index=0&id=38ab8780&prod&lang=scss&scoped=true&external\"\nimport style1 from \"./FilteredSearchBlock.vue?vue&type=style&index=1&id=38ab8780&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38ab8780\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.localImages.length)?_c('v-skeleton-loader',{attrs:{\"type\":\"card\"}}):_c('div',{class:[\n 'image-cropper',\n `image-cropper_place_${_vm.place}`,\n {\n 'image-cropper_dynamic-ratio': _vm.isDynamicRatio,\n },\n ]},[(_vm.titleOneAllImages)?_c('div',{staticClass:\"d-sm-flex justify-sm-space-between image-cropper__title mb-6\"},[_c('h6',{staticClass:\"text-h6 text-md-h5 text-lg-h4 mr-sm-2 font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.titleOneAllImages)+\" \")])]):_vm._e(),_c('div',{class:[\n 'image-cropper__content',\n _vm.backgroundColor,\n {\n 'py-4 px-2 px-lg-8 pt-lg-6 pb-lg-8':\n _vm.place === 'default' && !_vm.noGutters,\n },\n ]},[(_vm.switchEnabled)?_c('div',{staticClass:\"image-cropper__title-switch d-inline-flex align-center justify-space-between\"},[_c('div',{staticClass:\"image-cropper__title-switch-label blue-grey--text text--darken-1\"},[_vm._v(\" Одно изображение на все форматы \")]),_c('v-switch',{staticClass:\"mt-0 ml-1 ml-sm-2 pl-0 pt-0\",attrs:{\"color\":\"green\",\"flat\":\"\",\"hide-details\":\"\",\"inset\":\"\"},model:{value:(_vm.localOneImageForAllFormats),callback:function ($$v) {_vm.localOneImageForAllFormats=$$v},expression:\"localOneImageForAllFormats\"}})],1):_vm._e(),_vm._t(\"top\"),(_vm.place === 'default' && _vm.isActiveCropper && !_vm.hidePreviews)?_c('div',{class:[\n 'd-flex',\n 'justify-start',\n 'image-cropper__previews',\n { 'mb-6': !!_vm.currentImage },\n ]},_vm._l((_vm.localImages),function(image,imageIndex){return _c('ImageCropperPreview',{key:imageIndex,class:['flex-grow-0', 'flex-shrink-0', 'image-cropper__preview'],attrs:{\"image\":image,\"active\":imageIndex === _vm.currentImageIndex},on:{\"click\":function($event){return _vm.onClickPreview($event, imageIndex)},\"crop\":function($event){return _vm.onCropPreview(imageIndex)},\"replace\":function($event){return _vm.onReplacePreview(imageIndex)}}})}),1):_vm._e(),_c('div',{class:{ 'deep-purple lighten-5': _vm.place === 'default' }},[(_vm.isShowCloseButton)?_c('v-btn',{staticClass:\"ml-auto mr-2 d-block mb-2\",attrs:{\"icon\":\"\",\"small\":\"\",\"color\":\"error\"},on:{\"click\":_vm.closeCropper}},[_c('v-icon',[_vm._v(\" mdi-close \")])],1):_vm._e(),(_vm.place === 'default' && !_vm.hiddenControls)?_c('div',{staticClass:\"py-5 px-2 px-sm-4 px-dm-5 d-sm-flex flex-md-wrap flex-lg-nowrap align-sm-center\"},[_c('div',{class:[\n 'd-flex',\n 'justify-space-between',\n 'image-cropper__controls',\n { 'image-cropper__controls_disabled': !_vm.canSaveImage },\n ]},_vm._l((_vm.controlsConfig),function(control){return _c('div',{key:control.tooltip,staticClass:\"flex-grow-0 flex-shrink-0 mr-sm-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-icon',_vm._g(_vm._b({attrs:{\"color\":\"deep-purple\"},on:{\"click\":function($event){return _vm.controlAction(control.action, control.params)}}},'v-icon',attrs,false),on),[_vm._v(\" \"+_vm._s(control.icon)+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(control.tooltip))])])],1)}),0),_c('v-slider',{class:[\n 'image-cropper__slider',\n 'mt-4',\n 'mt-sm-0',\n 'ml-sm-3',\n 'mr-sm-4',\n 'image-cropper__controls',\n { 'image-cropper__controls_disabled': !_vm.canSaveImage },\n ],attrs:{\"disabled\":!_vm.isReadyCropper,\"value\":_vm.currentZoom * 100,\"max\":93,\"color\":\"deep-purple\",\"track-color\":\"blue-grey lighten-4\",\"hide-details\":\"\"},on:{\"input\":_vm.onZoom},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"blue-grey lighten-1\"}},[_vm._v(\" mdi-magnify-minus-outline \")])]},proxy:true},{key:\"append\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"blue-grey lighten-1\"}},[_vm._v(\" mdi-magnify-plus-outline \")])]},proxy:true}],null,false,1838742985)}),(_vm.buttonsEnabled)?_c('div',{staticClass:\"image-cropper-buttons d-flex justify-center mt-6 mt-sm-0 mt-md-5 mt-lg-0\",style:({\n width: _vm.$vuetify.breakpoint.mdOnly ? '100%' : undefined,\n })},[_c('v-btn',{staticClass:\"font-weight-medium flex-grow-0 flex-shrink-0 mx-1\",attrs:{\"disabled\":!_vm.hasChanges,\"loading\":_vm.loading,\"elevation\":\"0\",\"color\":\"primary\",\"height\":\"28\"},on:{\"click\":_vm.onSave}},[_vm._v(\" сохранить \")]),_c('v-btn',{staticClass:\"font-weight-medium flex-grow-0 flex-shrink-0 mx-1\",attrs:{\"color\":\"red\",\"height\":\"28\",\"outlined\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" отмена \")])],1):_vm._e()],1):_vm._e(),_c('v-responsive',{staticClass:\"d-flex align-center\",attrs:{\"aspect-ratio\":_vm.place === 'detailImage' ? _vm.imageContainerAspectRatio : undefined}},[_c('ImageUploader',{attrs:{\"uploader-visible\":!_vm.currentOriginalImageUrl,\"min-width\":_vm.minWidthImage,\"min-height\":_vm.minHeightImage,\"title\":_vm.title,\"info-text\":_vm.infoText,\"max-size\":_vm.maxSize,\"image-dinamic-aspect-ratio\":_vm.isDynamicRatio},on:{\"load\":_vm.onLoadImage,\"load:start\":_vm.onLoadStart},scopedSlots:_vm._u([{key:\"image\",fn:function(){return [_c('v-responsive',{class:[\n 'image-cropper__container',\n {\n 'image-cropper__container_disabled': _vm.readonlyCropper,\n },\n ],attrs:{\"aspect-ratio\":_vm.imageContainerAspectRatio}},[(_vm.isActiveCropper && _vm.currentOriginalImageUrl)?_c('Cropper',{key:`${_vm.cropperKey}_${_vm.currentImageIndex}_${_vm.localOneImageForAllFormats}`,ref:\"cropper\",staticClass:\"image-cropper__cropper\",attrs:{\"src\":_vm.currentOriginalImageUrl,\"debounce\":false,\"transitions\":false,\"transition-time\":0,\"canvas\":false,\"stencilProps\":{\n lines: {},\n handlers: {},\n resizable: false,\n movable: false,\n scalable: false,\n aspectRatio: _vm.isDynamicRatio\n ? undefined\n : _vm.currentAspectRatio,\n },\"resizeImage\":{ adjustStencil: false },\"default-size\":_vm.defaultSize,\"default-position\":_vm.defaultPosition,\"default-boundaries\":_vm.defaultBoundaries,\"stencil-size\":_vm.stencilSize,\"background-wrapper-component\":_vm.$options.components.CustomBackgroundWrapper,\"image-restriction\":_vm.isDynamicRatio ? 'fit-area' : 'stencil'},on:{\"change\":_vm.onChange,\"ready\":function($event){_vm.isReadyCropper = true}}}):_vm._e()],1)]},proxy:true}])})],1)],1),_vm._t(\"bottom\"),_c('v-expand-transition',[(_vm.place === 'detailImage' && !_vm.hiddenControls && _vm.canSaveImage)?_c('div',[_c('div',{staticClass:\"d-flex align-center justify-center image-cropper__controls-wrapper\"},[_c('div',{class:[\n 'd-flex',\n 'justify-space-between',\n 'image-cropper__controls',\n 'mr-2',\n 'mr-sm-3',\n 'mr-md-5',\n ]},_vm._l((_vm.controlsConfig),function(control){return _c('div',{key:control.tooltip,staticClass:\"flex-grow-0 flex-shrink-0 mr-sm-2\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-icon',_vm._g(_vm._b({attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.controlAction(control.action, control.params)}}},'v-icon',attrs,false),on),[_vm._v(\" \"+_vm._s(control.icon)+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(control.tooltip))])])],1)}),0),_c('v-slider',{class:[\n 'image-cropper__slider',\n 'image-cropper__controls',\n { 'image-cropper__controls_disabled': !_vm.canSaveImage },\n ],attrs:{\"disabled\":!_vm.isReadyCropper,\"value\":_vm.currentZoom * 100,\"max\":93,\"color\":\"primary\",\"track-color\":\"blue-grey lighten-3\",\"hide-details\":\"\"},on:{\"input\":_vm.onZoom},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"blue-grey lighten-1\"}},[_vm._v(\" mdi-magnify-minus-outline \")])]},proxy:true},{key:\"append\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"blue-grey lighten-1\"}},[_vm._v(\" mdi-magnify-plus-outline \")])]},proxy:true}],null,false,1838742985)})],1)]):_vm._e()]),(_vm.place === 'detailImage' && _vm.isActiveCropper && !_vm.hidePreviews)?_c('div',{staticClass:\"d-flex justify-start image-cropper__previews\"},[_c('div',{staticClass:\"d-flex justify-center mx-auto flex-shrink-0\"},_vm._l((_vm.localImages),function(image,imageIndex){return _c('ImageCropperPreview',{key:imageIndex,staticClass:\"flex-grow-0 flex-shrink-0 image-cropper__preview\",attrs:{\"image\":image,\"active\":imageIndex === _vm.currentImageIndex,\"color\":\"light\"},on:{\"click\":function($event){return _vm.onClickPreview($event, imageIndex)},\"crop\":function($event){return _vm.onCropPreview(imageIndex)},\"replace\":function($event){return _vm.onReplacePreview(imageIndex)}}})}),1)]):_vm._e()],2),(_vm.place === 'detailImage' && _vm.isActiveCropper && !_vm.hiddenButtons)?_c('div',{staticClass:\"image-cropper-buttons d-flex justify-center justify-sm-end\"},[_c('v-btn',{staticClass:\"font-weight-medium flex-grow-0 flex-shrink-0 mx-1\",attrs:{\"outlined\":\"\",\"color\":\"red\",\"height\":\"28\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" отмена \")]),_c('v-btn',{staticClass:\"font-weight-medium flex-grow-0 flex-shrink-0 mx-1\",attrs:{\"disabled\":!_vm.hasChanges,\"loading\":_vm.loading,\"elevation\":\"0\",\"color\":\"primary\",\"height\":\"28\"},on:{\"click\":_vm.onSave}},[_vm._v(\" сохранить \")])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:[\n 'image-cropper-preview',\n 'd-flex',\n 'flex-column',\n 'cursor-pointer',\n `image-cropper-preview_color_${_vm.color}`,\n {\n 'image-cropper-preview_active': _vm.active,\n 'image-cropper-preview_empty-img': !_vm.image.transform.image.url,\n 'image-cropper-preview_defined-img': !!_vm.image.transform.image.url,\n },\n ],on:{\"click\":function($event){return _vm.$emit('click', $event)}}},[(!_vm.hiddenDesc && _vm.descInTooltip)?_c('v-menu',{attrs:{\"open-on-focus\":false,\"open-on-hover\":\"\",\"top\":\"\",\"transition\":\"slide-y-reverse-transition\",\"open-delay\":\"100\",\"close-delay\":\"100\",\"nudge-top\":\"-48px\",\"content-class\":\"elevation-0 py-1 overflow-hidden\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({staticClass:\"cursor-pointer\"},'div',attrs,false),on),[(!_vm.hiddenTitle)?_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"flex-grow-0 flex-shrink-0\",attrs:{\"color\":_vm.iconColor,\"size\":\"20\"}},[_vm._v(\" mdi-check-circle-outline \")]),_c('div',{class:[\n 'ml-1',\n 'text-caption-1',\n 'font-weight-bold',\n _vm.titleClassName,\n ]},[_vm._v(\" \"+_vm._s(_vm.image.title)+\" \")])],1):_vm._e(),_c('div',{staticClass:\"image-cropper-preview__size blue-grey--text text--lighten-2 mb-1\"},[_vm._v(\" Размер \"+_vm._s(`${_vm.image.width}x${_vm.image.height}`)+\" \")]),_c('v-responsive',{staticClass:\"image-cropper-preview__wrapper flex-grow-0 flex-shrink-0\",attrs:{\"aspect-ratio\":_vm.currentAspectRatio}},[(_vm.isReady)?_c('Preview',{attrs:{\"fill\":\"\",\"coordinates\":{\n left: _vm.image.transform.crop_x,\n top: _vm.image.transform.crop_y,\n width: _vm.image.transform.crop_w,\n height: _vm.image.transform.crop_h,\n },\"image\":{\n src: _vm.image.transform.image.url,\n }}}):_vm._e()],1)],1)]}}],null,false,2985555118)},[_c('span',{staticClass:\"text-subtitle-2 white--text rounded py-2 px-4 d-inline-block\",style:({ backgroundColor: 'rgba(0, 0, 0, 0.6)' })},[_vm._v(\" \"+_vm._s(_vm.image.description)+\" \")])]):[(!_vm.hiddenTitle)?_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"flex-grow-0 flex-shrink-0\",attrs:{\"color\":_vm.iconColor,\"size\":\"20\"}},[_vm._v(\" mdi-check-circle-outline \")]),_c('div',{class:[\n 'ml-1',\n 'text-caption-1',\n 'font-weight-bold',\n _vm.titleClassName,\n ]},[_vm._v(\" \"+_vm._s(_vm.image.title)+\" \")])],1):_vm._e(),(!_vm.hiddenDesc && !_vm.descInTooltip)?_c('div',{staticClass:\"text-caption-3 blue-grey--text\"},[_vm._v(\" \"+_vm._s(_vm.image.description)+\" \")]):_vm._e(),_c('div',{staticClass:\"text-caption-3 blue-grey--text text--lighten-2 mb-2\"},[(_vm.image.size)?[_vm._v(\" \"+_vm._s(_vm.image.size)+\" \")]:[_vm._v(\" Размер \"+_vm._s(`${_vm.image.width}x${_vm.image.height}`)+\" \")]],2),_c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-responsive',{staticClass:\"image-cropper-preview__wrapper mt-auto flex-grow-0 flex-shrink-0\",attrs:{\"aspect-ratio\":_vm.currentAspectRatio}},[(_vm.isReady)?_c('Preview',{attrs:{\"fill\":\"\",\"coordinates\":{\n left: _vm.image.transform.crop_x,\n top: _vm.image.transform.crop_y,\n width: _vm.image.transform.crop_w,\n height: _vm.image.transform.crop_h,\n },\"image\":{\n src: _vm.image.transform.image.url,\n }}}):_vm._e(),_c('div',{class:[\n 'justify-center',\n 'image-cropper-preview__buttons',\n {\n 'image-cropper-preview__buttons_showed': hover,\n 'd-flex': !_vm.hiddenControls,\n 'd-none': _vm.hiddenControls,\n },\n ]},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canReplace),expression:\"canReplace\"}],staticClass:\"image-cropper-preview__button\",attrs:{\"color\":\"deep-purple\",\"fab\":\"\",\"height\":\"24\",\"width\":\"24\"},on:{\"click\":function($event){return _vm.$emit('replace')}}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"color\":\"white\",\"size\":\"16\"}},[_vm._v(\" mdi-sync \")])],1)]}}],null,true)},[_c('span',[_vm._v(\" заменить изображение \")])]),(false)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.active),expression:\"!active\"}],staticClass:\"image-cropper-preview__button\",attrs:{\"color\":\"deep-purple\",\"fab\":\"\",\"height\":\"24\",\"width\":\"24\"},on:{\"click\":function($event){return _vm.$emit('crop')}}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"color\":\"white\",\"size\":\"16\"}},[_vm._v(\" mdi-crop \")])],1)]}}],null,true)},[_c('span',[_vm._v(\" вырезать \")])]):_vm._e()],1)],1)]}}])})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Component from 'vue-class-component'\nimport { Prop } from 'vue-property-decorator'\nimport { Preview } from 'vue-advanced-cropper'\nimport { CropperSizeImage } from '@/types/cropper'\n\n@Component({\n components: {\n Preview,\n },\n})\nexport default class ImageCropperPreview extends Vue {\n @Prop({ type: Object, required: true })\n private readonly image!: CropperSizeImage\n @Prop({ type: Boolean, default: false }) private readonly active!: boolean\n @Prop({ type: String, default: 'grey' }) private readonly color!: string\n @Prop({ type: Boolean, default: false })\n private readonly hiddenControls!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hiddenTitle!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hiddenDesc!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly descInTooltip!: boolean\n\n private isReady = false\n\n private get canReplace() {\n this.$vuetify.breakpoint.xsOnly\n return !!this.image.transform.image?.url\n }\n\n private get iconColor() {\n if (this.active) {\n return 'deep-purple accent-3'\n }\n\n if (this.image.transform.image?.url) {\n return 'green'\n }\n\n return 'blue-grey lighten-4'\n }\n\n private get titleClassName() {\n if (this.active) {\n return 'deep-purple--text text--accent-3'\n }\n\n return 'blue-grey--text text--darken-3'\n }\n\n private get currentAspectRatio() {\n return this.image?.aspectRatio\n ? this.image?.aspectRatio\n : this.image.transform.crop_w && this.image.transform.crop_h\n ? this.image.transform.crop_w / this.image.transform.crop_h\n : 1\n }\n\n private mounted() {\n this.$nextTick(() => {\n this.isReady = true\n })\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageCropperPreview.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageCropperPreview.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./ImageCropperPreview.vue?vue&type=template&id=a07bd11e&scoped=true\"\nimport script from \"./ImageCropperPreview.ts?vue&type=script&lang=ts&external\"\nexport * from \"./ImageCropperPreview.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./ImageCropperPreview.scss?vue&type=style&index=0&id=a07bd11e&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a07bd11e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transformable-image',{attrs:{\"touch-move\":_vm.touchMove,\"touch-resize\":_vm.touchResize,\"mouse-move\":_vm.mouseMove,\"wheel-resize\":_vm.wheelResize,\"events-filter\":_vm.eventsFilter},on:{\"move\":function($event){return _vm.$emit('move', $event)},\"resize\":function($event){return _vm.$emit('resize', $event)}}},[_vm._t(\"default\"),_c('div',{staticClass:\"cropper-event-notification\",class:{ 'cropper-event-notification--visible': _vm.notificationVisible }},[_vm._v(\" \"+_vm._s(_vm.notificationType === 'wheel' ? 'Удерживайте CTRL и начните масштабировать картинку' : 'Используйте два пальца, чтобы переместить обрезку')+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport debounce from 'lodash.debounce'\nimport { TransformableImage } from 'vue-advanced-cropper'\n\nexport default {\n components: {\n TransformableImage,\n },\n props: ['touchMove', 'mouseMove', 'touchResize', 'wheelResize'],\n data() {\n return {\n notificationVisible: false,\n notificationType: null,\n }\n },\n created() {\n this.hideNotifications = debounce(() => {\n this.notificationVisible = false\n }, 1000)\n },\n methods: {\n eventsFilter(nativeEvent, transforming) {\n if (\n nativeEvent.type === 'touchstart' ||\n nativeEvent.type === 'touchmove'\n ) {\n if (nativeEvent.touches.length === 1 && !transforming) {\n this.notificationVisible = true\n this.notificationType = 'touch'\n this.hideNotifications()\n return false\n } else {\n this.notificationVisible = false\n }\n } else if (nativeEvent.type === 'wheel') {\n if (!transforming && !nativeEvent.ctrlKey) {\n this.notificationVisible = true\n this.notificationType = 'wheel'\n this.hideNotifications()\n return false\n } else {\n this.notificationVisible = false\n }\n }\n nativeEvent.preventDefault()\n nativeEvent.stopPropagation()\n },\n },\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./CustomBackgroundWrapper.js?vue&type=script&lang=js&external\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./CustomBackgroundWrapper.js?vue&type=script&lang=js&external\"","import { render, staticRenderFns } from \"./CustomBackgroundWrapper.vue?vue&type=template&id=dcc2b18e&scoped=true\"\nimport script from \"./CustomBackgroundWrapper.js?vue&type=script&lang=js&external\"\nexport * from \"./CustomBackgroundWrapper.js?vue&type=script&lang=js&external\"\nimport style0 from \"./CustomBackgroundWrapper.scss?vue&type=style&index=0&id=dcc2b18e&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dcc2b18e\",\n null\n \n)\n\nexport default component.exports","import axios, { Canceler } from 'axios'\nimport debounce from 'lodash.debounce'\nimport { Component, Model, Prop, Ref, Vue } from 'vue-property-decorator'\nimport { Cropper } from 'vue-advanced-cropper'\n\nimport {\n CropperImage,\n CropperImageCoordinates,\n CropperImageProp,\n CropperInstance,\n CropperVisibleArea,\n} from '@/types/cropper'\n\nimport {\n Image,\n ImageTransform,\n ImageTransformModelId,\n SizeImage,\n} from '@/types/image'\nimport cloneObject from '@/helpers/cloneObject'\nimport isEmpty from '@/helpers/isEmpty'\n\nimport ImageCropperPreview from './ImageCropperPreview/ImageCropperPreview.vue'\nimport CustomBackgroundWrapper from './CustomBackgroundWrapper/CustomBackgroundWrapper.vue'\nimport SiriusAPI from '@/api'\nimport nestedFreeze from '@/helpers/nestedFreeze'\n\n@Component({\n components: {\n Cropper,\n CustomBackgroundWrapper,\n ImageCropperPreview,\n },\n})\nexport default class ImageCropper extends Vue {\n @Model('change', { type: Number, default: -1 }) private value!: number\n @Prop({ type: Number }) private readonly containerAspectRatio!: number\n @Prop({ type: Boolean, default: false }) private readonly loading!: boolean\n @Prop({ type: Number })\n private readonly imageTransformModelId?: ImageTransformModelId\n @Prop({ type: Number })\n private readonly imageTransformItemId!: number\n @Prop({ type: Boolean, default: false })\n private readonly selectedPreview!: boolean\n @Prop({ type: String, default: 'blue-grey lighten-5' })\n private readonly backgroundColor!: string\n @Prop({ type: String, default: 'default' }) private readonly place!:\n | 'default'\n | 'detailImage'\n @Prop({ type: Boolean, default: false })\n private readonly hiddenControls!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hiddenButtons!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly noGutters!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly readonlyCropper!: boolean\n @Prop({ type: String, default: '' })\n private readonly titleOneAllImages!: string\n @Prop({ type: Array, required: true })\n private readonly images!: CropperImageProp[]\n\n @Prop({ type: String, default: '' })\n private readonly title!: string\n @Prop({ type: String, default: '' })\n private readonly infoText!: string\n @Prop({ type: Number }) private maxSize?: number\n @Prop({ type: Boolean, default: true }) switchEnabled!: boolean\n @Prop({ type: Boolean, default: true }) buttonsEnabled!: boolean\n @Prop({ type: Boolean, default: true }) isActiveCropper!: boolean\n @Prop({ type: Boolean, default: undefined }) oneImageForAllFormats?: boolean\n @Prop({ type: Boolean, default: false })\n private readonly hidePreviews!: boolean\n @Prop({ type: Boolean, default: false })\n private readonly isShowCloseButton!: boolean\n\n @Ref('cropper') private readonly cropperRef?: CropperInstance\n\n private isReadyCropper = false\n private cropperKey = Date.now()\n private currentImageIndex = -1\n private localOneImageForAllFormats = false\n private currentZoom = 0\n private initialImages: CropperImageProp[] = []\n private localImages: CropperImageProp[] = []\n private alwaysSelectedPreview = false\n private forceUpdateCropperKey = Date.now()\n private queueSaveRequestKeys: Record = {}\n private errorSaveRequestKeys: string[] = []\n private successSaveRequestKeys: string[] = []\n\n private updatingInitialImages = false\n private imageSize = {\n width: 666,\n height: 444,\n }\n\n private visibleArea = {\n width: 666,\n height: 444,\n }\n\n private get imageContainerAspectRatio() {\n if (this.place === 'detailImage') {\n return 1.5\n }\n\n if (this.containerAspectRatio) {\n return this.containerAspectRatio\n }\n\n return this.visibleArea.width / this.visibleArea.height\n }\n\n private get hasChanges() {\n const oldImages = this.initialImages\n const newImages = this.localImages\n\n if (newImages.length === 0 || oldImages.length === 0) {\n return false\n }\n\n const errorSaveRequestKeys = this.errorSaveRequestKeys\n\n return newImages.some((newImage, index) => {\n const oldImage = oldImages[index]\n\n return (\n errorSaveRequestKeys.includes(oldImage.key) ||\n this.hasChangesInImageTransform(oldImage, newImage)\n )\n })\n }\n\n private get currentImage() {\n const image =\n this.localImages[this.currentImageIndex] ||\n this.localImages.find(({ transform: { image_id } }) => !!image_id) ||\n this.localImages[0]\n\n if (!image) return null\n\n return image\n }\n\n private get isDynamicRatio() {\n return !this.currentImage?.aspectRatio\n }\n\n private get currentOriginalImageUrl() {\n return this.currentImage?.transform?.image?.url\n }\n\n private get minWidthImage() {\n if (!this.localOneImageForAllFormats) {\n return this.currentImage?.width\n }\n\n return Math.max(\n ...this.localImages.reduce((acc: number[], { width }) => {\n if (width) {\n acc.push(width)\n }\n return acc\n }, [])\n )\n }\n\n private get minHeightImage() {\n if (!this.localOneImageForAllFormats) {\n return this.currentImage?.height\n }\n\n return Math.max(\n ...this.localImages.reduce((acc: number[], { height }) => {\n if (height) {\n acc.push(height)\n }\n return acc\n }, [])\n )\n }\n\n private get currentAspectRatio() {\n if (!this.currentImage) return\n\n if (this.place === 'detailImage' && this.currentImageIndex === -1) {\n return this.imageContainerAspectRatio\n }\n\n return (\n this.currentImage?.aspectRatio ??\n this.imageSize.width / this.imageSize.height\n )\n }\n\n private get canSaveImage() {\n return !!this.currentImage?.transform.image?.url\n }\n\n private hasChangesInImageTransform(\n oldCropImage: CropperImageProp,\n newCropImage: CropperImageProp\n ) {\n const {\n crop_h: oldCropH,\n crop_w: oldCropW,\n crop_x: oldCropX,\n crop_y: oldCropY,\n image_id: oldImageId,\n } = oldCropImage.transform\n\n const {\n crop_h: newCropH,\n crop_w: newCropW,\n crop_x: newCropX,\n crop_y: newCropY,\n image_id: newImageId,\n } = newCropImage.transform\n\n return (\n oldImageId !== newImageId ||\n [\n [oldCropH, newCropH],\n [oldCropW, newCropW],\n [oldCropX, newCropX],\n [oldCropY, newCropY],\n ].some(([oldVal, newVal]) => {\n oldVal = oldVal || 0\n newVal = newVal || 0\n\n return Math.abs(oldVal - newVal) >= 2\n })\n )\n }\n\n private stencilSize({\n boundaries,\n }: {\n boundaries: { width: number; height: number }\n }) {\n if (this.isDynamicRatio && this.cropperRef) {\n const {\n imageSize: { width: imageWidth, height: imageHeight },\n } = this.cropperRef\n const aspectRatio = imageWidth / imageHeight\n const width = Math.ceil(boundaries.height * aspectRatio)\n\n return {\n width,\n height: boundaries.height,\n }\n }\n\n return {\n width: boundaries.width,\n height: boundaries.height,\n }\n }\n\n private defaultBoundaries({ cropper }: { cropper: HTMLDivElement }) {\n return {\n width: cropper.clientWidth,\n height: cropper.clientHeight,\n }\n }\n\n private defaultSize() {\n if (!this.currentImage || !this.cropperRef) return\n\n const { imageSize } = this.cropperRef\n\n if (this.isDynamicRatio) {\n let width = imageSize.width\n let height = imageSize.height\n\n if (imageSize.width > imageSize.height) {\n width = this.currentImage.transform.crop_w || 0\n height =\n (this.currentImage.transform.crop_w || 0) *\n (imageSize.width / imageSize.height)\n } else {\n height = this.currentImage.transform.crop_h || 0\n width =\n (this.currentImage.transform.crop_h || 0) *\n (imageSize.height / imageSize.width)\n }\n\n width = Math.round(Math.min(width, imageSize.width))\n height = Math.round(Math.min(height, imageSize.height))\n\n return {\n width,\n height,\n }\n }\n\n const { crop_h: cropHeight, crop_w: cropWidth } =\n this.calcDefaultCoordinates({\n aspectRatio: this.currentAspectRatio,\n imgWidth: imageSize.width,\n imgHeight: imageSize.height,\n })\n\n if (this.currentImageIndex === -1) {\n return {\n width: imageSize.width,\n height: imageSize.height,\n }\n }\n\n return {\n width: this.currentImage.transform.crop_w || cropHeight,\n height: this.currentImage.transform.crop_h || cropWidth,\n }\n }\n\n private defaultPosition() {\n if (!this.currentImage || !this.cropperRef) return\n\n const { boundaries, imageSize } = this.cropperRef\n\n if (this.isDynamicRatio) {\n const cropX = this.currentImage.transform.crop_x || 0\n const cropY = this.currentImage.transform.crop_y || 0\n\n const visibleArea = {\n width: 0,\n height: 0,\n }\n\n let cropWidth = 0\n let cropHeight = 0\n let left = this.currentImage.transform.crop_x || 0\n let top = this.currentImage.transform.crop_y || 0\n\n if (imageSize.width > imageSize.height) {\n cropHeight =\n (this.currentImage.transform.crop_w || 0) *\n (imageSize.height / imageSize.width)\n visibleArea.width = this.currentImage.transform.crop_w || 0\n visibleArea.height =\n visibleArea.width * (boundaries.height / boundaries.width)\n\n top = Math.round(\n cropY > 0\n ? (visibleArea.height - cropHeight) / 2 + cropY\n : (imageSize.height - cropHeight) / 2\n )\n } else {\n cropWidth =\n (this.currentImage.transform.crop_h || 0) *\n (imageSize.width / imageSize.height)\n visibleArea.height = this.currentImage.transform.crop_h || 0\n visibleArea.width =\n visibleArea.height * (boundaries.width / boundaries.height)\n\n left = Math.round(\n cropX > 0\n ? (visibleArea.width - cropWidth) / 2 + cropX\n : (imageSize.width - cropWidth) / 2\n )\n }\n\n return {\n left: Math.max(left, 0),\n top: Math.max(top, 0),\n }\n }\n\n const { crop_x: left, crop_y: top } = this.calcDefaultCoordinates({\n aspectRatio: this.currentAspectRatio,\n imgWidth: imageSize.width,\n imgHeight: imageSize.height,\n })\n\n if (this.currentImageIndex === -1) {\n return {\n top,\n left,\n }\n }\n\n return {\n top: this.currentImage.transform.crop_y ?? top,\n left: this.currentImage.transform.crop_x ?? left,\n }\n }\n\n private calcDefaultCoordinates({\n aspectRatio,\n imgHeight,\n imgWidth,\n zoom = 0,\n offsetLeft = 0.5,\n offsetTop = 0.5,\n }: {\n aspectRatio: number | undefined\n imgHeight: number\n imgWidth: number\n zoom?: number\n offsetLeft?: number\n offsetTop?: number\n }): Pick {\n if (!aspectRatio) {\n return { crop_x: 0, crop_y: 0, crop_w: imgWidth, crop_h: imgHeight }\n }\n\n let width = Math.min(Math.ceil(imgHeight * aspectRatio), imgWidth)\n let height = Math.min(Math.ceil(imgWidth / aspectRatio), imgHeight)\n\n width -= Math.round(width * zoom)\n height -= Math.round(height * zoom)\n\n const top = Math.ceil((imgHeight - height) * offsetTop)\n const left = Math.ceil((imgWidth - width) * offsetLeft)\n\n return {\n crop_x: left,\n crop_y: top,\n crop_w: width,\n crop_h: height,\n }\n }\n\n private toggleOneImageForAllFormats(val = !this.localOneImageForAllFormats) {\n this.localOneImageForAllFormats = this.oneImageForAllFormats ?? val\n }\n\n private onClickPreview(e: Event, index: number) {\n const target = e.target as HTMLElement | null\n\n if (target?.closest('.v-btn')) return\n\n this.currentImageIndex =\n !this.alwaysSelectedPreview && this.currentImageIndex === index\n ? -1\n : index\n }\n\n private onCropPreview(index: number) {\n this.currentImageIndex = index\n }\n\n private onReplacePreview(index: number) {\n this.currentImageIndex = index\n\n if (this.currentImageIndex === -1) {\n this.localImages.forEach((image) => {\n image.transform.crop_y = null\n image.transform.crop_x = null\n image.transform.crop_w = null\n image.transform.crop_h = null\n image.transform.image_id = null\n image.transform.image = {\n url: '',\n id: 0,\n }\n })\n\n this.currentImageIndex = -1\n } else {\n const localImage = this.localImages[this.currentImageIndex]\n localImage.transform.crop_y = null\n localImage.transform.crop_x = null\n localImage.transform.crop_w = null\n localImage.transform.crop_h = null\n localImage.transform.image_id = null\n\n localImage.transform.image = {\n url: '',\n id: 0,\n }\n\n this.toggleOneImageForAllFormats(false)\n }\n this.currentZoom = 0\n }\n\n private onCancel() {\n this.forceUpdateCropper()\n this.$emit('cancel')\n }\n\n private forceUpdateCropper() {\n this.forceUpdateCropperKey++\n }\n\n private saveImage(localImage: CropperImageProp) {\n const {\n key: cropImageKey,\n transform: {\n crop_h: cropH,\n crop_w: cropW,\n crop_x: cropX,\n crop_y: cropY,\n image_id: imageId,\n id,\n },\n } = localImage\n\n const canceler = this.queueSaveRequestKeys[cropImageKey]\n\n if (typeof canceler === 'boolean') {\n return\n }\n\n if (typeof canceler === 'function') {\n canceler()\n }\n\n this.errorSaveRequestKeys = this.errorSaveRequestKeys.filter(\n (key) => key !== cropImageKey\n )\n\n this.$set(this.queueSaveRequestKeys, cropImageKey, true)\n\n if (!imageId) {\n this.$nextTick(() => {\n this.$delete(this.queueSaveRequestKeys, cropImageKey)\n })\n\n return\n }\n\n const cancelTokenSource = axios.CancelToken.source()\n\n if (id) {\n this.$set(\n this.queueSaveRequestKeys,\n cropImageKey,\n cancelTokenSource.cancel\n )\n }\n\n const requestPromise = id\n ? SiriusAPI.image.changeImageTransform({\n id,\n crop_h: cropH,\n crop_w: cropW,\n crop_x: cropX,\n crop_y: cropY,\n image_id: imageId,\n model_id: this.imageTransformModelId,\n item_id: this.imageTransformItemId,\n responseStatusOnly: 1,\n cancelToken: cancelTokenSource.token,\n isShowNotify: false,\n })\n : SiriusAPI.image\n .addImageTransform({\n crop_h: cropH,\n crop_w: cropW,\n crop_x: cropX,\n crop_y: cropY,\n image_id: imageId,\n model_id: this.imageTransformModelId,\n item_id: this.imageTransformItemId,\n isShowNotify: false,\n })\n .then(({ item: { id: imageTransformId } }) => {\n localImage.transform.id = imageTransformId\n })\n\n requestPromise\n .then(() => {\n this.$delete(this.queueSaveRequestKeys, cropImageKey)\n\n const hasChanges = [\n {\n oldValue: cropH,\n newValue: localImage.transform.crop_h,\n },\n {\n oldValue: cropW,\n newValue: localImage.transform.crop_w,\n },\n {\n oldValue: cropX,\n newValue: localImage.transform.crop_x,\n },\n {\n oldValue: cropY,\n newValue: localImage.transform.crop_y,\n },\n {\n oldValue: imageId,\n newValue: localImage.transform.image_id,\n },\n ].some(({ oldValue, newValue }) => oldValue !== newValue)\n\n if (hasChanges) {\n this.saveImage(localImage)\n } else {\n this.successSaveRequestKeys.push(cropImageKey)\n this.notification()\n }\n })\n .catch((err) => {\n if (axios.isCancel(err)) return\n this.$delete(this.queueSaveRequestKeys, cropImageKey)\n this.errorSaveRequestKeys.push(cropImageKey)\n\n this.notification()\n })\n .finally(() => {\n if (isEmpty(this.queueSaveRequestKeys)) {\n this.successSaveRequestKeys = []\n\n if (this.errorSaveRequestKeys.length) {\n this.$emit('save:error')\n }\n }\n })\n }\n\n private notification() {\n if (!isEmpty(this.queueSaveRequestKeys)) {\n return\n }\n\n const successSaveRequestKeys = new Set(this.successSaveRequestKeys)\n\n const errorSaveRequestKeys = new Set(this.errorSaveRequestKeys)\n\n let errorMessageText = ''\n let successMessageText = ''\n\n if (errorSaveRequestKeys.size) {\n errorMessageText +=\n errorSaveRequestKeys.size > 1\n ? 'Ошибка сохранения кропов '\n : 'Ошибка сохранения кропа '\n\n errorSaveRequestKeys.forEach((key) => {\n const cropImageDesc = this.localImages.find(\n (image) => image.key === key\n )?.description\n\n if (cropImageDesc) {\n errorMessageText += `«${cropImageDesc}», `\n }\n })\n\n errorMessageText = errorMessageText.trim().replace(/,$/, '')\n }\n\n if (successSaveRequestKeys.size) {\n successMessageText += successSaveRequestKeys.size > 1 ? 'Кропы ' : 'Кроп '\n\n successSaveRequestKeys.forEach((key) => {\n const cropImageDesc = this.localImages.find(\n (image) => image.key === key\n )?.description\n\n if (cropImageDesc) {\n successMessageText += `«${cropImageDesc}», `\n }\n })\n\n successMessageText = successMessageText.trim().replace(/,$/, '')\n\n successMessageText +=\n successSaveRequestKeys.size > 1 ? ' сохранены' : ' сохранен'\n }\n\n if (successMessageText) {\n this.$notify({\n type: 'success',\n title: successMessageText,\n autoCloseTime: 7e3,\n })\n }\n\n if (errorMessageText) {\n this.$notify({\n type: 'error',\n title: errorMessageText,\n autoCloseTime: 0,\n })\n }\n }\n\n private onSave() {\n for (const localImage of this.localImages) {\n const initialImage = this.initialImages.find(\n (image) => image.key === localImage.key\n )\n\n if (\n initialImage &&\n !this.errorSaveRequestKeys.includes(initialImage.key) &&\n !this.hasChangesInImageTransform(initialImage, localImage)\n ) {\n continue\n }\n\n this.saveImage(localImage)\n }\n\n this.initialImages = nestedFreeze(cloneObject(this.localImages))\n\n this.$emit('save:local', this.localImages)\n\n if (this.currentImageIndex === -1) {\n const defaultImageIndex = this.initialImages.findIndex(\n (image) => image.aspectRatio === this.imageContainerAspectRatio\n )\n this.currentImageIndex = defaultImageIndex > -1 ? defaultImageIndex : 0\n }\n }\n\n private onChange({\n coordinates,\n image,\n visibleArea,\n }: {\n coordinates: CropperImageCoordinates\n image: CropperImage\n visibleArea?: CropperVisibleArea\n }) {\n if (!this.currentImage || !visibleArea || !this.cropperRef) return\n\n const currentLocalImage = this.localImages[this.currentImageIndex]\n\n const { imageSize } = this.cropperRef\n\n if (this.isDynamicRatio && this.cropperRef && currentLocalImage) {\n currentLocalImage.transform.crop_h = Math.round(\n Math.min(visibleArea.height, imageSize.height)\n )\n\n currentLocalImage.transform.crop_w = Math.round(\n Math.min(visibleArea.width, imageSize.width)\n )\n\n currentLocalImage.transform.crop_x = Math.round(\n Math.max(visibleArea.left, 0)\n )\n\n currentLocalImage.transform.crop_y = Math.round(\n Math.max(visibleArea.top, 0)\n )\n\n this.currentZoomChange()\n return\n }\n\n const { width, height } = coordinates\n const left = Math.round(Math.max(coordinates.left, 0))\n const top = Math.round(Math.max(coordinates.top, 0))\n let imageForAllFormats: Image | null = null\n\n if (this.localOneImageForAllFormats) {\n imageForAllFormats =\n this.currentImage.transform.image ||\n this.localImages.find(({ transform: { image } }) => image?.id)\n ?.transform.image ||\n null\n }\n\n this.localImages.forEach((localImage, imageIndex) => {\n const transformImage = imageForAllFormats || localImage.transform.image\n\n if (this.currentImageIndex === imageIndex) {\n localImage.transform.crop_x = left\n localImage.transform.crop_y = top\n localImage.transform.crop_w = width\n localImage.transform.crop_h = height\n } else if (\n this.currentImageIndex === -1 ||\n (this.localOneImageForAllFormats &&\n localImage.transform.image?.id !== transformImage?.id)\n ) {\n const reversed = Math.abs(image.transforms.rotate) % 180 > 0\n\n const imageWidth = reversed ? image.height : image.width\n const imageHeight = reversed ? image.width : image.height\n\n let offsetLeft = left / (imageWidth - width)\n let offsetTop = top / (imageHeight - height)\n\n if (Number.isNaN(offsetLeft)) {\n offsetLeft = 0.5\n }\n\n if (Number.isNaN(offsetTop)) {\n offsetTop = 0.5\n }\n\n const { crop_x, crop_y, crop_w, crop_h } = this.calcDefaultCoordinates({\n aspectRatio: localImage.aspectRatio,\n imgWidth: imageWidth,\n imgHeight: imageHeight,\n zoom: this.currentZoom,\n offsetLeft,\n offsetTop,\n })\n\n localImage.transform.crop_x = crop_x\n localImage.transform.crop_y = crop_y\n localImage.transform.crop_w = crop_w\n localImage.transform.crop_h = crop_h\n }\n\n localImage.transform.image = transformImage || null\n localImage.transform.image_id = transformImage?.id || null\n })\n\n this.imageSize.width = image.width\n this.imageSize.height = image.height\n\n this.visibleArea.width = Math.floor(visibleArea.width)\n this.visibleArea.height = Math.floor(visibleArea.height)\n this.currentZoomChange()\n }\n\n private currentZoomChange() {\n const cropper = this.cropperRef\n if (cropper) {\n const { coordinates, imageSize } = cropper\n\n if (\n imageSize.width / imageSize.height >\n coordinates.width / coordinates.height\n ) {\n this.currentZoom =\n (cropper.imageSize.height - cropper.coordinates.height) /\n (cropper.imageSize.height - cropper.sizeRestrictions.minHeight)\n } else {\n this.currentZoom =\n (cropper.imageSize.width - cropper.coordinates.width) /\n (cropper.imageSize.width - cropper.sizeRestrictions.minWidth)\n }\n }\n }\n\n private get controlsConfig() {\n return [\n {\n tooltip: 'Поворот против часовой',\n icon: 'mdi-rotate-left',\n action: 'rotate',\n params: { angle: -90 },\n enabled: false,\n },\n {\n tooltip: 'Поворот по часовой',\n icon: 'mdi-rotate-right',\n action: 'rotate',\n params: { angle: 90 },\n enabled: false,\n },\n {\n tooltip: 'Отразить по горизонтали',\n icon: 'mdi-swap-horizontal',\n action: 'flip',\n params: { vertical: false, horizontal: true },\n enabled: false,\n },\n {\n tooltip: 'Отразить по вертикали',\n icon: 'mdi-swap-vertical',\n action: 'flip',\n params: { vertical: true, horizontal: false },\n enabled: false,\n },\n {\n tooltip:\n this.localOneImageForAllFormats && this.currentImageIndex === -1\n ? 'Удалить все картинки'\n : 'Удалить',\n icon: 'mdi-delete-outline',\n action: 'reset',\n params: null,\n },\n ].filter(({ enabled = true }) => enabled)\n }\n\n private onLoadStart() {\n this.$emit('load:start')\n }\n\n private onLoadImage({ url, id, width, height, ...payload }: SizeImage) {\n if (!this.currentImage) return\n\n this.imageSize.width = width\n this.imageSize.height = height\n\n this.currentZoom = 0\n\n if (this.currentImageIndex > -1 && !this.oneImageForAllFormats) {\n const { crop_h, crop_w, crop_y, crop_x } = this.calcDefaultCoordinates({\n aspectRatio: this.currentAspectRatio,\n imgWidth: width,\n imgHeight: height,\n })\n\n const localImage = this.localImages[this.currentImageIndex]\n\n localImage.transform.image = {\n url,\n id,\n }\n localImage.transform.image_id = id\n localImage.transform.crop_h = crop_h\n localImage.transform.crop_w = crop_w\n localImage.transform.crop_x = crop_x\n localImage.transform.crop_y = crop_y\n } else {\n this.localImages.forEach((localImage) => {\n const { crop_h, crop_w, crop_y, crop_x } = this.calcDefaultCoordinates({\n aspectRatio: localImage?.aspectRatio,\n imgWidth: width,\n imgHeight: height,\n })\n\n localImage.transform.image = {\n url,\n id,\n }\n localImage.transform.image_id = id\n localImage.transform.crop_h = crop_h\n localImage.transform.crop_w = crop_w\n localImage.transform.crop_x = crop_x\n localImage.transform.crop_y = crop_y\n })\n }\n\n this.$emit('load:image', {\n ...payload,\n url,\n id,\n width,\n height,\n key: this.currentImage.key,\n })\n }\n\n private onZoom(value: number) {\n value = value / 100\n\n const cropper = this.cropperRef\n if (cropper) {\n if (cropper.imageSize.height < cropper.imageSize.width) {\n const minHeight = cropper.sizeRestrictions.minHeight\n const imageHeight = cropper.imageSize.height\n\n cropper.zoom(\n (imageHeight - this.currentZoom * (imageHeight - minHeight)) /\n (imageHeight - value * (imageHeight - minHeight))\n )\n } else {\n const minWidth = cropper.sizeRestrictions.minWidth\n const imageWidth = cropper.imageSize.width\n cropper.zoom(\n (imageWidth - this.currentZoom * (imageWidth - minWidth)) /\n (imageWidth - value * (imageWidth - minWidth))\n )\n }\n }\n }\n\n private flip(params: Record) {\n this.cropperRef?.flip(params.horizontal, params.vertical)\n }\n\n private rotate(params: Record) {\n this.cropperRef?.rotate(params.angle)\n }\n\n private controlAction(\n action: string,\n params: Record | null\n ) {\n switch (action) {\n case 'reset':\n this.onReplacePreview(this.currentImageIndex)\n break\n case 'flip':\n this.flip(params as Record)\n break\n case 'rotate':\n this.rotate(params as Record)\n break\n // default:\n // this.move(action)\n }\n }\n\n private closeCropper() {\n this.$emit('close')\n }\n\n private created() {\n const initImages = debounce(() => {\n if (Object.keys(this.queueSaveRequestKeys).length > 0) {\n return\n }\n\n this.initialImages = nestedFreeze(cloneObject(this.images))\n\n this.alwaysSelectedPreview =\n this.selectedPreview ||\n this.initialImages.some(\n ({ transform: { crop_h, crop_w, image } }) =>\n image?.id && crop_h && crop_h > 0 && crop_w && crop_w > 0\n )\n\n this.toggleOneImageForAllFormats(\n this.initialImages.every(\n (image) =>\n image.transform.image?.id ===\n this.initialImages[0].transform.image?.id\n )\n )\n\n this.localImages = cloneObject(this.initialImages)\n\n this.updatingInitialImages = false\n\n this.$nextTick().finally(() => {\n this.cropperKey++\n })\n }, 100)\n\n this.$watch(\n () => {\n return this.images.reduce(\n (\n acc,\n { transform: { image_id, crop_h, crop_w, crop_x, crop_y } }\n ) => {\n acc += `-${image_id}-${crop_h}-${crop_w}-${crop_x}-${crop_y}-`\n\n return acc\n },\n ''\n )\n },\n () => {\n this.updatingInitialImages = true\n }\n )\n\n this.$watch(() => {\n return this.forceUpdateCropperKey\n }, initImages)\n\n this.$watch(\n () => {\n return [\n Object.keys(this.queueSaveRequestKeys).length > 0,\n this.updatingInitialImages,\n ].join('-')\n },\n () => {\n if (this.updatingInitialImages || !this.initialImages.length) {\n initImages()\n }\n },\n { immediate: true }\n )\n\n this.$once('hook:beforeDestroy', () => {\n initImages.cancel()\n })\n }\n\n private mounted() {\n this.$watch(\n () => {\n return [this.value, this.alwaysSelectedPreview].join('-')\n },\n () => {\n if (this.value > -1) {\n this.currentImageIndex = this.value\n } else if (this.alwaysSelectedPreview) {\n const defaultImageIndex = this.initialImages.findIndex(\n (image) => image.aspectRatio === this.imageContainerAspectRatio\n )\n\n this.currentImageIndex =\n defaultImageIndex > -1 ? defaultImageIndex : 0\n } else {\n this.currentImageIndex = -1\n }\n },\n { immediate: true }\n )\n\n const saveCroppers = () => {\n this.localImages.forEach((localImage) => {\n const newImage = cloneObject(localImage)\n\n if (!localImage.transform.image_id) {\n newImage.transform.id = null\n }\n\n this.$emit('save', newImage)\n })\n }\n\n this.$watch(\n () => {\n return !Object.keys(this.queueSaveRequestKeys).length\n },\n (finished) => {\n if (!finished) return\n\n saveCroppers()\n\n this.$emit('save:success', this.localImages)\n }\n )\n\n this.$watch(\n () => {\n return [\n Object.keys(this.queueSaveRequestKeys).length,\n this.updatingInitialImages,\n ].join('-')\n },\n () => {\n const loading = Object.keys(this.queueSaveRequestKeys).length > 0\n\n if (this.updatingInitialImages) {\n if (loading) {\n this.$emit('update:loading', true)\n this.$emit('update:saving', true)\n }\n\n return\n }\n\n this.$emit('update:loading', loading)\n this.$emit('update:saving', loading)\n }\n )\n\n this.$watch('currentImageIndex', (newIndex: number) => {\n this.$emit('change', newIndex)\n })\n\n this.$watch(\n () => {\n return this.cropperKey\n },\n () => {\n this.isReadyCropper = false\n }\n )\n\n this.$watch(\n () => {\n return this.isReadyCropper\n },\n () => {\n if (!this.isReadyCropper) return\n this.$emit('ready')\n }\n )\n }\n\n private beforeDestroy() {\n this.$emit('update:loading', false)\n this.$emit('update:saving', false)\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageCropper.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./ImageCropper.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./ImageCropper.vue?vue&type=template&id=221369b5&scoped=true\"\nimport script from \"./ImageCropper.ts?vue&type=script&lang=ts&external\"\nexport * from \"./ImageCropper.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./ImageCropper.scss?vue&type=style&index=0&id=221369b5&prod&scoped=true&lang=scss&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"221369b5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-date-picker',_vm._g(_vm._b({class:['data-picker', { 'data-picker_no-title': _vm.noTitle }],attrs:{\"value\":_vm.value,\"active-picker\":_vm.activePicker,\"no-title\":_vm.noTitle,\"range\":_vm.range},on:{\"update:activePicker\":function($event){_vm.activePicker=$event},\"update:active-picker\":function($event){_vm.activePicker=$event},\"input\":_vm.onInput}},'v-date-picker',_vm.$attrs,false),_vm.localListeners),[(!_vm.isHiddenBtn)?_c('v-btn',{staticClass:\"ml-3\",attrs:{\"icon\":\"\",\"color\":\"primary\",\"small\":\"\"},on:{\"click\":_vm.setTodayValue}},[_c('v-icon',{attrs:{\"size\":\"18\"}},[_vm._v(\" mdi-calendar-today-outline \")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Prop, Vue, Component, Model } from 'vue-property-decorator'\nimport { format as formatDate, parse as parseDate } from 'date-fns'\n\n@Component({\n inheritAttrs: false,\n})\nexport default class DatePicker extends Vue {\n @Model('input') private readonly value!: string | string[]\n @Prop({ type: Boolean, default: false }) private readonly range!: boolean\n @Prop({ type: Boolean, default: false }) private readonly noTitle!: boolean\n\n private activePicker = ''\n\n private get localListeners() {\n const $listeners = { ...this.$listeners }\n\n delete $listeners.input\n delete $listeners.change\n\n return $listeners\n }\n\n private get isHiddenBtn() {\n return this.activePicker === 'YEAR'\n }\n\n private onInput(value: string | string[]) {\n if (Array.isArray(value)) {\n if (value.length > 1) {\n const startDate = parseDate(value[0], 'yyyy-MM-dd', new Date())\n const endDate = parseDate(value[1], 'yyyy-MM-dd', new Date())\n\n if (startDate.getTime() > endDate.getTime()) {\n value = value.concat().reverse()\n }\n }\n }\n\n this.$emit('input', value)\n this.$emit('change', value)\n }\n\n private setTodayValue() {\n const value = this.range\n ? [\n formatDate(new Date(), 'yyyy-MM-dd'),\n formatDate(new Date(), 'yyyy-MM-dd'),\n ]\n : formatDate(new Date(), 'yyyy-MM-dd')\n\n this.$emit('input', value)\n this.$emit('change', value)\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./DatePicker.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!./DatePicker.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./DatePicker.vue?vue&type=template&id=0afbe72b&scoped=true\"\nimport script from \"./DatePicker.ts?vue&type=script&lang=ts&external\"\nexport * from \"./DatePicker.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./DatePicker.scss?vue&type=style&index=0&id=0afbe72b&prod&lang=scss&scoped=true&external\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0afbe72b\",\n null\n \n)\n\nexport default component.exports"],"names":["ref","staticClass","value","_vm","dense","multiple","disabled","onInput","onFocus","initInfinityLoader","scopedSlots","key","fn","parent","marginBottom","class","_t","attrs","usedInfinityLoader","proxy","directives","isShowInfinityLoaderPagination","_c","staticRenderFns","BaseCombobox","Vue","constructor","args","_defineProperty","searching","page","count","hasMore","loading","items","search","searchKey","Date","now","inited","this","infinityLoader","localItems","length","localLoading","infinityLoadFunction","localListeners","$listeners","input","focus","blur","noDataText","loadItems","async","changedParams","oldValue","newValue","some","forEach","item","push","Object","freeze","err","console","error","intervalId","visibleObserver","infinityLoaderPagination","IntersectionObserver","isIntersecting","threshold","window","setInterval","infinityLoaderPaginationRef","clearInterval","$watch","join","unobserve","observe","immediate","$once","disconnect","selectionFromItems","Array","isArray","$emit","filter","v","autoUpdateValue","comboboxRef","clearableCallback","event","isFocused","onBlur","onUpdateSearchInput","trim","debouncedInfinityLoaderSearch","created","debounce","lazyValue","mounted","onScroll","updateMenuDimensions","addEventListener","passive","removeEventListener","beforeDestroy","cancel","__decorate","Ref","Prop","type","String","Number","Boolean","default","Function","Component","inheritAttrs","component","render","hideTopbar","mdAndUp","breakpoint","topBarTitle","on","toggleSide","hideViewButton","localSaveButtonProps","localHistoryDetailButtonListeners","localSaveButtonListeners","_v","localPublishButtonProps","localPublishButtonListeners","style","width","nativeOn","$event","defineSide","noStyleSidebar","hideSideTitle","sideTitle","EditorContainer","localViewButtonProps","to","href","target","undefined","viewButtonProps","localLinkButtonProps","linkButtonProps","localLinkButtonListeners","onClick","click","publishButtonText","publishButtonProps","text","publishButtonIcon","icon","color","minWidth","listeners","outlined","saveButtonProps","historyDetailButtonProps","saveButtonText","$slots","side","showed","showedSide","_self","_setupProxy","_s","label","required","_e","FormField","hiddenCounter","maxlength","localValue","_g","_b","localConfig","onReady","$attrs","SpellCheck","editor","focusTimeoutId","isActivated","isSettingData","currentText","oldText","spellCheckLoading","spellCheckResult","spellCheckMisspell","newHTML","getWords","htmlToText","editable","getHtml","reduce","acc","word","setHtml","spellCheck","getData","data","axios","useRetry","clearTimeout","setTimeout","fire","bookmark2","getSelection","createBookmarks","setData","callback","selectBookmarks","changeListenner","Editor","isEmptyText","getCountLetters","enabledSpellCheck","config","extraPlugins","includes","ready","split","pluginName","hiddenToolbar","toolbar","inputListenner","valueType","sliceText","start","end","isLoading","debouncedInput","throttle","maxWait","onChangeEditor","onFocusEditor","onBlurEditor","onKeyEditor","keyCode","domEvent","$","metaKey","ctrlKey","range","getRanges","startOffset","endOffset","eventInfo","method","dataValue","decodeHTMLString","pastedText","createRange","moveToElementEditEnd","root","selectRanges","loadingTimeoutId","toolbarEl","document","getElementById","name","opacity","pointerEvents","placeholder","setAttribute","removeAttribute","keys","components","ckeditor","CKEditor","_setup","isLoadingUpdate","disabledSaveButton","$vuetify","xsOnly","Topbar","format","saveDate","isSuccess","requestStatusUpdate","RequestStatus","PENDING","SUCCESS","isNotStart","NOT_STARTED","isError","FAILED","requestStatusFetch","deleteBtnStatus","timeoutId","onClickSave","Watch","isShowLink","widgetIndex","widgetItems","tag","isDisabledLink","widget","title","WidgetsList","url","platform","getPlatform","Getter","selectionLabel","ImageSourceCombobox","imageSources","blurTimeoutId","lazyIsFocused","autofocus","activateMenu","Model","onChangeItemsPerPage","disabledPrevPage","goToPrevPage","goToNextPage","TableFooter","totalPage","Math","ceil","totalCount","itemsPerPage","disabledNextPage","endLength","startLength","max","min","downloadTableData","setLocalItemsPerPage","goToPage","val","isEmpty","isFinite","pageTextFieldRef","toString","saveParamsInUrl","savedInUrl","newUrl","URL","location","searchParams","set","history","replaceState","pageFromQuery","$route","query","itemsPerPageFromQuery","isInteger","itemsPerPageOptions","maxWidth","_u","showedDatePicker","datePickerMin","model","timePickerValue","background","errorMessageIndex","DateTime","Mixins","MoscowTimeMixin","mask","overwrite","lazy","blocks","HH","IMask","placeholderChar","from","maxLength","MM","isShowIcon","isShowInfo","isMoscowTimeZone","rules","time","validTime","parsedDate","date","dateValue","parseDate","isValidDate","formatDate","formatedDate","toLocaleString","day","month","year","datePickerValue","hourStr","minuteStr","hour","minute","isNaN","setHours","setMinutes","timeToInfo","moscowTime","dateToInfo","weekday","timeString","getTime","minDate","datePickerMax","maxDate","dateInputRef","aspectRatio","onDragleave","dragged","inputFileKey","place","ImageUploader","isShowSpinner","pendingRequests","checking","localAcceptFiles","acceptFiles","iconSize","lgAndUp","smAndDown","localInfoText","hiddenInfoText","infoText","minHeight","infoParts","imageDinamicAspectRatio","maxSize","onDragover","e","preventDefault","onDrop","imageJSON","dataTransfer","image","JSON","parse","checked","checkImg","setImage","files","setFiles","onChangeFile","inputFile","file","setFile","checkFile","Promise","resolve","size","$notify","check","height","correctImg","img","Image","src","onload","onerror","addImage","requestId","uniqCid","FormData","append","fileName","uploadFunction","SiriusAPI","id","checkedFile","objectURL","createObjectURL","checkedImg","revokeObjectURL","breadcrumbsItems","BreadCrumbs","platformParams","platformsSettings","find","slug","countVisible","breadcrumbs","path","replace","index","arr","slice","$router","resolved","meta","breadcrumb","link","exact","routeNameMapConfig","content_article","articleNameGetter","content_podcast","podcastNameGetter","content_episode","episodeNameGetter","articleModule","podcastModule","episodeModule","expression","InfiniteScroll","observeTimeoutId","loaderObserver","loaderRef","loadMoreFunc","showedLoader","counterInfo","CounterValue","capitalizeFirstLetter","numWord","debouncedChangeCount","slotName","BaseAutocomplete","getScrollParentEl","node","scrollHeight","clientHeight","parentElement","autocompleteRef","setValue","log","autoScrollIntoView","autoScrollIntoViewTimeoutId","autoScrollIntoViewActive","targetEl","$el","scrollParentEl","targetRect","getBoundingClientRect","containerRect","autoScrollIntoViewOffsetTop","scrollTo","top","scrollTop","behavior","$$v","confirmButtonProps","cancelButtonProps","ConfirmDialog","isMobile","headers","localPage","onUpdatePage","widgetSelect","hiddenEditTooltipText","editTooltipText","hideViewItem","editTooltipNudeRight","$scopedSlots","viewTooltipText","_l","localScopedSlots","slot","header","localDisabledDelete","popUpDeleteSettings","hideFooter","options","props","pagination","localItemsPerPage","DataTable","disabledDelete","userIsAdmin","lastSlotName","lastHeader","deleteSettingsPopup","deleteTitle","first_name","last_name","email","article","isWidget","onUpdateItemsPerPage","userModule","image_cover","contain","image_loaded","localImageUrl","onLoad","ImageUi","randomUUID","localAspectRatio","localImageLoaded","loadedInSeconds","round","performance","performanceNowImageLoad","ENABLED_SENTRY","Sentry","Error","stringify","message","seconds","imageEl","retryLoadImage","retryLoadTimeoutId","onErrorImage","loadImage","onLoadImage","canvas","createElement","offsetWidth","canvasCtx","getContext","imageSmoothingQuality","imageSmoothingEnabled","drawImage","toBlob","imageBlob","remove","requestAnimationFrameId","crossOrigin","divId","cancelAnimationFrame","requestAnimationFrame","initAutoTargetLinkPlugin","getPlatformOrigin","linkInputEl","targetSelectEl","onChangeLinkInputEl","host","origin","dispatchEvent","Event","clearEvents","_","linkDialogEl","parts","dialog","linkPanelEl","targetPanelEl","querySelectorAll","querySelector","destroy","rows","UrlCodeTextarea","localRowHeight","rowHeight","urlCodeFromText","$nextTick","breakXs","sortOff","allowOverflow","rounded","maxHeight","closeOnContentClick","indexOf","_k","onInputCombobox","onChangeCombobox","searchInputVal","showDropdown","syncedLoading","datePicker","onlyOneDayDatePicker","onChangeDatePickerRange","serchFieldValue","selected","sortField","cleanSearchText","FilteredSearchBlock","sortFields","localFilterFieldItems","filterFieldItems","toLowerCase","currentFieldType","searchMode","comboboxVal","currentFieldIndex","fieldType","filterValue","localFilterFields","filterFields","disabledSearchInput","comboboxItems","findIndex","str","setFilter","field","newItems","fieldName","concat","setFilterValue","onChangeSort","isType","sortType","onChangeCurrentFieldIndex","moveSearchInputEl","onChangeComboboxValLength","newLength","oldLength","onSubmitFilterForm","changeFilterValue","currentComboboxItem","isShowDropdown","currentFilterFieldItem","filterText","deleteComboboxVal","fieldIndex","itemEl","searchInputEl","insertAdjacentElement","moveMenu","inputEl","comboboxEl","body","comboboxClassName","setProperty","nudgeLeftMenu","offsetLeft","toggleSortType","getFilter","fullKey","fullVal","formatedFilter","map","separators","separator","list","oneDay","onChangeDate","toLocaleDateString","sort","a","b","setSeconds","filterKey","focusCombobox","onEnterCombobox","newComboboxVal","comboboxItem","newComboboxValIndex","splice","onChangeSearchInputVal","cloneDeep","lazySearch","autocomplete","lastItem","params","withoutSymbol","formatedValue","searchText","searchByText","filterFieldKey","newStr","_cancelToken","source","formatedStr","cancelToken","token","clearCombobox","initLocalStorage","usedFor","onChangeFilterParams","newFullPath","fullPath","localStorage","setItem","storageKey","jsonDataFromStorage","getItem","dataFromStorage","querySearchText","parsedComboboxVal","newComboboxItem","entry","initialSort","getSortField","getSortType","bind","PropSync","getDefaultSort","titleOneAllImages","localImages","imageIndex","currentImageIndex","isShowCloseButton","canSaveImage","isReadyCropper","buttonsEnabled","minHeightImage","lines","resizable","movable","$options","iconColor","currentAspectRatio","isReady","left","transform","hover","hiddenControls","ImageCropperPreview","canReplace","active","titleClassName","crop_w","crop_h","Preview","touchMove","touchResize","mouseMove","wheelResize","eventsFilter","notificationVisible","notificationType","TransformableImage","hideNotifications","methods","nativeEvent","transforming","touches","stopPropagation","ImageCropper","imageContainerAspectRatio","containerAspectRatio","visibleArea","hasChanges","oldImages","initialImages","newImages","errorSaveRequestKeys","newImage","oldImage","hasChangesInImageTransform","currentImage","image_id","isDynamicRatio","currentOriginalImageUrl","minWidthImage","localOneImageForAllFormats","imageSize","oldCropImage","newCropImage","oldCropH","oldCropW","crop_x","oldCropX","crop_y","oldCropY","oldImageId","newCropH","newCropW","newCropX","newCropY","newImageId","oldVal","newVal","abs","stencilSize","boundaries","cropperRef","imageWidth","imageHeight","defaultBoundaries","cropper","clientWidth","defaultSize","cropHeight","cropWidth","calcDefaultCoordinates","imgWidth","imgHeight","defaultPosition","cropX","cropY","zoom","offsetTop","toggleOneImageForAllFormats","oneImageForAllFormats","onClickPreview","closest","alwaysSelectedPreview","onCropPreview","onReplacePreview","localImage","currentZoom","onCancel","forceUpdateCropper","forceUpdateCropperKey","saveImage","cropImageKey","cropH","cropW","imageId","canceler","queueSaveRequestKeys","$set","$delete","cancelTokenSource","requestPromise","changeImageTransform","model_id","imageTransformModelId","item_id","imageTransformItemId","responseStatusOnly","isShowNotify","addImageTransform","then","imageTransformId","successSaveRequestKeys","notification","catch","finally","Set","errorMessageText","successMessageText","cropImageDesc","description","autoCloseTime","onSave","initialImage","nestedFreeze","cloneObject","defaultImageIndex","onChange","coordinates","currentLocalImage","currentZoomChange","imageForAllFormats","transformImage","reversed","transforms","rotate","floor","sizeRestrictions","controlsConfig","tooltip","action","angle","enabled","vertical","horizontal","onLoadStart","payload","onZoom","flip","controlAction","closeCropper","initImages","images","selectedPreview","every","updatingInitialImages","cropperKey","saveCroppers","finished","newIndex","Cropper","CustomBackgroundWrapper","activePicker","DatePicker","change","isHiddenBtn","startDate","endDate","reverse","setTodayValue"],"sourceRoot":""}