-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexportObjectCoordinate_min.js
1 lines (1 loc) · 5.91 KB
/
exportObjectCoordinate_min.js
1
function addAllSuffix(e,t){for(var r,o,a,n=e.length,i=0;i<n;i++)r=e[i],o=t,a=n-i,r.name=r.name+o+a}function removeAllSuffix(e,t){for(var r=0;r<e.length;r++)o=e[r],a=t,o.name=o.name.replace(new RegExp(a+"(.*)","g"),"");var o,a}function getAllObjects(e,t,r){for(var o=[],a=e.pageItems,n=a.length,i=0;i<n;i++){var u=a[i];u&&u.name.match(new RegExp(t,"g"))&&(u.cusZIndex=n-i,o.push(u))}return o}function getMetaData(e){for(var t=[],r=0;r<e.length;r++){var o=e[r],a={name:o.name,url:"<resource_dir>"+o.name+".svg",x:o.left,y:-1*o.top,width:o.width,height:o.height,zIndex:o.cusZIndex};t.push(a)}return t}function exportSVGs(e,t){var r=e;svgOptions=new ExportOptionsSVG,svgOptions.embedRasterImages=!1,svgOptions.cssProperties=SVGCSSPropertyLocation.PRESENTATIONATTRIBUTES,svgOptions.fontSubsetting=SVGFontSubsetting.None,svgOptions.documentEncoding=SVGDocumentEncoding.UTF8,svgOptions.coordinatePrecision=4,itemsToExport=[],sourceDoc=activeDocument,exportDoc=documents.add(DocumentColorSpace.RGB);var o=new Folder(r);o.exists||o.create();for(var a=0,n=t.length;a<n;a++)i(t[a],r),exportDoc.pageItems.removeAll();function i(e,t){var r,o;r=e.name,(o=e.duplicate(exportDoc,ElementPlacement.PLACEATEND)).hidden=!1,o.name=e.name.slice(0,-4),activeDocument=exportDoc,exportDoc.layers[0].name=" ",function(e,t,r,o,a){e.artboards[0].artboardRect=r;var n=new File(a+t);e.exportFile(n,ExportType.SVG,o)}(exportDoc,r,e.visibleBounds,svgOptions,t)}exportDoc.close(SaveOptions.DONOTSAVECHANGES)}function exportFile(e,t){Number(new Date);var r,o=File(t);if(o.exists){if(!0!==confirm("The file already exists. Should I overwrite it",!0,"titleWINonly"))return!1}else o=new File(t);return""!==o&&(r=o.open("w",void 0,void 0),o.encoding="UTF-8",o.lineFeed="Unix"),!1!==r&&(o.writeln(e),o.close(),!0)}"object"!=typeof JSON&&(JSON={}),function(){"use strict";var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta,rep;function f(e){return e<10?"0"+e:e}function this_value(){return this.valueOf()}function quote(e){return rx_escapable.lastIndex=0,rx_escapable.test(e)?'"'+e.replace(rx_escapable,function(e){var t=meta[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,t){var r,o,a,n,i,u=gap,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof rep&&(f=rep.call(t,e,f)),typeof f){case"string":return quote(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(gap+=indent,i=[],"[object Array]"===Object.prototype.toString.apply(f)){for(n=f.length,r=0;r<n;r+=1)i[r]=str(r,f)||"null";return a=0===i.length?"[]":gap?"[\n"+gap+i.join(",\n"+gap)+"\n"+u+"]":"["+i.join(",")+"]",gap=u,a}if(rep&&"object"==typeof rep)for(n=rep.length,r=0;r<n;r+=1)"string"==typeof rep[r]&&(a=str(o=rep[r],f))&&i.push(quote(o)+(gap?": ":":")+a);else for(o in f)Object.prototype.hasOwnProperty.call(f,o)&&(a=str(o,f))&&i.push(quote(o)+(gap?": ":":")+a);return a=0===i.length?"{}":gap?"{\n"+gap+i.join(",\n"+gap)+"\n"+u+"}":"{"+i.join(",")+"}",gap=u,a}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=this_value,Number.prototype.toJSON=this_value,String.prototype.toJSON=this_value),"function"!=typeof JSON.stringify&&(meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(e,t,r){var o;if(gap="",indent="","number"==typeof r)for(o=0;o<r;o+=1)indent+=" ";else"string"==typeof r&&(indent=r);if(rep=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return str("",{"":e})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){var j;function walk(e,t){var r,o,a=e[t];if(a&&"object"==typeof a)for(r in a)Object.prototype.hasOwnProperty.call(a,r)&&(void 0!==(o=walk(a,r))?a[r]=o:delete a[r]);return reviver.call(e,t,a)}if(text=String(text),rx_dangerous.lastIndex=0,rx_dangerous.test(text)&&(text=text.replace(rx_dangerous,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),rx_one.test(text.replace(rx_two,"@").replace(rx_three,"]").replace(rx_four,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();var activeDocument=app.activeDocument;if(activeDocument){var targetPrefix=prompt("Search for layer with prefix of","the_ptefix"),suffixKey="--",activeDocFilePath=(activeDocument.fullName+"").replace(activeDocument.name,"")+"autoExport/",allObjects=getAllObjects(activeDocument,targetPrefix);addAllSuffix(allObjects,suffixKey);var allObjectMetaData=getMetaData(allObjects);if(exportSVGs(activeDocFilePath,allObjects),removeAllSuffix(allObjects,suffixKey),allObjectMetaData.length>0){var cropBox=activeDocument.cropBox,artboardWidth=cropBox[2],artboardHeight=-1*cropBox[3],exportData={};exportData.artboardSize={width:artboardWidth,height:artboardHeight},exportData.metaData=allObjectMetaData;var exportFileName="metadata.json",metadataExportPath=activeDocFilePath+"metadata.json",exportResult=exportFile(JSON.stringify(exportData,null,2),metadataExportPath);exportResult?alert("Done, all images and metadata of layers with prefix `"+targetPrefix+"` exported to "+metadataExportPath):alert("Export error, please try again")}else alert("Export error, no object found of `"+targetPrefix+"`, please try other layer prefix")}else alert("No active document");