maglevcms 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (578) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -0
  3. data/app/controllers/concerns/maglev/fetchers_concern.rb +1 -1
  4. data/app/controllers/maglev/admin/sections/previews_controller.rb +1 -1
  5. data/app/controllers/maglev/application_controller.rb +2 -2
  6. data/app/controllers/maglev/page_preview_controller.rb +1 -1
  7. data/app/{javascript → frontend/admin}/controllers/dropdown_controller.js +0 -0
  8. data/app/{javascript → frontend/admin}/controllers/iframe_controller.js +0 -0
  9. data/app/{javascript → frontend/admin}/controllers/screenshot_controller.js +0 -0
  10. data/app/{javascript/controllers → frontend/admin}/index.js +3 -4
  11. data/app/{javascript → frontend/admin}/utils/axios.js +0 -0
  12. data/app/{javascript → frontend}/editor/App.vue +0 -0
  13. data/app/{javascript → frontend}/editor/assets/remixicons/add-box-line.svg +0 -0
  14. data/app/{javascript → frontend}/editor/assets/remixicons/arrow-down-s-line.svg +0 -0
  15. data/app/{javascript → frontend}/editor/assets/remixicons/arrow-drop-left.svg +0 -0
  16. data/app/{javascript → frontend}/editor/assets/remixicons/arrow-drop-right.svg +0 -0
  17. data/app/{javascript → frontend}/editor/assets/remixicons/arrow-up-s-line.svg +0 -0
  18. data/app/{javascript → frontend}/editor/assets/remixicons/camera-line.svg +0 -0
  19. data/app/{javascript → frontend}/editor/assets/remixicons/check-line.svg +0 -0
  20. data/app/{javascript → frontend}/editor/assets/remixicons/close-line.svg +0 -0
  21. data/app/{javascript → frontend}/editor/assets/remixicons/computer-line.svg +0 -0
  22. data/app/{javascript → frontend}/editor/assets/remixicons/delete-bin-line.svg +0 -0
  23. data/app/{javascript → frontend}/editor/assets/remixicons/file-line.svg +0 -0
  24. data/app/{javascript → frontend}/editor/assets/remixicons/format-blockquote.svg +0 -0
  25. data/app/{javascript → frontend}/editor/assets/remixicons/format-bold.svg +0 -0
  26. data/app/{javascript → frontend}/editor/assets/remixicons/format-code.svg +0 -0
  27. data/app/{javascript → frontend}/editor/assets/remixicons/format-heading-2.svg +0 -0
  28. data/app/{javascript → frontend}/editor/assets/remixicons/format-heading-3.svg +0 -0
  29. data/app/{javascript → frontend}/editor/assets/remixicons/format-heading-4.svg +0 -0
  30. data/app/{javascript → frontend}/editor/assets/remixicons/format-italic.svg +0 -0
  31. data/app/{javascript → frontend}/editor/assets/remixicons/format-link-unlink.svg +0 -0
  32. data/app/{javascript → frontend}/editor/assets/remixicons/format-link.svg +0 -0
  33. data/app/{javascript → frontend}/editor/assets/remixicons/format-list-ordered.svg +0 -0
  34. data/app/{javascript → frontend}/editor/assets/remixicons/format-list-unordered.svg +0 -0
  35. data/app/{javascript → frontend}/editor/assets/remixicons/format-paragraph.svg +0 -0
  36. data/app/{javascript → frontend}/editor/assets/remixicons/format-strikethrough.svg +0 -0
  37. data/app/{javascript → frontend}/editor/assets/remixicons/format-underline.svg +0 -0
  38. data/app/{javascript → frontend}/editor/assets/remixicons/home-4-line.svg +0 -0
  39. data/app/{javascript → frontend}/editor/assets/remixicons/image-line.svg +0 -0
  40. data/app/{javascript → frontend}/editor/assets/remixicons/logout-box-r-line.svg +0 -0
  41. data/app/{javascript → frontend}/editor/assets/remixicons/ri-add-line.svg +0 -0
  42. data/app/{javascript → frontend}/editor/assets/remixicons/ri-alert-line.svg +0 -0
  43. data/app/{javascript → frontend}/editor/assets/remixicons/ri-book-line.svg +0 -0
  44. data/app/{javascript → frontend}/editor/assets/remixicons/ri-bug-line.svg +0 -0
  45. data/app/{javascript → frontend}/editor/assets/remixicons/ri-close-circle-line.svg +0 -0
  46. data/app/{javascript → frontend}/editor/assets/remixicons/ri-close-line.svg +0 -0
  47. data/app/{javascript → frontend}/editor/assets/remixicons/ri-delete-column.svg +0 -0
  48. data/app/{javascript → frontend}/editor/assets/remixicons/ri-delete-row.svg +0 -0
  49. data/app/{javascript → frontend}/editor/assets/remixicons/ri-drop-line.svg +0 -0
  50. data/app/{javascript → frontend}/editor/assets/remixicons/ri-external-link-line.svg +0 -0
  51. data/app/{javascript → frontend}/editor/assets/remixicons/ri-eye-line.svg +0 -0
  52. data/app/{javascript → frontend}/editor/assets/remixicons/ri-eye-off-line.svg +0 -0
  53. data/app/{javascript → frontend}/editor/assets/remixicons/ri-file-copy-line.svg +0 -0
  54. data/app/{javascript → frontend}/editor/assets/remixicons/ri-file-line.svg +0 -0
  55. data/app/{javascript → frontend}/editor/assets/remixicons/ri-global-line.svg +0 -0
  56. data/app/{javascript → frontend}/editor/assets/remixicons/ri-insert-column-left.svg +0 -0
  57. data/app/{javascript → frontend}/editor/assets/remixicons/ri-insert-column-right.svg +0 -0
  58. data/app/{javascript → frontend}/editor/assets/remixicons/ri-insert-row-bottom.svg +0 -0
  59. data/app/{javascript → frontend}/editor/assets/remixicons/ri-insert-row-top.svg +0 -0
  60. data/app/{javascript → frontend}/editor/assets/remixicons/ri-loader-4-line.svg +0 -0
  61. data/app/{javascript → frontend}/editor/assets/remixicons/ri-mail-line.svg +0 -0
  62. data/app/{javascript → frontend}/editor/assets/remixicons/ri-more-2-fill.svg +0 -0
  63. data/app/{javascript → frontend}/editor/assets/remixicons/ri-pencil-line.svg +0 -0
  64. data/app/{javascript → frontend}/editor/assets/remixicons/ri-play-list-add-line.svg +0 -0
  65. data/app/{javascript → frontend}/editor/assets/remixicons/ri-settings-5-line.svg +0 -0
  66. data/app/{javascript → frontend}/editor/assets/remixicons/ri-stack-line.svg +0 -0
  67. data/app/{javascript → frontend}/editor/assets/remixicons/ri-table-2.svg +0 -0
  68. data/app/{javascript → frontend}/editor/assets/remixicons/ri-table-line.svg +0 -0
  69. data/app/{javascript → frontend}/editor/assets/remixicons/search-line.svg +0 -0
  70. data/app/{javascript → frontend}/editor/assets/remixicons/settings-4-line.svg +0 -0
  71. data/app/{javascript → frontend}/editor/assets/remixicons/smartphone-line.svg +0 -0
  72. data/app/{javascript → frontend}/editor/assets/remixicons/tablet-line.svg +0 -0
  73. data/app/{javascript → frontend}/editor/assets/zondicons/add-outline.svg +0 -0
  74. data/app/{javascript → frontend}/editor/assets/zondicons/add-solid.svg +0 -0
  75. data/app/{javascript → frontend}/editor/assets/zondicons/adjust.svg +0 -0
  76. data/app/{javascript → frontend}/editor/assets/zondicons/airplane.svg +0 -0
  77. data/app/{javascript → frontend}/editor/assets/zondicons/album.svg +0 -0
  78. data/app/{javascript → frontend}/editor/assets/zondicons/align-center.svg +0 -0
  79. data/app/{javascript → frontend}/editor/assets/zondicons/align-justified.svg +0 -0
  80. data/app/{javascript → frontend}/editor/assets/zondicons/align-left.svg +0 -0
  81. data/app/{javascript → frontend}/editor/assets/zondicons/align-right.svg +0 -0
  82. data/app/{javascript → frontend}/editor/assets/zondicons/anchor.svg +0 -0
  83. data/app/{javascript → frontend}/editor/assets/zondicons/announcement.svg +0 -0
  84. data/app/{javascript → frontend}/editor/assets/zondicons/apparel.svg +0 -0
  85. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-down.svg +0 -0
  86. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-left.svg +0 -0
  87. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-outline-down.svg +0 -0
  88. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-outline-left.svg +0 -0
  89. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-outline-right.svg +0 -0
  90. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-outline-up.svg +0 -0
  91. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-right.svg +0 -0
  92. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thick-down.svg +0 -0
  93. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thick-left.svg +0 -0
  94. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thick-right.svg +0 -0
  95. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thick-up.svg +0 -0
  96. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thin-down.svg +0 -0
  97. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thin-left.svg +0 -0
  98. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thin-right.svg +0 -0
  99. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-thin-up.svg +0 -0
  100. data/app/{javascript → frontend}/editor/assets/zondicons/arrow-up.svg +0 -0
  101. data/app/{javascript → frontend}/editor/assets/zondicons/artist.svg +0 -0
  102. data/app/{javascript → frontend}/editor/assets/zondicons/at-symbol.svg +0 -0
  103. data/app/{javascript → frontend}/editor/assets/zondicons/attachment.svg +0 -0
  104. data/app/{javascript → frontend}/editor/assets/zondicons/backspace.svg +0 -0
  105. data/app/{javascript → frontend}/editor/assets/zondicons/backward-step.svg +0 -0
  106. data/app/{javascript → frontend}/editor/assets/zondicons/backward.svg +0 -0
  107. data/app/{javascript → frontend}/editor/assets/zondicons/badge.svg +0 -0
  108. data/app/{javascript → frontend}/editor/assets/zondicons/battery-full.svg +0 -0
  109. data/app/{javascript → frontend}/editor/assets/zondicons/battery-half.svg +0 -0
  110. data/app/{javascript → frontend}/editor/assets/zondicons/battery-low.svg +0 -0
  111. data/app/{javascript → frontend}/editor/assets/zondicons/beverage.svg +0 -0
  112. data/app/{javascript → frontend}/editor/assets/zondicons/block.svg +0 -0
  113. data/app/{javascript → frontend}/editor/assets/zondicons/bluetooth.svg +0 -0
  114. data/app/{javascript → frontend}/editor/assets/zondicons/bolt.svg +0 -0
  115. data/app/{javascript → frontend}/editor/assets/zondicons/book-reference.svg +0 -0
  116. data/app/{javascript → frontend}/editor/assets/zondicons/bookmark copy 2.svg +0 -0
  117. data/app/{javascript → frontend}/editor/assets/zondicons/bookmark copy 3.svg +0 -0
  118. data/app/{javascript → frontend}/editor/assets/zondicons/bookmark-outline-add.svg +0 -0
  119. data/app/{javascript → frontend}/editor/assets/zondicons/bookmark-outline.svg +0 -0
  120. data/app/{javascript → frontend}/editor/assets/zondicons/bookmark.svg +0 -0
  121. data/app/{javascript → frontend}/editor/assets/zondicons/border-all.svg +0 -0
  122. data/app/{javascript → frontend}/editor/assets/zondicons/border-bottom.svg +0 -0
  123. data/app/{javascript → frontend}/editor/assets/zondicons/border-horizontal.svg +0 -0
  124. data/app/{javascript → frontend}/editor/assets/zondicons/border-inner.svg +0 -0
  125. data/app/{javascript → frontend}/editor/assets/zondicons/border-left.svg +0 -0
  126. data/app/{javascript → frontend}/editor/assets/zondicons/border-none.svg +0 -0
  127. data/app/{javascript → frontend}/editor/assets/zondicons/border-outer.svg +0 -0
  128. data/app/{javascript → frontend}/editor/assets/zondicons/border-right.svg +0 -0
  129. data/app/{javascript → frontend}/editor/assets/zondicons/border-top.svg +0 -0
  130. data/app/{javascript → frontend}/editor/assets/zondicons/border-vertical.svg +0 -0
  131. data/app/{javascript → frontend}/editor/assets/zondicons/box.svg +0 -0
  132. data/app/{javascript → frontend}/editor/assets/zondicons/brightness-down.svg +0 -0
  133. data/app/{javascript → frontend}/editor/assets/zondicons/brightness-up.svg +0 -0
  134. data/app/{javascript → frontend}/editor/assets/zondicons/browser-window-new.svg +0 -0
  135. data/app/{javascript → frontend}/editor/assets/zondicons/browser-window-open.svg +0 -0
  136. data/app/{javascript → frontend}/editor/assets/zondicons/browser-window.svg +0 -0
  137. data/app/{javascript → frontend}/editor/assets/zondicons/bug.svg +0 -0
  138. data/app/{javascript → frontend}/editor/assets/zondicons/buoy.svg +0 -0
  139. data/app/{javascript → frontend}/editor/assets/zondicons/calculator.svg +0 -0
  140. data/app/{javascript → frontend}/editor/assets/zondicons/calendar.svg +0 -0
  141. data/app/{javascript → frontend}/editor/assets/zondicons/camera.svg +0 -0
  142. data/app/{javascript → frontend}/editor/assets/zondicons/chart-bar.svg +0 -0
  143. data/app/{javascript → frontend}/editor/assets/zondicons/chart-pie.svg +0 -0
  144. data/app/{javascript → frontend}/editor/assets/zondicons/chart.svg +0 -0
  145. data/app/{javascript → frontend}/editor/assets/zondicons/chat-bubble-dots.svg +0 -0
  146. data/app/{javascript → frontend}/editor/assets/zondicons/checkmark-outline.svg +0 -0
  147. data/app/{javascript → frontend}/editor/assets/zondicons/checkmark.svg +0 -0
  148. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-down.svg +0 -0
  149. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-left.svg +0 -0
  150. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-outline-down.svg +0 -0
  151. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-outline-left.svg +0 -0
  152. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-outline-right.svg +0 -0
  153. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-outline-up.svg +0 -0
  154. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-right.svg +0 -0
  155. data/app/{javascript → frontend}/editor/assets/zondicons/cheveron-up.svg +0 -0
  156. data/app/{javascript → frontend}/editor/assets/zondicons/clipboard.svg +0 -0
  157. data/app/{javascript → frontend}/editor/assets/zondicons/close-outline.svg +0 -0
  158. data/app/{javascript → frontend}/editor/assets/zondicons/close-solid.svg +0 -0
  159. data/app/{javascript → frontend}/editor/assets/zondicons/close.svg +0 -0
  160. data/app/{javascript → frontend}/editor/assets/zondicons/cloud-upload.svg +0 -0
  161. data/app/{javascript → frontend}/editor/assets/zondicons/cloud.svg +0 -0
  162. data/app/{javascript → frontend}/editor/assets/zondicons/code.svg +0 -0
  163. data/app/{javascript → frontend}/editor/assets/zondicons/coffee.svg +0 -0
  164. data/app/{javascript → frontend}/editor/assets/zondicons/cog.svg +0 -0
  165. data/app/{javascript → frontend}/editor/assets/zondicons/color-palette.svg +0 -0
  166. data/app/{javascript → frontend}/editor/assets/zondicons/compose.svg +0 -0
  167. data/app/{javascript → frontend}/editor/assets/zondicons/computer-desktop.svg +0 -0
  168. data/app/{javascript → frontend}/editor/assets/zondicons/computer-laptop.svg +0 -0
  169. data/app/{javascript → frontend}/editor/assets/zondicons/conversation.svg +0 -0
  170. data/app/{javascript → frontend}/editor/assets/zondicons/copy.svg +0 -0
  171. data/app/{javascript → frontend}/editor/assets/zondicons/credit-card.svg +0 -0
  172. data/app/{javascript → frontend}/editor/assets/zondicons/currency-dollar.svg +0 -0
  173. data/app/{javascript → frontend}/editor/assets/zondicons/dashboard.svg +0 -0
  174. data/app/{javascript → frontend}/editor/assets/zondicons/date-add.svg +0 -0
  175. data/app/{javascript → frontend}/editor/assets/zondicons/dial-pad.svg +0 -0
  176. data/app/{javascript → frontend}/editor/assets/zondicons/directions.svg +0 -0
  177. data/app/{javascript → frontend}/editor/assets/zondicons/document-add.svg +0 -0
  178. data/app/{javascript → frontend}/editor/assets/zondicons/document.svg +0 -0
  179. data/app/{javascript → frontend}/editor/assets/zondicons/dots-horizontal-double.svg +0 -0
  180. data/app/{javascript → frontend}/editor/assets/zondicons/dots-horizontal-triple.svg +0 -0
  181. data/app/{javascript → frontend}/editor/assets/zondicons/download.svg +0 -0
  182. data/app/{javascript → frontend}/editor/assets/zondicons/duplicate.svg +0 -0
  183. data/app/{javascript → frontend}/editor/assets/zondicons/edit-copy.svg +0 -0
  184. data/app/{javascript → frontend}/editor/assets/zondicons/edit-crop.svg +0 -0
  185. data/app/{javascript → frontend}/editor/assets/zondicons/edit-cut.svg +0 -0
  186. data/app/{javascript → frontend}/editor/assets/zondicons/edit-pencil.svg +0 -0
  187. data/app/{javascript → frontend}/editor/assets/zondicons/education.svg +0 -0
  188. data/app/{javascript → frontend}/editor/assets/zondicons/envelope.svg +0 -0
  189. data/app/{javascript → frontend}/editor/assets/zondicons/exclamation-outline.svg +0 -0
  190. data/app/{javascript → frontend}/editor/assets/zondicons/exclamation-solid.svg +0 -0
  191. data/app/{javascript → frontend}/editor/assets/zondicons/explore.svg +0 -0
  192. data/app/{javascript → frontend}/editor/assets/zondicons/factory.svg +0 -0
  193. data/app/{javascript → frontend}/editor/assets/zondicons/fast-forward.svg +0 -0
  194. data/app/{javascript → frontend}/editor/assets/zondicons/fast-rewind.svg +0 -0
  195. data/app/{javascript → frontend}/editor/assets/zondicons/film.svg +0 -0
  196. data/app/{javascript → frontend}/editor/assets/zondicons/filter.svg +0 -0
  197. data/app/{javascript → frontend}/editor/assets/zondicons/flag.svg +0 -0
  198. data/app/{javascript → frontend}/editor/assets/zondicons/flashlight.svg +0 -0
  199. data/app/{javascript → frontend}/editor/assets/zondicons/folder-outline-add.svg +0 -0
  200. data/app/{javascript → frontend}/editor/assets/zondicons/folder-outline.svg +0 -0
  201. data/app/{javascript → frontend}/editor/assets/zondicons/folder.svg +0 -0
  202. data/app/{javascript → frontend}/editor/assets/zondicons/format-bold.svg +0 -0
  203. data/app/{javascript → frontend}/editor/assets/zondicons/format-font-size.svg +0 -0
  204. data/app/{javascript → frontend}/editor/assets/zondicons/format-italic.svg +0 -0
  205. data/app/{javascript → frontend}/editor/assets/zondicons/format-text-size.svg +0 -0
  206. data/app/{javascript → frontend}/editor/assets/zondicons/format-underline.svg +0 -0
  207. data/app/{javascript → frontend}/editor/assets/zondicons/forward-step.svg +0 -0
  208. data/app/{javascript → frontend}/editor/assets/zondicons/forward.svg +0 -0
  209. data/app/{javascript → frontend}/editor/assets/zondicons/gift.svg +0 -0
  210. data/app/{javascript → frontend}/editor/assets/zondicons/globe.svg +0 -0
  211. data/app/{javascript → frontend}/editor/assets/zondicons/hand-stop.svg +0 -0
  212. data/app/{javascript → frontend}/editor/assets/zondicons/hard-drive.svg +0 -0
  213. data/app/{javascript → frontend}/editor/assets/zondicons/headphones.svg +0 -0
  214. data/app/{javascript → frontend}/editor/assets/zondicons/heart.svg +0 -0
  215. data/app/{javascript → frontend}/editor/assets/zondicons/home.svg +0 -0
  216. data/app/{javascript → frontend}/editor/assets/zondicons/hot.svg +0 -0
  217. data/app/{javascript → frontend}/editor/assets/zondicons/hour-glass.svg +0 -0
  218. data/app/{javascript → frontend}/editor/assets/zondicons/inbox-check.svg +0 -0
  219. data/app/{javascript → frontend}/editor/assets/zondicons/inbox-download.svg +0 -0
  220. data/app/{javascript → frontend}/editor/assets/zondicons/inbox-full.svg +0 -0
  221. data/app/{javascript → frontend}/editor/assets/zondicons/inbox.svg +0 -0
  222. data/app/{javascript → frontend}/editor/assets/zondicons/indent-decrease.svg +0 -0
  223. data/app/{javascript → frontend}/editor/assets/zondicons/indent-increase.svg +0 -0
  224. data/app/{javascript → frontend}/editor/assets/zondicons/information-outline.svg +0 -0
  225. data/app/{javascript → frontend}/editor/assets/zondicons/information-solid.svg +0 -0
  226. data/app/{javascript → frontend}/editor/assets/zondicons/key.svg +0 -0
  227. data/app/{javascript → frontend}/editor/assets/zondicons/keyboard.svg +0 -0
  228. data/app/{javascript → frontend}/editor/assets/zondicons/layers.svg +0 -0
  229. data/app/{javascript → frontend}/editor/assets/zondicons/library.svg +0 -0
  230. data/app/{javascript → frontend}/editor/assets/zondicons/light-bulb.svg +0 -0
  231. data/app/{javascript → frontend}/editor/assets/zondicons/link.svg +0 -0
  232. data/app/{javascript → frontend}/editor/assets/zondicons/list-add.svg +0 -0
  233. data/app/{javascript → frontend}/editor/assets/zondicons/list-bullet.svg +0 -0
  234. data/app/{javascript → frontend}/editor/assets/zondicons/list.svg +0 -0
  235. data/app/{javascript → frontend}/editor/assets/zondicons/load-balancer.svg +0 -0
  236. data/app/{javascript → frontend}/editor/assets/zondicons/location-current.svg +0 -0
  237. data/app/{javascript → frontend}/editor/assets/zondicons/location-food.svg +0 -0
  238. data/app/{javascript → frontend}/editor/assets/zondicons/location-gas-station.svg +0 -0
  239. data/app/{javascript → frontend}/editor/assets/zondicons/location-hotel.svg +0 -0
  240. data/app/{javascript → frontend}/editor/assets/zondicons/location-marina.svg +0 -0
  241. data/app/{javascript → frontend}/editor/assets/zondicons/location-park.svg +0 -0
  242. data/app/{javascript → frontend}/editor/assets/zondicons/location-restroom.svg +0 -0
  243. data/app/{javascript → frontend}/editor/assets/zondicons/location-shopping.svg +0 -0
  244. data/app/{javascript → frontend}/editor/assets/zondicons/location.svg +0 -0
  245. data/app/{javascript → frontend}/editor/assets/zondicons/lock-closed.svg +0 -0
  246. data/app/{javascript → frontend}/editor/assets/zondicons/lock-open.svg +0 -0
  247. data/app/{javascript → frontend}/editor/assets/zondicons/map.svg +0 -0
  248. data/app/{javascript → frontend}/editor/assets/zondicons/menu.svg +0 -0
  249. data/app/{javascript → frontend}/editor/assets/zondicons/mic.svg +0 -0
  250. data/app/{javascript → frontend}/editor/assets/zondicons/minus-outline.svg +0 -0
  251. data/app/{javascript → frontend}/editor/assets/zondicons/minus-solid.svg +0 -0
  252. data/app/{javascript → frontend}/editor/assets/zondicons/mobile-devices.svg +0 -0
  253. data/app/{javascript → frontend}/editor/assets/zondicons/mood-happy-outline.svg +0 -0
  254. data/app/{javascript → frontend}/editor/assets/zondicons/mood-happy-solid.svg +0 -0
  255. data/app/{javascript → frontend}/editor/assets/zondicons/mood-neutral-outline.svg +0 -0
  256. data/app/{javascript → frontend}/editor/assets/zondicons/mood-neutral-solid.svg +0 -0
  257. data/app/{javascript → frontend}/editor/assets/zondicons/mood-sad-outline.svg +0 -0
  258. data/app/{javascript → frontend}/editor/assets/zondicons/mood-sad-solid.svg +0 -0
  259. data/app/{javascript → frontend}/editor/assets/zondicons/mouse.svg +0 -0
  260. data/app/{javascript → frontend}/editor/assets/zondicons/music-album.svg +0 -0
  261. data/app/{javascript → frontend}/editor/assets/zondicons/music-artist.svg +0 -0
  262. data/app/{javascript → frontend}/editor/assets/zondicons/music-notes.svg +0 -0
  263. data/app/{javascript → frontend}/editor/assets/zondicons/music-playlist.svg +0 -0
  264. data/app/{javascript → frontend}/editor/assets/zondicons/navigation-more.svg +0 -0
  265. data/app/{javascript → frontend}/editor/assets/zondicons/network.svg +0 -0
  266. data/app/{javascript → frontend}/editor/assets/zondicons/news-paper.svg +0 -0
  267. data/app/{javascript → frontend}/editor/assets/zondicons/notification.svg +0 -0
  268. data/app/{javascript → frontend}/editor/assets/zondicons/notifications-outline.svg +0 -0
  269. data/app/{javascript → frontend}/editor/assets/zondicons/notifications.svg +0 -0
  270. data/app/{javascript → frontend}/editor/assets/zondicons/paste.svg +0 -0
  271. data/app/{javascript → frontend}/editor/assets/zondicons/pause-outline.svg +0 -0
  272. data/app/{javascript → frontend}/editor/assets/zondicons/pause-solid.svg +0 -0
  273. data/app/{javascript → frontend}/editor/assets/zondicons/pause.svg +0 -0
  274. data/app/{javascript → frontend}/editor/assets/zondicons/pen-tool.svg +0 -0
  275. data/app/{javascript → frontend}/editor/assets/zondicons/phone.svg +0 -0
  276. data/app/{javascript → frontend}/editor/assets/zondicons/photo.svg +0 -0
  277. data/app/{javascript → frontend}/editor/assets/zondicons/php-elephant.svg +0 -0
  278. data/app/{javascript → frontend}/editor/assets/zondicons/pin.svg +0 -0
  279. data/app/{javascript → frontend}/editor/assets/zondicons/play-outline.svg +0 -0
  280. data/app/{javascript → frontend}/editor/assets/zondicons/play.svg +0 -0
  281. data/app/{javascript → frontend}/editor/assets/zondicons/playlist.svg +0 -0
  282. data/app/{javascript → frontend}/editor/assets/zondicons/plugin.svg +0 -0
  283. data/app/{javascript → frontend}/editor/assets/zondicons/portfolio.svg +0 -0
  284. data/app/{javascript → frontend}/editor/assets/zondicons/printer.svg +0 -0
  285. data/app/{javascript → frontend}/editor/assets/zondicons/pylon.svg +0 -0
  286. data/app/{javascript → frontend}/editor/assets/zondicons/question.svg +0 -0
  287. data/app/{javascript → frontend}/editor/assets/zondicons/queue.svg +0 -0
  288. data/app/{javascript → frontend}/editor/assets/zondicons/radar copy 2.svg +0 -0
  289. data/app/{javascript → frontend}/editor/assets/zondicons/radar.svg +0 -0
  290. data/app/{javascript → frontend}/editor/assets/zondicons/radio.svg +0 -0
  291. data/app/{javascript → frontend}/editor/assets/zondicons/refresh.svg +0 -0
  292. data/app/{javascript → frontend}/editor/assets/zondicons/reload.svg +0 -0
  293. data/app/{javascript → frontend}/editor/assets/zondicons/reply-all.svg +0 -0
  294. data/app/{javascript → frontend}/editor/assets/zondicons/reply.svg +0 -0
  295. data/app/{javascript → frontend}/editor/assets/zondicons/repost.svg +0 -0
  296. data/app/{javascript → frontend}/editor/assets/zondicons/save-disk.svg +0 -0
  297. data/app/{javascript → frontend}/editor/assets/zondicons/screen-full.svg +0 -0
  298. data/app/{javascript → frontend}/editor/assets/zondicons/search.svg +0 -0
  299. data/app/{javascript → frontend}/editor/assets/zondicons/send.svg +0 -0
  300. data/app/{javascript → frontend}/editor/assets/zondicons/servers.svg +0 -0
  301. data/app/{javascript → frontend}/editor/assets/zondicons/share-01.svg +0 -0
  302. data/app/{javascript → frontend}/editor/assets/zondicons/share-alt.svg +0 -0
  303. data/app/{javascript → frontend}/editor/assets/zondicons/share.svg +0 -0
  304. data/app/{javascript → frontend}/editor/assets/zondicons/shield.svg +0 -0
  305. data/app/{javascript → frontend}/editor/assets/zondicons/shopping-cart.svg +0 -0
  306. data/app/{javascript → frontend}/editor/assets/zondicons/show-sidebar.svg +0 -0
  307. data/app/{javascript → frontend}/editor/assets/zondicons/shuffle.svg +0 -0
  308. data/app/{javascript → frontend}/editor/assets/zondicons/stand-by.svg +0 -0
  309. data/app/{javascript → frontend}/editor/assets/zondicons/star-full.svg +0 -0
  310. data/app/{javascript → frontend}/editor/assets/zondicons/station.svg +0 -0
  311. data/app/{javascript → frontend}/editor/assets/zondicons/step-backward.svg +0 -0
  312. data/app/{javascript → frontend}/editor/assets/zondicons/step-forward.svg +0 -0
  313. data/app/{javascript → frontend}/editor/assets/zondicons/stethoscope.svg +0 -0
  314. data/app/{javascript → frontend}/editor/assets/zondicons/store-front.svg +0 -0
  315. data/app/{javascript → frontend}/editor/assets/zondicons/stroke-width.svg +0 -0
  316. data/app/{javascript → frontend}/editor/assets/zondicons/subdirectory-left.svg +0 -0
  317. data/app/{javascript → frontend}/editor/assets/zondicons/subdirectory-right.svg +0 -0
  318. data/app/{javascript → frontend}/editor/assets/zondicons/swap.svg +0 -0
  319. data/app/{javascript → frontend}/editor/assets/zondicons/tablet.svg +0 -0
  320. data/app/{javascript → frontend}/editor/assets/zondicons/tag.svg +0 -0
  321. data/app/{javascript → frontend}/editor/assets/zondicons/target.svg +0 -0
  322. data/app/{javascript → frontend}/editor/assets/zondicons/text-box.svg +0 -0
  323. data/app/{javascript → frontend}/editor/assets/zondicons/text-decoration.svg +0 -0
  324. data/app/{javascript → frontend}/editor/assets/zondicons/thermometer.svg +0 -0
  325. data/app/{javascript → frontend}/editor/assets/zondicons/thumbs-down.svg +0 -0
  326. data/app/{javascript → frontend}/editor/assets/zondicons/thumbs-up.svg +0 -0
  327. data/app/{javascript → frontend}/editor/assets/zondicons/ticket.svg +0 -0
  328. data/app/{javascript → frontend}/editor/assets/zondicons/time.svg +0 -0
  329. data/app/{javascript → frontend}/editor/assets/zondicons/timer.svg +0 -0
  330. data/app/{javascript → frontend}/editor/assets/zondicons/tools copy.svg +0 -0
  331. data/app/{javascript → frontend}/editor/assets/zondicons/translate.svg +0 -0
  332. data/app/{javascript → frontend}/editor/assets/zondicons/trash.svg +0 -0
  333. data/app/{javascript → frontend}/editor/assets/zondicons/travel-bus.svg +0 -0
  334. data/app/{javascript → frontend}/editor/assets/zondicons/travel-car.svg +0 -0
  335. data/app/{javascript → frontend}/editor/assets/zondicons/travel-case.svg +0 -0
  336. data/app/{javascript → frontend}/editor/assets/zondicons/travel-taxi-cab.svg +0 -0
  337. data/app/{javascript → frontend}/editor/assets/zondicons/travel-train.svg +0 -0
  338. data/app/{javascript → frontend}/editor/assets/zondicons/travel-walk.svg +0 -0
  339. data/app/{javascript → frontend}/editor/assets/zondicons/travel.svg +0 -0
  340. data/app/{javascript → frontend}/editor/assets/zondicons/trophy.svg +0 -0
  341. data/app/{javascript → frontend}/editor/assets/zondicons/tuning.svg +0 -0
  342. data/app/{javascript → frontend}/editor/assets/zondicons/upload.svg +0 -0
  343. data/app/{javascript → frontend}/editor/assets/zondicons/usb.svg +0 -0
  344. data/app/{javascript → frontend}/editor/assets/zondicons/user-add.svg +0 -0
  345. data/app/{javascript → frontend}/editor/assets/zondicons/user-group.svg +0 -0
  346. data/app/{javascript → frontend}/editor/assets/zondicons/user-solid-circle.svg +0 -0
  347. data/app/{javascript → frontend}/editor/assets/zondicons/user-solid-square.svg +0 -0
  348. data/app/{javascript → frontend}/editor/assets/zondicons/user.svg +0 -0
  349. data/app/{javascript → frontend}/editor/assets/zondicons/vector.svg +0 -0
  350. data/app/{javascript → frontend}/editor/assets/zondicons/video-camera.svg +0 -0
  351. data/app/{javascript → frontend}/editor/assets/zondicons/view-carousel.svg +0 -0
  352. data/app/{javascript → frontend}/editor/assets/zondicons/view-column.svg +0 -0
  353. data/app/{javascript → frontend}/editor/assets/zondicons/view-hide.svg +0 -0
  354. data/app/{javascript → frontend}/editor/assets/zondicons/view-list.svg +0 -0
  355. data/app/{javascript → frontend}/editor/assets/zondicons/view-show.svg +0 -0
  356. data/app/{javascript → frontend}/editor/assets/zondicons/view-tile.svg +0 -0
  357. data/app/{javascript → frontend}/editor/assets/zondicons/volume-down.svg +0 -0
  358. data/app/{javascript → frontend}/editor/assets/zondicons/volume-mute.svg +0 -0
  359. data/app/{javascript → frontend}/editor/assets/zondicons/volume-off.svg +0 -0
  360. data/app/{javascript → frontend}/editor/assets/zondicons/volume-up.svg +0 -0
  361. data/app/{javascript → frontend}/editor/assets/zondicons/wallet.svg +0 -0
  362. data/app/{javascript → frontend}/editor/assets/zondicons/watch.svg +0 -0
  363. data/app/{javascript → frontend}/editor/assets/zondicons/window-new.svg +0 -0
  364. data/app/{javascript → frontend}/editor/assets/zondicons/window-open.svg +0 -0
  365. data/app/{javascript → frontend}/editor/assets/zondicons/window.svg +0 -0
  366. data/app/{javascript → frontend}/editor/assets/zondicons/wrench.svg +0 -0
  367. data/app/{javascript → frontend}/editor/assets/zondicons/yin-yang.svg +0 -0
  368. data/app/{javascript → frontend}/editor/assets/zondicons/zoom-in.svg +0 -0
  369. data/app/{javascript → frontend}/editor/assets/zondicons/zoom-out.svg +0 -0
  370. data/app/{javascript → frontend}/editor/components/dynamic-form/dynamic-input.vue +0 -0
  371. data/app/{javascript → frontend}/editor/components/dynamic-form/index.vue +1 -1
  372. data/app/{javascript → frontend}/editor/components/errors/stale-record.vue +0 -0
  373. data/app/{javascript → frontend}/editor/components/header-nav/device-toggler.vue +0 -0
  374. data/app/{javascript → frontend}/editor/components/header-nav/index.vue +5 -5
  375. data/app/{javascript → frontend}/editor/components/header-nav/locale-toggler/index.vue +1 -1
  376. data/app/{javascript → frontend}/editor/components/header-nav/locale-toggler/locale-link.vue +0 -0
  377. data/app/{javascript → frontend}/editor/components/header-nav/preview-button.vue +1 -1
  378. data/app/{javascript → frontend}/editor/components/header-nav/preview-toggler.vue +0 -0
  379. data/app/{javascript → frontend}/editor/components/header-nav/publish-button.vue +2 -12
  380. data/app/{javascript → frontend}/editor/components/header-nav/save-button.vue +0 -9
  381. data/app/{javascript → frontend}/editor/components/header-nav/separator.vue +0 -0
  382. data/app/{javascript → frontend}/editor/components/icon-library/index.vue +0 -0
  383. data/app/{javascript → frontend}/editor/components/image-library/index.vue +2 -2
  384. data/app/{javascript → frontend}/editor/components/image-library/list-item.vue +0 -0
  385. data/app/{javascript → frontend}/editor/components/image-library/list.vue +1 -1
  386. data/app/{javascript → frontend}/editor/components/image-library/uploader.vue +1 -3
  387. data/app/{javascript → frontend}/editor/components/kit/accordion.vue +0 -0
  388. data/app/{javascript → frontend}/editor/components/kit/checkbox-input.vue +0 -0
  389. data/app/{javascript → frontend}/editor/components/kit/collection-item-input.vue +0 -0
  390. data/app/{javascript → frontend}/editor/components/kit/color-picker.vue +1 -1
  391. data/app/{javascript → frontend}/editor/components/kit/confirmation-button.vue +0 -0
  392. data/app/{javascript → frontend}/editor/components/kit/dropdown.vue +0 -0
  393. data/app/{javascript → frontend}/editor/components/kit/icon-input.vue +1 -1
  394. data/app/{javascript → frontend}/editor/components/kit/icon.vue +4 -6
  395. data/app/{javascript → frontend}/editor/components/kit/image-input.vue +1 -1
  396. data/app/{javascript → frontend}/editor/components/kit/index.js +23 -23
  397. data/app/{javascript → frontend}/editor/components/kit/link-input.vue +2 -2
  398. data/app/{javascript → frontend}/editor/components/kit/list-item-button.vue +0 -0
  399. data/app/{javascript → frontend}/editor/components/kit/modal-root.vue +0 -0
  400. data/app/{javascript → frontend}/editor/components/kit/modal.vue +0 -0
  401. data/app/{javascript → frontend}/editor/components/kit/page-icon.vue +0 -0
  402. data/app/{javascript → frontend}/editor/components/kit/pagination/button.vue +0 -0
  403. data/app/{javascript → frontend}/editor/components/kit/pagination/index.vue +1 -1
  404. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/block-button.vue +0 -0
  405. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/extensions/Doc.js +0 -0
  406. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/extensions/LineBreak.js +0 -0
  407. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/extensions/marks/Link.js +0 -0
  408. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/format-buttons.vue +0 -0
  409. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/link-buttons.vue +1 -1
  410. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/list-buttons.vue +0 -0
  411. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/menu-button.vue +0 -0
  412. data/app/{javascript → frontend}/editor/components/kit/rich-text-input/table-button.vue +0 -0
  413. data/app/{javascript → frontend}/editor/components/kit/rich-text-input.vue +0 -0
  414. data/app/{javascript → frontend}/editor/components/kit/search-input.vue +0 -0
  415. data/app/{javascript → frontend}/editor/components/kit/select-input.vue +1 -1
  416. data/app/{javascript → frontend}/editor/components/kit/simple-select.vue +0 -0
  417. data/app/{javascript → frontend}/editor/components/kit/submit-button.vue +0 -0
  418. data/app/{javascript → frontend}/editor/components/kit/tabs.vue +0 -0
  419. data/app/{javascript → frontend}/editor/components/kit/text-input.vue +0 -0
  420. data/app/{javascript → frontend}/editor/components/kit/textarea-input.vue +0 -0
  421. data/app/{javascript → frontend}/editor/components/link-picker/actions.vue +0 -0
  422. data/app/{javascript → frontend}/editor/components/link-picker/email.vue +0 -0
  423. data/app/{javascript → frontend}/editor/components/link-picker/index.vue +4 -4
  424. data/app/{javascript → frontend}/editor/components/link-picker/page.vue +0 -0
  425. data/app/{javascript → frontend}/editor/components/link-picker/url.vue +0 -0
  426. data/app/{javascript → frontend}/editor/components/page/edit.vue +2 -2
  427. data/app/{javascript → frontend}/editor/components/page/form/main.vue +0 -0
  428. data/app/{javascript → frontend}/editor/components/page/form/seo.vue +0 -0
  429. data/app/{javascript → frontend}/editor/components/page/list/index.vue +1 -1
  430. data/app/{javascript → frontend}/editor/components/page/list/list-item.vue +1 -1
  431. data/app/{javascript → frontend}/editor/components/page/new.vue +2 -2
  432. data/app/{javascript → frontend}/editor/components/section-block-pane/index.vue +1 -1
  433. data/app/{javascript → frontend}/editor/components/section-block-pane/setting-list.vue +1 -1
  434. data/app/{javascript → frontend}/editor/components/section-highlighter/bottom-actions.vue +0 -0
  435. data/app/{javascript → frontend}/editor/components/section-highlighter/index.vue +7 -16
  436. data/app/{javascript → frontend}/editor/components/section-highlighter/top-left-actions.vue +0 -0
  437. data/app/{javascript → frontend}/editor/components/section-highlighter/top-right-actions.vue +0 -0
  438. data/app/{javascript → frontend}/editor/components/section-list/index.vue +1 -1
  439. data/app/{javascript → frontend}/editor/components/section-list/list-item.vue +0 -0
  440. data/app/{javascript → frontend}/editor/components/section-pane/block-list/index.vue +2 -2
  441. data/app/{javascript → frontend}/editor/components/section-pane/block-list/list-item.vue +0 -0
  442. data/app/{javascript → frontend}/editor/components/section-pane/block-list/new-block-button.vue +0 -0
  443. data/app/{javascript → frontend}/editor/components/section-pane/block-tree/index.vue +2 -2
  444. data/app/{javascript → frontend}/editor/components/section-pane/block-tree/new-nested-block-button.vue +0 -0
  445. data/app/{javascript → frontend}/editor/components/section-pane/block-tree/tree-node.vue +2 -2
  446. data/app/{javascript → frontend}/editor/components/section-pane/index.vue +3 -3
  447. data/app/{javascript → frontend}/editor/components/section-pane/setting-list.vue +1 -1
  448. data/app/{javascript → frontend}/editor/components/sidebar-nav.vue +1 -1
  449. data/app/{javascript → frontend}/editor/components/style-pane/index.vue +1 -1
  450. data/app/{javascript → frontend}/editor/components/theme-section-list/index.vue +1 -1
  451. data/app/{javascript → frontend}/editor/components/theme-section-list/list-item.vue +0 -0
  452. data/app/{javascript → frontend}/editor/design/application.scss +0 -0
  453. data/app/{javascript → frontend}/editor/design/components/buttons.scss +0 -0
  454. data/app/{javascript → frontend}/editor/design/components/modal.scss +0 -0
  455. data/app/{javascript → frontend}/editor/design/components/rich-text-editor.scss +0 -0
  456. data/app/{javascript → frontend}/editor/design/components/tooltip.scss +0 -0
  457. data/app/{javascript → frontend}/editor/design/components/tree.scss +0 -0
  458. data/app/frontend/editor/design/helpers.scss +9 -0
  459. data/app/{javascript → frontend}/editor/design/transitions.scss +0 -0
  460. data/app/{javascript → frontend}/editor/layouts/app.vue +3 -3
  461. data/app/{javascript → frontend}/editor/layouts/default.vue +0 -0
  462. data/app/{javascript → frontend}/editor/layouts/slide-pane.vue +0 -0
  463. data/app/{javascript → frontend}/editor/locales/editor.en.json +0 -0
  464. data/app/{javascript → frontend}/editor/locales/editor.fr.json +0 -0
  465. data/app/{javascript → frontend}/editor/locales/index.js +1 -1
  466. data/app/{javascript → frontend}/editor/main.js +5 -3
  467. data/app/frontend/editor/misc/__tests__/utils.spec.js +8 -0
  468. data/app/{javascript/editor → frontend/editor/misc}/utils.js +0 -0
  469. data/app/{javascript → frontend}/editor/mixins/error-modal.js +1 -1
  470. data/app/{javascript → frontend}/editor/mixins/focused-input.js +0 -0
  471. data/app/{javascript → frontend}/editor/mixins/global.js +1 -2
  472. data/app/{javascript → frontend}/editor/mixins/grouped-dropdowns.js +0 -0
  473. data/app/{javascript → frontend}/editor/mixins/index.js +0 -0
  474. data/app/{javascript → frontend}/editor/mixins/preview-transformation.js +0 -0
  475. data/app/{javascript → frontend}/editor/plugins/event-bus.js +0 -0
  476. data/app/{javascript → frontend}/editor/plugins/filters.js +1 -1
  477. data/app/{javascript → frontend}/editor/plugins/i18n.js +0 -0
  478. data/app/{javascript → frontend}/editor/plugins/index.js +0 -0
  479. data/app/{javascript → frontend}/editor/plugins/tooltip.js +0 -0
  480. data/app/{javascript → frontend}/editor/router/index.js +1 -1
  481. data/app/{javascript → frontend}/editor/router/routes/base.js +4 -4
  482. data/app/{javascript → frontend}/editor/router/routes/index.js +0 -0
  483. data/app/{javascript → frontend}/editor/router/routes/page.js +3 -3
  484. data/app/{javascript → frontend}/editor/router/routes/section-block.js +2 -2
  485. data/app/{javascript → frontend}/editor/router/routes/section.js +4 -4
  486. data/app/{javascript → frontend}/editor/router/routes/style.js +2 -2
  487. data/app/{javascript → frontend}/editor/services/__tests__/page.spec.js +0 -0
  488. data/app/{javascript → frontend}/editor/services/__tests__/section.spec.js +0 -0
  489. data/app/{javascript → frontend}/editor/services/api.js +0 -0
  490. data/app/{javascript → frontend}/editor/services/block.js +0 -0
  491. data/app/{javascript → frontend}/editor/services/collection-item.js +0 -0
  492. data/app/{javascript → frontend}/editor/services/image.js +0 -1
  493. data/app/{javascript → frontend}/editor/services/index.js +2 -2
  494. data/app/frontend/editor/services/live-preview.js +121 -0
  495. data/app/{javascript → frontend}/editor/services/page.js +1 -1
  496. data/app/{javascript → frontend}/editor/services/section.js +1 -1
  497. data/app/{javascript → frontend}/editor/services/site.js +0 -0
  498. data/app/{javascript → frontend}/editor/services/theme.js +0 -0
  499. data/app/{javascript → frontend}/editor/spec/__mocks__/page.js +0 -0
  500. data/app/{javascript → frontend}/editor/spec/__mocks__/section.js +0 -0
  501. data/app/frontend/editor/spec/__mocks__/services.js +83 -0
  502. data/app/{javascript → frontend}/editor/spec/__mocks__/site.js +0 -0
  503. data/app/{javascript → frontend}/editor/spec/__mocks__/theme.js +0 -0
  504. data/app/{javascript → frontend}/editor/store/__tests__/getters.spec.js +6 -5
  505. data/app/{javascript → frontend}/editor/store/actions/__tests__/page.spec.js +16 -12
  506. data/app/{javascript → frontend}/editor/store/actions/__tests__/section-block.spec.js +14 -13
  507. data/app/{javascript → frontend}/editor/store/actions/__tests__/section.spec.js +5 -4
  508. data/app/{javascript → frontend}/editor/store/actions/index.js +5 -8
  509. data/app/{javascript → frontend}/editor/store/actions/page.js +2 -2
  510. data/app/{javascript → frontend}/editor/store/actions/section-block.js +12 -29
  511. data/app/{javascript → frontend}/editor/store/actions/section.js +11 -22
  512. data/app/{javascript → frontend}/editor/store/actions/site.js +2 -6
  513. data/app/{javascript → frontend}/editor/store/default-state.js +0 -1
  514. data/app/{javascript → frontend}/editor/store/getters.js +10 -0
  515. data/app/{javascript → frontend}/editor/store/index.js +0 -0
  516. data/app/{javascript → frontend}/editor/store/mutations.js +8 -4
  517. data/app/{javascript → frontend}/editor/views/content-pane.vue +3 -3
  518. data/app/{javascript → frontend}/editor/views/page-preview.vue +3 -14
  519. data/app/{javascript → frontend}/editor/views/pages/edit.vue +2 -2
  520. data/app/{javascript → frontend}/editor/views/pages/index.vue +3 -3
  521. data/app/{javascript → frontend}/editor/views/sections/add-pane.vue +2 -2
  522. data/app/{javascript → frontend}/editor/views/sections/list-pane.vue +2 -2
  523. data/app/{javascript → frontend}/editor/views/slide-pane.vue +1 -1
  524. data/app/{javascript → frontend}/editor/views/slide-pane2.vue +1 -1
  525. data/app/{javascript → frontend}/editor/views/style/edit-pane.vue +2 -2
  526. data/app/frontend/entrypoints/admin.js +3 -0
  527. data/app/{javascript/style/application.scss → frontend/entrypoints/admin.scss} +0 -0
  528. data/app/frontend/entrypoints/editor.js +8 -0
  529. data/app/frontend/entrypoints/live-preview-client.js +6 -0
  530. data/app/frontend/entrypoints/live-preview-rails-client.js +9 -0
  531. data/app/{assets/images/maglev → frontend/images}/favicon.png +0 -0
  532. data/app/{assets/images/maglev → frontend/images}/logo.png +0 -0
  533. data/app/frontend/live-preview-client/iframe-decorator.js +196 -0
  534. data/app/frontend/live-preview-client/index.js +12 -0
  535. data/app/frontend/live-preview-client/message.js +46 -0
  536. data/app/frontend/live-preview-client/rails.js +204 -0
  537. data/app/frontend/live-preview-client/utils.js +22 -0
  538. data/app/helpers/maglev/application_helper.rb +18 -4
  539. data/app/helpers/maglev/editor_helper.rb +12 -2
  540. data/app/models/maglev/asset.rb +1 -1
  541. data/app/views/layouts/maglev/admin/application.html.erb +5 -4
  542. data/app/views/maglev/editor/show.html.erb +3 -3
  543. data/app/views/maglev/settings/index.html.erb +11 -0
  544. data/bin/vite +29 -0
  545. data/config/routes.rb +10 -0
  546. data/config/vite.json +16 -0
  547. data/lib/generators/maglev/install_generator.rb +1 -1
  548. data/lib/generators/maglev/section_generator.rb +2 -1
  549. data/lib/generators/maglev/templates/install/config/initializers/maglev.rb +6 -0
  550. data/lib/generators/maglev/templates/section/app/theme/sections/%category%/%file_name%.yml.tt +2 -2
  551. data/lib/generators/maglev/templates/theme/app/views/theme/layout.html.erb.tt +2 -0
  552. data/lib/maglev/engine.rb +25 -20
  553. data/lib/maglev/theme_filesystem_loader.rb +9 -1
  554. data/lib/maglev/version.rb +1 -1
  555. data/lib/maglev.rb +0 -7
  556. data/lib/tasks/maglev_tasks.rake +66 -40
  557. data/package.json +19 -46
  558. data/postcss.config.js +16 -12
  559. data/tailwind.config.js +8 -11
  560. data/yarn.lock +1234 -9886
  561. metadata +547 -542
  562. data/app/javascript/editor/design/helpers.scss +0 -30
  563. data/app/javascript/editor/services/inline-editing.js +0 -403
  564. data/app/javascript/editor/spec/__mocks__/services.js +0 -77
  565. data/app/javascript/packs/application.js +0 -8
  566. data/app/javascript/packs/editor.js +0 -2
  567. data/app/javascript/style/application/_changes.scss +0 -1
  568. data/app/javascript/style/application/_variables.scss +0 -0
  569. data/bin/webpack +0 -18
  570. data/bin/webpack-dev-server +0 -18
  571. data/config/initializers/assets.rb +0 -24
  572. data/config/webpack/development.js +0 -5
  573. data/config/webpack/environment.js +0 -38
  574. data/config/webpack/loaders/optional_chaining.js +0 -10
  575. data/config/webpack/loaders/vue.js +0 -6
  576. data/config/webpack/production.js +0 -5
  577. data/config/webpack/test.js +0 -5
  578. data/config/webpacker.yml +0 -95
