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
@@ -0,0 +1,204 @@
1
+ import * as axios from 'axios'
2
+ import { debounce } from './utils'
3
+
4
+ const parentDocument = window.parent.document
5
+ const previewDocument = window.document
6
+ const csrfParam =
7
+ window.location !== window.parent.location
8
+ ? {
9
+ [parentDocument
10
+ .querySelector("meta[name='csrf-param']")
11
+ .getAttribute('content')]: parentDocument
12
+ .querySelector("meta[name='csrf-token']")
13
+ .getAttribute('content'),
14
+ }
15
+ : {}
16
+
17
+ const start = () => {
18
+ // Within a Rails site, no need to remove the event listeners
19
+ window.addEventListener('maglev:section:add', addSection)
20
+ window.addEventListener('maglev:section:move', moveSections)
21
+ window.addEventListener('maglev:section:update', updateSection)
22
+ window.addEventListener('maglev:section:remove', removeSection)
23
+ window.addEventListener('maglev:block:add', replaceSection)
24
+ window.addEventListener('maglev:block:move', replaceSection)
25
+ window.addEventListener('maglev:block:update', updateBlock)
26
+ window.addEventListener('maglev:block:remove', replaceSection)
27
+
28
+ window.addEventListener('maglev:style:update', updateStyle)
29
+ }
30
+
31
+ export default { start }
32
+
33
+ // === Section related actions ===
34
+
35
+ const addSection = (event) => {
36
+ const { content, section, insertAt } = event.detail
37
+ debouncedUpdatePreviewDocument(content, section, insertAt)
38
+ }
39
+
40
+ const moveSections = (event) => {
41
+ const { sectionId, targetSectionId, direction } = event.detail
42
+
43
+ const sectionElement = previewDocument.querySelector(
44
+ `[data-maglev-section-id='${sectionId}']`,
45
+ )
46
+ const targetSectionElement = previewDocument.querySelector(
47
+ `[data-maglev-section-id='${targetSectionId}']`,
48
+ )
49
+
50
+ if (direction === 'up')
51
+ targetSectionElement.parentNode.insertBefore(
52
+ sectionElement,
53
+ targetSectionElement,
54
+ )
55
+ else
56
+ targetSectionElement.parentNode.insertBefore(
57
+ sectionElement,
58
+ targetSectionElement.nextSibling,
59
+ )
60
+
61
+ // scroll to the new placement of the section
62
+ sectionElement.scrollIntoView(true)
63
+ }
64
+
65
+ const updateSection = (event) => {
66
+ const { content, section, change } = event.detail
67
+ updateSectionOrBlock(content, section, section, change)
68
+ }
69
+
70
+ const removeSection = (event) => {
71
+ const { sectionId } = event.detail
72
+ const selector = `[data-maglev-section-id='${sectionId}']`
73
+ let element = previewDocument.querySelector(selector)
74
+ element.remove()
75
+ }
76
+
77
+ // === Block related actions ===
78
+
79
+ const updateBlock = (event) => {
80
+ const { content, section, sectionBlock, change } = event.detail
81
+ updateSectionOrBlock(content, section, sectionBlock, change)
82
+ }
83
+
84
+ const replaceSection = (event) => {
85
+ const { content, section } = event.detail
86
+ debouncedUpdatePreviewDocument(content, section)
87
+ }
88
+
89
+ // === Other actions ===
90
+
91
+ const updateStyle = async (event) => {
92
+ const { content, style } = event.detail
93
+
94
+ const doc = await getUpdatedDoc({
95
+ pageSections: JSON.stringify(content.pageSections),
96
+ style: JSON.stringify(style),
97
+ })
98
+
99
+ // update the CSS variables
100
+ const selector = '#maglev-style'
101
+ const sourceElement = doc.querySelector(selector)
102
+ let targetElement = previewDocument.querySelector(selector)
103
+
104
+ if (sourceElement) {
105
+ targetElement.replaceWith(sourceElement)
106
+ }
107
+ }
108
+
109
+ // === Helpers ===
110
+
111
+ const updateSectionOrBlock = (content, section, source, change) => {
112
+ const foundSetting = updateSetting(source, change)
113
+ if (!foundSetting) debouncedUpdatePreviewDocument(content, section)
114
+ }
115
+
116
+ const updateSetting = (source, change) => {
117
+ switch (change.settingType) {
118
+ case 'text':
119
+ return updateTextSetting(source, change)
120
+ case 'link':
121
+ if (change.settingOptions.withText && change.value)
122
+ return updateTextSetting(source, {
123
+ ...change,
124
+ value: change.value.text,
125
+ settingId: `${change.settingId}.text`,
126
+ })
127
+ break
128
+ default:
129
+ // ok, we can't cherry-pick the modification so we have to refresh the whole section
130
+ break
131
+ }
132
+ return false
133
+ }
134
+
135
+ const updateTextSetting = (source, change) => {
136
+ const selector = `[data-maglev-id='${source.id}.${change.settingId}']`
137
+ const settings = previewDocument.querySelectorAll(selector)
138
+ settings.forEach(($el) => ($el.innerHTML = change.value))
139
+ return settings.length > 0
140
+ }
141
+
142
+ const updatePreviewDocument = async (content, section, insertAt) => {
143
+ const doc = await getUpdatedDoc({
144
+ pageSections: JSON.stringify([
145
+ content.pageSections.find((s) => s.id == section.id), // no need to render the other sections
146
+ ]),
147
+ })
148
+
149
+ // NOTE: Instructions to refresh the whole document
150
+ // removeEventListeners()
151
+ // previewDocument.querySelector('body').replaceWith(doc.querySelector('body'))
152
+ // setupEvents(previewDocument)
153
+
154
+ const selector = `[data-maglev-section-id='${section.id}']`
155
+ const sourceElement = doc.querySelector(selector)
156
+ let targetElement = previewDocument.querySelector(selector)
157
+
158
+ if (!sourceElement)
159
+ throw new Error(`Maglev section ${section.id} not generated by the server`)
160
+
161
+ if (targetElement) {
162
+ targetElement.replaceWith(sourceElement)
163
+ } else {
164
+ insertSectionInDOM(sourceElement, insertAt)
165
+ targetElement = previewDocument.querySelector(selector)
166
+ }
167
+
168
+ targetElement.scrollIntoView(true)
169
+ }
170
+
171
+ const debouncedUpdatePreviewDocument = debounce(updatePreviewDocument, 300)
172
+
173
+ const insertSectionInDOM = (element, insertAt) => {
174
+ switch (insertAt) {
175
+ case 'top': {
176
+ const parentNode = previewDocument.querySelector('[data-maglev-dropzone]')
177
+ parentNode.prepend(element)
178
+ break
179
+ }
180
+ case 'bottom':
181
+ case undefined:
182
+ case null:
183
+ case '': {
184
+ const parentNode = previewDocument.querySelector('[data-maglev-dropzone]')
185
+ parentNode.appendChild(element)
186
+ break
187
+ }
188
+ default: {
189
+ const selector = `[data-maglev-section-id='${insertAt}']`
190
+ const pivotElement = previewDocument.querySelector(selector)
191
+ pivotElement.parentNode.insertBefore(element, pivotElement.nextSibling)
192
+ }
193
+ }
194
+ }
195
+
196
+ const getUpdatedDoc = async (attributes) => {
197
+ const { data } = await axios.post(previewDocument.location.href, {
198
+ ...attributes,
199
+ ...csrfParam,
200
+ })
201
+ const parser = new DOMParser()
202
+ const doc = parser.parseFromString(data, 'text/html')
203
+ return doc
204
+ }
@@ -0,0 +1,22 @@
1
+ export const isBlank = (object) => {
2
+ return (
3
+ object === undefined ||
4
+ object === null ||
5
+ (typeof object === 'string' && object.length === 0) ||
6
+ (typeof object === 'object' && object.length === 0)
7
+ )
8
+ }
9
+
10
+ export const debounce = (fn, time) => {
11
+ let timeoutId
12
+ function wrapper(...args) {
13
+ if (timeoutId) {
14
+ clearTimeout(timeoutId)
15
+ }
16
+ timeoutId = setTimeout(() => {
17
+ timeoutId = null
18
+ fn(...args)
19
+ }, time)
20
+ }
21
+ return wrapper
22
+ }
@@ -1,13 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'webpacker/helper'
3
+ require 'vite_rails/version'
4
+ require 'vite_rails/tag_helpers'
4
5
 
