{"version":3,"sources":["jsdelivr-header.js","/npm/@fluentui/react-textarea@9.3.98/lib/components/src/components/Textarea/renderTextarea.tsx","/npm/@fluentui/react-textarea@9.3.98/lib/components/src/components/Textarea/useTextarea.ts","/npm/@fluentui/react-textarea@9.3.98/lib/components/Textarea/useTextareaStyles.styles.js","/npm/@fluentui/react-textarea@9.3.98/lib/components/src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"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","file":"/npm/@fluentui/react-textarea@9.3.98/lib/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@fluentui/react-textarea@9.3.98/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { TextareaState, TextareaSlots } from './Textarea.types';\n\n/**\n * Render the final JSX of Textarea\n */\nexport const renderTextarea_unstable = (state: TextareaState) => {\n  assertSlots<TextareaSlots>(state);\n\n  return (\n    <state.root>\n      <state.textarea />\n    </state.root>\n  );\n};\n","import * as React from 'react';\nimport { useFieldControlProps_unstable } from '@fluentui/react-field';\nimport { getPartitionedNativeProps, useControllableState, useEventCallback, slot } from '@fluentui/react-utilities';\nimport type { TextareaProps, TextareaState } from './Textarea.types';\nimport { useOverrides_unstable as useOverrides } from '@fluentui/react-shared-contexts';\n\n/**\n * Create the state required to render Textarea.\n *\n * The returned state can be modified with hooks such as useTextareaStyles_unstable,\n * before being passed to renderTextarea_unstable.\n *\n * @param props - props from this instance of Textarea\n * @param ref - reference to root HTMLElement of Textarea\n */\nexport const useTextarea_unstable = (props: TextareaProps, ref: React.Ref<HTMLTextAreaElement>): TextareaState => {\n  // Merge props from surrounding <Field>, if any\n  props = useFieldControlProps_unstable(props, { supportsLabelFor: true, supportsRequired: true, supportsSize: true });\n\n  const overrides = useOverrides();\n\n  const {\n    size = 'medium',\n    appearance = overrides.inputDefaultAppearance ?? 'outline',\n    resize = 'none',\n    onChange,\n  } = props;\n\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    (appearance === 'filled-darker-shadow' || appearance === 'filled-lighter-shadow')\n  ) {\n    // eslint-disable-next-line no-console\n    console.error(\n      \"The 'filled-darker-shadow' and 'filled-lighter-shadow' appearances are deprecated and will be removed in the\" +\n        ' future.',\n    );\n  }\n\n  const [value, setValue] = useControllableState({\n    state: props.value,\n    defaultState: props.defaultValue,\n    initialState: undefined,\n  });\n\n  const nativeProps = getPartitionedNativeProps({\n    props,\n    primarySlotTagName: 'textarea',\n    excludedPropNames: ['onChange', 'value', 'defaultValue'],\n  });\n\n  const state: TextareaState = {\n    size,\n    appearance,\n    resize,\n    components: {\n      root: 'span',\n      textarea: 'textarea',\n    },\n    textarea: slot.always(props.textarea, {\n      defaultProps: {\n        ref,\n        ...nativeProps.primary,\n      },\n      elementType: 'textarea',\n    }),\n    root: slot.always(props.root, {\n      defaultProps: nativeProps.root,\n      elementType: 'span',\n    }),\n  };\n\n  state.textarea.value = value;\n  state.textarea.onChange = useEventCallback(ev => {\n    const newValue = ev.target.value;\n    onChange?.(ev, { value: newValue });\n    setValue(newValue);\n  });\n\n  return state;\n};\n","import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const textareaClassNames = {\n    root: 'fui-Textarea',\n    textarea: 'fui-Textarea__textarea'\n};\n/**\n * Styles for the root(wrapper) slot\n */ const useRootStyles = makeStyles({\n    base: {\n        display: 'inline-flex',\n        boxSizing: 'border-box',\n        position: 'relative',\n        // Padding needed so the focus indicator does not overlap the resize handle, this should match focus indicator size.\n        padding: `0 0 ${tokens.strokeWidthThick} 0`,\n        margin: '0',\n        borderRadius: tokens.borderRadiusMedium,\n        verticalAlign: 'top'\n    },\n    disabled: {\n        backgroundColor: tokens.colorTransparentBackground,\n        border: `${tokens.strokeWidthThin} solid ${tokens.colorNeutralStrokeDisabled}`,\n        '@media (forced-colors: active)': {\n            ...shorthands.borderColor('GrayText')\n        }\n    },\n    interactive: {\n        // This is all for the bottom focus border.\n        // It's supposed to be 2px flat all the way across and match the radius of the field's corners.\n        '::after': {\n            boxSizing: 'border-box',\n            content: '\"\"',\n            position: 'absolute',\n            left: '-1px',\n            bottom: '-1px',\n            right: '-1px',\n            // Maintaining the correct corner radius:\n            // Use the whole border-radius as the height and only put radii on the bottom corners.\n            // (Otherwise the radius would be automatically reduced to fit available space.)\n            // max() ensures the focus border still shows up even if someone sets tokens.borderRadiusMedium to 0.\n            height: `max(${tokens.strokeWidthThick}, ${tokens.borderRadiusMedium})`,\n            borderBottomLeftRadius: tokens.borderRadiusMedium,\n            borderBottomRightRadius: tokens.borderRadiusMedium,\n            // Flat 2px border:\n            // By default borderBottom will cause little \"horns\" on the ends. The clipPath trims them off.\n            // (This could be done without trimming using `background: linear-gradient(...)`, but using\n            // borderBottom makes it easier for people to override the color if needed.)\n            borderBottom: `${tokens.strokeWidthThick} solid ${tokens.colorCompoundBrandStroke}`,\n            clipPath: `inset(calc(100% - ${tokens.strokeWidthThick}) 0 0 0)`,\n            // Animation for focus OUT\n            transform: 'scaleX(0)',\n            transitionProperty: 'transform',\n            transitionDuration: tokens.durationUltraFast,\n            transitionDelay: tokens.curveAccelerateMid,\n            '@media screen and (prefers-reduced-motion: reduce)': {\n                transitionDuration: '0.01ms',\n                transitionDelay: '0.01ms'\n            }\n        },\n        ':focus-within::after': {\n            // Animation for focus IN\n            transform: 'scaleX(1)',\n            transitionProperty: 'transform',\n            transitionDuration: tokens.durationNormal,\n            transitionDelay: tokens.curveDecelerateMid,\n            '@media screen and (prefers-reduced-motion: reduce)': {\n                transitionDuration: '0.01ms',\n                transitionDelay: '0.01ms'\n            }\n        },\n        ':focus-within:active::after': {\n            // This is if the user clicks the field again while it's already focused\n            borderBottomColor: tokens.colorCompoundBrandStrokePressed\n        },\n        ':focus-within': {\n            outlineWidth: tokens.strokeWidthThick,\n            outlineStyle: 'solid',\n            outlineColor: 'transparent'\n        }\n    },\n    filled: {\n        border: `${tokens.strokeWidthThin} solid ${tokens.colorTransparentStroke}`,\n        ':hover,:focus-within': {\n            ...shorthands.borderColor(tokens.colorTransparentStrokeInteractive)\n        }\n    },\n    'filled-darker': {\n        backgroundColor: tokens.colorNeutralBackground3\n    },\n    'filled-lighter': {\n        backgroundColor: tokens.colorNeutralBackground1\n    },\n    'filled-darker-shadow': {\n        backgroundColor: tokens.colorNeutralBackground3,\n        border: `${tokens.strokeWidthThin} solid ${tokens.colorTransparentStrokeInteractive}`,\n        boxShadow: tokens.shadow2\n    },\n    'filled-lighter-shadow': {\n        backgroundColor: tokens.colorNeutralBackground1,\n        border: `${tokens.strokeWidthThin} solid ${tokens.colorTransparentStrokeInteractive}`,\n        boxShadow: tokens.shadow2\n    },\n    outline: {\n        backgroundColor: tokens.colorNeutralBackground1,\n        border: `${tokens.strokeWidthThin} solid ${tokens.colorNeutralStroke1}`,\n        borderBottomColor: tokens.colorNeutralStrokeAccessible\n    },\n    outlineInteractive: {\n        ':hover': {\n            border: `${tokens.strokeWidthThin} solid ${tokens.colorNeutralStroke1Hover}`,\n            borderBottomColor: tokens.colorNeutralStrokeAccessibleHover\n        },\n        ':active': {\n            border: `${tokens.strokeWidthThin} solid ${tokens.colorNeutralStroke1Pressed}`,\n            borderBottomColor: tokens.colorNeutralStrokeAccessiblePressed\n        },\n        ':focus-within': {\n            border: `${tokens.strokeWidthThin} solid ${tokens.colorNeutralStroke1}`,\n            borderBottomColor: tokens.colorCompoundBrandStroke\n        }\n    },\n    invalid: {\n        ':not(:focus-within),:hover:not(:focus-within)': {\n            ...shorthands.borderColor(tokens.colorPaletteRedBorder2)\n        }\n    }\n});\n/**\n * Styles for the textarea slot\n */ const useTextareaStyles = makeStyles({\n    base: {\n        ...shorthands.borderStyle('none'),\n        margin: '0',\n        backgroundColor: 'transparent',\n        boxSizing: 'border-box',\n        color: tokens.colorNeutralForeground1,\n        flexGrow: 1,\n        fontFamily: tokens.fontFamilyBase,\n        height: '100%',\n        '::placeholder': {\n            color: tokens.colorNeutralForeground4,\n            opacity: 1\n        },\n        '::selection': {\n            color: tokens.colorNeutralForegroundInverted,\n            backgroundColor: tokens.colorNeutralBackgroundInverted\n        },\n        outlineStyle: 'none'\n    },\n    disabled: {\n        color: tokens.colorNeutralForegroundDisabled,\n        cursor: 'not-allowed',\n        '::placeholder': {\n            color: tokens.colorNeutralForegroundDisabled\n        }\n    },\n    // The padding style adds both content and regular padding (from design spec), this is because the handle is not\n    // affected by changing the padding of the root.\n    small: {\n        minHeight: '40px',\n        padding: `${tokens.spacingVerticalXS} calc(${tokens.spacingHorizontalSNudge} + ${tokens.spacingHorizontalXXS})`,\n        maxHeight: '200px',\n        ...typographyStyles.caption1\n    },\n    medium: {\n        minHeight: '52px',\n        padding: `${tokens.spacingVerticalSNudge} calc(${tokens.spacingHorizontalMNudge} + ${tokens.spacingHorizontalXXS})`,\n        maxHeight: '260px',\n        ...typographyStyles.body1\n    },\n    large: {\n        minHeight: '64px',\n        padding: `${tokens.spacingVerticalS} calc(${tokens.spacingHorizontalM} + ${tokens.spacingHorizontalXXS})`,\n        maxHeight: '320px',\n        ...typographyStyles.body2\n    }\n});\n/**\n * Styles for the textarea's resize property\n */ const useTextareaResizeStyles = makeStyles({\n    none: {\n        resize: 'none'\n    },\n    both: {\n        resize: 'both'\n    },\n    horizontal: {\n        resize: 'horizontal'\n    },\n    vertical: {\n        resize: 'vertical'\n    }\n});\n/**\n * Apply styling to the Textarea slots based on the state\n */ export const useTextareaStyles_unstable = (state)=>{\n    'use no memo';\n    const { size, appearance, resize } = state;\n    const disabled = state.textarea.disabled;\n    const invalid = `${state.textarea['aria-invalid']}` === 'true';\n    const filled = appearance.startsWith('filled');\n    const rootStyles = useRootStyles();\n    state.root.className = mergeClasses(textareaClassNames.root, rootStyles.base, disabled && rootStyles.disabled, !disabled && filled && rootStyles.filled, !disabled && rootStyles[appearance], !disabled && rootStyles.interactive, !disabled && appearance === 'outline' && rootStyles.outlineInteractive, !disabled && invalid && rootStyles.invalid, state.root.className);\n    const textareaStyles = useTextareaStyles();\n    const textareaResizeStyles = useTextareaResizeStyles();\n    state.textarea.className = mergeClasses(textareaClassNames.textarea, textareaStyles.base, textareaStyles[size], textareaResizeStyles[resize], disabled && textareaStyles.disabled, state.textarea.className);\n    return state;\n};\n","import * as React from 'react';\nimport { renderTextarea_unstable } from './renderTextarea';\nimport { useTextarea_unstable } from './useTextarea';\nimport { useTextareaStyles_unstable } from './useTextareaStyles.styles';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport type { TextareaProps } from './Textarea.types';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * The Textarea component allows the user to enter and edit text in multiple lines.\n */\nexport const Textarea: ForwardRefComponent<TextareaProps> = React.forwardRef((props, ref) => {\n  const state = useTextarea_unstable(props, ref);\n\n  useTextareaStyles_unstable(state);\n\n  useCustomStyleHook_unstable('useTextareaStyles_unstable')(state);\n\n  return renderTextarea_unstable(state);\n});\n\nTextarea.displayName = 'Textarea';\n"]}