proclaim 0.5.6 → 0.6.0

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 (236) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +5 -38
  3. data/app/assets/config/proclaim_manifest.js +2 -0
  4. data/app/assets/images/{ajax_loader.gif → proclaim/ajax_loader.gif} +0 -0
  5. data/app/assets/javascripts/proclaim.js +7 -7
  6. data/app/assets/javascripts/proclaim/{comments_handler.js.coffee → comments_handler.coffee} +16 -10
  7. data/app/assets/javascripts/proclaim/editor.coffee +55 -0
  8. data/app/assets/stylesheets/{proclaim.css.scss → proclaim.scss} +7 -8
  9. data/app/assets/stylesheets/proclaim/{comments.css.scss → comments.scss} +0 -0
  10. data/app/assets/stylesheets/proclaim/{posts.css.scss → posts.scss} +60 -25
  11. data/app/assets/stylesheets/proclaim/{subscriptions.css.scss → subscriptions.scss} +0 -0
  12. data/app/controllers/proclaim/application_controller.rb +60 -56
  13. data/app/controllers/proclaim/comments_controller.rb +13 -42
  14. data/app/controllers/proclaim/posts_controller.rb +25 -57
  15. data/app/controllers/proclaim/subscriptions_controller.rb +3 -3
  16. data/app/jobs/proclaim/application_job.rb +4 -0
  17. data/app/mailers/proclaim/application_mailer.rb +5 -0
  18. data/app/mailers/proclaim/subscription_mailer.rb +19 -17
  19. data/app/models/proclaim/application_record.rb +5 -0
  20. data/app/models/proclaim/comment.rb +6 -1
  21. data/app/models/proclaim/post.rb +20 -28
  22. data/app/models/proclaim/subscription.rb +33 -11
  23. data/app/views/layouts/proclaim/subscription_mailer.html.erb +15 -36
  24. data/app/views/proclaim/comments/_comment.html.erb +7 -7
  25. data/app/views/proclaim/comments/_form.html.erb +7 -5
  26. data/app/views/proclaim/posts/_form.html.erb +34 -21
  27. data/app/views/proclaim/posts/show.html.erb +16 -3
  28. data/app/views/proclaim/subscription_mailer/welcome_email.html.erb +2 -6
  29. data/config/initializers/friendly_id.rb +20 -1
  30. data/config/routes.rb +1 -5
  31. data/db/migrate/20141108222616_create_proclaim_posts.rb +8 -1
  32. data/db/migrate/20141114235359_create_proclaim_comments.rb +1 -1
  33. data/db/migrate/20141115022230_create_proclaim_comment_hierarchies.rb +1 -1
  34. data/db/migrate/20141210234057_create_proclaim_subscriptions.rb +5 -4
  35. data/db/migrate/20150213015321_create_friendly_id_slugs.rb +1 -1
  36. data/lib/generators/proclaim/install_generator.rb +1 -1
  37. data/lib/generators/proclaim/templates/initialize_proclaim.rb +31 -29
  38. data/lib/generators/proclaim/views_generator.rb +1 -1
  39. data/lib/proclaim.rb +15 -15
  40. data/lib/proclaim/engine.rb +21 -19
  41. data/lib/proclaim/version.rb +1 -1
  42. data/vendor/assets/fonts/KaTeX_AMS-Regular.ttf +0 -0
  43. data/vendor/assets/fonts/KaTeX_AMS-Regular.woff +0 -0
  44. data/vendor/assets/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  45. data/vendor/assets/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  46. data/vendor/assets/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  47. data/vendor/assets/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  48. data/vendor/assets/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  49. data/vendor/assets/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  50. data/vendor/assets/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  51. data/vendor/assets/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  52. data/vendor/assets/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  53. data/vendor/assets/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  54. data/vendor/assets/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  55. data/vendor/assets/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  56. data/vendor/assets/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  57. data/vendor/assets/fonts/KaTeX_Main-Bold.ttf +0 -0
  58. data/vendor/assets/fonts/KaTeX_Main-Bold.woff +0 -0
  59. data/vendor/assets/fonts/KaTeX_Main-Bold.woff2 +0 -0
  60. data/vendor/assets/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  61. data/vendor/assets/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  62. data/vendor/assets/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  63. data/vendor/assets/fonts/KaTeX_Main-Italic.ttf +0 -0
  64. data/vendor/assets/fonts/KaTeX_Main-Italic.woff +0 -0
  65. data/vendor/assets/fonts/KaTeX_Main-Italic.woff2 +0 -0
  66. data/vendor/assets/fonts/KaTeX_Main-Regular.ttf +0 -0
  67. data/vendor/assets/fonts/KaTeX_Main-Regular.woff +0 -0
  68. data/vendor/assets/fonts/KaTeX_Main-Regular.woff2 +0 -0
  69. data/vendor/assets/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  70. data/vendor/assets/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  71. data/vendor/assets/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  72. data/vendor/assets/fonts/KaTeX_Math-Italic.ttf +0 -0
  73. data/vendor/assets/fonts/KaTeX_Math-Italic.woff +0 -0
  74. data/vendor/assets/fonts/KaTeX_Math-Italic.woff2 +0 -0
  75. data/vendor/assets/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  76. data/vendor/assets/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  77. data/vendor/assets/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  78. data/vendor/assets/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  79. data/vendor/assets/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  80. data/vendor/assets/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  81. data/vendor/assets/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  82. data/vendor/assets/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  83. data/vendor/assets/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  84. data/vendor/assets/fonts/KaTeX_Script-Regular.ttf +0 -0
  85. data/vendor/assets/fonts/KaTeX_Script-Regular.woff +0 -0
  86. data/vendor/assets/fonts/KaTeX_Script-Regular.woff2 +0 -0
  87. data/vendor/assets/fonts/KaTeX_Size1-Regular.ttf +0 -0
  88. data/vendor/assets/fonts/KaTeX_Size1-Regular.woff +0 -0
  89. data/vendor/assets/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  90. data/vendor/assets/fonts/KaTeX_Size2-Regular.ttf +0 -0
  91. data/vendor/assets/fonts/KaTeX_Size2-Regular.woff +0 -0
  92. data/vendor/assets/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  93. data/vendor/assets/fonts/KaTeX_Size3-Regular.ttf +0 -0
  94. data/vendor/assets/fonts/KaTeX_Size3-Regular.woff +0 -0
  95. data/vendor/assets/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  96. data/vendor/assets/fonts/KaTeX_Size4-Regular.ttf +0 -0
  97. data/vendor/assets/fonts/KaTeX_Size4-Regular.woff +0 -0
  98. data/vendor/assets/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  99. data/vendor/assets/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  100. data/vendor/assets/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  101. data/vendor/assets/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  102. data/vendor/assets/javascripts/contrib/auto-render.js +339 -0
  103. data/vendor/assets/javascripts/contrib/auto-render.min.js +1 -0
  104. data/vendor/assets/javascripts/contrib/auto-render.mjs +215 -0
  105. data/vendor/assets/javascripts/contrib/copy-tex.css +14 -0
  106. data/vendor/assets/javascripts/contrib/copy-tex.js +213 -0
  107. data/vendor/assets/javascripts/contrib/copy-tex.min.css +1 -0
  108. data/vendor/assets/javascripts/contrib/copy-tex.min.js +1 -0
  109. data/vendor/assets/javascripts/contrib/copy-tex.mjs +85 -0
  110. data/vendor/assets/javascripts/contrib/mathtex-script-type.js +137 -0
  111. data/vendor/assets/javascripts/contrib/mathtex-script-type.min.js +1 -0
  112. data/vendor/assets/javascripts/contrib/mathtex-script-type.mjs +24 -0
  113. data/vendor/assets/javascripts/contrib/mhchem.js +3241 -0
  114. data/vendor/assets/javascripts/contrib/mhchem.min.js +1 -0
  115. data/vendor/assets/javascripts/contrib/mhchem.mjs +3109 -0
  116. data/vendor/assets/javascripts/katex.js +16517 -0
  117. data/vendor/assets/javascripts/katex.min.js +1 -0
  118. data/vendor/assets/javascripts/katex.mjs +16122 -0
  119. data/vendor/assets/javascripts/quill.core.js +8522 -0
  120. data/vendor/assets/javascripts/quill.js +11489 -0
  121. data/vendor/assets/javascripts/quill.min.js +8 -0
  122. data/vendor/assets/javascripts/quill.min.js.map +1 -0
  123. data/vendor/assets/stylesheets/katex.css +1011 -0
  124. data/vendor/assets/stylesheets/katex.min.css +1 -0
  125. data/vendor/assets/stylesheets/quill.bubble.css +952 -0
  126. data/vendor/assets/stylesheets/quill.core.css +397 -0
  127. data/vendor/assets/stylesheets/quill.snow.css +945 -0
  128. metadata +169 -278
  129. data/CHANGELOG +0 -77
  130. data/Gemfile +0 -14
  131. data/VERSION +0 -1
  132. data/app/assets/javascripts/proclaim/editor.js.coffee +0 -52
  133. data/app/assets/javascripts/proclaim/images.js.coffee +0 -3
  134. data/app/assets/javascripts/proclaim/subscriptions.js.coffee +0 -3
  135. data/app/assets/stylesheets/proclaim/images.scss +0 -3
  136. data/app/controllers/proclaim/images_controller.rb +0 -67
  137. data/app/helpers/proclaim/comments_helper.rb +0 -4
  138. data/app/helpers/proclaim/images_helper.rb +0 -4
  139. data/app/helpers/proclaim/subscriptions_helper.rb +0 -4
  140. data/app/models/proclaim/image.rb +0 -19
  141. data/app/policies/proclaim/image_policy.rb +0 -29
  142. data/app/uploaders/proclaim/image_uploader.rb +0 -82
  143. data/db/migrate/20141222224905_create_proclaim_images.rb +0 -12
  144. data/db/migrate/20150123115226_add_name_to_subscriptions.rb +0 -7
  145. data/db/migrate/20150213015850_add_slug_to_posts.rb +0 -20
  146. data/proclaim.gemspec +0 -51
  147. data/test/controllers/proclaim/comments_controller_test.rb +0 -228
  148. data/test/controllers/proclaim/images_controller_test.rb +0 -166
  149. data/test/controllers/proclaim/posts_controller_test.rb +0 -465
  150. data/test/controllers/proclaim/subscriptions_controller_test.rb +0 -154
  151. data/test/dummy/README.rdoc +0 -28
  152. data/test/dummy/Rakefile +0 -6
  153. data/test/dummy/app/assets/javascripts/application.js +0 -14
  154. data/test/dummy/app/assets/stylesheets/application.css +0 -16
  155. data/test/dummy/app/controllers/application_controller.rb +0 -15
  156. data/test/dummy/app/helpers/application_helper.rb +0 -28
  157. data/test/dummy/app/models/user.rb +0 -7
  158. data/test/dummy/app/views/layouts/application.html.erb +0 -16
  159. data/test/dummy/bin/bundle +0 -3
  160. data/test/dummy/bin/rails +0 -4
  161. data/test/dummy/bin/rake +0 -4
  162. data/test/dummy/config.ru +0 -4
  163. data/test/dummy/config/application.rb +0 -24
  164. data/test/dummy/config/boot.rb +0 -5
  165. data/test/dummy/config/database.yml +0 -25
  166. data/test/dummy/config/environment.rb +0 -5
  167. data/test/dummy/config/environments/development.rb +0 -45
  168. data/test/dummy/config/environments/production.rb +0 -80
  169. data/test/dummy/config/environments/test.rb +0 -49
  170. data/test/dummy/config/initializers/assets.rb +0 -8
  171. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  172. data/test/dummy/config/initializers/cookies_serializer.rb +0 -3
  173. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  174. data/test/dummy/config/initializers/inflections.rb +0 -16
  175. data/test/dummy/config/initializers/mime_types.rb +0 -4
  176. data/test/dummy/config/initializers/session_store.rb +0 -3
  177. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  178. data/test/dummy/config/locales/en.yml +0 -23
  179. data/test/dummy/config/routes.rb +0 -5
  180. data/test/dummy/config/secrets.yml +0 -22
  181. data/test/dummy/db/migrate/20141117214323_create_users.rb +0 -10
  182. data/test/dummy/db/schema.rb +0 -91
  183. data/test/dummy/public/404.html +0 -67
  184. data/test/dummy/public/422.html +0 -67
  185. data/test/dummy/public/500.html +0 -66
  186. data/test/dummy/public/favicon.ico +0 -0
  187. data/test/factories/proclaim/comment.rb +0 -11
  188. data/test/factories/proclaim/image.rb +0 -6
  189. data/test/factories/proclaim/post.rb +0 -14
  190. data/test/factories/proclaim/subscription.rb +0 -14
  191. data/test/factories/user.rb +0 -6
  192. data/test/helpers/proclaim/comments_helper_test.rb +0 -6
  193. data/test/helpers/proclaim/posts_helper_test.rb +0 -6
  194. data/test/helpers/proclaim/subscriptions_helper_test.rb +0 -6
  195. data/test/integration/with_javascript/comment_test.rb +0 -391
  196. data/test/integration/with_javascript/post_form_test.rb +0 -225
  197. data/test/integration/with_javascript/post_show_test.rb +0 -47
  198. data/test/integration/with_javascript/post_subscription_test.rb +0 -302
  199. data/test/integration/without_javascript/blog_subscription_test.rb +0 -114
  200. data/test/integration/without_javascript/manage_subscriptions_test.rb +0 -37
  201. data/test/integration/without_javascript/post_test.rb +0 -234
  202. data/test/integration/without_javascript/subscription_email_test.rb +0 -95
  203. data/test/integration/without_javascript/unsubscribe_test.rb +0 -32
  204. data/test/mailers/previews/proclaim/subscription_mailer_preview.rb +0 -22
  205. data/test/mailers/proclaim/subscription_mailer_test.rb +0 -91
  206. data/test/models/proclaim/comment_test.rb +0 -41
  207. data/test/models/proclaim/image_test.rb +0 -70
  208. data/test/models/proclaim/post_test.rb +0 -193
  209. data/test/models/proclaim/subscription_test.rb +0 -77
  210. data/test/policies/application_policy_test.rb +0 -87
  211. data/test/policies/proclaim/comment_policy_test.rb +0 -71
  212. data/test/policies/proclaim/image_policy_test.rb +0 -83
  213. data/test/policies/proclaim/post_policy_test.rb +0 -98
  214. data/test/policies/proclaim/subscription_policy_test.rb +0 -103
  215. data/test/proclaim_test.rb +0 -7
  216. data/test/support/images/test.jpg +0 -0
  217. data/test/support/pages/posts/edit_page.rb +0 -5
  218. data/test/support/pages/posts/show_page.rb +0 -47
  219. data/test/support/wait_for_ajax.rb +0 -11
  220. data/test/test_helper.rb +0 -71
  221. data/test/unit/proclaim/new_comment_callback_test.rb +0 -62
  222. data/test/unit/proclaim/new_subscription_callback_test.rb +0 -62
  223. data/test/unit/proclaim/post_published_callback_test.rb +0 -74
  224. data/vendor/assets/images/link.png +0 -0
  225. data/vendor/assets/images/remove.png +0 -0
  226. data/vendor/assets/images/resize-bigger.png +0 -0
  227. data/vendor/assets/images/resize-smaller.png +0 -0
  228. data/vendor/assets/images/unlink.png +0 -0
  229. data/vendor/assets/javascripts/addons/medium-editor-insert-embeds.js +0 -197
  230. data/vendor/assets/javascripts/addons/medium-editor-insert-images.js +0 -572
  231. data/vendor/assets/javascripts/addons/medium-editor-insert-maps.js +0 -50
  232. data/vendor/assets/javascripts/addons/medium-editor-insert-plugin.js +0 -496
  233. data/vendor/assets/javascripts/addons/medium-editor-insert-tables.js +0 -132
  234. data/vendor/assets/javascripts/medium-editor-insert-plugin.all.js +0 -1415
  235. data/vendor/assets/stylesheets/medium-editor-insert-plugin-frontend.css.scss +0 -55
  236. data/vendor/assets/stylesheets/medium-editor-insert-plugin.css.scss +0 -277
