@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 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
- * **editable-html:** add refs for editors, fix propTypes warnings for PD-1230 ([c6e3a2a](https://github.com/pie-framework/pie-lib/commit/c6e3a2a))
46
- * **editable-html:** Updated serialization PD-859 ([5f30897](https://github.com/pie-framework/pie-lib/commit/5f30897))
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
- * **editable-html:** add prop that allows editable-html fields to be validated PD-601 ([2fe2b9b](https://github.com/pie-framework/pie-lib/commit/2fe2b9b))
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
- * **editable-html:** Fixed error checking makes it difficult to type a URL - PD-1082 ([42c5ad3](https://github.com/pie-framework/pie-lib/commit/42c5ad3))
71
- * **editable-html:** insert video should not accept audio and vice versa PD-832 ([4e1e0a3](https://github.com/pie-framework/pie-lib/commit/4e1e0a3))
72
- * **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))
73
- * **editable-html:** Text edits will remain when resize window - PD-356 ([c06caaf](https://github.com/pie-framework/pie-lib/commit/c06caaf))
74
- * **inline-dropdown:** Called onBlur on editable-html - PD-294 ([437ef1d](https://github.com/pie-framework/pie-lib/commit/437ef1d))
75
- * **multi-trait-rubric:** Added right and left alignment for the toolbar ([f3def8b](https://github.com/pie-framework/pie-lib/commit/f3def8b))
76
- * **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))
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
- * **editable-html:** custom key fix for math keypad - PD-388 ([adba7f0](https://github.com/pie-framework/pie-lib/commit/adba7f0))
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
- * **editable-html:** add delete button for response area PD-778 ([234ba06](https://github.com/pie-framework/pie-lib/commit/234ba06))
147
- * **editable-html:** add min and max height to fix PD-694 ([955db39](https://github.com/pie-framework/pie-lib/commit/955db39))
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
- * demo ([affa119](https://github.com/pie-framework/pie-lib/commit/affa119))
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
- * **editable-html:** remove Code plugin - PD-463 ([d830231](https://github.com/pie-framework/pie-lib/commit/d830231))
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
- * 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))
229
- * 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))
230
- * 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))
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
- * **editable-html:** add better math keypad support - PD-355 ([bc4e586](https://github.com/pie-framework/pie-lib/commit/bc4e586))
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
- * **media:** fixed design and some warnings ([df7d84d](https://github.com/pie-framework/pie-lib/commit/df7d84d))
255
- * **media:** implemented editing functionality plus some error some more handlng ([66732a3](https://github.com/pie-framework/pie-lib/commit/66732a3))
256
- * **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))
257
- * **media:** made sure width and height are used, and toolbar is relative positioned ([9061067](https://github.com/pie-framework/pie-lib/commit/9061067))
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
- * missing dependency ([86b18d2](https://github.com/pie-framework/pie-lib/commit/86b18d2))
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
- var handleDomBlur = function handleDomBlur(e) {
235
- editorDOM.removeEventListener('blur', handleDomBlur);
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 more changes get through.
354
- * The issues seem to be related to the promises in onBlur/onFocus. But removing these brings it's own problems.
355
- * 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.
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
  },