@vonaffenfels/slate-editor 1.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/.babelrc +44 -0
- package/README.md +5 -0
- package/componentLoader.js +52 -0
- package/dist/BlockEditor.css +93 -0
- package/dist/BlockEditor.js +2 -0
- package/dist/BlockEditor.js.LICENSE.txt +61 -0
- package/dist/Renderer.js +2 -0
- package/dist/Renderer.js.LICENSE.txt +15 -0
- package/dist/fromHTML.js +1 -0
- package/dist/index.css +93 -0
- package/dist/index.js +2 -0
- package/dist/index.js.LICENSE.txt +69 -0
- package/dist/toHTML.js +2 -0
- package/dist/toHTML.js.LICENSE.txt +23 -0
- package/dist/toText.js +2 -0
- package/dist/toText.js.LICENSE.txt +23 -0
- package/package.json +79 -0
- package/postcss.config.js +7 -0
- package/scss/demo.scss +142 -0
- package/scss/editor.scss +394 -0
- package/scss/storybook.scss +66 -0
- package/scss/toolbar.scss +160 -0
- package/src/BlockEditor.js +252 -0
- package/src/Blocks/EmptyBlock.js +12 -0
- package/src/Blocks/EmptyWrapper.js +5 -0
- package/src/Blocks/ErrorBoundary.js +41 -0
- package/src/Blocks/LayoutBlock.js +179 -0
- package/src/Blocks/LayoutSlot.js +61 -0
- package/src/Context/StorybookContext.js +7 -0
- package/src/Nodes/Default.js +151 -0
- package/src/Nodes/Element.js +72 -0
- package/src/Nodes/Leaf.js +40 -0
- package/src/Nodes/Storybook.js +170 -0
- package/src/Nodes/StorybookDisplay.js +118 -0
- package/src/Nodes/Text.js +67 -0
- package/src/Renderer.js +41 -0
- package/src/Serializer/Html.js +43 -0
- package/src/Serializer/Serializer.js +318 -0
- package/src/Serializer/Text.js +18 -0
- package/src/Serializer/ads.js +175 -0
- package/src/Serializer/index.js +4 -0
- package/src/SidebarEditor/SidebarEditorField.js +249 -0
- package/src/SidebarEditor.css +90 -0
- package/src/SidebarEditor.js +236 -0
- package/src/Storybook.js +152 -0
- package/src/Toolbar/Align.js +65 -0
- package/src/Toolbar/Block.js +121 -0
- package/src/Toolbar/Element.js +49 -0
- package/src/Toolbar/Formats.js +60 -0
- package/src/Toolbar/Insert.js +29 -0
- package/src/Toolbar/Layout.js +333 -0
- package/src/Toolbar/Link.js +165 -0
- package/src/Toolbar/Toolbar.js +164 -0
- package/src/Tools/Margin.js +52 -0
- package/src/dev/App.js +61 -0
- package/src/dev/draftToSlate.json +3148 -0
- package/src/dev/index.css +3 -0
- package/src/dev/index.html +11 -0
- package/src/dev/index.js +5 -0
- package/src/dev/sampleValue1.json +4295 -0
- package/src/dev/sampleValue2.json +0 -0
- package/src/dev/sampleValueValid.json +411 -0
- package/src/dev/testComponents/TestStory.js +9 -0
- package/src/dev/testComponents/TestStory.stories.js +172 -0
- package/src/dev/testSampleValue.json +747 -0
- package/src/fromHTML.js +5 -0
- package/src/index.js +9 -0
- package/src/plugins/ListItem.js +49 -0
- package/src/plugins/SoftBreak.js +24 -0
- package/src/toHTML.js +7 -0
- package/src/toText.js +7 -0
- package/src/util.js +20 -0
- package/storyLoader.js +46 -0
- package/tailwind.config.js +5 -0
- package/webpack.config.build.js +53 -0
- package/webpack.config.dev.js +61 -0
- package/webpack.config.js +117 -0
package/.babelrc
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"presets": [
|
|
3
|
+
"next/babel",
|
|
4
|
+
[
|
|
5
|
+
"@babel/preset-env",
|
|
6
|
+
{
|
|
7
|
+
"modules": false,
|
|
8
|
+
"targets": {
|
|
9
|
+
"browsers": [
|
|
10
|
+
"last 2 Chrome versions",
|
|
11
|
+
"last 2 Firefox versions",
|
|
12
|
+
"last 2 Safari versions",
|
|
13
|
+
"last 2 iOS versions",
|
|
14
|
+
"last 1 Android version",
|
|
15
|
+
"last 1 ChromeAndroid version",
|
|
16
|
+
"ie 11"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"@babel/preset-react"
|
|
22
|
+
],
|
|
23
|
+
"plugins": [
|
|
24
|
+
[
|
|
25
|
+
"@babel/plugin-proposal-private-methods",
|
|
26
|
+
{
|
|
27
|
+
"loose": true
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
"@babel/plugin-proposal-private-property-in-object",
|
|
32
|
+
{
|
|
33
|
+
"loose": true
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
[
|
|
37
|
+
"@babel/plugin-proposal-class-properties",
|
|
38
|
+
{
|
|
39
|
+
"loose": true
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"@babel/plugin-syntax-dynamic-import"
|
|
43
|
+
]
|
|
44
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const walkSync = require("walk-sync");
|
|
2
|
+
|
|
3
|
+
module.exports = async function componentLoader() {
|
|
4
|
+
const options = this.getOptions();
|
|
5
|
+
|
|
6
|
+
const files = walkSync(options.componentRoot, {
|
|
7
|
+
directories: false,
|
|
8
|
+
globs: ["**/*.js", "**/*.jsx", "**/*.ts"],
|
|
9
|
+
ignore: [
|
|
10
|
+
"**/*.stories.js",
|
|
11
|
+
"**/*.stories.jsx",
|
|
12
|
+
"**/*.stories.ts",
|
|
13
|
+
"**/*.loader.js",
|
|
14
|
+
"**/*.loader.jsx",
|
|
15
|
+
"**/*.loader.ts",
|
|
16
|
+
"atomic/**/*",
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
console.log(`Found ${files.length} components in ${options.componentRoot}`);
|
|
21
|
+
const components = files.map(file => {
|
|
22
|
+
let componentNameParts = file.split(".");
|
|
23
|
+
componentNameParts.pop();
|
|
24
|
+
return {name: componentNameParts.join("/"), file: `${options.componentImportRoot}/${file}`};
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
const componentImports = components.map(component => {
|
|
28
|
+
return `const ${component.name} = dynamic(() => import("${component.file}").then(v => v?.[${component.name}] || v.default));`;
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
return `
|
|
32
|
+
import dynamic from 'next/dynamic';
|
|
33
|
+
|
|
34
|
+
${componentImports.join("\n")}
|
|
35
|
+
|
|
36
|
+
export default function componentLoader(block) {
|
|
37
|
+
const localBlock = String(block).toLowerCase();
|
|
38
|
+
|
|
39
|
+
switch(localBlock) {
|
|
40
|
+
${components.map(component => {
|
|
41
|
+
return `
|
|
42
|
+
case "${component.name.toLowerCase()}":
|
|
43
|
+
return ${component.name};
|
|
44
|
+
`;
|
|
45
|
+
})}
|
|
46
|
+
default:
|
|
47
|
+
console.warn(\`No Component found for \${block}\`);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
.toolbar{background-color:rgba(255,255,255,.95);border-bottom:1px solid rgba(0,0,0,.3);display:none;flex-direction:row;justify-content:space-between;padding:5px;position:absolute;z-index:500}.toolbar.toolbar-static{display:block;position:fixed;width:100%;max-width:100%;top:0px;left:0px}.toolbar.active{display:block}.toolbar .toolbar-btns{display:flex}.toolbar .toolbar-btn{border-radius:3px;color:#000;cursor:pointer;font-weight:bold;margin-right:5px;padding:5px 7px;z-index:500;position:relative;display:block}.toolbar .toolbar-btn.active{background-color:rgba(0,0,0,.3)}.toolbar .toolbar-btn:last-child{margin-right:0px}.toolbar .toolbar-btn:hover,.toolbar .toolbar-btn:active{background-color:rgba(0,0,0,.2)}.toolbar .toolbar-btn:hover .toolbar-btn-config,.toolbar .toolbar-btn:active .toolbar-btn-config{display:block}.toolbar .toolbar-btn .toolbar-btn-config{position:absolute;top:28px;left:0px;display:none;background-color:rgba(255,255,255,.95);border-bottom:1px solid rgba(0,0,0,.3);padding:5px 7px}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner{display:flex;flex-direction:column}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner .toolbar-btn-config-row{min-width:250px;padding:5px 7px;display:flex;flex-direction:row}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner .toolbar-btn-config-row .toolbar-form-label{flex-grow:0;padding:0 7px 0 0}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner .toolbar-btn-config-row .toolbar-form-input{flex-grow:1}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner .toolbar-btn-config-row .toolbar-form-input input{padding:5px;border:1px solid gray;background-color:#fff;color:#000}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner .toolbar-btn-config-row .toolbar-form-input input[type=checkbox]:checked{color:#fff;background-color:#000}.toolbar .toolbar-btn .toolbar-btn-config .toolbar-btn-config-inner .toolbar-btn-config-row .toolbar-btn{display:flex;flex-grow:1;border:1px solid #000}.toolbar .toolbar-btn-expand{z-index:500;display:block;max-height:28px;overflow:hidden}.toolbar .toolbar-btn-expand .toolbar-btn-expand-inner{display:flex;flex-direction:column}.toolbar .toolbar-btn-expand .toolbar-btn-expand-inner .toolbar-btn.active{order:-1}.toolbar .toolbar-btn-expand:hover{overflow:visible}.toolbar .toolbar-btn-expand:hover .toolbar-btn-expand-inner{background-color:rgba(255,255,255,.95);border-bottom:1px solid rgba(0,0,0,.3)}.toolbar .toolbar-btn-expand-right{z-index:500;display:block;max-height:28px;overflow:hidden}.toolbar .toolbar-btn-expand-right .toolbar-btn-expand-inner{left:100%;display:flex;flex-direction:column}.toolbar .toolbar-btn-expand-right .toolbar-btn-expand-inner .toolbar-btn.active{order:-1}.toolbar .toolbar-btn-expand-right:hover{overflow:visible}.toolbar .toolbar-btn-expand-right:hover .toolbar-btn-expand-inner{background-color:rgba(255,255,255,.95);border-bottom:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
.storybook-element{display:inline}.storybook-element.storybook-element-float-left{float:left}.storybook-element.storybook-element-float-right{float:right}.storybook-element .storybook-element-component{user-select:none;display:block}.storybook-element .storybook-element-component.storybook-inline{display:inline-block}.storybook-element .storybook-element-component .editor-empty-element{background-color:red;border:1px solid #000;min-height:20px;min-width:100px}.storybook-element .storybook-element-component .storybook-element-display:empty{display:block;background-color:red;border:1px solid #000;min-height:30px;min-width:100px}.storybook-element .storybook-element-component .storybook-element-display.storybook-element-display-empty{display:block;background-color:red;border:1px solid #000;color:#fff;font-weight:bold;font-size:110%;padding:10px;min-height:30px;min-width:100px;position:relative}.storybook-element .storybook-element-component .storybook-element-display.storybook-element-display-empty::after{position:absolute;top:0px;left:0px;content:attr(data-content)}.storybook-element .storybook-element-error{background-color:red;padding:15px;font-size:18px;font-weight:bold;min-height:100px;min-width:100px}
|
|
3
|
+
.block-editor-wrapper{position:relative;display:flex;height:100%;max-height:100%;max-width:100%;width:100%}.block-editor-wrapper.storybook-active .slate-editor{display:none;overflow:hidden}.block-editor-wrapper .storybook-target{display:block;height:100%;left:0px;position:fixed;top:0px;width:100%;z-index:1000}.block-editor-wrapper .storybook-target:empty{display:none}.block-editor-wrapper .storybook-target .storybook-frame{height:100%;width:100%}.block-editor-wrapper .storybook-target .storybook-frame iframe{height:100%;width:100%}.block-editor-wrapper .slate-editor{max-height:100%;height:100%;z-index:100;max-width:100%;overflow-y:auto;padding:40px 60px 0 60px;position:relative;width:100%}.block-editor-wrapper .slate-editor span[data-slate-node=text]{font-family:"Font TWO BR",sans-serif}.block-editor-wrapper .slate-editor p[data-slate-node=element]{padding-bottom:20px;position:relative}.block-editor-wrapper .slate-editor p[data-slate-node=element]:after{font-size:1em;content:"P";color:#cecece;position:absolute;left:-20px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor h1[data-slate-node=element]{font-size:2em;position:relative}.block-editor-wrapper .slate-editor h1[data-slate-node=element]:after{content:"h1";color:#cecece;position:absolute;left:-26px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor h2[data-slate-node=element]{font-size:1.5em;position:relative}.block-editor-wrapper .slate-editor h2[data-slate-node=element]:after{content:"h2";color:#cecece;position:absolute;left:-26px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor h3[data-slate-node=element]{font-size:1.3em;position:relative}.block-editor-wrapper .slate-editor h3[data-slate-node=element]:after{content:"h3";color:#cecece;position:absolute;left:-26px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor h4[data-slate-node=element]{font-size:1.1em;position:relative}.block-editor-wrapper .slate-editor h4[data-slate-node=element]:after{content:"h4";color:#cecece;position:absolute;left:-26px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor h5[data-slate-node=element]{font-size:1em;position:relative}.block-editor-wrapper .slate-editor h5[data-slate-node=element]:after{content:"h5";color:#cecece;position:absolute;left:-26px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor h6[data-slate-node=element]{font-size:1em;position:relative}.block-editor-wrapper .slate-editor h6[data-slate-node=element]:after{content:"h6";color:#cecece;position:absolute;left:-26px;text-transform:uppercase;top:1px;user-select:none}.block-editor-wrapper .slate-editor ul[data-slate-node=element]{list-style:circle}.block-editor-wrapper .slate-editor ol[data-slate-node=element]{list-style:decimal}.block-editor-wrapper .slate-editor a[data-slate-node=element]{color:rgb(var(--color-secondary));text-decoration:underline}.block-editor-wrapper .slate-editor div[data-slate-editor=true]{height:100%}.block-editor-wrapper .slate-editor .align-left{text-align:left}.block-editor-wrapper .slate-editor .align-right{text-align:right}.block-editor-wrapper .slate-editor .align-center{text-align:center}.block-editor-wrapper .slate-editor .align-justify{text-align:justify}.block-editor-wrapper .slate-editor .block-align-left{display:inline-block;float:left;margin-right:15px}.block-editor-wrapper .slate-editor .block-align-undefined{display:inline-block}.block-editor-wrapper .slate-editor .block-align-right{display:inline-block;float:right;margin-left:15px}.block-editor-wrapper .options-wrapper{position:relative}.block-editor-wrapper .options-wrapper:hover .options-container{display:flex}.block-editor-wrapper .options-wrapper .options-container{display:none;flex-direction:row;justify-content:center;left:0px;position:absolute;top:0px;z-index:200;background-color:gray;padding:4px 4px 4px 4px}.block-editor-wrapper .options-wrapper .options-container .options-container-option{cursor:pointer;width:26px}.block-editor-wrapper .options-wrapper .options-container .options-container-option>svg{width:100%}.block-editor-wrapper .options-wrapper .options-container .options-container-option.options-container-option-expand-text{width:100px}.block-editor-wrapper .options-wrapper .options-container .options-container-option.options-container-option-delete{color:red}.block-editor-wrapper .options-wrapper .options-container.options-container-right{left:-26px}.block-editor-wrapper .layout-slot-option-padding{position:relative;width:20px;height:20px;display:inline-block}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-item{background-color:#000;display:block;position:absolute;cursor:pointer}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-item:hover{background-color:#fff;z-index:10}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-item.active{background-color:#d3d3d3;z-index:10}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-top{height:5px;width:20px;top:0;left:0}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-right{height:20px;width:5px;right:0;top:0}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-bottom{height:5px;width:20px;bottom:0;left:0}.block-editor-wrapper .layout-slot-option-padding .layout-slot-option-padding-left{height:20px;width:5px;top:0;left:0}.block-editor-wrapper .layout-block{display:flex;flex-direction:row}.block-editor-wrapper .layout-block.article-width{width:44.4444444444%}.block-editor-wrapper .layout-block.site-width{width:66.6666666667%}.block-editor-wrapper .layout-block .layout-slot{display:flex;flex-direction:column;position:relative;outline:1px dashed gray}.block-editor-wrapper .layout-block .layout-slot .layout-slot-options{background-color:gray;color:#fff;font-size:24px;padding:10px;display:flex;flex-direction:row;justify-content:space-between}.block-editor-wrapper .layout-block .layout-slot .layout-slot-options .layout-slot-option{text-transform:uppercase;display:inline-block}.block-editor-wrapper .layout-block .layout-slot .layout-slot-options .layout-slot-name{text-transform:uppercase;display:inline-block}.block-editor-wrapper .layout-block .layout-slot.layout-slot-widecol{flex-grow:1}.block-editor-wrapper .layout-block .layout-slot.layout-slot-maincol{flex-grow:1}.block-editor-wrapper .layout-block .layout-slot.layout-slot-sidecol{flex-grow:0;width:30%}.block-editor-wrapper .layout-block .layout-slot.layout-slot-grid-half{flex-grow:0;width:50%}.block-editor-wrapper .layout-block .layout-slot.layout-slot-grid-3{flex-grow:0;width:100%}.block-editor-wrapper .layout-block .layout-slot.layout-slot-grid-2{flex-grow:0;width:66.6666666666%}.block-editor-wrapper .layout-block .layout-slot.layout-slot-grid-1{flex-grow:0;width:33.3333333333%}.block-editor-wrapper .layout-block .layout-slot.layout-slot-grid-fill{flex-grow:1}.block-editor-wrapper .layout-block .layout-slot.layout-slot-grid-auto{flex-grow:0;width:auto}
|
|
4
|
+
* {
|
|
5
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
#sidebar-editor {
|
|
9
|
+
background-color: rgb(247, 249, 250);
|
|
10
|
+
height: 100%;
|
|
11
|
+
overflow-y: auto;
|
|
12
|
+
flex-basis: 400px;
|
|
13
|
+
flex-shrink: 0;
|
|
14
|
+
padding: 61px 16px 16px 16px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
select {
|
|
18
|
+
font-size: 0.875rem !important;
|
|
19
|
+
color: rgb(90, 101, 124) !important;
|
|
20
|
+
background-color: white !important;
|
|
21
|
+
border: 1px solid #cfd9e0 !important;
|
|
22
|
+
border-radius: 6px !important;
|
|
23
|
+
box-shadow: none !important;
|
|
24
|
+
filter: none !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
p, label {
|
|
28
|
+
color: rgb(90, 101, 124);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
label {
|
|
32
|
+
display: block;
|
|
33
|
+
margin: 0 0 4px 0 !important;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
input[type="text"],
|
|
37
|
+
input[type="number"],
|
|
38
|
+
input[type="color"],
|
|
39
|
+
input[type="date"],
|
|
40
|
+
textarea {
|
|
41
|
+
display: block;
|
|
42
|
+
font-size: 0.875rem !important;
|
|
43
|
+
color: rgb(90, 101, 124) !important;
|
|
44
|
+
background-color: white !important;
|
|
45
|
+
border: 1px solid #cfd9e0 !important;
|
|
46
|
+
border-radius: 6px !important;
|
|
47
|
+
box-shadow: none !important;
|
|
48
|
+
filter: none !important;
|
|
49
|
+
width: 100% !important;
|
|
50
|
+
padding: 8px 0.75rem;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
input[type="color"] {
|
|
54
|
+
padding: 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
input[type="range"] {
|
|
58
|
+
display: block;
|
|
59
|
+
width: 100%;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
input[type="radio"],
|
|
63
|
+
input[type="checkbox"] {
|
|
64
|
+
margin-right: 4px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* button[data-test-id="cf-ui-button"] span {
|
|
68
|
+
color: #036fe3 !important;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
button[data-test-id="cf-ui-button"] svg {
|
|
72
|
+
fill: #036fe3 !important;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
button[data-test-id="cf-ui-button"]:hover span {
|
|
76
|
+
color: #FFFFFF !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
button[data-test-id="cf-ui-button"]:hover svg {
|
|
80
|
+
fill: #FFFFFF !important;
|
|
81
|
+
} */
|
|
82
|
+
|
|
83
|
+
.inline-check-wrapper {
|
|
84
|
+
display: inline-block;
|
|
85
|
+
margin-right: 8px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
button {
|
|
89
|
+
width: 100%;
|
|
90
|
+
padding: 8px !important;
|
|
91
|
+
color: #036fe3 !important;
|
|
92
|
+
border: 1px solid #036fe3 !important;
|
|
93
|
+
}
|