5
6
  module Maglev
6
7
  module ApplicationHelper
7
- include ::Webpacker::Helper
8
+ include ::ViteRails::TagHelpers
8
9
 
9
- def current_webpacker_instance
10
- use_engine_webpacker? ? ::Maglev.webpacker : super
10
+ def vite_manifest
11
+ use_engine_vite? ? maglev_asset_manifest : super
12
+ end
13
+
14
+ def maglev_live_preview_client_javascript_tag
15
+ # no need to render the tag when the site is being visited outside the editor
16
+ return '' unless maglev_rendering_mode == :editor
17
+
18
+ entries = maglev_asset_manifest.resolve_entries(*%w[live-preview-rails-client], type: :javascript)
19
+
20
+ javascript_include_tag(*entries.fetch(:scripts).flatten.uniq, crossorigin: 'anonymous', type: 'module')
21
+ end
22
+
23
+ def maglev_asset_manifest
24
+ ::Maglev::Engine.vite_ruby.manifest
11
25
  end
12
26
  end
13
27
  end
@@ -54,7 +54,14 @@ module Maglev
54
54
  end
55
55
 
56
56
  def editor_favicon_url
57
- editor_asset_path(maglev_config.favicon, 'favicon.png')
57
+ case maglev_config.favicon
58
+ when nil
59
+ editor_asset_path(nil, 'favicon.png')
60
+ when String
61
+ editor_asset_path(maglev_config.favicon, 'favicon.png')
62
+ when Proc
63
+ instance_exec(maglev_site, &maglev_config.favicon)
64
+ end
58
65
  end