@@ -16,4 +16,4 @@ module Proclaim
16
16
  end
17
17
  end
18
18
  end
19
- end
19
+ end
@@ -16,21 +16,21 @@ module Proclaim
16
16
  mattr_accessor :excerpt_length
17
17
  @@excerpt_length = 500 # 500 characters (won't interrupt words)
18
18
 
19
- mattr_accessor :editor_toolbar_buttons
20
- @@editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
21
- 'header1', 'header2', 'quote']
22
-
23
- mattr_accessor :editor_whitelist_tags
24
- @@editor_whitelist_tags = %w(h1 h2 h3 h4 h5 h6
25
- div p blockquote
26
- ul ol li
27
- a b strong i u
28
- img figure
29
- pre sup sub br)
30
-
31
- mattr_accessor :editor_whitelist_attributes
32
- @@editor_whitelist_attributes = %w(class id style href title src alt align
33
- draggable)
19
+ mattr_accessor :editor_toolbar
20
+ @@editor_toolbar = [
21
+ ['bold', 'italic', 'underline', 'strike', 'code'],
22
+ [{ 'header': 1 }, { 'header': 2 }],
23
+ ['code-block'],
24
+ [{ 'align': []}],
25
+ [{ 'list': 'ordered'}, { 'list': 'bullet'}],
26
+ ['link', 'image', 'video', 'formula']
27
+ ]
28
+
29
+ mattr_accessor :editor_formats
30
+ @@editor_formats = [
31
+ 'align', 'blockquote', 'bold', 'code', 'code-block', 'formula', 'header',
32
+ 'image', 'italic', 'link', 'list', 'strike', 'underline', 'video'
33
+ ]
34
34
 
