@mirrormedia/lilith-draft-editor 1.0.0-beta → 1.0.0-beta4

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 (171) hide show
  1. package/lib/draft-js/block-renderer/background-image-block.js +123 -0
  2. package/lib/draft-js/block-renderer/background-video-block.js +133 -0
  3. package/lib/draft-js/block-renderer/color-box-block.js +92 -0
  4. package/lib/draft-js/block-renderer/divider-block.js +24 -0
  5. package/lib/draft-js/block-renderer/embedded-code-block.js +63 -0
  6. package/lib/draft-js/block-renderer/image-block.js +47 -0
  7. package/lib/draft-js/block-renderer/info-box-block.js +89 -0
  8. package/lib/draft-js/block-renderer/media-block.js +65 -0
  9. package/lib/draft-js/block-renderer/related-post-block.js +51 -0
  10. package/lib/draft-js/block-renderer/side-index-block.js +103 -0
  11. package/lib/draft-js/block-renderer/slideshow-block.js +71 -0
  12. package/lib/draft-js/block-renderer/table-block.js +408 -0
  13. package/lib/draft-js/buttons/annotation.js +117 -0
  14. package/lib/draft-js/buttons/background-color.js +123 -0
  15. package/lib/draft-js/buttons/background-image.js +222 -0
  16. package/lib/draft-js/buttons/background-video.js +222 -0
  17. package/lib/draft-js/buttons/color-box.js +172 -0
  18. package/lib/draft-js/buttons/divider.js +63 -0
  19. package/lib/draft-js/buttons/embedded-code.js +109 -0
  20. package/lib/draft-js/buttons/enlarge.js +24 -0
  21. package/lib/draft-js/buttons/font-color.js +116 -0
  22. package/lib/draft-js/buttons/image.js +68 -0
  23. package/lib/draft-js/buttons/info-box.js +147 -0
  24. package/lib/draft-js/buttons/link.js +107 -0
  25. package/lib/draft-js/buttons/media.js +121 -0
  26. package/lib/draft-js/buttons/related-post.js +71 -0
  27. package/lib/draft-js/buttons/selector/align-selector.js +71 -0
  28. package/lib/draft-js/buttons/selector/image-selector.js +428 -0
  29. package/lib/draft-js/buttons/selector/pagination.js +82 -0
  30. package/lib/draft-js/buttons/selector/post-selector.js +317 -0
  31. package/lib/draft-js/buttons/selector/search-box.js +46 -0
  32. package/lib/draft-js/buttons/selector/video-selector.js +284 -0
  33. package/lib/draft-js/buttons/side-index.js +200 -0
  34. package/lib/draft-js/buttons/slideshow.js +71 -0
  35. package/lib/draft-js/buttons/table.js +67 -0
  36. package/lib/draft-js/buttons/text-align.js +88 -0
  37. package/lib/draft-js/editor/basic-editor.js +366 -0
  38. package/lib/draft-js/editor/block-renderer-fn.js +117 -0
  39. package/lib/draft-js/editor/entity-decorator.js +16 -0
  40. package/lib/draft-js/editor/modifier.js +68 -0
  41. package/lib/draft-js/entity-decorator/annotation-decorator.js +86 -0
  42. package/lib/draft-js/entity-decorator/link-decorator.js +39 -0
  43. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.js +91 -0
  44. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.js +91 -0
  45. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.js +84 -0
  46. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.js +84 -0
  47. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.js +90 -0
  48. package/lib/website/mirrormedia/custom/block-renderer/table-block.js +408 -0
  49. package/lib/website/mirrormedia/custom/selector/align-selector.js +71 -0
  50. package/lib/website/mirrormedia/custom/selector/image-selector.js +427 -0
  51. package/lib/website/mirrormedia/custom/selector/pagination.js +82 -0
  52. package/lib/website/mirrormedia/custom/selector/post-selector.js +318 -0
  53. package/lib/website/mirrormedia/custom/selector/search-box.js +46 -0
  54. package/lib/website/mirrormedia/custom/selector/video-selector.js +282 -0
  55. package/lib/website/mirrormedia/draft-editor/block-renderer-fn.js +117 -0
  56. package/lib/website/mirrormedia/draft-editor/entity-decorator.js +18 -0
  57. package/lib/website/mirrormedia/draft-editor/index.js +799 -0
  58. package/lib/website/mirrormedia/index.js +1 -4
  59. package/lib/website/readr/custom/block-renderer/background-image-block.js +91 -0
  60. package/lib/website/readr/custom/block-renderer/background-video-block.js +91 -0
  61. package/lib/website/readr/custom/block-renderer/color-box-block.js +84 -0
  62. package/lib/website/readr/custom/block-renderer/info-box-block.js +84 -0
  63. package/lib/website/readr/custom/block-renderer/side-index-block.js +90 -0
  64. package/lib/website/readr/custom/block-renderer/table-block.js +408 -0
  65. package/lib/website/readr/custom/selector/align-selector.js +71 -0
  66. package/lib/website/readr/custom/selector/image-selector.js +427 -0
  67. package/lib/website/readr/custom/selector/pagination.js +82 -0
  68. package/lib/website/readr/custom/selector/post-selector.js +318 -0
  69. package/lib/website/readr/custom/selector/search-box.js +46 -0
  70. package/lib/website/readr/custom/selector/video-selector.js +282 -0
  71. package/lib/website/readr/draft-editor/block-renderer-fn.js +117 -0
  72. package/lib/website/readr/draft-editor/entity-decorator.js +18 -0
  73. package/lib/website/readr/draft-editor/index.js +799 -0
  74. package/lib/website/readr/index.js +1 -4
  75. package/package.json +3 -2
  76. package/lib/draft-js/block-renderer/background-image-block.tsx +0 -113
  77. package/lib/draft-js/block-renderer/background-video-block.tsx +0 -120
  78. package/lib/draft-js/block-renderer/color-box-block.tsx +0 -85
  79. package/lib/draft-js/block-renderer/divider-block.tsx +0 -12
  80. package/lib/draft-js/block-renderer/embedded-code-block.tsx +0 -65
  81. package/lib/draft-js/block-renderer/image-block.tsx +0 -41
  82. package/lib/draft-js/block-renderer/info-box-block.tsx +0 -85
  83. package/lib/draft-js/block-renderer/media-block.tsx +0 -36
  84. package/lib/draft-js/block-renderer/related-post-block.tsx +0 -47
  85. package/lib/draft-js/block-renderer/side-index-block.tsx +0 -113
  86. package/lib/draft-js/block-renderer/slideshow-block.tsx +0 -62
  87. package/lib/draft-js/block-renderer/table-block.tsx +0 -488
  88. package/lib/draft-js/buttons/annotation.tsx +0 -113
  89. package/lib/draft-js/buttons/background-color.tsx +0 -125
  90. package/lib/draft-js/buttons/background-image.tsx +0 -276
  91. package/lib/draft-js/buttons/background-video.tsx +0 -275
  92. package/lib/draft-js/buttons/color-box.tsx +0 -207
  93. package/lib/draft-js/buttons/divider.tsx +0 -56
  94. package/lib/draft-js/buttons/embedded-code.tsx +0 -126
  95. package/lib/draft-js/buttons/enlarge.tsx +0 -11
  96. package/lib/draft-js/buttons/font-color.tsx +0 -113
  97. package/lib/draft-js/buttons/image.tsx +0 -71
  98. package/lib/draft-js/buttons/info-box.tsx +0 -170
  99. package/lib/draft-js/buttons/link.tsx +0 -103
  100. package/lib/draft-js/buttons/media.tsx +0 -120
  101. package/lib/draft-js/buttons/related-post.tsx +0 -81
  102. package/lib/draft-js/buttons/selector/align-selector.tsx +0 -65
  103. package/lib/draft-js/buttons/selector/image-selector.tsx +0 -485
  104. package/lib/draft-js/buttons/selector/pagination.tsx +0 -83
  105. package/lib/draft-js/buttons/selector/post-selector.tsx +0 -367
  106. package/lib/draft-js/buttons/selector/search-box.tsx +0 -39
  107. package/lib/draft-js/buttons/selector/video-selector.tsx +0 -312
  108. package/lib/draft-js/buttons/side-index.tsx +0 -257
  109. package/lib/draft-js/buttons/slideshow.tsx +0 -81
  110. package/lib/draft-js/buttons/table.tsx +0 -63
  111. package/lib/draft-js/buttons/text-align.tsx +0 -88
  112. package/lib/draft-js/editor/basic-editor.tsx +0 -384
  113. package/lib/draft-js/editor/block-redender-fn.tsx +0 -77
  114. package/lib/draft-js/editor/entity-decorator.tsx +0 -7
  115. package/lib/draft-js/editor/modifier.tsx +0 -71
  116. package/lib/draft-js/entity-decorator/annotation-decorator.tsx +0 -81
  117. package/lib/draft-js/entity-decorator/link-decorator.tsx +0 -27
  118. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.tsx +0 -128
  119. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.tsx +0 -135
  120. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.tsx +0 -98
  121. package/lib/website/mirrormedia/custom/block-renderer/divider-block.tsx +0 -12
  122. package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.tsx +0 -65
  123. package/lib/website/mirrormedia/custom/block-renderer/image-block.tsx +0 -41
  124. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.tsx +0 -98
  125. package/lib/website/mirrormedia/custom/block-renderer/media-block.tsx +0 -36
  126. package/lib/website/mirrormedia/custom/block-renderer/related-post-block.tsx +0 -47
  127. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.tsx +0 -125
  128. package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.tsx +0 -62
  129. package/lib/website/mirrormedia/custom/block-renderer/table-block.tsx +0 -537
  130. package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.tsx +0 -81
  131. package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.tsx +0 -27
  132. package/lib/website/mirrormedia/custom/selector/align-selector.tsx +0 -65
  133. package/lib/website/mirrormedia/custom/selector/image-selector.tsx +0 -485
  134. package/lib/website/mirrormedia/custom/selector/pagination.tsx +0 -83
  135. package/lib/website/mirrormedia/custom/selector/post-selector.tsx +0 -367
  136. package/lib/website/mirrormedia/custom/selector/search-box.tsx +0 -39
  137. package/lib/website/mirrormedia/custom/selector/video-selector.tsx +0 -310
  138. package/lib/website/mirrormedia/draft-editor/block-redender-fn.tsx +0 -77
  139. package/lib/website/mirrormedia/draft-editor/entity-decorator.tsx +0 -7
  140. package/lib/website/mirrormedia/draft-editor/index.tsx +0 -909
  141. package/lib/website/mirrormedia/draft-renderer/block-redender-fn.tsx +0 -77
  142. package/lib/website/mirrormedia/draft-renderer/entity-decorator.tsx +0 -7
  143. package/lib/website/mirrormedia/draft-renderer/index-deprecated.tsx +0 -43
  144. package/lib/website/mirrormedia/draft-renderer/index.tsx +0 -150
  145. package/lib/website/readr/custom/block-renderer/background-image-block.tsx +0 -128
  146. package/lib/website/readr/custom/block-renderer/background-video-block.tsx +0 -135
  147. package/lib/website/readr/custom/block-renderer/color-box-block.tsx +0 -98
  148. package/lib/website/readr/custom/block-renderer/divider-block.tsx +0 -12
  149. package/lib/website/readr/custom/block-renderer/embedded-code-block.tsx +0 -65
  150. package/lib/website/readr/custom/block-renderer/image-block.tsx +0 -41
  151. package/lib/website/readr/custom/block-renderer/info-box-block.tsx +0 -98
  152. package/lib/website/readr/custom/block-renderer/media-block.tsx +0 -36
  153. package/lib/website/readr/custom/block-renderer/related-post-block.tsx +0 -47
  154. package/lib/website/readr/custom/block-renderer/side-index-block.tsx +0 -125
  155. package/lib/website/readr/custom/block-renderer/slideshow-block.tsx +0 -62
  156. package/lib/website/readr/custom/block-renderer/table-block.tsx +0 -537
  157. package/lib/website/readr/custom/entity-decorator/annotation-decorator.tsx +0 -81
  158. package/lib/website/readr/custom/entity-decorator/link-decorator.tsx +0 -27
  159. package/lib/website/readr/custom/selector/align-selector.tsx +0 -65
  160. package/lib/website/readr/custom/selector/image-selector.tsx +0 -485
  161. package/lib/website/readr/custom/selector/pagination.tsx +0 -83
  162. package/lib/website/readr/custom/selector/post-selector.tsx +0 -367
  163. package/lib/website/readr/custom/selector/search-box.tsx +0 -39
  164. package/lib/website/readr/custom/selector/video-selector.tsx +0 -310
  165. package/lib/website/readr/draft-editor/block-redender-fn.tsx +0 -77
  166. package/lib/website/readr/draft-editor/entity-decorator.tsx +0 -7
  167. package/lib/website/readr/draft-editor/index.tsx +0 -909
  168. package/lib/website/readr/draft-renderer/block-redender-fn.tsx +0 -77
  169. package/lib/website/readr/draft-renderer/entity-decorator.tsx +0 -7
  170. package/lib/website/readr/draft-renderer/index-deprecated.tsx +0 -43
  171. package/lib/website/readr/draft-renderer/index.tsx +0 -150
