{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as fs from 'fs'\nimport * as path from 'path'\n\nconst packer = require('../packer/')\nimport { wrapper, TypeOnBody, TypeToolProp, TypeToolOptions } from '@asset-toolkit/core'\n\nexport interface TypeProps extends TypeToolOptions {\n  format?: string\n  customFormat?: string\n  name?: string\n  height?: number\n  width?: number\n  fullpath?: boolean\n  prefix?: string\n  trim?: boolean\n  square?: boolean\n  powerOfTwo?: boolean\n  scale?: string\n  fuzz?: string\n  algorithm?: string\n  padding?: number\n  sort?: string\n  maxAtlases?: number\n  gutter?: number\n  group?: string[]\n  resizeWidth?: number\n  resizeHeight?: number\n}\n\n/**\n * A tool to create image spritesheets.\n * https://github.com/Gamefroot/Gamefroot-Texture-Packer\n * Install ImageMagick if not present: brew install imagemagick\n *\n * @param props - { pathIn, pathOut }\n * @param options - default {\n *      format: \"pixi.js\",\n        name: \"atlas\",\n        size: 2048,\n        path: pathOut,\n        trim: false,\n        square: true,\n        padding: 2,\n        width: size,\n        height: size,\n        powerOfTwo: true, } see https://github.com/Gamefroot/Gamefroot-Texture-Packer\n * @returns { Promise(returns) }\n */\nconst imageSprite: (_props: TypeToolProp, options?: TypeProps) => Promise<unknown> = wrapper(\n  ({ file, pathIn, pathOut, wrapperProps, next }) => {\n    const filePath = path.resolve(pathIn || pathOut, file)\n    wrapperProps.files.push(filePath)\n    next()\n  },\n  ({ pathOut, options, wrapperProps }: TypeOnBody): Promise<void> => {\n    return new Promise(resolve => {\n      const opts = {\n        format: 'pixi.js',\n        name: 'atlas',\n        path: pathOut,\n        trim: false,\n        square: true,\n        padding: 2,\n        width: 2048,\n        height: 2048,\n        powerOfTwo: true,\n        ...options,\n      }\n      packer(wrapperProps.files, opts, (err: any) => {\n        if (err) {\n          console.log(err)\n        } else {\n          const files: string[] = []\n          fs.readdirSync(pathOut).forEach(file => {\n            if (file.startsWith(`${opts.name}-`) && file.includes('.json')) {\n              files.push(file)\n            }\n          })\n          fs.writeFileSync(\n            path.resolve(pathOut, `${opts.name}.json`),\n            JSON.stringify(\n              {\n                files,\n              },\n              null,\n              ' ',\n            ),\n          )\n          resolve()\n        }\n      })\n    })\n  },\n  { exts: ['jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG'], name: 'Image Sprite', files: [] },\n)\n\nexport default imageSprite\n"],"names":["packer","require","imageSprite","wrapper","wrapperProps","next","filePath","path","resolve","pathIn","pathOut","file","files","push","options","Promise","opts","format","name","trim","square","padding","width","height","powerOfTwo","err","console","log","fs","readdirSync","forEach","startsWith","includes","writeFileSync","JSON","stringify","exts"],"mappings":"0SAGA,IAAMA,EAASC,QAAQ,cA6CjBC,EAA+EC,EACnF,gBAA0BC,IAAAA,aAAcC,IAAAA,KAChCC,EAAWC,EAAKC,UADfC,UAAQC,UAAdC,MAEDP,EAAaQ,MAAMC,KAAKP,GACxBD,KAEF,gBAAGK,IAAAA,QAASI,IAAAA,QAASV,IAAAA,aACnB,WAAWW,QAAQ,SAAAP,GACjB,IAAMQ,KACJC,OAAQ,UACRC,KAAM,QACNX,KAAMG,EACNS,MAAM,EACNC,QAAQ,EACRC,QAAS,EACTC,MAAO,KACPC,OAAQ,KACRC,YAAY,GACTV,GAELd,EAAOI,EAAaQ,MAAOI,EAAM,SAACS,GAChC,GAAIA,EACFC,QAAQC,IAAIF,OACP,CACL,IAAMb,EAAkB,GACxBgB,EAAGC,YAAYnB,GAASoB,QAAQ,SAAAnB,GAC1BA,EAAKoB,WAAcf,EAAKE,WAAYP,EAAKqB,SAAS,UACpDpB,EAAMC,KAAKF,KAGfiB,EAAGK,cACD1B,EAAKC,QAAQE,EAAYM,EAAKE,cAC9BgB,KAAKC,UACH,CACEvB,MAAAA,GAEF,KACA,MAGJJ,UAKR,CAAE4B,KAAM,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAO,OAAQlB,KAAM,eAAgBN,MAAO"}