{"version":3,"file":"spa-static/js/chunk-common-components.0965dc5f.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 { formatDate } from '@/lib/date'\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 = formatDate(new Date(), 'dd.MM.yyyy HH:mm')\n private timeoutId = 0\n\n private get saveDate() {\n return this.isSuccess ? formatDate(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'\n\nimport { parseDate, formatDate, isValidDate } from '@/lib/date'\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 { formatDate, parseDate } from '@/lib/date'\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 { Vue, Component, Prop, Model } from 'vue-property-decorator'\nimport { formatDate, parseDate } from '../../lib/date'\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","formatDate","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","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":""}