card-mod-prosemirror_editor 0.1

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.
@@ -0,0 +1,31 @@
1
+ decko.addEditor(
2
+ '.prosemirror-editor',
3
+ ->
4
+ decko.initProseMirror @[0].id,
5
+ ->
6
+ prosemirrorContent @[0].id
7
+ )
8
+
9
+ $.extend decko,
10
+ setProseMirrorConfig: (string) ->
11
+ setter = ->
12
+ try
13
+ $.parseJSON string
14
+ catch
15
+ {}
16
+ decko.proseMirrorConfig = setter()
17
+
18
+ initProseMirror: (el_id) ->
19
+ conf = {
20
+ menuBar: true,
21
+ tooltipMenu: false
22
+ }
23
+ hard_conf = { docFormat: "html" }
24
+ user_conf = if decko.proseMirrorConfig? then decko.proseMirrorConfig else {}
25
+ $.extend conf, user_conf, hard_conf
26
+ createProseMirror(el_id, conf)
27
+
28
+ prosemirrorContent = (id) ->
29
+ content = getProseMirrorContent(id)
30
+ return '' if content == '<p></p>'
31
+ content
@@ -0,0 +1,298 @@
1
+ /*-- ProseMirror color variables */
2
+
3
+ $pm-yellow-1: #cc7;
4
+ $pm-yellow-2: #ffc;
5
+ $pm-grey-1: $gray-200;
6
+ $pm-grey-2: $gray-300;
7
+ $pm-grey-3: $gray-400;
8
+ $pm-grey-5: $gray-600;
9
+ $pm-cyan: $cyan;
10
+
11
+ .ProseMirror {
12
+ position: relative;
13
+ }
14
+
15
+ .ProseMirror {
16
+ white-space: pre-wrap;
17
+ }
18
+
19
+ .ProseMirror ul, .ProseMirror ol {
20
+ padding-left: 30px;
21
+ cursor: default;
22
+ }
23
+
24
+ .ProseMirror blockquote {
25
+ padding-left: 1em;
26
+ border-left: 3px solid $gray-300;
27
+ margin-left: 0; margin-right: 0;
28
+ }
29
+
30
+ .ProseMirror pre {
31
+ white-space: pre-wrap;
32
+ }
33
+
34
+ .ProseMirror li {
35
+ position: relative;
36
+ pointer-events: none; /* Don't do weird stuff with marker clicks */
37
+ }
38
+ .ProseMirror li > * {
39
+ pointer-events: auto;
40
+ }
41
+
42
+ .ProseMirror-nodeselection *::selection, .ProseMirror-widget *::selection { background: transparent; }
43
+ .ProseMirror-nodeselection *::-moz-selection, .ProseMirror-widget *::-moz-selection { background: transparent; }
44
+
45
+ .ProseMirror-selectednode {
46
+ outline: 2px solid $pm-cyan;
47
+ }
48
+
49
+ /* Make sure li selections wrap around markers */
50
+
51
+ li.ProseMirror-selectednode {
52
+ outline: none;
53
+ }
54
+
55
+ li.ProseMirror-selectednode:after {
56
+ content: "";
57
+ position: absolute;
58
+ left: -32px;
59
+ right: -2px; top: -2px; bottom: -2px;
60
+ border: 2px solid $pm-cyan;
61
+ pointer-events: none;
62
+ }
63
+
64
+
65
+ .ProseMirror-textblock-dropdown {
66
+ min-width: 3em;
67
+ }
68
+
69
+ .ProseMirror-menu {
70
+ margin: 0 -4px;
71
+ line-height: 1;
72
+ }
73
+
74
+ .ProseMirror-tooltip .ProseMirror-menu {
75
+ width: -webkit-fit-content;
76
+ width: fit-content;
77
+ white-space: pre;
78
+ }
79
+
80
+ .ProseMirror-menuitem {
81
+ margin-right: 3px;
82
+ display: inline-block;
83
+ }
84
+
85
+ .ProseMirror-menuseparator {
86
+ border-right: 1px solid $pm-grey-3;
87
+ margin-right: 3px;
88
+ }
89
+
90
+ .ProseMirror-menu-dropdown, .ProseMirror-menu-dropdown-menu {
91
+ font-size: 90%;
92
+ white-space: nowrap;
93
+ }
94
+
95
+ .ProseMirror-menu-dropdown {
96
+ vertical-align: 1px;
97
+ cursor: pointer;
98
+ }
99
+
100
+ .ProseMirror-menu-dropdown-wrap {
101
+ padding: 1px 14px 1px 4px;
102
+ display: inline-block;
103
+ position: relative;
104
+ }
105
+
106
+ .ProseMirror-menu-dropdown:after {
107
+ content: "";
108
+ border-left: 4px solid transparent;
109
+ border-right: 4px solid transparent;
110
+ border-top: 4px solid currentColor;
111
+ opacity: .6;
112
+ position: absolute;
113
+ right: 2px;
114
+ top: calc(50% - 2px);
115
+ }
116
+
117
+ .ProseMirror-menu-dropdown-menu, .ProseMirror-menu-submenu {
118
+ position: absolute;
119
+ background: white;
120
+ color: $pm-grey-5;
121
+ border: 1px solid #aaa;
122
+ padding: 2px;
123
+ }
124
+
125
+ .ProseMirror-menu-dropdown-menu {
126
+ z-index: 15;
127
+ min-width: 6em;
128
+ }
129
+
130
+ .ProseMirror-menu-dropdown-item {
131
+ cursor: pointer;
132
+ padding: 2px 8px 2px 4px;
133
+ }
134
+
135
+ .ProseMirror-menu-dropdown-item:hover {
136
+ background: $pm-grey-1;
137
+ }
138
+
139
+ .ProseMirror-menu-submenu-wrap {
140
+ position: relative;
141
+ margin-right: -4px;
142
+ }
143
+
144
+ .ProseMirror-menu-submenu-label:after {
145
+ content: "";
146
+ border-top: 4px solid transparent;
147
+ border-bottom: 4px solid transparent;
148
+ border-left: 4px solid currentColor;
149
+ opacity: .6;
150
+ position: absolute;
151
+ right: 4px;
152
+ top: calc(50% - 4px);
153
+ }
154
+
155
+ .ProseMirror-menu-submenu {
156
+ display: none;
157
+ min-width: 4em;
158
+ left: 100%;
159
+ top: -3px;
160
+ }
161
+
162
+ .ProseMirror-menu-active {
163
+ background: $pm-grey-2;
164
+ border-radius: 4px;
165
+ }
166
+
167
+ .ProseMirror-menu-active {
168
+ background: $pm-grey-2;
169
+ border-radius: 4px;
170
+ }
171
+
172
+ .ProseMirror-menu-disabled {
173
+ opacity: .3;
174
+ }
175
+
176
+ .ProseMirror-menu-submenu-wrap:hover .ProseMirror-menu-submenu, .ProseMirror-menu-submenu-wrap-active .ProseMirror-menu-submenu {
177
+ display: block;
178
+ }
179
+
180
+ .ProseMirror-menubar {
181
+ border-top-left-radius: inherit;
182
+ border-top-right-radius: inherit;
183
+ position: relative;
184
+ min-height: 1em;
185
+ color: $pm-grey-5;
186
+ padding: 1px 6px;
187
+ top: 0; left: 0; right: 0;
188
+ border-bottom: 1px solid silver;
189
+ background: white;
190
+ z-index: 10;
191
+ -moz-box-sizing: border-box;
192
+ box-sizing: border-box;
193
+ overflow: visible;
194
+ }
195
+
196
+ .ProseMirror-icon {
197
+ display: inline-block;
198
+ line-height: .8;
199
+ vertical-align: -2px; /* Compensate for padding */
200
+ padding: 2px 8px;
201
+ cursor: pointer;
202
+ }
203
+
204
+ .ProseMirror-icon svg {
205
+ fill: currentColor;
206
+ height: 1em;
207
+ }
208
+
209
+ .ProseMirror-icon span {
210
+ vertical-align: text-top;
211
+ }
212
+
213
+
214
+
215
+ /* Add space around the hr to make clicking it easier */
216
+
217
+ .ProseMirror-example-setup-style hr {
218
+ position: relative;
219
+ height: 6px;
220
+ border: none;
221
+ }
222
+
223
+ .ProseMirror-example-setup-style hr:after {
224
+ content: "";
225
+ position: absolute;
226
+ left: 10px;
227
+ right: 10px;
228
+ top: 2px;
229
+ border-top: 2px solid silver;
230
+ }
231
+
232
+ .ProseMirror-example-setup-style img {
233
+ cursor: default;
234
+ }
235
+
236
+ .ProseMirror-example-setup-style table {
237
+ border-collapse: collapse;
238
+ }
239
+
240
+ .ProseMirror-example-setup-style td {
241
+ vertical-align: top;
242
+ border: 1px solid $pm-grey-3;
243
+ padding: 3px 5px;
244
+ }
245
+
246
+ .ProseMirror-prompt {
247
+ background: white;
248
+ padding: 5px 10px 5px 15px;
249
+ border: 1px solid silver;
250
+ position: fixed;
251
+ border-radius: 3px;
252
+ z-index: 11;
253
+ box-shadow: -.5px 2px 5px rgba(0, 0, 0, .2);
254
+ }
255
+
256
+ .ProseMirror-prompt h5 {
257
+ margin: 0;
258
+ font-weight: normal;
259
+ font-size: 100%;
260
+ color: #444;
261
+ }
262
+
263
+ .ProseMirror-prompt input[type="text"],
264
+ .ProseMirror-prompt textarea {
265
+ background: $pm-grey-2;
266
+ border: none;
267
+ outline: none;
268
+ }
269
+
270
+ .ProseMirror-prompt input[type="text"] {
271
+ padding: 0 4px;
272
+ }
273
+
274
+ .ProseMirror-prompt-close {
275
+ position: absolute;
276
+ left: 2px; top: 1px;
277
+ color: $pm-grey-5;
278
+ border: none; background: transparent; padding: 0;
279
+ }
280
+
281
+ .ProseMirror-prompt-close:after {
282
+ content: "✕";
283
+ font-size: 12px;
284
+ }
285
+
286
+ .ProseMirror-invalid {
287
+ background: $pm-yellow-2;
288
+ border: 1px solid $pm-yellow-1;
289
+ border-radius: 4px;
290
+ padding: 5px 10px;
291
+ position: absolute;
292
+ min-width: 10em;
293
+ }
294
+
295
+ .ProseMirror-prompt-buttons {
296
+ margin-top: 5px;
297
+ display: none;
298
+ }
@@ -0,0 +1,8 @@
1
+
2
+ format :html do
3
+ def prosemirror_editor_input
4
+ wrap_with :div, id: unique_id, class: "prosemirror-editor" do
5
+ hidden_field :content, class: "d0-card-content", value: card.content
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ include_set Abstract::CodeFile
2
+
3
+ Self::ScriptMods.add_item :script_prosemirror
4
+ Self::InputOptions.add_to_basket :options, "prosemirror editor"
@@ -0,0 +1,5 @@
1
+ include_set Abstract::CodeFile
2
+
3
+ Self::ScriptEditors.add_item :script_prosemirror_config
4
+ All::Head::HtmlFormat.add_to_basket :mod_js_config,
5
+ [:prose_mirror, "setProseMirrorConfig"]
@@ -0,0 +1,3 @@
1
+ include_set Abstract::CodeFile
2
+
3
+ Self::StyleMods.add_item :style_prosemirror
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: card-mod-prosemirror_editor
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Ethan McCutchen
8
+ - Philipp Kühl
9
+ - Gerry Gleason
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2020-09-19 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: card-mod-edit
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '='
20
+ - !ruby/object:Gem::Version
21
+ version: '0.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '='
27
+ - !ruby/object:Gem::Version
28
+ version: '0.1'
29
+ description: ''
30
+ email:
31
+ - info@decko.org
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - db/migrate_core_cards/20160804112548_add_prosemirror_cards.rb
37
+ - lib/javascript/script_prosemirror.js
38
+ - lib/javascript/script_prosemirror_config.js.coffee
39
+ - lib/stylesheets/style_prosemirror.scss
40
+ - set/all/prosemirror_editor.rb
41
+ - set/self/script_prosemirror.rb
42
+ - set/self/script_prosemirror_config.rb
43
+ - set/self/style_prosemirror.rb
44
+ homepage: http://decko.org
45
+ licenses:
46
+ - GPL-2.0
47
+ - GPL-3.0
48
+ metadata:
49
+ card-mod: prosemirror_editor
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: 2.3.0
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubygems_version: 3.0.3
66
+ signing_key:
67
+ specification_version: 4
68
+ summary: Calendar editor
69
+ test_files: []