forked from dreygur/XDPlugins
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
1 lines (1 loc) · 11.6 KB
/
main.js
1
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";const{selection:r,Rectangle:i,Color:o,Line:a,Group:s}=n(1),{editDocument:l}=n(2);let c=n(3);const{alert:u}=n(4);let d,p=!0;e.exports={panels:{borderControl:{show:function(e){d||e.node.appendChild(function(){function e(e){var t={left:"#txtL",right:"#txtR",top:"#txtU",bottom:"#txtD"};const n=d.querySelectorAll(".side");for(var r=0;r<n.length;r++){let e=n[r].id;d.querySelector("img.left").src="./images/icons/left-disabled.svg",d.querySelector("img.right").src="./images/icons/right-disabled.svg",d.querySelector("img.top").src="./images/icons/top-disabled.svg",d.querySelector("img.bottom").src="./images/icons/bottom-disabled.svg",d.querySelector(t[e]).disabled=!0,d.querySelector(t[e]).value=0}"#txtL"==e&&(d.querySelector("img.left").src="./images/icons/left.svg"),"#txtR"==e&&(d.querySelector("img.right").src="./images/icons/right.svg"),"#txtU"==e&&(d.querySelector("img.top").src="./images/icons/top.svg"),"#txtD"==e&&(d.querySelector("img.bottom").src="./images/icons/bottom.svg"),d.querySelector(e).disabled=!1,d.querySelector(e).value=1,d.querySelector(e).focus()}return d=document.createElement("div"),d.innerHTML='<style>\n div.row {\n margin-bottom: 10px;\n }\n .break {\n display: flex;\n flex-wrap: nowrap;\n }\n label.row {\n text-align: center;\n width: 25%;\n }\n label.row > div {\n color: #8E8E8E;\n font-size: 14px;\n text-align: center;\n width: 100%;\n }\n label.row input {\n width: 22px; \n }\n [type=radio] { \n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n }\n [type=radio] ~ img {\n width: 24px;\n height: 24px;\n border-radius:4px;\n display: block;\n cursor: pointer;\n }\n\n form {\n margin: 0px;\n padding: 0px;\n }\n .show {\n display: block;\n }\n .hide {\n display: none;\n }\n h2.not-bold {\n font-weight: normal;\n }\n </style>\n\n <form method="dialog" id="main" name="form">\n <div class="row break">\n <h3>SETTINGS</h3>\n </div>\n <div class="row break">\n <h3>Select A Side</h3>\n </div>\n <div class="row break">\n <label class="row">\n <div>\n <input type="radio" name="side" class="side" value="left" id="left">\n <img src="./images/icons/left.svg" class="left">\n </div>\n </label>\n <label class="row">\n <div>\n <input type="radio" name="side" class="side" value="right" id="right">\n <img src="./images/icons/right.svg" class="right">\n </div>\n </label>\n <label class="row">\n <div>\n <input type="radio" name="side" class="side" value="top" id="top">\n <img src="./images/icons/top.svg" class="top">\n </div>\n </label>\n <label class="row">\n <div>\n <input type="radio" name="side" class="side" value="bottom" id="bottom">\n <img src="./images/icons/bottom.svg" class="bottom">\n </div>\n </label>\n </div>\n <div class="row break">\n <h3>Size</h3>\n </div>\n <div class="row break">\n <label class="row">\n <input type="number" uxp-quiet="true" id="txtL" value="0" placeholder="0" disabled>\n </label>\n <label class="row">\n <input type="number" uxp-quiet="true" id="txtR" value="0" placeholder="0" disabled>\n </label>\n <label class="row">\n <input type="number" uxp-quiet="true" id="txtU" value="0" placeholder="0" disabled>\n </label>\n <label class="row">\n <input type="number" uxp-quiet="true" id="txtD" value="0" placeholder="0" disabled>\n </label>\n </div>\n <footer><button id="ok" type="submit" uxp-variant="cta">Apply</button></footer>\n </form>\n <p id="warning"><strong>Warning!</strong>:<br>This plugin requires you to draw or select a rectangle first. Please select or draw a rectangle.</p>\n <p id="group">Your border has been added.</p>\n ',d.querySelector("form").addEventListener("submit",(function(){l({editLabel:"Add Border"},e=>{const t=r.items[0],n=document.querySelectorAll('input[name="side"]'),i=t.width,s=t.height,l=t.globalBounds.y,d=t.globalBounds.x;let p,m,g,b,f,h,y;for(const e of n)if(e.checked)switch(m=e.value,m){case"left":p=parseInt(document.querySelector("#txtL").value),g=p/2,f=l,y=l+s,b=d-g,h=d-g;break;case"right":p=parseInt(document.querySelector("#txtR").value),g=p/2,f=l,y=l+s,b=d+i+g,h=d+i+g;break;case"top":p=parseInt(document.querySelector("#txtU").value),g=p/2,f=l-g,y=l-g,b=d,h=d+i;break;case"bottom":p=parseInt(document.querySelector("#txtD").value),g=p/2,f=l+s+g,y=l+s+g,b=d,h=d+i;break;default:u("Please select a side, and border width.")}const v=new a;v.setStartEnd(b,f,h,y),v.strokeEnabled=!0,v.stroke=new o("Black"),v.strokeWidth=p,r.editContext.addChild(v),r.items=[t,v],c.group();r.items[0]})})),d.querySelector("#left").addEventListener("change",(function(){e("#txtL")})),d.querySelector("#right").addEventListener("change",(function(){e("#txtR")})),d.querySelector("#top").addEventListener("change",(function(){e("#txtU")})),d.querySelector("#bottom").addEventListener("change",(function(){e("#txtD")})),d}())},hide:function(e){},update:function(){const e=document.querySelector("form"),t=document.querySelector("#warning"),n=document.querySelector("#group");r&&r.items[0]instanceof i?(e.className="show",t.className="hide",n.className="hide"):r.items[0]instanceof s?(!function(){var e={left:"#txtL",right:"#txtR",top:"#txtU",bottom:"#txtD"};const t=d.querySelectorAll(".side");for(var n=0;n<t.length;n++){t[n].checked=!1;let r=t[n].id;d.querySelector(e[r]).disabled=!0,d.querySelector(e[r]).value=0}d.querySelector("img.left").src="./images/icons/left.svg",d.querySelector("img.right").src="./images/icons/right.svg",d.querySelector("img.top").src="./images/icons/top.svg",d.querySelector("img.bottom").src="./images/icons/bottom.svg"}(),e.className="hide",t.className="hide",n.className="show"):(e.className="hide",t.className="show",n.className="hide",p&&(u("This plugin requires you to draw or select a rectangle first. Please select or draw a rectangle."),p=!1))}}}}},function(e,t){e.exports=require("scenegraph")},function(e,t){e.exports=require("application")},function(e,t){e.exports=require("commands")},function(e,t,n){"use strict";const{getManifest:r,getNearestIcon:i}=n(5);let o;async function a({title:e,icon:t="plugin-icon",msgs:n,prompt:a,multiline:s=!1,render:l,template:c,isError:u=!1,buttons:d=[{label:"Close",variant:"cta",type:"submit"}]}={},p=360,m="auto",g=18){let b=Array.isArray(n)?n:[n];try{o||(o=await r())}catch(e){}let f=!1;"plugin-icon"===t&&o.icons&&(f=!0,t=i(o,g=24));const h=document.createElement("dialog");h.innerHTML=`\n<style>\n form {\n width: ${p}px;\n }\n .h1 {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n }\n .h1 img {\n width: ${g}px;\n height: ${g}px;\n flex: 0 0 ${g}px;\n padding: 0;\n margin: 0;\n }\n img.plugin-icon {\n border-radius: 4px;\n overflow: hidden;\n }\n .list {\n display: flex;\n flex-direction: row;\n }\n .list .margin {\n margin-bottom: 0;\n margin-left: 0;\n }\n .list span {\n flex: 0 0 auto;\n border: 1px solid transparent;\n }\n .list .bullet {\n text-align: center;\n }\n .list + .list {\n margin-top: 0;\n }\n textarea {\n height: 200px;\n }\n .container {\n zoverflow-x: hidden;\n overflow-y: auto;\n height: ${"auto"===m?m:m+"px"};\n }\n</style>\n<form method="dialog">\n <h1 class="h1">\n <span ${u?'class="color-red"':""}>${e}</span>\n ${t?`<img ${f?`class="plugin-icon" title="${o.name}"`:""} src="${t}" />`:""}\n </h1>\n <hr />\n <div class="container">\n ${!l&&(c?c():b.map(e=>function e(t){if(Array.isArray(t))return t.map(t=>e(t)).join("");if("string"!=typeof t)return e(""+t);let n=t;n="##"===n.substr(0,2)?`<h3>${n.substr(2).trim().toUpperCase()}</h3>`:"#"===n.substr(0,1)?`<h2>${n.substr(1).trim()}</h2>`:"* "===n.substr(0,2)?`<p class="list"><span class="bullet margin">•</span><span class="margin">${n.substr(2).trim()}</span></p>`:"----"===n.substr(0,4)?'<hr class="small"/>'+n.substr(5).trim():"---"===n.substr(0,3)?"<hr/>"+n.substr(4).trim():`<p>${n.trim()}</p>`;const r=/\[([^\]]*)\]\(([^\)]*)\)/,i=t.match(r);if(i){const e=i[1];n=`<p><a href="${i[2]}">${n.replace(r,e).replace(/\<\|?p\>/g,"")}</a></p>`}return n}(e)).join("")+(a?`<label>${s?`<textarea id="prompt" placeholder="${a}"></textarea>`:`<input type="text" id="prompt" placeholder="${a}" />`}</label>`:""))}\n </div>\n <footer>\n ${d.map(({label:e,type:t,variant:n}={},r)=>`<button id="btn${r}" type="${t}" uxp-variant="${n}">${e}</button>`).join("")}\n </footer>\n</form>\n `,l&&h.querySelector(".container").appendChild(l());let y=-1,v=-1,x=-1;h.querySelector("form").onsubmit=()=>h.close("ok"),d.forEach(({type:e,variant:t}={},n)=>{const r=h.querySelector("#btn"+n);"submit"!==e&&"cta"!==t||(y=n),"reset"===e&&(v=n),r.onclick=e=>{e.preventDefault(),x=n,h.close(n===v?"reasonCanceled":"ok")}});try{document.appendChild(h);return"reasonCanceled"===await h.showModal()?{which:v,value:""}:(-1===x&&(x=y),{which:x,value:a?h.querySelector("#prompt").value:""})}catch(e){return{which:v,value:""}}finally{h.remove()}}e.exports={createDialog:a,alert:async function(e,...t){return a({title:e,msgs:t})},error:async function(e,...t){return a({title:e,isError:!0,msgs:t})},confirm:async function(e,t,n=["Cancel","OK"]){return a({title:e,msgs:[t],buttons:[{label:n[0],type:"reset",variant:"primary"},{label:n[1],type:"submit",variant:"cta"}]})},warning:async function(e,t,n=["Cancel","OK"]){return a({title:e,msgs:[t],buttons:[{label:n[0],type:"submit",variant:"primary"},{label:n[1],type:"button",variant:"warning"}]})},prompt:async function(e,t,n,r=["Cancel","OK"],i=!1){return a({title:e,msgs:[t],prompt:n,multiline:i,buttons:[{label:r[0],type:"reset",variant:"primary"},{label:r[1],type:"submit",variant:"cta"}]})}}},function(e,t,n){"use strict";let r;e.exports={getManifest:async function(){if(!r){const e=n(6).storage.localFileSystem,t=await e.getPluginFolder(),i=await t.getEntry("manifest.json");if(i){const e=await i.read();r=JSON.parse(e)}}return r},getNearestIcon:function(e,t){if(e&&e.icons){return e.icons.sort((e,t)=>{const n=e.width,r=t.width;return n<r?1:n>r?-1:0}).reduce((e,n)=>(e?n.width>=t&&(e=n):e=n,e)).path}}}},function(e,t){e.exports=require("uxp")}]);