35
35
  mattr_accessor :mailer_sender
36
36
  @@mailer_sender = nil
@@ -1,13 +1,11 @@
1
1
  require 'rails'
2
2
  require 'coffee-rails'
3
- require 'sass-rails'
3
+ require 'sassc-rails'
4
4
  require 'jquery-rails'
5
5
  require 'htmlentities'
6
6
  require 'friendly_id'
7
7
  require 'closure_tree'
8
8
  require 'font-awesome-rails'
9
- require 'medium-editor-rails'
10
- require 'carrierwave'
11
9
  require 'aasm'
12
10
  require 'rails-timeago'
13
11
  require 'pundit'
@@ -19,19 +17,13 @@ module Proclaim
19
17
 
20
18
  initializer :assets do
21
19
  Rails.application.config.assets.precompile += %w{
22
- link.png
23
- remove.png
24
- resize-bigger.png
25
- resize-smaller.png
26
- unlink.png
27
- medium-editor-insert-plugin.css.scss
28
- medium-editor-insert-plugin-frontend.css.scss
29
- medium-editor-insert-plugin.all.js
30
- addons/medium-editor-insert-embeds.js
31
- addons/medium-editor-insert-maps.js
32
- addons/medium-editor-insert-tables.js
33
- addons/medium-editor-insert-images.js
34
- addons/medium-editor-insert-plugin.js
20
+ quill.core.js
21
+ quill.js
22
+ quill.min.js
23
+ quill.min.js.map
24
+ quill.bubble.css
25
+ quill.core.css
26
+ quill.snow.css
35
27
  }
