@wordpress/block-editor 11.3.9 → 11.3.10

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 (31) hide show
  1. package/build/components/inserter/block-patterns-tab.js +4 -2
  2. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  3. package/build/components/inserter/index.js +2 -1
  4. package/build/components/inserter/index.js.map +1 -1
  5. package/build/components/rich-text/index.js +2 -1
  6. package/build/components/rich-text/index.js.map +1 -1
  7. package/build/components/rich-text/use-input-rules.js +7 -3
  8. package/build/components/rich-text/use-input-rules.js.map +1 -1
  9. package/build/hooks/position.js +2 -2
  10. package/build/hooks/position.js.map +1 -1
  11. package/build/layouts/utils.js +3 -2
  12. package/build/layouts/utils.js.map +1 -1
  13. package/build-module/components/inserter/block-patterns-tab.js +5 -2
  14. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  15. package/build-module/components/inserter/index.js +2 -1
  16. package/build-module/components/inserter/index.js.map +1 -1
  17. package/build-module/components/rich-text/index.js +2 -1
  18. package/build-module/components/rich-text/index.js.map +1 -1
  19. package/build-module/components/rich-text/use-input-rules.js +7 -3
  20. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  21. package/build-module/hooks/position.js +3 -3
  22. package/build-module/hooks/position.js.map +1 -1
  23. package/build-module/layouts/utils.js +3 -2
  24. package/build-module/layouts/utils.js.map +1 -1
  25. package/package.json +5 -5
  26. package/src/components/inserter/block-patterns-tab.js +4 -2
  27. package/src/components/inserter/index.js +1 -1
  28. package/src/components/rich-text/index.js +2 -1
  29. package/src/components/rich-text/use-input-rules.js +6 -2
  30. package/src/hooks/position.js +3 -3
  31. package/src/layouts/utils.js +2 -2
