{"version":3,"file":"isInteractiveElement.mjs","names":["interactiveTags","Set","interactiveRoles","uikitInteractive","isInteractiveElement","element","HTMLElement","SVGElement","getAttribute","uikitName","dataset","uiName","some","interactive","startsWith","tagName","toLowerCase","has","hasAttribute","tabIndex","role"],"sources":["../../src/utils/isInteractiveElement.ts"],"sourcesContent":["const interactiveTags = new Set([\n  'button',\n  'a',\n  'input',\n  'select',\n  'textarea',\n  'details',\n  'summary',\n]);\n\nconst interactiveRoles = new Set([\n  'button',\n  'link',\n  'checkbox',\n  'radio',\n  'combobox',\n  'menuitem',\n  'menuitemcheckbox',\n  'menuitemradio',\n]);\n\nconst uikitInteractive = ['Button', 'Link', 'Select', 'Dropdown', 'Tag', 'DescriptionTooltip'];\n\nexport function isInteractiveElement(element: unknown): boolean {\n  if (!(element instanceof HTMLElement) && !(element instanceof SVGElement)) return false;\n  if (element.getAttribute('disabled') === 'true') return false;\n\n  const uikitName = element.dataset.uiName;\n\n  if (uikitName && uikitInteractive.some((interactive) => uikitName.startsWith(interactive)))\n    return true;\n\n  const tagName = element.tagName.toLowerCase();\n\n  if (interactiveTags.has(tagName)) {\n    // Special case: <a> is only interactive with href\n    if (tagName === 'a') {\n      return element.hasAttribute('href');\n    }\n    return true;\n  }\n\n  // Elements with tabindex are usually meant to be interactive\n  if (element.hasAttribute('tabindex') && element.tabIndex >= 0) return true;\n\n  // Elements with ARIA roles indicating interactivity\n  const role = element.getAttribute('role');\n  if (role && interactiveRoles.has(role.toLowerCase())) return true;\n\n  return false;\n}\n"],"mappings":"AAAA,MAAMA,eAAe,GAAG,IAAIC,GAAG,CAAC,CAC9B,QAAQ,EACR,GAAG,EACH,OAAO,EACP,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,CACV,CAAC;AAEF,MAAMC,gBAAgB,GAAG,IAAID,GAAG,CAAC,CAC/B,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,eAAe,CAChB,CAAC;AAEF,MAAME,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,CAAC;AAE9F,OAAO,SAASC,oBAAoBA,CAACC,OAAgB,EAAW;EAC9D,IAAI,EAAEA,OAAO,YAAYC,WAAW,CAAC,IAAI,EAAED,OAAO,YAAYE,UAAU,CAAC,EAAE,OAAO,KAAK;EACvF,IAAIF,OAAO,CAACG,YAAY,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,OAAO,KAAK;EAE7D,MAAMC,SAAS,GAAGJ,OAAO,CAACK,OAAO,CAACC,MAAM;EAExC,IAAIF,SAAS,IAAIN,gBAAgB,CAACS,IAAI,CAAEC,WAAW,IAAKJ,SAAS,CAACK,UAAU,CAACD,WAAW,CAAC,CAAC,EACxF,OAAO,IAAI;EAEb,MAAME,OAAO,GAAGV,OAAO,CAACU,OAAO,CAACC,WAAW,CAAC,CAAC;EAE7C,IAAIhB,eAAe,CAACiB,GAAG,CAACF,OAAO,CAAC,EAAE;IAChC;IACA,IAAIA,OAAO,KAAK,GAAG,EAAE;MACnB,OAAOV,OAAO,CAACa,YAAY,CAAC,MAAM,CAAC;IACrC;IACA,OAAO,IAAI;EACb;;EAEA;EACA,IAAIb,OAAO,CAACa,YAAY,CAAC,UAAU,CAAC,IAAIb,OAAO,CAACc,QAAQ,IAAI,CAAC,EAAE,OAAO,IAAI;;EAE1E;EACA,MAAMC,IAAI,GAAGf,OAAO,CAACG,YAAY,CAAC,MAAM,CAAC;EACzC,IAAIY,IAAI,IAAIlB,gBAAgB,CAACe,GAAG,CAACG,IAAI,CAACJ,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI;EAEjE,OAAO,KAAK;AACd","ignoreList":[]}