@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 2.85 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/gallery/use-image-sizes.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Calculates the image sizes that are available for the current gallery images in order to\n * populate the 'Resolution' selector.\n *\n * @param {Array} images Basic image block data taken from current gallery innerBlock.\n * @param {boolean} isSelected Is the block currently selected in the editor.\n * @param {Function} getSettings Block editor store selector.\n *\n * @return {Array} An array of image size options.\n */\nexport default function useImageSizes( images, isSelected, getSettings ) {\n\treturn useMemo( () => getImageSizing(), [ images, isSelected ] );\n\n\tfunction getImageSizing() {\n\t\tif ( ! images || images.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { imageSizes } = getSettings();\n\t\tlet resizedImages = {};\n\n\t\tif ( isSelected ) {\n\t\t\tresizedImages = images.reduce( ( currentResizedImages, img ) => {\n\t\t\t\tif ( ! img.id ) {\n\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t}\n\n\t\t\t\tconst sizes = imageSizes.reduce( ( currentSizes, size ) => {\n\t\t\t\t\tconst defaultUrl = img.sizes?.[ size.slug ]?.url;\n\t\t\t\t\tconst mediaDetailsUrl =\n\t\t\t\t\t\timg.media_details?.sizes?.[ size.slug ]?.source_url;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t};\n\t\t\t\t}, {} );\n\t\t\t\treturn {\n\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t[ parseInt( img.id, 10 ) ]: sizes,\n\t\t\t\t};\n\t\t\t}, {} );\n\t\t}\n\t\tconst resizedImageSizes = Object.values( resizedImages );\n\t\treturn imageSizes\n\t\t\t.filter( ( { slug } ) =>\n\t\t\t\tresizedImageSizes.some( ( sizes ) => sizes[ slug ] )\n\t\t\t)\n\t\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\t}\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAwB;AAYT,SAAR,cAAgC,QAAQ,YAAY,aAAc;AACxE,aAAO,wBAAS,MAAM,eAAe,GAAG,CAAE,QAAQ,UAAW,CAAE;AAE/D,WAAS,iBAAiB;AACzB,QAAK,CAAE,UAAU,OAAO,WAAW,GAAI;AACtC;AAAA,IACD;AACA,UAAM,EAAE,WAAW,IAAI,YAAY;AACnC,QAAI,gBAAgB,CAAC;AAErB,QAAK,YAAa;AACjB,sBAAgB,OAAO,OAAQ,CAAE,sBAAsB,QAAS;AAC/D,YAAK,CAAE,IAAI,IAAK;AACf,iBAAO;AAAA,QACR;AAEA,cAAM,QAAQ,WAAW,OAAQ,CAAE,cAAc,SAAU;AAC1D,gBAAM,aAAa,IAAI,QAAS,KAAK,IAAK,GAAG;AAC7C,gBAAM,kBACL,IAAI,eAAe,QAAS,KAAK,IAAK,GAAG;AAC1C,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,CAAE,KAAK,IAAK,GAAG,cAAc;AAAA,UAC9B;AAAA,QACD,GAAG,CAAC,CAAE;AACN,eAAO;AAAA,UACN,GAAG;AAAA,UACH,CAAE,SAAU,IAAI,IAAI,EAAG,CAAE,GAAG;AAAA,QAC7B;AAAA,MACD,GAAG,CAAC,CAAE;AAAA,IACP;AACA,UAAM,oBAAoB,OAAO,OAAQ,aAAc;AACvD,WAAO,WACL;AAAA,MAAQ,CAAE,EAAE,KAAK,MACjB,kBAAkB,KAAM,CAAE,UAAW,MAAO,IAAK,CAAE;AAAA,IACpD,EACC,IAAK,CAAE,EAAE,MAAM,KAAK,OAAS,EAAE,OAAO,MAAM,OAAO,KAAK,EAAI;AAAA,EAC/D;AACD;",
"names": []
}