@pie-lib/editable-html-tip-tap 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/components/CharacterPicker.d.ts +31 -0
  2. package/dist/components/CharacterPicker.d.ts.map +1 -0
  3. package/dist/components/CharacterPicker.js +129 -0
  4. package/dist/components/EditableHtml.d.ts +11 -0
  5. package/dist/components/EditableHtml.d.ts.map +1 -0
  6. package/dist/components/EditableHtml.js +270 -0
  7. package/dist/components/MenuBar.d.ts +11 -0
  8. package/dist/components/MenuBar.d.ts.map +1 -0
  9. package/dist/components/MenuBar.js +460 -0
  10. package/dist/components/TiptapContainer.d.ts +11 -0
  11. package/dist/components/TiptapContainer.d.ts.map +1 -0
  12. package/dist/components/TiptapContainer.js +157 -0
  13. package/dist/components/characters/characterUtils.d.ts +36 -0
  14. package/dist/components/characters/characterUtils.d.ts.map +1 -0
  15. package/dist/components/characters/characterUtils.js +465 -0
  16. package/dist/components/characters/custom-popper.d.ts +14 -0
  17. package/dist/components/characters/custom-popper.d.ts.map +1 -0
  18. package/dist/components/characters/custom-popper.js +32 -0
  19. package/dist/components/common/done-button.d.ts +30 -0
  20. package/dist/components/common/done-button.d.ts.map +1 -0
  21. package/dist/components/common/done-button.js +26 -0
  22. package/dist/components/common/toolbar-buttons.d.ts +39 -0
  23. package/dist/components/common/toolbar-buttons.d.ts.map +1 -0
  24. package/dist/components/common/toolbar-buttons.js +91 -0
  25. package/dist/components/icons/CssIcon.d.ts +11 -0
  26. package/dist/components/icons/CssIcon.d.ts.map +1 -0
  27. package/dist/components/icons/CssIcon.js +14 -0
  28. package/dist/components/icons/RespArea.d.ts +26 -0
  29. package/dist/components/icons/RespArea.d.ts.map +1 -0
  30. package/dist/components/icons/RespArea.js +42 -0
  31. package/dist/components/icons/TableIcons.d.ts +14 -0
  32. package/dist/components/icons/TableIcons.d.ts.map +1 -0
  33. package/dist/components/icons/TableIcons.js +32 -0
  34. package/dist/components/icons/TextAlign.d.ts +18 -0
  35. package/dist/components/icons/TextAlign.d.ts.map +1 -0
  36. package/dist/components/icons/TextAlign.js +134 -0
  37. package/dist/components/image/AltDialog.d.ts +23 -0
  38. package/dist/components/image/AltDialog.d.ts.map +1 -0
  39. package/dist/components/image/AltDialog.js +61 -0
  40. package/dist/components/image/ImageToolbar.d.ts +25 -0
  41. package/dist/components/image/ImageToolbar.d.ts.map +1 -0
  42. package/dist/components/image/ImageToolbar.js +80 -0
  43. package/dist/components/image/InsertImageHandler.d.ts +33 -0
  44. package/dist/components/image/InsertImageHandler.d.ts.map +1 -0
  45. package/dist/components/image/InsertImageHandler.js +55 -0
  46. package/dist/components/media/MediaDialog.d.ts +44 -0
  47. package/dist/components/media/MediaDialog.d.ts.map +1 -0
  48. package/dist/components/media/MediaDialog.js +389 -0
  49. package/dist/components/media/MediaToolbar.d.ts +20 -0
  50. package/dist/components/media/MediaToolbar.d.ts.map +1 -0
  51. package/dist/components/media/MediaToolbar.js +41 -0
  52. package/dist/components/media/MediaWrapper.d.ts +20 -0
  53. package/dist/components/media/MediaWrapper.d.ts.map +1 -0
  54. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.d.ts +23 -0
  55. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.d.ts.map +1 -0
  56. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.js +58 -0
  57. package/dist/components/respArea/DragInTheBlank/choice.d.ts +56 -0
  58. package/dist/components/respArea/DragInTheBlank/choice.d.ts.map +1 -0
  59. package/dist/components/respArea/DragInTheBlank/choice.js +156 -0
  60. package/dist/components/respArea/ExplicitConstructedResponse.d.ts +20 -0
  61. package/dist/components/respArea/ExplicitConstructedResponse.d.ts.map +1 -0
  62. package/dist/components/respArea/ExplicitConstructedResponse.js +67 -0
  63. package/dist/components/respArea/InlineDropdown.d.ts +18 -0
  64. package/dist/components/respArea/InlineDropdown.d.ts.map +1 -0
  65. package/dist/components/respArea/InlineDropdown.js +91 -0
  66. package/dist/components/respArea/MathTemplated.d.ts +19 -0
  67. package/dist/components/respArea/MathTemplated.d.ts.map +1 -0
  68. package/dist/components/respArea/MathTemplated.js +97 -0
  69. package/dist/components/respArea/ToolbarIcon.d.ts +14 -0
  70. package/dist/components/respArea/ToolbarIcon.d.ts.map +1 -0
  71. package/dist/components/respArea/ToolbarIcon.js +17 -0
  72. package/dist/constants.d.ts +14 -0
  73. package/dist/constants.d.ts.map +1 -0
  74. package/dist/constants.js +4 -0
  75. package/dist/extensions/css.d.ts +12 -0
  76. package/dist/extensions/css.d.ts.map +1 -0
  77. package/dist/extensions/css.js +115 -0
  78. package/dist/extensions/custom-toolbar-wrapper.d.ts +11 -0
  79. package/dist/extensions/custom-toolbar-wrapper.d.ts.map +1 -0
  80. package/dist/extensions/custom-toolbar-wrapper.js +58 -0
  81. package/dist/extensions/div-node.d.ts +11 -0
  82. package/dist/extensions/div-node.d.ts.map +1 -0
  83. package/dist/extensions/div-node.js +25 -0
  84. package/dist/extensions/extended-table.d.ts +11 -0
  85. package/dist/extensions/extended-table.d.ts.map +1 -0
  86. package/dist/extensions/extended-table.js +15 -0
  87. package/dist/extensions/image-component.d.ts +22 -0
  88. package/dist/extensions/image-component.d.ts.map +1 -0
  89. package/dist/extensions/image-component.js +200 -0
  90. package/dist/extensions/image.d.ts +11 -0
  91. package/dist/extensions/image.d.ts.map +1 -0
  92. package/dist/extensions/image.js +42 -0
  93. package/dist/extensions/index.d.ts +17 -0
  94. package/dist/extensions/index.d.ts.map +1 -0
  95. package/dist/extensions/index.js +65 -0
  96. package/dist/extensions/math.d.ts +15 -0
  97. package/dist/extensions/math.d.ts.map +1 -0
  98. package/dist/extensions/math.js +150 -0
  99. package/dist/extensions/media.d.ts +19 -0
  100. package/dist/extensions/media.d.ts.map +1 -0
  101. package/dist/extensions/media.js +147 -0
  102. package/dist/extensions/responseArea.d.ts +28 -0
  103. package/dist/extensions/responseArea.d.ts.map +1 -0
  104. package/dist/extensions/responseArea.js +259 -0
  105. package/dist/index.d.ts +13 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +6 -0
  108. package/dist/styles/editorContainerStyles.d.ts +135 -0
  109. package/dist/styles/editorContainerStyles.d.ts.map +1 -0
  110. package/dist/theme.d.ts +10 -0
  111. package/dist/theme.d.ts.map +1 -0
  112. package/dist/utils/helper.d.ts +10 -0
  113. package/dist/utils/helper.d.ts.map +1 -0
  114. package/dist/utils/helper.js +7 -0
  115. package/dist/utils/size.d.ts +10 -0
  116. package/dist/utils/size.d.ts.map +1 -0
  117. package/dist/utils/size.js +14 -0
  118. package/package.json +71 -0
  119. package/src/components/CharacterPicker.tsx +210 -0
  120. package/src/components/EditableHtml.tsx +416 -0
  121. package/src/components/MenuBar.tsx +558 -0
  122. package/src/components/TiptapContainer.tsx +228 -0
  123. package/src/components/characters/characterUtils.ts +457 -0
  124. package/src/components/characters/custom-popper.tsx +48 -0
  125. package/src/components/common/done-button.tsx +37 -0
  126. package/src/components/common/toolbar-buttons.tsx +132 -0
  127. package/src/components/icons/CssIcon.tsx +25 -0
  128. package/src/components/icons/RespArea.tsx +81 -0
  129. package/src/components/icons/TableIcons.tsx +62 -0
  130. package/src/components/icons/TextAlign.tsx +124 -0
  131. package/src/components/image/AltDialog.tsx +92 -0
  132. package/src/components/image/ImageToolbar.tsx +109 -0
  133. package/src/components/image/InsertImageHandler.ts +121 -0
  134. package/src/components/media/MediaDialog.tsx +606 -0
  135. package/src/components/media/MediaToolbar.tsx +59 -0
  136. package/src/components/media/MediaWrapper.tsx +49 -0
  137. package/src/components/respArea/DragInTheBlank/DragInTheBlank.tsx +86 -0
  138. package/src/components/respArea/DragInTheBlank/choice.tsx +266 -0
  139. package/src/components/respArea/ExplicitConstructedResponse.tsx +122 -0
  140. package/src/components/respArea/InlineDropdown.tsx +152 -0
  141. package/src/components/respArea/MathTemplated.tsx +134 -0
  142. package/src/components/respArea/ToolbarIcon.tsx +76 -0
  143. package/src/constants.ts +15 -0
  144. package/src/extensions/css.tsx +230 -0
  145. package/src/extensions/custom-toolbar-wrapper.tsx +88 -0
  146. package/src/extensions/div-node.tsx +46 -0
  147. package/src/extensions/extended-table.ts +34 -0
  148. package/src/extensions/image-component.tsx +303 -0
  149. package/src/extensions/image.tsx +64 -0
  150. package/src/extensions/index.tsx +91 -0
  151. package/src/extensions/math.tsx +285 -0
  152. package/src/extensions/media.tsx +198 -0
  153. package/src/extensions/responseArea.tsx +404 -0
  154. package/src/index.tsx +15 -0
  155. package/src/styles/editorContainerStyles.ts +155 -0
  156. package/src/theme.ts +11 -0
  157. package/src/utils/helper.tsx +27 -0
  158. package/src/utils/size.ts +42 -0
