{"version":3,"file":"index.mjs","sources":["../../server/src/register.ts","../../server/src/controllers/icon-selector.ts","../../server/src/controllers/index.ts","../../server/src/routes/admin-api.ts","../../server/src/routes/index.ts","../../server/src/index.ts"],"sourcesContent":["\n\nimport type { Core } from '@strapi/strapi';\n\nconst register = ({ strapi }: { strapi: Core.Strapi }) => {\n  strapi.customFields.register({\n    name: 'icon',\n    plugin: 'icons-field',\n    type: 'text',\n  });\n};\n\nexport default register;\n","import fs from 'fs';\nimport path from 'path';\n\ntype IconType = {\n  name: string\n  svg: string\n};\n\ntype FolderIcons = {\n  folder: string\n  icons: IconType[]\n};\n\nfunction getSvgIconsFromDir(dirPath: string): IconType[] {\n  return fs.readdirSync(dirPath)\n    .filter(file => file.endsWith('.svg'))\n    .map(file => ({\n      name: path.basename(file, '.svg'),\n      svg: fs.readFileSync(path.join(dirPath, file), 'utf8'),\n    }));\n}\n\nexport default ({ strapi }) => ({\n  async getIcons(ctx) {\n    const subDir = strapi.config.get('plugin.icons-field.publicPath', 'icons');\n    const publicDir = path.join(strapi.dirs.static.public, subDir);\n    const selection = ctx?.query?.selection;\n    let result = [];\n    try {\n      if (selection) {\n        let selections = [];\n        if (Array.isArray(selection)) {\n          selections = selection;\n        } else if (typeof selection === 'string') {\n          selections = selection.split(',').map(s => s.trim()).filter(Boolean);\n        }\n        for (const sel of selections) {\n          const folderPath = path.join(publicDir, sel);\n          if (fs.existsSync(folderPath) && fs.statSync(folderPath).isDirectory()) {\n            const icons = getSvgIconsFromDir(folderPath);\n            if (icons.length) {\n              result.push({ folder: sel, icons });\n            }\n          }\n        }\n      } else {\n        const rootIcons = getSvgIconsFromDir(publicDir);\n        if (rootIcons.length) {\n          result.push({ folder: 'global', icons: rootIcons });\n        }\n        const folders = fs.readdirSync(publicDir)\n          .filter(file => fs.statSync(path.join(publicDir, file)).isDirectory())\n          .sort((a, b) => a.localeCompare(b, 'fr'));\n        for (const folder of folders) {\n          const folderPath = path.join(publicDir, folder);\n          const icons = getSvgIconsFromDir(folderPath);\n          if (icons.length) {\n            result.push({ folder, icons });\n          }\n        }\n      }\n    } catch (err) {\n      console.error(err);\n    }\n    ctx.body = result;\n  },\n});","import iconSelector from \"./icon-selector\";\n\nexport default {\n  iconSelector,\n};\n","export default [\n    {\n        method: \"GET\",\n        path: \"/icons\",\n        handler: \"iconSelector.getIcons\",\n        config: {\n            policies: ['admin::isAuthenticatedAdmin'],\n        },\n    },\n]","import adminAPIRoutes from './admin-api';\n\nconst routes = {\n  admin: {\n    type: \"admin\",\n    routes: adminAPIRoutes,\n  },\n};\n\nexport default routes;\n","/**\n * Application methods\n */\nimport register from './register';\n\n/**\n * Plugin server methods\n */\n\nimport controllers from './controllers';\nimport routes from './routes';\n\nexport default {\n  register,\n  controllers,\n  routes\n};\n"],"names":[],"mappings":";;AAIA,MAAM,WAAW,CAAC,EAAE,aAAsC;AACxD,SAAO,aAAa,SAAS;AAAA,IAC3B,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,EAAA,CACP;AACH;ACGA,SAAS,mBAAmB,SAA6B;AACvD,SAAO,GAAG,YAAY,OAAO,EAC1B,OAAO,CAAA,SAAQ,KAAK,SAAS,MAAM,CAAC,EACpC,IAAI,CAAA,UAAS;AAAA,IACZ,MAAM,KAAK,SAAS,MAAM,MAAM;AAAA,IAChC,KAAK,GAAG,aAAa,KAAK,KAAK,SAAS,IAAI,GAAG,MAAM;AAAA,EAAA,EACrD;AACN;AAEA,MAAA,eAAe,CAAC,EAAE,OAAA,OAAc;AAAA,EAC9B,MAAM,SAAS,KAAK;AAClB,UAAM,SAAS,OAAO,OAAO,IAAI,iCAAiC,OAAO;AACzE,UAAM,YAAY,KAAK,KAAK,OAAO,KAAK,OAAO,QAAQ,MAAM;AAC7D,UAAM,YAAY,KAAK,OAAO;AAC9B,QAAI,SAAS,CAAA;AACb,QAAI;AACF,UAAI,WAAW;AACb,YAAI,aAAa,CAAA;AACjB,YAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,uBAAa;AAAA,QACf,WAAW,OAAO,cAAc,UAAU;AACxC,uBAAa,UAAU,MAAM,GAAG,EAAE,IAAI,CAAA,MAAK,EAAE,KAAA,CAAM,EAAE,OAAO,OAAO;AAAA,QACrE;AACA,mBAAW,OAAO,YAAY;AAC5B,gBAAM,aAAa,KAAK,KAAK,WAAW,GAAG;AAC3C,cAAI,GAAG,WAAW,UAAU,KAAK,GAAG,SAAS,UAAU,EAAE,eAAe;AACtE,kBAAM,QAAQ,mBAAmB,UAAU;AAC3C,gBAAI,MAAM,QAAQ;AAChB,qBAAO,KAAK,EAAE,QAAQ,KAAK,OAAO;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM,YAAY,mBAAmB,SAAS;AAC9C,YAAI,UAAU,QAAQ;AACpB,iBAAO,KAAK,EAAE,QAAQ,UAAU,OAAO,WAAW;AAAA,QACpD;AACA,cAAM,UAAU,GAAG,YAAY,SAAS,EACrC,OAAO,CAAA,SAAQ,GAAG,SAAS,KAAK,KAAK,WAAW,IAAI,CAAC,EAAE,aAAa,EACpE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;AAC1C,mBAAW,UAAU,SAAS;AAC5B,gBAAM,aAAa,KAAK,KAAK,WAAW,MAAM;AAC9C,gBAAM,QAAQ,mBAAmB,UAAU;AAC3C,cAAI,MAAM,QAAQ;AAChB,mBAAO,KAAK,EAAE,QAAQ,MAAA,CAAO;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,GAAG;AAAA,IACnB;AACA,QAAI,OAAO;AAAA,EACb;AACF;AChEA,MAAA,cAAe;AAAA,EACb;AACF;ACJA,MAAA,iBAAe;AAAA,EACX;AAAA,IACI,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACJ,UAAU,CAAC,6BAA6B;AAAA,IAAA;AAAA,EAC5C;AAER;ACPA,MAAM,SAAS;AAAA,EACb,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAEZ;ACKA,MAAA,QAAe;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF;"}