@pie-lib/editable-html 7.17.3 → 7.17.4-next.114
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.
- package/CHANGELOG.json +45 -0
- package/CHANGELOG.md +24 -135
- package/lib/editor.js +35 -12
- package/lib/editor.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +1 -1
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +36 -7
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/index.js +1 -1
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/table/index.js +51 -5
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +4 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +6 -2
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/serialization.js +2 -1
- package/lib/serialization.js.map +1 -1
- package/package.json +2 -2
- package/src/editor.jsx +37 -11
- package/src/plugins/media/media-dialog.js +1 -1
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +28 -1
- package/src/plugins/respArea/index.jsx +1 -1
- package/src/plugins/table/index.jsx +47 -5
- package/src/plugins/toolbar/editor-and-toolbar.jsx +4 -1
- package/src/plugins/toolbar/toolbar.jsx +5 -2
- package/src/serialization.jsx +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -3158,5 +3158,50 @@
|
|
|
3158
3158
|
"committerDate": "2021-08-12 13:40:51 +0300",
|
|
3159
3159
|
"isTagged": true,
|
|
3160
3160
|
"tag": "@pie-lib/editable-html@7.17.3"
|
|
3161
|
+
},
|
|
3162
|
+
{
|
|
3163
|
+
"type": "fix",
|
|
3164
|
+
"scope": "editor",
|
|
3165
|
+
"subject": "made sure that if the editor loses focus, the onBlur function is called only if the focus is still not inside the dom element [PD-1126]",
|
|
3166
|
+
"merge": null,
|
|
3167
|
+
"header": "fix(editor): made sure that if the editor loses focus, the onBlur function is called only if the focus is still not inside the dom element [PD-1126]",
|
|
3168
|
+
"body": null,
|
|
3169
|
+
"footer": null,
|
|
3170
|
+
"notes": [],
|
|
3171
|
+
"hash": "e74f00a7949ab1ab993fb618d087f6156ab0e67f",
|
|
3172
|
+
"gitTags": " (origin/fix/editable-html-dom-blur)",
|
|
3173
|
+
"committerDate": "2021-09-20 11:10:47 +0300",
|
|
3174
|
+
"isTagged": true,
|
|
3175
|
+
"tag": "@pie-lib/editable-html@7.17.8"
|
|
3176
|
+
},
|
|
3177
|
+
{
|
|
3178
|
+
"type": "fix",
|
|
3179
|
+
"scope": "editor",
|
|
3180
|
+
"subject": "used dom refs in order to check if the editor is still in focus [PD-1126]",
|
|
3181
|
+
"merge": null,
|
|
3182
|
+
"header": "fix(editor): used dom refs in order to check if the editor is still in focus [PD-1126]",
|
|
3183
|
+
"body": null,
|
|
3184
|
+
"footer": null,
|
|
3185
|
+
"notes": [],
|
|
3186
|
+
"hash": "99e0f72de5a208c5760723bad4698b9115ac80e7",
|
|
3187
|
+
"gitTags": " (origin/fix/editable-html-dom-blur-query-fix)",
|
|
3188
|
+
"committerDate": "2021-09-20 13:43:11 +0300",
|
|
3189
|
+
"isTagged": true,
|
|
3190
|
+
"tag": "@pie-lib/editable-html@7.17.9"
|
|
3191
|
+
},
|
|
3192
|
+
{
|
|
3193
|
+
"type": "fix",
|
|
3194
|
+
"scope": "serialization",
|
|
3195
|
+
"subject": "made sure that units are not added to numbered values when they are encountered [PD-722]",
|
|
3196
|
+
"merge": null,
|
|
3197
|
+
"header": "fix(serialization): made sure that units are not added to numbered values when they are encountered [PD-722]",
|
|
3198
|
+
"body": null,
|
|
3199
|
+
"footer": null,
|
|
3200
|
+
"notes": [],
|
|
3201
|
+
"hash": "8d229cf92ce1cf68db194d281803a79c03141d8a",
|
|
3202
|
+
"gitTags": " (origin/fix/PD-722-no-unit-adding)",
|
|
3203
|
+
"committerDate": "2021-09-27 15:01:05 +0300",
|
|
3204
|
+
"isTagged": true,
|
|
3205
|
+
"tag": "@pie-lib/editable-html@7.17.10"
|
|
3161
3206
|
}
|
|
3162
3207
|
]
|
package/CHANGELOG.md
CHANGED
|
@@ -39,254 +39,143 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
39
39
|
|
|
40
40
|
# [7.17.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.19...@pie-lib/editable-html@7.17.0) (2021-07-23)
|
|
41
41
|
|
|
42
|
-
|
|
43
42
|
### Bug Fixes
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
- **editable-html:** add refs for editors, fix propTypes warnings for PD-1230 ([c6e3a2a](https://github.com/pie-framework/pie-lib/commit/c6e3a2a))
|
|
45
|
+
- **editable-html:** Updated serialization PD-859 ([5f30897](https://github.com/pie-framework/pie-lib/commit/5f30897))
|
|
48
46
|
|
|
49
47
|
### Features
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
- **editable-html:** add prop that allows editable-html fields to be validated PD-601 ([2fe2b9b](https://github.com/pie-framework/pie-lib/commit/2fe2b9b))
|
|
56
50
|
|
|
57
51
|
## [7.16.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.17...@pie-lib/editable-html@7.16.19) (2021-06-25)
|
|
58
52
|
|
|
59
53
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
60
54
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
55
|
## [7.16.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.16...@pie-lib/editable-html@7.16.17) (2021-06-25)
|
|
66
56
|
|
|
67
|
-
|
|
68
57
|
### Bug Fixes
|
|
69
58
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
59
|
+
- **editable-html:** Fixed error checking makes it difficult to type a URL - PD-1082 ([42c5ad3](https://github.com/pie-framework/pie-lib/commit/42c5ad3))
|
|
60
|
+
- **editable-html:** insert video should not accept audio and vice versa PD-832 ([4e1e0a3](https://github.com/pie-framework/pie-lib/commit/4e1e0a3))
|
|
61
|
+
- **editable-html:** remove green checkmark next to the delete button on the toolbar PD-1125 ([b2cb463](https://github.com/pie-framework/pie-lib/commit/b2cb463))
|
|
62
|
+
- **editable-html:** Text edits will remain when resize window - PD-356 ([c06caaf](https://github.com/pie-framework/pie-lib/commit/c06caaf))
|
|
63
|
+
- **inline-dropdown:** Called onBlur on editable-html - PD-294 ([437ef1d](https://github.com/pie-framework/pie-lib/commit/437ef1d))
|
|
64
|
+
- **multi-trait-rubric:** Added right and left alignment for the toolbar ([f3def8b](https://github.com/pie-framework/pie-lib/commit/f3def8b))
|
|
65
|
+
- **table:** made sure table block is not the latest node in the document [PD-341](<[90bb47a](https://github.com/pie-framework/pie-lib/commit/90bb47a)>)
|
|
81
66
|
|
|
82
67
|
## [7.16.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.15...@pie-lib/editable-html@7.16.16) (2021-04-06)
|
|
83
68
|
|
|
84
69
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
85
70
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
71
|
## [7.16.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.14...@pie-lib/editable-html@7.16.15) (2021-04-02)
|
|
91
72
|
|
|
92
73
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
93
74
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
75
|
## [7.16.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.13...@pie-lib/editable-html@7.16.14) (2021-03-22)
|
|
99
76
|
|
|
100
|
-
|
|
101
77
|
### Bug Fixes
|
|
102
78
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
79
|
+
- **editable-html:** custom key fix for math keypad - PD-388 ([adba7f0](https://github.com/pie-framework/pie-lib/commit/adba7f0))
|
|
108
80
|
|
|
109
81
|
## [7.16.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.12...@pie-lib/editable-html@7.16.13) (2021-03-15)
|
|
110
82
|
|
|
111
83
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
112
84
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
85
|
## [7.16.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.11...@pie-lib/editable-html@7.16.12) (2021-03-03)
|
|
118
86
|
|
|
119
87
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
120
88
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
89
|
## [7.16.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.10...@pie-lib/editable-html@7.16.11) (2021-03-02)
|
|
126
90
|
|
|
127
91
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
128
92
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
93
|
## [7.16.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.9...@pie-lib/editable-html@7.16.10) (2021-03-01)
|
|
134
94
|
|
|
135
95
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
136
96
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
97
|
## [7.16.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.8...@pie-lib/editable-html@7.16.9) (2021-03-01)
|
|
142
98
|
|
|
143
|
-
|
|
144
99
|
### Bug Fixes
|
|
145
100
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
101
|
+
- **editable-html:** add delete button for response area PD-778 ([234ba06](https://github.com/pie-framework/pie-lib/commit/234ba06))
|
|
102
|
+
- **editable-html:** add min and max height to fix PD-694 ([955db39](https://github.com/pie-framework/pie-lib/commit/955db39))
|
|
152
103
|
|
|
153
104
|
## [7.16.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.7...@pie-lib/editable-html@7.16.8) (2021-02-15)
|
|
154
105
|
|
|
155
|
-
|
|
156
106
|
### Bug Fixes
|
|
157
107
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
108
|
+
- demo ([affa119](https://github.com/pie-framework/pie-lib/commit/affa119))
|
|
163
109
|
|
|
164
110
|
## [7.16.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.5...@pie-lib/editable-html@7.16.7) (2021-02-15)
|
|
165
111
|
|
|
166
112
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
167
113
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
114
|
## [7.16.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.4...@pie-lib/editable-html@7.16.5) (2021-02-15)
|
|
173
115
|
|
|
174
116
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
175
117
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
118
|
## [7.16.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.3...@pie-lib/editable-html@7.16.4) (2021-02-04)
|
|
181
119
|
|
|
182
120
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
183
121
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
122
|
## [7.16.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.2...@pie-lib/editable-html@7.16.3) (2021-02-01)
|
|
189
123
|
|
|
190
124
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
191
125
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
126
|
## [7.16.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.1...@pie-lib/editable-html@7.16.2) (2021-01-28)
|
|
197
127
|
|
|
198
128
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
199
129
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
130
|
## [7.16.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.16.0...@pie-lib/editable-html@7.16.1) (2021-01-28)
|
|
205
131
|
|
|
206
132
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
207
133
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
134
|
# [7.16.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.15.0...@pie-lib/editable-html@7.16.0) (2021-01-25)
|
|
213
135
|
|
|
214
|
-
|
|
215
136
|
### Features
|
|
216
137
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
138
|
+
- **editable-html:** remove Code plugin - PD-463 ([d830231](https://github.com/pie-framework/pie-lib/commit/d830231))
|
|
222
139
|
|
|
223
140
|
# [7.15.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.14.1...@pie-lib/editable-html@7.15.0) (2021-01-11)
|
|
224
141
|
|
|
225
|
-
|
|
226
142
|
### Bug Fixes
|
|
227
143
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
144
|
+
- Added fix for text wrapping into next line and also font style is overrided by parent styling ([60ff10f](https://github.com/pie-framework/pie-lib/commit/60ff10f))
|
|
145
|
+
- Due to resize of window, editor text gets reverted to previous state value. PD-356 ([c710829](https://github.com/pie-framework/pie-lib/commit/c710829))
|
|
146
|
+
- Due to resize of window, editor text gets reverted to previous state value. PD-356 ([9f6b988](https://github.com/pie-framework/pie-lib/commit/9f6b988))
|
|
232
147
|
|
|
233
148
|
### Features
|
|
234
149
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
150
|
+
- **editable-html:** add better math keypad support - PD-355 ([bc4e586](https://github.com/pie-framework/pie-lib/commit/bc4e586))
|
|
240
151
|
|
|
241
152
|
## [7.14.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.14.0...@pie-lib/editable-html@7.14.1) (2020-11-09)
|
|
242
153
|
|
|
243
154
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
244
155
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
156
|
# [7.14.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.13.5...@pie-lib/editable-html@7.14.0) (2020-11-07)
|
|
250
157
|
|
|
251
|
-
|
|
252
158
|
### Features
|
|
253
159
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
160
|
+
- **media:** fixed design and some warnings ([df7d84d](https://github.com/pie-framework/pie-lib/commit/df7d84d))
|
|
161
|
+
- **media:** implemented editing functionality plus some error some more handlng ([66732a3](https://github.com/pie-framework/pie-lib/commit/66732a3))
|
|
162
|
+
- **media:** implemented some error handling and fixed a couple of bugs with inserting the media embed [pd501](<[1616ba2](https://github.com/pie-framework/pie-lib/commit/1616ba2)>)
|
|
163
|
+
- **media:** made sure width and height are used, and toolbar is relative positioned ([9061067](https://github.com/pie-framework/pie-lib/commit/9061067))
|
|
262
164
|
|
|
263
165
|
## [7.13.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.13.4...@pie-lib/editable-html@7.13.5) (2020-10-30)
|
|
264
166
|
|
|
265
|
-
|
|
266
167
|
### Bug Fixes
|
|
267
168
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
169
|
+
- missing dependency ([86b18d2](https://github.com/pie-framework/pie-lib/commit/86b18d2))
|
|
273
170
|
|
|
274
171
|
## [7.13.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.13.3...@pie-lib/editable-html@7.13.4) (2020-10-28)
|
|
275
172
|
|
|
276
173
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
277
174
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
175
|
## [7.13.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.13.2...@pie-lib/editable-html@7.13.3) (2020-10-26)
|
|
283
176
|
|
|
284
177
|
**Note:** Version bump only for package @pie-lib/editable-html
|
|
285
178
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
179
|
## [7.13.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html@7.13.1...@pie-lib/editable-html@7.13.2) (2020-10-26)
|
|
291
180
|
|
|
292
181
|
**Note:** Version bump only for package @pie-lib/editable-html
|
package/lib/editor.js
CHANGED
|
@@ -196,6 +196,26 @@ function (_React$Component) {
|
|
|
196
196
|
});
|
|
197
197
|
});
|
|
198
198
|
|
|
199
|
+
_defineProperty(_assertThisInitialized(_this), "handleDomBlur", function (e) {
|
|
200
|
+
var editorDOM = document.querySelector("[data-key=\"".concat(_this.state.value.document.key, "\"]"));
|
|
201
|
+
setTimeout(function () {
|
|
202
|
+
if (!_this.wrapperRef) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
var editorElement = !editorDOM || document.activeElement.closest("[class*=\"".concat(editorDOM.className, "\"]"));
|
|
207
|
+
var toolbarElement = !_this.toolbarRef || document.activeElement.closest("[class*=\"".concat(_this.toolbarRef.className, "\"]"));
|
|
208
|
+
|
|
209
|
+
var isInCurrentComponent = _this.wrapperRef.contains(editorElement) || _this.wrapperRef.contains(toolbarElement);
|
|
210
|
+
|
|
211
|
+
if (!isInCurrentComponent) {
|
|
212
|
+
editorDOM.removeEventListener('blur', _this.handleDomBlur);
|
|
213
|
+
|
|
214
|
+
_this.onBlur(e);
|
|
215
|
+
}
|
|
216
|
+
}, 50);
|
|
217
|
+
});
|
|
218
|
+
|
|
199
219
|
_defineProperty(_assertThisInitialized(_this), "onFocus", function () {
|
|
200
220
|
return new Promise(function (resolve) {
|
|
201
221
|
var editorDOM = document.querySelector("[data-key=\"".concat(_this.state.value.document.key, "\"]"));
|
|
@@ -231,13 +251,8 @@ function (_React$Component) {
|
|
|
231
251
|
|
|
232
252
|
|
|
233
253
|
if (editorDOM === document.activeElement) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
_this.onBlur(e);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
editorDOM.addEventListener('blur', handleDomBlur);
|
|
254
|
+
editorDOM.removeEventListener('blur', _this.handleDomBlur);
|
|
255
|
+
editorDOM.addEventListener('blur', _this.handleDomBlur);
|
|
241
256
|
}
|
|
242
257
|
|
|
243
258
|
_this.stashValue();
|
|
@@ -350,9 +365,10 @@ function (_React$Component) {
|
|
|
350
365
|
* HACK ALERT: We should be calling setState here and storing the change data:
|
|
351
366
|
*
|
|
352
367
|
* <code>this.setState({changeData: { key, data}})</code>
|
|
353
|
-
* However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no
|
|
354
|
-
* The issues seem to be related to the promises in onBlur/onFocus. But removing these
|
|
355
|
-
* A major clean up is planned for this component so I've decided to temporarily settle
|
|
368
|
+
* However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no
|
|
369
|
+
* more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these
|
|
370
|
+
* brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle
|
|
371
|
+
* on this hack rather than spend more time on this.
|
|
356
372
|
*/
|
|
357
373
|
// Uncomment this line to see the bug described above.
|
|
358
374
|
// this.setState({changeData: {key, data}})
|
|
@@ -578,6 +594,11 @@ function (_React$Component) {
|
|
|
578
594
|
ref: function ref(r) {
|
|
579
595
|
return _this3.editor = r && _this3.props.editorRef(r);
|
|
580
596
|
},
|
|
597
|
+
toolbarRef: function toolbarRef(r) {
|
|
598
|
+
if (r) {
|
|
599
|
+
_this3.toolbarRef = r;
|
|
600
|
+
}
|
|
601
|
+
},
|
|
581
602
|
value: value,
|
|
582
603
|
focus: this.focus,
|
|
583
604
|
onKeyDown: onKeyDown,
|
|
@@ -674,7 +695,7 @@ var styles = {
|
|
|
674
695
|
color: _renderUi.color.text(),
|
|
675
696
|
backgroundColor: _renderUi.color.background()
|
|
676
697
|
},
|
|
677
|
-
'& tr': {
|
|
698
|
+
'& table:not([border="1"]) tr': {
|
|
678
699
|
borderTop: '1px solid #dfe2e5' // TODO perhaps secondary color for background, for now disable
|
|
679
700
|
// '&:nth-child(2n)': {
|
|
680
701
|
// backgroundColor: '#f6f8fa'
|
|
@@ -682,9 +703,11 @@ var styles = {
|
|
|
682
703
|
|
|
683
704
|
},
|
|
684
705
|
'& td, th': {
|
|
685
|
-
border: '1px solid #dfe2e5',
|
|
686
706
|
padding: '.6em 1em',
|
|
687
707
|
textAlign: 'center'
|
|
708
|
+
},
|
|
709
|
+
'& table:not([border="1"]) td, th': {
|
|
710
|
+
border: '1px solid #dfe2e5'
|
|
688
711
|
}
|
|
689
712
|
},
|
|
690
713
|
toolbarOnTop: {
|
package/lib/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/editor.jsx"],"names":["log","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","createToolbarOpts","toolbarOpts","Editor","props","e","relatedTarget","target","node","state","value","setState","focusedNode","resetValue","stashedValue","stashValue","editor","change","c","collapseToStartOf","selectedNode","onChange","resolve","nonEmpty","toolbarInFocus","blur","startText","text","length","then","onEditingDone","event","Promise","handleBlur","bind","onBlur","editorDOM","document","querySelector","key","activeElement","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","handleDomBlur","removeEventListener","addEventListener","onFocus","force","stopReset","plugins","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","setTimeout","done","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","type","parent","getParent","Block","pos","focus","onResize","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","table","responseArea","responseAreaProps","options","respAreaToolbar","media","createChange","onRef","window","autoFocus","nextProps","newToolbarOpts","equals","width","minHeight","height","maxHeight","valueToSize","disabled","highlightShape","classes","className","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","ref","wrapperRef","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","oneOfType","string","number","any","shape","oneOf","arrayOf","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","border","padding","textAlign","marginTop"],"mappings":"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","sourcesContent":["import { Editor as SlateEditor, findNode } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onDelete: PropTypes.func\n }),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n toolbarOpts: defaultToolbarOpts,\n onKeyDown: () => {}\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n this.props.imageSupport &&\n this.props.imageSupport.delete &&\n ((src, done) => {\n this.props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n this.props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n this.props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: props.responseAreaProps && props.responseAreaProps.type,\n options: props.responseAreaProps && props.responseAreaProps.options,\n respAreaToolbar: props.responseAreaProps && props.responseAreaProps.respAreaToolbar,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n }\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n const handleDomBlur = e => {\n editorDOM.removeEventListener('blur', handleDomBlur);\n this.onBlur(e);\n };\n\n editorDOM.addEventListener('blur', handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n this.setState({ value: change.value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no more changes get through.\n * The issues seem to be related to the promises in onBlur/onFocus. But removing these brings it's own problems.\n * A major clean up is planned for this component so I've decided to temporarily settle on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n className={classes.slateEditor}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n border: '1px solid #dfe2e5',\n padding: '.6em 1em',\n textAlign: 'center'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"file":"editor.js"}
|
|
1
|
+
{"version":3,"sources":["../src/editor.jsx"],"names":["log","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","createToolbarOpts","toolbarOpts","Editor","props","e","relatedTarget","target","node","state","value","setState","focusedNode","resetValue","stashedValue","stashValue","editor","change","c","collapseToStartOf","selectedNode","onChange","resolve","nonEmpty","toolbarInFocus","blur","startText","text","length","then","onEditingDone","event","Promise","handleBlur","bind","onBlur","editorDOM","document","querySelector","key","setTimeout","wrapperRef","editorElement","activeElement","closest","className","toolbarElement","toolbarRef","isInCurrentComponent","contains","removeEventListener","handleDomBlur","__TEMPORARY_CHANGE_DATA","data","domEl","setNodeByKey","addEventListener","onFocus","force","stopReset","plugins","reduce","s","p","isFocused","toObject","newValue","Value","fromJSON","toJSON","done","v","endsWith","undefined","parseInt","isNaN","object","last","nodes","type","parent","getParent","Block","pos","focus","onResize","activePlugins","math","onClick","onMathClick","onPluginFocus","onPluginBlur","image","onDelete","imageSupport","src","insertImageRequested","getHandler","handler","add","toolbar","disableUnderline","autoWidth","autoWidthToolbar","onDone","table","responseArea","responseAreaProps","options","respAreaToolbar","media","createChange","onRef","window","autoFocus","nextProps","newToolbarOpts","equals","width","minHeight","height","maxHeight","valueToSize","disabled","highlightShape","classes","placeholder","pluginProps","onKeyDown","sizeStyle","buildSizeStyle","names","withBg","toolbarOnTop","ref","r","slateEditor","editorRef","normalize","changeData","React","Component","PropTypes","bool","func","isRequired","SlateTypes","oneOfType","string","number","any","shape","oneOf","arrayOf","values","allValid","every","ALL_PLUGINS","includes","Error","join","styles","backgroundColor","fontFamily","tableLayout","borderCollapse","color","background","borderTop","padding","textAlign","border","marginTop"],"mappings":"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","sourcesContent":["import { Editor as SlateEditor, findNode } from 'slate-react';\nimport SlateTypes from 'slate-prop-types';\n\nimport isEqual from 'lodash/isEqual';\nimport * as serialization from './serialization';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Value, Block } from 'slate';\nimport { buildPlugins, ALL_PLUGINS, DEFAULT_PLUGINS } from './plugins';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\n\nexport { ALL_PLUGINS, DEFAULT_PLUGINS, serialization };\n\nconst log = debug('editable-html:editor');\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur'\n};\n\nconst createToolbarOpts = toolbarOpts => {\n return {\n ...defaultToolbarOpts,\n ...toolbarOpts\n };\n};\n\nexport class Editor extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorRef: PropTypes.func.isRequired,\n onRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n focus: PropTypes.func.isRequired,\n value: SlateTypes.value.isRequired,\n imageSupport: PropTypes.object,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classes: PropTypes.object.isRequired,\n highlightShape: PropTypes.bool,\n disabled: PropTypes.bool,\n nonEmpty: PropTypes.bool,\n disableUnderline: PropTypes.bool,\n autoWidthToolbar: PropTypes.bool,\n pluginProps: PropTypes.any,\n placeholder: PropTypes.string,\n responseAreaProps: PropTypes.shape({\n type: PropTypes.oneOf([\n 'explicit-constructed-response',\n 'inline-dropdown',\n 'drag-in-the-blank'\n ]),\n options: PropTypes.object,\n respAreaToolbar: PropTypes.func,\n onDelete: PropTypes.func\n }),\n toolbarOpts: PropTypes.shape({\n position: PropTypes.oneOf(['bottom', 'top']),\n alignment: PropTypes.oneOf(['left', 'right']),\n alwaysVisible: PropTypes.bool,\n showDone: PropTypes.bool,\n doneOn: PropTypes.string\n }),\n activePlugins: PropTypes.arrayOf(values => {\n const allValid = values.every(v => ALL_PLUGINS.includes(v));\n\n return (\n !allValid &&\n new Error(`Invalid values: ${values}, values must be one of [${ALL_PLUGINS.join(',')}]`)\n );\n }),\n className: PropTypes.string\n };\n\n static defaultProps = {\n disableUnderline: true,\n onFocus: () => {},\n onBlur: () => {},\n toolbarOpts: defaultToolbarOpts,\n onKeyDown: () => {}\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n toolbarOpts: createToolbarOpts(props.toolbarOpts)\n };\n\n this.onResize = () => {\n props.onChange(this.state.value, true);\n };\n\n this.plugins = buildPlugins(props.activePlugins, {\n math: {\n onClick: this.onMathClick,\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n image: {\n onDelete:\n this.props.imageSupport &&\n this.props.imageSupport.delete &&\n ((src, done) => {\n this.props.imageSupport.delete(src, e => {\n done(e, this.state.value);\n });\n }),\n insertImageRequested:\n this.props.imageSupport &&\n (getHandler => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(() => this.state.value);\n this.props.imageSupport.add(handler);\n }),\n onFocus: this.onPluginFocus,\n onBlur: this.onPluginBlur\n },\n toolbar: {\n /**\n * To minimize converting html -> state -> html\n * We only emit markup once 'done' is clicked.\n */\n disableUnderline: props.disableUnderline,\n autoWidth: props.autoWidthToolbar,\n onDone: () => {\n const { nonEmpty } = this.props;\n\n log('[onDone]');\n this.setState({ toolbarInFocus: false, focusedNode: null });\n this.editor.blur();\n\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n });\n } else {\n this.onEditingDone();\n }\n }\n },\n table: {\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n responseArea: {\n type: props.responseAreaProps && props.responseAreaProps.type,\n options: props.responseAreaProps && props.responseAreaProps.options,\n respAreaToolbar: props.responseAreaProps && props.responseAreaProps.respAreaToolbar,\n onFocus: () => {\n log('[table:onFocus]...');\n this.onPluginFocus();\n },\n onBlur: () => {\n log('[table:onBlur]...');\n this.onPluginBlur();\n }\n },\n media: {\n focus: this.focus,\n createChange: () => this.state.value.change(),\n onChange: this.onChange\n }\n });\n }\n\n componentDidMount() {\n // onRef is needed to get the ref of the component because we export it using withStyles\n this.props.onRef(this);\n\n window.addEventListener('resize', this.onResize);\n\n if (this.editor && this.props.autoFocus) {\n Promise.resolve().then(() => {\n if (this.editor) {\n const editorDOM = document.querySelector(\n `[data-key=\"${this.editor.value.document.key}\"]`\n );\n\n this.editor.focus();\n\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const { toolbarOpts } = this.state;\n const newToolbarOpts = createToolbarOpts(nextProps.toolbarOpts);\n\n if (!isEqual(newToolbarOpts, toolbarOpts)) {\n this.setState({\n toolbarOpts: newToolbarOpts\n });\n }\n }\n\n onPluginBlur = e => {\n log('[onPluginBlur]', e && e.relatedTarget);\n const target = e && e.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n log('[onPluginBlur] node: ', node);\n this.setState({ focusedNode: node }, () => {\n this.resetValue();\n });\n };\n\n onPluginFocus = e => {\n log('[onPluginFocus]', e && e.target);\n const target = e && e.target;\n if (target) {\n const node = findNode(target, this.state.value);\n log('[onPluginFocus] node: ', node);\n\n const stashedValue = this.state.stashedValue || this.state.value;\n this.setState({ focusedNode: node, stashedValue });\n } else {\n this.setState({ focusedNode: null });\n }\n this.stashValue();\n };\n\n onMathClick = node => {\n this.editor.change(c => c.collapseToStartOf(node));\n this.setState({ selectedNode: node });\n };\n\n onEditingDone = () => {\n log('[onEditingDone]');\n this.setState({ stashedValue: null, focusedNode: null });\n log('[onEditingDone] value: ', this.state.value);\n this.props.onChange(this.state.value, true);\n };\n\n /**\n * Remove onResize event listener\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n // Allowing time for onChange to take effect if it is called\n handleBlur = resolve => {\n const { nonEmpty } = this.props;\n const {\n toolbarOpts: { doneOn }\n } = this.state;\n\n this.setState({ toolbarInFocus: false, focusedNode: null });\n\n if (this.editor) {\n this.editor.blur();\n }\n\n if (doneOn === 'blur') {\n if (nonEmpty && this.state.value.startText.text.length === 0) {\n this.resetValue(true).then(() => {\n this.onEditingDone();\n resolve();\n });\n } else {\n this.onEditingDone();\n resolve();\n }\n }\n };\n\n onBlur = event => {\n log('[onBlur]');\n const target = event.relatedTarget;\n\n const node = target ? findNode(target, this.state.value) : null;\n\n log('[onBlur] node: ', node);\n\n return new Promise(resolve => {\n this.setState({ focusedNode: node }, this.handleBlur.bind(this, resolve));\n this.props.onBlur(event);\n });\n };\n\n handleDomBlur = e => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n setTimeout(() => {\n if (!this.wrapperRef) {\n return;\n }\n\n const editorElement =\n !editorDOM || document.activeElement.closest(`[class*=\"${editorDOM.className}\"]`);\n const toolbarElement =\n !this.toolbarRef || document.activeElement.closest(`[class*=\"${this.toolbarRef.className}\"]`);\n const isInCurrentComponent =\n this.wrapperRef.contains(editorElement) || this.wrapperRef.contains(toolbarElement);\n\n if (!isInCurrentComponent) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n this.onBlur(e);\n }\n }, 50);\n };\n\n /*\n * Needs to be wrapped otherwise it causes issues because of race conditions\n * Known issue for slatejs. See: https://github.com/ianstormtaylor/slate/issues/2097\n * Using timeout I wasn't able to test this\n *\n * Note: The use of promises has been causing issues with MathQuill\n * */\n onFocus = () =>\n new Promise(resolve => {\n const editorDOM = document.querySelector(`[data-key=\"${this.state.value.document.key}\"]`);\n\n log('[onFocus]', document.activeElement);\n\n /**\n * This is a temporary hack - @see changeData below for some more information.\n */\n if (this.__TEMPORARY_CHANGE_DATA) {\n const { key, data } = this.__TEMPORARY_CHANGE_DATA;\n const domEl = document.querySelector(`[data-key=\"${key}\"]`);\n\n if (domEl) {\n let change = this.state.value.change().setNodeByKey(key, { data });\n\n this.setState({ value: change.value }, () => {\n this.__TEMPORARY_CHANGE_DATA = null;\n });\n }\n }\n\n /**\n * This is needed just in case the browser decides to make the editor\n * lose focus without triggering the onBlur event (can happen in a few cases).\n * This will also trigger onBlur if the user clicks outside of the page when the editor\n * is focused.\n */\n if (editorDOM === document.activeElement) {\n editorDOM.removeEventListener('blur', this.handleDomBlur);\n editorDOM.addEventListener('blur', this.handleDomBlur);\n }\n\n this.stashValue();\n this.props.onFocus();\n\n resolve();\n });\n\n stashValue = () => {\n log('[stashValue]');\n if (!this.state.stashedValue) {\n this.setState({ stashedValue: this.state.value });\n }\n };\n\n /**\n * Reset the value if the user didn't click done.\n */\n resetValue = force => {\n const { value, focusedNode } = this.state;\n\n const stopReset = this.plugins.reduce((s, p) => {\n return s || (p.stopReset && p.stopReset(this.state.value));\n }, false);\n\n log('[resetValue]', value.isFocused, focusedNode, 'stopReset: ', stopReset);\n if ((this.state.stashedValue && !value.isFocused && !focusedNode && !stopReset) || force) {\n log('[resetValue] resetting...');\n log('stashed', this.state.stashedValue.document.toObject());\n log('current', this.state.value.document.toObject());\n\n const newValue = Value.fromJSON(this.state.stashedValue.toJSON());\n\n log('newValue: ', newValue.document);\n return new Promise(resolve => {\n setTimeout(() => {\n this.setState({ value: newValue, stashedValue: null }, () => {\n log('value now: ', this.state.value.document.toJSON());\n resolve();\n });\n }, 50);\n });\n } else {\n return Promise.resolve({});\n }\n };\n\n onChange = (change, done) => {\n log('[onChange]');\n this.setState({ value: change.value }, () => {\n log('[onChange], call done()');\n\n if (done) {\n done();\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(props) {\n if (!props.value.document.equals(this.props.value.document)) {\n this.setState({\n focus: false,\n value: props.value\n });\n }\n }\n\n valueToSize = v => {\n if (!v) {\n return;\n }\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n } else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw')) {\n return v;\n } else {\n const value = parseInt(v, 10);\n return isNaN(value) ? value : `${value}px`;\n }\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n\n return;\n };\n\n buildSizeStyle() {\n const { width, minHeight, height, maxHeight } = this.props;\n\n return {\n width: this.valueToSize(width),\n height: this.valueToSize(height),\n minHeight: this.valueToSize(minHeight),\n maxHeight: this.valueToSize(maxHeight)\n };\n }\n\n validateNode = node => {\n if (node.object !== 'block') return;\n\n const last = node.nodes.last();\n if (!last) return;\n\n if (last.type !== 'image') return;\n\n log('[validateNode] last is image..');\n\n const parent = last.getParent(last.key);\n const p = Block.getParent(last.key);\n log('[validateNode] parent:', parent, p);\n\n return undefined;\n };\n\n changeData = (key, data) => {\n log('[changeData]. .. ', key, data);\n\n /**\n * HACK ALERT: We should be calling setState here and storing the change data:\n *\n * <code>this.setState({changeData: { key, data}})</code>\n * However this is causing issues with the Mathquill instance. The 'input' event stops firing on the element and no\n * more changes get through. The issues seem to be related to the promises in onBlur/onFocus. But removing these\n * brings it's own problems. A major clean up is planned for this component so I've decided to temporarily settle\n * on this hack rather than spend more time on this.\n */\n\n // Uncomment this line to see the bug described above.\n // this.setState({changeData: {key, data}})\n\n this.__TEMPORARY_CHANGE_DATA = { key, data };\n };\n\n focus = (pos, node) => {\n const position = pos || 'end';\n\n this.props.focus(position, node);\n };\n\n render() {\n const {\n disabled,\n highlightShape,\n classes,\n className,\n placeholder,\n pluginProps,\n onKeyDown\n } = this.props;\n const { value, focusedNode, toolbarOpts } = this.state;\n\n log('[render] value: ', value);\n const sizeStyle = this.buildSizeStyle();\n const names = classNames(\n {\n [classes.withBg]: highlightShape,\n [classes.toolbarOnTop]: toolbarOpts.alwaysVisible && toolbarOpts.position === 'top'\n },\n className\n );\n\n return (\n <div\n ref={ref => (this.wrapperRef = ref)}\n style={{ width: sizeStyle.width }}\n className={names}\n >\n <SlateEditor\n plugins={this.plugins}\n innerRef={r => {\n if (r) {\n this.slateEditor = r;\n }\n }}\n ref={r => (this.editor = r && this.props.editorRef(r))}\n toolbarRef={r => {\n if (r) {\n this.toolbarRef = r;\n }\n }}\n value={value}\n focus={this.focus}\n onKeyDown={onKeyDown}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onEditingDone={this.onEditingDone}\n focusedNode={focusedNode}\n normalize={this.normalize}\n readOnly={disabled}\n className={classes.slateEditor}\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight\n }}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n placeholder={placeholder}\n onDataChange={this.changeData}\n />\n </div>\n );\n }\n}\n\n// TODO color - hardcoded gray background and keypad colors will need to change too\nconst styles = {\n withBg: {\n backgroundColor: 'rgba(0,0,0,0.06)'\n },\n slateEditor: {\n fontFamily: 'Roboto, sans-serif',\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background()\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5'\n // TODO perhaps secondary color for background, for now disable\n // '&:nth-child(2n)': {\n // backgroundColor: '#f6f8fa'\n // }\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center'\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5'\n }\n },\n toolbarOnTop: {\n marginTop: '45px'\n }\n};\n\nexport default withStyles(styles)(Editor);\n"],"file":"editor.js"}
|
|
@@ -398,7 +398,7 @@ function (_React$Component) {
|
|
|
398
398
|
},
|
|
399
399
|
color: "primary"
|
|
400
400
|
}, "Cancel"), _react["default"].createElement(_Button["default"], {
|
|
401
|
-
disabled: invalid || url === null,
|
|
401
|
+
disabled: invalid || url === null || url === undefined,
|
|
402
402
|
onClick: function onClick() {
|
|
403
403
|
return _this2.handleDone(true);
|
|
404
404
|
},
|