scribo 1.0.38 → 1.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/gem-push.yml +11 -0
  3. data/.gitignore +12 -0
  4. data/.reek.yml +8 -0
  5. data/.rubocop.yml +44 -0
  6. data/.rubocop_todo.yml +129 -0
  7. data/CODE_OF_CONDUCT.md +74 -0
  8. data/Gemfile +31 -0
  9. data/Gemfile.lock +397 -0
  10. data/README.md +5 -9
  11. data/TODO.md +32 -0
  12. data/app/assets/config/scribo_manifest.js +4 -2
  13. data/app/assets/images/scribo/.keep +0 -0
  14. data/app/assets/images/scribo/Unknown-1.svg +2 -0
  15. data/app/assets/images/scribo/file.svg +4 -0
  16. data/app/assets/images/scribo/file_icons.svg +1 -0
  17. data/app/assets/images/scribo/folder-open.svg +1 -0
  18. data/app/assets/images/scribo/folder.svg +1 -0
  19. data/app/assets/images/scribo/icons/3d.svg +1 -0
  20. data/app/assets/images/scribo/icons/actionscript.svg +3 -0
  21. data/app/assets/images/scribo/icons/android.svg +1 -0
  22. data/app/assets/images/scribo/icons/angular-component.svg +3 -0
  23. data/app/assets/images/scribo/icons/angular-directive.svg +3 -0
  24. data/app/assets/images/scribo/icons/angular-guard.svg +3 -0
  25. data/app/assets/images/scribo/icons/angular-pipe.svg +3 -0
  26. data/app/assets/images/scribo/icons/angular-resolver.svg +3 -0
  27. data/app/assets/images/scribo/icons/angular-service.svg +3 -0
  28. data/app/assets/images/scribo/icons/angular.svg +3 -0
  29. data/app/assets/images/scribo/icons/apiblueprint.svg +5 -0
  30. data/app/assets/images/scribo/icons/applescript.svg +3 -0
  31. data/app/assets/images/scribo/icons/appveyor.svg +5 -0
  32. data/app/assets/images/scribo/icons/arduino.svg +1 -0
  33. data/app/assets/images/scribo/icons/asciidoc.svg +1 -0
  34. data/app/assets/images/scribo/icons/assembly.svg +4 -0
  35. data/app/assets/images/scribo/icons/audio.svg +4 -0
  36. data/app/assets/images/scribo/icons/aurelia.svg +107 -0
  37. data/app/assets/images/scribo/icons/authors.svg +1 -0
  38. data/app/assets/images/scribo/icons/autohotkey.svg +3 -0
  39. data/app/assets/images/scribo/icons/autoit.svg +21 -0
  40. data/app/assets/images/scribo/icons/azure-pipelines.svg +1 -0
  41. data/app/assets/images/scribo/icons/azure.svg +1 -0
  42. data/app/assets/images/scribo/icons/babel.svg +1 -0
  43. data/app/assets/images/scribo/icons/ballerina.svg +1 -0
  44. data/app/assets/images/scribo/icons/bazel.svg +1 -0
  45. data/app/assets/images/scribo/icons/bitbucket.svg +1 -0
  46. data/app/assets/images/scribo/icons/bithound.svg +1 -0
  47. data/app/assets/images/scribo/icons/blink.svg +4 -0
  48. data/app/assets/images/scribo/icons/blink_light.svg +4 -0
  49. data/app/assets/images/scribo/icons/bower.svg +1 -0
  50. data/app/assets/images/scribo/icons/browserlist.svg +6 -0
  51. data/app/assets/images/scribo/icons/browserlist_light.svg +7 -0
  52. data/app/assets/images/scribo/icons/bucklescript.svg +3 -0
  53. data/app/assets/images/scribo/icons/buildkite.svg +1 -0
  54. data/app/assets/images/scribo/icons/c.svg +1 -0
  55. data/app/assets/images/scribo/icons/cabal.svg +8 -0
  56. data/app/assets/images/scribo/icons/cake.svg +1 -0
  57. data/app/assets/images/scribo/icons/certificate.svg +3 -0
  58. data/app/assets/images/scribo/icons/changelog.svg +1 -0
  59. data/app/assets/images/scribo/icons/circleci.svg +14 -0
  60. data/app/assets/images/scribo/icons/circleci_light.svg +14 -0
  61. data/app/assets/images/scribo/icons/clojure.svg +1 -0
  62. data/app/assets/images/scribo/icons/cloudfoundry.svg +24 -0
  63. data/app/assets/images/scribo/icons/cmake.svg +7 -0
  64. data/app/assets/images/scribo/icons/code-climate.svg +4 -0
  65. data/app/assets/images/scribo/icons/code-climate_light.svg +4 -0
  66. data/app/assets/images/scribo/icons/coffee.svg +3 -0
  67. data/app/assets/images/scribo/icons/coldfusion.svg +7 -0
  68. data/app/assets/images/scribo/icons/conduct.svg +4 -0
  69. data/app/assets/images/scribo/icons/console.svg +3 -0
  70. data/app/assets/images/scribo/icons/contributing.svg +4 -0
  71. data/app/assets/images/scribo/icons/cpp.svg +1 -0
  72. data/app/assets/images/scribo/icons/credits.svg +3 -0
  73. data/app/assets/images/scribo/icons/crystal.svg +4 -0
  74. data/app/assets/images/scribo/icons/crystal_light.svg +4 -0
  75. data/app/assets/images/scribo/icons/csharp.svg +3 -0
  76. data/app/assets/images/scribo/icons/css-map.svg +1 -0
  77. data/app/assets/images/scribo/icons/css.svg +3 -0
  78. data/app/assets/images/scribo/icons/cucumber.svg +4 -0
  79. data/app/assets/images/scribo/icons/cuda.svg +4 -0
  80. data/app/assets/images/scribo/icons/d.svg +1 -0
  81. data/app/assets/images/scribo/icons/dart.svg +9 -0
  82. data/app/assets/images/scribo/icons/database.svg +1 -0
  83. data/app/assets/images/scribo/icons/diff.svg +1 -0
  84. data/app/assets/images/scribo/icons/django.svg +1 -0
  85. data/app/assets/images/scribo/icons/docker.svg +4 -0
  86. data/app/assets/images/scribo/icons/document.svg +3 -0
  87. data/app/assets/images/scribo/icons/dotjs.svg +8 -0
  88. data/app/assets/images/scribo/icons/drone.svg +6 -0
  89. data/app/assets/images/scribo/icons/drone_light.svg +6 -0
  90. data/app/assets/images/scribo/icons/edge.svg +1 -0
  91. data/app/assets/images/scribo/icons/editorconfig.svg +9 -0
  92. data/app/assets/images/scribo/icons/ejs.svg +7 -0
  93. data/app/assets/images/scribo/icons/elixir.svg +1 -0
  94. data/app/assets/images/scribo/icons/elm.svg +1 -0
  95. data/app/assets/images/scribo/icons/email.svg +3 -0
  96. data/app/assets/images/scribo/icons/erlang.svg +5 -0
  97. data/app/assets/images/scribo/icons/eslint.svg +3 -0
  98. data/app/assets/images/scribo/icons/exe.svg +3 -0
  99. data/app/assets/images/scribo/icons/fastlane.svg +1 -0
  100. data/app/assets/images/scribo/icons/favicon.svg +3 -0
  101. data/app/assets/images/scribo/icons/file.svg +3 -0
  102. data/app/assets/images/scribo/icons/firebase.svg +9 -0
  103. data/app/assets/images/scribo/icons/flash.svg +12 -0
  104. data/app/assets/images/scribo/icons/flow.svg +7 -0
  105. data/app/assets/images/scribo/icons/folder-android-open.svg +1 -0
  106. data/app/assets/images/scribo/icons/folder-android.svg +1 -0
  107. data/app/assets/images/scribo/icons/folder-animation-open.svg +1 -0
  108. data/app/assets/images/scribo/icons/folder-animation.svg +1 -0
  109. data/app/assets/images/scribo/icons/folder-ansible-open.svg +1 -0
  110. data/app/assets/images/scribo/icons/folder-ansible.svg +1 -0
  111. data/app/assets/images/scribo/icons/folder-api-open.svg +4 -0
  112. data/app/assets/images/scribo/icons/folder-api.svg +4 -0
  113. data/app/assets/images/scribo/icons/folder-app-open.svg +1 -0
  114. data/app/assets/images/scribo/icons/folder-app.svg +1 -0
  115. data/app/assets/images/scribo/icons/folder-archive-open.svg +1 -0
  116. data/app/assets/images/scribo/icons/folder-archive.svg +1 -0
  117. data/app/assets/images/scribo/icons/folder-audio-open.svg +2 -0
  118. data/app/assets/images/scribo/icons/folder-audio.svg +2 -0
  119. data/app/assets/images/scribo/icons/folder-aurelia-open.svg +2 -0
  120. data/app/assets/images/scribo/icons/folder-aurelia.svg +2 -0
  121. data/app/assets/images/scribo/icons/folder-aws-open.svg +2 -0
  122. data/app/assets/images/scribo/icons/folder-aws.svg +2 -0
  123. data/app/assets/images/scribo/icons/folder-batch-open.svg +1 -0
  124. data/app/assets/images/scribo/icons/folder-batch.svg +1 -0
  125. data/app/assets/images/scribo/icons/folder-benchmark-open.svg +1 -0
  126. data/app/assets/images/scribo/icons/folder-benchmark.svg +1 -0
  127. data/app/assets/images/scribo/icons/folder-bower-open.svg +2 -0
  128. data/app/assets/images/scribo/icons/folder-bower.svg +2 -0
  129. data/app/assets/images/scribo/icons/folder-ci-open.svg +1 -0
  130. data/app/assets/images/scribo/icons/folder-ci.svg +1 -0
  131. data/app/assets/images/scribo/icons/folder-circleci-open.svg +2 -0
  132. data/app/assets/images/scribo/icons/folder-circleci.svg +1 -0
  133. data/app/assets/images/scribo/icons/folder-class-open.svg +1 -0
  134. data/app/assets/images/scribo/icons/folder-class.svg +1 -0
  135. data/app/assets/images/scribo/icons/folder-client-open.svg +1 -0
  136. data/app/assets/images/scribo/icons/folder-client.svg +1 -0
  137. data/app/assets/images/scribo/icons/folder-cluster-open.svg +8 -0
  138. data/app/assets/images/scribo/icons/folder-cluster.svg +8 -0
  139. data/app/assets/images/scribo/icons/folder-command-open.svg +4 -0
  140. data/app/assets/images/scribo/icons/folder-command.svg +4 -0
  141. data/app/assets/images/scribo/icons/folder-components-open.svg +2 -0
  142. data/app/assets/images/scribo/icons/folder-components.svg +2 -0
  143. data/app/assets/images/scribo/icons/folder-config-open.svg +2 -0
  144. data/app/assets/images/scribo/icons/folder-config.svg +2 -0
  145. data/app/assets/images/scribo/icons/folder-constant-open.svg +1 -0
  146. data/app/assets/images/scribo/icons/folder-constant.svg +1 -0
  147. data/app/assets/images/scribo/icons/folder-container-open.svg +1 -0
  148. data/app/assets/images/scribo/icons/folder-container.svg +1 -0
  149. data/app/assets/images/scribo/icons/folder-content-open.svg +1 -0
  150. data/app/assets/images/scribo/icons/folder-content.svg +1 -0
  151. data/app/assets/images/scribo/icons/folder-controller-open.svg +1 -0
  152. data/app/assets/images/scribo/icons/folder-controller.svg +1 -0
  153. data/app/assets/images/scribo/icons/folder-core-open.svg +1 -0
  154. data/app/assets/images/scribo/icons/folder-core.svg +1 -0
  155. data/app/assets/images/scribo/icons/folder-coverage-open.svg +1 -0
  156. data/app/assets/images/scribo/icons/folder-coverage.svg +1 -0
  157. data/app/assets/images/scribo/icons/folder-css-open.svg +2 -0
  158. data/app/assets/images/scribo/icons/folder-css.svg +2 -0
  159. data/app/assets/images/scribo/icons/folder-custom-open.svg +1 -0
  160. data/app/assets/images/scribo/icons/folder-custom.svg +1 -0
  161. data/app/assets/images/scribo/icons/folder-database-open.svg +2 -0
  162. data/app/assets/images/scribo/icons/folder-database.svg +2 -0
  163. data/app/assets/images/scribo/icons/folder-debug-open.svg +1 -0
  164. data/app/assets/images/scribo/icons/folder-debug.svg +1 -0
  165. data/app/assets/images/scribo/icons/folder-delta-open.svg +4 -0
  166. data/app/assets/images/scribo/icons/folder-delta.svg +4 -0
  167. data/app/assets/images/scribo/icons/folder-dist-open.svg +2 -0
  168. data/app/assets/images/scribo/icons/folder-dist.svg +2 -0
  169. data/app/assets/images/scribo/icons/folder-docker-open.svg +2 -0
  170. data/app/assets/images/scribo/icons/folder-docker.svg +5 -0
  171. data/app/assets/images/scribo/icons/folder-docs-open.svg +2 -0
  172. data/app/assets/images/scribo/icons/folder-docs.svg +2 -0
  173. data/app/assets/images/scribo/icons/folder-download-open.svg +1 -0
  174. data/app/assets/images/scribo/icons/folder-download.svg +1 -0
  175. data/app/assets/images/scribo/icons/folder-dump-open.svg +1 -0
  176. data/app/assets/images/scribo/icons/folder-dump.svg +1 -0
  177. data/app/assets/images/scribo/icons/folder-environment-open.svg +1 -0
  178. data/app/assets/images/scribo/icons/folder-environment.svg +1 -0
  179. data/app/assets/images/scribo/icons/folder-error-open.svg +7 -0
  180. data/app/assets/images/scribo/icons/folder-error.svg +8 -0
  181. data/app/assets/images/scribo/icons/folder-event-open.svg +1 -0
  182. data/app/assets/images/scribo/icons/folder-event.svg +1 -0
  183. data/app/assets/images/scribo/icons/folder-examples-open.svg +1 -0
  184. data/app/assets/images/scribo/icons/folder-examples.svg +1 -0
  185. data/app/assets/images/scribo/icons/folder-expo-open.svg +1 -0
  186. data/app/assets/images/scribo/icons/folder-expo.svg +4 -0
  187. data/app/assets/images/scribo/icons/folder-export-open.svg +1 -0
  188. data/app/assets/images/scribo/icons/folder-export.svg +5 -0
  189. data/app/assets/images/scribo/icons/folder-fastlane-open.svg +1 -0
  190. data/app/assets/images/scribo/icons/folder-fastlane.svg +1 -0
  191. data/app/assets/images/scribo/icons/folder-flow-open.svg +1 -0
  192. data/app/assets/images/scribo/icons/folder-flow.svg +1 -0
  193. data/app/assets/images/scribo/icons/folder-font-open.svg +1 -0
  194. data/app/assets/images/scribo/icons/folder-font.svg +1 -0
  195. data/app/assets/images/scribo/icons/folder-functions-open.svg +1 -0
  196. data/app/assets/images/scribo/icons/folder-functions.svg +1 -0
  197. data/app/assets/images/scribo/icons/folder-generator-open.svg +1 -0
  198. data/app/assets/images/scribo/icons/folder-generator.svg +1 -0
  199. data/app/assets/images/scribo/icons/folder-git-open.svg +1 -0
  200. data/app/assets/images/scribo/icons/folder-git.svg +1 -0
  201. data/app/assets/images/scribo/icons/folder-github-open.svg +2 -0
  202. data/app/assets/images/scribo/icons/folder-github.svg +2 -0
  203. data/app/assets/images/scribo/icons/folder-gitlab-open.svg +2 -0
  204. data/app/assets/images/scribo/icons/folder-gitlab.svg +2 -0
  205. data/app/assets/images/scribo/icons/folder-global-open.svg +2 -0
  206. data/app/assets/images/scribo/icons/folder-global.svg +2 -0
  207. data/app/assets/images/scribo/icons/folder-gradle-open.svg +2 -0
  208. data/app/assets/images/scribo/icons/folder-gradle.svg +2 -0
  209. data/app/assets/images/scribo/icons/folder-graphql-open.svg +1 -0
  210. data/app/assets/images/scribo/icons/folder-graphql.svg +1 -0
  211. data/app/assets/images/scribo/icons/folder-guard-open.svg +1 -0
  212. data/app/assets/images/scribo/icons/folder-guard.svg +1 -0
  213. data/app/assets/images/scribo/icons/folder-helper-open.svg +1 -0
  214. data/app/assets/images/scribo/icons/folder-helper.svg +1 -0
  215. data/app/assets/images/scribo/icons/folder-hook-open.svg +1 -0
  216. data/app/assets/images/scribo/icons/folder-hook.svg +1 -0
  217. data/app/assets/images/scribo/icons/folder-i18n-open.svg +2 -0
  218. data/app/assets/images/scribo/icons/folder-i18n.svg +2 -0
  219. data/app/assets/images/scribo/icons/folder-images-open.svg +2 -0
  220. data/app/assets/images/scribo/icons/folder-images.svg +2 -0
  221. data/app/assets/images/scribo/icons/folder-import-open.svg +1 -0
  222. data/app/assets/images/scribo/icons/folder-import.svg +1 -0
  223. data/app/assets/images/scribo/icons/folder-include-open.svg +2 -0
  224. data/app/assets/images/scribo/icons/folder-include.svg +2 -0
  225. data/app/assets/images/scribo/icons/folder-ios-open.svg +1 -0
  226. data/app/assets/images/scribo/icons/folder-ios.svg +1 -0
  227. data/app/assets/images/scribo/icons/folder-javascript-open.svg +2 -0
  228. data/app/assets/images/scribo/icons/folder-javascript.svg +2 -0
  229. data/app/assets/images/scribo/icons/folder-jinja-open.svg +2 -0
  230. data/app/assets/images/scribo/icons/folder-jinja-open_light.svg +2 -0
  231. data/app/assets/images/scribo/icons/folder-jinja.svg +2 -0
  232. data/app/assets/images/scribo/icons/folder-jinja_light.svg +2 -0
  233. data/app/assets/images/scribo/icons/folder-job-open.svg +1 -0
  234. data/app/assets/images/scribo/icons/folder-job.svg +1 -0
  235. data/app/assets/images/scribo/icons/folder-keys-open.svg +1 -0
  236. data/app/assets/images/scribo/icons/folder-keys.svg +1 -0
  237. data/app/assets/images/scribo/icons/folder-kubernetes-open.svg +1 -0
  238. data/app/assets/images/scribo/icons/folder-kubernetes.svg +5 -0
  239. data/app/assets/images/scribo/icons/folder-layout-open.svg +1 -0
  240. data/app/assets/images/scribo/icons/folder-layout.svg +1 -0
  241. data/app/assets/images/scribo/icons/folder-less-open.svg +1 -0
  242. data/app/assets/images/scribo/icons/folder-less.svg +1 -0
  243. data/app/assets/images/scribo/icons/folder-lib-open.svg +2 -0
  244. data/app/assets/images/scribo/icons/folder-lib.svg +2 -0
  245. data/app/assets/images/scribo/icons/folder-log-open.svg +2 -0
  246. data/app/assets/images/scribo/icons/folder-log.svg +2 -0
  247. data/app/assets/images/scribo/icons/folder-mail-open.svg +1 -0
  248. data/app/assets/images/scribo/icons/folder-mail.svg +1 -0
  249. data/app/assets/images/scribo/icons/folder-mappings-open.svg +1 -0
  250. data/app/assets/images/scribo/icons/folder-mappings.svg +1 -0
  251. data/app/assets/images/scribo/icons/folder-markdown-open.svg +2 -0
  252. data/app/assets/images/scribo/icons/folder-markdown.svg +2 -0
  253. data/app/assets/images/scribo/icons/folder-messages-open.svg +1 -0
  254. data/app/assets/images/scribo/icons/folder-messages.svg +1 -0
  255. data/app/assets/images/scribo/icons/folder-meta-open.svg +1 -0
  256. data/app/assets/images/scribo/icons/folder-meta.svg +1 -0
  257. data/app/assets/images/scribo/icons/folder-middleware-open.svg +1 -0
  258. data/app/assets/images/scribo/icons/folder-middleware.svg +1 -0
  259. data/app/assets/images/scribo/icons/folder-mock-open.svg +1 -0
  260. data/app/assets/images/scribo/icons/folder-mock.svg +1 -0
  261. data/app/assets/images/scribo/icons/folder-ngrx-actions-open.svg +2 -0
  262. data/app/assets/images/scribo/icons/folder-ngrx-actions.svg +2 -0
  263. data/app/assets/images/scribo/icons/folder-ngrx-effects-open.svg +2 -0
  264. data/app/assets/images/scribo/icons/folder-ngrx-effects.svg +2 -0
  265. data/app/assets/images/scribo/icons/folder-ngrx-entities-open.svg +2 -0
  266. data/app/assets/images/scribo/icons/folder-ngrx-entities.svg +2 -0
  267. data/app/assets/images/scribo/icons/folder-ngrx-reducer-open.svg +2 -0
  268. data/app/assets/images/scribo/icons/folder-ngrx-reducer.svg +2 -0
  269. data/app/assets/images/scribo/icons/folder-ngrx-state-open.svg +1 -0
  270. data/app/assets/images/scribo/icons/folder-ngrx-state.svg +1 -0
  271. data/app/assets/images/scribo/icons/folder-ngrx-store-open.svg +1 -0
  272. data/app/assets/images/scribo/icons/folder-ngrx-store.svg +1 -0
  273. data/app/assets/images/scribo/icons/folder-node-open.svg +1 -0
  274. data/app/assets/images/scribo/icons/folder-node.svg +1 -0
  275. data/app/assets/images/scribo/icons/folder-nuxt-open.svg +1 -0
  276. data/app/assets/images/scribo/icons/folder-nuxt.svg +1 -0
  277. data/app/assets/images/scribo/icons/folder-open.svg +11 -0
  278. data/app/assets/images/scribo/icons/folder-other-open.svg +1 -0
  279. data/app/assets/images/scribo/icons/folder-other.svg +1 -0
  280. data/app/assets/images/scribo/icons/folder-packages-open.svg +1 -0
  281. data/app/assets/images/scribo/icons/folder-packages.svg +1 -0
  282. data/app/assets/images/scribo/icons/folder-php-open.svg +2 -0
  283. data/app/assets/images/scribo/icons/folder-php.svg +2 -0
  284. data/app/assets/images/scribo/icons/folder-phpmailer-open.svg +2 -0
  285. data/app/assets/images/scribo/icons/folder-phpmailer.svg +2 -0
  286. data/app/assets/images/scribo/icons/folder-pipe-open.svg +1 -0
  287. data/app/assets/images/scribo/icons/folder-pipe.svg +1 -0
  288. data/app/assets/images/scribo/icons/folder-plugin-open.svg +1 -0
  289. data/app/assets/images/scribo/icons/folder-plugin.svg +1 -0
  290. data/app/assets/images/scribo/icons/folder-prisma-open.svg +1 -0
  291. data/app/assets/images/scribo/icons/folder-prisma.svg +1 -0
  292. data/app/assets/images/scribo/icons/folder-private-open.svg +1 -0
  293. data/app/assets/images/scribo/icons/folder-private.svg +1 -0
  294. data/app/assets/images/scribo/icons/folder-public-open.svg +2 -0
  295. data/app/assets/images/scribo/icons/folder-public.svg +2 -0
  296. data/app/assets/images/scribo/icons/folder-python-open.svg +1 -0
  297. data/app/assets/images/scribo/icons/folder-python.svg +1 -0
  298. data/app/assets/images/scribo/icons/folder-react-components-open.svg +2 -0
  299. data/app/assets/images/scribo/icons/folder-react-components.svg +2 -0
  300. data/app/assets/images/scribo/icons/folder-redux-actions-open.svg +1 -0
  301. data/app/assets/images/scribo/icons/folder-redux-actions.svg +1 -0
  302. data/app/assets/images/scribo/icons/folder-redux-reducer-open.svg +2 -0
  303. data/app/assets/images/scribo/icons/folder-redux-reducer.svg +2 -0
  304. data/app/assets/images/scribo/icons/folder-redux-store-open.svg +2 -0
  305. data/app/assets/images/scribo/icons/folder-redux-store.svg +2 -0
  306. data/app/assets/images/scribo/icons/folder-resource-open.svg +2 -0
  307. data/app/assets/images/scribo/icons/folder-resource.svg +2 -0
  308. data/app/assets/images/scribo/icons/folder-review-open.svg +1 -0
  309. data/app/assets/images/scribo/icons/folder-review.svg +1 -0
  310. data/app/assets/images/scribo/icons/folder-routes-open.svg +1 -0
  311. data/app/assets/images/scribo/icons/folder-routes.svg +1 -0
  312. data/app/assets/images/scribo/icons/folder-rules-open.svg +1 -0
  313. data/app/assets/images/scribo/icons/folder-rules.svg +1 -0
  314. data/app/assets/images/scribo/icons/folder-sass-open.svg +1 -0
  315. data/app/assets/images/scribo/icons/folder-sass.svg +1 -0
  316. data/app/assets/images/scribo/icons/folder-scripts-open.svg +2 -0
  317. data/app/assets/images/scribo/icons/folder-scripts.svg +2 -0
  318. data/app/assets/images/scribo/icons/folder-secure-open.svg +1 -0
  319. data/app/assets/images/scribo/icons/folder-secure.svg +1 -0
  320. data/app/assets/images/scribo/icons/folder-server-open.svg +1 -0
  321. data/app/assets/images/scribo/icons/folder-server.svg +1 -0
  322. data/app/assets/images/scribo/icons/folder-serverless-open.svg +1 -0
  323. data/app/assets/images/scribo/icons/folder-serverless.svg +1 -0
  324. data/app/assets/images/scribo/icons/folder-shared-open.svg +1 -0
  325. data/app/assets/images/scribo/icons/folder-shared.svg +1 -0
  326. data/app/assets/images/scribo/icons/folder-src-open.svg +2 -0
  327. data/app/assets/images/scribo/icons/folder-src.svg +2 -0
  328. data/app/assets/images/scribo/icons/folder-stack-open.svg +1 -0
  329. data/app/assets/images/scribo/icons/folder-stack.svg +1 -0
  330. data/app/assets/images/scribo/icons/folder-stylus-open.svg +1 -0
  331. data/app/assets/images/scribo/icons/folder-stylus.svg +1 -0
  332. data/app/assets/images/scribo/icons/folder-sublime-open.svg +2 -0
  333. data/app/assets/images/scribo/icons/folder-sublime.svg +2 -0
  334. data/app/assets/images/scribo/icons/folder-svg-open.svg +1 -0
  335. data/app/assets/images/scribo/icons/folder-svg.svg +1 -0
  336. data/app/assets/images/scribo/icons/folder-syntax-open.svg +1 -0
  337. data/app/assets/images/scribo/icons/folder-syntax.svg +1 -0
  338. data/app/assets/images/scribo/icons/folder-tasks-open.svg +1 -0
  339. data/app/assets/images/scribo/icons/folder-tasks.svg +1 -0
  340. data/app/assets/images/scribo/icons/folder-temp-open.svg +2 -0
  341. data/app/assets/images/scribo/icons/folder-temp.svg +2 -0
  342. data/app/assets/images/scribo/icons/folder-template-open.svg +1 -0
  343. data/app/assets/images/scribo/icons/folder-template.svg +1 -0
  344. data/app/assets/images/scribo/icons/folder-test-open.svg +1 -0
  345. data/app/assets/images/scribo/icons/folder-test.svg +1 -0
  346. data/app/assets/images/scribo/icons/folder-theme-open.svg +2 -0
  347. data/app/assets/images/scribo/icons/folder-theme.svg +2 -0
  348. data/app/assets/images/scribo/icons/folder-tools-open.svg +1 -0
  349. data/app/assets/images/scribo/icons/folder-tools.svg +1 -0
  350. data/app/assets/images/scribo/icons/folder-typescript-open.svg +1 -0
  351. data/app/assets/images/scribo/icons/folder-typescript.svg +1 -0
  352. data/app/assets/images/scribo/icons/folder-upload-open.svg +1 -0
  353. data/app/assets/images/scribo/icons/folder-upload.svg +1 -0
  354. data/app/assets/images/scribo/icons/folder-utils-open.svg +1 -0
  355. data/app/assets/images/scribo/icons/folder-utils.svg +1 -0
  356. data/app/assets/images/scribo/icons/folder-video-open.svg +2 -0
  357. data/app/assets/images/scribo/icons/folder-video.svg +2 -0
  358. data/app/assets/images/scribo/icons/folder-views-open.svg +1 -0
  359. data/app/assets/images/scribo/icons/folder-views.svg +1 -0
  360. data/app/assets/images/scribo/icons/folder-vm-open.svg +1 -0
  361. data/app/assets/images/scribo/icons/folder-vm.svg +1 -0
  362. data/app/assets/images/scribo/icons/folder-vscode-open.svg +2 -0
  363. data/app/assets/images/scribo/icons/folder-vscode.svg +2 -0
  364. data/app/assets/images/scribo/icons/folder-vue-directives-open.svg +1 -0
  365. data/app/assets/images/scribo/icons/folder-vue-directives.svg +1 -0
  366. data/app/assets/images/scribo/icons/folder-vue-open.svg +1 -0
  367. data/app/assets/images/scribo/icons/folder-vue.svg +1 -0
  368. data/app/assets/images/scribo/icons/folder-vuex-store-open.svg +1 -0
  369. data/app/assets/images/scribo/icons/folder-vuex-store.svg +1 -0
  370. data/app/assets/images/scribo/icons/folder-wakatime-open.svg +2 -0
  371. data/app/assets/images/scribo/icons/folder-wakatime.svg +2 -0
  372. data/app/assets/images/scribo/icons/folder-webpack-open.svg +2 -0
  373. data/app/assets/images/scribo/icons/folder-webpack.svg +2 -0
  374. data/app/assets/images/scribo/icons/folder-wordpress-open.svg +2 -0
  375. data/app/assets/images/scribo/icons/folder-wordpress.svg +1 -0
  376. data/app/assets/images/scribo/icons/folder.svg +11 -0
  377. data/app/assets/images/scribo/icons/font.svg +3 -0
  378. data/app/assets/images/scribo/icons/foxpro.svg +1 -0
  379. data/app/assets/images/scribo/icons/fsharp.svg +7 -0
  380. data/app/assets/images/scribo/icons/fusebox.svg +20 -0
  381. data/app/assets/images/scribo/icons/gatsby.svg +5 -0
  382. data/app/assets/images/scribo/icons/gemfile.svg +1 -0
  383. data/app/assets/images/scribo/icons/git.svg +4 -0
  384. data/app/assets/images/scribo/icons/gitlab.svg +43 -0
  385. data/app/assets/images/scribo/icons/gitpod.svg +1 -0
  386. data/app/assets/images/scribo/icons/go-mod.svg +8 -0
  387. data/app/assets/images/scribo/icons/go.svg +8 -0
  388. data/app/assets/images/scribo/icons/go_gopher.svg +25 -0
  389. data/app/assets/images/scribo/icons/godot-assets.svg +1 -0
  390. data/app/assets/images/scribo/icons/godot.svg +1 -0
  391. data/app/assets/images/scribo/icons/gradle.svg +3 -0
  392. data/app/assets/images/scribo/icons/graphcool.svg +6 -0
  393. data/app/assets/images/scribo/icons/graphql.svg +11 -0
  394. data/app/assets/images/scribo/icons/groovy.svg +3 -0
  395. data/app/assets/images/scribo/icons/grunt.svg +1 -0
  396. data/app/assets/images/scribo/icons/gulp.svg +3 -0
  397. data/app/assets/images/scribo/icons/h.svg +6 -0
  398. data/app/assets/images/scribo/icons/hack.svg +2 -0
  399. data/app/assets/images/scribo/icons/haml.svg +5 -0
  400. data/app/assets/images/scribo/icons/handlebars.svg +3 -0
  401. data/app/assets/images/scribo/icons/haskell.svg +8 -0
  402. data/app/assets/images/scribo/icons/haxe.svg +17 -0
  403. data/app/assets/images/scribo/icons/hcl.svg +1 -0
  404. data/app/assets/images/scribo/icons/hcl_light.svg +1 -0
  405. data/app/assets/images/scribo/icons/helm.svg +1 -0
  406. data/app/assets/images/scribo/icons/heroku.svg +1 -0
  407. data/app/assets/images/scribo/icons/hpp.svg +7 -0
  408. data/app/assets/images/scribo/icons/html.svg +3 -0
  409. data/app/assets/images/scribo/icons/http.svg +3 -0
  410. data/app/assets/images/scribo/icons/i18n.svg +1 -0
  411. data/app/assets/images/scribo/icons/image.svg +3 -0
  412. data/app/assets/images/scribo/icons/ionic.svg +1 -0
  413. data/app/assets/images/scribo/icons/istanbul.svg +1 -0
  414. data/app/assets/images/scribo/icons/java.svg +3 -0
  415. data/app/assets/images/scribo/icons/javascript-map.svg +6 -0
  416. data/app/assets/images/scribo/icons/javascript.svg +3 -0
  417. data/app/assets/images/scribo/icons/jenkins.svg +1 -0
  418. data/app/assets/images/scribo/icons/jest.svg +1 -0
  419. data/app/assets/images/scribo/icons/jinja.svg +17 -0
  420. data/app/assets/images/scribo/icons/jinja_light.svg +17 -0
  421. data/app/assets/images/scribo/icons/json.svg +1 -0
  422. data/app/assets/images/scribo/icons/julia.svg +9 -0
  423. data/app/assets/images/scribo/icons/jupyter.svg +1 -0
  424. data/app/assets/images/scribo/icons/karma.svg +8 -0
  425. data/app/assets/images/scribo/icons/key.svg +3 -0
  426. data/app/assets/images/scribo/icons/kivy.svg +9 -0
  427. data/app/assets/images/scribo/icons/kl.svg +8 -0
  428. data/app/assets/images/scribo/icons/kotlin.svg +14 -0
  429. data/app/assets/images/scribo/icons/laravel.svg +5 -0
  430. data/app/assets/images/scribo/icons/less.svg +1 -0
  431. data/app/assets/images/scribo/icons/lib.svg +3 -0
  432. data/app/assets/images/scribo/icons/livescript.svg +18 -0
  433. data/app/assets/images/scribo/icons/lock.svg +3 -0
  434. data/app/assets/images/scribo/icons/log.svg +4 -0
  435. data/app/assets/images/scribo/icons/lua.svg +7 -0
  436. data/app/assets/images/scribo/icons/makefile.svg +1 -0
  437. data/app/assets/images/scribo/icons/markdown.svg +3 -0
  438. data/app/assets/images/scribo/icons/markojs.svg +12 -0
  439. data/app/assets/images/scribo/icons/mathematica.svg +3 -0
  440. data/app/assets/images/scribo/icons/matlab.svg +8 -0
  441. data/app/assets/images/scribo/icons/mdx.svg +1 -0
  442. data/app/assets/images/scribo/icons/merlin.svg +5 -0
  443. data/app/assets/images/scribo/icons/mint.svg +1 -0
  444. data/app/assets/images/scribo/icons/mjml.svg +4 -0
  445. data/app/assets/images/scribo/icons/mocha.svg +2 -0
  446. data/app/assets/images/scribo/icons/moonscript.svg +1 -0
  447. data/app/assets/images/scribo/icons/mxml.svg +3 -0
  448. data/app/assets/images/scribo/icons/nest-controller.svg +8 -0
  449. data/app/assets/images/scribo/icons/nest-decorator.svg +8 -0
  450. data/app/assets/images/scribo/icons/nest-filter.svg +8 -0
  451. data/app/assets/images/scribo/icons/nest-gateway.svg +8 -0
  452. data/app/assets/images/scribo/icons/nest-guard.svg +8 -0
  453. data/app/assets/images/scribo/icons/nest-middleware.svg +8 -0
  454. data/app/assets/images/scribo/icons/nest-module.svg +8 -0
  455. data/app/assets/images/scribo/icons/nest-pipe.svg +8 -0
  456. data/app/assets/images/scribo/icons/nest-service.svg +8 -0
  457. data/app/assets/images/scribo/icons/nest.svg +8 -0
  458. data/app/assets/images/scribo/icons/netlify.svg +1 -0
  459. data/app/assets/images/scribo/icons/ngrx-actions.svg +4 -0
  460. data/app/assets/images/scribo/icons/ngrx-effects.svg +4 -0
  461. data/app/assets/images/scribo/icons/ngrx-entity.svg +4 -0
  462. data/app/assets/images/scribo/icons/ngrx-reducer.svg +4 -0
  463. data/app/assets/images/scribo/icons/ngrx-state.svg +4 -0
  464. data/app/assets/images/scribo/icons/nim.svg +1 -0
  465. data/app/assets/images/scribo/icons/nix.svg +6 -0
  466. data/app/assets/images/scribo/icons/nodejs.svg +3 -0
  467. data/app/assets/images/scribo/icons/nodejs_alt.svg +1 -0
  468. data/app/assets/images/scribo/icons/nodemon.svg +7 -0
  469. data/app/assets/images/scribo/icons/now.svg +1 -0
  470. data/app/assets/images/scribo/icons/now_light.svg +1 -0
  471. data/app/assets/images/scribo/icons/npm.svg +8 -0
  472. data/app/assets/images/scribo/icons/nunjucks.svg +3 -0
  473. data/app/assets/images/scribo/icons/nuxt.svg +1 -0
  474. data/app/assets/images/scribo/icons/ocaml.svg +1 -0
  475. data/app/assets/images/scribo/icons/pdf.svg +1 -0
  476. data/app/assets/images/scribo/icons/percy.svg +1 -0
  477. data/app/assets/images/scribo/icons/perl.svg +3 -0
  478. data/app/assets/images/scribo/icons/php.svg +1 -0
  479. data/app/assets/images/scribo/icons/php_elephant.svg +4 -0
  480. data/app/assets/images/scribo/icons/postcss.svg +9 -0
  481. data/app/assets/images/scribo/icons/powerpoint.svg +3 -0
  482. data/app/assets/images/scribo/icons/powershell.svg +1 -0
  483. data/app/assets/images/scribo/icons/prettier.svg +35 -0
  484. data/app/assets/images/scribo/icons/prisma.svg +1 -0
  485. data/app/assets/images/scribo/icons/processing.svg +5 -0
  486. data/app/assets/images/scribo/icons/processing_light.svg +5 -0
  487. data/app/assets/images/scribo/icons/protractor.svg +1 -0
  488. data/app/assets/images/scribo/icons/pug.svg +22 -0
  489. data/app/assets/images/scribo/icons/puppet.svg +13 -0
  490. data/app/assets/images/scribo/icons/purescript.svg +1 -0
  491. data/app/assets/images/scribo/icons/python-misc.svg +1 -0
  492. data/app/assets/images/scribo/icons/python.svg +8 -0
  493. data/app/assets/images/scribo/icons/r.svg +4 -0
  494. data/app/assets/images/scribo/icons/racket.svg +1 -0
  495. data/app/assets/images/scribo/icons/raml.svg +1 -0
  496. data/app/assets/images/scribo/icons/razor.svg +1 -0
  497. data/app/assets/images/scribo/icons/react.svg +3 -0
  498. data/app/assets/images/scribo/icons/react_ts.svg +1 -0
  499. data/app/assets/images/scribo/icons/readme.svg +3 -0
  500. data/app/assets/images/scribo/icons/reason.svg +3 -0
  501. data/app/assets/images/scribo/icons/red.svg +8 -0
  502. data/app/assets/images/scribo/icons/redux-action.svg +1 -0
  503. data/app/assets/images/scribo/icons/redux-reducer.svg +1 -0
  504. data/app/assets/images/scribo/icons/redux-store.svg +1 -0
  505. data/app/assets/images/scribo/icons/restql.svg +60 -0
  506. data/app/assets/images/scribo/icons/riot.svg +1 -0
  507. data/app/assets/images/scribo/icons/robot.svg +1 -0
  508. data/app/assets/images/scribo/icons/rollup.svg +50 -0
  509. data/app/assets/images/scribo/icons/routing.svg +3 -0
  510. data/app/assets/images/scribo/icons/ruby.svg +3 -0
  511. data/app/assets/images/scribo/icons/rust.svg +3 -0
  512. data/app/assets/images/scribo/icons/san.svg +1 -0
  513. data/app/assets/images/scribo/icons/sass.svg +1 -0
  514. data/app/assets/images/scribo/icons/sbt.svg +6 -0
  515. data/app/assets/images/scribo/icons/scala.svg +1 -0
  516. data/app/assets/images/scribo/icons/scheme.svg +1 -0
  517. data/app/assets/images/scribo/icons/semantic-release.svg +1 -0
  518. data/app/assets/images/scribo/icons/semantic-release_light.svg +1 -0
  519. data/app/assets/images/scribo/icons/sequelize.svg +31 -0
  520. data/app/assets/images/scribo/icons/settings.svg +3 -0
  521. data/app/assets/images/scribo/icons/shaderlab.svg +3 -0
  522. data/app/assets/images/scribo/icons/silverstripe.svg +1 -0
  523. data/app/assets/images/scribo/icons/slim.svg +4 -0
  524. data/app/assets/images/scribo/icons/smarty.svg +3 -0
  525. data/app/assets/images/scribo/icons/snyk.svg +23 -0
  526. data/app/assets/images/scribo/icons/solidity.svg +7 -0
  527. data/app/assets/images/scribo/icons/stencil.svg +1 -0
  528. data/app/assets/images/scribo/icons/stencil_light.svg +1 -0
  529. data/app/assets/images/scribo/icons/storybook.svg +1 -0
  530. data/app/assets/images/scribo/icons/stylelint.svg +12 -0
  531. data/app/assets/images/scribo/icons/stylelint_light.svg +12 -0
  532. data/app/assets/images/scribo/icons/stylus.svg +1 -0
  533. data/app/assets/images/scribo/icons/sublime.svg +1 -0
  534. data/app/assets/images/scribo/icons/svelte.svg +1 -0
  535. data/app/assets/images/scribo/icons/svg.svg +1 -0
  536. data/app/assets/images/scribo/icons/swc.svg +12 -0
  537. data/app/assets/images/scribo/icons/swift.svg +1 -0
  538. data/app/assets/images/scribo/icons/table.svg +3 -0
  539. data/app/assets/images/scribo/icons/tailwindcss.svg +1 -0
  540. data/app/assets/images/scribo/icons/terraform.svg +12 -0
  541. data/app/assets/images/scribo/icons/test-js.svg +1 -0
  542. data/app/assets/images/scribo/icons/test-jsx.svg +4 -0
  543. data/app/assets/images/scribo/icons/test-ts.svg +1 -0
  544. data/app/assets/images/scribo/icons/tex.svg +1 -0
  545. data/app/assets/images/scribo/icons/todo.svg +1 -0
  546. data/app/assets/images/scribo/icons/travis.svg +13 -0
  547. data/app/assets/images/scribo/icons/tune.svg +7 -0
  548. data/app/assets/images/scribo/icons/twig.svg +3 -0
  549. data/app/assets/images/scribo/icons/typescript-def.svg +6 -0
  550. data/app/assets/images/scribo/icons/typescript.svg +3 -0
  551. data/app/assets/images/scribo/icons/url.svg +3 -0
  552. data/app/assets/images/scribo/icons/vagrant.svg +1 -0
  553. data/app/assets/images/scribo/icons/velocity.svg +1 -0
  554. data/app/assets/images/scribo/icons/verilog.svg +3 -0
  555. data/app/assets/images/scribo/icons/vfl.svg +16 -0
  556. data/app/assets/images/scribo/icons/video.svg +4 -0
  557. data/app/assets/images/scribo/icons/vim.svg +1 -0
  558. data/app/assets/images/scribo/icons/virtual.svg +1 -0
  559. data/app/assets/images/scribo/icons/visualstudio.svg +4 -0
  560. data/app/assets/images/scribo/icons/vscode.svg +9 -0
  561. data/app/assets/images/scribo/icons/vue-config.svg +1 -0
  562. data/app/assets/images/scribo/icons/vue.svg +1 -0
  563. data/app/assets/images/scribo/icons/vuex-store.svg +1 -0
  564. data/app/assets/images/scribo/icons/wakatime.svg +21 -0
  565. data/app/assets/images/scribo/icons/wakatime_light.svg +21 -0
  566. data/app/assets/images/scribo/icons/wallaby.svg +1 -0
  567. data/app/assets/images/scribo/icons/watchman.svg +4 -0
  568. data/app/assets/images/scribo/icons/webassembly.svg +1 -0
  569. data/app/assets/images/scribo/icons/webhint.svg +5 -0
  570. data/app/assets/images/scribo/icons/webpack.svg +6 -0
  571. data/app/assets/images/scribo/icons/wepy.svg +1 -0
  572. data/app/assets/images/scribo/icons/wolframlanguage.svg +13 -0
  573. data/app/assets/images/scribo/icons/word.svg +3 -0
  574. data/app/assets/images/scribo/icons/xaml.svg +3 -0
  575. data/app/assets/images/scribo/icons/xml.svg +4 -0
  576. data/app/assets/images/scribo/icons/yaml.svg +1 -0
  577. data/app/assets/images/scribo/icons/yang.svg +1 -0
  578. data/app/assets/images/scribo/icons/yarn.svg +3 -0
  579. data/app/assets/images/scribo/icons/zip.svg +3 -0
  580. data/app/assets/stylesheets/scribo/application.css +108 -0
  581. data/app/assets/stylesheets/scribo/components/file-icons.css +158 -0
  582. data/app/assets/stylesheets/scribo/components/open-editors.css +83 -0
  583. data/app/assets/stylesheets/scribo/components/tree-view.css +312 -0
  584. data/app/javascript/scribo/application.js +2 -0
  585. data/app/javascript/scribo/controllers/application.js +12 -0
  586. data/app/javascript/scribo/controllers/image_editor_controller.js +72 -0
  587. data/app/javascript/scribo/controllers/index.js +4 -0
  588. data/app/javascript/scribo/controllers/open_editors_controller.js +291 -0
  589. data/app/javascript/scribo/controllers/text_editor_controller.js +39 -0
  590. data/app/javascript/scribo/controllers/tree_view_controller.js +378 -0
  591. data/app/javascript/scribo/controllers/upload_controller.js +81 -0
  592. data/app/views/scribo/admin/sites/contents/_form.html.slim +11 -12
  593. data/app/views/scribo/shared/_ide.html.slim +1 -1
  594. data/app/views/scribo/shared/_tree-view.html.slim +3 -3
  595. data/bin/importmap +4 -0
  596. data/bin/rails +14 -0
  597. data/bin/rake +29 -0
  598. data/bin/rubocop +29 -0
  599. data/cli/.gitignore +2 -0
  600. data/cli/scribo.cr +103 -0
  601. data/cli/shard.lock +6 -0
  602. data/cli/shard.yml +18 -0
  603. data/config/importmap.rb +8 -0
  604. data/docs/content.md +33 -0
  605. data/docs/editor.png +0 -0
  606. data/docs/features.md +71 -0
  607. data/docs/ide.md +17 -0
  608. data/docs/import_export.md +7 -0
  609. data/docs/liquid.md +59 -0
  610. data/favicon.ico +0 -0
  611. data/frontend/images/.DS_Store +0 -0
  612. data/icon.png +0 -0
  613. data/lib/generators/scribo/install_generator.rb +22 -0
  614. data/lib/generators/scribo/tailwind_config_generator.rb +24 -0
  615. data/lib/generators/scribo/templates/config/initializers/scribo.rb +16 -0
  616. data/lib/scribo/engine.rb +19 -8
  617. data/lib/scribo/version.rb +1 -1
  618. data/lib/tasks/scribo_tasks.rake +13 -0
  619. data/logo.svg +1 -0
  620. data/scribo.gemspec +54 -0
  621. data/vendor/javascript/@hotwired--stimulus.js +2 -0
  622. data/vendor/javascript/painterro.js +2 -0
  623. data/vendor/javascript/sortablejs.js +134 -0
  624. data/yarn.lock +6775 -0
  625. metadata +683 -15
  626. data/app/assets/javascripts/scribo/scribo.js +0 -1
  627. data/app/assets/stylesheets/scribo/scribo.css +0 -1
  628. data/lib/scribo/liquid/tags/editable_url_tag.rb +0 -19
