{"version":3,"file":"index15.mjs","sources":["../src/components/selection-control/selector/index.tsx"],"sourcesContent":["import { FunctionComponent, ReactNode, useState, useEffect } from \"react\";\nimport styles from \"./SelectionControl.module.css\";\nimport {\n  LabelPairedCircleInfoSmRegularIcon,\n  LabelPairedCircleInfoMdRegularIcon,\n  StandaloneSquareBoldIcon,\n  StandaloneSquareCheckFillIcon,\n  StandaloneSquareMinusFillIcon,\n  StandaloneCircleBoldIcon,\n  StandaloneCircleDotBoldIcon,\n} from \"@deriv/quill-icons\";\n\nimport { useFocusHandling } from \"../../../hooks/useFocusHandling\";\n\nconst checkIcons = {\n  unchecked: StandaloneSquareBoldIcon,\n  checked: StandaloneSquareCheckFillIcon,\n  indeterminate: StandaloneSquareMinusFillIcon,\n};\n\nconst radioIcons = {\n  unchecked: StandaloneCircleBoldIcon,\n  checked: StandaloneCircleDotBoldIcon,\n};\n\nconst infoIcons = {\n  sm: LabelPairedCircleInfoSmRegularIcon,\n  md: LabelPairedCircleInfoMdRegularIcon,\n};\n\nexport type SelectionControlType = {\n  className?: string;\n  label?: string;\n  iconData?: string;\n  showInfoIcon?: boolean;\n\n  /** Variant props */\n  indicator?: \"unchecked\" | \"checked\" | \"indeterminate\";\n  size?: \"sm\" | \"md\";\n  state?: \"default\" | \"disabled\";\n  type?: \"checkbox\" | \"radio\";\n\n  /** Custom props */\n  icon?: ReactNode;\n  onChange?: (indicator: \"unchecked\" | \"checked\" | \"indeterminate\") => void;\n  getCurrentIndicator?: () => \"unchecked\" | \"checked\" | \"indeterminate\";\n};\n\nexport const SelectionControl: FunctionComponent<SelectionControlType> = ({\n  className = \"\",\n  size = \"sm\",\n  state = \"default\",\n  indicator = \"unchecked\",\n  label = \"label\",\n  showInfoIcon = true,\n  type = \"checkbox\",\n  onChange,\n}) => {\n  const [focus, setFocus] = useState(false);\n  const [internalIndicator, setInternalIndicator] = useState(indicator);\n  const checkboxId = `quill-selection-control-checkbox-${state}-${size}-${indicator}`;\n\n  useEffect(() => {\n    setInternalIndicator(indicator);\n    onChange?.(indicator);\n  }, [indicator, onChange]);\n\n  const handleClick = () => {\n    if (state === \"disabled\") return;\n\n    const newIndicator =\n      internalIndicator === \"unchecked\" ? \"checked\" : \"unchecked\";\n    setInternalIndicator(newIndicator);\n    onChange?.(newIndicator);\n  };\n\n  const CheckIcon = checkIcons[internalIndicator as keyof typeof checkIcons];\n  const RadioIcon = radioIcons[internalIndicator as keyof typeof radioIcons];\n  const SelectorIcon = type === \"checkbox\" ? CheckIcon : RadioIcon;\n  const InfoIcon = infoIcons[size];\n\n  const { handleFocus, handleBlur } = useFocusHandling({\n    isDisabled: state === \"disabled\",\n    setHighlight: setFocus,\n    onEnter: () => {\n      handleClick();\n    },\n  });\n\n  return (\n    <div\n      className={[\n        styles.root,\n        className,\n        \"quill-ui-next-component\",\n        \"quill-ui-next-no-select\",\n        `${state != \"disabled\" ? \"quill-ui-next-pointer\" : \"\"}`,\n      ].join(\" \")}\n      data-id={checkboxId}\n      data-indicator={internalIndicator}\n      data-size={size}\n      data-type={type}\n      data-state={state}\n      onClick={handleClick}\n      onFocus={handleFocus}\n      onBlur={handleBlur}\n      role=\"checkbox\"\n      aria-checked={internalIndicator === \"checked\"}\n      tabIndex={state === \"disabled\" ? -1 : 0}\n    >\n      <div className={styles.iconBgFocus}>\n        <div className={styles.iconCheckbox}>\n          {SelectorIcon && <SelectorIcon iconSize=\"sm\" />}\n        </div>\n        {focus && <div className={styles.bgFocus} />}\n      </div>\n      <div className={styles.label1}>\n        <div className={styles.label}>{label}</div>\n        {showInfoIcon && (\n          <div className={styles.iconInfo}>\n            <InfoIcon />\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default SelectionControl;\n"],"names":[],"mappings":";;;;;AAcA,MAAM,aAAa;AAAA,EACjB,WAAW;AAAA,EACX,SAAS;AAAA,EACT,eAAe;AACjB;AAEA,MAAM,aAAa;AAAA,EACjB,WAAW;AAAA,EACX,SAAS;AACX;AAEA,MAAM,YAAY;AAAA,EAChB,IAAI;AAAA,EACJ,IAAI;AACN;AAoBO,MAAM,mBAA4D,CAAC;AAAA,EACxE,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,OAAO;AAAA,EACP;AACF,MAAM;AACJ,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK;AACxC,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,SAAS;AACpE,QAAM,aAAa,oCAAoC,KAAK,IAAI,IAAI,IAAI,SAAS;AAEjF,YAAU,MAAM;AACd,yBAAqB,SAAS;AAC9B,yCAAW;AAAA,EAAS,GACnB,CAAC,WAAW,QAAQ,CAAC;AAExB,QAAM,cAAc,MAAM;AACxB,QAAI,UAAU,WAAY;AAEpB,UAAA,eACJ,sBAAsB,cAAc,YAAY;AAClD,yBAAqB,YAAY;AACjC,yCAAW;AAAA,EACb;AAEM,QAAA,YAAY,WAAW,iBAA4C;AACnE,QAAA,YAAY,WAAW,iBAA4C;AACnE,QAAA,eAAe,SAAS,aAAa,YAAY;AACjD,QAAA,WAAW,UAAU,IAAI;AAE/B,QAAM,EAAE,aAAa,WAAW,IAAI,iBAAiB;AAAA,IACnD,YAAY,UAAU;AAAA,IACtB,cAAc;AAAA,IACd,SAAS,MAAM;AACD,kBAAA;AAAA,IAAA;AAAA,EACd,CACD;AAGC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,SAAS,aAAa,0BAA0B,EAAE;AAAA,MAAA,EACrD,KAAK,GAAG;AAAA,MACV,WAAS;AAAA,MACT,kBAAgB;AAAA,MAChB,aAAW;AAAA,MACX,aAAW;AAAA,MACX,cAAY;AAAA,MACZ,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAK;AAAA,MACL,gBAAc,sBAAsB;AAAA,MACpC,UAAU,UAAU,aAAa,KAAK;AAAA,MAEtC,UAAA;AAAA,QAAC,qBAAA,OAAA,EAAI,WAAW,OAAO,aACrB,UAAA;AAAA,UAAC,oBAAA,OAAA,EAAI,WAAW,OAAO,cACpB,0BAAiB,oBAAA,cAAA,EAAa,UAAS,KAAA,CAAK,EAC/C,CAAA;AAAA,UACC,SAAS,oBAAC,OAAI,EAAA,WAAW,OAAO,QAAS,CAAA;AAAA,QAAA,GAC5C;AAAA,QACC,qBAAA,OAAA,EAAI,WAAW,OAAO,QACrB,UAAA;AAAA,UAAA,oBAAC,OAAI,EAAA,WAAW,OAAO,OAAQ,UAAM,OAAA;AAAA,UACpC,oCACE,OAAI,EAAA,WAAW,OAAO,UACrB,UAAA,oBAAC,WAAS,CAAA,EACZ,CAAA;AAAA,QAAA,EAEJ,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAEJ;"}