@@ -36,8 +36,10 @@ var _mobileTabNavigation = _interopRequireDefault(require("./mobile-tab-navigati
36
36
  /**
37
37
  * Internal dependencies
38
38
  */
39
- // Preffered order of pattern categories. Any other categories should
39
+ const noop = () => {}; // Preferred order of pattern categories. Any other categories should
40
40
  // be at the bottom without any re-ordering.
41
+
42
+
41
43
  const patternCategoriesOrder = ['featured', 'posts', 'text', 'gallery', 'call-to-action', 'banner', 'header', 'footer'];
42
44
 
43
45
  function usePatternsCategories(rootClientId) {
@@ -122,7 +124,7 @@ function BlockPatternsCategoryPanel(_ref4) {
122
124
  let {
123
125
  rootClientId,
124
126
  onInsert,
125
- onHover,
127
+ onHover = noop,
126
128
  category,
127
129
  showTitlesAsTooltip
128
130
  } = _ref4;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["patternCategoriesOrder","usePatternsCategories","rootClientId","allPatterns","allCategories","undefined","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","categoryName","every","indexOf","find","push","label","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","container","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","map","chevronRight"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __ } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\n// Preffered order of pattern categories. Any other categories should\n// be at the bottom without any re-ordering.\nconst patternCategoriesOrder = [\n\t'featured',\n\t'posts',\n\t'text',\n\t'gallery',\n\t'call-to-action',\n\t'banner',\n\t'header',\n\t'footer',\n];\n\nfunction usePatternsCategories( rootClientId ) {\n\tconst [ allPatterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\t// The pattern categories should be ordered as follows:\n\t\t\t\t// 1. The categories from `patternCategoriesOrder` in that specific order should be at the top.\n\t\t\t\t// 2. The rest categories should be at the bottom without any re-ordering.\n\t\t\t\tif (\n\t\t\t\t\t! [ currentName, nextName ].some( ( categoryName ) =>\n\t\t\t\t\t\tpatternCategoriesOrder.includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t[ currentName, nextName ].every( ( categoryName ) =>\n\t\t\t\t\t\tpatternCategoriesOrder.includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tpatternCategoriesOrder.indexOf( currentName ) -\n\t\t\t\t\t\tpatternCategoriesOrder.indexOf( nextName )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn patternCategoriesOrder.includes( currentName ) ? -1 : 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories( rootClientId );\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\t// Hide block pattern preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories( rootClientId );\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["noop","patternCategoriesOrder","usePatternsCategories","rootClientId","allPatterns","allCategories","undefined","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","categoryName","every","indexOf","find","push","label","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","container","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","map","chevronRight"],"mappings":";;;;;;;;;;;AAGA;;AAOA;;AACA;;AACA;;AAOA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AA5BA;AACA;AACA;;AAoBA;AACA;AACA;AAMA,MAAMA,IAAI,GAAG,MAAM,CAAE,CAArB,C,CAEA;AACA;;;AACA,MAAMC,sBAAsB,GAAG,CAC9B,UAD8B,EAE9B,OAF8B,EAG9B,MAH8B,EAI9B,SAJ8B,EAK9B,gBAL8B,EAM9B,QAN8B,EAO9B,QAP8B,EAQ9B,QAR8B,CAA/B;;AAWA,SAASC,qBAAT,CAAgCC,YAAhC,EAA+C;AAC9C,QAAM,CAAEC,WAAF,EAAeC,aAAf,IAAiC,+BACtCC,SADsC,EAEtCH,YAFsC,CAAvC;AAKA,QAAMI,qBAAqB,GAAG,0BAC3BC,OAAF,IAAe;AACd,QAAK,CAAEA,OAAO,CAACC,UAAV,IAAwB,CAAED,OAAO,CAACC,UAAR,CAAmBC,MAAlD,EAA2D;AAC1D,aAAO,KAAP;AACA;;AAED,WAAOF,OAAO,CAACC,UAAR,CAAmBE,IAAnB,CAA2BC,GAAF,IAC/BP,aAAa,CAACM,IAAd,CAAsBE,QAAF,IAAgBA,QAAQ,CAACC,IAAT,KAAkBF,GAAtD,CADM,CAAP;AAGA,GAT4B,EAU7B,CAAEP,aAAF,CAV6B,CAA9B,CAN8C,CAmB9C;;AACA,QAAMU,mBAAmB,GAAG,sBAAS,MAAM;AAC1C,UAAMN,UAAU,GAAGJ,aAAa,CAC9BW,MADiB,CACPH,QAAF,IACRT,WAAW,CAACO,IAAZ,CAAoBH,OAAF;AAAA;;AAAA,oCACjBA,OAAO,CAACC,UADS,wDACjB,oBAAoBQ,QAApB,CAA8BJ,QAAQ,CAACC,IAAvC,CADiB;AAAA,KAAlB,CAFiB,EAMjBI,IANiB,CAMX,iBAAiD;AAAA,UAA/C;AAAEJ,QAAAA,IAAI,EAAEK;AAAR,OAA+C;AAAA,UAAxB;AAAEL,QAAAA,IAAI,EAAEM;AAAR,OAAwB;;AACvD;AACA;AACA;AACA,UACC,CAAE,CAAED,WAAF,EAAeC,QAAf,EAA0BT,IAA1B,CAAkCU,YAAF,IACjCpB,sBAAsB,CAACgB,QAAvB,CAAiCI,YAAjC,CADC,CADH,EAIE;AACD,eAAO,CAAP;AACA;;AACD,UACC,CAAEF,WAAF,EAAeC,QAAf,EAA0BE,KAA1B,CAAmCD,YAAF,IAChCpB,sBAAsB,CAACgB,QAAvB,CAAiCI,YAAjC,CADD,CADD,EAIE;AACD,eACCpB,sBAAsB,CAACsB,OAAvB,CAAgCJ,WAAhC,IACAlB,sBAAsB,CAACsB,OAAvB,CAAgCH,QAAhC,CAFD;AAIA;;AACD,aAAOnB,sBAAsB,CAACgB,QAAvB,CAAiCE,WAAjC,IAAiD,CAAC,CAAlD,GAAsD,CAA7D;AACA,KA5BiB,CAAnB;;AA8BA,QACCf,WAAW,CAACO,IAAZ,CACGH,OAAF,IAAe,CAAED,qBAAqB,CAAEC,OAAF,CADvC,KAGA,CAAEC,UAAU,CAACe,IAAX,CACCX,QAAF,IAAgBA,QAAQ,CAACC,IAAT,KAAkB,eADjC,CAJH,EAOE;AACDL,MAAAA,UAAU,CAACgB,IAAX,CAAiB;AAChBX,QAAAA,IAAI,EAAE,eADU;AAEhBY,QAAAA,KAAK,EAAE,cAAI,eAAJ;AAFS,OAAjB;AAIA;;AAED,WAAOjB,UAAP;AACA,GA9C2B,EA8CzB,CAAEL,WAAF,EAAeC,aAAf,CA9CyB,CAA5B;AAgDA,SAAOU,mBAAP;AACA;;AAEM,SAASY,2BAAT,QAMH;AAAA,MANyC;AAC5CxB,IAAAA,YAD4C;AAE5CyB,IAAAA,QAF4C;AAG5CC,IAAAA,OAH4C;AAI5ChB,IAAAA,QAJ4C;AAK5CiB,IAAAA;AAL4C,GAMzC;AACH,QAAMC,SAAS,GAAG,sBAAlB;AAEA,0BAAW,MAAM;AAChB,UAAMC,OAAO,GAAGC,UAAU,CAAE,MAAM;AACjC,YAAM,CAAEC,aAAF,IAAoBC,WAAMC,QAAN,CAAeZ,IAAf,CAAqBO,SAAS,CAACM,OAA/B,CAA1B;;AACAH,MAAAA,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEC,KAAf;AACA,KAHyB,CAA1B;AAIA,WAAO,MAAMG,YAAY,CAAEN,OAAF,CAAzB;AACA,GAND,EAMG,CAAEnB,QAAF,CANH;AAQA,SACC;AACC,IAAA,GAAG,EAAGkB,SADP;AAEC,IAAA,SAAS,EAAC;AAFX,KAIC,4BAAC,0BAAD;AACC,IAAA,YAAY,EAAG5B,YADhB;AAEC,IAAA,QAAQ,EAAGyB,QAFZ;AAGC,IAAA,OAAO,EAAGC,OAHX;AAIC,IAAA,QAAQ,EAAGhB,QAJZ;AAKC,IAAA,mBAAmB,EAAGiB;AALvB,IAJD,CADD;AAcA;;AAEM,SAASS,0BAAT,QAMH;AAAA,MANwC;AAC3CpC,IAAAA,YAD2C;AAE3CyB,IAAAA,QAF2C;AAG3CC,IAAAA,OAAO,GAAG7B,IAHiC;AAI3Ca,IAAAA,QAJ2C;AAK3CiB,IAAAA;AAL2C,GAMxC;AACH,QAAM,CAAE1B,WAAF,GAAiBoC,OAAjB,IAA6B,+BAClCZ,QADkC,EAElCzB,YAFkC,CAAnC;AAKA,QAAMsC,mBAAmB,GAAGvC,qBAAqB,CAAEC,YAAF,CAAjD;AACA,QAAMuC,uBAAuB,GAAG,sBAC/B,MACCtC,WAAW,CAACY,MAAZ,CAAsBR,OAAF,IAAe;AAAA;;AAClC,QAAKK,QAAQ,CAACC,IAAT,KAAkB,eAAvB,EAAyC;AAAA;;AACxC,qCAAON,OAAO,CAACC,UAAf,yDAAO,qBAAoBQ,QAApB,CAA8BJ,QAAQ,CAACC,IAAvC,CAAP;AACA,KAHiC,CAKlC;AACA;;;AACA,UAAM6B,0BAA0B,oDAC/BnC,OAAO,CAACC,UADuB,yDAC/B,qBAAoBO,MAApB,CAA8BJ,GAAF,IAC3B6B,mBAAmB,CAACjB,IAApB,CACGoB,iBAAF,IACCA,iBAAiB,CAAC9B,IAAlB,KAA2BF,GAF7B,CADD,CAD+B,yEAM1B,EANN;AAQA,WAAO+B,0BAA0B,CAACjC,MAA3B,KAAsC,CAA7C;AACA,GAhBD,CAF8B,EAmB/B,CAAEN,WAAF,EAAeS,QAAf,CAnB+B,CAAhC;AAsBA,QAAMgC,oBAAoB,GAAG,2BAAcH,uBAAd,CAA7B,CA7BG,CA+BH;;AACA,0BAAW,MAAM,MAAMb,OAAO,CAAE,IAAF,CAA9B,EAAwC,EAAxC;;AAEA,MAAK,CAAEa,uBAAuB,CAAChC,MAA/B,EAAwC;AACvC,WAAO,IAAP;AACA;;AAED,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGG,QAAQ,CAACa,KADZ,CADD,EAIC,uCAAKb,QAAQ,CAACiC,WAAd,CAJD,EAKC,4BAAC,0BAAD;AACC,IAAA,aAAa,EAAGD,oBADjB;AAEC,IAAA,aAAa,EAAGH,uBAFjB;AAGC,IAAA,cAAc,EAAGF,OAHlB;AAIC,IAAA,OAAO,EAAGX,OAJX;AAKC,IAAA,KAAK,EAAGhB,QAAQ,CAACa,KALlB;AAMC,IAAA,WAAW,EAAC,UANb;AAOC,IAAA,QAAQ,EAAGb,QAAQ,CAACa,KAPrB;AAQC,IAAA,WAAW,MARZ;AASC,IAAA,mBAAmB,EAAGI;AATvB,IALD,CADD;AAmBA;;AAED,SAASiB,iBAAT,QAKI;AAAA,MALwB;AAC3BC,IAAAA,gBAD2B;AAE3BC,IAAAA,gBAF2B;AAG3BrB,IAAAA,QAH2B;AAI3BzB,IAAAA;AAJ2B,GAKxB;AACH,QAAM,CAAE+C,oBAAF,EAAwBC,uBAAxB,IAAoD,uBAAU,KAAV,CAA1D;AACA,QAAM1C,UAAU,GAAGP,qBAAqB,CAAEC,YAAF,CAAxC;AACA,QAAMiD,eAAe,GAAGH,gBAAgB,IAAIxC,UAAU,CAAE,CAAF,CAAtD;AACA,QAAM4C,QAAQ,GAAG,+BAAkB,QAAlB,EAA4B,GAA5B,CAAjB;AACA,SACC,qDACG,CAAEA,QAAF,IACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,kBAAa,cAAI,0BAAJ;AAAlB,KACC,4BAAC,mCAAD;AACC,IAAA,IAAI,EAAC,MADN;AAEC,IAAA,SAAS,EAAC;AAFX,KAIG5C,UAAU,CAAC6C,GAAX,CAAkBzC,QAAF,IACjB,4BAAC,8BAAD;AACC,IAAA,IAAI,EAAC,UADN;AAEC,IAAA,GAAG,EAAGA,QAAQ,CAACC,IAFhB;AAGC,IAAA,OAAO,EAAG,MACTkC,gBAAgB,CAAEnC,QAAF,CAJlB;AAMC,IAAA,SAAS,EACRA,QAAQ,KAAKoC,gBAAb,GACG,4FADH,GAEG,0CATL;AAWC,kBAAapC,QAAQ,CAACa,KAXvB;AAYC,oBACCb,QAAQ,KAAKoC,gBAAb,GACG,MADH,GAEG3C;AAfL,KAkBC,4BAAC,gCAAD,QACC,4BAAC,qBAAD,QACGO,QAAQ,CAACa,KADZ,CADD,EAIC,4BAAC,WAAD;AAAM,IAAA,IAAI,EAAG6B;AAAb,IAJD,CAlBD,CADC,CAJH,EA+BC;AAAK,IAAA,IAAI,EAAC;AAAV,KACC,4BAAC,kBAAD;AACC,IAAA,SAAS,EAAC,gDADX;AAEC,IAAA,OAAO,EAAG,MACTJ,uBAAuB,CAAE,IAAF,CAHzB;AAKC,IAAA,OAAO,EAAC;AALT,KAOG,cAAI,sBAAJ,CAPH,CADD,CA/BD,CADD,CADD,CAFF,EAkDGE,QAAQ,IACT,4BAAC,4BAAD;AAAqB,IAAA,UAAU,EAAG5C;AAAlC,KACKI,QAAF,IACD,4BAAC,0BAAD;AACC,IAAA,QAAQ,EAAGe,QADZ;AAEC,IAAA,YAAY,EAAGzB,YAFhB;AAGC,IAAA,QAAQ,EAAGU,QAHZ;AAIC,IAAA,mBAAmB,EAAG;AAJvB,IAFF,CAnDF,EA8DGqC,oBAAoB,IACrB,4BAAC,iBAAD;AACC,IAAA,eAAe,EAAGE,eADnB;AAEC,IAAA,iBAAiB,EAAG3C,UAFrB;AAGC,IAAA,YAAY,EAAG,MAAM0C,uBAAuB,CAAE,KAAF;AAH7C,IA/DF,CADD;AAwEA;;eAEcJ,iB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __ } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\nconst noop = () => {};\n\n// Preferred order of pattern categories. Any other categories should\n// be at the bottom without any re-ordering.\nconst patternCategoriesOrder = [\n\t'featured',\n\t'posts',\n\t'text',\n\t'gallery',\n\t'call-to-action',\n\t'banner',\n\t'header',\n\t'footer',\n];\n\nfunction usePatternsCategories( rootClientId ) {\n\tconst [ allPatterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\t// The pattern categories should be ordered as follows:\n\t\t\t\t// 1. The categories from `patternCategoriesOrder` in that specific order should be at the top.\n\t\t\t\t// 2. The rest categories should be at the bottom without any re-ordering.\n\t\t\t\tif (\n\t\t\t\t\t! [ currentName, nextName ].some( ( categoryName ) =>\n\t\t\t\t\t\tpatternCategoriesOrder.includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t[ currentName, nextName ].every( ( categoryName ) =>\n\t\t\t\t\t\tpatternCategoriesOrder.includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tpatternCategoriesOrder.indexOf( currentName ) -\n\t\t\t\t\t\tpatternCategoriesOrder.indexOf( nextName )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn patternCategoriesOrder.includes( currentName ) ? -1 : 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories( rootClientId );\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\t// Hide block pattern preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories( rootClientId );\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
@@ -232,7 +232,8 @@ class PrivateInserter extends _element.Component {
232
232
  'is-quick': isQuick
233
233
  }),
234
234
  popoverProps: {
235
- position
235
+ position,
236
+ shift: true
236
237
  },
237
238
  onToggle: this.onToggle,
238
239
  expandOnMobile: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.js"],"names":["defaultRenderToggle","onToggle","disabled","isOpen","blockTitle","hasSingleBlockType","toggleProps","prioritizePatterns","as","Wrapper","Button","label","labelProp","onClick","rest","handleClick","event","plus","PrivateInserter","Component","constructor","arguments","bind","renderToggle","renderContent","props","directInsertBlock","hasItems","onClose","rootClientId","clientId","isAppender","showInserterHelpPanel","__experimentalIsQuick","isQuick","onSelectOrClose","selectBlockOnInsert","orderInitialBlockItems","blocks","firstBlock","Array","isArray","length","render","position","insertOnlyAllowedBlock","ComposedPrivateInserter","select","shouldDirectInsert","getBlockRootClientId","hasInserterItems","getAllowedBlocks","__experimentalGetDirectInsertBlock","getSettings","blockEditorStore","getBlockVariations","blocksStore","undefined","allowedBlocks","settings","name","allowedBlockType","title","__experimentalPreferPatternsOnRoot","dispatch","ownProps","getAdjacentBlockAttributes","attributesToCopy","getBlock","getPreviousBlockClientId","result","adjacentAttributes","parentBlock","innerBlocks","lastInnerBlock","attributes","currentBlock","previousBlock","forEach","attribute","hasOwnProperty","getInsertionIndex","getBlockIndex","getBlockSelectionEnd","getBlockOrder","end","insertBlock","blockToInsert","newAttributes","message","Inserter","ref"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { speak } from '@wordpress/a11y';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { Dropdown, Button } from '@wordpress/components';\nimport { forwardRef, Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { plus } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport InserterMenu from './menu';\nimport QuickInserter from './quick-inserter';\nimport { store as blockEditorStore } from '../../store';\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tisOpen,\n\tblockTitle,\n\thasSingleBlockType,\n\ttoggleProps = {},\n\tprioritizePatterns,\n} ) => {\n\tconst {\n\t\tas: Wrapper = Button,\n\t\tlabel: labelProp,\n\t\tonClick,\n\t\t...rest\n\t} = toggleProps;\n\n\tlet label = labelProp;\n\tif ( ! label && hasSingleBlockType ) {\n\t\tlabel = sprintf(\n\t\t\t// translators: %s: the name of the block when there is only one\n\t\t\t_x( 'Add %s', 'directly add the only allowed block' ),\n\t\t\tblockTitle\n\t\t);\n\t} else if ( ! label && prioritizePatterns ) {\n\t\tlabel = __( 'Add pattern' );\n\t} else if ( ! label ) {\n\t\tlabel = _x( 'Add block', 'Generic label for block inserter button' );\n\t}\n\n\t// Handle both onClick functions from the toggle and the parent component.\n\tfunction handleClick( event ) {\n\t\tif ( onToggle ) {\n\t\t\tonToggle( event );\n\t\t}\n\t\tif ( onClick ) {\n\t\t\tonClick( event );\n\t\t}\n\t}\n\n\treturn (\n\t\t<Wrapper\n\t\t\ticon={ plus }\n\t\t\tlabel={ label }\n\t\t\ttooltipPosition=\"bottom\"\n\t\t\tonClick={ handleClick }\n\t\t\tclassName=\"block-editor-inserter__toggle\"\n\t\t\taria-haspopup={ ! hasSingleBlockType ? 'true' : false }\n\t\t\taria-expanded={ ! hasSingleBlockType ? isOpen : false }\n\t\t\tdisabled={ disabled }\n\t\t\t{ ...rest }\n\t\t/>\n\t);\n};\n\nclass PrivateInserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderToggle = this.renderToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { onToggle } = this.props;\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t}\n\n\t/**\n\t * Render callback to display Dropdown toggle element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onToggle Callback to invoke when toggle is\n\t * pressed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown toggle element.\n\t */\n\trenderToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\thasItems,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tprioritizePatterns,\n\t\t} = this.props;\n\n\t\treturn renderToggle( {\n\t\t\tonToggle,\n\t\t\tisOpen,\n\t\t\tdisabled: disabled || ! hasItems,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\tprioritizePatterns,\n\t\t} );\n\t}\n\n\t/**\n\t * Render callback to display Dropdown content element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onClose Callback to invoke when dropdown is\n\t * closed.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose } ) {\n\t\tconst {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tshowInserterHelpPanel,\n\n\t\t\t// This prop is experimental to give some time for the quick inserter to mature\n\t\t\t// Feel free to make them stable after a few releases.\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tprioritizePatterns,\n\t\t\tonSelectOrClose,\n\t\t\tselectBlockOnInsert,\n\t\t\torderInitialBlockItems,\n\t\t} = this.props;\n\n\t\tif ( isQuick ) {\n\t\t\treturn (\n\t\t\t\t<QuickInserter\n\t\t\t\t\tonSelect={ ( blocks ) => {\n\t\t\t\t\t\tconst firstBlock =\n\t\t\t\t\t\t\tArray.isArray( blocks ) && blocks?.length\n\t\t\t\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t\t\t\t: blocks;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tonSelectOrClose &&\n\t\t\t\t\t\t\ttypeof onSelectOrClose === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tonSelectOrClose( firstBlock );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\tselectBlockOnInsert={ selectBlockOnInsert }\n\t\t\t\t\torderInitialBlockItems={ orderInitialBlockItems }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tonSelect={ () => {\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshowInserterHelpPanel={ showInserterHelpPanel }\n\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\tinsertOnlyAllowedBlock,\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tonSelectOrClose,\n\t\t} = this.props;\n\n\t\tif ( hasSingleBlockType || directInsertBlock ) {\n\t\t\treturn this.renderToggle( { onToggle: insertOnlyAllowedBlock } );\n\t\t}\n\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tclassName=\"block-editor-inserter\"\n\t\t\t\tcontentClassName={ classnames(\n\t\t\t\t\t'block-editor-inserter__popover',\n\t\t\t\t\t{ 'is-quick': isQuick }\n\t\t\t\t) }\n\t\t\t\tpopoverProps={ { position } }\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\texpandOnMobile\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t\tonClose={ onSelectOrClose }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport const ComposedPrivateInserter = compose( [\n\twithSelect(\n\t\t( select, { clientId, rootClientId, shouldDirectInsert = true } ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasInserterItems,\n\t\t\t\tgetAllowedBlocks,\n\t\t\t\t__experimentalGetDirectInsertBlock,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\trootClientId =\n\t\t\t\trootClientId || getBlockRootClientId( clientId ) || undefined;\n\n\t\t\tconst allowedBlocks = getAllowedBlocks( rootClientId );\n\n\t\t\tconst directInsertBlock =\n\t\t\t\tshouldDirectInsert &&\n\t\t\t\t__experimentalGetDirectInsertBlock( rootClientId );\n\n\t\t\tconst settings = getSettings();\n\n\t\t\tconst hasSingleBlockType =\n\t\t\t\tallowedBlocks?.length === 1 &&\n\t\t\t\tgetBlockVariations( allowedBlocks[ 0 ].name, 'inserter' )\n\t\t\t\t\t?.length === 0;\n\n\t\t\tlet allowedBlockType = false;\n\t\t\tif ( hasSingleBlockType ) {\n\t\t\t\tallowedBlockType = allowedBlocks[ 0 ];\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thasItems: hasInserterItems( rootClientId ),\n\t\t\t\thasSingleBlockType,\n\t\t\t\tblockTitle: allowedBlockType ? allowedBlockType.title : '',\n\t\t\t\tallowedBlockType,\n\t\t\t\tdirectInsertBlock,\n\t\t\t\trootClientId,\n\t\t\t\tprioritizePatterns:\n\t\t\t\t\tsettings.__experimentalPreferPatternsOnRoot &&\n\t\t\t\t\t! rootClientId,\n\t\t\t};\n\t\t}\n\t),\n\twithDispatch( ( dispatch, ownProps, { select } ) => {\n\t\treturn {\n\t\t\tinsertOnlyAllowedBlock() {\n\t\t\t\tconst {\n\t\t\t\t\trootClientId,\n\t\t\t\t\tclientId,\n\t\t\t\t\tisAppender,\n\t\t\t\t\thasSingleBlockType,\n\t\t\t\t\tallowedBlockType,\n\t\t\t\t\tdirectInsertBlock,\n\t\t\t\t\tonSelectOrClose,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t} = ownProps;\n\n\t\t\t\tif ( ! hasSingleBlockType && ! directInsertBlock ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfunction getAdjacentBlockAttributes( attributesToCopy ) {\n\t\t\t\t\tconst { getBlock, getPreviousBlockClientId } =\n\t\t\t\t\t\tselect( blockEditorStore );\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! attributesToCopy ||\n\t\t\t\t\t\t( ! clientId && ! rootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = {};\n\t\t\t\t\tlet adjacentAttributes = {};\n\n\t\t\t\t\t// If there is no clientId, then attempt to get attributes\n\t\t\t\t\t// from the last block within innerBlocks of the root block.\n\t\t\t\t\tif ( ! clientId ) {\n\t\t\t\t\t\tconst parentBlock = getBlock( rootClientId );\n\n\t\t\t\t\t\tif ( parentBlock?.innerBlocks?.length ) {\n\t\t\t\t\t\t\tconst lastInnerBlock =\n\t\t\t\t\t\t\t\tparentBlock.innerBlocks[\n\t\t\t\t\t\t\t\t\tparentBlock.innerBlocks.length - 1\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdirectInsertBlock &&\n\t\t\t\t\t\t\t\tdirectInsertBlock?.name === lastInnerBlock.name\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tadjacentAttributes = lastInnerBlock.attributes;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, attempt to get attributes from the\n\t\t\t\t\t\t// previous block relative to the current clientId.\n\t\t\t\t\t\tconst currentBlock = getBlock( clientId );\n\t\t\t\t\t\tconst previousBlock = getBlock(\n\t\t\t\t\t\t\tgetPreviousBlockClientId( clientId )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( currentBlock?.name === previousBlock?.name ) {\n\t\t\t\t\t\t\tadjacentAttributes =\n\t\t\t\t\t\t\t\tpreviousBlock?.attributes || {};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Copy over only those attributes flagged to be copied.\n\t\t\t\t\tattributesToCopy.forEach( ( attribute ) => {\n\t\t\t\t\t\tif ( adjacentAttributes.hasOwnProperty( attribute ) ) {\n\t\t\t\t\t\t\tresult[ attribute ] =\n\t\t\t\t\t\t\t\tadjacentAttributes[ attribute ];\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tfunction getInsertionIndex() {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetBlockIndex,\n\t\t\t\t\t\tgetBlockSelectionEnd,\n\t\t\t\t\t\tgetBlockOrder,\n\t\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\t} = select( blockEditorStore );\n\n\t\t\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\t\t\tif ( clientId ) {\n\t\t\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t\t\t}\n\n\t\t\t\t\t// If there a selected block, we insert after the selected block.\n\t\t\t\t\tconst end = getBlockSelectionEnd();\n\t\t\t\t\tif (\n\t\t\t\t\t\t! isAppender &&\n\t\t\t\t\t\tend &&\n\t\t\t\t\t\tgetBlockRootClientId( end ) === rootClientId\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn getBlockIndex( end ) + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\t\t\treturn getBlockOrder( rootClientId ).length;\n\t\t\t\t}\n\n\t\t\t\tconst { insertBlock } = dispatch( blockEditorStore );\n\n\t\t\t\tlet blockToInsert;\n\n\t\t\t\t// Attempt to augment the directInsertBlock with attributes from an adjacent block.\n\t\t\t\t// This ensures styling from nearby blocks is preserved in the newly inserted block.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/37904\n\t\t\t\tif ( directInsertBlock ) {\n\t\t\t\t\tconst newAttributes = getAdjacentBlockAttributes(\n\t\t\t\t\t\tdirectInsertBlock.attributesToCopy\n\t\t\t\t\t);\n\n\t\t\t\t\tblockToInsert = createBlock( directInsertBlock.name, {\n\t\t\t\t\t\t...( directInsertBlock.attributes || {} ),\n\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tblockToInsert = createBlock( allowedBlockType.name );\n\t\t\t\t}\n\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblockToInsert,\n\t\t\t\t\tgetInsertionIndex(),\n\t\t\t\t\trootClientId,\n\t\t\t\t\tselectBlockOnInsert\n\t\t\t\t);\n\n\t\t\t\tif ( onSelectOrClose ) {\n\t\t\t\t\tonSelectOrClose( {\n\t\t\t\t\t\tclientId: blockToInsert?.clientId,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tconst message = sprintf(\n\t\t\t\t\t// translators: %s: the name of the block that has been added\n\t\t\t\t\t__( '%s block added' ),\n\t\t\t\t\tallowedBlockType.title\n\t\t\t\t);\n\t\t\t\tspeak( message );\n\t\t\t},\n\t\t};\n\t} ),\n\t// The global inserter should always be visible, we are using ( ! isAppender && ! rootClientId && ! clientId ) as\n\t// a way to detect the global Inserter.\n\tifCondition(\n\t\t( { hasItems, isAppender, rootClientId, clientId } ) =>\n\t\t\thasItems || ( ! isAppender && ! rootClientId && ! clientId )\n\t),\n] )( PrivateInserter );\n\nconst Inserter = forwardRef( ( props, ref ) => {\n\treturn (\n\t\t<ComposedPrivateInserter\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t\torderInitialBlockItems={ undefined }\n\t\t/>\n\t);\n} );\n\nexport default Inserter;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.js"],"names":["defaultRenderToggle","onToggle","disabled","isOpen","blockTitle","hasSingleBlockType","toggleProps","prioritizePatterns","as","Wrapper","Button","label","labelProp","onClick","rest","handleClick","event","plus","PrivateInserter","Component","constructor","arguments","bind","renderToggle","renderContent","props","directInsertBlock","hasItems","onClose","rootClientId","clientId","isAppender","showInserterHelpPanel","__experimentalIsQuick","isQuick","onSelectOrClose","selectBlockOnInsert","orderInitialBlockItems","blocks","firstBlock","Array","isArray","length","render","position","insertOnlyAllowedBlock","shift","ComposedPrivateInserter","select","shouldDirectInsert","getBlockRootClientId","hasInserterItems","getAllowedBlocks","__experimentalGetDirectInsertBlock","getSettings","blockEditorStore","getBlockVariations","blocksStore","undefined","allowedBlocks","settings","name","allowedBlockType","title","__experimentalPreferPatternsOnRoot","dispatch","ownProps","getAdjacentBlockAttributes","attributesToCopy","getBlock","getPreviousBlockClientId","result","adjacentAttributes","parentBlock","innerBlocks","lastInnerBlock","attributes","currentBlock","previousBlock","forEach","attribute","hasOwnProperty","getInsertionIndex","getBlockIndex","getBlockSelectionEnd","getBlockOrder","end","insertBlock","blockToInsert","newAttributes","message","Inserter","ref"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { speak } from '@wordpress/a11y';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { Dropdown, Button } from '@wordpress/components';\nimport { forwardRef, Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { plus } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport InserterMenu from './menu';\nimport QuickInserter from './quick-inserter';\nimport { store as blockEditorStore } from '../../store';\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tisOpen,\n\tblockTitle,\n\thasSingleBlockType,\n\ttoggleProps = {},\n\tprioritizePatterns,\n} ) => {\n\tconst {\n\t\tas: Wrapper = Button,\n\t\tlabel: labelProp,\n\t\tonClick,\n\t\t...rest\n\t} = toggleProps;\n\n\tlet label = labelProp;\n\tif ( ! label && hasSingleBlockType ) {\n\t\tlabel = sprintf(\n\t\t\t// translators: %s: the name of the block when there is only one\n\t\t\t_x( 'Add %s', 'directly add the only allowed block' ),\n\t\t\tblockTitle\n\t\t);\n\t} else if ( ! label && prioritizePatterns ) {\n\t\tlabel = __( 'Add pattern' );\n\t} else if ( ! label ) {\n\t\tlabel = _x( 'Add block', 'Generic label for block inserter button' );\n\t}\n\n\t// Handle both onClick functions from the toggle and the parent component.\n\tfunction handleClick( event ) {\n\t\tif ( onToggle ) {\n\t\t\tonToggle( event );\n\t\t}\n\t\tif ( onClick ) {\n\t\t\tonClick( event );\n\t\t}\n\t}\n\n\treturn (\n\t\t<Wrapper\n\t\t\ticon={ plus }\n\t\t\tlabel={ label }\n\t\t\ttooltipPosition=\"bottom\"\n\t\t\tonClick={ handleClick }\n\t\t\tclassName=\"block-editor-inserter__toggle\"\n\t\t\taria-haspopup={ ! hasSingleBlockType ? 'true' : false }\n\t\t\taria-expanded={ ! hasSingleBlockType ? isOpen : false }\n\t\t\tdisabled={ disabled }\n\t\t\t{ ...rest }\n\t\t/>\n\t);\n};\n\nclass PrivateInserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderToggle = this.renderToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { onToggle } = this.props;\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t}\n\n\t/**\n\t * Render callback to display Dropdown toggle element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onToggle Callback to invoke when toggle is\n\t * pressed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown toggle element.\n\t */\n\trenderToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\thasItems,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tprioritizePatterns,\n\t\t} = this.props;\n\n\t\treturn renderToggle( {\n\t\t\tonToggle,\n\t\t\tisOpen,\n\t\t\tdisabled: disabled || ! hasItems,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\tprioritizePatterns,\n\t\t} );\n\t}\n\n\t/**\n\t * Render callback to display Dropdown content element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onClose Callback to invoke when dropdown is\n\t * closed.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose } ) {\n\t\tconst {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tshowInserterHelpPanel,\n\n\t\t\t// This prop is experimental to give some time for the quick inserter to mature\n\t\t\t// Feel free to make them stable after a few releases.\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tprioritizePatterns,\n\t\t\tonSelectOrClose,\n\t\t\tselectBlockOnInsert,\n\t\t\torderInitialBlockItems,\n\t\t} = this.props;\n\n\t\tif ( isQuick ) {\n\t\t\treturn (\n\t\t\t\t<QuickInserter\n\t\t\t\t\tonSelect={ ( blocks ) => {\n\t\t\t\t\t\tconst firstBlock =\n\t\t\t\t\t\t\tArray.isArray( blocks ) && blocks?.length\n\t\t\t\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t\t\t\t: blocks;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tonSelectOrClose &&\n\t\t\t\t\t\t\ttypeof onSelectOrClose === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tonSelectOrClose( firstBlock );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\tselectBlockOnInsert={ selectBlockOnInsert }\n\t\t\t\t\torderInitialBlockItems={ orderInitialBlockItems }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tonSelect={ () => {\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshowInserterHelpPanel={ showInserterHelpPanel }\n\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\tinsertOnlyAllowedBlock,\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tonSelectOrClose,\n\t\t} = this.props;\n\n\t\tif ( hasSingleBlockType || directInsertBlock ) {\n\t\t\treturn this.renderToggle( { onToggle: insertOnlyAllowedBlock } );\n\t\t}\n\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tclassName=\"block-editor-inserter\"\n\t\t\t\tcontentClassName={ classnames(\n\t\t\t\t\t'block-editor-inserter__popover',\n\t\t\t\t\t{ 'is-quick': isQuick }\n\t\t\t\t) }\n\t\t\t\tpopoverProps={ { position, shift: true } }\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\texpandOnMobile\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t\tonClose={ onSelectOrClose }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport const ComposedPrivateInserter = compose( [\n\twithSelect(\n\t\t( select, { clientId, rootClientId, shouldDirectInsert = true } ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasInserterItems,\n\t\t\t\tgetAllowedBlocks,\n\t\t\t\t__experimentalGetDirectInsertBlock,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\trootClientId =\n\t\t\t\trootClientId || getBlockRootClientId( clientId ) || undefined;\n\n\t\t\tconst allowedBlocks = getAllowedBlocks( rootClientId );\n\n\t\t\tconst directInsertBlock =\n\t\t\t\tshouldDirectInsert &&\n\t\t\t\t__experimentalGetDirectInsertBlock( rootClientId );\n\n\t\t\tconst settings = getSettings();\n\n\t\t\tconst hasSingleBlockType =\n\t\t\t\tallowedBlocks?.length === 1 &&\n\t\t\t\tgetBlockVariations( allowedBlocks[ 0 ].name, 'inserter' )\n\t\t\t\t\t?.length === 0;\n\n\t\t\tlet allowedBlockType = false;\n\t\t\tif ( hasSingleBlockType ) {\n\t\t\t\tallowedBlockType = allowedBlocks[ 0 ];\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thasItems: hasInserterItems( rootClientId ),\n\t\t\t\thasSingleBlockType,\n\t\t\t\tblockTitle: allowedBlockType ? allowedBlockType.title : '',\n\t\t\t\tallowedBlockType,\n\t\t\t\tdirectInsertBlock,\n\t\t\t\trootClientId,\n\t\t\t\tprioritizePatterns:\n\t\t\t\t\tsettings.__experimentalPreferPatternsOnRoot &&\n\t\t\t\t\t! rootClientId,\n\t\t\t};\n\t\t}\n\t),\n\twithDispatch( ( dispatch, ownProps, { select } ) => {\n\t\treturn {\n\t\t\tinsertOnlyAllowedBlock() {\n\t\t\t\tconst {\n\t\t\t\t\trootClientId,\n\t\t\t\t\tclientId,\n\t\t\t\t\tisAppender,\n\t\t\t\t\thasSingleBlockType,\n\t\t\t\t\tallowedBlockType,\n\t\t\t\t\tdirectInsertBlock,\n\t\t\t\t\tonSelectOrClose,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t} = ownProps;\n\n\t\t\t\tif ( ! hasSingleBlockType && ! directInsertBlock ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfunction getAdjacentBlockAttributes( attributesToCopy ) {\n\t\t\t\t\tconst { getBlock, getPreviousBlockClientId } =\n\t\t\t\t\t\tselect( blockEditorStore );\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! attributesToCopy ||\n\t\t\t\t\t\t( ! clientId && ! rootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = {};\n\t\t\t\t\tlet adjacentAttributes = {};\n\n\t\t\t\t\t// If there is no clientId, then attempt to get attributes\n\t\t\t\t\t// from the last block within innerBlocks of the root block.\n\t\t\t\t\tif ( ! clientId ) {\n\t\t\t\t\t\tconst parentBlock = getBlock( rootClientId );\n\n\t\t\t\t\t\tif ( parentBlock?.innerBlocks?.length ) {\n\t\t\t\t\t\t\tconst lastInnerBlock =\n\t\t\t\t\t\t\t\tparentBlock.innerBlocks[\n\t\t\t\t\t\t\t\t\tparentBlock.innerBlocks.length - 1\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdirectInsertBlock &&\n\t\t\t\t\t\t\t\tdirectInsertBlock?.name === lastInnerBlock.name\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tadjacentAttributes = lastInnerBlock.attributes;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, attempt to get attributes from the\n\t\t\t\t\t\t// previous block relative to the current clientId.\n\t\t\t\t\t\tconst currentBlock = getBlock( clientId );\n\t\t\t\t\t\tconst previousBlock = getBlock(\n\t\t\t\t\t\t\tgetPreviousBlockClientId( clientId )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( currentBlock?.name === previousBlock?.name ) {\n\t\t\t\t\t\t\tadjacentAttributes =\n\t\t\t\t\t\t\t\tpreviousBlock?.attributes || {};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Copy over only those attributes flagged to be copied.\n\t\t\t\t\tattributesToCopy.forEach( ( attribute ) => {\n\t\t\t\t\t\tif ( adjacentAttributes.hasOwnProperty( attribute ) ) {\n\t\t\t\t\t\t\tresult[ attribute ] =\n\t\t\t\t\t\t\t\tadjacentAttributes[ attribute ];\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tfunction getInsertionIndex() {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetBlockIndex,\n\t\t\t\t\t\tgetBlockSelectionEnd,\n\t\t\t\t\t\tgetBlockOrder,\n\t\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\t} = select( blockEditorStore );\n\n\t\t\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\t\t\tif ( clientId ) {\n\t\t\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t\t\t}\n\n\t\t\t\t\t// If there a selected block, we insert after the selected block.\n\t\t\t\t\tconst end = getBlockSelectionEnd();\n\t\t\t\t\tif (\n\t\t\t\t\t\t! isAppender &&\n\t\t\t\t\t\tend &&\n\t\t\t\t\t\tgetBlockRootClientId( end ) === rootClientId\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn getBlockIndex( end ) + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\t\t\treturn getBlockOrder( rootClientId ).length;\n\t\t\t\t}\n\n\t\t\t\tconst { insertBlock } = dispatch( blockEditorStore );\n\n\t\t\t\tlet blockToInsert;\n\n\t\t\t\t// Attempt to augment the directInsertBlock with attributes from an adjacent block.\n\t\t\t\t// This ensures styling from nearby blocks is preserved in the newly inserted block.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/37904\n\t\t\t\tif ( directInsertBlock ) {\n\t\t\t\t\tconst newAttributes = getAdjacentBlockAttributes(\n\t\t\t\t\t\tdirectInsertBlock.attributesToCopy\n\t\t\t\t\t);\n\n\t\t\t\t\tblockToInsert = createBlock( directInsertBlock.name, {\n\t\t\t\t\t\t...( directInsertBlock.attributes || {} ),\n\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tblockToInsert = createBlock( allowedBlockType.name );\n\t\t\t\t}\n\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblockToInsert,\n\t\t\t\t\tgetInsertionIndex(),\n\t\t\t\t\trootClientId,\n\t\t\t\t\tselectBlockOnInsert\n\t\t\t\t);\n\n\t\t\t\tif ( onSelectOrClose ) {\n\t\t\t\t\tonSelectOrClose( {\n\t\t\t\t\t\tclientId: blockToInsert?.clientId,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tconst message = sprintf(\n\t\t\t\t\t// translators: %s: the name of the block that has been added\n\t\t\t\t\t__( '%s block added' ),\n\t\t\t\t\tallowedBlockType.title\n\t\t\t\t);\n\t\t\t\tspeak( message );\n\t\t\t},\n\t\t};\n\t} ),\n\t// The global inserter should always be visible, we are using ( ! isAppender && ! rootClientId && ! clientId ) as\n\t// a way to detect the global Inserter.\n\tifCondition(\n\t\t( { hasItems, isAppender, rootClientId, clientId } ) =>\n\t\t\thasItems || ( ! isAppender && ! rootClientId && ! clientId )\n\t),\n] )( PrivateInserter );\n\nconst Inserter = forwardRef( ( props, ref ) => {\n\treturn (\n\t\t<ComposedPrivateInserter\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t\torderInitialBlockItems={ undefined }\n\t\t/>\n\t);\n} );\n\nexport default Inserter;\n"]}
@@ -310,6 +310,7 @@ function RichTextWrapper(_ref, forwardedRef) {
310
310
 
311
311
  const {
312
312
  value,
313
+ getValue,
313
314
  onChange,
314
315
  ref: richTextRef
315
316
  } = (0, _richText.__unstableUseRichText)({
@@ -427,7 +428,7 @@ function RichTextWrapper(_ref, forwardedRef) {
427
428
  value,
428
429
  onChange
429
430
  }), (0, _useInputRules.useInputRules)({
430
- value,
431
+ getValue,
431
432
  onChange,
432
433
  __unstableAllowPrefixTransformations,
433
434
  formatTypes,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","since","version","alternative","link","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","getBlockRootClientId","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","className","ForwardedRichTextContainer","Content","Tag","MultilineTag","content","format","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tif ( multiline ) {\n\t\tdeprecated( 'wp.blockEditor.RichText multiline prop', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'nested blocks (InnerBlocks)',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseInsertReplacementText(),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","since","version","alternative","link","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","getBlockRootClientId","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","className","ForwardedRichTextContainer","Content","Tag","MultilineTag","content","format","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tif ( multiline ) {\n\t\tdeprecated( 'wp.blockEditor.RichText multiline prop', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'nested blocks (InnerBlocks)',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseInsertReplacementText(),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
@@ -57,15 +57,18 @@ function useInputRules(props) {
57
57
  return (0, _compose.useRefEffect)(element => {
58
58
  function inputRule() {
59
59
  const {
60
- value,
60
+ getValue,
61
61
  onReplace,
62
62
  selectionChange
63
63
  } = propsRef.current;
64
64
 
65
65
  if (!onReplace) {
66
66
  return;
67
- }
67
+ } // We must use getValue() here because value may be update
68
+ // asynchronously.
69
+
68
70
 
71
+ const value = getValue();
69
72
  const {
70
73
  start,
71
74
  text
@@ -110,7 +113,7 @@ function useInputRules(props) {
110
113
  type
111
114
  } = event;
112
115
  const {
113
- value,
116
+ getValue,
114
117
  onChange,
115
118
  __unstableAllowPrefixTransformations,
116
119
  formatTypes
@@ -124,6 +127,7 @@ function useInputRules(props) {
124
127
  inputRule();
125
128
  }
126
129
 
130
+ const value = getValue();
127
131
  const transformed = formatTypes.reduce((accumlator, _ref3) => {
128
132
  let {
129
133
  __unstableInputRule
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"names":["findSelection","blocks","i","length","attributeKey","attributes","replace","START_OF_SELECTED_AREA","clientId","nestedSelection","innerBlocks","useInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","blockEditorStore","propsRef","current","element","inputRule","value","onReplace","selectionChange","start","text","characterBefore","slice","trimmedTextBefore","trim","prefixTransforms","filter","type","transformation","prefix","content","block","transform","onInput","event","inputType","onChange","__unstableAllowPrefixTransformations","formatTypes","transformed","reduce","accumlator","__unstableInputRule","activeFormats","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AAdA;AACA;AACA;;AAOA;AACA;AACA;AAQA,SAASA,aAAT,CAAwBC,MAAxB,EAAiC;AAChC,MAAIC,CAAC,GAAGD,MAAM,CAACE,MAAf;;AAEA,SAAQD,CAAC,EAAT,EAAc;AACb,UAAME,YAAY,GAAG,0CACpBH,MAAM,CAAEC,CAAF,CAAN,CAAYG,UADQ,CAArB;;AAIA,QAAKD,YAAL,EAAoB;AACnBH,MAAAA,MAAM,CAAEC,CAAF,CAAN,CAAYG,UAAZ,CAAwBD,YAAxB,IAAyCH,MAAM,CAAEC,CAAF,CAAN,CAAYG,UAAZ,CACxCD,YADwC,EAEvCE,OAFuC,CAE9BC,iCAF8B,EAEN,EAFM,CAAzC;AAGA,aAAON,MAAM,CAAEC,CAAF,CAAN,CAAYM,QAAnB;AACA;;AAED,UAAMC,eAAe,GAAGT,aAAa,CAAEC,MAAM,CAAEC,CAAF,CAAN,CAAYQ,WAAd,CAArC;;AAEA,QAAKD,eAAL,EAAuB;AACtB,aAAOA,eAAP;AACA;AACD;AACD;;AAEM,SAASE,aAAT,CAAwBC,KAAxB,EAAgC;AACtC,QAAM;AACLC,IAAAA,oCADK;AAELC,IAAAA;AAFK,MAGF,uBAAaC,YAAb,CAHJ;AAIA,QAAMC,QAAQ,GAAG,qBAAQJ,KAAR,CAAjB;AACAI,EAAAA,QAAQ,CAACC,OAAT,GAAmBL,KAAnB;AACA,SAAO,2BAAgBM,OAAF,IAAe;AACnC,aAASC,SAAT,GAAqB;AACpB,YAAM;AAAEC,QAAAA,KAAF;AAASC,QAAAA,SAAT;AAAoBC,QAAAA;AAApB,UAAwCN,QAAQ,CAACC,OAAvD;;AAEA,UAAK,CAAEI,SAAP,EAAmB;AAClB;AACA;;AAED,YAAM;AAAEE,QAAAA,KAAF;AAASC,QAAAA;AAAT,UAAkBJ,KAAxB;AACA,YAAMK,eAAe,GAAGD,IAAI,CAACE,KAAL,CAAYH,KAAK,GAAG,CAApB,EAAuBA,KAAvB,CAAxB,CARoB,CAUpB;;AACA,UAAKE,eAAe,KAAK,GAAzB,EAA+B;AAC9B;AACA;;AAED,YAAME,iBAAiB,GAAGH,IAAI,CAACE,KAAL,CAAY,CAAZ,EAAeH,KAAf,EAAuBK,IAAvB,EAA1B;AACA,YAAMC,gBAAgB,GAAG,gCAAoB,MAApB,EAA6BC,MAA7B,CACxB;AAAA,YAAE;AAAEC,UAAAA;AAAF,SAAF;AAAA,eAAgBA,IAAI,KAAK,QAAzB;AAAA,OADwB,CAAzB;AAGA,YAAMC,cAAc,GAAG,2BACtBH,gBADsB,EAEtB,SAAkB;AAAA,YAAhB;AAAEI,UAAAA;AAAF,SAAgB;AACjB,eAAON,iBAAiB,KAAKM,MAA7B;AACA,OAJqB,CAAvB;;AAOA,UAAK,CAAED,cAAP,EAAwB;AACvB;AACA;;AAED,YAAME,OAAO,GAAG,4BAAc;AAC7Bd,QAAAA,KAAK,EAAE,sBAAQA,KAAR,EAAeb,iCAAf,EAAuC,CAAvC,EAA0CgB,KAA1C;AADsB,OAAd,CAAhB;AAGA,YAAMY,KAAK,GAAGH,cAAc,CAACI,SAAf,CAA0BF,OAA1B,CAAd;AAEAZ,MAAAA,eAAe,CAAEtB,aAAa,CAAE,CAAEmC,KAAF,CAAF,CAAf,CAAf;AACAd,MAAAA,SAAS,CAAE,CAAEc,KAAF,CAAF,CAAT;;AACArB,MAAAA,6BAA6B;AAC7B;;AAED,aAASuB,OAAT,CAAkBC,KAAlB,EAA0B;AACzB,YAAM;AAAEC,QAAAA,SAAF;AAAaR,QAAAA;AAAb,UAAsBO,KAA5B;AACA,YAAM;AACLlB,QAAAA,KADK;AAELoB,QAAAA,QAFK;AAGLC,QAAAA,oCAHK;AAILC,QAAAA;AAJK,UAKF1B,QAAQ,CAACC,OALb,CAFyB,CASzB;;AACA,UAAKsB,SAAS,KAAK,YAAd,IAA8BR,IAAI,KAAK,gBAA5C,EAA+D;AAC9D;AACA;;AAED,UAAKU,oCAAoC,IAAItB,SAA7C,EAAyD;AACxDA,QAAAA,SAAS;AACT;;AAED,YAAMwB,WAAW,GAAGD,WAAW,CAACE,MAAZ,CACnB,CAAEC,UAAF,YAA2C;AAAA,YAA7B;AAAEC,UAAAA;AAAF,SAA6B;;AAC1C,YAAKA,mBAAL,EAA2B;AAC1BD,UAAAA,UAAU,GAAGC,mBAAmB,CAAED,UAAF,CAAhC;AACA;;AAED,eAAOA,UAAP;AACA,OAPkB,EAQnB,kDAAuBzB,KAAvB,CARmB,CAApB;;AAWA,UAAKuB,WAAW,KAAKvB,KAArB,EAA6B;AAC5BP,QAAAA,oCAAoC;;AACpC2B,QAAAA,QAAQ,CAAE,EACT,GAAGG,WADM;AAETI,UAAAA,aAAa,EAAE3B,KAAK,CAAC2B;AAFZ,SAAF,CAAR;;AAIAjC,QAAAA,6BAA6B;AAC7B;AACD;;AAEDI,IAAAA,OAAO,CAAC8B,gBAAR,CAA0B,OAA1B,EAAmCX,OAAnC;AACAnB,IAAAA,OAAO,CAAC8B,gBAAR,CAA0B,gBAA1B,EAA4CX,OAA5C;AACA,WAAO,MAAM;AACZnB,MAAAA,OAAO,CAAC+B,mBAAR,CAA6B,OAA7B,EAAsCZ,OAAtC;AACAnB,MAAAA,OAAO,CAAC+B,mBAAR,CAA6B,gBAA7B,EAA+CZ,OAA/C;AACA,KAHD;AAIA,GAtFM,EAsFJ,EAtFI,CAAP;AAuFA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { insert, toHTMLString } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { preventEventDiscovery } from './prevent-event-discovery';\nimport {\n\tretrieveSelectedAttribute,\n\tSTART_OF_SELECTED_AREA,\n} from '../../utils/selection';\n\nfunction findSelection( blocks ) {\n\tlet i = blocks.length;\n\n\twhile ( i-- ) {\n\t\tconst attributeKey = retrieveSelectedAttribute(\n\t\t\tblocks[ i ].attributes\n\t\t);\n\n\t\tif ( attributeKey ) {\n\t\t\tblocks[ i ].attributes[ attributeKey ] = blocks[ i ].attributes[\n\t\t\t\tattributeKey\n\t\t\t].replace( START_OF_SELECTED_AREA, '' );\n\t\t\treturn blocks[ i ].clientId;\n\t\t}\n\n\t\tconst nestedSelection = findSelection( blocks[ i ].innerBlocks );\n\n\t\tif ( nestedSelection ) {\n\t\t\treturn nestedSelection;\n\t\t}\n\t}\n}\n\nexport function useInputRules( props ) {\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction inputRule() {\n\t\t\tconst { value, onReplace, selectionChange } = propsRef.current;\n\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = toHTMLString( {\n\t\t\t\tvalue: insert( value, START_OF_SELECTED_AREA, 0, start ),\n\t\t\t} );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tselectionChange( findSelection( [ block ] ) );\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t}\n\n\t\tfunction onInput( event ) {\n\t\t\tconst { inputType, type } = event;\n\t\t\tconst {\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\tformatTypes,\n\t\t\t} = propsRef.current;\n\n\t\t\t// Only run input rules when inserting text.\n\t\t\tif ( inputType !== 'insertText' && type !== 'compositionend' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( __unstableAllowPrefixTransformations && inputRule ) {\n\t\t\t\tinputRule();\n\t\t\t}\n\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstableInputRule } ) => {\n\t\t\t\t\tif ( __unstableInputRule ) {\n\t\t\t\t\t\taccumlator = __unstableInputRule( accumlator );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tpreventEventDiscovery( value )\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t\tonChange( {\n\t\t\t\t\t...transformed,\n\t\t\t\t\tactiveFormats: value.activeFormats,\n\t\t\t\t} );\n\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'input', onInput );\n\t\telement.addEventListener( 'compositionend', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'input', onInput );\n\t\t\telement.removeEventListener( 'compositionend', onInput );\n\t\t};\n\t}, [] );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"names":["findSelection","blocks","i","length","attributeKey","attributes","replace","START_OF_SELECTED_AREA","clientId","nestedSelection","innerBlocks","useInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","blockEditorStore","propsRef","current","element","inputRule","getValue","onReplace","selectionChange","value","start","text","characterBefore","slice","trimmedTextBefore","trim","prefixTransforms","filter","type","transformation","prefix","content","block","transform","onInput","event","inputType","onChange","__unstableAllowPrefixTransformations","formatTypes","transformed","reduce","accumlator","__unstableInputRule","activeFormats","addEventListener","removeEventListener"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { insert, toHTMLString } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { preventEventDiscovery } from './prevent-event-discovery';\nimport {\n\tretrieveSelectedAttribute,\n\tSTART_OF_SELECTED_AREA,\n} from '../../utils/selection';\n\nfunction findSelection( blocks ) {\n\tlet i = blocks.length;\n\n\twhile ( i-- ) {\n\t\tconst attributeKey = retrieveSelectedAttribute(\n\t\t\tblocks[ i ].attributes\n\t\t);\n\n\t\tif ( attributeKey ) {\n\t\t\tblocks[ i ].attributes[ attributeKey ] = blocks[ i ].attributes[\n\t\t\t\tattributeKey\n\t\t\t].replace( START_OF_SELECTED_AREA, '' );\n\t\t\treturn blocks[ i ].clientId;\n\t\t}\n\n\t\tconst nestedSelection = findSelection( blocks[ i ].innerBlocks );\n\n\t\tif ( nestedSelection ) {\n\t\t\treturn nestedSelection;\n\t\t}\n\t}\n}\n\nexport function useInputRules( props ) {\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction inputRule() {\n\t\t\tconst { getValue, onReplace, selectionChange } = propsRef.current;\n\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We must use getValue() here because value may be update\n\t\t\t// asynchronously.\n\t\t\tconst value = getValue();\n\t\t\tconst { start, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = toHTMLString( {\n\t\t\t\tvalue: insert( value, START_OF_SELECTED_AREA, 0, start ),\n\t\t\t} );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tselectionChange( findSelection( [ block ] ) );\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t}\n\n\t\tfunction onInput( event ) {\n\t\t\tconst { inputType, type } = event;\n\t\t\tconst {\n\t\t\t\tgetValue,\n\t\t\t\tonChange,\n\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\tformatTypes,\n\t\t\t} = propsRef.current;\n\n\t\t\t// Only run input rules when inserting text.\n\t\t\tif ( inputType !== 'insertText' && type !== 'compositionend' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( __unstableAllowPrefixTransformations && inputRule ) {\n\t\t\t\tinputRule();\n\t\t\t}\n\n\t\t\tconst value = getValue();\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstableInputRule } ) => {\n\t\t\t\t\tif ( __unstableInputRule ) {\n\t\t\t\t\t\taccumlator = __unstableInputRule( accumlator );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tpreventEventDiscovery( value )\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t\tonChange( {\n\t\t\t\t\t...transformed,\n\t\t\t\t\tactiveFormats: value.activeFormats,\n\t\t\t\t} );\n\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'input', onInput );\n\t\telement.addEventListener( 'compositionend', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'input', onInput );\n\t\t\telement.removeEventListener( 'compositionend', onInput );\n\t\t};\n\t}, [] );\n}\n"]}
@@ -71,14 +71,14 @@ const DEFAULT_OPTION = {
71
71
  const STICKY_OPTION = {
72
72
  key: 'sticky',
73
73
  value: 'sticky',
74
- name: (0, _i18n.__)('Sticky'),
74
+ name: (0, _i18n._x)('Sticky', 'Name for the value of the CSS position property'),
75
75
  className: OPTION_CLASSNAME,
76
76
  __experimentalHint: (0, _i18n.__)('The block will stick to the top of the window instead of scrolling.')
77
77
  };
78
78
  const FIXED_OPTION = {
79
79
  key: 'fixed',
80
80
  value: 'fixed',
81
- name: (0, _i18n.__)('Fixed'),
81
+ name: (0, _i18n._x)('Fixed', 'Name for the value of the CSS position property'),
82
82
  className: OPTION_CLASSNAME,
83
83
  __experimentalHint: (0, _i18n.__)('The block will not move when the page is scrolled.')
84
84
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/position.js"],"names":["CustomSelectControl","componentsPrivateApis","POSITION_SUPPORT_KEY","OPTION_CLASSNAME","DEFAULT_OPTION","key","value","name","className","STICKY_OPTION","__experimentalHint","FIXED_OPTION","POSITION_SIDES","VALID_POSITION_TYPES","getPositionCSS","selector","style","output","type","positionType","position","includes","forEach","side","undefined","hasStickyPositionSupport","blockType","support","sticky","hasFixedPositionSupport","fixed","hasPositionSupport","hasPositionValue","props","attributes","hasStickyOrFixedPositionValue","resetPosition","setAttributes","top","right","bottom","left","useIsPositionDisabled","blockName","allowFixed","allowSticky","isDisabled","PositionPanel","clientId","hasParents","select","getBlockParents","blockEditorStore","parents","length","options","availableOptions","push","onChangeType","next","placementValue","newStyle","selectedOption","find","option","Platform","web","selectedItem","native","withInspectorControls","BlockEdit","positionSupport","showPositionControls","withPositionStyles","BlockListBlock","hasPositionBlockSupport","allowPositionStyles","id","element","BlockList","__unstableElementContext","positionSelector","css"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tBaseControl,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseContext,\n\tuseMemo,\n\tcreatePortal,\n\tPlatform,\n} from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../components/block-list';\nimport useSetting from '../components/use-setting';\nimport InspectorControls from '../components/inspector-controls';\nimport { cleanEmptyObject } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { store as blockEditorStore } from '../store';\n\nconst { CustomSelectControl } = unlock( componentsPrivateApis );\n\nconst POSITION_SUPPORT_KEY = 'position';\n\nconst OPTION_CLASSNAME =\n\t'block-editor-hooks__position-selection__select-control__option';\n\nconst DEFAULT_OPTION = {\n\tkey: 'default',\n\tvalue: '',\n\tname: __( 'Default' ),\n\tclassName: OPTION_CLASSNAME,\n};\n\nconst STICKY_OPTION = {\n\tkey: 'sticky',\n\tvalue: 'sticky',\n\tname: __( 'Sticky' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will stick to the top of the window instead of scrolling.'\n\t),\n};\n\nconst FIXED_OPTION = {\n\tkey: 'fixed',\n\tvalue: 'fixed',\n\tname: __( 'Fixed' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will not move when the page is scrolled.'\n\t),\n};\n\nconst POSITION_SIDES = [ 'top', 'right', 'bottom', 'left' ];\nconst VALID_POSITION_TYPES = [ 'sticky', 'fixed' ];\n\n/**\n * Get calculated position CSS.\n *\n * @param {Object} props Component props.\n * @param {string} props.selector Selector to use.\n * @param {Object} props.style Style object.\n * @return {string} The generated CSS rules.\n */\nexport function getPositionCSS( { selector, style } ) {\n\tlet output = '';\n\n\tconst { type: positionType } = style?.position || {};\n\n\tif ( ! VALID_POSITION_TYPES.includes( positionType ) ) {\n\t\treturn output;\n\t}\n\n\toutput += `${ selector } {`;\n\toutput += `position: ${ positionType };`;\n\n\tPOSITION_SIDES.forEach( ( side ) => {\n\t\tif ( style?.position?.[ side ] !== undefined ) {\n\t\t\toutput += `${ side }: ${ style.position[ side ] };`;\n\t\t}\n\t} );\n\n\tif ( positionType === 'sticky' || positionType === 'fixed' ) {\n\t\t// TODO: Replace hard-coded z-index value with a z-index preset approach in theme.json.\n\t\toutput += `z-index: 10`;\n\t}\n\toutput += `}`;\n\n\treturn output;\n}\n\n/**\n * Determines if there is sticky position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasStickyPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.sticky );\n}\n\n/**\n * Determines if there is fixed position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasFixedPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.fixed );\n}\n\n/**\n * Determines if there is position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! support;\n}\n\n/**\n * Checks if there is a current value in the position block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a position value set.\n */\nexport function hasPositionValue( props ) {\n\treturn props.attributes.style?.position?.type !== undefined;\n}\n\n/**\n * Checks if the block is currently set to a sticky or fixed position.\n * This check is helpful for determining how to position block toolbars or other elements.\n *\n * @param {Object} attributes Block attributes.\n * @return {boolean} Whether or not the block is set to a sticky or fixed position.\n */\nexport function hasStickyOrFixedPositionValue( attributes ) {\n\tconst positionType = attributes.style?.position?.type;\n\treturn positionType === 'sticky' || positionType === 'fixed';\n}\n\n/**\n * Resets the position block support attributes. This can be used when disabling\n * the position support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetPosition( { attributes = {}, setAttributes } ) {\n\tconst { style = {} } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: undefined,\n\t\t\t\ttop: undefined,\n\t\t\t\tright: undefined,\n\t\t\t\tbottom: undefined,\n\t\t\t\tleft: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if position settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether padding setting is disabled.\n */\nexport function useIsPositionDisabled( { name: blockName } = {} ) {\n\tconst allowFixed = useSetting( 'position.fixed' );\n\tconst allowSticky = useSetting( 'position.sticky' );\n\tconst isDisabled = ! allowFixed && ! allowSticky;\n\n\treturn ! hasPositionSupport( blockName ) || isDisabled;\n}\n\n/*\n * Position controls rendered in an inspector control panel.\n *\n * @param {Object} props\n *\n * @return {WPElement} Position panel.\n */\nexport function PositionPanel( props ) {\n\tconst {\n\t\tattributes: { style = {} },\n\t\tclientId,\n\t\tname: blockName,\n\t\tsetAttributes,\n\t} = props;\n\n\tconst allowFixed = hasFixedPositionSupport( blockName );\n\tconst allowSticky = hasStickyPositionSupport( blockName );\n\tconst value = style?.position?.type;\n\n\tconst { hasParents } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParents } = select( blockEditorStore );\n\t\t\tconst parents = getBlockParents( clientId );\n\t\t\treturn {\n\t\t\t\thasParents: parents.length,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst options = useMemo( () => {\n\t\tconst availableOptions = [ DEFAULT_OPTION ];\n\t\t// Only display sticky option if the block has no parents (is at the root of the document),\n\t\t// or if the block already has a sticky position value set.\n\t\tif (\n\t\t\t( allowSticky && ! hasParents ) ||\n\t\t\tvalue === STICKY_OPTION.value\n\t\t) {\n\t\t\tavailableOptions.push( STICKY_OPTION );\n\t\t}\n\t\tif ( allowFixed || value === FIXED_OPTION.value ) {\n\t\t\tavailableOptions.push( FIXED_OPTION );\n\t\t}\n\t\treturn availableOptions;\n\t}, [ allowFixed, allowSticky, hasParents, value ] );\n\n\tconst onChangeType = ( next ) => {\n\t\t// For now, use a hard-coded `0px` value for the position.\n\t\t// `0px` is preferred over `0` as it can be used in `calc()` functions.\n\t\t// In the future, it could be useful to allow for an offset value.\n\t\tconst placementValue = '0px';\n\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: next,\n\t\t\t\ttop:\n\t\t\t\t\tnext === 'sticky' || next === 'fixed'\n\t\t\t\t\t\t? placementValue\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\tconst selectedOption = value\n\t\t? options.find( ( option ) => option.value === value ) || DEFAULT_OPTION\n\t\t: DEFAULT_OPTION;\n\n\t// Only display position controls if there is at least one option to choose from.\n\treturn Platform.select( {\n\t\tweb:\n\t\t\toptions.length > 1 ? (\n\t\t\t\t<InspectorControls group=\"position\">\n\t\t\t\t\t<BaseControl className=\"block-editor-hooks__position-selection\">\n\t\t\t\t\t\t<CustomSelectControl\n\t\t\t\t\t\t\t__nextUnconstrainedWidth\n\t\t\t\t\t\t\t__next36pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"block-editor-hooks__position-selection__select-control\"\n\t\t\t\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tdescribedBy={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Currently selected position.\n\t\t\t\t\t\t\t\t__( 'Currently selected position: %s' ),\n\t\t\t\t\t\t\t\tselectedOption.name\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\tvalue={ selectedOption }\n\t\t\t\t\t\t\t__experimentalShowSelectedHint\n\t\t\t\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\t\t\t\tonChangeType( selectedItem.value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</InspectorControls>\n\t\t\t) : null,\n\t\tnative: null,\n\t} );\n}\n\n/**\n * Override the default edit UI to include position controls.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst positionSupport = hasBlockSupport(\n\t\t\tblockName,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst showPositionControls =\n\t\t\tpositionSupport && ! useIsPositionDisabled( props );\n\n\t\treturn [\n\t\t\tshowPositionControls && (\n\t\t\t\t<PositionPanel key=\"position\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the position styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withPositionStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst hasPositionBlockSupport = hasBlockSupport(\n\t\t\tname,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst allowPositionStyles =\n\t\t\thasPositionBlockSupport && ! useIsPositionDisabled( props );\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\n\t\t// Higher specificity to override defaults in editor UI.\n\t\tconst positionSelector = `.wp-container-${ id }.wp-container-${ id }`;\n\n\t\t// Get CSS string for the current position values.\n\t\tlet css;\n\t\tif ( allowPositionStyles ) {\n\t\t\tcss =\n\t\t\t\tgetPositionCSS( {\n\t\t\t\t\tselector: positionSelector,\n\t\t\t\t\tstyle: attributes?.style,\n\t\t\t\t} ) || '';\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-${ id }` ]: allowPositionStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t[ `is-position-${ attributes?.style?.position?.type }` ]:\n\t\t\t\tallowPositionStyles &&\n\t\t\t\t!! css &&\n\t\t\t\t!! attributes?.style?.position?.type,\n\t\t} );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ allowPositionStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal( <style>{ css }</style>, element ) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t}\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/position/with-position-styles',\n\twithPositionStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/position/with-inspector-controls',\n\twithInspectorControls\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/position.js"],"names":["CustomSelectControl","componentsPrivateApis","POSITION_SUPPORT_KEY","OPTION_CLASSNAME","DEFAULT_OPTION","key","value","name","className","STICKY_OPTION","__experimentalHint","FIXED_OPTION","POSITION_SIDES","VALID_POSITION_TYPES","getPositionCSS","selector","style","output","type","positionType","position","includes","forEach","side","undefined","hasStickyPositionSupport","blockType","support","sticky","hasFixedPositionSupport","fixed","hasPositionSupport","hasPositionValue","props","attributes","hasStickyOrFixedPositionValue","resetPosition","setAttributes","top","right","bottom","left","useIsPositionDisabled","blockName","allowFixed","allowSticky","isDisabled","PositionPanel","clientId","hasParents","select","getBlockParents","blockEditorStore","parents","length","options","availableOptions","push","onChangeType","next","placementValue","newStyle","selectedOption","find","option","Platform","web","selectedItem","native","withInspectorControls","BlockEdit","positionSupport","showPositionControls","withPositionStyles","BlockListBlock","hasPositionBlockSupport","allowPositionStyles","id","element","BlockList","__unstableElementContext","positionSelector","css"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tBaseControl,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseContext,\n\tuseMemo,\n\tcreatePortal,\n\tPlatform,\n} from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../components/block-list';\nimport useSetting from '../components/use-setting';\nimport InspectorControls from '../components/inspector-controls';\nimport { cleanEmptyObject } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { store as blockEditorStore } from '../store';\n\nconst { CustomSelectControl } = unlock( componentsPrivateApis );\n\nconst POSITION_SUPPORT_KEY = 'position';\n\nconst OPTION_CLASSNAME =\n\t'block-editor-hooks__position-selection__select-control__option';\n\nconst DEFAULT_OPTION = {\n\tkey: 'default',\n\tvalue: '',\n\tname: __( 'Default' ),\n\tclassName: OPTION_CLASSNAME,\n};\n\nconst STICKY_OPTION = {\n\tkey: 'sticky',\n\tvalue: 'sticky',\n\tname: _x( 'Sticky', 'Name for the value of the CSS position property' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will stick to the top of the window instead of scrolling.'\n\t),\n};\n\nconst FIXED_OPTION = {\n\tkey: 'fixed',\n\tvalue: 'fixed',\n\tname: _x( 'Fixed', 'Name for the value of the CSS position property' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will not move when the page is scrolled.'\n\t),\n};\n\nconst POSITION_SIDES = [ 'top', 'right', 'bottom', 'left' ];\nconst VALID_POSITION_TYPES = [ 'sticky', 'fixed' ];\n\n/**\n * Get calculated position CSS.\n *\n * @param {Object} props Component props.\n * @param {string} props.selector Selector to use.\n * @param {Object} props.style Style object.\n * @return {string} The generated CSS rules.\n */\nexport function getPositionCSS( { selector, style } ) {\n\tlet output = '';\n\n\tconst { type: positionType } = style?.position || {};\n\n\tif ( ! VALID_POSITION_TYPES.includes( positionType ) ) {\n\t\treturn output;\n\t}\n\n\toutput += `${ selector } {`;\n\toutput += `position: ${ positionType };`;\n\n\tPOSITION_SIDES.forEach( ( side ) => {\n\t\tif ( style?.position?.[ side ] !== undefined ) {\n\t\t\toutput += `${ side }: ${ style.position[ side ] };`;\n\t\t}\n\t} );\n\n\tif ( positionType === 'sticky' || positionType === 'fixed' ) {\n\t\t// TODO: Replace hard-coded z-index value with a z-index preset approach in theme.json.\n\t\toutput += `z-index: 10`;\n\t}\n\toutput += `}`;\n\n\treturn output;\n}\n\n/**\n * Determines if there is sticky position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasStickyPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.sticky );\n}\n\n/**\n * Determines if there is fixed position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasFixedPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.fixed );\n}\n\n/**\n * Determines if there is position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! support;\n}\n\n/**\n * Checks if there is a current value in the position block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a position value set.\n */\nexport function hasPositionValue( props ) {\n\treturn props.attributes.style?.position?.type !== undefined;\n}\n\n/**\n * Checks if the block is currently set to a sticky or fixed position.\n * This check is helpful for determining how to position block toolbars or other elements.\n *\n * @param {Object} attributes Block attributes.\n * @return {boolean} Whether or not the block is set to a sticky or fixed position.\n */\nexport function hasStickyOrFixedPositionValue( attributes ) {\n\tconst positionType = attributes.style?.position?.type;\n\treturn positionType === 'sticky' || positionType === 'fixed';\n}\n\n/**\n * Resets the position block support attributes. This can be used when disabling\n * the position support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetPosition( { attributes = {}, setAttributes } ) {\n\tconst { style = {} } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: undefined,\n\t\t\t\ttop: undefined,\n\t\t\t\tright: undefined,\n\t\t\t\tbottom: undefined,\n\t\t\t\tleft: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if position settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether padding setting is disabled.\n */\nexport function useIsPositionDisabled( { name: blockName } = {} ) {\n\tconst allowFixed = useSetting( 'position.fixed' );\n\tconst allowSticky = useSetting( 'position.sticky' );\n\tconst isDisabled = ! allowFixed && ! allowSticky;\n\n\treturn ! hasPositionSupport( blockName ) || isDisabled;\n}\n\n/*\n * Position controls rendered in an inspector control panel.\n *\n * @param {Object} props\n *\n * @return {WPElement} Position panel.\n */\nexport function PositionPanel( props ) {\n\tconst {\n\t\tattributes: { style = {} },\n\t\tclientId,\n\t\tname: blockName,\n\t\tsetAttributes,\n\t} = props;\n\n\tconst allowFixed = hasFixedPositionSupport( blockName );\n\tconst allowSticky = hasStickyPositionSupport( blockName );\n\tconst value = style?.position?.type;\n\n\tconst { hasParents } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParents } = select( blockEditorStore );\n\t\t\tconst parents = getBlockParents( clientId );\n\t\t\treturn {\n\t\t\t\thasParents: parents.length,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst options = useMemo( () => {\n\t\tconst availableOptions = [ DEFAULT_OPTION ];\n\t\t// Only display sticky option if the block has no parents (is at the root of the document),\n\t\t// or if the block already has a sticky position value set.\n\t\tif (\n\t\t\t( allowSticky && ! hasParents ) ||\n\t\t\tvalue === STICKY_OPTION.value\n\t\t) {\n\t\t\tavailableOptions.push( STICKY_OPTION );\n\t\t}\n\t\tif ( allowFixed || value === FIXED_OPTION.value ) {\n\t\t\tavailableOptions.push( FIXED_OPTION );\n\t\t}\n\t\treturn availableOptions;\n\t}, [ allowFixed, allowSticky, hasParents, value ] );\n\n\tconst onChangeType = ( next ) => {\n\t\t// For now, use a hard-coded `0px` value for the position.\n\t\t// `0px` is preferred over `0` as it can be used in `calc()` functions.\n\t\t// In the future, it could be useful to allow for an offset value.\n\t\tconst placementValue = '0px';\n\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: next,\n\t\t\t\ttop:\n\t\t\t\t\tnext === 'sticky' || next === 'fixed'\n\t\t\t\t\t\t? placementValue\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\tconst selectedOption = value\n\t\t? options.find( ( option ) => option.value === value ) || DEFAULT_OPTION\n\t\t: DEFAULT_OPTION;\n\n\t// Only display position controls if there is at least one option to choose from.\n\treturn Platform.select( {\n\t\tweb:\n\t\t\toptions.length > 1 ? (\n\t\t\t\t<InspectorControls group=\"position\">\n\t\t\t\t\t<BaseControl className=\"block-editor-hooks__position-selection\">\n\t\t\t\t\t\t<CustomSelectControl\n\t\t\t\t\t\t\t__nextUnconstrainedWidth\n\t\t\t\t\t\t\t__next36pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"block-editor-hooks__position-selection__select-control\"\n\t\t\t\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tdescribedBy={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Currently selected position.\n\t\t\t\t\t\t\t\t__( 'Currently selected position: %s' ),\n\t\t\t\t\t\t\t\tselectedOption.name\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\tvalue={ selectedOption }\n\t\t\t\t\t\t\t__experimentalShowSelectedHint\n\t\t\t\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\t\t\t\tonChangeType( selectedItem.value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</InspectorControls>\n\t\t\t) : null,\n\t\tnative: null,\n\t} );\n}\n\n/**\n * Override the default edit UI to include position controls.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst positionSupport = hasBlockSupport(\n\t\t\tblockName,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst showPositionControls =\n\t\t\tpositionSupport && ! useIsPositionDisabled( props );\n\n\t\treturn [\n\t\t\tshowPositionControls && (\n\t\t\t\t<PositionPanel key=\"position\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the position styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withPositionStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst hasPositionBlockSupport = hasBlockSupport(\n\t\t\tname,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst allowPositionStyles =\n\t\t\thasPositionBlockSupport && ! useIsPositionDisabled( props );\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\n\t\t// Higher specificity to override defaults in editor UI.\n\t\tconst positionSelector = `.wp-container-${ id }.wp-container-${ id }`;\n\n\t\t// Get CSS string for the current position values.\n\t\tlet css;\n\t\tif ( allowPositionStyles ) {\n\t\t\tcss =\n\t\t\t\tgetPositionCSS( {\n\t\t\t\t\tselector: positionSelector,\n\t\t\t\t\tstyle: attributes?.style,\n\t\t\t\t} ) || '';\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-${ id }` ]: allowPositionStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t[ `is-position-${ attributes?.style?.position?.type }` ]:\n\t\t\t\tallowPositionStyles &&\n\t\t\t\t!! css &&\n\t\t\t\t!! attributes?.style?.position?.type,\n\t\t} );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ allowPositionStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal( <style>{ css }</style>, element ) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t}\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/position/with-position-styles',\n\twithPositionStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/position/with-inspector-controls',\n\twithInspectorControls\n);\n"]}