36
28
  end
37
29
 
@@ -49,14 +41,18 @@ module Proclaim
49
41
  end
50
42
 
51
43
  config.generators do |g|
52
- g.fixture_replacement :factory_girl, :dir => 'test/factories'
44
+ g.fixture_replacement :factory_bot, :dir => 'test/factories'
53
45
  end
54
46
 
55
47
  initializer :ensure_secret_key_presence do |app|
56
- if app.respond_to?(:secrets)
48
+ if app.respond_to?(:credentials) && key_exists?(app.credentials)
49
+ Proclaim.secret_key ||= app.credentials.secret_key_base
50
+ elsif app.respond_to?(:secrets) && key_exists?(app.secrets)
57
51
  Proclaim.secret_key ||= app.secrets.secret_key_base
58
- elsif app.config.respond_to?(:secret_key_base)
52
+ elsif app.config.respond_to?(:secret_key_base) && key_exists?(app.config)
59
53
  Proclaim.secret_key ||= app.config.secret_key_base
54
+ elsif app.respond_to?(:secret_key_base) && key_exists?(app)
55
+ Proclaim.secret_key ||= app.secret_key_base
60
56
  end
61
57
 
62
58
  if Proclaim.secret_key.nil?
@@ -69,5 +65,11 @@ Please ensure you restarted your application after installing Proclaim or settin
69
65
  ERROR
