UNPKG

@pixi/react

Version:

Write PixiJS applications using React declarative style.

1 lines 3.68 kB
{"version":3,"file":"diffProps.mjs","sources":["../../src/helpers/diffProps.ts"],"sourcesContent":["import { ReactToPixiEventPropNames } from '../constants/EventPropNames';\nimport { type Change } from '../typedefs/Change';\nimport { type HostConfig } from '../typedefs/HostConfig';\nimport { isEqual } from './compare';\nimport { gentleCloneProps } from './gentleCloneProps';\n\nconst DEFAULT = '__default';\n\nexport function diffProps(\n newProps: HostConfig['props'],\n oldProps: HostConfig['props'] = {},\n remove = false,\n)\n{\n const newPropsRest = gentleCloneProps(newProps);\n const oldPropsRest = gentleCloneProps(oldProps);\n\n const entries = Object.entries(newPropsRest);\n\n const changes: Change[] = [];\n\n // Catch removed props, prepend them so they can be reset or removed\n if (remove)\n {\n const oldPropsKeys = Object.keys(oldPropsRest);\n\n let propIndex = 0;\n\n while (propIndex < oldPropsKeys.length)\n {\n const propKey = oldPropsKeys[propIndex];\n const isPropRemoved = !(propKey in newPropsRest);\n\n if (isPropRemoved)\n {\n entries.unshift([propKey, `${DEFAULT}remove`]);\n }\n\n propIndex += 1;\n }\n }\n\n entries.forEach(([key, value]) =>\n {\n // When props match bail out\n if (isEqual(value, oldPropsRest[key]))\n {\n return;\n }\n\n // Collect handlers and bail out\n if (key in ReactToPixiEventPropNames)\n {\n changes.push([key, value, true, []]);\n\n return;\n }\n\n // Split dashed props\n let entries: string[] = [];\n\n if (key.includes('-'))\n {\n entries = key.split('-');\n }\n\n changes.push([key, value, false, entries]);\n\n // Reset pierced props\n for (const prop in newPropsRest)\n {\n const value = newPropsRest[prop];\n\n if (prop.startsWith(`${key}-`))\n {\n changes.push([prop, value, false, prop.split('-')]);\n }\n }\n });\n\n return { changes };\n}\n"],"names":["entries","value"],"mappings":";;;;;AAMA,MAAM,OAAU,GAAA,WAAA;AAET,SAAS,UACZ,QACA,EAAA,QAAA,GAAgC,EAAC,EACjC,SAAS,KAEb,EAAA;AACI,EAAM,MAAA,YAAA,GAAe,iBAAiB,QAAQ,CAAA;AAC9C,EAAM,MAAA,YAAA,GAAe,iBAAiB,QAAQ,CAAA;AAE9C,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAA;AAE3C,EAAA,MAAM,UAAoB,EAAC;AAG3B,EAAA,IAAI,MACJ,EAAA;AACI,IAAM,MAAA,YAAA,GAAe,MAAO,CAAA,IAAA,CAAK,YAAY,CAAA;AAE7C,IAAA,IAAI,SAAY,GAAA,CAAA;AAEhB,IAAO,OAAA,SAAA,GAAY,aAAa,MAChC,EAAA;AACI,MAAM,MAAA,OAAA,GAAU,aAAa,SAAS,CAAA;AACtC,MAAM,MAAA,aAAA,GAAgB,EAAE,OAAW,IAAA,YAAA,CAAA;AAEnC,MAAA,IAAI,aACJ,EAAA;AACI,QAAA,OAAA,CAAQ,QAAQ,CAAC,OAAA,EAAS,CAAG,EAAA,OAAO,QAAQ,CAAC,CAAA;AAAA;AAGjD,MAAa,SAAA,IAAA,CAAA;AAAA;AACjB;AAGJ,EAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAC5B,KAAA;AAEI,IAAA,IAAI,OAAQ,CAAA,KAAA,EAAO,YAAa,CAAA,GAAG,CAAC,CACpC,EAAA;AACI,MAAA;AAAA;AAIJ,IAAA,IAAI,OAAO,yBACX,EAAA;AACI,MAAA,OAAA,CAAQ,KAAK,CAAC,GAAA,EAAK,OAAO,IAAM,EAAA,EAAE,CAAC,CAAA;AAEnC,MAAA;AAAA;AAIJ,IAAA,IAAIA,WAAoB,EAAC;AAEzB,IAAI,IAAA,GAAA,CAAI,QAAS,CAAA,GAAG,CACpB,EAAA;AACI,MAAAA,QAAAA,GAAU,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAAA;AAG3B,IAAA,OAAA,CAAQ,KAAK,CAAC,GAAA,EAAK,KAAO,EAAA,KAAA,EAAOA,QAAO,CAAC,CAAA;AAGzC,IAAA,KAAA,MAAW,QAAQ,YACnB,EAAA;AACI,MAAMC,MAAAA,MAAAA,GAAQ,aAAa,IAAI,CAAA;AAE/B,MAAA,IAAI,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,GAAG,GAAG,CAC7B,EAAA;AACI,QAAQ,OAAA,CAAA,IAAA,CAAK,CAAC,IAAMA,EAAAA,MAAAA,EAAO,OAAO,IAAK,CAAA,KAAA,CAAM,GAAG,CAAC,CAAC,CAAA;AAAA;AACtD;AACJ,GACH,CAAA;AAED,EAAA,OAAO,EAAE,OAAQ,EAAA;AACrB;;;;"}