{"version":3,"file":"switch.mjs","names":[],"sources":["../../../../package/common/switch/switch.tsx"],"sourcesContent":["import { useEffect, useState, type ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { useComponentDefaults } from '../configProvider';\nimport type { SwitchProps } from './switch.types';\nimport styles from './switch.module.pcss';\n\nfunction Switch(props: SwitchProps): ReactElement {\n  const {\n    label = '',\n    selected = false,\n    onToggle = () => {},\n    className = '',\n    style,\n    disabled = false,\n    title = '',\n    tabIndex = 0,\n    formValidator = null,\n    children = null,\n    classNames,\n    styles: slotStyles,\n    ...rest\n  } = useComponentDefaults('Switch', props);\n  const [, forceUpdate] = useState(0);\n\n  useEffect(() => {\n    if (!formValidator) return;\n    const listener = () => forceUpdate((n) => n + 1);\n    formValidator.registerOnUpdateListener(listener);\n    return () => formValidator.removeOnUpdateListener(listener);\n  }, [formValidator]);\n\n  function handleToggle(event?: React.MouseEvent | React.KeyboardEvent) {\n    if (disabled) return;\n    if (formValidator) {\n      formValidator.set(!formValidator.value);\n    }\n    onToggle(!currSelected, event);\n  }\n\n  const currSelected = (formValidator ? formValidator.value : selected) as boolean;\n\n  return (\n    <div\n      {...rest}\n      title={title}\n      className={cx(\n        styles.switch,\n        {\n          [styles.switchDisabled]: disabled,\n        },\n        className,\n      )}\n      style={style}\n      onClick={handleToggle}\n      onKeyDown={(e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          handleToggle(e);\n        }\n      }}\n      role='switch'\n      aria-checked={currSelected}\n      tabIndex={disabled ? -1 : tabIndex}\n    >\n      <div\n        className={cx(styles.switchTrack, currSelected && styles.switchTrackChecked, classNames?.track)}\n        style={slotStyles?.track}\n      >\n        <div\n          className={cx(styles.switchThumb, currSelected && styles.switchThumbChecked, classNames?.thumb)}\n          style={slotStyles?.thumb}\n        />\n      </div>\n      {(children || label) && (\n        <div className={cx(styles.switchLabel, classNames?.label)} style={slotStyles?.label}>\n          {children || label}\n        </div>\n      )}\n    </div>\n  );\n}\n\nexport default Switch;\n"],"mappings":"8PAOA,SAAS,EAAO,EAAkC,CAChD,GAAM,CACJ,QAAQ,GACR,WAAW,GACX,eAAiB,CAAC,EAClB,YAAY,GACZ,QACA,WAAW,GACX,QAAQ,GACR,WAAW,EACX,gBAAgB,KAChB,WAAW,KACX,aACA,OAAQ,EACR,GAAG,GACD,EAAqB,SAAU,CAAK,EAClC,EAAG,GAAe,EAAS,CAAC,EAElC,MAAgB,CACd,GAAI,CAAC,EAAe,OACpB,IAAM,MAAiB,EAAa,GAAM,EAAI,CAAC,EAE/C,OADA,EAAc,yBAAyB,CAAQ,MAClC,EAAc,uBAAuB,CAAQ,CAC5D,EAAG,CAAC,CAAa,CAAC,EAElB,SAAS,EAAa,EAAgD,CAChE,IACA,GACF,EAAc,IAAI,CAAC,EAAc,KAAK,EAExC,EAAS,CAAC,EAAc,CAAK,EAC/B,CAEA,IAAM,EAAgB,EAAgB,EAAc,MAAQ,EAE5D,OACE,EAAC,MAAD,CACE,GAAI,EACG,QACP,UAAW,EACT,EAAO,OACP,EACG,EAAO,gBAAiB,CAC3B,EACA,CACF,EACO,QACP,QAAS,EACT,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,eAAe,EACjB,EAAa,CAAC,EAElB,EACA,KAAK,SACL,eAAc,EACd,SAAU,EAAW,GAAK,EApB5B,SAAA,CAsBE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,YAAa,GAAgB,EAAO,mBAAoB,GAAY,KAAK,EAC9F,MAAO,GAAY,MAEnB,SAAA,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,YAAa,GAAgB,EAAO,mBAAoB,GAAY,KAAK,EAC9F,MAAO,GAAY,KACpB,CAAA,CACE,CAAA,GACH,GAAY,IACZ,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,GAAY,KAAK,EAAG,MAAO,GAAY,MAC3E,SAAA,GAAY,CACV,CAAA,CAEJ,GAET"}