{
  "version": 3,
  "sources": ["../../src/quill-delta/AttributeMap.ts"],
  "sourcesContent": ["// File copied https://github.com/slab/delta/blob/main/src/AttributeMap.ts with changes:\n// - lodash.clonedeep is replaced with JSON parse / stringify\n// - lodash.isequal is replaced with fast-deep-equal.\n\n/**\n * External dependencies\n */\nimport { default as isEqual } from 'fast-deep-equal/es6';\n\nfunction cloneDeep< T >( value: T ): T {\n\treturn JSON.parse( JSON.stringify( value ) ) as T;\n}\n\ninterface AttributeMap {\n\t[ key: string ]: unknown;\n}\n\nnamespace AttributeMap {\n\texport function compose(\n\t\ta: AttributeMap = {},\n\t\tb: AttributeMap = {},\n\t\tkeepNull = false\n\t): AttributeMap | undefined {\n\t\tif ( typeof a !== 'object' ) {\n\t\t\ta = {};\n\t\t}\n\t\tif ( typeof b !== 'object' ) {\n\t\t\tb = {};\n\t\t}\n\t\tlet attributes = cloneDeep( b );\n\t\tif ( ! keepNull ) {\n\t\t\tattributes = Object.keys( attributes ).reduce< AttributeMap >(\n\t\t\t\t( copy, key ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tattributes[ key ] !== null ||\n\t\t\t\t\t\tattributes[ key ] !== undefined\n\t\t\t\t\t) {\n\t\t\t\t\t\tcopy[ key ] = attributes[ key ];\n\t\t\t\t\t}\n\t\t\t\t\treturn copy;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t}\n\t\tfor ( const key in a ) {\n\t\t\tif ( a[ key ] !== undefined && b[ key ] === undefined ) {\n\t\t\t\tattributes[ key ] = a[ key ];\n\t\t\t}\n\t\t}\n\t\treturn Object.keys( attributes ).length > 0 ? attributes : undefined;\n\t}\n\n\texport function diff(\n\t\ta: AttributeMap = {},\n\t\tb: AttributeMap = {}\n\t): AttributeMap | undefined {\n\t\tif ( typeof a !== 'object' ) {\n\t\t\ta = {};\n\t\t}\n\t\tif ( typeof b !== 'object' ) {\n\t\t\tb = {};\n\t\t}\n\t\tconst attributes = Object.keys( a )\n\t\t\t.concat( Object.keys( b ) )\n\t\t\t.reduce< AttributeMap >( ( attrs, key ) => {\n\t\t\t\tif ( ! isEqual( a[ key ], b[ key ] ) ) {\n\t\t\t\t\tattrs[ key ] = b[ key ] === undefined ? null : b[ key ];\n\t\t\t\t}\n\t\t\t\treturn attrs;\n\t\t\t}, {} );\n\t\treturn Object.keys( attributes ).length > 0 ? attributes : undefined;\n\t}\n\n\texport function invert(\n\t\tattr: AttributeMap = {},\n\t\tbase: AttributeMap = {}\n\t): AttributeMap {\n\t\tattr = attr || {};\n\t\tconst baseInverted = Object.keys( base ).reduce< AttributeMap >(\n\t\t\t( memo, key ) => {\n\t\t\t\tif (\n\t\t\t\t\tbase[ key ] !== attr[ key ] &&\n\t\t\t\t\tattr[ key ] !== undefined\n\t\t\t\t) {\n\t\t\t\t\tmemo[ key ] = base[ key ];\n\t\t\t\t}\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t\treturn Object.keys( attr ).reduce< AttributeMap >( ( memo, key ) => {\n\t\t\tif ( attr[ key ] !== base[ key ] && base[ key ] === undefined ) {\n\t\t\t\tmemo[ key ] = null;\n\t\t\t}\n\t\t\treturn memo;\n\t\t}, baseInverted );\n\t}\n\n\texport function transform(\n\t\ta: AttributeMap | undefined,\n\t\tb: AttributeMap | undefined,\n\t\tpriority = false\n\t): AttributeMap | undefined {\n\t\tif ( typeof a !== 'object' ) {\n\t\t\treturn b;\n\t\t}\n\t\tif ( typeof b !== 'object' ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif ( ! priority ) {\n\t\t\treturn b; // b simply overwrites us without priority\n\t\t}\n\t\tconst attributes = Object.keys( b ).reduce< AttributeMap >(\n\t\t\t( attrs, key ) => {\n\t\t\t\tif ( a[ key ] === undefined ) {\n\t\t\t\t\tattrs[ key ] = b[ key ]; // null is a valid value\n\t\t\t\t}\n\t\t\t\treturn attrs;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t\treturn Object.keys( attributes ).length > 0 ? attributes : undefined;\n\t}\n}\n\nexport default AttributeMap;\n"],
  "mappings": "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",
  "names": ["AttributeMap"]
}