@@ -13,7 +13,7 @@ const router = new VueRouter({
13
13
 
14
14
  router.beforeEach((to, from, next) => {
15
15
  if (to.params.pageId !== from.params.pageId && from.params.pageId)
16
- store.dispatch('setPreviewDocument', null) // force the display of the loader
16
+ store.dispatch('resetPreview') // force the display of the loader
17
17
  next()
18
18
  })
19
19
 
@@ -1,7 +1,7 @@
1
- import AppLayout from '@/layouts/app'
2
- import PagePreview from '@/views/page-preview'
3
- import SlidePane from '@/views/slide-pane'
4
- import SlidePane2 from '@/views/slide-pane2'
1
+ import AppLayout from '@/layouts/app.vue'
2
+ import PagePreview from '@/views/page-preview.vue'
3
+ import SlidePane from '@/views/slide-pane.vue'
4
+ import SlidePane2 from '@/views/slide-pane2.vue'
5
5
  import pageRoutes from './page'
6
6
  import sectionRoutes from './section'
7
7
  import sectionBlockRoutes from './section-block'
@@ -1,6 +1,6 @@
1
- import PagePreview from '@/views/page-preview'
2
- import PageList from '@/views/pages/index'
3
- import EditPage from '@/views/pages/edit'
1
+ import PagePreview from '@/views/page-preview.vue'
2
+ import PageList from '@/views/pages/index.vue'
3
+ import EditPage from '@/views/pages/edit.vue'
4
4
 
5
5
  export default [
6
6
  {
@@ -1,5 +1,5 @@
1
- import PagePreview from '@/views/page-preview'
2
- import ContentPane from '@/views/content-pane'
1
+ import PagePreview from '@/views/page-preview.vue'
2
+ import ContentPane from '@/views/content-pane.vue'
3
3
 
4
4
  export default [
5
5
  {
@@ -1,7 +1,7 @@
1
- import PagePreview from '@/views/page-preview'
2
- import ContentPane from '@/views/content-pane'
3
- import SectionAddPane from '@/views/sections/add-pane'
4
- import SectionListPane from '@/views/sections/list-pane'
1
+ import PagePreview from '@/views/page-preview.vue'
2
+ import ContentPane from '@/views/content-pane.vue'
3
+ import SectionAddPane from '@/views/sections/add-pane.vue'
4
+ import SectionListPane from '@/views/sections/list-pane.vue'
5
5
 
6
6
  export default [
7
7
  {
@@ -1,5 +1,5 @@
1
- import PagePreview from '@/views/page-preview'
2
- import EditStylePane from '@/views/style/edit-pane'
1
+ import PagePreview from '@/views/page-preview.vue'
2
+ import EditStylePane from '@/views/style/edit-pane.vue'
3
3
 
4
4
  export default [
5
5
  {
File without changes
@@ -1,6 +1,5 @@
1
1
  export default (api) => ({
2
2
  findAll: (page, perPage, query) => {
3
- console.log('[ImageService] Fetching all the images, page #', page, query)
4
3
  const options = { params: { page, perPage, query, assetType: 'image' } }
5
4
  return api.get('/assets', options).then(({ data }) => data)
6
5
  },
@@ -6,7 +6,7 @@ import buildCollectionItemService from './collection-item'
6
6
  import buildImageService from './image'
7
7
  import * as section from './section'
8
8
  import * as block from './block'
9
- import * as inlineEditing from './inline-editing'
9
+ import * as livePreview from './live-preview'
10
10
 
11
11
  export default {
12
12
  api,
@@ -16,6 +16,6 @@ export default {
16
16
  section,
17
17
  block,
18
18
  image: buildImageService(api),
19
- inlineEditing,
19
+ livePreview,
20
20
  collectionItem: buildCollectionItemService(api),
21
21
  }
@@ -0,0 +1,121 @@
1
+ import router from '@/router'
2
+ import store from '@/store'
3
+
4
+ let iframe = null
5
+
6
+ // === Section related actions ===
7
+ export const addSection = (content, section, insertAt) => {
8
+ postMessage('section:add', { content, section, insertAt })
9
+ }
10
+
11
+ export const moveSection = (content, sectionId, targetSectionId, direction) => {
12
+ postMessage('section:move', {
13
+ content,
14
+ sectionId,
15
+ targetSectionId,
16
+ direction,
17
+ })
18
+ }
19
+
20
+ // the editor modifies the content of a section setting
21
+ export const updateSection = (content, section, change) => {
22
+ postMessage('section:update', { content, section, change })
23
+ }
24
+
25
+ export const removeSection = (sectionId) => {
26
+ postMessage('section:remove', { sectionId })
27
+ }
28
+
29
+ // === Block related actions ===
30
+ export const addBlock = (content, section, sectionBlock) => {
31
+ postMessage('block:add', { content, section, sectionBlock })
32
+ }
33
+
34
+ export const moveBlock = (content, section) => {
35
+ postMessage('block:move', { content, section })
36
+ }
37
+
38
+ export const updateBlock = (content, section, sectionBlock, change) => {
39
+ postMessage('block:update', { content, section, sectionBlock, change })
40
+ }
41
+
42
+ export const removeBlock = (content, section, sectionBlockId) => {
43
+ postMessage('block:remove', { content, section, sectionBlockId })
44
+ }
45
+
46
+ // === Other actions ===
47
+
48
+ export const updateStyle = (content, style) => {
49
+ postMessage('style:update', { content, style })
50
+ }
51
+
52
+ // Start everything
53
+ export const start = (newIframe) => {
54
+ // keep a reference to the current iframe
55
+ iframe = newIframe
56
+
57
+ // say hi to the iFrame by giving it the configuration
58
+ postMessage('config', {
59
+ primaryColor: store.state.editorSettings.primaryColor,
60
+ stickySectionIds: store.getters.stickySectionList.map(
61
+ (section) => section.id,
62
+ ),
63
+ })
64
+
65
+ // treat all the message coming from the iFrame
66
+ listenMessages()
67
+ }
68
+
69
+ const listenMessages = () => {
70
+ window.addEventListener('message', ({ data: { type, ...data } }) => {
71
+ // a message MUST have a type
72
+ if (!type) return
73
+
74
+ switch (type) {
75
+ case 'ready':
76
+ store.dispatch('markPreviewAsReady')
77
+ break
78
+ case 'scroll':
79
+ notifyScrolling(data.boundingRect)
80
+ break
81
+ case 'section:hover': {
82
+ store.dispatch('hoverSection', {
83
+ sectionId: data.sectionId,
84
+ sectionRect: data.sectionRect,
85
+ sectionOffsetTop: data.sectionOffsetTop, //sectionOffsetHeight,
86
+ })
87
+ break
88
+ }
89
+ case 'section:leave':
90
+ store.dispatch('leaveSection')
91
+ break
92
+ case 'section:setting:clicked':
93
+ openSettingPane('editSectionSetting', data)
94
+ break
95
+ case 'sectionBlock:setting:clicked':
96
+ openSettingPane('editSectionBlockSetting', data)
97
+ break
98
+ default:
99
+ break
100
+ }
101
+ })
102
+ }
103
+
104
+ const postMessage = (type, data) => {
105
+ if (!iframe) return null
106
+ iframe.contentWindow.postMessage({ type, ...(data || {}) }, '*')
107
+ }
108
+
109
+ const openSettingPane = (name, params) => {
110
+ let route = { name, params, hash: '#content' }
111
+ router.push(route).catch((err) => {
112
+ if (err.name !== 'NavigationDuplicated') throw err
113
+ })
114
+ }
115
+
116
+ const notifyScrolling = (boundingRect) => {
117
+ const event = new CustomEvent('maglev:preview:scroll', {
118
+ detail: { boundingRect },
119
+ })
120
+ window.dispatchEvent(event)
121
+ }
@@ -3,7 +3,7 @@ import {
3
3
  denormalize as coreDenormalize,
4
4
  schema,
5
5
  } from 'normalizr'
6
- import { pick } from '@/utils'
6
+ import { pick } from '@/misc/utils'
7
7
 
8
8
  export const BLOCK_SCHEMA = new schema.Entity('blocks')
9
9
  export const SECTION_SCHEMA = new schema.Entity('sections', {
@@ -1,4 +1,4 @@
1
- import { isBlank, uuid8, camelize } from '@/utils'
1
+ import { isBlank, uuid8, camelize } from '@/misc/utils'
2
2
  import { normalize as coreNormalize } from 'normalizr'
3
3
  import { SECTION_SCHEMA } from './page'
4
4
 
@@ -0,0 +1,83 @@
1
+ import { vi } from 'vitest'
2
+
3
+ const apiService = {
4
+ setSiteHandle: vi.fn(),
5
+ setSiteLocale: vi.fn(),
6
+ get: vi.fn(),
7
+ post: vi.fn(),
8
+ put: vi.fn(),
9
+ destroy: vi.fn(),
10
+ }
11
+
12
+ const siteService = {
13
+ find: vi.fn(),
14
+ }
15
+
16
+ const themeService = {
17
+ buildCategories: vi.fn(),
18
+ }
19
+
20
+ const pageService = {
21
+ isIndex: vi.fn(),
22
+ build: vi.fn(),
23
+ findAll: vi.fn(),
24
+ findById: vi.fn(),
25
+ create: vi.fn(),
26
+ update: vi.fn(),
27
+ updateSettings: vi.fn(),
28
+ setVisible: vi.fn(),
29
+ clone: vi.fn(),
30
+ destroy: vi.fn(),
31
+ normalize: vi.fn(),
32
+ denormalize: vi.fn(),
33
+ }
34
+
35
+ const sectionService = {
36
+ calculateMovingIndices: vi.fn(),
37
+ canBeAddedToPage: vi.fn(),
38
+ normalize: vi.fn(),
39
+ build: vi.fn(),
40
+ getSettings: vi.fn(),
41
+ buildDefaultBlock: vi.fn(),
42
+ }
43
+
44
+ const blockService = {
45
+ encodeToTree: vi.fn(),
46
+ decodeTree: vi.fn(),
47
+ }
48
+
49
+ const imageService = {
50
+ findAll: vi.fn(),
51
+ find: vi.fn(),
52
+ create: vi.fn(),
53
+ destroy: vi.fn(),
54
+ }
55
+
56
+ const livePreviewService = {
57
+ start: vi.fn(),
58
+ updateStyle: vi.fn(),
59
+ addSection: vi.fn(),
60
+ moveSection: vi.fn(),
61
+ updateSection: vi.fn(),
62
+ removeSection: vi.fn(),
63
+ addBlock: vi.fn(),
64
+ moveBlock: vi.fn(),
65
+ updateBlock: vi.fn(),
66
+ removeBlock: vi.fn(),
67
+ }
68
+
69
+ const collectionItemService = {
70
+ findAll: vi.fn(),
71
+ }
72
+
73
+ export default {
74
+ api: apiService,
75
+ site: siteService,
76
+ theme: themeService,
77
+ page: pageService,
78
+ section: sectionService,
79
+ block: blockService,
80
+ image: imageService,
81
+ livePreview: livePreviewService,
82
+ collectionItem: collectionItemService,
83
+ }
@@ -1,4 +1,5 @@
1
1
  import Vuex from 'vuex'
2
+ import { vi } from 'vitest'
2
3
  import { createLocalVue } from '@vue/test-utils'
3
4
  import defaultState from '@/store/default-state'
4
5
  import buildGetters from '@/store/getters'
@@ -30,7 +31,7 @@ describe('Getters', () => {
30
31
 
31
32
  describe('#content', () => {
32
33
  it('returns the content of the sections for the page', () => {
33
- mockedServices.page.denormalize = jest.fn(() => page)
34
+ mockedServices.page.denormalize = vi.fn(() => page)
34
35
  expect(
35
36
  store.getters.content.pageSections.map((section) => section.id),
36
37
  ).toStrictEqual(['GrYZW-VP', '8hKSujtd', 'xM6f-kyh'])
@@ -40,7 +41,7 @@ describe('Getters', () => {
40
41
  })
41
42
  it('returns the site content sections since they have been touched', () => {
42
43
  store.commit('TOUCH_SECTION', 'GrYZW-VP')
43
- mockedServices.page.denormalize = jest.fn(() => page)
44
+ mockedServices.page.denormalize = vi.fn(() => page)
44
45
  expect(
45
46
  store.getters.content.pageSections.map((section) => section.id),
46
47
  ).toStrictEqual(['GrYZW-VP', '8hKSujtd', 'xM6f-kyh'])
@@ -55,7 +56,7 @@ describe('Getters', () => {
55
56
  it('returns the title + path', () => {
56
57
  const newNormalizedPage = { ...normalizedPage }
57
58
  newNormalizedPage.entities.page['1'].translated = false
58
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
59
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
59
60
  store.commit('SET_PAGE', page)
60
61
  expect(store.getters.defaultPageAttributes).toStrictEqual({
61
62
  title: 'Home page',
@@ -67,7 +68,7 @@ describe('Getters', () => {
67
68
  it('returns an empty object', () => {
68
69
  const newNormalizedPage = { ...normalizedPage }
69
70
  newNormalizedPage.entities.page['1'].translated = true
70
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
71
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
71
72
  store.commit('SET_PAGE', page)
72
73
  expect(store.getters.defaultPageAttributes).toStrictEqual({})
73
74
  })
@@ -76,7 +77,7 @@ describe('Getters', () => {
76
77
 
77
78
  describe('#sectionList', () => {
78
79
  it('returns a list of objects (id, type, name, viewportFixedPosition)', () => {
79
- mockedServices.page.denormalize = jest.fn(() => page)
80
+ mockedServices.page.denormalize = vi.fn(() => page)
80
81
  expect(store.getters.sectionList).toStrictEqual([
81
82
  {
82
83
  id: 'GrYZW-VP',
@@ -1,4 +1,5 @@
1
1
  import Vuex from 'vuex'
2
+ import { vi } from 'vitest'
2
3
  import { createLocalVue } from '@vue/test-utils'
3
4
  import defaultState from '@/store/default-state'
4
5
  import buildActions from '@/store/actions'
@@ -32,11 +33,11 @@ describe('Page Actions', () => {
32
33
 
33
34
  describe('#persistPage', () => {
34
35
  it('calls the API with both site and page attributes', async () => {
35
- mockedServices.site.find = jest.fn(async () => site)
36
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
37
- mockedServices.page.denormalize = jest.fn(() => page)
38
- mockedServices.page.findById = jest.fn(async () => page)
39
- mockedServices.page.update = jest.fn(async () => ({
36
+ mockedServices.site.find = vi.fn(async () => site)
37
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
38
+ mockedServices.page.denormalize = vi.fn(() => page)
39
+ mockedServices.page.findById = vi.fn(async () => page)
40
+ mockedServices.page.update = vi.fn(async () => ({
40
41
  response: { status: 200 },
41
42
  }))
42
43
  store.commit('SET_PAGE', page)
@@ -47,16 +48,18 @@ describe('Page Actions', () => {
47
48
  sections: expect.any(Array),
48
49
  lockVersion: 1,
49
50
  },
50
- {},
51
+ {
52
+ style: null,
53
+ },
51
54
  )
52
55
  expect(store.state.ui.saveButtonState).toEqual('success')
53
56
  })
54
57
  it('calls the API without the site attributes because no site scoped section has been modified', async () => {
55
- mockedServices.site.find = jest.fn(async () => site)
56
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
57
- mockedServices.page.denormalize = jest.fn(() => page)
58
- mockedServices.page.findById = jest.fn(async () => page)
59
- mockedServices.page.update = jest.fn(async () => ({
58
+ mockedServices.site.find = vi.fn(async () => site)
59
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
60
+ mockedServices.page.denormalize = vi.fn(() => page)
61
+ mockedServices.page.findById = vi.fn(async () => page)
62
+ mockedServices.page.update = vi.fn(async () => ({
60
63
  response: { status: 200 },
61
64
  }))
62
65
  store.commit('SET_PAGE', page)
@@ -71,6 +74,7 @@ describe('Page Actions', () => {
71
74
  {
72
75
  sections: expect.any(Array),
73
76
  lockVersion: 1,
77
+ style: null,
74
78
  },
75
79
  )
76
80
  expect(store.state.touchedSections).toEqual([])
@@ -80,7 +84,7 @@ describe('Page Actions', () => {
80
84
 
81
85
  describe('#setCurrentPageSettings', () => {
82
86
  it('does stuff', async () => {
83
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
87
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
84
88
  store.commit('SET_PAGE', page)
85
89
  await store.dispatch('setCurrentPageSettings', {
86
90
  title: 'UPDATED TITLE',
@@ -1,4 +1,5 @@
1
1
  import Vuex from 'vuex'
2
+ import { vi } from 'vitest'
2
3
  import { createLocalVue } from '@vue/test-utils'
3
4
  import defaultState from '@/store/default-state'
4
5
  import buildActions from '@/store/actions'
@@ -36,12 +37,12 @@ describe('SectionBlock Actions', () => {
36
37
 
37
38
  describe('#addSectionBlock', () => {
38
39
  it('marks the current section as touched', async () => {
39
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
40
- mockedServices.page.denormalize = jest.fn(() => page)
41
- mockedServices.section.normalize = jest.fn(
40
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
41
+ mockedServices.page.denormalize = vi.fn(() => page)
42
+ mockedServices.section.normalize = vi.fn(
42
43
  () => normalizedNavContentSection,
43
44
  )
44
- mockedServices.section.buildDefaultBlock = jest.fn(
45
+ mockedServices.section.buildDefaultBlock = vi.fn(
45
46
  () => navContentSectionBlock,
46
47
  )
47
48
  store.commit('SET_PAGE', page)
@@ -56,9 +57,9 @@ describe('SectionBlock Actions', () => {
56
57
 
57
58
  describe('#removeSectionBlock', () => {
58
59
  it('marks the current section as touched', async () => {
59
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
60
- mockedServices.page.denormalize = jest.fn(() => page)
61
- mockedServices.section.normalize = jest.fn(
60
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
61
+ mockedServices.page.denormalize = vi.fn(() => page)
62
+ mockedServices.section.normalize = vi.fn(
62
63
  () => normalizedNavContentSection,
63
64
  )
64
65
  store.commit('SET_PAGE', page)
@@ -70,9 +71,9 @@ describe('SectionBlock Actions', () => {
70
71
 
71
72
  describe('#sortSectionBlocks', () => {
72
73
  it('marks the current section as touched', async () => {
73
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
74
- mockedServices.page.denormalize = jest.fn(() => page)
75
- mockedServices.section.normalize = jest.fn(
74
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
75
+ mockedServices.page.denormalize = vi.fn(() => page)
76
+ mockedServices.section.normalize = vi.fn(
76
77
  () => normalizedNavContentSection,
77
78
  )
78
79
  store.commit('SET_PAGE', page)
@@ -89,9 +90,9 @@ describe('SectionBlock Actions', () => {
89
90
 
90
91
  describe('#updateSectionBlockContent', () => {
91
92
  it('marks the current section as touched', async () => {
92
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
93
- mockedServices.page.denormalize = jest.fn(() => page)
94
- mockedServices.section.normalize = jest.fn(
93
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
94
+ mockedServices.page.denormalize = vi.fn(() => page)
95
+ mockedServices.section.normalize = vi.fn(
95
96
  () => normalizedNavContentSection,
96
97
  )
97
98
  store.commit('SET_PAGE', page)
@@ -1,4 +1,5 @@
1
1
  import Vuex from 'vuex'
2
+ import { vi } from 'vitest'
2
3
  import { createLocalVue } from '@vue/test-utils'
3
4
  import defaultState from '@/store/default-state'
4
5
  import buildActions from '@/store/actions'
@@ -36,10 +37,10 @@ describe('Section Actions', () => {
36
37
 
37
38
  describe('#addSection', () => {
38
39
  it('marks the new section as touched', async () => {
39
- mockedServices.section.build = jest.fn(() => simpleContentSection)
40
- mockedServices.page.normalize = jest.fn(() => normalizedPage)
41
- mockedServices.page.denormalize = jest.fn(() => page)
42
- mockedServices.section.normalize = jest.fn(
40
+ mockedServices.section.build = vi.fn(() => simpleContentSection)
41
+ mockedServices.page.normalize = vi.fn(() => normalizedPage)
42
+ mockedServices.page.denormalize = vi.fn(() => page)
43
+ mockedServices.section.normalize = vi.fn(
43
44
  () => normalizedSimpleContentSection,
44
45
  )
45
46
  store.commit('SET_PAGE', page)
@@ -14,14 +14,11 @@ export default (services) => ({
14
14
  services.api.setLocale(locale)
15
15
  commit('SET_LOCALE', locale)
16
16
  },
17
- setPreviewDocument({ commit }, previewDocument) {
18
- commit('SET_PREVIEW_DOCUMENT', previewDocument)
19
- if (previewDocument) {
20
- services.inlineEditing.setup(previewDocument)
21
- } else {
22
- commit('SET_SECTION', null)
23
- commit('SET_HOVERED_SECTION', null)
24
- }
17
+ markPreviewAsReady({ commit }) {
18
+ commit('MARK_PREVIEW_AS_READY')
19
+ },
20
+ resetPreview({ commit }) {
21
+ commit('RESET_PREVIEW')
25
22
  },
26
23
  fetchEditorSettings({ commit }) {
27
24
  commit('SET_EDITOR_SETTINGS', {
@@ -1,4 +1,4 @@
1
- import { isBlank } from '@/utils'
1
+ import { isBlank } from '@/misc/utils'
2
2
 
3
3
  export default (services) => ({
4
4
  // Fetch a page from an id (or a path)
@@ -33,7 +33,7 @@ export default (services) => ({
33
33
  style,
34
34
  }
35
35
 
36
- services.page
36
+ return services.page
37
37
  .update(page.id, pageAttributes, siteAttributes)
38
38
  .then(() => {
39
39
  commit('SET_SAVE_BUTTON_STATE', 'success')
@@ -11,7 +11,7 @@ export default (services) => ({
11
11
  return sectionBlock
12
12
  },
13
13
  addSectionBlock(
14
- { commit, getters, state: { previewDocument, section, sectionDefinition } },
14
+ { commit, getters, state: { section, sectionDefinition } },
15
15
  { blockType, parentId },
16
16
  ) {
17
17
  const sectionBlock = services.section.buildDefaultBlock(
@@ -21,52 +21,35 @@ export default (services) => ({
21
21
  if (parentId) sectionBlock.parentId = parentId
22
22
  commit('ADD_SECTION_BLOCK', sectionBlock)
23
23
  commit('TOUCH_SECTION', section.id)
24
- services.inlineEditing.updateSectionSetting(
25
- previewDocument,
24
+ services.livePreview.addBlock(
26
25
  getters.content,
27
- section,
26
+ getters.denormalizedSection,
28
27
  sectionBlock,
29
- null,
30
28
  )
31
29
  },
32
- removeSectionBlock(
33
- { commit, getters, state: { previewDocument, section } },
34
- id,
35
- ) {
30
+ removeSectionBlock({ commit, getters, state: { section } }, id) {
36
31
  commit('REMOVE_SECTION_BLOCK', id)
37
32
  commit('TOUCH_SECTION', section.id)
38
- services.inlineEditing.updateSectionSetting(
39
- previewDocument,
33
+ services.livePreview.removeBlock(
40
34
  getters.content,
41
- section,
42
- null,
43
- null,
35
+ getters.denormalizedSection,
36
+ id,
44
37
  )
45
38
  },
46
- sortSectionBlocks(
47
- { commit, getters, state: { previewDocument, section } },
48
- change,
49
- ) {
39
+ sortSectionBlocks({ commit, getters, state: { section } }, change) {
50
40
  commit('SORT_SECTION_BLOCKS', change)
51
41
  commit('TOUCH_SECTION', section.id)
52
- services.inlineEditing.updateSectionSetting(
53
- previewDocument,
54
- getters.content,
55
- section,
56
- null,
57
- null,
58
- )
42
+ services.livePreview.moveBlock(getters.content, getters.denormalizedSection)
59
43
  },
60
44
  updateSectionBlockContent(
61
- { commit, getters, state: { previewDocument, section, sectionBlock } },
45
+ { commit, getters, state: { section, sectionBlock } },
62
46
  change,
63
47
  ) {
64
48
  commit('UPDATE_SECTION_BLOCK_CONTENT', change)
65
49
  commit('TOUCH_SECTION', section.id)
66
- services.inlineEditing.updateSectionSetting(
67
- previewDocument,
50
+ services.livePreview.updateBlock(
68
51
  getters.content,
69
- section,
52
+ getters.denormalizedSection,
70
53
  sectionBlock,
71
54
  change,
72
55
  )