{"version":3,"sources":["../../src/Progress/Progress.tsx","../../src/utils.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport isNumber from 'is-number';\nimport React, { ElementType, FC, HTMLAttributes } from 'react';\nimport { logError } from '../utils';\n\nexport interface ProgressProps extends HTMLAttributes<HTMLElement> {\n  /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n  tag?: ElementType;\n  /**\n   * Classi aggiuntive da usare per il componente contenitore del Progress\n   * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n   * passare `true`.\n   * */\n  wrapperClassName?: string | true;\n  /** Classi aggiuntive da usare per il componente interno del Progress */\n  className?: string;\n  /** Valore corrente (numerico) */\n  value?: number | string;\n  /** Etichetta con testo per indicare il progresso corrente da mostrare ai dispositivi screen reader */\n  label?: string;\n  /** Quando non è possibile stabilire una percentuale di progressione utilizzare una Progress Bar di tipo indeterminato */\n  indeterminate?: boolean;\n  /** Le varianti di colore definite in Bootstrap Italia */\n  color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n  testId?: string;\n}\n\nexport const Progress: FC<ProgressProps> = ({\n  wrapperClassName,\n  className,\n  tag = 'div',\n  value,\n  label,\n  indeterminate = false,\n  color,\n  testId,\n  ...attributes\n}) => {\n  const Tag = tag;\n  if (!isNumber(value) && !indeterminate) {\n    logError(`The passed \"value\" is not a valid number. You passed \"${value}\"`);\n  }\n  const numericValue = Number(value);\n  const wrapperClasses = classNames('progress-bar-wrapper');\n  const secondaryWrapperClasses = classNames(wrapperClassName === true ? className : wrapperClassName, 'progress', {\n    'progress-indeterminate': indeterminate,\n    'progress-color': color\n  });\n  const classes = classNames(className, 'progress-bar', {\n    [`bg-${color}`]: color\n  });\n\n  if (label && numericValue) {\n    return (\n      <Tag className={wrapperClasses} data-testid={testId}>\n        <div className='progress-bar-label'>\n          <span className='visually-hidden'>{label}</span>\n          {numericValue + '%'}\n        </div>\n        <Tag className={secondaryWrapperClasses}>\n          <div\n            {...attributes}\n            className={classes}\n            role='progressbar'\n            style={{ width: numericValue + '%' }}\n            aria-valuenow={numericValue}\n            aria-valuemin={0}\n            aria-valuemax={100}\n          />\n        </Tag>\n      </Tag>\n    );\n  }\n\n  return (\n    <Tag className={secondaryWrapperClasses} data-testid={testId}>\n      <div className='progress-bar-label'>\n        <span className='visually-hidden'>{label}</span>\n      </div>\n      <div\n        {...attributes}\n        className={classes}\n        role='progressbar'\n        style={{ width: numericValue + '%' }}\n        aria-valuenow={numericValue}\n        aria-valuemin={0}\n        aria-valuemax={100}\n      />\n    </Tag>\n  );\n};\n","export const noop = () => {};\n\nexport const logError = (message: string) => {\n  if (typeof console !== 'undefined') {\n    if (console.error) {\n      console.error(message);\n    } else {\n      console.log(message);\n    }\n  }\n};\n\n// @internal Used for testing purposes only\nexport const flushMessageCache = () => {\n  for (const key in messages) {\n    delete messages[key];\n  }\n};\n\nconst messages: Record<string, 1> = {};\nexport const notifyDeprecation = (message: string, options: { once: boolean } = { once: true }) => {\n  if (!options.once) {\n    logError(message);\n  } else {\n    if (!messages[message]) {\n      logError(message);\n      messages[message] = 1;\n    }\n  }\n};\n\nexport function mapToCssModules(className: string | null, cssModules?: Record<string, string>) {\n  const finalClassNames = className == null ? '' : className;\n  if (!cssModules) {\n    return finalClassNames;\n  }\n  return finalClassNames\n    .split(' ')\n    .map((klass) => cssModules[klass] ?? klass)\n    .join(' ');\n}\n\ntype UnknownObject = Record<string, unknown>;\n\nexport function pick<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n  const keysArray = Array.isArray(keys) ? keys : [keys];\n  const newObj: Partial<T> = {};\n  for (const key of keysArray) {\n    if (key in obj) {\n      newObj[key] = obj[key];\n    }\n  }\n  return newObj;\n}\n\nexport function omit<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n  const keysLookup = new Set(Array.isArray(keys) ? keys : [keys]);\n\n  const newObj: Partial<T> = {};\n  for (const key in obj) {\n    if (!keysLookup.has(key)) {\n      newObj[key] = obj[key];\n    }\n  }\n  return newObj;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,2BACvBC,EAAqB,0BACrBC,EAAuD,sBCAhD,IAAMC,EAAYC,GAAoB,CACvC,OAAO,QAAY,MACjB,QAAQ,MACV,QAAQ,MAAMA,CAAO,EAErB,QAAQ,IAAIA,CAAO,EAGzB,EDiBO,IAAMC,EAA8B,CAAC,CAC1C,iBAAAC,EACA,UAAAC,EACA,IAAAC,EAAM,MACN,MAAAC,EACA,MAAAC,EACA,cAAAC,EAAgB,GAChB,MAAAC,EACA,OAAAC,EACA,GAAGC,CACL,IAAM,CACJ,IAAMC,EAAMP,EACR,IAAC,EAAAQ,SAASP,CAAK,GAAK,CAACE,GACvBM,EAAS,yDAAyDR,CAAK,GAAG,EAE5E,IAAMS,EAAe,OAAOT,CAAK,EAC3BU,KAAiB,EAAAC,SAAW,sBAAsB,EAClDC,KAA0B,EAAAD,SAAWd,IAAqB,GAAOC,EAAYD,EAAkB,WAAY,CAC/G,yBAA0BK,EAC1B,iBAAkBC,CACpB,CAAC,EACKU,KAAU,EAAAF,SAAWb,EAAW,eAAgB,CACpD,CAAC,MAAMK,CAAK,EAAE,EAAGA,CACnB,CAAC,EAED,OAAIF,GAASQ,EAET,EAAAK,QAAA,cAACR,EAAA,CAAI,UAAWI,EAAgB,cAAaN,GAC3C,EAAAU,QAAA,cAAC,OAAI,UAAU,sBACb,EAAAA,QAAA,cAAC,QAAK,UAAU,mBAAmBb,CAAM,EACxCQ,EAAe,GAClB,EACA,EAAAK,QAAA,cAACR,EAAA,CAAI,UAAWM,GACd,EAAAE,QAAA,cAAC,OACE,GAAGT,EACJ,UAAWQ,EACX,KAAK,cACL,MAAO,CAAE,MAAOJ,EAAe,GAAI,EACnC,gBAAeA,EACf,gBAAe,EACf,gBAAe,IACjB,CACF,CACF,EAKF,EAAAK,QAAA,cAACR,EAAA,CAAI,UAAWM,EAAyB,cAAaR,GACpD,EAAAU,QAAA,cAAC,OAAI,UAAU,sBACb,EAAAA,QAAA,cAAC,QAAK,UAAU,mBAAmBb,CAAM,CAC3C,EACA,EAAAa,QAAA,cAAC,OACE,GAAGT,EACJ,UAAWQ,EACX,KAAK,cACL,MAAO,CAAE,MAAOJ,EAAe,GAAI,EACnC,gBAAeA,EACf,gBAAe,EACf,gBAAe,IACjB,CACF,CAEJ","names":["Progress_exports","__export","Progress","__toCommonJS","import_classnames","import_is_number","import_react","logError","message","Progress","wrapperClassName","className","tag","value","label","indeterminate","color","testId","attributes","Tag","isNumber","logError","numericValue","wrapperClasses","classNames","secondaryWrapperClasses","classes","React"]}