{"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}"]}