Commit 30e0cbff authored by rockyl's avatar rockyl

节点增加uuid字段

parent 4a712d00
...@@ -3,6 +3,7 @@ import path from 'path'; ...@@ -3,6 +3,7 @@ import path from 'path';
import fs from 'fs-extra'; import fs from 'fs-extra';
import Color from 'color'; import Color from 'color';
import generateUUID from 'uuid/v4'; import generateUUID from 'uuid/v4';
import hash from 'object-hash';
/** /**
* Created by rockyl on 2019-08-09. * Created by rockyl on 2019-08-09.
...@@ -228,18 +229,20 @@ async function execute$1(psdFile, options) { ...@@ -228,18 +229,20 @@ async function execute$1(psdFile, options) {
let viewRoot = { let viewRoot = {
name: path.basename(psdFile, '.psd'), name: path.basename(psdFile, '.psd'),
type: 'node', type: 'node',
uuid: generateUUID(),
}; };
const assets = []; const assets = [];
await walkNode(tree, async function (node, parent) { await walkNode(tree, async function (node, parent) {
const {x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node; const {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;
let properties = { let properties = {
width, height, alpha, visible, width, height, alpha, visible,
}; };
let viewNode = { let viewNode = {
name: node.name, name,
properties, properties,
uuid: generateUUID(),
}; };
if (x !== 0) { if (x !== 0) {
properties.x = x; properties.x = x;
...@@ -248,8 +251,8 @@ async function execute$1(psdFile, options) { ...@@ -248,8 +251,8 @@ async function execute$1(psdFile, options) {
properties.y = y; properties.y = y;
} }
if(typeTool){ if (typeTool) {
let fontInfo= typeTool(); let fontInfo = typeTool();
const fonts = fontInfo.fonts(); const fonts = fontInfo.fonts();
const styles = fontInfo.styles(); const styles = fontInfo.styles();
const {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun; const {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;
...@@ -259,16 +262,16 @@ async function execute$1(psdFile, options) { ...@@ -259,16 +262,16 @@ async function execute$1(psdFile, options) {
fonts, styles, RunLengthArray, fonts, styles, RunLengthArray,
}; };
viewNode.type = 'label'; viewNode.type = 'label';
}else if(solidColor){ } else if (solidColor) {
const {r, g, b} = solidColor(); const {r, g, b} = solidColor();
let color = Color({r, g, b}); let color = Color({r, g, b});
viewNode.type = 'rect'; viewNode.type = 'rect';
properties.fillColor = '#' + color.rgbNumber().toString(16); properties.fillColor = '#' + color.rgbNumber().toString(16);
}else{ } else {
if(node.hasOwnProperty('children')){ if (node.hasOwnProperty('children')) {
viewNode.type = 'node'; viewNode.type = 'node';
}else{ } else {
viewNode.type = 'image'; viewNode.type = 'image';
const uuid = generateUUID(); const uuid = generateUUID();
...@@ -278,12 +281,19 @@ async function execute$1(psdFile, options) { ...@@ -278,12 +281,19 @@ async function execute$1(psdFile, options) {
const imageFilePath = path.join(imagesPath, uuid + ext); const imageFilePath = path.join(imagesPath, uuid + ext);
await fs.ensureDir(path.dirname(imageFilePath)); await fs.ensureDir(path.dirname(imageFilePath));
await node.origin.saveAsPng(imageFilePath); let png = node.origin.toPng();
let buffer = await savePng(png, imageFilePath);
//await node.origin.saveAsPng(imageFilePath);
const hashFileName = hash(buffer);
const hashFilePath = path.join(imagesPath, hashFileName + ext);
await fs.rename(imageFilePath, hashFilePath);
assets.push({ assets.push({
name: uuid, name,
ext, ext,
uuid, uuid,
hash: hashFileName,
}); });
} }
} }
...@@ -303,5 +313,21 @@ async function execute$1(psdFile, options) { ...@@ -303,5 +313,21 @@ async function execute$1(psdFile, options) {
} }
} }
function savePng(png, output) {
return new Promise((resolve, reject) => {
let buffer, buffers = [];
png.pack()
.on('error', reject)
.on('data', (data) => buffers.push(data))
.on('end', () => {
buffer = Buffer.concat(buffers);
})
.pipe(fs.createWriteStream(output))
.on('finish', () => {
resolve(buffer);
});
});
}
export { getTree, execute as toEgret, execute$1 as toZeroing }; export { getTree, execute as toEgret, execute$1 as toZeroing };
//# sourceMappingURL=index.es.js.map //# sourceMappingURL=index.es.js.map
{"version":3,"file":"index.es.js","sources":["../src/psd-tree.js","../src/utils.js","../src/egret.js","../src/zeroing.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-08-09.\n */\n\nconst PSD = require('psd');\n\nexport async function getTree(psdFilePath) {\n\tconst psd = await PSD.open(psdFilePath);\n\tconst root = {};\n\twalk(psd.tree(), root);\n\n\treturn root;\n}\n\nfunction walk(psNode, dataNode) {\n\tconst {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};\n\tconst {left, top, width, height, name, layer: {opacity, visible}} = psNode;\n\tconst x = left - pLeft;\n\tconst y = top - pTop;\n\n\tObject.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});\n\tif (psNode.children() && psNode.children().length > 0){\n\t\tdataNode.children = [];\n\t}\n\n\tlet children = psNode.children();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst childPsNode = children[i];\n\n\t\tconst childDataNode = {};\n\t\tdataNode.children.push(childDataNode);\n\t\twalk(childPsNode, childDataNode)\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n */\n\nexport async function walkNode(node, callback, includeSelf = false) {\n\tif (includeSelf) {\n\t\tawait callback(node, null);\n\t}\n\tif (node.children && node.children.length > 0) {\n\t\tfor (let childNode of node.children) {\n\t\t\tawait callback(childNode, node);\n\t\t\tconst result = await walkNode(childNode, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function walkObject(obj, callback) {\n\tif(typeof obj === \"object\"){\n\t\tfor (let key of Object.keys(obj)) {\n\t\t\tconst value = obj[key];\n\t\t\tawait callback(key, value, obj);\n\t\t\tconst result = await walkObject(value, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n *\n * 导出exml\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode, walkObject} from \"./utils\";\nimport xml from \"xml\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nconst elementTpls = {\n\t'e:Group': [],\n\t'e:Image': {_attr: {source: '{res}'}},\n\t'e:Button': [\n\t\t{_attr: {label: '{1}',}},\n\t\t{\n\t\t\t'e:skinName': [\n\t\t\t\t{\n\t\t\t\t\t'e:Skin': [\n\t\t\t\t\t\t{_attr: {states: 'up,down,disabled'}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Image': {_attr: {width: '100%', height: '100%', source: '{res}'}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Label': {_attr: {id: 'labelDisplay', horizontalCenter: '0', verticalCenter: '0'}},\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\nexport async function execute(psdFile, options) {\n\tconst {skinFilePath, skinClassName, resPath, resGroupName} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tconst exmlRoot = [\n\t\t{\n\t\t\t_attr: {\n\t\t\t\tclass: skinClassName,\n\t\t\t\twidth: tree.width,\n\t\t\t\theight: tree.height,\n\t\t\t\t'xmlns:e': \"http://ns.egret.com/eui\",\n\t\t\t\t'xmlns:w': \"http://ns.egret.com/wing\",\n\t\t\t},\n\t\t},\n\t];\n\tconst exmlData = {\n\t\t'e:Skin': exmlRoot\n\t};\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible} = node;\n\t\tlet attributes = {width, height, alpha, visible};\n\t\tif (x !== 0) {\n\t\t\tattributes.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tattributes.y = y;\n\t\t}\n\t\tlet element;\n\t\tlet tagName;\n\t\tlet imageResName;\n\t\tlet params;\n\n\t\tlet hasChild = node.hasOwnProperty('children');\n\t\tif (hasChild) {\n\t\t\ttagName = 'e:Group';\n\t\t} else {\n\t\t\tconst nameParams = node.name.split('|');\n\t\t\tconst nodeName = nameParams[0];\n\n\t\t\tattributes.name = nodeName;\n\t\t\timageResName = resGroupName + '_' + nodeName;\n\t\t\tconst imageFilePath = path.join(resPath, resGroupName + '_p', nodeName + '.png');\n\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\tif (nameParams.length === 1) {\n\t\t\t\ttagName = 'e:Image';\n\t\t\t} else {\n\t\t\t\tparams = nameParams[1].split(',');\n\t\t\t\ttagName = 'e:' + params[0];\n\t\t\t}\n\n\t\t\t//element[tagName] = {_attr: attributes};\n\t\t}\n\n\t\tlet elementTpl = elementTpls[tagName];\n\t\tlet elementContent;\n\t\tif (elementTpl) {\n\t\t\telementContent = JSON.parse(JSON.stringify(elementTpl));\n\t\t} else {\n\t\t\telementContent = {}\n\t\t}\n\t\telement = {\n\t\t\t[tagName]: elementContent,\n\t\t};\n\n\t\tlet attr;\n\t\tif (Array.isArray(elementContent)) {\n\t\t\tattr = elementContent.find(item => item._attr);\n\t\t\tif (!attr) {\n\t\t\t\tattr = {_attr: {}};\n\t\t\t\telementContent.unshift(attr);\n\t\t\t}\n\t\t} else {\n\t\t\tattr = elementContent;\n\t\t}\n\n\t\tObject.assign(attr._attr, attributes);\n\n\t\tif (imageResName) {\n\t\t\tawait walkObject(element, function (key, value, obj) {\n\t\t\t\tif (value === '{res}') {\n\t\t\t\t\tobj[key] = imageResName;\n\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\tconst result = value.match(/{(\\d+)}/g);\n\t\t\t\t\tif(result){\n\t\t\t\t\t\tfor(let item of result){\n\t\t\t\t\t\t\tconst pi = parseInt(item.match(/{(\\d+)}/)[1]);\n\t\t\t\t\t\t\tvalue = value.replace(item, params[pi])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (hasChild) {\n\t\t\tnode.exmlNode = elementContent;\n\t\t}\n\n\t\tconst exmlNode = parent.exmlNode || exmlRoot;\n\t\texmlNode.push(element);\n\t});\n\n\tlet exmlStr = xml(exmlData, {declaration: true, indent: true});\n\tawait fs.ensureDir(path.dirname(skinFilePath));\n\tawait fs.writeFile(skinFilePath, exmlStr);\n\n}","/**\n * Created by rockyl on 2019-09-26.\n *\n * 导出zeroing的视图\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode} from \"./utils\";\nimport path from 'path'\nimport Color from 'color'\nimport generateUUID from 'uuid/v4'\nimport fs from \"fs-extra\";\n\nexport async function execute(psdFile, options) {\n\tconst {\n\t\timagesPath,\n\t} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tlet viewRoot = {\n\t\tname: path.basename(psdFile, '.psd'),\n\t\ttype: 'node',\n\t};\n\n\tconst assets = [];\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;\n\t\tlet properties = {\n\t\t\twidth, height, alpha, visible,\n\t\t};\n\t\tlet viewNode = {\n\t\t\tname: node.name,\n\t\t\tproperties,\n\t\t};\n\t\tif (x !== 0) {\n\t\t\tproperties.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tproperties.y = y;\n\t\t}\n\n\t\tif(typeTool){\n\t\t\tlet fontInfo= typeTool();\n\t\t\tconst fonts = fontInfo.fonts();\n\t\t\tconst styles = fontInfo.styles();\n\t\t\tconst {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;\n\n\t\t\tproperties.text = fontInfo.textValue;\n\t\t\tproperties.textflow = {\n\t\t\t\tfonts, styles, RunLengthArray,\n\t\t\t};\n\t\t\tviewNode.type = 'label';\n\t\t}else if(solidColor){\n\t\t\tconst {r, g, b} = solidColor();\n\t\t\tlet color = Color({r, g, b});\n\n\t\t\tviewNode.type = 'rect';\n\t\t\tproperties.fillColor = '#' + color.rgbNumber().toString(16);\n\t\t}else{\n\t\t\tif(node.hasOwnProperty('children')){\n\t\t\t\tviewNode.type = 'node';\n\t\t\t}else{\n\t\t\t\tviewNode.type = 'image';\n\n\t\t\t\tconst uuid = generateUUID();\n\t\t\t\tconst ext = '.png';\n\n\t\t\t\tproperties.source = 'asset|' + uuid;\n\n\t\t\t\tconst imageFilePath = path.join(imagesPath, uuid + ext);\n\t\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\t\tassets.push({\n\t\t\t\t\tname: uuid,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tlet viewParent = parent.view || viewRoot;\n\t\tif (!viewParent.hasOwnProperty('children')) {\n\t\t\tviewParent.children = [];\n\t\t}\n\t\tviewParent.children.push(viewNode);\n\n\t\tnode.view = viewNode;\n\t});\n\n\treturn {\n\t\tview: viewRoot,\n\t\tassets,\n\t}\n}\n"],"names":["execute"],"mappings":";;;;;;AAAA;;;;AAIA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;AAE3B,AAAO,eAAe,OAAO,CAAC,WAAW,EAAE;CAC1C,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CACxC,MAAM,IAAI,GAAG,EAAE,CAAC;CAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;;CAEvB,OAAO,IAAI,CAAC;CACZ;;AAED,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;CAC/B,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;CAC9D,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;CAC3E,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;CACvB,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;;CAErB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1J,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;EACrD,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;EACvB;;CAED,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;CACjC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;;EAEhC,MAAM,aAAa,GAAG,EAAE,CAAC;EACzB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACtC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAC;EAChC;CACD;;ACjCD;;;;AAIA,AAAO,eAAe,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE;CACnE,IAAI,WAAW,EAAE;EAChB,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EAC3B;CACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC9C,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;GACpC,MAAM,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;GAChC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;GACnD,IAAI,MAAM,KAAK,IAAI,EAAE;IACpB,MAAM;IACN;GACD;EACD;CACD;;AAED,AAAO,eAAe,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE;CAC/C,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC;EAC1B,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;GACjC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;GACvB,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;GAChC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;GACjD,IAAI,MAAM,KAAK,IAAI,EAAE;IACpB,MAAM;IACN;GACD;EACD;CACD;;AC9BD;;;;;AAKA,AAMA;AACA,MAAM,WAAW,GAAG;CACnB,SAAS,EAAE,EAAE;CACb,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,UAAU,EAAE;EACX,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;EACxB;GACC,YAAY,EAAE;IACb;KACC,QAAQ,EAAE;MACT,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;MACrC;OACC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;OACpE;MACD;OACC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;OACpF;MACD;KACD;IACD;GACD;EACD;CACD,CAAC;;AAEF,AAAO,eAAe,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;CAC/C,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC;;CAErE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;CAEpC,MAAM,QAAQ,GAAG;EAChB;GACC,KAAK,EAAE;IACN,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,0BAA0B;IACrC;GACD;EACD,CAAC;CACF,MAAM,QAAQ,GAAG;EAChB,QAAQ,EAAE,QAAQ;EAClB,CAAC;;CAEF,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,MAAM,EAAE;EAClD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;EACnD,IAAI,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EACjD,IAAI,CAAC,KAAK,CAAC,EAAE;GACZ,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;GACjB;EACD,IAAI,CAAC,KAAK,CAAC,EAAE;GACZ,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;GACjB;EACD,IAAI,OAAO,CAAC;EACZ,IAAI,OAAO,CAAC;EACZ,IAAI,YAAY,CAAC;EACjB,IAAI,MAAM,CAAC;;EAEX,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;EAC/C,IAAI,QAAQ,EAAE;GACb,OAAO,GAAG,SAAS,CAAC;GACpB,MAAM;GACN,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;GACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;;GAE/B,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;GAC3B,YAAY,GAAG,YAAY,GAAG,GAAG,GAAG,QAAQ,CAAC;GAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;GACjF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;GAChD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;;GAE3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO,GAAG,SAAS,CAAC;IACpB,MAAM;IACN,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B;;;GAGD;;EAED,IAAI,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;EACtC,IAAI,cAAc,CAAC;EACnB,IAAI,UAAU,EAAE;GACf,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;GACxD,MAAM;GACN,cAAc,GAAG,GAAE;GACnB;EACD,OAAO,GAAG;GACT,CAAC,OAAO,GAAG,cAAc;GACzB,CAAC;;EAEF,IAAI,IAAI,CAAC;EACT,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;GAClC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;GAC/C,IAAI,CAAC,IAAI,EAAE;IACV,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B;GACD,MAAM;GACN,IAAI,GAAG,cAAc,CAAC;GACtB;;EAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;;EAEtC,IAAI,YAAY,EAAE;GACjB,MAAM,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;IACpD,IAAI,KAAK,KAAK,OAAO,EAAE;KACtB,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;KACxB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KACvC,GAAG,MAAM,CAAC;MACT,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;OACtB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OAC9C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAC;OACvC;MACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;MACjB;KACD;IACD,EAAC;GACF;;EAED,IAAI,QAAQ,EAAE;GACb,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;GAC/B;;EAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;EAC7C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACvB,CAAC,CAAC;;CAEH,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;;;;AC/I3C;;;;;AAKA,AAOA;AACA,AAAO,eAAeA,SAAO,CAAC,OAAO,EAAE,OAAO,EAAE;CAC/C,MAAM;EACL,UAAU;EACV,GAAG,OAAO,CAAC;;CAEZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;CAEpC,IAAI,QAAQ,GAAG;EACd,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;EACpC,IAAI,EAAE,MAAM;EACZ,CAAC;;CAEF,MAAM,MAAM,GAAG,EAAE,CAAC;;CAElB,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,MAAM,EAAE;EAClD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAC5F,IAAI,UAAU,GAAG;GAChB,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;GAC7B,CAAC;EACF,IAAI,QAAQ,GAAG;GACd,IAAI,EAAE,IAAI,CAAC,IAAI;GACf,UAAU;GACV,CAAC;EACF,IAAI,CAAC,KAAK,CAAC,EAAE;GACZ,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;GACjB;EACD,IAAI,CAAC,KAAK,CAAC,EAAE;GACZ,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;GACjB;;EAED,GAAG,QAAQ,CAAC;GACX,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;GACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;GAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;GACjC,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;;GAEjE,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;GACrC,UAAU,CAAC,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,EAAE,cAAc;IAC7B,CAAC;GACF,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;GACxB,KAAK,GAAG,UAAU,CAAC;GACnB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC;GAC/B,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;GAE7B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;GACvB,UAAU,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;GAC5D,IAAI;GACJ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAClC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;IACvB,IAAI;IACJ,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;;IAExB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC;;IAEnB,UAAU,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;;IAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;;IAE3C,MAAM,CAAC,IAAI,CAAC;KACX,IAAI,EAAE,IAAI;KACV,GAAG;KACH,IAAI;KACJ,CAAC,CAAC;IACH;GACD;;EAED,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;EACzC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;GAC3C,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;GACzB;EACD,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;EAEnC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EACrB,CAAC,CAAC;;CAEH,OAAO;EACN,IAAI,EAAE,QAAQ;EACd,MAAM;EACN;CACD;;;;"} {"version":3,"file":"index.es.js","sources":["../src/psd-tree.js","../src/utils.js","../src/egret.js","../src/zeroing.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-08-09.\n */\n\nconst PSD = require('psd');\n\nexport async function getTree(psdFilePath) {\n\tconst psd = await PSD.open(psdFilePath);\n\tconst root = {};\n\twalk(psd.tree(), root);\n\n\treturn root;\n}\n\nfunction walk(psNode, dataNode) {\n\tconst {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};\n\tconst {left, top, width, height, name, layer: {opacity, visible}} = psNode;\n\tconst x = left - pLeft;\n\tconst y = top - pTop;\n\n\tObject.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});\n\tif (psNode.children() && psNode.children().length > 0){\n\t\tdataNode.children = [];\n\t}\n\n\tlet children = psNode.children();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst childPsNode = children[i];\n\n\t\tconst childDataNode = {};\n\t\tdataNode.children.push(childDataNode);\n\t\twalk(childPsNode, childDataNode)\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n */\n\nexport async function walkNode(node, callback, includeSelf = false) {\n\tif (includeSelf) {\n\t\tawait callback(node, null);\n\t}\n\tif (node.children && node.children.length > 0) {\n\t\tfor (let childNode of node.children) {\n\t\t\tawait callback(childNode, node);\n\t\t\tconst result = await walkNode(childNode, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function walkObject(obj, callback) {\n\tif(typeof obj === \"object\"){\n\t\tfor (let key of Object.keys(obj)) {\n\t\t\tconst value = obj[key];\n\t\t\tawait callback(key, value, obj);\n\t\t\tconst result = await walkObject(value, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n *\n * 导出exml\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode, walkObject} from \"./utils\";\nimport xml from \"xml\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nconst elementTpls = {\n\t'e:Group': [],\n\t'e:Image': {_attr: {source: '{res}'}},\n\t'e:Button': [\n\t\t{_attr: {label: '{1}',}},\n\t\t{\n\t\t\t'e:skinName': [\n\t\t\t\t{\n\t\t\t\t\t'e:Skin': [\n\t\t\t\t\t\t{_attr: {states: 'up,down,disabled'}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Image': {_attr: {width: '100%', height: '100%', source: '{res}'}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Label': {_attr: {id: 'labelDisplay', horizontalCenter: '0', verticalCenter: '0'}},\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\nexport async function execute(psdFile, options) {\n\tconst {skinFilePath, skinClassName, resPath, resGroupName} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tconst exmlRoot = [\n\t\t{\n\t\t\t_attr: {\n\t\t\t\tclass: skinClassName,\n\t\t\t\twidth: tree.width,\n\t\t\t\theight: tree.height,\n\t\t\t\t'xmlns:e': \"http://ns.egret.com/eui\",\n\t\t\t\t'xmlns:w': \"http://ns.egret.com/wing\",\n\t\t\t},\n\t\t},\n\t];\n\tconst exmlData = {\n\t\t'e:Skin': exmlRoot\n\t};\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible} = node;\n\t\tlet attributes = {width, height, alpha, visible};\n\t\tif (x !== 0) {\n\t\t\tattributes.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tattributes.y = y;\n\t\t}\n\t\tlet element;\n\t\tlet tagName;\n\t\tlet imageResName;\n\t\tlet params;\n\n\t\tlet hasChild = node.hasOwnProperty('children');\n\t\tif (hasChild) {\n\t\t\ttagName = 'e:Group';\n\t\t} else {\n\t\t\tconst nameParams = node.name.split('|');\n\t\t\tconst nodeName = nameParams[0];\n\n\t\t\tattributes.name = nodeName;\n\t\t\timageResName = resGroupName + '_' + nodeName;\n\t\t\tconst imageFilePath = path.join(resPath, resGroupName + '_p', nodeName + '.png');\n\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\tif (nameParams.length === 1) {\n\t\t\t\ttagName = 'e:Image';\n\t\t\t} else {\n\t\t\t\tparams = nameParams[1].split(',');\n\t\t\t\ttagName = 'e:' + params[0];\n\t\t\t}\n\n\t\t\t//element[tagName] = {_attr: attributes};\n\t\t}\n\n\t\tlet elementTpl = elementTpls[tagName];\n\t\tlet elementContent;\n\t\tif (elementTpl) {\n\t\t\telementContent = JSON.parse(JSON.stringify(elementTpl));\n\t\t} else {\n\t\t\telementContent = {}\n\t\t}\n\t\telement = {\n\t\t\t[tagName]: elementContent,\n\t\t};\n\n\t\tlet attr;\n\t\tif (Array.isArray(elementContent)) {\n\t\t\tattr = elementContent.find(item => item._attr);\n\t\t\tif (!attr) {\n\t\t\t\tattr = {_attr: {}};\n\t\t\t\telementContent.unshift(attr);\n\t\t\t}\n\t\t} else {\n\t\t\tattr = elementContent;\n\t\t}\n\n\t\tObject.assign(attr._attr, attributes);\n\n\t\tif (imageResName) {\n\t\t\tawait walkObject(element, function (key, value, obj) {\n\t\t\t\tif (value === '{res}') {\n\t\t\t\t\tobj[key] = imageResName;\n\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\tconst result = value.match(/{(\\d+)}/g);\n\t\t\t\t\tif(result){\n\t\t\t\t\t\tfor(let item of result){\n\t\t\t\t\t\t\tconst pi = parseInt(item.match(/{(\\d+)}/)[1]);\n\t\t\t\t\t\t\tvalue = value.replace(item, params[pi])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (hasChild) {\n\t\t\tnode.exmlNode = elementContent;\n\t\t}\n\n\t\tconst exmlNode = parent.exmlNode || exmlRoot;\n\t\texmlNode.push(element);\n\t});\n\n\tlet exmlStr = xml(exmlData, {declaration: true, indent: true});\n\tawait fs.ensureDir(path.dirname(skinFilePath));\n\tawait fs.writeFile(skinFilePath, exmlStr);\n\n}","/**\n * Created by rockyl on 2019-09-26.\n *\n * 导出zeroing的视图\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode} from \"./utils\";\nimport path from 'path'\nimport Color from 'color'\nimport generateUUID from 'uuid/v4'\nimport fs from \"fs-extra\";\nimport hash from 'object-hash';\n\nexport async function execute(psdFile, options) {\n\tconst {\n\t\timagesPath,\n\t} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tlet viewRoot = {\n\t\tname: path.basename(psdFile, '.psd'),\n\t\ttype: 'node',\n\t\tuuid: generateUUID(),\n\t};\n\n\tconst assets = [];\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;\n\t\tlet properties = {\n\t\t\twidth, height, alpha, visible,\n\t\t};\n\t\tlet viewNode = {\n\t\t\tname,\n\t\t\tproperties,\n\t\t\tuuid: generateUUID(),\n\t\t};\n\t\tif (x !== 0) {\n\t\t\tproperties.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tproperties.y = y;\n\t\t}\n\n\t\tif (typeTool) {\n\t\t\tlet fontInfo = typeTool();\n\t\t\tconst fonts = fontInfo.fonts();\n\t\t\tconst styles = fontInfo.styles();\n\t\t\tconst {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;\n\n\t\t\tproperties.text = fontInfo.textValue;\n\t\t\tproperties.textflow = {\n\t\t\t\tfonts, styles, RunLengthArray,\n\t\t\t};\n\t\t\tviewNode.type = 'label';\n\t\t} else if (solidColor) {\n\t\t\tconst {r, g, b} = solidColor();\n\t\t\tlet color = Color({r, g, b});\n\n\t\t\tviewNode.type = 'rect';\n\t\t\tproperties.fillColor = '#' + color.rgbNumber().toString(16);\n\t\t} else {\n\t\t\tif (node.hasOwnProperty('children')) {\n\t\t\t\tviewNode.type = 'node';\n\t\t\t} else {\n\t\t\t\tviewNode.type = 'image';\n\n\t\t\t\tconst uuid = generateUUID();\n\t\t\t\tconst ext = '.png';\n\n\t\t\t\tproperties.source = 'asset|' + uuid;\n\n\t\t\t\tconst imageFilePath = path.join(imagesPath, uuid + ext);\n\t\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\t\tlet png = node.origin.toPng();\n\t\t\t\tlet buffer = await savePng(png, imageFilePath);\n\t\t\t\t//await node.origin.saveAsPng(imageFilePath);\n\n\t\t\t\tconst hashFileName = hash(buffer);\n\t\t\t\tconst hashFilePath = path.join(imagesPath, hashFileName + ext);\n\t\t\t\tawait fs.rename(imageFilePath, hashFilePath);\n\n\t\t\t\tassets.push({\n\t\t\t\t\tname,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t\thash: hashFileName,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tlet viewParent = parent.view || viewRoot;\n\t\tif (!viewParent.hasOwnProperty('children')) {\n\t\t\tviewParent.children = [];\n\t\t}\n\t\tviewParent.children.push(viewNode);\n\n\t\tnode.view = viewNode;\n\t});\n\n\treturn {\n\t\tview: viewRoot,\n\t\tassets,\n\t}\n}\n\nfunction savePng(png, output) {\n\treturn new Promise((resolve, reject) => {\n\t\tlet buffer, buffers = [];\n\t\tpng.pack()\n\t\t\t.on('error', reject)\n\t\t\t.on('data', (data) => buffers.push(data))\n\t\t\t.on('end', () => {\n\t\t\t\tbuffer = Buffer.concat(buffers)\n\t\t\t})\n\t\t\t.pipe(fs.createWriteStream(output))\n\t\t\t.on('finish', () => {\n\t\t\t\tresolve(buffer);\n\t\t\t});\n\t});\n}\n"],"names":["execute"],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
...@@ -9,6 +9,7 @@ var path = _interopDefault(require('path')); ...@@ -9,6 +9,7 @@ var path = _interopDefault(require('path'));
var fs = _interopDefault(require('fs-extra')); var fs = _interopDefault(require('fs-extra'));
var Color = _interopDefault(require('color')); var Color = _interopDefault(require('color'));
var generateUUID = _interopDefault(require('uuid/v4')); var generateUUID = _interopDefault(require('uuid/v4'));
var hash = _interopDefault(require('object-hash'));
/** /**
* Created by rockyl on 2019-08-09. * Created by rockyl on 2019-08-09.
...@@ -234,18 +235,20 @@ async function execute$1(psdFile, options) { ...@@ -234,18 +235,20 @@ async function execute$1(psdFile, options) {
let viewRoot = { let viewRoot = {
name: path.basename(psdFile, '.psd'), name: path.basename(psdFile, '.psd'),
type: 'node', type: 'node',
uuid: generateUUID(),
}; };
const assets = []; const assets = [];
await walkNode(tree, async function (node, parent) { await walkNode(tree, async function (node, parent) {
const {x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node; const {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;
let properties = { let properties = {
width, height, alpha, visible, width, height, alpha, visible,
}; };
let viewNode = { let viewNode = {
name: node.name, name,
properties, properties,
uuid: generateUUID(),
}; };
if (x !== 0) { if (x !== 0) {
properties.x = x; properties.x = x;
...@@ -254,8 +257,8 @@ async function execute$1(psdFile, options) { ...@@ -254,8 +257,8 @@ async function execute$1(psdFile, options) {
properties.y = y; properties.y = y;
} }
if(typeTool){ if (typeTool) {
let fontInfo= typeTool(); let fontInfo = typeTool();
const fonts = fontInfo.fonts(); const fonts = fontInfo.fonts();
const styles = fontInfo.styles(); const styles = fontInfo.styles();
const {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun; const {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;
...@@ -265,16 +268,16 @@ async function execute$1(psdFile, options) { ...@@ -265,16 +268,16 @@ async function execute$1(psdFile, options) {
fonts, styles, RunLengthArray, fonts, styles, RunLengthArray,
}; };
viewNode.type = 'label'; viewNode.type = 'label';
}else if(solidColor){ } else if (solidColor) {
const {r, g, b} = solidColor(); const {r, g, b} = solidColor();
let color = Color({r, g, b}); let color = Color({r, g, b});
viewNode.type = 'rect'; viewNode.type = 'rect';
properties.fillColor = '#' + color.rgbNumber().toString(16); properties.fillColor = '#' + color.rgbNumber().toString(16);
}else{ } else {
if(node.hasOwnProperty('children')){ if (node.hasOwnProperty('children')) {
viewNode.type = 'node'; viewNode.type = 'node';
}else{ } else {
viewNode.type = 'image'; viewNode.type = 'image';
const uuid = generateUUID(); const uuid = generateUUID();
...@@ -284,12 +287,19 @@ async function execute$1(psdFile, options) { ...@@ -284,12 +287,19 @@ async function execute$1(psdFile, options) {
const imageFilePath = path.join(imagesPath, uuid + ext); const imageFilePath = path.join(imagesPath, uuid + ext);
await fs.ensureDir(path.dirname(imageFilePath)); await fs.ensureDir(path.dirname(imageFilePath));
await node.origin.saveAsPng(imageFilePath); let png = node.origin.toPng();
let buffer = await savePng(png, imageFilePath);
//await node.origin.saveAsPng(imageFilePath);
const hashFileName = hash(buffer);
const hashFilePath = path.join(imagesPath, hashFileName + ext);
await fs.rename(imageFilePath, hashFilePath);
assets.push({ assets.push({
name: uuid, name,
ext, ext,
uuid, uuid,
hash: hashFileName,
}); });
} }
} }
...@@ -309,6 +319,22 @@ async function execute$1(psdFile, options) { ...@@ -309,6 +319,22 @@ async function execute$1(psdFile, options) {
} }
} }
function savePng(png, output) {
return new Promise((resolve, reject) => {
let buffer, buffers = [];
png.pack()
.on('error', reject)
.on('data', (data) => buffers.push(data))
.on('end', () => {
buffer = Buffer.concat(buffers);
})
.pipe(fs.createWriteStream(output))
.on('finish', () => {
resolve(buffer);
});
});
}
exports.getTree = getTree; exports.getTree = getTree;
exports.toEgret = execute; exports.toEgret = execute;
exports.toZeroing = execute$1; exports.toZeroing = execute$1;
......
{"version":3,"file":"index.js","sources":["../src/psd-tree.js","../src/utils.js","../src/egret.js","../src/zeroing.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-08-09.\n */\n\nconst PSD = require('psd');\n\nexport async function getTree(psdFilePath) {\n\tconst psd = await PSD.open(psdFilePath);\n\tconst root = {};\n\twalk(psd.tree(), root);\n\n\treturn root;\n}\n\nfunction walk(psNode, dataNode) {\n\tconst {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};\n\tconst {left, top, width, height, name, layer: {opacity, visible}} = psNode;\n\tconst x = left - pLeft;\n\tconst y = top - pTop;\n\n\tObject.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});\n\tif (psNode.children() && psNode.children().length > 0){\n\t\tdataNode.children = [];\n\t}\n\n\tlet children = psNode.children();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst childPsNode = children[i];\n\n\t\tconst childDataNode = {};\n\t\tdataNode.children.push(childDataNode);\n\t\twalk(childPsNode, childDataNode)\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n */\n\nexport async function walkNode(node, callback, includeSelf = false) {\n\tif (includeSelf) {\n\t\tawait callback(node, null);\n\t}\n\tif (node.children && node.children.length > 0) {\n\t\tfor (let childNode of node.children) {\n\t\t\tawait callback(childNode, node);\n\t\t\tconst result = await walkNode(childNode, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function walkObject(obj, callback) {\n\tif(typeof obj === \"object\"){\n\t\tfor (let key of Object.keys(obj)) {\n\t\t\tconst value = obj[key];\n\t\t\tawait callback(key, value, obj);\n\t\t\tconst result = await walkObject(value, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n *\n * 导出exml\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode, walkObject} from \"./utils\";\nimport xml from \"xml\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nconst elementTpls = {\n\t'e:Group': [],\n\t'e:Image': {_attr: {source: '{res}'}},\n\t'e:Button': [\n\t\t{_attr: {label: '{1}',}},\n\t\t{\n\t\t\t'e:skinName': [\n\t\t\t\t{\n\t\t\t\t\t'e:Skin': [\n\t\t\t\t\t\t{_attr: {states: 'up,down,disabled'}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Image': {_attr: {width: '100%', height: '100%', source: '{res}'}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Label': {_attr: {id: 'labelDisplay', horizontalCenter: '0', verticalCenter: '0'}},\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\nexport async function execute(psdFile, options) {\n\tconst {skinFilePath, skinClassName, resPath, resGroupName} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tconst exmlRoot = [\n\t\t{\n\t\t\t_attr: {\n\t\t\t\tclass: skinClassName,\n\t\t\t\twidth: tree.width,\n\t\t\t\theight: tree.height,\n\t\t\t\t'xmlns:e': \"http://ns.egret.com/eui\",\n\t\t\t\t'xmlns:w': \"http://ns.egret.com/wing\",\n\t\t\t},\n\t\t},\n\t];\n\tconst exmlData = {\n\t\t'e:Skin': exmlRoot\n\t};\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible} = node;\n\t\tlet attributes = {width, height, alpha, visible};\n\t\tif (x !== 0) {\n\t\t\tattributes.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tattributes.y = y;\n\t\t}\n\t\tlet element;\n\t\tlet tagName;\n\t\tlet imageResName;\n\t\tlet params;\n\n\t\tlet hasChild = node.hasOwnProperty('children');\n\t\tif (hasChild) {\n\t\t\ttagName = 'e:Group';\n\t\t} else {\n\t\t\tconst nameParams = node.name.split('|');\n\t\t\tconst nodeName = nameParams[0];\n\n\t\t\tattributes.name = nodeName;\n\t\t\timageResName = resGroupName + '_' + nodeName;\n\t\t\tconst imageFilePath = path.join(resPath, resGroupName + '_p', nodeName + '.png');\n\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\tif (nameParams.length === 1) {\n\t\t\t\ttagName = 'e:Image';\n\t\t\t} else {\n\t\t\t\tparams = nameParams[1].split(',');\n\t\t\t\ttagName = 'e:' + params[0];\n\t\t\t}\n\n\t\t\t//element[tagName] = {_attr: attributes};\n\t\t}\n\n\t\tlet elementTpl = elementTpls[tagName];\n\t\tlet elementContent;\n\t\tif (elementTpl) {\n\t\t\telementContent = JSON.parse(JSON.stringify(elementTpl));\n\t\t} else {\n\t\t\telementContent = {}\n\t\t}\n\t\telement = {\n\t\t\t[tagName]: elementContent,\n\t\t};\n\n\t\tlet attr;\n\t\tif (Array.isArray(elementContent)) {\n\t\t\tattr = elementContent.find(item => item._attr);\n\t\t\tif (!attr) {\n\t\t\t\tattr = {_attr: {}};\n\t\t\t\telementContent.unshift(attr);\n\t\t\t}\n\t\t} else {\n\t\t\tattr = elementContent;\n\t\t}\n\n\t\tObject.assign(attr._attr, attributes);\n\n\t\tif (imageResName) {\n\t\t\tawait walkObject(element, function (key, value, obj) {\n\t\t\t\tif (value === '{res}') {\n\t\t\t\t\tobj[key] = imageResName;\n\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\tconst result = value.match(/{(\\d+)}/g);\n\t\t\t\t\tif(result){\n\t\t\t\t\t\tfor(let item of result){\n\t\t\t\t\t\t\tconst pi = parseInt(item.match(/{(\\d+)}/)[1]);\n\t\t\t\t\t\t\tvalue = value.replace(item, params[pi])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (hasChild) {\n\t\t\tnode.exmlNode = elementContent;\n\t\t}\n\n\t\tconst exmlNode = parent.exmlNode || exmlRoot;\n\t\texmlNode.push(element);\n\t});\n\n\tlet exmlStr = xml(exmlData, {declaration: true, indent: true});\n\tawait fs.ensureDir(path.dirname(skinFilePath));\n\tawait fs.writeFile(skinFilePath, exmlStr);\n\n}","/**\n * Created by rockyl on 2019-09-26.\n *\n * 导出zeroing的视图\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode} from \"./utils\";\nimport path from 'path'\nimport Color from 'color'\nimport generateUUID from 'uuid/v4'\nimport fs from \"fs-extra\";\n\nexport async function execute(psdFile, options) {\n\tconst {\n\t\timagesPath,\n\t} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tlet viewRoot = {\n\t\tname: path.basename(psdFile, '.psd'),\n\t\ttype: 'node',\n\t};\n\n\tconst assets = [];\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;\n\t\tlet properties = {\n\t\t\twidth, height, alpha, visible,\n\t\t};\n\t\tlet viewNode = {\n\t\t\tname: node.name,\n\t\t\tproperties,\n\t\t};\n\t\tif (x !== 0) {\n\t\t\tproperties.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tproperties.y = y;\n\t\t}\n\n\t\tif(typeTool){\n\t\t\tlet fontInfo= typeTool();\n\t\t\tconst fonts = fontInfo.fonts();\n\t\t\tconst styles = fontInfo.styles();\n\t\t\tconst {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;\n\n\t\t\tproperties.text = fontInfo.textValue;\n\t\t\tproperties.textflow = {\n\t\t\t\tfonts, styles, RunLengthArray,\n\t\t\t};\n\t\t\tviewNode.type = 'label';\n\t\t}else if(solidColor){\n\t\t\tconst {r, g, b} = solidColor();\n\t\t\tlet color = Color({r, g, b});\n\n\t\t\tviewNode.type = 'rect';\n\t\t\tproperties.fillColor = '#' + color.rgbNumber().toString(16);\n\t\t}else{\n\t\t\tif(node.hasOwnProperty('children')){\n\t\t\t\tviewNode.type = 'node';\n\t\t\t}else{\n\t\t\t\tviewNode.type = 'image';\n\n\t\t\t\tconst uuid = generateUUID();\n\t\t\t\tconst ext = '.png';\n\n\t\t\t\tproperties.source = 'asset|' + uuid;\n\n\t\t\t\tconst imageFilePath = path.join(imagesPath, uuid + ext);\n\t\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\t\tassets.push({\n\t\t\t\t\tname: uuid,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tlet viewParent = parent.view || viewRoot;\n\t\tif (!viewParent.hasOwnProperty('children')) {\n\t\t\tviewParent.children = [];\n\t\t}\n\t\tviewParent.children.push(viewNode);\n\n\t\tnode.view = viewNode;\n\t});\n\n\treturn {\n\t\tview: viewRoot,\n\t\tassets,\n\t}\n}\n"],"names":["execute"],"mappings":"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"} {"version":3,"file":"index.js","sources":["../src/psd-tree.js","../src/utils.js","../src/egret.js","../src/zeroing.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-08-09.\n */\n\nconst PSD = require('psd');\n\nexport async function getTree(psdFilePath) {\n\tconst psd = await PSD.open(psdFilePath);\n\tconst root = {};\n\twalk(psd.tree(), root);\n\n\treturn root;\n}\n\nfunction walk(psNode, dataNode) {\n\tconst {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};\n\tconst {left, top, width, height, name, layer: {opacity, visible}} = psNode;\n\tconst x = left - pLeft;\n\tconst y = top - pTop;\n\n\tObject.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});\n\tif (psNode.children() && psNode.children().length > 0){\n\t\tdataNode.children = [];\n\t}\n\n\tlet children = psNode.children();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst childPsNode = children[i];\n\n\t\tconst childDataNode = {};\n\t\tdataNode.children.push(childDataNode);\n\t\twalk(childPsNode, childDataNode)\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n */\n\nexport async function walkNode(node, callback, includeSelf = false) {\n\tif (includeSelf) {\n\t\tawait callback(node, null);\n\t}\n\tif (node.children && node.children.length > 0) {\n\t\tfor (let childNode of node.children) {\n\t\t\tawait callback(childNode, node);\n\t\t\tconst result = await walkNode(childNode, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function walkObject(obj, callback) {\n\tif(typeof obj === \"object\"){\n\t\tfor (let key of Object.keys(obj)) {\n\t\t\tconst value = obj[key];\n\t\t\tawait callback(key, value, obj);\n\t\t\tconst result = await walkObject(value, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n *\n * 导出exml\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode, walkObject} from \"./utils\";\nimport xml from \"xml\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nconst elementTpls = {\n\t'e:Group': [],\n\t'e:Image': {_attr: {source: '{res}'}},\n\t'e:Button': [\n\t\t{_attr: {label: '{1}',}},\n\t\t{\n\t\t\t'e:skinName': [\n\t\t\t\t{\n\t\t\t\t\t'e:Skin': [\n\t\t\t\t\t\t{_attr: {states: 'up,down,disabled'}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Image': {_attr: {width: '100%', height: '100%', source: '{res}'}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Label': {_attr: {id: 'labelDisplay', horizontalCenter: '0', verticalCenter: '0'}},\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\nexport async function execute(psdFile, options) {\n\tconst {skinFilePath, skinClassName, resPath, resGroupName} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tconst exmlRoot = [\n\t\t{\n\t\t\t_attr: {\n\t\t\t\tclass: skinClassName,\n\t\t\t\twidth: tree.width,\n\t\t\t\theight: tree.height,\n\t\t\t\t'xmlns:e': \"http://ns.egret.com/eui\",\n\t\t\t\t'xmlns:w': \"http://ns.egret.com/wing\",\n\t\t\t},\n\t\t},\n\t];\n\tconst exmlData = {\n\t\t'e:Skin': exmlRoot\n\t};\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible} = node;\n\t\tlet attributes = {width, height, alpha, visible};\n\t\tif (x !== 0) {\n\t\t\tattributes.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tattributes.y = y;\n\t\t}\n\t\tlet element;\n\t\tlet tagName;\n\t\tlet imageResName;\n\t\tlet params;\n\n\t\tlet hasChild = node.hasOwnProperty('children');\n\t\tif (hasChild) {\n\t\t\ttagName = 'e:Group';\n\t\t} else {\n\t\t\tconst nameParams = node.name.split('|');\n\t\t\tconst nodeName = nameParams[0];\n\n\t\t\tattributes.name = nodeName;\n\t\t\timageResName = resGroupName + '_' + nodeName;\n\t\t\tconst imageFilePath = path.join(resPath, resGroupName + '_p', nodeName + '.png');\n\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\tif (nameParams.length === 1) {\n\t\t\t\ttagName = 'e:Image';\n\t\t\t} else {\n\t\t\t\tparams = nameParams[1].split(',');\n\t\t\t\ttagName = 'e:' + params[0];\n\t\t\t}\n\n\t\t\t//element[tagName] = {_attr: attributes};\n\t\t}\n\n\t\tlet elementTpl = elementTpls[tagName];\n\t\tlet elementContent;\n\t\tif (elementTpl) {\n\t\t\telementContent = JSON.parse(JSON.stringify(elementTpl));\n\t\t} else {\n\t\t\telementContent = {}\n\t\t}\n\t\telement = {\n\t\t\t[tagName]: elementContent,\n\t\t};\n\n\t\tlet attr;\n\t\tif (Array.isArray(elementContent)) {\n\t\t\tattr = elementContent.find(item => item._attr);\n\t\t\tif (!attr) {\n\t\t\t\tattr = {_attr: {}};\n\t\t\t\telementContent.unshift(attr);\n\t\t\t}\n\t\t} else {\n\t\t\tattr = elementContent;\n\t\t}\n\n\t\tObject.assign(attr._attr, attributes);\n\n\t\tif (imageResName) {\n\t\t\tawait walkObject(element, function (key, value, obj) {\n\t\t\t\tif (value === '{res}') {\n\t\t\t\t\tobj[key] = imageResName;\n\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\tconst result = value.match(/{(\\d+)}/g);\n\t\t\t\t\tif(result){\n\t\t\t\t\t\tfor(let item of result){\n\t\t\t\t\t\t\tconst pi = parseInt(item.match(/{(\\d+)}/)[1]);\n\t\t\t\t\t\t\tvalue = value.replace(item, params[pi])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (hasChild) {\n\t\t\tnode.exmlNode = elementContent;\n\t\t}\n\n\t\tconst exmlNode = parent.exmlNode || exmlRoot;\n\t\texmlNode.push(element);\n\t});\n\n\tlet exmlStr = xml(exmlData, {declaration: true, indent: true});\n\tawait fs.ensureDir(path.dirname(skinFilePath));\n\tawait fs.writeFile(skinFilePath, exmlStr);\n\n}","/**\n * Created by rockyl on 2019-09-26.\n *\n * 导出zeroing的视图\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode} from \"./utils\";\nimport path from 'path'\nimport Color from 'color'\nimport generateUUID from 'uuid/v4'\nimport fs from \"fs-extra\";\nimport hash from 'object-hash';\n\nexport async function execute(psdFile, options) {\n\tconst {\n\t\timagesPath,\n\t} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tlet viewRoot = {\n\t\tname: path.basename(psdFile, '.psd'),\n\t\ttype: 'node',\n\t\tuuid: generateUUID(),\n\t};\n\n\tconst assets = [];\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;\n\t\tlet properties = {\n\t\t\twidth, height, alpha, visible,\n\t\t};\n\t\tlet viewNode = {\n\t\t\tname,\n\t\t\tproperties,\n\t\t\tuuid: generateUUID(),\n\t\t};\n\t\tif (x !== 0) {\n\t\t\tproperties.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tproperties.y = y;\n\t\t}\n\n\t\tif (typeTool) {\n\t\t\tlet fontInfo = typeTool();\n\t\t\tconst fonts = fontInfo.fonts();\n\t\t\tconst styles = fontInfo.styles();\n\t\t\tconst {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;\n\n\t\t\tproperties.text = fontInfo.textValue;\n\t\t\tproperties.textflow = {\n\t\t\t\tfonts, styles, RunLengthArray,\n\t\t\t};\n\t\t\tviewNode.type = 'label';\n\t\t} else if (solidColor) {\n\t\t\tconst {r, g, b} = solidColor();\n\t\t\tlet color = Color({r, g, b});\n\n\t\t\tviewNode.type = 'rect';\n\t\t\tproperties.fillColor = '#' + color.rgbNumber().toString(16);\n\t\t} else {\n\t\t\tif (node.hasOwnProperty('children')) {\n\t\t\t\tviewNode.type = 'node';\n\t\t\t} else {\n\t\t\t\tviewNode.type = 'image';\n\n\t\t\t\tconst uuid = generateUUID();\n\t\t\t\tconst ext = '.png';\n\n\t\t\t\tproperties.source = 'asset|' + uuid;\n\n\t\t\t\tconst imageFilePath = path.join(imagesPath, uuid + ext);\n\t\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\t\tlet png = node.origin.toPng();\n\t\t\t\tlet buffer = await savePng(png, imageFilePath);\n\t\t\t\t//await node.origin.saveAsPng(imageFilePath);\n\n\t\t\t\tconst hashFileName = hash(buffer);\n\t\t\t\tconst hashFilePath = path.join(imagesPath, hashFileName + ext);\n\t\t\t\tawait fs.rename(imageFilePath, hashFilePath);\n\n\t\t\t\tassets.push({\n\t\t\t\t\tname,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t\thash: hashFileName,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tlet viewParent = parent.view || viewRoot;\n\t\tif (!viewParent.hasOwnProperty('children')) {\n\t\t\tviewParent.children = [];\n\t\t}\n\t\tviewParent.children.push(viewNode);\n\n\t\tnode.view = viewNode;\n\t});\n\n\treturn {\n\t\tview: viewRoot,\n\t\tassets,\n\t}\n}\n\nfunction savePng(png, output) {\n\treturn new Promise((resolve, reject) => {\n\t\tlet buffer, buffers = [];\n\t\tpng.pack()\n\t\t\t.on('error', reject)\n\t\t\t.on('data', (data) => buffers.push(data))\n\t\t\t.on('end', () => {\n\t\t\t\tbuffer = Buffer.concat(buffers)\n\t\t\t})\n\t\t\t.pipe(fs.createWriteStream(output))\n\t\t\t.on('finish', () => {\n\t\t\t\tresolve(buffer);\n\t\t\t});\n\t});\n}\n"],"names":["execute"],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
(function (global, factory) { (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('xml'), require('path'), require('fs-extra'), require('color'), require('uuid/v4')) : typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('xml'), require('path'), require('fs-extra'), require('color'), require('uuid/v4'), require('object-hash')) :
typeof define === 'function' && define.amd ? define(['exports', 'xml', 'path', 'fs-extra', 'color', 'uuid/v4'], factory) : typeof define === 'function' && define.amd ? define(['exports', 'xml', 'path', 'fs-extra', 'color', 'uuid/v4', 'object-hash'], factory) :
(global = global || self, factory(global['psd-parse'] = {}, global.xml, global.path, global.fs, global.Color, global.generateUUID)); (global = global || self, factory(global['psd-parse'] = {}, global.xml, global.path, global.fs, global.Color, global.generateUUID, global.hash));
}(this, function (exports, xml, path, fs, Color, generateUUID) { 'use strict'; }(this, function (exports, xml, path, fs, Color, generateUUID, hash) { 'use strict';
xml = xml && xml.hasOwnProperty('default') ? xml['default'] : xml; xml = xml && xml.hasOwnProperty('default') ? xml['default'] : xml;
path = path && path.hasOwnProperty('default') ? path['default'] : path; path = path && path.hasOwnProperty('default') ? path['default'] : path;
fs = fs && fs.hasOwnProperty('default') ? fs['default'] : fs; fs = fs && fs.hasOwnProperty('default') ? fs['default'] : fs;
Color = Color && Color.hasOwnProperty('default') ? Color['default'] : Color; Color = Color && Color.hasOwnProperty('default') ? Color['default'] : Color;
generateUUID = generateUUID && generateUUID.hasOwnProperty('default') ? generateUUID['default'] : generateUUID; generateUUID = generateUUID && generateUUID.hasOwnProperty('default') ? generateUUID['default'] : generateUUID;
hash = hash && hash.hasOwnProperty('default') ? hash['default'] : hash;
/** /**
* Created by rockyl on 2019-08-09. * Created by rockyl on 2019-08-09.
...@@ -234,18 +235,20 @@ ...@@ -234,18 +235,20 @@
let viewRoot = { let viewRoot = {
name: path.basename(psdFile, '.psd'), name: path.basename(psdFile, '.psd'),
type: 'node', type: 'node',
uuid: generateUUID(),
}; };
const assets = []; const assets = [];
await walkNode(tree, async function (node, parent) { await walkNode(tree, async function (node, parent) {
const {x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node; const {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;
let properties = { let properties = {
width, height, alpha, visible, width, height, alpha, visible,
}; };
let viewNode = { let viewNode = {
name: node.name, name,
properties, properties,
uuid: generateUUID(),
}; };
if (x !== 0) { if (x !== 0) {
properties.x = x; properties.x = x;
...@@ -254,8 +257,8 @@ ...@@ -254,8 +257,8 @@
properties.y = y; properties.y = y;
} }
if(typeTool){ if (typeTool) {
let fontInfo= typeTool(); let fontInfo = typeTool();
const fonts = fontInfo.fonts(); const fonts = fontInfo.fonts();
const styles = fontInfo.styles(); const styles = fontInfo.styles();
const {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun; const {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;
...@@ -265,16 +268,16 @@ ...@@ -265,16 +268,16 @@
fonts, styles, RunLengthArray, fonts, styles, RunLengthArray,
}; };
viewNode.type = 'label'; viewNode.type = 'label';
}else if(solidColor){ } else if (solidColor) {
const {r, g, b} = solidColor(); const {r, g, b} = solidColor();
let color = Color({r, g, b}); let color = Color({r, g, b});
viewNode.type = 'rect'; viewNode.type = 'rect';
properties.fillColor = '#' + color.rgbNumber().toString(16); properties.fillColor = '#' + color.rgbNumber().toString(16);
}else{ } else {
if(node.hasOwnProperty('children')){ if (node.hasOwnProperty('children')) {
viewNode.type = 'node'; viewNode.type = 'node';
}else{ } else {
viewNode.type = 'image'; viewNode.type = 'image';
const uuid = generateUUID(); const uuid = generateUUID();
...@@ -284,12 +287,19 @@ ...@@ -284,12 +287,19 @@
const imageFilePath = path.join(imagesPath, uuid + ext); const imageFilePath = path.join(imagesPath, uuid + ext);
await fs.ensureDir(path.dirname(imageFilePath)); await fs.ensureDir(path.dirname(imageFilePath));
await node.origin.saveAsPng(imageFilePath); let png = node.origin.toPng();
let buffer = await savePng(png, imageFilePath);
//await node.origin.saveAsPng(imageFilePath);
const hashFileName = hash(buffer);
const hashFilePath = path.join(imagesPath, hashFileName + ext);
await fs.rename(imageFilePath, hashFilePath);
assets.push({ assets.push({
name: uuid, name,
ext, ext,
uuid, uuid,
hash: hashFileName,
}); });
} }
} }
...@@ -309,6 +319,22 @@ ...@@ -309,6 +319,22 @@
} }
} }
function savePng(png, output) {
return new Promise((resolve, reject) => {
let buffer, buffers = [];
png.pack()
.on('error', reject)
.on('data', (data) => buffers.push(data))
.on('end', () => {
buffer = Buffer.concat(buffers);
})
.pipe(fs.createWriteStream(output))
.on('finish', () => {
resolve(buffer);
});
});
}
exports.getTree = getTree; exports.getTree = getTree;
exports.toEgret = execute; exports.toEgret = execute;
exports.toZeroing = execute$1; exports.toZeroing = execute$1;
......
{"version":3,"file":"index.umd.js","sources":["../src/psd-tree.js","../src/utils.js","../src/egret.js","../src/zeroing.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-08-09.\n */\n\nconst PSD = require('psd');\n\nexport async function getTree(psdFilePath) {\n\tconst psd = await PSD.open(psdFilePath);\n\tconst root = {};\n\twalk(psd.tree(), root);\n\n\treturn root;\n}\n\nfunction walk(psNode, dataNode) {\n\tconst {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};\n\tconst {left, top, width, height, name, layer: {opacity, visible}} = psNode;\n\tconst x = left - pLeft;\n\tconst y = top - pTop;\n\n\tObject.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});\n\tif (psNode.children() && psNode.children().length > 0){\n\t\tdataNode.children = [];\n\t}\n\n\tlet children = psNode.children();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst childPsNode = children[i];\n\n\t\tconst childDataNode = {};\n\t\tdataNode.children.push(childDataNode);\n\t\twalk(childPsNode, childDataNode)\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n */\n\nexport async function walkNode(node, callback, includeSelf = false) {\n\tif (includeSelf) {\n\t\tawait callback(node, null);\n\t}\n\tif (node.children && node.children.length > 0) {\n\t\tfor (let childNode of node.children) {\n\t\t\tawait callback(childNode, node);\n\t\t\tconst result = await walkNode(childNode, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function walkObject(obj, callback) {\n\tif(typeof obj === \"object\"){\n\t\tfor (let key of Object.keys(obj)) {\n\t\t\tconst value = obj[key];\n\t\t\tawait callback(key, value, obj);\n\t\t\tconst result = await walkObject(value, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n *\n * 导出exml\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode, walkObject} from \"./utils\";\nimport xml from \"xml\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nconst elementTpls = {\n\t'e:Group': [],\n\t'e:Image': {_attr: {source: '{res}'}},\n\t'e:Button': [\n\t\t{_attr: {label: '{1}',}},\n\t\t{\n\t\t\t'e:skinName': [\n\t\t\t\t{\n\t\t\t\t\t'e:Skin': [\n\t\t\t\t\t\t{_attr: {states: 'up,down,disabled'}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Image': {_attr: {width: '100%', height: '100%', source: '{res}'}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Label': {_attr: {id: 'labelDisplay', horizontalCenter: '0', verticalCenter: '0'}},\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\nexport async function execute(psdFile, options) {\n\tconst {skinFilePath, skinClassName, resPath, resGroupName} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tconst exmlRoot = [\n\t\t{\n\t\t\t_attr: {\n\t\t\t\tclass: skinClassName,\n\t\t\t\twidth: tree.width,\n\t\t\t\theight: tree.height,\n\t\t\t\t'xmlns:e': \"http://ns.egret.com/eui\",\n\t\t\t\t'xmlns:w': \"http://ns.egret.com/wing\",\n\t\t\t},\n\t\t},\n\t];\n\tconst exmlData = {\n\t\t'e:Skin': exmlRoot\n\t};\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible} = node;\n\t\tlet attributes = {width, height, alpha, visible};\n\t\tif (x !== 0) {\n\t\t\tattributes.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tattributes.y = y;\n\t\t}\n\t\tlet element;\n\t\tlet tagName;\n\t\tlet imageResName;\n\t\tlet params;\n\n\t\tlet hasChild = node.hasOwnProperty('children');\n\t\tif (hasChild) {\n\t\t\ttagName = 'e:Group';\n\t\t} else {\n\t\t\tconst nameParams = node.name.split('|');\n\t\t\tconst nodeName = nameParams[0];\n\n\t\t\tattributes.name = nodeName;\n\t\t\timageResName = resGroupName + '_' + nodeName;\n\t\t\tconst imageFilePath = path.join(resPath, resGroupName + '_p', nodeName + '.png');\n\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\tif (nameParams.length === 1) {\n\t\t\t\ttagName = 'e:Image';\n\t\t\t} else {\n\t\t\t\tparams = nameParams[1].split(',');\n\t\t\t\ttagName = 'e:' + params[0];\n\t\t\t}\n\n\t\t\t//element[tagName] = {_attr: attributes};\n\t\t}\n\n\t\tlet elementTpl = elementTpls[tagName];\n\t\tlet elementContent;\n\t\tif (elementTpl) {\n\t\t\telementContent = JSON.parse(JSON.stringify(elementTpl));\n\t\t} else {\n\t\t\telementContent = {}\n\t\t}\n\t\telement = {\n\t\t\t[tagName]: elementContent,\n\t\t};\n\n\t\tlet attr;\n\t\tif (Array.isArray(elementContent)) {\n\t\t\tattr = elementContent.find(item => item._attr);\n\t\t\tif (!attr) {\n\t\t\t\tattr = {_attr: {}};\n\t\t\t\telementContent.unshift(attr);\n\t\t\t}\n\t\t} else {\n\t\t\tattr = elementContent;\n\t\t}\n\n\t\tObject.assign(attr._attr, attributes);\n\n\t\tif (imageResName) {\n\t\t\tawait walkObject(element, function (key, value, obj) {\n\t\t\t\tif (value === '{res}') {\n\t\t\t\t\tobj[key] = imageResName;\n\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\tconst result = value.match(/{(\\d+)}/g);\n\t\t\t\t\tif(result){\n\t\t\t\t\t\tfor(let item of result){\n\t\t\t\t\t\t\tconst pi = parseInt(item.match(/{(\\d+)}/)[1]);\n\t\t\t\t\t\t\tvalue = value.replace(item, params[pi])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (hasChild) {\n\t\t\tnode.exmlNode = elementContent;\n\t\t}\n\n\t\tconst exmlNode = parent.exmlNode || exmlRoot;\n\t\texmlNode.push(element);\n\t});\n\n\tlet exmlStr = xml(exmlData, {declaration: true, indent: true});\n\tawait fs.ensureDir(path.dirname(skinFilePath));\n\tawait fs.writeFile(skinFilePath, exmlStr);\n\n}","/**\n * Created by rockyl on 2019-09-26.\n *\n * 导出zeroing的视图\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode} from \"./utils\";\nimport path from 'path'\nimport Color from 'color'\nimport generateUUID from 'uuid/v4'\nimport fs from \"fs-extra\";\n\nexport async function execute(psdFile, options) {\n\tconst {\n\t\timagesPath,\n\t} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tlet viewRoot = {\n\t\tname: path.basename(psdFile, '.psd'),\n\t\ttype: 'node',\n\t};\n\n\tconst assets = [];\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;\n\t\tlet properties = {\n\t\t\twidth, height, alpha, visible,\n\t\t};\n\t\tlet viewNode = {\n\t\t\tname: node.name,\n\t\t\tproperties,\n\t\t};\n\t\tif (x !== 0) {\n\t\t\tproperties.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tproperties.y = y;\n\t\t}\n\n\t\tif(typeTool){\n\t\t\tlet fontInfo= typeTool();\n\t\t\tconst fonts = fontInfo.fonts();\n\t\t\tconst styles = fontInfo.styles();\n\t\t\tconst {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;\n\n\t\t\tproperties.text = fontInfo.textValue;\n\t\t\tproperties.textflow = {\n\t\t\t\tfonts, styles, RunLengthArray,\n\t\t\t};\n\t\t\tviewNode.type = 'label';\n\t\t}else if(solidColor){\n\t\t\tconst {r, g, b} = solidColor();\n\t\t\tlet color = Color({r, g, b});\n\n\t\t\tviewNode.type = 'rect';\n\t\t\tproperties.fillColor = '#' + color.rgbNumber().toString(16);\n\t\t}else{\n\t\t\tif(node.hasOwnProperty('children')){\n\t\t\t\tviewNode.type = 'node';\n\t\t\t}else{\n\t\t\t\tviewNode.type = 'image';\n\n\t\t\t\tconst uuid = generateUUID();\n\t\t\t\tconst ext = '.png';\n\n\t\t\t\tproperties.source = 'asset|' + uuid;\n\n\t\t\t\tconst imageFilePath = path.join(imagesPath, uuid + ext);\n\t\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\t\tassets.push({\n\t\t\t\t\tname: uuid,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tlet viewParent = parent.view || viewRoot;\n\t\tif (!viewParent.hasOwnProperty('children')) {\n\t\t\tviewParent.children = [];\n\t\t}\n\t\tviewParent.children.push(viewNode);\n\n\t\tnode.view = viewNode;\n\t});\n\n\treturn {\n\t\tview: viewRoot,\n\t\tassets,\n\t}\n}\n"],"names":["execute"],"mappings":"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"} {"version":3,"file":"index.umd.js","sources":["../src/psd-tree.js","../src/utils.js","../src/egret.js","../src/zeroing.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-08-09.\n */\n\nconst PSD = require('psd');\n\nexport async function getTree(psdFilePath) {\n\tconst psd = await PSD.open(psdFilePath);\n\tconst root = {};\n\twalk(psd.tree(), root);\n\n\treturn root;\n}\n\nfunction walk(psNode, dataNode) {\n\tconst {left: pLeft = 0, top: pTop = 0,} = psNode.parent || {};\n\tconst {left, top, width, height, name, layer: {opacity, visible}} = psNode;\n\tconst x = left - pLeft;\n\tconst y = top - pTop;\n\n\tObject.assign(dataNode, {x, y, width, height, alpha: opacity / 255, visible, name, origin: psNode, label: `${name} > [${x}, ${y}, ${width}, ${height}]`});\n\tif (psNode.children() && psNode.children().length > 0){\n\t\tdataNode.children = [];\n\t}\n\n\tlet children = psNode.children();\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst childPsNode = children[i];\n\n\t\tconst childDataNode = {};\n\t\tdataNode.children.push(childDataNode);\n\t\twalk(childPsNode, childDataNode)\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n */\n\nexport async function walkNode(node, callback, includeSelf = false) {\n\tif (includeSelf) {\n\t\tawait callback(node, null);\n\t}\n\tif (node.children && node.children.length > 0) {\n\t\tfor (let childNode of node.children) {\n\t\t\tawait callback(childNode, node);\n\t\t\tconst result = await walkNode(childNode, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function walkObject(obj, callback) {\n\tif(typeof obj === \"object\"){\n\t\tfor (let key of Object.keys(obj)) {\n\t\t\tconst value = obj[key];\n\t\t\tawait callback(key, value, obj);\n\t\t\tconst result = await walkObject(value, callback);\n\t\t\tif (result === true) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Created by rockyl on 2019-08-10.\n *\n * 导出exml\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode, walkObject} from \"./utils\";\nimport xml from \"xml\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nconst elementTpls = {\n\t'e:Group': [],\n\t'e:Image': {_attr: {source: '{res}'}},\n\t'e:Button': [\n\t\t{_attr: {label: '{1}',}},\n\t\t{\n\t\t\t'e:skinName': [\n\t\t\t\t{\n\t\t\t\t\t'e:Skin': [\n\t\t\t\t\t\t{_attr: {states: 'up,down,disabled'}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Image': {_attr: {width: '100%', height: '100%', source: '{res}'}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'e:Label': {_attr: {id: 'labelDisplay', horizontalCenter: '0', verticalCenter: '0'}},\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\nexport async function execute(psdFile, options) {\n\tconst {skinFilePath, skinClassName, resPath, resGroupName} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tconst exmlRoot = [\n\t\t{\n\t\t\t_attr: {\n\t\t\t\tclass: skinClassName,\n\t\t\t\twidth: tree.width,\n\t\t\t\theight: tree.height,\n\t\t\t\t'xmlns:e': \"http://ns.egret.com/eui\",\n\t\t\t\t'xmlns:w': \"http://ns.egret.com/wing\",\n\t\t\t},\n\t\t},\n\t];\n\tconst exmlData = {\n\t\t'e:Skin': exmlRoot\n\t};\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {x, y, width, height, alpha, visible} = node;\n\t\tlet attributes = {width, height, alpha, visible};\n\t\tif (x !== 0) {\n\t\t\tattributes.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tattributes.y = y;\n\t\t}\n\t\tlet element;\n\t\tlet tagName;\n\t\tlet imageResName;\n\t\tlet params;\n\n\t\tlet hasChild = node.hasOwnProperty('children');\n\t\tif (hasChild) {\n\t\t\ttagName = 'e:Group';\n\t\t} else {\n\t\t\tconst nameParams = node.name.split('|');\n\t\t\tconst nodeName = nameParams[0];\n\n\t\t\tattributes.name = nodeName;\n\t\t\timageResName = resGroupName + '_' + nodeName;\n\t\t\tconst imageFilePath = path.join(resPath, resGroupName + '_p', nodeName + '.png');\n\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\tawait node.origin.saveAsPng(imageFilePath);\n\n\t\t\tif (nameParams.length === 1) {\n\t\t\t\ttagName = 'e:Image';\n\t\t\t} else {\n\t\t\t\tparams = nameParams[1].split(',');\n\t\t\t\ttagName = 'e:' + params[0];\n\t\t\t}\n\n\t\t\t//element[tagName] = {_attr: attributes};\n\t\t}\n\n\t\tlet elementTpl = elementTpls[tagName];\n\t\tlet elementContent;\n\t\tif (elementTpl) {\n\t\t\telementContent = JSON.parse(JSON.stringify(elementTpl));\n\t\t} else {\n\t\t\telementContent = {}\n\t\t}\n\t\telement = {\n\t\t\t[tagName]: elementContent,\n\t\t};\n\n\t\tlet attr;\n\t\tif (Array.isArray(elementContent)) {\n\t\t\tattr = elementContent.find(item => item._attr);\n\t\t\tif (!attr) {\n\t\t\t\tattr = {_attr: {}};\n\t\t\t\telementContent.unshift(attr);\n\t\t\t}\n\t\t} else {\n\t\t\tattr = elementContent;\n\t\t}\n\n\t\tObject.assign(attr._attr, attributes);\n\n\t\tif (imageResName) {\n\t\t\tawait walkObject(element, function (key, value, obj) {\n\t\t\t\tif (value === '{res}') {\n\t\t\t\t\tobj[key] = imageResName;\n\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\tconst result = value.match(/{(\\d+)}/g);\n\t\t\t\t\tif(result){\n\t\t\t\t\t\tfor(let item of result){\n\t\t\t\t\t\t\tconst pi = parseInt(item.match(/{(\\d+)}/)[1]);\n\t\t\t\t\t\t\tvalue = value.replace(item, params[pi])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[key] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (hasChild) {\n\t\t\tnode.exmlNode = elementContent;\n\t\t}\n\n\t\tconst exmlNode = parent.exmlNode || exmlRoot;\n\t\texmlNode.push(element);\n\t});\n\n\tlet exmlStr = xml(exmlData, {declaration: true, indent: true});\n\tawait fs.ensureDir(path.dirname(skinFilePath));\n\tawait fs.writeFile(skinFilePath, exmlStr);\n\n}","/**\n * Created by rockyl on 2019-09-26.\n *\n * 导出zeroing的视图\n */\n\nimport {getTree} from \"./psd-tree\";\nimport {walkNode} from \"./utils\";\nimport path from 'path'\nimport Color from 'color'\nimport generateUUID from 'uuid/v4'\nimport fs from \"fs-extra\";\nimport hash from 'object-hash';\n\nexport async function execute(psdFile, options) {\n\tconst {\n\t\timagesPath,\n\t} = options;\n\n\tconst tree = await getTree(psdFile);\n\n\tlet viewRoot = {\n\t\tname: path.basename(psdFile, '.psd'),\n\t\ttype: 'node',\n\t\tuuid: generateUUID(),\n\t};\n\n\tconst assets = [];\n\n\tawait walkNode(tree, async function (node, parent) {\n\t\tconst {name, x, y, width, height, alpha, visible, origin: {layer: {typeTool, solidColor}}} = node;\n\t\tlet properties = {\n\t\t\twidth, height, alpha, visible,\n\t\t};\n\t\tlet viewNode = {\n\t\t\tname,\n\t\t\tproperties,\n\t\t\tuuid: generateUUID(),\n\t\t};\n\t\tif (x !== 0) {\n\t\t\tproperties.x = x;\n\t\t}\n\t\tif (y !== 0) {\n\t\t\tproperties.y = y;\n\t\t}\n\n\t\tif (typeTool) {\n\t\t\tlet fontInfo = typeTool();\n\t\t\tconst fonts = fontInfo.fonts();\n\t\t\tconst styles = fontInfo.styles();\n\t\t\tconst {RunLengthArray} = fontInfo.engineData.EngineDict.StyleRun;\n\n\t\t\tproperties.text = fontInfo.textValue;\n\t\t\tproperties.textflow = {\n\t\t\t\tfonts, styles, RunLengthArray,\n\t\t\t};\n\t\t\tviewNode.type = 'label';\n\t\t} else if (solidColor) {\n\t\t\tconst {r, g, b} = solidColor();\n\t\t\tlet color = Color({r, g, b});\n\n\t\t\tviewNode.type = 'rect';\n\t\t\tproperties.fillColor = '#' + color.rgbNumber().toString(16);\n\t\t} else {\n\t\t\tif (node.hasOwnProperty('children')) {\n\t\t\t\tviewNode.type = 'node';\n\t\t\t} else {\n\t\t\t\tviewNode.type = 'image';\n\n\t\t\t\tconst uuid = generateUUID();\n\t\t\t\tconst ext = '.png';\n\n\t\t\t\tproperties.source = 'asset|' + uuid;\n\n\t\t\t\tconst imageFilePath = path.join(imagesPath, uuid + ext);\n\t\t\t\tawait fs.ensureDir(path.dirname(imageFilePath));\n\t\t\t\tlet png = node.origin.toPng();\n\t\t\t\tlet buffer = await savePng(png, imageFilePath);\n\t\t\t\t//await node.origin.saveAsPng(imageFilePath);\n\n\t\t\t\tconst hashFileName = hash(buffer);\n\t\t\t\tconst hashFilePath = path.join(imagesPath, hashFileName + ext);\n\t\t\t\tawait fs.rename(imageFilePath, hashFilePath);\n\n\t\t\t\tassets.push({\n\t\t\t\t\tname,\n\t\t\t\t\text,\n\t\t\t\t\tuuid,\n\t\t\t\t\thash: hashFileName,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tlet viewParent = parent.view || viewRoot;\n\t\tif (!viewParent.hasOwnProperty('children')) {\n\t\t\tviewParent.children = [];\n\t\t}\n\t\tviewParent.children.push(viewNode);\n\n\t\tnode.view = viewNode;\n\t});\n\n\treturn {\n\t\tview: viewRoot,\n\t\tassets,\n\t}\n}\n\nfunction savePng(png, output) {\n\treturn new Promise((resolve, reject) => {\n\t\tlet buffer, buffers = [];\n\t\tpng.pack()\n\t\t\t.on('error', reject)\n\t\t\t.on('data', (data) => buffers.push(data))\n\t\t\t.on('end', () => {\n\t\t\t\tbuffer = Buffer.concat(buffers)\n\t\t\t})\n\t\t\t.pipe(fs.createWriteStream(output))\n\t\t\t.on('finish', () => {\n\t\t\t\tresolve(buffer);\n\t\t\t});\n\t});\n}\n"],"names":["execute"],"mappings":";;;;;;;;;;;;;CAAA;CACA;CACA;;CAEA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;AAE3B,CAAO,eAAe,OAAO,CAAC,WAAW,EAAE;CAC3C,CAAC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CACzC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;CACjB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;;CAExB,CAAC,OAAO,IAAI,CAAC;CACb,CAAC;;CAED,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;CAChC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;CAC/D,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;CAC5E,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;CACxB,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;;CAEtB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3J,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;CACvD,EAAE,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;CACzB,EAAE;;CAEF,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;CAClC,CAAC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAChD,EAAE,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;;CAElC,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;CAC3B,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,EAAC;CAClC,EAAE;CACF,CAAC;;CCjCD;CACA;CACA;;AAEA,CAAO,eAAe,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE;CACpE,CAAC,IAAI,WAAW,EAAE;CAClB,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;CAC7B,EAAE;CACF,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;CAChD,EAAE,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;CACvC,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;CACnC,GAAG,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;CACtD,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;CACxB,IAAI,MAAM;CACV,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC;;AAED,CAAO,eAAe,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE;CAChD,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC;CAC5B,EAAE,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;CACpC,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1B,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;CACpD,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE;CACxB,IAAI,MAAM;CACV,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC;;CC9BD;CACA;CACA;CACA;CACA;AACA,AAMA;CACA,MAAM,WAAW,GAAG;CACpB,CAAC,SAAS,EAAE,EAAE;CACd,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC,UAAU,EAAE;CACb,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;CAC1B,EAAE;CACF,GAAG,YAAY,EAAE;CACjB,IAAI;CACJ,KAAK,QAAQ,EAAE;CACf,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC3C,MAAM;CACN,OAAO,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3E,OAAO;CACP,MAAM;CACN,OAAO,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;CAC3F,OAAO;CACP,MAAM;CACN,KAAK;CACL,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,CAAC;;AAEF,CAAO,eAAe,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;CAChD,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC;;CAEtE,CAAC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;CAErC,CAAC,MAAM,QAAQ,GAAG;CAClB,EAAE;CACF,GAAG,KAAK,EAAE;CACV,IAAI,KAAK,EAAE,aAAa;CACxB,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK;CACrB,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM;CACvB,IAAI,SAAS,EAAE,yBAAyB;CACxC,IAAI,SAAS,EAAE,0BAA0B;CACzC,IAAI;CACJ,GAAG;CACH,EAAE,CAAC;CACH,CAAC,MAAM,QAAQ,GAAG;CAClB,EAAE,QAAQ,EAAE,QAAQ;CACpB,EAAE,CAAC;;CAEH,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,MAAM,EAAE;CACpD,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACrD,EAAE,IAAI,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CACnD,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;CACf,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;CACpB,GAAG;CACH,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;CACf,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;CACpB,GAAG;CACH,EAAE,IAAI,OAAO,CAAC;CACd,EAAE,IAAI,OAAO,CAAC;CACd,EAAE,IAAI,YAAY,CAAC;CACnB,EAAE,IAAI,MAAM,CAAC;;CAEb,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;CACjD,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,OAAO,GAAG,SAAS,CAAC;CACvB,GAAG,MAAM;CACT,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC3C,GAAG,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;;CAElC,GAAG,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;CAC9B,GAAG,YAAY,GAAG,YAAY,GAAG,GAAG,GAAG,QAAQ,CAAC;CAChD,GAAG,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;CACpF,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;CACnD,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;;CAE9C,GAAG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;CAChC,IAAI,OAAO,GAAG,SAAS,CAAC;CACxB,IAAI,MAAM;CACV,IAAI,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACtC,IAAI,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAI;;CAEJ;CACA,GAAG;;CAEH,EAAE,IAAI,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;CACxC,EAAE,IAAI,cAAc,CAAC;CACrB,EAAE,IAAI,UAAU,EAAE;CAClB,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;CAC3D,GAAG,MAAM;CACT,GAAG,cAAc,GAAG,GAAE;CACtB,GAAG;CACH,EAAE,OAAO,GAAG;CACZ,GAAG,CAAC,OAAO,GAAG,cAAc;CAC5B,GAAG,CAAC;;CAEJ,EAAE,IAAI,IAAI,CAAC;CACX,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;CACrC,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;CAClD,GAAG,IAAI,CAAC,IAAI,EAAE;CACd,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACvB,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,IAAI;CACJ,GAAG,MAAM;CACT,GAAG,IAAI,GAAG,cAAc,CAAC;CACzB,GAAG;;CAEH,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;;CAExC,EAAE,IAAI,YAAY,EAAE;CACpB,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;CACxD,IAAI,IAAI,KAAK,KAAK,OAAO,EAAE;CAC3B,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;CAC7B,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CAC1C,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;CAC5C,KAAK,GAAG,MAAM,CAAC;CACf,MAAM,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC;CAC7B,OAAO,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrD,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAC;CAC9C,OAAO;CACP,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACvB,MAAM;CACN,KAAK;CACL,IAAI,EAAC;CACL,GAAG;;CAEH,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;CAClC,GAAG;;CAEH,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;CAC/C,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACzB,EAAE,CAAC,CAAC;;CAEJ,CAAC,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CAChE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;;CAE3C;;CCjJA;CACA;CACA;CACA;CACA;AACA,AAQA;AACA,CAAO,eAAeA,SAAO,CAAC,OAAO,EAAE,OAAO,EAAE;CAChD,CAAC,MAAM;CACP,EAAE,UAAU;CACZ,EAAE,GAAG,OAAO,CAAC;;CAEb,CAAC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;;CAErC,CAAC,IAAI,QAAQ,GAAG;CAChB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACtC,EAAE,IAAI,EAAE,MAAM;CACd,EAAE,IAAI,EAAE,YAAY,EAAE;CACtB,EAAE,CAAC;;CAEH,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;;CAEnB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,MAAM,EAAE;CACpD,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACpG,EAAE,IAAI,UAAU,GAAG;CACnB,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAChC,GAAG,CAAC;CACJ,EAAE,IAAI,QAAQ,GAAG;CACjB,GAAG,IAAI;CACP,GAAG,UAAU;CACb,GAAG,IAAI,EAAE,YAAY,EAAE;CACvB,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;CACf,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;CACpB,GAAG;CACH,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;CACf,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;CACpB,GAAG;;CAEH,EAAE,IAAI,QAAQ,EAAE;CAChB,GAAG,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;CAC7B,GAAG,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;CAClC,GAAG,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;CACpC,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;;CAEpE,GAAG,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;CACxC,GAAG,UAAU,CAAC,QAAQ,GAAG;CACzB,IAAI,KAAK,EAAE,MAAM,EAAE,cAAc;CACjC,IAAI,CAAC;CACL,GAAG,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;CAC3B,GAAG,MAAM,IAAI,UAAU,EAAE;CACzB,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC;CAClC,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;CAEhC,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;CAC1B,GAAG,UAAU,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CAC/D,GAAG,MAAM;CACT,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;CACxC,IAAI,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;CAC3B,IAAI,MAAM;CACV,IAAI,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;;CAE5B,IAAI,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;CAChC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC;;CAEvB,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;;CAExC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;CAC5D,IAAI,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;CACpD,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;CAClC,IAAI,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;CACnD;;CAEA,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;CACtC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,GAAG,GAAG,CAAC,CAAC;CACnE,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;;CAEjD,IAAI,MAAM,CAAC,IAAI,CAAC;CAChB,KAAK,IAAI;CACT,KAAK,GAAG;CACR,KAAK,IAAI;CACT,KAAK,IAAI,EAAE,YAAY;CACvB,KAAK,CAAC,CAAC;CACP,IAAI;CACJ,GAAG;;CAEH,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;CAC3C,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;CAC9C,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;CAC5B,GAAG;CACH,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;CAErC,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;CACvB,EAAE,CAAC,CAAC;;CAEJ,CAAC,OAAO;CACR,EAAE,IAAI,EAAE,QAAQ;CAChB,EAAE,MAAM;CACR,EAAE;CACF,CAAC;;CAED,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;CAC9B,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;CACzC,EAAE,IAAI,MAAM,EAAE,OAAO,GAAG,EAAE,CAAC;CAC3B,EAAE,GAAG,CAAC,IAAI,EAAE;CACZ,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;CACvB,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC5C,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM;CACpB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAC;CACnC,IAAI,CAAC;CACL,IAAI,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACtC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM;CACvB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB,IAAI,CAAC,CAAC;CACN,EAAE,CAAC,CAAC;CACJ,CAAC;;;;;;;;;;;;;;"}
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment