@wordpress/block-library 7.6.0 → 7.7.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.
Files changed (152) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/button/deprecated.js +175 -35
  3. package/build/button/deprecated.js.map +1 -1
  4. package/build/button/edit.js +1 -1
  5. package/build/button/edit.js.map +1 -1
  6. package/build/button/save.js +1 -1
  7. package/build/button/save.js.map +1 -1
  8. package/build/columns/index.js +3 -1
  9. package/build/columns/index.js.map +1 -1
  10. package/build/cover/deprecated.js +212 -207
  11. package/build/cover/deprecated.js.map +1 -1
  12. package/build/cover/edit/index.js +13 -3
  13. package/build/cover/edit/index.js.map +1 -1
  14. package/build/cover/save.js +18 -5
  15. package/build/cover/save.js.map +1 -1
  16. package/build/cover/shared.js +14 -17
  17. package/build/cover/shared.js.map +1 -1
  18. package/build/file/edit.js +1 -1
  19. package/build/file/edit.js.map +1 -1
  20. package/build/file/save.js +9 -1
  21. package/build/file/save.js.map +1 -1
  22. package/build/gallery/gap-styles.js +14 -4
  23. package/build/gallery/gap-styles.js.map +1 -1
  24. package/build/gallery/index.js +1 -1
  25. package/build/image/edit.js +5 -59
  26. package/build/image/edit.js.map +1 -1
  27. package/build/image/edit.native.js +56 -3
  28. package/build/image/edit.native.js.map +1 -1
  29. package/build/image/image.js +3 -13
  30. package/build/image/image.js.map +1 -1
  31. package/build/list-item/hooks/use-split.js +17 -3
  32. package/build/list-item/hooks/use-split.js.map +1 -1
  33. package/build/navigation-link/edit.js +31 -5
  34. package/build/navigation-link/edit.js.map +1 -1
  35. package/build/post-author-name/index.js +3 -0
  36. package/build/post-author-name/index.js.map +1 -1
  37. package/build/post-author-name/transforms.js +41 -0
  38. package/build/post-author-name/transforms.js.map +1 -0
  39. package/build/post-comments-form/form.js +11 -1
  40. package/build/post-comments-form/form.js.map +1 -1
  41. package/build/post-date/edit.js +13 -7
  42. package/build/post-date/edit.js.map +1 -1
  43. package/build/search/edit.js +1 -1
  44. package/build/search/edit.js.map +1 -1
  45. package/build/search/index.js +4 -0
  46. package/build/search/index.js.map +1 -1
  47. package/build/shortcode/edit.native.js +16 -13
  48. package/build/shortcode/edit.native.js.map +1 -1
  49. package/build/social-links/edit.js +2 -2
  50. package/build/social-links/edit.js.map +1 -1
  51. package/build/table-of-contents/edit.js +11 -3
  52. package/build/table-of-contents/edit.js.map +1 -1
  53. package/build-module/button/deprecated.js +175 -35
  54. package/build-module/button/deprecated.js.map +1 -1
  55. package/build-module/button/edit.js +2 -2
  56. package/build-module/button/edit.js.map +1 -1
  57. package/build-module/button/save.js +2 -2
  58. package/build-module/button/save.js.map +1 -1
  59. package/build-module/columns/index.js +3 -1
  60. package/build-module/columns/index.js.map +1 -1
  61. package/build-module/cover/deprecated.js +206 -198
  62. package/build-module/cover/deprecated.js.map +1 -1
  63. package/build-module/cover/edit/index.js +14 -4
  64. package/build-module/cover/edit/index.js.map +1 -1
  65. package/build-module/cover/save.js +19 -6
  66. package/build-module/cover/save.js.map +1 -1
  67. package/build-module/cover/shared.js +11 -12
  68. package/build-module/cover/shared.js.map +1 -1
  69. package/build-module/file/edit.js +2 -2
  70. package/build-module/file/edit.js.map +1 -1
  71. package/build-module/file/save.js +7 -2
  72. package/build-module/file/save.js.map +1 -1
  73. package/build-module/gallery/gap-styles.js +14 -4
  74. package/build-module/gallery/gap-styles.js.map +1 -1
  75. package/build-module/gallery/index.js +1 -1
  76. package/build-module/image/edit.js +5 -56
  77. package/build-module/image/edit.js.map +1 -1
  78. package/build-module/image/edit.native.js +57 -5
  79. package/build-module/image/edit.native.js.map +1 -1
  80. package/build-module/image/image.js +4 -14
  81. package/build-module/image/image.js.map +1 -1
  82. package/build-module/list-item/hooks/use-split.js +19 -5
  83. package/build-module/list-item/hooks/use-split.js.map +1 -1
  84. package/build-module/navigation-link/edit.js +31 -6
  85. package/build-module/navigation-link/edit.js.map +1 -1
  86. package/build-module/post-author-name/index.js +2 -0
  87. package/build-module/post-author-name/index.js.map +1 -1
  88. package/build-module/post-author-name/transforms.js +32 -0
  89. package/build-module/post-author-name/transforms.js.map +1 -0
  90. package/build-module/post-comments-form/form.js +7 -1
  91. package/build-module/post-comments-form/form.js.map +1 -1
  92. package/build-module/post-date/edit.js +15 -9
  93. package/build-module/post-date/edit.js.map +1 -1
  94. package/build-module/search/edit.js +2 -2
  95. package/build-module/search/edit.js.map +1 -1
  96. package/build-module/search/index.js +4 -0
  97. package/build-module/search/index.js.map +1 -1
  98. package/build-module/shortcode/edit.native.js +17 -13
  99. package/build-module/shortcode/edit.native.js.map +1 -1
  100. package/build-module/social-links/edit.js +2 -2
  101. package/build-module/social-links/edit.js.map +1 -1
  102. package/build-module/table-of-contents/edit.js +12 -4
  103. package/build-module/table-of-contents/edit.js.map +1 -1
  104. package/build-style/cover/style-rtl.css +32 -23
  105. package/build-style/cover/style.css +32 -23
  106. package/build-style/site-logo/style-rtl.css +4 -0
  107. package/build-style/site-logo/style.css +4 -0
  108. package/build-style/style-rtl.css +36 -23
  109. package/build-style/style.css +36 -23
  110. package/package.json +28 -28
  111. package/src/button/deprecated.js +145 -0
  112. package/src/button/edit.js +3 -1
  113. package/src/button/save.js +3 -1
  114. package/src/buttons/test/__snapshots__/edit.native.js.snap +1 -1
  115. package/src/buttons/test/edit.native.js +1 -1
  116. package/src/columns/block.json +3 -1
  117. package/src/cover/deprecated.js +230 -183
  118. package/src/cover/edit/index.js +25 -13
  119. package/src/cover/save.js +26 -13
  120. package/src/cover/shared.js +5 -7
  121. package/src/cover/style.scss +27 -22
  122. package/src/file/edit.js +5 -1
  123. package/src/file/save.js +14 -2
  124. package/src/gallery/block.json +1 -1
  125. package/src/gallery/gap-styles.js +21 -6
  126. package/src/gallery/index.php +23 -12
  127. package/src/image/edit.js +1 -53
  128. package/src/image/edit.native.js +65 -3
  129. package/src/image/image.js +2 -11
  130. package/src/image/styles.native.scss +11 -0
  131. package/src/list-item/hooks/use-split.js +18 -9
  132. package/src/navigation-link/edit.js +35 -5
  133. package/src/navigation-link/test/edit.js +0 -20
  134. package/src/post-author/index.php +3 -2
  135. package/src/post-author-name/index.js +2 -0
  136. package/src/post-author-name/index.php +1 -1
  137. package/src/post-author-name/transforms.js +25 -0
  138. package/src/post-comments/index.php +1 -1
  139. package/src/post-comments-form/form.js +11 -1
  140. package/src/post-comments-form/index.php +1 -1
  141. package/src/post-date/edit.js +4 -3
  142. package/src/query-pagination/index.php +0 -1
  143. package/src/search/block.json +4 -0
  144. package/src/search/edit.js +3 -1
  145. package/src/search/index.php +28 -15
  146. package/src/shortcode/edit.native.js +29 -15
  147. package/src/shortcode/style.native.scss +11 -4
  148. package/src/shortcode/test/__snapshots__/edit.native.js.snap +9 -0
  149. package/src/shortcode/test/edit.native.js +58 -40
  150. package/src/site-logo/style.scss +6 -0
  151. package/src/social-links/edit.js +11 -10
  152. package/src/table-of-contents/edit.js +19 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/cover/shared.js"],"names":["getBlobTypeByURL","isBlobURL","POSITION_CLASSNAMES","center","IMAGE_BACKGROUND_TYPE","VIDEO_BACKGROUND_TYPE","COVER_MIN_HEIGHT","COVER_MAX_HEIGHT","COVER_DEFAULT_HEIGHT","backgroundImageStyles","url","backgroundImage","ALLOWED_MEDIA_TYPES","dimRatioToClass","ratio","undefined","Math","round","attributesFromMedia","setAttributes","dimRatio","media","id","type","mediaType","media_type","alt","backgroundType","focalPoint","hasParallax","isContentPositionCenter","contentPosition","getPositionClassName","mediaPosition","x","y"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gBAAT,EAA2BC,SAA3B,QAA4C,iBAA5C;AAEA,MAAMC,mBAAmB,GAAG;AAC3B,cAAY,sBADe;AAE3B,gBAAc,wBAFa;AAG3B,eAAa,uBAHc;AAI3B,iBAAe,yBAJY;AAK3B,mBAAiB,2BALU;AAM3BC,EAAAA,MAAM,EAAE,2BANmB;AAO3B,kBAAgB,0BAPW;AAQ3B,iBAAe,yBARY;AAS3B,mBAAiB,2BATU;AAU3B,kBAAgB;AAVW,CAA5B;AAaA,OAAO,MAAMC,qBAAqB,GAAG,OAA9B;AACP,OAAO,MAAMC,qBAAqB,GAAG,OAA9B;AACP,OAAO,MAAMC,gBAAgB,GAAG,EAAzB;AACP,OAAO,MAAMC,gBAAgB,GAAG,IAAzB;AACP,OAAO,MAAMC,oBAAoB,GAAG,GAA7B;AACP,OAAO,SAASC,qBAAT,CAAgCC,GAAhC,EAAsC;AAC5C,SAAOA,GAAG,GAAG;AAAEC,IAAAA,eAAe,EAAG,OAAOD,GAAK;AAAhC,GAAH,GAA0C,EAApD;AACA;AACD,OAAO,MAAME,mBAAmB,GAAG,CAAE,OAAF,EAAW,OAAX,CAA5B;AAEP,OAAO,SAASC,eAAT,CAA0BC,KAA1B,EAAkC;AACxC,SAAOA,KAAK,KAAK,EAAV,IAAgB,CAAEA,KAAF,KAAYC,SAA5B,GACJ,IADI,GAEJ,wBAAwB,KAAKC,IAAI,CAACC,KAAL,CAAYH,KAAK,GAAG,EAApB,CAFhC;AAGA;AAED,OAAO,SAASI,mBAAT,CAA8BC,aAA9B,EAA6CC,QAA7C,EAAwD;AAC9D,SAASC,KAAF,IAAa;AACnB,QAAK,CAAEA,KAAF,IAAW,CAAEA,KAAK,CAACX,GAAxB,EAA8B;AAC7BS,MAAAA,aAAa,CAAE;AAAET,QAAAA,GAAG,EAAEK,SAAP;AAAkBO,QAAAA,EAAE,EAAEP;AAAtB,OAAF,CAAb;AACA;AACA;;AAED,QAAKd,SAAS,CAAEoB,KAAK,CAACX,GAAR,CAAd,EAA8B;AAC7BW,MAAAA,KAAK,CAACE,IAAN,GAAavB,gBAAgB,CAAEqB,KAAK,CAACX,GAAR,CAA7B;AACA;;AAED,QAAIc,SAAJ,CAVmB,CAWnB;;AACA,QAAKH,KAAK,CAACI,UAAX,EAAwB;AACvB,UAAKJ,KAAK,CAACI,UAAN,KAAqBrB,qBAA1B,EAAkD;AACjDoB,QAAAA,SAAS,GAAGpB,qBAAZ;AACA,OAFD,MAEO;AACN;AACA;AACAoB,QAAAA,SAAS,GAAGnB,qBAAZ;AACA;AACD,KARD,MAQO;AACN;AACA,UACCgB,KAAK,CAACE,IAAN,KAAenB,qBAAf,IACAiB,KAAK,CAACE,IAAN,KAAelB,qBAFhB,EAGE;AACD;AACA;;AACDmB,MAAAA,SAAS,GAAGH,KAAK,CAACE,IAAlB;AACA;;AAEDJ,IAAAA,aAAa,CAAE;AACdC,MAAAA,QAAQ,EAAEA,QAAQ,KAAK,GAAb,GAAmB,EAAnB,GAAwBA,QADpB;AAEdV,MAAAA,GAAG,EAAEW,KAAK,CAACX,GAFG;AAGdY,MAAAA,EAAE,EAAED,KAAK,CAACC,EAHI;AAIdI,MAAAA,GAAG,EAAEL,KAAF,aAAEA,KAAF,uBAAEA,KAAK,CAAEK,GAJE;AAKdC,MAAAA,cAAc,EAAEH,SALF;AAMd,UAAKA,SAAS,KAAKnB,qBAAd,GACF;AAAEuB,QAAAA,UAAU,EAAEb,SAAd;AAAyBc,QAAAA,WAAW,EAAEd;AAAtC,OADE,GAEF,EAFH;AANc,KAAF,CAAb;AAUA,GAzCD;AA0CA;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASe,uBAAT,CAAkCC,eAAlC,EAAoD;AAC1D,SACC,CAAEA,eAAF,IACAA,eAAe,KAAK,eADpB,IAEAA,eAAe,KAAK,QAHrB;AAKA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,oBAAT,CAA+BD,eAA/B,EAAiD;AACvD;AACD;AACA;AACC,MAAKD,uBAAuB,CAAEC,eAAF,CAA5B,EAAkD,OAAO,EAAP;AAElD,SAAO7B,mBAAmB,CAAE6B,eAAF,CAA1B;AACA;AAED,OAAO,SAASE,aAAT,OAAmC;AAAA,MAAX;AAAEC,IAAAA,CAAF;AAAKC,IAAAA;AAAL,GAAW;AACzC,SAAQ,GAAGnB,IAAI,CAACC,KAAL,CAAYiB,CAAC,GAAG,GAAhB,CAAuB,KAAKlB,IAAI,CAACC,KAAL,CAAYkB,CAAC,GAAG,GAAhB,CAAuB,GAA9D;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlobTypeByURL, isBlobURL } from '@wordpress/blob';\n\nconst POSITION_CLASSNAMES = {\n\t'top left': 'is-position-top-left',\n\t'top center': 'is-position-top-center',\n\t'top right': 'is-position-top-right',\n\t'center left': 'is-position-center-left',\n\t'center center': 'is-position-center-center',\n\tcenter: 'is-position-center-center',\n\t'center right': 'is-position-center-right',\n\t'bottom left': 'is-position-bottom-left',\n\t'bottom center': 'is-position-bottom-center',\n\t'bottom right': 'is-position-bottom-right',\n};\n\nexport const IMAGE_BACKGROUND_TYPE = 'image';\nexport const VIDEO_BACKGROUND_TYPE = 'video';\nexport const COVER_MIN_HEIGHT = 50;\nexport const COVER_MAX_HEIGHT = 1000;\nexport const COVER_DEFAULT_HEIGHT = 300;\nexport function backgroundImageStyles( url ) {\n\treturn url ? { backgroundImage: `url(${ url })` } : {};\n}\nexport const ALLOWED_MEDIA_TYPES = [ 'image', 'video' ];\n\nexport function dimRatioToClass( ratio ) {\n\treturn ratio === 50 || ! ratio === undefined\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n\nexport function attributesFromMedia( setAttributes, dimRatio ) {\n\treturn ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( { url: undefined, id: undefined } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tmedia.type = getBlobTypeByURL( media.url );\n\t\t}\n\n\t\tlet mediaType;\n\t\t// For media selections originated from a file upload.\n\t\tif ( media.media_type ) {\n\t\t\tif ( media.media_type === IMAGE_BACKGROUND_TYPE ) {\n\t\t\t\tmediaType = IMAGE_BACKGROUND_TYPE;\n\t\t\t} else {\n\t\t\t\t// only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t\t// Videos contain the media type of 'file' in the object returned from the rest api.\n\t\t\t\tmediaType = VIDEO_BACKGROUND_TYPE;\n\t\t\t}\n\t\t} else {\n\t\t\t// For media selections originated from existing files in the media library.\n\t\t\tif (\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE &&\n\t\t\t\tmedia.type !== VIDEO_BACKGROUND_TYPE\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tdimRatio: dimRatio === 100 ? 50 : dimRatio,\n\t\t\turl: media.url,\n\t\t\tid: media.id,\n\t\t\talt: media?.alt,\n\t\t\tbackgroundType: mediaType,\n\t\t\t...( mediaType === VIDEO_BACKGROUND_TYPE\n\t\t\t\t? { focalPoint: undefined, hasParallax: undefined }\n\t\t\t\t: {} ),\n\t\t} );\n\t};\n}\n\n/**\n * Checks of the contentPosition is the center (default) position.\n *\n * @param {string} contentPosition The current content position.\n * @return {boolean} Whether the contentPosition is center.\n */\nexport function isContentPositionCenter( contentPosition ) {\n\treturn (\n\t\t! contentPosition ||\n\t\tcontentPosition === 'center center' ||\n\t\tcontentPosition === 'center'\n\t);\n}\n\n/**\n * Retrieves the className for the current contentPosition.\n * The default position (center) will not have a className.\n *\n * @param {string} contentPosition The current content position.\n * @return {string} The className assigned to the contentPosition.\n */\nexport function getPositionClassName( contentPosition ) {\n\t/*\n\t * Only render a className if the contentPosition is not center (the default).\n\t */\n\tif ( isContentPositionCenter( contentPosition ) ) return '';\n\n\treturn POSITION_CLASSNAMES[ contentPosition ];\n}\n\nexport function mediaPosition( { x, y } ) {\n\treturn `${ Math.round( x * 100 ) }% ${ Math.round( y * 100 ) }%`;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/cover/shared.js"],"names":["getBlobTypeByURL","isBlobURL","POSITION_CLASSNAMES","center","IMAGE_BACKGROUND_TYPE","VIDEO_BACKGROUND_TYPE","COVER_MIN_HEIGHT","COVER_MAX_HEIGHT","COVER_DEFAULT_HEIGHT","DEFAULT_FOCAL_POINT","x","y","ALLOWED_MEDIA_TYPES","mediaPosition","Math","round","dimRatioToClass","ratio","undefined","attributesFromMedia","setAttributes","dimRatio","media","url","id","type","mediaType","media_type","alt","backgroundType","focalPoint","hasParallax","isContentPositionCenter","contentPosition","getPositionClassName"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlobTypeByURL, isBlobURL } from '@wordpress/blob';\n\nconst POSITION_CLASSNAMES = {\n\t'top left': 'is-position-top-left',\n\t'top center': 'is-position-top-center',\n\t'top right': 'is-position-top-right',\n\t'center left': 'is-position-center-left',\n\t'center center': 'is-position-center-center',\n\tcenter: 'is-position-center-center',\n\t'center right': 'is-position-center-right',\n\t'bottom left': 'is-position-bottom-left',\n\t'bottom center': 'is-position-bottom-center',\n\t'bottom right': 'is-position-bottom-right',\n};\n\nexport const IMAGE_BACKGROUND_TYPE = 'image';\nexport const VIDEO_BACKGROUND_TYPE = 'video';\nexport const COVER_MIN_HEIGHT = 50;\nexport const COVER_MAX_HEIGHT = 1000;\nexport const COVER_DEFAULT_HEIGHT = 300;\nexport const DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };\nexport const ALLOWED_MEDIA_TYPES = [ 'image', 'video' ];\n\nexport function mediaPosition( { x, y } = DEFAULT_FOCAL_POINT ) {\n\treturn `${ Math.round( x * 100 ) }% ${ Math.round( y * 100 ) }%`;\n}\n\nexport function dimRatioToClass( ratio ) {\n\treturn ratio === 50 || ! ratio === undefined\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n\nexport function attributesFromMedia( setAttributes, dimRatio ) {\n\treturn ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( { url: undefined, id: undefined } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tmedia.type = getBlobTypeByURL( media.url );\n\t\t}\n\n\t\tlet mediaType;\n\t\t// For media selections originated from a file upload.\n\t\tif ( media.media_type ) {\n\t\t\tif ( media.media_type === IMAGE_BACKGROUND_TYPE ) {\n\t\t\t\tmediaType = IMAGE_BACKGROUND_TYPE;\n\t\t\t} else {\n\t\t\t\t// only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t\t// Videos contain the media type of 'file' in the object returned from the rest api.\n\t\t\t\tmediaType = VIDEO_BACKGROUND_TYPE;\n\t\t\t}\n\t\t} else {\n\t\t\t// For media selections originated from existing files in the media library.\n\t\t\tif (\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE &&\n\t\t\t\tmedia.type !== VIDEO_BACKGROUND_TYPE\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tdimRatio: dimRatio === 100 ? 50 : dimRatio,\n\t\t\turl: media.url,\n\t\t\tid: media.id,\n\t\t\talt: media?.alt,\n\t\t\tbackgroundType: mediaType,\n\t\t\t...( mediaType === VIDEO_BACKGROUND_TYPE\n\t\t\t\t? { focalPoint: undefined, hasParallax: undefined }\n\t\t\t\t: {} ),\n\t\t} );\n\t};\n}\n\n/**\n * Checks of the contentPosition is the center (default) position.\n *\n * @param {string} contentPosition The current content position.\n * @return {boolean} Whether the contentPosition is center.\n */\nexport function isContentPositionCenter( contentPosition ) {\n\treturn (\n\t\t! contentPosition ||\n\t\tcontentPosition === 'center center' ||\n\t\tcontentPosition === 'center'\n\t);\n}\n\n/**\n * Retrieves the className for the current contentPosition.\n * The default position (center) will not have a className.\n *\n * @param {string} contentPosition The current content position.\n * @return {string} The className assigned to the contentPosition.\n */\nexport function getPositionClassName( contentPosition ) {\n\t/*\n\t * Only render a className if the contentPosition is not center (the default).\n\t */\n\tif ( isContentPositionCenter( contentPosition ) ) return '';\n\n\treturn POSITION_CLASSNAMES[ contentPosition ];\n}\n"]}
@@ -11,7 +11,7 @@ import classnames from 'classnames';
11
11
  import { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';
12
12
  import { __unstableGetAnimateClassName as getAnimateClassName, withNotices, ResizableBox, ToolbarButton } from '@wordpress/components';
13
13
  import { useSelect, useDispatch } from '@wordpress/data';
14
- import { BlockControls, BlockIcon, MediaPlaceholder, MediaReplaceFlow, RichText, useBlockProps, store as blockEditorStore } from '@wordpress/block-editor';
14
+ import { BlockControls, BlockIcon, MediaPlaceholder, MediaReplaceFlow, RichText, useBlockProps, store as blockEditorStore, __experimentalElementButtonClassName } from '@wordpress/block-editor';
15
15
  import { useEffect } from '@wordpress/element';
16
16
  import { useCopyToClipboard } from '@wordpress/compose';
17
17
  import { __, _x } from '@wordpress/i18n';
@@ -276,7 +276,7 @@ function FileEdit(_ref2) {
276
276
  tagName: "div" // Must be block-level or else cursor disappears.
277
277
  ,
278
278
  "aria-label": __('Download button text'),
279
- className: 'wp-block-file__button',
279
+ className: classnames('wp-block-file__button', __experimentalElementButtonClassName),
280
280
  value: downloadButtonText,
281
281
  withoutInteractiveFormatting: true,
282
282
  placeholder: __('Add text…'),
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/file/edit.js"],"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","__unstableGetAnimateClassName","getAnimateClassName","withNotices","ResizableBox","ToolbarButton","useSelect","useDispatch","BlockControls","BlockIcon","MediaPlaceholder","MediaReplaceFlow","RichText","useBlockProps","store","blockEditorStore","useEffect","useCopyToClipboard","__","_x","file","icon","coreStore","noticesStore","FileBlockInspector","browserSupportsPdfs","MIN_PREVIEW_HEIGHT","MAX_PREVIEW_HEIGHT","ClipboardToolbarButton","text","disabled","createNotice","ref","isDismissible","type","FileEdit","attributes","isSelected","setAttributes","noticeUI","noticeOperations","clientId","id","fileId","fileName","href","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","media","mediaUpload","select","undefined","getMedia","getSettings","toggleSelection","__unstableMarkNextChangeAsNotPersistent","filesList","onFileChange","newMedia","onSelectFile","onError","onUploadError","changeDownloadButtonText","url","isPdf","endsWith","title","message","removeAllNotices","createErrorNotice","changeLinkDestinationOption","newHref","changeOpenInNewWindow","newValue","changeShowDownloadButton","replace","changeDisplayPreview","handleOnResizeStop","event","direction","elt","delta","newHeight","parseInt","height","changePreviewHeight","Math","max","attachmentPage","link","blockProps","className","displayPreviewInEditor","instructions","openInNewWindow","top","right","bottom","left","topRight","bottomRight","bottomLeft","topLeft"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\twithNotices,\n\tResizableBox,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { __, _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport FileBlockInspector from './inspector';\nimport { browserSupportsPdfs } from './utils';\n\nexport const MIN_PREVIEW_HEIGHT = 200;\nexport const MAX_PREVIEW_HEIGHT = 2000;\n\nfunction ClipboardToolbarButton( { text, disabled } ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tcreateNotice( 'info', __( 'Copied URL to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tclassName=\"components-clipboard-toolbar-button\"\n\t\t\tref={ ref }\n\t\t\tdisabled={ disabled }\n\t\t>\n\t\t\t{ __( 'Copy URL' ) }\n\t\t</ToolbarButton>\n\t);\n}\n\nfunction FileEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tnoticeUI,\n\tnoticeOperations,\n\tclientId,\n} ) {\n\tconst {\n\t\tid,\n\t\tfileId,\n\t\tfileName,\n\t\thref,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\tconst { media, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\tmedia:\n\t\t\t\tid === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: select( coreStore ).getMedia( id ),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[ id ]\n\t);\n\n\tconst {\n\t\ttoggleSelection,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Upload a file drag-and-dropped into the editor.\n\t\tif ( isBlobURL( href ) ) {\n\t\t\tconst file = getBlobByURL( href );\n\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ newMedia ] ) => onSelectFile( newMedia ),\n\t\t\t\tonError: onUploadError,\n\t\t\t} );\n\n\t\t\trevokeBlobURL( href );\n\t\t}\n\n\t\tif ( downloadButtonText === undefined ) {\n\t\t\tchangeDownloadButtonText( _x( 'Download', 'button label' ) );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! fileId && href ) {\n\t\t\t// Add a unique fileId to each file block.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { fileId: `wp-block-file--media-${ clientId }` } );\n\t\t}\n\t}, [ href, fileId, clientId ] );\n\n\tfunction onSelectFile( newMedia ) {\n\t\tif ( newMedia && newMedia.url ) {\n\t\t\tconst isPdf = newMedia.url.endsWith( '.pdf' );\n\t\t\tsetAttributes( {\n\t\t\t\thref: newMedia.url,\n\t\t\t\tfileName: newMedia.title,\n\t\t\t\ttextLinkHref: newMedia.url,\n\t\t\t\tid: newMedia.id,\n\t\t\t\tdisplayPreview: isPdf ? true : undefined,\n\t\t\t\tpreviewHeight: isPdf ? 600 : undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tsetAttributes( { href: undefined } );\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t}\n\n\tfunction changeLinkDestinationOption( newHref ) {\n\t\t// Choose Media File or Attachment Page (when file is in Media Library).\n\t\tsetAttributes( { textLinkHref: newHref } );\n\t}\n\n\tfunction changeOpenInNewWindow( newValue ) {\n\t\tsetAttributes( {\n\t\t\ttextLinkTarget: newValue ? '_blank' : false,\n\t\t} );\n\t}\n\n\tfunction changeShowDownloadButton( newValue ) {\n\t\tsetAttributes( { showDownloadButton: newValue } );\n\t}\n\n\tfunction changeDownloadButtonText( newValue ) {\n\t\t// Remove anchor tags from button text content.\n\t\tsetAttributes( {\n\t\t\tdownloadButtonText: newValue.replace( /<\\/?a[^>]*>/g, '' ),\n\t\t} );\n\t}\n\n\tfunction changeDisplayPreview( newValue ) {\n\t\tsetAttributes( { displayPreview: newValue } );\n\t}\n\n\tfunction handleOnResizeStop( event, direction, elt, delta ) {\n\t\ttoggleSelection( true );\n\n\t\tconst newHeight = parseInt( previewHeight + delta.height, 10 );\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tfunction changePreviewHeight( newValue ) {\n\t\tconst newHeight = Math.max(\n\t\t\tparseInt( newValue, 10 ),\n\t\t\tMIN_PREVIEW_HEIGHT\n\t\t);\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tconst attachmentPage = media && media.link;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\tisBlobURL( href ) && getAnimateClassName( { type: 'loading' } ),\n\t\t\t{\n\t\t\t\t'is-transient': isBlobURL( href ),\n\t\t\t}\n\t\t),\n\t} );\n\n\tconst displayPreviewInEditor = browserSupportsPdfs() && displayPreview;\n\n\tif ( ! href ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'File' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload a file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tnotices={ noticeUI }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FileBlockInspector\n\t\t\t\threfs={ { href, textLinkHref, attachmentPage } }\n\t\t\t\t{ ...{\n\t\t\t\t\topenInNewWindow: !! textLinkTarget,\n\t\t\t\t\tshowDownloadButton,\n\t\t\t\t\tchangeLinkDestinationOption,\n\t\t\t\t\tchangeOpenInNewWindow,\n\t\t\t\t\tchangeShowDownloadButton,\n\t\t\t\t\tdisplayPreview,\n\t\t\t\t\tchangeDisplayPreview,\n\t\t\t\t\tpreviewHeight,\n\t\t\t\t\tchangePreviewHeight,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ href }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t\t<ClipboardToolbarButton\n\t\t\t\t\ttext={ href }\n\t\t\t\t\tdisabled={ isBlobURL( href ) }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ displayPreviewInEditor && (\n\t\t\t\t\t<ResizableBox\n\t\t\t\t\t\tsize={ { height: previewHeight } }\n\t\t\t\t\t\tminHeight={ MIN_PREVIEW_HEIGHT }\n\t\t\t\t\t\tmaxHeight={ MAX_PREVIEW_HEIGHT }\n\t\t\t\t\t\tminWidth=\"100%\"\n\t\t\t\t\t\tgrid={ [ 10, 10 ] }\n\t\t\t\t\t\tenable={ {\n\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\tright: false,\n\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResizeStart={ () => toggleSelection( false ) }\n\t\t\t\t\t\tonResizeStop={ handleOnResizeStop }\n\t\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__preview\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'Embed of the selected PDF file.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ ! isSelected && (\n\t\t\t\t\t\t\t<div className=\"wp-block-file__preview-overlay\" />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ResizableBox>\n\t\t\t\t) }\n\t\t\t\t<div className={ 'wp-block-file__content-wrapper' }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tvalue={ fileName }\n\t\t\t\t\t\tplaceholder={ __( 'Write file name…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\tsetAttributes( { fileName: text } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t/>\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'wp-block-file__button-richtext-wrapper'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ /* Using RichText here instead of PlainText so that it can be styled like a button. */ }\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"div\" // Must be block-level or else cursor disappears.\n\t\t\t\t\t\t\t\taria-label={ __( 'Download button text' ) }\n\t\t\t\t\t\t\t\tclassName={ 'wp-block-file__button' }\n\t\t\t\t\t\t\t\tvalue={ downloadButtonText }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add text…' ) }\n\t\t\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\t\t\tchangeDownloadButtonText( text )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default withNotices( FileEdit );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/file/edit.js"],"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","__unstableGetAnimateClassName","getAnimateClassName","withNotices","ResizableBox","ToolbarButton","useSelect","useDispatch","BlockControls","BlockIcon","MediaPlaceholder","MediaReplaceFlow","RichText","useBlockProps","store","blockEditorStore","__experimentalElementButtonClassName","useEffect","useCopyToClipboard","__","_x","file","icon","coreStore","noticesStore","FileBlockInspector","browserSupportsPdfs","MIN_PREVIEW_HEIGHT","MAX_PREVIEW_HEIGHT","ClipboardToolbarButton","text","disabled","createNotice","ref","isDismissible","type","FileEdit","attributes","isSelected","setAttributes","noticeUI","noticeOperations","clientId","id","fileId","fileName","href","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","media","mediaUpload","select","undefined","getMedia","getSettings","toggleSelection","__unstableMarkNextChangeAsNotPersistent","filesList","onFileChange","newMedia","onSelectFile","onError","onUploadError","changeDownloadButtonText","url","isPdf","endsWith","title","message","removeAllNotices","createErrorNotice","changeLinkDestinationOption","newHref","changeOpenInNewWindow","newValue","changeShowDownloadButton","replace","changeDisplayPreview","handleOnResizeStop","event","direction","elt","delta","newHeight","parseInt","height","changePreviewHeight","Math","max","attachmentPage","link","blockProps","className","displayPreviewInEditor","instructions","openInNewWindow","top","right","bottom","left","topRight","bottomRight","bottomLeft","topLeft"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\twithNotices,\n\tResizableBox,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalElementButtonClassName,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { __, _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport FileBlockInspector from './inspector';\nimport { browserSupportsPdfs } from './utils';\n\nexport const MIN_PREVIEW_HEIGHT = 200;\nexport const MAX_PREVIEW_HEIGHT = 2000;\n\nfunction ClipboardToolbarButton( { text, disabled } ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tcreateNotice( 'info', __( 'Copied URL to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tclassName=\"components-clipboard-toolbar-button\"\n\t\t\tref={ ref }\n\t\t\tdisabled={ disabled }\n\t\t>\n\t\t\t{ __( 'Copy URL' ) }\n\t\t</ToolbarButton>\n\t);\n}\n\nfunction FileEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tnoticeUI,\n\tnoticeOperations,\n\tclientId,\n} ) {\n\tconst {\n\t\tid,\n\t\tfileId,\n\t\tfileName,\n\t\thref,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\tconst { media, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\tmedia:\n\t\t\t\tid === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: select( coreStore ).getMedia( id ),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[ id ]\n\t);\n\n\tconst {\n\t\ttoggleSelection,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Upload a file drag-and-dropped into the editor.\n\t\tif ( isBlobURL( href ) ) {\n\t\t\tconst file = getBlobByURL( href );\n\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ newMedia ] ) => onSelectFile( newMedia ),\n\t\t\t\tonError: onUploadError,\n\t\t\t} );\n\n\t\t\trevokeBlobURL( href );\n\t\t}\n\n\t\tif ( downloadButtonText === undefined ) {\n\t\t\tchangeDownloadButtonText( _x( 'Download', 'button label' ) );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! fileId && href ) {\n\t\t\t// Add a unique fileId to each file block.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { fileId: `wp-block-file--media-${ clientId }` } );\n\t\t}\n\t}, [ href, fileId, clientId ] );\n\n\tfunction onSelectFile( newMedia ) {\n\t\tif ( newMedia && newMedia.url ) {\n\t\t\tconst isPdf = newMedia.url.endsWith( '.pdf' );\n\t\t\tsetAttributes( {\n\t\t\t\thref: newMedia.url,\n\t\t\t\tfileName: newMedia.title,\n\t\t\t\ttextLinkHref: newMedia.url,\n\t\t\t\tid: newMedia.id,\n\t\t\t\tdisplayPreview: isPdf ? true : undefined,\n\t\t\t\tpreviewHeight: isPdf ? 600 : undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tsetAttributes( { href: undefined } );\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t}\n\n\tfunction changeLinkDestinationOption( newHref ) {\n\t\t// Choose Media File or Attachment Page (when file is in Media Library).\n\t\tsetAttributes( { textLinkHref: newHref } );\n\t}\n\n\tfunction changeOpenInNewWindow( newValue ) {\n\t\tsetAttributes( {\n\t\t\ttextLinkTarget: newValue ? '_blank' : false,\n\t\t} );\n\t}\n\n\tfunction changeShowDownloadButton( newValue ) {\n\t\tsetAttributes( { showDownloadButton: newValue } );\n\t}\n\n\tfunction changeDownloadButtonText( newValue ) {\n\t\t// Remove anchor tags from button text content.\n\t\tsetAttributes( {\n\t\t\tdownloadButtonText: newValue.replace( /<\\/?a[^>]*>/g, '' ),\n\t\t} );\n\t}\n\n\tfunction changeDisplayPreview( newValue ) {\n\t\tsetAttributes( { displayPreview: newValue } );\n\t}\n\n\tfunction handleOnResizeStop( event, direction, elt, delta ) {\n\t\ttoggleSelection( true );\n\n\t\tconst newHeight = parseInt( previewHeight + delta.height, 10 );\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tfunction changePreviewHeight( newValue ) {\n\t\tconst newHeight = Math.max(\n\t\t\tparseInt( newValue, 10 ),\n\t\t\tMIN_PREVIEW_HEIGHT\n\t\t);\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tconst attachmentPage = media && media.link;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\tisBlobURL( href ) && getAnimateClassName( { type: 'loading' } ),\n\t\t\t{\n\t\t\t\t'is-transient': isBlobURL( href ),\n\t\t\t}\n\t\t),\n\t} );\n\n\tconst displayPreviewInEditor = browserSupportsPdfs() && displayPreview;\n\n\tif ( ! href ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'File' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload a file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tnotices={ noticeUI }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FileBlockInspector\n\t\t\t\threfs={ { href, textLinkHref, attachmentPage } }\n\t\t\t\t{ ...{\n\t\t\t\t\topenInNewWindow: !! textLinkTarget,\n\t\t\t\t\tshowDownloadButton,\n\t\t\t\t\tchangeLinkDestinationOption,\n\t\t\t\t\tchangeOpenInNewWindow,\n\t\t\t\t\tchangeShowDownloadButton,\n\t\t\t\t\tdisplayPreview,\n\t\t\t\t\tchangeDisplayPreview,\n\t\t\t\t\tpreviewHeight,\n\t\t\t\t\tchangePreviewHeight,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ href }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t\t<ClipboardToolbarButton\n\t\t\t\t\ttext={ href }\n\t\t\t\t\tdisabled={ isBlobURL( href ) }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ displayPreviewInEditor && (\n\t\t\t\t\t<ResizableBox\n\t\t\t\t\t\tsize={ { height: previewHeight } }\n\t\t\t\t\t\tminHeight={ MIN_PREVIEW_HEIGHT }\n\t\t\t\t\t\tmaxHeight={ MAX_PREVIEW_HEIGHT }\n\t\t\t\t\t\tminWidth=\"100%\"\n\t\t\t\t\t\tgrid={ [ 10, 10 ] }\n\t\t\t\t\t\tenable={ {\n\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\tright: false,\n\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResizeStart={ () => toggleSelection( false ) }\n\t\t\t\t\t\tonResizeStop={ handleOnResizeStop }\n\t\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__preview\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'Embed of the selected PDF file.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ ! isSelected && (\n\t\t\t\t\t\t\t<div className=\"wp-block-file__preview-overlay\" />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ResizableBox>\n\t\t\t\t) }\n\t\t\t\t<div className={ 'wp-block-file__content-wrapper' }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tvalue={ fileName }\n\t\t\t\t\t\tplaceholder={ __( 'Write file name…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\tsetAttributes( { fileName: text } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t/>\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'wp-block-file__button-richtext-wrapper'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ /* Using RichText here instead of PlainText so that it can be styled like a button. */ }\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"div\" // Must be block-level or else cursor disappears.\n\t\t\t\t\t\t\t\taria-label={ __( 'Download button text' ) }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t\t\t__experimentalElementButtonClassName\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ downloadButtonText }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add text…' ) }\n\t\t\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\t\t\tchangeDownloadButtonText( text )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default withNotices( FileEdit );\n"]}
@@ -1,9 +1,14 @@
1
1
  import { createElement, Fragment } from "@wordpress/element";
2
2
 
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import classnames from 'classnames';
3
7
  /**
4
8
  * WordPress dependencies
5
9
  */
6
- import { RichText, useBlockProps } from '@wordpress/block-editor';
10
+
11
+ import { RichText, useBlockProps, __experimentalElementButtonClassName } from '@wordpress/block-editor';
7
12
  import { __, sprintf } from '@wordpress/i18n';
8
13
  export default function save(_ref) {
9
14
  let {
@@ -45,7 +50,7 @@ export default function save(_ref) {
45
50
  value: fileName
46
51
  })), showDownloadButton && createElement("a", {
47
52
  href: href,
48
- className: "wp-block-file__button",
53
+ className: classnames('wp-block-file__button', __experimentalElementButtonClassName),
49
54
  download: true,
50
55
  "aria-describedby": describedById
51
56
  }, createElement(RichText.Content, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/file/save.js"],"names":["RichText","useBlockProps","__","sprintf","save","attributes","href","fileId","fileName","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","pdfEmbedLabel","isEmpty","hasFilename","describedById","undefined","width","height"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,EAAmBC,aAAnB,QAAwC,yBAAxC;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA,eAAe,SAASC,IAAT,OAAgC;AAAA,MAAjB;AAAEC,IAAAA;AAAF,GAAiB;AAC9C,QAAM;AACLC,IAAAA,IADK;AAELC,IAAAA,MAFK;AAGLC,IAAAA,QAHK;AAILC,IAAAA,YAJK;AAKLC,IAAAA,cALK;AAMLC,IAAAA,kBANK;AAOLC,IAAAA,kBAPK;AAQLC,IAAAA,cARK;AASLC,IAAAA;AATK,MAUFT,UAVJ;AAYA,QAAMU,aAAa,GAAGf,QAAQ,CAACgB,OAAT,CAAkBR,QAAlB,IACnBN,EAAE,CAAE,WAAF,CADiB,GAEnBC,OAAO;AACP;AACAD,EAAAA,EAAE,CAAE,cAAF,CAFK,EAGPM,QAHO,CAFV;AAQA,QAAMS,WAAW,GAAG,CAAEjB,QAAQ,CAACgB,OAAT,CAAkBR,QAAlB,CAAtB,CArB8C,CAuB9C;AACA;;AACA,QAAMU,aAAa,GAAGD,WAAW,GAAGV,MAAH,GAAYY,SAA7C;AAEA,SACCb,IAAI,IACH,qBAAUL,aAAa,CAACG,IAAd,EAAV,EACGS,cAAc,IACf,8BACC;AACC,IAAA,SAAS,EAAC,sBADX;AAEC,IAAA,IAAI,EAAGP,IAFR;AAGC,IAAA,IAAI,EAAC,iBAHN;AAIC,IAAA,KAAK,EAAG;AACPc,MAAAA,KAAK,EAAE,MADA;AAEPC,MAAAA,MAAM,EAAG,GAAGP,aAAe;AAFpB,KAJT;AAQC,kBAAaC;AARd,IADD,CAFF,EAeGE,WAAW,IACZ;AACC,IAAA,EAAE,EAAGC,aADN;AAEC,IAAA,IAAI,EAAGT,YAFR;AAGC,IAAA,MAAM,EAAGC,cAHV;AAIC,IAAA,GAAG,EACFA,cAAc,GAAG,qBAAH,GAA2BS;AAL3C,KAQC,cAAC,QAAD,CAAU,OAAV;AAAkB,IAAA,KAAK,EAAGX;AAA1B,IARD,CAhBF,EA2BGG,kBAAkB,IACnB;AACC,IAAA,IAAI,EAAGL,IADR;AAEC,IAAA,SAAS,EAAC,uBAFX;AAGC,IAAA,QAAQ,EAAG,IAHZ;AAIC,wBAAmBY;AAJpB,KAMC,cAAC,QAAD,CAAU,OAAV;AAAkB,IAAA,KAAK,EAAGN;AAA1B,IAND,CA5BF,CAFF;AA0CA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\thref,\n\t\tfileId,\n\t\tfileName,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\n\tconst pdfEmbedLabel = RichText.isEmpty( fileName )\n\t\t? __( 'PDF embed' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: filename. */\n\t\t\t\t__( 'Embed of %s.' ),\n\t\t\t\tfileName\n\t\t );\n\n\tconst hasFilename = ! RichText.isEmpty( fileName );\n\n\t// Only output an `aria-describedby` when the element it's referring to is\n\t// actually rendered.\n\tconst describedById = hasFilename ? fileId : undefined;\n\n\treturn (\n\t\thref && (\n\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t{ displayPreview && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__embed\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\theight: `${ previewHeight }px`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-label={ pdfEmbedLabel }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ hasFilename && (\n\t\t\t\t\t<a\n\t\t\t\t\t\tid={ describedById }\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t\ttarget={ textLinkTarget }\n\t\t\t\t\t\trel={\n\t\t\t\t\t\t\ttextLinkTarget ? 'noreferrer noopener' : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichText.Content value={ fileName } />\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\tclassName=\"wp-block-file__button\"\n\t\t\t\t\t\tdownload={ true }\n\t\t\t\t\t\taria-describedby={ describedById }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichText.Content value={ downloadButtonText } />\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t)\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/file/save.js"],"names":["classnames","RichText","useBlockProps","__experimentalElementButtonClassName","__","sprintf","save","attributes","href","fileId","fileName","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","pdfEmbedLabel","isEmpty","hasFilename","describedById","undefined","width","height"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SACCC,QADD,EAECC,aAFD,EAGCC,oCAHD,QAIO,yBAJP;AAKA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA,eAAe,SAASC,IAAT,OAAgC;AAAA,MAAjB;AAAEC,IAAAA;AAAF,GAAiB;AAC9C,QAAM;AACLC,IAAAA,IADK;AAELC,IAAAA,MAFK;AAGLC,IAAAA,QAHK;AAILC,IAAAA,YAJK;AAKLC,IAAAA,cALK;AAMLC,IAAAA,kBANK;AAOLC,IAAAA,kBAPK;AAQLC,IAAAA,cARK;AASLC,IAAAA;AATK,MAUFT,UAVJ;AAYA,QAAMU,aAAa,GAAGhB,QAAQ,CAACiB,OAAT,CAAkBR,QAAlB,IACnBN,EAAE,CAAE,WAAF,CADiB,GAEnBC,OAAO;AACP;AACAD,EAAAA,EAAE,CAAE,cAAF,CAFK,EAGPM,QAHO,CAFV;AAQA,QAAMS,WAAW,GAAG,CAAElB,QAAQ,CAACiB,OAAT,CAAkBR,QAAlB,CAAtB,CArB8C,CAuB9C;AACA;;AACA,QAAMU,aAAa,GAAGD,WAAW,GAAGV,MAAH,GAAYY,SAA7C;AAEA,SACCb,IAAI,IACH,qBAAUN,aAAa,CAACI,IAAd,EAAV,EACGS,cAAc,IACf,8BACC;AACC,IAAA,SAAS,EAAC,sBADX;AAEC,IAAA,IAAI,EAAGP,IAFR;AAGC,IAAA,IAAI,EAAC,iBAHN;AAIC,IAAA,KAAK,EAAG;AACPc,MAAAA,KAAK,EAAE,MADA;AAEPC,MAAAA,MAAM,EAAG,GAAGP,aAAe;AAFpB,KAJT;AAQC,kBAAaC;AARd,IADD,CAFF,EAeGE,WAAW,IACZ;AACC,IAAA,EAAE,EAAGC,aADN;AAEC,IAAA,IAAI,EAAGT,YAFR;AAGC,IAAA,MAAM,EAAGC,cAHV;AAIC,IAAA,GAAG,EACFA,cAAc,GAAG,qBAAH,GAA2BS;AAL3C,KAQC,cAAC,QAAD,CAAU,OAAV;AAAkB,IAAA,KAAK,EAAGX;AAA1B,IARD,CAhBF,EA2BGG,kBAAkB,IACnB;AACC,IAAA,IAAI,EAAGL,IADR;AAEC,IAAA,SAAS,EAAGR,UAAU,CACrB,uBADqB,EAErBG,oCAFqB,CAFvB;AAMC,IAAA,QAAQ,EAAG,IANZ;AAOC,wBAAmBiB;AAPpB,KASC,cAAC,QAAD,CAAU,OAAV;AAAkB,IAAA,KAAK,EAAGN;AAA1B,IATD,CA5BF,CAFF;AA6CA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalElementButtonClassName,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\thref,\n\t\tfileId,\n\t\tfileName,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\n\tconst pdfEmbedLabel = RichText.isEmpty( fileName )\n\t\t? __( 'PDF embed' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: filename. */\n\t\t\t\t__( 'Embed of %s.' ),\n\t\t\t\tfileName\n\t\t );\n\n\tconst hasFilename = ! RichText.isEmpty( fileName );\n\n\t// Only output an `aria-describedby` when the element it's referring to is\n\t// actually rendered.\n\tconst describedById = hasFilename ? fileId : undefined;\n\n\treturn (\n\t\thref && (\n\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t{ displayPreview && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__embed\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\theight: `${ previewHeight }px`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-label={ pdfEmbedLabel }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ hasFilename && (\n\t\t\t\t\t<a\n\t\t\t\t\t\tid={ describedById }\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t\ttarget={ textLinkTarget }\n\t\t\t\t\t\trel={\n\t\t\t\t\t\t\ttextLinkTarget ? 'noreferrer noopener' : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichText.Content value={ fileName } />\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t__experimentalElementButtonClassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdownload={ true }\n\t\t\t\t\t\taria-describedby={ describedById }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichText.Content value={ downloadButtonText } />\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t)\n\t);\n}\n"]}
@@ -13,10 +13,20 @@ export default function GapStyles(_ref) {
13
13
  const styleElement = useContext(BlockList.__unstableElementContext); // --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default
14
14
  // gap on the gallery.
15
15
 
16
- const gapValue = blockGap ? blockGap : `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
17
- const gap = `#block-${clientId} {
18
- --wp--style--unstable-gallery-gap: ${gapValue};
19
- gap: ${gapValue}
16
+ const fallbackValue = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
17
+ let gapValue = fallbackValue;
18
+ let column = fallbackValue;
19
+ let row; // Check for the possibility of split block gap values. See: https://github.com/WordPress/gutenberg/pull/37736
20
+
21
+ if (!!blockGap) {
22
+ row = typeof blockGap === 'string' ? blockGap : (blockGap === null || blockGap === void 0 ? void 0 : blockGap.top) || fallbackValue;
23
+ column = typeof blockGap === 'string' ? blockGap : (blockGap === null || blockGap === void 0 ? void 0 : blockGap.left) || fallbackValue;
24
+ gapValue = row === column ? row : `${row} ${column}`;
25
+ }
26
+
27
+ const gap = `#block-${clientId} {
28
+ --wp--style--unstable-gallery-gap: ${column};
29
+ gap: ${gapValue}
20
30
  }`;
21
31
 
22
32
  const GapStyle = () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/gallery/gap-styles.js"],"names":["BlockList","useContext","createPortal","GapStyles","blockGap","clientId","styleElement","__unstableElementContext","gapValue","gap","GapStyle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,yBAA1B;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,oBAAzC;AAEA,eAAe,SAASC,SAAT,OAA6C;AAAA,MAAzB;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAyB;AAC3D,QAAMC,YAAY,GAAGL,UAAU,CAAED,SAAS,CAACO,wBAAZ,CAA/B,CAD2D,CAE3D;AACA;;AACA,QAAMC,QAAQ,GAAGJ,QAAQ,GACtBA,QADsB,GAErB,oHAFJ;AAGA,QAAMK,GAAG,GAAI,UAAUJ,QAAU;AAClC,uCAAwCG,QAAU;AAClD,SAAUA,QAAU;AACpB,GAHC;;AAKA,QAAME,QAAQ,GAAG,MAAM;AACtB,WAAO,6BAASD,GAAT,CAAP;AACA,GAFD;;AAIA,SAAOA,GAAG,IAAIH,YAAP,GACJJ,YAAY,CAAE,cAAC,QAAD,OAAF,EAAgBI,YAAhB,CADR,GAEJ,IAFH;AAGA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BlockList } from '@wordpress/block-editor';\nimport { useContext, createPortal } from '@wordpress/element';\n\nexport default function GapStyles( { blockGap, clientId } ) {\n\tconst styleElement = useContext( BlockList.__unstableElementContext );\n\t// --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default\n\t// gap on the gallery.\n\tconst gapValue = blockGap\n\t\t? blockGap\n\t\t: `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;\n\tconst gap = `#block-${ clientId } { \n\t\t--wp--style--unstable-gallery-gap: ${ gapValue };\n\t\tgap: ${ gapValue } \n\t}`;\n\n\tconst GapStyle = () => {\n\t\treturn <style>{ gap }</style>;\n\t};\n\n\treturn gap && styleElement\n\t\t? createPortal( <GapStyle />, styleElement )\n\t\t: null;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/gallery/gap-styles.js"],"names":["BlockList","useContext","createPortal","GapStyles","blockGap","clientId","styleElement","__unstableElementContext","fallbackValue","gapValue","column","row","top","left","gap","GapStyle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,yBAA1B;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,oBAAzC;AAEA,eAAe,SAASC,SAAT,OAA6C;AAAA,MAAzB;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAyB;AAC3D,QAAMC,YAAY,GAAGL,UAAU,CAAED,SAAS,CAACO,wBAAZ,CAA/B,CAD2D,CAE3D;AACA;;AACA,QAAMC,aAAa,GAAI,oHAAvB;AACA,MAAIC,QAAQ,GAAGD,aAAf;AACA,MAAIE,MAAM,GAAGF,aAAb;AACA,MAAIG,GAAJ,CAP2D,CAS3D;;AACA,MAAK,CAAC,CAAEP,QAAR,EAAmB;AAClBO,IAAAA,GAAG,GACF,OAAOP,QAAP,KAAoB,QAApB,GACGA,QADH,GAEG,CAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEQ,GAAV,KAAiBJ,aAHrB;AAIAE,IAAAA,MAAM,GACL,OAAON,QAAP,KAAoB,QAApB,GACGA,QADH,GAEG,CAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAES,IAAV,KAAkBL,aAHtB;AAIAC,IAAAA,QAAQ,GAAGE,GAAG,KAAKD,MAAR,GAAiBC,GAAjB,GAAwB,GAAGA,GAAK,IAAID,MAAQ,EAAvD;AACA;;AAED,QAAMI,GAAG,GAAI,UAAUT,QAAU;AAClC,uCAAwCK,MAAQ;AAChD,SAAUD,QAAU;AACpB,GAHC;;AAKA,QAAMM,QAAQ,GAAG,MAAM;AACtB,WAAO,6BAASD,GAAT,CAAP;AACA,GAFD;;AAIA,SAAOA,GAAG,IAAIR,YAAP,GACJJ,YAAY,CAAE,cAAC,QAAD,OAAF,EAAgBI,YAAhB,CADR,GAEJ,IAFH;AAGA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BlockList } from '@wordpress/block-editor';\nimport { useContext, createPortal } from '@wordpress/element';\n\nexport default function GapStyles( { blockGap, clientId } ) {\n\tconst styleElement = useContext( BlockList.__unstableElementContext );\n\t// --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default\n\t// gap on the gallery.\n\tconst fallbackValue = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;\n\tlet gapValue = fallbackValue;\n\tlet column = fallbackValue;\n\tlet row;\n\n\t// Check for the possibility of split block gap values. See: https://github.com/WordPress/gutenberg/pull/37736\n\tif ( !! blockGap ) {\n\t\trow =\n\t\t\ttypeof blockGap === 'string'\n\t\t\t\t? blockGap\n\t\t\t\t: blockGap?.top || fallbackValue;\n\t\tcolumn =\n\t\t\ttypeof blockGap === 'string'\n\t\t\t\t? blockGap\n\t\t\t\t: blockGap?.left || fallbackValue;\n\t\tgapValue = row === column ? row : `${ row } ${ column }`;\n\t}\n\n\tconst gap = `#block-${ clientId } {\n\t\t--wp--style--unstable-gallery-gap: ${ column };\n\t\tgap: ${ gapValue }\n\t}`;\n\n\tconst GapStyle = () => {\n\t\treturn <style>{ gap }</style>;\n\t};\n\n\treturn gap && styleElement\n\t\t? createPortal( <GapStyle />, styleElement )\n\t\t: null;\n}\n"]}
@@ -120,7 +120,7 @@ const metadata = {
120
120
  html: false,
121
121
  units: ["px", "em", "rem", "vh", "vw"],
122
122
  spacing: {
123
- blockGap: true,
123
+ blockGap: ["horizontal", "vertical"],
124
124
  __experimentalSkipSerialization: ["blockGap"],
125
125
  __experimentalDefaultControls: {
126
126
  blockGap: true
@@ -14,7 +14,7 @@ import { withNotices } from '@wordpress/components';
14
14
  import { useSelect } from '@wordpress/data';
15
15
  import { BlockAlignmentControl, BlockControls, BlockIcon, MediaPlaceholder, useBlockProps, store as blockEditorStore } from '@wordpress/block-editor';
16
16
  import { useEffect, useRef, useState } from '@wordpress/element';
17
- import { __, sprintf } from '@wordpress/i18n';
17
+ import { __ } from '@wordpress/i18n';
18
18
  import { image as icon } from '@wordpress/icons';
19
19
  /**
20
20
  * Internal dependencies
@@ -67,23 +67,7 @@ export const isExternalImage = (id, url) => url && !id && !isBlobURL(url);
67
67
  function hasDefaultSize(image, defaultSize) {
68
68
  return has(image, ['sizes', defaultSize, 'url']) || has(image, ['media_details', 'sizes', defaultSize, 'source_url']);
69
69
  }
70
- /**
71
- * Checks if a media attachment object has been "destroyed",
72
- * that is, removed from the media library. The core Media Library
73
- * adds a `destroyed` property to a deleted attachment object in the media collection.
74
- *
75
- * @param {number} id The attachment id.
76
- *
77
- * @return {boolean} Whether the image has been destroyed.
78
- */
79
-
80
-
81
- export function isMediaDestroyed(id) {
82
- var _window, _window$wp, _window$wp$media;
83
70
 
84
- const attachment = ((_window = window) === null || _window === void 0 ? void 0 : (_window$wp = _window.wp) === null || _window$wp === void 0 ? void 0 : (_window$wp$media = _window$wp.media) === null || _window$wp$media === void 0 ? void 0 : _window$wp$media.attachment(id)) || {};
85
- return attachment.destroyed;
86
- }
87
71
  export function ImageEdit(_ref) {
88
72
  let {
89
73
  attributes,
@@ -125,39 +109,7 @@ export function ImageEdit(_ref) {
125
109
  getSettings
126
110
  } = select(blockEditorStore);
127
111
  return pick(getSettings(), ['imageDefaultSize', 'mediaUpload']);
128
- }, []); // A callback passed to MediaUpload,
129
- // fired when the media modal closes.
130
-
131
- function onCloseModal() {
132
- if (isMediaDestroyed(attributes === null || attributes === void 0 ? void 0 : attributes.id)) {
133
- setAttributes({
134
- url: undefined,
135
- id: undefined
136
- });
137
- }
138
- }
139
- /*
140
- Runs an error callback if the image does not load.
141
- If the error callback is triggered, we infer that that image
142
- has been deleted.
143
- */
144
-
145
-
146
- function onImageError() {
147
- let isReplaced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
148
- noticeOperations.removeAllNotices();
149
- noticeOperations.createErrorNotice(sprintf(
150
- /* translators: %s url or missing image */
151
- __('Error loading image: %s'), url)); // If the image block was not replaced with an embed,
152
- // clear the attributes and trigger the placeholder.
153
-
154
- if (!isReplaced) {
155
- setAttributes({
156
- url: undefined,
157
- id: undefined
158
- });
159
- }
160
- }
112
+ }, []);
161
113
 
162
114
  function onUploadError(message) {
163
115
  noticeOperations.removeAllNotices();
@@ -171,7 +123,7 @@ export function ImageEdit(_ref) {
171
123
  }
172
124
 
173
125
  function onSelectImage(media) {
174
- var _window2, _window2$wp, _window2$wp$media, _window2$wp$media$vie, _window2$wp$media$vie2, _window2$wp$media$vie3;
126
+ var _window, _window$wp, _window$wp$media, _window$wp$media$view, _window$wp$media$view2, _window$wp$media$view3;
175
127
 
176
128
  if (!media || !media.url) {
177
129
  setAttributes({
@@ -222,7 +174,7 @@ export function ImageEdit(_ref) {
222
174
  // Use the WordPress option to determine the proper default.
223
175
  // The constants used in Gutenberg do not match WP options so a little more complicated than ideal.
224
176
  // TODO: fix this in a follow up PR, requires updating media-text and ui component.
225
- switch (((_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$wp = _window2.wp) === null || _window2$wp === void 0 ? void 0 : (_window2$wp$media = _window2$wp.media) === null || _window2$wp$media === void 0 ? void 0 : (_window2$wp$media$vie = _window2$wp$media.view) === null || _window2$wp$media$vie === void 0 ? void 0 : (_window2$wp$media$vie2 = _window2$wp$media$vie.settings) === null || _window2$wp$media$vie2 === void 0 ? void 0 : (_window2$wp$media$vie3 = _window2$wp$media$vie2.defaultProps) === null || _window2$wp$media$vie3 === void 0 ? void 0 : _window2$wp$media$vie3.link) || LINK_DESTINATION_NONE) {
177
+ switch (((_window = window) === null || _window === void 0 ? void 0 : (_window$wp = _window.wp) === null || _window$wp === void 0 ? void 0 : (_window$wp$media = _window$wp.media) === null || _window$wp$media === void 0 ? void 0 : (_window$wp$media$view = _window$wp$media.view) === null || _window$wp$media$view === void 0 ? void 0 : (_window$wp$media$view2 = _window$wp$media$view.settings) === null || _window$wp$media$view2 === void 0 ? void 0 : (_window$wp$media$view3 = _window$wp$media$view2.defaultProps) === null || _window$wp$media$view3 === void 0 ? void 0 : _window$wp$media$view3.link) || LINK_DESTINATION_NONE) {
226
178
  case 'file':
227
179
  case LINK_DESTINATION_MEDIA:
228
180
  linkDestination = LINK_DESTINATION_MEDIA;
@@ -348,9 +300,7 @@ export function ImageEdit(_ref) {
348
300
  onUploadError: onUploadError,
349
301
  containerRef: ref,
350
302
  context: context,
351
- clientId: clientId,
352
- onCloseModal: onCloseModal,
353
- onImageLoadError: onImageError
303
+ clientId: clientId
354
304
  }), !url && createElement(BlockControls, {
355
305
  group: "block"
356
306
  }, createElement(BlockAlignmentControl, {
@@ -364,7 +314,6 @@ export function ImageEdit(_ref) {
364
314
  onSelectURL: onSelectURL,
365
315
  notices: noticeUI,
366
316
  onError: onUploadError,
367
- onClose: onCloseModal,
368
317
  accept: "image/*",
369
318
  allowedTypes: ALLOWED_MEDIA_TYPES,
370
319
  value: {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/image/edit.js"],"names":["classnames","get","has","omit","pick","getBlobByURL","isBlobURL","revokeBlobURL","withNotices","useSelect","BlockAlignmentControl","BlockControls","BlockIcon","MediaPlaceholder","useBlockProps","store","blockEditorStore","useEffect","useRef","useState","__","sprintf","image","icon","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","url","isTemporaryImage","id","isExternalImage","hasDefaultSize","defaultSize","isMediaDestroyed","attachment","window","wp","media","destroyed","ImageEdit","attributes","setAttributes","isSelected","className","noticeUI","insertBlocksAfter","noticeOperations","onReplace","context","clientId","alt","caption","align","width","height","sizeSlug","temporaryURL","setTemporaryURL","altRef","current","captionRef","ref","imageDefaultSize","mediaUpload","select","getSettings","onCloseModal","undefined","onImageError","isReplaced","removeAllNotices","createErrorNotice","onUploadError","message","src","onSelectImage","title","mediaAttributes","additionalAttributes","linkDestination","view","settings","defaultProps","link","href","onSelectURL","newURL","updateAlignment","nextAlign","extraUpdatedAttributes","includes","isTemp","file","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","classes","blockProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get, has, omit, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { withNotices } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockAlignmentControl,\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = pick( image, [ 'alt', 'id', 'link', 'caption' ] );\n\timageProps.url =\n\t\tget( image, [ 'sizes', size, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', size, 'source_url' ] ) ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated default image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} defaultSize\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasDefaultSize( image, defaultSize ) {\n\treturn (\n\t\thas( image, [ 'sizes', defaultSize, 'url' ] ) ||\n\t\thas( image, [ 'media_details', 'sizes', defaultSize, 'source_url' ] )\n\t);\n}\n\n/**\n * Checks if a media attachment object has been \"destroyed\",\n * that is, removed from the media library. The core Media Library\n * adds a `destroyed` property to a deleted attachment object in the media collection.\n *\n * @param {number} id The attachment id.\n *\n * @return {boolean} Whether the image has been destroyed.\n */\nexport function isMediaDestroyed( id ) {\n\tconst attachment = window?.wp?.media?.attachment( id ) || {};\n\treturn attachment.destroyed;\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tnoticeUI,\n\tinsertBlocksAfter,\n\tnoticeOperations,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn pick( getSettings(), [ 'imageDefaultSize', 'mediaUpload' ] );\n\t}, [] );\n\n\t// A callback passed to MediaUpload,\n\t// fired when the media modal closes.\n\tfunction onCloseModal() {\n\t\tif ( isMediaDestroyed( attributes?.id ) ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\tid: undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\t/*\n\t\t Runs an error callback if the image does not load.\n\t\t If the error callback is triggered, we infer that that image\n\t\t has been deleted.\n\t*/\n\tfunction onImageError( isReplaced = false ) {\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s url or missing image */\n\t\t\t\t__( 'Error loading image: %s' ),\n\t\t\t\turl\n\t\t\t)\n\t\t);\n\t\t// If the image block was not replaced with an embed,\n\t\t// clear the attributes and trigger the placeholder.\n\t\tif ( ! isReplaced ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\tid: undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, imageDefaultSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! get( mediaAttributes, [ 'caption' ] ) ) {\n\t\t\tmediaAttributes = omit( mediaAttributes, [ 'caption' ] );\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\t// Fallback to size \"full\" if there's no default image size.\n\t\t\t\t// It means the image is smaller, and the block will use a full-size URL.\n\t\t\t\tsizeSlug: hasDefaultSize( media, imageDefaultSize )\n\t\t\t\t\t? imageDefaultSize\n\t\t\t\t\t: 'full',\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Image Size\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t{ ( temporaryURL || url ) && (\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontainerRef={ ref }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tonCloseModal={ onCloseModal }\n\t\t\t\t\tonImageLoadError={ onImageError }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! url && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tnotices={ noticeUI }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonClose={ onCloseModal }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default withNotices( ImageEdit );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/image/edit.js"],"names":["classnames","get","has","omit","pick","getBlobByURL","isBlobURL","revokeBlobURL","withNotices","useSelect","BlockAlignmentControl","BlockControls","BlockIcon","MediaPlaceholder","useBlockProps","store","blockEditorStore","useEffect","useRef","useState","__","image","icon","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","url","isTemporaryImage","id","isExternalImage","hasDefaultSize","defaultSize","ImageEdit","attributes","setAttributes","isSelected","className","noticeUI","insertBlocksAfter","noticeOperations","onReplace","context","clientId","alt","caption","align","width","height","sizeSlug","temporaryURL","setTemporaryURL","altRef","current","captionRef","ref","imageDefaultSize","mediaUpload","select","getSettings","onUploadError","message","removeAllNotices","createErrorNotice","src","undefined","onSelectImage","media","title","mediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","href","onSelectURL","newURL","updateAlignment","nextAlign","extraUpdatedAttributes","includes","isTemp","file","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","classes","blockProps"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AACA,SAASC,GAAT,EAAcC,GAAd,EAAmBC,IAAnB,EAAyBC,IAAzB,QAAqC,QAArC;AAEA;AACA;AACA;;AACA,SAASC,YAAT,EAAuBC,SAAvB,EAAkCC,aAAlC,QAAuD,iBAAvD;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SACCC,qBADD,EAECC,aAFD,EAGCC,SAHD,EAICC,gBAJD,EAKCC,aALD,EAMCC,KAAK,IAAIC,gBANV,QAOO,yBAPP;AAQA,SAASC,SAAT,EAAoBC,MAApB,EAA4BC,QAA5B,QAA4C,oBAA5C;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,KAAK,IAAIC,IAAlB,QAA8B,kBAA9B;AAEA;AACA;AACA;;AACA,OAAOC,KAAP,MAAkB,SAAlB;AAEA;AACA;AACA;;AACA,SACCC,2BADD,EAECC,uBAFD,EAGCC,sBAHD,EAICC,qBAJD,EAKCC,mBALD,QAMO,aANP;AAQA,OAAO,MAAMC,sBAAsB,GAAG,CAAER,KAAF,EAASS,IAAT,KAAmB;AACxD,QAAMC,UAAU,GAAG3B,IAAI,CAAEiB,KAAF,EAAS,CAAE,KAAF,EAAS,IAAT,EAAe,MAAf,EAAuB,SAAvB,CAAT,CAAvB;AACAU,EAAAA,UAAU,CAACC,GAAX,GACC/B,GAAG,CAAEoB,KAAF,EAAS,CAAE,OAAF,EAAWS,IAAX,EAAiB,KAAjB,CAAT,CAAH,IACA7B,GAAG,CAAEoB,KAAF,EAAS,CAAE,eAAF,EAAmB,OAAnB,EAA4BS,IAA5B,EAAkC,YAAlC,CAAT,CADH,IAEAT,KAAK,CAACW,GAHP;AAIA,SAAOD,UAAP;AACA,CAPM;AASP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAME,gBAAgB,GAAG,CAAEC,EAAF,EAAMF,GAAN,KAAe,CAAEE,EAAF,IAAQ5B,SAAS,CAAE0B,GAAF,CAAzD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,MAAMG,eAAe,GAAG,CAAED,EAAF,EAAMF,GAAN,KAAeA,GAAG,IAAI,CAAEE,EAAT,IAAe,CAAE5B,SAAS,CAAE0B,GAAF,CAAjE;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASI,cAAT,CAAyBf,KAAzB,EAAgCgB,WAAhC,EAA8C;AAC7C,SACCnC,GAAG,CAAEmB,KAAF,EAAS,CAAE,OAAF,EAAWgB,WAAX,EAAwB,KAAxB,CAAT,CAAH,IACAnC,GAAG,CAAEmB,KAAF,EAAS,CAAE,eAAF,EAAmB,OAAnB,EAA4BgB,WAA5B,EAAyC,YAAzC,CAAT,CAFJ;AAIA;;AAED,OAAO,SAASC,SAAT,OAWH;AAAA,MAXuB;AAC1BC,IAAAA,UAD0B;AAE1BC,IAAAA,aAF0B;AAG1BC,IAAAA,UAH0B;AAI1BC,IAAAA,SAJ0B;AAK1BC,IAAAA,QAL0B;AAM1BC,IAAAA,iBAN0B;AAO1BC,IAAAA,gBAP0B;AAQ1BC,IAAAA,SAR0B;AAS1BC,IAAAA,OAT0B;AAU1BC,IAAAA;AAV0B,GAWvB;AACH,QAAM;AACLhB,IAAAA,GAAG,GAAG,EADD;AAELiB,IAAAA,GAFK;AAGLC,IAAAA,OAHK;AAILC,IAAAA,KAJK;AAKLjB,IAAAA,EALK;AAMLkB,IAAAA,KANK;AAOLC,IAAAA,MAPK;AAQLC,IAAAA;AARK,MASFf,UATJ;AAUA,QAAM,CAAEgB,YAAF,EAAgBC,eAAhB,IAAoCrC,QAAQ,EAAlD;AAEA,QAAMsC,MAAM,GAAGvC,MAAM,EAArB;AACAD,EAAAA,SAAS,CAAE,MAAM;AAChBwC,IAAAA,MAAM,CAACC,OAAP,GAAiBT,GAAjB;AACA,GAFQ,EAEN,CAAEA,GAAF,CAFM,CAAT;AAIA,QAAMU,UAAU,GAAGzC,MAAM,EAAzB;AACAD,EAAAA,SAAS,CAAE,MAAM;AAChB0C,IAAAA,UAAU,CAACD,OAAX,GAAqBR,OAArB;AACA,GAFQ,EAEN,CAAEA,OAAF,CAFM,CAAT;AAIA,QAAMU,GAAG,GAAG1C,MAAM,EAAlB;AACA,QAAM;AAAE2C,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAAoCrD,SAAS,CAAIsD,MAAF,IAAc;AAClE,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAE/C,gBAAF,CAA9B;AACA,WAAOZ,IAAI,CAAE4D,WAAW,EAAb,EAAiB,CAAE,kBAAF,EAAsB,aAAtB,CAAjB,CAAX;AACA,GAHkD,EAGhD,EAHgD,CAAnD;;AAKA,WAASC,aAAT,CAAwBC,OAAxB,EAAkC;AACjCrB,IAAAA,gBAAgB,CAACsB,gBAAjB;AACAtB,IAAAA,gBAAgB,CAACuB,iBAAjB,CAAoCF,OAApC;AACA1B,IAAAA,aAAa,CAAE;AACd6B,MAAAA,GAAG,EAAEC,SADS;AAEdpC,MAAAA,EAAE,EAAEoC,SAFU;AAGdtC,MAAAA,GAAG,EAAEsC;AAHS,KAAF,CAAb;AAKAd,IAAAA,eAAe,CAAEc,SAAF,CAAf;AACA;;AAED,WAASC,aAAT,CAAwBC,KAAxB,EAAgC;AAAA;;AAC/B,QAAK,CAAEA,KAAF,IAAW,CAAEA,KAAK,CAACxC,GAAxB,EAA8B;AAC7BQ,MAAAA,aAAa,CAAE;AACdR,QAAAA,GAAG,EAAEsC,SADS;AAEdrB,QAAAA,GAAG,EAAEqB,SAFS;AAGdpC,QAAAA,EAAE,EAAEoC,SAHU;AAIdG,QAAAA,KAAK,EAAEH,SAJO;AAKdpB,QAAAA,OAAO,EAAEoB;AALK,OAAF,CAAb;AAQA;AACA;;AAED,QAAKhE,SAAS,CAAEkE,KAAK,CAACxC,GAAR,CAAd,EAA8B;AAC7BwB,MAAAA,eAAe,CAAEgB,KAAK,CAACxC,GAAR,CAAf;AACA;AACA;;AAEDwB,IAAAA,eAAe;AAEf,QAAIkB,eAAe,GAAG7C,sBAAsB,CAAE2C,KAAF,EAASX,gBAAT,CAA5C,CApB+B,CAsB/B;AACA;;AACA,QAAKF,UAAU,CAACD,OAAX,IAAsB,CAAEzD,GAAG,CAAEyE,eAAF,EAAmB,CAAE,SAAF,CAAnB,CAAhC,EAAqE;AACpEA,MAAAA,eAAe,GAAGvE,IAAI,CAAEuE,eAAF,EAAmB,CAAE,SAAF,CAAnB,CAAtB;AACA;;AAED,QAAIC,oBAAJ,CA5B+B,CA6B/B;;AACA,QAAK,CAAEH,KAAK,CAACtC,EAAR,IAAcsC,KAAK,CAACtC,EAAN,KAAaA,EAAhC,EAAqC;AACpCyC,MAAAA,oBAAoB,GAAG;AACtBvB,QAAAA,KAAK,EAAEkB,SADe;AAEtBjB,QAAAA,MAAM,EAAEiB,SAFc;AAGtB;AACA;AACAhB,QAAAA,QAAQ,EAAElB,cAAc,CAAEoC,KAAF,EAASX,gBAAT,CAAd,GACPA,gBADO,GAEP;AAPmB,OAAvB;AASA,KAVD,MAUO;AACN;AACA;AACAc,MAAAA,oBAAoB,GAAG;AAAE3C,QAAAA;AAAF,OAAvB;AACA,KA5C8B,CA8C/B;;;AACA,QAAI4C,eAAe,GAAGrC,UAAU,CAACqC,eAAjC;;AACA,QAAK,CAAEA,eAAP,EAAyB;AACxB;AACA;AACA;AACA,cACC,YAAAC,MAAM,UAAN,wDAAQC,EAAR,8EAAYN,KAAZ,+FAAmBO,IAAnB,0GAAyBC,QAAzB,4GAAmCC,YAAnC,kFAAiDC,IAAjD,KACAvD,qBAFD;AAIC,aAAK,MAAL;AACA,aAAKD,sBAAL;AACCkD,UAAAA,eAAe,GAAGlD,sBAAlB;AACA;;AACD,aAAK,MAAL;AACA,aAAKF,2BAAL;AACCoD,UAAAA,eAAe,GAAGpD,2BAAlB;AACA;;AACD,aAAKC,uBAAL;AACCmD,UAAAA,eAAe,GAAGnD,uBAAlB;AACA;;AACD,aAAKE,qBAAL;AACCiD,UAAAA,eAAe,GAAGjD,qBAAlB;AACA;AAjBF;AAmBA,KAvE8B,CAyE/B;;;AACA,QAAIwD,IAAJ;;AACA,YAASP,eAAT;AACC,WAAKlD,sBAAL;AACCyD,QAAAA,IAAI,GAAGX,KAAK,CAACxC,GAAb;AACA;;AACD,WAAKR,2BAAL;AACC2D,QAAAA,IAAI,GAAGX,KAAK,CAACU,IAAb;AACA;AANF;;AAQAR,IAAAA,eAAe,CAACS,IAAhB,GAAuBA,IAAvB;AAEA3C,IAAAA,aAAa,CAAE,EACd,GAAGkC,eADW;AAEd,SAAGC,oBAFW;AAGdC,MAAAA;AAHc,KAAF,CAAb;AAKA;;AAED,WAASQ,WAAT,CAAsBC,MAAtB,EAA+B;AAC9B,QAAKA,MAAM,KAAKrD,GAAhB,EAAsB;AACrBQ,MAAAA,aAAa,CAAE;AACdR,QAAAA,GAAG,EAAEqD,MADS;AAEdnD,QAAAA,EAAE,EAAEoC,SAFU;AAGdlB,QAAAA,KAAK,EAAEkB,SAHO;AAIdjB,QAAAA,MAAM,EAAEiB,SAJM;AAKdhB,QAAAA,QAAQ,EAAEO;AALI,OAAF,CAAb;AAOA;AACD;;AAED,WAASyB,eAAT,CAA0BC,SAA1B,EAAsC;AACrC,UAAMC,sBAAsB,GAAG,CAAE,MAAF,EAAU,MAAV,EAAmBC,QAAnB,CAA6BF,SAA7B,IAC5B;AAAEnC,MAAAA,KAAK,EAAEkB,SAAT;AAAoBjB,MAAAA,MAAM,EAAEiB;AAA5B,KAD4B,GAE5B,EAFH;AAGA9B,IAAAA,aAAa,CAAE,EACd,GAAGgD,sBADW;AAEdrC,MAAAA,KAAK,EAAEoC;AAFO,KAAF,CAAb;AAIA;;AAED,MAAIG,MAAM,GAAGzD,gBAAgB,CAAEC,EAAF,EAAMF,GAAN,CAA7B,CA1JG,CA4JH;;AACAf,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK,CAAEyE,MAAP,EAAgB;AACf;AACA;;AAED,UAAMC,IAAI,GAAGtF,YAAY,CAAE2B,GAAF,CAAzB;;AAEA,QAAK2D,IAAL,EAAY;AACX7B,MAAAA,WAAW,CAAE;AACZ8B,QAAAA,SAAS,EAAE,CAAED,IAAF,CADC;AAEZE,QAAAA,YAAY,EAAE,SAAe;AAAA,cAAb,CAAEC,GAAF,CAAa;AAC5BvB,UAAAA,aAAa,CAAEuB,GAAF,CAAb;AACA,SAJW;AAKZC,QAAAA,YAAY,EAAEnE,mBALF;AAMZoE,QAAAA,OAAO,EAAI9B,OAAF,IAAe;AACvBwB,UAAAA,MAAM,GAAG,KAAT;AACAzB,UAAAA,aAAa,CAAEC,OAAF,CAAb;AACA;AATW,OAAF,CAAX;AAWA;AACD,GApBQ,EAoBN,EApBM,CAAT,CA7JG,CAmLH;AACA;;AACAjD,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAKyE,MAAL,EAAc;AACblC,MAAAA,eAAe,CAAExB,GAAF,CAAf;AACA;AACA;;AACDzB,IAAAA,aAAa,CAAEgD,YAAF,CAAb;AACA,GANQ,EAMN,CAAEmC,MAAF,EAAU1D,GAAV,CANM,CAAT;AAQA,QAAMiE,UAAU,GAAG9D,eAAe,CAAED,EAAF,EAAMF,GAAN,CAAlC;AACA,QAAMqC,GAAG,GAAG4B,UAAU,GAAGjE,GAAH,GAASsC,SAA/B;AACA,QAAM4B,YAAY,GAAG,CAAC,CAAElE,GAAH,IACpB;AACC,IAAA,GAAG,EAAGZ,EAAE,CAAE,YAAF,CADT;AAEC,IAAA,KAAK,EAAGA,EAAE,CAAE,YAAF,CAFX;AAGC,IAAA,SAAS,EAAG,oBAHb;AAIC,IAAA,GAAG,EAAGY;AAJP,IADD;AASA,QAAMmE,OAAO,GAAGnG,UAAU,CAAE0C,SAAF,EAAa;AACtC,oBAAgBa,YADsB;AAEtC,kBAAc,CAAC,CAAEH,KAAH,IAAY,CAAC,CAAEC,MAFS;AAGtC,KAAG,QAAQC,QAAU,EAArB,GAA0BA;AAHY,GAAb,CAA1B;AAMA,QAAM8C,UAAU,GAAGtF,aAAa,CAAE;AACjC8C,IAAAA,GADiC;AAEjClB,IAAAA,SAAS,EAAEyD;AAFsB,GAAF,CAAhC;AAKA,SACC,wBAAaC,UAAb,EACG,CAAE7C,YAAY,IAAIvB,GAAlB,KACD,cAAC,KAAD;AACC,IAAA,YAAY,EAAGuB,YADhB;AAEC,IAAA,UAAU,EAAGhB,UAFd;AAGC,IAAA,aAAa,EAAGC,aAHjB;AAIC,IAAA,UAAU,EAAGC,UAJd;AAKC,IAAA,iBAAiB,EAAGG,iBALrB;AAMC,IAAA,SAAS,EAAGE,SANb;AAOC,IAAA,aAAa,EAAGyB,aAPjB;AAQC,IAAA,WAAW,EAAGa,WARf;AASC,IAAA,aAAa,EAAGnB,aATjB;AAUC,IAAA,YAAY,EAAGL,GAVhB;AAWC,IAAA,OAAO,EAAGb,OAXX;AAYC,IAAA,QAAQ,EAAGC;AAZZ,IAFF,EAiBG,CAAEhB,GAAF,IACD,cAAC,aAAD;AAAe,IAAA,KAAK,EAAC;AAArB,KACC,cAAC,qBAAD;AACC,IAAA,KAAK,EAAGmB,KADT;AAEC,IAAA,QAAQ,EAAGmC;AAFZ,IADD,CAlBF,EAyBC,cAAC,gBAAD;AACC,IAAA,IAAI,EAAG,cAAC,SAAD;AAAW,MAAA,IAAI,EAAGhE;AAAlB,MADR;AAEC,IAAA,QAAQ,EAAGiD,aAFZ;AAGC,IAAA,WAAW,EAAGa,WAHf;AAIC,IAAA,OAAO,EAAGzC,QAJX;AAKC,IAAA,OAAO,EAAGsB,aALX;AAMC,IAAA,MAAM,EAAC,SANR;AAOC,IAAA,YAAY,EAAGrC,mBAPhB;AAQC,IAAA,KAAK,EAAG;AAAEM,MAAAA,EAAF;AAAMmC,MAAAA;AAAN,KART;AASC,IAAA,YAAY,EAAG6B,YAThB;AAUC,IAAA,mBAAmB,EAAG3C,YAAY,IAAIvB;AAVvC,IAzBD,CADD;AAwCA;AAED,eAAexB,WAAW,CAAE8B,SAAF,CAA1B","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get, has, omit, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { withNotices } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockAlignmentControl,\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = pick( image, [ 'alt', 'id', 'link', 'caption' ] );\n\timageProps.url =\n\t\tget( image, [ 'sizes', size, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', size, 'source_url' ] ) ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated default image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} defaultSize\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasDefaultSize( image, defaultSize ) {\n\treturn (\n\t\thas( image, [ 'sizes', defaultSize, 'url' ] ) ||\n\t\thas( image, [ 'media_details', 'sizes', defaultSize, 'source_url' ] )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tnoticeUI,\n\tinsertBlocksAfter,\n\tnoticeOperations,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn pick( getSettings(), [ 'imageDefaultSize', 'mediaUpload' ] );\n\t}, [] );\n\n\tfunction onUploadError( message ) {\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, imageDefaultSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! get( mediaAttributes, [ 'caption' ] ) ) {\n\t\t\tmediaAttributes = omit( mediaAttributes, [ 'caption' ] );\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\t// Fallback to size \"full\" if there's no default image size.\n\t\t\t\t// It means the image is smaller, and the block will use a full-size URL.\n\t\t\t\tsizeSlug: hasDefaultSize( media, imageDefaultSize )\n\t\t\t\t\t? imageDefaultSize\n\t\t\t\t\t: 'full',\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Image Size\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t{ ( temporaryURL || url ) && (\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontainerRef={ ref }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! url && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tnotices={ noticeUI }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default withNotices( ImageEdit );\n"]}
@@ -4,7 +4,7 @@ import { createElement, Fragment } from "@wordpress/element";
4
4
  /**
5
5
  * External dependencies
6
6
  */
7
- import { View, TouchableWithoutFeedback } from 'react-native';
7
+ import { ActivityIndicator, Image as RNImage, TouchableWithoutFeedback, View } from 'react-native';
8
8
  import { useRoute } from '@react-navigation/native';
9
9
  /**
10
10
  * WordPress dependencies
@@ -15,13 +15,14 @@ import { requestMediaImport, mediaUploadSync, requestImageFailedRetryDialog, req
15
15
  import { Icon, PanelBody, ToolbarButton, ToolbarGroup, Image, WIDE_ALIGNMENTS, LinkSettingsNavigation, BottomSheet, BottomSheetTextControl, BottomSheetSelectControl, FooterMessageControl, FooterMessageLink, Badge } from '@wordpress/components';
16
16
  import { BlockCaption, MediaPlaceholder, MediaUpload, MediaUploadProgress, MEDIA_TYPE_IMAGE, BlockControls, InspectorControls, BlockAlignmentToolbar, BlockStyles, store as blockEditorStore, blockSettingsScreens } from '@wordpress/block-editor';
17
17
  import { __, _x, sprintf } from '@wordpress/i18n';
18
- import { getProtocol, hasQueryArg } from '@wordpress/url';
18
+ import { getProtocol, hasQueryArg, isURL } from '@wordpress/url';
19
19
  import { doAction, hasAction } from '@wordpress/hooks';
20
20
  import { compose, withPreferredColorScheme } from '@wordpress/compose';
21
21
  import { withSelect, withDispatch } from '@wordpress/data';
22
22
  import { image as placeholderIcon, replace, fullscreen, textColor } from '@wordpress/icons';
23
23
  import { store as coreStore } from '@wordpress/core-data';
24
24
  import { store as editPostStore } from '@wordpress/edit-post';
25
+ import { store as noticesStore } from '@wordpress/notices';
25
26
  /**
26
27
  * Internal dependencies
27
28
  */
@@ -171,6 +172,7 @@ export class ImageEdit extends Component {
171
172
  this.onImagePressed = this.onImagePressed.bind(this);
172
173
  this.onSetFeatured = this.onSetFeatured.bind(this);
173
174
  this.onFocusCaption = this.onFocusCaption.bind(this);
175
+ this.onSelectURL = this.onSelectURL.bind(this);
174
176
  this.updateAlignment = this.updateAlignment.bind(this);
175
177
  this.accessibilityLabelCreator = this.accessibilityLabelCreator.bind(this);
176
178
  this.setMappedAttributes = this.setMappedAttributes.bind(this);
@@ -433,6 +435,40 @@ export class ImageEdit extends Component {
433
435
  });
434
436
  }
435
437
 
438
+ onSelectURL(newURL) {
439
+ const {
440
+ createErrorNotice,
441
+ imageDefaultSize,
442
+ setAttributes
443
+ } = this.props;
444
+
445
+ if (isURL(newURL)) {
446
+ this.setState({
447
+ isFetchingImage: true
448
+ }); // Use RN's Image.getSize to determine if URL is a valid image
449
+
450
+ RNImage.getSize(newURL, () => {
451
+ setAttributes({
452
+ url: newURL,
453
+ id: undefined,
454
+ width: undefined,
455
+ height: undefined,
456
+ sizeSlug: imageDefaultSize
457
+ });
458
+ this.setState({
459
+ isFetchingImage: false
460
+ });
461
+ }, () => {
462
+ createErrorNotice(__('Image file not found.'));
463
+ this.setState({
464
+ isFetchingImage: false
465
+ });
466
+ });
467
+ } else {
468
+ createErrorNotice(__('Invalid URL.'));
469
+ }
470
+ }
471
+
436
472
  onFocusCaption() {
437
473
  if (this.props.onFocus) {
438
474
  this.props.onFocus();
@@ -451,6 +487,14 @@ export class ImageEdit extends Component {
451
487
  }, this.props.getStylesFromColorScheme(styles.iconPlaceholder, styles.iconPlaceholderDark)));
452
488
  }
453
489
 
490
+ showLoadingIndicator() {
491
+ return createElement(View, {
492
+ style: styles.image__loading
493
+ }, createElement(ActivityIndicator, {
494
+ animating: true
495
+ }));
496
+ }
497
+
454
498
  getWidth() {
455
499
  const {
456
500
  attributes
@@ -570,7 +614,8 @@ export class ImageEdit extends Component {
570
614
 
571
615
  render() {
572
616
  const {
573
- isCaptionSelected
617
+ isCaptionSelected,
618
+ isFetchingImage
574
619
  } = this.state;
575
620
  const {
576
621
  attributes,
@@ -658,9 +703,10 @@ export class ImageEdit extends Component {
658
703
  if (!url) {
659
704
  return createElement(View, {
660
705
  style: styles.content
661
- }, createElement(MediaPlaceholder, {
706
+ }, isFetchingImage && this.showLoadingIndicator(), createElement(MediaPlaceholder, {
662
707
  allowedTypes: [MEDIA_TYPE_IMAGE],
663
708
  onSelect: this.onSelectMediaUploadOption,
709
+ onSelectURL: this.onSelectURL,
664
710
  icon: this.getPlaceholderIcon(),
665
711
  onFocus: this.props.onFocus,
666
712
  autoOpenMediaUpload: isSelected && wasBlockJustInserted
@@ -713,7 +759,7 @@ export class ImageEdit extends Component {
713
759
  } = _ref6;
714
760
  return createElement(View, {
715
761
  style: imageContainerStyles
716
- }, createElement(Image, _extends({
762
+ }, isFetchingImage && this.showLoadingIndicator(), createElement(Image, _extends({
717
763
  align: align && alignToFlex[align],
718
764
  alt: alt,
719
765
  isSelected: isSelected && !isCaptionSelected,
@@ -742,6 +788,7 @@ export class ImageEdit extends Component {
742
788
  allowedTypes: [MEDIA_TYPE_IMAGE],
743
789
  isReplacingMedia: true,
744
790
  onSelect: this.onSelectMediaUploadOption,
791
+ onSelectURL: this.onSelectURL,
745
792
  render: _ref7 => {
746
793
  let {
747
794
  open,
@@ -789,7 +836,12 @@ export default compose([withSelect((select, props) => {
789
836
  wasBlockJustInserted: wasBlockJustInserted(clientId, 'inserter_menu')
790
837
  };
791
838
  }), withDispatch(dispatch => {
839
+ const {
840
+ createErrorNotice
841
+ } = dispatch(noticesStore);
792
842
  return {
843
+ createErrorNotice,
844
+
793
845
  closeSettingsBottomSheet() {
794
846
  dispatch(editPostStore).closeGeneralSidebar();
795
847
  }