coprl 0.1.0 → 3.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (618) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +59 -6
  3. data/.gem_release.yml +1 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.github/ISSUE_TEMPLATE/questions-support.md +10 -0
  7. data/.github/workflows/semantic-release.yml +43 -0
  8. data/.gitignore +50 -7
  9. data/.releaserc +11 -0
  10. data/.ruby-version +2 -0
  11. data/CHANGELOG.md +160 -0
  12. data/CODE-OF-CONDUCT.md +73 -0
  13. data/CONTRIBUTING.md +60 -0
  14. data/Gemfile +24 -6
  15. data/Gemfile.lock +172 -0
  16. data/HISTORY.md +61 -0
  17. data/{LICENSE.txt → LICENSE} +6 -6
  18. data/Procfile +1 -0
  19. data/README.md +121 -19
  20. data/ROADMAP.md +6 -0
  21. data/Rakefile +3 -9
  22. data/app/demo/components.pom +19 -0
  23. data/app/demo/components/avatars.pom +40 -0
  24. data/app/demo/components/badges.pom +26 -0
  25. data/app/demo/components/buttons.pom +63 -0
  26. data/app/demo/components/cards.pom +84 -0
  27. data/app/demo/components/chips.pom +103 -0
  28. data/app/demo/components/content.pom +111 -0
  29. data/app/demo/components/date_fields.pom +106 -0
  30. data/app/demo/components/datetime_fields.pom +113 -0
  31. data/app/demo/components/dialogs.pom +195 -0
  32. data/app/demo/components/drawers.pom +35 -0
  33. data/app/demo/components/expansion_panels.pom +20 -0
  34. data/app/demo/components/fabs-mini.pom +17 -0
  35. data/app/demo/components/fabs.pom +16 -0
  36. data/app/demo/components/file_inputs.pom +52 -0
  37. data/app/demo/components/footers.pom +36 -0
  38. data/app/demo/components/google_maps.pom +22 -0
  39. data/app/demo/components/headers.pom +101 -0
  40. data/app/demo/components/hidden_fields.pom +18 -0
  41. data/app/demo/components/icons.pom +125 -0
  42. data/app/demo/components/image_lists.pom +100 -0
  43. data/app/demo/components/images.pom +45 -0
  44. data/app/demo/components/layouts.pom +54 -0
  45. data/app/demo/components/lists.pom +168 -0
  46. data/app/demo/components/menus.pom +53 -0
  47. data/app/demo/components/multi_selects.pom +29 -0
  48. data/app/demo/components/nav/drawer.pom +5 -0
  49. data/app/demo/components/nav/menu.pom +54 -0
  50. data/app/demo/components/nav/pattern_drawer.pom +5 -0
  51. data/app/demo/components/nav/pattern_menu.pom +12 -0
  52. data/app/demo/components/number_fields.pom +53 -0
  53. data/app/demo/components/padding.pom +96 -0
  54. data/app/demo/components/progress.pom +71 -0
  55. data/app/demo/components/selects.pom +69 -0
  56. data/app/demo/components/sliders.pom +54 -0
  57. data/app/demo/components/snackbar.pom +35 -0
  58. data/app/demo/components/snackbar_attached.pom +6 -0
  59. data/app/demo/components/steppers.pom +178 -0
  60. data/app/demo/components/tab_bars.pom +66 -0
  61. data/app/demo/components/tables.pom +121 -0
  62. data/app/demo/components/text_areas.pom +38 -0
  63. data/app/demo/components/text_fields.pom +114 -0
  64. data/app/demo/components/time_fields.pom +59 -0
  65. data/app/demo/components/toggles.pom +122 -0
  66. data/app/demo/components/tooltips.pom +119 -0
  67. data/app/demo/components/unordered_list.pom +81 -0
  68. data/app/demo/custom_css.pom +37 -0
  69. data/app/demo/events.pom +29 -0
  70. data/app/demo/events/actions/autocomplete.pom +32 -0
  71. data/app/demo/events/actions/clear.pom +25 -0
  72. data/app/demo/events/actions/deletes.pom +24 -0
  73. data/app/demo/events/actions/dialog.pom +19 -0
  74. data/app/demo/events/actions/dialogs/discard.pom +9 -0
  75. data/app/demo/events/actions/dialogs/show_dialog.pom +11 -0
  76. data/app/demo/events/actions/dialogs/trigger.pom +86 -0
  77. data/app/demo/events/actions/last_response.pom +40 -0
  78. data/app/demo/events/actions/loads.pom +29 -0
  79. data/app/demo/events/actions/posts.pom +23 -0
  80. data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
  81. data/app/demo/events/actions/replace_text.pom +6 -0
  82. data/app/demo/events/actions/replaces.pom +21 -0
  83. data/app/demo/events/actions/snackbar.pom +19 -0
  84. data/app/demo/events/actions/toggle_visiblity.pom +22 -0
  85. data/app/demo/events/actions/updates.pom +24 -0
  86. data/app/demo/events/content_as_form.pom +313 -0
  87. data/app/demo/events/field_level.pom +20 -0
  88. data/app/demo/events/form_level.pom +24 -0
  89. data/app/demo/events/nav/drawer.pom +25 -0
  90. data/app/demo/events/parallel.pom +44 -0
  91. data/app/demo/events/tagged_input.pom +37 -0
  92. data/app/demo/formatting_tokens.pom +125 -0
  93. data/app/demo/hello_world.pom +3 -0
  94. data/app/demo/helpers/indented_grid.rb +14 -0
  95. data/app/demo/index.pom +26 -0
  96. data/app/demo/markdown.pom +67 -0
  97. data/app/demo/namespaces.pom +89 -0
  98. data/app/demo/nav/top_nav.pom +60 -0
  99. data/app/demo/patterns.pom +19 -0
  100. data/app/demo/patterns/drag_drop.pom +89 -0
  101. data/app/demo/patterns/floating_card.pom +29 -0
  102. data/app/demo/patterns/search_select.pom +106 -0
  103. data/app/demo/plugins/chart.pom +254 -0
  104. data/app/demo/plugins/image_crop.pom +44 -0
  105. data/app/demo/plugins/index.pom +29 -0
  106. data/app/demo/plugins/nav/drawer.pom +19 -0
  107. data/app/demo/shared/code.pom +20 -0
  108. data/app/demo/shared/context_list.pom +29 -0
  109. data/app/demo/shared/debug.pom +17 -0
  110. data/app/demo/styles.pom +42 -0
  111. data/bin/console +14 -7
  112. data/component-status.yml +219 -0
  113. data/config.ru +41 -0
  114. data/coprl.gemspec +35 -27
  115. data/docs/migrating_from_v2_to_v3.md +33 -0
  116. data/docs/settings.md +81 -0
  117. data/exe/coprl +2 -2
  118. data/lib/coprl.rb +22 -4
  119. data/lib/coprl/container_methods.rb +40 -0
  120. data/lib/coprl/logger_methods.rb +11 -0
  121. data/lib/coprl/parameters.rb +73 -0
  122. data/lib/coprl/presenters/api/app.rb +86 -0
  123. data/lib/coprl/presenters/api/router.rb +10 -0
  124. data/lib/coprl/presenters/app.rb +55 -0
  125. data/lib/coprl/presenters/cli.rb +28 -0
  126. data/lib/coprl/presenters/container_item.rb +16 -0
  127. data/lib/coprl/presenters/demo/dragon_drop.rb +48 -0
  128. data/lib/coprl/presenters/demo/echo.rb +36 -0
  129. data/lib/coprl/presenters/demo/search-terms.yml +50 -0
  130. data/lib/coprl/presenters/demo/search.rb +29 -0
  131. data/lib/coprl/presenters/demo/slow.rb +18 -0
  132. data/lib/coprl/presenters/dsl/components/actions/autocomplete.rb +15 -0
  133. data/lib/coprl/presenters/dsl/components/actions/base.rb +65 -0
  134. data/lib/coprl/presenters/dsl/components/actions/clear.rb +15 -0
  135. data/lib/coprl/presenters/dsl/components/actions/close_dialog.rb +17 -0
  136. data/lib/coprl/presenters/dsl/components/actions/deletes.rb +15 -0
  137. data/lib/coprl/presenters/dsl/components/actions/dialog.rb +15 -0
  138. data/lib/coprl/presenters/dsl/components/actions/loads.rb +31 -0
  139. data/lib/coprl/presenters/dsl/components/actions/navigates.rb +15 -0
  140. data/lib/coprl/presenters/dsl/components/actions/post_message.rb +17 -0
  141. data/lib/coprl/presenters/dsl/components/actions/posts.rb +20 -0
  142. data/lib/coprl/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
  143. data/lib/coprl/presenters/dsl/components/actions/remove.rb +15 -0
  144. data/lib/coprl/presenters/dsl/components/actions/replaces.rb +25 -0
  145. data/lib/coprl/presenters/dsl/components/actions/snackbar.rb +15 -0
  146. data/lib/coprl/presenters/dsl/components/actions/stepper.rb +15 -0
  147. data/lib/coprl/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
  148. data/lib/coprl/presenters/dsl/components/actions/toggle_visibility.rb +15 -0
  149. data/lib/coprl/presenters/dsl/components/actions/updates.rb +20 -0
  150. data/lib/coprl/presenters/dsl/components/avatar.rb +22 -0
  151. data/lib/coprl/presenters/dsl/components/badge.rb +19 -0
  152. data/lib/coprl/presenters/dsl/components/base.rb +100 -0
  153. data/lib/coprl/presenters/dsl/components/button.rb +60 -0
  154. data/lib/coprl/presenters/dsl/components/card.rb +135 -0
  155. data/lib/coprl/presenters/dsl/components/checkbox.rb +17 -0
  156. data/lib/coprl/presenters/dsl/components/chip.rb +50 -0
  157. data/lib/coprl/presenters/dsl/components/chipset.rb +33 -0
  158. data/lib/coprl/presenters/dsl/components/content.rb +57 -0
  159. data/lib/coprl/presenters/dsl/components/date_field.rb +34 -0
  160. data/lib/coprl/presenters/dsl/components/datetime_base.rb +46 -0
  161. data/lib/coprl/presenters/dsl/components/datetime_field.rb +23 -0
  162. data/lib/coprl/presenters/dsl/components/dialog.rb +80 -0
  163. data/lib/coprl/presenters/dsl/components/drawer.rb +45 -0
  164. data/lib/coprl/presenters/dsl/components/event.rb +178 -0
  165. data/lib/coprl/presenters/dsl/components/event_base.rb +18 -0
  166. data/lib/coprl/presenters/dsl/components/expansion_panel.rb +49 -0
  167. data/lib/coprl/presenters/dsl/components/file_input.rb +34 -0
  168. data/lib/coprl/presenters/dsl/components/footer.rb +25 -0
  169. data/lib/coprl/presenters/dsl/components/form.rb +33 -0
  170. data/lib/coprl/presenters/dsl/components/grid.rb +110 -0
  171. data/lib/coprl/presenters/dsl/components/header.rb +58 -0
  172. data/lib/coprl/presenters/dsl/components/hidden_field.rb +23 -0
  173. data/lib/coprl/presenters/dsl/components/icon.rb +18 -0
  174. data/lib/coprl/presenters/dsl/components/icon_base.rb +22 -0
  175. data/lib/coprl/presenters/dsl/components/icon_toggle.rb +19 -0
  176. data/lib/coprl/presenters/dsl/components/image.rb +84 -0
  177. data/lib/coprl/presenters/dsl/components/image_list.rb +43 -0
  178. data/lib/coprl/presenters/dsl/components/input.rb +30 -0
  179. data/lib/coprl/presenters/dsl/components/link.rb +33 -0
  180. data/lib/coprl/presenters/dsl/components/list.rb +47 -0
  181. data/lib/coprl/presenters/dsl/components/lists/action.rb +69 -0
  182. data/lib/coprl/presenters/dsl/components/lists/actions.rb +60 -0
  183. data/lib/coprl/presenters/dsl/components/lists/header.rb +19 -0
  184. data/lib/coprl/presenters/dsl/components/lists/line.rb +105 -0
  185. data/lib/coprl/presenters/dsl/components/lists/separator.rb +16 -0
  186. data/lib/coprl/presenters/dsl/components/menu.rb +123 -0
  187. data/lib/coprl/presenters/dsl/components/mixins/append.rb +20 -0
  188. data/lib/coprl/presenters/dsl/components/mixins/attaches.rb +22 -0
  189. data/lib/coprl/presenters/dsl/components/mixins/avatar.rb +15 -0
  190. data/lib/coprl/presenters/dsl/components/mixins/buttons.rb +15 -0
  191. data/lib/coprl/presenters/dsl/components/mixins/chips.rb +18 -0
  192. data/lib/coprl/presenters/dsl/components/mixins/chipset.rb +19 -0
  193. data/lib/coprl/presenters/dsl/components/mixins/common.rb +55 -0
  194. data/lib/coprl/presenters/dsl/components/mixins/content.rb +15 -0
  195. data/lib/coprl/presenters/dsl/components/mixins/date_time_fields.rb +26 -0
  196. data/lib/coprl/presenters/dsl/components/mixins/dialogs.rb +16 -0
  197. data/lib/coprl/presenters/dsl/components/mixins/event.rb +17 -0
  198. data/lib/coprl/presenters/dsl/components/mixins/expansion_panels.rb +15 -0
  199. data/lib/coprl/presenters/dsl/components/mixins/file_inputs.rb +16 -0
  200. data/lib/coprl/presenters/dsl/components/mixins/google_maps.rb +15 -0
  201. data/lib/coprl/presenters/dsl/components/mixins/grids.rb +15 -0
  202. data/lib/coprl/presenters/dsl/components/mixins/helpers.rb +20 -0
  203. data/lib/coprl/presenters/dsl/components/mixins/icons.rb +16 -0
  204. data/lib/coprl/presenters/dsl/components/mixins/image_lists.rb +15 -0
  205. data/lib/coprl/presenters/dsl/components/mixins/images.rb +15 -0
  206. data/lib/coprl/presenters/dsl/components/mixins/last_response.rb +48 -0
  207. data/lib/coprl/presenters/dsl/components/mixins/menus.rb +15 -0
  208. data/lib/coprl/presenters/dsl/components/mixins/padding.rb +42 -0
  209. data/lib/coprl/presenters/dsl/components/mixins/progress.rb +16 -0
  210. data/lib/coprl/presenters/dsl/components/mixins/selects.rb +22 -0
  211. data/lib/coprl/presenters/dsl/components/mixins/sliders.rb +15 -0
  212. data/lib/coprl/presenters/dsl/components/mixins/snackbars.rb +17 -0
  213. data/lib/coprl/presenters/dsl/components/mixins/steppers.rb +15 -0
  214. data/lib/coprl/presenters/dsl/components/mixins/tab_bars.rb +17 -0
  215. data/lib/coprl/presenters/dsl/components/mixins/tables.rb +15 -0
  216. data/lib/coprl/presenters/dsl/components/mixins/text_fields.rb +36 -0
  217. data/lib/coprl/presenters/dsl/components/mixins/toggles.rb +35 -0
  218. data/lib/coprl/presenters/dsl/components/mixins/tooltips.rb +17 -0
  219. data/lib/coprl/presenters/dsl/components/mixins/typography.rb +117 -0
  220. data/lib/coprl/presenters/dsl/components/mixins/yield_to.rb +15 -0
  221. data/lib/coprl/presenters/dsl/components/multi_select.rb +56 -0
  222. data/lib/coprl/presenters/dsl/components/number_field.rb +20 -0
  223. data/lib/coprl/presenters/dsl/components/page.rb +28 -0
  224. data/lib/coprl/presenters/dsl/components/page_title.rb +31 -0
  225. data/lib/coprl/presenters/dsl/components/progress.rb +27 -0
  226. data/lib/coprl/presenters/dsl/components/radio_button.rb +14 -0
  227. data/lib/coprl/presenters/dsl/components/rich_text_area.rb +20 -0
  228. data/lib/coprl/presenters/dsl/components/select.rb +72 -0
  229. data/lib/coprl/presenters/dsl/components/separator.rb +21 -0
  230. data/lib/coprl/presenters/dsl/components/slider.rb +38 -0
  231. data/lib/coprl/presenters/dsl/components/snackbar.rb +32 -0
  232. data/lib/coprl/presenters/dsl/components/stepper.rb +96 -0
  233. data/lib/coprl/presenters/dsl/components/switch.rb +14 -0
  234. data/lib/coprl/presenters/dsl/components/tab_bar.rb +50 -0
  235. data/lib/coprl/presenters/dsl/components/table.rb +193 -0
  236. data/lib/coprl/presenters/dsl/components/text_area.rb +19 -0
  237. data/lib/coprl/presenters/dsl/components/text_field.rb +113 -0
  238. data/lib/coprl/presenters/dsl/components/time_field.rb +21 -0
  239. data/lib/coprl/presenters/dsl/components/toggle_base.rb +25 -0
  240. data/lib/coprl/presenters/dsl/components/tooltip.rb +24 -0
  241. data/lib/coprl/presenters/dsl/components/typography.rb +31 -0
  242. data/lib/coprl/presenters/dsl/components/unordered_list.rb +50 -0
  243. data/lib/coprl/presenters/dsl/definer.rb +9 -0
  244. data/lib/coprl/presenters/dsl/definition.rb +34 -0
  245. data/lib/coprl/presenters/dsl/invalid_presenter.rb +8 -0
  246. data/lib/coprl/presenters/dsl/lockable.rb +11 -0
  247. data/lib/coprl/presenters/dsl/protect_from_forgery.rb +43 -0
  248. data/lib/coprl/presenters/dsl/user_interface.rb +157 -0
  249. data/lib/coprl/presenters/errors.rb +1 -0
  250. data/lib/coprl/presenters/errors/invalid_dsl.rb +8 -0
  251. data/lib/coprl/presenters/errors/parameter_validation.rb +8 -0
  252. data/lib/coprl/presenters/errors/unprocessable.rb +8 -0
  253. data/lib/coprl/presenters/generators/inflectors.rb +59 -0
  254. data/lib/coprl/presenters/generators/plugin.rb +121 -0
  255. data/lib/coprl/presenters/generators/templates/plugin/.gitignore +12 -0
  256. data/lib/coprl/presenters/generators/templates/plugin/Gemfile.tt +6 -0
  257. data/lib/coprl/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
  258. data/lib/coprl/presenters/generators/templates/plugin/README.md +253 -0
  259. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/actions/action.rb.tt +16 -0
  260. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/actions/dsl.rb.tt +22 -0
  261. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/component.rb.tt +18 -0
  262. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/dsl.rb.tt +19 -0
  263. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/helpers/helper.rb.tt +15 -0
  264. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/plugin.rb.tt +9 -0
  265. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
  266. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/web_client/components/render.rb.tt +27 -0
  267. data/lib/coprl/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
  268. data/lib/coprl/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
  269. data/lib/coprl/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
  270. data/lib/coprl/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
  271. data/lib/coprl/presenters/generators/templates/plugin/views/components/application/component.erb.tt +14 -0
  272. data/lib/coprl/presenters/generators/templates/plugin/views/components/application/component_header.erb.tt +20 -0
  273. data/lib/coprl/presenters/helpers.rb +12 -0
  274. data/lib/coprl/presenters/helpers/date.rb +22 -0
  275. data/lib/coprl/presenters/helpers/errors.rb +11 -0
  276. data/lib/coprl/presenters/helpers/inflector.rb +16 -0
  277. data/lib/coprl/presenters/helpers/rails.rb +43 -0
  278. data/lib/coprl/presenters/helpers/rails/currency.rb +16 -0
  279. data/lib/coprl/presenters/helpers/rails/model_table.rb +60 -0
  280. data/lib/coprl/presenters/helpers/redact.rb +13 -0
  281. data/lib/coprl/presenters/helpers/route.rb +24 -0
  282. data/lib/coprl/presenters/helpers/time.rb +27 -0
  283. data/lib/coprl/presenters/namespace.rb +12 -0
  284. data/lib/coprl/presenters/pluggable.rb +37 -0
  285. data/lib/coprl/presenters/plugins.rb +7 -0
  286. data/lib/coprl/presenters/plugins/google_maps.rb +24 -0
  287. data/lib/coprl/presenters/plugins/google_maps/google_map.erb +10 -0
  288. data/lib/coprl/presenters/plugins/google_maps/google_map.rb +41 -0
  289. data/lib/coprl/presenters/rails/engine.rb +19 -0
  290. data/lib/coprl/presenters/rails/railtie.rb +41 -0
  291. data/lib/coprl/presenters/registry.rb +64 -0
  292. data/lib/coprl/presenters/router.rb +59 -0
  293. data/lib/coprl/presenters/settings.rb +81 -0
  294. data/lib/coprl/presenters/version.rb +7 -0
  295. data/lib/coprl/presenters/views.rb +17 -0
  296. data/lib/coprl/presenters/web_client/app.rb +121 -0
  297. data/lib/coprl/presenters/web_client/component_decorator_factory.rb +27 -0
  298. data/lib/coprl/presenters/web_client/component_html_decorator.rb +50 -0
  299. data/lib/coprl/presenters/web_client/component_renderer.rb +49 -0
  300. data/lib/coprl/presenters/web_client/custom_css.rb +66 -0
  301. data/lib/coprl/presenters/web_client/custom_render.rb +31 -0
  302. data/lib/coprl/presenters/web_client/helpers/color.rb +18 -0
  303. data/lib/coprl/presenters/web_client/helpers/drag_and_drop.rb +21 -0
  304. data/lib/coprl/presenters/web_client/helpers/equal.rb +7 -0
  305. data/lib/coprl/presenters/web_client/helpers/expand_hash.rb +19 -0
  306. data/lib/coprl/presenters/web_client/helpers/form_helpers.rb +14 -0
  307. data/lib/coprl/presenters/web_client/helpers/headers.rb +40 -0
  308. data/lib/coprl/presenters/web_client/helpers/html_safe.rb +8 -0
  309. data/lib/coprl/presenters/web_client/helpers/includes.rb +11 -0
  310. data/lib/coprl/presenters/web_client/helpers/inflector.rb +7 -0
  311. data/lib/coprl/presenters/web_client/helpers/markdown.rb +29 -0
  312. data/lib/coprl/presenters/web_client/helpers/padding_helpers.rb +21 -0
  313. data/lib/coprl/presenters/web_client/helpers/rails.rb +12 -0
  314. data/lib/coprl/presenters/web_client/helpers/rails/escape_html.rb +9 -0
  315. data/lib/coprl/presenters/web_client/helpers/rails/local_variables.rb +11 -0
  316. data/lib/coprl/presenters/web_client/helpers/rails/namespaced.rb +12 -0
  317. data/lib/coprl/presenters/web_client/helpers/rails/partials.rb +20 -0
  318. data/lib/coprl/presenters/web_client/helpers/rails/raw.rb +9 -0
  319. data/lib/coprl/presenters/web_client/helpers/rails/safe_markdown.rb +9 -0
  320. data/lib/coprl/presenters/web_client/helpers/render_component.rb +11 -0
  321. data/lib/coprl/presenters/web_client/helpers/shared.rb +18 -0
  322. data/lib/coprl/presenters/web_client/helpers/sinatra.rb +11 -0
  323. data/lib/coprl/presenters/web_client/helpers/sinatra/escape_html.rb +9 -0
  324. data/lib/coprl/presenters/web_client/helpers/sinatra/local_variables.rb +11 -0
  325. data/lib/coprl/presenters/web_client/helpers/sinatra/partials.rb +27 -0
  326. data/lib/coprl/presenters/web_client/helpers/sinatra/raw.rb +9 -0
  327. data/lib/coprl/presenters/web_client/helpers/sinatra/safe_markdown.rb +10 -0
  328. data/lib/coprl/presenters/web_client/helpers/snake_to_camel.rb +12 -0
  329. data/lib/coprl/presenters/web_client/helpers/transform_hash.rb +20 -0
  330. data/lib/coprl/presenters/web_client/helpers/unique_id.rb +7 -0
  331. data/lib/coprl/presenters/web_client/plugin_headers.rb +37 -0
  332. data/lib/coprl/presenters/web_client/plugin_views_path.rb +35 -0
  333. data/lib/coprl/presenters/web_client/router.rb +10 -0
  334. data/lib/coprl/serializer.rb +43 -0
  335. data/lib/coprl/symbol/to_str.rb +29 -0
  336. data/lib/coprl/trace.rb +17 -0
  337. data/lib/hash_ext/traverse.rb +14 -0
  338. data/public/bundle.css +18256 -0
  339. data/public/bundle.js +60195 -0
  340. data/public/dialog-polyfill.js +738 -0
  341. data/public/favicon.ico +0 -0
  342. data/public/img/demo/dog.png +0 -0
  343. data/public/img/demo/grace-hopper-headshot.png +0 -0
  344. data/public/img/demo/grace-hopper-wide.png +0 -0
  345. data/public/img/demo/grace-hopper.png +0 -0
  346. data/public/img/demo/image_card.jpg +0 -0
  347. data/public/img/demo/rx.png +0 -0
  348. data/public/img/demo/welcome_card.jpg +0 -0
  349. data/public/img/settings/blue.png +0 -0
  350. data/public/img/settings/green.png +0 -0
  351. data/public/img/settings/orange.png +0 -0
  352. data/public/img/settings/purple.png +0 -0
  353. data/public/img/settings/red.png +0 -0
  354. data/public/img/settings/teal.png +0 -0
  355. data/public/img/settings/white.png +0 -0
  356. data/public/img/settings/yellow.png +0 -0
  357. data/public/presenters/custom_css.css +26 -0
  358. data/public/scripts.js +289 -0
  359. data/public/style-bundle.js +73 -0
  360. data/public/styles.css +16 -0
  361. data/public/wc.js +52950 -0
  362. data/rails-engine/app/controllers/coprl_controller.rb +24 -0
  363. data/rails-engine/app/helpers/coprl_helper.rb +3 -0
  364. data/rails-engine/app/views/application/_show.html.pom +2 -0
  365. data/rails-engine/app/views/coprl/show.html.pom +2 -0
  366. data/rails-engine/app/views/layouts/coprl.html.erb +21 -0
  367. data/rails-engine/config.ru +1 -0
  368. data/rails-engine/config/initializers/presenters.rb +43 -0
  369. data/rails-engine/config/routes.rb +13 -0
  370. data/scripts/build.sh +10 -0
  371. data/views/mdc/.babelrc +8 -0
  372. data/views/mdc/.eslintrc.yml +24 -0
  373. data/views/mdc/.gitignore +1 -0
  374. data/views/mdc/.nvmrc +1 -0
  375. data/views/mdc/assets/js/app.js +34 -0
  376. data/views/mdc/assets/js/components/base-component.js +163 -0
  377. data/views/mdc/assets/js/components/base-container.js +87 -0
  378. data/views/mdc/assets/js/components/base-toggle.js +56 -0
  379. data/views/mdc/assets/js/components/button.js +77 -0
  380. data/views/mdc/assets/js/components/cards.js +14 -0
  381. data/views/mdc/assets/js/components/checkboxes.js +15 -0
  382. data/views/mdc/assets/js/components/chips.js +109 -0
  383. data/views/mdc/assets/js/components/content.js +14 -0
  384. data/views/mdc/assets/js/components/data-tables.js +15 -0
  385. data/views/mdc/assets/js/components/datetime.js +186 -0
  386. data/views/mdc/assets/js/components/dialogs.js +135 -0
  387. data/views/mdc/assets/js/components/drag_n_drop.js +182 -0
  388. data/views/mdc/assets/js/components/drawer.js +43 -0
  389. data/views/mdc/assets/js/components/events.js +277 -0
  390. data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
  391. data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
  392. data/views/mdc/assets/js/components/events/autocomplete.js +94 -0
  393. data/views/mdc/assets/js/components/events/base.js +167 -0
  394. data/views/mdc/assets/js/components/events/clears.js +29 -0
  395. data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
  396. data/views/mdc/assets/js/components/events/dialog.js +43 -0
  397. data/views/mdc/assets/js/components/events/encode.js +8 -0
  398. data/views/mdc/assets/js/components/events/errors.js +225 -0
  399. data/views/mdc/assets/js/components/events/loads.js +62 -0
  400. data/views/mdc/assets/js/components/events/navigates.js +19 -0
  401. data/views/mdc/assets/js/components/events/plugin.js +18 -0
  402. data/views/mdc/assets/js/components/events/post_message.js +21 -0
  403. data/views/mdc/assets/js/components/events/posts.js +218 -0
  404. data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
  405. data/views/mdc/assets/js/components/events/removes.js +21 -0
  406. data/views/mdc/assets/js/components/events/replaces.js +135 -0
  407. data/views/mdc/assets/js/components/events/snackbar.js +23 -0
  408. data/views/mdc/assets/js/components/events/stepper.js +21 -0
  409. data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
  410. data/views/mdc/assets/js/components/events/toggle_visibility.js +72 -0
  411. data/views/mdc/assets/js/components/file-inputs.js +76 -0
  412. data/views/mdc/assets/js/components/form-fields.js +16 -0
  413. data/views/mdc/assets/js/components/forms.js +14 -0
  414. data/views/mdc/assets/js/components/get_event_target.js +15 -0
  415. data/views/mdc/assets/js/components/grid.js +21 -0
  416. data/views/mdc/assets/js/components/header.js +20 -0
  417. data/views/mdc/assets/js/components/hidden-fields.js +44 -0
  418. data/views/mdc/assets/js/components/icon-toggles.js +14 -0
  419. data/views/mdc/assets/js/components/images.js +19 -0
  420. data/views/mdc/assets/js/components/initialize.js +82 -0
  421. data/views/mdc/assets/js/components/lists.js +92 -0
  422. data/views/mdc/assets/js/components/menus.js +79 -0
  423. data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
  424. data/views/mdc/assets/js/components/mixins/event-handler.js +13 -0
  425. data/views/mdc/assets/js/components/mixins/visibility-observer.js +35 -0
  426. data/views/mdc/assets/js/components/multi-select.js +75 -0
  427. data/views/mdc/assets/js/components/plugins.js +86 -0
  428. data/views/mdc/assets/js/components/progress.js +31 -0
  429. data/views/mdc/assets/js/components/radios.js +14 -0
  430. data/views/mdc/assets/js/components/rich-text-area.js +227 -0
  431. data/views/mdc/assets/js/components/rich-text-area/horizontal-rule-blot.js +23 -0
  432. data/views/mdc/assets/js/components/root_document.js +5 -0
  433. data/views/mdc/assets/js/components/selects.js +56 -0
  434. data/views/mdc/assets/js/components/sliders.js +67 -0
  435. data/views/mdc/assets/js/components/snackbar.js +26 -0
  436. data/views/mdc/assets/js/components/steppers.js +48 -0
  437. data/views/mdc/assets/js/components/switches.js +14 -0
  438. data/views/mdc/assets/js/components/tab-bars.js +28 -0
  439. data/views/mdc/assets/js/components/text-fields.js +157 -0
  440. data/views/mdc/assets/js/components/tooltip.js +17 -0
  441. data/views/mdc/assets/js/components/typography.js +28 -0
  442. data/views/mdc/assets/js/components/uninitialize.js +7 -0
  443. data/views/mdc/assets/js/config.js +27 -0
  444. data/views/mdc/assets/js/mdl-stepper.js +1108 -0
  445. data/views/mdc/assets/js/utils/compatibility.js +9 -0
  446. data/views/mdc/assets/js/utils/config.js +73 -0
  447. data/views/mdc/assets/js/utils/config.test.js +59 -0
  448. data/views/mdc/assets/js/utils/form-data.js +12 -0
  449. data/views/mdc/assets/js/utils/urls.js +57 -0
  450. data/views/mdc/assets/js/wc.js +111 -0
  451. data/views/mdc/assets/scss/app.scss +47 -0
  452. data/views/mdc/assets/scss/components/avatar.scss +85 -0
  453. data/views/mdc/assets/scss/components/button.scss +76 -0
  454. data/views/mdc/assets/scss/components/card.scss +60 -0
  455. data/views/mdc/assets/scss/components/checkbox.scss +1 -0
  456. data/views/mdc/assets/scss/components/chip.scss +34 -0
  457. data/views/mdc/assets/scss/components/content.scss +36 -0
  458. data/views/mdc/assets/scss/components/data-table.scss +91 -0
  459. data/views/mdc/assets/scss/components/datetime.scss +29 -0
  460. data/views/mdc/assets/scss/components/dialog.scss +8 -0
  461. data/views/mdc/assets/scss/components/drag_n_drop.scss +17 -0
  462. data/views/mdc/assets/scss/components/drawer.scss +82 -0
  463. data/views/mdc/assets/scss/components/expansion-panel.scss +153 -0
  464. data/views/mdc/assets/scss/components/fab.scss +27 -0
  465. data/views/mdc/assets/scss/components/file-input.scss +18 -0
  466. data/views/mdc/assets/scss/components/grid.scss +81 -0
  467. data/views/mdc/assets/scss/components/header.scss +21 -0
  468. data/views/mdc/assets/scss/components/icon-button-toggles.scss +2 -0
  469. data/views/mdc/assets/scss/components/icon.scss +57 -0
  470. data/views/mdc/assets/scss/components/image-list.scss +18 -0
  471. data/views/mdc/assets/scss/components/image.scss +22 -0
  472. data/views/mdc/assets/scss/components/list.scss +43 -0
  473. data/views/mdc/assets/scss/components/menu.scss +28 -0
  474. data/views/mdc/assets/scss/components/multi-select.scss +44 -0
  475. data/views/mdc/assets/scss/components/progress.scss +1 -0
  476. data/views/mdc/assets/scss/components/radio.scss +4 -0
  477. data/views/mdc/assets/scss/components/rich-text-area.scss +73 -0
  478. data/views/mdc/assets/scss/components/select.scss +23 -0
  479. data/views/mdc/assets/scss/components/separator.scss +3 -0
  480. data/views/mdc/assets/scss/components/slider.scss +1 -0
  481. data/views/mdc/assets/scss/components/snackbar.scss +5 -0
  482. data/views/mdc/assets/scss/components/stepper.scss +235 -0
  483. data/views/mdc/assets/scss/components/switch.scss +15 -0
  484. data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
  485. data/views/mdc/assets/scss/components/textfield.scss +19 -0
  486. data/views/mdc/assets/scss/components/tooltip.scss +3 -0
  487. data/views/mdc/assets/scss/components/typography.scss +35 -0
  488. data/views/mdc/assets/scss/components/unordered-lists.scss +17 -0
  489. data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
  490. data/views/mdc/assets/scss/material.blue_grey-orange.min.css +8 -0
  491. data/views/mdc/assets/scss/media.scss +39 -0
  492. data/views/mdc/assets/scss/palette.scss +16 -0
  493. data/views/mdc/assets/scss/styles.scss +54 -0
  494. data/views/mdc/assets/scss/theme.scss +78 -0
  495. data/views/mdc/body/_dismissable-drawer.erb +34 -0
  496. data/views/mdc/body/_footer.erb +1 -0
  497. data/views/mdc/body/_header.erb +39 -0
  498. data/views/mdc/body/_modal-drawer.erb +35 -0
  499. data/views/mdc/body/_postamble.erb +17 -0
  500. data/views/mdc/body/_preamble.erb +26 -0
  501. data/views/mdc/body/_snackbar.erb +16 -0
  502. data/views/mdc/body/drawer/_divider.erb +1 -0
  503. data/views/mdc/body/drawer/_item.erb +13 -0
  504. data/views/mdc/body/drawer/_label.erb +1 -0
  505. data/views/mdc/body/drawers/_menu.erb +25 -0
  506. data/views/mdc/body/footers/_large.erb +27 -0
  507. data/views/mdc/body/footers/_menu_item.erb +6 -0
  508. data/views/mdc/body/footers/_small.erb +14 -0
  509. data/views/mdc/components/_avatar.erb +31 -0
  510. data/views/mdc/components/_badge.erb +2 -0
  511. data/views/mdc/components/_body.erb +2 -0
  512. data/views/mdc/components/_button.erb +28 -0
  513. data/views/mdc/components/_caption.erb +2 -0
  514. data/views/mdc/components/_card.erb +71 -0
  515. data/views/mdc/components/_checkbox.erb +34 -0
  516. data/views/mdc/components/_chip.erb +56 -0
  517. data/views/mdc/components/_chipset.erb +17 -0
  518. data/views/mdc/components/_content.erb +36 -0
  519. data/views/mdc/components/_date.erb +1 -0
  520. data/views/mdc/components/_datetime.erb +33 -0
  521. data/views/mdc/components/_dialog.erb +50 -0
  522. data/views/mdc/components/_event.erb +12 -0
  523. data/views/mdc/components/_expansion_panel.erb +13 -0
  524. data/views/mdc/components/_file_input.erb +17 -0
  525. data/views/mdc/components/_form.erb +14 -0
  526. data/views/mdc/components/_grid.erb +43 -0
  527. data/views/mdc/components/_headline.erb +4 -0
  528. data/views/mdc/components/_hidden_field.erb +5 -0
  529. data/views/mdc/components/_icon.erb +35 -0
  530. data/views/mdc/components/_icon_toggle.erb +16 -0
  531. data/views/mdc/components/_image.erb +25 -0
  532. data/views/mdc/components/_image_list.erb +38 -0
  533. data/views/mdc/components/_link.erb +4 -0
  534. data/views/mdc/components/_list.erb +20 -0
  535. data/views/mdc/components/_menu.erb +45 -0
  536. data/views/mdc/components/_multi_select.erb +33 -0
  537. data/views/mdc/components/_number_field.erb +38 -0
  538. data/views/mdc/components/_overline.erb +2 -0
  539. data/views/mdc/components/_page_title.erb +4 -0
  540. data/views/mdc/components/_progress.erb +11 -0
  541. data/views/mdc/components/_radio_button.erb +20 -0
  542. data/views/mdc/components/_render.erb +3 -0
  543. data/views/mdc/components/_rich_text_area.erb +22 -0
  544. data/views/mdc/components/_select.erb +43 -0
  545. data/views/mdc/components/_separator.erb +3 -0
  546. data/views/mdc/components/_slider.erb +43 -0
  547. data/views/mdc/components/_snackbar.erb +13 -0
  548. data/views/mdc/components/_stepper.erb +47 -0
  549. data/views/mdc/components/_subtitle.erb +4 -0
  550. data/views/mdc/components/_switch.erb +29 -0
  551. data/views/mdc/components/_tab_bar.erb +35 -0
  552. data/views/mdc/components/_table.erb +28 -0
  553. data/views/mdc/components/_text_area.erb +18 -0
  554. data/views/mdc/components/_text_field.erb +39 -0
  555. data/views/mdc/components/_time.erb +1 -0
  556. data/views/mdc/components/_tooltip.erb +5 -0
  557. data/views/mdc/components/_typography.erb +15 -0
  558. data/views/mdc/components/_unordered_list.erb +10 -0
  559. data/views/mdc/components/actions/autocomplete.rb +8 -0
  560. data/views/mdc/components/actions/clear.rb +11 -0
  561. data/views/mdc/components/actions/close_dialog.rb +10 -0
  562. data/views/mdc/components/actions/delete.rb +11 -0
  563. data/views/mdc/components/actions/dialog.rb +11 -0
  564. data/views/mdc/components/actions/loads.rb +17 -0
  565. data/views/mdc/components/actions/navigates.rb +11 -0
  566. data/views/mdc/components/actions/post.rb +14 -0
  567. data/views/mdc/components/actions/post_message.rb +10 -0
  568. data/views/mdc/components/actions/prompt_if_dirty.rb +17 -0
  569. data/views/mdc/components/actions/remove.rb +10 -0
  570. data/views/mdc/components/actions/replaces.rb +16 -0
  571. data/views/mdc/components/actions/resolver.rb +39 -0
  572. data/views/mdc/components/actions/snackbar.rb +12 -0
  573. data/views/mdc/components/actions/stepper.rb +10 -0
  574. data/views/mdc/components/actions/toggle_disabled.rb +10 -0
  575. data/views/mdc/components/actions/toggle_visibility.rb +10 -0
  576. data/views/mdc/components/actions/update.rb +10 -0
  577. data/views/mdc/components/buttons/_button.erb +27 -0
  578. data/views/mdc/components/buttons/_fab.erb +23 -0
  579. data/views/mdc/components/buttons/_icon.erb +24 -0
  580. data/views/mdc/components/buttons/_image.erb +25 -0
  581. data/views/mdc/components/list/_actions.erb +6 -0
  582. data/views/mdc/components/list/_avatar.erb +6 -0
  583. data/views/mdc/components/list/_checkbox.erb +5 -0
  584. data/views/mdc/components/list/_header.erb +37 -0
  585. data/views/mdc/components/list/_hidden_field.erb +3 -0
  586. data/views/mdc/components/list/_icon.erb +6 -0
  587. data/views/mdc/components/list/_info.erb +1 -0
  588. data/views/mdc/components/list/_line.erb +45 -0
  589. data/views/mdc/components/list/_menu.erb +28 -0
  590. data/views/mdc/components/list/_separator.erb +1 -0
  591. data/views/mdc/components/list/actions/_button.erb +1 -0
  592. data/views/mdc/components/list/actions/_checkbox.erb +1 -0
  593. data/views/mdc/components/list/actions/_icon.erb +1 -0
  594. data/views/mdc/components/list/actions/_icon_toggle.erb +1 -0
  595. data/views/mdc/components/list/actions/_radio_button.erb +1 -0
  596. data/views/mdc/components/list/actions/_switch.erb +1 -0
  597. data/views/mdc/components/shared/_hint_error_display.erb +9 -0
  598. data/views/mdc/components/shared/_input_label.erb +7 -0
  599. data/views/mdc/components/stepper/_step.erb +33 -0
  600. data/views/mdc/components/table/_checkbox.erb +20 -0
  601. data/views/mdc/components/table/_column.erb +18 -0
  602. data/views/mdc/components/table/_footer.erb +8 -0
  603. data/views/mdc/components/table/_header.erb +17 -0
  604. data/views/mdc/components/table/_pagination.erb +11 -0
  605. data/views/mdc/components/table/_row.erb +16 -0
  606. data/views/mdc/components/unordered_list/_icon.erb +2 -0
  607. data/views/mdc/components/unordered_list/_list_item.erb +7 -0
  608. data/views/mdc/init-depends.sh +2 -0
  609. data/views/mdc/layout.erb +18 -0
  610. data/views/mdc/package-lock.json +16461 -0
  611. data/views/mdc/package.json +76 -0
  612. data/views/mdc/web.erb +5 -0
  613. data/views/mdc/webpack.config.js +60 -0
  614. metadata +900 -19
  615. data/.rspec +0 -3
  616. data/.rubocop.yml +0 -10
  617. data/CODE_OF_CONDUCT.md +0 -84
  618. data/lib/coprl/version.rb +0 -5
