PluginProbe ʕ •ᴥ•ʔ
VK Blocks / 0.53.2
VK Blocks v0.53.2
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / plugin / menu / block-template-panel.js
vk-blocks / src / plugin / menu Last commit date
block-template-panel.js 5 years ago block.js 5 years ago default-templates.js 6 years ago helper.js 6 years ago index.js 5 years ago sidebar.js 5 years ago
block-template-panel.js
129 lines
1 import {vkbBlockEditor} from "./../../blocks/_helper/depModules"
2
3 const { first, last } = window.lodash;
4
5 const { Spinner } = wp.components;
6
7 const { BlockPreview } = vkbBlockEditor;
8
9 const { useState } = wp.element;
10
11 const { dispatch, select } = wp.data;
12
13 const { insertBlocks, replaceBlocks, multiSelect } = dispatch("core/editor");
14
15 const { __ } = wp.i18n;
16
17 const {
18 getBlocks,
19 getBlockCount,
20 getSelectedBlock,
21 getBlockInsertionPoint,
22 } = select("core/block-editor") ? select("core/block-editor") : select("core/editor");
23
24 import parsedTemplates from "./default-templates";
25
26 export default ({ slug }) => {
27
28 if (5.3 > parseFloat(wpVersion)) {
29 return;
30 }
31
32 const [parts, setParts] = useState(null);
33 const [resultParts, setResultParts] = useState(null);
34
35 const setupParts = () => {
36 if (parts) {
37 return;
38 }
39 setParts(parsedTemplates);
40 };
41
42 const setupResultParts = () => {
43 if (resultParts) {
44 return;
45 }
46
47 setupParts();
48 if (!parts) {
49 return;
50 }
51
52 const newResultParts = parts.map((part, index) => {
53 return (
54 <li key={ index }>
55 <div
56 className="vkb-menu__template-part__button"
57 onClick={ () => {
58 if (part.blocks.length) {
59 const selectedBlock = getSelectedBlock();
60 if (null === selectedBlock) {
61 const lastRootBlock = last(getBlocks());
62 const isEmpty =
63 undefined !== lastRootBlock &&
64 null === lastRootBlock.rootClientId &&
65 (!getBlockCount(lastRootBlock.clientId) ||
66 ("core/paragraph" === lastRootBlock.name &&
67 "" === lastRootBlock.attributes.content));
68 if (isEmpty) {
69 replaceBlocks(lastRootBlock.clientId, part.blocks);
70 } else {
71 insertBlocks(part.blocks);
72 }
73 } else {
74 const isEmpty =
75 "core/paragraph" === selectedBlock.name &&
76 "" === selectedBlock.attributes.content;
77 if (!isEmpty) {
78 const insertionPoint = getBlockInsertionPoint();
79 insertBlocks(part.blocks, insertionPoint.index);
80 } else {
81 replaceBlocks(selectedBlock.clientId, part.blocks);
82 }
83 }
84 multiSelect(
85 first(part.blocks).clientId,
86 last(part.blocks).clientId
87 );
88 }
89 } }
90 >
91 <section className="vkb-menu__template-part__card__container">
92 <div
93 id={ `vkb-menu__template-part__card${index}` }
94 className="card vkb-menu__template-part__card"
95 >
96 <div className="content">
97 <h6>
98 <span className={ "vkb-menu__template-part__header__icon" }>
99 { part.icon }
100 </span>
101 { part.name }
102 </h6>
103 <div className="hover_content">
104 <div className="inner edit-post-visual-editor editor-styles-wrapper">
105 <BlockPreview viewportWidth={ 601 } blocks={ part.blocks } />
106 </div>
107 </div>
108 </div>
109 </div>
110 </section>
111 </div>
112 </li>
113 );
114 });
115 setResultParts(newResultParts.filter((resultPart) => resultPart));
116 };
117
118 setupResultParts();
119
120 if (resultParts) {
121 return <ul className="vkb-menu__template-part">{ resultParts }</ul>;
122 }
123 return (
124 <div className="vkb-menu__template-part__loading">
125 <Spinner />
126 </div>
127 );
128 };
129