@@ -0,0 +1,81 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ /***
4
+ * Upload controller
5
+ *
6
+ * Uploads a file, when you drop a file.
7
+ */
8
+ export default class extends Controller {
9
+
10
+ connect() {
11
+ const self = this;
12
+ if(!self.data.has('param-name')) {
13
+ console.warn(this.element, "has no data-upload-param attribute, uploads may not work")
14
+ };
15
+
16
+ self.element.addEventListener('dragover', function (evt) {
17
+ self.element.classList.add('dragging');
18
+ evt.preventDefault();
19
+ });
20
+
21
+ self.element.addEventListener('dragleave', function (evt) {
22
+ self.element.classList.remove('dragging');
23
+ evt.preventDefault();
24
+ });
25
+
26
+ self.element.addEventListener('dragenter', function (evt) {
27
+ self.element.classList.add('dragging');
28
+ evt.preventDefault();
29
+ });
30
+
31
+ self.element.addEventListener('drop', function (evt) {
32
+ if (evt.dataTransfer.files.length == 0) {
33
+ return;
34
+ }
35
+
36
+ self.element.classList.remove('dragging');
37
+ evt.preventDefault();
38
+ evt.cancelBubble = true;
39
+
40
+ let formData = new FormData();
41
+ if(self.data.has('extra-data')) {
42
+ for (let [key, value] of Object.entries(JSON.parse(self.data.get('extra-data')))) {
43
+ formData.append(key, value);
44
+ }
45
+ }
46
+
47
+ for (let i = 0; i < evt.dataTransfer.files.length; i++) {
48
+ formData.append(self.data.get('param-name'), evt.dataTransfer.files[i]);
49
+ }
50
+
51
+ self.element.classList.add('uploading');
52
+
53
+ fetch(self.data.get('url'), {
54
+ method: 'POST',
55
+ headers: {
56
+ 'X-CSRF-Token': document.querySelector('meta[name=csrf-token]').content
57
+ },
58
+ body: formData
59
+ })
60
+ .then(self.handleErrors)
61
+ .then((response) => {
62
+ response.json().then(function (data) {
63
+ self.element.classList.remove('uploading');
64
+ let node = document.querySelector(data.selector);
65
+ if (node) {
66
+ node.innerHTML = data.html;
67
+ }
68
+ });
69
+ })
70
+ .catch(error => {
71
+ console.log(error);
72
+ self.element.classList.remove('uploading');
73
+ });
74
+ });
75
+ }
76
+
77
+ handleErrors(response) {
78
+ if (!response.ok) throw new Error(response.status);
79
+ return response;
80
+ }
81
+ }
@@ -1,17 +1,16 @@
1
- div style="position: absolute; width: 100%; height: 100%;"
1
+ div id="content-editor-#{@content.id}" style="position: absolute; width: 100%; height: 100%;" data-controller="text-editor" data-text-editor-content-id=@content.id data-text-editor-height-value="100%" data-text-editor-mode=@content.content_type data-text-editor-save-url=admin_site_content_path(@site, @content)
2
2
  - if @content.kind == 'asset'
