@grapesjs/studio-sdk-plugins 1.0.4 → 1.0.5

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.
@@ -0,0 +1,13 @@
1
+ import { NodeType } from 'prosemirror-model';
2
+ import { DefaultSchema } from './schema';
3
+ export declare function blockQuoteRule(nodeType: NodeType): import('prosemirror-inputrules').InputRule;
4
+ export declare function orderedListRule(nodeType: NodeType): import('prosemirror-inputrules').InputRule;
5
+ export declare function bulletListRule(nodeType: NodeType): import('prosemirror-inputrules').InputRule;
6
+ export declare function codeBlockRule(nodeType: NodeType): import('prosemirror-inputrules').InputRule;
7
+ export declare function headingRule(nodeType: NodeType, maxLevel: number): import('prosemirror-inputrules').InputRule;
8
+ export declare function buildInputRules(schema: DefaultSchema): import('prosemirror-state').Plugin<{
9
+ transform: import('prosemirror-state').Transaction;
10
+ from: number;
11
+ to: number;
12
+ text: string;
13
+ } | null>;
@@ -0,0 +1,225 @@
1
+ import { Mark, MarkSpec, Node, NodeSpec, Schema } from 'prosemirror-model';
2
+ export declare const keyAttrInlineFragment = "data-gs-ifrg";
3
+ export declare const AllAttrKey = "attrs";
4
+ export declare const allAttrsToDom: (node: Mark | Node) => any;
5
+ export declare const nodes: {
6
+ nonTextNode: {
7
+ group: string;
8
+ content: string;
9
+ attrs: {
10
+ tagName: {
11
+ default: string;
12
+ };
13
+ attrs: {
14
+ default: {};
15
+ };
16
+ };
17
+ parseDOM: {
18
+ tag: string;
19
+ getAttrs: (dom: HTMLElement) => {
20
+ tagName: string;
21
+ attrs: Readonly<Record<string, string | null>>;
22
+ };
23
+ priority: number;
24
+ }[];
25
+ toDOM(node: Node): [any, any, number];
26
+ };
27
+ table: NodeSpec;
28
+ table_row: NodeSpec;
29
+ table_cell: NodeSpec;
30
+ table_header: NodeSpec;
31
+ doc: {
32
+ content: string;
33
+ };
34
+ text: {
35
+ group: string;
36
+ inline: true;
37
+ };
38
+ inlineFragment: {
39
+ group: string;
40
+ content: string;
41
+ isTextBlock: boolean;
42
+ parseDOM: {
43
+ tag: string;
44
+ getAttrs: (dom: HTMLElement) => {
45
+ attrs: Readonly<Record<string, string | null>>;
46
+ };
47
+ }[];
48
+ toDOM: () => [string, {
49
+ "data-gs-ifrg": string;
50
+ }, number];
51
+ };
52
+ div: {
53
+ group: string;
54
+ content: string;
55
+ attrs: {
56
+ [name: string]: import('prosemirror-model').AttributeSpec;
57
+ };
58
+ parseDOM: {
59
+ tag: string;
60
+ getAttrs: (dom: HTMLElement) => {
61
+ attrs: Readonly<Record<string, string | null>>;
62
+ };
63
+ }[];
64
+ toDOM: (node: Node) => [string, any, number];
65
+ };
66
+ paragraph: {
67
+ group: string;
68
+ content: string;
69
+ attrs: {
70
+ [name: string]: import('prosemirror-model').AttributeSpec;
71
+ };
72
+ parseDOM: {
73
+ tag: string;
74
+ getAttrs: (dom: HTMLElement) => {
75
+ attrs: Readonly<Record<string, string | null>>;
76
+ };
77
+ }[];
78
+ toDOM: (node: Node) => [string, any, number];
79
+ };
80
+ orderedList: {
81
+ group: string;
82
+ content: string;
83
+ attrs: {
84
+ [name: string]: import('prosemirror-model').AttributeSpec;
85
+ };
86
+ parseDOM: {
87
+ tag: string;
88
+ getAttrs: (dom: HTMLElement) => {
89
+ attrs: Readonly<Record<string, string | null>>;
90
+ };
91
+ }[];
92
+ toDOM: (node: Node) => [string, any, number];
93
+ };
94
+ bulletList: {
95
+ group: string;
96
+ content: string;
97
+ attrs: {
98
+ [name: string]: import('prosemirror-model').AttributeSpec;
99
+ };
100
+ parseDOM: {
101
+ tag: string;
102
+ getAttrs: (dom: HTMLElement) => {
103
+ attrs: Readonly<Record<string, string | null>>;
104
+ };
105
+ }[];
106
+ toDOM: (node: Node) => [string, any, number];
107
+ };
108
+ listItem: {
109
+ content: string;
110
+ group: string;
111
+ attrs: {
112
+ [name: string]: import('prosemirror-model').AttributeSpec;
113
+ };
114
+ parseDOM: {
115
+ tag: string;
116
+ getAttrs: (dom: HTMLElement) => {
117
+ attrs: Readonly<Record<string, string | null>>;
118
+ };
119
+ }[];
120
+ toDOM: (node: Node) => [string, any, number];
121
+ defining: true;
122
+ };
123
+ codeBlock: {
124
+ group: string;
125
+ content: string;
126
+ marks: string;
127
+ attrs: {
128
+ [name: string]: import('prosemirror-model').AttributeSpec;
129
+ };
130
+ parseDOM: {
131
+ tag: string;
132
+ getAttrs: (dom: HTMLElement) => {
133
+ attrs: Readonly<Record<string, string | null>>;
134
+ };
135
+ }[];
136
+ toDOM: (node: Node) => [string, any, (string | number)[]];
137
+ };
138
+ image: {
139
+ inline: true;
140
+ group: string;
141
+ selectable: true;
142
+ attrs: {
143
+ [name: string]: import('prosemirror-model').AttributeSpec;
144
+ };
145
+ parseDOM: {
146
+ tag: string;
147
+ getAttrs: (dom: HTMLElement) => {
148
+ attrs: Readonly<Record<string, string | null>>;
149
+ };
150
+ }[];
151
+ toDOM: (node: Node) => [string, any];
152
+ };
153
+ inlineBreak: {
154
+ inline: true;
155
+ group: string;
156
+ selectable: false;
157
+ parseDOM: {
158
+ tag: string;
159
+ }[];
160
+ toDOM(): [string, {
161
+ "data-gs-ib": string;
162
+ }];
163
+ };
164
+ hardBreak: {
165
+ inline: false;
166
+ group: string;
167
+ selectable: false;
168
+ attrs: {
169
+ [name: string]: import('prosemirror-model').AttributeSpec;
170
+ };
171
+ parseDOM: {
172
+ tag: string;
173
+ getAttrs: (dom: HTMLElement) => {
174
+ attrs: Readonly<Record<string, string | null>>;
175
+ };
176
+ }[];
177
+ toDOM: (node: Node) => [string, any];
178
+ };
179
+ heading: {
180
+ group: string;
181
+ content: string;
182
+ attrs: {
183
+ level: {
184
+ default: number;
185
+ };
186
+ attrs: {
187
+ default: {};
188
+ };
189
+ };
190
+ defining: true;
191
+ parseDOM: {
192
+ tag: string;
193
+ getAttrs: (dom: HTMLElement) => {
194
+ level: number;
195
+ attrs: Readonly<Record<string, string | null>>;
196
+ };
197
+ }[];
198
+ toDOM({ attrs }: Node): [string, any, number];
199
+ };
200
+ };
201
+ export declare const marks: {
202
+ strong: MarkSpec;
203
+ link: MarkSpec;
204
+ em: MarkSpec;
205
+ underline: MarkSpec;
206
+ strikethrough: MarkSpec;
207
+ font_size: {
208
+ attrs: {
209
+ size: {
210
+ default: null;
211
+ };
212
+ };
213
+ parseDOM: {
214
+ tag: string;
215
+ getAttrs: (dom: HTMLElement) => {
216
+ size: string;
217
+ attrs: string;
218
+ };
219
+ }[];
220
+ toDOM(mark: Mark): [string, any, number];
221
+ };
222
+ };
223
+ export declare const schema: Schema<"div" | "table" | "image" | "text" | "heading" | "doc" | "inlineFragment" | "paragraph" | "orderedList" | "bulletList" | "listItem" | "codeBlock" | "inlineBreak" | "hardBreak" | "table_row" | "table_cell" | "table_header" | "nonTextNode", "link" | "em" | "strong" | "underline" | "strikethrough" | "font_size">;
224
+ export type DefaultSchema = typeof schema;
225
+ export default schema;
@@ -0,0 +1,36 @@
1
+ import { RteCustomToolbarProps } from '@studio/editor/src/types';
2
+ import { EditorView } from 'prosemirror-view';
3
+ import { RteProseMirrorOptions } from './types';
4
+ export interface HTMLElementWithView extends HTMLElement {
5
+ __rteView: EditorView;
6
+ }
7
+ export declare const eventRteSelectionChange = "rte:selectionchange";
8
+ export declare enum ToolbarCommands {
9
+ bold = "bold",
10
+ italic = "italic",
11
+ underline = "underline",
12
+ strikethrough = "strikethrough",
13
+ link = "link",
14
+ image = "image",
15
+ alignText = "alignText",
16
+ heading = "heading",
17
+ fontSize = "fontSize",
18
+ listBullet = "listBullet",
19
+ listOrdered = "listOrdered"
20
+ }
21
+ export declare const toolbarIcons: {
22
+ bold: string;
23
+ italic: string;
24
+ underline: string;
25
+ strikethrough: string;
26
+ link: string;
27
+ image: string;
28
+ listBullet: string;
29
+ listOrdered: string;
30
+ alignTextLeft: string;
31
+ alignTextCenter: string;
32
+ alignTextRight: string;
33
+ alignTextJustify: string;
34
+ };
35
+ export declare const getToolbarItems: (props: RteCustomToolbarProps, opts: RteProseMirrorOptions) => import('@studio/editor/src/types').RteCustomToolbarResult;
36
+ export default getToolbarItems;
@@ -0,0 +1,83 @@
1
+ import { WithEditorProps } from '@studio/editor/src/typeConfigs/common';
2
+ import { StudioComponentsConfigProps } from '@studio/editor/src/typeConfigs/layout';
3
+ import { RteCustomToolbarProps, RteCustomToolbarResult } from '@studio/editor/src/typeConfigs/rte';
4
+ import { Schema } from 'prosemirror-model';
5
+ import { Plugin } from 'prosemirror-state';
6
+ import { EditorView } from 'prosemirror-view';
7
+ import { SDKPluginOptions } from '../utils';
8
+ import { BuiltInCommands } from './commands';
9
+ import { DefaultSchema } from './schema';
10
+ import { ComponentView } from 'grapesjs';
11
+ export type { DefaultSchema } from './schema';
12
+ export { StudioCommands } from '@studio/editor/src/plugins/global/types';
13
+ export type { LayoutCommandProps, RteCustomToolbar } from '@studio/editor/src/types';
14
+ export interface CustomRteOptions extends RteCustomToolbarProps {
15
+ event?: PointerEvent;
16
+ view: ComponentView;
17
+ }
18
+ export interface RteProseMirrorToolbarProps extends RteCustomToolbarProps {
19
+ /**
20
+ * Default toolbar items.
21
+ */
22
+ items: StudioComponentsConfigProps[];
23
+ /**
24
+ * Built-in commands.
25
+ */
26
+ commands: BuiltInCommands;
27
+ /**
28
+ * Built-in toolbar layout components.
29
+ */
30
+ layouts: Record<string, StudioComponentsConfigProps>;
31
+ /**
32
+ * ProseMirror instance.
33
+ */
34
+ proseMirror: {
35
+ view: EditorView;
36
+ };
37
+ }
38
+ export interface RteProseMirrorOptions extends SDKPluginOptions {
39
+ /**
40
+ * Extend the default ProseMirror schema.
41
+ * @example
42
+ * ({ schema }) => {
43
+ * // add additional nodes and return a new schema
44
+ * return new Schema({
45
+ * nodes: schema.spec.nodes.append({...}),
46
+ * marks: schema.spec.marks
47
+ * });
48
+ * }
49
+ */
50
+ schema?: (props: WithEditorProps & {
51
+ schema: DefaultSchema;
52
+ }) => Schema;
53
+ /**
54
+ * Pass additional ProseMirror plugins.
55
+ * @example
56
+ * ({ plugins }) => [
57
+ * // use the default plugins
58
+ * ...plugins,
59
+ * // pass your plugins
60
+ * ]
61
+ */
62
+ plugins?: (props: WithEditorProps & {
63
+ plugins: Plugin[];
64
+ }) => Plugin[];
65
+ /**
66
+ * Customize the toolbar items.
67
+ * @example
68
+ * toolbar({ items, component, proseMirror }) {
69
+ * const { view } = proseMirror;
70
+ * return [
71
+ * // use the default toolbar items
72
+ * ...items,
73
+ * {
74
+ * id: 'customButton',
75
+ * type: 'button',
76
+ * icon: 'flare',
77
+ * onClick: () => {...}
78
+ * }
79
+ * ];
80
+ * }
81
+ */
82
+ toolbar?: (props: RteProseMirrorToolbarProps) => RteCustomToolbarResult;
83
+ }
@@ -0,0 +1,43 @@
1
+ import { RteProseMirrorOptions } from './types';
2
+ export interface RteProseMirrorOptionsSchema extends Omit<RteProseMirrorOptions, 'schema' | 'plugins' | 'toolbar'> {
3
+ /**
4
+ * Extend the default ProseMirror schema.
5
+ * @examples
6
+ * ({ schema }) => {
7
+ * // add additional nodes and return a new schema
8
+ * return new Schema({
9
+ * nodes: schema.spec.nodes.append({...}),
10
+ * marks: schema.spec.marks
11
+ * });
12
+ * }
13
+ */
14
+ schema?: '__fn__';
15
+ /**
16
+ * Pass additional ProseMirror plugins.
17
+ * @examples
18
+ * ({ plugins }) => [
19
+ * // use the default plugins
20
+ * ...plugins,
21
+ * // pass your plugins
22
+ * ]
23
+ */
24
+ plugins?: '__fn__';
25
+ /**
26
+ * Customize the toolbar items.
27
+ * @examples
28
+ * toolbar({ items, component, proseMirror }) {
29
+ * const { view } = proseMirror;
30
+ * return [
31
+ * // use the default toolbar items
32
+ * ...items,
33
+ * {
34
+ * id: 'customButton',
35
+ * type: 'button',
36
+ * icon: 'flare',
37
+ * onClick: () => {...}
38
+ * }
39
+ * ];
40
+ * }
41
+ */
42
+ toolbar?: '__fn__';
43
+ }
@@ -0,0 +1,24 @@
1
+ import { MarkType, NodeType } from 'prosemirror-model';
2
+ import { EditorState, Transaction } from 'prosemirror-state';
3
+ import { EditorView } from 'prosemirror-view';
4
+ import { Component } from 'grapesjs';
5
+ export declare const mapElToView: WeakMap<HTMLElement, EditorView>;
6
+ export declare const mapViewToEl: WeakMap<EditorView, HTMLElement>;
7
+ export declare const setElToViewMapping: (el: HTMLElement, view: EditorView) => void;
8
+ export declare const deleteElToViewMapping: (el: HTMLElement, view: EditorView) => void;
9
+ export declare const getViewFromEl: (el: HTMLElement) => EditorView | undefined;
10
+ export declare const getElFromView: (view: EditorView) => HTMLElement | undefined;
11
+ /**
12
+ * Get the GrapesJS component from the PM view
13
+ */
14
+ export declare const getComponentFromView: (view: EditorView) => Component | undefined;
15
+ export declare const dispatchInput: (el: HTMLElement) => boolean;
16
+ export declare const isMarkActive: (state: EditorState, type: MarkType | null | undefined) => boolean;
17
+ export declare const isBlockActive: (state: EditorState, type: NodeType | null | undefined, attrs?: Record<string, any>) => boolean;
18
+ export declare function unwrapInlineFragment(container: HTMLElement): void;
19
+ export declare function updateNodeAttributes(tr: Transaction, pos: number, newAttrs: Record<string, any>): void;
20
+ export declare function handleNodeSplitting(tr: Transaction, from: number): {
21
+ splittedElementPos: number;
22
+ splittedInlineFragmentPos: number;
23
+ };
24
+ export declare function removeInlineFragmentMarks(tr: Transaction, pos: number, textLength: number): void;
@@ -0,0 +1,14 @@
1
+ import { Editor } from 'grapesjs';
2
+ import { Node } from 'prosemirror-model';
3
+ import { EditorView } from 'prosemirror-view';
4
+ export declare class ImageView {
5
+ node: Node;
6
+ dom: HTMLImageElement;
7
+ view: EditorView;
8
+ editor: Editor;
9
+ constructor(node: Node, view: EditorView, editor: Editor);
10
+ handleDoubleClick(e: Event): void;
11
+ update(newNode: Node): boolean;
12
+ selectNode(): void;
13
+ deselectNode(): void;
14
+ }
@@ -1 +1 @@
1
- "use strict";require("react");function ce(e,t,o){let l,s,n,c,a;const r=t;function h(){const g=Date.now()-c;g<r&&g>=0?l=setTimeout(h,r-g):(l=null,a=e.apply(n,s),n=s=null)}const v=function(){return n=this,s=arguments,c=Date.now(),l||(l=setTimeout(h,r)),a};return v.clear=function(){l&&(clearTimeout(l),l=null)},v.flush=function(){l&&(a=e.apply(n,s),n=s=null,clearTimeout(l),l=null)},v}const B="app.grapesjs.com",O="app-stage.grapesjs.com",T=[B,O,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],re="license:check:start",ie="license:check:end",Z=()=>typeof window<"u",he=({isDev:e,isStage:t})=>`${e?"":`https://${t?O:B}`}/api`,de=()=>{const e=Z()&&window.location.hostname;return!!e&&(T.includes(e)||T.some(t=>e.endsWith(t)))},ve=()=>(Z()&&window.location.hostname)===B;function F(e){return typeof e=="function"}var be={NODE_ENV:"production",NPM_PACKAGE_VERSION:"1.0.4",STUDIO_NPM_PACKAGE_VERSION:"1.0.24-rc.1"};const ge=be.NODE_ENV!=="production";async function ue({path:e,method:t="GET",headers:o={},body:l}){const n=`${he({isDev:ge,isStage:!ve()})}${e}`,c={method:t,headers:{"Content-Type":"application/json",...o}};l&&(c.body=JSON.stringify(l));const a=await fetch(n,c);if(!a.ok)throw new Error(`HTTP error! status: ${a.status}`);return a.json()}function pe(e){const t=e;return t.init=o=>l=>e(l,o),t}const fe=e=>pe(e);async function me({editor:e,pluginName:t,licenseKey:o,cleanup:l}){let s=!1;const n=de();e.on(re,()=>{s=!0}),e.on(ie,({sdkLicense:c})=>{c||l()}),setTimeout(async()=>{if(!s){if(n)return;o&&await we({licenseKey:o,pluginName:t})||l()}},2e3)}async function we({licenseKey:e,pluginName:t}){try{const o=await ue({path:`/sdk/${e}`,method:"POST",body:JSON.stringify({d:window.location.hostname,pn:t})}),{license:l}=o.result||{};return!!l}catch(o){return console.error("Error during SDK license check:",o),!1}}var G=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e))(G||{}),i=(e=>(e.table="table",e.tableSettings="tableSettings",e.tableDelete="tableDelete",e.tableHead="tableHead",e.tableFoot="tableFoot",e.tableCellItems="tableCellItems",e.tableCellProperties="tableCellProperties",e.tableCellMerge="tableCellMerge",e.tableCellSplit="tableCellSplit",e.tableRowItems="tableRowItems",e.tableRowInsertBefore="tableRowInsertBefore",e.tableRowInsertAfter="tableRowInsertAfter",e.tableRowDelete="tableRowDelete",e.tableRowProperties="tableRowProperties",e.tableRowCut="tableRowCut",e.tableRowCopy="tableRowCopy",e.tableRowPasteBefore="tableRowPasteBefore",e.tableRowPasteAfter="tableRowPasteAfter",e.tableColumn="tableColumn",e.tableColumnItems="tableColumnItems",e.tableColumnInsertBefore="tableColumnInsertBefore",e.tableColumnInsertAfter="tableColumnInsertAfter",e.tableColumnDelete="tableColumnDelete",e.tableColumnCut="tableColumnCut",e.tableColumnCopy="tableColumnCopy",e.tableColumnPasteBefore="tableColumnPasteBefore",e.tableColumnPasteAfter="tableColumnPasteAfter",e))(i||{});const d={table:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableSettings:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="m14.4 8.6 1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></svg>',tableHead:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableFoot:'<svg viewBox="0 0 24 24" data-test="1" style="transform: rotate(180deg);"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableColumn:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 9h-4v5h4v-5Zm-6 0H9v5h4v-5Zm0-7H9v5h4V6Zm6 0h-4v5h4V6Z"/></svg>',tableCellItems:"",tableCellProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',tableCellMerge:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zM5 16v2h3v-2H5zm14-5h-9v7h9v-7zm0-5h-4v3h4V6zM8 6H5v3h3V6zm5 0h-3v3h3V6zm-8 8h3v-3H5v3z"/></svg>',tableCellSplit:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',tableRowItems:"",tableRowInsertBefore:'<svg viewBox="0 0 24 24"><path d="M6 4a1 1 0 1 1 0 2H5v6h14V6h-1a1 1 0 0 1 0-2h2c.6 0 1 .4 1 1v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 .1V8H9a1 1 0 0 1 0-2h2V4c0-.6.4-1 1-1z"/></svg>',tableRowInsertAfter:'<svg viewBox="0 0 24 24"><path d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 0 1 .1 2H13v2a1 1 0 0 1-2 .1V18H9a1 1 0 0 1-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 0 1 0-2h1v-6H5v6h1a1 1 0 0 1 0 2H4a1 1 0 0 1-1-1V6c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',tableRowDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8 1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',tableRowProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',tableRowCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2a3 3 0 0 1 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 0 0-.8.4 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3L9 18l.4-.4.2-.4.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2h-.5zm7 0H15a1 1 0 0 0-.4.3 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4a2.8 2.8 0 0 0 .5.7h.1a2.8 2.8 0 0 0 .8.6l.4.1h.7l.5-.2.2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',tableRowCopy:'<svg viewBox="0 0 24 24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',tableRowPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableRowPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnItems:"",tableColumnInsertBefore:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 2 0v1h8V6H5v1a1 1 0 1 1-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H9v2a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',tableColumnInsertAfter:'<svg viewBox="0 0 24 24"><path d="M20 4c.6 0 1 .4 1 1v2a1 1 0 0 1-2 0V6h-8v12h8v-1a1 1 0 0 1 2 0v2c0 .5-.4 1-.9 1H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H17v2a1 1 0 0 1-2 .1V13h-2a1 1 0 0 1-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',tableColumnDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5 1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',tableColumnCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M7.2 4.5a3 3 0 0 1 2.2 1A3.7 3.7 0 0 1 10.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 0 1 2 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 0 1 7 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 0 0-.7.4v.1a2.8 2.8 0 0 0-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 0 0 .8-.3 2.4 2.4 0 0 0 .7-.7 2.5 2.5 0 0 0 .3-.8 1.5 1.5 0 0 0 0-.8 1 1 0 0 0-.2-.4 1 1 0 0 0-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 0 0-.5.3 1 1 0 0 0-.2.5v.7a2.5 2.5 0 0 0 .3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 0 0 0-.8 2.6 2.6 0 0 0-.3-.8 2.5 2.5 0 0 0-1.2-1l-.4-.1H7z"/></svg>',tableColumnCopy:'<svg viewBox="0 0 24 24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',tableColumnPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v2H4V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>'},p="table",W="thead",$="tfoot",P="tbody",u="row",b="cell",k="clipboardTable",ye=[p,W,$,P,u,b],V=e=>e.em.get(k)||[],Ce=e=>e.every(t=>t.is(b)),I=(e,t)=>{const{editor:o,event:l,opts:s}=e,n=l.currentTarget||l.target,{x:c,y:a,width:r,height:h}=n.getBoundingClientRect(),v={style:{width:240,height:300},placer:{type:"popover",closeOnClickAway:!0,x:c,y:a,w:r,h},layout:{type:"tabs",value:"props",tabs:[{id:"styles",label:"Styles",children:{type:"panelStyles"}},{id:"props",label:"Properties",children:{type:"panelProperties",style:{padding:"14px 7px"}}}]},...t};F(s.openSettings)?s.openSettings({...e,layoutProps:v}):o.runCommand(G.layoutToggle,v)},He=(e,{rows:t=1,cells:o=5,text:l}={})=>({type:e,components:Array.from(Array(t).keys()).map(s=>({type:u,components:Array.from(Array(o).keys()).map(n=>({type:b,components:l?{type:"text",content:F(l)?l({y:s,x:n}):l}:void 0}))}))}),K="Table settings",U=e=>{const{component:t}=e;return t.is(p)?t:t.closestType(p)},Ve=e=>{var t;(t=U(e))==null||t.remove(e.opts)},Re=e=>{const t=U(e);t&&(e.editor.select(t),I(e,{id:"tableSettings",header:{label:K}}))},j=e=>[{id:i.table,icon:d[i.table],label:"Table",items:[{id:i.tableSettings,label:K,icon:d[i.tableSettings],onClick:({event:o})=>Re({...e,event:o})},{id:i.tableDelete,label:"Delete table",icon:d[i.tableDelete],onClick:()=>Ve(e)}]}],J=({editor:e})=>{const t=V(e);return t.length&&Ce(t)},E=({component:e,editor:t,after:o})=>{if(!e.is(b))return;const l=e.closestType(p),s=e.closestType(u),n=e.index()+(o?1:0);l==null||l.findType(u).forEach(a=>a.append({type:b},{at:n}));const c=s==null?void 0:s.components().at(n);c&&t.select(c)},X=({component:e,opts:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index();o==null||o.findType(u).forEach(s=>{var n;return(n=s.components().at(l))==null?void 0:n.remove(t)})},Y=({component:e,editor:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index(),s=(o==null?void 0:o.findType(u).map(n=>n.components().at(l)))||[];s.length&&t.em.set(k,s)},L=e=>{const{component:t,editor:o,after:l}=e;if(!t.is(b)||!J(e))return;const s=V(o),n=t.closestType(p),c=t.index()+(l?1:0);n==null||n.findType(u).forEach((a,r)=>{const h=s[r],v=(h==null?void 0:h.clone())||{type:b};a.append(v,{at:c})})},ze=e=>{const{component:t}=e;t.is(b)&&(Y(e),X({...e,opts:{temporary:!0}}))},Pe=e=>{const t=J(e);return[{id:i.tableColumnItems,icon:d[i.tableColumn],label:"Column",items:[{id:i.tableColumnInsertBefore,label:"Insert column before",icon:d[i.tableColumnInsertBefore],onClick:()=>E(e)},{id:i.tableColumnInsertAfter,label:"Insert column after",icon:d[i.tableColumnInsertAfter],onClick:()=>E({...e,after:!0})},{id:i.tableColumnDelete,label:"Delete column",icon:d[i.tableColumnDelete],onClick:()=>X(e)},{id:i.tableColumnCut,label:"Cut column",icon:d[i.tableColumnCut],onClick:()=>ze(e)},{id:i.tableColumnCopy,label:"Copy column",icon:d[i.tableColumnCopy],onClick:()=>Y(e)},{id:i.tableColumnPasteBefore,label:"Paste column before",icon:d[i.tableColumnPasteBefore],disabled:!t,onClick:()=>L(e)},{id:i.tableColumnPasteAfter,label:"Paste column after",icon:d[i.tableColumnPasteAfter],disabled:!t,onClick:()=>L({...e,after:!0})}]}]},q="Row settings",Ae=e=>e.every(t=>t.is(u)),C=e=>{const{component:t}=e,o=t.is(b),l=t.is(u);if(!(!o&&!l))return l?t:t.closestType(u)},N=e=>{const{component:t,editor:o,after:l}=e,s=C(e);if(!s)return;const n=s.index()+(l?1:0),c=s.components().length,a=Array.from(Array(c).keys()).map(()=>({type:b})),r=s.parent();if(r){const h=r.append({type:u,components:a},{at:n})[0];if(t.is(b)&&h){const v=t.index(),g=h.components().at(v);g&&o.select(g)}}},Q=e=>{var t;(t=C(e))==null||t.remove(e.opts)},ee=e=>{const t=C(e);t&&e.editor.em.set(k,[t])},_=e=>{var a;const{editor:t,after:o}=e,l=C(e);if(!l||!te(e))return;const n=V(t)[0],c=l.index()+(o?1:0);n&&((a=l.parent())==null||a.append(n.clone(),{at:c}))},Be=e=>{C(e)&&(ee(e),Q({...e,opts:{temporary:!0}}))},te=({editor:e})=>{const t=V(e);return t.length&&Ae(t)},ke=e=>{const t=C(e);t&&(e.editor.select(t),I(e,{id:"tableRowSettings",header:{label:q}}))},le=e=>{const t=te(e);return[{id:i.tableRowItems,icon:d[i.tableRowProperties],label:"Row",items:[{id:i.tableRowInsertBefore,label:"Insert row before",icon:d[i.tableRowInsertBefore],onClick:()=>N(e)},{id:i.tableRowInsertAfter,label:"Insert row after",icon:d[i.tableRowInsertAfter],onClick:()=>N({...e,after:!0})},{id:i.tableRowDelete,label:"Delete row",icon:d[i.tableRowDelete],onClick:()=>Q(e)},{id:i.tableRowProperties,label:q,icon:d[i.tableRowProperties],onClick:({event:l})=>ke({...e,event:l})},{id:i.tableRowCut,label:"Cut row",icon:d[i.tableRowCut],onClick:()=>Be(e)},{id:i.tableRowCopy,label:"Copy row",icon:d[i.tableRowCopy],onClick:()=>ee(e)},{id:i.tableRowPasteBefore,label:"Paste row before",icon:d[i.tableRowPasteBefore],disabled:!t,onClick:()=>_(e)},{id:i.tableRowPasteAfter,label:"Paste row after",icon:d[i.tableRowPasteAfter],disabled:!t,onClick:()=>_({...e,after:!0})}]},...j(e)]},x=e=>{const t=e.attributes.attributes||{},o=parseInt(`${t.rowspan||1}`,10),l=parseInt(`${t.colspan||1}`,10);return{rowspan:o,colspan:l}};function oe(e){const t=[];return e.components().forEach((o,l)=>{o.components().each((s,n)=>{const{rowspan:c,colspan:a}=x(s);if(t[l])for(;t[l][n];)n++;for(let r=l;r<l+c;r++){t[r]||(t[r]=[]);for(let h=n;h<n+a;h++)t[r][h]={real:r===l&&h===n,cell:s,rowspan:c,colspan:a}}})}),t}function w(e,t,o){var l;return(l=e[o])==null?void 0:l[t]}const A=e=>e.closestType(u);function Ie(e,{x:t,y:o,rows:l,cols:s}){var a;let n=A(e[o][t].cell),c;for(let r=1;r<=l;r++)if(n=(a=n==null?void 0:n.parent())==null?void 0:a.components().at(n.index()+1),n){for(c=t;c>=0;c--){const{cell:h}=e[o+r][c],v=A(h);if(v===n){for(let g=1;g<=s;g++){const f=h.index();v.append({type:b},{at:f+1})}break}}if(c===-1){const v=n.components().at(0).index();for(let g=1;g<=s;g++)n.append({type:b},{at:v})}}}function ne(e){for(let t=0;t<e.length;t++)for(let o=0;o<e[t].length;o++){const s=e[t][o].cell;if(s.em.selected.hasComponent(s)){const{rowspan:n,colspan:c}=x(s);if(c>1||n>1){s.addAttributes({colspan:1,rowspan:1});for(let a=0;a<c-1;a++){const r=s.index();A(s).append({type:b},{at:r+1})}Ie(e,{x:o,y:t,rows:n-1,cols:c})}}}}function xe(e){const t=[];e.components().forEach(o=>{o.components().length||t.push(o)}),t.forEach(o=>o.remove())}const R=(e,t={})=>{var c;const o=oe(e),{em:l}=e;let s,n;for(let a=0;a<o.length;a++)for(let r=0;r<o[a].length;r++){const h=o[a][r];if((c=t.selected)!=null&&c.includes(h.cell)||l.selected.hasComponent(h.cell)){const v={x:r,y:a};s||(s=v),n=v}}return{grid:o,startPos:s,endPos:n}};function Me(e,t={}){const o=R(e),{startPos:l,endPos:s}=o;let{grid:n}=o;const{em:c}=e;if(!l||!s)return;const a=l.x,r=l.y,h=s.x,v=s.y,g=w(n,a,r),f=w(n,h,v);if(g&&f){ne(n),n=oe(e);const M=[],H=w(n,a,r).cell;H.addAttributes({colspan:h-a+1,rowspan:v-r+1});for(let m=r;m<=v;m++)for(let z=a;z<=h;z++){const S=w(n,z,m);if(!S)continue;const{cell:D}=S;D!==H&&M.push(D)}M.forEach(m=>{t.mergeContent&&H.append(m.components().models),m.remove()}),c.setSelected(H),xe(e)}}const se="Cell settings",Se="Merge cells",De="Split cell",Te=e=>e.closestType(u),y=e=>{var t;return(t=Te(e))==null?void 0:t.parent()},Ee=e=>{const t=e.editor.getSelectedAll(),o=y(t[0]),l=t[0];if(!o||!(l!=null&&l.is(b))||t.length>1)return!1;const{rowspan:s,colspan:n}=x(l);return!(n<2&&s<2)},Le=e=>{const o=e.editor.getSelectedAll()[0],l=y(o),{grid:s}=R(l);ne(s)},ae=e=>{const t=e.editor.getSelectedAll(),o=y(t[0]);if(!o||t.length<2||t.some(a=>!a.is(b)||y(a)!==o))return!1;const{grid:l,startPos:s,endPos:n}=R(o),{em:c}=o;if(!s||!n)return!1;for(let a=s.y;a<=n.y;a++)for(let r=s.x;r<=n.x;r++){const h=w(l,r,a);if(!h||!c.selected.hasComponent(h.cell))return!1}return!0},Ne=e=>{const{editor:t}=e;if(!ae(e))return;const o=t.getSelectedAll(),l=y(o[0]);Me(l,{mergeContent:!0})},_e=e=>{I(e,{id:"tableCellSettings",header:{label:se}})},Oe=e=>[{id:i.tableCellItems,icon:d[i.tableCellProperties],label:"Cell",items:[{id:i.tableCellProperties,label:se,icon:d[i.tableCellProperties],onClick:({event:o})=>_e({...e,event:o})},{id:i.tableCellMerge,label:Se,icon:d[i.tableCellMerge],onClick:()=>Ne(e),disabled:!ae(e)},{id:i.tableCellSplit,label:De,icon:d[i.tableCellSplit],onClick:()=>Le(e),disabled:!Ee(e)}]},...Pe(e),...le(e)],Ze=e=>{const t=e[0]&&y(e[0]);if(!t)return;const{grid:o,startPos:l,endPos:s}=R(t,{selected:e});if(!l||!s)return;const n=[];for(let c=l.y;c<=s.y;c++)for(let a=l.x;a<=s.x;a++){const r=w(o,a,c);r&&n.push(r.cell)}n.length&&t.em.setSelected(n,{fromCell:!0})},Fe="tableComponent",Ge=function(e,t={}){const o={block:{},...t},{Components:l}=e,s={copyable:!1,emptyState:!0,highlightable:!1,stylable:["color","font-family","font-size","font-weight","line-height","text-align","vertical-align","background-color","border-width","border-style","border-color"]};l.addType(p,{block:o.block&&{label:"Table",media:d.table,category:"Extra",content:{type:p,style:{width:"100%"}},select:!0,...o.block},model:{defaults:{emptyState:!0,highlightable:!1,icon:d.table,stylable:["width","height","margin","font-family","font-size","font-weight","line-height","text-align","background","background-color","border-width","border-style","border-color"],traits:[{type:"number",min:0,name:"cellspacing",label:"Cell spacing"},{type:"number",min:0,name:"cellpadding",label:"Cell padding"},{id:"tableCaption",type:"checkbox",label:"Caption",setValue({component:c,value:a,emitUpdate:r}){const h=c.find("caption")[0];a?!h&&c.append({type:"text",tagName:"caption",components:{type:"textnode",content:"Caption"}}):h==null||h.remove(),r(),e.refresh({tools:!0})},getValue(c){return!!c.component.find("caption")[0]}}],components:He(P,{rows:5}),contextMenu:({items:c,editor:a,component:r})=>[...j({editor:a,component:r,opts:o}),...c]}}}),l.addType(W,{model:{defaults:{icon:d.tableHead,...s}}}),l.addType($,{model:{defaults:{icon:d.tableFoot,...s}}}),l.addType(P,{model:{defaults:{icon:d.tableRowProperties,...s}}}),l.addType(u,{model:{defaults:{icon:d.tableRowProperties,emptyState:!0,highlightable:!1,stylable:["height","text-align","border-width","border-style","border-color"],traits:[],contextMenu:({items:c,editor:a,component:r})=>[...le({editor:a,component:r,opts:o}),...c]}}}),l.addType(b,{model:{defaults:{icon:d.tableCellProperties,emptyState:{styleOut:"height: 1px"},stylable:["width","height","padding","background-color","text-align","vertical-align","border-width","border-style","border-color"],traits:[{id:"tableCellType",type:"select",options:[{value:"td",name:"Cell"},{value:"th",name:"Header Cell"}],label:"Cell type",name:"tagName",changeProp:!0},{id:"tableCellScope",type:"select",options:[{value:!1,name:"None"},{value:"row",name:"Row"},{value:"col",name:"Column"},{value:"rowgroup",name:"Row group"},{value:"colgroup",name:"Column group"}],label:"Scope",name:"scope"}],contextMenu:({items:c,editor:a,component:r})=>[...Oe({editor:a,component:r,opts:o}),...c]}}});const n=ce((c,a)=>{var g;const r=e.getSelectedAll(),h=!!((g=a==null?void 0:a.event)!=null&&g.shiftKey);if(r.length<2||!h||a.fromCell)return;const v=r.map(f=>f.is(b)?f:f.closestType(b)).filter(Boolean);v.length===r.length&&Ze(v)},0);e.on("component:select",n),me({editor:e,licenseKey:o.licenseKey,pluginName:Fe,cleanup:()=>{e.off("component:select",n),e.Blocks.remove(p),ye.forEach(c=>l.removeType(c))}})},We=fe(Ge);module.exports=We;
1
+ "use strict";require("react");function ce(e,t,o){let l,s,n,c,a;const r=t;function h(){const g=Date.now()-c;g<r&&g>=0?l=setTimeout(h,r-g):(l=null,a=e.apply(n,s),n=s=null)}const v=function(){return n=this,s=arguments,c=Date.now(),l||(l=setTimeout(h,r)),a};return v.clear=function(){l&&(clearTimeout(l),l=null)},v.flush=function(){l&&(a=e.apply(n,s),n=s=null,clearTimeout(l),l=null)},v}const B="app.grapesjs.com",O="app-stage.grapesjs.com",T=[B,O,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],re="license:check:start",ie="license:check:end",Z=()=>typeof window<"u",he=({isDev:e,isStage:t})=>`${e?"":`https://${t?O:B}`}/api`,de=()=>{const e=Z()&&window.location.hostname;return!!e&&(T.includes(e)||T.some(t=>e.endsWith(t)))},ve=()=>(Z()&&window.location.hostname)===B;function F(e){return typeof e=="function"}var be={NODE_ENV:"production",NPM_PACKAGE_VERSION:"1.0.5",STUDIO_NPM_PACKAGE_VERSION:"1.0.24"};const ge=be.NODE_ENV!=="production";async function ue({path:e,method:t="GET",headers:o={},body:l}){const n=`${he({isDev:ge,isStage:!ve()})}${e}`,c={method:t,headers:{"Content-Type":"application/json",...o}};l&&(c.body=JSON.stringify(l));const a=await fetch(n,c);if(!a.ok)throw new Error(`HTTP error! status: ${a.status}`);return a.json()}function pe(e){const t=e;return t.init=o=>l=>e(l,o),t}const fe=e=>pe(e);async function me({editor:e,pluginName:t,licenseKey:o,cleanup:l}){let s=!1;const n=de();e.on(re,()=>{s=!0}),e.on(ie,({sdkLicense:c})=>{c||l()}),setTimeout(async()=>{if(!s){if(n)return;o&&await we({licenseKey:o,pluginName:t})||l()}},2e3)}async function we({licenseKey:e,pluginName:t}){try{const o=await ue({path:`/sdk/${e}`,method:"POST",body:JSON.stringify({d:window.location.hostname,pn:t})}),{license:l}=o.result||{};return!!l}catch(o){return console.error("Error during SDK license check:",o),!1}}var G=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e))(G||{}),i=(e=>(e.table="table",e.tableSettings="tableSettings",e.tableDelete="tableDelete",e.tableHead="tableHead",e.tableFoot="tableFoot",e.tableCellItems="tableCellItems",e.tableCellProperties="tableCellProperties",e.tableCellMerge="tableCellMerge",e.tableCellSplit="tableCellSplit",e.tableRowItems="tableRowItems",e.tableRowInsertBefore="tableRowInsertBefore",e.tableRowInsertAfter="tableRowInsertAfter",e.tableRowDelete="tableRowDelete",e.tableRowProperties="tableRowProperties",e.tableRowCut="tableRowCut",e.tableRowCopy="tableRowCopy",e.tableRowPasteBefore="tableRowPasteBefore",e.tableRowPasteAfter="tableRowPasteAfter",e.tableColumn="tableColumn",e.tableColumnItems="tableColumnItems",e.tableColumnInsertBefore="tableColumnInsertBefore",e.tableColumnInsertAfter="tableColumnInsertAfter",e.tableColumnDelete="tableColumnDelete",e.tableColumnCut="tableColumnCut",e.tableColumnCopy="tableColumnCopy",e.tableColumnPasteBefore="tableColumnPasteBefore",e.tableColumnPasteAfter="tableColumnPasteAfter",e))(i||{});const d={table:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableSettings:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="m14.4 8.6 1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></svg>',tableHead:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableFoot:'<svg viewBox="0 0 24 24" data-test="1" style="transform: rotate(180deg);"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableColumn:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 9h-4v5h4v-5Zm-6 0H9v5h4v-5Zm0-7H9v5h4V6Zm6 0h-4v5h4V6Z"/></svg>',tableCellItems:"",tableCellProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',tableCellMerge:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zM5 16v2h3v-2H5zm14-5h-9v7h9v-7zm0-5h-4v3h4V6zM8 6H5v3h3V6zm5 0h-3v3h3V6zm-8 8h3v-3H5v3z"/></svg>',tableCellSplit:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',tableRowItems:"",tableRowInsertBefore:'<svg viewBox="0 0 24 24"><path d="M6 4a1 1 0 1 1 0 2H5v6h14V6h-1a1 1 0 0 1 0-2h2c.6 0 1 .4 1 1v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 .1V8H9a1 1 0 0 1 0-2h2V4c0-.6.4-1 1-1z"/></svg>',tableRowInsertAfter:'<svg viewBox="0 0 24 24"><path d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 0 1 .1 2H13v2a1 1 0 0 1-2 .1V18H9a1 1 0 0 1-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 0 1 0-2h1v-6H5v6h1a1 1 0 0 1 0 2H4a1 1 0 0 1-1-1V6c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',tableRowDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8 1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',tableRowProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',tableRowCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2a3 3 0 0 1 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 0 0-.8.4 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3L9 18l.4-.4.2-.4.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2h-.5zm7 0H15a1 1 0 0 0-.4.3 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4a2.8 2.8 0 0 0 .5.7h.1a2.8 2.8 0 0 0 .8.6l.4.1h.7l.5-.2.2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',tableRowCopy:'<svg viewBox="0 0 24 24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',tableRowPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableRowPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnItems:"",tableColumnInsertBefore:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 2 0v1h8V6H5v1a1 1 0 1 1-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H9v2a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',tableColumnInsertAfter:'<svg viewBox="0 0 24 24"><path d="M20 4c.6 0 1 .4 1 1v2a1 1 0 0 1-2 0V6h-8v12h8v-1a1 1 0 0 1 2 0v2c0 .5-.4 1-.9 1H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H17v2a1 1 0 0 1-2 .1V13h-2a1 1 0 0 1-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',tableColumnDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5 1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',tableColumnCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M7.2 4.5a3 3 0 0 1 2.2 1A3.7 3.7 0 0 1 10.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 0 1 2 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 0 1 7 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 0 0-.7.4v.1a2.8 2.8 0 0 0-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 0 0 .8-.3 2.4 2.4 0 0 0 .7-.7 2.5 2.5 0 0 0 .3-.8 1.5 1.5 0 0 0 0-.8 1 1 0 0 0-.2-.4 1 1 0 0 0-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 0 0-.5.3 1 1 0 0 0-.2.5v.7a2.5 2.5 0 0 0 .3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 0 0 0-.8 2.6 2.6 0 0 0-.3-.8 2.5 2.5 0 0 0-1.2-1l-.4-.1H7z"/></svg>',tableColumnCopy:'<svg viewBox="0 0 24 24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',tableColumnPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v2H4V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>'},p="table",W="thead",$="tfoot",P="tbody",u="row",b="cell",k="clipboardTable",ye=[p,W,$,P,u,b],V=e=>e.em.get(k)||[],Ce=e=>e.every(t=>t.is(b)),I=(e,t)=>{const{editor:o,event:l,opts:s}=e,n=l.currentTarget||l.target,{x:c,y:a,width:r,height:h}=n.getBoundingClientRect(),v={style:{width:240,height:300},placer:{type:"popover",closeOnClickAway:!0,x:c,y:a,w:r,h},layout:{type:"tabs",value:"props",tabs:[{id:"styles",label:"Styles",children:{type:"panelStyles"}},{id:"props",label:"Properties",children:{type:"panelProperties",style:{padding:"14px 7px"}}}]},...t};F(s.openSettings)?s.openSettings({...e,layoutProps:v}):o.runCommand(G.layoutToggle,v)},He=(e,{rows:t=1,cells:o=5,text:l}={})=>({type:e,components:Array.from(Array(t).keys()).map(s=>({type:u,components:Array.from(Array(o).keys()).map(n=>({type:b,components:l?{type:"text",content:F(l)?l({y:s,x:n}):l}:void 0}))}))}),K="Table settings",U=e=>{const{component:t}=e;return t.is(p)?t:t.closestType(p)},Ve=e=>{var t;(t=U(e))==null||t.remove(e.opts)},Re=e=>{const t=U(e);t&&(e.editor.select(t),I(e,{id:"tableSettings",header:{label:K}}))},j=e=>[{id:i.table,icon:d[i.table],label:"Table",items:[{id:i.tableSettings,label:K,icon:d[i.tableSettings],onClick:({event:o})=>Re({...e,event:o})},{id:i.tableDelete,label:"Delete table",icon:d[i.tableDelete],onClick:()=>Ve(e)}]}],J=({editor:e})=>{const t=V(e);return t.length&&Ce(t)},E=({component:e,editor:t,after:o})=>{if(!e.is(b))return;const l=e.closestType(p),s=e.closestType(u),n=e.index()+(o?1:0);l==null||l.findType(u).forEach(a=>a.append({type:b},{at:n}));const c=s==null?void 0:s.components().at(n);c&&t.select(c)},X=({component:e,opts:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index();o==null||o.findType(u).forEach(s=>{var n;return(n=s.components().at(l))==null?void 0:n.remove(t)})},Y=({component:e,editor:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index(),s=(o==null?void 0:o.findType(u).map(n=>n.components().at(l)))||[];s.length&&t.em.set(k,s)},L=e=>{const{component:t,editor:o,after:l}=e;if(!t.is(b)||!J(e))return;const s=V(o),n=t.closestType(p),c=t.index()+(l?1:0);n==null||n.findType(u).forEach((a,r)=>{const h=s[r],v=(h==null?void 0:h.clone())||{type:b};a.append(v,{at:c})})},ze=e=>{const{component:t}=e;t.is(b)&&(Y(e),X({...e,opts:{temporary:!0}}))},Pe=e=>{const t=J(e);return[{id:i.tableColumnItems,icon:d[i.tableColumn],label:"Column",items:[{id:i.tableColumnInsertBefore,label:"Insert column before",icon:d[i.tableColumnInsertBefore],onClick:()=>E(e)},{id:i.tableColumnInsertAfter,label:"Insert column after",icon:d[i.tableColumnInsertAfter],onClick:()=>E({...e,after:!0})},{id:i.tableColumnDelete,label:"Delete column",icon:d[i.tableColumnDelete],onClick:()=>X(e)},{id:i.tableColumnCut,label:"Cut column",icon:d[i.tableColumnCut],onClick:()=>ze(e)},{id:i.tableColumnCopy,label:"Copy column",icon:d[i.tableColumnCopy],onClick:()=>Y(e)},{id:i.tableColumnPasteBefore,label:"Paste column before",icon:d[i.tableColumnPasteBefore],disabled:!t,onClick:()=>L(e)},{id:i.tableColumnPasteAfter,label:"Paste column after",icon:d[i.tableColumnPasteAfter],disabled:!t,onClick:()=>L({...e,after:!0})}]}]},q="Row settings",Ae=e=>e.every(t=>t.is(u)),C=e=>{const{component:t}=e,o=t.is(b),l=t.is(u);if(!(!o&&!l))return l?t:t.closestType(u)},N=e=>{const{component:t,editor:o,after:l}=e,s=C(e);if(!s)return;const n=s.index()+(l?1:0),c=s.components().length,a=Array.from(Array(c).keys()).map(()=>({type:b})),r=s.parent();if(r){const h=r.append({type:u,components:a},{at:n})[0];if(t.is(b)&&h){const v=t.index(),g=h.components().at(v);g&&o.select(g)}}},Q=e=>{var t;(t=C(e))==null||t.remove(e.opts)},ee=e=>{const t=C(e);t&&e.editor.em.set(k,[t])},_=e=>{var a;const{editor:t,after:o}=e,l=C(e);if(!l||!te(e))return;const n=V(t)[0],c=l.index()+(o?1:0);n&&((a=l.parent())==null||a.append(n.clone(),{at:c}))},Be=e=>{C(e)&&(ee(e),Q({...e,opts:{temporary:!0}}))},te=({editor:e})=>{const t=V(e);return t.length&&Ae(t)},ke=e=>{const t=C(e);t&&(e.editor.select(t),I(e,{id:"tableRowSettings",header:{label:q}}))},le=e=>{const t=te(e);return[{id:i.tableRowItems,icon:d[i.tableRowProperties],label:"Row",items:[{id:i.tableRowInsertBefore,label:"Insert row before",icon:d[i.tableRowInsertBefore],onClick:()=>N(e)},{id:i.tableRowInsertAfter,label:"Insert row after",icon:d[i.tableRowInsertAfter],onClick:()=>N({...e,after:!0})},{id:i.tableRowDelete,label:"Delete row",icon:d[i.tableRowDelete],onClick:()=>Q(e)},{id:i.tableRowProperties,label:q,icon:d[i.tableRowProperties],onClick:({event:l})=>ke({...e,event:l})},{id:i.tableRowCut,label:"Cut row",icon:d[i.tableRowCut],onClick:()=>Be(e)},{id:i.tableRowCopy,label:"Copy row",icon:d[i.tableRowCopy],onClick:()=>ee(e)},{id:i.tableRowPasteBefore,label:"Paste row before",icon:d[i.tableRowPasteBefore],disabled:!t,onClick:()=>_(e)},{id:i.tableRowPasteAfter,label:"Paste row after",icon:d[i.tableRowPasteAfter],disabled:!t,onClick:()=>_({...e,after:!0})}]},...j(e)]},x=e=>{const t=e.attributes.attributes||{},o=parseInt(`${t.rowspan||1}`,10),l=parseInt(`${t.colspan||1}`,10);return{rowspan:o,colspan:l}};function oe(e){const t=[];return e.components().forEach((o,l)=>{o.components().each((s,n)=>{const{rowspan:c,colspan:a}=x(s);if(t[l])for(;t[l][n];)n++;for(let r=l;r<l+c;r++){t[r]||(t[r]=[]);for(let h=n;h<n+a;h++)t[r][h]={real:r===l&&h===n,cell:s,rowspan:c,colspan:a}}})}),t}function w(e,t,o){var l;return(l=e[o])==null?void 0:l[t]}const A=e=>e.closestType(u);function Ie(e,{x:t,y:o,rows:l,cols:s}){var a;let n=A(e[o][t].cell),c;for(let r=1;r<=l;r++)if(n=(a=n==null?void 0:n.parent())==null?void 0:a.components().at(n.index()+1),n){for(c=t;c>=0;c--){const{cell:h}=e[o+r][c],v=A(h);if(v===n){for(let g=1;g<=s;g++){const f=h.index();v.append({type:b},{at:f+1})}break}}if(c===-1){const v=n.components().at(0).index();for(let g=1;g<=s;g++)n.append({type:b},{at:v})}}}function ne(e){for(let t=0;t<e.length;t++)for(let o=0;o<e[t].length;o++){const s=e[t][o].cell;if(s.em.selected.hasComponent(s)){const{rowspan:n,colspan:c}=x(s);if(c>1||n>1){s.addAttributes({colspan:1,rowspan:1});for(let a=0;a<c-1;a++){const r=s.index();A(s).append({type:b},{at:r+1})}Ie(e,{x:o,y:t,rows:n-1,cols:c})}}}}function xe(e){const t=[];e.components().forEach(o=>{o.components().length||t.push(o)}),t.forEach(o=>o.remove())}const R=(e,t={})=>{var c;const o=oe(e),{em:l}=e;let s,n;for(let a=0;a<o.length;a++)for(let r=0;r<o[a].length;r++){const h=o[a][r];if((c=t.selected)!=null&&c.includes(h.cell)||l.selected.hasComponent(h.cell)){const v={x:r,y:a};s||(s=v),n=v}}return{grid:o,startPos:s,endPos:n}};function Me(e,t={}){const o=R(e),{startPos:l,endPos:s}=o;let{grid:n}=o;const{em:c}=e;if(!l||!s)return;const a=l.x,r=l.y,h=s.x,v=s.y,g=w(n,a,r),f=w(n,h,v);if(g&&f){ne(n),n=oe(e);const M=[],H=w(n,a,r).cell;H.addAttributes({colspan:h-a+1,rowspan:v-r+1});for(let m=r;m<=v;m++)for(let z=a;z<=h;z++){const S=w(n,z,m);if(!S)continue;const{cell:D}=S;D!==H&&M.push(D)}M.forEach(m=>{t.mergeContent&&H.append(m.components().models),m.remove()}),c.setSelected(H),xe(e)}}const se="Cell settings",Se="Merge cells",De="Split cell",Te=e=>e.closestType(u),y=e=>{var t;return(t=Te(e))==null?void 0:t.parent()},Ee=e=>{const t=e.editor.getSelectedAll(),o=y(t[0]),l=t[0];if(!o||!(l!=null&&l.is(b))||t.length>1)return!1;const{rowspan:s,colspan:n}=x(l);return!(n<2&&s<2)},Le=e=>{const o=e.editor.getSelectedAll()[0],l=y(o),{grid:s}=R(l);ne(s)},ae=e=>{const t=e.editor.getSelectedAll(),o=y(t[0]);if(!o||t.length<2||t.some(a=>!a.is(b)||y(a)!==o))return!1;const{grid:l,startPos:s,endPos:n}=R(o),{em:c}=o;if(!s||!n)return!1;for(let a=s.y;a<=n.y;a++)for(let r=s.x;r<=n.x;r++){const h=w(l,r,a);if(!h||!c.selected.hasComponent(h.cell))return!1}return!0},Ne=e=>{const{editor:t}=e;if(!ae(e))return;const o=t.getSelectedAll(),l=y(o[0]);Me(l,{mergeContent:!0})},_e=e=>{I(e,{id:"tableCellSettings",header:{label:se}})},Oe=e=>[{id:i.tableCellItems,icon:d[i.tableCellProperties],label:"Cell",items:[{id:i.tableCellProperties,label:se,icon:d[i.tableCellProperties],onClick:({event:o})=>_e({...e,event:o})},{id:i.tableCellMerge,label:Se,icon:d[i.tableCellMerge],onClick:()=>Ne(e),disabled:!ae(e)},{id:i.tableCellSplit,label:De,icon:d[i.tableCellSplit],onClick:()=>Le(e),disabled:!Ee(e)}]},...Pe(e),...le(e)],Ze=e=>{const t=e[0]&&y(e[0]);if(!t)return;const{grid:o,startPos:l,endPos:s}=R(t,{selected:e});if(!l||!s)return;const n=[];for(let c=l.y;c<=s.y;c++)for(let a=l.x;a<=s.x;a++){const r=w(o,a,c);r&&n.push(r.cell)}n.length&&t.em.setSelected(n,{fromCell:!0})},Fe="tableComponent",Ge=function(e,t={}){const o={block:{},...t},{Components:l}=e,s={copyable:!1,emptyState:!0,highlightable:!1,stylable:["color","font-family","font-size","font-weight","line-height","text-align","vertical-align","background-color","border-width","border-style","border-color"]};l.addType(p,{block:o.block&&{label:"Table",media:d.table,category:"Extra",content:{type:p,style:{width:"100%"}},select:!0,...o.block},model:{defaults:{emptyState:!0,highlightable:!1,icon:d.table,stylable:["width","height","margin","font-family","font-size","font-weight","line-height","text-align","background","background-color","border-width","border-style","border-color"],traits:[{type:"number",min:0,name:"cellspacing",label:"Cell spacing"},{type:"number",min:0,name:"cellpadding",label:"Cell padding"},{id:"tableCaption",type:"checkbox",label:"Caption",setValue({component:c,value:a,emitUpdate:r}){const h=c.find("caption")[0];a?!h&&c.append({type:"text",tagName:"caption",components:{type:"textnode",content:"Caption"}}):h==null||h.remove(),r(),e.refresh({tools:!0})},getValue(c){return!!c.component.find("caption")[0]}}],components:He(P,{rows:5}),contextMenu:({items:c,editor:a,component:r})=>[...j({editor:a,component:r,opts:o}),...c]}}}),l.addType(W,{model:{defaults:{icon:d.tableHead,...s}}}),l.addType($,{model:{defaults:{icon:d.tableFoot,...s}}}),l.addType(P,{model:{defaults:{icon:d.tableRowProperties,...s}}}),l.addType(u,{model:{defaults:{icon:d.tableRowProperties,emptyState:!0,highlightable:!1,stylable:["height","text-align","border-width","border-style","border-color"],traits:[],contextMenu:({items:c,editor:a,component:r})=>[...le({editor:a,component:r,opts:o}),...c]}}}),l.addType(b,{model:{defaults:{icon:d.tableCellProperties,emptyState:{styleOut:"height: 1px"},stylable:["width","height","padding","background-color","text-align","vertical-align","border-width","border-style","border-color"],traits:[{id:"tableCellType",type:"select",options:[{value:"td",name:"Cell"},{value:"th",name:"Header Cell"}],label:"Cell type",name:"tagName",changeProp:!0},{id:"tableCellScope",type:"select",options:[{value:!1,name:"None"},{value:"row",name:"Row"},{value:"col",name:"Column"},{value:"rowgroup",name:"Row group"},{value:"colgroup",name:"Column group"}],label:"Scope",name:"scope"}],contextMenu:({items:c,editor:a,component:r})=>[...Oe({editor:a,component:r,opts:o}),...c]}}});const n=ce((c,a)=>{var g;const r=e.getSelectedAll(),h=!!((g=a==null?void 0:a.event)!=null&&g.shiftKey);if(r.length<2||!h||a.fromCell)return;const v=r.map(f=>f.is(b)?f:f.closestType(b)).filter(Boolean);v.length===r.length&&Ze(v)},0);e.on("component:select",n),me({editor:e,licenseKey:o.licenseKey,pluginName:Fe,cleanup:()=>{e.off("component:select",n),e.Blocks.remove(p),ye.forEach(c=>l.removeType(c))}})},We=fe(Ge);module.exports=We;
@@ -33,7 +33,7 @@ const B = "app.grapesjs.com", O = "app-stage.grapesjs.com", T = [
33
33
  function F(e) {
34
34
  return typeof e == "function";
35
35
  }
36
- var be = { NODE_ENV: "production", NPM_PACKAGE_VERSION: "1.0.4", STUDIO_NPM_PACKAGE_VERSION: "1.0.24-rc.1" };
36
+ var be = { NODE_ENV: "production", NPM_PACKAGE_VERSION: "1.0.5", STUDIO_NPM_PACKAGE_VERSION: "1.0.24" };
37
37
  const ge = be.NODE_ENV !== "production";
38
38
  async function ue({
39
39
  path: e,