{"version":3,"file":"FileUploader.cjs","names":["_styled","_interopRequireDefault","require","_react","_Button","_Field","_i18n","_index","_OdysseyDesignTokensContext","_Typography","_FileUploadIllustration","_FileUploadPreview","_jsxRuntime","e","__esModule","default","fileUploadTypes","exports","fileUploadVariants","BaseInputWrapper","styled","div","position","alignSelf","input","width","height","opacity","InputContainer","display","alignItems","justifyContent","borderStyle","hasError","odysseyDesignTokens","padding","Spacing6","Spacing3","border","PaletteDangerMain","HueNeutral300","borderRadius","BorderRadiusMain","transition","TransitionTimingMain","borderColor","HueNeutral700","FocusOutlineColorPrimary","boxShadow","outline","FocusOutlineWidthMain","FocusOutlineStyle","outlineOffset","FocusOutlineOffsetTight","backgroundColor","HueNeutral50","BorderColorDisabled","color","TypographyColorDisabled","ButtonAndInfoContainer","flexDirection","CenterAlignedSupportText","textAlign","FileUploader","acceptedFileTypes","defaultValue","errorMessage","id","isDisabled","isFullWidth","isOptional","hint","HintLinkComponent","label","onChange","type","value","variant","useOdysseyDesignTokens","t","useTranslation","inputRef","useRef","filesToUpload","setFilesToUpload","useState","resolvedFiles","undefined","updateFilesToUpload","useCallback","event","files","target","length","mergedFiles","concat","Array","from","slice","triggerFileInputClick","current","click","removeFileFromFilesToUploadList","name","deletedFileFilteredOut","filter","file","renderFileInput","ariaDescribedBy","errorMessageElementId","labelElementId","acceptedFileTypesAsString","join","Input","jsx","accept","disabled","multiple","ref","title","Fragment","children","jsxs","Button","onClick","startIcon","UploadIcon","Boolean","FileUploadIllustration","Support","Field","fieldType","hasVisibleLabel","renderFieldComponent","FileUploadPreview","fileNames","map","onFileRemove","MemoizedFileUploader","FileUpload","memo","displayName"],"sources":["../../../src/FileUploader/FileUploader.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport { ChangeEvent, memo, useCallback, useRef, useState } from \"react\";\n\nimport { Button } from \"../Buttons/Button.js\";\nimport { Field, RenderFieldComponentProps } from \"../Field.js\";\nimport { FieldComponentProps } from \"../FieldComponentProps.js\";\nimport { useTranslation } from \"../i18n.generated/i18n.js\";\nimport { UploadIcon } from \"../icons.generated/index.js\";\nimport {\n  DesignTokens,\n  useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { Support } from \"../Typography.js\";\nimport { FileUploadIllustration } from \"./FileUploadIllustration.js\";\nimport { FileUploadPreview } from \"./FileUploadPreview.js\";\n\nexport const fileUploadTypes = [\"single\", \"multiple\"] as const;\nexport const fileUploadVariants = [\n  \"button\",\n  \"dragAndDrop\",\n  \"dragAndDropWithIcon\",\n] as const;\n\nconst BaseInputWrapper = styled.div({\n  position: \"relative\",\n  alignSelf: \"flex-start\",\n\n  input: {\n    position: \"absolute\",\n    width: \"100%\",\n    height: \"100%\",\n    opacity: 0,\n  },\n});\n\nconst InputContainer = styled(BaseInputWrapper)<{\n  hasError: boolean;\n  odysseyDesignTokens: DesignTokens;\n}>(\n  {\n    display: \"flex\",\n    alignSelf: \"unset\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n\n    \"&:has(input:focus)\": {\n      borderStyle: \"solid\",\n    },\n  },\n  ({ hasError, odysseyDesignTokens }) => ({\n    padding: `${odysseyDesignTokens.Spacing6} ${odysseyDesignTokens.Spacing3}`,\n    border: hasError\n      ? `1px solid ${odysseyDesignTokens.PaletteDangerMain}`\n      : `1px dashed ${odysseyDesignTokens.HueNeutral300}`,\n    borderRadius: odysseyDesignTokens.BorderRadiusMain,\n    transition: `border-color ${odysseyDesignTokens.TransitionTimingMain}, box-shadow ${odysseyDesignTokens.TransitionTimingMain}`,\n\n    \"&:hover\": {\n      borderColor: odysseyDesignTokens.HueNeutral700,\n    },\n\n    \"&:has(input:focus)\": {\n      borderColor: odysseyDesignTokens.FocusOutlineColorPrimary,\n      boxShadow: `0 0 0 1px ${odysseyDesignTokens.FocusOutlineColorPrimary}`,\n      outline: `${odysseyDesignTokens.FocusOutlineWidthMain} ${odysseyDesignTokens.FocusOutlineStyle} transparent`,\n      outlineOffset: odysseyDesignTokens.FocusOutlineOffsetTight,\n    },\n\n    \"&:has(input:disabled)\": {\n      backgroundColor: odysseyDesignTokens.HueNeutral50,\n      border: `1px solid ${odysseyDesignTokens.BorderColorDisabled}`,\n      color: odysseyDesignTokens.TypographyColorDisabled,\n\n      \"&:hover\": {\n        borderColor: odysseyDesignTokens.BorderColorDisabled,\n      },\n    },\n  }),\n);\n\nconst ButtonAndInfoContainer = styled.div({\n  display: \"flex\",\n  flexDirection: \"column\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n});\n\nconst CenterAlignedSupportText = styled.div({\n  textAlign: \"center\",\n});\n\nexport type FileUploaderProps = {\n  /**\n   * an array of file types the user is able to upload.\n   * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept#unique_file_type_specifiers for examples\n   */\n  acceptedFileTypes?: string[];\n  /**\n   * The initial file list for uncontrolled usage. Applied only on mount.\n   */\n  defaultValue?: File[];\n  /**\n   * If `true`, the file uploader is disabled and cannot accept new files.\n   * @default false\n   */\n  isDisabled?: boolean;\n  /**\n   * The label for the `input` element.\n   */\n  label: string;\n  /**\n   * Called when the list of files to upload changes. Receives the updated file array.\n   */\n  onChange: (files: File[]) => void;\n  /**\n   * Controls how many files the uploader accepts.\n   * - If `'single'`, only one file can be selected at a time.\n   * - If `'multiple'`, the user can select more than one file at once.\n   */\n  type?: (typeof fileUploadTypes)[number];\n  /**\n   * The file list for controlled usage. When provided, the consumer is responsible for updating it via `onChange`.\n   */\n  value?: File[];\n  /**\n   * The visual interaction style. `\"button\"` renders a compact upload button;\n   * `\"dragAndDrop\"` renders a drop zone; `\"dragAndDropWithIcon\"` adds an illustration to the drop zone.\n   */\n  variant: (typeof fileUploadVariants)[number];\n} & Pick<\n  FieldComponentProps,\n  | \"errorMessage\"\n  | \"hint\"\n  | \"HintLinkComponent\"\n  | \"id\"\n  | \"isFullWidth\"\n  | \"isOptional\"\n>;\n\n/**\n * A form field that allows users to select and upload one or more files, supporting button, drag-and-drop, and drag-and-drop-with-icon interaction variants.\n */\nconst FileUploader = ({\n  acceptedFileTypes,\n  defaultValue,\n  errorMessage,\n  id,\n  isDisabled = false,\n  isFullWidth,\n  isOptional,\n  hint,\n  HintLinkComponent,\n  label,\n  onChange,\n  type,\n  value,\n  variant,\n}: FileUploaderProps) => {\n  const odysseyDesignTokens = useOdysseyDesignTokens();\n  const { t } = useTranslation();\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [filesToUpload, setFilesToUpload] = useState<File[]>(\n    defaultValue ?? [],\n  );\n\n  const resolvedFiles = value !== undefined ? value : filesToUpload;\n\n  const updateFilesToUpload = useCallback(\n    (event: ChangeEvent<HTMLInputElement>) => {\n      const { files } = event.target;\n\n      if (files && files.length > 0) {\n        const mergedFiles =\n          type === \"multiple\"\n            ? resolvedFiles.concat(Array.from(files))\n            : Array.from(files).slice();\n\n        setFilesToUpload(mergedFiles);\n        onChange(mergedFiles);\n      }\n\n      // reset input value to allow re-upload of a file with the same name\n      event.target.value = \"\";\n    },\n    [type, resolvedFiles, onChange],\n  );\n\n  const triggerFileInputClick = useCallback(() => {\n    inputRef.current?.click();\n  }, [inputRef]);\n\n  const removeFileFromFilesToUploadList = useCallback<(name: string) => void>(\n    (name) => {\n      const deletedFileFilteredOut = resolvedFiles.filter(\n        (file) => file.name !== name,\n      );\n      setFilesToUpload(deletedFileFilteredOut);\n      onChange(deletedFileFilteredOut);\n    },\n    [resolvedFiles, onChange],\n  );\n\n  const renderFileInput = useCallback(\n    ({\n      ariaDescribedBy,\n      errorMessageElementId,\n      id,\n      labelElementId,\n    }: RenderFieldComponentProps) => {\n      const acceptedFileTypesAsString = acceptedFileTypes?.join(\",\");\n\n      const Input = () => (\n        <input\n          accept={acceptedFileTypesAsString}\n          aria-describedby={ariaDescribedBy}\n          aria-errormessage={errorMessageElementId}\n          aria-labelledby={labelElementId}\n          disabled={isDisabled}\n          id={id}\n          multiple={type === \"multiple\"}\n          onChange={updateFilesToUpload}\n          ref={inputRef}\n          title=\"\"\n          type=\"file\"\n        />\n      );\n\n      if (variant === \"button\") {\n        return (\n          <>\n            <BaseInputWrapper>\n              <Input />\n              <Button\n                isDisabled={isDisabled}\n                label={t(\"fileupload.button.text\")}\n                onClick={triggerFileInputClick}\n                startIcon={<UploadIcon />}\n                variant=\"secondary\"\n              />\n            </BaseInputWrapper>\n          </>\n        );\n      }\n\n      return (\n        <>\n          <InputContainer\n            hasError={Boolean(errorMessage)}\n            odysseyDesignTokens={odysseyDesignTokens}\n          >\n            <Input />\n            <ButtonAndInfoContainer>\n              {variant === \"dragAndDropWithIcon\" && <FileUploadIllustration />}\n              <CenterAlignedSupportText>\n                <Support color=\"textSecondary\">\n                  {t(\"fileupload.prompt.text\")}\n                </Support>\n              </CenterAlignedSupportText>\n              <Button\n                isDisabled={isDisabled}\n                label={t(\"fileupload.button.text\")}\n                onClick={triggerFileInputClick}\n                startIcon={<UploadIcon />}\n                variant=\"secondary\"\n              />\n            </ButtonAndInfoContainer>\n          </InputContainer>\n        </>\n      );\n    },\n    [\n      acceptedFileTypes,\n      errorMessage,\n      isDisabled,\n      inputRef,\n      odysseyDesignTokens,\n      triggerFileInputClick,\n      t,\n      type,\n      updateFilesToUpload,\n      variant,\n    ],\n  );\n\n  return (\n    <>\n      <Field\n        errorMessage={errorMessage}\n        fieldType=\"single\"\n        hasVisibleLabel\n        hint={hint}\n        HintLinkComponent={HintLinkComponent}\n        id={id}\n        isDisabled={isDisabled}\n        isFullWidth={isFullWidth && variant !== \"button\"}\n        isOptional={isOptional}\n        label={label}\n        renderFieldComponent={renderFileInput}\n      />\n      {resolvedFiles.length > 0 && (\n        <FileUploadPreview\n          fileNames={resolvedFiles.map((file) => file.name)}\n          isDisabled={isDisabled}\n          onFileRemove={removeFileFromFilesToUploadList}\n        />\n      )}\n    </>\n  );\n};\n\nconst MemoizedFileUploader = memo(FileUploader);\nMemoizedFileUploader.displayName = \"FileUploader\";\n\nexport {\n  MemoizedFileUploader as FileUpload,\n  MemoizedFileUploader as FileUploader,\n};\n"],"mappings":"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","ignoreList":[]}