UNPKG

@wordpress/components

Version:
8 lines (7 loc) 3.4 kB
{ "version": 3, "sources": ["../../src/form-file-upload/index.tsx"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\n/**\n * FormFileUpload allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * __next40pxDefaultSize\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function FormFileUpload({\n accept,\n children,\n multiple = false,\n onChange,\n onClick,\n render,\n ...props\n}) {\n const ref = useRef(null);\n const openFileDialog = () => {\n ref.current?.click();\n };\n if (!render) {\n maybeWarnDeprecated36pxSize({\n componentName: 'FormFileUpload',\n __next40pxDefaultSize: props.__next40pxDefaultSize,\n // @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n size: props.size\n });\n }\n const ui = render ? render({\n openFileDialog\n }) :\n /*#__PURE__*/\n // Disable reason: the parent component already takes care of the `__next40pxDefaultSize` prop.\n // eslint-disable-next-line @wordpress/components-no-missing-40px-size-prop\n _jsx(Button, {\n onClick: openFileDialog,\n ...props,\n children: children\n });\n\n // iOS browsers may not reliably handle 'audio/*' in the accept attribute.\n // Adding explicit audio MIME types improves compatibility across all devices.\n const compatAccept = accept?.includes('audio/*') ? `${accept}, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm` : accept;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"components-form-file-upload\",\n children: [ui, /*#__PURE__*/_jsx(\"input\", {\n type: \"file\",\n ref: ref,\n multiple: multiple,\n style: {\n display: 'none'\n },\n accept: compatAccept,\n onChange: onChange,\n onClick: onClick,\n \"data-testid\": \"form-file-upload-input\"\n })]\n });\n}\nexport default FormFileUpload;"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAuB;AAKvB,oBAAmB;AACnB,kCAA4C;AAmB5C,yBAA2C;AACpC,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAG;AACD,QAAM,UAAM,uBAAO,IAAI;AACvB,QAAM,iBAAiB,MAAM;AAC3B,QAAI,SAAS,MAAM;AAAA,EACrB;AACA,MAAI,CAAC,QAAQ;AACX,iEAA4B;AAAA,MAC1B,eAAe;AAAA,MACf,uBAAuB,MAAM;AAAA;AAAA,MAE7B,MAAM,MAAM;AAAA,IACd,CAAC;AAAA,EACH;AACA,QAAM,KAAK,SAAS,OAAO;AAAA,IACzB;AAAA,EACF,CAAC;AAAA;AAAA;AAAA,IAID,uCAAAA,KAAK,cAAAC,SAAQ;AAAA,MACX,SAAS;AAAA,MACT,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAAA;AAID,QAAM,eAAe,QAAQ,SAAS,SAAS,IAAI,GAAG,MAAM,gFAAgF;AAC5I,SAAoB,uCAAAC,MAAM,OAAO;AAAA,IAC/B,WAAW;AAAA,IACX,UAAU,CAAC,IAAiB,uCAAAF,KAAK,SAAS;AAAA,MACxC,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,eAAe;AAAA,IACjB,CAAC,CAAC;AAAA,EACJ,CAAC;AACH;AACA,IAAO,2BAAQ;", "names": ["_jsx", "Button", "_jsxs"] }