59
66
 
60
67
  def editor_site_publishable
@@ -63,8 +70,11 @@ module Maglev
63
70
 
64
71
  def editor_asset_path(source, default_source)
65
72
  if source.blank?
66
- asset_path("maglev/#{default_source}")
73
+ vite_asset_path("images/#{default_source}")
74
+ elsif source =~ %r{^(https?://|/)}
75
+ source
67
76
  else
77
+ # rely on Sprockets by default
68
78
  ActionController::Base.helpers.asset_path(source)
69
79
  end
70
80
  end
@@ -10,7 +10,7 @@ module Maglev
10
10
  ## methods ##
11
11
 
12
12
  def to_param
13
- "#{id}-#{filename.parameterize}"
13
+ "#{id}-#{File.basename(filename, '.*').parameterize}#{File.extname(filename)}"
14
14
  end
15
15
 
16
16
  ## class methods ##
@@ -2,13 +2,14 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Maglev - Admin</title>
5
+
5
6
  <%= csrf_meta_tags %>
6
7
  <%= csp_meta_tag %>
7
8
 
8
- <%= javascript_pack_tag 'application' %>
9
- <%= stylesheet_pack_tag 'application' %>
10
-
11
- <%= favicon_link_tag 'maglev/favicon.png' %>
9
+ <%= vite_javascript_tag 'admin' %>
10
+ <%= vite_stylesheet_tag 'admin.scss' %>
11
+
12
+ <%= favicon_link_tag vite_asset_path 'images/favicon.png' %>
12
13
  </head>
13
14
  <body class="bg-gray-100">
14
15
  <main role="main" class="container mx-auto">
@@ -19,15 +19,15 @@
19
19
  window.customTranslations = <%= h editor_custom_translations.to_json.html_safe %>
20
20
  </script>
21
21
 
22
- <%= javascript_pack_tag 'editor' %>
23
- <%= stylesheet_pack_tag 'editor' %>
22
+ <%= vite_client_tag %>
23
+ <%= vite_javascript_tag 'editor' %>
24
24
 
25
25
  <%= favicon_link_tag editor_favicon_url %>
26
26
 
27
27
  <style>
28
28
  :root {
29
29
  --editor-color-primary: <%= editor_primary_hex_color %>;
30
- --editor-color-primary-non-hex: <%= editor_primary_rgb_color.join(', ') %>;
30
+ --editor-color-primary-rgb: <%= editor_primary_rgb_color.join(' ') %>;
31
31
  }
32
32
  </style>
33
33
 
@@ -0,0 +1,11 @@
1
+ <html>
2
+ <body>
3
+ <code>
4
+ <pre>
5
+ http://localhost:3000<%= sources_from_manifest_entrypoints(%w(live-preview-client), type: :javascript).first %>
6
+
7
+ <%= live_preview_client_js_url %>
8
+ </pre>
9
+ </code>
10
+ </body>
11
+ </html>
data/bin/vite ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'vite' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("vite_ruby", "vite")
data/config/routes.rb CHANGED
@@ -19,6 +19,16 @@ Maglev::Engine.routes.draw do
19
19
 
20
20
  root to: redirect { Maglev::Engine.routes.url_helpers.admin_root_path }
21
21
 
22
+ # JS client lib for a headless use of Maglev
23
+ get 'live-preview-client.js', to: (redirect(status: 302) do |_, request|
24
+ manifest = ::Maglev::Engine.vite_ruby.manifest
25
+ entries = manifest.resolve_entries(*%w[live-preview-rails-client], type: :javascript)
26
+ [
27
+ request.base_url,
28
+ *entries.fetch(:scripts).flatten.uniq
29
+ ].join
30
+ end), as: :live_preview_client_js
31
+
22
32
  # Admin
23
33
  namespace :admin do
24
34
  root to: 'dashboard#index'
data/config/vite.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "all": {
3
+ "sourceCodeDir": "app/frontend",
4
+ "watchAdditionalPaths": []
5
+ },
6
+ "development": {
7
+ "autoBuild": true,
8
+ "publicOutputDir": "maglev-assets",
9
+ "port": 3136
10
+ },
11
+ "test": {
12
+ "autoBuild": true,
13
+ "publicOutputDir": "maglev-assets",
14
+ "port": 3137
15
+ }
16
+ }
@@ -7,7 +7,7 @@ module Maglev
7
7
  hook_for :maglev_install
8
8
 
9
9
  def compile_editor_assets
10
- rake 'maglev:webpacker:compile'
10
+ rake 'maglev:vite:build_all'
11
11
  end
12
12
 
13
13
  def migrations
@@ -21,7 +21,8 @@ module Maglev
21
21
 
22
22
  def select_category
23
23
  @category = options['category']
24
- return if @category.present?
24
+
25
+ return if @category.present? && categories.include?(@category)
25
26
 
26
27
  say 'You have to select a category for your section. Please check your Maglev theme.yml file to manage them.',
27
28
  :blue
@@ -7,10 +7,16 @@ Maglev.configure do |config|
7
7
  # Logo of the Editor (top left corner).
8
8
  # Put your custom logo in the app/assets/images folder of your Rails application.
9
9
  # config.logo = 'logo.png'
10
+ # Or use the following option:
11
+ # config.logo = ->(site) { site.siteable.avatar_url }
12
+ # config.logo = ->(site) { ActionController::Base.helpers.vite_asset_path('logo.png') }
10
13
 
11
14
  # Favicon (window tab)
12
15
  # Put your custom favicon in the app/assets/images folder of your Rails application.
13
16
  # config.favicon = 'favicon.ico'
17
+ # Or use the following options:
18
+ # config.favicon = ->(site) { site.siteable.favicon_url }
19
+ # config.favicon = ->(site) { ActionController::Base.helpers.vite_asset_path('favicon.png') }
14
20
 
15
21
  # Primary color of the Editor
16
22
  # config.primary_color = '#7E6EDB'
@@ -14,7 +14,7 @@ category: <%= category %>
14
14
  # Insert this section at the top or the bottom of the page (default: nil)
15
15
  # insert_at: top
16
16
 
17
- # one single instance per page?
17
+ # One single instance per page?
18
18
  # singleton: true
19
19
 
20
20
  # Definition of the settings:
@@ -37,7 +37,7 @@ settings:
37
37
  - label: Option 2
38
38
  value: option_2
39
39
  <%- when 'color' -%>
40
- presents: ['#E5E7EB', '#FECACA', '#FDE68A', '#A7F3D0', '#BFDBFE']
40
+ presets: ['#E5E7EB', '#FECACA', '#FDE68A', '#A7F3D0', '#BFDBFE']
41
41
  <%- end -%>
42
42
  <% if setting.value? -%>default: <%= setting.default %><% end -%>
43
43
 
@@ -11,6 +11,8 @@
11
11
 
12
12
  <%%= render_maglev_alternate_links %>
13
13
 
14
+ <%%= maglev_live_preview_client_javascript_tag %>
15
+
14
16
  <script src="https://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio,line-clamp"></script>
15
17
  </head>
16
18
  <body class="bg-white">
data/lib/maglev/engine.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'vite_ruby'
4
+
3
5
  module Maglev
4
6
  class Engine < ::Rails::Engine
5
7
  isolate_namespace Maglev
@@ -10,8 +12,6 @@ module Maglev
10
12
  g.factory_bot dir: 'spec/factories'
11
13
  end
12
14
 
13
- config.assets.precompile += %w[maglev/logo.png maglev/favicon.png]
14
-
15
15
  initializer 'maglev.theme_reloader' do |app|
16
16
  require_relative './theme_filesystem_loader'
17
17
  theme_path = Rails.root.join('app/theme')
@@ -38,29 +38,34 @@ module Maglev
38
38
  Rails.application.config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
39
39
  end
40
40
 
41
- initializer 'maglev.webpacker.proxy' do |app|
42
- insert_middleware = begin
43
- Maglev.webpacker.config.dev_server.present?
44
- rescue StandardError
45
- nil
46
- end
47
- next unless insert_middleware
41
+ delegate :vite_ruby, to: :class
48
42
 
49
- app.middleware.insert_before(
50
- 0, Webpacker::DevServerProxy,
51
- ssl_verify_none: true,
52
- webpacker: Maglev.webpacker
53
- )
43
+ def self.vite_ruby
44
+ @vite_ruby ||= ::ViteRuby.new(root: root)
54
45
  end
55
46
 
56
- # Serves the engine's webpack when requested
57
- initializer 'maglev.webpacker.static' do |app|
58
- app.config.middleware.insert_before(
59
- 1,
47
+ # Serves the engine's vite-ruby when requested
48
+ initializer 'maglev.vite_rails.static' do |app|
49
+ app.config.middleware.use(
60
50
  Rack::Static,
61
- urls: ['/maglev-packs'],
62
- root: File.expand_path(File.join(__dir__, '..', '..', 'public'))
51
+ urls: ["/#{vite_ruby.config.public_output_dir}"],
52
+ root: root.join(vite_ruby.config.public_dir)
63
53
  )
64
54
  end
55
+
56
+ initializer 'maglev.vite_rails_engine.proxy' do |app|
57
+ if vite_ruby.run_proxy?
58
+ app.middleware.insert_before 0,
59
+ ViteRuby::DevServerProxy,
60
+ ssl_verify_none: true,
61
+ vite_ruby: vite_ruby
62
+ end
63
+ end
64
+
65
+ initializer 'maglev.vite_rails_engine.logger' do
66
+ config.after_initialize do
67
+ vite_ruby.logger = Rails.logger
68
+ end
69
+ end
65
70
  end
66
71
  end
@@ -14,7 +14,7 @@ module Maglev
14
14
  theme.sections = Maglev::Section::Store.new(sections)
15
15
  theme
16
16
  rescue Errno::ENOENT
17
- Kernel.puts "Missing theme file(s) in #{path}"
17
+ log_missing_theme_file(path)
18
18
  end
19
19
 
20
20
  private
@@ -51,5 +51,13 @@ module Maglev
51
51
  path = fetch_section_screenshot_path.call(theme: theme, section: section, absolute: true)
52
52
  File.exist?(path) ? File.mtime(path).to_i : nil
53
53
  end
54
+
55
+ def log_missing_theme_file(path)
56
+ # don't log the error if the ruby code is not executed inside
57
+ # the Rails console or when the Rails server is running
58
+ return if !Rails.const_defined?('Console') && !Rails.const_defined?('Server')
59
+
60
+ Kernel.puts "Missing theme file(s) in #{path}"
61
+ end
54
62
  end
55
63
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Maglev
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
data/lib/maglev.rb CHANGED
@@ -59,12 +59,5 @@ module Maglev
59
59
  def services(overrides = {})
60
60
  ::Maglev::AppContainer.new(config.services.merge(overrides)).call
61
61
  end
62
-
63
- def webpacker
64
- @webpacker ||= ::Webpacker::Instance.new(
65
- root_path: ROOT_PATH,
66
- config_path: ROOT_PATH.join('config/webpacker.yml')
67
- )
68
- end
69
62
  end
70
63
  end