@pie-lib/editable-html-tip-tap 1.2.0-next.9 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +176 -0
- package/lib/components/CharacterPicker.js +1 -0
- package/lib/components/CharacterPicker.js.map +1 -1
- package/lib/components/EditableHtml.js +84 -43
- package/lib/components/EditableHtml.js.map +1 -1
- package/lib/components/MenuBar.js +74 -43
- package/lib/components/MenuBar.js.map +1 -1
- package/lib/components/TiptapContainer.js +9 -8
- package/lib/components/TiptapContainer.js.map +1 -1
- package/lib/components/icons/TextAlign.js +2 -2
- package/lib/components/icons/TextAlign.js.map +1 -1
- package/lib/components/image/InsertImageHandler.js +10 -13
- package/lib/components/image/InsertImageHandler.js.map +1 -1
- package/lib/components/media/MediaDialog.js.map +1 -1
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +6 -1
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -1
- package/lib/components/respArea/DragInTheBlank/choice.js +15 -7
- package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
- package/lib/components/respArea/ExplicitConstructedResponse.js +29 -11
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
- package/lib/components/respArea/InlineDropdown.js +35 -6
- package/lib/components/respArea/InlineDropdown.js.map +1 -1
- package/lib/extensions/custom-toolbar-wrapper.js +3 -2
- package/lib/extensions/custom-toolbar-wrapper.js.map +1 -1
- package/lib/extensions/div-node.js +83 -0
- package/lib/extensions/div-node.js.map +1 -0
- package/lib/extensions/ensure-empty-root-div.js +48 -0
- package/lib/extensions/ensure-empty-root-div.js.map +1 -0
- package/lib/extensions/ensure-list-item-content-is-div.js +64 -0
- package/lib/extensions/ensure-list-item-content-is-div.js.map +1 -0
- package/lib/extensions/extended-list-item.js +15 -0
- package/lib/extensions/extended-list-item.js.map +1 -0
- package/lib/extensions/extended-table-cell.js +22 -0
- package/lib/extensions/extended-table-cell.js.map +1 -0
- package/lib/extensions/extended-table.js +50 -1
- package/lib/extensions/extended-table.js.map +1 -1
- package/lib/extensions/image-component.js +102 -51
- package/lib/extensions/image-component.js.map +1 -1
- package/lib/extensions/image.js +51 -2
- package/lib/extensions/image.js.map +1 -1
- package/lib/extensions/math.js +50 -9
- package/lib/extensions/math.js.map +1 -1
- package/lib/extensions/media.js +3 -1
- package/lib/extensions/media.js.map +1 -1
- package/lib/extensions/responseArea.js +12 -7
- package/lib/extensions/responseArea.js.map +1 -1
- package/lib/styles/editorContainerStyles.js +5 -4
- package/lib/styles/editorContainerStyles.js.map +1 -1
- package/lib/utils/helper.js +17 -0
- package/lib/utils/helper.js.map +1 -0
- package/package.json +8 -8
- package/src/__tests__/EditableHtml.test.jsx +90 -7
- package/src/__tests__/index.test.jsx +11 -3
- package/src/components/CharacterPicker.jsx +1 -0
- package/src/components/EditableHtml.jsx +91 -41
- package/src/components/MenuBar.jsx +57 -24
- package/src/components/TiptapContainer.jsx +10 -8
- package/src/components/__tests__/CharacterPicker.test.jsx +22 -0
- package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +55 -12
- package/src/components/__tests__/InlineDropdown.test.jsx +203 -10
- package/src/components/__tests__/InsertImageHandler.test.js +28 -21
- package/src/components/__tests__/MenuBar.test.jsx +32 -0
- package/src/components/icons/TextAlign.jsx +1 -1
- package/src/components/image/InsertImageHandler.js +9 -13
- package/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx +6 -1
- package/src/components/respArea/DragInTheBlank/choice.jsx +32 -4
- package/src/components/respArea/ExplicitConstructedResponse.jsx +33 -10
- package/src/components/respArea/InlineDropdown.jsx +45 -10
- package/src/extensions/__tests__/divNode.test.js +87 -0
- package/src/extensions/__tests__/ensure-empty-root-div.test.js +57 -0
- package/src/extensions/__tests__/ensure-list-item-content-is-div.test.js +44 -0
- package/src/extensions/__tests__/extended-list-item.test.js +13 -0
- package/src/extensions/__tests__/extended-table-cell.test.js +22 -0
- package/src/extensions/__tests__/extended-table.test.js +98 -1
- package/src/extensions/__tests__/image-component.test.jsx +105 -9
- package/src/extensions/__tests__/image.test.js +109 -8
- package/src/extensions/__tests__/math.test.js +348 -0
- package/src/extensions/__tests__/media-node-view.test.jsx +10 -8
- package/src/extensions/__tests__/responseArea.test.js +291 -0
- package/src/extensions/custom-toolbar-wrapper.jsx +2 -2
- package/src/extensions/div-node.js +86 -0
- package/src/extensions/ensure-empty-root-div.js +47 -0
- package/src/extensions/ensure-list-item-content-is-div.js +62 -0
- package/src/extensions/extended-list-item.js +10 -0
- package/src/extensions/extended-table-cell.js +19 -0
- package/src/extensions/extended-table.js +37 -1
- package/src/extensions/image-component.jsx +114 -69
- package/src/extensions/image.js +56 -1
- package/src/extensions/math.js +62 -10
- package/src/extensions/media.js +1 -1
- package/src/extensions/responseArea.js +13 -11
- package/src/styles/editorContainerStyles.js +5 -4
- package/src/utils/helper.js +17 -0
- /package/src/components/media/{MediaDialog.js → MediaDialog.jsx} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,182 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@2.0.0...@pie-lib/editable-html-tip-tap@2.0.1) (2026-04-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-lib/editable-html-tip-tap
|
|
9
|
+
|
|
10
|
+
# [1.2.0-next.36](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.35...@pie-lib/editable-html-tip-tap@1.2.0-next.36) (2026-04-23)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- made sure colspan elements match the number of columns on removing [PIE-168] ([0ee3056](https://github.com/pie-framework/pie-lib/commit/0ee3056f2c00d71eb83ee2f56ad0efb75dc3b21b))
|
|
15
|
+
- made sure custom toolbar is shown for inline dropdown response areas [PIE-130] ([d3cb03d](https://github.com/pie-framework/pie-lib/commit/d3cb03d45eb716d700f1202aa1cc223c169cfde5))
|
|
16
|
+
|
|
17
|
+
# [1.2.0-next.35](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.34...@pie-lib/editable-html-tip-tap@1.2.0-next.35) (2026-04-17)
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- made sure insertImageRequested is called only once [PIE-1229] ([336d38c](https://github.com/pie-framework/pie-lib/commit/336d38cf2e7e45b621b5dd831991017a694ec5cd))
|
|
22
|
+
|
|
23
|
+
# [1.2.0-next.34](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.33...@pie-lib/editable-html-tip-tap@1.2.0-next.34) (2026-04-16)
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- **editable-html-tip-tap:** handle list item to avoid default paragraph wrapping PIE-46 ([9c37dac](https://github.com/pie-framework/pie-lib/commit/9c37dac9d10940f59930d21a135cd991f238d622))
|
|
28
|
+
- streamline beforeEach setup in image component tests ([3d0fc78](https://github.com/pie-framework/pie-lib/commit/3d0fc78b9ceda1664978378ace9f6c3bbd4a2269))
|
|
29
|
+
- tests ([4c96c88](https://github.com/pie-framework/pie-lib/commit/4c96c88b791b10d747453914577178b991753961))
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
- **editable-html-tip-tap:** image -add unique nodeKey attribute for identification PIE-54 ([210c0d5](https://github.com/pie-framework/pie-lib/commit/210c0d5ffda0718b52845b3b4011b98f66b0b547))
|
|
34
|
+
|
|
35
|
+
# [1.2.0-next.33](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.32...@pie-lib/editable-html-tip-tap@1.2.0-next.33) (2026-04-16)
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
- made sure correct reference is sent for insert image handler [PIE-1229][PIE-44] ([8db57c0](https://github.com/pie-framework/pie-lib/commit/8db57c035449b5c630a084211b506d2c85786772))
|
|
40
|
+
|
|
41
|
+
# [1.2.0-next.32](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.31...@pie-lib/editable-html-tip-tap@1.2.0-next.32) (2026-04-16)
|
|
42
|
+
|
|
43
|
+
### Bug Fixes
|
|
44
|
+
|
|
45
|
+
- made sure image handling works properly without losing focus, fix media size problem [PIE-129][PIE-44] ([ad28c81](https://github.com/pie-framework/pie-lib/commit/ad28c816e12d35a59d51bcb03466194c33e3b5dd))
|
|
46
|
+
|
|
47
|
+
# [1.2.0-next.31](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.30...@pie-lib/editable-html-tip-tap@1.2.0-next.31) (2026-04-15)
|
|
48
|
+
|
|
49
|
+
### Bug Fixes
|
|
50
|
+
|
|
51
|
+
- **render-ui/editable-html-tip-tap:** fix disableImageAlignmentButtons prop and fix alignment in PreviewPrompt PIE-45 ([ef87ea4](https://github.com/pie-framework/pie-lib/commit/ef87ea4e4f9343be4779ea370036a556d67c8cb3))
|
|
52
|
+
|
|
53
|
+
# [1.2.0-next.30](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.29...@pie-lib/editable-html-tip-tap@1.2.0-next.30) (2026-04-15)
|
|
54
|
+
|
|
55
|
+
### Features
|
|
56
|
+
|
|
57
|
+
- made sure pasting image works in the editor [PIE-173] ([28c46e5](https://github.com/pie-framework/pie-lib/commit/28c46e5d1ec97fdc2d1b4dd454fe19882dea5125))
|
|
58
|
+
|
|
59
|
+
# [1.2.0-next.29](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.28...@pie-lib/editable-html-tip-tap@1.2.0-next.29) (2026-04-14)
|
|
60
|
+
|
|
61
|
+
### Bug Fixes
|
|
62
|
+
|
|
63
|
+
- **editable-html-tip-tap:** parseHTML as img tag image extension, avoid open upload automatically at mounted PIE-37 ([30bad4e](https://github.com/pie-framework/pie-lib/commit/30bad4ea07c1e4c738534aab115cc16d64195b60))
|
|
64
|
+
|
|
65
|
+
# [1.2.0-next.28](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.27...@pie-lib/editable-html-tip-tap@1.2.0-next.28) (2026-04-13)
|
|
66
|
+
|
|
67
|
+
### Bug Fixes
|
|
68
|
+
|
|
69
|
+
- **image:** remove unwanted change ([04a484f](https://github.com/pie-framework/pie-lib/commit/04a484f395c8a87407a8ad3f0ff99a7c0af0488a))
|
|
70
|
+
- **image:** revert - simplify setImageUploadNode command to directly insert content ([0d4467d](https://github.com/pie-framework/pie-lib/commit/0d4467dd9c29e9c90db6cfbf49f6e68704c1d0a9))
|
|
71
|
+
|
|
72
|
+
# [1.2.0-next.27](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.26...@pie-lib/editable-html-tip-tap@1.2.0-next.27) (2026-04-09)
|
|
73
|
+
|
|
74
|
+
### Bug Fixes
|
|
75
|
+
|
|
76
|
+
- **editable-html-tip-tap:** image-component - fix active style, dragging issues and update image rendering logic PIE-34 ([5588e8b](https://github.com/pie-framework/pie-lib/commit/5588e8b10f61f2936d2356a4b2d403f29d094efa))
|
|
77
|
+
- handle optional chaining and fix test ([c4d4657](https://github.com/pie-framework/pie-lib/commit/c4d4657ed38718142c07ddf2a06225f2a11fd535))
|
|
78
|
+
|
|
79
|
+
# [1.2.0-next.26](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.25...@pie-lib/editable-html-tip-tap@1.2.0-next.26) (2026-04-09)
|
|
80
|
+
|
|
81
|
+
### Bug Fixes
|
|
82
|
+
|
|
83
|
+
- **editable-html-tip-tap:** open math toolbar in current container PIE-18 ([f33a73f](https://github.com/pie-framework/pie-lib/commit/f33a73fd0c7dbd34571d6490b031459ad89923c3))
|
|
84
|
+
- **editable-html-tip-tap:** prevent spanish keyboard to be dismissed when clicking on it PIE-36 ([6c02557](https://github.com/pie-framework/pie-lib/commit/6c02557fd61b5b0cc217340f20b94e1934f6beaa))
|
|
85
|
+
- **tip-tap/image-component:** add image deletion handling PIE-38 ([582bd1f](https://github.com/pie-framework/pie-lib/commit/582bd1f8edd33f0a2c5a80eab7d400a2db5113fb))
|
|
86
|
+
|
|
87
|
+
# [1.2.0-next.25](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.24...@pie-lib/editable-html-tip-tap@1.2.0-next.25) (2026-04-08)
|
|
88
|
+
|
|
89
|
+
### Bug Fixes
|
|
90
|
+
|
|
91
|
+
- **editable-html-tip-tap:** enhance toolbar visibility logic and use portal for rendering ([0b06a9d](https://github.com/pie-framework/pie-lib/commit/0b06a9d2a8b208069d9a774b38797428cff30174))
|
|
92
|
+
- made sure div is the default field in the editor, if a breakpoint is added it turns into a p [PIE-53] ([8f33af0](https://github.com/pie-framework/pie-lib/commit/8f33af05047cdd8993a8a862ce3e26e67c6810fe))
|
|
93
|
+
- test ([10d2392](https://github.com/pie-framework/pie-lib/commit/10d23926c2028851bcb26cc41f430aa88e85ff21))
|
|
94
|
+
|
|
95
|
+
# [1.2.0-next.24](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.23...@pie-lib/editable-html-tip-tap@1.2.0-next.24) (2026-04-07)
|
|
96
|
+
|
|
97
|
+
### Bug Fixes
|
|
98
|
+
|
|
99
|
+
- **editable-html-tip-tap:** prevent toolbar from closing when clicking on math node preview PIE-114 ([b422584](https://github.com/pie-framework/pie-lib/commit/b4225846952d9eaef76039d7c6b69b93c5029da6))
|
|
100
|
+
|
|
101
|
+
# [1.2.0-next.23](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.22...@pie-lib/editable-html-tip-tap@1.2.0-next.23) (2026-04-06)
|
|
102
|
+
|
|
103
|
+
### Bug Fixes
|
|
104
|
+
|
|
105
|
+
- made sure lastIndex in respArea is handled properly, improved spacing around response areas [PIE-35][PIE-40] ([c673701](https://github.com/pie-framework/pie-lib/commit/c673701618bc896208c9760e87ea6dbbd1a91d54))
|
|
106
|
+
|
|
107
|
+
# [1.2.0-next.22](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.21...@pie-lib/editable-html-tip-tap@1.2.0-next.22) (2026-04-03)
|
|
108
|
+
|
|
109
|
+
### Bug Fixes
|
|
110
|
+
|
|
111
|
+
- **editable-html-tip-tap:** backspace behavior in tiptap and add custom toolbar in ExplicitConstructedResponse PIE-19 PIE-30 ([5779a6d](https://github.com/pie-framework/pie-lib/commit/5779a6d6a1c30f398025d4c7bdce578827b51e3a))
|
|
112
|
+
- handle different editors, handle clicks in dropdown PIE-47 ([19c8914](https://github.com/pie-framework/pie-lib/commit/19c89148cee951133680c218fb446107f9b2ce16))
|
|
113
|
+
- **math-input:** bump @pie-framework/mathquill to 1.2.1-beta.1 with jQuery shim fixes PIE-16 PIE-20 ([3eaa8fd](https://github.com/pie-framework/pie-lib/commit/3eaa8fd410d8668c2d085cca4a4995a7e66d774f))
|
|
114
|
+
- **plot:** remove unnecessary space, prevent new lines, center placeholder PD-5674 ([9840d80](https://github.com/pie-framework/pie-lib/commit/9840d80a1351f19adbe3396d3abae5fb4e310494))
|
|
115
|
+
|
|
116
|
+
# [1.2.0-next.21](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.20...@pie-lib/editable-html-tip-tap@1.2.0-next.21) (2026-03-31)
|
|
117
|
+
|
|
118
|
+
### Bug Fixes
|
|
119
|
+
|
|
120
|
+
- **editable-html-tip-tap:** avoid closing math dialog on scrollbar, update test PD-5823 ([ad43e67](https://github.com/pie-framework/pie-lib/commit/ad43e67d9019efae020d2da817568936348bcbc9))
|
|
121
|
+
|
|
122
|
+
# [1.2.0-next.20](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.19...@pie-lib/editable-html-tip-tap@1.2.0-next.20) (2026-03-25)
|
|
123
|
+
|
|
124
|
+
### Bug Fixes
|
|
125
|
+
|
|
126
|
+
- **editable-html-tip-tap:** extend text alignment options to include additional elements PD-5851 ([fc43c5c](https://github.com/pie-framework/pie-lib/commit/fc43c5c4c29a4c6bcd42c61d6b18e32d56bf2557))
|
|
127
|
+
- provided the pos of the node as well in the response area toolbar callback [PD-5787] ([caa9a90](https://github.com/pie-framework/pie-lib/commit/caa9a90617d15afcd8457c8962460867b3990bbc))
|
|
128
|
+
|
|
129
|
+
# [1.2.0-next.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.18...@pie-lib/editable-html-tip-tap@1.2.0-next.19) (2026-03-18)
|
|
130
|
+
|
|
131
|
+
### Bug Fixes
|
|
132
|
+
|
|
133
|
+
- **editable-html-tip-tap:** wrap new node with plain text in a div not in a p PD-5669 ([0216b60](https://github.com/pie-framework/pie-lib/commit/0216b60cb54f2af2761042c0be7247b1507b8aeb))
|
|
134
|
+
|
|
135
|
+
# [1.2.0-next.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.17...@pie-lib/editable-html-tip-tap@1.2.0-next.18) (2026-03-18)
|
|
136
|
+
|
|
137
|
+
### Bug Fixes
|
|
138
|
+
|
|
139
|
+
- **editable-html-tip-tap:** add blockquote, fix styling and add text alignment options PD-5790 ([99b30f6](https://github.com/pie-framework/pie-lib/commit/99b30f6622fd002abcdb901c4584026519bed8b7))
|
|
140
|
+
|
|
141
|
+
# [1.2.0-next.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.16...@pie-lib/editable-html-tip-tap@1.2.0-next.17) (2026-03-18)
|
|
142
|
+
|
|
143
|
+
### Bug Fixes
|
|
144
|
+
|
|
145
|
+
- add touchAction style to prevent touch interactions in DragInTheBlank and blank components PD-5811 ([ba4d73b](https://github.com/pie-framework/pie-lib/commit/ba4d73b4785cc59e85f3055902667a1cd4db325c))
|
|
146
|
+
- **editable-html-tip-tap:** create test for new div block extension PD-5622 ([911ef92](https://github.com/pie-framework/pie-lib/commit/911ef92c08f8de3f7080c36b48aa336f61b55800))
|
|
147
|
+
- **editable-html-tip-tap:** set div as default, transform div to p tag at enter, update tests PD-5622 ([32e4126](https://github.com/pie-framework/pie-lib/commit/32e4126b9369c29c165d7a55315b04dbc759a181))
|
|
148
|
+
|
|
149
|
+
# [1.2.0-next.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.15...@pie-lib/editable-html-tip-tap@1.2.0-next.16) (2026-03-11)
|
|
150
|
+
|
|
151
|
+
**Note:** Version bump only for package @pie-lib/editable-html-tip-tap
|
|
152
|
+
|
|
153
|
+
# [1.2.0-next.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.14...@pie-lib/editable-html-tip-tap@1.2.0-next.15) (2026-03-11)
|
|
154
|
+
|
|
155
|
+
### Bug Fixes
|
|
156
|
+
|
|
157
|
+
- bump pie-framework/mathquill PD-5791 ([6dd160a](https://github.com/pie-framework/pie-lib/commit/6dd160a980fd53c2acd704b503266863c24bcf23))
|
|
158
|
+
|
|
159
|
+
# [1.2.0-next.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.13...@pie-lib/editable-html-tip-tap@1.2.0-next.14) (2026-03-09)
|
|
160
|
+
|
|
161
|
+
### Features
|
|
162
|
+
|
|
163
|
+
- remove jQuery dependency via MathQuill 1.2.0-beta.0 Interface v3 shim PD-5791 ([d427f32](https://github.com/pie-framework/pie-lib/commit/d427f32d5547de9610579d83b454c568def7ea74))
|
|
164
|
+
|
|
165
|
+
# [1.2.0-next.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.12...@pie-lib/editable-html-tip-tap@1.2.0-next.13) (2026-03-06)
|
|
166
|
+
|
|
167
|
+
### Bug Fixes
|
|
168
|
+
|
|
169
|
+
- editable-area responsive, added handling for toolbars inside responseArea, ability to provide editor instance PD-5616-PD-5582-PD-5603-PD-5604-PD-5605 ([02213cd](https://github.com/pie-framework/pie-lib/commit/02213cde4315edb8fa68f1f3b97a14aaba2b156c))
|
|
170
|
+
|
|
171
|
+
# [1.2.0-next.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.11...@pie-lib/editable-html-tip-tap@1.2.0-next.12) (2026-03-04)
|
|
172
|
+
|
|
173
|
+
### Bug Fixes
|
|
174
|
+
|
|
175
|
+
- **editable-html-tip-tap:** adjust placeholder styling for empty paragraphs to prevent extra height ([a9d8643](https://github.com/pie-framework/pie-lib/commit/a9d86432b7aac9a3ead327c7d32ddbdb94e25fdb))
|
|
176
|
+
- **editable-html-tip-tap:** handle focus,selection delete menu PD-5589 ([b975827](https://github.com/pie-framework/pie-lib/commit/b975827da8fed42936f54544c7faba2ea7de009c))
|
|
177
|
+
|
|
178
|
+
# [1.2.0-next.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.9...@pie-lib/editable-html-tip-tap@1.2.0-next.11) (2026-02-26)
|
|
179
|
+
|
|
180
|
+
**Note:** Version bump only for package @pie-lib/editable-html-tip-tap
|
|
181
|
+
|
|
6
182
|
# [1.2.0-next.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/editable-html-tip-tap@1.2.0-next.8...@pie-lib/editable-html-tip-tap@1.2.0-next.9) (2026-02-25)
|
|
7
183
|
|
|
8
184
|
### Bug Fixes
|
|
@@ -127,6 +127,7 @@ function CharacterPicker(_ref2) {
|
|
|
127
127
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement("div", {
|
|
128
128
|
ref: containerRef,
|
|
129
129
|
className: "insert-character-dialog",
|
|
130
|
+
"data-toolbar-for": editor.instanceId,
|
|
130
131
|
style: {
|
|
131
132
|
visibility: position.top === 0 && position.left === 0 ? 'hidden' : 'initial',
|
|
132
133
|
position: 'absolute',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CharacterPicker.js","names":["_react","_interopRequireWildcard","require","_reactDom","_interopRequireDefault","_propTypes","_get","_mathToolbar","_customPopper","_characterUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","CharacterIcon","exports","_ref","letter","createElement","style","fontSize","lineHeight","propTypes","PropTypes","string","CharacterPicker","_ref2","_opts$characters","editor","opts","onClose","characters","containerRef","useRef","_useState","useState","top","left","_useState2","_slicedToArray2","position","setPosition","_useState3","_useState4","popover","setPopover","configToUse","useMemo","spanishConfig","language","specialConfig","layoutForCharacters","reduce","obj","arr","columns","rows","closePopOver","useEffect","editorDOM","options","element","editorRect","getBoundingClientRect","bodyRect","document","body","from","state","selection","start","view","coordsAtPos","Math","abs","height","y","current","offsetHeight","handleClickOutside","contains","target","dom","timeoutId","setTimeout","addEventListener","clearTimeout","removeEventListener","renderPopOver","event","el","anchorEl","currentTarget","handleChange","val","chain","focus","insertContent","run","Fragment","ReactDOM","createPortal","ref","className","visibility","concat","maxWidth","zIndex","PureToolbar","keyPadCharacterRef","setKeypadInteraction","autoFocus","noDecimal","hideInput","noLatexHandling","hideDoneButtonBackground","layoutForKeyPad","additionalKeys","_toConsumableArray2","map","k","name","write","label","category","extraClass","extraProps","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","keypadMode","onChange","onDone","description","unicode","object","func","isRequired"],"sources":["../../src/components/CharacterPicker.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport get from 'lodash-es/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopper from './characters/custom-popper';\nimport { spanishConfig, specialConfig } from './characters/characterUtils';\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '24px',\n lineHeight: '24px',\n }}\n >\n {letter}\n </div>\n);\n\nCharacterIcon.propTypes = {\n letter: PropTypes.string,\n};\n\nexport function CharacterPicker({ editor, opts, onClose }) {\n if (!opts?.characters?.length) {\n return null;\n }\n\n const containerRef = useRef(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const [popover, setPopover] = useState(null);\n\n const configToUse = useMemo(() => {\n if (!opts) return spanishConfig;\n\n switch (true) {\n case opts.language === 'spanish':\n return spanishConfig;\n case opts.language === 'special':\n return specialConfig;\n default:\n return opts;\n }\n }, [opts]);\n\n const layoutForCharacters = useMemo(\n () =>\n configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 },\n ),\n [configToUse],\n );\n\n const closePopOver = () => setPopover(null);\n\n useEffect(\n () => () => {\n closePopOver();\n },\n [],\n );\n\n useEffect(() => {\n if (!editor) return;\n\n // Calculate position relative to selection\n const editorDOM = editor.options.element;\n const editorRect = editorDOM.getBoundingClientRect();\n const bodyRect = document.body.getBoundingClientRect();\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n\n let top = editorRect.top + Math.abs(bodyRect.top) + editorRect.height + 60;\n\n if (editorRect.y > containerRef.current.offsetHeight) {\n top = top - (containerRef.current.offsetHeight + editorRect.height) - 80;\n }\n\n setPosition({\n // top: start.top + Math.abs(bodyRect.top) - containerRef.current.offsetHeight - 10 + additionalTopOffset, // shift above\n top: top,\n left: start.left,\n });\n\n const handleClickOutside = (e) => {\n if (containerRef.current && !containerRef.current.contains(e.target) && !editor.view.dom.contains(e.target)) {\n onClose();\n }\n };\n\n const timeoutId = setTimeout(() => {\n document.addEventListener('click', handleClickOutside);\n });\n\n return () => {\n clearTimeout(timeoutId);\n document.removeEventListener('click', handleClickOutside);\n };\n }, [editor, onClose]);\n\n const renderPopOver = (event, el) => setPopover({ anchorEl: event.currentTarget, el });\n\n const handleChange = (val) => {\n if (typeof val === 'string') {\n editor.chain().focus().insertContent(val).run();\n }\n };\n\n return (\n <>\n {ReactDOM.createPortal(\n <div\n ref={containerRef}\n className=\"insert-character-dialog\"\n style={{\n visibility: position.top === 0 && position.left === 0 ? 'hidden' : 'initial',\n position: 'absolute',\n top: `${position.top}px`,\n left: `${position.left}px`,\n maxWidth: '500px',\n zIndex: 99,\n }}\n >\n <div>\n <PureToolbar\n keyPadCharacterRef={opts.keyPadCharacterRef}\n setKeypadInteraction={opts.setKeypadInteraction}\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n hideDoneButtonBackground\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map((k) => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000',\n },\n },\n ...(configToUse.hasPreview\n ? {\n actions: {\n onMouseEnter: (ev) => renderPopOver(ev, k),\n onMouseLeave: closePopOver,\n },\n }\n : {}),\n })),\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={onClose}\n />\n </div>\n </div>,\n document.body,\n )}\n {popover &&\n ReactDOM.createPortal(\n <CustomPopper onClose={closePopOver} anchorEl={popover.anchorEl}>\n <div>{popover.el.label}</div>\n <div style={{ fontSize: 20, lineHeight: '20px' }}>{popover.el.description}</div>\n <div style={{ fontSize: 20, lineHeight: '20px' }}>{popover.el.unicode}</div>\n </CustomPopper>,\n document.body,\n )}\n </>\n );\n}\n\nCharacterPicker.propTypes = {\n editor: PropTypes.object,\n opts: PropTypes.object,\n onClose: PropTypes.func.isRequired,\n};\n\nexport { CharacterIcon };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CharacterPicker.js","names":["_react","_interopRequireWildcard","require","_reactDom","_interopRequireDefault","_propTypes","_get","_mathToolbar","_customPopper","_characterUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","CharacterIcon","exports","_ref","letter","createElement","style","fontSize","lineHeight","propTypes","PropTypes","string","CharacterPicker","_ref2","_opts$characters","editor","opts","onClose","characters","containerRef","useRef","_useState","useState","top","left","_useState2","_slicedToArray2","position","setPosition","_useState3","_useState4","popover","setPopover","configToUse","useMemo","spanishConfig","language","specialConfig","layoutForCharacters","reduce","obj","arr","columns","rows","closePopOver","useEffect","editorDOM","options","element","editorRect","getBoundingClientRect","bodyRect","document","body","from","state","selection","start","view","coordsAtPos","Math","abs","height","y","current","offsetHeight","handleClickOutside","contains","target","dom","timeoutId","setTimeout","addEventListener","clearTimeout","removeEventListener","renderPopOver","event","el","anchorEl","currentTarget","handleChange","val","chain","focus","insertContent","run","Fragment","ReactDOM","createPortal","ref","className","instanceId","visibility","concat","maxWidth","zIndex","PureToolbar","keyPadCharacterRef","setKeypadInteraction","autoFocus","noDecimal","hideInput","noLatexHandling","hideDoneButtonBackground","layoutForKeyPad","additionalKeys","_toConsumableArray2","map","k","name","write","label","category","extraClass","extraProps","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","keypadMode","onChange","onDone","description","unicode","object","func","isRequired"],"sources":["../../src/components/CharacterPicker.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport get from 'lodash-es/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopper from './characters/custom-popper';\nimport { spanishConfig, specialConfig } from './characters/characterUtils';\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '24px',\n lineHeight: '24px',\n }}\n >\n {letter}\n </div>\n);\n\nCharacterIcon.propTypes = {\n letter: PropTypes.string,\n};\n\nexport function CharacterPicker({ editor, opts, onClose }) {\n if (!opts?.characters?.length) {\n return null;\n }\n\n const containerRef = useRef(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const [popover, setPopover] = useState(null);\n\n const configToUse = useMemo(() => {\n if (!opts) return spanishConfig;\n\n switch (true) {\n case opts.language === 'spanish':\n return spanishConfig;\n case opts.language === 'special':\n return specialConfig;\n default:\n return opts;\n }\n }, [opts]);\n\n const layoutForCharacters = useMemo(\n () =>\n configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 },\n ),\n [configToUse],\n );\n\n const closePopOver = () => setPopover(null);\n\n useEffect(\n () => () => {\n closePopOver();\n },\n [],\n );\n\n useEffect(() => {\n if (!editor) return;\n\n // Calculate position relative to selection\n const editorDOM = editor.options.element;\n const editorRect = editorDOM.getBoundingClientRect();\n const bodyRect = document.body.getBoundingClientRect();\n const { from } = editor.state.selection;\n const start = editor.view.coordsAtPos(from);\n\n let top = editorRect.top + Math.abs(bodyRect.top) + editorRect.height + 60;\n\n if (editorRect.y > containerRef.current.offsetHeight) {\n top = top - (containerRef.current.offsetHeight + editorRect.height) - 80;\n }\n\n setPosition({\n // top: start.top + Math.abs(bodyRect.top) - containerRef.current.offsetHeight - 10 + additionalTopOffset, // shift above\n top: top,\n left: start.left,\n });\n\n const handleClickOutside = (e) => {\n if (containerRef.current && !containerRef.current.contains(e.target) && !editor.view.dom.contains(e.target)) {\n onClose();\n }\n };\n\n const timeoutId = setTimeout(() => {\n document.addEventListener('click', handleClickOutside);\n });\n\n return () => {\n clearTimeout(timeoutId);\n document.removeEventListener('click', handleClickOutside);\n };\n }, [editor, onClose]);\n\n const renderPopOver = (event, el) => setPopover({ anchorEl: event.currentTarget, el });\n\n const handleChange = (val) => {\n if (typeof val === 'string') {\n editor.chain().focus().insertContent(val).run();\n }\n };\n\n return (\n <>\n {ReactDOM.createPortal(\n <div\n ref={containerRef}\n className=\"insert-character-dialog\"\n data-toolbar-for={editor.instanceId}\n style={{\n visibility: position.top === 0 && position.left === 0 ? 'hidden' : 'initial',\n position: 'absolute',\n top: `${position.top}px`,\n left: `${position.left}px`,\n maxWidth: '500px',\n zIndex: 99,\n }}\n >\n <div>\n <PureToolbar\n keyPadCharacterRef={opts.keyPadCharacterRef}\n setKeypadInteraction={opts.setKeypadInteraction}\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n hideDoneButtonBackground\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map((k) => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000',\n },\n },\n ...(configToUse.hasPreview\n ? {\n actions: {\n onMouseEnter: (ev) => renderPopOver(ev, k),\n onMouseLeave: closePopOver,\n },\n }\n : {}),\n })),\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={onClose}\n />\n </div>\n </div>,\n document.body,\n )}\n {popover &&\n ReactDOM.createPortal(\n <CustomPopper onClose={closePopOver} anchorEl={popover.anchorEl}>\n <div>{popover.el.label}</div>\n <div style={{ fontSize: 20, lineHeight: '20px' }}>{popover.el.description}</div>\n <div style={{ fontSize: 20, lineHeight: '20px' }}>{popover.el.unicode}</div>\n </CustomPopper>,\n document.body,\n )}\n </>\n );\n}\n\nCharacterPicker.propTypes = {\n editor: PropTypes.object,\n opts: PropTypes.object,\n onClose: PropTypes.func.isRequired,\n};\n\nexport { CharacterIcon };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,9 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _debounce = _interopRequireDefault(require("lodash-es/debounce"));
|
|
15
16
|
var _react2 = require("@tiptap/react");
|
|
17
|
+
var _styles = require("@mui/material/styles");
|
|
16
18
|
var _starterKit = _interopRequireDefault(require("@tiptap/starter-kit"));
|
|
17
19
|
var _extensionTextStyle = require("@tiptap/extension-text-style");
|
|
18
20
|
var _extensionCharacterCount = require("@tiptap/extension-character-count");
|
|
@@ -21,17 +23,19 @@ var _extensionSubscript = _interopRequireDefault(require("@tiptap/extension-subs
|
|
|
21
23
|
var _extensionTextAlign = _interopRequireDefault(require("@tiptap/extension-text-align"));
|
|
22
24
|
var _extensionImage = _interopRequireDefault(require("@tiptap/extension-image"));
|
|
23
25
|
var _extensionPlaceholder = _interopRequireDefault(require("@tiptap/extension-placeholder"));
|
|
24
|
-
var
|
|
25
|
-
var _debounce = _interopRequireDefault(require("lodash-es/debounce"));
|
|
26
|
+
var _helper = require("../utils/helper");
|
|
26
27
|
var _extendedTable = _interopRequireDefault(require("../extensions/extended-table"));
|
|
28
|
+
var _extendedTableCell = require("../extensions/extended-table-cell");
|
|
29
|
+
var _divNode = require("../extensions/div-node");
|
|
30
|
+
var _ensureEmptyRootDiv = require("../extensions/ensure-empty-root-div");
|
|
31
|
+
var _ensureListItemContentIsDiv = require("../extensions/ensure-list-item-content-is-div");
|
|
27
32
|
var _extensionTableRow = require("@tiptap/extension-table-row");
|
|
28
|
-
var _extensionTableCell = require("@tiptap/extension-table-cell");
|
|
29
|
-
var _extensionTableHeader = require("@tiptap/extension-table-header");
|
|
30
33
|
var _responseArea = require("../extensions/responseArea");
|
|
31
34
|
var _math = require("../extensions/math");
|
|
32
35
|
var _image = require("../extensions/image");
|
|
33
36
|
var _media = require("../extensions/media");
|
|
34
37
|
var _css = require("../extensions/css");
|
|
38
|
+
var _extendedListItem = require("../extensions/extended-list-item");
|
|
35
39
|
var _TiptapContainer = _interopRequireDefault(require("./TiptapContainer"));
|
|
36
40
|
var _size = require("../utils/size");
|
|
37
41
|
var _extensions = require("../extensions");
|
|
@@ -73,6 +77,7 @@ var cssVariables = {
|
|
|
73
77
|
'--shadow': "0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)"
|
|
74
78
|
};
|
|
75
79
|
var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
80
|
+
var _props$pluginProps;
|
|
76
81
|
var _ref = props.pluginProps || {},
|
|
77
82
|
showParagraphs = _ref.showParagraphs,
|
|
78
83
|
separateParagraphs = _ref.separateParagraphs;
|
|
@@ -85,6 +90,17 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
85
90
|
scheduled = _useState4[0],
|
|
86
91
|
setScheduled = _useState4[1];
|
|
87
92
|
var toolbarOpts = props.toolbarOpts;
|
|
93
|
+
var removePendingImage = (0, _react.useCallback)(function (imagePos) {
|
|
94
|
+
setPendingImages(function (prev) {
|
|
95
|
+
var next = prev.filter(function (img) {
|
|
96
|
+
return img.pos !== imagePos;
|
|
97
|
+
});
|
|
98
|
+
if (next.length === 0) {
|
|
99
|
+
setScheduled(false);
|
|
100
|
+
}
|
|
101
|
+
return next;
|
|
102
|
+
});
|
|
103
|
+
}, [setPendingImages]);
|
|
88
104
|
var toolbarOptsToUse = _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
|
|
89
105
|
var activePluginsToUse = (0, _react.useMemo)(function () {
|
|
90
106
|
var _ref3, _props$responseAreaPr;
|
|
@@ -114,43 +130,44 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
114
130
|
media: {}
|
|
115
131
|
});
|
|
116
132
|
}, [props]);
|
|
117
|
-
var extensions = [
|
|
133
|
+
var extensions = [_extensionTextAlign["default"].configure({
|
|
134
|
+
types: ['heading', 'paragraph', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'td', 'th'],
|
|
135
|
+
alignments: ['left', 'right', 'center', 'justify']
|
|
136
|
+
}), _extensionTextStyle.TextStyleKit, _extensionCharacterCount.CharacterCount.configure({
|
|
118
137
|
limit: props.charactersLimit || 1000000
|
|
119
|
-
}), _starterKit["default"]
|
|
138
|
+
}), _starterKit["default"].configure({
|
|
139
|
+
trailingNode: {
|
|
140
|
+
node: 'paragraph',
|
|
141
|
+
notAfter: ['paragraph', 'div']
|
|
142
|
+
}
|
|
143
|
+
}), _extendedListItem.ExtendedListItem, _divNode.DivNode, _ensureEmptyRootDiv.EnsureEmptyRootIsDiv, _ensureListItemContentIsDiv.EnsureListItemContentIsDiv, _extensionPlaceholder["default"].configure({
|
|
120
144
|
placeholder: props.placeholder,
|
|
121
145
|
// show placeholder even when editor is focused
|
|
122
146
|
showOnlyWhenEditable: true,
|
|
123
147
|
showOnlyCurrent: false,
|
|
124
148
|
// show on all empty nodes, not only the current one
|
|
125
149
|
includeChildren: true
|
|
126
|
-
}), _extendedTable["default"], _extensionTableRow.TableRow,
|
|
127
|
-
toolbarOpts: toolbarOptsToUse
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
alignments: ['left', 'right', 'center']
|
|
131
|
-
}), _extensionImage["default"], _image.ImageUploadNode.configure({
|
|
150
|
+
}), _extendedTable["default"], _extensionTableRow.TableRow, _extendedTableCell.ExtendedTableHeader, _extendedTableCell.ExtendedTableCell, _responseArea.ResponseAreaExtension.configure(props.responseAreaProps), _responseArea.ExplicitConstructedResponseNode.configure(props.responseAreaProps), _responseArea.DragInTheBlankNode.configure(props.responseAreaProps), _responseArea.InlineDropdownNode.configure(props.responseAreaProps), _responseArea.MathTemplatedNode.configure(props.responseAreaProps), _math.MathNode.configure({
|
|
151
|
+
toolbarOpts: toolbarOptsToUse,
|
|
152
|
+
math: ((_props$pluginProps = props.pluginProps) === null || _props$pluginProps === void 0 ? void 0 : _props$pluginProps.math) || {}
|
|
153
|
+
}), _extensionSubscript["default"], _extensionSuperscript["default"], _extensionImage["default"], _image.ImageUploadNode.configure({
|
|
132
154
|
toolbarOpts: toolbarOptsToUse,
|
|
133
155
|
imageHandling: {
|
|
134
156
|
disableImageAlignmentButtons: props.disableImageAlignmentButtons,
|
|
135
|
-
onDone: function onDone() {
|
|
157
|
+
onDone: function onDone(editor) {
|
|
136
158
|
var _props$onDone;
|
|
137
159
|
return (_props$onDone = props.onDone) === null || _props$onDone === void 0 ? void 0 : _props$onDone.call(props, editor.getHTML());
|
|
138
160
|
},
|
|
139
161
|
onDelete: props.imageSupport && props.imageSupport["delete"] && function (node) {
|
|
140
162
|
var src = node.attrs.src;
|
|
141
163
|
props.imageSupport["delete"](src, function (e) {
|
|
142
|
-
|
|
143
|
-
return img.key !== node.key;
|
|
144
|
-
});
|
|
145
|
-
var newState = {
|
|
146
|
-
pendingImages: newPendingImages,
|
|
147
|
-
scheduled: scheduled && newPendingImages.length === 0 ? false : scheduled
|
|
148
|
-
};
|
|
149
|
-
setPendingImages(newState.pendingImages);
|
|
150
|
-
setScheduled(newState.scheduled);
|
|
164
|
+
removePendingImage(node.pos);
|
|
151
165
|
});
|
|
152
166
|
},
|
|
153
|
-
insertImageRequested: props.imageSupport && function (
|
|
167
|
+
insertImageRequested: props.imageSupport && function (editor, imageInfo, getHandler) {
|
|
168
|
+
var _imageInfo = (0, _slicedToArray2["default"])(imageInfo, 2),
|
|
169
|
+
addedImage = _imageInfo[0],
|
|
170
|
+
pos = _imageInfo[1];
|
|
154
171
|
var onFinish = function onFinish(result) {
|
|
155
172
|
var _cb;
|
|
156
173
|
var cb;
|
|
@@ -158,17 +175,7 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
158
175
|
// finish editing only on success
|
|
159
176
|
cb = props.onChange;
|
|
160
177
|
}
|
|
161
|
-
|
|
162
|
-
return img.key !== addedImage.key;
|
|
163
|
-
});
|
|
164
|
-
var newState = {
|
|
165
|
-
pendingImages: newPendingImages
|
|
166
|
-
};
|
|
167
|
-
if (newPendingImages.length === 0) {
|
|
168
|
-
newState.scheduled = false;
|
|
169
|
-
}
|
|
170
|
-
setPendingImages(newState.pendingImages);
|
|
171
|
-
setScheduled(newState.scheduled);
|
|
178
|
+
removePendingImage(pos);
|
|
172
179
|
(_cb = cb) === null || _cb === void 0 || _cb(editor.getHTML());
|
|
173
180
|
};
|
|
174
181
|
var callback = function callback() {
|
|
@@ -177,9 +184,28 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
177
184
|
* communicates file upload events like: fileChosen, cancel, progress
|
|
178
185
|
*/
|
|
179
186
|
var handler = getHandler(onFinish);
|
|
187
|
+
|
|
188
|
+
// If the user closes the file picker without choosing a file, the window regains
|
|
189
|
+
// focus while _insertingImage is still true — drop the stale pending entry.
|
|
190
|
+
var focusHandler = (0, _debounce["default"])(function () {
|
|
191
|
+
var detach = function detach() {
|
|
192
|
+
return window.removeEventListener('focus', focusHandler);
|
|
193
|
+
};
|
|
194
|
+
if (!editor._insertingImage) {
|
|
195
|
+
detach();
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
removePendingImage(pos);
|
|
199
|
+
editor._insertingImage = false;
|
|
200
|
+
detach();
|
|
201
|
+
}, 500);
|
|
202
|
+
window.addEventListener('focus', focusHandler);
|
|
180
203
|
props.imageSupport.add(handler);
|
|
181
204
|
};
|
|
182
|
-
|
|
205
|
+
editor._insertingImage = true;
|
|
206
|
+
setPendingImages(function (prev) {
|
|
207
|
+
return [].concat((0, _toConsumableArray2["default"])(prev), [addedImage]);
|
|
208
|
+
});
|
|
183
209
|
callback();
|
|
184
210
|
},
|
|
185
211
|
maxImageWidth: props.maxImageWidth,
|
|
@@ -205,7 +231,7 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
205
231
|
}
|
|
206
232
|
},
|
|
207
233
|
editable: !props.disabled,
|
|
208
|
-
content: props.markup,
|
|
234
|
+
content: (0, _helper.normalizeInitialMarkup)(props.markup),
|
|
209
235
|
onUpdate: function onUpdate(_ref4) {
|
|
210
236
|
var editor = _ref4.editor,
|
|
211
237
|
transaction = _ref4.transaction;
|
|
@@ -216,7 +242,7 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
216
242
|
},
|
|
217
243
|
onBlur: (0, _debounce["default"])(function (_ref5) {
|
|
218
244
|
var editor = _ref5.editor;
|
|
219
|
-
var otherToolbarOpened = editor._toolbarOpened || editor.isActive('inline_dropdown') || editor.isActive('explicit_constructed_response');
|
|
245
|
+
var otherToolbarOpened = editor._insertingImage || editor._toolbarOpened || editor.isActive('inline_dropdown') || editor.isActive('explicit_constructed_response');
|
|
220
246
|
if (otherToolbarOpened) {
|
|
221
247
|
return;
|
|
222
248
|
}
|
|
@@ -230,6 +256,11 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
230
256
|
}
|
|
231
257
|
}, 200)
|
|
232
258
|
}, [props.charactersLimit]);
|
|
259
|
+
(0, _react.useEffect)(function () {
|
|
260
|
+
if (props.editorRef) {
|
|
261
|
+
props.editorRef(editor);
|
|
262
|
+
}
|
|
263
|
+
}, [props.editorRef, editor]);
|
|
233
264
|
(0, _react.useEffect)(function () {
|
|
234
265
|
editor === null || editor === void 0 || editor.setEditable(!props.disabled);
|
|
235
266
|
}, [props.disabled, editor]);
|
|
@@ -237,8 +268,9 @@ var EditableHtml = exports.EditableHtml = function EditableHtml(props) {
|
|
|
237
268
|
if (!editor) {
|
|
238
269
|
return;
|
|
239
270
|
}
|
|
240
|
-
|
|
241
|
-
|
|
271
|
+
var nextMarkup = (0, _helper.normalizeInitialMarkup)(props.markup);
|
|
272
|
+
if (nextMarkup !== editor.getHTML()) {
|
|
273
|
+
editor.commands.setContent(nextMarkup, false);
|
|
242
274
|
}
|
|
243
275
|
}, [props.markup, editor]);
|
|
244
276
|
(0, _react.useEffect)(function () {
|
|
@@ -299,24 +331,33 @@ var StyledEditorContent = (0, _styles.styled)(_react2.EditorContent, {
|
|
|
299
331
|
var showParagraph = _ref8.showParagraph,
|
|
300
332
|
separateParagraph = _ref8.separateParagraph;
|
|
301
333
|
return {
|
|
334
|
+
display: 'flex',
|
|
302
335
|
outline: 'none !important',
|
|
303
336
|
'& .ProseMirror': _objectSpread(_objectSpread({
|
|
337
|
+
flex: 1,
|
|
304
338
|
padding: '5px',
|
|
305
339
|
maxHeight: '500px',
|
|
306
340
|
outline: 'none !important',
|
|
307
341
|
position: 'initial',
|
|
308
|
-
|
|
342
|
+
// reset default margins for all block paragraphs/divs in the editor
|
|
343
|
+
'& > p, & > div': {
|
|
309
344
|
margin: '0'
|
|
310
345
|
},
|
|
311
|
-
|
|
346
|
+
// Out of flow so the caret stays at the start of the block; in-flow ::before pushes the caret after the hint text.
|
|
347
|
+
'& p.is-editor-empty, & div.is-editor-empty': {
|
|
348
|
+
position: 'relative'
|
|
349
|
+
},
|
|
350
|
+
'& p.is-editor-empty::before, & div.is-editor-empty::before': {
|
|
312
351
|
content: 'attr(data-placeholder)',
|
|
313
|
-
|
|
352
|
+
position: 'absolute',
|
|
353
|
+
left: 0,
|
|
354
|
+
top: 0,
|
|
314
355
|
color: '#9CA3AF',
|
|
315
356
|
pointerEvents: 'none',
|
|
316
357
|
whiteSpace: 'pre-wrap'
|
|
317
358
|
}
|
|
318
359
|
}, showParagraph && {
|
|
319
|
-
'& > p:has(+ p)::after': {
|
|
360
|
+
'& > p:has(+ p)::after, & > div:has(+ div)::after': {
|
|
320
361
|
display: 'block',
|
|
321
362
|
content: '"¶"',
|
|
322
363
|
fontSize: '1em',
|