@drincs/pixi-vn
Version:
Pixi'VN is a npm package that provides various features for creating visual novels.
1 lines • 5.22 kB
Source Map (JSON)
{"version":3,"sources":["../src/vite-listener/plugins.ts"],"names":["isViteDevelopmentMode","setupPixivnViteData","characters","RegisteredCharacters","labels","RegisteredLabels","assetMap","PIXI","bundles","manifest","bundleName","assets","res","asset","existing","options","canvas"],"mappings":"+SAUA,SAASA,CAAAA,EAAiC,CACtC,GAAI,CAGA,OAAO,IAAI,QAAA,CACP,6GACJ,CAAA,EACJ,CAAA,KAAQ,CACJ,OAAO,MACX,CACJ,CAOO,SAASC,CAAAA,EAAsB,CAElC,GAAKD,CAAAA,EAAsB,CAI3B,CAAA,GAAI,CACA,IAAME,CAAAA,CAAaC,+BAAAA,CAAqB,MAAA,EAAO,CAC/C,KAAA,CAAM,sBAAuB,CACzB,MAAA,CAAQ,MAAA,CACR,OAAA,CAAS,CAAE,cAAA,CAAgB,kBAAmB,CAAA,CAC9C,IAAA,CAAM,KAAK,SAAA,CAAUD,CAAU,CACnC,CAAC,EACL,CAAA,KAAY,CAAC,CACb,GAAI,CACA,IAAME,CAAAA,CAASC,0BAAAA,CAAiB,IAAA,EAAK,CACrC,KAAA,CAAM,kBAAmB,CACrB,MAAA,CAAQ,MAAA,CACR,OAAA,CAAS,CAAE,cAAA,CAAgB,kBAAmB,CAAA,CAC9C,IAAA,CAAM,IAAA,CAAK,SAAA,CAAUD,CAAM,CAC/B,CAAC,EACL,CAAA,KAAY,CAAC,CACb,GAAI,CACA,IAAME,CAAAA,CAAWC,kBAAAA,CAAK,MAAA,CAAO,QAAA,CAAS,SAAA,CAChCC,CAAAA,CAAuCD,mBAAK,MAAA,CAAO,QAAA,CAAS,QAAA,CAC5DE,CAAAA,CAA2B,CAC7B,OAAA,CAAS,EACb,CAAA,CACA,OAAO,OAAA,CAAQD,CAAO,EAAE,OAAA,CAAQ,CAAC,CAACE,CAAAA,CAAYC,CAAM,CAAA,GAAM,CACtD,IAAIC,CAAAA,CAAyB,EAAC,CAC9BD,CAAAA,CAAO,OAAA,CAASE,GAAU,CACtB,GAAIP,CAAAA,CAASO,CAAK,CAAA,CAAG,CACjB,IAAMC,CAAAA,CAAWR,CAAAA,CAASO,CAAK,CAAA,CAC/BD,CAAAA,CAAM,CAAC,GAAGA,CAAAA,CAAK,GAAGE,CAAQ,EAC9B,CACJ,CAAC,EACDL,CAAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,CAClB,IAAA,CAAMC,CAAAA,CACN,OAAQE,CACZ,CAAC,EACL,CAAC,CAAA,CACD,KAAA,CAAM,2BAA4B,CAC9B,MAAA,CAAQ,MAAA,CACR,OAAA,CAAS,CAAE,cAAA,CAAgB,kBAAmB,CAAA,CAC9C,IAAA,CAAM,IAAA,CAAK,SAAA,CAAUH,CAAQ,CACjC,CAAC,EACL,CAAA,KAAY,CAAC,CACb,GAAI,CACA,IAAMM,CAAAA,CAAuC,CACzC,MAAA,CAAQC,aAAAA,CAAO,GAAA,CAAI,MAAA,CAAO,OAC1B,KAAA,CAAOA,aAAAA,CAAO,GAAA,CAAI,MAAA,CAAO,KAC7B,CAAA,CACA,MAAM,yBAAA,CAA2B,CAC7B,MAAA,CAAQ,MAAA,CACR,OAAA,CAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC9C,IAAA,CAAM,IAAA,CAAK,SAAA,CAAUD,CAAO,CAChC,CAAC,EACL,CAAA,KAAY,CAAC,CAAA,CACjB","file":"vite-listener.cjs","sourcesContent":["import { canvas } from \"@drincs/pixi-vn/canvas\";\nimport { RegisteredCharacters } from \"@drincs/pixi-vn/characters\";\nimport { RegisteredLabels } from \"@drincs/pixi-vn/narration\";\nimport type { ApplicationOptions, AssetsManifest, UnresolvedAsset } from \"@drincs/pixi-vn/pixi.js\";\nimport { default as PIXI } from \"@drincs/pixi-vn/pixi.js\";\n\n/**\n * Checks if the code is running in Vite development mode.\n * Uses indirect access to avoid TypeScript compilation issues with import.meta in commonjs modules.\n */\nfunction isViteDevelopmentMode(): boolean {\n try {\n // Use Function constructor to indirectly access import.meta at runtime\n // This avoids direct eval while still bypassing TypeScript's static analysis\n return new Function(\n 'return typeof import !== \"undefined\" && typeof import.meta !== \"undefined\" && import.meta.env?.DEV === true',\n )();\n } catch {\n return false;\n }\n}\n\n/**\n * Function that setup the pixivn vite data.\n * This function should be called in the client side, after the RegisteredCharacters and RegisteredLabels are populated.\n * **Note:** This function only runs in development mode and does nothing in production.\n */\nexport function setupPixivnViteData() {\n // Only run in development mode\n if (!isViteDevelopmentMode()) {\n return;\n }\n\n try {\n const characters = RegisteredCharacters.values();\n fetch(\"/pixi-vn/characters\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(characters),\n });\n } catch (e) {}\n try {\n const labels = RegisteredLabels.keys();\n fetch(\"/pixi-vn/labels\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(labels),\n });\n } catch (e) {}\n try {\n const assetMap = PIXI.Assets.resolver[\"_assetMap\"];\n const bundles: { [key: string]: string[] } = PIXI.Assets.resolver[\"_bundles\"];\n const manifest: AssetsManifest = {\n bundles: [],\n };\n Object.entries(bundles).forEach(([bundleName, assets]) => {\n let res: UnresolvedAsset[] = [];\n assets.forEach((asset) => {\n if (assetMap[asset]) {\n const existing = assetMap[asset];\n res = [...res, ...existing];\n }\n });\n manifest.bundles.push({\n name: bundleName,\n assets: res,\n });\n });\n fetch(\"/pixi-vn/assets/manifest\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(manifest),\n });\n } catch (e) {}\n try {\n const options: Partial<ApplicationOptions> = {\n height: canvas.app.screen.height,\n width: canvas.app.screen.width,\n };\n fetch(\"/pixi-vn/canvas/options\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(options),\n });\n } catch (e) {}\n}\n"]}