Browse Source

Merge branch 'gh-pages' of https://github.com/artf/grapesjs into gh-pages

pull/2301/head
Artur Arseniev 8 years ago
parent
commit
72c8f35b9c
  1. 4
      docs/404.html
  2. 4
      docs/Home.html
  3. 4
      docs/api/assets.html
  4. 4
      docs/api/block_manager.html
  5. 4
      docs/api/canvas.html
  6. 4
      docs/api/commands.html
  7. 26
      docs/api/component.html
  8. 4
      docs/api/components.html
  9. 4
      docs/api/css_composer.html
  10. 4
      docs/api/device_manager.html
  11. 12
      docs/api/editor.html
  12. 4
      docs/api/index.html
  13. 4
      docs/api/keymaps.html
  14. 4
      docs/api/modal_dialog.html
  15. 4
      docs/api/panels.html
  16. 4
      docs/api/rich_text_editor.html
  17. 4
      docs/api/selector_manager.html
  18. 4
      docs/api/storage_manager.html
  19. 9
      docs/api/style_manager.html
  20. 4
      docs/api/undo_manager.html
  21. 1
      docs/assets/js/12.9c91baa4.js
  22. 1
      docs/assets/js/12.b6040463.js
  23. 1
      docs/assets/js/18.8ca9fc74.js
  24. 1
      docs/assets/js/18.f155b4c4.js
  25. 1
      docs/assets/js/22.1be8550c.js
  26. 1
      docs/assets/js/22.4044a85d.js
  27. 1
      docs/assets/js/29.245014e9.js
  28. 1
      docs/assets/js/29.618f6056.js
  29. 1
      docs/assets/js/32.27d2cf79.js
  30. 1
      docs/assets/js/32.fda19034.js
  31. 1
      docs/assets/js/35.0110eaf1.js
  32. 1
      docs/assets/js/35.42f094c9.js
  33. 1
      docs/assets/js/36.01a0fc2b.js
  34. 1
      docs/assets/js/36.dcbc999c.js
  35. 1
      docs/assets/js/37.81b50f4e.js
  36. 1
      docs/assets/js/37.8c59c319.js
  37. 1
      docs/assets/js/38.7c0a8b3f.js
  38. 1
      docs/assets/js/38.8f378510.js
  39. 1
      docs/assets/js/42.8a9f7180.js
  40. 1
      docs/assets/js/42.96a85828.js
  41. 4
      docs/assets/js/app.7a800186.js
  42. 4
      docs/faq.html
  43. 58
      docs/getting-started.html
  44. 4
      docs/guides/Custom-CSS-parser.html
  45. 4
      docs/guides/Replace-Rich-Text-Editor.html
  46. 14
      docs/index.html
  47. 42
      docs/modules/Assets.html
  48. 16
      docs/modules/Blocks.html
  49. 34
      docs/modules/Components-js.html
  50. 20
      docs/modules/Components.html
  51. 8
      docs/modules/Plugins.html
  52. 8
      docs/modules/Storage.html
  53. 8
      docs/modules/Style-manager.html
  54. 16
      docs/modules/Traits.html

4
docs/404.html

@ -9,11 +9,11 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="content"><h1>404</h1><blockquote>How did we get here?</blockquote><a href="/docs/" class="router-link-active">Take me home.</a></div></div></div> <div id="app" data-server-rendered="true"><div class="theme-container"><div class="content"><h1>404</h1><blockquote>How did we get here?</blockquote><a href="/docs/" class="router-link-active">Take me home.</a></div></div></div>
<script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/Home.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/11.663618dd.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/11.663618dd.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -330,6 +330,6 @@ The default one is the localStorage which is pretty simple and all the data are
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token operator">...</span> <span class="token operator">...</span>
</code></pre></div><blockquote><p>Check <a href="API-Storage-Manager">Storage Manager API Reference</a></p></blockquote></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/Home.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/13/2018, 12:12:35 AM</span></div></div><!----></div></div></div> </code></pre></div><blockquote><p>Check <a href="API-Storage-Manager">Storage Manager API Reference</a></p></blockquote></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/Home.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/13/2018, 12:12:35 AM</span></div></div><!----></div></div></div>
<script src="/docs/assets/js/11.663618dd.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/11.663618dd.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/assets.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/14.1d09f9af.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/14.1d09f9af.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -80,6 +80,6 @@ passed entity</li></ul><h3 id="examples-7"><a href="#examples-7" aria-hidden="tr
Block Manager Block Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/14.1d09f9af.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/14.1d09f9af.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/block_manager.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/15.f4316c4a.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/15.f4316c4a.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -76,6 +76,6 @@ blockManager<span class="token punctuation">.</span><span class="token function"
Commands Commands
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/15.f4316c4a.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/15.f4316c4a.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/canvas.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/16.ae4af21b.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/16.ae4af21b.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -52,6 +52,6 @@ canvas<span class="token punctuation">.</span><span class="token function">scrol
Asset Manager Asset Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/16.ae4af21b.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/16.ae4af21b.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/commands.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/17.1abba793.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/17.1abba793.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -66,6 +66,6 @@ commands<span class="token punctuation">.</span><span class="token function">isA
DOM Components DOM Components
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/17.1abba793.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/17.1abba793.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

26
docs/api/component.html

File diff suppressed because one or more lines are too long

4
docs/api/components.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/19.d921948e.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/19.d921948e.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -84,6 +84,6 @@ updated immediately</p><p>Returns <strong><a href="https://developer.mozilla.org
- Component - Component
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/19.d921948e.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/19.d921948e.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/css_composer.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/20.2a47ec70.js" as="script"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/20.2a47ec70.js" as="script"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -74,6 +74,6 @@ rule<span class="token punctuation">.</span><span class="token keyword">set</spa
Modal Modal
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/20.2a47ec70.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/20.2a47ec70.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/device_manager.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/21.c6421742.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/21.c6421742.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -51,6 +51,6 @@ console<span class="token punctuation">.</span><span class="token function">log<
Selector Manager Selector Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/21.c6421742.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/21.c6421742.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

12
docs/api/editor.html

File diff suppressed because one or more lines are too long

4
docs/api/index.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/13.b7167e90.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/13.b7167e90.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -31,6 +31,6 @@
Editor Editor
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/13.b7167e90.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/13.b7167e90.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/keymaps.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/23.c5587df3.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/23.c5587df3.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -65,6 +65,6 @@ or just a command id as a string</p><h2 id="get"><a href="#get" aria-hidden="tru
Undo Manager Undo Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/23.c5587df3.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/23.c5587df3.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/modal_dialog.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/24.c051f379.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/24.c051f379.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -43,6 +43,6 @@
Rich Text Editor Rich Text Editor
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/24.c051f379.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/24.c051f379.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/panels.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/25.2f947e45.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/25.2f947e45.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -87,6 +87,6 @@ command<span class="token punctuation">:</span> <span class="token keyword">func
Style Manager Style Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/25.2f947e45.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/25.2f947e45.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/rich_text_editor.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/26.7375acba.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/26.7375acba.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -74,6 +74,6 @@ rte<span class="token punctuation">.</span><span class="token function">add</spa
Keymaps Keymaps
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/26.7375acba.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/26.7375acba.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/selector_manager.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/27.741f6722.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/27.741f6722.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -59,6 +59,6 @@ sm<span class="token punctuation">.</span><span class="token function">addClass<
CSS Composer CSS Composer
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/27.741f6722.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/27.741f6722.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/storage_manager.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/28.5040c972.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/28.5040c972.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -65,6 +65,6 @@ storageManager<span class="token punctuation">.</span><span class="token functio
Device Manager Device Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/28.5040c972.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/28.5040c972.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

9
docs/api/style_manager.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/29.245014e9.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/29.618f6056.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,7 +27,7 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/api/" class="sidebar-link">API Reference</a></li><li><a href="/docs/api/editor.html" class="sidebar-link">Editor</a></li><li><a href="/docs/api/canvas.html" class="sidebar-link">Canvas</a></li><li><a href="/docs/api/assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/api/block_manager.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/api/commands.html" class="sidebar-link">Commands</a></li><li><a href="/docs/api/components.html" class="sidebar-link">DOM Components</a></li><li><a href="/docs/api/component.html" class="sidebar-link"> - Component</a></li><li><a href="/docs/api/panels.html" class="sidebar-link">Panels</a></li><li><a href="/docs/api/style_manager.html" class="active sidebar-link">Style Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#stylemanager" class="sidebar-link">StyleManager</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getconfig" class="sidebar-link">getConfig</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#addsector" class="sidebar-link">addSector</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getsector" class="sidebar-link">getSector</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#removesector" class="sidebar-link">removeSector</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getsectors" class="sidebar-link">getSectors</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#addproperty" class="sidebar-link">addProperty</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getproperty" class="sidebar-link">getProperty</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#removeproperty" class="sidebar-link">removeProperty</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getproperties" class="sidebar-link">getProperties</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getmodeltostyle" class="sidebar-link">getModelToStyle</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#addtype" class="sidebar-link">addType</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#gettype" class="sidebar-link">getType</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#gettypes" class="sidebar-link">getTypes</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#createtype" class="sidebar-link">createType</a></li></ul></li><li><a href="/docs/api/storage_manager.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/api/device_manager.html" class="sidebar-link">Device Manager</a></li><li><a href="/docs/api/selector_manager.html" class="sidebar-link">Selector Manager</a></li><li><a href="/docs/api/css_composer.html" class="sidebar-link">CSS Composer</a></li><li><a href="/docs/api/modal_dialog.html" class="sidebar-link">Modal</a></li><li><a href="/docs/api/rich_text_editor.html" class="sidebar-link">Rich Text Editor</a></li><li><a href="/docs/api/keymaps.html" class="sidebar-link">Keymaps</a></li><li><a href="/docs/api/undo_manager.html" class="sidebar-link">Undo Manager</a></li></ul></div><div class="page"><div class="content"><h2 id="stylemanager"><a href="#stylemanager" aria-hidden="true" class="header-anchor">#</a> StyleManager</h2><p>With Style Manager you build categories (called sectors) of CSS properties which could be used to customize the style of components. <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/api/" class="sidebar-link">API Reference</a></li><li><a href="/docs/api/editor.html" class="sidebar-link">Editor</a></li><li><a href="/docs/api/canvas.html" class="sidebar-link">Canvas</a></li><li><a href="/docs/api/assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/api/block_manager.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/api/commands.html" class="sidebar-link">Commands</a></li><li><a href="/docs/api/components.html" class="sidebar-link">DOM Components</a></li><li><a href="/docs/api/component.html" class="sidebar-link"> - Component</a></li><li><a href="/docs/api/panels.html" class="sidebar-link">Panels</a></li><li><a href="/docs/api/style_manager.html" class="active sidebar-link">Style Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#stylemanager" class="sidebar-link">StyleManager</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getconfig" class="sidebar-link">getConfig</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#addsector" class="sidebar-link">addSector</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getsector" class="sidebar-link">getSector</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#removesector" class="sidebar-link">removeSector</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getsectors" class="sidebar-link">getSectors</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#addproperty" class="sidebar-link">addProperty</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getproperty" class="sidebar-link">getProperty</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#removeproperty" class="sidebar-link">removeProperty</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getproperties" class="sidebar-link">getProperties</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#getmodeltostyle" class="sidebar-link">getModelToStyle</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#addtype" class="sidebar-link">addType</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#gettype" class="sidebar-link">getType</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#gettypes" class="sidebar-link">getTypes</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#createtype" class="sidebar-link">createType</a></li><li class="sidebar-sub-header"><a href="/docs/api/style_manager.html#settarget" class="sidebar-link">setTarget</a></li></ul></li><li><a href="/docs/api/storage_manager.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/api/device_manager.html" class="sidebar-link">Device Manager</a></li><li><a href="/docs/api/selector_manager.html" class="sidebar-link">Selector Manager</a></li><li><a href="/docs/api/css_composer.html" class="sidebar-link">CSS Composer</a></li><li><a href="/docs/api/modal_dialog.html" class="sidebar-link">Modal</a></li><li><a href="/docs/api/rich_text_editor.html" class="sidebar-link">Rich Text Editor</a></li><li><a href="/docs/api/keymaps.html" class="sidebar-link">Keymaps</a></li><li><a href="/docs/api/undo_manager.html" class="sidebar-link">Undo Manager</a></li></ul></div><div class="page"><div class="content"><h2 id="stylemanager"><a href="#stylemanager" aria-hidden="true" class="header-anchor">#</a> StyleManager</h2><p>With Style Manager you build categories (called sectors) of CSS properties which could be used to customize the style of components.
You can customize the initial state of the module from the editor initialization, by passing the following <a href="https://github.com/artf/grapesjs/blob/master/src/style_manager/config/config.js" target="_blank" rel="noopener noreferrer">Configuration Object<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> You can customize the initial state of the module from the editor initialization, by passing the following <a href="https://github.com/artf/grapesjs/blob/master/src/style_manager/config/config.js" target="_blank" rel="noopener noreferrer">Configuration Object<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
styleManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> styleManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token comment">// options</span> <span class="token comment">// options</span>
@ -82,13 +82,14 @@ passed entity</li></ul><h3 id="examples-8"><a href="#examples-8" aria-hidden="tr
propView<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> propView<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
propView<span class="token punctuation">.</span>model<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'change:value'</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token punctuation">)</span><span class="token punctuation">;</span> propView<span class="token punctuation">.</span>model<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'change:value'</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
someContainer<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>propView<span class="token punctuation">.</span>el<span class="token punctuation">)</span><span class="token punctuation">;</span> someContainer<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>propView<span class="token punctuation">.</span>el<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Returns <strong>PropertyView</strong></p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/api/style_manager.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/8/2018, 11:17:15 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> </code></pre></div><p>Returns <strong>PropertyView</strong></p><h2 id="settarget"><a href="#settarget" aria-hidden="true" class="header-anchor">#</a> setTarget</h2><p>Select different target for the Style Manager.
It could be a Component, CSSRule, or a string of any CSS selector</p><h3 id="parameters-12"><a href="#parameters-12" aria-hidden="true" class="header-anchor">#</a> Parameters</h3><ul><li><code>target</code><strong>(Component | CSSRule | <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String" target="_blank" rel="noopener noreferrer">String<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>)</strong></li><li><code>opts</code></li></ul><p>Returns <strong>Styleable</strong> A Component or CSSRule</p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/api/style_manager.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/8/2018, 11:17:15 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/api/panels.html" class="prev"> ← <a href="/docs/api/panels.html" class="prev">
Panels Panels
</a></span><span class="next"><a href="/docs/api/storage_manager.html"> </a></span><span class="next"><a href="/docs/api/storage_manager.html">
Storage Manager Storage Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/29.245014e9.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/29.618f6056.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/api/undo_manager.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/30.753c7cf4.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/30.753c7cf4.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -50,6 +50,6 @@ stack<span class="token punctuation">.</span><span class="token function">each</
← <a href="/docs/api/keymaps.html" class="prev"> ← <a href="/docs/api/keymaps.html" class="prev">
Keymaps Keymaps
</a></span><!----></p></div></div></div></div> </a></span><!----></p></div></div></div></div>
<script src="/docs/assets/js/30.753c7cf4.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/30.753c7cf4.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

1
docs/assets/js/12.9c91baa4.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/12.b6040463.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/18.8ca9fc74.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/18.f155b4c4.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/22.1be8550c.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/22.4044a85d.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/29.245014e9.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/29.618f6056.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/32.27d2cf79.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/32.fda19034.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/35.0110eaf1.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/35.42f094c9.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/36.01a0fc2b.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/36.dcbc999c.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/37.81b50f4e.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/37.8c59c319.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/38.7c0a8b3f.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/38.8f378510.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/42.8a9f7180.js

File diff suppressed because one or more lines are too long

1
docs/assets/js/42.96a85828.js

File diff suppressed because one or more lines are too long

4
docs/assets/js/app.1436e1a7.js → docs/assets/js/app.7a800186.js

File diff suppressed because one or more lines are too long

4
docs/faq.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/31.7e89813a.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/31.7e89813a.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -28,6 +28,6 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="faq"><a href="#faq" aria-hidden="true" class="header-anchor">#</a> FAQ</h1><p>Coming soon</p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/faq.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/9/2018, 12:48:25 AM</span></div></div><!----></div></div></div> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="faq"><a href="#faq" aria-hidden="true" class="header-anchor">#</a> FAQ</h1><p>Coming soon</p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/faq.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/9/2018, 12:48:25 AM</span></div></div><!----></div></div></div>
<script src="/docs/assets/js/31.7e89813a.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/31.7e89813a.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

