{
  "version": 3,
  "sources": ["../../../src/components/media/media-editor-modal.js"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSettings } from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as mediaEditorPrivateApis } from '@wordpress/media-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport usePostFields from '../post-fields';\n\nconst { MediaEditorModal } = unlock( mediaEditorPrivateApis );\n\nfunction ratioToNumber( ratio ) {\n\tif ( ratio === undefined || ratio === null ) {\n\t\treturn NaN;\n\t}\n\tconst [ a, b, ...rest ] = String( ratio ).split( '/' ).map( Number );\n\tif (\n\t\ta <= 0 ||\n\t\tb <= 0 ||\n\t\tNumber.isNaN( a ) ||\n\t\tNumber.isNaN( b ) ||\n\t\trest.length\n\t) {\n\t\treturn NaN;\n\t}\n\treturn b ? a / b : a;\n}\n\nfunction aspectRatioPresetFromSettings( { name, ratio } = {} ) {\n\tconst value = ratioToNumber( ratio );\n\tif ( ! name || ! Number.isFinite( value ) || value <= 0 ) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tlabel: name,\n\t\tvalue,\n\t};\n}\n\n/**\n * Mounts the MediaEditorModal alongside existing editor modals.\n *\n * Bridges `@wordpress/editor`'s `usePostFields('attachment')` hook\n * into the modal, since `@wordpress/media-editor` cannot depend on\n * `@wordpress/editor`.\n *\n * @return {Element} The MediaEditorModal component wired with attachment fields.\n */\nexport default function MediaEditorModalMount() {\n\tconst fields = usePostFields( { postType: 'attachment' } );\n\tconst [ defaultRatios, themeRatios, showDefaultRatios ] = useSettings(\n\t\t'dimensions.aspectRatios.default',\n\t\t'dimensions.aspectRatios.theme',\n\t\t'dimensions.defaultAspectRatios'\n\t);\n\tconst aspectRatioPresets = useMemo( () => {\n\t\tconst hasAspectRatioSettings =\n\t\t\tArray.isArray( defaultRatios ) ||\n\t\t\tArray.isArray( themeRatios ) ||\n\t\t\ttypeof showDefaultRatios === 'boolean';\n\n\t\tif ( ! hasAspectRatioSettings ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst candidateRatios = [\n\t\t\t...( showDefaultRatios && Array.isArray( defaultRatios )\n\t\t\t\t? defaultRatios\n\t\t\t\t: [] ),\n\t\t\t...( Array.isArray( themeRatios ) ? themeRatios : [] ),\n\t\t];\n\t\tconst presets = candidateRatios\n\t\t\t.map( aspectRatioPresetFromSettings )\n\t\t\t.filter( Boolean );\n\n\t\t// Passing `undefined` lets the media editor use its fallback presets.\n\t\t// Passing `[]` explicitly removes fixed presets when defaults are off.\n\t\tif ( presets.length || showDefaultRatios === false ) {\n\t\t\treturn presets;\n\t\t}\n\n\t\treturn undefined;\n\t}, [ defaultRatios, themeRatios, showDefaultRatios ] );\n\n\treturn (\n\t\t<MediaEditorModal\n\t\t\tfields={ fields }\n\t\t\taspectRatioPresets={ aspectRatioPresets }\n\t\t/>\n\t);\n}\n"],
  "mappings": ";AAGA,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,eAAe,8BAA8B;AAKtD,SAAS,cAAc;AACvB,OAAO,mBAAmB;AA8ExB;AA5EF,IAAM,EAAE,iBAAiB,IAAI,OAAQ,sBAAuB;AAE5D,SAAS,cAAe,OAAQ;AAC/B,MAAK,UAAU,UAAa,UAAU,MAAO;AAC5C,WAAO;AAAA,EACR;AACA,QAAM,CAAE,GAAG,GAAG,GAAG,IAAK,IAAI,OAAQ,KAAM,EAAE,MAAO,GAAI,EAAE,IAAK,MAAO;AACnE,MACC,KAAK,KACL,KAAK,KACL,OAAO,MAAO,CAAE,KAChB,OAAO,MAAO,CAAE,KAChB,KAAK,QACJ;AACD,WAAO;AAAA,EACR;AACA,SAAO,IAAI,IAAI,IAAI;AACpB;AAEA,SAAS,8BAA+B,EAAE,MAAM,MAAM,IAAI,CAAC,GAAI;AAC9D,QAAM,QAAQ,cAAe,KAAM;AACnC,MAAK,CAAE,QAAQ,CAAE,OAAO,SAAU,KAAM,KAAK,SAAS,GAAI;AACzD,WAAO;AAAA,EACR;AACA,SAAO;AAAA,IACN,OAAO;AAAA,IACP;AAAA,EACD;AACD;AAWe,SAAR,wBAAyC;AAC/C,QAAM,SAAS,cAAe,EAAE,UAAU,aAAa,CAAE;AACzD,QAAM,CAAE,eAAe,aAAa,iBAAkB,IAAI;AAAA,IACzD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,QAAM,qBAAqB,QAAS,MAAM;AACzC,UAAM,yBACL,MAAM,QAAS,aAAc,KAC7B,MAAM,QAAS,WAAY,KAC3B,OAAO,sBAAsB;AAE9B,QAAK,CAAE,wBAAyB;AAC/B,aAAO;AAAA,IACR;AAEA,UAAM,kBAAkB;AAAA,MACvB,GAAK,qBAAqB,MAAM,QAAS,aAAc,IACpD,gBACA,CAAC;AAAA,MACJ,GAAK,MAAM,QAAS,WAAY,IAAI,cAAc,CAAC;AAAA,IACpD;AACA,UAAM,UAAU,gBACd,IAAK,6BAA8B,EACnC,OAAQ,OAAQ;AAIlB,QAAK,QAAQ,UAAU,sBAAsB,OAAQ;AACpD,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR,GAAG,CAAE,eAAe,aAAa,iBAAkB,CAAE;AAErD,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACD;AAEF;",
  "names": []
}