3
- - if @content.media_type == 'image'
4
- div id="content-editor-#{@content.id}" data-controller="image-editor" data-image-editor-content-id=@content.id data-image-editor-url=content_url(@content) data-image-editor-mime-type=@content.mime_type data-image-editor-save-url=admin_site_content_path(@site, @content) style="max-width: 100%;"
5
- - if @content.media_type == 'font' || @content.mime_type == "application/vnd.ms-fontobject"
6
- css:
3
+ - if @content.media_type == 'image'
4
+ div data-controller="image-editor" data-image-editor-content-id=@content.id data-image-editor-url=content_url(@content) data-image-editor-mime-type=@content.mime_type data-image-editor-save-url=admin_site_content_path(@site, @content) style="max-width: 100%;"
5
+ - if @content.media_type == 'font' || @content.mime_type == "application/vnd.ms-fontobject"
6
+ css:
7
7
  @font-face {
8
- font-family: 'MyWebFont';
9
- src: url(#{"#{content_path(@content)}"}); /* IE9 Compat Modes */
8
+ font-family: 'MyWebFont';
9
+ src: url(#{ "#{content_path(@content)}" }); /* IE9 Compat Modes */
10
10
  }
11
- - for i in [10, 12, 14, 16, 18, 20, 22, 24]
12
- div style="font-family: MyWebFont; font-size: #{i}px;"
13
- | #{i} - THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. the quick brown fox jumped over the lazy dog.
11
+ - for i in [10, 12, 14, 16, 18, 20, 22, 24]
12
+ div style="font-family: MyWebFont; font-size: #{i}px;"
13
+ | #{i} - THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. the quick brown fox jumped over the lazy dog.
14
14
 
15
15
  - else
16
- textarea id="content-editor-#{@content.id}" name='content[data_with_frontmatter]' data-controller="text-editor" data-text-editor-content-id=@content.id data-text-editor-target="textarea" data-text-editor-mode="#{@content.content_type}" data-text-editor-save-url=admin_site_content_path(@site, @content) style="display: block; height: 100%;"
17
- = @content.data_with_frontmatter || 'Start typing here'
16
+ input type="hidden" name='content[data_with_frontmatter]' data-text-editor-target="input" value=(@content.data_with_frontmatter || 'Start typing here')
@@ -1,7 +1,7 @@
1
1
  .scribo-ide id="ide" data-controller='open-editors'
2
2
  .explorer-pane data-controller="tree-view upload" data-tree-view-update-url="#{move_admin_site_contents_path(@site)}" data-upload-url="#{upload_admin_site_contents_url(@site)}" data-upload-param-name="content[files][]"
3
3
  .tree-view
4
- = render partial: 'scribo/shared/tree-view'
4
+ = render partial: 'scribo/shared/tree-view'
5
5
 
6
6
  .editors-pane
7
7
  .editors-tabs data-open-editors-target='tabs' data-action="click->open-editors#clickTabs"
@@ -9,9 +9,9 @@ div.section
9
9
  div.section
10
10
  span.title = @site.title
11
11
  .tools
12
- i.fal.fa-file-plus data-action="click->tree-view#create" data-kind="text" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_file')
13
- i.fal.fa-folder-plus data-action="click->tree-view#create" data-kind="folder" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_folder')
14
- i.fal.fa-square-plus data-action="click->tree-view#collapseExpandAll" data-tree-view-target="collapseExpand" title=I18n.t('scribo.tools.collapse_all')
12
+ i.fas.fa-file-plus data-action="click->tree-view#create" data-kind="text" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_file')
13
+ i.fas.fa-folder-plus data-action="click->tree-view#create" data-kind="folder" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_folder')
14
+ i.fas.fa-square-plus data-action="click->tree-view#collapseExpandAll" data-tree-view-target="collapseExpand" title=I18n.t('scribo.tools.collapse_all')
15
15
 
16
16
  ul data-tree-view-target="contentItems" data-open-editors-target='contentItems'
17
17
  - @contents.each do |content|
data/bin/importmap ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../test/dummy/config/application"
4
+ require "importmap/commands"
data/bin/rails ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
4
+
5
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
6
+ ENGINE_PATH = File.expand_path('../../lib/scribo/engine', __FILE__)
7
+ APP_PATH = File.expand_path('../../test/dummy/config/application', __FILE__)
8
+
9
+ # Set up gems listed in the Gemfile.
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
11
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
12
+
13
+ require 'rails/all'
14
+ require 'rails/engine/commands'
data/bin/rake 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 'rake' 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("rake", "rake")
data/bin/rubocop 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 'rubocop' 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("rubocop", "rubocop")
data/cli/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ lib/
2
+ scribo
data/cli/scribo.cr ADDED
@@ -0,0 +1,103 @@
1
+ require "compress/zip"
2
+ require "admiral"
3
+ require "yaml"
4
+ require "http/client"
5
+
6
+ class Scribo
7
+ def initialize
8
+ end
9
+
10
+ def zip_and_upload
11
+ if !config["endpoint"]? || config["api_key"]?
12
+ puts "Please configure an endpoint and api_key in your _config.yml:\n\n"
13
+ puts "cli:\n endpoint: https://example.com/\n api_key: someapikey"
14
+ exit
15
+ end
16
+
17
+ zip_file_name = "#{File.basename(Dir.current)}.zip"
18
+ tempfile = File.tempfile(zip_file_name)
19
+ File.open(tempfile.path, "w") do |file|
20
+ Compress::Zip::Writer.open(file) do |zip|
21
+
22
+ Dir.glob("**/*").each do |file_name|
23
+ next if File.directory?(file_name)
24
+ zip.add file_name, File.open(file_name)
25
+ end
26
+ end
27
+ end
28
+
29
+ io = IO::Memory.new
30
+ builder = HTTP::FormData::Builder.new(io, "aA47")
31
+ builder.file("files[]", File.open(tempfile.path), HTTP::FormData::FileMetadata.new(filename: zip_file_name))
32
+ builder.finish
33
+
34
+ response = HTTP::Client.post(import_url, headers: HTTP::Headers{"User-Agent" => "Scribo"}, body: io.to_s)
35
+
36
+ tempfile.delete
37
+ end
38
+
39
+ def init_example(name)
40
+ if Dir.exists?(name)
41
+ puts "A folder #{name} already exists, move this out of the way first."
42
+ exit
43
+ end
44
+
45
+ Dir.mkdir_p("#{name}/assets/images")
46
+ Dir.mkdir_p("#{name}/assets/fonts")
47
+ Dir.mkdir_p("#{name}/assets/style")
48
+ Dir.mkdir_p("#{name}/_layouts")
49
+ File.open("#{name}/_config.yml", "w") do |file|
50
+ file.puts "# General configuration\ntitle: #{name}\nbaseurl: /#{name}\n\n# Scribo command line utility related\n\ncli:\n endpoint: https://example.com/scribo\n api_key: someapikey"
51
+ end
52
+ File.open("#{name}/index.md", "w") do |file|
53
+ file.puts "---\nlayout: default\n---\n# Welcome to #{name}\nYou can find the contents of this page in index.md"
54
+ end
55
+ File.open("#{name}/_layouts/default.html", "w") do |file|
56
+ file.puts %(<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n <meta name="viewport" content="width=device-width, initial-scale=1">\n<body>\n {{content}}\n</body>\n</html>)
57
+ end
58
+ end
59
+
60
+ # private
61
+
62
+ def config
63
+ config = YAML.parse(File.read("_config.yml"))
64
+ config = config["cli"]
65
+ end
66
+
67
+ def import_url
68
+ "#{config["endpoint"]}/api/sites/import"
69
+ end
70
+ end
71
+
72
+ class ScriboCommand < Admiral::Command
73
+ define_help description: "Scribo command line utility"
74
+
75
+ class PublishCommand < Admiral::Command
76
+ def run
77
+ Scribo.new.zip_and_upload
78
+ end
79
+ end
80
+
81
+ class InitCommand < Admiral::Command
82
+ define_help description: "Initializes a new site"
83
+ define_argument name, required: true
84
+
85
+ def run
86
+ Scribo.new.init_example(arguments.name)
87
+ end
88
+ end
89
+
90
+ register_sub_command publish : PublishCommand, description: "Uploads the current site"
91
+ register_sub_command init : InitCommand, description: "Creates a new site"
92
+
93
+ def run
94
+ puts help
95
+
96
+ if !File.exists?("_config.yml")
97
+ puts "\nNo _config.yml found, are you in the correct folder?"
98
+ exit
99
+ end
100
+ end
101
+ end
102
+
103
+ ScriboCommand.run
data/cli/shard.lock ADDED
@@ -0,0 +1,6 @@
1
+ version: 2.0
2
+ shards:
3
+ admiral:
4
+ git: https://github.com/jwaldrip/admiral.cr.git
5
+ version: 1.11.2
6
+
data/cli/shard.yml ADDED
@@ -0,0 +1,18 @@
1
+ name: cli
2
+ version: 0.1.0
3
+
4
+ authors:
5
+ - Tom de Grunt <tom@degrunt.nl>
6
+
7
+ description: |
8
+ Scribo CLI utility
9
+
10
+ dependencies:
11
+ admiral:
12
+ github: jwaldrip/admiral.cr
13
+
14
+ # development_dependencies:
15
+ # webmock:
16
+ # github: manastech/webmock.cr
17
+
18
+ license: MIT
@@ -0,0 +1,8 @@
1
+ pin "@hotwired/stimulus", to: "@hotwired--stimulus.js" # @3.2.2
2
+ pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
3
+ pin "painterro" # @1.2.87
4
+ pin "sortablejs" # @1.15.2
5
+
6
+ pin "scribo", to: "scribo/application.js", preload: false
7
+
8
+ pin_all_from Scribo::Engine.root.join("app/javascript/scribo/controllers"), under: "scribo/controllers", to: "scribo/controllers", preload: false
data/docs/content.md ADDED
@@ -0,0 +1,33 @@
1
+ # Content
2
+
3
+ To keep the CMS easy to use and not have to much impact on your existing database,
4
+ all content is kept in one model: `Content`.
5
+ The field 'kind' is used to make a distinction between text-based content (text) and binary content (assets).
6
+
7
+ ## Content
8
+ Text based content (kind: text) is meant for things like:
9
+ - Text (text/plain)
10
+ - HTML (text/html)
11
+ - JavaScript
12
+ - Stylesheets
13
+ - JSON
14
+ - XML
15
+
16
+ Text based content is always going through the liquid templating processor.
17
+
18
+ ### Path
19
+
20
+ All content has a path, and is directly available through a url or path. You can also make it not directly available by using an underscore in the path.
21
+
22
+ ## Assets
23
+ Binary content (kind: assets) is meant for things like:
24
+ - Images
25
+ - Audio
26
+ - Video
27
+ - Documents (Word, Excel, Powerpoint, PDF's)
28
+ - Fonts
29
+ - Others (fe zip)
30
+ - Everything else
31
+
32
+ Assets will always be served in the same way they are stored in the database.
33
+
data/docs/editor.png ADDED
Binary file
data/docs/features.md ADDED
@@ -0,0 +1,71 @@
1
+ # Features
2
+
3
+ ## Shared path per site
4
+
5
+ All content within one site shares a path to be as similar to a regular site as possible.
6
+ This means your index.html can refer to a /img/logo.png just like you normally would.
7
+
8
+ ## Nested layouts
9
+
10
+ Your blog articles can have an article layout, but still use your site-layout:
11
+
12
+ Say you have an article.html and some layouts:
13
+
14
+ - article.html, layout: article_layout
15
+ - article_layout, layout: application_layout
16
+ - application_layout
17
+
18
+ Scribo will render `article.html` in the `article_layout`, which will be rendered in the `application_layout`
19
+
20
+ ## Liquid templating
21
+
22
+ All text-based content is rendered through [liquid](http://liquidmarkup.org)
23
+ This means you can do powerful things with your pages, layouts but even stylesheets.
24
+
25
+ To every content we render, we add the `content` local, this means you can access content information in the content we render:
26
+
27
+ index.html:
28
+
29
+ ```html
30
+ <html>
31
+ <head>
32
+ <title>{{content.title}}</title>
33
+ <meta name="title" content="{{content.title}}" />
34
+ <meta name="description" content="{{content.description}}" />
35
+ <meta name="keywords" content="{{content.keywords}}" />
36
+ </head>
37
+ <body>
38
+ <h1>Navigation</h1>
39
+ <ul>
40
+ {%for c in content.sites.contents%}
41
+ <li><a href="{{c.path}}">{{c.title}}</a></li>
42
+ {%endfor%}
43
+ </ul>
44
+ </body>
45
+ </html>
46
+ ```
47
+
48
+ ### include
49
+
50
+ Usage: {% include 'identifier' %}
51
+
52
+ Will include the content from the identified content.
53
+
54
+ Example:
55
+
56
+ ```
57
+ {% include 'menu' %}
58
+ ```
59
+
60
+ Will look for content with identifier 'menu' and include that.
61
+
62
+ ## Filters
63
+
64
+ Because we use [Slim](http://slim-lang.com) and [Tilt](https://github.com/rtomayko/tilt), all text-based content can be run through additional filters like Markdown, Slim, Haml and Sass.
65
+
66
+ If you add content and set filter to 'markdown', Scribo will render that content using markdown.
67
+
68
+ ## Nested content (not enabled)
69
+
70
+ Content can have child content, this allows for blog-like structure (rendering is done by parent).
71
+ Child content will inherit the path of the parent.
data/docs/ide.md ADDED
@@ -0,0 +1,17 @@
1
+ # IDE
2
+ The IDE provides you with two main areas, the explorer on the right and the code editor on the right.
3
+
4
+ ## Explorer
5
+ The explorer shows all files and folders in the site. The explorer allows you to do the following:
6
+ - add files or folders, by clicking the 'New file' of 'New folder' icon
7
+ - rename files or folders, by double clicking on a file or folder name
8
+ - reorder files or folders by dragging them.
9
+ - add new files to your site by dragging files onto the tree
10
+
11
+ ## Code editor
12
+ The code editor allows you to edit files. It provides syntax highlighting, allows you to collapse regions.
13
+ The following shortcuts are available:
14
+
15
+ - cmd-f / ctrl-f: Find
16
+ - option-cmd-f / alt-ctrl-f: Replace
17
+
@@ -0,0 +1,7 @@
1
+ # Importing and exporting
2
+
3
+ Scribo allows you to easily import and export sites,
4
+ if you want to work with the content outside the web-based maintenance.
5
+
6
+ Importing and exporting is done using zip files, which contains one zipped site.
7
+ All content in the zip will be in a folder with the same base-name as the zip.
data/docs/liquid.md ADDED
@@ -0,0 +1,59 @@
1
+ # Liquid
2
+
3
+ Scribo uses liquid for all its template rendering, liquid is simple and safe.
4
+ You can read more about liquid here: https://shopify.github.io/liquid/
5
+
6
+ When you render a template, you can pass it assigns and registers.
7
+ The difference is subtle: assigns are exposed to the template, while registers are exposed to Drops, Tags, and Filters.
8
+
9
+ ## Customizing
10
+
11
+ ### Filters
12
+ Filters are methods which take one or more parameters and return a value.
13
+ Filters can access the context and registers as in the below example:
14
+
15
+ ```ruby
16
+ module RenderFilter
17
+ def render(input)
18
+ template = Liquid::Template.parse(input)
19
+ template.render(@context, registers: @context.registers)
20
+ end
21
+ end
22
+
23
+ Liquid::Template.register_filter(RenderFilter)
24
+ ```
25
+
26
+ ### Tags
27
+
28
+ "Tags" are tags that take any number of arguments, but do not contain a block of template code.
29
+
30
+ ```ruby
31
+ # Renders content
32
+ #
33
+ # {% render variable%}
34
+ class RenderTag < Liquid::Tag
35
+ def initialize(tag_name, markup, options)
36
+ super
37
+ @name = markup.strip
38
+ end
39
+
40
+ def render(context)
41
+ value = Liquid::VariableLookup.parse(@name).evaluate(context)
42
+ template = Liquid::Template.parse(value)
43
+ template.render(context, registers: context.registers)
44
+ end
45
+ end
46
+
47
+ Liquid::Template.register_tag('render', RenderTag)
48
+ ```
49
+
50
+ ### Block tags
51
+
52
+ "Blocks" are tags that contain a block of template code which is delimited by a {% end<TAGNAME> %} tag.
53
+
54
+ ## Reference
55
+
56
+ https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers
57
+ https://github.com/Shopify/liquid/wiki/Liquid-for-Designers
58
+ https://shopify.github.io/liquid/
59
+
data/favicon.ico ADDED
Binary file
Binary file
data/icon.png ADDED
Binary file
@@ -0,0 +1,22 @@
1
+ module Scribo
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path("../templates", __FILE__)
4
+
5
+ def create_initializer_file
6
+ template "config/initializers/scribo.rb"
7
+ end
8
+
9
+ def add_route
10
+ return if Rails.application.routes.routes.detect { |route| route.app.app == Scribo::Engine }
11
+ route %(mount Scribo::Engine => "/scribo")
12
+ end
13
+
14
+ def copy_migrations
15
+ rake "scribo:install:migrations"
16
+ end
17
+
18
+ def tailwindcss_config
19
+ rake "scribo:tailwindcss:config"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ require 'rails/generators/base'
2
+
3
+ module Scribo
4
+ module Generators
5
+ class TailwindConfigGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __dir__)
7
+ desc 'Configures tailwind.config.js and application.tailwindcss.css'
8
+
9
+ def add_content_to_tailwind_config
10
+ inject_into_file "config/tailwind.config.js", before: "],\n theme: {" do
11
+ " // Scribo content\n" +
12
+ %w[/app/views/**/* /app/helpers/**/* /app/controllers/**/* /app/components/**/* /app/javascript/**/*.js /app/assets/**/*.css].map { |path| " \"#{Scribo::Engine.root}#{path}\"" }.join(",\n") +
13
+ ",\n "
14
+ end
15
+ end
16
+
17
+ def add_content_application_tailwind_css
18
+ inject_into_file "app/assets/stylesheets/application.tailwind.css", before: "@tailwind base;" do
19
+ "@import '#{Scribo::Engine.root}/app/assets/stylesheets/scribo/application.css';\n"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ Scribo.setup do |config|
4
+ config.base_controller = "::UnauthenticatedController"
5
+ config.admin_authentication_module = "Auxilium::Concerns::AdminAuthenticated"
6
+
7
+ config.scribable_objects = lambda do
8
+ return [] unless Current.account
9
+
10
+ [Current.account]
11
+ end
12
+
13
+ config.scribable_for_request = lambda do |request|
14
+ Current.account
15
+ end
16
+ end