@@ -1,77 +0,0 @@
1
- import { EmbeddedCodeBlock } from '../custom/block-renderer/embedded-code-block'
2
- import { MediaBlock } from '../custom/block-renderer/media-block'
3
- import { ImageBlock } from '../custom/block-renderer/image-block'
4
- import { InfoBoxBlock } from '../custom/block-renderer/info-box-block'
5
- import {
6
- SlideshowBlock,
7
- SlideshowBlockV2,
8
- } from '../custom/block-renderer/slideshow-block'
9
- import { DividerBlock } from '../custom/block-renderer/divider-block'
10
- import { TableBlock } from '../custom/block-renderer/table-block'
11
- import { ColorBoxBlock } from '../custom/block-renderer/color-box-block'
12
- import { BGImageBlock } from '../custom/block-renderer/background-image-block'
13
- import { BGVideoBlock } from '../custom/block-renderer/background-video-block'
14
- import { RelatedPostBlock } from '../custom/block-renderer/related-post-block'
15
- import { SideIndexBlock } from '../custom/block-renderer/side-index-block'
16
-
17
- const AtomicBlock = (props) => {
18
- const entity = props.contentState.getEntity(props.block.getEntityAt(0))
19
-
20
- const entityType = entity.getType()
21
-
22
- switch (entityType) {
23
- case 'audioLink':
24
- case 'imageLink':
25
- case 'videoLink': {
26
- return MediaBlock(entity)
27
- }
28
- case 'image': {
29
- return ImageBlock(entity)
30
- }
31
- case 'slideshow': {
32
- return SlideshowBlock(entity)
33
- }
34
- case 'slideshow-v2': {
35
- return SlideshowBlockV2(entity)
36
- }
37
- case 'EMBEDDEDCODE': {
38
- return EmbeddedCodeBlock(entity)
39
- }
40
- case 'INFOBOX': {
41
- return InfoBoxBlock(props)
42
- }
43
- case 'DIVIDER': {
44
- return DividerBlock()
45
- }
46
- case 'TABLE': {
47
- return TableBlock(props)
48
- }
49
- case 'COLORBOX': {
50
- return ColorBoxBlock(props)
51
- }
52
- case 'BACKGROUNDIMAGE': {
53
- return BGImageBlock(props)
54
- }
55
- case 'BACKGROUNDVIDEO': {
56
- return BGVideoBlock(props)
57
- }
58
- case 'RELATEDPOST': {
59
- return RelatedPostBlock(entity)
60
- }
61
- case 'SIDEINDEX': {
62
- return SideIndexBlock(props)
63
- }
64
- }
65
- return null
66
- }
67
-
68
- export function atomicBlockRenderer(block) {
69
- if (block.getType() === 'atomic') {
70
- return {
71
- component: AtomicBlock,
72
- editable: false,
73
- }
74
- }
75
-
76
- return null
77
- }
@@ -1,7 +0,0 @@
1
- import { CompositeDecorator } from 'draft-js'
2
- import { annotationDecorator } from '../custom/entity-decorator/annotation-decorator'
3
- import { linkDecorator } from '../custom/entity-decorator/link-decorator'
4
-
5
- const decorators = new CompositeDecorator([annotationDecorator, linkDecorator])
6
-
7
- export default decorators
@@ -1,43 +0,0 @@
1
- import React from 'react'
2
- import { Editor, EditorState, convertFromRaw } from 'draft-js'
3
- import decorators from '../draft-editor/entity-decorator'
4
- import { atomicBlockRenderer } from '../draft-editor/block-redender-fn'
5
-
6
- // to be separate
7
- const styleMap = {
8
- CODE: {
9
- backgroundColor: 'rgba(0, 0, 0, 0.05)',
10
- fontFamily: '"Inconsolata", "Menlo", "Consolas", monospace',
11
- fontSize: 16,
12
- padding: 2,
13
- },
14
- }
15
- const blockRendererFn = (block) => {
16
- const atomicBlockObj = atomicBlockRenderer(block)
17
- return atomicBlockObj
18
- }
19
-
20
- const getBlockStyle = (block) => {
21
- switch (block.getType()) {
22
- case 'blockquote':
23
- return 'RichEditor-blockquote'
24
-
25
- default:
26
- return null
27
- }
28
- }
29
-
30
- export default function DraftRenderer({ rawContentBlock }) {
31
- const contentState = convertFromRaw(rawContentBlock)
32
- const editorState = EditorState.createWithContent(contentState, decorators)
33
-
34
- return (
35
- <Editor
36
- editorState={editorState}
37
- readOnly
38
- customStyleMap={styleMap}
39
- blockRendererFn={blockRendererFn}
40
- blockStyleFn={getBlockStyle}
41
- />
42
- )
43
- }
@@ -1,150 +0,0 @@
1
- import React from 'react'
2
- import styled from 'styled-components'
3
-
4
- import { Editor, EditorState } from 'draft-js'
5
-
6
- import { atomicBlockRenderer } from './block-redender-fn'
7
- import decorators from './entity-decorator'
8
-
9
- import { CUSTOM_STYLE_PREFIX_FONT_COLOR } from '../../../draft-js/buttons/font-color'
10
- import { CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR } from '../../../draft-js/buttons/background-color'
11
-
12
- const DraftEditorWrapper = styled.div`
13
- /* Rich-editor default setting (.RichEditor-root)*/
14
- background: #fff;
15
- border: 1px solid #ddd;
16
- font-family: 'Georgia', serif;
17
- font-size: 14px;
18
- padding: 15px;
19
-
20
- /* Custom setting */
21
- font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
22
- 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
23
- 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
24
- width: 100%;
25
- height: 100%;
26
- background: rgb(255, 255, 255);
27
- border-radius: 6px;
28
- padding: 0 1rem 1rem;
29
-
30
- /* Draft built-in buttons' style */
31
- .public-DraftStyleDefault-header-two {
32
- }
33
- .public-DraftStyleDefault-header-three {
34
- }
35
- .public-DraftStyleDefault-header-four {
36
- }
37
- .public-DraftStyleDefault-blockquote {
38
- }
39
- .public-DraftStyleDefault-ul {
40
- }
41
- .public-DraftStyleDefault-unorderedListItem {
42
- }
43
- .public-DraftStyleDefault-ol {
44
- }
45
- .public-DraftStyleDefault-orderedListItem {
46
- }
47
- /* code-block */
48
- .public-DraftStyleDefault-pre {
49
- }
50
- .alignCenter * {
51
- text-align: center;
52
- }
53
- .alignLeft * {
54
- text-align: left;
55
- }
56
- `
57
-
58
- type RichTextEditorProps = {
59
- onChange: (editorState) => void
60
- editorState: EditorState
61
- }
62
- type State = {
63
- isEnlarged?: boolean
64
- readOnly?: boolean
65
- }
66
-
67
- const customStyleMap = {
68
- CODE: {
69
- backgroundColor: 'rgba(0, 0, 0, 0.05)',
70
- fontFamily: '"Inconsolata", "Menlo", "Consolas", monospace',
71
- fontSize: 16,
72
- padding: 2,
73
- },
74
- }
75
-
76
- const customStyleFn = (style) => {
77
- return style.reduce((styles, styleName) => {
78
- if (styleName?.startsWith(CUSTOM_STYLE_PREFIX_FONT_COLOR)) {
79
- styles['color'] = styleName.split(CUSTOM_STYLE_PREFIX_FONT_COLOR)[1]
80
- }
81
- if (styleName?.startsWith(CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)) {
82
- styles['backgroundColor'] = styleName.split(
83
- CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR
84
- )[1]
85
- }
86
- return styles
87
- }, {})
88
- }
89
-
90
- const blockStyleFn = (editorState, block) => {
91
- const entityKey = block.getEntityAt(0)
92
- const entity = entityKey
93
- ? editorState.getCurrentContent().getEntity(entityKey)
94
- : null
95
-
96
- let result = ''
97
- const blockData = block.getData()
98
- if (blockData) {
99
- const textAlign = blockData?.get('textAlign')
100
- if (textAlign === 'center') {
101
- result += 'alignCenter '
102
- } else if (textAlign === 'left') {
103
- result += 'alignLeft '
104
- }
105
- }
106
-
107
- switch (block.getType()) {
108
- case 'header-two':
109
- case 'header-three':
110
- case 'header-four':
111
- case 'blockquote':
112
- result += 'public-DraftStyleDefault-' + block.getType()
113
- break
114
- case 'atomic':
115
- if (entity.getData()?.alignment) {
116
- // support all atomic block to set alignment
117
- result += ' ' + entity.getData().alignment
118
- }
119
- break
120
- default:
121
- break
122
- }
123
- return result
124
- }
125
-
126
- const blockRendererFn = (block) => {
127
- const atomicBlockObj = atomicBlockRenderer(block)
128
- return atomicBlockObj
129
- }
130
-
131
- function RichTextEditor({ editorState }) {
132
- return (
133
- <DraftEditorWrapper>
134
- <Editor
135
- editorState={editorState}
136
- customStyleMap={customStyleMap}
137
- blockStyleFn={blockStyleFn.bind(null, editorState)}
138
- blockRendererFn={blockRendererFn}
139
- customStyleFn={customStyleFn}
140
- readOnly
141
- />
142
- </DraftEditorWrapper>
143
- )
144
- }
145
-
146
- const DraftRenderer = {
147
- RichTextEditor,
148
- decorators,
149
- }
150
- export default DraftRenderer
@@ -1,128 +0,0 @@
1
- import React, { useState } from 'react'
2
- import styled from 'styled-components'
3
- import { ContentBlock, ContentState } from 'draft-js'
4
- import draftConverter from '../../../../draft-js/editor/draft-converter'
5
- import { BGImageInput } from '../../../../draft-js/buttons/background-image'
6
-
7
- const BGImageRenderWrapper = styled.div`
8
- padding: 30px;
9
- position: relative;
10
- width: 100%;
11
- height: 100%;
12
- background-image: url(${({ image }) => image});
13
- background-size: cover;
14
- background-position: center center;
15
- ${({ textBlockAlign }) => {
16
- if (textBlockAlign === 'left') {
17
- return `padding-right: 50%;`
18
- } else if (textBlockAlign === 'right') {
19
- return `padding-left: 50%;`
20
- } else if (textBlockAlign === 'bottom') {
21
- return `padding-top: 50%;`
22
- }
23
- }}
24
- `
25
-
26
- const BGImageRenderBody = styled.div`
27
- background: rgba(0, 0, 0, 0.5);
28
- padding: 4px 20px;
29
- margin-bottom: 10px;
30
- `
31
-
32
- const BGImageRenderButton = styled.span`
33
- cursor: pointer;
34
- background-color: white;
35
- padding: 6px;
36
- border-radius: 6px;
37
- `
38
-
39
- type BGImageBlockProps = {
40
- block: ContentBlock
41
- blockProps: {
42
- onEditStart: () => void
43
- onEditFinish: ({
44
- entityKey,
45
- entityData,
46
- }: {
47
- entityKey?: string
48
- entityData?: Record<string, unknown>
49
- }) => void
50
- }
51
- contentState: ContentState
52
- }
53
-
54
- export function BGImageBlock(props: BGImageBlockProps) {
55
- const { block, contentState } = props
56
- const entityKey = block.getEntityAt(0)
57
- const entity = contentState.getEntity(entityKey)
58
- const { textBlockAlign, image, body } = entity.getData()
59
-
60
- return (
61
- <React.Fragment>
62
- <BGImageRenderWrapper
63
- image={image?.imageFile?.url}
64
- textBlockAlign={textBlockAlign}
65
- >
66
- <BGImageRenderBody dangerouslySetInnerHTML={{ __html: body }} />
67
- </BGImageRenderWrapper>
68
- </React.Fragment>
69
- )
70
- }
71
-
72
- export function BGImageEditorBlock(props: BGImageBlockProps) {
73
- const [toShowInput, setToShowInput] = useState(false)
74
- const { block, blockProps, contentState } = props
75
- const { onEditStart, onEditFinish } = blockProps
76
- const entityKey = block.getEntityAt(0)
77
- const entity = contentState.getEntity(entityKey)
78
- const { textBlockAlign, image, rawContentState } = entity.getData()
79
- const onChange = ({
80
- textBlockAlign: newTextBlockAlign,
81
- image: newImage,
82
- rawContentState: newRawContentState,
83
- }) => {
84
- // close `BGImageInput`
85
- setToShowInput(false)
86
- onEditFinish({
87
- entityKey,
88
- entityData: {
89
- textBlockAlign: newTextBlockAlign,
90
- image: newImage,
91
- body: draftConverter.convertToHtml(newRawContentState),
92
- rawContentState: newRawContentState,
93
- },
94
- })
95
- }
96
-
97
- return (
98
- <React.Fragment>
99
- <BGImageInput
100
- textBlockAlign={textBlockAlign}
101
- image={image}
102
- rawContentStateForBGImageEditor={rawContentState}
103
- onChange={onChange}
104
- onCancel={() => {
105
- onEditFinish({})
106
- setToShowInput(false)
107
- }}
108
- isOpen={toShowInput}
109
- />
110
- <div>
111
- <BGImageBlock {...props} />
112
- <div>
113
- <BGImageRenderButton
114
- onClick={() => {
115
- // call `onEditStart` prop as we are trying to update the BGImage entity
116
- onEditStart()
117
- // open `BGImageInput`
118
- setToShowInput(true)
119
- }}
120
- >
121
- <i className="fa-solid fa-pen"></i>
122
- <span>Modify</span>
123
- </BGImageRenderButton>
124
- </div>
125
- </div>
126
- </React.Fragment>
127
- )
128
- }
@@ -1,135 +0,0 @@
1
- import React, { useState } from 'react'
2
- import styled from 'styled-components'
3
- import { ContentBlock, ContentState } from 'draft-js'
4
- import draftConverter from '../../../../draft-js/editor/draft-converter'
5
- import { BGVideoInput } from '../../../../draft-js/buttons/background-video'
6
-
7
- const BGVideoRenderWrapper = styled.div`
8
- position: relative;
9
- padding: 30px;
10
- width: 100%;
11
- ${({ textBlockAlign }) => {
12
- if (textBlockAlign === 'left') {
13
- return `padding-right: 50%;`
14
- } else if (textBlockAlign === 'right') {
15
- return `padding-left: 50%;`
16
- } else if (textBlockAlign === 'bottom') {
17
- return `padding-top: 50%;`
18
- }
19
- }}
20
- `
21
-
22
- const BGVideoRednerVideo = styled.video`
23
- position: absolute;
24
- width: 100%;
25
- height: 100%;
26
- top: 0;
27
- left: 0;
28
- z-index: -1;
29
- background-color: black;
30
- `
31
-
32
- const BGVideoRenderBody = styled.div`
33
- background: rgba(0, 0, 0, 0.5);
34
- padding: 4px 20px;
35
- margin-bottom: 10px;
36
- `
37
-
38
- const BGVideoRenderButton = styled.span`
39
- cursor: pointer;
40
- background-color: white;
41
- padding: 6px;
42
- border-radius: 6px;
43
- `
44
-
45
- type BGVideoBlockProps = {
46
- block: ContentBlock
47
- blockProps: {
48
- onEditStart: () => void
49
- onEditFinish: ({
50
- entityKey,
51
- entityData,
52
- }: {
53
- entityKey?: string
54
- entityData?: Record<string, unknown>
55
- }) => void
56
- }
57
- contentState: ContentState
58
- }
59
-
60
- export function BGVideoBlock(props: BGVideoBlockProps) {
61
- const { block, contentState } = props
62
- const entityKey = block.getEntityAt(0)
63
- const entity = contentState.getEntity(entityKey)
64
- const { textBlockAlign, video, body } = entity.getData()
65
-
66
- return (
67
- <React.Fragment>
68
- <BGVideoRenderWrapper textBlockAlign={textBlockAlign}>
69
- <BGVideoRednerVideo muted autoPlay loop>
70
- <source src={video?.url} />
71
- <source src={video?.file?.url} />
72
- </BGVideoRednerVideo>
73
- <BGVideoRenderBody dangerouslySetInnerHTML={{ __html: body }} />
74
- </BGVideoRenderWrapper>
75
- </React.Fragment>
76
- )
77
- }
78
-
79
- export function BGVideoEditorBlock(props: BGVideoBlockProps) {
80
- const [toShowInput, setToShowInput] = useState(false)
81
- const { block, blockProps, contentState } = props
82
- const { onEditStart, onEditFinish } = blockProps
83
- const entityKey = block.getEntityAt(0)
84
- const entity = contentState.getEntity(entityKey)
85
- const { textBlockAlign, video, rawContentState } = entity.getData()
86
- const onChange = ({
87
- textBlockAlign: newTextBlockAlign,
88
- video: newVideo,
89
- rawContentState: newRawContentState,
90
- }) => {
91
- // close `BGVideoInput`
92
- setToShowInput(false)
93
- onEditFinish({
94
- entityKey,
95
- entityData: {
96
- textBlockAlign: newTextBlockAlign,
97
- video: newVideo,
98
- body: draftConverter.convertToHtml(newRawContentState),
99
- rawContentState: newRawContentState,
100
- },
101
- })
102
- }
103
-
104
- return (
105
- <React.Fragment>
106
- <BGVideoInput
107
- textBlockAlign={textBlockAlign}
108
- video={video}
109
- rawContentStateForBGVideoEditor={rawContentState}
110
- onChange={onChange}
111
- onCancel={() => {
112
- onEditFinish({})
113
- setToShowInput(false)
114
- }}
115
- isOpen={toShowInput}
116
- />
117
- <div>
118
- <BGVideoBlock {...props} />
119
- <div>
120
- <BGVideoRenderButton
121
- onClick={() => {
122
- // call `onEditStart` prop as we are trying to update the BGVideo entity
123
- onEditStart()
124
- // open `BGVideoInput`
125
- setToShowInput(true)
126
- }}
127
- >
128
- <i className="fa-solid fa-pen"></i>
129
- <span>Modify</span>
130
- </BGVideoRenderButton>
131
- </div>
132
- </div>
133
- </React.Fragment>
134
- )
135
- }
@@ -1,98 +0,0 @@
1
- import React, { useState } from 'react'
2
- import styled from 'styled-components'
3
- import { ContentBlock, ContentState } from 'draft-js'
4
- import draftConverter from '../../../../draft-js/editor/draft-converter'
5
- import { ColorBoxInput } from '../../../../draft-js/buttons/color-box'
6
-
7
- const ColorBoxRenderWrapper = styled.div`
8
- background-color: ${(props) => (props.color ? props.color : '#F5F4F3')};
9
- padding: 30px;
10
- position: relative;
11
- color: white;
12
- `
13
-
14
- const ColorBoxRenderButton = styled.div`
15
- cursor: pointer;
16
- `
17
-
18
- type ColorBoxBlockProps = {
19
- block: ContentBlock
20
- blockProps: {
21
- onEditStart: () => void
22
- onEditFinish: ({
23
- entityKey,
24
- entityData,
25
- }: {
26
- entityKey?: string
27
- entityData?: Record<string, unknown>
28
- }) => void
29
- }
30
- contentState: ContentState
31
- }
32
-
33
- export function ColorBoxBlock(props: ColorBoxBlockProps) {
34
- const { block, contentState } = props
35
- const entityKey = block.getEntityAt(0)
36
- const entity = contentState.getEntity(entityKey)
37
- const { color, body } = entity.getData()
38
-
39
- return (
40
- <ColorBoxRenderWrapper color={color}>
41
- <div dangerouslySetInnerHTML={{ __html: body }} />
42
- </ColorBoxRenderWrapper>
43
- )
44
- }
45
-
46
- export function ColorBoxEditorBlock(props: ColorBoxBlockProps) {
47
- const [toShowInput, setToShowInput] = useState(false)
48
- const { block, blockProps, contentState } = props
49
- const { onEditStart, onEditFinish } = blockProps
50
- const entityKey = block.getEntityAt(0)
51
- const entity = contentState.getEntity(entityKey)
52
- const { color, rawContentState } = entity.getData()
53
- const onChange = ({
54
- color: newColor,
55
- rawContentState: newRawContentState,
56
- }) => {
57
- // close `ColorBoxInput`
58
- setToShowInput(false)
59
-
60
- onEditFinish({
61
- entityKey,
62
- entityData: {
63
- color: newColor,
64
- body: draftConverter.convertToHtml(newRawContentState),
65
- rawContentState: newRawContentState,
66
- },
67
- })
68
- }
69
-
70
- return (
71
- <React.Fragment>
72
- <ColorBoxInput
73
- color={color}
74
- rawContentStateForColorBoxEditor={rawContentState}
75
- onChange={onChange}
76
- onCancel={() => {
77
- onEditFinish({})
78
- setToShowInput(false)
79
- }}
80
- isOpen={toShowInput}
81
- />
82
- <div>
83
- <ColorBoxBlock {...props} />
84
- <ColorBoxRenderButton
85
- onClick={() => {
86
- // call `onEditStart` prop as we are trying to update the ColorBox entity
87
- onEditStart()
88
- // open `ColorBoxInput`
89
- setToShowInput(true)
90
- }}
91
- >
92
- <i className="fa-solid fa-pen"></i>
93
- <span>Modify</span>
94
- </ColorBoxRenderButton>
95
- </div>
96
- </React.Fragment>
97
- )
98
- }
@@ -1,12 +0,0 @@
1
- import React from 'react'
2
- import styled from 'styled-components'
3
-
4
- const Divider = styled.hr`
5
- box-sizing: border-box;
6
- border-width: 1px;
7
- border-style: inset;
8
- `
9
-
10
- export const DividerBlock = () => {
11
- return <Divider />
12
- }