70
66
  end
71
67
  end
68
+
69
+ private
70
+
71
+ def key_exists?(object)
72
+ object.secret_key_base.present?
73
+ end
72
74
  end
73
75
  end
@@ -1,3 +1,3 @@
1
1
  module Proclaim
2
- VERSION = "0.5.6"
2
+ VERSION = '0.6.0'
3
3
  end
@@ -0,0 +1,339 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory(require("katex"));
4
+ else if(typeof define === 'function' && define.amd)
5
+ define(["katex"], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["renderMathInElement"] = factory(require("katex"));
8
+ else
9
+ root["renderMathInElement"] = factory(root["katex"]);
10
+ })((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__0__) {
11
+ return /******/ (function(modules) { // webpackBootstrap
12
+ /******/ // The module cache
13
+ /******/ var installedModules = {};
14
+ /******/
15
+ /******/ // The require function
16
+ /******/ function __webpack_require__(moduleId) {
17
+ /******/
18
+ /******/ // Check if module is in cache
19
+ /******/ if(installedModules[moduleId]) {
20
+ /******/ return installedModules[moduleId].exports;
21
+ /******/ }
22
+ /******/ // Create a new module (and put it into the cache)
23
+ /******/ var module = installedModules[moduleId] = {
24
+ /******/ i: moduleId,
25
+ /******/ l: false,
26
+ /******/ exports: {}
27
+ /******/ };
28
+ /******/
29
+ /******/ // Execute the module function
30
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
+ /******/
32
+ /******/ // Flag the module as loaded
33
+ /******/ module.l = true;
34
+ /******/
35
+ /******/ // Return the exports of the module
36
+ /******/ return module.exports;
37
+ /******/ }
38
+ /******/
39
+ /******/
40
+ /******/ // expose the modules object (__webpack_modules__)
41
+ /******/ __webpack_require__.m = modules;
42
+ /******/
43
+ /******/ // expose the module cache
44
+ /******/ __webpack_require__.c = installedModules;
45
+ /******/
46
+ /******/ // define getter function for harmony exports
47
+ /******/ __webpack_require__.d = function(exports, name, getter) {
48
+ /******/ if(!__webpack_require__.o(exports, name)) {
49
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50
+ /******/ }
51
+ /******/ };
52
+ /******/
53
+ /******/ // define __esModule on exports
54
+ /******/ __webpack_require__.r = function(exports) {
55
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57
+ /******/ }
58
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
59
+ /******/ };
60
+ /******/
61
+ /******/ // create a fake namespace object
62
+ /******/ // mode & 1: value is a module id, require it
63
+ /******/ // mode & 2: merge all properties of value into the ns
64
+ /******/ // mode & 4: return value when already ns object
65
+ /******/ // mode & 8|1: behave like require
66
+ /******/ __webpack_require__.t = function(value, mode) {
67
+ /******/ if(mode & 1) value = __webpack_require__(value);
68
+ /******/ if(mode & 8) return value;
69
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70
+ /******/ var ns = Object.create(null);
71
+ /******/ __webpack_require__.r(ns);
72
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74
+ /******/ return ns;
75
+ /******/ };
76
+ /******/
77
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
78
+ /******/ __webpack_require__.n = function(module) {
79
+ /******/ var getter = module && module.__esModule ?
80
+ /******/ function getDefault() { return module['default']; } :
81
+ /******/ function getModuleExports() { return module; };
82
+ /******/ __webpack_require__.d(getter, 'a', getter);
83
+ /******/ return getter;
84
+ /******/ };
85
+ /******/
86
+ /******/ // Object.prototype.hasOwnProperty.call
87
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88
+ /******/
89
+ /******/ // __webpack_public_path__
90
+ /******/ __webpack_require__.p = "";
91
+ /******/
92
+ /******/
93
+ /******/ // Load entry module and return exports
94
+ /******/ return __webpack_require__(__webpack_require__.s = 1);
95
+ /******/ })
96
+ /************************************************************************/
97
+ /******/ ([
98
+ /* 0 */
99
+ /***/ (function(module, exports) {
100
+
101
+ module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
102
+
103
+ /***/ }),
104
+ /* 1 */
105
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
106
+
107
+ "use strict";
108
+ __webpack_require__.r(__webpack_exports__);
109
+
110
+ // EXTERNAL MODULE: external "katex"
111
+ var external_katex_ = __webpack_require__(0);
112
+ var external_katex_default = /*#__PURE__*/__webpack_require__.n(external_katex_);
113
+
114
+ // CONCATENATED MODULE: ./contrib/auto-render/splitAtDelimiters.js
115
+ /* eslint no-constant-condition:0 */
116
+ var findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
117
+ // Adapted from
118
+ // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx
119
+ var index = startIndex;
120
+ var braceLevel = 0;
121
+ var delimLength = delimiter.length;
122
+
123
+ while (index < text.length) {
124
+ var character = text[index];
125
+
126
+ if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {
127
+ return index;
128
+ } else if (character === "\\") {
129
+ index++;
130
+ } else if (character === "{") {
131
+ braceLevel++;
132
+ } else if (character === "}") {
133
+ braceLevel--;
134
+ }
135
+
136
+ index++;
137
+ }
138
+
139
+ return -1;
140
+ };
141
+
142
+ var splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) {
143
+ var finalData = [];
144
+
145
+ for (var i = 0; i < startData.length; i++) {
146
+ if (startData[i].type === "text") {
147
+ var text = startData[i].data;
148
+ var lookingForLeft = true;
149
+ var currIndex = 0;
150
+ var nextIndex = void 0;
151
+ nextIndex = text.indexOf(leftDelim);
152
+
153
+ if (nextIndex !== -1) {
154
+ currIndex = nextIndex;
155
+ finalData.push({
156
+ type: "text",
157
+ data: text.slice(0, currIndex)
158
+ });
159
+ lookingForLeft = false;
160
+ }
161
+
162
+ while (true) {
163
+ if (lookingForLeft) {
164
+ nextIndex = text.indexOf(leftDelim, currIndex);
165
+
166
+ if (nextIndex === -1) {
167
+ break;
168
+ }
169
+
170
+ finalData.push({
171
+ type: "text",
172
+ data: text.slice(currIndex, nextIndex)
173
+ });
174
+ currIndex = nextIndex;
175
+ } else {
176
+ nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length);
177
+
178
+ if (nextIndex === -1) {
179
+ break;
180
+ }
181
+
182
+ finalData.push({
183
+ type: "math",
184
+ data: text.slice(currIndex + leftDelim.length, nextIndex),
185
+ rawData: text.slice(currIndex, nextIndex + rightDelim.length),
186
+ display: display
187
+ });
188
+ currIndex = nextIndex + rightDelim.length;
189
+ }
190
+
191
+ lookingForLeft = !lookingForLeft;
192
+ }
193
+
194
+ finalData.push({
195
+ type: "text",
196
+ data: text.slice(currIndex)
197
+ });
198
+ } else {
199
+ finalData.push(startData[i]);
200
+ }
201
+ }
202
+
203
+ return finalData;
204
+ };
205
+
206
+ /* harmony default export */ var auto_render_splitAtDelimiters = (splitAtDelimiters);
207
+ // CONCATENATED MODULE: ./contrib/auto-render/auto-render.js
208
+ /* eslint no-console:0 */
209
+
210
+
211
+
212
+ var auto_render_splitWithDelimiters = function splitWithDelimiters(text, delimiters) {
213
+ var data = [{
214
+ type: "text",
215
+ data: text
216
+ }];
217
+
218
+ for (var i = 0; i < delimiters.length; i++) {
219
+ var delimiter = delimiters[i];
220
+ data = auto_render_splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false);
221
+ }
222
+
223
+ return data;
224
+ };
225
+ /* Note: optionsCopy is mutated by this method. If it is ever exposed in the
226
+ * API, we should copy it before mutating.
227
+ */
228
+
229
+
230
+ var auto_render_renderMathInText = function renderMathInText(text, optionsCopy) {
231
+ var data = auto_render_splitWithDelimiters(text, optionsCopy.delimiters);
232
+ var fragment = document.createDocumentFragment();
233
+
234
+ for (var i = 0; i < data.length; i++) {
235
+ if (data[i].type === "text") {
236
+ fragment.appendChild(document.createTextNode(data[i].data));
237
+ } else {
238
+ var span = document.createElement("span");
239
+ var math = data[i].data; // Override any display mode defined in the settings with that
240
+ // defined by the text itself
241
+
242
+ optionsCopy.displayMode = data[i].display;
243
+
244
+ try {
245
+ if (optionsCopy.preProcess) {
246
+ math = optionsCopy.preProcess(math);
247
+ }
248
+
249
+ external_katex_default.a.render(math, span, optionsCopy);
250
+ } catch (e) {
251
+ if (!(e instanceof external_katex_default.a.ParseError)) {
252
+ throw e;
253
+ }
254
+
255
+ optionsCopy.errorCallback("KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", e);
256
+ fragment.appendChild(document.createTextNode(data[i].rawData));
257
+ continue;
258
+ }
259
+
260
+ fragment.appendChild(span);
261
+ }
262
+ }
263
+
264
+ return fragment;
265
+ };
266
+
267
+ var renderElem = function renderElem(elem, optionsCopy) {
268
+ for (var i = 0; i < elem.childNodes.length; i++) {
269
+ var childNode = elem.childNodes[i];
270
+
271
+ if (childNode.nodeType === 3) {
272
+ // Text node
273
+ var frag = auto_render_renderMathInText(childNode.textContent, optionsCopy);
274
+ i += frag.childNodes.length - 1;
275
+ elem.replaceChild(frag, childNode);
276
+ } else if (childNode.nodeType === 1) {
277
+ (function () {
278
+ // Element node
279
+ var className = ' ' + childNode.className + ' ';
280
+ var shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(function (x) {
281
+ return className.indexOf(' ' + x + ' ') === -1;
282
+ });
283
+
284
+ if (shouldRender) {
285
+ renderElem(childNode, optionsCopy);
286
+ }
287
+ })();
288
+ } // Otherwise, it's something else, and ignore it.
289
+
290
+ }
291
+ };
292
+
293
+ var renderMathInElement = function renderMathInElement(elem, options) {
294
+ if (!elem) {
295
+ throw new Error("No element provided to render");
296
+ }
297
+
298
+ var optionsCopy = {}; // Object.assign(optionsCopy, option)
299
+
300
+ for (var option in options) {
301
+ if (options.hasOwnProperty(option)) {
302
+ optionsCopy[option] = options[option];
303
+ }
304
+ } // default options
305
+
306
+
307
+ optionsCopy.delimiters = optionsCopy.delimiters || [{
308
+ left: "$$",
309
+ right: "$$",
310
+ display: true
311
+ }, {
312
+ left: "\\(",
313
+ right: "\\)",
314
+ display: false
315
+ }, // LaTeX uses $…$, but it ruins the display of normal `$` in text:
316
+ // {left: "$", right: "$", display: false},
317
+ // \[…\] must come last in this array. Otherwise, renderMathInElement
318
+ // will search for \[ before it searches for $$ or \(
319
+ // That makes it susceptible to finding a \\[0.3em] row delimiter and
320
+ // treating it as if it were the start of a KaTeX math zone.
321
+ {
322
+ left: "\\[",
323
+ right: "\\]",
324
+ display: true
325
+ }];
326
+ optionsCopy.ignoredTags = optionsCopy.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"];
327
+ optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || [];
328
+ optionsCopy.errorCallback = optionsCopy.errorCallback || console.error; // Enable sharing of global macros defined via `\gdef` between different
329
+ // math elements within a single call to `renderMathInElement`.
330
+
331
+ optionsCopy.macros = optionsCopy.macros || {};
332
+ renderElem(elem, optionsCopy);
333
+ };
334
+
335
+ /* harmony default export */ var auto_render = __webpack_exports__["default"] = (renderMathInElement);
336
+
337
+ /***/ })
338
+ /******/ ])["default"];
339
+ });