@wordpress/block-editor 9.6.0 → 9.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/components/block-list/block.js +12 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.native.js +1 -1
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-popover/inbetween.js +1 -1
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-styles/index.js +3 -6
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-types-list/index.js +1 -1
- package/build/components/block-types-list/index.js.map +1 -1
- package/build/components/border-radius-control/index.js +3 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/colors/utils.js +6 -2
- package/build/components/colors/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +7 -4
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +5 -2
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/font-appearance-control/index.js +10 -4
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/image-size-control/index.js +3 -1
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/index.js +13 -6
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +11 -4
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/index.native.js +8 -3
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter-list-item/index.js +2 -19
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +6 -3
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/line-height-control/index.js +6 -3
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/is-url-like.js +1 -7
- package/build/components/link-control/is-url-like.js.map +1 -1
- package/build/components/link-control/use-search-handler.js +1 -7
- package/build/components/link-control/use-search-handler.js.map +1 -1
- package/build/components/list-view/expander.js +3 -1
- package/build/components/list-view/expander.js.map +1 -1
- package/build/components/media-upload/index.native.js +8 -3
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +2 -2
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/{use-no-recursive-renders → recursion-provider}/index.js +40 -18
- package/build/components/recursion-provider/index.js.map +1 -0
- package/build/components/rich-text/index.js +6 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +3 -1
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-before-input-rules.js +110 -0
- package/build/components/rich-text/use-before-input-rules.js.map +1 -0
- package/build/components/text-decoration-control/index.js +3 -1
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +3 -1
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +4 -1
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +4 -25
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-drag-selection.js +9 -2
- package/build/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +3 -1
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/hooks/layout.js +9 -2
- package/build/hooks/layout.js.map +1 -1
- package/build/utils/block-variation-transforms.js +15 -9
- package/build/utils/block-variation-transforms.js.map +1 -1
- package/build/utils/pasting.js +9 -1
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/block-list/block.js +13 -3
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.native.js +1 -1
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +1 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-styles/index.js +4 -7
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-types-list/index.js +1 -1
- package/build-module/components/block-types-list/index.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +4 -2
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/colors/utils.js +7 -3
- package/build-module/components/colors/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +7 -4
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +5 -2
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +7 -4
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/image-size-control/index.js +3 -1
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +1 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/index.native.js +9 -2
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +1 -17
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +5 -3
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +5 -3
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/is-url-like.js +1 -6
- package/build-module/components/link-control/is-url-like.js.map +1 -1
- package/build-module/components/link-control/use-search-handler.js +1 -6
- package/build-module/components/link-control/use-search-handler.js.map +1 -1
- package/build-module/components/list-view/expander.js +3 -2
- package/build-module/components/list-view/expander.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +9 -2
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +2 -2
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -19
- package/build-module/components/recursion-provider/index.js.map +1 -0
- package/build-module/components/rich-text/index.js +5 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +3 -1
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-before-input-rules.js +96 -0
- package/build-module/components/rich-text/use-before-input-rules.js.map +1 -0
- package/build-module/components/text-decoration-control/index.js +4 -2
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +4 -2
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +4 -1
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +5 -26
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-drag-selection.js +9 -2
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +3 -1
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/hooks/layout.js +9 -2
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/utils/block-variation-transforms.js +14 -7
- package/build-module/utils/block-variation-transforms.js.map +1 -1
- package/build-module/utils/pasting.js +9 -1
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/style-rtl.css +39 -7
- package/build-style/style.css +39 -7
- package/package.json +28 -28
- package/src/components/block-list/block.js +13 -2
- package/src/components/block-list/index.native.js +1 -1
- package/src/components/block-popover/inbetween.js +1 -0
- package/src/components/block-popover/style.scss +25 -2
- package/src/components/block-styles/index.js +4 -7
- package/src/components/block-styles/style.scss +10 -0
- package/src/components/block-types-list/index.js +1 -1
- package/src/components/border-radius-control/index.js +4 -1
- package/src/components/color-palette/test/__snapshots__/control.js.snap +93 -77
- package/src/components/colors/utils.js +5 -2
- package/src/components/colors-gradients/control.js +12 -8
- package/src/components/colors-gradients/dropdown.js +7 -2
- package/src/components/colors-gradients/style.scss +27 -5
- package/src/components/colors-gradients/test/control.js +3 -3
- package/src/components/font-appearance-control/index.js +3 -0
- package/src/components/image-size-control/README.md +7 -0
- package/src/components/image-size-control/index.js +2 -0
- package/src/components/index.js +4 -1
- package/src/components/index.native.js +4 -1
- package/src/components/inserter/index.native.js +7 -2
- package/src/components/inserter-list-item/index.js +1 -17
- package/src/components/letter-spacing-control/index.js +2 -0
- package/src/components/line-height-control/index.js +2 -0
- package/src/components/link-control/is-url-like.js +1 -6
- package/src/components/link-control/use-search-handler.js +1 -6
- package/src/components/list-view/expander.js +4 -2
- package/src/components/media-upload/index.native.js +7 -3
- package/src/components/preview-options/index.js +2 -2
- package/src/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -28
- package/src/components/{use-no-recursive-renders/test/use-no-recursive-renders.js → recursion-provider/test/index.js} +5 -6
- package/src/components/rich-text/README.md +13 -1
- package/src/components/rich-text/index.js +2 -0
- package/src/components/rich-text/index.native.js +2 -0
- package/src/components/rich-text/use-before-input-rules.js +91 -0
- package/src/components/text-decoration-control/index.js +4 -2
- package/src/components/text-transform-control/index.js +4 -2
- package/src/components/url-popover/image-url-input-ui.js +3 -0
- package/src/components/writing-flow/use-arrow-nav.js +4 -33
- package/src/components/writing-flow/use-drag-selection.js +7 -1
- package/src/components/writing-flow/use-select-all.js +2 -1
- package/src/hooks/layout.js +8 -2
- package/src/utils/block-variation-transforms.js +13 -6
- package/src/utils/pasting.js +10 -1
- package/src/utils/test/block-variation-transforms.js +24 -0
- package/src/utils/test/pasting.js +10 -0
- package/build/components/use-no-recursive-renders/index.js.map +0 -1
- package/build-module/components/use-no-recursive-renders/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.native.js"],"names":["AccessibilityInfo","Platform","Text","delay","__","_x","Dropdown","ToolbarButton","Picker","Component","withDispatch","withSelect","compose","withPreferredColorScheme","isUnmodifiedDefaultBlock","Icon","plus","plusCircle","plusCircleFilled","insertAfter","insertBefore","setBlockTypeImpressions","styles","InserterMenu","BlockInsertionPoint","store","blockEditorStore","VOICE_OVER_ANNOUNCEMENT_DELAY","defaultRenderToggle","onToggle","disabled","style","containerStyle","onLongPress","useExpandedMode","expandedModeViewProps","icon","customContainerStyles","fixedRatio","expandedModeViewText","hint","testID","Inserter","constructor","arguments","bind","renderInserterToggle","renderContent","getInsertionOptions","addBeforeOption","value","label","replaceCurrentOption","addAfterOption","addToBeginningOption","addToEndOption","isAnyBlockSelected","isSelectedBlockReplaceable","props","getInsertionIndex","insertionType","insertionIndexDefault","insertionIndexStart","insertionIndexBefore","insertionIndexAfter","insertionIndexEnd","shouldReplaceBlock","isOpen","blockTypeImpressions","updateSettings","impressionsRemain","Object","values","some","count","decrementedImpressions","entries","reduce","acc","blockName","Math","max","impressions","onInserterToggledAnnouncement","isScreenReaderEnabled","done","isEnabled","isIOS","OS","announcement","announceForAccessibility","renderToggle","getStylesFromColorScheme","showSeparator","onPress","setState","destinationRootClientId","insertionIndex","picker","presentPicker","onPickerSelect","instance","onClose","clientId","isAppender","state","render","dispatch","select","rootClientId","getBlockRootClientId","getBlockSelectionEnd","getBlockOrder","getBlockIndex","getBlock","getSettings","getBlockEditorSettings","end","selectedBlockIndex","endOfRootIndex","length","isSelectedUnmodifiedDefaultBlock","undefined","getDefaultInsertionIndex","__experimentalShouldInsertAtTheTop","shouldInsertAtTheTop"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,iBAAT,EAA4BC,QAA5B,EAAsCC,IAAtC,QAAkD,cAAlD;AACA,SAASC,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,SAASC,EAAT,EAAaC,EAAb,QAAuB,iBAAvB;AACA,SAASC,QAAT,EAAmBC,aAAnB,EAAkCC,MAAlC,QAAgD,uBAAhD;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,YAAT,EAAuBC,UAAvB,QAAyC,iBAAzC;AACA,SAASC,OAAT,EAAkBC,wBAAlB,QAAkD,oBAAlD;AACA,SAASC,wBAAT,QAAyC,mBAAzC;AACA,SACCC,IADD,EAECC,IAFD,EAGCC,UAHD,EAICC,gBAJD,EAKCC,WALD,EAMCC,YAND,QAOO,kBAPP;AAQA,SAASC,uBAAT,QAAwC,gCAAxC;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,cAAnB;AACA,OAAOC,YAAP,MAAyB,QAAzB;AACA,OAAOC,mBAAP,MAAgC,+BAAhC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,MAAMC,6BAA6B,GAAG,IAAtC;;AAEA,MAAMC,mBAAmB,GAAG,QAOrB;AAAA,MAPuB;AAC7BC,IAAAA,QAD6B;AAE7BC,IAAAA,QAF6B;AAG7BC,IAAAA,KAH6B;AAI7BC,IAAAA,cAJ6B;AAK7BC,IAAAA,WAL6B;AAM7BC,IAAAA;AAN6B,GAOvB;AACN;AACA;AACA;AACA;AACA,QAAMC,qBAAqB,GAAGD,eAAe,IAAI;AAChDE,IAAAA,IAAI,EAAE,cAAC,IAAD;AAAM,MAAA,IAAI,EAAGpB,IAAb;AAAoB,MAAA,KAAK,EAAGe;AAA5B,MAD0C;AAEhDM,IAAAA,qBAAqB,EAAEL,cAFyB;AAGhDM,IAAAA,UAAU,EAAE;AAHoC,GAAjD;AAKA,QAAMC,oBAAoB,GACzB,cAAC,IAAD;AAAM,IAAA,KAAK,EAAGjB,MAAM,CAAE,sCAAF;AAApB,KACGlB,EAAE,CAAE,YAAF,CADL,CADD;AAMA,SACC,cAAC,aAAD;AACC,IAAA,KAAK,EAAGC,EAAE,CACT,WADS,EAET,yCAFS,CADX;AAKC,IAAA,IAAI,EAAG,cAAC,IAAD;AAAM,MAAA,IAAI,EAAGa,gBAAb;AAAgC,MAAA,KAAK,EAAGa;AAAxC,MALR;AAMC,IAAA,OAAO,EAAGF,QANX;AAOC,IAAA,UAAU,EAAG;AACZW,MAAAA,IAAI,EAAEpC,EAAE,CAAE,2BAAF,CADI;AAEZ;AACA;AACAqC,MAAAA,MAAM,EAAE,kBAJI;AAKZR,MAAAA;AALY,KAPd;AAcC,IAAA,UAAU,EAAGH;AAdd,KAeMK,qBAfN,GAiBGD,eAAe,IAAIK,oBAjBtB,CADD;AAqBA,CA5CD;;AA8CA,OAAO,MAAMG,QAAN,SAAuBjC,SAAvB,CAAiC;AACvCkC,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AAEA,SAAKf,QAAL,GAAgB,KAAKA,QAAL,CAAcgB,IAAd,CAAoB,IAApB,CAAhB;AACA,SAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BD,IAA1B,CAAgC,IAAhC,CAA5B;AACA,SAAKE,aAAL,GAAqB,KAAKA,aAAL,CAAmBF,IAAnB,CAAyB,IAAzB,CAArB;AACA;;AAEDG,EAAAA,mBAAmB,GAAG;AACrB,UAAMC,eAAe,GAAG;AACvBC,MAAAA,KAAK,EAAE,QADgB;AAEvBC,MAAAA,KAAK,EAAE/C,EAAE,CAAE,kBAAF,CAFc;AAGvBgC,MAAAA,IAAI,EAAEnB;AAHiB,KAAxB;AAMA,UAAMmC,oBAAoB,GAAG;AAC5BF,MAAAA,KAAK,EAAE,SADqB;AAE5BC,MAAAA,KAAK,EAAE/C,EAAE,CAAE,uBAAF,CAFmB;AAG5BgC,MAAAA,IAAI,EAAElB;AAHsB,KAA7B;AAMA,UAAMmC,cAAc,GAAG;AACtBH,MAAAA,KAAK,EAAE,OADe;AAEtBC,MAAAA,KAAK,EAAE/C,EAAE,CAAE,iBAAF,CAFa;AAGtBgC,MAAAA,IAAI,EAAEnB;AAHgB,KAAvB;AAMA,UAAMqC,oBAAoB,GAAG;AAC5BJ,MAAAA,KAAK,EAAE,OADqB;AAE5BC,MAAAA,KAAK,EAAE/C,EAAE,CAAE,kBAAF,CAFmB;AAG5BgC,MAAAA,IAAI,EAAEhB;AAHsB,KAA7B;AAMA,UAAMmC,cAAc,GAAG;AACtBL,MAAAA,KAAK,EAAE,KADe;AAEtBC,MAAAA,KAAK,EAAE/C,EAAE,CAAE,YAAF,CAFa;AAGtBgC,MAAAA,IAAI,EAAEjB;AAHgB,KAAvB;AAMA,UAAM;AAAEqC,MAAAA,kBAAF;AAAsBC,MAAAA;AAAtB,QAAqD,KAAKC,KAAhE;;AACA,QAAKF,kBAAL,EAA0B;AACzB,UAAKC,0BAAL,EAAkC;AACjC,eAAO,CACNH,oBADM,EAENL,eAFM,EAGNG,oBAHM,EAINC,cAJM,EAKNE,cALM,CAAP;AAOA;;AACD,aAAO,CACND,oBADM,EAENL,eAFM,EAGNI,cAHM,EAINE,cAJM,CAAP;AAMA;;AACD,WAAO,CAAED,oBAAF,EAAwBC,cAAxB,CAAP;AACA;;AAEDI,EAAAA,iBAAiB,CAAEC,aAAF,EAAkB;AAClC,UAAM;AACLC,MAAAA,qBADK;AAELC,MAAAA,mBAFK;AAGLC,MAAAA,oBAHK;AAILC,MAAAA,mBAJK;AAKLC,MAAAA;AALK,QAMF,KAAKP,KANT;;AAOA,QAAKE,aAAa,KAAK,OAAvB,EAAiC;AAChC,aAAOE,mBAAP;AACA;;AACD,QAAKF,aAAa,KAAK,QAAlB,IAA8BA,aAAa,KAAK,SAArD,EAAiE;AAChE,aAAOG,oBAAP;AACA;;AACD,QAAKH,aAAa,KAAK,OAAvB,EAAiC;AAChC,aAAOI,mBAAP;AACA;;AACD,QAAKJ,aAAa,KAAK,KAAvB,EAA+B;AAC9B,aAAOK,iBAAP;AACA;;AACD,WAAOJ,qBAAP;AACA;;AAEDK,EAAAA,kBAAkB,CAAEN,aAAF,EAAkB;AACnC,UAAM;AAAEH,MAAAA;AAAF,QAAiC,KAAKC,KAA5C;;AACA,QAAKE,aAAa,KAAK,SAAvB,EAAmC;AAClC,aAAO,IAAP;AACA;;AACD,QAAKA,aAAa,KAAK,SAAlB,IAA+BH,0BAApC,EAAiE;AAChE,aAAO,IAAP;AACA;;AACD,WAAO,KAAP;AACA;;AAED5B,EAAAA,QAAQ,CAAEsC,MAAF,EAAW;AAClB,UAAM;AAAEC,MAAAA,oBAAF;AAAwBvC,MAAAA,QAAxB;AAAkCwC,MAAAA;AAAlC,QAAqD,KAAKX,KAAhE;;AAEA,QAAK,CAAES,MAAP,EAAgB;AACf,YAAMG,iBAAiB,GAAGC,MAAM,CAACC,MAAP,CACzBJ,oBADyB,EAExBK,IAFwB,CAEhBC,KAAF,IAAaA,KAAK,GAAG,CAFH,CAA1B;;AAIA,UAAKJ,iBAAL,EAAyB;AACxB,cAAMK,sBAAsB,GAAGJ,MAAM,CAACK,OAAP,CAC9BR,oBAD8B,EAE7BS,MAF6B,CAG9B,CAAEC,GAAF;AAAA,cAAO,CAAEC,SAAF,EAAaL,KAAb,CAAP;AAAA,iBAAmC,EAClC,GAAGI,GAD+B;AAElC,aAAEC,SAAF,GAAeC,IAAI,CAACC,GAAL,CAAUP,KAAK,GAAG,CAAlB,EAAqB,CAArB;AAFmB,WAAnC;AAAA,SAH8B,EAO9B,EAP8B,CAA/B,CADwB,CAWxB;;AACAL,QAAAA,cAAc,CAAE;AACfa,UAAAA,WAAW,EAAEP;AADE,SAAF,CAAd,CAZwB,CAgBxB;;AACAtD,QAAAA,uBAAuB,CAAEsD,sBAAF,CAAvB;AACA;AACD,KA3BiB,CA6BlB;;;AACA,QAAK9C,QAAL,EAAgB;AACfA,MAAAA,QAAQ,CAAEsC,MAAF,CAAR;AACA;;AACD,SAAKgB,6BAAL,CAAoChB,MAApC;AACA;;AAEDgB,EAAAA,6BAA6B,CAAEhB,MAAF,EAAW;AACvCnE,IAAAA,iBAAiB,CAACoF,qBAAlB,GAA0CC,IAA1C,CAAkDC,SAAF,IAAiB;AAChE,UAAKA,SAAL,EAAiB;AAChB,cAAMC,KAAK,GAAGtF,QAAQ,CAACuF,EAAT,KAAgB,KAA9B;AACA,cAAMC,YAAY,GAAGtB,MAAM,GACxB/D,EAAE,CAAE,+CAAF,CADsB,GAExBA,EAAE,CAAE,+BAAF,CAFL;AAGAD,QAAAA,KAAK,CACJ,MACCH,iBAAiB,CAAC0F,wBAAlB,CACCD,YADD,CAFG,EAKJF,KAAK,GAAG5D,6BAAH,GAAmC,CALpC,CAAL;AAOA;AACD,KAdD;AAeA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACCmB,EAAAA,oBAAoB,QAAyB;AAAA,QAAvB;AAAEjB,MAAAA,QAAF;AAAYsC,MAAAA;AAAZ,KAAuB;AAC5C,UAAM;AACLrC,MAAAA,QADK;AAEL6D,MAAAA,YAAY,GAAG/D,mBAFV;AAGLgE,MAAAA,wBAHK;AAILC,MAAAA,aAJK;AAKL3D,MAAAA;AALK,QAMF,KAAKwB,KANT;;AAOA,QAAKmC,aAAa,IAAI1B,MAAtB,EAA+B;AAC9B,aAAO,cAAC,mBAAD,OAAP;AACA;;AACD,UAAMpC,KAAK,GAAGG,eAAe,GAC1BZ,MAAM,CAAE,gDAAF,CADoB,GAE1BsE,wBAAwB,CACxBtE,MAAM,CAAE,sCAAF,CADkB,EAExBA,MAAM,CAAE,4CAAF,CAFkB,CAF3B;AAOA,UAAMU,cAAc,GAAG4D,wBAAwB,CAC9CtE,MAAM,CAAE,iCAAF,CADwC,EAE9CA,MAAM,CAAE,uCAAF,CAFwC,CAA/C;;AAKA,UAAMwE,OAAO,GAAG,MAAM;AACrB,WAAKC,QAAL,CACC;AACCC,QAAAA,uBAAuB,EAAE,KAAKtC,KAAL,CAAWsC,uBADrC;AAEC9B,QAAAA,kBAAkB,EAAE,KAAKA,kBAAL,CAAyB,SAAzB,CAFrB;AAGC+B,QAAAA,cAAc,EAAE,KAAKtC,iBAAL,CAAwB,SAAxB;AAHjB,OADD,EAMC9B,QAND;AAQA,KATD;;AAWA,UAAMI,WAAW,GAAG,MAAM;AACzB,UAAK,KAAKiE,MAAV,EAAmB;AAClB,aAAKA,MAAL,CAAYC,aAAZ;AACA;AACD,KAJD;;AAMA,UAAMC,cAAc,GAAKxC,aAAF,IAAqB;AAC3C,WAAKmC,QAAL,CACC;AACCC,QAAAA,uBAAuB,EAAE,KAAKtC,KAAL,CAAWsC,uBADrC;AAEC9B,QAAAA,kBAAkB,EACjB,KAAKA,kBAAL,CAAyBN,aAAzB,CAHF;AAICqC,QAAAA,cAAc,EAAE,KAAKtC,iBAAL,CAAwBC,aAAxB;AAJjB,OADD,EAOC/B,QAPD;AASA,KAVD;;AAYA,WACC,8BACG8D,YAAY,CAAE;AACf9D,MAAAA,QAAQ,EAAEiE,OADK;AAEf3B,MAAAA,MAFe;AAGfrC,MAAAA,QAHe;AAIfC,MAAAA,KAJe;AAKfC,MAAAA,cALe;AAMfC,MAAAA,WANe;AAOfC,MAAAA;AAPe,KAAF,CADf,EAUC,cAAC,MAAD;AACC,MAAA,GAAG,EAAKmE,QAAF,IAAkB,KAAKH,MAAL,GAAcG,QADvC;AAEC,MAAA,OAAO,EAAG,KAAKrD,mBAAL,EAFX;AAGC,MAAA,QAAQ,EAAGoD,cAHZ;AAIC,MAAA,gBAAgB;AAJjB,MAVD,CADD;AAmBA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACCrD,EAAAA,aAAa,QAAwB;AAAA,QAAtB;AAAEuD,MAAAA,OAAF;AAAWnC,MAAAA;AAAX,KAAsB;AACpC,UAAM;AAAEoC,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAA2B,KAAK9C,KAAtC;AACA,UAAM;AAAEsC,MAAAA,uBAAF;AAA2B9B,MAAAA,kBAA3B;AAA+C+B,MAAAA;AAA/C,QACL,KAAKQ,KADN;AAEA,WACC,cAAC,YAAD;AACC,MAAA,MAAM,EAAGtC,MADV;AAEC,MAAA,QAAQ,EAAGmC,OAFZ;AAGC,MAAA,SAAS,EAAGA,OAHb;AAIC,MAAA,YAAY,EAAGN,uBAJhB;AAKC,MAAA,QAAQ,EAAGO,QALZ;AAMC,MAAA,UAAU,EAAGC,UANd;AAOC,MAAA,kBAAkB,EAAGtC,kBAPtB;AAQC,MAAA,cAAc,EAAG+B;AARlB,MADD;AAYA;;AAEDS,EAAAA,MAAM,GAAG;AACR,WACC,cAAC,QAAD;AACC,MAAA,QAAQ,EAAG,KAAK7E,QADjB;AAEC,MAAA,WAAW,EAAGzB,EAAE,CAAE,aAAF,CAFjB;AAGC,MAAA,YAAY,EAAG,KAAK0C,oBAHrB;AAIC,MAAA,aAAa,EAAG,KAAKC;AAJtB,MADD;AAQA;;AA7QsC;AAgRxC,eAAenC,OAAO,CAAE,CACvBF,YAAY,CAAIiG,QAAF,IAAgB;AAC7B,QAAM;AAAEtC,IAAAA;AAAF,MAAqBsC,QAAQ,CAAEjF,gBAAF,CAAnC;AACA,SAAO;AAAE2C,IAAAA;AAAF,GAAP;AACA,CAHW,CADW,EAKvB1D,UAAU,CAAE,CAAEiG,MAAF,YAAsD;AAAA,MAA5C;AAAEL,IAAAA,QAAF;AAAYC,IAAAA,UAAZ;AAAwBK,IAAAA;AAAxB,GAA4C;AACjE,QAAM;AACLC,IAAAA,oBADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA,aAHK;AAILC,IAAAA,aAJK;AAKLC,IAAAA,QALK;AAMLC,IAAAA,WAAW,EAAEC;AANR,MAOFR,MAAM,CAAElF,gBAAF,CAPV;AASA,QAAM2F,GAAG,GAAGN,oBAAoB,EAAhC,CAViE,CAWjE;AACA;AACA;;AACA,QAAMvD,kBAAkB,GAAG,CAAEgD,UAAF,IAAgBa,GAAhB,IAAuBH,QAAQ,CAAEG,GAAF,CAA1D;AACA,QAAMrB,uBAAuB,GAAGxC,kBAAkB,GAC/CsD,oBAAoB,CAAEO,GAAF,CAD2B,GAE/CR,YAFH;AAGA,QAAMS,kBAAkB,GAAGL,aAAa,CAAEI,GAAF,CAAxC;AACA,QAAME,cAAc,GAAGP,aAAa,CAAEH,YAAF,CAAb,CAA8BW,MAArD;AACA,QAAMC,gCAAgC,GAAGjE,kBAAkB,GACxD1C,wBAAwB,CAAEoG,QAAQ,CAAEG,GAAF,CAAV,CADgC,GAExDK,SAFH;;AAIA,WAASC,wBAAT,GAAoC;AACnC,UAAM;AAAEC,MAAAA,kCAAkC,EAAEC;AAAtC,QACLT,sBAAsB,EADvB,CADmC,CAInC;;AACA,QAAKS,oBAAL,EAA4B;AAC3B,aAAO,CAAP;AACA,KAPkC,CASnC;;;AACA,QAAKtB,QAAL,EAAgB;AACf,aAAOU,aAAa,CAAEV,QAAF,CAApB;AACA,KAZkC,CAcnC;;;AACA,QAAK/C,kBAAL,EAA0B;AACzB;AACA,UAAKiE,gCAAL,EAAwC;AACvC,eAAOH,kBAAP;AACA,OAJwB,CAMzB;;;AACA,aAAOA,kBAAkB,GAAG,CAA5B;AACA,KAvBkC,CAyBnC;;;AACA,WAAOC,cAAP;AACA;;AAED,QAAMzD,mBAAmB,GAAG,CAA5B;AAEA,QAAMC,oBAAoB,GAAGP,kBAAkB,GAC5C8D,kBAD4C,GAE5CxD,mBAFH;AAIA,QAAME,mBAAmB,GAAGR,kBAAkB,GAC3C8D,kBAAkB,GAAG,CADsB,GAE3CC,cAFH;AAIA,QAAMtD,iBAAiB,GAAGsD,cAA1B;AAEA,SAAO;AACNnD,IAAAA,oBAAoB,EAAEgD,sBAAsB,GAAGlC,WADzC;AAENc,IAAAA,uBAFM;AAGNnC,IAAAA,qBAAqB,EAAE8D,wBAAwB,EAHzC;AAIN5D,IAAAA,oBAJM;AAKNC,IAAAA,mBALM;AAMNF,IAAAA,mBANM;AAONG,IAAAA,iBAPM;AAQNT,IAAAA,kBAAkB,EAAE,CAAC,CAAEA,kBARjB;AASNC,IAAAA,0BAA0B,EAAEgE;AATtB,GAAP;AAWA,CA5ES,CALa,EAmFvB5G,wBAnFuB,CAAF,CAAP,CAoFV6B,QApFU,CAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { AccessibilityInfo, Platform, Text } from 'react-native';\nimport { delay } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Dropdown, ToolbarButton, Picker } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, withPreferredColorScheme } from '@wordpress/compose';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport {\n\tIcon,\n\tplus,\n\tplusCircle,\n\tplusCircleFilled,\n\tinsertAfter,\n\tinsertBefore,\n} from '@wordpress/icons';\nimport { setBlockTypeImpressions } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport InserterMenu from './menu';\nimport BlockInsertionPoint from '../block-list/insertion-point';\nimport { store as blockEditorStore } from '../../store';\n\nconst VOICE_OVER_ANNOUNCEMENT_DELAY = 1000;\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tstyle,\n\tcontainerStyle,\n\tonLongPress,\n\tuseExpandedMode,\n} ) => {\n\t// The \"expanded mode\" refers to the editor's appearance when no blocks\n\t// are currently selected. The \"add block\" button has a separate style\n\t// for the \"expanded mode\", which are added via the below \"expandedModeViewProps\"\n\t// and \"expandedModeViewText\" variables.\n\tconst expandedModeViewProps = useExpandedMode && {\n\t\ticon: <Icon icon={ plus } style={ style } />,\n\t\tcustomContainerStyles: containerStyle,\n\t\tfixedRatio: false,\n\t};\n\tconst expandedModeViewText = (\n\t\t<Text style={ styles[ 'inserter-menu__add-block-button-text' ] }>\n\t\t\t{ __( 'Add blocks' ) }\n\t\t</Text>\n\t);\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\ttitle={ _x(\n\t\t\t\t'Add block',\n\t\t\t\t'Generic label for block inserter button'\n\t\t\t) }\n\t\t\ticon={ <Icon icon={ plusCircleFilled } style={ style } /> }\n\t\t\tonClick={ onToggle }\n\t\t\textraProps={ {\n\t\t\t\thint: __( 'Double tap to add a block' ),\n\t\t\t\t// testID is present to disambiguate this element for native UI tests. It's not\n\t\t\t\t// usually required for components. See: https://github.com/WordPress/gutenberg/pull/18832#issuecomment-561411389.\n\t\t\t\ttestID: 'add-block-button',\n\t\t\t\tonLongPress,\n\t\t\t} }\n\t\t\tisDisabled={ disabled }\n\t\t\t{ ...expandedModeViewProps }\n\t\t>\n\t\t\t{ useExpandedMode && expandedModeViewText }\n\t\t</ToolbarButton>\n\t);\n};\n\nexport class Inserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderInserterToggle = this.renderInserterToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tgetInsertionOptions() {\n\t\tconst addBeforeOption = {\n\t\t\tvalue: 'before',\n\t\t\tlabel: __( 'Add Block Before' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst replaceCurrentOption = {\n\t\t\tvalue: 'replace',\n\t\t\tlabel: __( 'Replace Current Block' ),\n\t\t\ticon: plusCircleFilled,\n\t\t};\n\n\t\tconst addAfterOption = {\n\t\t\tvalue: 'after',\n\t\t\tlabel: __( 'Add Block After' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst addToBeginningOption = {\n\t\t\tvalue: 'start',\n\t\t\tlabel: __( 'Add To Beginning' ),\n\t\t\ticon: insertBefore,\n\t\t};\n\n\t\tconst addToEndOption = {\n\t\t\tvalue: 'end',\n\t\t\tlabel: __( 'Add To End' ),\n\t\t\ticon: insertAfter,\n\t\t};\n\n\t\tconst { isAnyBlockSelected, isSelectedBlockReplaceable } = this.props;\n\t\tif ( isAnyBlockSelected ) {\n\t\t\tif ( isSelectedBlockReplaceable ) {\n\t\t\t\treturn [\n\t\t\t\t\taddToBeginningOption,\n\t\t\t\t\taddBeforeOption,\n\t\t\t\t\treplaceCurrentOption,\n\t\t\t\t\taddAfterOption,\n\t\t\t\t\taddToEndOption,\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn [\n\t\t\t\taddToBeginningOption,\n\t\t\t\taddBeforeOption,\n\t\t\t\taddAfterOption,\n\t\t\t\taddToEndOption,\n\t\t\t];\n\t\t}\n\t\treturn [ addToBeginningOption, addToEndOption ];\n\t}\n\n\tgetInsertionIndex( insertionType ) {\n\t\tconst {\n\t\t\tinsertionIndexDefault,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexEnd,\n\t\t} = this.props;\n\t\tif ( insertionType === 'start' ) {\n\t\t\treturn insertionIndexStart;\n\t\t}\n\t\tif ( insertionType === 'before' || insertionType === 'replace' ) {\n\t\t\treturn insertionIndexBefore;\n\t\t}\n\t\tif ( insertionType === 'after' ) {\n\t\t\treturn insertionIndexAfter;\n\t\t}\n\t\tif ( insertionType === 'end' ) {\n\t\t\treturn insertionIndexEnd;\n\t\t}\n\t\treturn insertionIndexDefault;\n\t}\n\n\tshouldReplaceBlock( insertionType ) {\n\t\tconst { isSelectedBlockReplaceable } = this.props;\n\t\tif ( insertionType === 'replace' ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( insertionType === 'default' && isSelectedBlockReplaceable ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { blockTypeImpressions, onToggle, updateSettings } = this.props;\n\n\t\tif ( ! isOpen ) {\n\t\t\tconst impressionsRemain = Object.values(\n\t\t\t\tblockTypeImpressions\n\t\t\t).some( ( count ) => count > 0 );\n\n\t\t\tif ( impressionsRemain ) {\n\t\t\t\tconst decrementedImpressions = Object.entries(\n\t\t\t\t\tblockTypeImpressions\n\t\t\t\t).reduce(\n\t\t\t\t\t( acc, [ blockName, count ] ) => ( {\n\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t[ blockName ]: Math.max( count - 1, 0 ),\n\t\t\t\t\t} ),\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\t\t// Persist block type impression to JavaScript store.\n\t\t\t\tupdateSettings( {\n\t\t\t\t\timpressions: decrementedImpressions,\n\t\t\t\t} );\n\n\t\t\t\t// Persist block type impression count to native app store.\n\t\t\t\tsetBlockTypeImpressions( decrementedImpressions );\n\t\t\t}\n\t\t}\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t\tthis.onInserterToggledAnnouncement( isOpen );\n\t}\n\n\tonInserterToggledAnnouncement( isOpen ) {\n\t\tAccessibilityInfo.isScreenReaderEnabled().done( ( isEnabled ) => {\n\t\t\tif ( isEnabled ) {\n\t\t\t\tconst isIOS = Platform.OS === 'ios';\n\t\t\t\tconst announcement = isOpen\n\t\t\t\t\t? __( 'Scrollable block menu opened. Select a block.' )\n\t\t\t\t\t: __( 'Scrollable block menu closed.' );\n\t\t\t\tdelay(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tAccessibilityInfo.announceForAccessibility(\n\t\t\t\t\t\t\tannouncement\n\t\t\t\t\t\t),\n\t\t\t\t\tisIOS ? VOICE_OVER_ANNOUNCEMENT_DELAY : 0\n\t\t\t\t);\n\t\t\t}\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\trenderInserterToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tgetStylesFromColorScheme,\n\t\t\tshowSeparator,\n\t\t\tuseExpandedMode,\n\t\t} = this.props;\n\t\tif ( showSeparator && isOpen ) {\n\t\t\treturn <BlockInsertionPoint />;\n\t\t}\n\t\tconst style = useExpandedMode\n\t\t\t? styles[ 'inserter-menu__add-block-button-icon--expanded' ]\n\t\t\t: getStylesFromColorScheme(\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon' ],\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon--dark' ]\n\t\t\t );\n\n\t\tconst containerStyle = getStylesFromColorScheme(\n\t\t\tstyles[ 'inserter-menu__add-block-button' ],\n\t\t\tstyles[ 'inserter-menu__add-block-button--dark' ]\n\t\t);\n\n\t\tconst onPress = () => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock: this.shouldReplaceBlock( 'default' ),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( 'default' ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\tconst onLongPress = () => {\n\t\t\tif ( this.picker ) {\n\t\t\t\tthis.picker.presentPicker();\n\t\t\t}\n\t\t};\n\n\t\tconst onPickerSelect = ( insertionType ) => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock:\n\t\t\t\t\t\tthis.shouldReplaceBlock( insertionType ),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( insertionType ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ renderToggle( {\n\t\t\t\t\tonToggle: onPress,\n\t\t\t\t\tisOpen,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tstyle,\n\t\t\t\t\tcontainerStyle,\n\t\t\t\t\tonLongPress,\n\t\t\t\t\tuseExpandedMode,\n\t\t\t\t} ) }\n\t\t\t\t<Picker\n\t\t\t\t\tref={ ( instance ) => ( this.picker = instance ) }\n\t\t\t\t\toptions={ this.getInsertionOptions() }\n\t\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\t\thideCancelButton\n\t\t\t\t/>\n\t\t\t</>\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 * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose, isOpen } ) {\n\t\tconst { clientId, isAppender } = this.props;\n\t\tconst { destinationRootClientId, shouldReplaceBlock, insertionIndex } =\n\t\t\tthis.state;\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tisOpen={ isOpen }\n\t\t\t\tonSelect={ onClose }\n\t\t\t\tonDismiss={ onClose }\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshouldReplaceBlock={ shouldReplaceBlock }\n\t\t\t\tinsertionIndex={ insertionIndex }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderInserterToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { updateSettings } = dispatch( blockEditorStore );\n\t\treturn { updateSettings };\n\t} ),\n\twithSelect( ( select, { clientId, isAppender, rootClientId } ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockSelectionEnd,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockIndex,\n\t\t\tgetBlock,\n\t\t\tgetSettings: getBlockEditorSettings,\n\t\t} = select( blockEditorStore );\n\n\t\tconst end = getBlockSelectionEnd();\n\t\t// `end` argument (id) can refer to the component which is removed\n\t\t// due to pressing `undo` button, that's why we need to check\n\t\t// if `getBlock( end) is valid, otherwise `null` is passed\n\t\tconst isAnyBlockSelected = ! isAppender && end && getBlock( end );\n\t\tconst destinationRootClientId = isAnyBlockSelected\n\t\t\t? getBlockRootClientId( end )\n\t\t\t: rootClientId;\n\t\tconst selectedBlockIndex = getBlockIndex( end );\n\t\tconst endOfRootIndex = getBlockOrder( rootClientId ).length;\n\t\tconst isSelectedUnmodifiedDefaultBlock = isAnyBlockSelected\n\t\t\t? isUnmodifiedDefaultBlock( getBlock( end ) )\n\t\t\t: undefined;\n\n\t\tfunction getDefaultInsertionIndex() {\n\t\t\tconst { __experimentalShouldInsertAtTheTop: shouldInsertAtTheTop } =\n\t\t\t\tgetBlockEditorSettings();\n\n\t\t\t// If post title is selected insert as first block.\n\t\t\tif ( shouldInsertAtTheTop ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\tif ( clientId ) {\n\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t}\n\n\t\t\t// If there is a selected block,\n\t\t\tif ( isAnyBlockSelected ) {\n\t\t\t\t// And the last selected block is unmodified (empty), it will be replaced.\n\t\t\t\tif ( isSelectedUnmodifiedDefaultBlock ) {\n\t\t\t\t\treturn selectedBlockIndex;\n\t\t\t\t}\n\n\t\t\t\t// We insert after the selected block.\n\t\t\t\treturn selectedBlockIndex + 1;\n\t\t\t}\n\n\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\treturn endOfRootIndex;\n\t\t}\n\n\t\tconst insertionIndexStart = 0;\n\n\t\tconst insertionIndexBefore = isAnyBlockSelected\n\t\t\t? selectedBlockIndex\n\t\t\t: insertionIndexStart;\n\n\t\tconst insertionIndexAfter = isAnyBlockSelected\n\t\t\t? selectedBlockIndex + 1\n\t\t\t: endOfRootIndex;\n\n\t\tconst insertionIndexEnd = endOfRootIndex;\n\n\t\treturn {\n\t\t\tblockTypeImpressions: getBlockEditorSettings().impressions,\n\t\t\tdestinationRootClientId,\n\t\t\tinsertionIndexDefault: getDefaultInsertionIndex(),\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexEnd,\n\t\t\tisAnyBlockSelected: !! isAnyBlockSelected,\n\t\t\tisSelectedBlockReplaceable: isSelectedUnmodifiedDefaultBlock,\n\t\t};\n\t} ),\n\n\twithPreferredColorScheme,\n] )( Inserter );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.native.js"],"names":["AccessibilityInfo","Platform","Text","__","_x","Dropdown","ToolbarButton","Picker","Component","withDispatch","withSelect","compose","withPreferredColorScheme","isUnmodifiedDefaultBlock","Icon","plus","plusCircle","plusCircleFilled","insertAfter","insertBefore","setBlockTypeImpressions","styles","InserterMenu","BlockInsertionPoint","store","blockEditorStore","VOICE_OVER_ANNOUNCEMENT_DELAY","defaultRenderToggle","onToggle","disabled","style","containerStyle","onLongPress","useExpandedMode","expandedModeViewProps","icon","customContainerStyles","fixedRatio","expandedModeViewText","hint","testID","Inserter","constructor","arguments","bind","renderInserterToggle","renderContent","componentWillUnmount","clearTimeout","announcementTimeout","getInsertionOptions","addBeforeOption","value","label","replaceCurrentOption","addAfterOption","addToBeginningOption","addToEndOption","isAnyBlockSelected","isSelectedBlockReplaceable","props","getInsertionIndex","insertionType","insertionIndexDefault","insertionIndexStart","insertionIndexBefore","insertionIndexAfter","insertionIndexEnd","shouldReplaceBlock","isOpen","blockTypeImpressions","updateSettings","impressionsRemain","Object","values","some","count","decrementedImpressions","entries","reduce","acc","blockName","Math","max","impressions","onInserterToggledAnnouncement","isScreenReaderEnabled","done","isEnabled","isIOS","OS","announcement","setTimeout","announceForAccessibility","renderToggle","getStylesFromColorScheme","showSeparator","onPress","setState","destinationRootClientId","insertionIndex","picker","presentPicker","onPickerSelect","instance","onClose","clientId","isAppender","state","render","dispatch","select","rootClientId","getBlockRootClientId","getBlockSelectionEnd","getBlockOrder","getBlockIndex","getBlock","getSettings","getBlockEditorSettings","end","selectedBlockIndex","endOfRootIndex","length","isSelectedUnmodifiedDefaultBlock","undefined","getDefaultInsertionIndex","__experimentalShouldInsertAtTheTop","shouldInsertAtTheTop"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { AccessibilityInfo, Platform, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Dropdown, ToolbarButton, Picker } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, withPreferredColorScheme } from '@wordpress/compose';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport {\n\tIcon,\n\tplus,\n\tplusCircle,\n\tplusCircleFilled,\n\tinsertAfter,\n\tinsertBefore,\n} from '@wordpress/icons';\nimport { setBlockTypeImpressions } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport InserterMenu from './menu';\nimport BlockInsertionPoint from '../block-list/insertion-point';\nimport { store as blockEditorStore } from '../../store';\n\nconst VOICE_OVER_ANNOUNCEMENT_DELAY = 1000;\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tstyle,\n\tcontainerStyle,\n\tonLongPress,\n\tuseExpandedMode,\n} ) => {\n\t// The \"expanded mode\" refers to the editor's appearance when no blocks\n\t// are currently selected. The \"add block\" button has a separate style\n\t// for the \"expanded mode\", which are added via the below \"expandedModeViewProps\"\n\t// and \"expandedModeViewText\" variables.\n\tconst expandedModeViewProps = useExpandedMode && {\n\t\ticon: <Icon icon={ plus } style={ style } />,\n\t\tcustomContainerStyles: containerStyle,\n\t\tfixedRatio: false,\n\t};\n\tconst expandedModeViewText = (\n\t\t<Text style={ styles[ 'inserter-menu__add-block-button-text' ] }>\n\t\t\t{ __( 'Add blocks' ) }\n\t\t</Text>\n\t);\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\ttitle={ _x(\n\t\t\t\t'Add block',\n\t\t\t\t'Generic label for block inserter button'\n\t\t\t) }\n\t\t\ticon={ <Icon icon={ plusCircleFilled } style={ style } /> }\n\t\t\tonClick={ onToggle }\n\t\t\textraProps={ {\n\t\t\t\thint: __( 'Double tap to add a block' ),\n\t\t\t\t// testID is present to disambiguate this element for native UI tests. It's not\n\t\t\t\t// usually required for components. See: https://github.com/WordPress/gutenberg/pull/18832#issuecomment-561411389.\n\t\t\t\ttestID: 'add-block-button',\n\t\t\t\tonLongPress,\n\t\t\t} }\n\t\t\tisDisabled={ disabled }\n\t\t\t{ ...expandedModeViewProps }\n\t\t>\n\t\t\t{ useExpandedMode && expandedModeViewText }\n\t\t</ToolbarButton>\n\t);\n};\n\nexport class Inserter extends Component {\n\tannouncementTimeout;\n\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderInserterToggle = this.renderInserterToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.announcementTimeout );\n\t}\n\n\tgetInsertionOptions() {\n\t\tconst addBeforeOption = {\n\t\t\tvalue: 'before',\n\t\t\tlabel: __( 'Add Block Before' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst replaceCurrentOption = {\n\t\t\tvalue: 'replace',\n\t\t\tlabel: __( 'Replace Current Block' ),\n\t\t\ticon: plusCircleFilled,\n\t\t};\n\n\t\tconst addAfterOption = {\n\t\t\tvalue: 'after',\n\t\t\tlabel: __( 'Add Block After' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst addToBeginningOption = {\n\t\t\tvalue: 'start',\n\t\t\tlabel: __( 'Add To Beginning' ),\n\t\t\ticon: insertBefore,\n\t\t};\n\n\t\tconst addToEndOption = {\n\t\t\tvalue: 'end',\n\t\t\tlabel: __( 'Add To End' ),\n\t\t\ticon: insertAfter,\n\t\t};\n\n\t\tconst { isAnyBlockSelected, isSelectedBlockReplaceable } = this.props;\n\t\tif ( isAnyBlockSelected ) {\n\t\t\tif ( isSelectedBlockReplaceable ) {\n\t\t\t\treturn [\n\t\t\t\t\taddToBeginningOption,\n\t\t\t\t\taddBeforeOption,\n\t\t\t\t\treplaceCurrentOption,\n\t\t\t\t\taddAfterOption,\n\t\t\t\t\taddToEndOption,\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn [\n\t\t\t\taddToBeginningOption,\n\t\t\t\taddBeforeOption,\n\t\t\t\taddAfterOption,\n\t\t\t\taddToEndOption,\n\t\t\t];\n\t\t}\n\t\treturn [ addToBeginningOption, addToEndOption ];\n\t}\n\n\tgetInsertionIndex( insertionType ) {\n\t\tconst {\n\t\t\tinsertionIndexDefault,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexEnd,\n\t\t} = this.props;\n\t\tif ( insertionType === 'start' ) {\n\t\t\treturn insertionIndexStart;\n\t\t}\n\t\tif ( insertionType === 'before' || insertionType === 'replace' ) {\n\t\t\treturn insertionIndexBefore;\n\t\t}\n\t\tif ( insertionType === 'after' ) {\n\t\t\treturn insertionIndexAfter;\n\t\t}\n\t\tif ( insertionType === 'end' ) {\n\t\t\treturn insertionIndexEnd;\n\t\t}\n\t\treturn insertionIndexDefault;\n\t}\n\n\tshouldReplaceBlock( insertionType ) {\n\t\tconst { isSelectedBlockReplaceable } = this.props;\n\t\tif ( insertionType === 'replace' ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( insertionType === 'default' && isSelectedBlockReplaceable ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { blockTypeImpressions, onToggle, updateSettings } = this.props;\n\n\t\tif ( ! isOpen ) {\n\t\t\tconst impressionsRemain = Object.values(\n\t\t\t\tblockTypeImpressions\n\t\t\t).some( ( count ) => count > 0 );\n\n\t\t\tif ( impressionsRemain ) {\n\t\t\t\tconst decrementedImpressions = Object.entries(\n\t\t\t\t\tblockTypeImpressions\n\t\t\t\t).reduce(\n\t\t\t\t\t( acc, [ blockName, count ] ) => ( {\n\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t[ blockName ]: Math.max( count - 1, 0 ),\n\t\t\t\t\t} ),\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\t\t// Persist block type impression to JavaScript store.\n\t\t\t\tupdateSettings( {\n\t\t\t\t\timpressions: decrementedImpressions,\n\t\t\t\t} );\n\n\t\t\t\t// Persist block type impression count to native app store.\n\t\t\t\tsetBlockTypeImpressions( decrementedImpressions );\n\t\t\t}\n\t\t}\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t\tthis.onInserterToggledAnnouncement( isOpen );\n\t}\n\n\tonInserterToggledAnnouncement( isOpen ) {\n\t\tAccessibilityInfo.isScreenReaderEnabled().done( ( isEnabled ) => {\n\t\t\tif ( isEnabled ) {\n\t\t\t\tconst isIOS = Platform.OS === 'ios';\n\t\t\t\tconst announcement = isOpen\n\t\t\t\t\t? __( 'Scrollable block menu opened. Select a block.' )\n\t\t\t\t\t: __( 'Scrollable block menu closed.' );\n\t\t\t\tthis.announcementTimeout = setTimeout(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tAccessibilityInfo.announceForAccessibility(\n\t\t\t\t\t\t\tannouncement\n\t\t\t\t\t\t),\n\t\t\t\t\tisIOS ? VOICE_OVER_ANNOUNCEMENT_DELAY : 0\n\t\t\t\t);\n\t\t\t}\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\trenderInserterToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tgetStylesFromColorScheme,\n\t\t\tshowSeparator,\n\t\t\tuseExpandedMode,\n\t\t} = this.props;\n\t\tif ( showSeparator && isOpen ) {\n\t\t\treturn <BlockInsertionPoint />;\n\t\t}\n\t\tconst style = useExpandedMode\n\t\t\t? styles[ 'inserter-menu__add-block-button-icon--expanded' ]\n\t\t\t: getStylesFromColorScheme(\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon' ],\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon--dark' ]\n\t\t\t );\n\n\t\tconst containerStyle = getStylesFromColorScheme(\n\t\t\tstyles[ 'inserter-menu__add-block-button' ],\n\t\t\tstyles[ 'inserter-menu__add-block-button--dark' ]\n\t\t);\n\n\t\tconst onPress = () => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock: this.shouldReplaceBlock( 'default' ),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( 'default' ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\tconst onLongPress = () => {\n\t\t\tif ( this.picker ) {\n\t\t\t\tthis.picker.presentPicker();\n\t\t\t}\n\t\t};\n\n\t\tconst onPickerSelect = ( insertionType ) => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock:\n\t\t\t\t\t\tthis.shouldReplaceBlock( insertionType ),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( insertionType ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ renderToggle( {\n\t\t\t\t\tonToggle: onPress,\n\t\t\t\t\tisOpen,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tstyle,\n\t\t\t\t\tcontainerStyle,\n\t\t\t\t\tonLongPress,\n\t\t\t\t\tuseExpandedMode,\n\t\t\t\t} ) }\n\t\t\t\t<Picker\n\t\t\t\t\tref={ ( instance ) => ( this.picker = instance ) }\n\t\t\t\t\toptions={ this.getInsertionOptions() }\n\t\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\t\thideCancelButton\n\t\t\t\t/>\n\t\t\t</>\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 * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose, isOpen } ) {\n\t\tconst { clientId, isAppender } = this.props;\n\t\tconst { destinationRootClientId, shouldReplaceBlock, insertionIndex } =\n\t\t\tthis.state;\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tisOpen={ isOpen }\n\t\t\t\tonSelect={ onClose }\n\t\t\t\tonDismiss={ onClose }\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshouldReplaceBlock={ shouldReplaceBlock }\n\t\t\t\tinsertionIndex={ insertionIndex }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderInserterToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { updateSettings } = dispatch( blockEditorStore );\n\t\treturn { updateSettings };\n\t} ),\n\twithSelect( ( select, { clientId, isAppender, rootClientId } ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockSelectionEnd,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockIndex,\n\t\t\tgetBlock,\n\t\t\tgetSettings: getBlockEditorSettings,\n\t\t} = select( blockEditorStore );\n\n\t\tconst end = getBlockSelectionEnd();\n\t\t// `end` argument (id) can refer to the component which is removed\n\t\t// due to pressing `undo` button, that's why we need to check\n\t\t// if `getBlock( end) is valid, otherwise `null` is passed\n\t\tconst isAnyBlockSelected = ! isAppender && end && getBlock( end );\n\t\tconst destinationRootClientId = isAnyBlockSelected\n\t\t\t? getBlockRootClientId( end )\n\t\t\t: rootClientId;\n\t\tconst selectedBlockIndex = getBlockIndex( end );\n\t\tconst endOfRootIndex = getBlockOrder( rootClientId ).length;\n\t\tconst isSelectedUnmodifiedDefaultBlock = isAnyBlockSelected\n\t\t\t? isUnmodifiedDefaultBlock( getBlock( end ) )\n\t\t\t: undefined;\n\n\t\tfunction getDefaultInsertionIndex() {\n\t\t\tconst { __experimentalShouldInsertAtTheTop: shouldInsertAtTheTop } =\n\t\t\t\tgetBlockEditorSettings();\n\n\t\t\t// If post title is selected insert as first block.\n\t\t\tif ( shouldInsertAtTheTop ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\tif ( clientId ) {\n\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t}\n\n\t\t\t// If there is a selected block,\n\t\t\tif ( isAnyBlockSelected ) {\n\t\t\t\t// And the last selected block is unmodified (empty), it will be replaced.\n\t\t\t\tif ( isSelectedUnmodifiedDefaultBlock ) {\n\t\t\t\t\treturn selectedBlockIndex;\n\t\t\t\t}\n\n\t\t\t\t// We insert after the selected block.\n\t\t\t\treturn selectedBlockIndex + 1;\n\t\t\t}\n\n\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\treturn endOfRootIndex;\n\t\t}\n\n\t\tconst insertionIndexStart = 0;\n\n\t\tconst insertionIndexBefore = isAnyBlockSelected\n\t\t\t? selectedBlockIndex\n\t\t\t: insertionIndexStart;\n\n\t\tconst insertionIndexAfter = isAnyBlockSelected\n\t\t\t? selectedBlockIndex + 1\n\t\t\t: endOfRootIndex;\n\n\t\tconst insertionIndexEnd = endOfRootIndex;\n\n\t\treturn {\n\t\t\tblockTypeImpressions: getBlockEditorSettings().impressions,\n\t\t\tdestinationRootClientId,\n\t\t\tinsertionIndexDefault: getDefaultInsertionIndex(),\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexEnd,\n\t\t\tisAnyBlockSelected: !! isAnyBlockSelected,\n\t\t\tisSelectedBlockReplaceable: isSelectedUnmodifiedDefaultBlock,\n\t\t};\n\t} ),\n\n\twithPreferredColorScheme,\n] )( Inserter );\n"]}
|
|
@@ -12,7 +12,7 @@ import classnames from 'classnames';
|
|
|
12
12
|
import { useMemo, useRef, memo } from '@wordpress/element';
|
|
13
13
|
import { createBlock, createBlocksFromInnerBlocksTemplate } from '@wordpress/blocks';
|
|
14
14
|
import { __experimentalTruncate as Truncate } from '@wordpress/components';
|
|
15
|
-
import { ENTER } from '@wordpress/keycodes';
|
|
15
|
+
import { ENTER, isAppleOS } from '@wordpress/keycodes';
|
|
16
16
|
/**
|
|
17
17
|
* Internal dependencies
|
|
18
18
|
*/
|
|
@@ -20,22 +20,6 @@ import { ENTER } from '@wordpress/keycodes';
|
|
|
20
20
|
import BlockIcon from '../block-icon';
|
|
21
21
|
import { InserterListboxItem } from '../inserter-listbox';
|
|
22
22
|
import InserterDraggableBlocks from '../inserter-draggable-blocks';
|
|
23
|
-
/**
|
|
24
|
-
* Return true if platform is MacOS.
|
|
25
|
-
*
|
|
26
|
-
* @param {Object} _window window object by default; used for DI testing.
|
|
27
|
-
*
|
|
28
|
-
* @return {boolean} True if MacOS; false otherwise.
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
function isAppleOS() {
|
|
32
|
-
let _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
|
|
33
|
-
|
|
34
|
-
const {
|
|
35
|
-
platform
|
|
36
|
-
} = _window.navigator;
|
|
37
|
-
return platform.indexOf('Mac') !== -1 || ['iPad', 'iPhone'].includes(platform);
|
|
38
|
-
}
|
|
39
23
|
|
|
40
24
|
function InserterListItem(_ref) {
|
|
41
25
|
let {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter-list-item/index.js"],"names":["classnames","useMemo","useRef","memo","createBlock","createBlocksFromInnerBlocksTemplate","__experimentalTruncate","Truncate","ENTER","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter-list-item/index.js"],"names":["classnames","useMemo","useRef","memo","createBlock","createBlocksFromInnerBlocksTemplate","__experimentalTruncate","Truncate","ENTER","isAppleOS","BlockIcon","InserterListboxItem","InserterDraggableBlocks","InserterListItem","className","isFirst","item","onSelect","onHover","isDraggable","props","isDragging","itemIconStyle","icon","backgroundColor","background","color","foreground","blocks","name","initialAttributes","innerBlocks","disabled","draggable","onDragStart","onDragEnd","event","current","isDisabled","preventDefault","metaKey","ctrlKey","keyCode","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useRef, memo } from '@wordpress/element';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n} from '@wordpress/blocks';\nimport { __experimentalTruncate as Truncate } from '@wordpress/components';\nimport { ENTER, isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { InserterListboxItem } from '../inserter-listbox';\nimport InserterDraggableBlocks from '../inserter-draggable-blocks';\n\nfunction InserterListItem( {\n\tclassName,\n\tisFirst,\n\titem,\n\tonSelect,\n\tonHover,\n\tisDraggable,\n\t...props\n} ) {\n\tconst isDragging = useRef( false );\n\tconst itemIconStyle = item.icon\n\t\t? {\n\t\t\t\tbackgroundColor: item.icon.background,\n\t\t\t\tcolor: item.icon.foreground,\n\t\t }\n\t\t: {};\n\tconst blocks = useMemo( () => {\n\t\treturn [\n\t\t\tcreateBlock(\n\t\t\t\titem.name,\n\t\t\t\titem.initialAttributes,\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( item.innerBlocks )\n\t\t\t),\n\t\t];\n\t}, [ item.name, item.initialAttributes, item.initialAttributes ] );\n\n\treturn (\n\t\t<InserterDraggableBlocks\n\t\t\tisEnabled={ isDraggable && ! item.disabled }\n\t\t\tblocks={ blocks }\n\t\t\ticon={ item.icon }\n\t\t>\n\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"block-editor-block-types-list__list-item\"\n\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\tonDragStart={ ( event ) => {\n\t\t\t\t\t\tisDragging.current = true;\n\t\t\t\t\t\tif ( onDragStart ) {\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\tonDragStart( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonDragEnd={ ( event ) => {\n\t\t\t\t\t\tisDragging.current = false;\n\t\t\t\t\t\tif ( onDragEnd ) {\n\t\t\t\t\t\t\tonDragEnd( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<InserterListboxItem\n\t\t\t\t\t\tisFirst={ isFirst }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-block-types-list__item',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdisabled={ item.isDisabled }\n\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tconst { keyCode } = event;\n\t\t\t\t\t\t\tif ( keyCode === ENTER ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFocus={ () => {\n\t\t\t\t\t\t\tif ( isDragging.current ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonHover( item );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseEnter={ () => {\n\t\t\t\t\t\t\tif ( isDragging.current ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonHover( item );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseLeave={ () => onHover( null ) }\n\t\t\t\t\t\tonBlur={ () => onHover( null ) }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-block-types-list__item-icon\"\n\t\t\t\t\t\t\tstyle={ itemIconStyle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } showColors />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className=\"block-editor-block-types-list__item-title\">\n\t\t\t\t\t\t\t<Truncate numberOfLines={ 3 }>\n\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</InserterListboxItem>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</InserterDraggableBlocks>\n\t);\n}\n\nexport default memo( InserterListItem );\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
1
2
|
import { createElement } from "@wordpress/element";
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -25,7 +26,8 @@ export default function LetterSpacingControl(_ref) {
|
|
|
25
26
|
let {
|
|
26
27
|
value,
|
|
27
28
|
onChange,
|
|
28
|
-
__unstableInputWidth = '60px'
|
|
29
|
+
__unstableInputWidth = '60px',
|
|
30
|
+
...otherProps
|
|
29
31
|
} = _ref;
|
|
30
32
|
const units = useCustomUnits({
|
|
31
33
|
availableUnits: useSetting('spacing.units') || ['px', 'em', 'rem'],
|
|
@@ -35,12 +37,12 @@ export default function LetterSpacingControl(_ref) {
|
|
|
35
37
|
rem: 0.2
|
|
36
38
|
}
|
|
37
39
|
});
|
|
38
|
-
return createElement(UnitControl, {
|
|
40
|
+
return createElement(UnitControl, _extends({}, otherProps, {
|
|
39
41
|
label: __('Letter spacing'),
|
|
40
42
|
value: value,
|
|
41
43
|
__unstableInputWidth: __unstableInputWidth,
|
|
42
44
|
units: units,
|
|
43
45
|
onChange: onChange
|
|
44
|
-
});
|
|
46
|
+
}));
|
|
45
47
|
}
|
|
46
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/letter-spacing-control/index.js"],"names":["__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__","useSetting","LetterSpacingControl","value","onChange","__unstableInputWidth","units","availableUnits","defaultValues","px","em","rem"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/letter-spacing-control/index.js"],"names":["__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__","useSetting","LetterSpacingControl","value","onChange","__unstableInputWidth","otherProps","units","availableUnits","defaultValues","px","em","rem"],"mappings":";;;AAAA;AACA;AACA;AACA,SACCA,yBAAyB,IAAIC,WAD9B,EAECC,4BAA4B,IAAIC,cAFjC,QAGO,uBAHP;AAIA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,8BAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,oBAAT,OAKX;AAAA,MAL0C;AAC7CC,IAAAA,KAD6C;AAE7CC,IAAAA,QAF6C;AAG7CC,IAAAA,oBAAoB,GAAG,MAHsB;AAI7C,OAAGC;AAJ0C,GAK1C;AACH,QAAMC,KAAK,GAAGR,cAAc,CAAE;AAC7BS,IAAAA,cAAc,EAAEP,UAAU,CAAE,eAAF,CAAV,IAAiC,CAAE,IAAF,EAAQ,IAAR,EAAc,KAAd,CADpB;AAE7BQ,IAAAA,aAAa,EAAE;AAAEC,MAAAA,EAAE,EAAE,CAAN;AAASC,MAAAA,EAAE,EAAE,GAAb;AAAkBC,MAAAA,GAAG,EAAE;AAAvB;AAFc,GAAF,CAA5B;AAIA,SACC,cAAC,WAAD,eACMN,UADN;AAEC,IAAA,KAAK,EAAGN,EAAE,CAAE,gBAAF,CAFX;AAGC,IAAA,KAAK,EAAGG,KAHT;AAIC,IAAA,oBAAoB,EAAGE,oBAJxB;AAKC,IAAA,KAAK,EAAGE,KALT;AAMC,IAAA,QAAQ,EAAGH;AANZ,KADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../../components/use-setting';\n\n/**\n * Control for letter-spacing.\n *\n * @param {Object} props Component props.\n * @param {string} props.value Currently selected letter-spacing.\n * @param {Function} props.onChange Handles change in letter-spacing selection.\n * @param {string|number|undefined} props.__unstableInputWidth Input width to pass through to inner UnitControl. Should be a valid CSS value.\n *\n * @return {WPElement} Letter-spacing control.\n */\nexport default function LetterSpacingControl( {\n\tvalue,\n\tonChange,\n\t__unstableInputWidth = '60px',\n\t...otherProps\n} ) {\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],\n\t\tdefaultValues: { px: 2, em: 0.2, rem: 0.2 },\n\t} );\n\treturn (\n\t\t<UnitControl\n\t\t\t{ ...otherProps }\n\t\t\tlabel={ __( 'Letter spacing' ) }\n\t\t\tvalue={ value }\n\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\tunits={ units }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
1
2
|
import { createElement } from "@wordpress/element";
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -19,7 +20,8 @@ const LineHeightControl = _ref => {
|
|
|
19
20
|
|
|
20
21
|
/** Start opting into the new margin-free styles that will become the default in a future version. */
|
|
21
22
|
__nextHasNoMarginBottom = false,
|
|
22
|
-
__unstableInputWidth = '60px'
|
|
23
|
+
__unstableInputWidth = '60px',
|
|
24
|
+
...otherProps
|
|
23
25
|
} = _ref;
|
|
24
26
|
const isDefined = isLineHeightDefined(lineHeight);
|
|
25
27
|
|
|
@@ -88,7 +90,7 @@ const LineHeightControl = _ref => {
|
|
|
88
90
|
return createElement("div", {
|
|
89
91
|
className: "block-editor-line-height-control",
|
|
90
92
|
style: deprecatedStyles
|
|
91
|
-
}, createElement(NumberControl, {
|
|
93
|
+
}, createElement(NumberControl, _extends({}, otherProps, {
|
|
92
94
|
__unstableInputWidth: __unstableInputWidth,
|
|
93
95
|
__unstableStateReducer: stateReducer,
|
|
94
96
|
onChange: onChange,
|
|
@@ -97,7 +99,7 @@ const LineHeightControl = _ref => {
|
|
|
97
99
|
step: STEP,
|
|
98
100
|
value: value,
|
|
99
101
|
min: 0
|
|
100
|
-
}));
|
|
102
|
+
})));
|
|
101
103
|
};
|
|
102
104
|
/**
|
|
103
105
|
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/line-height-control/README.md
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/line-height-control/index.js"],"names":["deprecated","__","__experimentalNumberControl","NumberControl","BASE_DEFAULT_VALUE","RESET_VALUE","STEP","isLineHeightDefined","LineHeightControl","value","lineHeight","onChange","__nextHasNoMarginBottom","__unstableInputWidth","isDefined","adjustNextValue","nextValue","wasTypedOrPasted","stateReducer","state","action","includes","payload","event","nativeEvent","inputType","since","version","hint","deprecatedStyles","undefined","marginBottom"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/line-height-control/index.js"],"names":["deprecated","__","__experimentalNumberControl","NumberControl","BASE_DEFAULT_VALUE","RESET_VALUE","STEP","isLineHeightDefined","LineHeightControl","value","lineHeight","onChange","__nextHasNoMarginBottom","__unstableInputWidth","otherProps","isDefined","adjustNextValue","nextValue","wasTypedOrPasted","stateReducer","state","action","includes","payload","event","nativeEvent","inputType","since","version","hint","deprecatedStyles","undefined","marginBottom"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,uBAAvB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,2BAA2B,IAAIC,aAAxC,QAA6D,uBAA7D;AAEA;AACA;AACA;;AACA,SACCC,kBADD,EAECC,WAFD,EAGCC,IAHD,EAICC,mBAJD,QAKO,SALP;;AAOA,MAAMC,iBAAiB,GAAG,QAOnB;AAAA,MAPqB;AAC3BC,IAAAA,KAAK,EAAEC,UADoB;AAE3BC,IAAAA,QAF2B;;AAG3B;AACAC,IAAAA,uBAAuB,GAAG,KAJC;AAK3BC,IAAAA,oBAAoB,GAAG,MALI;AAM3B,OAAGC;AANwB,GAOrB;AACN,QAAMC,SAAS,GAAGR,mBAAmB,CAAEG,UAAF,CAArC;;AAEA,QAAMM,eAAe,GAAG,CAAEC,SAAF,EAAaC,gBAAb,KAAmC;AAC1D;AACA,QAAKH,SAAL,EAAiB,OAAOE,SAAP;AAEjB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACE,YAAU,GAAGA,SAAW,EAAxB;AACC,WAAM,GAAGX,IAAM,EAAf;AACC;AACA,eAAOF,kBAAkB,GAAGE,IAA5B;;AACD,WAAK,GAAL;AAAU;AACT;AACA;AACA,cAAKY,gBAAL,EAAwB,OAAOD,SAAP,CAHf,CAIT;;AACA,iBAAOb,kBAAkB,GAAGE,IAA5B;AACA;;AACD,WAAK,EAAL;AACC,eAAOF,kBAAP;;AACD;AACC,eAAOa,SAAP;AAdF;AAgBA,GA7BD;;AA+BA,QAAME,YAAY,GAAG,CAAEC,KAAF,EAASC,MAAT,KAAqB;AAAA;;AACzC;AACA;AACA;AACA;AACA,UAAMH,gBAAgB,GAAG,CAAE,YAAF,EAAgB,iBAAhB,EAAoCI,QAApC,0BACxBD,MAAM,CAACE,OAAP,CAAeC,KAAf,CAAqBC,WADG,0DACxB,sBAAkCC,SADV,CAAzB;AAGA,UAAMjB,KAAK,GAAGO,eAAe,CAAEI,KAAK,CAACX,KAAR,EAAeS,gBAAf,CAA7B;AACA,WAAO,EAAE,GAAGE,KAAL;AAAYX,MAAAA;AAAZ,KAAP;AACA,GAVD;;AAYA,QAAMA,KAAK,GAAGM,SAAS,GAAGL,UAAH,GAAgBL,WAAvC;;AAEA,MAAK,CAAEO,uBAAP,EAAiC;AAChCZ,IAAAA,UAAU,CACT,2DADS,EAET;AACC2B,MAAAA,KAAK,EAAE,KADR;AAECC,MAAAA,OAAO,EAAE,KAFV;AAGCC,MAAAA,IAAI,EAAE;AAHP,KAFS,CAAV;AAQA;;AACD,QAAMC,gBAAgB,GAAGlB,uBAAuB,GAC7CmB,SAD6C,GAE7C;AAAEC,IAAAA,YAAY,EAAE;AAAhB,GAFH;AAIA,SACC;AACC,IAAA,SAAS,EAAC,kCADX;AAEC,IAAA,KAAK,EAAGF;AAFT,KAIC,cAAC,aAAD,eACMhB,UADN;AAEC,IAAA,oBAAoB,EAAGD,oBAFxB;AAGC,IAAA,sBAAsB,EAAGM,YAH1B;AAIC,IAAA,QAAQ,EAAGR,QAJZ;AAKC,IAAA,KAAK,EAAGV,EAAE,CAAE,aAAF,CALX;AAMC,IAAA,WAAW,EAAGG,kBANf;AAOC,IAAA,IAAI,EAAGE,IAPR;AAQC,IAAA,KAAK,EAAGG,KART;AASC,IAAA,GAAG,EAAG;AATP,KAJD,CADD;AAkBA,CAvFD;AAyFA;AACA;AACA;;;AACA,eAAeD,iBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalNumberControl as NumberControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBASE_DEFAULT_VALUE,\n\tRESET_VALUE,\n\tSTEP,\n\tisLineHeightDefined,\n} from './utils';\n\nconst LineHeightControl = ( {\n\tvalue: lineHeight,\n\tonChange,\n\t/** Start opting into the new margin-free styles that will become the default in a future version. */\n\t__nextHasNoMarginBottom = false,\n\t__unstableInputWidth = '60px',\n\t...otherProps\n} ) => {\n\tconst isDefined = isLineHeightDefined( lineHeight );\n\n\tconst adjustNextValue = ( nextValue, wasTypedOrPasted ) => {\n\t\t// Set the next value without modification if lineHeight has been defined.\n\t\tif ( isDefined ) return nextValue;\n\n\t\t/**\n\t\t * The following logic handles the initial step up/down action\n\t\t * (from an undefined value state) so that the next values are better suited for\n\t\t * line-height rendering. For example, the first step up should immediately\n\t\t * go to 1.6, rather than the normally expected 0.1.\n\t\t *\n\t\t * Step up/down actions can be triggered by keydowns of the up/down arrow keys,\n\t\t * or by clicking the spin buttons.\n\t\t */\n\t\tswitch ( `${ nextValue }` ) {\n\t\t\tcase `${ STEP }`:\n\t\t\t\t// Increment by step value.\n\t\t\t\treturn BASE_DEFAULT_VALUE + STEP;\n\t\t\tcase '0': {\n\t\t\t\t// This means the user explicitly input '0', rather than stepped down\n\t\t\t\t// from an undefined value state.\n\t\t\t\tif ( wasTypedOrPasted ) return nextValue;\n\t\t\t\t// Decrement by step value.\n\t\t\t\treturn BASE_DEFAULT_VALUE - STEP;\n\t\t\t}\n\t\t\tcase '':\n\t\t\t\treturn BASE_DEFAULT_VALUE;\n\t\t\tdefault:\n\t\t\t\treturn nextValue;\n\t\t}\n\t};\n\n\tconst stateReducer = ( state, action ) => {\n\t\t// Be careful when changing this — cross-browser behavior of the\n\t\t// `inputType` field in `input` events are inconsistent.\n\t\t// For example, Firefox emits an input event with inputType=\"insertReplacementText\"\n\t\t// on spin button clicks, while other browsers do not even emit an input event.\n\t\tconst wasTypedOrPasted = [ 'insertText', 'insertFromPaste' ].includes(\n\t\t\taction.payload.event.nativeEvent?.inputType\n\t\t);\n\t\tconst value = adjustNextValue( state.value, wasTypedOrPasted );\n\t\treturn { ...state, value };\n\t};\n\n\tconst value = isDefined ? lineHeight : RESET_VALUE;\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated(\n\t\t\t'Bottom margin styles for wp.blockEditor.LineHeightControl',\n\t\t\t{\n\t\t\t\tsince: '6.0',\n\t\t\t\tversion: '6.4',\n\t\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version',\n\t\t\t}\n\t\t);\n\t}\n\tconst deprecatedStyles = __nextHasNoMarginBottom\n\t\t? undefined\n\t\t: { marginBottom: 24 };\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-line-height-control\"\n\t\t\tstyle={ deprecatedStyles }\n\t\t>\n\t\t\t<NumberControl\n\t\t\t\t{ ...otherProps }\n\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\t__unstableStateReducer={ stateReducer }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\tplaceholder={ BASE_DEFAULT_VALUE }\n\t\t\t\tstep={ STEP }\n\t\t\t\tvalue={ value }\n\t\t\t\tmin={ 0 }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/line-height-control/README.md\n */\nexport default LineHeightControl;\n"]}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { startsWith } from 'lodash';
|
|
5
1
|
/**
|
|
6
2
|
* WordPress dependencies
|
|
7
3
|
*/
|
|
8
|
-
|
|
9
4
|
import { isURL } from '@wordpress/url';
|
|
10
5
|
/**
|
|
11
6
|
* Determines whether a given value could be a URL. Note this does not
|
|
@@ -20,7 +15,7 @@ import { isURL } from '@wordpress/url';
|
|
|
20
15
|
*/
|
|
21
16
|
|
|
22
17
|
export default function isURLLike(val) {
|
|
23
|
-
const isInternal = startsWith(
|
|
18
|
+
const isInternal = val === null || val === void 0 ? void 0 : val.startsWith('#');
|
|
24
19
|
return isURL(val) || val && val.includes('www.') || isInternal;
|
|
25
20
|
}
|
|
26
21
|
//# sourceMappingURL=is-url-like.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/link-control/is-url-like.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/link-control/is-url-like.js"],"names":["isURL","isURLLike","val","isInternal","startsWith","includes"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,gBAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,SAAT,CAAoBC,GAApB,EAA0B;AACxC,QAAMC,UAAU,GAAGD,GAAH,aAAGA,GAAH,uBAAGA,GAAG,CAAEE,UAAL,CAAiB,GAAjB,CAAnB;AACA,SAAOJ,KAAK,CAAEE,GAAF,CAAL,IAAkBA,GAAG,IAAIA,GAAG,CAACG,QAAJ,CAAc,MAAd,CAAzB,IAAqDF,UAA5D;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isURL } from '@wordpress/url';\n\n/**\n * Determines whether a given value could be a URL. Note this does not\n * guarantee the value is a URL only that it looks like it might be one. For\n * example, just because a string has `www.` in it doesn't make it a URL,\n * but it does make it highly likely that it will be so in the context of\n * creating a link it makes sense to treat it like one.\n *\n * @param {string} val the candidate for being URL-like (or not).\n *\n * @return {boolean} whether or not the value is potentially a URL.\n */\nexport default function isURLLike( val ) {\n\tconst isInternal = val?.startsWith( '#' );\n\treturn isURL( val ) || ( val && val.includes( 'www.' ) ) || isInternal;\n}\n"]}
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
import { getProtocol, prependHTTP } from '@wordpress/url';
|
|
5
5
|
import { useCallback } from '@wordpress/element';
|
|
6
6
|
import { useSelect } from '@wordpress/data';
|
|
7
|
-
/**
|
|
8
|
-
* External dependencies
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { startsWith } from 'lodash';
|
|
12
7
|
/**
|
|
13
8
|
* Internal dependencies
|
|
14
9
|
*/
|
|
@@ -29,7 +24,7 @@ export const handleDirectEntry = val => {
|
|
|
29
24
|
type = TEL_TYPE;
|
|
30
25
|
}
|
|
31
26
|
|
|
32
|
-
if (startsWith(
|
|
27
|
+
if (val !== null && val !== void 0 && val.startsWith('#')) {
|
|
33
28
|
type = INTERNAL_TYPE;
|
|
34
29
|
}
|
|
35
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/link-control/use-search-handler.js"],"names":["getProtocol","prependHTTP","useCallback","useSelect","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/link-control/use-search-handler.js"],"names":["getProtocol","prependHTTP","useCallback","useSelect","isURLLike","CREATE_TYPE","TEL_TYPE","MAILTO_TYPE","INTERNAL_TYPE","URL_TYPE","store","blockEditorStore","handleNoop","Promise","resolve","handleDirectEntry","val","type","protocol","includes","startsWith","id","title","url","handleEntitySearch","suggestionsQuery","fetchSearchSuggestions","directEntryHandler","withCreateSuggestion","withURLSuggestion","pageOnFront","isInitialSuggestions","resultsIncludeFrontPage","results","all","map","result","Number","isFrontPage","couldBeURL","concat","useSearchHandler","allowDirectEntry","select","getSettings","__experimentalFetchLinkSuggestions"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getProtocol, prependHTTP } from '@wordpress/url';\nimport { useCallback } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport isURLLike from './is-url-like';\nimport {\n\tCREATE_TYPE,\n\tTEL_TYPE,\n\tMAILTO_TYPE,\n\tINTERNAL_TYPE,\n\tURL_TYPE,\n} from './constants';\nimport { store as blockEditorStore } from '../../store';\n\nexport const handleNoop = () => Promise.resolve( [] );\n\nexport const handleDirectEntry = ( val ) => {\n\tlet type = URL_TYPE;\n\n\tconst protocol = getProtocol( val ) || '';\n\n\tif ( protocol.includes( 'mailto' ) ) {\n\t\ttype = MAILTO_TYPE;\n\t}\n\n\tif ( protocol.includes( 'tel' ) ) {\n\t\ttype = TEL_TYPE;\n\t}\n\n\tif ( val?.startsWith( '#' ) ) {\n\t\ttype = INTERNAL_TYPE;\n\t}\n\n\treturn Promise.resolve( [\n\t\t{\n\t\t\tid: val,\n\t\t\ttitle: val,\n\t\t\turl: type === 'URL' ? prependHTTP( val ) : val,\n\t\t\ttype,\n\t\t},\n\t] );\n};\n\nconst handleEntitySearch = async (\n\tval,\n\tsuggestionsQuery,\n\tfetchSearchSuggestions,\n\tdirectEntryHandler,\n\twithCreateSuggestion,\n\twithURLSuggestion,\n\tpageOnFront\n) => {\n\tconst { isInitialSuggestions } = suggestionsQuery;\n\tlet resultsIncludeFrontPage = false;\n\n\tlet results = await Promise.all( [\n\t\tfetchSearchSuggestions( val, suggestionsQuery ),\n\t\tdirectEntryHandler( val ),\n\t] );\n\n\t// Identify front page and update type to match.\n\tresults[ 0 ] = results[ 0 ].map( ( result ) => {\n\t\tif ( Number( result.id ) === pageOnFront ) {\n\t\t\tresultsIncludeFrontPage = true;\n\t\t\tresult.isFrontPage = true;\n\t\t\treturn result;\n\t\t}\n\n\t\treturn result;\n\t} );\n\n\tconst couldBeURL = ! val.includes( ' ' );\n\n\t// If it's potentially a URL search then concat on a URL search suggestion\n\t// just for good measure. That way once the actual results run out we always\n\t// have a URL option to fallback on.\n\tif (\n\t\t! resultsIncludeFrontPage &&\n\t\tcouldBeURL &&\n\t\twithURLSuggestion &&\n\t\t! isInitialSuggestions\n\t) {\n\t\tresults = results[ 0 ].concat( results[ 1 ] );\n\t} else {\n\t\tresults = results[ 0 ];\n\t}\n\n\t// If displaying initial suggestions just return plain results.\n\tif ( isInitialSuggestions ) {\n\t\treturn results;\n\t}\n\n\t// Here we append a faux suggestion to represent a \"CREATE\" option. This\n\t// is detected in the rendering of the search results and handled as a\n\t// special case. This is currently necessary because the suggestions\n\t// dropdown will only appear if there are valid suggestions and\n\t// therefore unless the create option is a suggestion it will not\n\t// display in scenarios where there are no results returned from the\n\t// API. In addition promoting CREATE to a first class suggestion affords\n\t// the a11y benefits afforded by `URLInput` to all suggestions (eg:\n\t// keyboard handling, ARIA roles...etc).\n\t//\n\t// Note also that the value of the `title` and `url` properties must correspond\n\t// to the text value of the `<input>`. This is because `title` is used\n\t// when creating the suggestion. Similarly `url` is used when using keyboard to select\n\t// the suggestion (the <form> `onSubmit` handler falls-back to `url`).\n\treturn isURLLike( val ) || ! withCreateSuggestion\n\t\t? results\n\t\t: results.concat( {\n\t\t\t\t// the `id` prop is intentionally ommitted here because it\n\t\t\t\t// is never exposed as part of the component's public API.\n\t\t\t\t// see: https://github.com/WordPress/gutenberg/pull/19775#discussion_r378931316.\n\t\t\t\ttitle: val, // Must match the existing `<input>`s text value.\n\t\t\t\turl: val, // Must match the existing `<input>`s text value.\n\t\t\t\ttype: CREATE_TYPE,\n\t\t } );\n};\n\nexport default function useSearchHandler(\n\tsuggestionsQuery,\n\tallowDirectEntry,\n\twithCreateSuggestion,\n\twithURLSuggestion\n) {\n\tconst { fetchSearchSuggestions, pageOnFront } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\n\t\treturn {\n\t\t\tpageOnFront: getSettings().pageOnFront,\n\t\t\tfetchSearchSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t}, [] );\n\n\tconst directEntryHandler = allowDirectEntry\n\t\t? handleDirectEntry\n\t\t: handleNoop;\n\n\treturn useCallback(\n\t\t( val, { isInitialSuggestions } ) => {\n\t\t\treturn isURLLike( val )\n\t\t\t\t? directEntryHandler( val, { isInitialSuggestions } )\n\t\t\t\t: handleEntitySearch(\n\t\t\t\t\t\tval,\n\t\t\t\t\t\t{ ...suggestionsQuery, isInitialSuggestions },\n\t\t\t\t\t\tfetchSearchSuggestions,\n\t\t\t\t\t\tdirectEntryHandler,\n\t\t\t\t\t\twithCreateSuggestion,\n\t\t\t\t\t\twithURLSuggestion,\n\t\t\t\t\t\tpageOnFront\n\t\t\t\t );\n\t\t},\n\t\t[ directEntryHandler, fetchSearchSuggestions, withCreateSuggestion ]\n\t);\n}\n"]}
|
|
@@ -3,7 +3,8 @@ import { createElement } from "@wordpress/element";
|
|
|
3
3
|
/**
|
|
4
4
|
* WordPress dependencies
|
|
5
5
|
*/
|
|
6
|
-
import { chevronRightSmall, Icon } from '@wordpress/icons';
|
|
6
|
+
import { chevronRightSmall, chevronLeftSmall, Icon } from '@wordpress/icons';
|
|
7
|
+
import { isRTL } from '@wordpress/i18n';
|
|
7
8
|
export default function ListViewExpander(_ref) {
|
|
8
9
|
let {
|
|
9
10
|
onClick
|
|
@@ -24,7 +25,7 @@ export default function ListViewExpander(_ref) {
|
|
|
24
25
|
}),
|
|
25
26
|
"aria-hidden": "true"
|
|
26
27
|
}, createElement(Icon, {
|
|
27
|
-
icon: chevronRightSmall
|
|
28
|
+
icon: isRTL() ? chevronLeftSmall : chevronRightSmall
|
|
28
29
|
}))
|
|
29
30
|
);
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/list-view/expander.js"],"names":["chevronRightSmall","Icon","ListViewExpander","onClick","event","forceToggle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,iBAAT,EAA4BC,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/list-view/expander.js"],"names":["chevronRightSmall","chevronLeftSmall","Icon","isRTL","ListViewExpander","onClick","event","forceToggle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,iBAAT,EAA4BC,gBAA5B,EAA8CC,IAA9C,QAA0D,kBAA1D;AACA,SAASC,KAAT,QAAsB,iBAAtB;AAEA,eAAe,SAASC,gBAAT,OAAyC;AAAA,MAAd;AAAEC,IAAAA;AAAF,GAAc;AACvD,SACC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACC,MAAA,SAAS,EAAC,kCADX;AAEC,MAAA,OAAO,EAAKC,KAAF,IAAaD,OAAO,CAAEC,KAAF,EAAS;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAT,CAF/B;AAGC,qBAAY;AAHb,OAKC,cAAC,IAAD;AAAM,MAAA,IAAI,EAAGJ,KAAK,KAAKF,gBAAL,GAAwBD;AAA1C,MALD;AAVD;AAkBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { chevronRightSmall, chevronLeftSmall, Icon } from '@wordpress/icons';\nimport { isRTL } from '@wordpress/i18n';\n\nexport default function ListViewExpander( { onClick } ) {\n\treturn (\n\t\t// Keyboard events are handled by TreeGrid see: components/src/tree-grid/index.js\n\t\t//\n\t\t// The expander component is implemented as a pseudo element in the w3 example\n\t\t// https://www.w3.org/TR/wai-aria-practices/examples/treegrid/treegrid-1.html\n\t\t//\n\t\t// We've mimicked this by adding an icon with aria-hidden set to true to hide this from the accessibility tree.\n\t\t// For the current tree grid implementation, please do not try to make this a button.\n\t\t//\n\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n\t\t<span\n\t\t\tclassName=\"block-editor-list-view__expander\"\n\t\t\tonClick={ ( event ) => onClick( event, { forceToggle: true } ) }\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<Icon icon={ isRTL() ? chevronLeftSmall : chevronRightSmall } />\n\t\t</span>\n\t);\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
1
2
|
import { createElement } from "@wordpress/element";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* External dependencies
|
|
5
6
|
*/
|
|
6
7
|
import { Platform } from 'react-native';
|
|
7
|
-
import { delay } from 'lodash';
|
|
8
8
|
import prompt from 'react-native-prompt-android';
|
|
9
9
|
/**
|
|
10
10
|
* WordPress dependencies
|
|
@@ -32,6 +32,9 @@ const PICKER_OPENING_DELAY = 200;
|
|
|
32
32
|
export class MediaUpload extends Component {
|
|
33
33
|
constructor(props) {
|
|
34
34
|
super(props);
|
|
35
|
+
|
|
36
|
+
_defineProperty(this, "pickerTimeout", void 0);
|
|
37
|
+
|
|
35
38
|
this.onPickerPresent = this.onPickerPresent.bind(this);
|
|
36
39
|
this.onPickerSelect = this.onPickerSelect.bind(this);
|
|
37
40
|
this.getAllSources = this.getAllSources.bind(this);
|
|
@@ -63,6 +66,10 @@ export class MediaUpload extends Component {
|
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
68
|
|
|
69
|
+
componentWillUnmount() {
|
|
70
|
+
clearTimeout(this.pickerTimeout);
|
|
71
|
+
}
|
|
72
|
+
|
|
66
73
|
getAllSources() {
|
|
67
74
|
const {
|
|
68
75
|
onSelectURL
|
|
@@ -149,7 +156,7 @@ export class MediaUpload extends Component {
|
|
|
149
156
|
// the delay below is required because on iOS this action sheet gets dismissed by the close event of the Inserter
|
|
150
157
|
// so this delay allows the Inserter to be closed fully before presenting action sheet.
|
|
151
158
|
if (autoOpen && isIOS) {
|
|
152
|
-
|
|
159
|
+
this.pickerTimeout = setTimeout(() => this.picker.presentPicker(), PICKER_OPENING_DELAY);
|
|
153
160
|
} else {
|
|
154
161
|
this.picker.presentPicker();
|
|
155
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/media-upload/index.native.js"],"names":["Platform","delay","prompt","Component","React","__","Picker","getOtherMediaOptions","requestMediaPicker","mediaSources","capturePhoto","captureVideo","image","wordpress","mobile","globe","store","blockEditorStore","compose","withSelect","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","MEDIA_TYPE_ANY","OPTION_TAKE_VIDEO","OPTION_TAKE_PHOTO","OPTION_TAKE_PHOTO_OR_VIDEO","OPTION_INSERT_FROM_URL","OPTION_WORDPRESS_MEDIA_LIBRARY","URL_MEDIA_SOURCE","PICKER_OPENING_DELAY","MediaUpload","constructor","props","onPickerPresent","bind","onPickerSelect","getAllSources","state","otherMediaOptions","componentDidMount","allowedTypes","autoOpen","otherMediaOptionsWithIcons","map","option","requiresModal","types","id","value","setState","onSelectURL","cameraImageSource","deviceCamera","label","icon","cameraVideoSource","deviceLibrarySource","deviceLibrary","siteLibrarySource","siteMediaLibrary","mediaLibrary","urlSource","internalSources","concat","getMediaOptionsItems","__experimentalOnlyMediaLibrary","isAudioBlockMediaUploadEnabled","filter","source","every","allowedType","includes","some","getChooseFromDeviceIcon","isIOS","OS","picker","presentPicker","onSelect","multiple","undefined","text","style","onPress","mediaSource","shift","type","media","render","isReplacingMedia","isOneType","length","isImage","isVideo","isAudio","isAnyType","isImageOrVideo","pickerTitle","getMediaOptions","instance","open","select","getSettings"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform } from 'react-native';\n\nimport { delay } from 'lodash';\n\nimport prompt from 'react-native-prompt-android';\n\n/**\n * WordPress dependencies\n */\nimport { Component, React } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Picker } from '@wordpress/components';\nimport {\n\tgetOtherMediaOptions,\n\trequestMediaPicker,\n\tmediaSources,\n} from '@wordpress/react-native-bridge';\nimport {\n\tcapturePhoto,\n\tcaptureVideo,\n\timage,\n\twordpress,\n\tmobile,\n\tglobe,\n} from '@wordpress/icons';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\n\nexport const MEDIA_TYPE_IMAGE = 'image';\nexport const MEDIA_TYPE_VIDEO = 'video';\nexport const MEDIA_TYPE_AUDIO = 'audio';\nexport const MEDIA_TYPE_ANY = 'any';\n\nexport const OPTION_TAKE_VIDEO = __( 'Take a Video' );\nexport const OPTION_TAKE_PHOTO = __( 'Take a Photo' );\nexport const OPTION_TAKE_PHOTO_OR_VIDEO = __( 'Take a Photo or Video' );\nexport const OPTION_INSERT_FROM_URL = __( 'Insert from URL' );\nexport const OPTION_WORDPRESS_MEDIA_LIBRARY = __( 'WordPress Media Library' );\n\nconst URL_MEDIA_SOURCE = 'URL';\n\nconst PICKER_OPENING_DELAY = 200;\n\nexport class MediaUpload extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.onPickerPresent = this.onPickerPresent.bind( this );\n\t\tthis.onPickerSelect = this.onPickerSelect.bind( this );\n\t\tthis.getAllSources = this.getAllSources.bind( this );\n\t\tthis.state = {\n\t\t\totherMediaOptions: [],\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { allowedTypes = [], autoOpen } = this.props;\n\t\tgetOtherMediaOptions( allowedTypes, ( otherMediaOptions ) => {\n\t\t\tconst otherMediaOptionsWithIcons = otherMediaOptions.map(\n\t\t\t\t( option ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\trequiresModal: true,\n\t\t\t\t\t\ttypes: allowedTypes,\n\t\t\t\t\t\tid: option.value,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.setState( { otherMediaOptions: otherMediaOptionsWithIcons } );\n\t\t} );\n\n\t\tif ( autoOpen ) {\n\t\t\tthis.onPickerPresent();\n\t\t}\n\t}\n\n\tgetAllSources() {\n\t\tconst { onSelectURL } = this.props;\n\n\t\tconst cameraImageSource = {\n\t\t\tid: mediaSources.deviceCamera, // ID is the value sent to native.\n\t\t\tvalue: mediaSources.deviceCamera + '-IMAGE', // This is needed to diferenciate image-camera from video-camera sources.\n\t\t\tlabel: __( 'Take a Photo' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [ MEDIA_TYPE_IMAGE ],\n\t\t\ticon: capturePhoto,\n\t\t};\n\n\t\tconst cameraVideoSource = {\n\t\t\tid: mediaSources.deviceCamera,\n\t\t\tvalue: mediaSources.deviceCamera,\n\t\t\tlabel: __( 'Take a Video' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [ MEDIA_TYPE_VIDEO ],\n\t\t\ticon: captureVideo,\n\t\t};\n\n\t\tconst deviceLibrarySource = {\n\t\t\tid: mediaSources.deviceLibrary,\n\t\t\tvalue: mediaSources.deviceLibrary,\n\t\t\tlabel: __( 'Choose from device' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [ MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO ],\n\t\t\ticon: image,\n\t\t};\n\n\t\tconst siteLibrarySource = {\n\t\t\tid: mediaSources.siteMediaLibrary,\n\t\t\tvalue: mediaSources.siteMediaLibrary,\n\t\t\tlabel: __( 'WordPress Media Library' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [\n\t\t\t\tMEDIA_TYPE_IMAGE,\n\t\t\t\tMEDIA_TYPE_VIDEO,\n\t\t\t\tMEDIA_TYPE_AUDIO,\n\t\t\t\tMEDIA_TYPE_ANY,\n\t\t\t],\n\t\t\ticon: wordpress,\n\t\t\tmediaLibrary: true,\n\t\t};\n\n\t\tconst urlSource = {\n\t\t\tid: URL_MEDIA_SOURCE,\n\t\t\tvalue: URL_MEDIA_SOURCE,\n\t\t\tlabel: __( 'Insert from URL' ),\n\t\t\ttypes: [ MEDIA_TYPE_AUDIO, MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO ],\n\t\t\ticon: globe,\n\t\t};\n\n\t\t// Only include `urlSource` option if `onSelectURL` prop is present, in order to match the web behavior.\n\t\tconst internalSources = [\n\t\t\tdeviceLibrarySource,\n\t\t\tcameraImageSource,\n\t\t\tcameraVideoSource,\n\t\t\tsiteLibrarySource,\n\t\t\t...( onSelectURL ? [ urlSource ] : [] ),\n\t\t];\n\n\t\treturn internalSources.concat( this.state.otherMediaOptions );\n\t}\n\n\tgetMediaOptionsItems() {\n\t\tconst {\n\t\t\tallowedTypes = [],\n\t\t\t__experimentalOnlyMediaLibrary,\n\t\t\tisAudioBlockMediaUploadEnabled,\n\t\t} = this.props;\n\n\t\treturn this.getAllSources()\n\t\t\t.filter( ( source ) => {\n\t\t\t\tif ( __experimentalOnlyMediaLibrary ) {\n\t\t\t\t\treturn source.mediaLibrary;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedTypes.every(\n\t\t\t\t\t\t( allowedType ) =>\n\t\t\t\t\t\t\tallowedType === MEDIA_TYPE_AUDIO &&\n\t\t\t\t\t\t\tsource.types.includes( allowedType )\n\t\t\t\t\t) &&\n\t\t\t\t\tsource.id !== URL_MEDIA_SOURCE\n\t\t\t\t) {\n\t\t\t\t\treturn isAudioBlockMediaUploadEnabled === true;\n\t\t\t\t}\n\n\t\t\t\treturn allowedTypes.some( ( allowedType ) =>\n\t\t\t\t\tsource.types.includes( allowedType )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.map( ( source ) => {\n\t\t\t\treturn {\n\t\t\t\t\t...source,\n\t\t\t\t\ticon: source.icon || this.getChooseFromDeviceIcon(),\n\t\t\t\t};\n\t\t\t} );\n\t}\n\n\tgetChooseFromDeviceIcon() {\n\t\treturn mobile;\n\t}\n\n\tonPickerPresent() {\n\t\tconst { autoOpen } = this.props;\n\t\tconst isIOS = Platform.OS === 'ios';\n\n\t\tif ( this.picker ) {\n\t\t\t// the delay below is required because on iOS this action sheet gets dismissed by the close event of the Inserter\n\t\t\t// so this delay allows the Inserter to be closed fully before presenting action sheet.\n\t\t\tif ( autoOpen && isIOS ) {\n\t\t\t\tdelay(\n\t\t\t\t\t() => this.picker.presentPicker(),\n\t\t\t\t\tPICKER_OPENING_DELAY\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.picker.presentPicker();\n\t\t\t}\n\t\t}\n\t}\n\n\tonPickerSelect( value ) {\n\t\tconst {\n\t\t\tallowedTypes = [],\n\t\t\tonSelect,\n\t\t\tonSelectURL,\n\t\t\tmultiple = false,\n\t\t} = this.props;\n\n\t\tif ( value === URL_MEDIA_SOURCE ) {\n\t\t\tprompt(\n\t\t\t\t__( 'Type a URL' ), // title\n\t\t\t\tundefined, // message\n\t\t\t\t[\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: __( 'Cancel' ),\n\t\t\t\t\t\tstyle: 'cancel',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: __( 'Apply' ),\n\t\t\t\t\t\tonPress: onSelectURL,\n\t\t\t\t\t},\n\t\t\t\t], // Buttons.\n\t\t\t\t'plain-text', // type\n\t\t\t\tundefined, // defaultValue\n\t\t\t\t'url' // keyboardType\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst mediaSource = this.getAllSources()\n\t\t\t.filter( ( source ) => source.value === value )\n\t\t\t.shift();\n\t\tconst types = allowedTypes.filter( ( type ) =>\n\t\t\tmediaSource.types.includes( type )\n\t\t);\n\n\t\trequestMediaPicker( mediaSource.id, types, multiple, ( media ) => {\n\t\t\tif ( ( multiple && media ) || ( media && media.id ) ) {\n\t\t\t\tonSelect( media );\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst { allowedTypes = [], isReplacingMedia, multiple } = this.props;\n\t\tconst isOneType = allowedTypes.length === 1;\n\t\tconst isImage = isOneType && allowedTypes.includes( MEDIA_TYPE_IMAGE );\n\t\tconst isVideo = isOneType && allowedTypes.includes( MEDIA_TYPE_VIDEO );\n\t\tconst isAudio = isOneType && allowedTypes.includes( MEDIA_TYPE_AUDIO );\n\t\tconst isAnyType = isOneType && allowedTypes.includes( MEDIA_TYPE_ANY );\n\n\t\tconst isImageOrVideo =\n\t\t\tallowedTypes.length === 2 &&\n\t\t\tallowedTypes.includes( MEDIA_TYPE_IMAGE ) &&\n\t\t\tallowedTypes.includes( MEDIA_TYPE_VIDEO );\n\n\t\tlet pickerTitle;\n\t\tif ( isImage ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace image' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = multiple\n\t\t\t\t\t? __( 'Choose images' )\n\t\t\t\t\t: __( 'Choose image' );\n\t\t\t}\n\t\t} else if ( isVideo ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace video' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose video' );\n\t\t\t}\n\t\t} else if ( isImageOrVideo ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace image or video' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose image or video' );\n\t\t\t}\n\t\t} else if ( isAudio ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace audio' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose audio' );\n\t\t\t}\n\t\t} else if ( isAnyType ) {\n\t\t\tpickerTitle = __( 'Choose file' );\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace file' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose file' );\n\t\t\t}\n\t\t}\n\n\t\tconst getMediaOptions = () => (\n\t\t\t<Picker\n\t\t\t\ttitle={ pickerTitle }\n\t\t\t\thideCancelButton\n\t\t\t\tref={ ( instance ) => ( this.picker = instance ) }\n\t\t\t\toptions={ this.getMediaOptionsItems() }\n\t\t\t\tonChange={ this.onPickerSelect }\n\t\t\t\ttestID=\"media-options-picker\"\n\t\t\t/>\n\t\t);\n\n\t\treturn this.props.render( {\n\t\t\topen: this.onPickerPresent,\n\t\t\tgetMediaOptions,\n\t\t} );\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tisAudioBlockMediaUploadEnabled:\n\t\t\t\tselect( blockEditorStore ).getSettings( 'capabilities' )\n\t\t\t\t\t.isAudioBlockMediaUploadEnabled === true,\n\t\t};\n\t} ),\n] )( MediaUpload );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/media-upload/index.native.js"],"names":["Platform","prompt","Component","React","__","Picker","getOtherMediaOptions","requestMediaPicker","mediaSources","capturePhoto","captureVideo","image","wordpress","mobile","globe","store","blockEditorStore","compose","withSelect","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","MEDIA_TYPE_ANY","OPTION_TAKE_VIDEO","OPTION_TAKE_PHOTO","OPTION_TAKE_PHOTO_OR_VIDEO","OPTION_INSERT_FROM_URL","OPTION_WORDPRESS_MEDIA_LIBRARY","URL_MEDIA_SOURCE","PICKER_OPENING_DELAY","MediaUpload","constructor","props","onPickerPresent","bind","onPickerSelect","getAllSources","state","otherMediaOptions","componentDidMount","allowedTypes","autoOpen","otherMediaOptionsWithIcons","map","option","requiresModal","types","id","value","setState","componentWillUnmount","clearTimeout","pickerTimeout","onSelectURL","cameraImageSource","deviceCamera","label","icon","cameraVideoSource","deviceLibrarySource","deviceLibrary","siteLibrarySource","siteMediaLibrary","mediaLibrary","urlSource","internalSources","concat","getMediaOptionsItems","__experimentalOnlyMediaLibrary","isAudioBlockMediaUploadEnabled","filter","source","every","allowedType","includes","some","getChooseFromDeviceIcon","isIOS","OS","picker","setTimeout","presentPicker","onSelect","multiple","undefined","text","style","onPress","mediaSource","shift","type","media","render","isReplacingMedia","isOneType","length","isImage","isVideo","isAudio","isAnyType","isImageOrVideo","pickerTitle","getMediaOptions","instance","open","select","getSettings"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform } from 'react-native';\n\nimport prompt from 'react-native-prompt-android';\n\n/**\n * WordPress dependencies\n */\nimport { Component, React } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Picker } from '@wordpress/components';\nimport {\n\tgetOtherMediaOptions,\n\trequestMediaPicker,\n\tmediaSources,\n} from '@wordpress/react-native-bridge';\nimport {\n\tcapturePhoto,\n\tcaptureVideo,\n\timage,\n\twordpress,\n\tmobile,\n\tglobe,\n} from '@wordpress/icons';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\n\nexport const MEDIA_TYPE_IMAGE = 'image';\nexport const MEDIA_TYPE_VIDEO = 'video';\nexport const MEDIA_TYPE_AUDIO = 'audio';\nexport const MEDIA_TYPE_ANY = 'any';\n\nexport const OPTION_TAKE_VIDEO = __( 'Take a Video' );\nexport const OPTION_TAKE_PHOTO = __( 'Take a Photo' );\nexport const OPTION_TAKE_PHOTO_OR_VIDEO = __( 'Take a Photo or Video' );\nexport const OPTION_INSERT_FROM_URL = __( 'Insert from URL' );\nexport const OPTION_WORDPRESS_MEDIA_LIBRARY = __( 'WordPress Media Library' );\n\nconst URL_MEDIA_SOURCE = 'URL';\n\nconst PICKER_OPENING_DELAY = 200;\n\nexport class MediaUpload extends Component {\n\tpickerTimeout;\n\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.onPickerPresent = this.onPickerPresent.bind( this );\n\t\tthis.onPickerSelect = this.onPickerSelect.bind( this );\n\t\tthis.getAllSources = this.getAllSources.bind( this );\n\t\tthis.state = {\n\t\t\totherMediaOptions: [],\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { allowedTypes = [], autoOpen } = this.props;\n\t\tgetOtherMediaOptions( allowedTypes, ( otherMediaOptions ) => {\n\t\t\tconst otherMediaOptionsWithIcons = otherMediaOptions.map(\n\t\t\t\t( option ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\trequiresModal: true,\n\t\t\t\t\t\ttypes: allowedTypes,\n\t\t\t\t\t\tid: option.value,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.setState( { otherMediaOptions: otherMediaOptionsWithIcons } );\n\t\t} );\n\n\t\tif ( autoOpen ) {\n\t\t\tthis.onPickerPresent();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.pickerTimeout );\n\t}\n\n\tgetAllSources() {\n\t\tconst { onSelectURL } = this.props;\n\n\t\tconst cameraImageSource = {\n\t\t\tid: mediaSources.deviceCamera, // ID is the value sent to native.\n\t\t\tvalue: mediaSources.deviceCamera + '-IMAGE', // This is needed to diferenciate image-camera from video-camera sources.\n\t\t\tlabel: __( 'Take a Photo' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [ MEDIA_TYPE_IMAGE ],\n\t\t\ticon: capturePhoto,\n\t\t};\n\n\t\tconst cameraVideoSource = {\n\t\t\tid: mediaSources.deviceCamera,\n\t\t\tvalue: mediaSources.deviceCamera,\n\t\t\tlabel: __( 'Take a Video' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [ MEDIA_TYPE_VIDEO ],\n\t\t\ticon: captureVideo,\n\t\t};\n\n\t\tconst deviceLibrarySource = {\n\t\t\tid: mediaSources.deviceLibrary,\n\t\t\tvalue: mediaSources.deviceLibrary,\n\t\t\tlabel: __( 'Choose from device' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [ MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO ],\n\t\t\ticon: image,\n\t\t};\n\n\t\tconst siteLibrarySource = {\n\t\t\tid: mediaSources.siteMediaLibrary,\n\t\t\tvalue: mediaSources.siteMediaLibrary,\n\t\t\tlabel: __( 'WordPress Media Library' ),\n\t\t\trequiresModal: true,\n\t\t\ttypes: [\n\t\t\t\tMEDIA_TYPE_IMAGE,\n\t\t\t\tMEDIA_TYPE_VIDEO,\n\t\t\t\tMEDIA_TYPE_AUDIO,\n\t\t\t\tMEDIA_TYPE_ANY,\n\t\t\t],\n\t\t\ticon: wordpress,\n\t\t\tmediaLibrary: true,\n\t\t};\n\n\t\tconst urlSource = {\n\t\t\tid: URL_MEDIA_SOURCE,\n\t\t\tvalue: URL_MEDIA_SOURCE,\n\t\t\tlabel: __( 'Insert from URL' ),\n\t\t\ttypes: [ MEDIA_TYPE_AUDIO, MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO ],\n\t\t\ticon: globe,\n\t\t};\n\n\t\t// Only include `urlSource` option if `onSelectURL` prop is present, in order to match the web behavior.\n\t\tconst internalSources = [\n\t\t\tdeviceLibrarySource,\n\t\t\tcameraImageSource,\n\t\t\tcameraVideoSource,\n\t\t\tsiteLibrarySource,\n\t\t\t...( onSelectURL ? [ urlSource ] : [] ),\n\t\t];\n\n\t\treturn internalSources.concat( this.state.otherMediaOptions );\n\t}\n\n\tgetMediaOptionsItems() {\n\t\tconst {\n\t\t\tallowedTypes = [],\n\t\t\t__experimentalOnlyMediaLibrary,\n\t\t\tisAudioBlockMediaUploadEnabled,\n\t\t} = this.props;\n\n\t\treturn this.getAllSources()\n\t\t\t.filter( ( source ) => {\n\t\t\t\tif ( __experimentalOnlyMediaLibrary ) {\n\t\t\t\t\treturn source.mediaLibrary;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedTypes.every(\n\t\t\t\t\t\t( allowedType ) =>\n\t\t\t\t\t\t\tallowedType === MEDIA_TYPE_AUDIO &&\n\t\t\t\t\t\t\tsource.types.includes( allowedType )\n\t\t\t\t\t) &&\n\t\t\t\t\tsource.id !== URL_MEDIA_SOURCE\n\t\t\t\t) {\n\t\t\t\t\treturn isAudioBlockMediaUploadEnabled === true;\n\t\t\t\t}\n\n\t\t\t\treturn allowedTypes.some( ( allowedType ) =>\n\t\t\t\t\tsource.types.includes( allowedType )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.map( ( source ) => {\n\t\t\t\treturn {\n\t\t\t\t\t...source,\n\t\t\t\t\ticon: source.icon || this.getChooseFromDeviceIcon(),\n\t\t\t\t};\n\t\t\t} );\n\t}\n\n\tgetChooseFromDeviceIcon() {\n\t\treturn mobile;\n\t}\n\n\tonPickerPresent() {\n\t\tconst { autoOpen } = this.props;\n\t\tconst isIOS = Platform.OS === 'ios';\n\n\t\tif ( this.picker ) {\n\t\t\t// the delay below is required because on iOS this action sheet gets dismissed by the close event of the Inserter\n\t\t\t// so this delay allows the Inserter to be closed fully before presenting action sheet.\n\t\t\tif ( autoOpen && isIOS ) {\n\t\t\t\tthis.pickerTimeout = setTimeout(\n\t\t\t\t\t() => this.picker.presentPicker(),\n\t\t\t\t\tPICKER_OPENING_DELAY\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.picker.presentPicker();\n\t\t\t}\n\t\t}\n\t}\n\n\tonPickerSelect( value ) {\n\t\tconst {\n\t\t\tallowedTypes = [],\n\t\t\tonSelect,\n\t\t\tonSelectURL,\n\t\t\tmultiple = false,\n\t\t} = this.props;\n\n\t\tif ( value === URL_MEDIA_SOURCE ) {\n\t\t\tprompt(\n\t\t\t\t__( 'Type a URL' ), // title\n\t\t\t\tundefined, // message\n\t\t\t\t[\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: __( 'Cancel' ),\n\t\t\t\t\t\tstyle: 'cancel',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: __( 'Apply' ),\n\t\t\t\t\t\tonPress: onSelectURL,\n\t\t\t\t\t},\n\t\t\t\t], // Buttons.\n\t\t\t\t'plain-text', // type\n\t\t\t\tundefined, // defaultValue\n\t\t\t\t'url' // keyboardType\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst mediaSource = this.getAllSources()\n\t\t\t.filter( ( source ) => source.value === value )\n\t\t\t.shift();\n\t\tconst types = allowedTypes.filter( ( type ) =>\n\t\t\tmediaSource.types.includes( type )\n\t\t);\n\n\t\trequestMediaPicker( mediaSource.id, types, multiple, ( media ) => {\n\t\t\tif ( ( multiple && media ) || ( media && media.id ) ) {\n\t\t\t\tonSelect( media );\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst { allowedTypes = [], isReplacingMedia, multiple } = this.props;\n\t\tconst isOneType = allowedTypes.length === 1;\n\t\tconst isImage = isOneType && allowedTypes.includes( MEDIA_TYPE_IMAGE );\n\t\tconst isVideo = isOneType && allowedTypes.includes( MEDIA_TYPE_VIDEO );\n\t\tconst isAudio = isOneType && allowedTypes.includes( MEDIA_TYPE_AUDIO );\n\t\tconst isAnyType = isOneType && allowedTypes.includes( MEDIA_TYPE_ANY );\n\n\t\tconst isImageOrVideo =\n\t\t\tallowedTypes.length === 2 &&\n\t\t\tallowedTypes.includes( MEDIA_TYPE_IMAGE ) &&\n\t\t\tallowedTypes.includes( MEDIA_TYPE_VIDEO );\n\n\t\tlet pickerTitle;\n\t\tif ( isImage ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace image' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = multiple\n\t\t\t\t\t? __( 'Choose images' )\n\t\t\t\t\t: __( 'Choose image' );\n\t\t\t}\n\t\t} else if ( isVideo ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace video' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose video' );\n\t\t\t}\n\t\t} else if ( isImageOrVideo ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace image or video' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose image or video' );\n\t\t\t}\n\t\t} else if ( isAudio ) {\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace audio' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose audio' );\n\t\t\t}\n\t\t} else if ( isAnyType ) {\n\t\t\tpickerTitle = __( 'Choose file' );\n\t\t\tif ( isReplacingMedia ) {\n\t\t\t\tpickerTitle = __( 'Replace file' );\n\t\t\t} else {\n\t\t\t\tpickerTitle = __( 'Choose file' );\n\t\t\t}\n\t\t}\n\n\t\tconst getMediaOptions = () => (\n\t\t\t<Picker\n\t\t\t\ttitle={ pickerTitle }\n\t\t\t\thideCancelButton\n\t\t\t\tref={ ( instance ) => ( this.picker = instance ) }\n\t\t\t\toptions={ this.getMediaOptionsItems() }\n\t\t\t\tonChange={ this.onPickerSelect }\n\t\t\t\ttestID=\"media-options-picker\"\n\t\t\t/>\n\t\t);\n\n\t\treturn this.props.render( {\n\t\t\topen: this.onPickerPresent,\n\t\t\tgetMediaOptions,\n\t\t} );\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tisAudioBlockMediaUploadEnabled:\n\t\t\t\tselect( blockEditorStore ).getSettings( 'capabilities' )\n\t\t\t\t\t.isAudioBlockMediaUploadEnabled === true,\n\t\t};\n\t} ),\n] )( MediaUpload );\n"]}
|
|
@@ -32,10 +32,10 @@ export default function PreviewOptions(_ref) {
|
|
|
32
32
|
disabled: !isEnabled,
|
|
33
33
|
|
|
34
34
|
/* translators: button label text should, if possible, be under 16 characters. */
|
|
35
|
-
children: __('
|
|
35
|
+
children: __('View')
|
|
36
36
|
};
|
|
37
37
|
const menuProps = {
|
|
38
|
-
'aria-label': __('
|
|
38
|
+
'aria-label': __('View options')
|
|
39
39
|
};
|
|
40
40
|
return createElement(DropdownMenu, {
|
|
41
41
|
className: "block-editor-post-preview__dropdown",
|