UNPKG

@drincs/pixi-vn

Version:

Pixi'VN is a npm package that provides various features for creating visual novels.

1 lines 5.13 kB
{"version":3,"sources":["../../src/functions/ExportUtility.ts","../../src/functions/DiffUtility.ts"],"names":["index"],"mappings":";AAKO,SAAS,wBAA2B,OAAe,EAAA;AACtD,EAAI,IAAA;AACA,IAAI,IAAA,aAAA,GAAgB,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,MAAM,aAAa,CAAA,CAAA;AAAA,WAE5B,CAAG,EAAA;AACN,IAAQ,OAAA,CAAA,KAAA,CAAM,+CAA+C,CAAC,CAAA,CAAA;AAC9D,IAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA,CAAA;AAAA,GACjE;AACJ,CAAA;;;ACXO,SAAS,sBAAA,CAAkD,MAAS,WAAuC,EAAA;AAC9G,EAAI,IAAA,MAAA,GAAS,wBAAwB,IAAI,CAAA,CAAA;AACzC,EAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC1B,IAAA,IAAI,UAAkB,GAAA,MAAA,CAAA;AACtB,IAAA,IAAI,IAAK,CAAA,IAAA,IAAQ,IAAK,CAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnC,MAAA,IAAA,CAAK,IAAK,CAAA,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAU,KAAA;AAC/B,QAAA,IAAI,KAAK,IAAQ,IAAA,KAAA,KAAU,IAAK,CAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AAC7C,UAAA,IAAI,IAAK,CAAA,IAAA,KAAS,GAAO,IAAA,IAAA,CAAK,SAAS,GAAK,EAAA;AACxC,YAAW,UAAA,CAAA,IAAI,IAAI,IAAK,CAAA,GAAA,CAAA;AAAA,WAC5B,MAAA,IACS,IAAK,CAAA,IAAA,KAAS,GAAK,EAAA;AAExB,YAAI,IAAA,MAAA,CAAO,SAAU,CAAA,IAAI,CAAG,EAAA;AAExB,cAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAU,CAAG,EAAA;AAC3B,gBAAW,UAAA,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAAA,eAC7B;AAAA,aACJ,MAAA,IAES,OAAO,IAAA,KAAS,QAAU,EAAA;AAE/B,cAAA,OAAO,WAAW,IAAI,CAAA,CAAA;AAAA,aAC1B;AAAA,WACJ,MAAA,IACS,IAAK,CAAA,IAAA,KAAS,GAAK,EAAA;AACxB,YAAA,IAAIA,SAAQ,IAAK,CAAA,KAAA,CAAA;AACjB,YAAI,IAAA,IAAA,CAAK,IAAK,CAAA,IAAA,KAAS,GAAK,EAAA;AAExB,cAAC,UAAW,CAAA,IAAI,CAAY,CAAA,MAAA,CAAOA,QAAO,CAAC,CAAA,CAAA;AAAA,aAC/C,MAAA,IACS,KAAK,IAAK,CAAA,IAAA,KAAS,OAAO,IAAK,CAAA,IAAA,CAAK,SAAS,GAAK,EAAA;AAEvD,cAAC,WAAW,IAAI,CAAA,CAAYA,MAAK,CAAA,GAAI,KAAK,IAAK,CAAA,GAAA,CAAA;AAAA,aAE1C,MAAA,IAAA,IAAA,CAAK,IAAK,CAAA,IAAA,KAAS,GAAK,EAAA;AAC7B,cAAQ,OAAA,CAAA,IAAA,CAAK,+CAA+C,IAAI,CAAA,CAAA;AAAA,aAE/D,MAAA;AACD,cAAQ,OAAA,CAAA,IAAA,CAAK,2CAA2C,IAAI,CAAA,CAAA;AAAA,aAChE;AAAA,WACJ;AAAA,SAEC,MAAA;AACD,UAAA,UAAA,GAAa,WAAW,IAAI,CAAA,CAAA;AAAA,SAChC;AAAA,OACH,CAAA,CAAA;AAAA,KAEA,MAAA;AACD,MAAQ,OAAA,CAAA,IAAA,CAAK,0CAA0C,IAAI,CAAA,CAAA;AAAA,KAC/D;AAAA,GACH,CAAA,CAAA;AACD,EAAO,OAAA,MAAA,CAAA;AACX","file":"DiffUtility.mjs","sourcesContent":["/**\n * This function is used to create a deep copy of the element\n * @param element The element to be copied\n * @returns The copied element\n */\nexport function createExportableElement<T>(element: T): T {\n try {\n let elementString = JSON.stringify(element)\n return JSON.parse(elementString)\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error creating exportable element\", e)\n throw new Error(\"[Pixi'VN] Error creating exportable element\")\n }\n}\n","import deepDiff from \"deep-diff\"\nimport { createExportableElement } from \"./ExportUtility\"\n\nexport function restoreDeepDiffChanges<T extends object = object>(data: T, differences: deepDiff.Diff<T, T>[]): T {\n let result = createExportableElement(data)\n differences.forEach((diff) => {\n let dataToEdit: any = result\n if (diff.path && diff.path.length > 0) {\n diff.path.forEach((path, index) => {\n if (diff.path && index === diff.path.length - 1) {\n if (diff.kind === \"E\" || diff.kind === \"D\") {\n dataToEdit[path] = diff.lhs\n }\n else if (diff.kind === \"N\") {\n // if path is a number, dataToEdit is an array\n if (Number.isInteger(path)) {\n // remove index from array\n if (Array.isArray(dataToEdit)) {\n dataToEdit.splice(path, 1)\n }\n }\n // if path is a string, dataToEdit is an object\n else if (typeof path === \"string\") {\n // remove key from object\n delete dataToEdit[path]\n }\n }\n else if (diff.kind === \"A\") {\n let index = diff.index\n if (diff.item.kind === \"N\") {\n // remove index from array\n (dataToEdit[path] as any[]).splice(index, 1)\n }\n else if (diff.item.kind === \"E\" || diff.item.kind === \"D\") {\n // edit index in array\n (dataToEdit[path] as any[])[index] = diff.item.lhs\n }\n else if (diff.item.kind === \"A\") {\n console.warn(\"[Pixi'VN] Nested array found, skipping diff\", diff)\n }\n else {\n console.warn(\"[Pixi'VN] No array found, skipping diff\", diff)\n }\n }\n }\n else {\n dataToEdit = dataToEdit[path]\n }\n })\n }\n else {\n console.warn(\"[Pixi'VN] No path found, skipping diff\", diff)\n }\n })\n return result\n}"]}