@wordpress/components 29.11.0 → 29.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 29.12.0 (2025-06-25)
6
+
7
+ ### Bug Fixes
8
+
9
+ - `FormFileUpload`: Extend audio accept MIME types for iOS compatibility ([#70354](https://github.com/WordPress/gutenberg/pull/70354)).
10
+
11
+ ### Internal
12
+
13
+ - `FormFileUpload`: Remove temporary fix for selecting .heic file in Chromium browsers ([#70383](https://github.com/WordPress/gutenberg/pull/70383)).
14
+
5
15
  ## 29.11.0 (2025-06-04)
6
16
 
7
17
  ### Enhancement
@@ -63,12 +63,10 @@ function FormFileUpload({
63
63
  ...props,
64
64
  children: children
65
65
  });
66
- // @todo: Temporary fix a bug that prevents Chromium browsers from selecting ".heic" files
67
- // from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.
68
- // This can be removed once the Chromium fix is in the stable channel.
69
- // Prevent Safari from adding "image/heic" and "image/heif" to the accept attribute.
70
- const isSafari = globalThis.window?.navigator.userAgent.includes('Safari') && !globalThis.window?.navigator.userAgent.includes('Chrome') && !globalThis.window?.navigator.userAgent.includes('Chromium');
71
- const compatAccept = !isSafari && !!accept?.includes('image/*') ? `${accept}, image/heic, image/heif` : accept;
66
+
67
+ // iOS browsers may not reliably handle 'audio/*' in the accept attribute.
68
+ // Adding explicit audio MIME types improves compatibility across all devices.
69
+ const compatAccept = accept?.includes('audio/*') ? `${accept}, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm` : accept;
72
70
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
73
71
  className: "components-form-file-upload",
74
72
  children: [ui, /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_button","_interopRequireDefault","_deprecated36pxSize","_jsxRuntime","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","useRef","openFileDialog","current","click","maybeWarnDeprecated36pxSize","componentName","__next40pxDefaultSize","size","ui","jsx","default","isSafari","globalThis","window","navigator","userAgent","includes","compatAccept","jsxs","className","type","style","display","_default","exports"],"sources":["@wordpress/components/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 type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\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 */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\t// @todo: Temporary fix a bug that prevents Chromium browsers from selecting \".heic\" files\n\t// from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.\n\t// This can be removed once the Chromium fix is in the stable channel.\n\t// Prevent Safari from adding \"image/heic\" and \"image/heif\" to the accept attribute.\n\tconst isSafari =\n\t\tglobalThis.window?.navigator.userAgent.includes( 'Safari' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chrome' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chromium' );\n\tconst compatAccept =\n\t\t! isSafari && !! accept?.includes( 'image/*' )\n\t\t\t? `${ accept }, image/heic, image/heif`\n\t\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,mBAAA,GAAAH,OAAA;AAA4E,IAAAI,WAAA,GAAAJ,OAAA;AAX5E;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAG,IAAAC,eAAM,EAAsB,IAAK,CAAC;EAC9C,MAAMC,cAAc,GAAGA,CAAA,KAAM;IAC5BF,GAAG,CAACG,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEN,MAAM,EAAG;IACf,IAAAO,+CAA2B,EAAE;MAC5BC,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAER,KAAK,CAACQ,qBAAqB;MAClD;MACAC,IAAI,EAAET,KAAK,CAACS;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGX,MAAM,GAChBA,MAAM,CAAE;IAAEI;EAAe,CAAE,CAAC,gBAE5B,IAAAX,WAAA,CAAAmB,GAAA,EAACtB,OAAA,CAAAuB,OAAM;IAACd,OAAO,EAAGK,cAAgB;IAAA,GAAMH,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;EACD;EACA;EACA;EACA;EACA,MAAMkB,QAAQ,GACbC,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC3D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC7D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,UAAW,CAAC;EAChE,MAAMC,YAAY,GACjB,CAAEN,QAAQ,IAAI,CAAC,CAAEnB,MAAM,EAAEwB,QAAQ,CAAE,SAAU,CAAC,GAC3C,GAAIxB,MAAM,0BAA2B,GACrCA,MAAM;EAEV,oBACC,IAAAF,WAAA,CAAA4B,IAAA;IAAKC,SAAS,EAAC,6BAA6B;IAAA1B,QAAA,GACzCe,EAAE,eACJ,IAAAlB,WAAA,CAAAmB,GAAA;MACCW,IAAI,EAAC,MAAM;MACXrB,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrB2B,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7B9B,MAAM,EAAGyB,YAAc;MACvBtB,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAAC,IAAA2B,QAAA,GAAAC,OAAA,CAAAd,OAAA,GAEcnB,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_button","_interopRequireDefault","_deprecated36pxSize","_jsxRuntime","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","useRef","openFileDialog","current","click","maybeWarnDeprecated36pxSize","componentName","__next40pxDefaultSize","size","ui","jsx","default","compatAccept","includes","jsxs","className","type","style","display","_default","exports"],"sources":["@wordpress/components/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 type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\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 */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\n\t// iOS browsers may not reliably handle 'audio/*' in the accept attribute.\n\t// Adding explicit audio MIME types improves compatibility across all devices.\n\tconst compatAccept = accept?.includes( 'audio/*' )\n\t\t? `${ accept }, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm`\n\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,mBAAA,GAAAH,OAAA;AAA4E,IAAAI,WAAA,GAAAJ,OAAA;AAX5E;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAG,IAAAC,eAAM,EAAsB,IAAK,CAAC;EAC9C,MAAMC,cAAc,GAAGA,CAAA,KAAM;IAC5BF,GAAG,CAACG,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEN,MAAM,EAAG;IACf,IAAAO,+CAA2B,EAAE;MAC5BC,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAER,KAAK,CAACQ,qBAAqB;MAClD;MACAC,IAAI,EAAET,KAAK,CAACS;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGX,MAAM,GAChBA,MAAM,CAAE;IAAEI;EAAe,CAAE,CAAC,gBAE5B,IAAAX,WAAA,CAAAmB,GAAA,EAACtB,OAAA,CAAAuB,OAAM;IAACd,OAAO,EAAGK,cAAgB;IAAA,GAAMH,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;;EAED;EACA;EACA,MAAMkB,YAAY,GAAGnB,MAAM,EAAEoB,QAAQ,CAAE,SAAU,CAAC,GAC/C,GAAIpB,MAAM,6EAA8E,GACxFA,MAAM;EAET,oBACC,IAAAF,WAAA,CAAAuB,IAAA;IAAKC,SAAS,EAAC,6BAA6B;IAAArB,QAAA,GACzCe,EAAE,eACJ,IAAAlB,WAAA,CAAAmB,GAAA;MACCM,IAAI,EAAC,MAAM;MACXhB,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBsB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BzB,MAAM,EAAGmB,YAAc;MACvBhB,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAAC,IAAAsB,QAAA,GAAAC,OAAA,CAAAT,OAAA,GAEcnB,cAAc","ignoreList":[]}
@@ -202,7 +202,7 @@ const ImageComponent = ({
202
202
  accessible: true,
203
203
  disabled: !isSelected,
204
204
  accessibilityLabel: alt,
205
- accessibilityHint: (0, _i18n.__)('Double tap and hold to edit'),
205
+ accessibilityHint: (0, _i18n.__)('Double tap to view larger.'),
206
206
  accessibilityRole: "imagebutton",
207
207
  style: imageContainerStyles,
208
208
  children: [isSelected && highlightSelected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeFastImage","_interopRequireDefault","_i18n","_icons","_compose","_element","_utils","_style","_iconRetry","_imageEditingButton","_icon","_jsxRuntime","ICON_TYPE","OFFLINE","PLACEHOLDER","RETRY","UPLOAD","ImageComponent","align","alt","editButton","focalPoint","height","imageHeight","highlightSelected","isSelected","shouldUseFastImage","isUploadFailed","isUploadPaused","isUploadInProgress","mediaPickerOptions","onImageDataLoad","onSelectMediaUploadOption","openMediaOptions","resizeMode","retryMessage","retryIcon","url","shapeStyle","style","width","imageWidth","imageData","setImageData","useState","containerSize","setContainerSize","localURL","setLocalURL","networkURL","setNetworkURL","networkImageLoaded","setNetworkImageLoaded","Image","Platform","isAndroid","RNImage","FastImage","imageResizeMode","useEffect","isCurrent","getSize","imgWidth","imgHeight","metaData","aspectRatio","startsWith","isIOS","prefetch","then","onContainerLayout","event","nativeEvent","layout","getIcon","iconType","icon","iconStyle","SvgIconRetry","iconRetryStyles","offline","iconOfflineStyles","image","iconPlaceholderStyles","iconUploadStyles","jsx","default","usePreferredColorSchemeStyle","styles","iconPlaceholder","iconPlaceholderDark","iconUpload","iconUploadDark","iconOffline","iconOfflineDark","retryIconStyles","retryIconDark","iconRetry","iconRetryDark","retryContainerStyles","retryContainer","retryContainerDark","uploadFailedTextStyles","uploadFailedText","uploadFailedTextDark","placeholderStyles","imageContainerUpload","imageContainerUploadDark","imageContainerUploadWithFocalpoint","customWidth","wide","imageContainerStyles","imageContent","focalPointContainer","imageStyles","getImageWithFocalPointStyles","undefined","calculatedSelectedHeight","isNaN","imageSelectedStyles","imageBorder","imageBorderDark","jsxs","View","container","alignItems","onLayout","children","accessible","disabled","accessibilityLabel","accessibilityHint","__","accessibilityRole","imageUploadingIconContainer","focalPointContent","Fragment","fadeDuration","source","uri","resizeMethod","testID","nonVisibleImage","onLoad","imageContainer","customRetryIcon","Text","pickerOptions","_default","exports"],"sources":["@wordpress/components/src/mobile/image/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Image as RNImage, Text, View } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image, offline } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { useEffect, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getImageWithFocalPointStyles } from './utils';\nimport styles from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport ImageEditingButton from './image-editing-button';\nimport Icon from '../../icon';\n\nconst ICON_TYPE = {\n\tOFFLINE: 'offline',\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nconst ImageComponent = ( {\n\talign,\n\talt,\n\teditButton = true,\n\tfocalPoint,\n\theight: imageHeight,\n\thighlightSelected = true,\n\tisSelected,\n\tshouldUseFastImage,\n\tisUploadFailed,\n\tisUploadPaused,\n\tisUploadInProgress,\n\tmediaPickerOptions,\n\tonImageDataLoad,\n\tonSelectMediaUploadOption,\n\topenMediaOptions,\n\tresizeMode,\n\tretryMessage,\n\tretryIcon,\n\turl,\n\tshapeStyle,\n\tstyle,\n\twidth: imageWidth,\n} ) => {\n\tconst [ imageData, setImageData ] = useState( null );\n\tconst [ containerSize, setContainerSize ] = useState( null );\n\tconst [ localURL, setLocalURL ] = useState( null );\n\tconst [ networkURL, setNetworkURL ] = useState( null );\n\tconst [ networkImageLoaded, setNetworkImageLoaded ] = useState( false );\n\n\t// Disabled for Android due to https://github.com/WordPress/gutenberg/issues/43149\n\tconst Image =\n\t\t! shouldUseFastImage || Platform.isAndroid ? RNImage : FastImage;\n\tconst imageResizeMode =\n\t\t! shouldUseFastImage || Platform.isAndroid\n\t\t\t? resizeMode\n\t\t\t: FastImage.resizeMode[ resizeMode ];\n\n\tuseEffect( () => {\n\t\tlet isCurrent = true;\n\t\tif ( url ) {\n\t\t\tRNImage.getSize( url, ( imgWidth, imgHeight ) => {\n\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst metaData = {\n\t\t\t\t\taspectRatio: imgWidth / imgHeight,\n\t\t\t\t\twidth: imgWidth,\n\t\t\t\t\theight: imgHeight,\n\t\t\t\t};\n\t\t\t\tsetImageData( metaData );\n\t\t\t\tif ( onImageDataLoad ) {\n\t\t\t\t\tonImageDataLoad( metaData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( url.startsWith( 'file:///' ) ) {\n\t\t\t\tsetLocalURL( url );\n\t\t\t\tsetNetworkURL( null );\n\t\t\t\tsetNetworkImageLoaded( false );\n\t\t\t} else if ( url.startsWith( 'https://' ) ) {\n\t\t\t\tif ( Platform.isIOS ) {\n\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t} else if ( Platform.isAndroid ) {\n\t\t\t\t\tRNImage.prefetch( url ).then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// This callback is called when the image fails to load,\n\t\t\t\t\t\t\t// but these events are handled by `isUploadFailed`\n\t\t\t\t\t\t\t// and `isUploadPaused` events instead.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// Ignoring the error event will persist the local image URI.\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn () => ( isCurrent = false );\n\t\t// See https://github.com/WordPress/gutenberg/pull/41166\n\t}, [ url ] );\n\n\tconst onContainerLayout = ( event ) => {\n\t\tconst { height, width } = event.nativeEvent.layout;\n\n\t\tif (\n\t\t\twidth !== 0 &&\n\t\t\theight !== 0 &&\n\t\t\t( containerSize?.width !== width ||\n\t\t\t\tcontainerSize?.height !== height )\n\t\t) {\n\t\t\tsetContainerSize( { width, height } );\n\t\t}\n\t};\n\n\tconst getIcon = ( iconType ) => {\n\t\tlet icon;\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\ticon = retryIcon || SvgIconRetry;\n\t\t\t\ticonStyle = iconRetryStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.OFFLINE:\n\t\t\t\ticon = offline;\n\t\t\t\ticonStyle = iconOfflineStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconPlaceholderStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconUploadStyles;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn <Icon icon={ icon } { ...iconStyle } />;\n\t};\n\n\tconst iconPlaceholderStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconPlaceholder,\n\t\tstyles.iconPlaceholderDark\n\t);\n\n\tconst iconUploadStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconUpload,\n\t\tstyles.iconUploadDark\n\t);\n\n\tconst iconOfflineStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconOffline,\n\t\tstyles.iconOfflineDark\n\t);\n\n\tconst retryIconStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryIcon,\n\t\tstyles.retryIconDark\n\t);\n\n\tconst iconRetryStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconRetry,\n\t\tstyles.iconRetryDark\n\t);\n\n\tconst retryContainerStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryContainer,\n\t\tstyles.retryContainerDark\n\t);\n\n\tconst uploadFailedTextStyles = usePreferredColorSchemeStyle(\n\t\tstyles.uploadFailedText,\n\t\tstyles.uploadFailedTextDark\n\t);\n\n\tconst placeholderStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageContainerUpload,\n\t\t\tstyles.imageContainerUploadDark\n\t\t),\n\t\tfocalPoint && styles.imageContainerUploadWithFocalpoint,\n\t\timageHeight && { height: imageHeight },\n\t];\n\n\tconst customWidth =\n\t\timageData?.width < containerSize?.width\n\t\t\t? imageData?.width\n\t\t\t: styles.wide?.width;\n\n\tconst imageContainerStyles = [\n\t\tstyles.imageContent,\n\t\t{\n\t\t\twidth:\n\t\t\t\timageWidth === styles.wide?.width ||\n\t\t\t\t( imageData &&\n\t\t\t\t\timageWidth > 0 &&\n\t\t\t\t\timageWidth < containerSize?.width )\n\t\t\t\t\t? imageWidth\n\t\t\t\t\t: customWidth,\n\t\t},\n\t\tresizeMode && { width: styles.wide?.width },\n\t\tfocalPoint && styles.focalPointContainer,\n\t];\n\n\tconst imageStyles = [\n\t\t{\n\t\t\theight: containerSize?.height,\n\t\t},\n\t\t! resizeMode && {\n\t\t\taspectRatio: imageData?.aspectRatio,\n\t\t},\n\t\tfocalPoint && styles.focalPoint,\n\t\tfocalPoint &&\n\t\t\tgetImageWithFocalPointStyles(\n\t\t\t\tfocalPoint,\n\t\t\t\tcontainerSize,\n\t\t\t\timageData\n\t\t\t),\n\t\t! focalPoint &&\n\t\t\timageData &&\n\t\t\tcontainerSize && {\n\t\t\t\theight:\n\t\t\t\t\timageData?.width > containerSize?.width && ! imageWidth\n\t\t\t\t\t\t? containerSize?.width / imageData?.aspectRatio\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\timageHeight && { height: imageHeight },\n\t\tshapeStyle,\n\t];\n\n\t// On iOS, add 1 to height to account for the 1px non-visible image\n\t// that is used to determine when the network image has loaded\n\t// We also must verify that it is not NaN, as it can be NaN when the image is loading.\n\t// This is not necessary on Android as the non-visible image is not used.\n\tlet calculatedSelectedHeight;\n\tif ( Platform.isIOS ) {\n\t\tcalculatedSelectedHeight =\n\t\t\tcontainerSize && ! isNaN( containerSize.height )\n\t\t\t\t? containerSize.height + 1\n\t\t\t\t: 0;\n\t} else {\n\t\tcalculatedSelectedHeight = containerSize?.height;\n\t}\n\n\tconst imageSelectedStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageBorder,\n\t\t\tstyles.imageBorderDark\n\t\t),\n\t\t{\n\t\t\theight: calculatedSelectedHeight,\n\t\t},\n\t];\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [\n\t\t\t\tstyles.container,\n\t\t\t\t// Only set alignItems if an image exists because alignItems causes the placeholder\n\t\t\t\t// to disappear when an aligned image can't be downloaded\n\t\t\t\t// https://github.com/wordpress-mobile/gutenberg-mobile/issues/1592\n\t\t\t\timageData && align && { alignItems: align },\n\t\t\t\tstyle,\n\t\t\t] }\n\t\t\tonLayout={ onContainerLayout }\n\t\t>\n\t\t\t<View\n\t\t\t\taccessible\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ alt }\n\t\t\t\taccessibilityHint={ __( 'Double tap and hold to edit' ) }\n\t\t\t\taccessibilityRole=\"imagebutton\"\n\t\t\t\tkey={ url }\n\t\t\t\tstyle={ imageContainerStyles }\n\t\t\t>\n\t\t\t\t{ isSelected && highlightSelected && (\n\t\t\t\t\t<View style={ imageSelectedStyles } />\n\t\t\t\t) }\n\n\t\t\t\t{ ! imageData ? (\n\t\t\t\t\t<View style={ placeholderStyles }>\n\t\t\t\t\t\t<View style={ styles.imageUploadingIconContainer }>\n\t\t\t\t\t\t\t{ getIcon( ICON_TYPE.UPLOAD ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t) : (\n\t\t\t\t\t<View style={ focalPoint && styles.focalPointContent }>\n\t\t\t\t\t\t{ Platform.isAndroid && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ networkImageLoaded && networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t\ttestID={ `network-image-${ url }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! networkImageLoaded && ! networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: localURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Platform.isIOS && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\tsource={ {\n\t\t\t\t\t\t\t\t\t\turi:\n\t\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t\t: localURL || url,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\ttestID={ `network-image-${\n\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t: localURL || url\n\t\t\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\tstyle={ styles.nonVisibleImage }\n\t\t\t\t\t\t\t\t\tonLoad={ () => {\n\t\t\t\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadFailed || isUploadPaused ) && retryMessage && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\tstyles.imageContainer,\n\t\t\t\t\t\t\tretryContainerStyles,\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\tretryIconStyles,\n\t\t\t\t\t\t\t\tretryIcon && styles.customRetryIcon,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isUploadPaused\n\t\t\t\t\t\t\t\t? getIcon( ICON_TYPE.OFFLINE )\n\t\t\t\t\t\t\t\t: getIcon( ICON_TYPE.RETRY ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text style={ uploadFailedTextStyles }>\n\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\n\t\t\t{ editButton && isSelected && ! isUploadInProgress && (\n\t\t\t\t<ImageEditingButton\n\t\t\t\t\tonSelectMediaUploadOption={ onSelectMediaUploadOption }\n\t\t\t\t\topenMediaOptions={ openMediaOptions }\n\t\t\t\t\turl={\n\t\t\t\t\t\t! ( isUploadFailed || isUploadPaused ) &&\n\t\t\t\t\t\timageData &&\n\t\t\t\t\t\turl\n\t\t\t\t\t}\n\t\t\t\t\tpickerOptions={ mediaPickerOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</View>\n\t);\n};\n\nexport default ImageComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeFastImage","_interopRequireDefault","_i18n","_icons","_compose","_element","_utils","_style","_iconRetry","_imageEditingButton","_icon","_jsxRuntime","ICON_TYPE","OFFLINE","PLACEHOLDER","RETRY","UPLOAD","ImageComponent","align","alt","editButton","focalPoint","height","imageHeight","highlightSelected","isSelected","shouldUseFastImage","isUploadFailed","isUploadPaused","isUploadInProgress","mediaPickerOptions","onImageDataLoad","onSelectMediaUploadOption","openMediaOptions","resizeMode","retryMessage","retryIcon","url","shapeStyle","style","width","imageWidth","imageData","setImageData","useState","containerSize","setContainerSize","localURL","setLocalURL","networkURL","setNetworkURL","networkImageLoaded","setNetworkImageLoaded","Image","Platform","isAndroid","RNImage","FastImage","imageResizeMode","useEffect","isCurrent","getSize","imgWidth","imgHeight","metaData","aspectRatio","startsWith","isIOS","prefetch","then","onContainerLayout","event","nativeEvent","layout","getIcon","iconType","icon","iconStyle","SvgIconRetry","iconRetryStyles","offline","iconOfflineStyles","image","iconPlaceholderStyles","iconUploadStyles","jsx","default","usePreferredColorSchemeStyle","styles","iconPlaceholder","iconPlaceholderDark","iconUpload","iconUploadDark","iconOffline","iconOfflineDark","retryIconStyles","retryIconDark","iconRetry","iconRetryDark","retryContainerStyles","retryContainer","retryContainerDark","uploadFailedTextStyles","uploadFailedText","uploadFailedTextDark","placeholderStyles","imageContainerUpload","imageContainerUploadDark","imageContainerUploadWithFocalpoint","customWidth","wide","imageContainerStyles","imageContent","focalPointContainer","imageStyles","getImageWithFocalPointStyles","undefined","calculatedSelectedHeight","isNaN","imageSelectedStyles","imageBorder","imageBorderDark","jsxs","View","container","alignItems","onLayout","children","accessible","disabled","accessibilityLabel","accessibilityHint","__","accessibilityRole","imageUploadingIconContainer","focalPointContent","Fragment","fadeDuration","source","uri","resizeMethod","testID","nonVisibleImage","onLoad","imageContainer","customRetryIcon","Text","pickerOptions","_default","exports"],"sources":["@wordpress/components/src/mobile/image/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Image as RNImage, Text, View } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image, offline } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { useEffect, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getImageWithFocalPointStyles } from './utils';\nimport styles from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport ImageEditingButton from './image-editing-button';\nimport Icon from '../../icon';\n\nconst ICON_TYPE = {\n\tOFFLINE: 'offline',\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nconst ImageComponent = ( {\n\talign,\n\talt,\n\teditButton = true,\n\tfocalPoint,\n\theight: imageHeight,\n\thighlightSelected = true,\n\tisSelected,\n\tshouldUseFastImage,\n\tisUploadFailed,\n\tisUploadPaused,\n\tisUploadInProgress,\n\tmediaPickerOptions,\n\tonImageDataLoad,\n\tonSelectMediaUploadOption,\n\topenMediaOptions,\n\tresizeMode,\n\tretryMessage,\n\tretryIcon,\n\turl,\n\tshapeStyle,\n\tstyle,\n\twidth: imageWidth,\n} ) => {\n\tconst [ imageData, setImageData ] = useState( null );\n\tconst [ containerSize, setContainerSize ] = useState( null );\n\tconst [ localURL, setLocalURL ] = useState( null );\n\tconst [ networkURL, setNetworkURL ] = useState( null );\n\tconst [ networkImageLoaded, setNetworkImageLoaded ] = useState( false );\n\n\t// Disabled for Android due to https://github.com/WordPress/gutenberg/issues/43149\n\tconst Image =\n\t\t! shouldUseFastImage || Platform.isAndroid ? RNImage : FastImage;\n\tconst imageResizeMode =\n\t\t! shouldUseFastImage || Platform.isAndroid\n\t\t\t? resizeMode\n\t\t\t: FastImage.resizeMode[ resizeMode ];\n\n\tuseEffect( () => {\n\t\tlet isCurrent = true;\n\t\tif ( url ) {\n\t\t\tRNImage.getSize( url, ( imgWidth, imgHeight ) => {\n\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst metaData = {\n\t\t\t\t\taspectRatio: imgWidth / imgHeight,\n\t\t\t\t\twidth: imgWidth,\n\t\t\t\t\theight: imgHeight,\n\t\t\t\t};\n\t\t\t\tsetImageData( metaData );\n\t\t\t\tif ( onImageDataLoad ) {\n\t\t\t\t\tonImageDataLoad( metaData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( url.startsWith( 'file:///' ) ) {\n\t\t\t\tsetLocalURL( url );\n\t\t\t\tsetNetworkURL( null );\n\t\t\t\tsetNetworkImageLoaded( false );\n\t\t\t} else if ( url.startsWith( 'https://' ) ) {\n\t\t\t\tif ( Platform.isIOS ) {\n\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t} else if ( Platform.isAndroid ) {\n\t\t\t\t\tRNImage.prefetch( url ).then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// This callback is called when the image fails to load,\n\t\t\t\t\t\t\t// but these events are handled by `isUploadFailed`\n\t\t\t\t\t\t\t// and `isUploadPaused` events instead.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// Ignoring the error event will persist the local image URI.\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn () => ( isCurrent = false );\n\t\t// See https://github.com/WordPress/gutenberg/pull/41166\n\t}, [ url ] );\n\n\tconst onContainerLayout = ( event ) => {\n\t\tconst { height, width } = event.nativeEvent.layout;\n\n\t\tif (\n\t\t\twidth !== 0 &&\n\t\t\theight !== 0 &&\n\t\t\t( containerSize?.width !== width ||\n\t\t\t\tcontainerSize?.height !== height )\n\t\t) {\n\t\t\tsetContainerSize( { width, height } );\n\t\t}\n\t};\n\n\tconst getIcon = ( iconType ) => {\n\t\tlet icon;\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\ticon = retryIcon || SvgIconRetry;\n\t\t\t\ticonStyle = iconRetryStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.OFFLINE:\n\t\t\t\ticon = offline;\n\t\t\t\ticonStyle = iconOfflineStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconPlaceholderStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconUploadStyles;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn <Icon icon={ icon } { ...iconStyle } />;\n\t};\n\n\tconst iconPlaceholderStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconPlaceholder,\n\t\tstyles.iconPlaceholderDark\n\t);\n\n\tconst iconUploadStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconUpload,\n\t\tstyles.iconUploadDark\n\t);\n\n\tconst iconOfflineStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconOffline,\n\t\tstyles.iconOfflineDark\n\t);\n\n\tconst retryIconStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryIcon,\n\t\tstyles.retryIconDark\n\t);\n\n\tconst iconRetryStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconRetry,\n\t\tstyles.iconRetryDark\n\t);\n\n\tconst retryContainerStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryContainer,\n\t\tstyles.retryContainerDark\n\t);\n\n\tconst uploadFailedTextStyles = usePreferredColorSchemeStyle(\n\t\tstyles.uploadFailedText,\n\t\tstyles.uploadFailedTextDark\n\t);\n\n\tconst placeholderStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageContainerUpload,\n\t\t\tstyles.imageContainerUploadDark\n\t\t),\n\t\tfocalPoint && styles.imageContainerUploadWithFocalpoint,\n\t\timageHeight && { height: imageHeight },\n\t];\n\n\tconst customWidth =\n\t\timageData?.width < containerSize?.width\n\t\t\t? imageData?.width\n\t\t\t: styles.wide?.width;\n\n\tconst imageContainerStyles = [\n\t\tstyles.imageContent,\n\t\t{\n\t\t\twidth:\n\t\t\t\timageWidth === styles.wide?.width ||\n\t\t\t\t( imageData &&\n\t\t\t\t\timageWidth > 0 &&\n\t\t\t\t\timageWidth < containerSize?.width )\n\t\t\t\t\t? imageWidth\n\t\t\t\t\t: customWidth,\n\t\t},\n\t\tresizeMode && { width: styles.wide?.width },\n\t\tfocalPoint && styles.focalPointContainer,\n\t];\n\n\tconst imageStyles = [\n\t\t{\n\t\t\theight: containerSize?.height,\n\t\t},\n\t\t! resizeMode && {\n\t\t\taspectRatio: imageData?.aspectRatio,\n\t\t},\n\t\tfocalPoint && styles.focalPoint,\n\t\tfocalPoint &&\n\t\t\tgetImageWithFocalPointStyles(\n\t\t\t\tfocalPoint,\n\t\t\t\tcontainerSize,\n\t\t\t\timageData\n\t\t\t),\n\t\t! focalPoint &&\n\t\t\timageData &&\n\t\t\tcontainerSize && {\n\t\t\t\theight:\n\t\t\t\t\timageData?.width > containerSize?.width && ! imageWidth\n\t\t\t\t\t\t? containerSize?.width / imageData?.aspectRatio\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\timageHeight && { height: imageHeight },\n\t\tshapeStyle,\n\t];\n\n\t// On iOS, add 1 to height to account for the 1px non-visible image\n\t// that is used to determine when the network image has loaded\n\t// We also must verify that it is not NaN, as it can be NaN when the image is loading.\n\t// This is not necessary on Android as the non-visible image is not used.\n\tlet calculatedSelectedHeight;\n\tif ( Platform.isIOS ) {\n\t\tcalculatedSelectedHeight =\n\t\t\tcontainerSize && ! isNaN( containerSize.height )\n\t\t\t\t? containerSize.height + 1\n\t\t\t\t: 0;\n\t} else {\n\t\tcalculatedSelectedHeight = containerSize?.height;\n\t}\n\n\tconst imageSelectedStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageBorder,\n\t\t\tstyles.imageBorderDark\n\t\t),\n\t\t{\n\t\t\theight: calculatedSelectedHeight,\n\t\t},\n\t];\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [\n\t\t\t\tstyles.container,\n\t\t\t\t// Only set alignItems if an image exists because alignItems causes the placeholder\n\t\t\t\t// to disappear when an aligned image can't be downloaded\n\t\t\t\t// https://github.com/wordpress-mobile/gutenberg-mobile/issues/1592\n\t\t\t\timageData && align && { alignItems: align },\n\t\t\t\tstyle,\n\t\t\t] }\n\t\t\tonLayout={ onContainerLayout }\n\t\t>\n\t\t\t<View\n\t\t\t\taccessible\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ alt }\n\t\t\t\taccessibilityHint={ __( 'Double tap to view larger.' ) }\n\t\t\t\taccessibilityRole=\"imagebutton\"\n\t\t\t\tkey={ url }\n\t\t\t\tstyle={ imageContainerStyles }\n\t\t\t>\n\t\t\t\t{ isSelected && highlightSelected && (\n\t\t\t\t\t<View style={ imageSelectedStyles } />\n\t\t\t\t) }\n\n\t\t\t\t{ ! imageData ? (\n\t\t\t\t\t<View style={ placeholderStyles }>\n\t\t\t\t\t\t<View style={ styles.imageUploadingIconContainer }>\n\t\t\t\t\t\t\t{ getIcon( ICON_TYPE.UPLOAD ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t) : (\n\t\t\t\t\t<View style={ focalPoint && styles.focalPointContent }>\n\t\t\t\t\t\t{ Platform.isAndroid && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ networkImageLoaded && networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t\ttestID={ `network-image-${ url }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! networkImageLoaded && ! networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: localURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Platform.isIOS && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\tsource={ {\n\t\t\t\t\t\t\t\t\t\turi:\n\t\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t\t: localURL || url,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\ttestID={ `network-image-${\n\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t: localURL || url\n\t\t\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\tstyle={ styles.nonVisibleImage }\n\t\t\t\t\t\t\t\t\tonLoad={ () => {\n\t\t\t\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadFailed || isUploadPaused ) && retryMessage && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\tstyles.imageContainer,\n\t\t\t\t\t\t\tretryContainerStyles,\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\tretryIconStyles,\n\t\t\t\t\t\t\t\tretryIcon && styles.customRetryIcon,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isUploadPaused\n\t\t\t\t\t\t\t\t? getIcon( ICON_TYPE.OFFLINE )\n\t\t\t\t\t\t\t\t: getIcon( ICON_TYPE.RETRY ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text style={ uploadFailedTextStyles }>\n\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\n\t\t\t{ editButton && isSelected && ! isUploadInProgress && (\n\t\t\t\t<ImageEditingButton\n\t\t\t\t\tonSelectMediaUploadOption={ onSelectMediaUploadOption }\n\t\t\t\t\topenMediaOptions={ openMediaOptions }\n\t\t\t\t\turl={\n\t\t\t\t\t\t! ( isUploadFailed || isUploadPaused ) &&\n\t\t\t\t\t\timageData &&\n\t\t\t\t\t\turl\n\t\t\t\t\t}\n\t\t\t\t\tpickerOptions={ mediaPickerOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</View>\n\t);\n};\n\nexport default ImageComponent;\n"],"mappings":"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","ignoreList":[]}
@@ -55,12 +55,10 @@ export function FormFileUpload({
55
55
  ...props,
56
56
  children: children
57
57
  });
58
- // @todo: Temporary fix a bug that prevents Chromium browsers from selecting ".heic" files
59
- // from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.
60
- // This can be removed once the Chromium fix is in the stable channel.
61
- // Prevent Safari from adding "image/heic" and "image/heif" to the accept attribute.
62
- const isSafari = globalThis.window?.navigator.userAgent.includes('Safari') && !globalThis.window?.navigator.userAgent.includes('Chrome') && !globalThis.window?.navigator.userAgent.includes('Chromium');
63
- const compatAccept = !isSafari && !!accept?.includes('image/*') ? `${accept}, image/heic, image/heif` : accept;
58
+
59
+ // iOS browsers may not reliably handle 'audio/*' in the accept attribute.
60
+ // Adding explicit audio MIME types improves compatibility across all devices.
61
+ const compatAccept = accept?.includes('audio/*') ? `${accept}, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm` : accept;
64
62
  return /*#__PURE__*/_jsxs("div", {
65
63
  className: "components-form-file-upload",
66
64
  children: [ui, /*#__PURE__*/_jsx("input", {
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","Button","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","componentName","__next40pxDefaultSize","size","ui","isSafari","globalThis","window","navigator","userAgent","includes","compatAccept","className","type","style","display"],"sources":["@wordpress/components/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 type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\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 */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\t// @todo: Temporary fix a bug that prevents Chromium browsers from selecting \".heic\" files\n\t// from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.\n\t// This can be removed once the Chromium fix is in the stable channel.\n\t// Prevent Safari from adding \"image/heic\" and \"image/heif\" to the accept attribute.\n\tconst isSafari =\n\t\tglobalThis.window?.navigator.userAgent.includes( 'Safari' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chrome' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chromium' );\n\tconst compatAccept =\n\t\t! isSafari && !! accept?.includes( 'image/*' )\n\t\t\t? `${ accept }, image/heic, image/heif`\n\t\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAG9B,SAASC,2BAA2B,QAAQ,+BAA+B;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA,OAAO,SAASC,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAGf,MAAM,CAAsB,IAAK,CAAC;EAC9C,MAAMgB,cAAc,GAAGA,CAAA,KAAM;IAC5BD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEL,MAAM,EAAG;IACfX,2BAA2B,CAAE;MAC5BiB,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAEN,KAAK,CAACM,qBAAqB;MAClD;MACAC,IAAI,EAAEP,KAAK,CAACO;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGT,MAAM,GAChBA,MAAM,CAAE;IAAEG;EAAe,CAAE,CAAC,gBAE5BZ,IAAA,CAACH,MAAM;IAACW,OAAO,EAAGI,cAAgB;IAAA,GAAMF,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;EACD;EACA;EACA;EACA;EACA,MAAMc,QAAQ,GACbC,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC3D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC7D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,UAAW,CAAC;EAChE,MAAMC,YAAY,GACjB,CAAEN,QAAQ,IAAI,CAAC,CAAEf,MAAM,EAAEoB,QAAQ,CAAE,SAAU,CAAC,GAC3C,GAAIpB,MAAM,0BAA2B,GACrCA,MAAM;EAEV,oBACCF,KAAA;IAAKwB,SAAS,EAAC,6BAA6B;IAAArB,QAAA,GACzCa,EAAE,eACJlB,IAAA;MACC2B,IAAI,EAAC,MAAM;MACXhB,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBsB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BzB,MAAM,EAAGqB,YAAc;MACvBlB,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,eAAeL,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["useRef","Button","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","componentName","__next40pxDefaultSize","size","ui","compatAccept","includes","className","type","style","display"],"sources":["@wordpress/components/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 type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\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 */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\n\t// iOS browsers may not reliably handle 'audio/*' in the accept attribute.\n\t// Adding explicit audio MIME types improves compatibility across all devices.\n\tconst compatAccept = accept?.includes( 'audio/*' )\n\t\t? `${ accept }, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm`\n\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAG9B,SAASC,2BAA2B,QAAQ,+BAA+B;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA,OAAO,SAASC,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAGf,MAAM,CAAsB,IAAK,CAAC;EAC9C,MAAMgB,cAAc,GAAGA,CAAA,KAAM;IAC5BD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEL,MAAM,EAAG;IACfX,2BAA2B,CAAE;MAC5BiB,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAEN,KAAK,CAACM,qBAAqB;MAClD;MACAC,IAAI,EAAEP,KAAK,CAACO;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGT,MAAM,GAChBA,MAAM,CAAE;IAAEG;EAAe,CAAE,CAAC,gBAE5BZ,IAAA,CAACH,MAAM;IAACW,OAAO,EAAGI,cAAgB;IAAA,GAAMF,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;;EAED;EACA;EACA,MAAMc,YAAY,GAAGf,MAAM,EAAEgB,QAAQ,CAAE,SAAU,CAAC,GAC/C,GAAIhB,MAAM,6EAA8E,GACxFA,MAAM;EAET,oBACCF,KAAA;IAAKmB,SAAS,EAAC,6BAA6B;IAAAhB,QAAA,GACzCa,EAAE,eACJlB,IAAA;MACCsB,IAAI,EAAC,MAAM;MACXX,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBiB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BpB,MAAM,EAAGe,YAAc;MACvBZ,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,eAAeL,cAAc","ignoreList":[]}
@@ -194,7 +194,7 @@ const ImageComponent = ({
194
194
  accessible: true,
195
195
  disabled: !isSelected,
196
196
  accessibilityLabel: alt,
197
- accessibilityHint: __('Double tap and hold to edit'),
197
+ accessibilityHint: __('Double tap to view larger.'),
198
198
  accessibilityRole: "imagebutton",
199
199
  style: imageContainerStyles,
200
200
  children: [isSelected && highlightSelected && /*#__PURE__*/_jsx(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["Image","RNImage","Text","View","FastImage","__","image","offline","usePreferredColorSchemeStyle","useEffect","useState","Platform","getImageWithFocalPointStyles","styles","SvgIconRetry","ImageEditingButton","Icon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ICON_TYPE","OFFLINE","PLACEHOLDER","RETRY","UPLOAD","ImageComponent","align","alt","editButton","focalPoint","height","imageHeight","highlightSelected","isSelected","shouldUseFastImage","isUploadFailed","isUploadPaused","isUploadInProgress","mediaPickerOptions","onImageDataLoad","onSelectMediaUploadOption","openMediaOptions","resizeMode","retryMessage","retryIcon","url","shapeStyle","style","width","imageWidth","imageData","setImageData","containerSize","setContainerSize","localURL","setLocalURL","networkURL","setNetworkURL","networkImageLoaded","setNetworkImageLoaded","isAndroid","imageResizeMode","isCurrent","getSize","imgWidth","imgHeight","metaData","aspectRatio","startsWith","isIOS","prefetch","then","onContainerLayout","event","nativeEvent","layout","getIcon","iconType","icon","iconStyle","iconRetryStyles","iconOfflineStyles","iconPlaceholderStyles","iconUploadStyles","iconPlaceholder","iconPlaceholderDark","iconUpload","iconUploadDark","iconOffline","iconOfflineDark","retryIconStyles","retryIconDark","iconRetry","iconRetryDark","retryContainerStyles","retryContainer","retryContainerDark","uploadFailedTextStyles","uploadFailedText","uploadFailedTextDark","placeholderStyles","imageContainerUpload","imageContainerUploadDark","imageContainerUploadWithFocalpoint","customWidth","wide","imageContainerStyles","imageContent","focalPointContainer","imageStyles","undefined","calculatedSelectedHeight","isNaN","imageSelectedStyles","imageBorder","imageBorderDark","container","alignItems","onLayout","children","accessible","disabled","accessibilityLabel","accessibilityHint","accessibilityRole","imageUploadingIconContainer","focalPointContent","fadeDuration","source","uri","resizeMethod","testID","nonVisibleImage","onLoad","imageContainer","customRetryIcon","pickerOptions"],"sources":["@wordpress/components/src/mobile/image/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Image as RNImage, Text, View } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image, offline } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { useEffect, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getImageWithFocalPointStyles } from './utils';\nimport styles from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport ImageEditingButton from './image-editing-button';\nimport Icon from '../../icon';\n\nconst ICON_TYPE = {\n\tOFFLINE: 'offline',\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nconst ImageComponent = ( {\n\talign,\n\talt,\n\teditButton = true,\n\tfocalPoint,\n\theight: imageHeight,\n\thighlightSelected = true,\n\tisSelected,\n\tshouldUseFastImage,\n\tisUploadFailed,\n\tisUploadPaused,\n\tisUploadInProgress,\n\tmediaPickerOptions,\n\tonImageDataLoad,\n\tonSelectMediaUploadOption,\n\topenMediaOptions,\n\tresizeMode,\n\tretryMessage,\n\tretryIcon,\n\turl,\n\tshapeStyle,\n\tstyle,\n\twidth: imageWidth,\n} ) => {\n\tconst [ imageData, setImageData ] = useState( null );\n\tconst [ containerSize, setContainerSize ] = useState( null );\n\tconst [ localURL, setLocalURL ] = useState( null );\n\tconst [ networkURL, setNetworkURL ] = useState( null );\n\tconst [ networkImageLoaded, setNetworkImageLoaded ] = useState( false );\n\n\t// Disabled for Android due to https://github.com/WordPress/gutenberg/issues/43149\n\tconst Image =\n\t\t! shouldUseFastImage || Platform.isAndroid ? RNImage : FastImage;\n\tconst imageResizeMode =\n\t\t! shouldUseFastImage || Platform.isAndroid\n\t\t\t? resizeMode\n\t\t\t: FastImage.resizeMode[ resizeMode ];\n\n\tuseEffect( () => {\n\t\tlet isCurrent = true;\n\t\tif ( url ) {\n\t\t\tRNImage.getSize( url, ( imgWidth, imgHeight ) => {\n\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst metaData = {\n\t\t\t\t\taspectRatio: imgWidth / imgHeight,\n\t\t\t\t\twidth: imgWidth,\n\t\t\t\t\theight: imgHeight,\n\t\t\t\t};\n\t\t\t\tsetImageData( metaData );\n\t\t\t\tif ( onImageDataLoad ) {\n\t\t\t\t\tonImageDataLoad( metaData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( url.startsWith( 'file:///' ) ) {\n\t\t\t\tsetLocalURL( url );\n\t\t\t\tsetNetworkURL( null );\n\t\t\t\tsetNetworkImageLoaded( false );\n\t\t\t} else if ( url.startsWith( 'https://' ) ) {\n\t\t\t\tif ( Platform.isIOS ) {\n\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t} else if ( Platform.isAndroid ) {\n\t\t\t\t\tRNImage.prefetch( url ).then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// This callback is called when the image fails to load,\n\t\t\t\t\t\t\t// but these events are handled by `isUploadFailed`\n\t\t\t\t\t\t\t// and `isUploadPaused` events instead.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// Ignoring the error event will persist the local image URI.\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn () => ( isCurrent = false );\n\t\t// See https://github.com/WordPress/gutenberg/pull/41166\n\t}, [ url ] );\n\n\tconst onContainerLayout = ( event ) => {\n\t\tconst { height, width } = event.nativeEvent.layout;\n\n\t\tif (\n\t\t\twidth !== 0 &&\n\t\t\theight !== 0 &&\n\t\t\t( containerSize?.width !== width ||\n\t\t\t\tcontainerSize?.height !== height )\n\t\t) {\n\t\t\tsetContainerSize( { width, height } );\n\t\t}\n\t};\n\n\tconst getIcon = ( iconType ) => {\n\t\tlet icon;\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\ticon = retryIcon || SvgIconRetry;\n\t\t\t\ticonStyle = iconRetryStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.OFFLINE:\n\t\t\t\ticon = offline;\n\t\t\t\ticonStyle = iconOfflineStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconPlaceholderStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconUploadStyles;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn <Icon icon={ icon } { ...iconStyle } />;\n\t};\n\n\tconst iconPlaceholderStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconPlaceholder,\n\t\tstyles.iconPlaceholderDark\n\t);\n\n\tconst iconUploadStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconUpload,\n\t\tstyles.iconUploadDark\n\t);\n\n\tconst iconOfflineStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconOffline,\n\t\tstyles.iconOfflineDark\n\t);\n\n\tconst retryIconStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryIcon,\n\t\tstyles.retryIconDark\n\t);\n\n\tconst iconRetryStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconRetry,\n\t\tstyles.iconRetryDark\n\t);\n\n\tconst retryContainerStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryContainer,\n\t\tstyles.retryContainerDark\n\t);\n\n\tconst uploadFailedTextStyles = usePreferredColorSchemeStyle(\n\t\tstyles.uploadFailedText,\n\t\tstyles.uploadFailedTextDark\n\t);\n\n\tconst placeholderStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageContainerUpload,\n\t\t\tstyles.imageContainerUploadDark\n\t\t),\n\t\tfocalPoint && styles.imageContainerUploadWithFocalpoint,\n\t\timageHeight && { height: imageHeight },\n\t];\n\n\tconst customWidth =\n\t\timageData?.width < containerSize?.width\n\t\t\t? imageData?.width\n\t\t\t: styles.wide?.width;\n\n\tconst imageContainerStyles = [\n\t\tstyles.imageContent,\n\t\t{\n\t\t\twidth:\n\t\t\t\timageWidth === styles.wide?.width ||\n\t\t\t\t( imageData &&\n\t\t\t\t\timageWidth > 0 &&\n\t\t\t\t\timageWidth < containerSize?.width )\n\t\t\t\t\t? imageWidth\n\t\t\t\t\t: customWidth,\n\t\t},\n\t\tresizeMode && { width: styles.wide?.width },\n\t\tfocalPoint && styles.focalPointContainer,\n\t];\n\n\tconst imageStyles = [\n\t\t{\n\t\t\theight: containerSize?.height,\n\t\t},\n\t\t! resizeMode && {\n\t\t\taspectRatio: imageData?.aspectRatio,\n\t\t},\n\t\tfocalPoint && styles.focalPoint,\n\t\tfocalPoint &&\n\t\t\tgetImageWithFocalPointStyles(\n\t\t\t\tfocalPoint,\n\t\t\t\tcontainerSize,\n\t\t\t\timageData\n\t\t\t),\n\t\t! focalPoint &&\n\t\t\timageData &&\n\t\t\tcontainerSize && {\n\t\t\t\theight:\n\t\t\t\t\timageData?.width > containerSize?.width && ! imageWidth\n\t\t\t\t\t\t? containerSize?.width / imageData?.aspectRatio\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\timageHeight && { height: imageHeight },\n\t\tshapeStyle,\n\t];\n\n\t// On iOS, add 1 to height to account for the 1px non-visible image\n\t// that is used to determine when the network image has loaded\n\t// We also must verify that it is not NaN, as it can be NaN when the image is loading.\n\t// This is not necessary on Android as the non-visible image is not used.\n\tlet calculatedSelectedHeight;\n\tif ( Platform.isIOS ) {\n\t\tcalculatedSelectedHeight =\n\t\t\tcontainerSize && ! isNaN( containerSize.height )\n\t\t\t\t? containerSize.height + 1\n\t\t\t\t: 0;\n\t} else {\n\t\tcalculatedSelectedHeight = containerSize?.height;\n\t}\n\n\tconst imageSelectedStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageBorder,\n\t\t\tstyles.imageBorderDark\n\t\t),\n\t\t{\n\t\t\theight: calculatedSelectedHeight,\n\t\t},\n\t];\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [\n\t\t\t\tstyles.container,\n\t\t\t\t// Only set alignItems if an image exists because alignItems causes the placeholder\n\t\t\t\t// to disappear when an aligned image can't be downloaded\n\t\t\t\t// https://github.com/wordpress-mobile/gutenberg-mobile/issues/1592\n\t\t\t\timageData && align && { alignItems: align },\n\t\t\t\tstyle,\n\t\t\t] }\n\t\t\tonLayout={ onContainerLayout }\n\t\t>\n\t\t\t<View\n\t\t\t\taccessible\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ alt }\n\t\t\t\taccessibilityHint={ __( 'Double tap and hold to edit' ) }\n\t\t\t\taccessibilityRole=\"imagebutton\"\n\t\t\t\tkey={ url }\n\t\t\t\tstyle={ imageContainerStyles }\n\t\t\t>\n\t\t\t\t{ isSelected && highlightSelected && (\n\t\t\t\t\t<View style={ imageSelectedStyles } />\n\t\t\t\t) }\n\n\t\t\t\t{ ! imageData ? (\n\t\t\t\t\t<View style={ placeholderStyles }>\n\t\t\t\t\t\t<View style={ styles.imageUploadingIconContainer }>\n\t\t\t\t\t\t\t{ getIcon( ICON_TYPE.UPLOAD ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t) : (\n\t\t\t\t\t<View style={ focalPoint && styles.focalPointContent }>\n\t\t\t\t\t\t{ Platform.isAndroid && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ networkImageLoaded && networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t\ttestID={ `network-image-${ url }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! networkImageLoaded && ! networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: localURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Platform.isIOS && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\tsource={ {\n\t\t\t\t\t\t\t\t\t\turi:\n\t\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t\t: localURL || url,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\ttestID={ `network-image-${\n\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t: localURL || url\n\t\t\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\tstyle={ styles.nonVisibleImage }\n\t\t\t\t\t\t\t\t\tonLoad={ () => {\n\t\t\t\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadFailed || isUploadPaused ) && retryMessage && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\tstyles.imageContainer,\n\t\t\t\t\t\t\tretryContainerStyles,\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\tretryIconStyles,\n\t\t\t\t\t\t\t\tretryIcon && styles.customRetryIcon,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isUploadPaused\n\t\t\t\t\t\t\t\t? getIcon( ICON_TYPE.OFFLINE )\n\t\t\t\t\t\t\t\t: getIcon( ICON_TYPE.RETRY ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text style={ uploadFailedTextStyles }>\n\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\n\t\t\t{ editButton && isSelected && ! isUploadInProgress && (\n\t\t\t\t<ImageEditingButton\n\t\t\t\t\tonSelectMediaUploadOption={ onSelectMediaUploadOption }\n\t\t\t\t\topenMediaOptions={ openMediaOptions }\n\t\t\t\t\turl={\n\t\t\t\t\t\t! ( isUploadFailed || isUploadPaused ) &&\n\t\t\t\t\t\timageData &&\n\t\t\t\t\t\turl\n\t\t\t\t\t}\n\t\t\t\t\tpickerOptions={ mediaPickerOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</View>\n\t);\n};\n\nexport default ImageComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Image","RNImage","Text","View","FastImage","__","image","offline","usePreferredColorSchemeStyle","useEffect","useState","Platform","getImageWithFocalPointStyles","styles","SvgIconRetry","ImageEditingButton","Icon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ICON_TYPE","OFFLINE","PLACEHOLDER","RETRY","UPLOAD","ImageComponent","align","alt","editButton","focalPoint","height","imageHeight","highlightSelected","isSelected","shouldUseFastImage","isUploadFailed","isUploadPaused","isUploadInProgress","mediaPickerOptions","onImageDataLoad","onSelectMediaUploadOption","openMediaOptions","resizeMode","retryMessage","retryIcon","url","shapeStyle","style","width","imageWidth","imageData","setImageData","containerSize","setContainerSize","localURL","setLocalURL","networkURL","setNetworkURL","networkImageLoaded","setNetworkImageLoaded","isAndroid","imageResizeMode","isCurrent","getSize","imgWidth","imgHeight","metaData","aspectRatio","startsWith","isIOS","prefetch","then","onContainerLayout","event","nativeEvent","layout","getIcon","iconType","icon","iconStyle","iconRetryStyles","iconOfflineStyles","iconPlaceholderStyles","iconUploadStyles","iconPlaceholder","iconPlaceholderDark","iconUpload","iconUploadDark","iconOffline","iconOfflineDark","retryIconStyles","retryIconDark","iconRetry","iconRetryDark","retryContainerStyles","retryContainer","retryContainerDark","uploadFailedTextStyles","uploadFailedText","uploadFailedTextDark","placeholderStyles","imageContainerUpload","imageContainerUploadDark","imageContainerUploadWithFocalpoint","customWidth","wide","imageContainerStyles","imageContent","focalPointContainer","imageStyles","undefined","calculatedSelectedHeight","isNaN","imageSelectedStyles","imageBorder","imageBorderDark","container","alignItems","onLayout","children","accessible","disabled","accessibilityLabel","accessibilityHint","accessibilityRole","imageUploadingIconContainer","focalPointContent","fadeDuration","source","uri","resizeMethod","testID","nonVisibleImage","onLoad","imageContainer","customRetryIcon","pickerOptions"],"sources":["@wordpress/components/src/mobile/image/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Image as RNImage, Text, View } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image, offline } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { useEffect, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getImageWithFocalPointStyles } from './utils';\nimport styles from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport ImageEditingButton from './image-editing-button';\nimport Icon from '../../icon';\n\nconst ICON_TYPE = {\n\tOFFLINE: 'offline',\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nconst ImageComponent = ( {\n\talign,\n\talt,\n\teditButton = true,\n\tfocalPoint,\n\theight: imageHeight,\n\thighlightSelected = true,\n\tisSelected,\n\tshouldUseFastImage,\n\tisUploadFailed,\n\tisUploadPaused,\n\tisUploadInProgress,\n\tmediaPickerOptions,\n\tonImageDataLoad,\n\tonSelectMediaUploadOption,\n\topenMediaOptions,\n\tresizeMode,\n\tretryMessage,\n\tretryIcon,\n\turl,\n\tshapeStyle,\n\tstyle,\n\twidth: imageWidth,\n} ) => {\n\tconst [ imageData, setImageData ] = useState( null );\n\tconst [ containerSize, setContainerSize ] = useState( null );\n\tconst [ localURL, setLocalURL ] = useState( null );\n\tconst [ networkURL, setNetworkURL ] = useState( null );\n\tconst [ networkImageLoaded, setNetworkImageLoaded ] = useState( false );\n\n\t// Disabled for Android due to https://github.com/WordPress/gutenberg/issues/43149\n\tconst Image =\n\t\t! shouldUseFastImage || Platform.isAndroid ? RNImage : FastImage;\n\tconst imageResizeMode =\n\t\t! shouldUseFastImage || Platform.isAndroid\n\t\t\t? resizeMode\n\t\t\t: FastImage.resizeMode[ resizeMode ];\n\n\tuseEffect( () => {\n\t\tlet isCurrent = true;\n\t\tif ( url ) {\n\t\t\tRNImage.getSize( url, ( imgWidth, imgHeight ) => {\n\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst metaData = {\n\t\t\t\t\taspectRatio: imgWidth / imgHeight,\n\t\t\t\t\twidth: imgWidth,\n\t\t\t\t\theight: imgHeight,\n\t\t\t\t};\n\t\t\t\tsetImageData( metaData );\n\t\t\t\tif ( onImageDataLoad ) {\n\t\t\t\t\tonImageDataLoad( metaData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( url.startsWith( 'file:///' ) ) {\n\t\t\t\tsetLocalURL( url );\n\t\t\t\tsetNetworkURL( null );\n\t\t\t\tsetNetworkImageLoaded( false );\n\t\t\t} else if ( url.startsWith( 'https://' ) ) {\n\t\t\t\tif ( Platform.isIOS ) {\n\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t} else if ( Platform.isAndroid ) {\n\t\t\t\t\tRNImage.prefetch( url ).then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// This callback is called when the image fails to load,\n\t\t\t\t\t\t\t// but these events are handled by `isUploadFailed`\n\t\t\t\t\t\t\t// and `isUploadPaused` events instead.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// Ignoring the error event will persist the local image URI.\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn () => ( isCurrent = false );\n\t\t// See https://github.com/WordPress/gutenberg/pull/41166\n\t}, [ url ] );\n\n\tconst onContainerLayout = ( event ) => {\n\t\tconst { height, width } = event.nativeEvent.layout;\n\n\t\tif (\n\t\t\twidth !== 0 &&\n\t\t\theight !== 0 &&\n\t\t\t( containerSize?.width !== width ||\n\t\t\t\tcontainerSize?.height !== height )\n\t\t) {\n\t\t\tsetContainerSize( { width, height } );\n\t\t}\n\t};\n\n\tconst getIcon = ( iconType ) => {\n\t\tlet icon;\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\ticon = retryIcon || SvgIconRetry;\n\t\t\t\ticonStyle = iconRetryStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.OFFLINE:\n\t\t\t\ticon = offline;\n\t\t\t\ticonStyle = iconOfflineStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconPlaceholderStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconUploadStyles;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn <Icon icon={ icon } { ...iconStyle } />;\n\t};\n\n\tconst iconPlaceholderStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconPlaceholder,\n\t\tstyles.iconPlaceholderDark\n\t);\n\n\tconst iconUploadStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconUpload,\n\t\tstyles.iconUploadDark\n\t);\n\n\tconst iconOfflineStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconOffline,\n\t\tstyles.iconOfflineDark\n\t);\n\n\tconst retryIconStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryIcon,\n\t\tstyles.retryIconDark\n\t);\n\n\tconst iconRetryStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconRetry,\n\t\tstyles.iconRetryDark\n\t);\n\n\tconst retryContainerStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryContainer,\n\t\tstyles.retryContainerDark\n\t);\n\n\tconst uploadFailedTextStyles = usePreferredColorSchemeStyle(\n\t\tstyles.uploadFailedText,\n\t\tstyles.uploadFailedTextDark\n\t);\n\n\tconst placeholderStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageContainerUpload,\n\t\t\tstyles.imageContainerUploadDark\n\t\t),\n\t\tfocalPoint && styles.imageContainerUploadWithFocalpoint,\n\t\timageHeight && { height: imageHeight },\n\t];\n\n\tconst customWidth =\n\t\timageData?.width < containerSize?.width\n\t\t\t? imageData?.width\n\t\t\t: styles.wide?.width;\n\n\tconst imageContainerStyles = [\n\t\tstyles.imageContent,\n\t\t{\n\t\t\twidth:\n\t\t\t\timageWidth === styles.wide?.width ||\n\t\t\t\t( imageData &&\n\t\t\t\t\timageWidth > 0 &&\n\t\t\t\t\timageWidth < containerSize?.width )\n\t\t\t\t\t? imageWidth\n\t\t\t\t\t: customWidth,\n\t\t},\n\t\tresizeMode && { width: styles.wide?.width },\n\t\tfocalPoint && styles.focalPointContainer,\n\t];\n\n\tconst imageStyles = [\n\t\t{\n\t\t\theight: containerSize?.height,\n\t\t},\n\t\t! resizeMode && {\n\t\t\taspectRatio: imageData?.aspectRatio,\n\t\t},\n\t\tfocalPoint && styles.focalPoint,\n\t\tfocalPoint &&\n\t\t\tgetImageWithFocalPointStyles(\n\t\t\t\tfocalPoint,\n\t\t\t\tcontainerSize,\n\t\t\t\timageData\n\t\t\t),\n\t\t! focalPoint &&\n\t\t\timageData &&\n\t\t\tcontainerSize && {\n\t\t\t\theight:\n\t\t\t\t\timageData?.width > containerSize?.width && ! imageWidth\n\t\t\t\t\t\t? containerSize?.width / imageData?.aspectRatio\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\timageHeight && { height: imageHeight },\n\t\tshapeStyle,\n\t];\n\n\t// On iOS, add 1 to height to account for the 1px non-visible image\n\t// that is used to determine when the network image has loaded\n\t// We also must verify that it is not NaN, as it can be NaN when the image is loading.\n\t// This is not necessary on Android as the non-visible image is not used.\n\tlet calculatedSelectedHeight;\n\tif ( Platform.isIOS ) {\n\t\tcalculatedSelectedHeight =\n\t\t\tcontainerSize && ! isNaN( containerSize.height )\n\t\t\t\t? containerSize.height + 1\n\t\t\t\t: 0;\n\t} else {\n\t\tcalculatedSelectedHeight = containerSize?.height;\n\t}\n\n\tconst imageSelectedStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageBorder,\n\t\t\tstyles.imageBorderDark\n\t\t),\n\t\t{\n\t\t\theight: calculatedSelectedHeight,\n\t\t},\n\t];\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [\n\t\t\t\tstyles.container,\n\t\t\t\t// Only set alignItems if an image exists because alignItems causes the placeholder\n\t\t\t\t// to disappear when an aligned image can't be downloaded\n\t\t\t\t// https://github.com/wordpress-mobile/gutenberg-mobile/issues/1592\n\t\t\t\timageData && align && { alignItems: align },\n\t\t\t\tstyle,\n\t\t\t] }\n\t\t\tonLayout={ onContainerLayout }\n\t\t>\n\t\t\t<View\n\t\t\t\taccessible\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ alt }\n\t\t\t\taccessibilityHint={ __( 'Double tap to view larger.' ) }\n\t\t\t\taccessibilityRole=\"imagebutton\"\n\t\t\t\tkey={ url }\n\t\t\t\tstyle={ imageContainerStyles }\n\t\t\t>\n\t\t\t\t{ isSelected && highlightSelected && (\n\t\t\t\t\t<View style={ imageSelectedStyles } />\n\t\t\t\t) }\n\n\t\t\t\t{ ! imageData ? (\n\t\t\t\t\t<View style={ placeholderStyles }>\n\t\t\t\t\t\t<View style={ styles.imageUploadingIconContainer }>\n\t\t\t\t\t\t\t{ getIcon( ICON_TYPE.UPLOAD ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t) : (\n\t\t\t\t\t<View style={ focalPoint && styles.focalPointContent }>\n\t\t\t\t\t\t{ Platform.isAndroid && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ networkImageLoaded && networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t\ttestID={ `network-image-${ url }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! networkImageLoaded && ! networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: localURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Platform.isIOS && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\tsource={ {\n\t\t\t\t\t\t\t\t\t\turi:\n\t\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t\t: localURL || url,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\ttestID={ `network-image-${\n\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t: localURL || url\n\t\t\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\tstyle={ styles.nonVisibleImage }\n\t\t\t\t\t\t\t\t\tonLoad={ () => {\n\t\t\t\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadFailed || isUploadPaused ) && retryMessage && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\tstyles.imageContainer,\n\t\t\t\t\t\t\tretryContainerStyles,\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\tretryIconStyles,\n\t\t\t\t\t\t\t\tretryIcon && styles.customRetryIcon,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isUploadPaused\n\t\t\t\t\t\t\t\t? getIcon( ICON_TYPE.OFFLINE )\n\t\t\t\t\t\t\t\t: getIcon( ICON_TYPE.RETRY ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text style={ uploadFailedTextStyles }>\n\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\n\t\t\t{ editButton && isSelected && ! isUploadInProgress && (\n\t\t\t\t<ImageEditingButton\n\t\t\t\t\tonSelectMediaUploadOption={ onSelectMediaUploadOption }\n\t\t\t\t\topenMediaOptions={ openMediaOptions }\n\t\t\t\t\turl={\n\t\t\t\t\t\t! ( isUploadFailed || isUploadPaused ) &&\n\t\t\t\t\t\timageData &&\n\t\t\t\t\t\turl\n\t\t\t\t\t}\n\t\t\t\t\tpickerOptions={ mediaPickerOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</View>\n\t);\n};\n\nexport default ImageComponent;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,OAAO,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAC3D,OAAOC,SAAS,MAAM,yBAAyB;;AAE/C;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,EAAEC,OAAO,QAAQ,kBAAkB;AACjD,SAASC,4BAA4B,QAAQ,oBAAoB;AACjE,SAASC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,oBAAoB;;AAElE;AACA;AACA;AACA,SAASC,4BAA4B,QAAQ,SAAS;AACtD,OAAOC,MAAM,MAAM,cAAc;AACjC,OAAOC,YAAY,MAAM,cAAc;AACvC,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,IAAI,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE9B,MAAMC,SAAS,GAAG;EACjBC,OAAO,EAAE,SAAS;EAClBC,WAAW,EAAE,aAAa;EAC1BC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE;AACT,CAAC;AAED,MAAMC,cAAc,GAAGA,CAAE;EACxBC,KAAK;EACLC,GAAG;EACHC,UAAU,GAAG,IAAI;EACjBC,UAAU;EACVC,MAAM,EAAEC,WAAW;EACnBC,iBAAiB,GAAG,IAAI;EACxBC,UAAU;EACVC,kBAAkB;EAClBC,cAAc;EACdC,cAAc;EACdC,kBAAkB;EAClBC,kBAAkB;EAClBC,eAAe;EACfC,yBAAyB;EACzBC,gBAAgB;EAChBC,UAAU;EACVC,YAAY;EACZC,SAAS;EACTC,GAAG;EACHC,UAAU;EACVC,KAAK;EACLC,KAAK,EAAEC;AACR,CAAC,KAAM;EACN,MAAM,CAAEC,SAAS,EAAEC,YAAY,CAAE,GAAG5C,QAAQ,CAAE,IAAK,CAAC;EACpD,MAAM,CAAE6C,aAAa,EAAEC,gBAAgB,CAAE,GAAG9C,QAAQ,CAAE,IAAK,CAAC;EAC5D,MAAM,CAAE+C,QAAQ,EAAEC,WAAW,CAAE,GAAGhD,QAAQ,CAAE,IAAK,CAAC;EAClD,MAAM,CAAEiD,UAAU,EAAEC,aAAa,CAAE,GAAGlD,QAAQ,CAAE,IAAK,CAAC;EACtD,MAAM,CAAEmD,kBAAkB,EAAEC,qBAAqB,CAAE,GAAGpD,QAAQ,CAAE,KAAM,CAAC;;EAEvE;EACA,MAAMV,KAAK,GACV,CAAEqC,kBAAkB,IAAI1B,QAAQ,CAACoD,SAAS,GAAG9D,OAAO,GAAGG,SAAS;EACjE,MAAM4D,eAAe,GACpB,CAAE3B,kBAAkB,IAAI1B,QAAQ,CAACoD,SAAS,GACvClB,UAAU,GACVzC,SAAS,CAACyC,UAAU,CAAEA,UAAU,CAAE;EAEtCpC,SAAS,CAAE,MAAM;IAChB,IAAIwD,SAAS,GAAG,IAAI;IACpB,IAAKjB,GAAG,EAAG;MACV/C,OAAO,CAACiE,OAAO,CAAElB,GAAG,EAAE,CAAEmB,QAAQ,EAAEC,SAAS,KAAM;QAChD,IAAK,CAAEH,SAAS,EAAG;UAClB;QACD;QACA,MAAMI,QAAQ,GAAG;UAChBC,WAAW,EAAEH,QAAQ,GAAGC,SAAS;UACjCjB,KAAK,EAAEgB,QAAQ;UACflC,MAAM,EAAEmC;QACT,CAAC;QACDd,YAAY,CAAEe,QAAS,CAAC;QACxB,IAAK3B,eAAe,EAAG;UACtBA,eAAe,CAAE2B,QAAS,CAAC;QAC5B;MACD,CAAE,CAAC;MAEH,IAAKrB,GAAG,CAACuB,UAAU,CAAE,UAAW,CAAC,EAAG;QACnCb,WAAW,CAAEV,GAAI,CAAC;QAClBY,aAAa,CAAE,IAAK,CAAC;QACrBE,qBAAqB,CAAE,KAAM,CAAC;MAC/B,CAAC,MAAM,IAAKd,GAAG,CAACuB,UAAU,CAAE,UAAW,CAAC,EAAG;QAC1C,IAAK5D,QAAQ,CAAC6D,KAAK,EAAG;UACrBZ,aAAa,CAAEZ,GAAI,CAAC;QACrB,CAAC,MAAM,IAAKrC,QAAQ,CAACoD,SAAS,EAAG;UAChC9D,OAAO,CAACwE,QAAQ,CAAEzB,GAAI,CAAC,CAAC0B,IAAI,CAC3B,MAAM;YACL,IAAK,CAAET,SAAS,EAAG;cAClB;YACD;YACAL,aAAa,CAAEZ,GAAI,CAAC;YACpBc,qBAAqB,CAAE,IAAK,CAAC;UAC9B,CAAC,EACD,MAAM;YACL;YACA;YACA;YACA;YACA;UAAA,CAEF,CAAC;QACF;MACD;IACD;IACA,OAAO,MAAQG,SAAS,GAAG,KAAO;IAClC;EACD,CAAC,EAAE,CAAEjB,GAAG,CAAG,CAAC;EAEZ,MAAM2B,iBAAiB,GAAKC,KAAK,IAAM;IACtC,MAAM;MAAE3C,MAAM;MAAEkB;IAAM,CAAC,GAAGyB,KAAK,CAACC,WAAW,CAACC,MAAM;IAElD,IACC3B,KAAK,KAAK,CAAC,IACXlB,MAAM,KAAK,CAAC,KACVsB,aAAa,EAAEJ,KAAK,KAAKA,KAAK,IAC/BI,aAAa,EAAEtB,MAAM,KAAKA,MAAM,CAAE,EAClC;MACDuB,gBAAgB,CAAE;QAAEL,KAAK;QAAElB;MAAO,CAAE,CAAC;IACtC;EACD,CAAC;EAED,MAAM8C,OAAO,GAAKC,QAAQ,IAAM;IAC/B,IAAIC,IAAI;IACR,IAAIC,SAAS;IACb,QAASF,QAAQ;MAChB,KAAKzD,SAAS,CAACG,KAAK;QACnBuD,IAAI,GAAGlC,SAAS,IAAIjC,YAAY;QAChCoE,SAAS,GAAGC,eAAe;QAC3B;MACD,KAAK5D,SAAS,CAACC,OAAO;QACrByD,IAAI,GAAG1E,OAAO;QACd2E,SAAS,GAAGE,iBAAiB;QAC7B;MACD,KAAK7D,SAAS,CAACE,WAAW;QACzBwD,IAAI,GAAG3E,KAAK;QACZ4E,SAAS,GAAGG,qBAAqB;QACjC;MACD,KAAK9D,SAAS,CAACI,MAAM;QACpBsD,IAAI,GAAG3E,KAAK;QACZ4E,SAAS,GAAGI,gBAAgB;QAC5B;IACF;IACA,oBAAOpE,IAAA,CAACF,IAAI;MAACiE,IAAI,EAAGA,IAAM;MAAA,GAAMC;IAAS,CAAI,CAAC;EAC/C,CAAC;EAED,MAAMG,qBAAqB,GAAG7E,4BAA4B,CACzDK,MAAM,CAAC0E,eAAe,EACtB1E,MAAM,CAAC2E,mBACR,CAAC;EAED,MAAMF,gBAAgB,GAAG9E,4BAA4B,CACpDK,MAAM,CAAC4E,UAAU,EACjB5E,MAAM,CAAC6E,cACR,CAAC;EAED,MAAMN,iBAAiB,GAAG5E,4BAA4B,CACrDK,MAAM,CAAC8E,WAAW,EAClB9E,MAAM,CAAC+E,eACR,CAAC;EAED,MAAMC,eAAe,GAAGrF,4BAA4B,CACnDK,MAAM,CAACkC,SAAS,EAChBlC,MAAM,CAACiF,aACR,CAAC;EAED,MAAMX,eAAe,GAAG3E,4BAA4B,CACnDK,MAAM,CAACkF,SAAS,EAChBlF,MAAM,CAACmF,aACR,CAAC;EAED,MAAMC,oBAAoB,GAAGzF,4BAA4B,CACxDK,MAAM,CAACqF,cAAc,EACrBrF,MAAM,CAACsF,kBACR,CAAC;EAED,MAAMC,sBAAsB,GAAG5F,4BAA4B,CAC1DK,MAAM,CAACwF,gBAAgB,EACvBxF,MAAM,CAACyF,oBACR,CAAC;EAED,MAAMC,iBAAiB,GAAG,CACzB/F,4BAA4B,CAC3BK,MAAM,CAAC2F,oBAAoB,EAC3B3F,MAAM,CAAC4F,wBACR,CAAC,EACDzE,UAAU,IAAInB,MAAM,CAAC6F,kCAAkC,EACvDxE,WAAW,IAAI;IAAED,MAAM,EAAEC;EAAY,CAAC,CACtC;EAED,MAAMyE,WAAW,GAChBtD,SAAS,EAAEF,KAAK,GAAGI,aAAa,EAAEJ,KAAK,GACpCE,SAAS,EAAEF,KAAK,GAChBtC,MAAM,CAAC+F,IAAI,EAAEzD,KAAK;EAEtB,MAAM0D,oBAAoB,GAAG,CAC5BhG,MAAM,CAACiG,YAAY,EACnB;IACC3D,KAAK,EACJC,UAAU,KAAKvC,MAAM,CAAC+F,IAAI,EAAEzD,KAAK,IAC/BE,SAAS,IACVD,UAAU,GAAG,CAAC,IACdA,UAAU,GAAGG,aAAa,EAAEJ,KAAO,GACjCC,UAAU,GACVuD;EACL,CAAC,EACD9D,UAAU,IAAI;IAAEM,KAAK,EAAEtC,MAAM,CAAC+F,IAAI,EAAEzD;EAAM,CAAC,EAC3CnB,UAAU,IAAInB,MAAM,CAACkG,mBAAmB,CACxC;EAED,MAAMC,WAAW,GAAG,CACnB;IACC/E,MAAM,EAAEsB,aAAa,EAAEtB;EACxB,CAAC,EACD,CAAEY,UAAU,IAAI;IACfyB,WAAW,EAAEjB,SAAS,EAAEiB;EACzB,CAAC,EACDtC,UAAU,IAAInB,MAAM,CAACmB,UAAU,EAC/BA,UAAU,IACTpB,4BAA4B,CAC3BoB,UAAU,EACVuB,aAAa,EACbF,SACD,CAAC,EACF,CAAErB,UAAU,IACXqB,SAAS,IACTE,aAAa,IAAI;IAChBtB,MAAM,EACLoB,SAAS,EAAEF,KAAK,GAAGI,aAAa,EAAEJ,KAAK,IAAI,CAAEC,UAAU,GACpDG,aAAa,EAAEJ,KAAK,GAAGE,SAAS,EAAEiB,WAAW,GAC7C2C;EACL,CAAC,EACF/E,WAAW,IAAI;IAAED,MAAM,EAAEC;EAAY,CAAC,EACtCe,UAAU,CACV;;EAED;EACA;EACA;EACA;EACA,IAAIiE,wBAAwB;EAC5B,IAAKvG,QAAQ,CAAC6D,KAAK,EAAG;IACrB0C,wBAAwB,GACvB3D,aAAa,IAAI,CAAE4D,KAAK,CAAE5D,aAAa,CAACtB,MAAO,CAAC,GAC7CsB,aAAa,CAACtB,MAAM,GAAG,CAAC,GACxB,CAAC;EACN,CAAC,MAAM;IACNiF,wBAAwB,GAAG3D,aAAa,EAAEtB,MAAM;EACjD;EAEA,MAAMmF,mBAAmB,GAAG,CAC3B5G,4BAA4B,CAC3BK,MAAM,CAACwG,WAAW,EAClBxG,MAAM,CAACyG,eACR,CAAC,EACD;IACCrF,MAAM,EAAEiF;EACT,CAAC,CACD;EAED,oBACC5F,KAAA,CAACnB,IAAI;IACJ+C,KAAK,EAAG,CACPrC,MAAM,CAAC0G,SAAS;IAChB;IACA;IACA;IACAlE,SAAS,IAAIxB,KAAK,IAAI;MAAE2F,UAAU,EAAE3F;IAAM,CAAC,EAC3CqB,KAAK,CACH;IACHuE,QAAQ,EAAG9C,iBAAmB;IAAA+C,QAAA,gBAE9BpG,KAAA,CAACnB,IAAI;MACJwH,UAAU;MACVC,QAAQ,EAAG,CAAExF,UAAY;MACzByF,kBAAkB,EAAG/F,GAAK;MAC1BgG,iBAAiB,EAAGzH,EAAE,CAAE,4BAA6B,CAAG;MACxD0H,iBAAiB,EAAC,aAAa;MAE/B7E,KAAK,EAAG2D,oBAAsB;MAAAa,QAAA,GAE5BtF,UAAU,IAAID,iBAAiB,iBAChCjB,IAAA,CAACf,IAAI;QAAC+C,KAAK,EAAGkE;MAAqB,CAAE,CACrC,EAEC,CAAE/D,SAAS,gBACZnC,IAAA,CAACf,IAAI;QAAC+C,KAAK,EAAGqD,iBAAmB;QAAAmB,QAAA,eAChCxG,IAAA,CAACf,IAAI;UAAC+C,KAAK,EAAGrC,MAAM,CAACmH,2BAA6B;UAAAN,QAAA,EAC/C3C,OAAO,CAAExD,SAAS,CAACI,MAAO;QAAC,CACxB;MAAC,CACF,CAAC,gBAEPL,KAAA,CAACnB,IAAI;QAAC+C,KAAK,EAAGlB,UAAU,IAAInB,MAAM,CAACoH,iBAAmB;QAAAP,QAAA,GACnD/G,QAAQ,CAACoD,SAAS,iBACnBzC,KAAA,CAAAF,SAAA;UAAAsG,QAAA,GACG7D,kBAAkB,IAAIF,UAAU,iBACjCzC,IAAA,CAAClB,KAAK;YACLkD,KAAK,EAAG8D,WAAa;YACrBkB,YAAY,EAAG,CAAG;YAClBC,MAAM,EAAG;cAAEC,GAAG,EAAEzE;YAAW,CAAG;YAAA,IACvB,CAAE3B,UAAU,IAAI;cACtBqG,YAAY,EAAE;YACf,CAAC;YACDxF,UAAU,EAAGmB,eAAiB;YAC9BsE,MAAM,EAAG,iBAAkBtF,GAAG;UAAK,CACnC,CACD,EACC,CAAEa,kBAAkB,IAAI,CAAEF,UAAU,iBACrCzC,IAAA,CAAClB,KAAK;YACLkD,KAAK,EAAG8D,WAAa;YACrBkB,YAAY,EAAG,CAAG;YAClBC,MAAM,EAAG;cAAEC,GAAG,EAAE3E;YAAS,CAAG;YAAA,IACrB,CAAEzB,UAAU,IAAI;cACtBqG,YAAY,EAAE;YACf,CAAC;YACDxF,UAAU,EAAGmB;UAAiB,CAC9B,CACD;QAAA,CACA,CACF,EACCrD,QAAQ,CAAC6D,KAAK,iBACflD,KAAA,CAAAF,SAAA;UAAAsG,QAAA,gBACCxG,IAAA,CAAClB,KAAK;YACLkD,KAAK,EAAG8D,WAAa;YACrBmB,MAAM,EAAG;cACRC,GAAG,EACFzE,UAAU,IAAIE,kBAAkB,GAC7BF,UAAU,GACVF,QAAQ,IAAIT;YACjB,CAAG;YAAA,IACI,CAAEhB,UAAU,IAAI;cACtBqG,YAAY,EAAE;YACf,CAAC;YACDxF,UAAU,EAAGmB,eAAiB;YAC9BsE,MAAM,EAAG,iBACR3E,UAAU,IAAIE,kBAAkB,GAC7BF,UAAU,GACVF,QAAQ,IAAIT,GAAG;UACf,CACJ,CAAC,eACF9B,IAAA,CAAClB,KAAK;YACLmI,MAAM,EAAG;cAAEC,GAAG,EAAEzE;YAAW,CAAG;YAC9BT,KAAK,EAAGrC,MAAM,CAAC0H,eAAiB;YAChCC,MAAM,EAAGA,CAAA,KAAM;cACd1E,qBAAqB,CAAE,IAAK,CAAC;YAC9B;UAAG,CACH,CAAC;QAAA,CACD,CACF;MAAA,CACI,CACN,EAEC,CAAExB,cAAc,IAAIC,cAAc,KAAMO,YAAY,iBACrDxB,KAAA,CAACnB,IAAI;QACJ+C,KAAK,EAAG,CACPrC,MAAM,CAAC4H,cAAc,EACrBxC,oBAAoB,CAClB;QAAAyB,QAAA,gBAEHxG,IAAA,CAACf,IAAI;UACJ+C,KAAK,EAAG,CACP2C,eAAe,EACf9C,SAAS,IAAIlC,MAAM,CAAC6H,eAAe,CACjC;UAAAhB,QAAA,EAEDnF,cAAc,GACbwC,OAAO,CAAExD,SAAS,CAACC,OAAQ,CAAC,GAC5BuD,OAAO,CAAExD,SAAS,CAACG,KAAM;QAAC,CACxB,CAAC,eACPR,IAAA,CAAChB,IAAI;UAACgD,KAAK,EAAGkD,sBAAwB;UAAAsB,QAAA,EACnC5E;QAAY,CACT,CAAC;MAAA,CACF,CACN;IAAA,GA/FKE,GAgGD,CAAC,EAELjB,UAAU,IAAIK,UAAU,IAAI,CAAEI,kBAAkB,iBACjDtB,IAAA,CAACH,kBAAkB;MAClB4B,yBAAyB,EAAGA,yBAA2B;MACvDC,gBAAgB,EAAGA,gBAAkB;MACrCI,GAAG,EACF,EAAIV,cAAc,IAAIC,cAAc,CAAE,IACtCc,SAAS,IACTL,GACA;MACD2F,aAAa,EAAGlG;IAAoB,CACpC,CACD;EAAA,CACI,CAAC;AAET,CAAC;AAED,eAAeb,cAAc","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form-file-upload/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGnD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAE,EAC/B,MAAM,EACN,QAAQ,EACR,QAAgB,EAChB,QAAQ,EACR,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACR,EAAE,uBAAuB,CAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAE,+BAkDjE;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form-file-upload/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGnD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAE,EAC/B,MAAM,EACN,QAAQ,EACR,QAAgB,EAChB,QAAQ,EACR,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACR,EAAE,uBAAuB,CAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAE,+BA4CjE;AAED,eAAe,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/components",
3
- "version": "29.11.0",
3
+ "version": "29.12.0",
4
4
  "description": "UI components for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -44,23 +44,23 @@
44
44
  "@types/gradient-parser": "0.1.3",
45
45
  "@types/highlight-words-core": "1.2.1",
46
46
  "@use-gesture/react": "^10.3.1",
47
- "@wordpress/a11y": "^4.25.0",
48
- "@wordpress/compose": "^7.25.0",
49
- "@wordpress/date": "^5.25.0",
50
- "@wordpress/deprecated": "^4.25.0",
51
- "@wordpress/dom": "^4.25.0",
52
- "@wordpress/element": "^6.25.0",
53
- "@wordpress/escape-html": "^3.25.0",
54
- "@wordpress/hooks": "^4.25.0",
55
- "@wordpress/html-entities": "^4.25.0",
56
- "@wordpress/i18n": "^5.25.0",
57
- "@wordpress/icons": "^10.25.0",
58
- "@wordpress/is-shallow-equal": "^5.25.0",
59
- "@wordpress/keycodes": "^4.25.0",
60
- "@wordpress/primitives": "^4.25.0",
61
- "@wordpress/private-apis": "^1.25.0",
62
- "@wordpress/rich-text": "^7.25.0",
63
- "@wordpress/warning": "^3.25.0",
47
+ "@wordpress/a11y": "^4.26.0",
48
+ "@wordpress/compose": "^7.26.0",
49
+ "@wordpress/date": "^5.26.0",
50
+ "@wordpress/deprecated": "^4.26.0",
51
+ "@wordpress/dom": "^4.26.0",
52
+ "@wordpress/element": "^6.26.0",
53
+ "@wordpress/escape-html": "^3.26.0",
54
+ "@wordpress/hooks": "^4.26.0",
55
+ "@wordpress/html-entities": "^4.26.0",
56
+ "@wordpress/i18n": "^5.26.0",
57
+ "@wordpress/icons": "^10.26.0",
58
+ "@wordpress/is-shallow-equal": "^5.26.0",
59
+ "@wordpress/keycodes": "^4.26.0",
60
+ "@wordpress/primitives": "^4.26.0",
61
+ "@wordpress/private-apis": "^1.26.0",
62
+ "@wordpress/rich-text": "^7.26.0",
63
+ "@wordpress/warning": "^3.26.0",
64
64
  "change-case": "^4.1.2",
65
65
  "clsx": "^2.1.1",
66
66
  "colord": "^2.7.0",
@@ -85,5 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "gitHead": "d1acd76ffff33ab01f0a948d2f51e5e45c95158d"
88
+ "gitHead": "35e26942820d8237771af0c58e45b4303f0497f1"
89
89
  }
@@ -5,7 +5,7 @@ import type { Meta, StoryFn } from '@storybook/react';
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
8
- import { useState, createContext, useContext } from '@wordpress/element';
8
+ import { createContext, useContext, useState } from '@wordpress/element';
9
9
  /**
10
10
  * Internal dependencies
11
11
  */
@@ -152,7 +152,7 @@ WithDropdownLinkAction.args = {
152
152
  actions: (
153
153
  <CircularOptionPicker.DropdownLinkAction
154
154
  dropdownProps={ {
155
- popoverProps: { position: 'top right' },
155
+ popoverProps: { placement: 'top-end' },
156
156
  renderContent: () => (
157
157
  <div>This is an example of a DropdownLinkAction.</div>
158
158
  ),
@@ -58,18 +58,12 @@ export function FormFileUpload( {
58
58
  { children }
59
59
  </Button>
60
60
  );
61
- // @todo: Temporary fix a bug that prevents Chromium browsers from selecting ".heic" files
62
- // from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.
63
- // This can be removed once the Chromium fix is in the stable channel.
64
- // Prevent Safari from adding "image/heic" and "image/heif" to the accept attribute.
65
- const isSafari =
66
- globalThis.window?.navigator.userAgent.includes( 'Safari' ) &&
67
- ! globalThis.window?.navigator.userAgent.includes( 'Chrome' ) &&
68
- ! globalThis.window?.navigator.userAgent.includes( 'Chromium' );
69
- const compatAccept =
70
- ! isSafari && !! accept?.includes( 'image/*' )
71
- ? `${ accept }, image/heic, image/heif`
72
- : accept;
61
+
62
+ // iOS browsers may not reliably handle 'audio/*' in the accept attribute.
63
+ // Adding explicit audio MIME types improves compatibility across all devices.
64
+ const compatAccept = accept?.includes( 'audio/*' )
65
+ ? `${ accept }, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm`
66
+ : accept;
73
67
 
74
68
  return (
75
69
  <div className="components-form-file-upload">
@@ -282,7 +282,7 @@ const ImageComponent = ( {
282
282
  accessible
283
283
  disabled={ ! isSelected }
284
284
  accessibilityLabel={ alt }
285
- accessibilityHint={ __( 'Double tap and hold to edit' ) }
285
+ accessibilityHint={ __( 'Double tap to view larger.' ) }
286
286
  accessibilityRole="imagebutton"
287
287
  key={ url }
288
288
  style={ imageContainerStyles }