@kids-reporter/draft-editor 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 (55) hide show
  1. package/README.md +51 -0
  2. package/lib/.selector/align-selector.js +71 -0
  3. package/lib/.selector/audio-selector.js +268 -0
  4. package/lib/.selector/image-selector.js +430 -0
  5. package/lib/.selector/pagination.js +82 -0
  6. package/lib/.selector/post-selector.js +311 -0
  7. package/lib/.selector/search-box.js +46 -0
  8. package/lib/.selector/video-selector.js +285 -0
  9. package/lib/block-renderer/background-image-block.js +141 -0
  10. package/lib/block-renderer/background-video-block.js +151 -0
  11. package/lib/block-renderer/color-box-block.js +86 -0
  12. package/lib/block-renderer/info-box-block.js +86 -0
  13. package/lib/block-renderer/side-index-block.js +90 -0
  14. package/lib/block-renderer/table-block.js +408 -0
  15. package/lib/block-renderer-fn.js +131 -0
  16. package/lib/buttons/annotation.js +117 -0
  17. package/lib/buttons/audio.js +65 -0
  18. package/lib/buttons/background-color.js +122 -0
  19. package/lib/buttons/background-image.js +223 -0
  20. package/lib/buttons/background-video.js +223 -0
  21. package/lib/buttons/color-box.js +173 -0
  22. package/lib/buttons/divider.js +63 -0
  23. package/lib/buttons/embedded-code.js +109 -0
  24. package/lib/buttons/enlarge.js +24 -0
  25. package/lib/buttons/font-color.js +115 -0
  26. package/lib/buttons/image.js +70 -0
  27. package/lib/buttons/info-box.js +148 -0
  28. package/lib/buttons/link.js +107 -0
  29. package/lib/buttons/media.js +121 -0
  30. package/lib/buttons/related-post.js +71 -0
  31. package/lib/buttons/selector/align-selector.js +71 -0
  32. package/lib/buttons/selector/audio-selector.js +279 -0
  33. package/lib/buttons/selector/image-selector.js +417 -0
  34. package/lib/buttons/selector/pagination.js +82 -0
  35. package/lib/buttons/selector/post-selector.js +317 -0
  36. package/lib/buttons/selector/search-box.js +46 -0
  37. package/lib/buttons/selector/video-selector.js +281 -0
  38. package/lib/buttons/side-index.js +200 -0
  39. package/lib/buttons/slideshow.js +71 -0
  40. package/lib/buttons/table.js +67 -0
  41. package/lib/buttons/text-align.js +88 -0
  42. package/lib/buttons/video.js +65 -0
  43. package/lib/buttons/youtube.js +147 -0
  44. package/lib/const.js +18 -0
  45. package/lib/draft-converter/api-data-instance.js +58 -0
  46. package/lib/draft-converter/atomic-block-processor.js +233 -0
  47. package/lib/draft-converter/entities.js +76 -0
  48. package/lib/draft-converter/index.js +201 -0
  49. package/lib/draft-converter/inline-styles-processor.js +236 -0
  50. package/lib/draft-editor.js +918 -0
  51. package/lib/entity-decorator.js +20 -0
  52. package/lib/index.js +15 -0
  53. package/lib/modifier.js +68 -0
  54. package/lib/theme/index.js +39 -0
  55. package/package.json +41 -0
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _draftJs = require("draft-js");
9
+
10
+ var _draftRenderer = _interopRequireDefault(require("@kids-reporter/draft-renderer"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ const {
15
+ annotationDecorator,
16
+ linkDecorator
17
+ } = _draftRenderer.default.entityDecorators;
18
+ const decorators = new _draftJs.CompositeDecorator([annotationDecorator, linkDecorator]);
19
+ var _default = decorators;
20
+ exports.default = _default;
package/lib/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _draftEditor = _interopRequireDefault(require("./draft-editor"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = {
13
+ DraftEditor: _draftEditor.default
14
+ };
15
+ exports.default = _default;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Modifier = void 0;
7
+
8
+ var _draftJs = require("draft-js");
9
+
10
+ var _immutable = require("immutable");
11
+
12
+ const Modifier = { ..._draftJs.Modifier
13
+ };
14
+ /*
15
+ This method is specified for custom inline style such as 'FONT_COLOR_#ffffff'.
16
+ For this kind of inline style there may be more than one style name 'FONT_COLOR_#ffffff', 'FONT_COLOR_#000000'.
17
+ To prevent any nested specific inline style got rendered after the outer inline style being removed,
18
+ clear all specific inline styles when custom inline style is applied or removed.
19
+
20
+ Since getCurrentInlineStyle only return the inline style the starting position contains,
21
+ loop through all char of blocks to remove all nested inline styles.
22
+
23
+ Reference: https://github.com/facebook/draft-js/blob/main/src/model/transaction/ContentStateInlineStyle.js#L39-L88
24
+ */
25
+
26
+ exports.Modifier = Modifier;
27
+
28
+ Modifier.removeInlineStyleByPrefix = (contentState, selectionState, inlineStylePrefix) => {
29
+ const blockMap = contentState.getBlockMap();
30
+ const startKey = selectionState.getStartKey();
31
+ const startOffset = selectionState.getStartOffset();
32
+ const endKey = selectionState.getEndKey();
33
+ const endOffset = selectionState.getEndOffset(); // loop through all selected blocks and every block chars to remove specific inline style
34
+
35
+ const newBlocks = blockMap.skipUntil((_, k) => k === startKey).takeUntil((_, k) => k === endKey).concat((0, _immutable.Map)([[endKey, blockMap.get(endKey)]])).map((block, blockKey) => {
36
+ let sliceStart;
37
+ let sliceEnd;
38
+
39
+ if (startKey === endKey) {
40
+ sliceStart = startOffset;
41
+ sliceEnd = endOffset;
42
+ } else {
43
+ sliceStart = blockKey === startKey ? startOffset : 0;
44
+ sliceEnd = blockKey === endKey ? endOffset : block.getLength();
45
+ }
46
+
47
+ let chars = block.getCharacterList();
48
+ let current;
49
+
50
+ while (sliceStart < sliceEnd) {
51
+ current = chars.get(sliceStart);
52
+ const inlineStyle = current.getStyle().find(styleName => styleName.startsWith(inlineStylePrefix));
53
+
54
+ if (inlineStyle) {
55
+ chars = chars.set(sliceStart, _draftJs.CharacterMetadata.removeStyle(current, inlineStyle));
56
+ }
57
+
58
+ sliceStart++;
59
+ }
60
+
61
+ return block.set('characterList', chars);
62
+ });
63
+ return contentState.merge({
64
+ blockMap: blockMap.merge(newBlocks),
65
+ selectionBefore: selectionState,
66
+ selectionAfter: selectionState
67
+ });
68
+ };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.theme = exports.mediaSize = exports.default = void 0;
7
+ const mediaSize = {
8
+ xs: 0,
9
+ sm: 576,
10
+ md: 768,
11
+ lg: 960,
12
+ xl: 1200,
13
+ xxl: 1400
14
+ };
15
+ exports.mediaSize = mediaSize;
16
+ const theme = {
17
+ breakpoint: {
18
+ xs: `@media (min-width: ${mediaSize.xs}px)`,
19
+ sm: `@media (min-width: ${mediaSize.sm}px)`,
20
+ md: `@media (min-width: ${mediaSize.md}px)`,
21
+ lg: `@media (min-width: ${mediaSize.lg}px)`,
22
+ xl: `@media (min-width: ${mediaSize.xl}px)`,
23
+ xxl: `@media (min-width: ${mediaSize.xxl}px)`
24
+ },
25
+ fontSize: {
26
+ xs: 'font-size: 14px;',
27
+ sm: 'font-size: 16px;',
28
+ md: 'font-size: 18px;',
29
+ lg: 'font-size: 24px;',
30
+ xl: 'font-size: 28px;'
31
+ },
32
+ margin: {
33
+ default: 'margin: 32px auto;',
34
+ narrow: 'margin: 16px auto;'
35
+ }
36
+ };
37
+ exports.theme = theme;
38
+ var _default = theme;
39
+ exports.default = _default;
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@kids-reporter/draft-editor",
3
+ "version": "0.1.0",
4
+ "description": "",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1",
8
+ "dev": "make dev",
9
+ "build": "make build",
10
+ "clean": "make clean",
11
+ "build-lib": "make build-lib"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/@kids-reporter/cms.git",
16
+ "directory": "packages/draft-editor"
17
+ },
18
+ "keywords": [
19
+ "react",
20
+ "readr",
21
+ "draft.js",
22
+ "draft.js buttons"
23
+ ],
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "draft-js": "^0.11.7",
27
+ "@kids-reporter/draft-renderer": "0.1.0"
28
+ },
29
+ "peerDependencies": {
30
+ "react": "18.2.0",
31
+ "react-dom": "18.2.0",
32
+ "styled-components": "5.3.5",
33
+ "@keystone-6/core": "5.2.0",
34
+ "@keystone-ui/button": "^7.0.2",
35
+ "@keystone-ui/fields": "^7.2.0",
36
+ "@keystone-ui/modals": "^6.0.3"
37
+ },
38
+ "files": [
39
+ "lib"
40
+ ]
41
+ }