1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["chunks/image-editor-CRzixYg4.js","chunks/polyfazer-app-DumDTOPg.js","chunks/main-BEpca-0G.js","assets/polyfazer-app-BxOL82Ft.css","chunks/image-frame-DZbP5vtK.js"])))=>i.map(i=>d[i]); 2import{ar as d,A as l,_ as n,Q as p}from"./main-BEpca-0G.js";import{P as m,h as c,i as r,a as g,c as h}from"./polyfazer-app-DumDTOPg.js";import{D as v}from"./diamond-section-behavior-oUm0C5jt.js";import{d as a}from"./device-template-services-Wd9yh4_Q.js";import{V as u}from"./vaadin-upload-behavior-CDR7CRnJ.js";import"./image-frame-DZbP5vtK.js";import{L as f}from"./lang-helper-behavior-D3p_DZHb.js";import"./edit-device-gmlMe8e9.js";import{P as s}from"./page-toolbar-C-8EZufE.js";import"./polymer-utils-B8xivS0d.js";import"./BetterHTML-BN6nzApa.js";import"./BetterTemplateHandling-CTXk4mRb.js";import"./typography-WuKe67Dy.js";import"./vaadin-button-styles-BwN-jsYe.js";import"./ExtendedDate-BLMVein7.js";import"./diamond-collapsible-wrapper-DbPGScyB.js";import"./collapsible-mixin-DFzWPmrp.js";import"./icon-input-CFoseOJ6.js";import"./connector-icons-CU2MvAxY.js";import"./color-input-BIuxQB3Y.js";import"./connector-technical-configuration-DTNg2sUp.js";import"./switch-selector-EfXTexBN.js";import"./BetterPolymerElement-Dg3wVY7D.js";import"./dialog-input-behavior-DcN20D9O.js";import"./select-connector-standard-input-COKOiL7r.js";import"./input-mixin-CrUPo4TG.js";import"./select-connector-standard-Do4iIj-0.js";import"./location-services-B-Yo7g_g.js";import"./date-input-_2aV4Dis.js";import"./vaadin-date-picker-C0nM5XdO.js";import"./dropdown-input-B-nqSpts.js";import"./input-mixin-B41Xo3VN.js";import"./translation-mixin-DzuKWY5M.js";import"./number-input-1Ysiylry.js";import"./event-listeners-mixin-CmUvl9h8.js";import"./diamond-icon-button-AIbsxFeD.js";import"./question-tag-C9ym_uv9.js";import"./tippy-tooltip-BFt4tVnx.js";import"./select-unit-type-input-D_-MR1Mb.js";import"./paper-shrink-menu-C7LnALvz.js";class _ extends v(f(u(m))){static get template(){return c` 3 ${super.template} 4 <style> 5 :host { 6 position: relative; 7 width: 100%; 8 height: 100%; 9 display: block; 10 } 11 12 paper-material { 13 width: 100%; 14 margin-bottom: 30px; 15 min-height: 350px; 16 padding: 20px; 17 } 18 .photos { 19 padding: 15px; 20 flex-wrap: wrap; 21 } 22 23 .photo { 24 height: 100px; 25 width: 130px; 26 margin: 7px; 27 position: relative; 28 background: var(--surface-color); 29 border: 1px solid var(--primary-border-color); 30 border-radius: var(--block-border-radius); 31 padding: 10px; 32 overflow: hidden; 33 } 34 35 .photo:hover .img-overlay { 36 opacity: 1; 37 transition: opacity .2s ease-in; 38 cursor: pointer; 39 } 40 41 .photo .img-overlay { 42 opacity: 0; 43 position: absolute; 44 width: 100%; 45 height: 100%; 46 left: 0; 47 top: 0; 48 z-index: 1; 49 background: rgba(0, 0, 0, .6); 50 display: flex; 51 justify-content: space-around; 52 align-items: center; 53 } 54 55 .img-overlay iron-icon { 56 color: white; 57 } 58 59 .img-overlay iron-icon:hover { 60 color: var(--secondary-color); 61 } 62 63 h2 { 64 margin: 1rem 0; 65 } 66 67 edit-device { 68 --device-details: { 69 background: var(--surface-color); 70 color: var(--on-surface-color); 71 margin: 0 0 10px; 72 padding: 20px; 73 box-shadow: var(--shadow-elevation-2dp_-_box-shadow); 74 }; 75 76 --device-component: { 77 background: var(--surface-color); 78 color: var(--on-surface-color); 79 box-shadow: var(--shadow-elevation-2dp_-_box-shadow); 80 } 81 } 82 </style> 83 84 <page-toolbar 85 pending="[[or(loading, sending)]]" 86 error="[[error]]" 87 return-href="[[getBackRoute(deviceTemplateID, '/device-templates', '/device-templates/%{deviceTemplateID}%')]]" 88 > 89 <paper-shrink-menu slot="action-buttons" show-labels> 90 <template is="dom-if" if="[[deviceTemplateID]]"> 91 ${s.ACTION_BUTTON.delete()} 92 </template> 93 ${s.ACTION_BUTTON.save()} 94 </paper-shrink-menu> 95 </page-toolbar> 96 97 <div class="content-wrap full-height" id="scroll"> 98 <paper-material> 99 <diamond-section-overlay loading="[[loading]]" error="[[error]]" sending="[[sending]]" on-retry="refresh"></diamond-section-overlay> 100 101 <paper-input label="[[_lang('name')]]*" value="{{deviceTemplate.name}}" required></paper-input> 102 103 <div class="photos-section"> 104 <h2>[[_lang('photos')]]</h2> 105 <vaadin-upload 106 id="images" 107 108 ${this.vaadinUploadImageAttributesTemplate()} 109 max-files="10" 110 target="[[getApiUrl()]]/image/upload" 111 112 on-upload-success="_onUploadSuccess" 113 on-upload-request="_onUploadRequest" 114 on-file-reject="_onUploadFileRejected" 115 ></vaadin-upload> 116 117 <div class="photos flex-row vertical-center"> 118 <template is="dom-repeat" items="[[deviceTemplate.images]]" sort="sortByIdDesc"> 119 <div class="photo" image-id$="[[item.id]]"> 120 <div class="img-overlay"> 121 <iron-icon icon="edit" on-click="_openEditImage"></iron-icon> 122 <iron-icon icon="delete" on-click="_deleteImage"></iron-icon> 123 </div> 124 <image-frame image="[[item]]"></image-frame> 125 </div> 126 </template> 127 </div> 128 </div> 129 </paper-material> 130 131 <section hidden$="[[isEqual(1, loading, errorLoading)]]"> 132 <h1>[[_lang('deviceDefinition')]]</h1> 133 134 <edit-device device="{{deviceTemplate.defaultDevice}}" required id="editDevice"></edit-device> 135 </section> 136 </div> 137 138 <dialog-wrapper id="imageEditor" full-screen no-scroll> 139 <image-editor on-image-built="_handleImageEdit"></image-editor> 140 </dialog-wrapper> 141 `}static get properties(){return{as:{value:"deviceTemplate"}}}onPageLeave(){super.onPageLeave(),this.set(this.alias,null)}init(e){window.deviceTemplateEdit=this,this.$.images.files=[],super.init(e,!1),this.getItemID?(this.refresh(),this._focusComponent()):(this.resetFields(),this.updateRoute("device-template-creation"),this.setProperties({deviceTemplate:this.clone(d)}))}refresh(e,...i){super.refresh((...t)=>a.getItemForEdit(...t),...i)}handleData(e){super.handleData(e),this.resetFields(),this._focusComponent()}saveItem(){if(this.checkMandatoryFields())window.toaster.show(this._lang("validationError"));else return super.saveItem((...e)=>a.updateItem(...e),(...e)=>a.createItem(...e))}deleteItem(){return super.deleteItem((...e)=>a.deleteItem(...e),!0,this._lang("deleteEntry"),this._lang("deleteEntryMessage"),this.get("device.name"))}handleGenericActionData(e){super.handleGenericActionData(e,({id:i})=>`/device-templates/${i}`,"/device-templates","device-templates")}
141setPageTitle(e,i){e&&this.updatePageTitleWithValue(e.name)}_onUploadSuccess(e,i){let t=JSON.parse(i.xhr.response);this.push("deviceTemplate.images",t)}_onUploadRequest(e){e.detail.xhr.setRequestHeader("X-AUTH-TOKEN",localStorage.getItem("token"))}_onUploadFileRejected(){window.toaster.show(this._lang("imageUploadedFailed"))}_deleteImage(e){let i=this.getAttr(e,"image-id");return window.confirmDialog({title:this._lang("deleteImage"),message:this._lang("deleteImageMessage")}).then(()=>{r.deleteItem(i).then(()=>{window.toaster.show(this._lang("imageDeletedSuccess")),this.set("deviceTemplate.images",l.removeID(this.get("deviceTemplate.images"),i,!0,!0))})})}_openEditImage(e){let i=this.getAttr(e,"image-id");this.appImport(()=>n(()=>import("./image-editor-CRzixYg4.js"),__vite__mapDeps([0,1,2,3,4])),"/src/elements/tools/image/image-editor.js").then(()=>{this.$.imageEditor.open(i)})}_handleImageEdit(e){let{imageID:i,image:t}=e.detail;this._updateImage(i,t)}_updateImage(e,i){this.$.imageEditor.propagate(t=>t.set("sending",!0)),r.updateItem(e,i).onSuccess(()=>{this.$.imageEditor.close();let t=[...this.get("deviceTemplate.images")];this.set("deviceTemplate.images",[]),g(this,()=>{this.set("deviceTemplate.images",t)}),window.deviceTemplateDetail&&window.deviceTemplateDetail.invalidateExistingData()}).onError(t=>{window.toaster.show({text:t.message,duration:8e3})}).onProgress(t=>{this.$.imageEditor.propagate(o=>{o.set("sendingProgress",t.progress),t.state!==h.FAILED&&o.set("sendingText",this.translateXHRUploadStates(t.state))})}).onFinally(()=>{this.$.imageEditor.propagate(t=>t.set("sending",!1))})}_focusComponent(){let e=new p(window.location.search).toObject().component;this.$.editDevice.focusComponent(e)}}window.customElements.define("device-template-edit",_); 142//# sourceMappingURL=device-template-edit-B2BZv1cf.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.