{"version":3,"sources":["webpack:///./src/components/certificate-editor.vue","webpack:///./src/data/Object/FileDataSource.ts","webpack:///./src/components/certificate-editor.vue?a088","webpack:///./src/components/certificate-editor.vue?0d06","webpack:///./src/components/certificate-editor.vue?eeaf","webpack:///./src/components/certificate-editor.vue?ece9"],"names":["currentLayer","staticClass","attrs","on","_c","_vm","changePriorities","templateLayer","key","layer","selectItem","edit","remove","ref","fileUploaderVisible","style","dataSource","value","expression","tag","fill","color","draggable","id","handleDragEnd","enabledAnchors","rotateEnabled","directives","name","rawName","fields","model","callback","staticRenderFns","FileDataSource","ObjectDataSource","fileId","url","this","className","data","axios","get","err","layerTypes","CertificateTemplate","Vue","constructor","anchorSize","icons","arrowAll","mdiArrowAll","plus","mdiPlus","cog","mdiCog","delete","mdiTrashCan","pen","mdiPen","upload","mdiUpload","alignLeft","mdiAlignHorizontalLeft","alignCenter","mdiAlignHorizontalCenter","alignRight","mdiAlignHorizontalRight","alignTop","mdiAlignVerticalTop","alignMiddle","mdiAlignVerticalCenter","alignBottom","mdiAlignVerticalBottom","minus","mdiMinus","contextMenu","visible","x","y","shapeName","loaded","sellectedItemName","configKonva","template","templateWidth","templateHeight","fileDataSource","config","ListDataSource","pageIndex","pageSize","orderFieldName","orderFieldDirection","filter","JSON","stringify","fieldName","fieldValue","sourceCahce","fieldNames","caption","sourceId","sources","actions","initFile","base64","file","formData","FormData","append","fileName","fileSize","size","getFontColors","getTypes","getAligns","getFontFamlies","getSources","getFieldNames","filterFieldNames","sourceName","cb","s","find","f","watchSoutceNameForAttrs","outlined","label","disabled","persistentHint","hint","editor","type","getItems","valueKeyName","labelKeyName","small","validations","required","clearable","grid","cols","bindedFieldName","bindedFieldValue","watchers","changeItems","changeAttrs","image","width","height","text","fontSize","fontFamily","align","scaleX","scaleY","rotation","useModel","layerType","lectorIndex","onChangeOriented","documentOrientation","_this$dataSource$mode","_this$dataSource$mode2","transformerNode","transformer","getNode","stage","getStage","selectedNode","findOne","node","nodes","moveToTop","handleDragStart","e","target","prepareAlign","canvasWidth","_this$currentLayer$he","canvasHeight","_this$currentLayer$he2","callBack","update","item","$message","setWidth","Math","round","scale","handleStageMouseDown","updateTransformer","getParent","rect","items","r","l","changePriority","_model$x","_model$y","dataEditor","commonConfig","certificateTemplateId","add","modelWithFile","uploadFile","Object","assign","Image","src","onload","$set","_model$image","length","index","findIndex","window","addEventListener","onWindowResize","layers","push","sort","a","b","priority","$nextTick","canvas","offsetWidth","offsetHeight","destroyed","removeEventListener","transform","canvasParent","event","templateId","clearFile","__decorate","Ref","Prop","default","Watch","deep","Component","components","editable","DataEditorDialog","FileUploaderDialog","component"],"mappings":"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","file":"js/chunk-791dbe99.d2377bc0.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\"}},[(_vm.currentLayer)?_c('div',{staticClass:\"mb-3\"},[_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.alignLeft}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.icons.alignLeft))])],1),_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.alignCeter}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.icons.alignCenter))])],1),_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.alignRight}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.icons.alignRight))])],1),_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.alignTop}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.icons.alignTop))])],1),_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.alignMiddle}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.icons.alignMiddle))])],1),_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.alignBottom}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.icons.alignBottom))])],1)],1):_vm._e(),_c('draggable',{attrs:{\"handle\":\".mover\",\"list\":_vm.templateLayer.items},on:{\"change\":_vm.changePriorities,\"start\":function($event){_vm.drag = true},\"end\":function($event){_vm.drag = false}}},_vm._l((_vm.templateLayer.items),function(layer){return _c('v-alert',{key:layer.id,attrs:{\"color\":_vm.sellectedItemName === layer.name ? 'success' : 'default',\"tile\":\"\",\"elevation\":\"2\"},on:{\"click\":function($event){return _vm.selectItem(layer)}}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"grow\"},[_vm._v(\" \"+_vm._s(layer.caption)+\" \")]),_c('v-col',{staticClass:\"shrink d-flex\"},[_c('v-btn',{staticClass:\"mover\",attrs:{\"icon\":\"\"}},[_c('v-icon',[_vm._v(_vm._s(_vm.icons.arrowAll))])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.edit(layer)}}},[_c('v-icon',[_vm._v(_vm._s(_vm.icons.cog))])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.remove(layer)}}},[_c('v-icon',[_vm._v(_vm._s(_vm.icons.delete))])],1)],1)],1)],1)}),1),_c('v-btn',{attrs:{\"tile\":\"\",\"large\":\"\",\"block\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.add}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.icons.plus)+\" \")]),_vm._v(\" Добавить новый слой \")],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_c('div',{ref:\"canvasParent\",staticClass:\"canvasParent\"},[_c('div',{staticClass:\"buttons\"},[_c('v-btn',{on:{\"click\":function($event){_vm.fileUploaderVisible = true}}},[_c('v-icon',[_vm._v(_vm._s(_vm.icons.upload))])],1),_c('v-btn',{attrs:{\"x-small\":\"\",\"text\":\"\",\"tile\":\"\"},on:{\"click\":_vm.clearTemplate}},[_vm._v(\" Очистить фон \")])],1),_c('div',{ref:\"canvas\",staticClass:\"canvas\",style:(`\n width:${_vm.canvasWidth}px;\n height:${_vm.canvasHeight}px;\n `)},[_c('div',{style:(_vm.dataSource.model.templateId\n ? ` background:url('/api/v1/manage/attachedfile/${_vm.dataSource.model.templateId}/file') center/contain no-repeat; height:100%;`\n : `height:100%;`)},[_c('v-stage',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.dataSource.model.templateId || _vm.templateLayer.items.length > 0\n ),expression:\"\\n dataSource.model.templateId || templateLayer.items.length > 0\\n \"}],ref:\"stage\",attrs:{\"config\":_vm.configKonva},on:{\"mousedown\":_vm.handleStageMouseDown,\"dragstart\":_vm.handleDragStart,\"touchstart\":_vm.handleStageMouseDown}},[_c('v-layer',[_vm._l((_vm.templateLayer.items),function(item){return _c('v-' + item.type,{key:item.id,tag:\"component\",attrs:{\"config\":{\n ...item,\n fill: item.color,\n draggable: true,\n\n id: item.id.toString(),\n }},on:{\"dragend\":function($event){return _vm.handleDragEnd($event, item)},\"transformend\":function($event){return _vm.handleTransformEnd($event, item)}}})}),_c('v-transformer',{ref:\"transformer\",attrs:{\"config\":{\n anchorSize: _vm.anchorSize,\n keepRatio: false,\n enabledAnchors: _vm.enabledAnchors,\n rotateEnabled: _vm.rotateEnabled,\n }}})],2)],1),_c('file-uploader',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.dataSource.model.templateId),expression:\"!dataSource.model.templateId\"}],attrs:{\"show-table\":false},on:{\"upload\":_vm.uploadTemplate}})],1)])])]),_c('data-editor-dialog',{ref:\"dataEditor\",attrs:{\"title\":\"Добавить слой\",\"fields\":_vm.fields,\"model\":_vm.model,\"maxWidth\":900,\"actions\":_vm.actions}}),_c('file-uploader-dialog',{on:{\"upload\":_vm.uploadTemplate},model:{value:(_vm.fileUploaderVisible),callback:function ($$v) {_vm.fileUploaderVisible=$$v},expression:\"fileUploaderVisible\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\nimport axios from \"axios\";\nimport { ObjectDataSource } from \"./ObjecDatatSource\";\n\nexport class FileDataSource extends ObjectDataSource {\n async getFile(fileId: number) {\n try {\n const url = `manage/${this.className}/${fileId}/file`;\n const { data } = await axios.get(url);\n return data;\n } catch (err) {\n throw err;\n }\n }\n}\n","\nimport {\n mdiAlignHorizontalCenter,\n mdiAlignHorizontalLeft,\n mdiAlignHorizontalRight,\n mdiAlignVerticalBottom,\n mdiAlignVerticalCenter,\n mdiAlignVerticalTop,\n mdiArrowAll,\n mdiCog,\n mdiPen,\n mdiPlus,\n mdiMinus,\n mdiTrashCan,\n mdiUpload,\n} from \"@mdi/js\";\nimport { Vue, Component, Ref, Prop, Watch } from \"vue-property-decorator\";\nimport draggable from \"vuedraggable\";\nimport editable from \"@/components/helpers/editable.vue\";\nimport DataEditorDialog from \"@/components/helpers/data/editor-dialog.vue\";\nimport { ObjectDataSource } from \"@/data/Object/ObjecDatatSource\";\nimport FileUploaderDialog from \"@/components/helpers/file-uploader-dialog.vue\";\nimport { FileDataSource } from \"@/data/Object/FileDataSource\";\nimport { ListDataSource } from \"@/data/List/ListDataSource\";\nimport { required } from \"@/cms-services/consts\";\n\nexport enum layerTypes {\n Image,\n Date,\n String,\n}\n\n@Component({\n components: {\n draggable,\n editable,\n DataEditorDialog,\n FileUploaderDialog,\n },\n})\nexport default class CertificateTemplate extends Vue {\n @Ref(\"canvas\") canvas!: HTMLDivElement;\n @Ref(\"canvasParent\") canvasParent!: HTMLDivElement;\n @Ref(\"transformer\") transformer!: any;\n @Ref(\"dataEditor\") dataEditor!: DataEditorDialog;\n @Prop() dataSource!: ObjectDataSource;\n @Prop({ default: 1200 }) documentWidth!: number;\n fileUploaderVisible: boolean = false;\n currentLayer: any = null;\n enabledAnchors: any = null;\n anchorSize: number = 5;\n rotateEnabled: boolean = true;\n icons: any = {\n arrowAll: mdiArrowAll,\n plus: mdiPlus,\n cog: mdiCog,\n delete: mdiTrashCan,\n pen: mdiPen,\n upload: mdiUpload,\n alignLeft: mdiAlignHorizontalLeft,\n alignCenter: mdiAlignHorizontalCenter,\n alignRight: mdiAlignHorizontalRight,\n alignTop: mdiAlignVerticalTop,\n alignMiddle: mdiAlignVerticalCenter,\n alignBottom: mdiAlignVerticalBottom,\n minus: mdiMinus,\n };\n contextMenu: any = {\n visible: false,\n x: null,\n y: null,\n shapeName: null,\n };\n loaded: boolean = false;\n sellectedItemName: any = \"\";\n configKonva = {};\n template: any = null;\n templateWidth: number = 0;\n templateHeight: number = 0;\n fileDataSource: FileDataSource = new FileDataSource({\n className: \"attachedfile\",\n id: 0,\n config: {},\n });\n\n templateLayer: ListDataSource = new ListDataSource({\n className: \"CertificateTemplateLayer\",\n config: {\n pageIndex: 1,\n pageSize: 100,\n orderFieldName: \"Priority\",\n orderFieldDirection: \"ASC\",\n filter: JSON.stringify([\n {\n fieldName: \"certificateTemplateId\",\n fieldValue: this.dataSource.id,\n },\n ]),\n },\n });\n sourceCahce: any = false;\n fieldNames: any = [\n {\n caption: \"ФИО Слушателя\",\n value: \"FullName\",\n sourceId: 1,\n },\n {\n caption: \"Фамилия\",\n value: \"LastName\",\n sourceId: 1,\n },\n {\n caption: \"Имя\",\n value: \"FirstName\",\n sourceId: 1,\n },\n {\n caption: \"Отчество\",\n value: \"Patronymic\",\n sourceId: 1,\n },\n {\n caption: \"Имя и отчество\",\n value: \"FirstNamePatronymic\",\n sourceId: 1,\n },\n {\n caption: \"Фамилия и имя\",\n value: \"LastNameFirstName\",\n sourceId: 1,\n },\n {\n caption: \"ФИО(анг.)\",\n value: \"FullNameInEnglish\",\n sourceId: 1,\n },\n {\n caption: \"Дата\",\n value: \"Date\",\n sourceId: 2,\n },\n {\n caption: \"Печать\",\n value: \"Stamp.File\",\n sourceId: 2,\n },\n\n {\n caption: \"Страна\",\n value: \"Country.Name\",\n sourceId: 2,\n },\n {\n caption: \"Город\",\n value: \"City.Name\",\n sourceId: 2,\n },\n {\n caption: \"ФИО\",\n value: \"FullName\",\n sourceId: 3,\n },\n {\n caption: \"ФИО(анг.)\",\n value: \"FullNameLat\",\n sourceId: 3,\n },\n {\n caption: \"Подпись\",\n value: \"SignatureId\",\n sourceId: 3,\n },\n {\n caption: \"Должность\",\n value: \"JobPosition\",\n sourceId: 3,\n },\n {\n caption: \"Должность(анг.)\",\n value: \"JobPositionLat\",\n sourceId: 3,\n },\n {\n caption: \"Дата\",\n value: \"CreateDate\",\n sourceId: 4,\n },\n {\n caption: \"Город\",\n value: \"City.Name\",\n sourceId: 4,\n },\n ];\n\n sources: any = [\n {\n caption: \"Профиль пользователя\",\n value: \"UserProfile\",\n id: 1,\n },\n {\n caption: \"Сертификат\",\n value: \"EventCertificate\",\n id: 2,\n },\n {\n caption: \"Лекторы\",\n value: \"Lector\",\n id: 3,\n },\n {\n caption: \"Событие\",\n value: \"Event\",\n id: 4,\n },\n ];\n\n @Watch(\"dataSource.model\", { deep: true })\n onChangeOriented(model) {\n const value = model.documentOrientation;\n if (value !== 1 && value !== 0) return;\n this.configKonva =\n value == 0\n ? {\n width: 1200,\n height: 848,\n }\n : {\n width: 848,\n height: 1200,\n };\n }\n\n $message: any;\n\n get canvasWidth() {\n return this.dataSource.model?.documentOrientation == 0 ? 1200 : 848;\n }\n\n get canvasHeight() {\n return this.dataSource.model?.documentOrientation == 0 ? 848 : 1200;\n }\n\n actions: any = {\n initFile: (base64: string, file: any) => {\n const formData = new FormData();\n formData.append(\"file\", file, file.name);\n return {\n fileName: file.name,\n fileSize: file.size,\n base64,\n formData,\n };\n },\n getFontColors: () => [\n {\n caption: \"Красный\",\n color: \"#f00\",\n },\n {\n caption: \"Синий\",\n color: \"#00f\",\n },\n {\n caption: \"Зелнный\",\n color: \"#0f0\",\n },\n {\n caption: \"Чрный\",\n color: \"#000\",\n },\n {\n caption: \"Белый\",\n color: \"#fff\",\n },\n ],\n getTypes: () => [\n {\n caption: \"Текст\",\n id: \"text\",\n },\n {\n caption: \"Изображение\",\n id: \"image\",\n },\n ],\n getAligns: () => [\n {\n caption: \"Влево\",\n name: \"left\",\n },\n {\n caption: \"По центру\",\n name: \"center\",\n },\n {\n caption: \"Вправо\",\n name: \"right\",\n },\n ],\n getFontFamlies: () => [\n {\n caption: \"Arial\",\n },\n {\n caption: \"Times New Roman\",\n },\n ],\n getSources: () => this.sources,\n getFieldNames: () => this.fieldNames,\n filterFieldNames: (model: any) => {\n if (!model.sourceName) return [];\n const cb = (s: any) => s.value == model.sourceName;\n const sourceId = this.sources.find(cb).id;\n return this.fieldNames.filter((f: any) => f.sourceId === sourceId);\n },\n\n watchSoutceNameForAttrs: (model: any) => {\n return !model.sourceName\n ? {\n outlined: true,\n label: \"Название поля *\",\n disabled: true,\n persistentHint: true,\n hint: \"Чтобы выбрать название поля выберите источник данных\",\n }\n : {\n outlined: true,\n label: \"Название поля *\",\n };\n },\n };\n\n fields: any = [\n {\n name: \"type\",\n editor: \"enum\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Что вы хотите добавить ?\",\n },\n config: {\n getItems: \"getTypes\",\n valueKeyName: \"id\",\n labelKeyName: \"caption\",\n attrs: {\n small: true,\n },\n },\n validations: [required()],\n },\n {\n editor: \"string\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Название слоя *\",\n },\n name: \"caption\",\n },\n {\n editor: \"bool\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Использовать поле обьекта\",\n },\n name: \"useModel\",\n config: {\n type: \"checkbox\",\n },\n },\n {\n name: \"sourceName\",\n editor: \"enum\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Источник данных ?\",\n clearable: true,\n },\n grid: { cols: 6 },\n config: {\n getItems: \"getSources\",\n valueKeyName: \"value\",\n labelKeyName: \"caption\",\n type: \"select\",\n },\n validations: [required()],\n bindedFieldName: \"useModel\",\n bindedFieldValue: true,\n },\n {\n name: \"fieldName\",\n editor: \"enum\",\n attrs: {\n outlined: true,\n label: \"Название поля *\",\n },\n grid: { cols: 6 },\n config: {\n getItems: \"getFieldNames\",\n valueKeyName: \"value\",\n labelKeyName: \"caption\",\n type: \"select\",\n },\n validations: [required()],\n bindedFieldName: \"useModel\",\n bindedFieldValue: true,\n watchers: [\n {\n changeItems: \"filterFieldNames\",\n changeAttrs: \"watchSoutceNameForAttrs\",\n },\n ],\n },\n {\n editor: \"number\",\n bindedFieldName: \"sourceName\",\n bindedFieldValue: \"Lector\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Индекс лектора\",\n },\n name: \"lectorIndex\",\n },\n {\n name: \"align\",\n editor: \"enum\",\n bindedFieldName: \"type\",\n bindedFieldValue: \"text\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Выравнивание\",\n },\n config: {\n getItems: \"getAligns\",\n valueKeyName: \"name\",\n labelKeyName: \"caption\",\n type: \"radio\",\n },\n validations: [required()],\n grid: { cols: 6 },\n },\n {\n name: \"color\",\n editor: \"color-selector\",\n bindedFieldName: \"type\",\n bindedFieldValue: \"text\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Цвет шрифта\",\n },\n config: {\n getItems: \"getFontColors\",\n valueKeyName: \"color\",\n labelKeyName: \"caption\",\n type: \"select\",\n },\n grid: { cols: 6 },\n },\n\n {\n editor: \"number\",\n attrs: {\n outlined: true,\n label: \"Ось X *\",\n },\n grid: { cols: 6 },\n name: \"x\",\n },\n {\n editor: \"number\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Ось Y *\",\n },\n grid: { cols: 6 },\n name: \"y\",\n },\n {\n editor: \"number\",\n attrs: {\n outlined: true,\n label: \"Масштаб по X\",\n },\n grid: { cols: 6 },\n name: \"scaleX\",\n },\n {\n editor: \"number\",\n attrs: {\n outlined: true,\n label: \"Масштаб по Y\",\n },\n grid: { cols: 6 },\n name: \"scaleY\",\n },\n {\n editor: \"number\",\n attrs: {\n outlined: true,\n label: \"Ширина *\",\n },\n grid: { cols: 6 },\n name: \"width\",\n validations: [required()],\n },\n {\n editor: \"number\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Высота *\",\n },\n grid: { cols: 6 },\n bindedFieldName: \"type\",\n bindedFieldValue: \"image\",\n name: \"height\",\n },\n {\n editor: \"number\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Врашение\",\n },\n grid: { cols: 6 },\n name: \"rotation\",\n },\n {\n editor: \"file-uploader\",\n name: \"image\",\n bindedFieldName: \"type\",\n bindedFieldValue: \"image\",\n config: {\n initFile: \"initFile\",\n },\n },\n {\n editor: \"string\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Текст *\",\n },\n name: \"text\",\n bindedFieldName: \"type\",\n bindedFieldValue: \"text\",\n validations: [required()],\n },\n {\n name: \"fontFamily\",\n editor: \"enum\",\n bindedFieldName: \"type\",\n bindedFieldValue: \"text\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Шрифт\",\n },\n config: {\n getItems: \"getFontFamlies\",\n valueKeyName: \"caption\",\n labelKeyName: \"caption\",\n type: \"select\",\n },\n validations: [required()],\n },\n {\n editor: \"number\",\n attrs: {\n type: \"text\",\n outlined: true,\n label: \"Размер шрифта\",\n },\n bindedFieldName: \"type\",\n bindedFieldValue: \"text\",\n name: \"fontSize\",\n validations: [required()],\n },\n ];\n\n model: any = {\n type: \"image\",\n image: [],\n width: 300,\n height: 300,\n caption: \"Новый слой\",\n text: \"Тестовый текст\",\n fontSize: 30,\n fontFamily: \"Arial\",\n align: \"center\",\n color: \"#000000\",\n x: 400,\n y: 400,\n scaleX: 1,\n scaleY: 1,\n rotation: 0,\n fieldName: \"\",\n sourceName: \"\",\n useModel: false,\n layerType: null,\n lectorIndex: 0,\n };\n\n selectItem(layer) {\n this.currentLayer = layer;\n\n this.sellectedItemName = layer.name;\n\n const transformerNode = this.transformer.getNode();\n const stage = transformerNode.getStage();\n const selectedNode = stage.findOne(\".\" + layer.name);\n if (selectedNode === transformerNode.node()) {\n return;\n }\n transformerNode.nodes(selectedNode ? [selectedNode] : []);\n transformerNode.moveToTop();\n }\n\n handleDragStart(e) {\n this.sellectedItemName = e.target.name();\n }\n\n async alignLeft() {\n await this.prepareAlign(() => (this.currentLayer.x = 0));\n }\n\n async alignCeter() {\n await this.prepareAlign(\n () =>\n (this.currentLayer.x =\n this.canvasWidth / 2 -\n (this.currentLayer.width * this.currentLayer.scaleX) / 2)\n );\n }\n async alignRight() {\n await this.prepareAlign(\n () =>\n (this.currentLayer.x =\n this.canvasWidth - this.currentLayer.width * this.currentLayer.scaleX)\n );\n }\n async alignTop() {\n await this.prepareAlign(() => (this.currentLayer.y = 0));\n }\n async alignMiddle() {\n const height = this.currentLayer.height ?? this.currentLayer.fontSize;\n await this.prepareAlign(\n () =>\n (this.currentLayer.y =\n this.canvasHeight / 2 - (height * this.currentLayer.scaleY) / 2)\n );\n }\n async alignBottom() {\n const height = this.currentLayer.height ?? this.currentLayer.fontSize;\n await this.prepareAlign(\n () =>\n (this.currentLayer.y =\n this.canvasHeight - height * this.currentLayer.scaleY)\n );\n }\n\n async prepareAlign(callBack: Function) {\n if (!this.currentLayer) return;\n callBack();\n this.templateLayer.className =\n this.currentLayer.type == \"image\"\n ? \"CertificateTemplateImageLayer\"\n : \"CertificateTemplateTextLayer\";\n await this.templateLayer.update(this.currentLayer);\n }\n\n async handleDragEnd(e, item) {\n item.x = e.target.x();\n item.y = e.target.y();\n item.rotation = e.target.rotation();\n item.scaleX = e.target.scaleX();\n item.scaleY = e.target.scaleY();\n switch (item.type) {\n case \"image\":\n this.templateLayer.className = \"CertificateTemplateImageLayer\";\n await this.templateLayer.update(item);\n break;\n case \"text\":\n this.templateLayer.className = \"CertificateTemplateTextLayer\";\n await this.templateLayer.update(item);\n break;\n }\n\n this.$message(\"Слой успешно обновлён\");\n }\n\n async handleTransformEnd(e, item) {\n const transformerNode = this.transformer.getNode();\n\n switch (item.type) {\n case \"image\":\n {\n item.x = e.target.x();\n item.y = e.target.y();\n item.rotation = e.target.rotation();\n item.scaleX = e.target.scaleX();\n item.scaleY = e.target.scaleY();\n transformerNode.moveToTop();\n this.templateLayer.className = \"CertificateTemplateImageLayer\";\n await this.templateLayer.update(item);\n }\n break;\n\n case \"text\":\n {\n let scaleX = e.target.scaleX();\n let scaleY = e.target.scaleY();\n\n //console.log(item.width, e.target.width(), scaleX);\n e.target.setWidth(e.target.width() * scaleX);\n item.width = Math.round(e.target.width());\n //e.target.setHeight(item.height * scaleY);\n e.target.scale({ x: 1, y: 1 });\n e.target.scale({ x: 1, y: 1 });\n item.x = e.target.x();\n item.y = e.target.y();\n item.rotation = e.target.rotation();\n item.scaleX = 1; //e.target.scaleX();\n item.scaleY = 1; //e.target.scaleY();\n\n //item.width = item.width * e.target.scaleX();\n //item.height = item.width * e.target.scaleY();\n transformerNode.moveToTop();\n this.templateLayer.className = \"CertificateTemplateTextLayer\";\n //console.log(e);\n await this.templateLayer.update(item);\n }\n break;\n }\n\n this.$message(\"Слой успешно обновлён\");\n }\n\n handleStageMouseDown(e) {\n if (e.target === e.target.getStage()) {\n this.sellectedItemName = \"\";\n this.updateTransformer();\n return;\n }\n\n if (e.target.getParent().className === \"Transformer\") {\n return;\n }\n const name = e.target.name();\n const rect = this.templateLayer.items.find((r) => r.name === name);\n\n this.sellectedItemName = rect ? name : \"\";\n this.currentLayer = this.templateLayer.items.find(\n (l) => l.name === this.sellectedItemName\n );\n\n switch (this.currentLayer.type) {\n case \"text\":\n this.rotateEnabled = false;\n this.enabledAnchors = [\"middle-left\", \"middle-right\"];\n break;\n case \"image\":\n this.rotateEnabled = true;\n this.enabledAnchors = null;\n break;\n }\n this.updateTransformer();\n }\n\n updateTransformer() {\n const transformerNode = this.transformer.getNode();\n\n const stage = transformerNode.getStage();\n const selectedNode = stage.findOne(\".\" + this.sellectedItemName);\n if (selectedNode === transformerNode.node()) {\n return;\n }\n transformerNode.nodes(selectedNode ? [selectedNode] : []);\n transformerNode.moveToTop();\n }\n\n async changePriorities() {\n this.templateLayer.className = \"CertificateTemplateLayer\";\n await this.templateLayer.changePriority();\n }\n\n async add() {\n const model: any = await this.dataEditor.update(this.model);\n if (!model) return;\n const commonConfig = {\n certificateTemplateId: this.dataSource.id,\n type: model.type,\n x: model.x ?? 100,\n y: model.y ?? 100,\n caption: model.caption,\n rotation: 0,\n scaleX: 1,\n scaleY: 1,\n useModel: model.useModel,\n sourceName: model.sourceName,\n fieldName: model.fieldName,\n width: model.width,\n lectorIndex: model.lectorIndex,\n };\n switch (model.type) {\n case \"text\":\n this.templateLayer.className = \"CertificateTemplateTextLayer\";\n\n await this.templateLayer.add({\n ...commonConfig,\n text: model.text,\n color: model.color,\n align: model.align,\n fontSize: model.fontSize,\n fontFamily: model.fontFamily,\n fill: \"black\",\n });\n break;\n\n case \"image\":\n this.templateLayer.className = \"CertificateTemplateImageLayer\";\n const data = await this.templateLayer.add({\n ...commonConfig,\n height: model.height,\n });\n const modelWithFile = await this.templateLayer.uploadFile(\n data.id,\n model.image[0].formData\n );\n const item = this.templateLayer.items.find((x) => x.id === data.id);\n Object.assign(item, modelWithFile.model);\n const image = new Image();\n image.src = model.image[0].base64;\n image.onload = () => {\n this.$set(item, \"image\", image);\n };\n\n break;\n }\n\n this.$message(\"Слой успешно добавлен\");\n }\n\n async edit(layer) {\n const model: any = await this.dataEditor.update({ ...layer, image: [] });\n if (!model) return;\n layer.caption = model.caption;\n layer.x = model.x;\n layer.y = model.y;\n layer.type = model.type;\n layer.rotation = model.rotation;\n layer.fieldName = model.fieldName;\n layer.width = model.width;\n layer.useModel = model.useModel;\n layer.sourceName = model.sourceName;\n layer.lectorIndex = model.lectorIndex;\n switch (model.type) {\n case \"text\":\n this.templateLayer.className = \"CertificateTemplateTextLayer\";\n layer.align = model.align;\n layer.color = model.color;\n layer.fontFamily = model.fontFamily;\n layer.fontSize = model.fontSize;\n layer.text = model.text;\n await this.templateLayer.update(layer);\n break;\n\n case \"image\":\n this.templateLayer.className = \"CertificateTemplateImageLayer\";\n layer.scaleX = model.scaleX;\n layer.scaleY = model.scaleY;\n layer.height = model.height;\n await this.templateLayer.update(layer);\n if (!(model.image?.length > 0)) return;\n await this.templateLayer.uploadFile(layer.id, model.image[0].formData);\n const index = this.templateLayer.items.findIndex(\n (x) => x.id === layer.id\n );\n const image = new Image();\n image.src = model.image[0].base64;\n image.onload = () => {\n this.templateLayer.items[index].image = image;\n };\n break;\n }\n\n this.$message(\"Слой успешно обновлён\");\n }\n\n async created() {\n window.addEventListener(\"resize\", this.onWindowResize);\n await this.templateLayer.get();\n\n const layers: any = [];\n for (const layer of this.templateLayer.items) {\n switch (layer.type) {\n case \"text\":\n layers.push(layer);\n break;\n\n case \"image\":\n const image = new Image();\n if (layer.fileId) {\n image.src = `/api/v1/manage/attachedfile/${layer.fileId}/file`;\n image.onload = () => {\n layers.push({\n ...layer,\n image,\n });\n };\n } else {\n layers.push({\n ...layer,\n image,\n });\n }\n break;\n }\n }\n this.templateLayer.items = layers.sort((a, b) => a.priority - b.priority);\n\n await this.$nextTick();\n this.onWindowResize();\n this.configKonva = {\n width: this.canvas.offsetWidth,\n height: this.canvas.offsetHeight,\n };\n }\n\n destroyed() {\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n\n onWindowResize() {\n this.canvas.style.transform = `scale( ${\n this.canvasParent.offsetWidth / 1200\n })`;\n }\n\n async uploadTemplate(event: any) {\n try {\n const data = await this.dataSource.uploadFile(event);\n // this.template = data?.fileContents\n // ? `data:${data.contentType};base64,${data?.fileContents}`\n // : null;\n this.model.templateId = data.id;\n this.$message(\"Шаблон успешно загружен\");\n this.fileUploaderVisible = false;\n } catch (err) {\n throw err;\n }\n }\n\n async clearTemplate(event: any) {\n try {\n await this.dataSource.clearFile(event);\n\n this.model.template = null;\n this.$message(\"Шаблон успешно очищен\");\n } catch (err) {\n throw err;\n }\n }\n\n async remove(layer: any) {\n await this.templateLayer.remove(layer.id);\n this.$message(\"Слой успешно удалён\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./certificate-editor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./certificate-editor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./certificate-editor.vue?vue&type=template&id=0e4d8228\"\nimport script from \"./certificate-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./certificate-editor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./certificate-editor.vue?vue&type=style&index=0&id=0e4d8228&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/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","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./certificate-editor.vue?vue&type=style&index=0&id=0e4d8228&prod&lang=scss\""],"sourceRoot":""}