Browse Source

Render only visible blocks for external block containers

pull/2872/head
Artur Arseniev 7 years ago
parent
commit
90018a8647
  1. 36
      dist/grapes.js
  2. 4
      dist/grapes.min.js
  3. 2
      dist/grapes.min.js.map
  4. 2
      package-lock.json
  5. 2
      package.json
  6. 39
      src/block_manager/index.js
  7. 1
      test/specs/block_manager/index.js

36
dist/grapes.js

@ -21637,11 +21637,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
blocks = new _model_Blocks__WEBPACK_IMPORTED_MODULE_3__["default"]([]); blocks = new _model_Blocks__WEBPACK_IMPORTED_MODULE_3__["default"]([]);
blocksVisible = new _model_Blocks__WEBPACK_IMPORTED_MODULE_3__["default"]([]); blocksVisible = new _model_Blocks__WEBPACK_IMPORTED_MODULE_3__["default"]([]);
categories = new _model_Categories__WEBPACK_IMPORTED_MODULE_4__["default"](); categories = new _model_Categories__WEBPACK_IMPORTED_MODULE_4__["default"](); // Setup the sync between the global and public collections
blocksView = new _view_BlocksView__WEBPACK_IMPORTED_MODULE_5__["default"]({
collection: blocksVisible,
categories: categories
}, c); // Setup the sync between the global and public collections
blocks.listenTo(blocks, 'add', function (model) { blocks.listenTo(blocks, 'add', function (model) {
blocksVisible.add(model); blocksVisible.add(model);
@ -21672,12 +21668,22 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
var blocks = this.getAll(); var blocks = this.getAll();
!blocks.length && blocks.reset(c.blocks); !blocks.length && blocks.reset(c.blocks);
}, },
/**
* Executed once the main editor instance is rendered
* @private
*/
postRender: function postRender() { postRender: function postRender() {
var collection = blocksVisible;
blocksView = new _view_BlocksView__WEBPACK_IMPORTED_MODULE_5__["default"]({
collection: collection,
categories: categories
}, c);
var elTo = this.getConfig().appendTo; var elTo = this.getConfig().appendTo;
if (elTo) { if (elTo) {
var el = Object(underscore__WEBPACK_IMPORTED_MODULE_1__["isElement"])(elTo) ? elTo : document.querySelector(elTo); var el = Object(underscore__WEBPACK_IMPORTED_MODULE_1__["isElement"])(elTo) ? elTo : document.querySelector(elTo);
el.appendChild(this.render()); el.appendChild(this.render(blocksVisible.models));
} }
}, },
@ -21801,19 +21807,23 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
var toRender = blocks || this.getAll().models; var toRender = blocks || this.getAll().models;
if (opts.external) { if (opts.external) {
var collection = new _model_Blocks__WEBPACK_IMPORTED_MODULE_3__["default"](toRender);
return new _view_BlocksView__WEBPACK_IMPORTED_MODULE_5__["default"]({ return new _view_BlocksView__WEBPACK_IMPORTED_MODULE_5__["default"]({
collection: new _model_Blocks__WEBPACK_IMPORTED_MODULE_3__["default"](toRender), collection: collection,
categories: categories categories: categories
}, _objectSpread({}, c, {}, opts)).render().el; }, _objectSpread({}, c, {}, opts)).render().el;
} }
if (!blocksView.rendered) { if (blocksView) {
blocksView.render(); blocksView.updateConfig(opts);
blocksView.rendered = 1; blocksView.collection.reset(toRender);
if (!blocksView.rendered) {
blocksView.render();
blocksView.rendered = 1;
}
} }
blocksView.updateConfig(opts);
blocksView.collection.reset(toRender);
return this.getContainer(); return this.getContainer();
} }
}; };
@ -38980,7 +38990,7 @@ var defaultConfig = {
editors: editors, editors: editors,
plugins: plugins, plugins: plugins,
// Will be replaced on build // Will be replaced on build
version: '0.16.13', version: '0.16.14',
/** /**
* Initialize the editor with passed options * Initialize the editor with passed options

4
dist/grapes.min.js

File diff suppressed because one or more lines are too long

2
dist/grapes.min.js.map

File diff suppressed because one or more lines are too long

2
package-lock.json

@ -1,6 +1,6 @@
{ {
"name": "grapesjs", "name": "grapesjs",
"version": "0.16.13", "version": "0.16.14",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

2
package.json

@ -1,7 +1,7 @@
{ {
"name": "grapesjs", "name": "grapesjs",
"description": "Free and Open Source Web Builder Framework", "description": "Free and Open Source Web Builder Framework",
"version": "0.16.13", "version": "0.16.14",
"author": "Artur Arseniev", "author": "Artur Arseniev",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"homepage": "http://grapesjs.com", "homepage": "http://grapesjs.com",

39
src/block_manager/index.js

@ -64,13 +64,6 @@ export default () => {
blocks = new Blocks([]); blocks = new Blocks([]);
blocksVisible = new Blocks([]); blocksVisible = new Blocks([]);
categories = new BlockCategories(); categories = new BlockCategories();
blocksView = new BlocksView(
{
collection: blocksVisible,
categories
},
c
);
// Setup the sync between the global and public collections // Setup the sync between the global and public collections
blocks.listenTo(blocks, 'add', model => { blocks.listenTo(blocks, 'add', model => {
@ -106,12 +99,18 @@ export default () => {
!blocks.length && blocks.reset(c.blocks); !blocks.length && blocks.reset(c.blocks);
}, },
/**
* Executed once the main editor instance is rendered
* @private
*/
postRender() { postRender() {
const collection = blocksVisible;
blocksView = new BlocksView({ collection, categories }, c);
const elTo = this.getConfig().appendTo; const elTo = this.getConfig().appendTo;
if (elTo) { if (elTo) {
const el = isElement(elTo) ? elTo : document.querySelector(elTo); const el = isElement(elTo) ? elTo : document.querySelector(elTo);
el.appendChild(this.render()); el.appendChild(this.render(blocksVisible.models));
} }
}, },
@ -234,25 +233,23 @@ export default () => {
const toRender = blocks || this.getAll().models; const toRender = blocks || this.getAll().models;
if (opts.external) { if (opts.external) {
const collection = new Blocks(toRender);
return new BlocksView( return new BlocksView(
{ { collection, categories },
collection: new Blocks(toRender), { ...c, ...opts }
categories
},
{
...c,
...opts
}
).render().el; ).render().el;
} }
if (!blocksView.rendered) { if (blocksView) {
blocksView.render(); blocksView.updateConfig(opts);
blocksView.rendered = 1; blocksView.collection.reset(toRender);
if (!blocksView.rendered) {
blocksView.render();
blocksView.rendered = 1;
}
} }
blocksView.updateConfig(opts);
blocksView.collection.reset(toRender);
return this.getContainer(); return this.getContainer();
} }
}; };

1
test/specs/block_manager/index.js

@ -14,6 +14,7 @@ describe('BlockManager', () => {
content: '<h1>Test</h1>' content: '<h1>Test</h1>'
}; };
obj = new BlockManager().init(); obj = new BlockManager().init();
obj.postRender();
obj.render(); obj.render();
}); });

Loading…
Cancel
Save