@studiocms/wysiwyg 0.1.0-beta.24

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 (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/common/componentRegistry.d.ts +31 -0
  4. package/dist/common/componentRegistry.js +59 -0
  5. package/dist/common/editor-settings.d.ts +23 -0
  6. package/dist/common/editor-settings.js +357 -0
  7. package/dist/common/editor-utils.d.ts +165 -0
  8. package/dist/common/editor-utils.js +217 -0
  9. package/dist/common/grapesBlocks/blocks/basics.d.ts +4 -0
  10. package/dist/common/grapesBlocks/blocks/basics.js +279 -0
  11. package/dist/common/grapesBlocks/blocks/extras.d.ts +4 -0
  12. package/dist/common/grapesBlocks/blocks/extras.js +63 -0
  13. package/dist/common/grapesBlocks/blocks/forms.d.ts +4 -0
  14. package/dist/common/grapesBlocks/blocks/forms.js +94 -0
  15. package/dist/common/grapesBlocks/blocks/index.d.ts +5 -0
  16. package/dist/common/grapesBlocks/blocks/index.js +23 -0
  17. package/dist/common/grapesBlocks/blocks/tabs.d.ts +4 -0
  18. package/dist/common/grapesBlocks/blocks/tabs.js +20 -0
  19. package/dist/common/grapesBlocks/commands/clear.d.ts +4 -0
  20. package/dist/common/grapesBlocks/commands/clear.js +21 -0
  21. package/dist/common/grapesBlocks/commands/customCodeCommands.d.ts +4 -0
  22. package/dist/common/grapesBlocks/commands/customCodeCommands.js +111 -0
  23. package/dist/common/grapesBlocks/commands/deviceCommands.d.ts +3 -0
  24. package/dist/common/grapesBlocks/commands/deviceCommands.js +23 -0
  25. package/dist/common/grapesBlocks/commands/index.d.ts +5 -0
  26. package/dist/common/grapesBlocks/commands/index.js +40 -0
  27. package/dist/common/grapesBlocks/commands/openImport.d.ts +4 -0
  28. package/dist/common/grapesBlocks/commands/openImport.js +71 -0
  29. package/dist/common/grapesBlocks/components/countdown.d.ts +12 -0
  30. package/dist/common/grapesBlocks/components/countdown.js +148 -0
  31. package/dist/common/grapesBlocks/components/customCode.d.ts +4 -0
  32. package/dist/common/grapesBlocks/components/customCode.js +89 -0
  33. package/dist/common/grapesBlocks/components/forms.d.ts +3 -0
  34. package/dist/common/grapesBlocks/components/forms.js +278 -0
  35. package/dist/common/grapesBlocks/components/index.d.ts +5 -0
  36. package/dist/common/grapesBlocks/components/index.js +23 -0
  37. package/dist/common/grapesBlocks/components/tabLoader.d.ts +4 -0
  38. package/dist/common/grapesBlocks/components/tabLoader.js +29 -0
  39. package/dist/common/grapesBlocks/components/tabs/Tab.d.ts +10 -0
  40. package/dist/common/grapesBlocks/components/tabs/Tab.js +100 -0
  41. package/dist/common/grapesBlocks/components/tabs/TabContainer.d.ts +5 -0
  42. package/dist/common/grapesBlocks/components/tabs/TabContainer.js +23 -0
  43. package/dist/common/grapesBlocks/components/tabs/TabContent.d.ts +5 -0
  44. package/dist/common/grapesBlocks/components/tabs/TabContent.js +23 -0
  45. package/dist/common/grapesBlocks/components/tabs/TabContents.d.ts +4 -0
  46. package/dist/common/grapesBlocks/components/tabs/TabContents.js +19 -0
  47. package/dist/common/grapesBlocks/components/tabs/Tabs.d.ts +4 -0
  48. package/dist/common/grapesBlocks/components/tabs/Tabs.js +169 -0
  49. package/dist/common/grapesBlocks/components/tooltip.d.ts +4 -0
  50. package/dist/common/grapesBlocks/components/tooltip.js +246 -0
  51. package/dist/common/grapesBlocks/components/typed.d.ts +9 -0
  52. package/dist/common/grapesBlocks/components/typed.js +109 -0
  53. package/dist/common/grapesBlocks/consts.d.ts +25 -0
  54. package/dist/common/grapesBlocks/consts.js +245 -0
  55. package/dist/common/grapesBlocks/i18n/index.d.ts +3 -0
  56. package/dist/common/grapesBlocks/i18n/index.js +19 -0
  57. package/dist/common/grapesBlocks/index.d.ts +4 -0
  58. package/dist/common/grapesBlocks/index.js +27 -0
  59. package/dist/common/grapesBlocks/panels/index.d.ts +4 -0
  60. package/dist/common/grapesBlocks/panels/index.js +171 -0
  61. package/dist/common/grapesBlocks/rte/colorPicker.d.ts +104 -0
  62. package/dist/common/grapesBlocks/rte/colorPicker.js +199 -0
  63. package/dist/common/grapesBlocks/rte/index.d.ts +48 -0
  64. package/dist/common/grapesBlocks/rte/index.js +375 -0
  65. package/dist/common/grapesBlocks/selectors/index.d.ts +4 -0
  66. package/dist/common/grapesBlocks/selectors/index.js +9 -0
  67. package/dist/common/grapesBlocks/selectors/tooltip.d.ts +4 -0
  68. package/dist/common/grapesBlocks/selectors/tooltip.js +15 -0
  69. package/dist/common/grapesBlocks/traits/formTraits.d.ts +3 -0
  70. package/dist/common/grapesBlocks/traits/formTraits.js +51 -0
  71. package/dist/common/grapesBlocks/traits/index.d.ts +4 -0
  72. package/dist/common/grapesBlocks/traits/index.js +15 -0
  73. package/dist/common/grapesBlocks/traits/typedTraits.d.ts +3 -0
  74. package/dist/common/grapesBlocks/traits/typedTraits.js +24 -0
  75. package/dist/common/grapesBlocks/tuiImageEditor/index.d.ts +86 -0
  76. package/dist/common/grapesBlocks/tuiImageEditor/index.js +203 -0
  77. package/dist/common/grapesBlocks/types.d.ts +446 -0
  78. package/dist/common/grapesBlocks/types.js +0 -0
  79. package/dist/components/Editor.astro +147 -0
  80. package/dist/components/Render.astro +24 -0
  81. package/dist/consts.d.ts +31 -0
  82. package/dist/consts.js +15 -0
  83. package/dist/index.d.ts +29 -0
  84. package/dist/index.js +65 -0
  85. package/dist/lib/db.d.ts +104 -0
  86. package/dist/lib/db.js +50 -0
  87. package/dist/lib/prerender.d.ts +10 -0
  88. package/dist/lib/prerender.js +22 -0
  89. package/dist/lib/shared.d.ts +14 -0
  90. package/dist/lib/shared.js +7 -0
  91. package/dist/lib/utils.d.ts +16 -0
  92. package/dist/lib/utils.js +10 -0
  93. package/dist/routes/grapes.css.d.ts +7 -0
  94. package/dist/routes/grapes.css.js +13 -0
  95. package/dist/routes/partial.astro +44 -0
  96. package/dist/routes/store.d.ts +32 -0
  97. package/dist/routes/store.js +100 -0
  98. package/dist/schema.d.ts +60 -0
  99. package/dist/schema.js +24 -0
  100. package/dist/styles/editor.css +150 -0
  101. package/dist/styles/grapes.css +71 -0
  102. package/dist/types.d.ts +66 -0
  103. package/dist/types.js +9 -0
  104. package/package.json +78 -0
@@ -0,0 +1,150 @@
1
+ :root {
2
+ --gjs-color-blue: hsl(259, 55%, 60%);
3
+ }
4
+ .save-indicator {
5
+ stroke: hsl(var(--text-normal));
6
+ transition: stroke 150ms ease-in-out;
7
+ }
8
+ .save-indicator.dirty {
9
+ stroke: hsl(var(--warning-base));
10
+ }
11
+ .save-indicator .dirty-indicator {
12
+ display: none;
13
+ transition: all 150ms ease-in-out;
14
+ }
15
+ .save-indicator.dirty .dirty-indicator {
16
+ display: block !important;
17
+ }
18
+ .scms-grapesjs-container {
19
+ width: 100%;
20
+ height: 100%;
21
+ min-height: 80vh;
22
+ overflow: hidden;
23
+ border: 2px solid hsl(var(--border));
24
+ border-radius: var(--radius-md);
25
+ font-family:
26
+ Inter,
27
+ system-ui,
28
+ Avenir,
29
+ Helvetica,
30
+ Arial,
31
+ sans-serif;
32
+ line-height: 1.5;
33
+ font-weight: 400;
34
+ font-synthesis: none;
35
+ text-rendering: optimizeLegibility;
36
+ -webkit-font-smoothing: antialiased;
37
+ -moz-osx-font-smoothing: grayscale;
38
+ }
39
+ .scms-grapesjs-container .editor {
40
+ width: 100%;
41
+ height: 100%;
42
+ }
43
+ .scms-grapesjs-container .editor #gjs {
44
+ width: 100%;
45
+ height: 100%;
46
+ box-sizing: border-box;
47
+ }
48
+ .gjs-one-bg {
49
+ background-color: hsl(var(--background-step-3));
50
+ }
51
+ .gjs-two-color {
52
+ color: hsl(var(--text-normal));
53
+ }
54
+ .gjs-three-bg {
55
+ background-color: hsl(var(--background-base));
56
+ color: hsl(var(--text-muted));
57
+ }
58
+ .gjs-four-color,
59
+ .gjs-four-color-h:hover {
60
+ color: hsl(var(--primary-base));
61
+ }
62
+ [data-tooltip]::after {
63
+ background: rgba(51, 51, 51, 0.9);
64
+ }
65
+ .gjs-pn-commands {
66
+ min-height: 40px;
67
+ }
68
+ #gjs-sm-float {
69
+ display: none;
70
+ }
71
+ .gjs-logo-version {
72
+ background-color: #756467;
73
+ }
74
+ .gjs-pn-btn.gjs-pn-active {
75
+ box-shadow: none;
76
+ }
77
+ .CodeMirror {
78
+ min-height: 450px;
79
+ margin-bottom: 8px;
80
+ }
81
+ .grp-handler-close {
82
+ background-color: transparent;
83
+ color: #ddd;
84
+ }
85
+ .grp-handler-cp-wrap {
86
+ border-color: transparent;
87
+ }
88
+ .gjs-rte-toolbar {
89
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.44);
90
+ border-radius: 3px;
91
+ }
92
+ .gjs-rte-action {
93
+ font-size: 1rem;
94
+ border-right: none;
95
+ padding: 10px;
96
+ min-width: 35px;
97
+ }
98
+ .gjs-rte-actionbar {
99
+ max-width: 600px;
100
+ flex-wrap: wrap;
101
+ }
102
+ .rte-hilite-btn {
103
+ padding: 3px 6px;
104
+ border-radius: 3px;
105
+ background: rgba(210, 120, 201, 0.3);
106
+ }
107
+ .rte-color-picker {
108
+ display: none;
109
+ padding: 10px;
110
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 2px 5px rgba(0, 0, 0, 0.34);
111
+ border-radius: 5px;
112
+ position: absolute;
113
+ top: 55px;
114
+ width: 250px;
115
+ transition: all 2s ease;
116
+ }
117
+ .rte-color-picker:before {
118
+ content: "";
119
+ position: absolute;
120
+ top: -20px;
121
+ left: 46%;
122
+ border-width: 10px;
123
+ border-style: solid;
124
+ }
125
+ .rte-color-picker.dark {
126
+ background: rgba(0, 0, 0, 0.8);
127
+ }
128
+ .rte-color-picker.dark:before {
129
+ border-color: transparent transparent rgba(0, 0, 0, 0.75) transparent;
130
+ }
131
+ .rte-color-picker.light {
132
+ background: rgba(255, 255, 255, 0.75);
133
+ }
134
+ .rte-color-picker.light:before {
135
+ border-color: transparent transparent rgba(255, 255, 255, 0.75) transparent;
136
+ }
137
+ .rte-color-picker > div {
138
+ width: 30px;
139
+ display: inline-block;
140
+ height: 30px;
141
+ margin: 5px;
142
+ border-radius: 100%;
143
+ opacity: 0.7;
144
+ }
145
+ .rte-color-picker > div:hover {
146
+ opacity: 1;
147
+ }
148
+ .picker-wrapper {
149
+ padding: 20px;
150
+ }
@@ -0,0 +1,71 @@
1
+ :root {
2
+ --gjs-color-blue: hsl(259 73% 67%);
3
+ body {
4
+ background-color: hsl(0, 0%, 97%);
5
+ }
6
+ * ::-webkit-scrollbar-track {
7
+ background: rgba(0, 0, 0, 0.1);
8
+ }
9
+ * ::-webkit-scrollbar-thumb {
10
+ background: rgba(255, 255, 255, 0.2);
11
+ }
12
+ * ::-webkit-scrollbar {
13
+ width: 10px;
14
+ }
15
+ [data-gjs-type=wrapper] {
16
+ min-height: 100vh;
17
+ padding-top: 0.001em;
18
+ }
19
+ .gjs-dashed *[data-gjs-highlightable] {
20
+ outline: 1px dashed rgba(170, 170, 170, 0.7);
21
+ outline-offset: -2px;
22
+ }
23
+ .gjs-selected {
24
+ outline: 2px solid hsl(259 73% 67%) !important;
25
+ outline-offset: -2px;
26
+ }
27
+ .gjs-selected-parent {
28
+ outline: 2px solid hsl(48 100% 61%) !important;
29
+ }
30
+ .gjs-no-select {
31
+ user-select: none;
32
+ -webkit-user-select: none;
33
+ -moz-user-select: none;
34
+ }
35
+ .gjs-freezed {
36
+ opacity: 0.5;
37
+ pointer-events: none;
38
+ }
39
+ .gjs-no-pointer {
40
+ pointer-events: none;
41
+ }
42
+ .gjs-pointer-init {
43
+ pointer-events: initial;
44
+ }
45
+ .gjs-plh-image {
46
+ background: #f5f5f5;
47
+ border: none;
48
+ height: 100px;
49
+ width: 100px;
50
+ display: block;
51
+ outline: 3px solid hsl(48 100% 61%);
52
+ cursor: pointer;
53
+ outline-offset: -2px;
54
+ }
55
+ .gjs-grabbing {
56
+ cursor: grabbing;
57
+ }
58
+ .gjs-is__grabbing {
59
+ overflow-x: hidden;
60
+ }
61
+ .gjs-is__grabbing,
62
+ .gjs-is__grabbing * {
63
+ cursor: grabbing !important;
64
+ }
65
+ * {
66
+ box-sizing: border-box;
67
+ }
68
+ body {
69
+ margin: 0;
70
+ }
71
+ }
@@ -0,0 +1,66 @@
1
+ import { z } from 'astro/zod';
2
+ import type { Schema } from 'studiocms/effect';
3
+ import type { studioCMSProjectDataSchema } from './schema.js';
4
+ export interface WysiwygDBContent extends Schema.SimplifyMutable<typeof studioCMSProjectDataSchema.Type> {
5
+ }
6
+ /**
7
+ * Defines the schema for HTML configuration options.
8
+ *
9
+ * The schema includes an optional `sanitize` property, which is validated
10
+ * using the `StudioCMSSanitizeOptionsSchema`. If no value is provided,
11
+ * the default is an empty object.
12
+ */
13
+ export declare const WYSIWYGSchema: z.ZodDefault<z.ZodOptional<z.ZodObject<{
14
+ /** Sanitization options for WYSIWYG content. See {@link StudioCMSSanitizeOptionsSchema} for details. */
15
+ sanitize: z.ZodOptional<z.ZodObject<{
16
+ allowElements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
+ blockElements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
18
+ dropElements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
19
+ allowAttributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
20
+ dropAttributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
21
+ allowComponents: z.ZodOptional<z.ZodBoolean>;
22
+ allowCustomElements: z.ZodOptional<z.ZodBoolean>;
23
+ allowComments: z.ZodOptional<z.ZodBoolean>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ allowElements?: string[] | undefined;
26
+ blockElements?: string[] | undefined;
27
+ dropElements?: string[] | undefined;
28
+ allowAttributes?: Record<string, string[]> | undefined;
29
+ dropAttributes?: Record<string, string[]> | undefined;
30
+ allowComponents?: boolean | undefined;
31
+ allowCustomElements?: boolean | undefined;
32
+ allowComments?: boolean | undefined;
33
+ }, {
34
+ allowElements?: string[] | undefined;
35
+ blockElements?: string[] | undefined;
36
+ dropElements?: string[] | undefined;
37
+ allowAttributes?: Record<string, string[]> | undefined;
38
+ dropAttributes?: Record<string, string[]> | undefined;
39
+ allowComponents?: boolean | undefined;
40
+ allowCustomElements?: boolean | undefined;
41
+ allowComments?: boolean | undefined;
42
+ }>>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ sanitize?: {
45
+ allowElements?: string[] | undefined;
46
+ blockElements?: string[] | undefined;
47
+ dropElements?: string[] | undefined;
48
+ allowAttributes?: Record<string, string[]> | undefined;
49
+ dropAttributes?: Record<string, string[]> | undefined;
50
+ allowComponents?: boolean | undefined;
51
+ allowCustomElements?: boolean | undefined;
52
+ allowComments?: boolean | undefined;
53
+ } | undefined;
54
+ }, {
55
+ sanitize?: {
56
+ allowElements?: string[] | undefined;
57
+ blockElements?: string[] | undefined;
58
+ dropElements?: string[] | undefined;
59
+ allowAttributes?: Record<string, string[]> | undefined;
60
+ dropAttributes?: Record<string, string[]> | undefined;
61
+ allowComponents?: boolean | undefined;
62
+ allowCustomElements?: boolean | undefined;
63
+ allowComments?: boolean | undefined;
64
+ } | undefined;
65
+ }>>>;
66
+ export type WYSIWYGSchemaOptions = z.infer<typeof WYSIWYGSchema>;
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
1
+ import { z } from "astro/zod";
2
+ import { StudioCMSSanitizeOptionsSchema } from "studiocms/schemas";
3
+ const WYSIWYGSchema = z.object({
4
+ /** Sanitization options for WYSIWYG content. See {@link StudioCMSSanitizeOptionsSchema} for details. */
5
+ sanitize: StudioCMSSanitizeOptionsSchema
6
+ }).optional().default({});
7
+ export {
8
+ WYSIWYGSchema
9
+ };
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "@studiocms/wysiwyg",
3
+ "version": "0.1.0-beta.24",
4
+ "description": "Add A WYSIWYG Editor to your StudioCMS project with ease!",
5
+ "author": {
6
+ "name": "withstudiocms",
7
+ "url": "https://studiocms.dev"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/withstudiocms/studiocms.git",
12
+ "directory": "packages/@studiocms/wysiwyg"
13
+ },
14
+ "contributors": [
15
+ "Adammatthiesen",
16
+ "jdtjenkins",
17
+ "dreyfus92",
18
+ "code.spirit"
19
+ ],
20
+ "license": "MIT",
21
+ "keywords": [
22
+ "astro",
23
+ "astrocms",
24
+ "astrodb",
25
+ "astrostudio",
26
+ "astro-studio",
27
+ "astro-studiocms",
28
+ "cms",
29
+ "studiocms",
30
+ "plugin",
31
+ "studiocms-plugin"
32
+ ],
33
+ "homepage": "https://studiocms.dev",
34
+ "publishConfig": {
35
+ "access": "public",
36
+ "provenance": true
37
+ },
38
+ "sideEffects": false,
39
+ "files": [
40
+ "dist"
41
+ ],
42
+ "exports": {
43
+ ".": {
44
+ "types": "./dist/index.d.ts",
45
+ "default": "./dist/index.js"
46
+ },
47
+ "./consts": {
48
+ "types": "./dist/consts.d.ts",
49
+ "default": "./dist/consts.js"
50
+ },
51
+ "./types": {
52
+ "types": "./dist/types.d.ts",
53
+ "default": "./dist/types.js"
54
+ },
55
+ "./components/*": "./dist/components/*"
56
+ },
57
+ "type": "module",
58
+ "dependencies": {
59
+ "astro-integration-kit": "^0.18",
60
+ "deepmerge-ts": "^7.1.5",
61
+ "grapesjs": "^0.22.12",
62
+ "tui-image-editor": "^3.15.3"
63
+ },
64
+ "devDependencies": {
65
+ "@types/node": "^22.0.0"
66
+ },
67
+ "peerDependencies": {
68
+ "@studiocms/ui": "^0.4.17",
69
+ "astro": "^5.12.8",
70
+ "vite": "^6.3.4",
71
+ "studiocms": "0.1.0-beta.24"
72
+ },
73
+ "scripts": {
74
+ "build": "buildkit build 'src/**/*.{ts,astro,css,js}'",
75
+ "dev": "buildkit dev 'src/**/*.{ts,astro,css,js}'",
76
+ "typecheck": "tspc -p tsconfig.tspc.json"
77
+ }
78
+ }