58
docs/getting-started.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<meta name="keywords" content="grapesjs getting started"> <meta name="keywords" content="grapesjs getting started">
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/32.fda19034.js" as="script"><link rel="preload" href="/docs/assets/js/2.ef91b2e4.js" as="script"><link rel="preload" href="/docs/assets/js/4.a4359865.js" as="script"><link rel="preload" href="/docs/assets/js/3.6f294650.js" as="script"><link rel="preload" href="/docs/assets/js/5.95c28380.js" as="script"><link rel="preload" href="/docs/assets/js/7.53f8b5b8.js" as="script"><link rel="preload" href="/docs/assets/js/8.d4eeeb94.js" as="script"><link rel="preload" href="/docs/assets/js/10.9257e084.js" as="script"><link rel="preload" href="/docs/assets/js/6.cb35c750.js" as="script"><link rel="preload" href="/docs/assets/js/9.3ae8fade.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/32.27d2cf79.js" as="script"><link rel="preload" href="/docs/assets/js/2.ef91b2e4.js" as="script"><link rel="preload" href="/docs/assets/js/4.a4359865.js" as="script"><link rel="preload" href="/docs/assets/js/3.6f294650.js" as="script"><link rel="preload" href="/docs/assets/js/5.95c28380.js" as="script"><link rel="preload" href="/docs/assets/js/7.53f8b5b8.js" as="script"><link rel="preload" href="/docs/assets/js/8.d4eeeb94.js" as="script"><link rel="preload" href="/docs/assets/js/10.9257e084.js" as="script"><link rel="preload" href="/docs/assets/js/6.cb35c750.js" as="script"><link rel="preload" href="/docs/assets/js/9.3ae8fade.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,20 +27,18 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="active sidebar-link">Getting Started</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/getting-started.html#import-the-library" class="sidebar-link">Import the library</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#start-from-the-canvas" class="sidebar-link">Start from the canvas</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#add-blocks" class="sidebar-link">Add Blocks</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#define-components" class="sidebar-link">Define Components</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#panels-buttons" class="sidebar-link">Panels &amp; Buttons</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#layers" class="sidebar-link">Layers</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#style-manager" class="sidebar-link">Style Manager</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#traits" class="sidebar-link">Traits</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#responsive-templates" class="sidebar-link">Responsive templates</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#store-load-data" class="sidebar-link">Store &amp; load data</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#theming" class="sidebar-link">Theming</a></li></ul></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="getting-started"><a href="#getting-started" aria-hidden="true" class="header-anchor">#</a> Getting Started</h1><p>This guide is a step-by-step introduction for everyone who wants to start creating its own builder with GrapesJS. This is not a complete guide of all functionalities but just a concise overview of most common modules. <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="active sidebar-link">Getting Started</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/getting-started.html#import-the-library" class="sidebar-link">Import the library</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#start-from-the-canvas" class="sidebar-link">Start from the canvas</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#add-blocks" class="sidebar-link">Add Blocks</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#define-components" class="sidebar-link">Define Components</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#panels-buttons" class="sidebar-link">Panels &amp; Buttons</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#layers" class="sidebar-link">Layers</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#style-manager" class="sidebar-link">Style Manager</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#traits" class="sidebar-link">Traits</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#responsive-templates" class="sidebar-link">Responsive templates</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#store-load-data" class="sidebar-link">Store &amp; load data</a></li><li class="sidebar-sub-header"><a href="/docs/getting-started.html#theming" class="sidebar-link">Theming</a></li></ul></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="getting-started"><a href="#getting-started" aria-hidden="true" class="header-anchor">#</a> Getting Started</h1><p>This is a step-by-step guide for anyone who wants to create their own builder with GrapesJS. This is not a comprehensive guide, just a concise overview of most common modules. Follow along to create a page builder from scratch. Skip to the end of this page to see the <a href="#final-result">final result</a></p><h2 id="import-the-library"><a href="#import-the-library" aria-hidden="true" class="header-anchor">#</a> Import the library</h2><p>Before you start using GrapesJS, you'll have to import it. Let's import the latest version</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>stylesheet<span class="token punctuation">&quot;</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>//unpkg.com/grapesjs/dist/css/grapes.min.css<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
Let's see how to create a completely customized page builder from scratch. The last demo of this page represents the <a href="#final-result">final result</a></p><h2 id="import-the-library"><a href="#import-the-library" aria-hidden="true" class="header-anchor">#</a> Import the library</h2><p>Before start using GrapesJS you have to import it inside your project, so let's import its latest version</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>stylesheet<span class="token punctuation">&quot;</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>//unpkg.com/grapesjs/dist/css/grapes.min.css<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>//unpkg.com/grapesjs<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>//unpkg.com/grapesjs<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript"></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
<span class="token comment">&lt;!-- <span class="token comment">&lt;!--
If you need plugins, put them below the main grapesjs script If you need plugins, put them below the main grapesjs script
&lt;script src=&quot;/path/to/some/plugin.min.js&quot;&gt;&lt;/script&gt; &lt;script src=&quot;/path/to/some/plugin.min.js&quot;&gt;&lt;/script&gt;
--&gt;</span> --&gt;</span>
</code></pre></div><p>or if you're in node environment</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> <span class="token string">'grapesjs/dist/css/grapes.min.css'</span><span class="token punctuation">;</span> </code></pre></div><p>or if you're in a Node environment</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> <span class="token string">'grapesjs/dist/css/grapes.min.css'</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> grapesjs <span class="token keyword">from</span> <span class="token string">'grapesjs'</span><span class="token punctuation">;</span> <span class="token keyword">import</span> grapesjs <span class="token keyword">from</span> <span class="token string">'grapesjs'</span><span class="token punctuation">;</span>
<span class="token comment">// If you need plugins, put them below the main grapesjs script</span> <span class="token comment">// If you need plugins, put them below the main grapesjs script</span>
<span class="token comment">// import 'grapesjs-some-plugin';</span> <span class="token comment">// import 'grapesjs-some-plugin';</span>
</code></pre></div><h2 id="start-from-the-canvas"><a href="#start-from-the-canvas" aria-hidden="true" class="header-anchor">#</a> Start from the canvas</h2><p>The first step is to define the interface of our editor and for this purpose we gonna start from basic HTML layouts. </code></pre></div><h2 id="start-from-the-canvas"><a href="#start-from-the-canvas" aria-hidden="true" class="header-anchor">#</a> Start from the canvas</h2><p>The first step is to define the interface of our editor. For this purpose we gonna start with basic HTML layouts. Finding a common structure for the UI of any project is not an easy task. That's why GrapesJS prefers to keep this process as simple as possible. We provide a few helpers, but let the user define the interface. This guarantees maximum flexibility.
Finding a common structure for the UI of any project is not an easy task that's why GrapesJS prefers to keep this process as simple as possible, by providing just few helpers but letting the user define the whole interface, this guarantees maximum flexibility. The main part of the GrapesJS editor is the canvas, this is where you create the structure of your templates and you can't miss it. Let's try to initiate the editor with the canvas and no panels.</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>gjs<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
The main part of the GrapesJS editor is the canvas, this is where you gonna create the whole structure of your templates and you definitely can't miss it. Let's try to initiate the editor with just the canvas and no panels.</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>gjs<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">&gt;</span></span>Hello World Component!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">&gt;</span></span>Hello World Component!<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
@ -68,7 +66,7 @@ The main part of the GrapesJS editor is the canvas, this is where you gonna crea
<span class="token property">width</span><span class="token punctuation">:</span> 100%<span class="token punctuation">;</span> <span class="token property">width</span><span class="token punctuation">:</span> 100%<span class="token punctuation">;</span>
<span class="token property">height</span><span class="token punctuation">:</span> 100%<span class="token punctuation">;</span> <span class="token property">height</span><span class="token punctuation">:</span> 100%<span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div id="gjs"><h1>Hello World Component!</h1></div></div><p>With just the canvas you're already able to move, copy and delete components from the structure (when you select components in the canvas, the toolbar is shown). For now we just see the example template taken from the container. Let's see now how can we create and drag custom blocks into our canvas.</p><h2 id="add-blocks"><a href="#add-blocks" aria-hidden="true" class="header-anchor">#</a> Add Blocks</h2><p>The block in GrapesJS is just a reusable piece of HTML that you can drop in the canvas. A block can be an image, a button, or an entire section with videos, forms and iframes. Let's start from creating another container and append inside it few basic blocks which we can later use to build more complex structures.</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><br><div class="highlighted"> </div><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>gjs<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> </code></pre></div><div class="demo-container" data-v-b3715568><div id="gjs"><h1>Hello World Component!</h1></div></div><p>With just the canvas you're already able to move, copy and delete components from the structure. For now, we see the example template taken from the container. Next let's look at how to create and drag custom blocks into our canvas.</p><h2 id="add-blocks"><a href="#add-blocks" aria-hidden="true" class="header-anchor">#</a> Add Blocks</h2><p>The block in GrapesJS is just a reusable piece of HTML that you can drop in the canvas. A block can be an image, a button, or an entire section with videos, forms and iframes. Let's start by creating another container and append a few basic blocks inside of it. Later we can use this technique to build more complex structures.</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><br><div class="highlighted"> </div><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>gjs<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
... ...
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>blocks<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>blocks<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
@ -109,13 +107,13 @@ The main part of the GrapesJS editor is the canvas, this is where you gonna crea
<span class="token property">height</span><span class="token punctuation">:</span> auto<span class="token punctuation">;</span> <span class="token property">height</span><span class="token punctuation">:</span> auto<span class="token punctuation">;</span>
<span class="token property">min-height</span><span class="token punctuation">:</span> auto<span class="token punctuation">;</span> <span class="token property">min-height</span><span class="token punctuation">:</span> auto<span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div><div id="gjs2" class="gjs"><h1>Hello World Component!</h1></div><div id="blocks2"></div></div></div><p>As you see we add our blocks via the initial configuration, which is ok, but obviously there might be the case you would like to add them dynamically, in this case you have to use the <a href="/docs/api/block_manager.html">Block Manager API</a></p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'my-block-id'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><div class="demo-container" data-v-b3715568><div><div id="gjs2" class="gjs"><h1>Hello World Component!</h1></div><div id="blocks2"></div></div></div><p>As you can see we add our blocks via the initial configuration. Obviously there might be a case in which you would like to add them dynamically, in this case you have to use the <a href="/docs/api/block_manager.html">Block Manager API</a></p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'my-block-id'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
label<span class="token punctuation">:</span> <span class="token string">'...'</span><span class="token punctuation">,</span> label<span class="token punctuation">:</span> <span class="token string">'...'</span><span class="token punctuation">,</span>
category<span class="token punctuation">:</span> <span class="token string">'...'</span><span class="token punctuation">,</span> category<span class="token punctuation">:</span> <span class="token string">'...'</span><span class="token punctuation">,</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>If you want to get more about blocks we suggest to read its dedicated page: <a href="/docs/modules/Blocks.html">Block Manager Module</a></p></div><h2 id="define-components"><a href="#define-components" aria-hidden="true" class="header-anchor">#</a> Define Components</h2><p>Technically, once you drop your HTML block inside the canvas each element of the content is transformed in GrapesJS Component, which is an object containing informations about how the element is rendered in the canvas (managed in the View) and how it might look its final code (created by the properties in the Model). Generally, all Model properties are reflected in the View, so, for example, if you add a new attribute to the model, not only it will be available in the export code (will see later how to get it) but also the element you see in the canvas is updated with new attributes. </code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>If you want to learn more about blocks we suggest to read its dedicated article: <a href="/docs/modules/Blocks.html">Block Manager Module</a></p></div><h2 id="define-components"><a href="#define-components" aria-hidden="true" class="header-anchor">#</a> Define Components</h2><p>Technically, once you drop your HTML block inside the canvas each element of the content is transformed into a GrapesJS Component. A GrapesJS Component is an object containing information about how the element is rendered in the canvas (managed in the View) and how it might look its final code (created by the properties in the Model). Generally, all Model properties are reflected in the View. Therefore, if you add a new attribute to the model, it will be available in the export code (which we will learn more about later), and the element you see in the canvas will be updated with new attributes.
While this is a common behavior what it's cool about Components that you can create a totally decoupled view and show to the user whatever you desire (so not necessary reflecting the model). For example, by dragging a placeholder text you can fetch and show instead a dynamic content. If want to get more about Custom Components and how to create and extend them, we recommend to check out <a href="/docs/modules/Components.html">Component Manager Module</a>.</p><p>GrapesJS comes along with few <a href="/docs/modules/Components.html#built-in-components">built-in Components</a> which enable different core features once rendered in canvas. Just to mention few of them, by double clicking on the image component you will see show up the default <a href="/docs/modules/Assets.html">Asset Manager</a>, which you can customize or integrate you own, by double clicking on the text component you're able to edit it via the built-in Rich Text Editor, which is also customizable and <a href="/docs/guides/Replace-Rich-Text-Editor.html">replaceable</a>.</p><p>As we have seen before you can create Blocks directly as Components</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'my-block-id'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> This isn't totally out of the ordinary, but the unique thing about Components that you can create a totally decoupled View. This means you can show the user whatever you desire regardless of what is in the Model. For example, by dragging a placeholder text you can fetch and show instead a dynamic content. If you want to learn more about Custom Components, you should check out <a href="/docs/modules/Components.html">Component Manager Module</a>.</p><p>GrapesJS comes with a few <a href="/docs/modules/Components.html#built-in-components">built-in Components</a> that enable different features once rendered in the canvas. For example, by double clicking on an image component you will see the default <a href="/docs/modules/Assets.html">Asset Manager</a>, which you can customize or integrate you own. By double clicking on the text component you're able to edit it via the built-in Rich Text Editor, which is also customization and <a href="/docs/guides/Replace-Rich-Text-Editor.html">replaceable</a>.</p><p>As we have seen before you can create Blocks directly as Components</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'my-block-id'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
content<span class="token punctuation">:</span> <span class="token punctuation">{</span> content<span class="token punctuation">:</span> <span class="token punctuation">{</span>
tagName<span class="token punctuation">:</span> <span class="token string">'div'</span><span class="token punctuation">,</span> tagName<span class="token punctuation">:</span> <span class="token string">'div'</span><span class="token punctuation">,</span>
@ -134,7 +132,7 @@ While this is a common behavior what it's cool about Components that you can cre
<span class="token punctuation">]</span> <span class="token punctuation">]</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check the <a href="/docs/api/components.html">Components API</a> and see how to interact with components dynamically</p></div><p>An example on how to select some inner component and replace its children with new contents</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// The wrapper is the root Component</span> </code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check out the <a href="/docs/api/components.html">Components API</a> to learn how to interact with components dynamically</p></div><p>An example on how to select some inner component and replace its children with new contents</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// The wrapper is the root Component</span>
<span class="token keyword">const</span> wrapper <span class="token operator">=</span> editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">.</span><span class="token function">getWrapper</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> wrapper <span class="token operator">=</span> editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">.</span><span class="token function">getWrapper</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> myComponent <span class="token operator">=</span> wrapper<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">'div.my-component'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> myComponent <span class="token operator">=</span> wrapper<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">'div.my-component'</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
myComponent<span class="token punctuation">.</span><span class="token function">components</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>component <span class="token operator">=&gt;</span> <span class="token comment">/* ... do something ... */</span><span class="token punctuation">)</span><span class="token punctuation">;</span> myComponent<span class="token punctuation">.</span><span class="token function">components</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>component <span class="token operator">=&gt;</span> <span class="token comment">/* ... do something ... */</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -192,8 +190,8 @@ editor<span class="token punctuation">.</span>Panels<span class="token punctuati
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top3" class="panel__top"><div id="panel__basic-actions3" class="panel__basic-actions"></div></div><div id="gjs3" class="gjs"><h1>Hello World Component!</h1></div><div id="blocks3"></div></div></div><p>So, we have defined where to render the panel with <code>el: '#basic-panel'</code> and then for each button we added a <code>command</code> property. The command could be the id, an object with <code>run</code> and <code>stop</code> functions or simply a single function. </code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top3" class="panel__top"><div id="panel__basic-actions3" class="panel__basic-actions"></div></div><div id="gjs3" class="gjs"><h1>Hello World Component!</h1></div><div id="blocks3"></div></div></div><p>We have defined where to render the panel with <code>el: '#basic-panel'</code> and then for each button we added a <code>command</code> property. The command could be the id, an object with <code>run</code> and <code>stop</code> functions or simply a single function.
Try to use <a href="/docs/api/commands.html">Commands</a> when possible, they allow you to track actions globally and execute also callbacks before and after their execution (you can even interrupt them).</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'run:export-template:before'</span><span class="token punctuation">,</span> opts <span class="token operator">=&gt;</span> <span class="token punctuation">{</span> Try to use <a href="/docs/api/commands.html">Commands</a> when possible, they allow you to track actions globally. Commands also execute callbacks before and after their execution (you can even interrupt them).</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'run:export-template:before'</span><span class="token punctuation">,</span> opts <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'Before the command run'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'Before the command run'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token number">0</span> <span class="token comment">/* some condition */</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token number">0</span> <span class="token comment">/* some condition */</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
opts<span class="token punctuation">.</span>abort <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> opts<span class="token punctuation">.</span>abort <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
@ -201,7 +199,7 @@ Try to use <a href="/docs/api/commands.html">Commands</a> when possible, they al
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'run:export-template'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'After the command run'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'run:export-template'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'After the command run'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'abort:export-template'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'Command aborted'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'abort:export-template'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'Command aborted'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check the <a href="/docs/api/panels.html">Panels API</a> to see all the available methods</p></div><h2 id="layers"><a href="#layers" aria-hidden="true" class="header-anchor">#</a> Layers</h2><p>Another utility tool you might find useful when working with web elements is a layer manger. It's just a tree overview of the structure nodes and enables you to manage it easier. To enable it you just have to specify where you want to render it</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><br><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><br><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__top<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> </code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check out the <a href="/docs/api/panels.html">Panels API</a> to see all the available methods</p></div><h2 id="layers"><a href="#layers" aria-hidden="true" class="header-anchor">#</a> Layers</h2><p>Another utility tool you might find useful when working with web elements is the layer manger. It's a tree overview of the structure nodes and enables you to manage it easier. To enable it you just have to specify where you want to render it</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><br><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><div class="highlighted"> </div><br><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__top<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__basic-actions<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__basic-actions<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>editor-row<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>editor-row<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
@ -255,7 +253,7 @@ editor<span class="token punctuation">.</span><span class="token function">on</s
<span class="token punctuation">}</span><span class="token punctuation">]</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top4" class="panel__top"><div id="panel__basic-actions4" class="panel__basic-actions"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs4" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right4" class="panel__right"><div id="layers-container"></div></div></div><div id="blocks4"></div></div></div><h2 id="style-manager"><a href="#style-manager" aria-hidden="true" class="header-anchor">#</a> Style Manager</h2><p>Once you have defined the structure of the template probably the next step is the ability to style it. To meet this need GrapesJS includes the Style Manager module which is composed by CSS style properties and sectors. To make it more clear, let's see how to define a basic set.</p><p>Let's start from adding one more panel inside the <code>panel__right</code> and another one in <code>panel__top</code> which will contain a Layer/Style Manager switcher</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><div class="highlighted"> </div><br><br><br><br><div class="highlighted"> </div><br><br><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__top<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> </code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top4" class="panel__top"><div id="panel__basic-actions4" class="panel__basic-actions"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs4" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right4" class="panel__right"><div id="layers-container"></div></div></div><div id="blocks4"></div></div></div><h2 id="style-manager"><a href="#style-manager" aria-hidden="true" class="header-anchor">#</a> Style Manager</h2><p>Once you have defined the structure of the template the next step is the ability to style it. To meet this need GrapesJS includes the Style Manager module which is composed by CSS style properties and sectors. To make it more clear, let's see how to define a basic set.</p><p>Let's start by adding one more panel inside the <code>panel__right</code> and another one in <code>panel__top</code> which will contain a Layer/Style Manager switcher</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><div class="highlighted"> </div><br><br><br><br><div class="highlighted"> </div><br><br><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__top<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__basic-actions<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__basic-actions<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__switcher<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__switcher<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
@ -370,7 +368,7 @@ editor<span class="token punctuation">.</span>Commands<span class="token punctua
smEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>display <span class="token operator">=</span> <span class="token string">'none'</span><span class="token punctuation">;</span> smEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>display <span class="token operator">=</span> <span class="token string">'none'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top5" class="panel__top"><div id="panel__basic-actions5" class="panel__basic-actions"></div><div id="panel__switcher5" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs5" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right5" class="panel__right"><div id="layers-container5" class="layers-container"></div><div id="styles-container5" class="styles-container"></div></div></div><div id="blocks5"></div></div></div><p>Inside Style Manager definition we use <code>buildProps</code> which helps us create common properties from <a href="/docs/modules/Style-manager.html#built-in-properties">available built-in objects</a> then in <code>properties</code> we can override same objects (eg. passing another <code>name</code> to change the label) identified by <code>property</code> name. As you can see from <code>custom-prop</code> example it's a matter of defining the CSS <code>property</code> and the input <code>type</code>. We suggest to check a more complete example of Style Manager properties usage from the <a href="https://github.com/artf/grapesjs/blob/gh-pages/demo.html#L1000" target="_blank" rel="noopener noreferrer">webpage preset demo<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check the <a href="/docs/api/panels.html">Style Manager API</a> to see how to update sectors and properties dynamically</p></div><h2 id="traits"><a href="#traits" aria-hidden="true" class="header-anchor">#</a> Traits</h2><p>Most of the time you would style your components and place them somewhere in the structure, but sometimes your components might need custom attributes or even custom behaviors and for this need you can make use of traits. A common use of traits is the ability to update HTML element attributes (eg. <code>placeholder</code> for inputs or <code>alt</code> for images) but you can also define your own custom traits, access the selected Component model and do whatever you want. For this guide, we just gonna show you how to render available traits, for more details on how to extend them we suggest to read the <a href="/docs/modules/Traits.html">Trait Manager Module page</a>.</p><p>Let's create a new container for traits, tell the editor where to render it and update the sidebar switcher</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><br><br><div class="highlighted"> </div><br><br><br></div><pre class="language-html"><code>... </code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top5" class="panel__top"><div id="panel__basic-actions5" class="panel__basic-actions"></div><div id="panel__switcher5" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs5" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right5" class="panel__right"><div id="layers-container5" class="layers-container"></div><div id="styles-container5" class="styles-container"></div></div></div><div id="blocks5"></div></div></div><p>Inside Style Manager definition we use <code>buildProps</code> which helps us create common properties from <a href="/docs/modules/Style-manager.html#built-in-properties">available built-in objects</a> then in <code>properties</code> we can override same objects (eg. passing another <code>name</code> to change the label) identified by <code>property</code> name. As you can see from <code>custom-prop</code> example it's a matter of defining the CSS <code>property</code> and the input <code>type</code>. We suggest to check a more complete example of Style Manager properties usage from the <a href="https://github.com/artf/grapesjs/blob/gh-pages/demo.html#L1000" target="_blank" rel="noopener noreferrer">webpage preset demo<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check the <a href="/docs/api/panels.html">Style Manager API</a> to see how to update sectors and properties dynamically</p></div><h2 id="traits"><a href="#traits" aria-hidden="true" class="header-anchor">#</a> Traits</h2><p>Most of the time you would style your components and place them somewhere in the structure, but sometimes your components might need custom attributes or even custom behaviors and for this need you can make use of traits. Traits are commonly used to update HTML element attributes (eg. <code>placeholder</code> for inputs or <code>alt</code> for images), but you can also define your own custom traits. Access the selected Component model and do whatever you want. For this guide, we going to show you how to render available traits, for more details on how to extend them we suggest you read the <a href="/docs/modules/Traits.html">Trait Manager Module page</a>.</p><p>Let's create a new container for traits. Tell the editor where to render it and update the sidebar switcher</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><br><br><div class="highlighted"> </div><br><br><br></div><pre class="language-html"><code>...
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__right<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__right<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>layers-container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>layers-container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>styles-container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>styles-container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
@ -416,7 +414,7 @@ editor<span class="token punctuation">.</span>Commands<span class="token punctua
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getTraitsEl</span><span class="token punctuation">(</span>editor<span class="token punctuation">)</span><span class="token punctuation">.</span>style<span class="token punctuation">.</span>display <span class="token operator">=</span> <span class="token string">'none'</span><span class="token punctuation">;</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getTraitsEl</span><span class="token punctuation">(</span>editor<span class="token punctuation">)</span><span class="token punctuation">.</span>style<span class="token punctuation">.</span>display <span class="token operator">=</span> <span class="token string">'none'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top6" class="panel__top"><div id="panel__basic-actions6" class="panel__basic-actions"></div><div id="panel__switcher6" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs6" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right6" class="panel__right"><div id="layers-container6" class="layers-container"></div><div id="styles-container6" class="styles-container"></div><div id="traits-container6" class="traits-container"></div></div></div><div id="blocks6"></div></div></div><p>Now if you switch to the Trait panel and select some of the inner component you should see its default traits.</p><h2 id="responsive-templates"><a href="#responsive-templates" aria-hidden="true" class="header-anchor">#</a> Responsive templates</h2><p>GrapesJS implements also a module which allows you to work with responsive templates easily. Let's see how to define different devices and some button for device switching</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><div class="highlighted"> </div><br><br><br><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__top<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> </code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top6" class="panel__top"><div id="panel__basic-actions6" class="panel__basic-actions"></div><div id="panel__switcher6" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs6" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right6" class="panel__right"><div id="layers-container6" class="layers-container"></div><div id="styles-container6" class="styles-container"></div><div id="traits-container6" class="traits-container"></div></div></div><div id="blocks6"></div></div></div><p>Now if you switch to the Trait panel and select one of the inner components you should see its default traits.</p><h2 id="responsive-templates"><a href="#responsive-templates" aria-hidden="true" class="header-anchor">#</a> Responsive templates</h2><p>GrapesJS implements a module which allows you to work with responsive templates easily. Let's see how to define different devices and a button for device switching</p><div class="language-html extra-class"><div class="highlight-lines"><br><br><div class="highlighted"> </div><br><br><br><br></div><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__top<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__basic-actions<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__basic-actions<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__devices<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__devices<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__switcher<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>panel__switcher<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
@ -468,7 +466,7 @@ editor<span class="token punctuation">.</span>Commands<span class="token punctua
editor<span class="token punctuation">.</span>Commands<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'set-device-mobile'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> editor<span class="token punctuation">.</span>Commands<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'set-device-mobile'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
run<span class="token punctuation">:</span> editor <span class="token operator">=&gt;</span> editor<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span><span class="token string">'Mobile'</span><span class="token punctuation">)</span> run<span class="token punctuation">:</span> editor <span class="token operator">=&gt;</span> editor<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span><span class="token string">'Mobile'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top7" class="panel__top"><div id="panel__basic-actions7" class="panel__basic-actions"></div><div id="panel__devices7" class="panel__devices"></div><div id="panel__switcher7" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs7" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right7" class="panel__right"><div id="layers-container7" class="layers-container"></div><div id="styles-container7" class="styles-container"></div><div id="traits-container7" class="traits-container"></div></div></div><div id="blocks7"></div></div></div><p>As you can see from the commands definition we just use the <code>editor.setDevice</code> method to change the size of the viewport. In case you need to trigger some action on device change you can setup a listener like this:</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'change:device'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'Current device: '</span><span class="token punctuation">,</span> editor<span class="token punctuation">.</span><span class="token function">getDevice</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre></div><div class="demo-container" data-v-b3715568><div><div id="panel__top7" class="panel__top"><div id="panel__basic-actions7" class="panel__basic-actions"></div><div id="panel__devices7" class="panel__devices"></div><div id="panel__switcher7" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs7" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right7" class="panel__right"><div id="layers-container7" class="layers-container"></div><div id="styles-container7" class="styles-container"></div><div id="traits-container7" class="traits-container"></div></div></div><div id="blocks7"></div></div></div><p>As you can see from the commands definition we use the <code>editor.setDevice</code> method to change the size of the viewport. In case you need to trigger an action on device change you can setup a listener like this:</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'change:device'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'Current device: '</span><span class="token punctuation">,</span> editor<span class="token punctuation">.</span><span class="token function">getDevice</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>What about the mobile-first approach? You can achieve it by changing your configurations in this way:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><p>What about the mobile-first approach? You can achieve it by changing your configurations in this way:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
mediaCondition<span class="token punctuation">:</span> <span class="token string">'min-width'</span><span class="token punctuation">,</span> <span class="token comment">// default is `max-width`</span> mediaCondition<span class="token punctuation">:</span> <span class="token string">'min-width'</span><span class="token punctuation">,</span> <span class="token comment">// default is `max-width`</span>
@ -488,9 +486,9 @@ editor<span class="token punctuation">.</span>Commands<span class="token punctua
<span class="token comment">// Set initial device as Mobile</span> <span class="token comment">// Set initial device as Mobile</span>
editor<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span><span class="token string">'Mobile'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> editor<span class="token punctuation">.</span><span class="token function">setDevice</span><span class="token punctuation">(</span><span class="token string">'Mobile'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check the <a href="/docs/api/panels.html">Device Manager API</a> to get all available methods</p></div><h2 id="store-load-data"><a href="#store-load-data" aria-hidden="true" class="header-anchor">#</a> Store &amp; load data</h2><p>Once you finished with defining you builder interface the next step would be to setup the storing and loading process. </code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Check out the <a href="/docs/api/panels.html">Device Manager API</a> to see all the available methods</p></div><h2 id="store-load-data"><a href="#store-load-data" aria-hidden="true" class="header-anchor">#</a> Store &amp; load data</h2><p>Once you have finished with defining your builder interface the next step would be to setup the storing and loading process.
GrapesJS implements 2 simple type of storages inside its Storage Manager, the local (by using <code>localStorage</code>, active by default) and the remote one. Those are enough to cover most of the cases, but it's also possible to add new implementations (<a href="https://github.com/artf/grapesjs-indexeddb" target="_blank" rel="noopener noreferrer">grapesjs-indexeddb<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> is a good example). GrapesJS implements 2 simple type of storages inside its Storage Manager: The local (by using <code>localStorage</code>, active by default) and the remote one. Those are enough to cover most of the cases, but it's also possible to add new implementations (<a href="https://github.com/artf/grapesjs-indexeddb" target="_blank" rel="noopener noreferrer">grapesjs-indexeddb<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> is a good example).
Let's see how the default options looks like</p><div class="language-js extra-class"><pre class="language-js"><code>grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> Let's see how the default options work</p><div class="language-js extra-class"><pre class="language-js"><code>grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
storageManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> storageManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
id<span class="token punctuation">:</span> <span class="token string">'gjs-'</span><span class="token punctuation">,</span> <span class="token comment">// Prefix identifier that will be used inside storing and loading</span> id<span class="token punctuation">:</span> <span class="token string">'gjs-'</span><span class="token punctuation">,</span> <span class="token comment">// Prefix identifier that will be used inside storing and loading</span>
@ -504,7 +502,7 @@ Let's see how the default options looks like</p><div class="language-js extra-cl
storeCss<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// Enable/Disable storing of rules as CSS string</span> storeCss<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// Enable/Disable storing of rules as CSS string</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Worth noting the default <code>id</code> parameter which adds a prefix for all keys to store. If you check the <code>localStorage</code> inside the devtool panel you'll see something like <code>{ 'gjs-components': '....' ...}</code> in this way it prevents the risk of collisions.</p><p>Let's check also the configuration required to setup the remote storage</p><div class="language-js extra-class"><pre class="language-js"><code>grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><p>It is worth noting that the default <code>id</code> parameter adds a prefix for all keys to store. If you check the <code>localStorage</code> inside the devtool panel you'll see something like <code>{ 'gjs-components': '....' ...}</code> this way it lessens the risk of collisions.</p><p>Let's look at the configuration required to setup the remote storage</p><div class="language-js extra-class"><pre class="language-js"><code>grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
storageManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> storageManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
type<span class="token punctuation">:</span> <span class="token string">'remote'</span><span class="token punctuation">,</span> type<span class="token punctuation">:</span> <span class="token string">'remote'</span><span class="token punctuation">,</span>
@ -515,8 +513,8 @@ Let's see how the default options looks like</p><div class="language-js extra-cl
headers<span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// Custom headers for the remote storage request</span> headers<span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// Custom headers for the remote storage request</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>As you might noticed, we've left some default option unchanged, increased changes necessary for autosave triggering and passed remote endpoints. </code></pre></div><p>As you might noticed, we've left some default options unchanged: Increased changes necessary for autosave triggering and passed remote endpoints.
If you prefer you could also disable the autosaving and do it by yourself using some custom command</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// ...</span> If you prefer you could also disable the autosaving and you can do so using a custom command</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// ...</span>
storageManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> storageManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
type<span class="token punctuation">:</span> <span class="token string">'remote'</span><span class="token punctuation">,</span> type<span class="token punctuation">:</span> <span class="token string">'remote'</span><span class="token punctuation">,</span>
autosave<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> autosave<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
@ -535,7 +533,7 @@ If you prefer you could also disable the autosaving and do it by yourself using
<span class="token punctuation">]</span> <span class="token punctuation">]</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
</code></pre></div><p>To get a better overview of the Storage Manager, how correctly you should store/load the template and how to define new storages you have to read the <a href="/docs/modules/Storage.html">Storage Manager Module</a> page</p><h2 id="theming"><a href="#theming" aria-hidden="true" class="header-anchor">#</a> Theming</h2><p>One last step that might actually improve a lot your editor personality is how it's look visually. To achieve an easy theming we have adapted an atomic design for this purpose. To customize the main palette of colors all you have to do is to change few CSS rules or if you include GrapesJS styles via SCSS you can make use of its <a href="https://github.com/artf/grapesjs/blob/dev/src/styles/scss/_gjs_variables.scss" target="_blank" rel="noopener noreferrer">internal variables<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> and declare yours before the import</p><div class="language-scss extra-class"><pre class="language-scss"><code><span class="token comment">// Put your variables before the grapesjs style import</span> </code></pre></div><p>To get a better overview of the Storage Manager and how you should store/load the template, or how to define new storages you should read the <a href="/docs/modules/Storage.html">Storage Manager Module</a> page</p><h2 id="theming"><a href="#theming" aria-hidden="true" class="header-anchor">#</a> Theming</h2><p>One last step that might actually improve a lot your editor personality is how it's look visually. To achieve an easy theming we have adapted an atomic design for this purpose. To customize the main palette of colors all you have to do is to change few CSS rules. Alternatively if you include GrapesJS styles via SCSS you can make use of its <a href="https://github.com/artf/grapesjs/blob/dev/src/styles/scss/_gjs_variables.scss" target="_blank" rel="noopener noreferrer">internal variables<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> and declare your variables before the import</p><div class="language-scss extra-class"><pre class="language-scss"><code><span class="token comment">// Put your variables before the GrapesJS style import</span>
<span class="token comment">// Palette variables</span> <span class="token comment">// Palette variables</span>
<span class="token property"><span class="token variable">$primaryColor</span></span><span class="token punctuation">:</span> #444<span class="token punctuation">;</span> <span class="token property"><span class="token variable">$primaryColor</span></span><span class="token punctuation">:</span> #444<span class="token punctuation">;</span>
@ -546,8 +544,8 @@ If you prefer you could also disable the autosaving and do it by yourself using
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
<span class="token keyword">@import</span> <span class="token string">&quot;grapesjs/src/styles/scss/main.scss&quot;</span><span class="token punctuation">;</span> <span class="token keyword">@import</span> <span class="token string">&quot;grapesjs/src/styles/scss/main.scss&quot;</span><span class="token punctuation">;</span>
</code></pre></div><p>In case of a simple CSS you just have to put your rules after the GrapesJS styles. </code></pre></div><p>In case of a simple CSS you'll have to put your rules after the GrapesJS styles.
To complete our builder let's customize its color palette and to make it more visually &quot;readable&quot; we gonna replace all button labels with SVG icons</p><div class="language-css extra-class"><pre class="language-css"><code><span class="token comment">/* We can remove the border we've set at the beginnig */</span> To complete our builder let's customize its color palette and to make it more visually &quot;readable&quot; we can replace all button labels with SVG icons</p><div class="language-css extra-class"><pre class="language-css"><code><span class="token comment">/* We can remove the border we've set at the beginnig */</span>
<span class="token selector">#gjs</span> <span class="token punctuation">{</span> <span class="token selector">#gjs</span> <span class="token punctuation">{</span>
<span class="token property">border</span><span class="token punctuation">:</span> none<span class="token punctuation">;</span> <span class="token property">border</span><span class="token punctuation">:</span> none<span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
@ -574,13 +572,13 @@ To complete our builder let's customize its color palette and to make it more vi
.gjs-four-color-h:hover</span> <span class="token punctuation">{</span> .gjs-four-color-h:hover</span> <span class="token punctuation">{</span>
<span class="token property">color</span><span class="token punctuation">:</span> #ec5896<span class="token punctuation">;</span> <span class="token property">color</span><span class="token punctuation">:</span> #ec5896<span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</code></pre></div><p>and here is our final result</p><div id="final-result" class="demo-container" data-v-b3715568><div class="gjs__themed"><div id="panel__top8" class="panel__top"><div id="panel__basic-actions8" class="panel__basic-actions"></div><div id="panel__devices8" class="panel__devices"></div><div id="panel__switcher8" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs8" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right8" class="panel__right"><div id="layers-container8" class="layers-container"></div><div id="styles-container8" class="styles-container"></div><div id="traits-container8" class="traits-container"></div></div></div><div id="blocks8"></div></div></div></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/getting-started.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/14/2018, 1:29:46 AM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> </code></pre></div><p>and here is our final result</p><div id="final-result" class="demo-container" data-v-b3715568><div class="gjs__themed"><div id="panel__top8" class="panel__top"><div id="panel__basic-actions8" class="panel__basic-actions"></div><div id="panel__devices8" class="panel__devices"></div><div id="panel__switcher8" class="panel__switcher"></div></div><div class="editor-row"><div class="editor-canvas"><div id="gjs8" class="gjs"><h1>Hello World Component!</h1></div></div><div id="panel__right8" class="panel__right"><div id="layers-container8" class="layers-container"></div><div id="styles-container8" class="styles-container"></div><div id="traits-container8" class="traits-container"></div></div></div><div id="blocks8"></div></div></div></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/getting-started.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">10/26/2018, 1:39:09 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/" class="prev router-link-active"> ← <a href="/docs/" class="prev router-link-active">
Introduction Introduction
</a></span><span class="next"><a href="/docs/modules/Assets.html"> </a></span><span class="next"><a href="/docs/modules/Assets.html">
Asset Manager Asset Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/32.fda19034.js" defer></script><script src="/docs/assets/js/2.ef91b2e4.js" defer></script><script src="/docs/assets/js/4.a4359865.js" defer></script><script src="/docs/assets/js/3.6f294650.js" defer></script><script src="/docs/assets/js/5.95c28380.js" defer></script><script src="/docs/assets/js/7.53f8b5b8.js" defer></script><script src="/docs/assets/js/8.d4eeeb94.js" defer></script><script src="/docs/assets/js/10.9257e084.js" defer></script><script src="/docs/assets/js/6.cb35c750.js" defer></script><script src="/docs/assets/js/9.3ae8fade.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/32.27d2cf79.js" defer></script><script src="/docs/assets/js/2.ef91b2e4.js" defer></script><script src="/docs/assets/js/4.a4359865.js" defer></script><script src="/docs/assets/js/3.6f294650.js" defer></script><script src="/docs/assets/js/5.95c28380.js" defer></script><script src="/docs/assets/js/7.53f8b5b8.js" defer></script><script src="/docs/assets/js/8.d4eeeb94.js" defer></script><script src="/docs/assets/js/10.9257e084.js" defer></script><script src="/docs/assets/js/6.cb35c750.js" defer></script><script src="/docs/assets/js/9.3ae8fade.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/guides/Custom-CSS-parser.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/33.3a04bb90.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/33.3a04bb90.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -209,6 +209,6 @@ editor<span class="token punctuation">.</span><span class="token function">setCu
← <a href="/docs/guides/Replace-Rich-Text-Editor.html" class="prev"> ← <a href="/docs/guides/Replace-Rich-Text-Editor.html" class="prev">
Replace Rich Text Editor Replace Rich Text Editor
</a></span><!----></p></div></div></div></div> </a></span><!----></p></div></div></div></div>
<script src="/docs/assets/js/33.3a04bb90.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/33.3a04bb90.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

4
docs/guides/Replace-Rich-Text-Editor.html

@ -9,7 +9,7 @@
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.40"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/34.1814891c.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/34.1814891c.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -101,6 +101,6 @@ Obviously, each third-party library has its own APIs and can present some limita
Use Custom CSS Parser Use Custom CSS Parser
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/34.1814891c.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/34.1814891c.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

14
docs/index.html

File diff suppressed because one or more lines are too long

42
docs/modules/Assets.html

@ -6,10 +6,10 @@
<title>Asset Manager | GrapesJS</title> <title>Asset Manager | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/35.0110eaf1.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/35.42f094c9.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,7 +27,7 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="active sidebar-link">Asset Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#configuration" class="sidebar-link">Configuration</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#initialization" class="sidebar-link">Initialization</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#customization" class="sidebar-link">Customization</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#uploading-assets" class="sidebar-link">Uploading assets</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#events" class="sidebar-link">Events</a></li></ul></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="asset-manager"><a href="#asset-manager" aria-hidden="true" class="header-anchor">#</a> Asset Manager</h1><p align="center"><img src="http://grapesjs.com/img/sc-grapesjs-assets-1.jpg" alt="GrapesJS - Asset Manager" align="center"></p><p>In this section, you will see how to setup and take the full advantage of built-in Asset Manager in GrapesJS, which is intentionally lightweight and implements just an <code>image</code> in its core, but as you'll see next it's easy to extend and create your own asset types.</p><p></p><div class="table-of-contents"><ul><li><a href="#configuration">Configuration</a></li><li><a href="#initialization">Initialization</a></li><li><a href="#customization">Customization</a><ul><li><a href="#define-new-asset-type">Define new Asset type</a></li><li><a href="#extend-asset-types">Extend Asset Types</a></li></ul></li><li><a href="#uploading-assets">Uploading assets</a><ul><li><a href="#listeners">Listeners</a></li><li><a href="#response">Response</a></li><li><a href="#setup-dropzone">Setup Dropzone</a></li></ul></li><li><a href="#events">Events</a></li></ul></div><p></p><h2 id="configuration"><a href="#configuration" aria-hidden="true" class="header-anchor">#</a> Configuration</h2><p>To change default configurations you have to pass <code>assetManager</code> property with the main configuration object</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="active sidebar-link">Asset Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#configuration" class="sidebar-link">Configuration</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#initialization" class="sidebar-link">Initialization</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#customization" class="sidebar-link">Customization</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#uploading-assets" class="sidebar-link">Uploading assets</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Assets.html#events" class="sidebar-link">Events</a></li></ul></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="asset-manager"><a href="#asset-manager" aria-hidden="true" class="header-anchor">#</a> Asset Manager</h1><p align="center"><img src="http://grapesjs.com/img/sc-grapesjs-assets-1.jpg" alt="GrapesJS - Asset Manager" align="center"></p><p>In this section, you will see how to setup and take the full advantage of built-in Asset Manager in GrapesJS. The Asset Manager is lightweight and implements just an <code>image</code> in its core, but as you'll see next it's easy to extend and create your own asset types.</p><p></p><div class="table-of-contents"><ul><li><a href="#configuration">Configuration</a></li><li><a href="#initialization">Initialization</a></li><li><a href="#customization">Customization</a><ul><li><a href="#define-new-asset-type">Define new Asset type</a></li><li><a href="#extend-asset-types">Extend Asset Types</a></li></ul></li><li><a href="#uploading-assets">Uploading assets</a><ul><li><a href="#listeners">Listeners</a></li><li><a href="#response">Response</a></li><li><a href="#setup-dropzone">Setup Dropzone</a></li></ul></li><li><a href="#events">Events</a></li></ul></div><p></p><h2 id="configuration"><a href="#configuration" aria-hidden="true" class="header-anchor">#</a> Configuration</h2><p>To change default configurations you'll have to pass <code>assetManager</code> property with the main configuration object</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
assets<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token operator">...</span><span class="token punctuation">]</span><span class="token punctuation">,</span> assets<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token operator">...</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
@ -35,7 +35,7 @@
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>You can update most of them later by using <code>getConfig</code> inside of the module</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> amConfig <span class="token operator">=</span> editor<span class="token punctuation">.</span>AssetManager<span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre></div><p>You can update most of them later by using <code>getConfig</code> inside of the module</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> amConfig <span class="token operator">=</span> editor<span class="token punctuation">.</span>AssetManager<span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Below the list of currently available options</p><div class="language-js extra-class"><pre class="language-js"><code> <span class="token comment">// Default assets</span> </code></pre></div><p>Below is a list of currently available options</p><div class="language-js extra-class"><pre class="language-js"><code> <span class="token comment">// Default assets</span>
<span class="token comment">// eg. [</span> <span class="token comment">// eg. [</span>
<span class="token comment">// 'https://...image1.png',</span> <span class="token comment">// 'https://...image1.png',</span>
<span class="token comment">// 'https://...image2.png',</span> <span class="token comment">// 'https://...image2.png',</span>
@ -116,7 +116,7 @@
<span class="token comment">// Default title for the asset manager modal</span> <span class="token comment">// Default title for the asset manager modal</span>
modalTitle<span class="token punctuation">:</span> <span class="token string">'Select Image'</span><span class="token punctuation">,</span> modalTitle<span class="token punctuation">:</span> <span class="token string">'Select Image'</span><span class="token punctuation">,</span>
</code></pre></div><p>Not always docs are in inline with its code, therefore we'd suggest to keep an eye at the current state of configurations by checking the dedicated source file <a href="https://github.com/artf/grapesjs/blob/dev/src/asset_manager/config/config.js" target="_blank" rel="noopener noreferrer">Asset Manager Config<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><h2 id="initialization"><a href="#initialization" aria-hidden="true" class="header-anchor">#</a> Initialization</h2><p>The Asset Manager is ready to work by default, so just pass few urls to see them loaded</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><p>Sometimes the code gets ahead of the docs, therefore we'd suggest to keep an eye at the current state of configurations by checking the dedicated source file <a href="https://github.com/artf/grapesjs/blob/dev/src/asset_manager/config/config.js" target="_blank" rel="noopener noreferrer">Asset Manager Config<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><h2 id="initialization"><a href="#initialization" aria-hidden="true" class="header-anchor">#</a> Initialization</h2><p>The Asset Manager is ready to work by default, so pass few URLs to see them loaded</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
assets<span class="token punctuation">:</span> <span class="token punctuation">[</span> assets<span class="token punctuation">:</span> <span class="token punctuation">[</span>
@ -138,7 +138,7 @@
<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>If you want a complete list of available properties check the source <a href="https://github.com/artf/grapesjs/blob/dev/src/asset_manager/model/AssetImage.js" target="_blank" rel="noopener noreferrer">AssetImage Model<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><p>The built-in Asset Manager modal is implemented and is showing up when requested. By default, you can make it appear by dragging Image Components in canvas, double clicking on images and all other stuff related to images (eg. CSS styling)</p><img src="/docs/assets-builtin-modal.png"><p>Showing up of the modal is registered with a command, so you can make it appear with this</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// This command shows only assets with `image` type</span> </code></pre></div><p>If you want a complete list of available properties check out the source <a href="https://github.com/artf/grapesjs/blob/dev/src/asset_manager/model/AssetImage.js" target="_blank" rel="noopener noreferrer">AssetImage Model<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p><p>The built-in Asset Manager modal is implemented and is showing up when requested. By default, you can make it appear by dragging Image Components in canvas, double clicking on images and all other stuff related to images (eg. CSS styling)</p><img src="/docs/assets-builtin-modal.png"><p>Making the modal appear is registered with a command, so you can make it appear with this</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// This command shows only assets with `image` type</span>
editor<span class="token punctuation">.</span><span class="token function">runCommand</span><span class="token punctuation">(</span><span class="token string">'open-assets'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> editor<span class="token punctuation">.</span><span class="token function">runCommand</span><span class="token punctuation">(</span><span class="token string">'open-assets'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Worth nothing that by doing this you can't do much with assets (if you double click on them nothing happens) and this is because you've not indicated any target. Try just to select an image in your canvas and run this in console (you should first make the editor globally available <code>window.editor = editor;</code> in your script)</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span><span class="token function">runCommand</span><span class="token punctuation">(</span><span class="token string">'open-assets'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><p>Worth nothing that by doing this you can't do much with assets (if you double click on them nothing happens) and this is because you've not indicated any target. Try just to select an image in your canvas and run this in console (you should first make the editor globally available <code>window.editor = editor;</code> in your script)</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span><span class="token function">runCommand</span><span class="token punctuation">(</span><span class="token string">'open-assets'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
target<span class="token punctuation">:</span> editor<span class="token punctuation">.</span><span class="token function">getSelected</span><span class="token punctuation">(</span><span class="token punctuation">)</span> target<span class="token punctuation">:</span> editor<span class="token punctuation">.</span><span class="token function">getSelected</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
@ -159,7 +159,7 @@ editor<span class="token punctuation">.</span><span class="token function">runCo
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Now if you call the <code>render()</code>, without any argument, you will see all the assets rendered</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// without any argument</span> </code></pre></div><p>Now if you call the <code>render()</code>, without an argument, you will see all the assets rendered</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// without any argument</span>
am<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> am<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
am<span class="token punctuation">.</span><span class="token function">getAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token comment">// &lt;- 3</span> am<span class="token punctuation">.</span><span class="token function">getAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token comment">// &lt;- 3</span>
@ -172,9 +172,9 @@ am<span class="token punctuation">.</span><span class="token function">render</s
am<span class="token punctuation">.</span><span class="token function">getAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token comment">// Still have 3 assets</span> am<span class="token punctuation">.</span><span class="token function">getAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token comment">// Still have 3 assets</span>
am<span class="token punctuation">.</span><span class="token function">getAllVisible</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token comment">// but only 2 are shown</span> am<span class="token punctuation">.</span><span class="token function">getAllVisible</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length <span class="token comment">// but only 2 are shown</span>
</code></pre></div><p>Obviously, you can mix more arrays of assets</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token operator">...</span>assets1<span class="token punctuation">,</span> <span class="token operator">...</span>assets2<span class="token punctuation">,</span> <span class="token operator">...</span>assets3<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre></div><p>You can also mix arrays of assets</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token operator">...</span>assets1<span class="token punctuation">,</span> <span class="token operator">...</span>assets2<span class="token punctuation">,</span> <span class="token operator">...</span>assets3<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>If you want to customize the asset manager container you can get its <code>HTMLElement</code></p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">getContainer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">insertAdjacentHTML</span><span class="token punctuation">(</span><span class="token string">'afterbegin'</span><span class="token punctuation">,</span> <span class="token string">'&lt;div&gt;&lt;button type=&quot;button&quot;&gt;Click&lt;/button&gt;&lt;/div&gt;'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre></div><p>If you want to customize the asset manager container you can get its <code>HTMLElement</code></p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">getContainer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">insertAdjacentHTML</span><span class="token punctuation">(</span><span class="token string">'afterbegin'</span><span class="token punctuation">,</span> <span class="token string">'&lt;div&gt;&lt;button type=&quot;button&quot;&gt;Click&lt;/button&gt;&lt;/div&gt;'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>For more APIs methods check out the <a href="API-Asset-Manager">API Reference</a></p><h3 id="define-new-asset-type"><a href="#define-new-asset-type" aria-hidden="true" class="header-anchor">#</a> Define new Asset type</h3><p>Generally speaking, an asset is not only an image, it could be a <code>video</code>, <code>svg-icon</code>, or any other kind of <code>document</code>. Each type of the asset is applied in our templates/pages differently. If you need to change the image of the Component all you need is another <code>url</code> in <code>src</code> attribute, but in case of <code>svg-icon</code>, for instance, its not the same, you might want to replace the element with a new <code>&lt;svg&gt;</code> content. Besides this you also have to deal with the presentation/preview of the asset inside the panel/modal, like for example showing a thumbnail for big images or the possibility to preview videos.</p><p>Defining a new asset it means we have to push on top of the 'Stack of Types' a new layer. This stack is iterated by the editor at any addition of the asset and tries to associate the correct type.</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'https://.../image.png'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre></div><p>For more APIs methods check out the <a href="API-Asset-Manager">API Reference</a></p><h3 id="define-new-asset-type"><a href="#define-new-asset-type" aria-hidden="true" class="header-anchor">#</a> Define new Asset type</h3><p>Generally speaking, images aren't the only asset you'll use, it could be a <code>video</code>, <code>svg-icon</code>, or any other kind of <code>document</code>. Each type of asset is applied in our templates/pages differently. If you need to change the image of the Component all you need is another <code>url</code> in <code>src</code> attribute. However In case of a <code>svg-icon</code>, its not the same, you might want to replace the element with a new <code>&lt;svg&gt;</code> content. Besides this you also have to deal with the presentation/preview of the asset inside the panel/modal. For example, showing a thumbnail for big images or the possibility to preview videos.</p><p>Defining a new asset it means we have to push on top of the 'Stack of Types' a new layer. This stack is iterated over by the editor at any addition of the asset and tries to associate the correct type.</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'https://.../image.png'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// string, url, ends with '.png' -&gt; it's an 'image' type</span> <span class="token comment">// string, url, ends with '.png' -&gt; it's an 'image' type</span>
am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'&lt;svg ...'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'&lt;svg ...'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -182,7 +182,7 @@ am<span class="token punctuation">.</span><span class="token function">add</span
am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token punctuation">{</span>type<span class="token punctuation">:</span> <span class="token string">'video'</span><span class="token punctuation">,</span> src<span class="token punctuation">:</span> <span class="token string">'...'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token punctuation">{</span>type<span class="token punctuation">:</span> <span class="token string">'video'</span><span class="token punctuation">,</span> src<span class="token punctuation">:</span> <span class="token string">'...'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// an object, has 'video' type key -&gt; 'video' type</span> <span class="token comment">// an object, has 'video' type key -&gt; 'video' type</span>
</code></pre></div><p>Obviously, it's up to you tell the editor how to recognize your type and for this purpose you have to use <code>isType()</code> method. </code></pre></div><p>It's up to you tell the editor how to recognize your type and for this purpose you should to use <code>isType()</code> method.
Let's see now an example of how we'd start to defining a type like <code>svg-icon</code></p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> Let's see now an example of how we'd start to defining a type like <code>svg-icon</code></p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token comment">// `value` is for example the argument passed in `am.add(VALUE);`</span> <span class="token comment">// `value` is for example the argument passed in `am.add(VALUE);`</span>
<span class="token function">isType</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">isType</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token punctuation">{</span>
@ -199,7 +199,7 @@ Let's see now an example of how we'd start to defining a type like <code>svg-ico
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><p>With this snippet you can already add SVGs, the asset manager will assign correctly the appropriate type.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Add some random SVG</span> </code></pre></div><p>With this snippet you can already add SVGs, the asset manager will assign the appropriate type.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Add some random SVG</span>
am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`&lt;svg viewBox=&quot;0 0 24 24&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; am<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`&lt;svg viewBox=&quot;0 0 24 24&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
&lt;path d=&quot;M22,9 C22,8.4 21.5,8 20.75,8 L3.25,8 C2.5,8 2,8.4 2,9 L2,15 C2,15.6 2.5,16 3.25,16 L20.75,16 C21.5,16 22,15.6 22,15 L22,9 Z M21,15 L3,15 L3,9 L21,9 L21,15 Z&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M22,9 C22,8.4 21.5,8 20.75,8 L3.25,8 C2.5,8 2,8.4 2,9 L2,15 C2,15.6 2.5,16 3.25,16 L20.75,16 C21.5,16 22,15.6 22,15 L22,9 Z M21,15 L3,15 L3,9 L21,9 L21,15 Z&quot;&gt;&lt;/path&gt;
&lt;polygon points=&quot;4 10 5 10 5 14 4 14&quot;&gt;&lt;/polygon&gt; &lt;polygon points=&quot;4 10 5 10 5 14 4 14&quot;&gt;&lt;/polygon&gt;
@ -207,7 +207,7 @@ am<span class="token punctuation">.</span><span class="token function">add</span
</code></pre></div><p>The default <code>open-assets</code> command shows only <code>image</code> assets, so to render <code>svg-icon</code> run this</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span>am<span class="token punctuation">.</span><span class="token function">getAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span> </code></pre></div><p>The default <code>open-assets</code> command shows only <code>image</code> assets, so to render <code>svg-icon</code> run this</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span>am<span class="token punctuation">.</span><span class="token function">getAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span>
asset <span class="token operator">=&gt;</span> asset<span class="token punctuation">.</span><span class="token keyword">get</span><span class="token punctuation">(</span><span class="token string">'type'</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'svg-icon'</span> asset <span class="token operator">=&gt;</span> asset<span class="token punctuation">.</span><span class="token keyword">get</span><span class="token punctuation">(</span><span class="token string">'type'</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">'svg-icon'</span>
<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>You should see something like this</p><img src="/docs/assets-empty-view.png"><p>The SVG asset is not correctly rendered and this is because we haven't yet configured its view</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><p>You should see something like this</p><img src="/docs/assets-empty-view.png"><p>The SVG asset is not rendered correctly and this is because we haven't yet configured its view</p><div class="language-js extra-class"><pre class="language-js"><code>am<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
view<span class="token punctuation">:</span> <span class="token punctuation">{</span> view<span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token comment">// `getPreview()` and `getInfo()` are just few helpers, you can</span> <span class="token comment">// `getPreview()` and `getInfo()` are just few helpers, you can</span>
<span class="token comment">// override the entire template with `template()`</span> <span class="token comment">// override the entire template with `template()`</span>
@ -250,7 +250,7 @@ am<span class="token punctuation">.</span><span class="token function">add</span
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token function">isType</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span> <span class="token function">isType</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><p>Our custom <code>svg-icon</code> asset is ready to use, you can also add a <code>model</code> to the <code>addType</code> definition which should group the business logic of your asset but usually it's optional so you can skip this part.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Just an example of model use</span> </code></pre></div><p>Our custom <code>svg-icon</code> asset is ready to use. You can also add a <code>model</code> to the <code>addType</code> definition to group the business logic of your asset, but usually it's optional.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Just an example of model use</span>
am<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> am<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
model<span class="token punctuation">:</span> <span class="token punctuation">{</span> model<span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token comment">// With `default` you define model's default properties</span> <span class="token comment">// With `default` you define model's default properties</span>
@ -269,7 +269,7 @@ am<span class="token punctuation">.</span><span class="token function">addType</
view<span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">,</span> view<span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token function">isType</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span> <span class="token function">isType</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><h3 id="extend-asset-types"><a href="#extend-asset-types" aria-hidden="true" class="header-anchor">#</a> Extend Asset Types</h3><p>Extending asset types is basically the same as adding them, you can just choose what type to extend and how.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// svgIconType will contain the definition (model, view, isType)</span> </code></pre></div><h3 id="extend-asset-types"><a href="#extend-asset-types" aria-hidden="true" class="header-anchor">#</a> Extend Asset Types</h3><p>Extending asset types is basically the same as adding them, you can choose what type to extend and how.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// svgIconType will contain the definition (model, view, isType)</span>
<span class="token keyword">const</span> svgIconType <span class="token operator">=</span> am<span class="token punctuation">.</span><span class="token function">getType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> svgIconType <span class="token operator">=</span> am<span class="token punctuation">.</span><span class="token function">getType</span><span class="token punctuation">(</span><span class="token string">'svg-icon'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Add new type and extend another one</span> <span class="token comment">// Add new type and extend another one</span>
@ -304,7 +304,7 @@ am<span class="token punctuation">.</span><span class="token function">addType</
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><h2 id="uploading-assets"><a href="#uploading-assets" aria-hidden="true" class="header-anchor">#</a> Uploading assets</h2><p>Asset Manager includes an easy to use, drag and drop, uploader and integrates few UI helpers. The default uploader is already visible when you open the Asset Manager.</p><img src="/docs/assets-uploader.png"><p>You can click on the uploader to start select your files or just drag them directly from your computer to trigger the uploader. Obviously, before make it work you have to setup your server in order to receive your assets and specify the upload endpoint in configurations</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">let</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><h2 id="uploading-assets"><a href="#uploading-assets" aria-hidden="true" class="header-anchor">#</a> Uploading assets</h2><p>Asset Manager includes an easy to use, drag-and-drop uploader with a few UI helpers. The default uploader is already visible when you open the Asset Manager.</p><img src="/docs/assets-uploader.png"><p>You can click on the uploader to select your files or just drag them directly from your computer to trigger the uploader. Obviously, before it will work you have to setup your server to receive your assets and specify the upload endpoint in your configuration</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">let</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
@ -317,7 +317,7 @@ am<span class="token punctuation">.</span><span class="token function">addType</
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="listeners"><a href="#listeners" aria-hidden="true" class="header-anchor">#</a> Listeners</h3><p>If you want to execute some action before/after the uploading process (eg. loading animation) or even on response, you can make use of these listeners</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// The upload is started</span> </code></pre></div><h3 id="listeners"><a href="#listeners" aria-hidden="true" class="header-anchor">#</a> Listeners</h3><p>If you want to execute an action before/after the uploading process (eg. loading animation) or even on response, you can make use of these listeners</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// The upload is started</span>
editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'asset:upload:start'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span> editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'asset:upload:start'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token function">startAnimation</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">startAnimation</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -339,7 +339,7 @@ editor<span class="token punctuation">.</span><span class="token function">on</s
editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'asset:upload:response'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>response<span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span> editor<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'asset:upload:response'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>response<span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="response"><a href="#response" aria-hidden="true" class="header-anchor">#</a> Response</h3><p>When the uploading is over, by default (via config parameter <code>autoAdd: 1</code>), the editor expects to receive a JSON of uploaded assets in a <code>data</code> key as a response and tries to add them to the main collection. The JSON might look like this:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token punctuation">{</span> </code></pre></div><h3 id="response"><a href="#response" aria-hidden="true" class="header-anchor">#</a> Response</h3><p>When the uploading is over, by default (via config parameter <code>autoAdd: 1</code>), the editor expects to receive a JSON blob of uploaded assets in a <code>data</code> key as a response and tries to add them to the main collection. The JSON might look like this:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token punctuation">{</span>
data<span class="token punctuation">:</span> <span class="token punctuation">[</span> data<span class="token punctuation">:</span> <span class="token punctuation">[</span>
<span class="token string">'https://.../image.png'</span><span class="token punctuation">,</span> <span class="token string">'https://.../image.png'</span><span class="token punctuation">,</span>
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
@ -352,7 +352,7 @@ editor<span class="token punctuation">.</span><span class="token function">on</s
<span class="token comment">// ...</span> <span class="token comment">// ...</span>
<span class="token punctuation">]</span> <span class="token punctuation">]</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</code></pre></div><h3 id="setup-dropzone"><a href="#setup-dropzone" aria-hidden="true" class="header-anchor">#</a> Setup Dropzone</h3><p>There is also another helper which improve the uploading of assets, a full-width editor dropzone.</p><img src="/docs/assets-full-dropzone.gif"><p>All you have to do is to activate it and possibly set a custom content (you might also want to hide the default uploader)</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><h3 id="setup-dropzone"><a href="#setup-dropzone" aria-hidden="true" class="header-anchor">#</a> Setup Dropzone</h3><p>There is another helper which improves the uploading of assets: A full-width editor dropzone.</p><img src="/docs/assets-full-dropzone.gif"><p>All you have to do is to activate it and possibly set a custom content (you might also want to hide the default uploader)</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span> assetManager<span class="token punctuation">:</span> <span class="token punctuation">{</span>
<span class="token operator">...</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token punctuation">,</span>
@ -360,13 +360,13 @@ editor<span class="token punctuation">.</span><span class="token function">on</s
dropzoneContent<span class="token punctuation">:</span> <span class="token string">'&lt;div class=&quot;dropzone-inner&quot;&gt;Drop here your assets&lt;/div&gt;'</span> dropzoneContent<span class="token punctuation">:</span> <span class="token string">'&lt;div class=&quot;dropzone-inner&quot;&gt;Drop here your assets&lt;/div&gt;'</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h2 id="events"><a href="#events" aria-hidden="true" class="header-anchor">#</a> Events</h2><p>Currently available events you can listen to</p><ul><li><code>asset:add</code> - New asset added</li><li><code>asset:remove</code> - Asset removed</li><li><code>asset:upload:start</code> - Before the upload is started</li><li><code>asset:upload:end</code> - After the upload is ended</li><li><code>asset:upload:error</code> - On any error in upload, passes the error as an argument</li><li><code>asset:upload:response</code> - On upload response, passes the result as an argument</li></ul></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Assets.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">9/17/2018, 3:16:58 AM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> </code></pre></div><h2 id="events"><a href="#events" aria-hidden="true" class="header-anchor">#</a> Events</h2><p>Currently available events you can listen to</p><ul><li><code>asset:add</code> - New asset added</li><li><code>asset:remove</code> - Asset removed</li><li><code>asset:upload:start</code> - Before the upload is started</li><li><code>asset:upload:end</code> - After the upload is ended</li><li><code>asset:upload:error</code> - On any error in upload, passes the error as an argument</li><li><code>asset:upload:response</code> - On upload response, passes the result as an argument</li></ul></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Assets.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">10/26/2018, 1:52:41 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/getting-started.html" class="prev"> ← <a href="/docs/getting-started.html" class="prev">
Getting Started Getting Started
</a></span><span class="next"><a href="/docs/modules/Blocks.html"> </a></span><span class="next"><a href="/docs/modules/Blocks.html">
Block Manager Block Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/35.0110eaf1.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/35.42f094c9.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

16
docs/modules/Blocks.html

@ -6,10 +6,10 @@
<title>Block Manager | GrapesJS</title> <title>Block Manager | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/36.01a0fc2b.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/36.dcbc999c.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,7 +27,7 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="active sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="block-manager"><a href="#block-manager" aria-hidden="true" class="header-anchor">#</a> Block Manager</h1><p align="center"><img src="http://grapesjs.com/img/sc-grapesjs-blocks-prp.jpg" alt="GrapesJS - Block Manager" height="400" align="center"></p><p>The Block is a group of <a href="Components">Components</a> and can be easily reused inside templates.</p><p>To better understand the difference between components and blocks, the component is more atomic so, for example, a single image, a text box or a map fits perfectly in this concept. The block is what the end user will drag inside the canvas, so it could contain a single image (single Component) or the entire section like, for example, the footer with a lot of components inside (texts, images, inputs, etc).</p><p>Check <a href="Components">Components</a> page to see the list of built-in components and how to create your own.</p><p>Let's see how to add a new block to the editor using the <a href="API-Block-Manager">Blocks API</a></p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="active sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="block-manager"><a href="#block-manager" aria-hidden="true" class="header-anchor">#</a> Block Manager</h1><p align="center"><img src="http://grapesjs.com/img/sc-grapesjs-blocks-prp.jpg" alt="GrapesJS - Block Manager" height="400" align="center"></p><p>The Block is a group of <a href="/docs/modules/Components.html">Components</a> and can be easily reused inside templates.</p><p>The difference between components and blocks: The component is more atomic, so a single image, a text box or a map is a component. The block is what the end user will drag inside the canvas, so it could contain a single image (single Component) or the entire section like, for example, the footer with a lot of components inside (texts, images, inputs, etc).</p><p>Check out the <a href="/docs/modules/Components.html">Components</a> page to see the list of built-in components and how to create your own.</p><p>Let's see how to add a new block to the editor using the <a href="/docs/api/block_manager.html">Blocks API</a></p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> blockManager <span class="token operator">=</span> editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">;</span> <span class="token keyword">var</span> blockManager <span class="token operator">=</span> editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">;</span>
<span class="token comment">// 'my-first-block' is the ID of the block</span> <span class="token comment">// 'my-first-block' is the ID of the block</span>
@ -42,7 +42,7 @@ blockManager<span class="token punctuation">.</span><span class="token function"
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><p>As you see a simple HTML string is enough to create a block, the editor will do the rest. </code></pre></div><p>As you see a simple HTML string is enough to create a block, the editor will do the rest.
If you want you could also pass an object representing the <a href="Component">Component</a>.</p><div class="language-js extra-class"><pre class="language-js"><code>blockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'my-map-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> If you want you could also pass an object representing the <a href="/docs/api/component.html">Component</a>.</p><div class="language-js extra-class"><pre class="language-js"><code>blockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'my-map-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
label<span class="token punctuation">:</span> <span class="token string">'Simple map block'</span><span class="token punctuation">,</span> label<span class="token punctuation">:</span> <span class="token string">'Simple map block'</span><span class="token punctuation">,</span>
content<span class="token punctuation">:</span> <span class="token punctuation">{</span> content<span class="token punctuation">:</span> <span class="token punctuation">{</span>
type<span class="token punctuation">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span> <span class="token comment">// Built-in 'map' component</span> type<span class="token punctuation">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span> <span class="token comment">// Built-in 'map' component</span>
@ -52,7 +52,7 @@ If you want you could also pass an object representing the <a href="Component">C
removable<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token comment">// Once inserted it can't be removed</span> removable<span class="token punctuation">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token comment">// Once inserted it can't be removed</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><p>From the v0.3.70 it's also possible to pass the HTML string with Component's properties as attributes.</p><div class="language-js extra-class"><pre class="language-js"><code>blockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'the-row-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><p>From v0.3.70 it's also possible to pass the HTML string with Component's properties as attributes.</p><div class="language-js extra-class"><pre class="language-js"><code>blockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'the-row-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
label<span class="token punctuation">:</span> <span class="token string">'2 Columns'</span><span class="token punctuation">,</span> label<span class="token punctuation">:</span> <span class="token string">'2 Columns'</span><span class="token punctuation">,</span>
content<span class="token punctuation">:</span> <span class="token string">'&lt;div class=&quot;row&quot; data-gjs-droppable=&quot;.row-cell&quot; data-gjs-custom-name=&quot;Row&quot;&gt;'</span> <span class="token operator">+</span> content<span class="token punctuation">:</span> <span class="token string">'&lt;div class=&quot;row&quot; data-gjs-droppable=&quot;.row-cell&quot; data-gjs-custom-name=&quot;Row&quot;&gt;'</span> <span class="token operator">+</span>
<span class="token string">'&lt;div class=&quot;row-cell&quot; data-gjs-draggable=&quot;.row&quot;&gt;&lt;/div&gt;'</span> <span class="token operator">+</span> <span class="token string">'&lt;div class=&quot;row-cell&quot; data-gjs-draggable=&quot;.row&quot;&gt;&lt;/div&gt;'</span> <span class="token operator">+</span>
@ -61,13 +61,13 @@ If you want you could also pass an object representing the <a href="Component">C
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>In the example above you're defining a row component which will accept only elements which match '.row-cell' selector and cells which could be dragged only inside '.row' elements. We're also defining the custom name which will be seen inside the Layers panel. </code></pre></div><p>In the example above you're defining a row component which will accept only elements which match '.row-cell' selector and cells which could be dragged only inside '.row' elements. We're also defining the custom name which will be seen inside the Layers panel.
If you want to check the complete list of available Component's properties, check directly the Component model source: If you want to check the complete list of available Component's properties, check directly the Component model source:
https://github.com/artf/grapesjs/blob/dev/src/dom_components/model/Component.js</p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Blocks.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/10/2018, 2:27:13 AM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> <a href="https://github.com/artf/grapesjs/blob/dev/src/dom_components/model/Component.js" target="_blank" rel="noopener noreferrer">https://github.com/artf/grapesjs/blob/dev/src/dom_components/model/Component.js<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Blocks.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">11/3/2018, 1:07:59 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/modules/Assets.html" class="prev"> ← <a href="/docs/modules/Assets.html" class="prev">
Asset Manager Asset Manager
</a></span><span class="next"><a href="/docs/modules/Components.html"> </a></span><span class="next"><a href="/docs/modules/Components.html">
Component Manager Component Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/36.01a0fc2b.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/36.dcbc999c.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

34
docs/modules/Components-js.html

@ -6,10 +6,10 @@
<title>Components &amp; JS | GrapesJS</title> <title>Components &amp; JS | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/37.8c59c319.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/37.81b50f4e.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,7 +27,7 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="active sidebar-link">Components &amp; JS</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Components-js.html#basic-scripts" class="sidebar-link">Basic scripts</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components-js.html#dependencies" class="sidebar-link">Dependencies</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components-js.html#examples" class="sidebar-link">Examples</a></li></ul></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="components-js"><a href="#components-js" aria-hidden="true" class="header-anchor">#</a> Components &amp; JS</h1><p>In this guide you'll see how to attach component related scripts and deal with external javascript libraries (for stuff like counters, galleries, slideshows, etc.)</p><p></p><div class="table-of-contents"><ul><li><a href="#basic-scripts">Basic scripts</a></li><li><a href="#dependencies">Dependencies</a><ul><li><a href="#component-related">Component related</a></li><li><a href="#template-related">Template related</a></li></ul></li><li><a href="#examples">Examples</a></li></ul></div><p></p><h2 id="basic-scripts"><a href="#basic-scripts" aria-hidden="true" class="header-anchor">#</a> Basic scripts</h2><p>Let's see how to create a component with scripts using Blocks.</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="active sidebar-link">Components &amp; JS</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Components-js.html#basic-scripts" class="sidebar-link">Basic scripts</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components-js.html#dependencies" class="sidebar-link">Dependencies</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components-js.html#examples" class="sidebar-link">Examples</a></li></ul></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="components-js"><a href="#components-js" aria-hidden="true" class="header-anchor">#</a> Components &amp; JS</h1><p>In this guide you'll see how to attach component related scripts and deal with external JavaScript libraries (for stuff like counters, galleries, slideshows, etc.)</p><p></p><div class="table-of-contents"><ul><li><a href="#basic-scripts">Basic scripts</a></li><li><a href="#dependencies">Dependencies</a><ul><li><a href="#component-related">Component related</a></li><li><a href="#template-related">Template related</a></li></ul></li><li><a href="#examples">Examples</a></li></ul></div><p></p><h2 id="basic-scripts"><a href="#basic-scripts" aria-hidden="true" class="header-anchor">#</a> Basic scripts</h2><p>Let's see how to create a component with scripts using Blocks.</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
label<span class="token punctuation">:</span> <span class="token string">'Test block'</span><span class="token punctuation">,</span> label<span class="token punctuation">:</span> <span class="token string">'Test block'</span><span class="token punctuation">,</span>
attributes<span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token keyword">class</span><span class="token punctuation">:</span> <span class="token string">'fa fa-text'</span><span class="token punctuation">}</span><span class="token punctuation">,</span> attributes<span class="token punctuation">:</span> <span class="token punctuation">{</span><span class="token keyword">class</span><span class="token punctuation">:</span> <span class="token string">'fa fa-text'</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
content<span class="token punctuation">:</span> <span class="token punctuation">{</span> content<span class="token punctuation">:</span> <span class="token punctuation">{</span>
@ -40,8 +40,8 @@
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Now if you drag the new block inside the canvas you'll see an alert popup and the message in console, as you might expected. </code></pre></div><p>Now if you drag the new block inside the canvas you'll see an alert and the message in console, as you might expect.
One thing worth noting is that <code>this</code> context is binded to the component element, so, for example, if you want to change some property you'd do <code>this.innerHTML = 'inner content'</code>.</p><p>One thing you should take in account is how the script is binded to component once rendered in the canvas or in your final template. If you check now the generated HTML coded by the editor (via Export button or <code>editor.getHtml()</code>), you might see something like this:</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>c764<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> One thing worth noting is that <code>this</code> context is bound to the component element, so if you wanted to change a property you'd do <code>this.innerHTML = 'inner content'</code>.</p><p>One thing you should take in account is how the script is bound to component once rendered in the canvas or in your final template. If you check now the generated HTML coded by the editor (via Export button or <code>editor.getHtml()</code>), you might see something like this:</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>c764<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript"> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript">
<span class="token keyword">var</span> items <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelectorAll</span><span class="token punctuation">(</span><span class="token string">'#c764'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> items <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelectorAll</span><span class="token punctuation">(</span><span class="token string">'#c764'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> len <span class="token operator">=</span> items<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator">&lt;</span> len<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> len <span class="token operator">=</span> items<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator">&lt;</span> len<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
@ -66,7 +66,7 @@ One thing worth noting is that <code>this</code> context is binded to the compon
<span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span> </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><p>Keep in mind that all component scripts are executed only inside the iframe of the canvas (isolated, just like your final template), therefore are NOT part of the current <code>document</code> and all your external libraries (eg. JQuery) are not there, but you'll see further how to manage scripted components with dependencies.</p><p>One thing you might be concerned about is a string used for the <code>script</code>, definitely not the best way to deal with a code, for this reason GrapesJS is able also to handle functions for you, so the previous example might look like this:</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><p>Keep in mind that all component scripts are executed only inside the iframe of the canvas (isolated, just like your final template), and therefore are NOT part of the current <code>document</code>. All your external libraries (eg. jQuery) are not there, but you'll see later how to manage scripted components with dependencies.</p><p>One thing you might be concerned about is a string used for the <code>script</code>, definitely not the best way to deal with a code, for this reason GrapesJS is able also to handle functions for you, so the previous example might look like this:</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
content<span class="token punctuation">:</span> <span class="token punctuation">{</span> content<span class="token punctuation">:</span> <span class="token punctuation">{</span>
script<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> script<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
@ -76,7 +76,7 @@ One thing worth noting is that <code>this</code> context is binded to the compon
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Much easier now, but be aware of a string conversion, you can't use variables outside of the function scope, let's see this scenario</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> myVar <span class="token operator">=</span> <span class="token string">'John'</span><span class="token punctuation">;</span> </code></pre></div><p>This is much better, but be aware of a string conversion, you can't use variables outside of the function scope. Take a look at this scenario:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> myVar <span class="token operator">=</span> <span class="token string">'John'</span><span class="token punctuation">;</span>
editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
@ -86,7 +86,7 @@ editor<span class="token punctuation">.</span>BlockManager<span class="token pun
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Unfortunately, this won't work as you'll get undefined <code>myVar</code> error. The final HTML, with script functions converted to string, will look like this:</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>c764<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> </code></pre></div><p>Unfortunately, this won't work. You'll get an undefined <code>myVar</code> error. The final HTML, with script functions converted to string, will look like this:</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>c764<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript"> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript">
<span class="token keyword">var</span> items <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelectorAll</span><span class="token punctuation">(</span><span class="token string">'#c764'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> items <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">querySelectorAll</span><span class="token punctuation">(</span><span class="token string">'#c764'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> len <span class="token operator">=</span> items<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator">&lt;</span> len<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> len <span class="token operator">=</span> items<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i <span class="token operator">&lt;</span> len<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
@ -98,7 +98,7 @@ editor<span class="token punctuation">.</span>BlockManager<span class="token pun
<span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span> </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><p>There is actually a solution to make your scripts behave dynamically, you can interpolate properties of the component model.</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><p>There is a solution to make your scripts behave dynamically. You can interpolate properties of the component model.</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>BlockManager<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'test-block'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
content<span class="token punctuation">:</span> <span class="token punctuation">{</span> content<span class="token punctuation">:</span> <span class="token punctuation">{</span>
myModelPropName<span class="token punctuation">:</span> <span class="token string">'John'</span><span class="token punctuation">,</span> myModelPropName<span class="token punctuation">:</span> <span class="token string">'John'</span><span class="token punctuation">,</span>
@ -119,16 +119,16 @@ editor<span class="token punctuation">.</span>BlockManager<span class="token pun
<span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span> </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><p>You can even change tags used for the interpolation</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><p>You can even change the tags used for the interpolation</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token comment">// Default values</span> <span class="token comment">// Default values</span>
tagVarStart<span class="token punctuation">:</span> <span class="token string">'{[ '</span><span class="token punctuation">,</span> tagVarStart<span class="token punctuation">:</span> <span class="token string">'{[ '</span><span class="token punctuation">,</span>
tagVarEnd<span class="token punctuation">:</span> <span class="token string">' ]}'</span><span class="token punctuation">,</span> tagVarEnd<span class="token punctuation">:</span> <span class="token string">' ]}'</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>You can use this technique with <a href="https://github.com/artf/grapesjs/wiki/Traits#add-traits-to-components" target="_blank" rel="noopener noreferrer">property Traits<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> to create highly customizable components.</p><h2 id="dependencies"><a href="#dependencies" aria-hidden="true" class="header-anchor">#</a> Dependencies</h2><p>As we mentioned above, scripts are executed independently inside the iframe of the canvas, where you won't find any dependency, so exactly as the final HTML generated by the editor. </code></pre></div><p>You can use this technique with <a href="https://github.com/artf/grapesjs/wiki/Traits#add-traits-to-components" target="_blank" rel="noopener noreferrer">property Traits<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> to create custom components.</p><h2 id="dependencies"><a href="#dependencies" aria-hidden="true" class="header-anchor">#</a> Dependencies</h2><p>As we mentioned above, scripts are executed independently inside the iframe of the canvas, without any dependencies, so exactly as the final HTML generated by the editor.
If you want to make use of external libraries you have basically 2 types of approaches, component related and template related.</p><h3 id="component-related"><a href="#component-related" aria-hidden="true" class="header-anchor">#</a> Component related</h3><p>If you're building, for example, a slider component based on some third-party library you probably would like to include the external file only when the component is actually dragged inside the canvas, in this case, component related approaches is the perfect one as it's loading external libraries dynamically. If you want to make use of external libraries you have two approaches: component-related and template-related.</p><h3 id="component-related"><a href="#component-related" aria-hidden="true" class="header-anchor">#</a> Component related</h3><p>If you're building a slider component based on some third-party library you probably would like to include the external file only when the component is actually dragged inside the canvas. In this case, the component-related approach is the perfect one as it's loading external libraries dynamically.
All you have to do is to require the dependency when is needed and then call your script.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token operator">...</span> All you have to do is to require the dependency when it is needed and then call your script.</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token operator">...</span>
script<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> script<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">var</span> el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">;</span> <span class="token keyword">var</span> el <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> <span class="token function-variable function">initMySLider</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> <span class="token function-variable function">initMySLider</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
@ -143,7 +143,7 @@ script<span class="token punctuation">:</span> <span class="token keyword">funct
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
</code></pre></div><h3 id="template-related"><a href="#template-related" aria-hidden="true" class="header-anchor">#</a> Template related</h3><p>Some dependency might be highly used along all your components (eg. JQuery) so instead requiring it inside each script you might want to inject it directly inside the canvas:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span> </code></pre></div><h3 id="template-related"><a href="#template-related" aria-hidden="true" class="header-anchor">#</a> Template related</h3><p>A dependency might be used along all your components (eg. JQuery) so instead requiring it inside each script you might want to inject it directly inside the canvas:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
canvas<span class="token punctuation">:</span> <span class="token punctuation">{</span> canvas<span class="token punctuation">:</span> <span class="token punctuation">{</span>
scripts<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'</span><span class="token punctuation">]</span> scripts<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">'https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'</span><span class="token punctuation">]</span>
@ -156,13 +156,13 @@ script<span class="token punctuation">:</span> <span class="token keyword">funct
<span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'...'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'...'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
</code></pre></div><h2 id="examples"><a href="#examples" aria-hidden="true" class="header-anchor">#</a> Examples</h2><p>Examples of components using scripts inside</p><ul><li><a href="https://github.com/artf/grapesjs-navbar" target="_blank" rel="noopener noreferrer">grapesjs-navbar<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/artf/grapesjs-component-countdown" target="_blank" rel="noopener noreferrer">grapesjs-component-countdown<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Components-js.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/7/2018, 4:18:04 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> </code></pre></div><h2 id="examples"><a href="#examples" aria-hidden="true" class="header-anchor">#</a> Examples</h2><p>Examples of components using scripts inside</p><ul><li><a href="https://github.com/artf/grapesjs-navbar" target="_blank" rel="noopener noreferrer">grapesjs-navbar<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/artf/grapesjs-component-countdown" target="_blank" rel="noopener noreferrer">grapesjs-component-countdown<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Components-js.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">10/29/2018, 4:01:56 AM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/modules/Components.html" class="prev"> ← <a href="/docs/modules/Components.html" class="prev">
Component Manager Component Manager
</a></span><span class="next"><a href="/docs/modules/Traits.html"> </a></span><span class="next"><a href="/docs/modules/Traits.html">
Trait Manager Trait Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/37.8c59c319.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/37.81b50f4e.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

20
docs/modules/Components.html

@ -6,10 +6,10 @@
<title>Component Manager | GrapesJS</title> <title>Component Manager | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/38.8f378510.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/38.7c0a8b3f.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,11 +27,11 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="active sidebar-link">Component Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#built-in-components" class="sidebar-link">Built-in components</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#how-components-work" class="sidebar-link">How Components work?</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#component-recognition" class="sidebar-link">Component recognition</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#define-new-component" class="sidebar-link">Define new Component</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#update-component-type" class="sidebar-link">Update Component type</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#components-js" class="sidebar-link">Components &amp; JS</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#hints" class="sidebar-link">Hints</a></li></ul></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="component-manager"><a href="#component-manager" aria-hidden="true" class="header-anchor">#</a> Component Manager</h1><p>The Component is the base element for the template composition and, usually, elements like images, text boxes, maps, etc. fit perfectly in this concept. The concept of the component was made to allow the developer to bind different behaviors to different elements. Like for example, opening the Asset Manager on double click of the image.</p><p></p><div class="table-of-contents"><ul><li><a href="#built-in-components">Built-in components</a></li><li><a href="#how-components-work">How Components work?</a></li><li><a href="#component-recognition">Component recognition</a></li><li><a href="#define-new-component">Define new Component</a></li><li><a href="#update-component-type">Update Component type</a></li><li><a href="#components-js">Components &amp; JS</a></li><li><a href="#hints">Hints</a></li></ul></div><p></p><h2 id="built-in-components"><a href="#built-in-components" aria-hidden="true" class="header-anchor">#</a> Built-in components</h2><ul><li>Default (Basic)</li><li>Text</li><li>Image</li><li>Video</li><li>Link</li><li>Map</li><li>Table</li><li>Row (for the table)</li><li>Cell (for the table)</li></ul><h2 id="how-components-work"><a href="#how-components-work" aria-hidden="true" class="header-anchor">#</a> How Components work?</h2><p>When we pass an HTML string to the editor like this:</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">&gt;</span></span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="active sidebar-link">Component Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#built-in-components" class="sidebar-link">Built-in components</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#how-components-work" class="sidebar-link">How Components work?</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#component-recognition" class="sidebar-link">Component recognition</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#define-new-component" class="sidebar-link">Define new Component</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#update-component-type" class="sidebar-link">Update Component type</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#components-js" class="sidebar-link">Components &amp; JS</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Components.html#hints" class="sidebar-link">Hints</a></li></ul></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="sidebar-link">Trait Manager</a></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="component-manager"><a href="#component-manager" aria-hidden="true" class="header-anchor">#</a> Component Manager</h1><p>The Component is the base element for template composition. It is atomic, so elements like images, text boxes, maps, etc. fit the definition of a Component. The concept of the component was made to allow the developer to bind different behaviors to different elements. Like for example, opening the Asset Manager on double click of the image.</p><p></p><div class="table-of-contents"><ul><li><a href="#built-in-components">Built-in components</a></li><li><a href="#how-components-work">How Components work?</a></li><li><a href="#component-recognition">Component recognition</a></li><li><a href="#define-new-component">Define new Component</a></li><li><a href="#update-component-type">Update Component type</a></li><li><a href="#components-js">Components &amp; JS</a></li><li><a href="#hints">Hints</a></li></ul></div><p></p><h2 id="built-in-components"><a href="#built-in-components" aria-hidden="true" class="header-anchor">#</a> Built-in components</h2><ul><li>Default (Basic)</li><li>Text</li><li>Image</li><li>Video</li><li>Link</li><li>Map</li><li>Table</li><li>Row (for the table)</li><li>Cell (for the table)</li></ul><h2 id="how-components-work"><a href="#how-components-work" aria-hidden="true" class="header-anchor">#</a> How Components work?</h2><p>When we pass an HTML string to the editor like this:</p><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>https://path/image<span class="token punctuation">&quot;</span></span> <span class="token punctuation">/&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>https://path/image<span class="token punctuation">&quot;</span></span> <span class="token punctuation">/&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>foo<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>bar<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>foo<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>bar<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span> <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><p>The editor will create and store, for each DOM element, its object representation and all next changes to the template will be made on top of this structure, which will then reflect on canvas. So, each object, usually called <em>Model</em> (or state/store), will be the source of truth for the template, but what exactly does it mean? For instance, in more practical way, once the template is rendered on the canvas, if you try to remove one of the elements using the browser inspector and then ask the editor to print the HTML (using <code>editor.getHtml()</code>) you'll see, from the code, that the element will still be there, this because the editor relies on Models and not on the DOM inside the canvas. This approach allows us to be extremely flexible on how to generate the final code (from the <em>Model</em>) and how to render it inside the canvas (from the <em>View</em>).</p><h1 id="manage-components"><a href="#manage-components" aria-hidden="true" class="header-anchor">#</a> Manage Components</h1><h2 id="component-recognition"><a href="#component-recognition" aria-hidden="true" class="header-anchor">#</a> Component recognition</h2><p>But now, how does the editor recognize which Component to bind to the <code>img</code> element and what to do with the <code>span</code> one? </code></pre></div><p>For each DOM element the editor will create and store an object representation. Every future change to the template will be made on top of this structure, which will then reflect on the canvas. So each object, usually called <em>Model</em> (or state/store), will be the source of truth for the template, but what exactly does that mean? In more practical example, once the template is rendered on the canvas, if you try to remove one of the elements using the browser inspector and then ask the editor to print the HTML (using <code>editor.getHtml()</code>) you'll see that the element will still be present. This is because the editor relies on Models and not on the DOM inside the canvas. This approach allows us to be extremely flexible on how we generate the final code (from the <em>Model</em>) and how to render it inside the canvas (from the <em>View</em>).</p><h1 id="manage-components"><a href="#manage-components" aria-hidden="true" class="header-anchor">#</a> Manage Components</h1><h2 id="component-recognition"><a href="#component-recognition" aria-hidden="true" class="header-anchor">#</a> Component recognition</h2><p>But now, how does the editor recognize which Component to bind to the <code>img</code> element and what to do with the <code>span</code> one?
Each Component inherits, from the base one, a particular static method</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">/** Each Component inherits, from the base one, a particular static method</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">/**
* @param {HTMLElement} el * @param {HTMLElement} el
* @return {Object} * @return {Object}
@ -39,18 +39,18 @@ Each Component inherits, from the base one, a particular static method</p><div c
isComponent<span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span>el<span class="token punctuation">)</span> <span class="token punctuation">{</span> isComponent<span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span>el<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token operator">...</span> <span class="token operator">...</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</code></pre></div><p>This method gives us the possibility to recognize and bind component types to each HTMLElement (div, img, iframe, etc.). Each HTML element introduced inside the canvas will be processed by <code>isComponent</code> of all available types and if it matches, the object represented the type should be returned. So, for example, with the image component this method looks like:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Image component</span> </code></pre></div><p>This method gives us the possibility to recognize and bind component types to each HTMLElement (div, img, iframe, etc.). Each HTML element introduced inside the canvas will be processed by <code>isComponent</code> of all available types and if it matches, the object represented the type should be returned. For example, with the image component this method looks like:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Image component</span>
isComponent<span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span>el<span class="token punctuation">)</span> <span class="token punctuation">{</span> isComponent<span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span>el<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span>tagName <span class="token operator">==</span> <span class="token string">'IMG'</span><span class="token punctuation">)</span> <span class="token keyword">if</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span>tagName <span class="token operator">==</span> <span class="token string">'IMG'</span><span class="token punctuation">)</span>
<span class="token keyword">return</span> <span class="token punctuation">{</span>type<span class="token punctuation">:</span> <span class="token string">'image'</span><span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token punctuation">{</span>type<span class="token punctuation">:</span> <span class="token string">'image'</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
</code></pre></div><p>Let's try with something that might look a little bit tricky. What about a Google's Map?!? Google's maps are generally embedded as <code>iframe</code>s, but the template can be composed by a lot of different <code>iframe</code>s, how can I tell the editor that a particular iframe is actually a Google's Map. Well, this part is up to you to understand which is the right pattern to choose, you have the <code>HTMLElement</code> so you can make all checks you want and in this particular case this pattern is used:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Map component</span> </code></pre></div><p>Let's try with something that might look a little bit tricky. What about a Google Map?!? Google Maps are generally embedded as <code>iframe</code>s, but the template can be composed by a lot of different <code>iframe</code>s. How can I tell the editor that a particular iframe is actually a Google's Map? Well, you'll have to figure out the right pattern, you have the <code>HTMLElement</code> so you can make all the checks you want. In this particular case this pattern is used:</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Map component</span>
isComponent<span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span>el<span class="token punctuation">)</span> <span class="token punctuation">{</span> isComponent<span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span>el<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span>tagName <span class="token operator">==</span> <span class="token string">'IFRAME'</span> <span class="token operator">&amp;&amp;</span> <span class="token regex">/maps\.google\.com/</span><span class="token punctuation">.</span><span class="token function">test</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span>src<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span>tagName <span class="token operator">==</span> <span class="token string">'IFRAME'</span> <span class="token operator">&amp;&amp;</span> <span class="token regex">/maps\.google\.com/</span><span class="token punctuation">.</span><span class="token function">test</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span>src<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">{</span>type<span class="token punctuation">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span> src<span class="token punctuation">:</span> el<span class="token punctuation">.</span>src<span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token punctuation">{</span>type<span class="token punctuation">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span> src<span class="token punctuation">:</span> el<span class="token punctuation">.</span>src<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</code></pre></div><p>So, as you see, in addition to <code>tagName</code> check, we also used the <code>src</code> property, but, as you'll see, you can actually override it with your own logic by extending the built-in component.</p><h2 id="define-new-component"><a href="#define-new-component" aria-hidden="true" class="header-anchor">#</a> Define new Component</h2><p>Let's see now an example, with another HTML element, which is not handled by default Component types. What about <code>input</code> elements?</p><p>With the default GrapesJS configuration <code>input</code>s are treated just like any other element, you can move it around, style it, etc., but usually we'd like to handle this type of element more specifically. In this case, we have to create a new Component type.</p><p>Let's define just few specs for our new <em>Input</em> type:</p><ul><li>Can be dropped only inside <code>form</code> elements</li><li>Can't drop other elements inside it</li><li>Can change the type of the input (text, password, email, etc.)</li><li>Can make it required for the form</li></ul><p>To define a new Component type you need to choose from which built-in Component inherit its properties, in our case we just gonna choose the default one. Let's see a complete example of the new type definition</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Get DomComponents module</span> </code></pre></div><p>In addition to <code>tagName</code> check, we also used the <code>src</code> property, but you can actually override it with your own logic by extending the built-in component.</p><h2 id="define-new-component"><a href="#define-new-component" aria-hidden="true" class="header-anchor">#</a> Define new Component</h2><p>Let's see an example with another HTML element that is not handled by default Component types. What about <code>input</code> elements?</p><p>With the default GrapesJS configuration <code>input</code>s are treated like any other element; you can move it around, style it, etc. However, we'd like to handle this type of element more specifically. In this case, we have to create a new Component type.</p><p>Let's define few specs for our new <em>Input</em> type:</p><ul><li>Can be dropped only inside <code>form</code> elements</li><li>Can't drop other elements inside it</li><li>Can change the type of the input (text, password, email, etc.)</li><li>Can make it required for the form</li></ul><p>To define a new Component type you need to choose from which built-in Component inherit its properties, in our case we just gonna choose the default one. Let's see a complete example of the new type definition</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// Get DomComponents module</span>
<span class="token keyword">var</span> comps <span class="token operator">=</span> editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">;</span> <span class="token keyword">var</span> comps <span class="token operator">=</span> editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">;</span>
<span class="token comment">// Get the model and the view from the default Component type</span> <span class="token comment">// Get the model and the view from the default Component type</span>
@ -184,13 +184,13 @@ comps<span class="token punctuation">.</span><span class="token function">addTyp
<span class="token comment">// after all new types</span> <span class="token comment">// after all new types</span>
editor<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> editor<span class="token punctuation">.</span><span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span> </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><p>Solution 2: put all the stuff inside a plugin (<a href="https://github.com/artf/grapesjs/wiki/Creating-plugins" target="_blank" rel="noopener noreferrer">Creating plugins<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>)</p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Components.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/10/2018, 2:27:13 AM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> </code></pre></div><p>Solution 2: put all the stuff inside a plugin (<a href="https://github.com/artf/grapesjs/wiki/Creating-plugins" target="_blank" rel="noopener noreferrer">Creating plugins<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>)</p></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Components.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">10/26/2018, 2:03:52 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/modules/Blocks.html" class="prev"> ← <a href="/docs/modules/Blocks.html" class="prev">
Block Manager Block Manager
</a></span><span class="next"><a href="/docs/modules/Components-js.html"> </a></span><span class="next"><a href="/docs/modules/Components-js.html">
Components &amp; JS Components &amp; JS
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/38.8f378510.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/38.7c0a8b3f.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

8
docs/modules/Plugins.html

@ -6,10 +6,10 @@
<title>Plugins | GrapesJS</title> <title>Plugins | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/39.6a0c7106.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/39.6a0c7106.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -100,6 +100,6 @@
Replace Rich Text Editor Replace Rich Text Editor
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/39.6a0c7106.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/39.6a0c7106.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

8
docs/modules/Storage.html

@ -6,10 +6,10 @@
<title>Storage Manager | GrapesJS</title> <title>Storage Manager | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/40.9ff909f0.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/40.9ff909f0.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -192,6 +192,6 @@ editor<span class="token punctuation">.</span><span class="token function">on</s
Plugins Plugins
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/40.9ff909f0.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/40.9ff909f0.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

8
docs/modules/Style-manager.html

@ -6,10 +6,10 @@
<title>Style Manager | GrapesJS</title> <title>Style Manager | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/41.92a37b1a.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/42.8a9f7180.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/41.92a37b1a.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/42.96a85828.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -45,6 +45,6 @@
Storage Manager Storage Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/41.92a37b1a.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/41.92a37b1a.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

16
docs/modules/Traits.html

@ -6,10 +6,10 @@
<title>Trait Manager | GrapesJS</title> <title>Trait Manager | GrapesJS</title>
<meta name="description" content="GrapesJS documentation"> <meta name="description" content="GrapesJS documentation">
<link rel="icon" href="/docs/logo-icon.png"> <link rel="icon" href="/docs/logo-icon.png">
<link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.33"> <link rel="stylesheet" href="../stylesheets/grapes.min.css?v0.14.40">
<script src="../js/grapes.min.js?v0.14.33"></script> <script src="../js/grapes.min.js?v0.14.40"></script>
<link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.1436e1a7.js" as="script"><link rel="preload" href="/docs/assets/js/42.8a9f7180.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.9c91baa4.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.f155b4c4.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.4044a85d.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.245014e9.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.fda19034.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.0110eaf1.js"><link rel="prefetch" href="/docs/assets/js/36.01a0fc2b.js"><link rel="prefetch" href="/docs/assets/js/37.8c59c319.js"><link rel="prefetch" href="/docs/assets/js/38.8f378510.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js"> <link rel="preload" href="/docs/assets/css/0.styles.82db7b1e.css" as="style"><link rel="preload" href="/docs/assets/js/app.7a800186.js" as="script"><link rel="preload" href="/docs/assets/js/42.96a85828.js" as="script"><link rel="prefetch" href="/docs/assets/js/20.2a47ec70.js"><link rel="prefetch" href="/docs/assets/js/2.ef91b2e4.js"><link rel="prefetch" href="/docs/assets/js/3.6f294650.js"><link rel="prefetch" href="/docs/assets/js/4.a4359865.js"><link rel="prefetch" href="/docs/assets/js/5.95c28380.js"><link rel="prefetch" href="/docs/assets/js/6.cb35c750.js"><link rel="prefetch" href="/docs/assets/js/7.53f8b5b8.js"><link rel="prefetch" href="/docs/assets/js/8.d4eeeb94.js"><link rel="prefetch" href="/docs/assets/js/9.3ae8fade.js"><link rel="prefetch" href="/docs/assets/js/10.9257e084.js"><link rel="prefetch" href="/docs/assets/js/11.663618dd.js"><link rel="prefetch" href="/docs/assets/js/12.b6040463.js"><link rel="prefetch" href="/docs/assets/js/13.b7167e90.js"><link rel="prefetch" href="/docs/assets/js/14.1d09f9af.js"><link rel="prefetch" href="/docs/assets/js/15.f4316c4a.js"><link rel="prefetch" href="/docs/assets/js/16.ae4af21b.js"><link rel="prefetch" href="/docs/assets/js/17.1abba793.js"><link rel="prefetch" href="/docs/assets/js/18.8ca9fc74.js"><link rel="prefetch" href="/docs/assets/js/19.d921948e.js"><link rel="prefetch" href="/docs/assets/js/21.c6421742.js"><link rel="prefetch" href="/docs/assets/js/22.1be8550c.js"><link rel="prefetch" href="/docs/assets/js/23.c5587df3.js"><link rel="prefetch" href="/docs/assets/js/24.c051f379.js"><link rel="prefetch" href="/docs/assets/js/25.2f947e45.js"><link rel="prefetch" href="/docs/assets/js/26.7375acba.js"><link rel="prefetch" href="/docs/assets/js/27.741f6722.js"><link rel="prefetch" href="/docs/assets/js/28.5040c972.js"><link rel="prefetch" href="/docs/assets/js/29.618f6056.js"><link rel="prefetch" href="/docs/assets/js/30.753c7cf4.js"><link rel="prefetch" href="/docs/assets/js/31.7e89813a.js"><link rel="prefetch" href="/docs/assets/js/32.27d2cf79.js"><link rel="prefetch" href="/docs/assets/js/33.3a04bb90.js"><link rel="prefetch" href="/docs/assets/js/34.1814891c.js"><link rel="prefetch" href="/docs/assets/js/35.42f094c9.js"><link rel="prefetch" href="/docs/assets/js/36.dcbc999c.js"><link rel="prefetch" href="/docs/assets/js/37.81b50f4e.js"><link rel="prefetch" href="/docs/assets/js/38.7c0a8b3f.js"><link rel="prefetch" href="/docs/assets/js/39.6a0c7106.js"><link rel="prefetch" href="/docs/assets/js/40.9ff909f0.js"><link rel="prefetch" href="/docs/assets/js/41.92a37b1a.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css"> <link rel="stylesheet" href="/docs/assets/css/0.styles.82db7b1e.css">
</head> </head>
<body> <body>
@ -27,7 +27,7 @@
Twitter Twitter
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><a href="https://github.com/artf/grapesjs" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub GitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="active sidebar-link">Trait Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Traits.html#built-in-trait-types" class="sidebar-link">Built-in trait types</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Traits.html#add-traits-to-components" class="sidebar-link">Add Traits to Components</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Traits.html#define-new-trait-type" class="sidebar-link">Define new Trait type</a></li></ul></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="trait-manager"><a href="#trait-manager" aria-hidden="true" class="header-anchor">#</a> Trait Manager</h1><p>In GrapesJS, Traits could define different parameters and behaviors of a single component. The user generally will see traits as <em>Settings</em> of each component. A common use of traits is to customize element attributes (eg. <code>placeholder</code> for inputs) and in this case the editor comes already with some built-in, easy configurable, types.</p><p></p><div class="table-of-contents"><ul><li><a href="#built-in-trait-types">Built-in trait types</a></li><li><a href="#add-traits-to-components">Add Traits to Components</a></li><li><a href="#define-new-trait-type">Define new Trait type</a></li></ul></div><p></p><h2 id="built-in-trait-types"><a href="#built-in-trait-types" aria-hidden="true" class="header-anchor">#</a> Built-in trait types</h2><ul><li>text</li><li>number</li><li>checkbox</li><li>select</li><li>color</li></ul><h2 id="add-traits-to-components"><a href="#add-traits-to-components" aria-hidden="true" class="header-anchor">#</a> Add Traits to Components</h2><p>You can add traits to the component by extending them or while creating a new one. Let's see in this example how to make inputs more customizable by the editor. All components, by default, contain 2 traits: id and title (at the moment of writing). So, if you select an input and open the Settings panel you will see just this:</p><img src="/docs/default-traits.png"><p>In this case we gonna create a new Component (<a href="Components">check here</a> for more details about the creation of new components) with a new set of traits</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav><div class="carbon-ads"></div><ul class="sidebar-links"><li><a href="/docs/" class="sidebar-link">Introduction</a></li><li><a href="/docs/getting-started.html" class="sidebar-link">Getting Started</a></li><li><div class="sidebar-group"><p class="sidebar-heading open"><span>Modules</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/modules/Assets.html" class="sidebar-link">Asset Manager</a></li><li><a href="/docs/modules/Blocks.html" class="sidebar-link">Block Manager</a></li><li><a href="/docs/modules/Components.html" class="sidebar-link">Component Manager</a></li><li><a href="/docs/modules/Components-js.html" class="sidebar-link">Components &amp; JS</a></li><li><a href="/docs/modules/Traits.html" class="active sidebar-link">Trait Manager</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/modules/Traits.html#built-in-trait-types" class="sidebar-link">Built-in trait types</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Traits.html#add-traits-to-components" class="sidebar-link">Add Traits to Components</a></li><li class="sidebar-sub-header"><a href="/docs/modules/Traits.html#define-new-trait-type" class="sidebar-link">Define new Trait type</a></li></ul></li><li><a href="/docs/modules/Style-manager.html" class="sidebar-link">Style Manager</a></li><li><a href="/docs/modules/Storage.html" class="sidebar-link">Storage Manager</a></li><li><a href="/docs/modules/Plugins.html" class="sidebar-link">Plugins</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span><!----></p><ul class="sidebar-group-items"><li><a href="/docs/guides/Replace-Rich-Text-Editor.html" class="sidebar-link">Replace Rich Text Editor</a></li><li><a href="/docs/guides/Custom-CSS-parser.html" class="sidebar-link">Use Custom CSS Parser</a></li></ul></div></li></ul></div><div class="page"><div class="content"><h1 id="trait-manager"><a href="#trait-manager" aria-hidden="true" class="header-anchor">#</a> Trait Manager</h1><p>In GrapesJS, Traits can define different parameters and behaviors of a component. The user generally will see traits as the <em>Settings</em> of a component. A common use of traits is to customize element attributes (eg. <code>placeholder</code> for inputs) and in this case the editor comes already with some built-in, easy configurable, types.</p><p></p><div class="table-of-contents"><ul><li><a href="#built-in-trait-types">Built-in trait types</a></li><li><a href="#add-traits-to-components">Add Traits to Components</a></li><li><a href="#define-new-trait-type">Define new Trait type</a></li></ul></div><p></p><h2 id="built-in-trait-types"><a href="#built-in-trait-types" aria-hidden="true" class="header-anchor">#</a> Built-in trait types</h2><ul><li>text</li><li>number</li><li>checkbox</li><li>select</li><li>color</li></ul><h2 id="add-traits-to-components"><a href="#add-traits-to-components" aria-hidden="true" class="header-anchor">#</a> Add Traits to Components</h2><p>You can add traits to the component by extending them or while creating a new one. Let's see in this example how to make inputs more customizable by the editor. All components, by default, contain two traits: id and title (at the moment of writing). So, if you select an input and open the Settings panel you will see this:</p><img src="/docs/default-traits.png"><p>In this example we are going to create a new Component. (<a href="Components">Check here</a> for more details about the creation of new components with a new set of traits</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">var</span> editor <span class="token operator">=</span> grapesjs<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> domComps <span class="token operator">=</span> editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">;</span> <span class="token keyword">var</span> domComps <span class="token operator">=</span> editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">;</span>
<span class="token keyword">var</span> dType <span class="token operator">=</span> domComps<span class="token punctuation">.</span><span class="token function">getType</span><span class="token punctuation">(</span><span class="token string">'default'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> dType <span class="token operator">=</span> domComps<span class="token punctuation">.</span><span class="token function">getType</span><span class="token punctuation">(</span><span class="token string">'default'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> dModel <span class="token operator">=</span> dType<span class="token punctuation">.</span>model<span class="token punctuation">;</span> <span class="token keyword">var</span> dModel <span class="token operator">=</span> dType<span class="token punctuation">.</span>model<span class="token punctuation">;</span>
@ -66,7 +66,7 @@ domComps<span class="token punctuation">.</span><span class="token function">add
view<span class="token punctuation">:</span> dView<span class="token punctuation">,</span> view<span class="token punctuation">:</span> dView<span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>Now the result will be</p><img src="/docs/input-custom-traits.png"><p>By default, traits modify attributes of the model (which than reflected in canvas) but you can also have traits which change the property</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token operator">...</span> </code></pre></div><p>Now the result will be</p><img src="/docs/input-custom-traits.png"><p>Traits modify attributes of the model (which than reflected in canvas), but you can also have traits which change the property</p><div class="language-js extra-class"><pre class="language-js"><code><span class="token operator">...</span>
traits<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> traits<span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
type<span class="token punctuation">:</span> <span class="token string">'text'</span><span class="token punctuation">,</span> type<span class="token punctuation">:</span> <span class="token string">'text'</span><span class="token punctuation">,</span>
label<span class="token punctuation">:</span> <span class="token string">'Test'</span><span class="token punctuation">,</span> label<span class="token punctuation">:</span> <span class="token string">'Test'</span><span class="token punctuation">,</span>
@ -74,7 +74,7 @@ traits<span class="token punctuation">:</span> <span class="token punctuation">[
changeProp<span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">,</span> changeProp<span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
</code></pre></div><p>In this way you're able to listen this changes and react with your own logic</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'input'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> </code></pre></div><p>In this way you're able to listen for changes and react with your own logic</p><div class="language-js extra-class"><pre class="language-js"><code>editor<span class="token punctuation">.</span>DomComponents<span class="token punctuation">.</span><span class="token function">addType</span><span class="token punctuation">(</span><span class="token string">'input'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
model<span class="token punctuation">:</span> dModel<span class="token punctuation">.</span><span class="token function">extend</span><span class="token punctuation">(</span><span class="token punctuation">{</span> model<span class="token punctuation">:</span> dModel<span class="token punctuation">.</span><span class="token function">extend</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">listenTo</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">'change:model-prop-name'</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>doStuff<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">listenTo</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token string">'change:model-prop-name'</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>doStuff<span class="token punctuation">)</span><span class="token punctuation">;</span>
@ -118,13 +118,13 @@ traits<span class="token punctuation">:</span> <span class="token punctuation">[
type<span class="token punctuation">:</span> <span class="token string">'content'</span><span class="token punctuation">,</span> type<span class="token punctuation">:</span> <span class="token string">'content'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token operator">...</span> <span class="token operator">...</span>
</code></pre></div></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Traits.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">7/12/2018, 6:13:47 PM</span></div></div><div class="page-nav"><p class="inner"><span class="prev"> </code></pre></div></div><div class="page-edit"><div class="edit-link"><a href="https://github.com/artf/grapesjs/edit/dev/docs/modules/Traits.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></div><div class="last-updated"><span class="prefix">Last Updated: </span><span class="time">10/29/2018, 4:01:56 AM</span></div></div><div class="page-nav"><p class="inner"><span class="prev">
← <a href="/docs/modules/Components-js.html" class="prev"> ← <a href="/docs/modules/Components-js.html" class="prev">
Components &amp; JS Components &amp; JS
</a></span><span class="next"><a href="/docs/modules/Style-manager.html"> </a></span><span class="next"><a href="/docs/modules/Style-manager.html">
Style Manager Style Manager
</a> → </a> →
</span></p></div></div></div></div> </span></p></div></div></div></div>
<script src="/docs/assets/js/42.8a9f7180.js" defer></script><script src="/docs/assets/js/app.1436e1a7.js" defer></script> <script src="/docs/assets/js/42.96a85828.js" defer></script><script src="/docs/assets/js/app.7a800186.js" defer></script>
</body> </body>
</html> </html>

Loading…
Cancel
Save