@@ -0,0 +1,4 @@
1
+ @import "@material/tab-bar/mdc-tab-bar";
2
+ @import "@material/tab-scroller/mdc-tab-scroller";
3
+ @import "@material/tab-indicator/mdc-tab-indicator";
4
+ @import "@material/tab/mdc-tab";
@@ -0,0 +1,19 @@
1
+ @import "@material/textfield/mdc-text-field";
2
+ @import "@material/notched-outline/mdc-notched-outline";
3
+
4
+ .mdc-text-field {
5
+ margin-top:16px;
6
+ margin-bottom: 8px;
7
+ }
8
+
9
+ .mdc-text-field--textarea:not(.mdc-text-field--disabled) {
10
+ border-color: $v-input-border-color;
11
+ &:hover {
12
+ border-color: $v-input-hover-border-color;
13
+ }
14
+ }
15
+
16
+ .mdc-text-field-helper-text--validation-msg {
17
+ color: #d50000 !important;
18
+ font-weight: bold !important;
19
+ }
@@ -0,0 +1,3 @@
1
+ .v-tooltip {
2
+ text-transform: initial;
3
+ }
@@ -0,0 +1,35 @@
1
+ @import "@material/typography/mdc-typography";
2
+
3
+ .v-typography-position-left {
4
+ position: absolute;
5
+ left: 0;
6
+ bottom: 0;
7
+ }
8
+
9
+ .v-typography-position-top {
10
+ position: absolute;
11
+ top: 0;
12
+ }
13
+
14
+ .v-typography-position-right {
15
+ position: absolute;
16
+ right: 0;
17
+ bottom: 0;
18
+ }
19
+
20
+ .v-typography-position-bottom {
21
+ position: absolute;
22
+ bottom: 0;
23
+
24
+ }
25
+
26
+ .v-typography-position-center {
27
+ text-align: center;
28
+ }
29
+
30
+ .v-typography {
31
+ > .v-icon-size-default {
32
+ font-size: inherit;
33
+ line-height: inherit;
34
+ }
35
+ }
@@ -0,0 +1,17 @@
1
+ .icon-ul {
2
+ list-style-type: none;
3
+ margin-left: 2.5em;
4
+ padding-left: 0px;
5
+ > li {
6
+ position: relative;
7
+ margin-bottom: 6px;
8
+ }
9
+ }
10
+ .icon-li > i {
11
+ left: -2em;
12
+ position: absolute;
13
+ text-align: center;
14
+ width: 2em;
15
+ line-height: inherit;
16
+ font-size: 21px;
17
+ }
@@ -0,0 +1,945 @@
1
+ /*!
2
+ * Quill Editor v1.3.6
3
+ * https://quilljs.com/
4
+ * Copyright (c) 2014, Jason Chen
5
+ * Copyright (c) 2013, salesforce.com
6
+ */
7
+ .ql-container {
8
+ box-sizing: border-box;
9
+ font-family: Helvetica, Arial, sans-serif;
10
+ font-size: 13px;
11
+ height: 100%;
12
+ margin: 0px;
13
+ position: relative;
14
+ }
15
+ .ql-container.ql-disabled .ql-tooltip {
16
+ visibility: hidden;
17
+ }
18
+ .ql-container.ql-disabled .ql-editor ul[data-checked] > li::before {
19
+ pointer-events: none;
20
+ }
21
+ .ql-clipboard {
22
+ left: -100000px;
23
+ height: 1px;
24
+ overflow-y: hidden;
25
+ position: absolute;
26
+ top: 50%;
27
+ }
28
+ .ql-clipboard p {
29
+ margin: 0;
30
+ padding: 0;
31
+ }
32
+ .ql-editor {
33
+ box-sizing: border-box;
34
+ line-height: 1.42;
35
+ height: 100%;
36
+ outline: none;
37
+ overflow-y: auto;
38
+ padding: 12px 15px;
39
+ tab-size: 4;
40
+ -moz-tab-size: 4;
41
+ text-align: left;
42
+ white-space: pre-wrap;
43
+ word-wrap: break-word;
44
+ }
45
+ .ql-editor > * {
46
+ cursor: text;
47
+ }
48
+ .ql-editor p,
49
+ .ql-editor ol,
50
+ .ql-editor ul,
51
+ .ql-editor pre,
52
+ .ql-editor blockquote,
53
+ .ql-editor h1,
54
+ .ql-editor h2,
55
+ .ql-editor h3,
56
+ .ql-editor h4,
57
+ .ql-editor h5,
58
+ .ql-editor h6 {
59
+ margin: 0;
60
+ padding: 0;
61
+ counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
62
+ }
63
+ .ql-editor ol,
64
+ .ql-editor ul {
65
+ padding-left: 1.5em;
66
+ }
67
+ .ql-editor ol > li,
68
+ .ql-editor ul > li {
69
+ list-style-type: none;
70
+ }
71
+ .ql-editor ul > li::before {
72
+ content: '\2022';
73
+ }
74
+ .ql-editor ul[data-checked=true],
75
+ .ql-editor ul[data-checked=false] {
76
+ pointer-events: none;
77
+ }
78
+ .ql-editor ul[data-checked=true] > li *,
79
+ .ql-editor ul[data-checked=false] > li * {
80
+ pointer-events: all;
81
+ }
82
+ .ql-editor ul[data-checked=true] > li::before,
83
+ .ql-editor ul[data-checked=false] > li::before {
84
+ color: #777;
85
+ cursor: pointer;
86
+ pointer-events: all;
87
+ }
88
+ .ql-editor ul[data-checked=true] > li::before {
89
+ content: '\2611';
90
+ }
91
+ .ql-editor ul[data-checked=false] > li::before {
92
+ content: '\2610';
93
+ }
94
+ .ql-editor li::before {
95
+ display: inline-block;
96
+ white-space: nowrap;
97
+ width: 1.2em;
98
+ }
99
+ .ql-editor li:not(.ql-direction-rtl)::before {
100
+ margin-left: -1.5em;
101
+ margin-right: 0.3em;
102
+ text-align: right;
103
+ }
104
+ .ql-editor li.ql-direction-rtl::before {
105
+ margin-left: 0.3em;
106
+ margin-right: -1.5em;
107
+ }
108
+ .ql-editor ol li:not(.ql-direction-rtl),
109
+ .ql-editor ul li:not(.ql-direction-rtl) {
110
+ padding-left: 1.5em;
111
+ }
112
+ .ql-editor ol li.ql-direction-rtl,
113
+ .ql-editor ul li.ql-direction-rtl {
114
+ padding-right: 1.5em;
115
+ }
116
+ .ql-editor ol li {
117
+ counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
118
+ counter-increment: list-0;
119
+ }
120
+ .ql-editor ol li:before {
121
+ content: counter(list-0, decimal) '. ';
122
+ }
123
+ .ql-editor ol li.ql-indent-1 {
124
+ counter-increment: list-1;
125
+ }
126
+ .ql-editor ol li.ql-indent-1:before {
127
+ content: counter(list-1, lower-alpha) '. ';
128
+ }
129
+ .ql-editor ol li.ql-indent-1 {
130
+ counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
131
+ }
132
+ .ql-editor ol li.ql-indent-2 {
133
+ counter-increment: list-2;
134
+ }
135
+ .ql-editor ol li.ql-indent-2:before {
136
+ content: counter(list-2, lower-roman) '. ';
137
+ }
138
+ .ql-editor ol li.ql-indent-2 {
139
+ counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
140
+ }
141
+ .ql-editor ol li.ql-indent-3 {
142
+ counter-increment: list-3;
143
+ }
144
+ .ql-editor ol li.ql-indent-3:before {
145
+ content: counter(list-3, decimal) '. ';
146
+ }
147
+ .ql-editor ol li.ql-indent-3 {
148
+ counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
149
+ }
150
+ .ql-editor ol li.ql-indent-4 {
151
+ counter-increment: list-4;
152
+ }
153
+ .ql-editor ol li.ql-indent-4:before {
154
+ content: counter(list-4, lower-alpha) '. ';
155
+ }
156
+ .ql-editor ol li.ql-indent-4 {
157
+ counter-reset: list-5 list-6 list-7 list-8 list-9;
158
+ }
159
+ .ql-editor ol li.ql-indent-5 {
160
+ counter-increment: list-5;
161
+ }
162
+ .ql-editor ol li.ql-indent-5:before {
163
+ content: counter(list-5, lower-roman) '. ';
164
+ }
165
+ .ql-editor ol li.ql-indent-5 {
166
+ counter-reset: list-6 list-7 list-8 list-9;
167
+ }
168
+ .ql-editor ol li.ql-indent-6 {
169
+ counter-increment: list-6;
170
+ }
171
+ .ql-editor ol li.ql-indent-6:before {
172
+ content: counter(list-6, decimal) '. ';
173
+ }
174
+ .ql-editor ol li.ql-indent-6 {
175
+ counter-reset: list-7 list-8 list-9;
176
+ }
177
+ .ql-editor ol li.ql-indent-7 {
178
+ counter-increment: list-7;
179
+ }
180
+ .ql-editor ol li.ql-indent-7:before {
181
+ content: counter(list-7, lower-alpha) '. ';
182
+ }
183
+ .ql-editor ol li.ql-indent-7 {
184
+ counter-reset: list-8 list-9;
185
+ }
186
+ .ql-editor ol li.ql-indent-8 {
187
+ counter-increment: list-8;
188
+ }
189
+ .ql-editor ol li.ql-indent-8:before {
190
+ content: counter(list-8, lower-roman) '. ';
191
+ }
192
+ .ql-editor ol li.ql-indent-8 {
193
+ counter-reset: list-9;
194
+ }
195
+ .ql-editor ol li.ql-indent-9 {
196
+ counter-increment: list-9;
197
+ }
198
+ .ql-editor ol li.ql-indent-9:before {
199
+ content: counter(list-9, decimal) '. ';
200
+ }
201
+ .ql-editor .ql-indent-1:not(.ql-direction-rtl) {
202
+ padding-left: 3em;
203
+ }
204
+ .ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
205
+ padding-left: 4.5em;
206
+ }
207
+ .ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
208
+ padding-right: 3em;
209
+ }
210
+ .ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
211
+ padding-right: 4.5em;
212
+ }
213
+ .ql-editor .ql-indent-2:not(.ql-direction-rtl) {
214
+ padding-left: 6em;
215
+ }
216
+ .ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
217
+ padding-left: 7.5em;
218
+ }
219
+ .ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
220
+ padding-right: 6em;
221
+ }
222
+ .ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
223
+ padding-right: 7.5em;
224
+ }
225
+ .ql-editor .ql-indent-3:not(.ql-direction-rtl) {
226
+ padding-left: 9em;
227
+ }
228
+ .ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
229
+ padding-left: 10.5em;
230
+ }
231
+ .ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
232
+ padding-right: 9em;
233
+ }
234
+ .ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
235
+ padding-right: 10.5em;
236
+ }
237
+ .ql-editor .ql-indent-4:not(.ql-direction-rtl) {
238
+ padding-left: 12em;
239
+ }
240
+ .ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
241
+ padding-left: 13.5em;
242
+ }
243
+ .ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
244
+ padding-right: 12em;
245
+ }
246
+ .ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
247
+ padding-right: 13.5em;
248
+ }
249
+ .ql-editor .ql-indent-5:not(.ql-direction-rtl) {
250
+ padding-left: 15em;
251
+ }
252
+ .ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
253
+ padding-left: 16.5em;
254
+ }
255
+ .ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
256
+ padding-right: 15em;
257
+ }
258
+ .ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
259
+ padding-right: 16.5em;
260
+ }
261
+ .ql-editor .ql-indent-6:not(.ql-direction-rtl) {
262
+ padding-left: 18em;
263
+ }
264
+ .ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
265
+ padding-left: 19.5em;
266
+ }
267
+ .ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
268
+ padding-right: 18em;
269
+ }
270
+ .ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
271
+ padding-right: 19.5em;
272
+ }
273
+ .ql-editor .ql-indent-7:not(.ql-direction-rtl) {
274
+ padding-left: 21em;
275
+ }
276
+ .ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
277
+ padding-left: 22.5em;
278
+ }
279
+ .ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
280
+ padding-right: 21em;
281
+ }
282
+ .ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
283
+ padding-right: 22.5em;
284
+ }
285
+ .ql-editor .ql-indent-8:not(.ql-direction-rtl) {
286
+ padding-left: 24em;
287
+ }
288
+ .ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
289
+ padding-left: 25.5em;
290
+ }
291
+ .ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
292
+ padding-right: 24em;
293
+ }
294
+ .ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
295
+ padding-right: 25.5em;
296
+ }
297
+ .ql-editor .ql-indent-9:not(.ql-direction-rtl) {
298
+ padding-left: 27em;
299
+ }
300
+ .ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
301
+ padding-left: 28.5em;
302
+ }
303
+ .ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
304
+ padding-right: 27em;
305
+ }
306
+ .ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
307
+ padding-right: 28.5em;
308
+ }
309
+ .ql-editor .ql-video {
310
+ display: block;
311
+ max-width: 100%;
312
+ }
313
+ .ql-editor .ql-video.ql-align-center {
314
+ margin: 0 auto;
315
+ }
316
+ .ql-editor .ql-video.ql-align-right {
317
+ margin: 0 0 0 auto;
318
+ }
319
+ .ql-editor .ql-bg-black {
320
+ background-color: #000;
321
+ }
322
+ .ql-editor .ql-bg-red {
323
+ background-color: #e60000;
324
+ }
325
+ .ql-editor .ql-bg-orange {
326
+ background-color: #f90;
327
+ }
328
+ .ql-editor .ql-bg-yellow {
329
+ background-color: #ff0;
330
+ }
331
+ .ql-editor .ql-bg-green {
332
+ background-color: #008a00;
333
+ }
334
+ .ql-editor .ql-bg-blue {
335
+ background-color: #06c;
336
+ }
337
+ .ql-editor .ql-bg-purple {
338
+ background-color: #93f;
339
+ }
340
+ .ql-editor .ql-color-white {
341
+ color: #fff;
342
+ }
343
+ .ql-editor .ql-color-red {
344
+ color: #e60000;
345
+ }
346
+ .ql-editor .ql-color-orange {
347
+ color: #f90;
348
+ }
349
+ .ql-editor .ql-color-yellow {
350
+ color: #ff0;
351
+ }
352
+ .ql-editor .ql-color-green {
353
+ color: #008a00;
354
+ }
355
+ .ql-editor .ql-color-blue {
356
+ color: #06c;
357
+ }
358
+ .ql-editor .ql-color-purple {
359
+ color: #93f;
360
+ }
361
+ .ql-editor .ql-font-serif {
362
+ font-family: Georgia, Times New Roman, serif;
363
+ }
364
+ .ql-editor .ql-font-monospace {
365
+ font-family: Monaco, Courier New, monospace;
366
+ }
367
+ .ql-editor .ql-size-small {
368
+ font-size: 0.75em;
369
+ }
370
+ .ql-editor .ql-size-large {
371
+ font-size: 1.5em;
372
+ }
373
+ .ql-editor .ql-size-huge {
374
+ font-size: 2.5em;
375
+ }
376
+ .ql-editor .ql-direction-rtl {
377
+ direction: rtl;
378
+ text-align: inherit;
379
+ }
380
+ .ql-editor .ql-align-center {
381
+ text-align: center;
382
+ }
383
+ .ql-editor .ql-align-justify {
384
+ text-align: justify;
385
+ }
386
+ .ql-editor .ql-align-right {
387
+ text-align: right;
388
+ }
389
+ .ql-editor.ql-blank::before {
390
+ color: rgba(0,0,0,0.6);
391
+ content: attr(data-placeholder);
392
+ font-style: italic;
393
+ left: 15px;
394
+ pointer-events: none;
395
+ position: absolute;
396
+ right: 15px;
397
+ }
398
+ .ql-snow.ql-toolbar:after,
399
+ .ql-snow .ql-toolbar:after {
400
+ clear: both;
401
+ content: '';
402
+ display: table;
403
+ }
404
+ .ql-snow.ql-toolbar button,
405
+ .ql-snow .ql-toolbar button {
406
+ background: none;
407
+ border: none;
408
+ cursor: pointer;
409
+ display: inline-block;
410
+ float: left;
411
+ height: 24px;
412
+ padding: 3px 5px;
413
+ width: 28px;
414
+ }
415
+ .ql-snow.ql-toolbar button svg,
416
+ .ql-snow .ql-toolbar button svg {
417
+ float: left;
418
+ height: 100%;
419
+ }
420
+ .ql-snow.ql-toolbar button:active:hover,
421
+ .ql-snow .ql-toolbar button:active:hover {
422
+ outline: none;
423
+ }
424
+ .ql-snow.ql-toolbar input.ql-image[type=file],
425
+ .ql-snow .ql-toolbar input.ql-image[type=file] {
426
+ display: none;
427
+ }
428
+ .ql-snow.ql-toolbar button:hover,
429
+ .ql-snow .ql-toolbar button:hover,
430
+ .ql-snow.ql-toolbar button:focus,
431
+ .ql-snow .ql-toolbar button:focus,
432
+ .ql-snow.ql-toolbar button.ql-active,
433
+ .ql-snow .ql-toolbar button.ql-active,
434
+ .ql-snow.ql-toolbar .ql-picker-label:hover,
435
+ .ql-snow .ql-toolbar .ql-picker-label:hover,
436
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active,
437
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active,
438
+ .ql-snow.ql-toolbar .ql-picker-item:hover,
439
+ .ql-snow .ql-toolbar .ql-picker-item:hover,
440
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected,
441
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected {
442
+ color: #06c;
443
+ }
444
+ .ql-snow.ql-toolbar button:hover .ql-fill,
445
+ .ql-snow .ql-toolbar button:hover .ql-fill,
446
+ .ql-snow.ql-toolbar button:focus .ql-fill,
447
+ .ql-snow .ql-toolbar button:focus .ql-fill,
448
+ .ql-snow.ql-toolbar button.ql-active .ql-fill,
449
+ .ql-snow .ql-toolbar button.ql-active .ql-fill,
450
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,
451
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,
452
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
453
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
454
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,
455
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,
456
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
457
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
458
+ .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,
459
+ .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,
460
+ .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,
461
+ .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,
462
+ .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
463
+ .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
464
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
465
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
466
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
467
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
468
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
469
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
470
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
471
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
472
+ fill: #06c;
473
+ }
474
+ .ql-snow.ql-toolbar button:hover .ql-stroke,
475
+ .ql-snow .ql-toolbar button:hover .ql-stroke,
476
+ .ql-snow.ql-toolbar button:focus .ql-stroke,
477
+ .ql-snow .ql-toolbar button:focus .ql-stroke,
478
+ .ql-snow.ql-toolbar button.ql-active .ql-stroke,
479
+ .ql-snow .ql-toolbar button.ql-active .ql-stroke,
480
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,
481
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,
482
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
483
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
484
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,
485
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,
486
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
487
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
488
+ .ql-snow.ql-toolbar button:hover .ql-stroke-miter,
489
+ .ql-snow .ql-toolbar button:hover .ql-stroke-miter,
490
+ .ql-snow.ql-toolbar button:focus .ql-stroke-miter,
491
+ .ql-snow .ql-toolbar button:focus .ql-stroke-miter,
492
+ .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
493
+ .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
494
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
495
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
496
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
497
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
498
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
499
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
500
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
501
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
502
+ stroke: #06c;
503
+ }
504
+ @media (pointer: coarse) {
505
+ .ql-snow.ql-toolbar button:hover:not(.ql-active),
506
+ .ql-snow .ql-toolbar button:hover:not(.ql-active) {
507
+ color: #444;
508
+ }
509
+ .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,
510
+ .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,
511
+ .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,
512
+ .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
513
+ fill: #444;
514
+ }
515
+ .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,
516
+ .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,
517
+ .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,
518
+ .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
519
+ stroke: #444;
520
+ }
521
+ }
522
+ .ql-snow {
523
+ box-sizing: border-box;
524
+ }
525
+ .ql-snow * {
526
+ box-sizing: border-box;
527
+ }
528
+ .ql-snow .ql-hidden {
529
+ display: none;
530
+ }
531
+ .ql-snow .ql-out-bottom,
532
+ .ql-snow .ql-out-top {
533
+ visibility: hidden;
534
+ }
535
+ .ql-snow .ql-tooltip {
536
+ position: absolute;
537
+ transform: translateY(10px);
538
+ }
539
+ .ql-snow .ql-tooltip a {
540
+ cursor: pointer;
541
+ text-decoration: none;
542
+ }
543
+ .ql-snow .ql-tooltip.ql-flip {
544
+ transform: translateY(-10px);
545
+ }
546
+ .ql-snow .ql-formats {
547
+ display: inline-block;
548
+ vertical-align: middle;
549
+ }
550
+ .ql-snow .ql-formats:after {
551
+ clear: both;
552
+ content: '';
553
+ display: table;
554
+ }
555
+ .ql-snow .ql-stroke {
556
+ fill: none;
557
+ stroke: #444;
558
+ stroke-linecap: round;
559
+ stroke-linejoin: round;
560
+ stroke-width: 2;
561
+ }
562
+ .ql-snow .ql-stroke-miter {
563
+ fill: none;
564
+ stroke: #444;
565
+ stroke-miterlimit: 10;
566
+ stroke-width: 2;
567
+ }
568
+ .ql-snow .ql-fill,
569
+ .ql-snow .ql-stroke.ql-fill {
570
+ fill: #444;
571
+ }
572
+ .ql-snow .ql-empty {
573
+ fill: none;
574
+ }
575
+ .ql-snow .ql-even {
576
+ fill-rule: evenodd;
577
+ }
578
+ .ql-snow .ql-thin,
579
+ .ql-snow .ql-stroke.ql-thin {
580
+ stroke-width: 1;
581
+ }
582
+ .ql-snow .ql-transparent {
583
+ opacity: 0.4;
584
+ }
585
+ .ql-snow .ql-direction svg:last-child {
586
+ display: none;
587
+ }
588
+ .ql-snow .ql-direction.ql-active svg:last-child {
589
+ display: inline;
590
+ }
591
+ .ql-snow .ql-direction.ql-active svg:first-child {
592
+ display: none;
593
+ }
594
+ .ql-snow .ql-editor h1 {
595
+ font-size: 2em;
596
+ }
597
+ .ql-snow .ql-editor h2 {
598
+ font-size: 1.5em;
599
+ }
600
+ .ql-snow .ql-editor h3 {
601
+ font-size: 1.17em;
602
+ }
603
+ .ql-snow .ql-editor h4 {
604
+ font-size: 1em;
605
+ }
606
+ .ql-snow .ql-editor h5 {
607
+ font-size: 0.83em;
608
+ }
609
+ .ql-snow .ql-editor h6 {
610
+ font-size: 0.67em;
611
+ }
612
+ .ql-snow .ql-editor a {
613
+ text-decoration: underline;
614
+ }
615
+ .ql-snow .ql-editor blockquote {
616
+ border-left: 4px solid #ccc;
617
+ margin-bottom: 5px;
618
+ margin-top: 5px;
619
+ padding-left: 16px;
620
+ }
621
+ .ql-snow .ql-editor code,
622
+ .ql-snow .ql-editor pre {
623
+ background-color: #f0f0f0;
624
+ border-radius: 3px;
625
+ }
626
+ .ql-snow .ql-editor pre {
627
+ white-space: pre-wrap;
628
+ margin-bottom: 5px;
629
+ margin-top: 5px;
630
+ padding: 5px 10px;
631
+ }
632
+ .ql-snow .ql-editor code {
633
+ font-size: 85%;
634
+ padding: 2px 4px;
635
+ }
636
+ .ql-snow .ql-editor pre.ql-syntax {
637
+ background-color: #23241f;
638
+ color: #f8f8f2;
639
+ overflow: visible;
640
+ }
641
+ .ql-snow .ql-editor img {
642
+ max-width: 100%;
643
+ }
644
+ .ql-snow .ql-picker {
645
+ color: #444;
646
+ display: inline-block;
647
+ float: left;
648
+ font-size: 14px;
649
+ font-weight: 500;
650
+ height: 24px;
651
+ position: relative;
652
+ vertical-align: middle;
653
+ }
654
+ .ql-snow .ql-picker-label {
655
+ cursor: pointer;
656
+ display: inline-block;
657
+ height: 100%;
658
+ padding-left: 8px;
659
+ padding-right: 2px;
660
+ position: relative;
661
+ width: 100%;
662
+ }
663
+ .ql-snow .ql-picker-label::before {
664
+ display: inline-block;
665
+ line-height: 22px;
666
+ }
667
+ .ql-snow .ql-picker-options {
668
+ background-color: #fff;
669
+ display: none;
670
+ min-width: 100%;
671
+ padding: 4px 8px;
672
+ position: absolute;
673
+ white-space: nowrap;
674
+ }
675
+ .ql-snow .ql-picker-options .ql-picker-item {
676
+ cursor: pointer;
677
+ display: block;
678
+ padding-bottom: 5px;
679
+ padding-top: 5px;
680
+ }
681
+ .ql-snow .ql-picker.ql-expanded .ql-picker-label {
682
+ color: #ccc;
683
+ z-index: 2;
684
+ }
685
+ .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
686
+ fill: #ccc;
687
+ }
688
+ .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
689
+ stroke: #ccc;
690
+ }
691
+ .ql-snow .ql-picker.ql-expanded .ql-picker-options {
692
+ display: block;
693
+ margin-top: -1px;
694
+ top: 100%;
695
+ z-index: 1;
696
+ }
697
+ .ql-snow .ql-color-picker,
698
+ .ql-snow .ql-icon-picker {
699
+ width: 28px;
700
+ }
701
+ .ql-snow .ql-color-picker .ql-picker-label,
702
+ .ql-snow .ql-icon-picker .ql-picker-label {
703
+ padding: 2px 4px;
704
+ }
705
+ .ql-snow .ql-color-picker .ql-picker-label svg,
706
+ .ql-snow .ql-icon-picker .ql-picker-label svg {
707
+ right: 4px;
708
+ }
709
+ .ql-snow .ql-icon-picker .ql-picker-options {
710
+ padding: 4px 0px;
711
+ }
712
+ .ql-snow .ql-icon-picker .ql-picker-item {
713
+ height: 24px;
714
+ width: 24px;
715
+ padding: 2px 4px;
716
+ }
717
+ .ql-snow .ql-color-picker .ql-picker-options {
718
+ padding: 3px 5px;
719
+ width: 152px;
720
+ }
721
+ .ql-snow .ql-color-picker .ql-picker-item {
722
+ border: 1px solid transparent;
723
+ float: left;
724
+ height: 16px;
725
+ margin: 2px;
726
+ padding: 0px;
727
+ width: 16px;
728
+ }
729
+ .ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
730
+ position: absolute;
731
+ margin-top: -9px;
732
+ right: 0;
733
+ top: 50%;
734
+ width: 18px;
735
+ }
736
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
737
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
738
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
739
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
740
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
741
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
742
+ content: attr(data-label);
743
+ }
744
+ .ql-snow .ql-picker.ql-header {
745
+ width: 98px;
746
+ }
747
+ .ql-snow .ql-picker.ql-header .ql-picker-label::before,
748
+ .ql-snow .ql-picker.ql-header .ql-picker-item::before {
749
+ content: 'Normal';
750
+ }
751
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
752
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
753
+ content: 'Heading 1';
754
+ }
755
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
756
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
757
+ content: 'Heading 2';
758
+ }
759
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
760
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
761
+ content: 'Heading 3';
762
+ }
763
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
764
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
765
+ content: 'Heading 4';
766
+ }
767
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
768
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
769
+ content: 'Heading 5';
770
+ }
771
+ .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
772
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
773
+ content: 'Heading 6';
774
+ }
775
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
776
+ font-size: 2em;
777
+ }
778
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
779
+ font-size: 1.5em;
780
+ }
781
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
782
+ font-size: 1.17em;
783
+ }
784
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
785
+ font-size: 1em;
786
+ }
787
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
788
+ font-size: 0.83em;
789
+ }
790
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
791
+ font-size: 0.67em;
792
+ }
793
+ .ql-snow .ql-picker.ql-font {
794
+ width: 108px;
795
+ }
796
+ .ql-snow .ql-picker.ql-font .ql-picker-label::before,
797
+ .ql-snow .ql-picker.ql-font .ql-picker-item::before {
798
+ content: 'Sans Serif';
799
+ }
800
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
801
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
802
+ content: 'Serif';
803
+ }
804
+ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
805
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
806
+ content: 'Monospace';
807
+ }
808
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
809
+ font-family: Georgia, Times New Roman, serif;
810
+ }
811
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
812
+ font-family: Monaco, Courier New, monospace;
813
+ }
814
+ .ql-snow .ql-picker.ql-size {
815
+ width: 98px;
816
+ }
817
+ .ql-snow .ql-picker.ql-size .ql-picker-label::before,
818
+ .ql-snow .ql-picker.ql-size .ql-picker-item::before {
819
+ content: 'Normal';
820
+ }
821
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
822
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
823
+ content: 'Small';
824
+ }
825
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
826
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
827
+ content: 'Large';
828
+ }
829
+ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
830
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
831
+ content: 'Huge';
832
+ }
833
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
834
+ font-size: 10px;
835
+ }
836
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
837
+ font-size: 18px;
838
+ }
839
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
840
+ font-size: 32px;
841
+ }
842
+ .ql-snow .ql-color-picker.ql-background .ql-picker-item {
843
+ background-color: #fff;
844
+ }
845
+ .ql-snow .ql-color-picker.ql-color .ql-picker-item {
846
+ background-color: #000;
847
+ }
848
+ .ql-toolbar.ql-snow {
849
+ border: 1px solid #ccc;
850
+ box-sizing: border-box;
851
+ font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
852
+ padding: 8px;
853
+ }
854
+ .ql-toolbar.ql-snow .ql-formats {
855
+ margin-right: 15px;
856
+ }
857
+ .ql-toolbar.ql-snow .ql-picker-label {
858
+ border: 1px solid transparent;
859
+ }
860
+ .ql-toolbar.ql-snow .ql-picker-options {
861
+ border: 1px solid transparent;
862
+ box-shadow: rgba(0,0,0,0.2) 0 2px 8px;
863
+ }
864
+ .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
865
+ border-color: #ccc;
866
+ }
867
+ .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
868
+ border-color: #ccc;
869
+ }
870
+ .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,
871
+ .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
872
+ border-color: #000;
873
+ }
874
+ .ql-toolbar.ql-snow + .ql-container.ql-snow {
875
+ border-top: 0px;
876
+ }
877
+ .ql-snow .ql-tooltip {
878
+ background-color: #fff;
879
+ border: 1px solid #ccc;
880
+ box-shadow: 0px 0px 5px #ddd;
881
+ color: #444;
882
+ padding: 5px 12px;
883
+ white-space: nowrap;
884
+ }
885
+ .ql-snow .ql-tooltip::before {
886
+ content: "Visit URL:";
887
+ line-height: 26px;
888
+ margin-right: 8px;
889
+ }
890
+ .ql-snow .ql-tooltip input[type=text] {
891
+ display: none;
892
+ border: 1px solid #ccc;
893
+ font-size: 13px;
894
+ height: 26px;
895
+ margin: 0px;
896
+ padding: 3px 5px;
897
+ width: 170px;
898
+ }
899
+ .ql-snow .ql-tooltip a.ql-preview {
900
+ display: inline-block;
901
+ max-width: 200px;
902
+ overflow-x: hidden;
903
+ text-overflow: ellipsis;
904
+ vertical-align: top;
905
+ }
906
+ .ql-snow .ql-tooltip a.ql-action::after {
907
+ border-right: 1px solid #ccc;
908
+ content: 'Edit';
909
+ margin-left: 16px;
910
+ padding-right: 8px;
911
+ }
912
+ .ql-snow .ql-tooltip a.ql-remove::before {
913
+ content: 'Remove';
914
+ margin-left: 8px;
915
+ }
916
+ .ql-snow .ql-tooltip a {
917
+ line-height: 26px;
918
+ }
919
+ .ql-snow .ql-tooltip.ql-editing a.ql-preview,
920
+ .ql-snow .ql-tooltip.ql-editing a.ql-remove {
921
+ display: none;
922
+ }
923
+ .ql-snow .ql-tooltip.ql-editing input[type=text] {
924
+ display: inline-block;
925
+ }
926
+ .ql-snow .ql-tooltip.ql-editing a.ql-action::after {
927
+ border-right: 0px;
928
+ content: 'Save';
929
+ padding-right: 0px;
930
+ }
931
+ .ql-snow .ql-tooltip[data-mode=link]::before {
932
+ content: "Enter link:";
933
+ }
934
+ .ql-snow .ql-tooltip[data-mode=formula]::before {
935
+ content: "Enter formula:";
936
+ }
937
+ .ql-snow .ql-tooltip[data-mode=video]::before {
938
+ content: "Enter video:";
939
+ }
940
+ .ql-snow a {
941
+ color: #06c;
942
+ }
943
+ .ql-container.ql-snow {
944
+ border: 1px solid #ccc;
945
+ }