Changeset 3420618
- Timestamp:
- 12/16/2025 03:21:31 AM (2 weeks ago)
- Location:
- content-blocks-builder
- Files:
-
- 2 deleted
- 16 edited
- 1 copied
-
tags/2.8.7 (copied) (copied from content-blocks-builder/trunk)
-
tags/2.8.7/build/settings.asset.php (modified) (1 diff)
-
tags/2.8.7/build/settings.js (modified) (1 diff)
-
tags/2.8.7/build/variations.asset.php (modified) (1 diff)
-
tags/2.8.7/build/variations.js (modified) (1 diff)
-
tags/2.8.7/content-blocks-builder.php (modified) (2 diffs)
-
tags/2.8.7/includes/icon-library.php (modified) (1 diff)
-
tags/2.8.7/libs (deleted)
-
tags/2.8.7/readme.txt (modified) (2 diffs)
-
tags/2.8.7/src (deleted)
-
trunk/build/settings.asset.php (modified) (1 diff)
-
trunk/build/settings.js (modified) (1 diff)
-
trunk/build/variations.asset.php (modified) (1 diff)
-
trunk/build/variations.js (modified) (1 diff)
-
trunk/content-blocks-builder.php (modified) (2 diffs)
-
trunk/includes/icon-library.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/src/settings/getting-started/index.js (modified) (1 diff)
-
trunk/src/variations/settings-menu-item.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
content-blocks-builder/tags/2.8.7/build/settings.asset.php
r3392561 r3420618 1 <?php return array('dependencies' => array('lodash', 'react', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-dom-ready', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-primitives', 'wp-url'), 'version' => '4 2d5ebaba419c3a48b79');1 <?php return array('dependencies' => array('lodash', 'react', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-dom-ready', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-primitives', 'wp-url'), 'version' => '4b558f9f2495a77f02e2'); -
content-blocks-builder/tags/2.8.7/build/settings.js
r3392561 r3420618 748 748 gap: 12px; 749 749 } 750 `,Sn=({videoId:e})=>(0,he.jsx)("div",{className:"video-frame",children:(0,he.jsx)("iframe",{src:`https://www.youtube.com/embed/${e}`,srcDoc:`<style>*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img{position:absolute;width:100%;top:0;bottom:0;margin:auto}.btn-play{position: absolute;top: 50%;left: 50%;z-index: 1;display: block;width: 68px;height: 48px;margin:0;cursor: pointer;transform: translate3d(-50%, -50%, 0);background-color: transparent;background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');filter: grayscale(100%);transition: filter .1s cubic-bezier(0, 0, 0.2, 1);border: none;}body:hover .btn-play,.btn-play:focus{filter:none}.visually-hidden{clip: rect(0 0 0 0);clip-path: inset(50%);height: 1px;overflow: hidden;position: absolute;white-space: nowrap;width: 1px;}</style><a href="https://www.youtube.com/embed/${e}?autoplay=1&enablejsapi=1&playsinline=1"><img src="https://img.youtube.com/vi/${e}/maxresdefault.jpg" alt="Video tutorial"><button type="button" class="btn-play"><span class="visually-hidden">Play</span></button></a>`,title:"YouTube video player",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}),Tn=()=>{const{Docs:{loading:e,docs:t}={}}=(0,o.useContext)(we),n=[{title:"Carousel layouts",keyFeatures:"Ease to use, fast, clean, flexible, responsive, multiple effects, navigation, pagination, etc. Works on any devices with any kind of content,",worksWith:"Carousel repeater blocks, Post template inside Query Loop",builtWith:(0,he.jsxs)(he.Fragment,{children:["Based on the ",(0,he.jsx)(a.ExternalLink,{href:"https://swiperjs.com",children:"SwiperJS"})," carousel, and Vanilla JS, this is designed as a layout for repeater blocks. It can also work with the Query Loop block."]}),goodFor:"Banner slider, Posts carousel, Gallery, Carousel of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Carousel repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a carousel repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested carousel item blocks"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the carousel layout"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]})]}),videoId:"Eh3kX-9_mDg",videoDesc:"How to create a banner slider",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=carousel"),title:"Prebuilt carousel blocks from the block library",target:"_blank"},{url:"https://youtu.be/i8d8Pha921c",title:"[YouTube] How to create a carousel of posts ↗",target:"_blank"},{url:"https://youtu.be/EEk-kSa59VE",title:"[YouTube] How to create a custom banner slider block ↗",target:"_blank"},{url:"https://youtu.be/XfhgqvzRTRQ",title:"[YouTube] How to create another banner slider ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZkleS_5ATLat8arnVUflXSfTk",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Responsive grid layouts",keyFeatures:"Ease to use, flexible, responsive, grid template columns, gap, row, column, span, order",worksWith:"Grid repeater blocks, Post template inside Query Loop",builtWith:"Based on the CSS grid layout, this is designed as a layout for repeater blocks. It can also work with the Query Loop block.",goodFor:"Posts grid, blog page, Gallery, grid of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Grid repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a grid repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested grid item blocks"}),(0,he.jsx)("li",{children:"Customize the settings for both grid and grid item blocks"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the responsive grid layout"}),(0,he.jsx)("li",{children:"Customize the grid settings, customize layout for each item to if you want a magazine layout"})]})]})]}),videoId:"awSC09tTnS8",videoDesc:"How to create a responsive grid",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=grid"),title:"Prebuilt grid blocks from the block library",target:"_blank"},{url:"https://youtu.be/mICLfKkF6tU",title:"[YouTube] How to create a custom grid block ↗",target:"_blank"},{url:"https://youtu.be/AnCpVKxhBlM",title:"[YouTube] How to create a testimonial grid block ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklfsbrRAKe_iUywkjk0fPMUE",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Accordion layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"Accordion repeater blocks",builtWith:"Based on the CBB Collapse component and Vanilla JS, this is designed as a layout for repeater blocks.",goodFor:"FAQ section, long list of features",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add an accordion repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested accordion item blocks"}),(0,he.jsx)("li",{children:"Customize the settings"})]}),videoId:"YA4-duNF_w4",videoDesc:"How to create an accordion layout",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=accordion"),title:"Prebuilt accordion variations from the variation library",target:"_blank"}]},{title:"Modal, off-canvas, popover, toggle content layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"All CBB blocks that have the toggle content support feature enabled.",builtWith:"Built with Vanilla JS, this is designed as an extended support feature for CBB blocks",goodFor:"Popup, Mega menu, off-canvas menu, popover, show/hide content, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the toggle content feature enabled"}),(0,he.jsx)("li",{children:"Add inner blocks"}),(0,he.jsx)("li",{children:"Turn on the toggle content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings such as trigger element, show/hide on the first load, etc."})]}),videoId:"y31TAKHZOD0",videoDesc:"How to create a modal or off-canvas layout step by step",tutorials:[{url:"https://youtu.be/5QQRzhO9VJM",title:"[YouTube] How to create a toggle search box ↗",target:"_blank"},{url:"https://youtu.be/E4usfCydR7U",title:"[YouTube] How to create a responsive header with hamburger menu, toggle search box ↗",target:"_blank"},{url:"https://youtu.be/YnUt-zQXnCU",title:"[YouTube] How to create an off-canvas content ↗",target:"_blank"},{url:"https://youtu.be/g_KOCqvU0Ps",title:"[YouTube] How to create a notification, promotion bar ↗",target:"_blank"},{url:"https://youtu.be/52jD9eeBJ78",title:"[YouTube] How to create a video popup ↗",target:"_blank"},{url:"https://youtu.be/UEh_Da9Sozs",title:"[YouTube] How to create a cookies popup ↗",target:"_blank"}]},{title:"Background effects: parallax, zooming, infinite scrolling, video",keyFeatures:"Ease to use, fast, custom image, featured image, video",worksWith:"All CBB blocks that have the background media support feature enabled.",builtWith:"Built with Vanilla JS and CSS animations, this is designed as an extended support feature for CBB blocks",goodFor:"Hero section, zooming image on grid layout, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the background media feature enabled"}),(0,he.jsx)("li",{children:"Input background media from the inspector settings"}),(0,he.jsx)("li",{children:"Choose background effect and customize the settings."})]}),videoId:"nDpeQbpu50s",videoDesc:"How to create a hero section with parallax background",tutorials:[{url:"https://youtu.be/mBleA20caGo",title:"[YouTube] How to add infinite scrolling effect to background ↗",target:"_blank"},{url:"https://youtu.be/0g1SLTq-lQ4",title:"[YouTube] How to create a page title bar with parallax background ↗",target:"_blank"}]},{title:"Query Loop: add carousel, responsive grid layout, extended filters and sorting",keyFeatures:"Responsive grid layout, carousel layout, filters by parent, postIds, meta fields, multiple post types, multiple sorting fields, etc.",worksWith:"The default Query Loop block",builtWith:"Using WordPress Core API, and responsive grid and carousel layouts",goodFor:"Blog page, post grid, post carousel",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Extended filters and sorting"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose a Query Loop block"}),(0,he.jsx)("li",{children:"Customize the settings inside the Extended filters and sorting panel from the inspector setting"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Set responsive grid and carousel layouts"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop block"}),(0,he.jsx)("li",{children:"Choose responsive grid or carousel layout"}),(0,he.jsx)("li",{children:"Customize the settings inside the inspector settings"})]})]})]}),videoId:"aHy3spQVBGc",videoDesc:"How to create a blog page",tutorials:[{url:"https://youtu.be/bcK_k3IfW8g",title:"[YouTube] How to create a banner slider using the Query Loop block ↗",target:"_blank"},{url:"https://youtu.be/yDVaRm9Sehg",title:"[YouTube] How to create a related posts section ↗",target:"_blank"},{url:"https://youtu.be/paSXmpHU9K4",title:"[YouTube] How to create a card-style posts sections ↗",target:"_blank"},{url:"https://youtu.be/TSRKEFNwE8M",title:"[YouTube] How to create a magazine layout using just one Query Loop ↗",target:"_blank"},{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=query+loop"),title:"Prebuilt query loop variations from the variation library",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklchm8nVUOKqSOc6OgmRQyha",title:"[YouTube] View all playlist ↗",target:"_blank"}]},{title:"Sticky content: fixed and sticky with state awareness",keyFeatures:"Always fixed to viewport, sticky on scroll down, or sticky on scroll up",worksWith:"All CBB blocks that have the sticky content support feature enabled and the core/template-part block.",builtWith:"Built with VanilaJS, this is designed as an extended block support feature",goodFor:"Sticky header, sticky footer, two or more columns with one fixed on a side",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"CBB blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the sticky content feature enabled"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Core template part block"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the core/template block"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]})]}),videoId:"KEryi1y1UZ4",videoDesc:"How to create a sticky header"},{title:"Reveal animation: Add stunning effects to blocks when they appear in the viewport",keyFeatures:"Easy to use, multiple effects in sequence",worksWith:"All CBB blocks that have the reveal animation support feature enabled. This feature can be combined with carousel and modal, off-canvas layouts.",builtWith:"Built with VanilaJS and CSS animations, this is designed as an extended block support feature",goodFor:"Add reveal animations to any CBB blocks when they appear in the viewport",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the reveal animations feature enabled"}),(0,he.jsx)("li",{children:"Add effects from the inspector settings"}),(0,he.jsx)("li",{children:"Customize effect settings"})]})}],r=[{title:"CBB blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"The main idea of CBB is to enable you to easily create custom container blocks from other blocks. These container blocks are similar to core layout blocks but offer additional benefits. "}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Why CBB blocks?"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"They are as fast as core blocks, and have all core support features"}),(0,he.jsx)("li",{children:"They have extended support features from CBB"}),(0,he.jsx)("li",{children:"They are content blocks that have predefined content, format and style"}),(0,he.jsx)("li",{children:"The layout and style can be synchronized across multiple locations, while allowing for different content in each instance."}),(0,he.jsx)("li",{children:"You can customize the style, add interactivity to them with external JS/CSS or custom JS/CSS"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB blocks"}),(0,he.jsx)("p",{children:"CBB blocks are stored as custom post types, making their creation as easy as creating a blog post. The most important part when creating a CBB block is setting up its block settings in the sidebar from the block edit screen. There are several methods to create CBB blocks. The fastest way is to navigate to the block list screen and copy an existing one. If you want more advanced prebuilt blocks, you can navigate to the CBB block library, find the one you need, and import it to your site. You can then copy or edit the existing one to fit your needs."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-create-a-gutenberg-block-with-cbb/",target:"_blank",children:"[contentblocksbuilder.com] How to create CBB blocks ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:"paSXmpHU9K4",videoCaption:"How to create a features posts section block"},{videoId:"kHmaZ2-8v1Q",videoCaption:"How to create a mega menu block"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"CBB repeater blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"One of the best features of CBB is that it allows you to create repeater blocks that display repeating content, similar to repeater fields in meta field frameworks.\n However, since they are just container blocks with built in layouts, they are much more flexible and easier to use."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Supported layouts for CBB repeater blocks"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Grid layout"}),(0,he.jsx)("li",{children:"Carousel layout"}),(0,he.jsx)("li",{children:"Accordion layout"}),(0,he.jsx)("li",{children:"Vertical stack layout"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/#repeater-blocks",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB repeater blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB repeater blocks"}),(0,he.jsx)("p",{children:"To turn a CBB block into a repeater block, simply toggle on the 'Create a repeater parent block for this block' setting and input the block details."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-adjust-attributes-and-settings-for-cbb-blocks/#settings-for-parent-blocks",target:"_blank",children:"[contentblocksbuilder.com] How to turn a CBB block to a repeater block ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:" 5xv3gpRNagY",videoCaption:"How to create a synced overridesgrid block"},{videoId:"EEk-kSa59VE",videoCaption:"How to create a banner slider"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"Block variations, and styles",summary:(0,he.jsx)(he.Fragment,{children:(0,he.jsx)("p",{children:"Block variations and styles are really useful features. They help developers provide predefined options for their blocks, making it super easy for end users. However, it's not easy for non-developers to create them. CBB makes it super easy for everyone to create them directly in the Block Editor and apply them in their workflow. You don't need to set up and maintain source code for your block variations anymore."})}),videoTutorials:[{videoId:"rAWeQ2XLQJc",videoCaption:"How to create a variation for the core button block"},{videoId:"BAY8_evbyL0",videoCaption:"How to create a variation for the core image block"}]},{title:"A library of blocks, variations, and patterns",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"CBB provides a library of prebuilt blocks, variations, and patterns, all created directly in the Block Editor. You can easily import them into your site with one click. You can use, clone, or edit them to suit your needs."}),(0,he.jsxs)("ul",{className:"flex-list",children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library"),target:"_blank",children:"Visit CBB variation library"})})]})]}),videoTutorials:[{videoId:"TSRKEFNwE8M",videoCaption:"How to create a magazine layout using variations from the CBB variation library"},{videoId:"U-e6wbFGiYg",videoCaption:"How to create a animated arrow button"}]},{title:"Extended block supports",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"Besides core support features, CBB adds a range of extended features to enhance the layout and style of CBB blocks. You can opt in or out of these features for your CBB blocks. You can also apply these extended features to other blocks by wrapping them with a CBB block."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"The full list of extended support features"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Responsive width & height"}),(0,he.jsx)("li",{children:"Responsive spacing: padding, margin, block spacing"}),(0,he.jsx)("li",{children:"Responsive aspect ratio"}),(0,he.jsx)("li",{children:"Responsive border & radius"}),(0,he.jsx)("li",{children:"Background media"}),(0,he.jsx)("li",{children:"Background overlay"}),(0,he.jsx)("li",{children:"Responsive Text alignment"}),(0,he.jsx)("li",{children:"Responsive Vertical alignment"}),(0,he.jsx)("li",{children:"Responsive Justify alignment"}),(0,he.jsx)("li",{children:"Box shadow"}),(0,he.jsx)("li",{children:"Responsive Transform"}),(0,he.jsx)("li",{children:"Visibility"}),(0,he.jsx)("li",{children:"Toggle content"}),(0,he.jsx)("li",{children:"Sticky content"}),(0,he.jsx)("li",{children:"Custom attributes"}),(0,he.jsx)("li",{children:"Reveal animation (PRO)"}),(0,he.jsx)("li",{children:"Custom CSS (PRO)"}),(0,he.jsx)("li",{children:"Copy/Paste styles (PRO)"})]})]})]})}],i=({label:e,value:t})=>t?(0,he.jsxs)("details",{className:"feature-line",children:[(0,he.jsx)("summary",{className:"label",children:e}),(0,he.jsx)("div",{className:"value",children:t})]}):null;return(0,he.jsxs)(Cn,{isHeaderHidden:!0,isFullRow:!0,className:"welcome-widget welcome",children:[(0,he.jsx)("h1",{children:"Welcome to Content Blocks Builder (CBB)"}),(0,he.jsxs)("div",{className:"welcome__description",children:[(0,he.jsx)("p",{className:"leading",children:"Content Blocks Builder (CBB) adheres to Gutenberg and enhances it with practical and functional features.\n Whether you are a beginner with no coding experience or a professional, with CBB you can create complex layouts for real-world websites directly in the Block Editor without using a code editor.\n It works with any Gutenberg-ready themes."}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com",target:"_blank",children:"Visit contentblocksbuilder.com"}),(0,he.jsx)("h2",{className:"section-title",children:"CBB provides many practical features while remaining fast, clean, and bloat-free."}),(0,he.jsx)("p",{className:"section-summary",children:"With minimal effort, you can build most real-world features on your WordPress sites using CBB and core blocks, with any block theme, directly in the Block Editor."}),(0,he.jsx)("div",{className:"grid",children:n.map(({title:e,summary:t,keyFeatures:n,worksWith:r,builtWith:o,goodFor:a,howToUse:s,videoId:l,videoDesc:c,tutorials:d},u)=>(0,he.jsxs)("div",{className:"grid-item",children:[(0,he.jsxs)("div",{className:"feature",children:[(0,he.jsx)("h3",{children:e}),t?(0,he.jsx)("p",{children:t}):null,(0,he.jsx)(i,{label:"Key features",value:n}),(0,he.jsx)(i,{label:"Works with",value:r}),(0,he.jsx)(i,{label:"Good for",value:a}),(0,he.jsx)(i,{label:"How it's built",value:o}),(0,he.jsx)(i,{label:"How to use",value:s})]}),!!l&&(0,he.jsxs)("div",{className:"video-tutorial",children:[(0,he.jsx)("h4",{children:"Video tutorial"}),(0,he.jsx)(Sn,{videoId:l}),(0,he.jsx)("div",{className:"video-caption",children:c})]}),!!d?.length&&(0,he.jsxs)("div",{className:"more-resources",children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:d.map(({title:e,url:t,target:n},r)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:n,children:e})},`tutorial-${u}-${r}`))})]})]},`feature-${u}`))}),(0,he.jsx)("h2",{className:"section-title",children:"How does CBB provide a lot of features and still remain super fast and bloat-free?"}),(0,he.jsx)("p",{className:"section-summary",children:"Unlike other multi-feature plugins, CBB doesn’t come bundled with a ton of blocks for specific needs. Instead, it offers extended block support features and an easy way to create container blocks. You can add any feature to any CBB block, and to apply those features to core or third-party blocks, you only need to wrap them with a CBB block."}),(0,he.jsx)("div",{className:"grid grid--large",children:r.map(({title:e,summary:t,videoTutorials:n=[],tutorials:r},o)=>(0,he.jsxs)("div",{className:"grid-item technical-feature",children:[(0,he.jsxs)("div",{className:"feature-details",children:[(0,he.jsx)("h3",{children:e}),(0,he.jsx)("div",{className:"feature-summary",children:t})]}),(0,he.jsxs)("div",{className:"feature-resource",children:[!!n?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"Video tutorials"}),(0,he.jsx)("div",{className:"video-tutorials",children:n.map(({videoId:e,videoCaption:t})=>(0,he.jsxs)("div",{className:"video-item",children:[(0,he.jsx)(Sn,{videoId:e}),(0,he.jsx)("div",{className:"video-caption",children:t})]}))})]}),!!r?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:r.map(({title:e,url:t},n)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:"_blank",children:e})},`tutorial-${o}-${n}`))})]})]})]},`feature-${o}`))}),(0,he.jsxs)("p",{className:"leading",children:["Thank you for choosing Content Blocks Builder (CBB) for your website. CBB sticks to Gutenberg and maintain the primary user experience of it, so if you are already familiar with the Block Editor, you will find it easy to use. If you need any help, contact us through the ",(0,he.jsx)("a",{target:"_blank",href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=content-blocks-builder-contact"),children:"contact page"}),", visit the ",(0,he.jsx)("a",{target:"_blank",href:"https://wordpress.org/support/plugin/content-blocks-builder",children:"support forum ↗"})," ","or email us at"," ",(0,he.jsx)("a",{href:"mailto://[email protected]?subject=Hello+CBB",children:"[email protected]"}),"."," We’re sure to get back to you promptly."]})]})]})},En=()=>(0,he.jsx)(vn,{children:(0,he.jsx)(Tn,{})}),Nn=(window.wp.editor,window.wp.dataControls),Fn={},An={getPreviewMode(e,t){var n;return null!==(n=e.previewModes[t])&&void 0!==n?n:""}},Bn={fonts:{body:{fontFamily:"Nunito",genericFamily:"sans-serif",fontVariants:[]},headings:{fontFamily:"Roboto",genericFamily:"sans-serif",fontVariants:[]},additionalFonts:[]},fontsPresets:[{body:{fontFamily:"Nunito",genericFamily:"sans-serif"},headings:{fontFamily:"Roboto",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Merriweather",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Libre Baskerville",genericFamily:"serif"}},{body:{fontFamily:"Fauna One",genericFamily:"serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Josefin Slab",genericFamily:"serif"},headings:{fontFamily:"Six Caps",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Quattrocento",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Alice",genericFamily:"serif"},headings:{fontFamily:"Sacramento",genericFamily:"cursive"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Arvo",genericFamily:"serif"}},{body:{fontFamily:"Poppins",genericFamily:"sans-serif"},headings:{fontFamily:"Abril Fatface",genericFamily:"cursive"}},{body:{fontFamily:"Inconsolata",genericFamily:"monospace"},headings:{fontFamily:"Karla",genericFamily:"sans-serif"}},{body:{fontFamily:"Andika",genericFamily:"sans-serif"},headings:{fontFamily:"Amatic SC",genericFamily:"sans-serif"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Lustria",genericFamily:"serif"}},{body:{fontFamily:"Proza Libre",genericFamily:"sans-serif"},headings:{fontFamily:"Cormorant Garamond",genericFamily:"serif"}},{body:{fontFamily:"EB Garamond",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Josefin Sans",genericFamily:"sans-serif"},headings:{fontFamily:"Yeseva One",genericFamily:"cursive"}},{body:{fontFamily:"Inter",genericFamily:"sans-serif"},headings:{fontFamily:"EB Garamond",genericFamily:"serif"}}],googleFonts:[]},Pn={fonts:null},On={getGoogleFonts:()=>async({dispatch:e})=>{const t=await u()({path:"boldblocks/v1/getGoogleFonts"});return t&&t.success&&e({type:"SET_GOOGLE_FONTS",payload:t.data}),t},getTypography:()=>async({dispatch:e})=>{const{CBBTypography:t}=await u()({path:"wp/v2/settings"});if(t)return Ln(t,e);{const{CBBTypography:t}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:JSON.stringify(Bn.fonts)}}});return Ln(t,e)}},getPostTypography:e=>async({dispatch:t})=>{if(!e)return;const{meta:{CBBTypography:n}={}}=await u()({path:e});return Rn(n,t)}},Ln=(e,t)=>{if(e&&e?.fonts){const n=JSON.parse(e.fonts);return t({type:"UPDATE_FONTS",payload:n}),n}return e},Rn=(e,t)=>{let n;return e&&e?.fonts&&(n=JSON.parse(e.fonts)),t({type:"UPDATE_POST_FONTS",payload:n}),n},In={updateFonts:e=>({type:"UPDATE_FONTS",payload:e}),updatePostFonts:e=>({type:"UPDATE_POST_FONTS",payload:e}),updateAndPersistFonts:e=>async({dispatch:t})=>{const{CBBTypography:n}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:e}}});return Ln(n,t)},updateAndPersistPostFonts:(e,t)=>async({dispatch:n})=>{const{meta:{CBBTypography:r}={}}=await u()({path:t,method:"POST",data:{meta:{CBBTypography:{fonts:e}}}});return Rn(r,n)}},Dn={blocks:{},statuses:{}},Mn={getMissingBlock(e,t){var n;return null!==(n=e.missingBlocks.blocks[t])&&void 0!==n&&n},getMissingBlockStatus(e,t){var n;return null!==(n=e.missingBlocks.statuses[t])&&void 0!==n&&n}},zn={setMissingBlockStatus:e=>({type:"SET_MISSING_BLOCK_STATUS",payload:e}),loadMissingBlock:e=>async({select:t,dispatch:n})=>{let r=t.getMissingBlock(e);var o;!1===r&&(r=null!==(o=(await u()({path:`wp/v2/block-directory/search?term=${e}`}))[0])&&void 0!==o?o:{},n({type:"SET_MISSING_BLOCK",payload:{[e]:r}}));return r}},Hn={},Un={getNavRef(e,t){var n;return null!==(n=e.navRefs[t])&&void 0!==n?n:""}};(e=>{const t=(0,l.createReduxStore)(e,{selectors:{getIconLibrary(e){var t;return null!==(t=e?.icons)&&void 0!==t?t:[]}},actions:{loadIconLibrary:e=>async({select:t,dispatch:n})=>{var r;if(!e)return;let o=t.getIconLibrary();if(o&&o.length)return o;const i=await u()({path:e});var a;return i?.success&&n({type:"UPDATE_ICONS",payload:null!==(a=i?.data)&&void 0!==a?a:[]}),null!==(r=i?.data)&&void 0!==r?r:[]}},reducer:(e={icons:[]},t)=>"UPDATE_ICONS"===t.type?{...e,icons:t.payload}:e});(0,l.select)(e)||(0,l.register)(t)})("boldblocks/cbb-icon-library");const $n=(0,l.createReduxStore)("boldblocks/data",{selectors:{getGoogleFonts:e=>e.typography.googleFonts,getTypography:e=>({fonts:e.typography.fonts,fontsPresets:e.typography.fontsPresets}),getPostTypography:(e,t)=>({fonts:e.postTypography.fonts,fontsPresets:e.typography.fontsPresets}),...An,...Mn,...Un},actions:{...In,setPreviewMode:e=>({type:"SET_PREVIEW_MODE",payload:e}),...zn,setNavRef:e=>({type:"SET_NAV_REF",payload:e})},controls:Nn.controls,reducer:(0,l.combineReducers)({previewModes:(e=Fn,t)=>"SET_PREVIEW_MODE"===t.type?{...e,[t.payload.clientId]:t.payload.previewMode}:e,typography:(e=Bn,t)=>{switch(t.type){case"SET_GOOGLE_FONTS":return{...e,googleFonts:t.payload};case"UPDATE_FONTS":return{...e,fonts:t.payload}}return e},postTypography:(e=Pn,t)=>"UPDATE_POST_FONTS"===t.type?{...e,fonts:t.payload}:e,missingBlocks:(e=Dn,t)=>{switch(t.type){case"SET_MISSING_BLOCK":return{...e,blocks:{...e.missingBlocks,...t.payload}};case"SET_MISSING_BLOCK_STATUS":return{...e,statuses:{...e.statuses,[t.payload]:!0}}}return e},navRefs:(e=Hn,t)=>"SET_NAV_REF"===t.type?{...e,[t.payload.ref]:t.payload.clientId}:e}),resolvers:{...On}});(0,l.register)($n);const Vn=(e,t=[])=>t.find(t=>t.label===e),Gn=(e,t="",n=[],r)=>{let o=`boldblocks-font-${e.replace(/\s/g,"-").toLowerCase()}`;t&&(o=`${o}-text`);let i=r.querySelector(`#${o}`);if(!i){const a=Vn(e,n);if(a){let{label:e,variants:n}=a,s=`https://fonts.googleapis.com/css2?family=${e.replace(/\s/g,"+")}`,l=[];n=n.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e)),n.sort().forEach(e=>{-1!==e.indexOf("italic")?l.push(`1,${e.replace("italic","")}`):l.push(`0,${e}`)}),s=`${s}:ital,wght@${l.sort().join(";")}&display=swap`,t&&(s=`${s}&text=${encodeURIComponent(t)}`),i=r.createElement("link"),i.id=o,i.rel="stylesheet",i.href=s,r.head.appendChild(i)}return a}},Wn=(e,t,n)=>{Gn(e?.headings?.fontFamily,"",t,n),Gn(e?.body?.fontFamily,"",t,n)},Yn=(e,t)=>(e&&t&&t?.headings&&(e=e.map(e=>e.headings.fontFamily===t?.headings?.fontFamily&&e.body.fontFamily===t?.body?.fontFamily?{...e,isActive:!0}:e?.isActive?{...e,isActive:!1}:e)),e),qn=e=>e.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e+"")).sort(),Qn=(e,t,n,r)=>(0,o.useMemo)(()=>{const o=n(e,t);return o?r(o.variants):[]},[e,t,n,r]),Jn=(e,t)=>{let n={};if(t){const{fontFamily:r,genericFamily:o}=t;r&&(n[`--cbb--${e}--font-family`]=`"${r}", ${o}`)}return n},Kn=(e,t)=>{let n=t.head.querySelector("#boldblocks-css-variables");n?n.innerHTML=e:(n=t.createElement("style"),n.id="boldblocks-css-variables",n.innerHTML=e,t.head.appendChild(n))},Xn=Kt.div`750 `,Sn=({videoId:e})=>(0,he.jsx)("div",{className:"video-frame",children:(0,he.jsx)("iframe",{src:`https://www.youtube.com/embed/${e}`,srcDoc:`<style>*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img{position:absolute;width:100%;top:0;bottom:0;margin:auto}.btn-play{position: absolute;top: 50%;left: 50%;z-index: 1;display: block;width: 68px;height: 48px;margin:0;cursor: pointer;transform: translate3d(-50%, -50%, 0);background-color: transparent;background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');filter: grayscale(100%);transition: filter .1s cubic-bezier(0, 0, 0.2, 1);border: none;}body:hover .btn-play,.btn-play:focus{filter:none}.visually-hidden{clip: rect(0 0 0 0);clip-path: inset(50%);height: 1px;overflow: hidden;position: absolute;white-space: nowrap;width: 1px;}</style><a href="https://www.youtube.com/embed/${e}?autoplay=1&enablejsapi=1&playsinline=1"><img src="https://img.youtube.com/vi/${e}/maxresdefault.jpg" alt="Video tutorial"><button type="button" class="btn-play"><span class="visually-hidden">Play</span></button></a>`,title:"YouTube video player",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}),Tn=()=>{const{Docs:{loading:e,docs:t}={}}=(0,o.useContext)(we),n=[{title:"Carousel layouts",keyFeatures:"Ease to use, fast, clean, flexible, responsive, multiple effects, navigation, pagination, etc. Works on any devices with any kind of content,",worksWith:"Carousel repeater blocks, Post template inside Query Loop",builtWith:(0,he.jsxs)(he.Fragment,{children:["Based on the ",(0,he.jsx)(a.ExternalLink,{href:"https://swiperjs.com",children:"SwiperJS"})," carousel, and Vanilla JS, this is designed as a layout for repeater blocks. It can also work with the Query Loop block."]}),goodFor:"Banner slider, Posts carousel, Gallery, Carousel of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Carousel repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a carousel repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested carousel item blocks"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the carousel layout"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]})]}),videoId:"Eh3kX-9_mDg",videoDesc:"How to create a banner slider",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=carousel"),title:"Prebuilt carousel blocks from the block library",target:"_blank"},{url:"https://youtu.be/i8d8Pha921c",title:"[YouTube] How to create a carousel of posts ↗",target:"_blank"},{url:"https://youtu.be/EEk-kSa59VE",title:"[YouTube] How to create a custom banner slider block ↗",target:"_blank"},{url:"https://youtu.be/XfhgqvzRTRQ",title:"[YouTube] How to create another banner slider ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZkleS_5ATLat8arnVUflXSfTk",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Responsive grid layouts",keyFeatures:"Ease to use, flexible, responsive, grid template columns, gap, row, column, span, order",worksWith:"Grid repeater blocks, Post template inside Query Loop",builtWith:"Based on the CSS grid layout, this is designed as a layout for repeater blocks. It can also work with the Query Loop block.",goodFor:"Posts grid, blog page, Gallery, grid of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Grid repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a grid repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested grid item blocks"}),(0,he.jsx)("li",{children:"Customize the settings for both grid and grid item blocks"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the responsive grid layout"}),(0,he.jsx)("li",{children:"Customize the grid settings, customize layout for each item to if you want a magazine layout"})]})]})]}),videoId:"awSC09tTnS8",videoDesc:"How to create a responsive grid",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=grid"),title:"Prebuilt grid blocks from the block library",target:"_blank"},{url:"https://youtu.be/mICLfKkF6tU",title:"[YouTube] How to create a custom grid block ↗",target:"_blank"},{url:"https://youtu.be/AnCpVKxhBlM",title:"[YouTube] How to create a testimonial grid block ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklfsbrRAKe_iUywkjk0fPMUE",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Accordion layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"Accordion repeater blocks",builtWith:"Based on the CBB Collapse component and Vanilla JS, this is designed as a layout for repeater blocks.",goodFor:"FAQ section, long list of features",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add an accordion repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested accordion item blocks"}),(0,he.jsx)("li",{children:"Customize the settings"})]}),videoId:"YA4-duNF_w4",videoDesc:"How to create an accordion layout",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=accordion"),title:"Prebuilt accordion variations from the variation library",target:"_blank"}]},{title:"Modal, off-canvas, popover, toggle content layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"All CBB blocks that have the toggle content support feature enabled.",builtWith:"Built with Vanilla JS, this is designed as an extended support feature for CBB blocks",goodFor:"Popup, Mega menu, off-canvas menu, popover, show/hide content, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the toggle content feature enabled"}),(0,he.jsx)("li",{children:"Add inner blocks"}),(0,he.jsx)("li",{children:"Turn on the toggle content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings such as trigger element, show/hide on the first load, etc."})]}),videoId:"y31TAKHZOD0",videoDesc:"How to create a modal or off-canvas layout step by step",tutorials:[{url:"https://youtu.be/5QQRzhO9VJM",title:"[YouTube] How to create a toggle search box ↗",target:"_blank"},{url:"https://youtu.be/E4usfCydR7U",title:"[YouTube] How to create a responsive header with hamburger menu, toggle search box ↗",target:"_blank"},{url:"https://youtu.be/YnUt-zQXnCU",title:"[YouTube] How to create an off-canvas content ↗",target:"_blank"},{url:"https://youtu.be/g_KOCqvU0Ps",title:"[YouTube] How to create a notification, promotion bar ↗",target:"_blank"},{url:"https://youtu.be/52jD9eeBJ78",title:"[YouTube] How to create a video popup ↗",target:"_blank"},{url:"https://youtu.be/UEh_Da9Sozs",title:"[YouTube] How to create a cookies popup ↗",target:"_blank"}]},{title:"Background effects: parallax, zooming, infinite scrolling, video",keyFeatures:"Ease to use, fast, custom image, featured image, video",worksWith:"All CBB blocks that have the background media support feature enabled.",builtWith:"Built with Vanilla JS and CSS animations, this is designed as an extended support feature for CBB blocks",goodFor:"Hero section, zooming image on grid layout, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the background media feature enabled"}),(0,he.jsx)("li",{children:"Input background media from the inspector settings"}),(0,he.jsx)("li",{children:"Choose background effect and customize the settings."})]}),videoId:"nDpeQbpu50s",videoDesc:"How to create a hero section with parallax background",tutorials:[{url:"https://youtu.be/mBleA20caGo",title:"[YouTube] How to add infinite scrolling effect to background ↗",target:"_blank"},{url:"https://youtu.be/0g1SLTq-lQ4",title:"[YouTube] How to create a page title bar with parallax background ↗",target:"_blank"}]},{title:"Query Loop: add carousel, responsive grid layout, extended filters and sorting",keyFeatures:"Responsive grid layout, carousel layout, filters by parent, postIds, meta fields, multiple post types, multiple sorting fields, etc.",worksWith:"The default Query Loop block",builtWith:"Using WordPress Core API, and responsive grid and carousel layouts",goodFor:"Blog page, post grid, post carousel",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Extended filters and sorting"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose a Query Loop block"}),(0,he.jsx)("li",{children:"Customize the settings inside the Extended filters and sorting panel from the inspector setting"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Set responsive grid and carousel layouts"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop block"}),(0,he.jsx)("li",{children:"Choose responsive grid or carousel layout"}),(0,he.jsx)("li",{children:"Customize the settings inside the inspector settings"})]})]})]}),videoId:"aHy3spQVBGc",videoDesc:"How to create a blog page",tutorials:[{url:"https://youtu.be/bcK_k3IfW8g",title:"[YouTube] How to create a banner slider using the Query Loop block ↗",target:"_blank"},{url:"https://youtu.be/yDVaRm9Sehg",title:"[YouTube] How to create a related posts section ↗",target:"_blank"},{url:"https://youtu.be/paSXmpHU9K4",title:"[YouTube] How to create a card-style posts sections ↗",target:"_blank"},{url:"https://youtu.be/TSRKEFNwE8M",title:"[YouTube] How to create a magazine layout using just one Query Loop ↗",target:"_blank"},{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=query+loop"),title:"Prebuilt query loop variations from the variation library",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklchm8nVUOKqSOc6OgmRQyha",title:"[YouTube] View all playlist ↗",target:"_blank"}]},{title:"Sticky content: fixed and sticky with state awareness",keyFeatures:"Always fixed to viewport, sticky on scroll down, or sticky on scroll up",worksWith:"All CBB blocks that have the sticky content support feature enabled and the core/template-part block.",builtWith:"Built with VanilaJS, this is designed as an extended block support feature",goodFor:"Sticky header, sticky footer, two or more columns with one fixed on a side",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"CBB blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the sticky content feature enabled"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Core template part block"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the core/template block"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]})]}),videoId:"KEryi1y1UZ4",videoDesc:"How to create a sticky header"},{title:"Reveal animation: Add stunning effects to blocks when they appear in the viewport",keyFeatures:"Easy to use, multiple effects in sequence",worksWith:"All CBB blocks that have the reveal animation support feature enabled. This feature can be combined with carousel and modal, off-canvas layouts.",builtWith:"Built with VanilaJS and CSS animations, this is designed as an extended block support feature",goodFor:"Add reveal animations to any CBB blocks when they appear in the viewport",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the reveal animations feature enabled"}),(0,he.jsx)("li",{children:"Add effects from the inspector settings"}),(0,he.jsx)("li",{children:"Customize effect settings"})]})}],r=[{title:"CBB blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"The main idea of CBB is to enable you to easily create custom container blocks from other blocks. These container blocks are similar to core layout blocks but offer additional benefits. "}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Why CBB blocks?"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"They are as fast as core blocks, and have all core support features"}),(0,he.jsx)("li",{children:"They have extended support features from CBB"}),(0,he.jsx)("li",{children:"They are content blocks that have predefined content, format and style"}),(0,he.jsx)("li",{children:"The layout and style can be synchronized across multiple locations, while allowing for different content in each instance."}),(0,he.jsx)("li",{children:"You can customize the style, add interactivity to them with external JS/CSS or custom JS/CSS"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB blocks"}),(0,he.jsx)("p",{children:"CBB blocks are stored as custom post types, making their creation as easy as creating a blog post. The most important part when creating a CBB block is setting up its block settings in the sidebar from the block edit screen. There are several methods to create CBB blocks. The fastest way is to navigate to the block list screen and copy an existing one. If you want more advanced prebuilt blocks, you can navigate to the CBB block library, find the one you need, and import it to your site. You can then copy or edit the existing one to fit your needs."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-create-a-gutenberg-block-with-cbb/",target:"_blank",children:"[contentblocksbuilder.com] How to create CBB blocks ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:"paSXmpHU9K4",videoCaption:"How to create a features posts section block"},{videoId:"kHmaZ2-8v1Q",videoCaption:"How to create a mega menu block"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"CBB repeater blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"One of the best features of CBB is that it allows you to create repeater blocks that display repeating content, similar to repeater fields in meta field frameworks.\n However, since they are just container blocks with built in layouts, they are much more flexible and easier to use."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Supported layouts for CBB repeater blocks"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Grid layout"}),(0,he.jsx)("li",{children:"Carousel layout"}),(0,he.jsx)("li",{children:"Accordion layout"}),(0,he.jsx)("li",{children:"Vertical stack layout"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/#repeater-blocks",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB repeater blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB repeater blocks"}),(0,he.jsx)("p",{children:"To turn a CBB block into a repeater block, simply toggle on the 'Create a repeater parent block for this block' setting and input the block details."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-adjust-attributes-and-settings-for-cbb-blocks/#settings-for-parent-blocks",target:"_blank",children:"[contentblocksbuilder.com] How to turn a CBB block to a repeater block ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:"QKIPH5pmEWw",videoCaption:"How to create a repeater grid block"},{videoId:"EEk-kSa59VE",videoCaption:"How to create a banner slider"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"Block variations, and styles",summary:(0,he.jsx)(he.Fragment,{children:(0,he.jsx)("p",{children:"Block variations and styles are really useful features. They help developers provide predefined options for their blocks, making it super easy for end users. However, it's not easy for non-developers to create them. CBB makes it super easy for everyone to create them directly in the Block Editor and apply them in their workflow. You don't need to set up and maintain source code for your block variations anymore."})}),videoTutorials:[{videoId:"rAWeQ2XLQJc",videoCaption:"How to create a variation for the core button block"},{videoId:"BAY8_evbyL0",videoCaption:"How to create a variation for the core image block"}]},{title:"A library of blocks, variations, and patterns",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"CBB provides a library of prebuilt blocks, variations, and patterns, all created directly in the Block Editor. You can easily import them into your site with one click. You can use, clone, or edit them to suit your needs."}),(0,he.jsxs)("ul",{className:"flex-list",children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library"),target:"_blank",children:"Visit CBB variation library"})})]})]}),videoTutorials:[{videoId:"TSRKEFNwE8M",videoCaption:"How to create a magazine layout using variations from the CBB variation library"},{videoId:"U-e6wbFGiYg",videoCaption:"How to create a animated arrow button"}]},{title:"Extended block supports",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"Besides core support features, CBB adds a range of extended features to enhance the layout and style of CBB blocks. You can opt in or out of these features for your CBB blocks. You can also apply these extended features to other blocks by wrapping them with a CBB block."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"The full list of extended support features"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Responsive width & height"}),(0,he.jsx)("li",{children:"Responsive spacing: padding, margin, block spacing"}),(0,he.jsx)("li",{children:"Responsive aspect ratio"}),(0,he.jsx)("li",{children:"Responsive border & radius"}),(0,he.jsx)("li",{children:"Background media"}),(0,he.jsx)("li",{children:"Background overlay"}),(0,he.jsx)("li",{children:"Responsive Text alignment"}),(0,he.jsx)("li",{children:"Responsive Vertical alignment"}),(0,he.jsx)("li",{children:"Responsive Justify alignment"}),(0,he.jsx)("li",{children:"Box shadow"}),(0,he.jsx)("li",{children:"Responsive Transform"}),(0,he.jsx)("li",{children:"Visibility"}),(0,he.jsx)("li",{children:"Toggle content"}),(0,he.jsx)("li",{children:"Sticky content"}),(0,he.jsx)("li",{children:"Custom attributes"}),(0,he.jsx)("li",{children:"Reveal animation (PRO)"}),(0,he.jsx)("li",{children:"Custom CSS (PRO)"}),(0,he.jsx)("li",{children:"Copy/Paste styles (PRO)"})]})]})]})}],i=({label:e,value:t})=>t?(0,he.jsxs)("details",{className:"feature-line",children:[(0,he.jsx)("summary",{className:"label",children:e}),(0,he.jsx)("div",{className:"value",children:t})]}):null;return(0,he.jsxs)(Cn,{isHeaderHidden:!0,isFullRow:!0,className:"welcome-widget welcome",children:[(0,he.jsx)("h1",{children:"Welcome to Content Blocks Builder (CBB)"}),(0,he.jsxs)("div",{className:"welcome__description",children:[(0,he.jsx)("p",{className:"leading",children:"Content Blocks Builder (CBB) adheres to Gutenberg and enhances it with practical and functional features.\n Whether you are a beginner with no coding experience or a professional, with CBB you can create complex layouts for real-world websites directly in the Block Editor without using a code editor.\n It works with any Gutenberg-ready themes."}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com",target:"_blank",children:"Visit contentblocksbuilder.com"}),(0,he.jsx)("h2",{className:"section-title",children:"CBB provides many practical features while remaining fast, clean, and bloat-free."}),(0,he.jsx)("p",{className:"section-summary",children:"With minimal effort, you can build most real-world features on your WordPress sites using CBB and core blocks, with any block theme, directly in the Block Editor."}),(0,he.jsx)("div",{className:"grid",children:n.map(({title:e,summary:t,keyFeatures:n,worksWith:r,builtWith:o,goodFor:a,howToUse:s,videoId:l,videoDesc:c,tutorials:d},u)=>(0,he.jsxs)("div",{className:"grid-item",children:[(0,he.jsxs)("div",{className:"feature",children:[(0,he.jsx)("h3",{children:e}),t?(0,he.jsx)("p",{children:t}):null,(0,he.jsx)(i,{label:"Key features",value:n}),(0,he.jsx)(i,{label:"Works with",value:r}),(0,he.jsx)(i,{label:"Good for",value:a}),(0,he.jsx)(i,{label:"How it's built",value:o}),(0,he.jsx)(i,{label:"How to use",value:s})]}),!!l&&(0,he.jsxs)("div",{className:"video-tutorial",children:[(0,he.jsx)("h4",{children:"Video tutorial"}),(0,he.jsx)(Sn,{videoId:l}),(0,he.jsx)("div",{className:"video-caption",children:c})]}),!!d?.length&&(0,he.jsxs)("div",{className:"more-resources",children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:d.map(({title:e,url:t,target:n},r)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:n,children:e})},`tutorial-${u}-${r}`))})]})]},`feature-${u}`))}),(0,he.jsx)("h2",{className:"section-title",children:"How does CBB provide a lot of features and still remain super fast and bloat-free?"}),(0,he.jsx)("p",{className:"section-summary",children:"Unlike other multi-feature plugins, CBB doesn’t come bundled with a ton of blocks for specific needs. Instead, it offers extended block support features and an easy way to create container blocks. You can add any feature to any CBB block, and to apply those features to core or third-party blocks, you only need to wrap them with a CBB block."}),(0,he.jsx)("div",{className:"grid grid--large",children:r.map(({title:e,summary:t,videoTutorials:n=[],tutorials:r},o)=>(0,he.jsxs)("div",{className:"grid-item technical-feature",children:[(0,he.jsxs)("div",{className:"feature-details",children:[(0,he.jsx)("h3",{children:e}),(0,he.jsx)("div",{className:"feature-summary",children:t})]}),(0,he.jsxs)("div",{className:"feature-resource",children:[!!n?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"Video tutorials"}),(0,he.jsx)("div",{className:"video-tutorials",children:n.map(({videoId:e,videoCaption:t})=>(0,he.jsxs)("div",{className:"video-item",children:[(0,he.jsx)(Sn,{videoId:e}),(0,he.jsx)("div",{className:"video-caption",children:t})]}))})]}),!!r?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:r.map(({title:e,url:t},n)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:"_blank",children:e})},`tutorial-${o}-${n}`))})]})]})]},`feature-${o}`))}),(0,he.jsxs)("p",{className:"leading",children:["Thank you for choosing Content Blocks Builder (CBB) for your website. CBB sticks to Gutenberg and maintain the primary user experience of it, so if you are already familiar with the Block Editor, you will find it easy to use. If you need any help, contact us through the ",(0,he.jsx)("a",{target:"_blank",href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=content-blocks-builder-contact"),children:"contact page"}),", visit the ",(0,he.jsx)("a",{target:"_blank",href:"https://wordpress.org/support/plugin/content-blocks-builder",children:"support forum ↗"})," ","or email us at"," ",(0,he.jsx)("a",{href:"mailto://[email protected]?subject=Hello+CBB",children:"[email protected]"}),"."," We’re sure to get back to you promptly."]})]})]})},En=()=>(0,he.jsx)(vn,{children:(0,he.jsx)(Tn,{})}),Nn=(window.wp.editor,window.wp.dataControls),Fn={},An={getPreviewMode(e,t){var n;return null!==(n=e.previewModes[t])&&void 0!==n?n:""}},Bn={fonts:{body:{fontFamily:"Nunito",genericFamily:"sans-serif",fontVariants:[]},headings:{fontFamily:"Roboto",genericFamily:"sans-serif",fontVariants:[]},additionalFonts:[]},fontsPresets:[{body:{fontFamily:"Nunito",genericFamily:"sans-serif"},headings:{fontFamily:"Roboto",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Merriweather",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Libre Baskerville",genericFamily:"serif"}},{body:{fontFamily:"Fauna One",genericFamily:"serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Josefin Slab",genericFamily:"serif"},headings:{fontFamily:"Six Caps",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Quattrocento",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Alice",genericFamily:"serif"},headings:{fontFamily:"Sacramento",genericFamily:"cursive"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Arvo",genericFamily:"serif"}},{body:{fontFamily:"Poppins",genericFamily:"sans-serif"},headings:{fontFamily:"Abril Fatface",genericFamily:"cursive"}},{body:{fontFamily:"Inconsolata",genericFamily:"monospace"},headings:{fontFamily:"Karla",genericFamily:"sans-serif"}},{body:{fontFamily:"Andika",genericFamily:"sans-serif"},headings:{fontFamily:"Amatic SC",genericFamily:"sans-serif"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Lustria",genericFamily:"serif"}},{body:{fontFamily:"Proza Libre",genericFamily:"sans-serif"},headings:{fontFamily:"Cormorant Garamond",genericFamily:"serif"}},{body:{fontFamily:"EB Garamond",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Josefin Sans",genericFamily:"sans-serif"},headings:{fontFamily:"Yeseva One",genericFamily:"cursive"}},{body:{fontFamily:"Inter",genericFamily:"sans-serif"},headings:{fontFamily:"EB Garamond",genericFamily:"serif"}}],googleFonts:[]},Pn={fonts:null},On={getGoogleFonts:()=>async({dispatch:e})=>{const t=await u()({path:"boldblocks/v1/getGoogleFonts"});return t&&t.success&&e({type:"SET_GOOGLE_FONTS",payload:t.data}),t},getTypography:()=>async({dispatch:e})=>{const{CBBTypography:t}=await u()({path:"wp/v2/settings"});if(t)return Ln(t,e);{const{CBBTypography:t}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:JSON.stringify(Bn.fonts)}}});return Ln(t,e)}},getPostTypography:e=>async({dispatch:t})=>{if(!e)return;const{meta:{CBBTypography:n}={}}=await u()({path:e});return Rn(n,t)}},Ln=(e,t)=>{if(e&&e?.fonts){const n=JSON.parse(e.fonts);return t({type:"UPDATE_FONTS",payload:n}),n}return e},Rn=(e,t)=>{let n;return e&&e?.fonts&&(n=JSON.parse(e.fonts)),t({type:"UPDATE_POST_FONTS",payload:n}),n},In={updateFonts:e=>({type:"UPDATE_FONTS",payload:e}),updatePostFonts:e=>({type:"UPDATE_POST_FONTS",payload:e}),updateAndPersistFonts:e=>async({dispatch:t})=>{const{CBBTypography:n}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:e}}});return Ln(n,t)},updateAndPersistPostFonts:(e,t)=>async({dispatch:n})=>{const{meta:{CBBTypography:r}={}}=await u()({path:t,method:"POST",data:{meta:{CBBTypography:{fonts:e}}}});return Rn(r,n)}},Dn={blocks:{},statuses:{}},Mn={getMissingBlock(e,t){var n;return null!==(n=e.missingBlocks.blocks[t])&&void 0!==n&&n},getMissingBlockStatus(e,t){var n;return null!==(n=e.missingBlocks.statuses[t])&&void 0!==n&&n}},zn={setMissingBlockStatus:e=>({type:"SET_MISSING_BLOCK_STATUS",payload:e}),loadMissingBlock:e=>async({select:t,dispatch:n})=>{let r=t.getMissingBlock(e);var o;!1===r&&(r=null!==(o=(await u()({path:`wp/v2/block-directory/search?term=${e}`}))[0])&&void 0!==o?o:{},n({type:"SET_MISSING_BLOCK",payload:{[e]:r}}));return r}},Hn={},Un={getNavRef(e,t){var n;return null!==(n=e.navRefs[t])&&void 0!==n?n:""}};(e=>{const t=(0,l.createReduxStore)(e,{selectors:{getIconLibrary(e){var t;return null!==(t=e?.icons)&&void 0!==t?t:[]}},actions:{loadIconLibrary:e=>async({select:t,dispatch:n})=>{var r;if(!e)return;let o=t.getIconLibrary();if(o&&o.length)return o;const i=await u()({path:e});var a;return i?.success&&n({type:"UPDATE_ICONS",payload:null!==(a=i?.data)&&void 0!==a?a:[]}),null!==(r=i?.data)&&void 0!==r?r:[]}},reducer:(e={icons:[]},t)=>"UPDATE_ICONS"===t.type?{...e,icons:t.payload}:e});(0,l.select)(e)||(0,l.register)(t)})("boldblocks/cbb-icon-library");const $n=(0,l.createReduxStore)("boldblocks/data",{selectors:{getGoogleFonts:e=>e.typography.googleFonts,getTypography:e=>({fonts:e.typography.fonts,fontsPresets:e.typography.fontsPresets}),getPostTypography:(e,t)=>({fonts:e.postTypography.fonts,fontsPresets:e.typography.fontsPresets}),...An,...Mn,...Un},actions:{...In,setPreviewMode:e=>({type:"SET_PREVIEW_MODE",payload:e}),...zn,setNavRef:e=>({type:"SET_NAV_REF",payload:e})},controls:Nn.controls,reducer:(0,l.combineReducers)({previewModes:(e=Fn,t)=>"SET_PREVIEW_MODE"===t.type?{...e,[t.payload.clientId]:t.payload.previewMode}:e,typography:(e=Bn,t)=>{switch(t.type){case"SET_GOOGLE_FONTS":return{...e,googleFonts:t.payload};case"UPDATE_FONTS":return{...e,fonts:t.payload}}return e},postTypography:(e=Pn,t)=>"UPDATE_POST_FONTS"===t.type?{...e,fonts:t.payload}:e,missingBlocks:(e=Dn,t)=>{switch(t.type){case"SET_MISSING_BLOCK":return{...e,blocks:{...e.missingBlocks,...t.payload}};case"SET_MISSING_BLOCK_STATUS":return{...e,statuses:{...e.statuses,[t.payload]:!0}}}return e},navRefs:(e=Hn,t)=>"SET_NAV_REF"===t.type?{...e,[t.payload.ref]:t.payload.clientId}:e}),resolvers:{...On}});(0,l.register)($n);const Vn=(e,t=[])=>t.find(t=>t.label===e),Gn=(e,t="",n=[],r)=>{let o=`boldblocks-font-${e.replace(/\s/g,"-").toLowerCase()}`;t&&(o=`${o}-text`);let i=r.querySelector(`#${o}`);if(!i){const a=Vn(e,n);if(a){let{label:e,variants:n}=a,s=`https://fonts.googleapis.com/css2?family=${e.replace(/\s/g,"+")}`,l=[];n=n.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e)),n.sort().forEach(e=>{-1!==e.indexOf("italic")?l.push(`1,${e.replace("italic","")}`):l.push(`0,${e}`)}),s=`${s}:ital,wght@${l.sort().join(";")}&display=swap`,t&&(s=`${s}&text=${encodeURIComponent(t)}`),i=r.createElement("link"),i.id=o,i.rel="stylesheet",i.href=s,r.head.appendChild(i)}return a}},Wn=(e,t,n)=>{Gn(e?.headings?.fontFamily,"",t,n),Gn(e?.body?.fontFamily,"",t,n)},Yn=(e,t)=>(e&&t&&t?.headings&&(e=e.map(e=>e.headings.fontFamily===t?.headings?.fontFamily&&e.body.fontFamily===t?.body?.fontFamily?{...e,isActive:!0}:e?.isActive?{...e,isActive:!1}:e)),e),qn=e=>e.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e+"")).sort(),Qn=(e,t,n,r)=>(0,o.useMemo)(()=>{const o=n(e,t);return o?r(o.variants):[]},[e,t,n,r]),Jn=(e,t)=>{let n={};if(t){const{fontFamily:r,genericFamily:o}=t;r&&(n[`--cbb--${e}--font-family`]=`"${r}", ${o}`)}return n},Kn=(e,t)=>{let n=t.head.querySelector("#boldblocks-css-variables");n?n.innerHTML=e:(n=t.createElement("style"),n.id="boldblocks-css-variables",n.innerHTML=e,t.head.appendChild(n))},Xn=Kt.div` 751 751 .fonts__actions { 752 752 display: flex; -
content-blocks-builder/tags/2.8.7/build/variations.asset.php
r3410557 r3420618 1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-e ditor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-primitives', 'wp-url'), 'version' => 'cacb2f342b81a368af26');1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-url'), 'version' => 'a76a2971ef1ecabc49cc'); -
content-blocks-builder/tags/2.8.7/build/variations.js
r3410557 r3420618 1 (()=>{"use strict";var e={ 252:e=>{e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var o,r,i;if(Array.isArray(t)){if((o=t.length)!=n.length)return!1;for(r=o;0!==r--;)if(!e(t[r],n[r]))return!1;return!0}if(t instanceof Map&&n instanceof Map){if(t.size!==n.size)return!1;for(r of t.entries())if(!n.has(r[0]))return!1;for(r of t.entries())if(!e(r[1],n.get(r[0])))return!1;return!0}if(t instanceof Set&&n instanceof Set){if(t.size!==n.size)return!1;for(r of t.entries())if(!n.has(r[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(n)){if((o=t.length)!=n.length)return!1;for(r=o;0!==r--;)if(t[r]!==n[r])return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((o=(i=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(r=o;0!==r--;)if(!Object.prototype.hasOwnProperty.call(n,i[r]))return!1;for(r=o;0!==r--;){var a=i[r];if(!e(t[a],n[a]))return!1}return!0}return t!=t&&n!=n}}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const o=window.wp.i18n,r=window.wp.data,i=window.wp.plugins,a=window.wp.element,l=window.wp.blocks,c=window.wp.components,s=window.wp.blockEditor,u=window.wp.editor,p=window.wp.notices,m=window.lodash;n(252);const d=window.wp.apiFetch;var f=n.n(d);const{entries:h,setPrototypeOf:b,isFrozen:g,getPrototypeOf:_,getOwnPropertyDescriptor:y}=Object;let{freeze:T,seal:E,create:k}=Object,{apply:S,construct:A}="undefined"!=typeof Reflect&&Reflect;T||(T=function(e){return e}),E||(E=function(e){return e}),S||(S=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return e.apply(t,o)}),A||(A=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const w=H(Array.prototype.forEach),N=H(Array.prototype.lastIndexOf),v=H(Array.prototype.pop),x=H(Array.prototype.push),C=H(Array.prototype.splice),O=H(String.prototype.toLowerCase),R=H(String.prototype.toString),D=H(String.prototype.match),L=H(String.prototype.replace),M=H(String.prototype.indexOf),I=H(String.prototype.trim),P=H(Object.prototype.hasOwnProperty),z=H(RegExp.prototype.test),U=(F=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return A(F,t)});var F;function H(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return S(e,t,o)}}function B(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:O;b&&b(e,null);let o=t.length;for(;o--;){let r=t[o];if("string"==typeof r){const e=n(r);e!==r&&(g(t)||(t[o]=e),r=e)}e[r]=!0}return e}function j(e){for(let t=0;t<e.length;t++)P(e,t)||(e[t]=null);return e}function G(e){const t=k(null);for(const[n,o]of h(e))P(e,n)&&(Array.isArray(o)?t[n]=j(o):o&&"object"==typeof o&&o.constructor===Object?t[n]=G(o):t[n]=o);return t}function W(e,t){for(;null!==e;){const n=y(e,t);if(n){if(n.get)return H(n.get);if("function"==typeof n.value)return H(n.value)}e=_(e)}return function(){return null}}const Y=T(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),V=T(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),X=T(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$=T(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),q=T(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),K=T(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),J=T(["#text"]),Z=T(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Q=T(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),ee=T(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),te=T(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),ne=E(/\{\{[\w\W]*|[\w\W]*\}\}/gm),oe=E(/<%[\w\W]*|[\w\W]*%>/gm),re=E(/\$\{[\w\W]*/gm),ie=E(/^data-[\-\w.\u00B7-\uFFFF]+$/),ae=E(/^aria-[\-\w]+$/),le=E(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ce=E(/^(?:\w+script|data):/i),se=E(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ue=E(/^html$/i),pe=E(/^[a-z][.\w]*(-[.\w]+)+$/i);var me=Object.freeze({__proto__:null,ARIA_ATTR:ae,ATTR_WHITESPACE:se,CUSTOM_ELEMENT:pe,DATA_ATTR:ie,DOCTYPE_NAME:ue,ERB_EXPR:oe,IS_ALLOWED_URI:le,IS_SCRIPT_OR_DATA:ce,MUSTACHE_EXPR:ne,TMPLIT_EXPR:re});const de=function(){return"undefined"==typeof window?null:window};!function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:de();const n=t=>e(t);if(n.version="3.3.0",n.removed=[],!t||!t.document||9!==t.document.nodeType||!t.Element)return n.isSupported=!1,n;let{document:o}=t;const r=o,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:l,Node:c,Element:s,NodeFilter:u,NamedNodeMap:p=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:m,DOMParser:d,trustedTypes:f}=t,b=s.prototype,g=W(b,"cloneNode"),_=W(b,"remove"),y=W(b,"nextSibling"),E=W(b,"childNodes"),S=W(b,"parentNode");if("function"==typeof l){const e=o.createElement("template");e.content&&e.content.ownerDocument&&(o=e.content.ownerDocument)}let A,F="";const{implementation:H,createNodeIterator:j,createDocumentFragment:ne,getElementsByTagName:oe}=o,{importNode:re}=r;let ie={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"==typeof h&&"function"==typeof S&&H&&void 0!==H.createHTMLDocument;const{MUSTACHE_EXPR:ae,ERB_EXPR:ce,TMPLIT_EXPR:se,DATA_ATTR:pe,ARIA_ATTR:fe,IS_SCRIPT_OR_DATA:he,ATTR_WHITESPACE:be,CUSTOM_ELEMENT:ge}=me;let{IS_ALLOWED_URI:_e}=me,ye=null;const Te=B({},[...Y,...V,...X,...q,...J]);let Ee=null;const ke=B({},[...Z,...Q,...ee,...te]);let Se=Object.seal(k(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ae=null,we=null;const Ne=Object.seal(k(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let ve=!0,xe=!0,Ce=!1,Oe=!0,Re=!1,De=!0,Le=!1,Me=!1,Ie=!1,Pe=!1,ze=!1,Ue=!1,Fe=!0,He=!1,Be=!0,je=!1,Ge={},We=null;const Ye=B({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ve=null;const Xe=B({},["audio","video","img","source","image","track"]);let $e=null;const qe=B({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ke="http://www.w3.org/1998/Math/MathML",Je="http://www.w3.org/2000/svg",Ze="http://www.w3.org/1999/xhtml";let Qe=Ze,et=!1,tt=null;const nt=B({},[Ke,Je,Ze],R);let ot=B({},["mi","mo","mn","ms","mtext"]),rt=B({},["annotation-xml"]);const it=B({},["title","style","font","a","script"]);let at=null;const lt=["application/xhtml+xml","text/html"];let ct=null,st=null;const ut=o.createElement("form"),pt=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!st||st!==e){if(e&&"object"==typeof e||(e={}),e=G(e),at=-1===lt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,ct="application/xhtml+xml"===at?R:O,ye=P(e,"ALLOWED_TAGS")?B({},e.ALLOWED_TAGS,ct):Te,Ee=P(e,"ALLOWED_ATTR")?B({},e.ALLOWED_ATTR,ct):ke,tt=P(e,"ALLOWED_NAMESPACES")?B({},e.ALLOWED_NAMESPACES,R):nt,$e=P(e,"ADD_URI_SAFE_ATTR")?B(G(qe),e.ADD_URI_SAFE_ATTR,ct):qe,Ve=P(e,"ADD_DATA_URI_TAGS")?B(G(Xe),e.ADD_DATA_URI_TAGS,ct):Xe,We=P(e,"FORBID_CONTENTS")?B({},e.FORBID_CONTENTS,ct):Ye,Ae=P(e,"FORBID_TAGS")?B({},e.FORBID_TAGS,ct):G({}),we=P(e,"FORBID_ATTR")?B({},e.FORBID_ATTR,ct):G({}),Ge=!!P(e,"USE_PROFILES")&&e.USE_PROFILES,ve=!1!==e.ALLOW_ARIA_ATTR,xe=!1!==e.ALLOW_DATA_ATTR,Ce=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Oe=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Re=e.SAFE_FOR_TEMPLATES||!1,De=!1!==e.SAFE_FOR_XML,Le=e.WHOLE_DOCUMENT||!1,Pe=e.RETURN_DOM||!1,ze=e.RETURN_DOM_FRAGMENT||!1,Ue=e.RETURN_TRUSTED_TYPE||!1,Ie=e.FORCE_BODY||!1,Fe=!1!==e.SANITIZE_DOM,He=e.SANITIZE_NAMED_PROPS||!1,Be=!1!==e.KEEP_CONTENT,je=e.IN_PLACE||!1,_e=e.ALLOWED_URI_REGEXP||le,Qe=e.NAMESPACE||Ze,ot=e.MATHML_TEXT_INTEGRATION_POINTS||ot,rt=e.HTML_INTEGRATION_POINTS||rt,Se=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&pt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Se.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&pt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Se.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Se.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(xe=!1),ze&&(Pe=!0),Ge&&(ye=B({},J),Ee=[],!0===Ge.html&&(B(ye,Y),B(Ee,Z)),!0===Ge.svg&&(B(ye,V),B(Ee,Q),B(Ee,te)),!0===Ge.svgFilters&&(B(ye,X),B(Ee,Q),B(Ee,te)),!0===Ge.mathMl&&(B(ye,q),B(Ee,ee),B(Ee,te))),e.ADD_TAGS&&("function"==typeof e.ADD_TAGS?Ne.tagCheck=e.ADD_TAGS:(ye===Te&&(ye=G(ye)),B(ye,e.ADD_TAGS,ct))),e.ADD_ATTR&&("function"==typeof e.ADD_ATTR?Ne.attributeCheck=e.ADD_ATTR:(Ee===ke&&(Ee=G(Ee)),B(Ee,e.ADD_ATTR,ct))),e.ADD_URI_SAFE_ATTR&&B($e,e.ADD_URI_SAFE_ATTR,ct),e.FORBID_CONTENTS&&(We===Ye&&(We=G(We)),B(We,e.FORBID_CONTENTS,ct)),Be&&(ye["#text"]=!0),Le&&B(ye,["html","head","body"]),ye.table&&(B(ye,["tbody"]),delete Ae.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw U('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw U('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');A=e.TRUSTED_TYPES_POLICY,F=A.createHTML("")}else void 0===A&&(A=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(f,i)),null!==A&&"string"==typeof F&&(F=A.createHTML(""));T&&T(e),st=e}},dt=B({},[...V,...X,...$]),ft=B({},[...q,...K]),ht=function(e){x(n.removed,{element:e});try{S(e).removeChild(e)}catch(t){_(e)}},bt=function(e,t){try{x(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){x(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(Pe||ze)try{ht(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},gt=function(e){let t=null,n=null;if(Ie)e="<remove></remove>"+e;else{const t=D(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===at&&Qe===Ze&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const r=A?A.createHTML(e):e;if(Qe===Ze)try{t=(new d).parseFromString(r,at)}catch(e){}if(!t||!t.documentElement){t=H.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=et?F:r}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(o.createTextNode(n),i.childNodes[0]||null),Qe===Ze?oe.call(t,Le?"html":"body")[0]:Le?t.documentElement:i},_t=function(e){return j.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},yt=function(e){return e instanceof m&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof p)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Tt=function(e){return"function"==typeof c&&e instanceof c};function Et(e,t,o){w(e,e=>{e.call(n,t,o,st)})}const kt=function(e){let t=null;if(Et(ie.beforeSanitizeElements,e,null),yt(e))return ht(e),!0;const o=ct(e.nodeName);if(Et(ie.uponSanitizeElement,e,{tagName:o,allowedTags:ye}),De&&e.hasChildNodes()&&!Tt(e.firstElementChild)&&z(/<[/\w!]/g,e.innerHTML)&&z(/<[/\w!]/g,e.textContent))return ht(e),!0;if(7===e.nodeType)return ht(e),!0;if(De&&8===e.nodeType&&z(/<[/\w]/g,e.data))return ht(e),!0;if(!(Ne.tagCheck instanceof Function&&Ne.tagCheck(o))&&(!ye[o]||Ae[o])){if(!Ae[o]&&At(o)){if(Se.tagNameCheck instanceof RegExp&&z(Se.tagNameCheck,o))return!1;if(Se.tagNameCheck instanceof Function&&Se.tagNameCheck(o))return!1}if(Be&&!We[o]){const t=S(e)||e.parentNode,n=E(e)||e.childNodes;if(n&&t)for(let o=n.length-1;o>=0;--o){const r=g(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,y(e))}}return ht(e),!0}return e instanceof s&&!function(e){let t=S(e);t&&t.tagName||(t={namespaceURI:Qe,tagName:"template"});const n=O(e.tagName),o=O(t.tagName);return!!tt[e.namespaceURI]&&(e.namespaceURI===Je?t.namespaceURI===Ze?"svg"===n:t.namespaceURI===Ke?"svg"===n&&("annotation-xml"===o||ot[o]):Boolean(dt[n]):e.namespaceURI===Ke?t.namespaceURI===Ze?"math"===n:t.namespaceURI===Je?"math"===n&&rt[o]:Boolean(ft[n]):e.namespaceURI===Ze?!(t.namespaceURI===Je&&!rt[o])&&!(t.namespaceURI===Ke&&!ot[o])&&!ft[n]&&(it[n]||!dt[n]):!("application/xhtml+xml"!==at||!tt[e.namespaceURI]))}(e)?(ht(e),!0):"noscript"!==o&&"noembed"!==o&&"noframes"!==o||!z(/<\/no(script|embed|frames)/i,e.innerHTML)?(Re&&3===e.nodeType&&(t=e.textContent,w([ae,ce,se],e=>{t=L(t,e," ")}),e.textContent!==t&&(x(n.removed,{element:e.cloneNode()}),e.textContent=t)),Et(ie.afterSanitizeElements,e,null),!1):(ht(e),!0)},St=function(e,t,n){if(Fe&&("id"===t||"name"===t)&&(n in o||n in ut))return!1;if(xe&&!we[t]&&z(pe,t));else if(ve&&z(fe,t));else if(Ne.attributeCheck instanceof Function&&Ne.attributeCheck(t,e));else if(!Ee[t]||we[t]){if(!(At(e)&&(Se.tagNameCheck instanceof RegExp&&z(Se.tagNameCheck,e)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(e))&&(Se.attributeNameCheck instanceof RegExp&&z(Se.attributeNameCheck,t)||Se.attributeNameCheck instanceof Function&&Se.attributeNameCheck(t,e))||"is"===t&&Se.allowCustomizedBuiltInElements&&(Se.tagNameCheck instanceof RegExp&&z(Se.tagNameCheck,n)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(n))))return!1}else if($e[t]);else if(z(_e,L(n,be,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==M(n,"data:")||!Ve[e])if(Ce&&!z(he,L(n,be,"")));else if(n)return!1;return!0},At=function(e){return"annotation-xml"!==e&&D(e,ge)},wt=function(e){Et(ie.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||yt(e))return;const o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ee,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=ct(a),u=c;let p="value"===a?u:I(u);if(o.attrName=s,o.attrValue=p,o.keepAttr=!0,o.forceKeepAttr=void 0,Et(ie.uponSanitizeAttribute,e,o),p=o.attrValue,!He||"id"!==s&&"name"!==s||(bt(a,e),p="user-content-"+p),De&&z(/((--!?|])>)|<\/(style|title|textarea)/i,p)){bt(a,e);continue}if("attributename"===s&&D(p,"href")){bt(a,e);continue}if(o.forceKeepAttr)continue;if(!o.keepAttr){bt(a,e);continue}if(!Oe&&z(/\/>/i,p)){bt(a,e);continue}Re&&w([ae,ce,se],e=>{p=L(p,e," ")});const m=ct(e.nodeName);if(St(m,s,p)){if(A&&"object"==typeof f&&"function"==typeof f.getAttributeType)if(l);else switch(f.getAttributeType(m,s)){case"TrustedHTML":p=A.createHTML(p);break;case"TrustedScriptURL":p=A.createScriptURL(p)}if(p!==u)try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),yt(e)?ht(e):v(n.removed)}catch(t){bt(a,e)}}else bt(a,e)}Et(ie.afterSanitizeAttributes,e,null)},Nt=function e(t){let n=null;const o=_t(t);for(Et(ie.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)Et(ie.uponSanitizeShadowNode,n,null),kt(n),wt(n),n.content instanceof a&&e(n.content);Et(ie.afterSanitizeShadowDOM,t,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=null,i=null,l=null,s=null;if(et=!e,et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Tt(e)){if("function"!=typeof e.toString)throw U("toString is not a function");if("string"!=typeof(e=e.toString()))throw U("dirty is not a string, aborting")}if(!n.isSupported)return e;if(Me||mt(t),n.removed=[],"string"==typeof e&&(je=!1),je){if(e.nodeName){const t=ct(e.nodeName);if(!ye[t]||Ae[t])throw U("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof c)o=gt("\x3c!----\x3e"),i=o.ownerDocument.importNode(e,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?o=i:o.appendChild(i);else{if(!Pe&&!Re&&!Le&&-1===e.indexOf("<"))return A&&Ue?A.createHTML(e):e;if(o=gt(e),!o)return Pe?null:Ue?F:""}o&&Ie&&ht(o.firstChild);const u=_t(je?e:o);for(;l=u.nextNode();)kt(l),wt(l),l.content instanceof a&&Nt(l.content);if(je)return e;if(Pe){if(ze)for(s=ne.call(o.ownerDocument);o.firstChild;)s.appendChild(o.firstChild);else s=o;return(Ee.shadowroot||Ee.shadowrootmode)&&(s=re.call(r,s,!0)),s}let p=Le?o.outerHTML:o.innerHTML;return Le&&ye["!doctype"]&&o.ownerDocument&&o.ownerDocument.doctype&&o.ownerDocument.doctype.name&&z(ue,o.ownerDocument.doctype.name)&&(p="<!DOCTYPE "+o.ownerDocument.doctype.name+">\n"+p),Re&&w([ae,ce,se],e=>{p=L(p,e," ")}),A&&Ue?A.createHTML(p):p},n.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Me=!0},n.clearConfig=function(){st=null,Me=!1},n.isValidAttribute=function(e,t,n){st||mt({});const o=ct(e),r=ct(t);return St(o,r,n)},n.addHook=function(e,t){"function"==typeof t&&x(ie[e],t)},n.removeHook=function(e,t){if(void 0!==t){const n=N(ie[e],t);return-1===n?void 0:C(ie[e],n,1)[0]}return v(ie[e])},n.removeHooks=function(e){ie[e]=[]},n.removeAllHooks=function(){ie={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();const fe=window.wp.url,he=window.ReactJSXRuntime,be=window.wp.primitives;be.SVG,be.Path,be.SVG,be.Path,be.SVG,be.Path;window.wp.hooks;const ge="Mobile",_e="Tablet",ye="Desktop",Te={},Ee=getComputedStyle(document.documentElement);Te[ge]=Ee.getPropertyValue("--wp--custom--breakpoint--sm")||"576px",Te[_e]=Ee.getPropertyValue("--wp--custom--breakpoint--md")||"768px",Te[ye]=Ee.getPropertyValue("--wp--custom--breakpoint--lg")||"1024px";const ke={};Object.keys(Te).map(e=>{ke[e]=e===ge?"":`@media (min-width: ${Te[e]})`}),(0,o.__)("Mobile","content-blocks-builder"),ke[ge],(0,o.__)("Tablet","content-blocks-builder"),ke[_e],(0,o.__)("Desktop","content-blocks-builder"),ke[ye];const Se=window.wp.coreData,Ae={edit:(0,o.__)("Edit","content-blocks-builder"),editItem:(0,o.__)("Edit %s","content-blocks-builder"),save:(0,o.__)("Save","content-blocks-builder"),cancel:(0,o.__)("Cancel","content-blocks-builder"),delete:(0,o.__)("Delete","content-blocks-builder"),closeModal:(0,o.__)("Close modal","content-blocks-builder"),name:(0,o.__)("Name","content-blocks-builder"),label:(0,o.__)("Label","content-blocks-builder"),block:(0,o.__)("block","content-blocks-builder"),variation:(0,o.__)("variation","content-blocks-builder"),defaultVariation:(0,o.__)("default variation","content-blocks-builder"),pattern:(0,o.__)("pattern","content-blocks-builder"),blocks:(0,o.__)("Blocks","content-blocks-builder"),variations:(0,o.__)("Variations","content-blocks-builder"),patterns:(0,o.__)("Patterns","content-blocks-builder")};function we({modalTitle:e,title:t,titleHelp:n,setIsModalOpen:o,onSubmit:r=m.noop,onCancel:i=m.noop,className:l}){const[s,u]=(0,a.useState)(t),p=()=>{o(!1),u(""),i()};return(0,he.jsx)(c.Modal,{title:e,closeLabel:Ae.closeModal,onRequestClose:()=>p(),overlayClassName:"reusable-blocks-menu-items__convert-modal",className:l,children:(0,he.jsxs)("form",{onSubmit:e=>{e.preventDefault(),r(s),p()},children:[(0,he.jsx)(c.TextControl,{label:Ae.name,value:s,onChange:u,help:n,className:"title-input"}),(0,he.jsxs)(c.Flex,{className:"reusable-blocks-menu-items__convert-modal-actions",justify:"flex-end",children:[(0,he.jsx)(c.FlexItem,{children:(0,he.jsx)(c.Button,{variant:"secondary",onClick:()=>p(),children:Ae.cancel})}),(0,he.jsx)(c.FlexItem,{children:(0,he.jsx)(c.Button,{variant:"primary",type:"submit",disabled:!s,children:Ae.save})})]})]})})}function Ne(e){let t=[];return e.forEach(({name:e,attributes:n,innerBlocks:o})=>{t.push([e,n,Ne(o)])}),t}(0,i.registerPlugin)("boldblocks-create-block-variation",{render:()=>{var e;const{getSelectedBlock:t}=(0,r.useSelect)(e=>e(s.store),[]),{getBlockVariations:n}=(0,r.useSelect)(e=>e(l.store),[]),{createSuccessNotice:i,createErrorNotice:u}=(0,r.useDispatch)(p.store),[m,d]=(0,a.useState)(!1),h=m?t():{},{name:b}=null!=h?h:{},g=b&&null!==(e=n(b))&&void 0!==e?e:[],_=b?`${b} variation ${g.length+1}`:"",y=b?`${b}-variation-${((e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t})(10)}`:"";if(T="update",E="settings",!(0,r.useSelect)(e=>e(Se.store).canUser(T,E),[T,E]))return null;var T,E;const k=(0,o.__)("Create block variation","content-blocks-builder");return(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)(s.BlockSettingsMenuControls,{children:({selectedClientIds:e})=>1===e?.length?(0,he.jsx)(c.MenuItem,{label:k,icon:"plus-alt2",onClick:()=>d(!0),children:k}):null}),m&&(0,he.jsx)(we,{modalTitle:(0,o.sprintf)((0,o.__)("Create a new variation for the block: '%s'","content-blocks-builder"),b),title:_,setIsModalOpen:d,onSubmit:e=>{(({variationName:e,blockName:t,title:n,description:r="",iconString:i="",block:a,createSuccessNotice:c,createErrorNotice:s,isDefault:u=!1,doneCb:p,finallyCb:m})=>{const d=(0,l.serialize)([a]),h=(({blockName:e,variationName:t,title:n,block:o})=>{const{attributes:r={},innerBlocks:i=[]}=null!=o?o:{};return{blockName:e,variation:{name:t,title:n,attributes:r,innerBlocks:Ne(i)}}})({blockName:t,variationName:e,title:n,block:a});f()({path:"boldblocks/v1/createVariation",method:"POST",data:{title:n,content:d,status:"publish",meta:{boldblocks_variation_block_name:t,boldblocks_variation_name:e,boldblocks_variation_data:JSON.stringify(h),boldblocks_variation_icon:i,boldblocks_variation_description:r,boldblocks_variation_is_default:u,boldblocks_variation_is_transformable:!0},cbb_variation_nonce:CBBBlocks?.variationNonce}}).then(e=>{const{success:n,data:r,post:i}=e;var a;n?(c(r||(0,o.__)("Your variation has been created successfully!","content-blocks-builder"),{type:"snackbar",actions:[{label:(0,o.sprintf)(Ae.editItem,Ae.variation),url:(a=i.id,(0,fe.addQueryArgs)(`post.php?post=${a}&action=edit`))}]}),(0,l.registerBlockVariation)(t,h.variation),p&&p(i)):s(r||"Request failed!",{type:"snackbar"})}).catch(({data:e})=>{s(e,{type:"snackbar"})}).finally(()=>{m&&m()})})({title:e,block:h,blockName:b,variationName:y,createSuccessNotice:i,createErrorNotice:u})},className:"cbb-block-modal"})]})}}),(0,i.registerPlugin)("boldblocks-variations",{render:()=>{const{getCurrentPostType:e}=(0,r.useSelect)(e=>e(u.store),[]),t=(()=>{const e=(0,a.useRef)(!0);return(0,a.useEffect)(()=>{e.current=!1},[]),e.current})(),{setNavigationMode:n}=(0,r.useDispatch)(s.store);return"boldblocks_variation"===e()&&t&&n(!0),null}})})();1 (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.i18n,o=window.wp.data,n=window.wp.plugins,a=window.wp.element,l=window.wp.blocks,i=window.wp.components,c=window.wp.blockEditor,s=window.wp.notices,r=window.wp.coreData,b=window.lodash,d={edit:(0,t.__)("Edit","content-blocks-builder"),editItem:(0,t.__)("Edit %s","content-blocks-builder"),save:(0,t.__)("Save","content-blocks-builder"),cancel:(0,t.__)("Cancel","content-blocks-builder"),delete:(0,t.__)("Delete","content-blocks-builder"),closeModal:(0,t.__)("Close modal","content-blocks-builder"),name:(0,t.__)("Name","content-blocks-builder"),label:(0,t.__)("Label","content-blocks-builder"),block:(0,t.__)("block","content-blocks-builder"),variation:(0,t.__)("variation","content-blocks-builder"),defaultVariation:(0,t.__)("default variation","content-blocks-builder"),pattern:(0,t.__)("pattern","content-blocks-builder"),blocks:(0,t.__)("Blocks","content-blocks-builder"),variations:(0,t.__)("Variations","content-blocks-builder"),patterns:(0,t.__)("Patterns","content-blocks-builder")},u=window.ReactJSXRuntime;function k({modalTitle:e,title:t,titleHelp:o,setIsModalOpen:n,onSubmit:l=b.noop,onCancel:c=b.noop,className:s}){const[r,k]=(0,a.useState)(t),_=()=>{n(!1),k(""),c()};return(0,u.jsx)(i.Modal,{title:e,closeLabel:d.closeModal,onRequestClose:()=>_(),overlayClassName:"reusable-blocks-menu-items__convert-modal",className:s,children:(0,u.jsxs)("form",{onSubmit:e=>{e.preventDefault(),l(r),_()},children:[(0,u.jsx)(i.TextControl,{label:d.name,value:r,onChange:k,help:o,className:"title-input"}),(0,u.jsxs)(i.Flex,{className:"reusable-blocks-menu-items__convert-modal-actions",justify:"flex-end",children:[(0,u.jsx)(i.FlexItem,{children:(0,u.jsx)(i.Button,{variant:"secondary",onClick:()=>_(),children:d.cancel})}),(0,u.jsx)(i.FlexItem,{children:(0,u.jsx)(i.Button,{variant:"primary",type:"submit",disabled:!r,children:d.save})})]})]})})}const _=window.wp.apiFetch;var m=e.n(_);const p=window.wp.url;function v(e){let t=[];return e.forEach(({name:e,attributes:o,innerBlocks:n})=>{t.push([e,o,v(n)])}),t}window.wp.hooks;(0,n.registerPlugin)("boldblocks-create-block-variation",{render:()=>{var e;const{getSelectedBlock:n}=(0,o.useSelect)(e=>e(c.store),[]),{getBlockVariations:b}=(0,o.useSelect)(e=>e(l.store),[]),{createSuccessNotice:_,createErrorNotice:w}=(0,o.useDispatch)(s.store),[h,f]=(0,a.useState)(!1),N=h?n():{},{name:y}=null!=N?N:{},S=y&&null!==(e=b(y))&&void 0!==e?e:[],g=y?`${y} variation ${S.length+1}`:"",x=y?`${y}-variation-${((e=21)=>{let t="",o=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&o[e]];return t})(10)}`:"";if(C="update",j="settings",!(0,o.useSelect)(e=>e(r.store).canUser(C,j),[C,j]))return null;var C,j;const B=(0,t.__)("Create block variation","content-blocks-builder");return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.BlockSettingsMenuControls,{children:({selectedClientIds:e})=>1===e?.length?(0,u.jsx)(i.MenuItem,{label:B,icon:"plus-alt2",onClick:()=>f(!0),children:B}):null}),h&&(0,u.jsx)(k,{modalTitle:(0,t.sprintf)((0,t.__)("Create a new variation for the block: '%s'","content-blocks-builder"),y),title:g,setIsModalOpen:f,onSubmit:e=>{(({variationName:e,blockName:o,title:n,description:a="",iconString:i="",block:c,createSuccessNotice:s,createErrorNotice:r,isDefault:b=!1,doneCb:u,finallyCb:k})=>{const _=(0,l.serialize)([c]),w=(({blockName:e,variationName:t,title:o,block:n})=>{const{attributes:a={},innerBlocks:l=[]}=null!=n?n:{};return{blockName:e,variation:{name:t,title:o,attributes:a,innerBlocks:v(l)}}})({blockName:o,variationName:e,title:n,block:c});m()({path:"boldblocks/v1/createVariation",method:"POST",data:{title:n,content:_,status:"publish",meta:{boldblocks_variation_block_name:o,boldblocks_variation_name:e,boldblocks_variation_data:JSON.stringify(w),boldblocks_variation_icon:i,boldblocks_variation_description:a,boldblocks_variation_is_default:b,boldblocks_variation_is_transformable:!0},cbb_variation_nonce:CBBBlocks?.variationNonce}}).then(e=>{const{success:n,data:a,post:i}=e;var c;n?(s(a||(0,t.__)("Your variation has been created successfully!","content-blocks-builder"),{type:"snackbar",actions:[{label:(0,t.sprintf)(d.editItem,d.variation),url:(c=i.id,(0,p.addQueryArgs)(`post.php?post=${c}&action=edit`))}]}),(0,l.registerBlockVariation)(o,w.variation),u&&u(i)):r(a||"Request failed!",{type:"snackbar"})}).catch(({data:e})=>{r(e,{type:"snackbar"})}).finally(()=>{k&&k()})})({title:e,block:N,blockName:y,variationName:x,createSuccessNotice:_,createErrorNotice:w})},className:"cbb-block-modal"})]})}})})(); -
content-blocks-builder/tags/2.8.7/content-blocks-builder.php
r3410557 r3420618 7 7 * Requires at least: 6.6 8 8 * Requires PHP: 7.4 9 * Version: 2.8. 69 * Version: 2.8.7 10 10 * Author: Phi Phan 11 11 * Author URI: https://contentblocksbuilder.com?utm_source=CBB&utm_campaign=CBB+visit+site&utm_medium=link&utm_content=Author+URI … … 36 36 * @var String 37 37 */ 38 public $version = '2.8. 6';38 public $version = '2.8.7'; 39 39 40 40 /** -
content-blocks-builder/tags/2.8.7/includes/icon-library.php
r3181944 r3420618 69 69 70 70 if ( $media_svg_images ) { 71 $icons = $media_svg_images + $icons;71 $icons = array_merge( $media_svg_images, $icons ); 72 72 } 73 73 -
content-blocks-builder/tags/2.8.7/readme.txt
r3410557 r3420618 6 6 Requires at least: 6.6 7 7 Tested up to: 6.9 8 Stable tag: 2.8. 68 Stable tag: 2.8.7 9 9 License: GPL-3.0 10 10 License URI: https://www.gnu.org/licenses/gpl-3.0.html … … 319 319 == Changelog == 320 320 321 = 2.8.7 = 322 *Release Date - 16 December 2025* 323 324 * Fixed - Removed the warning on the Edit Variation screen that appeared after the Write/Design mode was removed in WordPress 6.9. 325 * Fixed - SVGs in the media library overrided the ones in the icon library 326 321 327 = 2.8.6 = 322 328 *Release Date - 04 December 2025* -
content-blocks-builder/trunk/build/settings.asset.php
r3392561 r3420618 1 <?php return array('dependencies' => array('lodash', 'react', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-dom-ready', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-primitives', 'wp-url'), 'version' => '4 2d5ebaba419c3a48b79');1 <?php return array('dependencies' => array('lodash', 'react', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-dom-ready', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-primitives', 'wp-url'), 'version' => '4b558f9f2495a77f02e2'); -
content-blocks-builder/trunk/build/settings.js
r3392561 r3420618 748 748 gap: 12px; 749 749 } 750 `,Sn=({videoId:e})=>(0,he.jsx)("div",{className:"video-frame",children:(0,he.jsx)("iframe",{src:`https://www.youtube.com/embed/${e}`,srcDoc:`<style>*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img{position:absolute;width:100%;top:0;bottom:0;margin:auto}.btn-play{position: absolute;top: 50%;left: 50%;z-index: 1;display: block;width: 68px;height: 48px;margin:0;cursor: pointer;transform: translate3d(-50%, -50%, 0);background-color: transparent;background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');filter: grayscale(100%);transition: filter .1s cubic-bezier(0, 0, 0.2, 1);border: none;}body:hover .btn-play,.btn-play:focus{filter:none}.visually-hidden{clip: rect(0 0 0 0);clip-path: inset(50%);height: 1px;overflow: hidden;position: absolute;white-space: nowrap;width: 1px;}</style><a href="https://www.youtube.com/embed/${e}?autoplay=1&enablejsapi=1&playsinline=1"><img src="https://img.youtube.com/vi/${e}/maxresdefault.jpg" alt="Video tutorial"><button type="button" class="btn-play"><span class="visually-hidden">Play</span></button></a>`,title:"YouTube video player",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}),Tn=()=>{const{Docs:{loading:e,docs:t}={}}=(0,o.useContext)(we),n=[{title:"Carousel layouts",keyFeatures:"Ease to use, fast, clean, flexible, responsive, multiple effects, navigation, pagination, etc. Works on any devices with any kind of content,",worksWith:"Carousel repeater blocks, Post template inside Query Loop",builtWith:(0,he.jsxs)(he.Fragment,{children:["Based on the ",(0,he.jsx)(a.ExternalLink,{href:"https://swiperjs.com",children:"SwiperJS"})," carousel, and Vanilla JS, this is designed as a layout for repeater blocks. It can also work with the Query Loop block."]}),goodFor:"Banner slider, Posts carousel, Gallery, Carousel of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Carousel repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a carousel repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested carousel item blocks"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the carousel layout"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]})]}),videoId:"Eh3kX-9_mDg",videoDesc:"How to create a banner slider",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=carousel"),title:"Prebuilt carousel blocks from the block library",target:"_blank"},{url:"https://youtu.be/i8d8Pha921c",title:"[YouTube] How to create a carousel of posts ↗",target:"_blank"},{url:"https://youtu.be/EEk-kSa59VE",title:"[YouTube] How to create a custom banner slider block ↗",target:"_blank"},{url:"https://youtu.be/XfhgqvzRTRQ",title:"[YouTube] How to create another banner slider ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZkleS_5ATLat8arnVUflXSfTk",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Responsive grid layouts",keyFeatures:"Ease to use, flexible, responsive, grid template columns, gap, row, column, span, order",worksWith:"Grid repeater blocks, Post template inside Query Loop",builtWith:"Based on the CSS grid layout, this is designed as a layout for repeater blocks. It can also work with the Query Loop block.",goodFor:"Posts grid, blog page, Gallery, grid of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Grid repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a grid repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested grid item blocks"}),(0,he.jsx)("li",{children:"Customize the settings for both grid and grid item blocks"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the responsive grid layout"}),(0,he.jsx)("li",{children:"Customize the grid settings, customize layout for each item to if you want a magazine layout"})]})]})]}),videoId:"awSC09tTnS8",videoDesc:"How to create a responsive grid",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=grid"),title:"Prebuilt grid blocks from the block library",target:"_blank"},{url:"https://youtu.be/mICLfKkF6tU",title:"[YouTube] How to create a custom grid block ↗",target:"_blank"},{url:"https://youtu.be/AnCpVKxhBlM",title:"[YouTube] How to create a testimonial grid block ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklfsbrRAKe_iUywkjk0fPMUE",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Accordion layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"Accordion repeater blocks",builtWith:"Based on the CBB Collapse component and Vanilla JS, this is designed as a layout for repeater blocks.",goodFor:"FAQ section, long list of features",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add an accordion repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested accordion item blocks"}),(0,he.jsx)("li",{children:"Customize the settings"})]}),videoId:"YA4-duNF_w4",videoDesc:"How to create an accordion layout",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=accordion"),title:"Prebuilt accordion variations from the variation library",target:"_blank"}]},{title:"Modal, off-canvas, popover, toggle content layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"All CBB blocks that have the toggle content support feature enabled.",builtWith:"Built with Vanilla JS, this is designed as an extended support feature for CBB blocks",goodFor:"Popup, Mega menu, off-canvas menu, popover, show/hide content, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the toggle content feature enabled"}),(0,he.jsx)("li",{children:"Add inner blocks"}),(0,he.jsx)("li",{children:"Turn on the toggle content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings such as trigger element, show/hide on the first load, etc."})]}),videoId:"y31TAKHZOD0",videoDesc:"How to create a modal or off-canvas layout step by step",tutorials:[{url:"https://youtu.be/5QQRzhO9VJM",title:"[YouTube] How to create a toggle search box ↗",target:"_blank"},{url:"https://youtu.be/E4usfCydR7U",title:"[YouTube] How to create a responsive header with hamburger menu, toggle search box ↗",target:"_blank"},{url:"https://youtu.be/YnUt-zQXnCU",title:"[YouTube] How to create an off-canvas content ↗",target:"_blank"},{url:"https://youtu.be/g_KOCqvU0Ps",title:"[YouTube] How to create a notification, promotion bar ↗",target:"_blank"},{url:"https://youtu.be/52jD9eeBJ78",title:"[YouTube] How to create a video popup ↗",target:"_blank"},{url:"https://youtu.be/UEh_Da9Sozs",title:"[YouTube] How to create a cookies popup ↗",target:"_blank"}]},{title:"Background effects: parallax, zooming, infinite scrolling, video",keyFeatures:"Ease to use, fast, custom image, featured image, video",worksWith:"All CBB blocks that have the background media support feature enabled.",builtWith:"Built with Vanilla JS and CSS animations, this is designed as an extended support feature for CBB blocks",goodFor:"Hero section, zooming image on grid layout, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the background media feature enabled"}),(0,he.jsx)("li",{children:"Input background media from the inspector settings"}),(0,he.jsx)("li",{children:"Choose background effect and customize the settings."})]}),videoId:"nDpeQbpu50s",videoDesc:"How to create a hero section with parallax background",tutorials:[{url:"https://youtu.be/mBleA20caGo",title:"[YouTube] How to add infinite scrolling effect to background ↗",target:"_blank"},{url:"https://youtu.be/0g1SLTq-lQ4",title:"[YouTube] How to create a page title bar with parallax background ↗",target:"_blank"}]},{title:"Query Loop: add carousel, responsive grid layout, extended filters and sorting",keyFeatures:"Responsive grid layout, carousel layout, filters by parent, postIds, meta fields, multiple post types, multiple sorting fields, etc.",worksWith:"The default Query Loop block",builtWith:"Using WordPress Core API, and responsive grid and carousel layouts",goodFor:"Blog page, post grid, post carousel",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Extended filters and sorting"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose a Query Loop block"}),(0,he.jsx)("li",{children:"Customize the settings inside the Extended filters and sorting panel from the inspector setting"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Set responsive grid and carousel layouts"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop block"}),(0,he.jsx)("li",{children:"Choose responsive grid or carousel layout"}),(0,he.jsx)("li",{children:"Customize the settings inside the inspector settings"})]})]})]}),videoId:"aHy3spQVBGc",videoDesc:"How to create a blog page",tutorials:[{url:"https://youtu.be/bcK_k3IfW8g",title:"[YouTube] How to create a banner slider using the Query Loop block ↗",target:"_blank"},{url:"https://youtu.be/yDVaRm9Sehg",title:"[YouTube] How to create a related posts section ↗",target:"_blank"},{url:"https://youtu.be/paSXmpHU9K4",title:"[YouTube] How to create a card-style posts sections ↗",target:"_blank"},{url:"https://youtu.be/TSRKEFNwE8M",title:"[YouTube] How to create a magazine layout using just one Query Loop ↗",target:"_blank"},{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=query+loop"),title:"Prebuilt query loop variations from the variation library",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklchm8nVUOKqSOc6OgmRQyha",title:"[YouTube] View all playlist ↗",target:"_blank"}]},{title:"Sticky content: fixed and sticky with state awareness",keyFeatures:"Always fixed to viewport, sticky on scroll down, or sticky on scroll up",worksWith:"All CBB blocks that have the sticky content support feature enabled and the core/template-part block.",builtWith:"Built with VanilaJS, this is designed as an extended block support feature",goodFor:"Sticky header, sticky footer, two or more columns with one fixed on a side",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"CBB blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the sticky content feature enabled"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Core template part block"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the core/template block"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]})]}),videoId:"KEryi1y1UZ4",videoDesc:"How to create a sticky header"},{title:"Reveal animation: Add stunning effects to blocks when they appear in the viewport",keyFeatures:"Easy to use, multiple effects in sequence",worksWith:"All CBB blocks that have the reveal animation support feature enabled. This feature can be combined with carousel and modal, off-canvas layouts.",builtWith:"Built with VanilaJS and CSS animations, this is designed as an extended block support feature",goodFor:"Add reveal animations to any CBB blocks when they appear in the viewport",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the reveal animations feature enabled"}),(0,he.jsx)("li",{children:"Add effects from the inspector settings"}),(0,he.jsx)("li",{children:"Customize effect settings"})]})}],r=[{title:"CBB blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"The main idea of CBB is to enable you to easily create custom container blocks from other blocks. These container blocks are similar to core layout blocks but offer additional benefits. "}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Why CBB blocks?"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"They are as fast as core blocks, and have all core support features"}),(0,he.jsx)("li",{children:"They have extended support features from CBB"}),(0,he.jsx)("li",{children:"They are content blocks that have predefined content, format and style"}),(0,he.jsx)("li",{children:"The layout and style can be synchronized across multiple locations, while allowing for different content in each instance."}),(0,he.jsx)("li",{children:"You can customize the style, add interactivity to them with external JS/CSS or custom JS/CSS"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB blocks"}),(0,he.jsx)("p",{children:"CBB blocks are stored as custom post types, making their creation as easy as creating a blog post. The most important part when creating a CBB block is setting up its block settings in the sidebar from the block edit screen. There are several methods to create CBB blocks. The fastest way is to navigate to the block list screen and copy an existing one. If you want more advanced prebuilt blocks, you can navigate to the CBB block library, find the one you need, and import it to your site. You can then copy or edit the existing one to fit your needs."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-create-a-gutenberg-block-with-cbb/",target:"_blank",children:"[contentblocksbuilder.com] How to create CBB blocks ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:"paSXmpHU9K4",videoCaption:"How to create a features posts section block"},{videoId:"kHmaZ2-8v1Q",videoCaption:"How to create a mega menu block"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"CBB repeater blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"One of the best features of CBB is that it allows you to create repeater blocks that display repeating content, similar to repeater fields in meta field frameworks.\n However, since they are just container blocks with built in layouts, they are much more flexible and easier to use."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Supported layouts for CBB repeater blocks"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Grid layout"}),(0,he.jsx)("li",{children:"Carousel layout"}),(0,he.jsx)("li",{children:"Accordion layout"}),(0,he.jsx)("li",{children:"Vertical stack layout"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/#repeater-blocks",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB repeater blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB repeater blocks"}),(0,he.jsx)("p",{children:"To turn a CBB block into a repeater block, simply toggle on the 'Create a repeater parent block for this block' setting and input the block details."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-adjust-attributes-and-settings-for-cbb-blocks/#settings-for-parent-blocks",target:"_blank",children:"[contentblocksbuilder.com] How to turn a CBB block to a repeater block ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:" 5xv3gpRNagY",videoCaption:"How to create a synced overridesgrid block"},{videoId:"EEk-kSa59VE",videoCaption:"How to create a banner slider"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"Block variations, and styles",summary:(0,he.jsx)(he.Fragment,{children:(0,he.jsx)("p",{children:"Block variations and styles are really useful features. They help developers provide predefined options for their blocks, making it super easy for end users. However, it's not easy for non-developers to create them. CBB makes it super easy for everyone to create them directly in the Block Editor and apply them in their workflow. You don't need to set up and maintain source code for your block variations anymore."})}),videoTutorials:[{videoId:"rAWeQ2XLQJc",videoCaption:"How to create a variation for the core button block"},{videoId:"BAY8_evbyL0",videoCaption:"How to create a variation for the core image block"}]},{title:"A library of blocks, variations, and patterns",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"CBB provides a library of prebuilt blocks, variations, and patterns, all created directly in the Block Editor. You can easily import them into your site with one click. You can use, clone, or edit them to suit your needs."}),(0,he.jsxs)("ul",{className:"flex-list",children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library"),target:"_blank",children:"Visit CBB variation library"})})]})]}),videoTutorials:[{videoId:"TSRKEFNwE8M",videoCaption:"How to create a magazine layout using variations from the CBB variation library"},{videoId:"U-e6wbFGiYg",videoCaption:"How to create a animated arrow button"}]},{title:"Extended block supports",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"Besides core support features, CBB adds a range of extended features to enhance the layout and style of CBB blocks. You can opt in or out of these features for your CBB blocks. You can also apply these extended features to other blocks by wrapping them with a CBB block."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"The full list of extended support features"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Responsive width & height"}),(0,he.jsx)("li",{children:"Responsive spacing: padding, margin, block spacing"}),(0,he.jsx)("li",{children:"Responsive aspect ratio"}),(0,he.jsx)("li",{children:"Responsive border & radius"}),(0,he.jsx)("li",{children:"Background media"}),(0,he.jsx)("li",{children:"Background overlay"}),(0,he.jsx)("li",{children:"Responsive Text alignment"}),(0,he.jsx)("li",{children:"Responsive Vertical alignment"}),(0,he.jsx)("li",{children:"Responsive Justify alignment"}),(0,he.jsx)("li",{children:"Box shadow"}),(0,he.jsx)("li",{children:"Responsive Transform"}),(0,he.jsx)("li",{children:"Visibility"}),(0,he.jsx)("li",{children:"Toggle content"}),(0,he.jsx)("li",{children:"Sticky content"}),(0,he.jsx)("li",{children:"Custom attributes"}),(0,he.jsx)("li",{children:"Reveal animation (PRO)"}),(0,he.jsx)("li",{children:"Custom CSS (PRO)"}),(0,he.jsx)("li",{children:"Copy/Paste styles (PRO)"})]})]})]})}],i=({label:e,value:t})=>t?(0,he.jsxs)("details",{className:"feature-line",children:[(0,he.jsx)("summary",{className:"label",children:e}),(0,he.jsx)("div",{className:"value",children:t})]}):null;return(0,he.jsxs)(Cn,{isHeaderHidden:!0,isFullRow:!0,className:"welcome-widget welcome",children:[(0,he.jsx)("h1",{children:"Welcome to Content Blocks Builder (CBB)"}),(0,he.jsxs)("div",{className:"welcome__description",children:[(0,he.jsx)("p",{className:"leading",children:"Content Blocks Builder (CBB) adheres to Gutenberg and enhances it with practical and functional features.\n Whether you are a beginner with no coding experience or a professional, with CBB you can create complex layouts for real-world websites directly in the Block Editor without using a code editor.\n It works with any Gutenberg-ready themes."}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com",target:"_blank",children:"Visit contentblocksbuilder.com"}),(0,he.jsx)("h2",{className:"section-title",children:"CBB provides many practical features while remaining fast, clean, and bloat-free."}),(0,he.jsx)("p",{className:"section-summary",children:"With minimal effort, you can build most real-world features on your WordPress sites using CBB and core blocks, with any block theme, directly in the Block Editor."}),(0,he.jsx)("div",{className:"grid",children:n.map(({title:e,summary:t,keyFeatures:n,worksWith:r,builtWith:o,goodFor:a,howToUse:s,videoId:l,videoDesc:c,tutorials:d},u)=>(0,he.jsxs)("div",{className:"grid-item",children:[(0,he.jsxs)("div",{className:"feature",children:[(0,he.jsx)("h3",{children:e}),t?(0,he.jsx)("p",{children:t}):null,(0,he.jsx)(i,{label:"Key features",value:n}),(0,he.jsx)(i,{label:"Works with",value:r}),(0,he.jsx)(i,{label:"Good for",value:a}),(0,he.jsx)(i,{label:"How it's built",value:o}),(0,he.jsx)(i,{label:"How to use",value:s})]}),!!l&&(0,he.jsxs)("div",{className:"video-tutorial",children:[(0,he.jsx)("h4",{children:"Video tutorial"}),(0,he.jsx)(Sn,{videoId:l}),(0,he.jsx)("div",{className:"video-caption",children:c})]}),!!d?.length&&(0,he.jsxs)("div",{className:"more-resources",children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:d.map(({title:e,url:t,target:n},r)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:n,children:e})},`tutorial-${u}-${r}`))})]})]},`feature-${u}`))}),(0,he.jsx)("h2",{className:"section-title",children:"How does CBB provide a lot of features and still remain super fast and bloat-free?"}),(0,he.jsx)("p",{className:"section-summary",children:"Unlike other multi-feature plugins, CBB doesn’t come bundled with a ton of blocks for specific needs. Instead, it offers extended block support features and an easy way to create container blocks. You can add any feature to any CBB block, and to apply those features to core or third-party blocks, you only need to wrap them with a CBB block."}),(0,he.jsx)("div",{className:"grid grid--large",children:r.map(({title:e,summary:t,videoTutorials:n=[],tutorials:r},o)=>(0,he.jsxs)("div",{className:"grid-item technical-feature",children:[(0,he.jsxs)("div",{className:"feature-details",children:[(0,he.jsx)("h3",{children:e}),(0,he.jsx)("div",{className:"feature-summary",children:t})]}),(0,he.jsxs)("div",{className:"feature-resource",children:[!!n?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"Video tutorials"}),(0,he.jsx)("div",{className:"video-tutorials",children:n.map(({videoId:e,videoCaption:t})=>(0,he.jsxs)("div",{className:"video-item",children:[(0,he.jsx)(Sn,{videoId:e}),(0,he.jsx)("div",{className:"video-caption",children:t})]}))})]}),!!r?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:r.map(({title:e,url:t},n)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:"_blank",children:e})},`tutorial-${o}-${n}`))})]})]})]},`feature-${o}`))}),(0,he.jsxs)("p",{className:"leading",children:["Thank you for choosing Content Blocks Builder (CBB) for your website. CBB sticks to Gutenberg and maintain the primary user experience of it, so if you are already familiar with the Block Editor, you will find it easy to use. If you need any help, contact us through the ",(0,he.jsx)("a",{target:"_blank",href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=content-blocks-builder-contact"),children:"contact page"}),", visit the ",(0,he.jsx)("a",{target:"_blank",href:"https://wordpress.org/support/plugin/content-blocks-builder",children:"support forum ↗"})," ","or email us at"," ",(0,he.jsx)("a",{href:"mailto://[email protected]?subject=Hello+CBB",children:"[email protected]"}),"."," We’re sure to get back to you promptly."]})]})]})},En=()=>(0,he.jsx)(vn,{children:(0,he.jsx)(Tn,{})}),Nn=(window.wp.editor,window.wp.dataControls),Fn={},An={getPreviewMode(e,t){var n;return null!==(n=e.previewModes[t])&&void 0!==n?n:""}},Bn={fonts:{body:{fontFamily:"Nunito",genericFamily:"sans-serif",fontVariants:[]},headings:{fontFamily:"Roboto",genericFamily:"sans-serif",fontVariants:[]},additionalFonts:[]},fontsPresets:[{body:{fontFamily:"Nunito",genericFamily:"sans-serif"},headings:{fontFamily:"Roboto",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Merriweather",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Libre Baskerville",genericFamily:"serif"}},{body:{fontFamily:"Fauna One",genericFamily:"serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Josefin Slab",genericFamily:"serif"},headings:{fontFamily:"Six Caps",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Quattrocento",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Alice",genericFamily:"serif"},headings:{fontFamily:"Sacramento",genericFamily:"cursive"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Arvo",genericFamily:"serif"}},{body:{fontFamily:"Poppins",genericFamily:"sans-serif"},headings:{fontFamily:"Abril Fatface",genericFamily:"cursive"}},{body:{fontFamily:"Inconsolata",genericFamily:"monospace"},headings:{fontFamily:"Karla",genericFamily:"sans-serif"}},{body:{fontFamily:"Andika",genericFamily:"sans-serif"},headings:{fontFamily:"Amatic SC",genericFamily:"sans-serif"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Lustria",genericFamily:"serif"}},{body:{fontFamily:"Proza Libre",genericFamily:"sans-serif"},headings:{fontFamily:"Cormorant Garamond",genericFamily:"serif"}},{body:{fontFamily:"EB Garamond",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Josefin Sans",genericFamily:"sans-serif"},headings:{fontFamily:"Yeseva One",genericFamily:"cursive"}},{body:{fontFamily:"Inter",genericFamily:"sans-serif"},headings:{fontFamily:"EB Garamond",genericFamily:"serif"}}],googleFonts:[]},Pn={fonts:null},On={getGoogleFonts:()=>async({dispatch:e})=>{const t=await u()({path:"boldblocks/v1/getGoogleFonts"});return t&&t.success&&e({type:"SET_GOOGLE_FONTS",payload:t.data}),t},getTypography:()=>async({dispatch:e})=>{const{CBBTypography:t}=await u()({path:"wp/v2/settings"});if(t)return Ln(t,e);{const{CBBTypography:t}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:JSON.stringify(Bn.fonts)}}});return Ln(t,e)}},getPostTypography:e=>async({dispatch:t})=>{if(!e)return;const{meta:{CBBTypography:n}={}}=await u()({path:e});return Rn(n,t)}},Ln=(e,t)=>{if(e&&e?.fonts){const n=JSON.parse(e.fonts);return t({type:"UPDATE_FONTS",payload:n}),n}return e},Rn=(e,t)=>{let n;return e&&e?.fonts&&(n=JSON.parse(e.fonts)),t({type:"UPDATE_POST_FONTS",payload:n}),n},In={updateFonts:e=>({type:"UPDATE_FONTS",payload:e}),updatePostFonts:e=>({type:"UPDATE_POST_FONTS",payload:e}),updateAndPersistFonts:e=>async({dispatch:t})=>{const{CBBTypography:n}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:e}}});return Ln(n,t)},updateAndPersistPostFonts:(e,t)=>async({dispatch:n})=>{const{meta:{CBBTypography:r}={}}=await u()({path:t,method:"POST",data:{meta:{CBBTypography:{fonts:e}}}});return Rn(r,n)}},Dn={blocks:{},statuses:{}},Mn={getMissingBlock(e,t){var n;return null!==(n=e.missingBlocks.blocks[t])&&void 0!==n&&n},getMissingBlockStatus(e,t){var n;return null!==(n=e.missingBlocks.statuses[t])&&void 0!==n&&n}},zn={setMissingBlockStatus:e=>({type:"SET_MISSING_BLOCK_STATUS",payload:e}),loadMissingBlock:e=>async({select:t,dispatch:n})=>{let r=t.getMissingBlock(e);var o;!1===r&&(r=null!==(o=(await u()({path:`wp/v2/block-directory/search?term=${e}`}))[0])&&void 0!==o?o:{},n({type:"SET_MISSING_BLOCK",payload:{[e]:r}}));return r}},Hn={},Un={getNavRef(e,t){var n;return null!==(n=e.navRefs[t])&&void 0!==n?n:""}};(e=>{const t=(0,l.createReduxStore)(e,{selectors:{getIconLibrary(e){var t;return null!==(t=e?.icons)&&void 0!==t?t:[]}},actions:{loadIconLibrary:e=>async({select:t,dispatch:n})=>{var r;if(!e)return;let o=t.getIconLibrary();if(o&&o.length)return o;const i=await u()({path:e});var a;return i?.success&&n({type:"UPDATE_ICONS",payload:null!==(a=i?.data)&&void 0!==a?a:[]}),null!==(r=i?.data)&&void 0!==r?r:[]}},reducer:(e={icons:[]},t)=>"UPDATE_ICONS"===t.type?{...e,icons:t.payload}:e});(0,l.select)(e)||(0,l.register)(t)})("boldblocks/cbb-icon-library");const $n=(0,l.createReduxStore)("boldblocks/data",{selectors:{getGoogleFonts:e=>e.typography.googleFonts,getTypography:e=>({fonts:e.typography.fonts,fontsPresets:e.typography.fontsPresets}),getPostTypography:(e,t)=>({fonts:e.postTypography.fonts,fontsPresets:e.typography.fontsPresets}),...An,...Mn,...Un},actions:{...In,setPreviewMode:e=>({type:"SET_PREVIEW_MODE",payload:e}),...zn,setNavRef:e=>({type:"SET_NAV_REF",payload:e})},controls:Nn.controls,reducer:(0,l.combineReducers)({previewModes:(e=Fn,t)=>"SET_PREVIEW_MODE"===t.type?{...e,[t.payload.clientId]:t.payload.previewMode}:e,typography:(e=Bn,t)=>{switch(t.type){case"SET_GOOGLE_FONTS":return{...e,googleFonts:t.payload};case"UPDATE_FONTS":return{...e,fonts:t.payload}}return e},postTypography:(e=Pn,t)=>"UPDATE_POST_FONTS"===t.type?{...e,fonts:t.payload}:e,missingBlocks:(e=Dn,t)=>{switch(t.type){case"SET_MISSING_BLOCK":return{...e,blocks:{...e.missingBlocks,...t.payload}};case"SET_MISSING_BLOCK_STATUS":return{...e,statuses:{...e.statuses,[t.payload]:!0}}}return e},navRefs:(e=Hn,t)=>"SET_NAV_REF"===t.type?{...e,[t.payload.ref]:t.payload.clientId}:e}),resolvers:{...On}});(0,l.register)($n);const Vn=(e,t=[])=>t.find(t=>t.label===e),Gn=(e,t="",n=[],r)=>{let o=`boldblocks-font-${e.replace(/\s/g,"-").toLowerCase()}`;t&&(o=`${o}-text`);let i=r.querySelector(`#${o}`);if(!i){const a=Vn(e,n);if(a){let{label:e,variants:n}=a,s=`https://fonts.googleapis.com/css2?family=${e.replace(/\s/g,"+")}`,l=[];n=n.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e)),n.sort().forEach(e=>{-1!==e.indexOf("italic")?l.push(`1,${e.replace("italic","")}`):l.push(`0,${e}`)}),s=`${s}:ital,wght@${l.sort().join(";")}&display=swap`,t&&(s=`${s}&text=${encodeURIComponent(t)}`),i=r.createElement("link"),i.id=o,i.rel="stylesheet",i.href=s,r.head.appendChild(i)}return a}},Wn=(e,t,n)=>{Gn(e?.headings?.fontFamily,"",t,n),Gn(e?.body?.fontFamily,"",t,n)},Yn=(e,t)=>(e&&t&&t?.headings&&(e=e.map(e=>e.headings.fontFamily===t?.headings?.fontFamily&&e.body.fontFamily===t?.body?.fontFamily?{...e,isActive:!0}:e?.isActive?{...e,isActive:!1}:e)),e),qn=e=>e.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e+"")).sort(),Qn=(e,t,n,r)=>(0,o.useMemo)(()=>{const o=n(e,t);return o?r(o.variants):[]},[e,t,n,r]),Jn=(e,t)=>{let n={};if(t){const{fontFamily:r,genericFamily:o}=t;r&&(n[`--cbb--${e}--font-family`]=`"${r}", ${o}`)}return n},Kn=(e,t)=>{let n=t.head.querySelector("#boldblocks-css-variables");n?n.innerHTML=e:(n=t.createElement("style"),n.id="boldblocks-css-variables",n.innerHTML=e,t.head.appendChild(n))},Xn=Kt.div`750 `,Sn=({videoId:e})=>(0,he.jsx)("div",{className:"video-frame",children:(0,he.jsx)("iframe",{src:`https://www.youtube.com/embed/${e}`,srcDoc:`<style>*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img{position:absolute;width:100%;top:0;bottom:0;margin:auto}.btn-play{position: absolute;top: 50%;left: 50%;z-index: 1;display: block;width: 68px;height: 48px;margin:0;cursor: pointer;transform: translate3d(-50%, -50%, 0);background-color: transparent;background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');filter: grayscale(100%);transition: filter .1s cubic-bezier(0, 0, 0.2, 1);border: none;}body:hover .btn-play,.btn-play:focus{filter:none}.visually-hidden{clip: rect(0 0 0 0);clip-path: inset(50%);height: 1px;overflow: hidden;position: absolute;white-space: nowrap;width: 1px;}</style><a href="https://www.youtube.com/embed/${e}?autoplay=1&enablejsapi=1&playsinline=1"><img src="https://img.youtube.com/vi/${e}/maxresdefault.jpg" alt="Video tutorial"><button type="button" class="btn-play"><span class="visually-hidden">Play</span></button></a>`,title:"YouTube video player",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}),Tn=()=>{const{Docs:{loading:e,docs:t}={}}=(0,o.useContext)(we),n=[{title:"Carousel layouts",keyFeatures:"Ease to use, fast, clean, flexible, responsive, multiple effects, navigation, pagination, etc. Works on any devices with any kind of content,",worksWith:"Carousel repeater blocks, Post template inside Query Loop",builtWith:(0,he.jsxs)(he.Fragment,{children:["Based on the ",(0,he.jsx)(a.ExternalLink,{href:"https://swiperjs.com",children:"SwiperJS"})," carousel, and Vanilla JS, this is designed as a layout for repeater blocks. It can also work with the Query Loop block."]}),goodFor:"Banner slider, Posts carousel, Gallery, Carousel of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Carousel repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a carousel repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested carousel item blocks"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the carousel layout"}),(0,he.jsx)("li",{children:"Choose preview mode and customize the settings"})]})]})]}),videoId:"Eh3kX-9_mDg",videoDesc:"How to create a banner slider",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=carousel"),title:"Prebuilt carousel blocks from the block library",target:"_blank"},{url:"https://youtu.be/i8d8Pha921c",title:"[YouTube] How to create a carousel of posts ↗",target:"_blank"},{url:"https://youtu.be/EEk-kSa59VE",title:"[YouTube] How to create a custom banner slider block ↗",target:"_blank"},{url:"https://youtu.be/XfhgqvzRTRQ",title:"[YouTube] How to create another banner slider ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZkleS_5ATLat8arnVUflXSfTk",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Responsive grid layouts",keyFeatures:"Ease to use, flexible, responsive, grid template columns, gap, row, column, span, order",worksWith:"Grid repeater blocks, Post template inside Query Loop",builtWith:"Based on the CSS grid layout, this is designed as a layout for repeater blocks. It can also work with the Query Loop block.",goodFor:"Posts grid, blog page, Gallery, grid of features, testimonials, services, etc.",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Grid repeater blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a grid repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested grid item blocks"}),(0,he.jsx)("li",{children:"Customize the settings for both grid and grid item blocks"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Query Loop"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop"}),(0,he.jsx)("li",{children:"Choose the responsive grid layout"}),(0,he.jsx)("li",{children:"Customize the grid settings, customize layout for each item to if you want a magazine layout"})]})]})]}),videoId:"awSC09tTnS8",videoDesc:"How to create a responsive grid",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library&s=grid"),title:"Prebuilt grid blocks from the block library",target:"_blank"},{url:"https://youtu.be/mICLfKkF6tU",title:"[YouTube] How to create a custom grid block ↗",target:"_blank"},{url:"https://youtu.be/AnCpVKxhBlM",title:"[YouTube] How to create a testimonial grid block ↗",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklfsbrRAKe_iUywkjk0fPMUE",title:"[YouTube] Watch all playlist ↗",target:"_blank"}]},{title:"Accordion layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"Accordion repeater blocks",builtWith:"Based on the CBB Collapse component and Vanilla JS, this is designed as a layout for repeater blocks.",goodFor:"FAQ section, long list of features",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add an accordion repeater block to the Block Editor"}),(0,he.jsx)("li",{children:"Add nested accordion item blocks"}),(0,he.jsx)("li",{children:"Customize the settings"})]}),videoId:"YA4-duNF_w4",videoDesc:"How to create an accordion layout",tutorials:[{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=accordion"),title:"Prebuilt accordion variations from the variation library",target:"_blank"}]},{title:"Modal, off-canvas, popover, toggle content layouts",keyFeatures:"Ease to use, works with any content, multiple options",worksWith:"All CBB blocks that have the toggle content support feature enabled.",builtWith:"Built with Vanilla JS, this is designed as an extended support feature for CBB blocks",goodFor:"Popup, Mega menu, off-canvas menu, popover, show/hide content, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the toggle content feature enabled"}),(0,he.jsx)("li",{children:"Add inner blocks"}),(0,he.jsx)("li",{children:"Turn on the toggle content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings such as trigger element, show/hide on the first load, etc."})]}),videoId:"y31TAKHZOD0",videoDesc:"How to create a modal or off-canvas layout step by step",tutorials:[{url:"https://youtu.be/5QQRzhO9VJM",title:"[YouTube] How to create a toggle search box ↗",target:"_blank"},{url:"https://youtu.be/E4usfCydR7U",title:"[YouTube] How to create a responsive header with hamburger menu, toggle search box ↗",target:"_blank"},{url:"https://youtu.be/YnUt-zQXnCU",title:"[YouTube] How to create an off-canvas content ↗",target:"_blank"},{url:"https://youtu.be/g_KOCqvU0Ps",title:"[YouTube] How to create a notification, promotion bar ↗",target:"_blank"},{url:"https://youtu.be/52jD9eeBJ78",title:"[YouTube] How to create a video popup ↗",target:"_blank"},{url:"https://youtu.be/UEh_Da9Sozs",title:"[YouTube] How to create a cookies popup ↗",target:"_blank"}]},{title:"Background effects: parallax, zooming, infinite scrolling, video",keyFeatures:"Ease to use, fast, custom image, featured image, video",worksWith:"All CBB blocks that have the background media support feature enabled.",builtWith:"Built with Vanilla JS and CSS animations, this is designed as an extended support feature for CBB blocks",goodFor:"Hero section, zooming image on grid layout, etc.",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the background media feature enabled"}),(0,he.jsx)("li",{children:"Input background media from the inspector settings"}),(0,he.jsx)("li",{children:"Choose background effect and customize the settings."})]}),videoId:"nDpeQbpu50s",videoDesc:"How to create a hero section with parallax background",tutorials:[{url:"https://youtu.be/mBleA20caGo",title:"[YouTube] How to add infinite scrolling effect to background ↗",target:"_blank"},{url:"https://youtu.be/0g1SLTq-lQ4",title:"[YouTube] How to create a page title bar with parallax background ↗",target:"_blank"}]},{title:"Query Loop: add carousel, responsive grid layout, extended filters and sorting",keyFeatures:"Responsive grid layout, carousel layout, filters by parent, postIds, meta fields, multiple post types, multiple sorting fields, etc.",worksWith:"The default Query Loop block",builtWith:"Using WordPress Core API, and responsive grid and carousel layouts",goodFor:"Blog page, post grid, post carousel",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Extended filters and sorting"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose a Query Loop block"}),(0,he.jsx)("li",{children:"Customize the settings inside the Extended filters and sorting panel from the inspector setting"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Set responsive grid and carousel layouts"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the Post Template block inside a Query Loop block"}),(0,he.jsx)("li",{children:"Choose responsive grid or carousel layout"}),(0,he.jsx)("li",{children:"Customize the settings inside the inspector settings"})]})]})]}),videoId:"aHy3spQVBGc",videoDesc:"How to create a blog page",tutorials:[{url:"https://youtu.be/bcK_k3IfW8g",title:"[YouTube] How to create a banner slider using the Query Loop block ↗",target:"_blank"},{url:"https://youtu.be/yDVaRm9Sehg",title:"[YouTube] How to create a related posts section ↗",target:"_blank"},{url:"https://youtu.be/paSXmpHU9K4",title:"[YouTube] How to create a card-style posts sections ↗",target:"_blank"},{url:"https://youtu.be/TSRKEFNwE8M",title:"[YouTube] How to create a magazine layout using just one Query Loop ↗",target:"_blank"},{url:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library&s=query+loop"),title:"Prebuilt query loop variations from the variation library",target:"_blank"},{url:"https://www.youtube.com/playlist?list=PLPuEwc7dZklchm8nVUOKqSOc6OgmRQyha",title:"[YouTube] View all playlist ↗",target:"_blank"}]},{title:"Sticky content: fixed and sticky with state awareness",keyFeatures:"Always fixed to viewport, sticky on scroll down, or sticky on scroll up",worksWith:"All CBB blocks that have the sticky content support feature enabled and the core/template-part block.",builtWith:"Built with VanilaJS, this is designed as an extended block support feature",goodFor:"Sticky header, sticky footer, two or more columns with one fixed on a side",howToUse:(0,he.jsxs)("ul",{children:[(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"CBB blocks"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the sticky content feature enabled"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]}),(0,he.jsxs)("li",{children:[(0,he.jsx)("h5",{children:"Core template part block"}),(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Choose the core/template block"}),(0,he.jsx)("li",{children:"Turn on the sticky content feature from the inspector settings"}),(0,he.jsx)("li",{children:"Customize the settings"})]})]})]}),videoId:"KEryi1y1UZ4",videoDesc:"How to create a sticky header"},{title:"Reveal animation: Add stunning effects to blocks when they appear in the viewport",keyFeatures:"Easy to use, multiple effects in sequence",worksWith:"All CBB blocks that have the reveal animation support feature enabled. This feature can be combined with carousel and modal, off-canvas layouts.",builtWith:"Built with VanilaJS and CSS animations, this is designed as an extended block support feature",goodFor:"Add reveal animations to any CBB blocks when they appear in the viewport",howToUse:(0,he.jsxs)("ol",{children:[(0,he.jsx)("li",{children:"Add a CBB block that has the reveal animations feature enabled"}),(0,he.jsx)("li",{children:"Add effects from the inspector settings"}),(0,he.jsx)("li",{children:"Customize effect settings"})]})}],r=[{title:"CBB blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"The main idea of CBB is to enable you to easily create custom container blocks from other blocks. These container blocks are similar to core layout blocks but offer additional benefits. "}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Why CBB blocks?"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"They are as fast as core blocks, and have all core support features"}),(0,he.jsx)("li",{children:"They have extended support features from CBB"}),(0,he.jsx)("li",{children:"They are content blocks that have predefined content, format and style"}),(0,he.jsx)("li",{children:"The layout and style can be synchronized across multiple locations, while allowing for different content in each instance."}),(0,he.jsx)("li",{children:"You can customize the style, add interactivity to them with external JS/CSS or custom JS/CSS"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB blocks"}),(0,he.jsx)("p",{children:"CBB blocks are stored as custom post types, making their creation as easy as creating a blog post. The most important part when creating a CBB block is setting up its block settings in the sidebar from the block edit screen. There are several methods to create CBB blocks. The fastest way is to navigate to the block list screen and copy an existing one. If you want more advanced prebuilt blocks, you can navigate to the CBB block library, find the one you need, and import it to your site. You can then copy or edit the existing one to fit your needs."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-create-a-gutenberg-block-with-cbb/",target:"_blank",children:"[contentblocksbuilder.com] How to create CBB blocks ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:"paSXmpHU9K4",videoCaption:"How to create a features posts section block"},{videoId:"kHmaZ2-8v1Q",videoCaption:"How to create a mega menu block"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"CBB repeater blocks",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"One of the best features of CBB is that it allows you to create repeater blocks that display repeating content, similar to repeater fields in meta field frameworks.\n However, since they are just container blocks with built in layouts, they are much more flexible and easier to use."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"Supported layouts for CBB repeater blocks"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Grid layout"}),(0,he.jsx)("li",{children:"Carousel layout"}),(0,he.jsx)("li",{children:"Accordion layout"}),(0,he.jsx)("li",{children:"Vertical stack layout"})]})]}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/#repeater-blocks",target:"_blank",children:"[contentblocksbuilder.com] Learn more about CBB repeater blocks ↗"}),(0,he.jsx)("h4",{children:"How to create CBB repeater blocks"}),(0,he.jsx)("p",{children:"To turn a CBB block into a repeater block, simply toggle on the 'Create a repeater parent block for this block' setting and input the block details."}),(0,he.jsx)("h5",{children:"Helpful links:"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:"https://contentblocksbuilder.com/documentation/custom-blocks/how-to-adjust-attributes-and-settings-for-cbb-blocks/#settings-for-parent-blocks",target:"_blank",children:"[contentblocksbuilder.com] How to turn a CBB block to a repeater block ↗"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})})]})]}),videoTutorials:[{videoId:"QKIPH5pmEWw",videoCaption:"How to create a repeater grid block"},{videoId:"EEk-kSa59VE",videoCaption:"How to create a banner slider"}],tutorials:[{url:"https://www.youtube.com/watch?v=1tmIWXHv4gE&list=PLPuEwc7dZklcFBm-hwtNGJmuB-J8nV-fD&index=5",title:"[YouTube] View all playlist"}]},{title:"Block variations, and styles",summary:(0,he.jsx)(he.Fragment,{children:(0,he.jsx)("p",{children:"Block variations and styles are really useful features. They help developers provide predefined options for their blocks, making it super easy for end users. However, it's not easy for non-developers to create them. CBB makes it super easy for everyone to create them directly in the Block Editor and apply them in their workflow. You don't need to set up and maintain source code for your block variations anymore."})}),videoTutorials:[{videoId:"rAWeQ2XLQJc",videoCaption:"How to create a variation for the core button block"},{videoId:"BAY8_evbyL0",videoCaption:"How to create a variation for the core image block"}]},{title:"A library of blocks, variations, and patterns",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"CBB provides a library of prebuilt blocks, variations, and patterns, all created directly in the Block Editor. You can easily import them into your site with one click. You can use, clone, or edit them to suit your needs."}),(0,he.jsxs)("ul",{className:"flex-list",children:[(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-block-library"),target:"_blank",children:"Visit CBB block library"})}),(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=cbb-variation-library"),target:"_blank",children:"Visit CBB variation library"})})]})]}),videoTutorials:[{videoId:"TSRKEFNwE8M",videoCaption:"How to create a magazine layout using variations from the CBB variation library"},{videoId:"U-e6wbFGiYg",videoCaption:"How to create a animated arrow button"}]},{title:"Extended block supports",summary:(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("p",{children:"Besides core support features, CBB adds a range of extended features to enhance the layout and style of CBB blocks. You can opt in or out of these features for your CBB blocks. You can also apply these extended features to other blocks by wrapping them with a CBB block."}),(0,he.jsxs)("details",{children:[(0,he.jsx)("summary",{children:"The full list of extended support features"}),(0,he.jsxs)("ul",{children:[(0,he.jsx)("li",{children:"Responsive width & height"}),(0,he.jsx)("li",{children:"Responsive spacing: padding, margin, block spacing"}),(0,he.jsx)("li",{children:"Responsive aspect ratio"}),(0,he.jsx)("li",{children:"Responsive border & radius"}),(0,he.jsx)("li",{children:"Background media"}),(0,he.jsx)("li",{children:"Background overlay"}),(0,he.jsx)("li",{children:"Responsive Text alignment"}),(0,he.jsx)("li",{children:"Responsive Vertical alignment"}),(0,he.jsx)("li",{children:"Responsive Justify alignment"}),(0,he.jsx)("li",{children:"Box shadow"}),(0,he.jsx)("li",{children:"Responsive Transform"}),(0,he.jsx)("li",{children:"Visibility"}),(0,he.jsx)("li",{children:"Toggle content"}),(0,he.jsx)("li",{children:"Sticky content"}),(0,he.jsx)("li",{children:"Custom attributes"}),(0,he.jsx)("li",{children:"Reveal animation (PRO)"}),(0,he.jsx)("li",{children:"Custom CSS (PRO)"}),(0,he.jsx)("li",{children:"Copy/Paste styles (PRO)"})]})]})]})}],i=({label:e,value:t})=>t?(0,he.jsxs)("details",{className:"feature-line",children:[(0,he.jsx)("summary",{className:"label",children:e}),(0,he.jsx)("div",{className:"value",children:t})]}):null;return(0,he.jsxs)(Cn,{isHeaderHidden:!0,isFullRow:!0,className:"welcome-widget welcome",children:[(0,he.jsx)("h1",{children:"Welcome to Content Blocks Builder (CBB)"}),(0,he.jsxs)("div",{className:"welcome__description",children:[(0,he.jsx)("p",{className:"leading",children:"Content Blocks Builder (CBB) adheres to Gutenberg and enhances it with practical and functional features.\n Whether you are a beginner with no coding experience or a professional, with CBB you can create complex layouts for real-world websites directly in the Block Editor without using a code editor.\n It works with any Gutenberg-ready themes."}),(0,he.jsx)("a",{href:"https://contentblocksbuilder.com",target:"_blank",children:"Visit contentblocksbuilder.com"}),(0,he.jsx)("h2",{className:"section-title",children:"CBB provides many practical features while remaining fast, clean, and bloat-free."}),(0,he.jsx)("p",{className:"section-summary",children:"With minimal effort, you can build most real-world features on your WordPress sites using CBB and core blocks, with any block theme, directly in the Block Editor."}),(0,he.jsx)("div",{className:"grid",children:n.map(({title:e,summary:t,keyFeatures:n,worksWith:r,builtWith:o,goodFor:a,howToUse:s,videoId:l,videoDesc:c,tutorials:d},u)=>(0,he.jsxs)("div",{className:"grid-item",children:[(0,he.jsxs)("div",{className:"feature",children:[(0,he.jsx)("h3",{children:e}),t?(0,he.jsx)("p",{children:t}):null,(0,he.jsx)(i,{label:"Key features",value:n}),(0,he.jsx)(i,{label:"Works with",value:r}),(0,he.jsx)(i,{label:"Good for",value:a}),(0,he.jsx)(i,{label:"How it's built",value:o}),(0,he.jsx)(i,{label:"How to use",value:s})]}),!!l&&(0,he.jsxs)("div",{className:"video-tutorial",children:[(0,he.jsx)("h4",{children:"Video tutorial"}),(0,he.jsx)(Sn,{videoId:l}),(0,he.jsx)("div",{className:"video-caption",children:c})]}),!!d?.length&&(0,he.jsxs)("div",{className:"more-resources",children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:d.map(({title:e,url:t,target:n},r)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:n,children:e})},`tutorial-${u}-${r}`))})]})]},`feature-${u}`))}),(0,he.jsx)("h2",{className:"section-title",children:"How does CBB provide a lot of features and still remain super fast and bloat-free?"}),(0,he.jsx)("p",{className:"section-summary",children:"Unlike other multi-feature plugins, CBB doesn’t come bundled with a ton of blocks for specific needs. Instead, it offers extended block support features and an easy way to create container blocks. You can add any feature to any CBB block, and to apply those features to core or third-party blocks, you only need to wrap them with a CBB block."}),(0,he.jsx)("div",{className:"grid grid--large",children:r.map(({title:e,summary:t,videoTutorials:n=[],tutorials:r},o)=>(0,he.jsxs)("div",{className:"grid-item technical-feature",children:[(0,he.jsxs)("div",{className:"feature-details",children:[(0,he.jsx)("h3",{children:e}),(0,he.jsx)("div",{className:"feature-summary",children:t})]}),(0,he.jsxs)("div",{className:"feature-resource",children:[!!n?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"Video tutorials"}),(0,he.jsx)("div",{className:"video-tutorials",children:n.map(({videoId:e,videoCaption:t})=>(0,he.jsxs)("div",{className:"video-item",children:[(0,he.jsx)(Sn,{videoId:e}),(0,he.jsx)("div",{className:"video-caption",children:t})]}))})]}),!!r?.length&&(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)("h4",{children:"More resources"}),(0,he.jsx)("ul",{children:r.map(({title:e,url:t},n)=>(0,he.jsx)("li",{children:(0,he.jsx)("a",{href:t,target:"_blank",children:e})},`tutorial-${o}-${n}`))})]})]})]},`feature-${o}`))}),(0,he.jsxs)("p",{className:"leading",children:["Thank you for choosing Content Blocks Builder (CBB) for your website. CBB sticks to Gutenberg and maintain the primary user experience of it, so if you are already familiar with the Block Editor, you will find it easy to use. If you need any help, contact us through the ",(0,he.jsx)("a",{target:"_blank",href:(0,pe.addQueryArgs)("edit.php?post_type=boldblocks_block&page=content-blocks-builder-contact"),children:"contact page"}),", visit the ",(0,he.jsx)("a",{target:"_blank",href:"https://wordpress.org/support/plugin/content-blocks-builder",children:"support forum ↗"})," ","or email us at"," ",(0,he.jsx)("a",{href:"mailto://[email protected]?subject=Hello+CBB",children:"[email protected]"}),"."," We’re sure to get back to you promptly."]})]})]})},En=()=>(0,he.jsx)(vn,{children:(0,he.jsx)(Tn,{})}),Nn=(window.wp.editor,window.wp.dataControls),Fn={},An={getPreviewMode(e,t){var n;return null!==(n=e.previewModes[t])&&void 0!==n?n:""}},Bn={fonts:{body:{fontFamily:"Nunito",genericFamily:"sans-serif",fontVariants:[]},headings:{fontFamily:"Roboto",genericFamily:"sans-serif",fontVariants:[]},additionalFonts:[]},fontsPresets:[{body:{fontFamily:"Nunito",genericFamily:"sans-serif"},headings:{fontFamily:"Roboto",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Merriweather",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Montserrat",genericFamily:"sans-serif"},headings:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Libre Baskerville",genericFamily:"serif"}},{body:{fontFamily:"Fauna One",genericFamily:"serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Josefin Slab",genericFamily:"serif"},headings:{fontFamily:"Six Caps",genericFamily:"sans-serif"}},{body:{fontFamily:"Source Sans Pro",genericFamily:"sans-serif"},headings:{fontFamily:"Playfair Display",genericFamily:"serif"}},{body:{fontFamily:"Quattrocento",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Alice",genericFamily:"serif"},headings:{fontFamily:"Sacramento",genericFamily:"cursive"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Arvo",genericFamily:"serif"}},{body:{fontFamily:"Poppins",genericFamily:"sans-serif"},headings:{fontFamily:"Abril Fatface",genericFamily:"cursive"}},{body:{fontFamily:"Inconsolata",genericFamily:"monospace"},headings:{fontFamily:"Karla",genericFamily:"sans-serif"}},{body:{fontFamily:"Andika",genericFamily:"sans-serif"},headings:{fontFamily:"Amatic SC",genericFamily:"sans-serif"}},{body:{fontFamily:"Lato",genericFamily:"sans-serif"},headings:{fontFamily:"Lustria",genericFamily:"serif"}},{body:{fontFamily:"Proza Libre",genericFamily:"sans-serif"},headings:{fontFamily:"Cormorant Garamond",genericFamily:"serif"}},{body:{fontFamily:"EB Garamond",genericFamily:"serif"},headings:{fontFamily:"Oswald",genericFamily:"sans-serif"}},{body:{fontFamily:"Josefin Sans",genericFamily:"sans-serif"},headings:{fontFamily:"Yeseva One",genericFamily:"cursive"}},{body:{fontFamily:"Inter",genericFamily:"sans-serif"},headings:{fontFamily:"EB Garamond",genericFamily:"serif"}}],googleFonts:[]},Pn={fonts:null},On={getGoogleFonts:()=>async({dispatch:e})=>{const t=await u()({path:"boldblocks/v1/getGoogleFonts"});return t&&t.success&&e({type:"SET_GOOGLE_FONTS",payload:t.data}),t},getTypography:()=>async({dispatch:e})=>{const{CBBTypography:t}=await u()({path:"wp/v2/settings"});if(t)return Ln(t,e);{const{CBBTypography:t}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:JSON.stringify(Bn.fonts)}}});return Ln(t,e)}},getPostTypography:e=>async({dispatch:t})=>{if(!e)return;const{meta:{CBBTypography:n}={}}=await u()({path:e});return Rn(n,t)}},Ln=(e,t)=>{if(e&&e?.fonts){const n=JSON.parse(e.fonts);return t({type:"UPDATE_FONTS",payload:n}),n}return e},Rn=(e,t)=>{let n;return e&&e?.fonts&&(n=JSON.parse(e.fonts)),t({type:"UPDATE_POST_FONTS",payload:n}),n},In={updateFonts:e=>({type:"UPDATE_FONTS",payload:e}),updatePostFonts:e=>({type:"UPDATE_POST_FONTS",payload:e}),updateAndPersistFonts:e=>async({dispatch:t})=>{const{CBBTypography:n}=await u()({path:"wp/v2/settings",method:"POST",data:{CBBTypography:{fonts:e}}});return Ln(n,t)},updateAndPersistPostFonts:(e,t)=>async({dispatch:n})=>{const{meta:{CBBTypography:r}={}}=await u()({path:t,method:"POST",data:{meta:{CBBTypography:{fonts:e}}}});return Rn(r,n)}},Dn={blocks:{},statuses:{}},Mn={getMissingBlock(e,t){var n;return null!==(n=e.missingBlocks.blocks[t])&&void 0!==n&&n},getMissingBlockStatus(e,t){var n;return null!==(n=e.missingBlocks.statuses[t])&&void 0!==n&&n}},zn={setMissingBlockStatus:e=>({type:"SET_MISSING_BLOCK_STATUS",payload:e}),loadMissingBlock:e=>async({select:t,dispatch:n})=>{let r=t.getMissingBlock(e);var o;!1===r&&(r=null!==(o=(await u()({path:`wp/v2/block-directory/search?term=${e}`}))[0])&&void 0!==o?o:{},n({type:"SET_MISSING_BLOCK",payload:{[e]:r}}));return r}},Hn={},Un={getNavRef(e,t){var n;return null!==(n=e.navRefs[t])&&void 0!==n?n:""}};(e=>{const t=(0,l.createReduxStore)(e,{selectors:{getIconLibrary(e){var t;return null!==(t=e?.icons)&&void 0!==t?t:[]}},actions:{loadIconLibrary:e=>async({select:t,dispatch:n})=>{var r;if(!e)return;let o=t.getIconLibrary();if(o&&o.length)return o;const i=await u()({path:e});var a;return i?.success&&n({type:"UPDATE_ICONS",payload:null!==(a=i?.data)&&void 0!==a?a:[]}),null!==(r=i?.data)&&void 0!==r?r:[]}},reducer:(e={icons:[]},t)=>"UPDATE_ICONS"===t.type?{...e,icons:t.payload}:e});(0,l.select)(e)||(0,l.register)(t)})("boldblocks/cbb-icon-library");const $n=(0,l.createReduxStore)("boldblocks/data",{selectors:{getGoogleFonts:e=>e.typography.googleFonts,getTypography:e=>({fonts:e.typography.fonts,fontsPresets:e.typography.fontsPresets}),getPostTypography:(e,t)=>({fonts:e.postTypography.fonts,fontsPresets:e.typography.fontsPresets}),...An,...Mn,...Un},actions:{...In,setPreviewMode:e=>({type:"SET_PREVIEW_MODE",payload:e}),...zn,setNavRef:e=>({type:"SET_NAV_REF",payload:e})},controls:Nn.controls,reducer:(0,l.combineReducers)({previewModes:(e=Fn,t)=>"SET_PREVIEW_MODE"===t.type?{...e,[t.payload.clientId]:t.payload.previewMode}:e,typography:(e=Bn,t)=>{switch(t.type){case"SET_GOOGLE_FONTS":return{...e,googleFonts:t.payload};case"UPDATE_FONTS":return{...e,fonts:t.payload}}return e},postTypography:(e=Pn,t)=>"UPDATE_POST_FONTS"===t.type?{...e,fonts:t.payload}:e,missingBlocks:(e=Dn,t)=>{switch(t.type){case"SET_MISSING_BLOCK":return{...e,blocks:{...e.missingBlocks,...t.payload}};case"SET_MISSING_BLOCK_STATUS":return{...e,statuses:{...e.statuses,[t.payload]:!0}}}return e},navRefs:(e=Hn,t)=>"SET_NAV_REF"===t.type?{...e,[t.payload.ref]:t.payload.clientId}:e}),resolvers:{...On}});(0,l.register)($n);const Vn=(e,t=[])=>t.find(t=>t.label===e),Gn=(e,t="",n=[],r)=>{let o=`boldblocks-font-${e.replace(/\s/g,"-").toLowerCase()}`;t&&(o=`${o}-text`);let i=r.querySelector(`#${o}`);if(!i){const a=Vn(e,n);if(a){let{label:e,variants:n}=a,s=`https://fonts.googleapis.com/css2?family=${e.replace(/\s/g,"+")}`,l=[];n=n.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e)),n.sort().forEach(e=>{-1!==e.indexOf("italic")?l.push(`1,${e.replace("italic","")}`):l.push(`0,${e}`)}),s=`${s}:ital,wght@${l.sort().join(";")}&display=swap`,t&&(s=`${s}&text=${encodeURIComponent(t)}`),i=r.createElement("link"),i.id=o,i.rel="stylesheet",i.href=s,r.head.appendChild(i)}return a}},Wn=(e,t,n)=>{Gn(e?.headings?.fontFamily,"",t,n),Gn(e?.body?.fontFamily,"",t,n)},Yn=(e,t)=>(e&&t&&t?.headings&&(e=e.map(e=>e.headings.fontFamily===t?.headings?.fontFamily&&e.body.fontFamily===t?.body?.fontFamily?{...e,isActive:!0}:e?.isActive?{...e,isActive:!1}:e)),e),qn=e=>e.map(e=>("regular"===e?e="400":"italic"===e&&(e="400italic"),e+"")).sort(),Qn=(e,t,n,r)=>(0,o.useMemo)(()=>{const o=n(e,t);return o?r(o.variants):[]},[e,t,n,r]),Jn=(e,t)=>{let n={};if(t){const{fontFamily:r,genericFamily:o}=t;r&&(n[`--cbb--${e}--font-family`]=`"${r}", ${o}`)}return n},Kn=(e,t)=>{let n=t.head.querySelector("#boldblocks-css-variables");n?n.innerHTML=e:(n=t.createElement("style"),n.id="boldblocks-css-variables",n.innerHTML=e,t.head.appendChild(n))},Xn=Kt.div` 751 751 .fonts__actions { 752 752 display: flex; -
content-blocks-builder/trunk/build/variations.asset.php
r3410557 r3420618 1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-e ditor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-primitives', 'wp-url'), 'version' => 'cacb2f342b81a368af26');1 <?php return array('dependencies' => array('lodash', 'react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-url'), 'version' => 'a76a2971ef1ecabc49cc'); -
content-blocks-builder/trunk/build/variations.js
r3410557 r3420618 1 (()=>{"use strict";var e={ 252:e=>{e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var o,r,i;if(Array.isArray(t)){if((o=t.length)!=n.length)return!1;for(r=o;0!==r--;)if(!e(t[r],n[r]))return!1;return!0}if(t instanceof Map&&n instanceof Map){if(t.size!==n.size)return!1;for(r of t.entries())if(!n.has(r[0]))return!1;for(r of t.entries())if(!e(r[1],n.get(r[0])))return!1;return!0}if(t instanceof Set&&n instanceof Set){if(t.size!==n.size)return!1;for(r of t.entries())if(!n.has(r[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(n)){if((o=t.length)!=n.length)return!1;for(r=o;0!==r--;)if(t[r]!==n[r])return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((o=(i=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(r=o;0!==r--;)if(!Object.prototype.hasOwnProperty.call(n,i[r]))return!1;for(r=o;0!==r--;){var a=i[r];if(!e(t[a],n[a]))return!1}return!0}return t!=t&&n!=n}}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const o=window.wp.i18n,r=window.wp.data,i=window.wp.plugins,a=window.wp.element,l=window.wp.blocks,c=window.wp.components,s=window.wp.blockEditor,u=window.wp.editor,p=window.wp.notices,m=window.lodash;n(252);const d=window.wp.apiFetch;var f=n.n(d);const{entries:h,setPrototypeOf:b,isFrozen:g,getPrototypeOf:_,getOwnPropertyDescriptor:y}=Object;let{freeze:T,seal:E,create:k}=Object,{apply:S,construct:A}="undefined"!=typeof Reflect&&Reflect;T||(T=function(e){return e}),E||(E=function(e){return e}),S||(S=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return e.apply(t,o)}),A||(A=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const w=H(Array.prototype.forEach),N=H(Array.prototype.lastIndexOf),v=H(Array.prototype.pop),x=H(Array.prototype.push),C=H(Array.prototype.splice),O=H(String.prototype.toLowerCase),R=H(String.prototype.toString),D=H(String.prototype.match),L=H(String.prototype.replace),M=H(String.prototype.indexOf),I=H(String.prototype.trim),P=H(Object.prototype.hasOwnProperty),z=H(RegExp.prototype.test),U=(F=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return A(F,t)});var F;function H(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return S(e,t,o)}}function B(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:O;b&&b(e,null);let o=t.length;for(;o--;){let r=t[o];if("string"==typeof r){const e=n(r);e!==r&&(g(t)||(t[o]=e),r=e)}e[r]=!0}return e}function j(e){for(let t=0;t<e.length;t++)P(e,t)||(e[t]=null);return e}function G(e){const t=k(null);for(const[n,o]of h(e))P(e,n)&&(Array.isArray(o)?t[n]=j(o):o&&"object"==typeof o&&o.constructor===Object?t[n]=G(o):t[n]=o);return t}function W(e,t){for(;null!==e;){const n=y(e,t);if(n){if(n.get)return H(n.get);if("function"==typeof n.value)return H(n.value)}e=_(e)}return function(){return null}}const Y=T(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),V=T(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),X=T(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$=T(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),q=T(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),K=T(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),J=T(["#text"]),Z=T(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Q=T(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),ee=T(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),te=T(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),ne=E(/\{\{[\w\W]*|[\w\W]*\}\}/gm),oe=E(/<%[\w\W]*|[\w\W]*%>/gm),re=E(/\$\{[\w\W]*/gm),ie=E(/^data-[\-\w.\u00B7-\uFFFF]+$/),ae=E(/^aria-[\-\w]+$/),le=E(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ce=E(/^(?:\w+script|data):/i),se=E(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ue=E(/^html$/i),pe=E(/^[a-z][.\w]*(-[.\w]+)+$/i);var me=Object.freeze({__proto__:null,ARIA_ATTR:ae,ATTR_WHITESPACE:se,CUSTOM_ELEMENT:pe,DATA_ATTR:ie,DOCTYPE_NAME:ue,ERB_EXPR:oe,IS_ALLOWED_URI:le,IS_SCRIPT_OR_DATA:ce,MUSTACHE_EXPR:ne,TMPLIT_EXPR:re});const de=function(){return"undefined"==typeof window?null:window};!function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:de();const n=t=>e(t);if(n.version="3.3.0",n.removed=[],!t||!t.document||9!==t.document.nodeType||!t.Element)return n.isSupported=!1,n;let{document:o}=t;const r=o,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:l,Node:c,Element:s,NodeFilter:u,NamedNodeMap:p=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:m,DOMParser:d,trustedTypes:f}=t,b=s.prototype,g=W(b,"cloneNode"),_=W(b,"remove"),y=W(b,"nextSibling"),E=W(b,"childNodes"),S=W(b,"parentNode");if("function"==typeof l){const e=o.createElement("template");e.content&&e.content.ownerDocument&&(o=e.content.ownerDocument)}let A,F="";const{implementation:H,createNodeIterator:j,createDocumentFragment:ne,getElementsByTagName:oe}=o,{importNode:re}=r;let ie={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"==typeof h&&"function"==typeof S&&H&&void 0!==H.createHTMLDocument;const{MUSTACHE_EXPR:ae,ERB_EXPR:ce,TMPLIT_EXPR:se,DATA_ATTR:pe,ARIA_ATTR:fe,IS_SCRIPT_OR_DATA:he,ATTR_WHITESPACE:be,CUSTOM_ELEMENT:ge}=me;let{IS_ALLOWED_URI:_e}=me,ye=null;const Te=B({},[...Y,...V,...X,...q,...J]);let Ee=null;const ke=B({},[...Z,...Q,...ee,...te]);let Se=Object.seal(k(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ae=null,we=null;const Ne=Object.seal(k(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let ve=!0,xe=!0,Ce=!1,Oe=!0,Re=!1,De=!0,Le=!1,Me=!1,Ie=!1,Pe=!1,ze=!1,Ue=!1,Fe=!0,He=!1,Be=!0,je=!1,Ge={},We=null;const Ye=B({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ve=null;const Xe=B({},["audio","video","img","source","image","track"]);let $e=null;const qe=B({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ke="http://www.w3.org/1998/Math/MathML",Je="http://www.w3.org/2000/svg",Ze="http://www.w3.org/1999/xhtml";let Qe=Ze,et=!1,tt=null;const nt=B({},[Ke,Je,Ze],R);let ot=B({},["mi","mo","mn","ms","mtext"]),rt=B({},["annotation-xml"]);const it=B({},["title","style","font","a","script"]);let at=null;const lt=["application/xhtml+xml","text/html"];let ct=null,st=null;const ut=o.createElement("form"),pt=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!st||st!==e){if(e&&"object"==typeof e||(e={}),e=G(e),at=-1===lt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,ct="application/xhtml+xml"===at?R:O,ye=P(e,"ALLOWED_TAGS")?B({},e.ALLOWED_TAGS,ct):Te,Ee=P(e,"ALLOWED_ATTR")?B({},e.ALLOWED_ATTR,ct):ke,tt=P(e,"ALLOWED_NAMESPACES")?B({},e.ALLOWED_NAMESPACES,R):nt,$e=P(e,"ADD_URI_SAFE_ATTR")?B(G(qe),e.ADD_URI_SAFE_ATTR,ct):qe,Ve=P(e,"ADD_DATA_URI_TAGS")?B(G(Xe),e.ADD_DATA_URI_TAGS,ct):Xe,We=P(e,"FORBID_CONTENTS")?B({},e.FORBID_CONTENTS,ct):Ye,Ae=P(e,"FORBID_TAGS")?B({},e.FORBID_TAGS,ct):G({}),we=P(e,"FORBID_ATTR")?B({},e.FORBID_ATTR,ct):G({}),Ge=!!P(e,"USE_PROFILES")&&e.USE_PROFILES,ve=!1!==e.ALLOW_ARIA_ATTR,xe=!1!==e.ALLOW_DATA_ATTR,Ce=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Oe=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Re=e.SAFE_FOR_TEMPLATES||!1,De=!1!==e.SAFE_FOR_XML,Le=e.WHOLE_DOCUMENT||!1,Pe=e.RETURN_DOM||!1,ze=e.RETURN_DOM_FRAGMENT||!1,Ue=e.RETURN_TRUSTED_TYPE||!1,Ie=e.FORCE_BODY||!1,Fe=!1!==e.SANITIZE_DOM,He=e.SANITIZE_NAMED_PROPS||!1,Be=!1!==e.KEEP_CONTENT,je=e.IN_PLACE||!1,_e=e.ALLOWED_URI_REGEXP||le,Qe=e.NAMESPACE||Ze,ot=e.MATHML_TEXT_INTEGRATION_POINTS||ot,rt=e.HTML_INTEGRATION_POINTS||rt,Se=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&pt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Se.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&pt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Se.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Se.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(xe=!1),ze&&(Pe=!0),Ge&&(ye=B({},J),Ee=[],!0===Ge.html&&(B(ye,Y),B(Ee,Z)),!0===Ge.svg&&(B(ye,V),B(Ee,Q),B(Ee,te)),!0===Ge.svgFilters&&(B(ye,X),B(Ee,Q),B(Ee,te)),!0===Ge.mathMl&&(B(ye,q),B(Ee,ee),B(Ee,te))),e.ADD_TAGS&&("function"==typeof e.ADD_TAGS?Ne.tagCheck=e.ADD_TAGS:(ye===Te&&(ye=G(ye)),B(ye,e.ADD_TAGS,ct))),e.ADD_ATTR&&("function"==typeof e.ADD_ATTR?Ne.attributeCheck=e.ADD_ATTR:(Ee===ke&&(Ee=G(Ee)),B(Ee,e.ADD_ATTR,ct))),e.ADD_URI_SAFE_ATTR&&B($e,e.ADD_URI_SAFE_ATTR,ct),e.FORBID_CONTENTS&&(We===Ye&&(We=G(We)),B(We,e.FORBID_CONTENTS,ct)),Be&&(ye["#text"]=!0),Le&&B(ye,["html","head","body"]),ye.table&&(B(ye,["tbody"]),delete Ae.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw U('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw U('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');A=e.TRUSTED_TYPES_POLICY,F=A.createHTML("")}else void 0===A&&(A=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(f,i)),null!==A&&"string"==typeof F&&(F=A.createHTML(""));T&&T(e),st=e}},dt=B({},[...V,...X,...$]),ft=B({},[...q,...K]),ht=function(e){x(n.removed,{element:e});try{S(e).removeChild(e)}catch(t){_(e)}},bt=function(e,t){try{x(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){x(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(Pe||ze)try{ht(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},gt=function(e){let t=null,n=null;if(Ie)e="<remove></remove>"+e;else{const t=D(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===at&&Qe===Ze&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const r=A?A.createHTML(e):e;if(Qe===Ze)try{t=(new d).parseFromString(r,at)}catch(e){}if(!t||!t.documentElement){t=H.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=et?F:r}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(o.createTextNode(n),i.childNodes[0]||null),Qe===Ze?oe.call(t,Le?"html":"body")[0]:Le?t.documentElement:i},_t=function(e){return j.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},yt=function(e){return e instanceof m&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof p)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Tt=function(e){return"function"==typeof c&&e instanceof c};function Et(e,t,o){w(e,e=>{e.call(n,t,o,st)})}const kt=function(e){let t=null;if(Et(ie.beforeSanitizeElements,e,null),yt(e))return ht(e),!0;const o=ct(e.nodeName);if(Et(ie.uponSanitizeElement,e,{tagName:o,allowedTags:ye}),De&&e.hasChildNodes()&&!Tt(e.firstElementChild)&&z(/<[/\w!]/g,e.innerHTML)&&z(/<[/\w!]/g,e.textContent))return ht(e),!0;if(7===e.nodeType)return ht(e),!0;if(De&&8===e.nodeType&&z(/<[/\w]/g,e.data))return ht(e),!0;if(!(Ne.tagCheck instanceof Function&&Ne.tagCheck(o))&&(!ye[o]||Ae[o])){if(!Ae[o]&&At(o)){if(Se.tagNameCheck instanceof RegExp&&z(Se.tagNameCheck,o))return!1;if(Se.tagNameCheck instanceof Function&&Se.tagNameCheck(o))return!1}if(Be&&!We[o]){const t=S(e)||e.parentNode,n=E(e)||e.childNodes;if(n&&t)for(let o=n.length-1;o>=0;--o){const r=g(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,y(e))}}return ht(e),!0}return e instanceof s&&!function(e){let t=S(e);t&&t.tagName||(t={namespaceURI:Qe,tagName:"template"});const n=O(e.tagName),o=O(t.tagName);return!!tt[e.namespaceURI]&&(e.namespaceURI===Je?t.namespaceURI===Ze?"svg"===n:t.namespaceURI===Ke?"svg"===n&&("annotation-xml"===o||ot[o]):Boolean(dt[n]):e.namespaceURI===Ke?t.namespaceURI===Ze?"math"===n:t.namespaceURI===Je?"math"===n&&rt[o]:Boolean(ft[n]):e.namespaceURI===Ze?!(t.namespaceURI===Je&&!rt[o])&&!(t.namespaceURI===Ke&&!ot[o])&&!ft[n]&&(it[n]||!dt[n]):!("application/xhtml+xml"!==at||!tt[e.namespaceURI]))}(e)?(ht(e),!0):"noscript"!==o&&"noembed"!==o&&"noframes"!==o||!z(/<\/no(script|embed|frames)/i,e.innerHTML)?(Re&&3===e.nodeType&&(t=e.textContent,w([ae,ce,se],e=>{t=L(t,e," ")}),e.textContent!==t&&(x(n.removed,{element:e.cloneNode()}),e.textContent=t)),Et(ie.afterSanitizeElements,e,null),!1):(ht(e),!0)},St=function(e,t,n){if(Fe&&("id"===t||"name"===t)&&(n in o||n in ut))return!1;if(xe&&!we[t]&&z(pe,t));else if(ve&&z(fe,t));else if(Ne.attributeCheck instanceof Function&&Ne.attributeCheck(t,e));else if(!Ee[t]||we[t]){if(!(At(e)&&(Se.tagNameCheck instanceof RegExp&&z(Se.tagNameCheck,e)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(e))&&(Se.attributeNameCheck instanceof RegExp&&z(Se.attributeNameCheck,t)||Se.attributeNameCheck instanceof Function&&Se.attributeNameCheck(t,e))||"is"===t&&Se.allowCustomizedBuiltInElements&&(Se.tagNameCheck instanceof RegExp&&z(Se.tagNameCheck,n)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(n))))return!1}else if($e[t]);else if(z(_e,L(n,be,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==M(n,"data:")||!Ve[e])if(Ce&&!z(he,L(n,be,"")));else if(n)return!1;return!0},At=function(e){return"annotation-xml"!==e&&D(e,ge)},wt=function(e){Et(ie.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||yt(e))return;const o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ee,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=ct(a),u=c;let p="value"===a?u:I(u);if(o.attrName=s,o.attrValue=p,o.keepAttr=!0,o.forceKeepAttr=void 0,Et(ie.uponSanitizeAttribute,e,o),p=o.attrValue,!He||"id"!==s&&"name"!==s||(bt(a,e),p="user-content-"+p),De&&z(/((--!?|])>)|<\/(style|title|textarea)/i,p)){bt(a,e);continue}if("attributename"===s&&D(p,"href")){bt(a,e);continue}if(o.forceKeepAttr)continue;if(!o.keepAttr){bt(a,e);continue}if(!Oe&&z(/\/>/i,p)){bt(a,e);continue}Re&&w([ae,ce,se],e=>{p=L(p,e," ")});const m=ct(e.nodeName);if(St(m,s,p)){if(A&&"object"==typeof f&&"function"==typeof f.getAttributeType)if(l);else switch(f.getAttributeType(m,s)){case"TrustedHTML":p=A.createHTML(p);break;case"TrustedScriptURL":p=A.createScriptURL(p)}if(p!==u)try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),yt(e)?ht(e):v(n.removed)}catch(t){bt(a,e)}}else bt(a,e)}Et(ie.afterSanitizeAttributes,e,null)},Nt=function e(t){let n=null;const o=_t(t);for(Et(ie.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)Et(ie.uponSanitizeShadowNode,n,null),kt(n),wt(n),n.content instanceof a&&e(n.content);Et(ie.afterSanitizeShadowDOM,t,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=null,i=null,l=null,s=null;if(et=!e,et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Tt(e)){if("function"!=typeof e.toString)throw U("toString is not a function");if("string"!=typeof(e=e.toString()))throw U("dirty is not a string, aborting")}if(!n.isSupported)return e;if(Me||mt(t),n.removed=[],"string"==typeof e&&(je=!1),je){if(e.nodeName){const t=ct(e.nodeName);if(!ye[t]||Ae[t])throw U("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof c)o=gt("\x3c!----\x3e"),i=o.ownerDocument.importNode(e,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?o=i:o.appendChild(i);else{if(!Pe&&!Re&&!Le&&-1===e.indexOf("<"))return A&&Ue?A.createHTML(e):e;if(o=gt(e),!o)return Pe?null:Ue?F:""}o&&Ie&&ht(o.firstChild);const u=_t(je?e:o);for(;l=u.nextNode();)kt(l),wt(l),l.content instanceof a&&Nt(l.content);if(je)return e;if(Pe){if(ze)for(s=ne.call(o.ownerDocument);o.firstChild;)s.appendChild(o.firstChild);else s=o;return(Ee.shadowroot||Ee.shadowrootmode)&&(s=re.call(r,s,!0)),s}let p=Le?o.outerHTML:o.innerHTML;return Le&&ye["!doctype"]&&o.ownerDocument&&o.ownerDocument.doctype&&o.ownerDocument.doctype.name&&z(ue,o.ownerDocument.doctype.name)&&(p="<!DOCTYPE "+o.ownerDocument.doctype.name+">\n"+p),Re&&w([ae,ce,se],e=>{p=L(p,e," ")}),A&&Ue?A.createHTML(p):p},n.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Me=!0},n.clearConfig=function(){st=null,Me=!1},n.isValidAttribute=function(e,t,n){st||mt({});const o=ct(e),r=ct(t);return St(o,r,n)},n.addHook=function(e,t){"function"==typeof t&&x(ie[e],t)},n.removeHook=function(e,t){if(void 0!==t){const n=N(ie[e],t);return-1===n?void 0:C(ie[e],n,1)[0]}return v(ie[e])},n.removeHooks=function(e){ie[e]=[]},n.removeAllHooks=function(){ie={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();const fe=window.wp.url,he=window.ReactJSXRuntime,be=window.wp.primitives;be.SVG,be.Path,be.SVG,be.Path,be.SVG,be.Path;window.wp.hooks;const ge="Mobile",_e="Tablet",ye="Desktop",Te={},Ee=getComputedStyle(document.documentElement);Te[ge]=Ee.getPropertyValue("--wp--custom--breakpoint--sm")||"576px",Te[_e]=Ee.getPropertyValue("--wp--custom--breakpoint--md")||"768px",Te[ye]=Ee.getPropertyValue("--wp--custom--breakpoint--lg")||"1024px";const ke={};Object.keys(Te).map(e=>{ke[e]=e===ge?"":`@media (min-width: ${Te[e]})`}),(0,o.__)("Mobile","content-blocks-builder"),ke[ge],(0,o.__)("Tablet","content-blocks-builder"),ke[_e],(0,o.__)("Desktop","content-blocks-builder"),ke[ye];const Se=window.wp.coreData,Ae={edit:(0,o.__)("Edit","content-blocks-builder"),editItem:(0,o.__)("Edit %s","content-blocks-builder"),save:(0,o.__)("Save","content-blocks-builder"),cancel:(0,o.__)("Cancel","content-blocks-builder"),delete:(0,o.__)("Delete","content-blocks-builder"),closeModal:(0,o.__)("Close modal","content-blocks-builder"),name:(0,o.__)("Name","content-blocks-builder"),label:(0,o.__)("Label","content-blocks-builder"),block:(0,o.__)("block","content-blocks-builder"),variation:(0,o.__)("variation","content-blocks-builder"),defaultVariation:(0,o.__)("default variation","content-blocks-builder"),pattern:(0,o.__)("pattern","content-blocks-builder"),blocks:(0,o.__)("Blocks","content-blocks-builder"),variations:(0,o.__)("Variations","content-blocks-builder"),patterns:(0,o.__)("Patterns","content-blocks-builder")};function we({modalTitle:e,title:t,titleHelp:n,setIsModalOpen:o,onSubmit:r=m.noop,onCancel:i=m.noop,className:l}){const[s,u]=(0,a.useState)(t),p=()=>{o(!1),u(""),i()};return(0,he.jsx)(c.Modal,{title:e,closeLabel:Ae.closeModal,onRequestClose:()=>p(),overlayClassName:"reusable-blocks-menu-items__convert-modal",className:l,children:(0,he.jsxs)("form",{onSubmit:e=>{e.preventDefault(),r(s),p()},children:[(0,he.jsx)(c.TextControl,{label:Ae.name,value:s,onChange:u,help:n,className:"title-input"}),(0,he.jsxs)(c.Flex,{className:"reusable-blocks-menu-items__convert-modal-actions",justify:"flex-end",children:[(0,he.jsx)(c.FlexItem,{children:(0,he.jsx)(c.Button,{variant:"secondary",onClick:()=>p(),children:Ae.cancel})}),(0,he.jsx)(c.FlexItem,{children:(0,he.jsx)(c.Button,{variant:"primary",type:"submit",disabled:!s,children:Ae.save})})]})]})})}function Ne(e){let t=[];return e.forEach(({name:e,attributes:n,innerBlocks:o})=>{t.push([e,n,Ne(o)])}),t}(0,i.registerPlugin)("boldblocks-create-block-variation",{render:()=>{var e;const{getSelectedBlock:t}=(0,r.useSelect)(e=>e(s.store),[]),{getBlockVariations:n}=(0,r.useSelect)(e=>e(l.store),[]),{createSuccessNotice:i,createErrorNotice:u}=(0,r.useDispatch)(p.store),[m,d]=(0,a.useState)(!1),h=m?t():{},{name:b}=null!=h?h:{},g=b&&null!==(e=n(b))&&void 0!==e?e:[],_=b?`${b} variation ${g.length+1}`:"",y=b?`${b}-variation-${((e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t})(10)}`:"";if(T="update",E="settings",!(0,r.useSelect)(e=>e(Se.store).canUser(T,E),[T,E]))return null;var T,E;const k=(0,o.__)("Create block variation","content-blocks-builder");return(0,he.jsxs)(he.Fragment,{children:[(0,he.jsx)(s.BlockSettingsMenuControls,{children:({selectedClientIds:e})=>1===e?.length?(0,he.jsx)(c.MenuItem,{label:k,icon:"plus-alt2",onClick:()=>d(!0),children:k}):null}),m&&(0,he.jsx)(we,{modalTitle:(0,o.sprintf)((0,o.__)("Create a new variation for the block: '%s'","content-blocks-builder"),b),title:_,setIsModalOpen:d,onSubmit:e=>{(({variationName:e,blockName:t,title:n,description:r="",iconString:i="",block:a,createSuccessNotice:c,createErrorNotice:s,isDefault:u=!1,doneCb:p,finallyCb:m})=>{const d=(0,l.serialize)([a]),h=(({blockName:e,variationName:t,title:n,block:o})=>{const{attributes:r={},innerBlocks:i=[]}=null!=o?o:{};return{blockName:e,variation:{name:t,title:n,attributes:r,innerBlocks:Ne(i)}}})({blockName:t,variationName:e,title:n,block:a});f()({path:"boldblocks/v1/createVariation",method:"POST",data:{title:n,content:d,status:"publish",meta:{boldblocks_variation_block_name:t,boldblocks_variation_name:e,boldblocks_variation_data:JSON.stringify(h),boldblocks_variation_icon:i,boldblocks_variation_description:r,boldblocks_variation_is_default:u,boldblocks_variation_is_transformable:!0},cbb_variation_nonce:CBBBlocks?.variationNonce}}).then(e=>{const{success:n,data:r,post:i}=e;var a;n?(c(r||(0,o.__)("Your variation has been created successfully!","content-blocks-builder"),{type:"snackbar",actions:[{label:(0,o.sprintf)(Ae.editItem,Ae.variation),url:(a=i.id,(0,fe.addQueryArgs)(`post.php?post=${a}&action=edit`))}]}),(0,l.registerBlockVariation)(t,h.variation),p&&p(i)):s(r||"Request failed!",{type:"snackbar"})}).catch(({data:e})=>{s(e,{type:"snackbar"})}).finally(()=>{m&&m()})})({title:e,block:h,blockName:b,variationName:y,createSuccessNotice:i,createErrorNotice:u})},className:"cbb-block-modal"})]})}}),(0,i.registerPlugin)("boldblocks-variations",{render:()=>{const{getCurrentPostType:e}=(0,r.useSelect)(e=>e(u.store),[]),t=(()=>{const e=(0,a.useRef)(!0);return(0,a.useEffect)(()=>{e.current=!1},[]),e.current})(),{setNavigationMode:n}=(0,r.useDispatch)(s.store);return"boldblocks_variation"===e()&&t&&n(!0),null}})})();1 (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.i18n,o=window.wp.data,n=window.wp.plugins,a=window.wp.element,l=window.wp.blocks,i=window.wp.components,c=window.wp.blockEditor,s=window.wp.notices,r=window.wp.coreData,b=window.lodash,d={edit:(0,t.__)("Edit","content-blocks-builder"),editItem:(0,t.__)("Edit %s","content-blocks-builder"),save:(0,t.__)("Save","content-blocks-builder"),cancel:(0,t.__)("Cancel","content-blocks-builder"),delete:(0,t.__)("Delete","content-blocks-builder"),closeModal:(0,t.__)("Close modal","content-blocks-builder"),name:(0,t.__)("Name","content-blocks-builder"),label:(0,t.__)("Label","content-blocks-builder"),block:(0,t.__)("block","content-blocks-builder"),variation:(0,t.__)("variation","content-blocks-builder"),defaultVariation:(0,t.__)("default variation","content-blocks-builder"),pattern:(0,t.__)("pattern","content-blocks-builder"),blocks:(0,t.__)("Blocks","content-blocks-builder"),variations:(0,t.__)("Variations","content-blocks-builder"),patterns:(0,t.__)("Patterns","content-blocks-builder")},u=window.ReactJSXRuntime;function k({modalTitle:e,title:t,titleHelp:o,setIsModalOpen:n,onSubmit:l=b.noop,onCancel:c=b.noop,className:s}){const[r,k]=(0,a.useState)(t),_=()=>{n(!1),k(""),c()};return(0,u.jsx)(i.Modal,{title:e,closeLabel:d.closeModal,onRequestClose:()=>_(),overlayClassName:"reusable-blocks-menu-items__convert-modal",className:s,children:(0,u.jsxs)("form",{onSubmit:e=>{e.preventDefault(),l(r),_()},children:[(0,u.jsx)(i.TextControl,{label:d.name,value:r,onChange:k,help:o,className:"title-input"}),(0,u.jsxs)(i.Flex,{className:"reusable-blocks-menu-items__convert-modal-actions",justify:"flex-end",children:[(0,u.jsx)(i.FlexItem,{children:(0,u.jsx)(i.Button,{variant:"secondary",onClick:()=>_(),children:d.cancel})}),(0,u.jsx)(i.FlexItem,{children:(0,u.jsx)(i.Button,{variant:"primary",type:"submit",disabled:!r,children:d.save})})]})]})})}const _=window.wp.apiFetch;var m=e.n(_);const p=window.wp.url;function v(e){let t=[];return e.forEach(({name:e,attributes:o,innerBlocks:n})=>{t.push([e,o,v(n)])}),t}window.wp.hooks;(0,n.registerPlugin)("boldblocks-create-block-variation",{render:()=>{var e;const{getSelectedBlock:n}=(0,o.useSelect)(e=>e(c.store),[]),{getBlockVariations:b}=(0,o.useSelect)(e=>e(l.store),[]),{createSuccessNotice:_,createErrorNotice:w}=(0,o.useDispatch)(s.store),[h,f]=(0,a.useState)(!1),N=h?n():{},{name:y}=null!=N?N:{},S=y&&null!==(e=b(y))&&void 0!==e?e:[],g=y?`${y} variation ${S.length+1}`:"",x=y?`${y}-variation-${((e=21)=>{let t="",o=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&o[e]];return t})(10)}`:"";if(C="update",j="settings",!(0,o.useSelect)(e=>e(r.store).canUser(C,j),[C,j]))return null;var C,j;const B=(0,t.__)("Create block variation","content-blocks-builder");return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.BlockSettingsMenuControls,{children:({selectedClientIds:e})=>1===e?.length?(0,u.jsx)(i.MenuItem,{label:B,icon:"plus-alt2",onClick:()=>f(!0),children:B}):null}),h&&(0,u.jsx)(k,{modalTitle:(0,t.sprintf)((0,t.__)("Create a new variation for the block: '%s'","content-blocks-builder"),y),title:g,setIsModalOpen:f,onSubmit:e=>{(({variationName:e,blockName:o,title:n,description:a="",iconString:i="",block:c,createSuccessNotice:s,createErrorNotice:r,isDefault:b=!1,doneCb:u,finallyCb:k})=>{const _=(0,l.serialize)([c]),w=(({blockName:e,variationName:t,title:o,block:n})=>{const{attributes:a={},innerBlocks:l=[]}=null!=n?n:{};return{blockName:e,variation:{name:t,title:o,attributes:a,innerBlocks:v(l)}}})({blockName:o,variationName:e,title:n,block:c});m()({path:"boldblocks/v1/createVariation",method:"POST",data:{title:n,content:_,status:"publish",meta:{boldblocks_variation_block_name:o,boldblocks_variation_name:e,boldblocks_variation_data:JSON.stringify(w),boldblocks_variation_icon:i,boldblocks_variation_description:a,boldblocks_variation_is_default:b,boldblocks_variation_is_transformable:!0},cbb_variation_nonce:CBBBlocks?.variationNonce}}).then(e=>{const{success:n,data:a,post:i}=e;var c;n?(s(a||(0,t.__)("Your variation has been created successfully!","content-blocks-builder"),{type:"snackbar",actions:[{label:(0,t.sprintf)(d.editItem,d.variation),url:(c=i.id,(0,p.addQueryArgs)(`post.php?post=${c}&action=edit`))}]}),(0,l.registerBlockVariation)(o,w.variation),u&&u(i)):r(a||"Request failed!",{type:"snackbar"})}).catch(({data:e})=>{r(e,{type:"snackbar"})}).finally(()=>{k&&k()})})({title:e,block:N,blockName:y,variationName:x,createSuccessNotice:_,createErrorNotice:w})},className:"cbb-block-modal"})]})}})})(); -
content-blocks-builder/trunk/content-blocks-builder.php
r3410557 r3420618 7 7 * Requires at least: 6.6 8 8 * Requires PHP: 7.4 9 * Version: 2.8. 69 * Version: 2.8.7 10 10 * Author: Phi Phan 11 11 * Author URI: https://contentblocksbuilder.com?utm_source=CBB&utm_campaign=CBB+visit+site&utm_medium=link&utm_content=Author+URI … … 36 36 * @var String 37 37 */ 38 public $version = '2.8. 6';38 public $version = '2.8.7'; 39 39 40 40 /** -
content-blocks-builder/trunk/includes/icon-library.php
r3181944 r3420618 69 69 70 70 if ( $media_svg_images ) { 71 $icons = $media_svg_images + $icons;71 $icons = array_merge( $media_svg_images, $icons ); 72 72 } 73 73 -
content-blocks-builder/trunk/readme.txt
r3410557 r3420618 6 6 Requires at least: 6.6 7 7 Tested up to: 6.9 8 Stable tag: 2.8. 68 Stable tag: 2.8.7 9 9 License: GPL-3.0 10 10 License URI: https://www.gnu.org/licenses/gpl-3.0.html … … 319 319 == Changelog == 320 320 321 = 2.8.7 = 322 *Release Date - 16 December 2025* 323 324 * Fixed - Removed the warning on the Edit Variation screen that appeared after the Write/Design mode was removed in WordPress 6.9. 325 * Fixed - SVGs in the media library overrided the ones in the icon library 326 321 327 = 2.8.6 = 322 328 *Release Date - 04 December 2025* -
content-blocks-builder/trunk/src/settings/getting-started/index.js
r3168972 r3420618 685 685 videoTutorials: [ 686 686 { 687 videoId: " 5xv3gpRNagY",688 videoCaption: `How to create a synced overridesgrid block`,687 videoId: "QKIPH5pmEWw", 688 videoCaption: `How to create a repeater grid block`, 689 689 }, 690 690 { -
content-blocks-builder/trunk/src/variations/settings-menu-item.js
r3108497 r3420618 17 17 store as blockEditorStore, 18 18 } from "@wordpress/block-editor"; 19 import { store as editorStore } from "@wordpress/editor";20 19 import { store as noticesStore } from "@wordpress/notices"; 21 20 … … 23 22 * Internal dependencies 24 23 */ 25 import { useIsMounted } from "sdk/utils";26 24 import { userCanCreateVariation } from "../utils/role-and-cap"; 27 import { CBB_VARIATION_TYPE } from "../utils/constants";28 25 import BlockEditModal from "../components/block-edit-modal"; 29 26 import { createVariation } from "./utils"; … … 113 110 }, 114 111 }); 115 116 /**117 * Do some actions for editting variations118 * Set navigation mode by default for variation post type119 */120 registerPlugin("boldblocks-variations", {121 render: () => {122 const { getCurrentPostType } = useSelect(123 (select) => select(editorStore),124 [],125 );126 127 const isMounted = useIsMounted();128 const { setNavigationMode } = useDispatch(blockEditorStore);129 130 // Editting variation post type131 if (getCurrentPostType() === CBB_VARIATION_TYPE && isMounted) {132 // Set navigation mode by default133 setNavigationMode(true);134 }135 136 return null;137 },138 });
Note: See TracChangeset
for help on using the changeset viewer.