@@ -0,0 +1,109 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @synced-from pie-lib/packages/editable-html-tip-tap/src/components/image/ImageToolbar.jsx
4
+ * @auto-generated
5
+ *
6
+ * This file is automatically synced from pie-elements and converted to TypeScript.
7
+ * Manual edits will be overwritten on next sync.
8
+ * To make changes, edit the upstream JavaScript file and run sync again.
9
+ */
10
+
11
+ import PropTypes from 'prop-types';
12
+ import React from 'react';
13
+ import debug from 'debug';
14
+ import ReactDOM from 'react-dom';
15
+ import { styled } from '@mui/material/styles';
16
+
17
+ import AltDialog from './AltDialog.js';
18
+ import { MarkButton } from '../common/toolbar-buttons.js';
19
+
20
+ const log = debug('@pie-lib:editable-html:plugins:image:image-toolbar');
21
+
22
+ const StyledHolder: any = styled('div')(({ theme }) => ({
23
+ paddingLeft: theme.spacing.unit,
24
+ display: 'flex',
25
+ alignItems: 'center',
26
+ }));
27
+
28
+ const StyledAltText: any = styled('span', {
29
+ shouldForwardProp: (prop) => !['disabled', 'hasAlignmentButtons'].includes(prop),
30
+ })(({ disabled, hasAlignmentButtons }) => ({
31
+ ...(disabled && {
32
+ opacity: 0.5,
33
+ }),
34
+ ...(hasAlignmentButtons && {
35
+ borderLeft: '1px solid grey',
36
+ paddingLeft: 8,
37
+ marginLeft: 4,
38
+ }),
39
+ }));
40
+
41
+ const AlignmentButton = ({ alignment, active, onClick }) => {
42
+ return (
43
+ <MarkButton active={active} onToggle={() => onClick(alignment)} label={alignment}>
44
+ {alignment}
45
+ </MarkButton>
46
+ );
47
+ };
48
+
49
+ AlignmentButton.propTypes = {
50
+ alignment: PropTypes.string.isRequired,
51
+ active: PropTypes.bool.isRequired,
52
+ onClick: PropTypes.func.isRequired,
53
+ };
54
+
55
+ export class ImageToolbar extends React.Component {
56
+ static propTypes = {
57
+ onChange: PropTypes.func.isRequired,
58
+ alignment: PropTypes.string,
59
+ alt: PropTypes.string,
60
+ imageLoaded: PropTypes.bool,
61
+ disableImageAlignmentButtons: PropTypes.bool,
62
+ };
63
+
64
+ onAltTextDone: any = (newAlt) => {
65
+ log('[onAltTextDone]: alt:', newAlt);
66
+
67
+ this.props.onChange({ alt: newAlt }, true);
68
+ };
69
+
70
+ onAlignmentClick: any = (alignment) => {
71
+ log('[onAlignmentClick]: alignment:', alignment);
72
+ this.props.onChange({ alignment });
73
+ };
74
+
75
+ renderDialog: any = () => {
76
+ const { alt } = this.props;
77
+ const popoverEl = document.createElement('div');
78
+
79
+ const el = <AltDialog alt={alt} onDone={this.onAltTextDone} />;
80
+
81
+ ReactDOM.render(el, popoverEl);
82
+
83
+ document.body.appendChild(popoverEl);
84
+ };
85
+
86
+ render() {
87
+ const { alignment, imageLoaded, disableImageAlignmentButtons } = this.props;
88
+ return (
89
+ <StyledHolder>
90
+ {!disableImageAlignmentButtons && (
91
+ <>
92
+ <AlignmentButton alignment={'left'} active={alignment === 'left'} onClick={this.onAlignmentClick} />
93
+ <AlignmentButton alignment={'center'} active={alignment === 'center'} onClick={this.onAlignmentClick} />
94
+ <AlignmentButton alignment={'right'} active={alignment === 'right'} onClick={this.onAlignmentClick} />
95
+ </>
96
+ )}
97
+ <StyledAltText
98
+ disabled={!imageLoaded}
99
+ hasAlignmentButtons={!disableImageAlignmentButtons}
100
+ onMouseDown={(event) => imageLoaded && this.renderDialog(event)}
101
+ >
102
+ Alt text
103
+ </StyledAltText>
104
+ </StyledHolder>
105
+ );
106
+ }
107
+ }
108
+
109
+ export default ImageToolbar;
@@ -0,0 +1,121 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @synced-from pie-lib/packages/editable-html-tip-tap/src/components/image/InsertImageHandler.js
4
+ * @auto-generated
5
+ *
6
+ * This file is automatically synced from pie-elements and converted to TypeScript.
7
+ * Manual edits will be overwritten on next sync.
8
+ * To make changes, edit the upstream JavaScript file and run sync again.
9
+ */
10
+
11
+ import debug from 'debug';
12
+
13
+ const log = debug('@pie-lib:editable-html:image:insert-image-handler');
14
+
15
+ /**
16
+ * Handles user selection, insertion (or cancellation) of an image into the editor.
17
+ * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
18
+ * @param {Function} onFinish - a function to call if uploading fails or succeeds
19
+ * @param {Function} getValue - a function to return the value of the editor
20
+ * @param {Function} onChange - callback to notify changes applied by the handler
21
+ * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
22
+ */
23
+ class InsertImageHandler {
24
+ constructor(editor, node, onFinish, isPasted = false) {
25
+ this.editor = editor;
26
+ this.node = node;
27
+
28
+ let nodePos;
29
+
30
+ editor.state.doc.descendants((node, pos) => {
31
+ if (node === this.node) {
32
+ nodePos = pos;
33
+ return false;
34
+ }
35
+ });
36
+
37
+ this.nodePos = nodePos;
38
+ this.onFinish = onFinish;
39
+ this.isPasted = isPasted;
40
+ this.chosenFile = null;
41
+ }
42
+
43
+ cancel() {
44
+ log('insert cancelled');
45
+
46
+ try {
47
+ this.deleteNode();
48
+ this.onFinish(false);
49
+ } catch (err) {
50
+ //
51
+ }
52
+ }
53
+
54
+ updateNode(newAttrs) {
55
+ const { state, view } = this.editor;
56
+ const { tr } = state;
57
+ const node = state.doc.nodeAt(this.nodePos);
58
+
59
+ if (node) {
60
+ const transaction = tr.setNodeMarkup(this.nodePos, undefined, { ...node.attrs, ...newAttrs });
61
+
62
+ view.dispatch(transaction);
63
+ }
64
+ }
65
+
66
+ deleteNode() {
67
+ const { state, view } = this.editor;
68
+ const { tr } = state;
69
+
70
+ const transaction = tr.delete(this.nodePos, this.nodePos + this.node.nodeSize);
71
+
72
+ view.dispatch(transaction);
73
+ }
74
+
75
+ done(err, src) {
76
+ log('done: err:', err);
77
+ if (err) {
78
+ //eslint-disable-next-line
79
+ console.log(err);
80
+ this.onFinish(false);
81
+ } else {
82
+ this.updateNode({ loaded: true, src, percent: 100 });
83
+ this.onFinish(true);
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Notify handler that the user chose a file - will create a change with a preview in the editor.
89
+ *
90
+ * @param {File} file - the file that the user chose using a file input.
91
+ */
92
+ fileChosen(file) {
93
+ if (!file) {
94
+ return;
95
+ }
96
+
97
+ // Save the chosen file to this.chosenFile
98
+ this.chosenFile = file;
99
+
100
+ log('[fileChosen] file: ', file);
101
+ const reader = new FileReader();
102
+ reader.onload = () => {
103
+ const dataURL = reader.result;
104
+
105
+ this.updateNode({ src: dataURL });
106
+ };
107
+ reader.readAsDataURL(file);
108
+ }
109
+
110
+ progress(percent, bytes, total) {
111
+ log('progress: ', percent, bytes, total);
112
+ this.updateNode({ percent });
113
+ }
114
+
115
+ // Add a getter method to retrieve the chosen file
116
+ getChosenFile() {
117
+ return this.chosenFile;
118
+ }
119
+ }
120
+
121
+ export default InsertImageHandler;