{"version":3,"sources":["../../src/utils/mergeProps.ts"],"sourcesContent":["import type * as React from 'react';\nimport { mergeCallbacks } from '@fluentui/react-utilities';\nimport type { RefAttributes } from '@fluentui/react-utilities';\n\n/**\n * Applies defined consumer overrides over default element props, including roles, focus, ARIA and data attributes.\n * Undefined overrides are omitted; explicit null content is preserved. Classes and styles are merged,\n * refs are composed, and consumer event handlers run before default handlers. Calling `preventDefault()`\n * in a consumer handler skips the default handler.\n * @internal\n */\nexport function mergeProps<E extends HTMLElement, A extends React.HTMLAttributes<E>>(\n  defaults: A & RefAttributes<E>,\n  overrides?: A & RefAttributes<E>,\n): A & RefAttributes<E> {\n  if (!overrides) {\n    return defaults;\n  }\n\n  const result = { ...defaults };\n  for (const [key, value] of Object.entries(overrides)) {\n    if (value !== undefined) {\n      const defaultValue = defaults[key as keyof A];\n      if (key.startsWith('on') && typeof value === 'function' && typeof defaultValue === 'function') {\n        const callHandler =\n          (handler: (...args: never[]) => void) =>\n          (...args: unknown[]) => {\n            Reflect.apply(handler, undefined, args);\n          };\n        const defaultHandler = callHandler(defaultValue as (...args: never[]) => void);\n        Object.assign(result, {\n          [key]: mergeCallbacks(callHandler(value as (...args: never[]) => void), (...args: unknown[]) => {\n            const event = args[0] as { defaultPrevented?: boolean; isDefaultPrevented?: () => boolean } | undefined;\n            if (!event?.defaultPrevented && !event?.isDefaultPrevented?.()) {\n              defaultHandler(...args);\n            }\n          }),\n        });\n      } else {\n        Object.assign(result, { [key]: value });\n      }\n    }\n  }\n  if (defaults.className) {\n    result.className = overrides.className ? `${defaults.className} ${overrides.className}` : defaults.className;\n  }\n  if (defaults.style && overrides.style) {\n    result.style = { ...defaults.style, ...overrides.style };\n  }\n  const defaultRef = defaults.ref;\n  const overrideRef = overrides.ref;\n  if (defaultRef) {\n    result.ref = overrideRef\n      ? mergeCallbacks(\n          value => {\n            if (typeof defaultRef === 'function') {\n              defaultRef(value);\n            } else {\n              Object.assign(defaultRef, { current: value });\n            }\n          },\n          value => {\n            if (typeof overrideRef === 'function') {\n              overrideRef(value);\n            } else {\n              Object.assign(overrideRef, { current: value });\n            }\n          },\n        )\n      : defaultRef;\n  }\n  return result;\n}\n"],"names":["mergeProps","defaults","overrides","result","key","value","Object","entries","undefined","defaultValue","startsWith","callHandler","handler","args","Reflect","apply","defaultHandler","assign","mergeCallbacks","event","defaultPrevented","isDefaultPrevented","className","style","defaultRef","ref","overrideRef","current"],"mappings":";;;;+BAWgBA;;;eAAAA;;;gCAVe;AAUxB,SAASA,WACdC,QAA8B,EAC9BC,SAAgC;IAEhC,IAAI,CAACA,WAAW;QACd,OAAOD;IACT;IAEA,MAAME,SAAS;QAAE,GAAGF,QAAQ;IAAC;IAC7B,KAAK,MAAM,CAACG,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACL,WAAY;QACpD,IAAIG,UAAUG,WAAW;YACvB,MAAMC,eAAeR,QAAQ,CAACG,IAAe;YAC7C,IAAIA,IAAIM,UAAU,CAAC,SAAS,OAAOL,UAAU,cAAc,OAAOI,iBAAiB,YAAY;gBAC7F,MAAME,cACJ,CAACC,UACD,CAAC,GAAGC;wBACFC,QAAQC,KAAK,CAACH,SAASJ,WAAWK;oBACpC;gBACF,MAAMG,iBAAiBL,YAAYF;gBACnCH,OAAOW,MAAM,CAACd,QAAQ;oBACpB,CAACC,IAAI,EAAEc,IAAAA,8BAAc,EAACP,YAAYN,QAAsC,CAAC,GAAGQ;wBAC1E,MAAMM,QAAQN,IAAI,CAAC,EAAE;wBACrB,IAAI,CAACM,OAAOC,oBAAoB,CAACD,OAAOE,wBAAwB;4BAC9DL,kBAAkBH;wBACpB;oBACF;gBACF;YACF,OAAO;gBACLP,OAAOW,MAAM,CAACd,QAAQ;oBAAE,CAACC,IAAI,EAAEC;gBAAM;YACvC;QACF;IACF;IACA,IAAIJ,SAASqB,SAAS,EAAE;QACtBnB,OAAOmB,SAAS,GAAGpB,UAAUoB,SAAS,GAAG,GAAGrB,SAASqB,SAAS,CAAC,CAAC,EAAEpB,UAAUoB,SAAS,EAAE,GAAGrB,SAASqB,SAAS;IAC9G;IACA,IAAIrB,SAASsB,KAAK,IAAIrB,UAAUqB,KAAK,EAAE;QACrCpB,OAAOoB,KAAK,GAAG;YAAE,GAAGtB,SAASsB,KAAK;YAAE,GAAGrB,UAAUqB,KAAK;QAAC;IACzD;IACA,MAAMC,aAAavB,SAASwB,GAAG;IAC/B,MAAMC,cAAcxB,UAAUuB,GAAG;IACjC,IAAID,YAAY;QACdrB,OAAOsB,GAAG,GAAGC,cACTR,IAAAA,8BAAc,EACZb,CAAAA;YACE,IAAI,OAAOmB,eAAe,YAAY;gBACpCA,WAAWnB;YACb,OAAO;gBACLC,OAAOW,MAAM,CAACO,YAAY;oBAAEG,SAAStB;gBAAM;YAC7C;QACF,GACAA,CAAAA;YACE,IAAI,OAAOqB,gBAAgB,YAAY;gBACrCA,YAAYrB;YACd,OAAO;gBACLC,OAAOW,MAAM,CAACS,aAAa;oBAAEC,SAAStB;gBAAM;YAC9C;QACF,KAEFmB;IACN;IACA,OAAOrB;AACT"}