@yoopta/tabs 6.0.0-beta.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-present Akhmed Ibragimov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # Tabs plugin
2
+
3
+ Tabs is plugin for Yoopta-Editor
4
+
5
+ ### Installation
6
+
7
+ ```bash
8
+ yarn add @yoopta/tabs
9
+ ```
10
+
11
+ ### Usage
12
+
13
+ ```jsx
14
+ import Tabs from '@yoopta/tabs';
15
+
16
+ const plugins = [Tabs];
17
+
18
+ const Editor = () => {
19
+ return <YooptaEditor plugins={plugins} />;
20
+ };
21
+ ```
22
+
23
+ ### Default classnames
24
+
25
+ - .yoopta-tabs
26
+ - .yoopta-tabs-theme-['default' | 'success' | 'warning' | 'error' | 'info']
27
+
28
+ ### Default options
29
+
30
+ ```js
31
+ const Tabs = new YooptaPlugin({
32
+ options: {
33
+ display: {
34
+ title: 'Tabs',
35
+ description: 'Make writing stand out',
36
+ },
37
+ shortcuts: ['<'],
38
+ },
39
+ });
40
+ ```
41
+
42
+ ### How to extend
43
+
44
+ ```tsx
45
+ const plugins = [
46
+ Tabs.extend({
47
+ renders: {
48
+ tabs: (props) => <YourCustomComponent {...props} />
49
+ },
50
+ options: {
51
+ shortcuts: [`<your custom shortcuts>`],
52
+ display: {
53
+ title: `<your custom title>`,
54
+ description: `<your custom description>`,
55
+ },
56
+ HTMLAttributes: {
57
+ className: '<your classname>',
58
+ // ...other HTML attributes
59
+ },
60
+ },
61
+ });
62
+ ];
63
+ ```
@@ -0,0 +1,15 @@
1
+ import type { YooEditor } from '@yoopta/editor';
2
+ import type { Location } from 'slate';
3
+ export type InsertOptions = {
4
+ afterTabId?: string;
5
+ at?: Location;
6
+ };
7
+ export type DeleteOptions = {
8
+ tabId: string;
9
+ };
10
+ export type TabsCommandsType = {
11
+ addTabItem: (editor: YooEditor, blockId: string, options?: InsertOptions) => void;
12
+ deleteTabItem: (editor: YooEditor, blockId: string, options: DeleteOptions) => void;
13
+ };
14
+ export declare const TabsCommands: TabsCommandsType;
15
+ //# sourceMappingURL=tabs-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-commands.d.ts","sourceRoot":"","sources":["../../src/commands/tabs-commands.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAClF,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CACrF,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,gBA2L1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SlateEditor, YooEditor } from '@yoopta/editor';
2
+ export declare function withTabsNormalize(slate: SlateEditor, _editor: YooEditor): SlateEditor;
3
+ //# sourceMappingURL=with-tabs-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-tabs-normalize.d.ts","sourceRoot":"","sources":["../../src/extenstions/with-tabs-normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,GAAG,WAAW,CAQrF"}
@@ -0,0 +1,3 @@
1
+ import type { SlateEditor, YooEditor } from '@yoopta/editor';
2
+ export declare function withTabs(slate: SlateEditor, editor: YooEditor): import("slate-react").ReactEditor;
3
+ //# sourceMappingURL=with-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-tabs.d.ts","sourceRoot":"","sources":["../../src/extenstions/with-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI7D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,qCAI7D"}
@@ -0,0 +1,6 @@
1
+ import { Tabs } from './plugin/tabs-plugin';
2
+ import { TabsElement, TabsElementProps } from './types';
3
+ export { TabsCommands } from './commands/tabs-commands';
4
+ export default Tabs;
5
+ export { TabsElement, TabsElementProps };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAe,IAAI,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{Blocks as r,generateId as n,YooptaPlugin as o}from"@yoopta/editor";var i={ancestors(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{reverse:r=!1}=t,n=i.levels(e,t);return n=r?n.slice(1):n.slice(0,-1)},common(e,t){for(var r=[],n=0;n<e.length&&n<t.length;n++){var o=e[n];if(o!==t[n])break;r.push(o)}return r},compare(e,t){for(var r=Math.min(e.length,t.length),n=0;n<r;n++){if(e[n]<t[n])return-1;if(e[n]>t[n])return 1}return 0},endsAfter(e,t){var r=e.length-1,n=e.slice(0,r),o=t.slice(0,r),a=e[r],s=t[r];return i.equals(n,o)&&a>s},endsAt(e,t){var r=e.length,n=e.slice(0,r),o=t.slice(0,r);return i.equals(n,o)},endsBefore(e,t){var r=e.length-1,n=e.slice(0,r),o=t.slice(0,r),a=e[r],s=t[r];return i.equals(n,o)&&a<s},equals:(e,t)=>e.length===t.length&&e.every((e,r)=>e===t[r]),hasPrevious:e=>e[e.length-1]>0,isAfter:(e,t)=>1===i.compare(e,t),isAncestor:(e,t)=>e.length<t.length&&0===i.compare(e,t),isBefore:(e,t)=>-1===i.compare(e,t),isChild:(e,t)=>e.length===t.length+1&&0===i.compare(e,t),isCommon:(e,t)=>e.length<=t.length&&0===i.compare(e,t),isDescendant:(e,t)=>e.length>t.length&&0===i.compare(e,t),isParent:(e,t)=>e.length+1===t.length&&0===i.compare(e,t),isPath:e=>Array.isArray(e)&&(0===e.length||"number"==typeof e[0]),isSibling(e,t){if(e.length!==t.length)return!1;var r=e.slice(0,-1),n=t.slice(0,-1);return e[e.length-1]!==t[t.length-1]&&i.equals(r,n)},levels(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{reverse:r=!1}=t,n=[],o=0;o<=e.length;o++)n.push(e.slice(0,o));return r&&n.reverse(),n},next(e){if(0===e.length)throw new Error("Cannot get the next path of a root path [".concat(e,"], because it has no next index."));var t=e[e.length-1];return e.slice(0,-1).concat(t+1)},operationCanTransformPath(e){switch(e.type){case"insert_node":case"remove_node":case"merge_node":case"split_node":case"move_node":return!0;default:return!1}},parent(e){if(0===e.length)throw new Error("Cannot get the parent path of the root path [".concat(e,"]."));return e.slice(0,-1)},previous(e){if(0===e.length)throw new Error("Cannot get the previous path of a root path [".concat(e,"], because it has no previous index."));var t=e[e.length-1];if(t<=0)throw new Error("Cannot get the previous path of a first child path [".concat(e,"] because it would result in a negative index."));return e.slice(0,-1).concat(t-1)},relative(e,t){if(!i.isAncestor(t,e)&&!i.equals(e,t))throw new Error("Cannot get the relative path of [".concat(e,"] inside ancestor [").concat(t,"], because it is not above or equal to the path."));return e.slice(t.length)},transform(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)return null;var n=[...e],{affinity:o="forward"}=r;if(0===e.length)return n;switch(t.type){case"insert_node":var{path:a}=t;(i.equals(a,n)||i.endsBefore(a,n)||i.isAncestor(a,n))&&(n[a.length-1]+=1);break;case"remove_node":var{path:s}=t;if(i.equals(s,n)||i.isAncestor(s,n))return null;i.endsBefore(s,n)&&(n[s.length-1]-=1);break;case"merge_node":var{path:c,position:l}=t;i.equals(c,n)||i.endsBefore(c,n)?n[c.length-1]-=1:i.isAncestor(c,n)&&(n[c.length-1]-=1,n[c.length]+=l);break;case"split_node":var{path:f,position:p}=t;if(i.equals(f,n)){if("forward"===o)n[n.length-1]+=1;else if("backward"!==o)return null}else i.endsBefore(f,n)?n[f.length-1]+=1:i.isAncestor(f,n)&&e[f.length]>=p&&(n[f.length-1]+=1,n[f.length]-=p);break;case"move_node":var{path:d,newPath:h}=t;if(i.equals(d,h))return n;if(i.isAncestor(d,n)||i.equals(d,n)){var u=h.slice();return i.endsBefore(d,h)&&d.length<h.length&&(u[d.length-1]-=1),u.concat(n.slice(d.length))}i.isSibling(d,h)&&(i.isAncestor(h,n)||i.equals(h,n))?i.endsBefore(d,n)?n[d.length-1]-=1:n[d.length-1]+=1:i.endsBefore(h,n)||i.equals(h,n)||i.isAncestor(h,n)?(i.endsBefore(d,n)&&(n[d.length-1]-=1),n[h.length-1]+=1):i.endsBefore(d,n)&&(i.equals(h,n)&&(n[h.length-1]+=1),n[d.length-1]-=1)}return n}};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function s(e){var t=function(e,t){if("object"!==a(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===a(t)?t:String(t)}function c(e,t,r){return(t=s(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var f=["anchor","focus"];function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var d={edges(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{reverse:r=!1}=t,{anchor:n,focus:o}=e;return d.isBackward(e)===r?[n,o]:[o,n]},end(e){var[,t]=d.edges(e);return t},equals:(e,t)=>A.equals(e.anchor,t.anchor)&&A.equals(e.focus,t.focus),surrounds(e,t){var r=d.intersection(e,t);return!!r&&d.equals(r,t)},includes(e,t){if(d.isRange(t)){if(d.includes(e,t.anchor)||d.includes(e,t.focus))return!0;var[r,n]=d.edges(e),[o,a]=d.edges(t);return A.isBefore(r,o)&&A.isAfter(n,a)}var[s,c]=d.edges(e),l=!1,f=!1;return A.isPoint(t)?(l=A.compare(t,s)>=0,f=A.compare(t,c)<=0):(l=i.compare(t,s.path)>=0,f=i.compare(t,c.path)<=0),l&&f},intersection(e,t){var r=l(e,f),[n,o]=d.edges(e),[i,a]=d.edges(t),s=A.isBefore(n,i)?i:n,h=A.isBefore(o,a)?o:a;return A.isBefore(h,s)?null:function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({anchor:s,focus:h},r)},isBackward(e){var{anchor:t,focus:r}=e;return A.isAfter(t,r)},isCollapsed(e){var{anchor:t,focus:r}=e;return A.equals(t,r)},isExpanded:e=>!d.isCollapsed(e),isForward:e=>!d.isBackward(e),isRange:e=>j(e)&&A.isPoint(e.anchor)&&A.isPoint(e.focus),*points(e){yield[e.anchor,"anchor"],yield[e.focus,"focus"]},start(e){var[t]=d.edges(e);return t},transform(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null===e)return null;var n,o,{affinity:i="inward"}=r;if("inward"===i){var a=d.isCollapsed(e);d.isForward(e)?(n="forward",o=a?n:"backward"):(n="backward",o=a?n:"forward")}else"outward"===i?d.isForward(e)?(n="backward",o="forward"):(n="forward",o="backward"):(n=i,o=i);var s=A.transform(e.anchor,t,{affinity:n}),c=A.transform(e.focus,t,{affinity:o});return s&&c?{anchor:s,focus:c}:null}},h=function(e){var{deep:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!!j(e)&&("function"!=typeof e.apply&&(t?m.isNodeList(e.children):Array.isArray(e.children)))},u={isAncestor(e){var{deep:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return j(e)&&m.isNodeList(e.children,{deep:t})},isElement:h,isElementList(e){var{deep:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Array.isArray(e)&&e.every(e=>u.isElement(e,{deep:t}))},isElementProps:e=>void 0!==e.children,isElementType:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"type";return h(e)&&e[r]===t},matches(e,t){for(var r in t)if("children"!==r&&e[r]!==t[r])return!1;return!0}},v=["children"],g=["text"];function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var m={ancestor(e,t){var r=m.get(e,t);if(I.isText(r))throw new Error("Cannot get the ancestor node at path [".concat(t,"] because it refers to a text node instead: ").concat(D.stringify(r)));return r},ancestors(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){for(var n of i.ancestors(t,r)){var o=[m.ancestor(e,n),n];yield o}}()},child(e,t){if(I.isText(e))throw new Error("Cannot get the child of a text node: ".concat(D.stringify(e)));var r=e.children[t];if(null==r)throw new Error("Cannot get child at index `".concat(t,"` in node: ").concat(D.stringify(e)));return r},children(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){for(var{reverse:n=!1}=r,o=m.ancestor(e,t),{children:i}=o,a=n?i.length-1:0;n?a>=0:a<i.length;){var s=m.child(o,a),c=t.concat(a);yield[s,c],a=n?a-1:a+1}}()},common(e,t,r){var n=i.common(t,r);return[m.get(e,n),n]},descendant(e,t){var r=m.get(e,t);if(T.isEditor(r))throw new Error("Cannot get the descendant node at path [".concat(t,"] because it refers to the root editor node instead: ").concat(D.stringify(r)));return r},descendants(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){for(var[r,n]of m.nodes(e,t))0!==n.length&&(yield[r,n])}()},elements(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){for(var[r,n]of m.nodes(e,t))u.isElement(r)&&(yield[r,n])}()},extractProps:e=>u.isAncestor(e)?l(e,v):l(e,g),first(e,t){for(var r=t.slice(),n=m.get(e,r);n&&!I.isText(n)&&0!==n.children.length;)n=n.children[0],r.push(0);return[n,r]},fragment(e,t){var r={children:e.children},[n,o]=d.edges(t),a=m.nodes(r,{reverse:!0,pass:e=>{var[,r]=e;return!d.includes(t,r)}}),s=function(){if(!d.includes(t,c)){var e=c[c.length-1];J(r,i.parent(c),t=>M(t,e,1))}i.equals(c,o.path)&&Z(r,c,e=>{var t=e.text.slice(0,o.offset);return b(b({},e),{},{text:t})}),i.equals(c,n.path)&&Z(r,c,e=>{var t=e.text.slice(n.offset);return b(b({},e),{},{text:t})})};for(var[,c]of a)s();return r.children},get(e,t){var r=m.getIf(e,t);if(void 0===r)throw new Error("Cannot find a descendant at path [".concat(t,"] in node: ").concat(D.stringify(e)));return r},getIf(e,t){for(var r=e,n=0;n<t.length;n++){var o=t[n];if(I.isText(r)||!r.children[o])return;r=r.children[o]}return r},has(e,t){for(var r=e,n=0;n<t.length;n++){var o=t[n];if(I.isText(r)||!r.children[o])return!1;r=r.children[o]}return!0},isNode(e){var{deep:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return I.isText(e)||u.isElement(e,{deep:t})||T.isEditor(e,{deep:t})},isNodeList(e){var{deep:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Array.isArray(e)&&e.every(e=>m.isNode(e,{deep:t}))},last(e,t){for(var r=t.slice(),n=m.get(e,r);n&&!I.isText(n)&&0!==n.children.length;){var o=n.children.length-1;n=n.children[o],r.push(o)}return[n,r]},leaf(e,t){var r=m.get(e,t);if(!I.isText(r))throw new Error("Cannot get the leaf node at path [".concat(t,"] because it refers to a non-leaf node: ").concat(D.stringify(r)));return r},levels(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){for(var n of i.levels(t,r)){var o=m.get(e,n);yield[o,n]}}()},matches:(e,t)=>u.isElement(e)&&u.isElementProps(t)&&u.matches(e,t)||I.isText(e)&&I.isTextProps(t)&&I.matches(e,t),nodes(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){for(var{pass:r,reverse:n=!1}=t,{from:o=[],to:a}=t,s=new Set,c=[],l=e;!a||!(n?i.isBefore(c,a):i.isAfter(c,a));)if(s.has(l)||(yield[l,c]),s.has(l)||I.isText(l)||0===l.children.length||null!=r&&!1!==r([l,c])){if(0===c.length)break;if(!n){var f=i.next(c);if(m.has(e,f)){c=f,l=m.get(e,c);continue}}if(n&&0!==c[c.length-1])c=i.previous(c),l=m.get(e,c);else c=i.parent(c),l=m.get(e,c),s.add(l)}else{s.add(l);var p=n?l.children.length-1:0;i.isAncestor(c,o)&&(p=o[c.length]),c=c.concat(p),l=m.get(e,c)}}()},parent(e,t){var r=i.parent(t),n=m.get(e,r);if(I.isText(n))throw new Error("Cannot get the parent of path [".concat(t,"] because it does not exist in the root."));return n},string:e=>I.isText(e)?e.text:e.children.map(m.string).join(""),texts(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){for(var[r,n]of m.nodes(e,t))I.isText(r)&&(yield[r,n])}()}};function O(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function w(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?O(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var P,x={isNodeOperation:e=>x.isOperation(e)&&e.type.endsWith("_node"),isOperation(e){if(!j(e))return!1;switch(e.type){case"insert_node":case"remove_node":return i.isPath(e.path)&&m.isNode(e.node);case"insert_text":case"remove_text":return"number"==typeof e.offset&&"string"==typeof e.text&&i.isPath(e.path);case"merge_node":return"number"==typeof e.position&&i.isPath(e.path)&&j(e.properties);case"move_node":return i.isPath(e.path)&&i.isPath(e.newPath);case"set_node":return i.isPath(e.path)&&j(e.properties)&&j(e.newProperties);case"set_selection":return null===e.properties&&d.isRange(e.newProperties)||null===e.newProperties&&d.isRange(e.properties)||j(e.properties)&&j(e.newProperties);case"split_node":return i.isPath(e.path)&&"number"==typeof e.position&&j(e.properties);default:return!1}},isOperationList:e=>Array.isArray(e)&&e.every(e=>x.isOperation(e)),isSelectionOperation:e=>x.isOperation(e)&&e.type.endsWith("_selection"),isTextOperation:e=>x.isOperation(e)&&e.type.endsWith("_text"),inverse(e){switch(e.type){case"insert_node":return w(w({},e),{},{type:"remove_node"});case"insert_text":return w(w({},e),{},{type:"remove_text"});case"merge_node":return w(w({},e),{},{type:"split_node",path:i.previous(e.path)});case"move_node":var{newPath:t,path:r}=e;if(i.equals(t,r))return e;if(i.isSibling(r,t))return w(w({},e),{},{path:t,newPath:r});var n=i.transform(r,e),o=i.transform(i.next(r),e);return w(w({},e),{},{path:n,newPath:o});case"remove_node":return w(w({},e),{},{type:"insert_node"});case"remove_text":return w(w({},e),{},{type:"insert_text"});case"set_node":var{properties:a,newProperties:s}=e;return w(w({},e),{},{properties:s,newProperties:a});case"set_selection":var{properties:c,newProperties:l}=e;return w(w({},e),{},null==c?{properties:l,newProperties:null}:null==l?{properties:null,newProperties:c}:{properties:l,newProperties:c});case"split_node":return w(w({},e),{},{type:"merge_node",path:i.next(e.path)})}}},j=e=>"object"==typeof e&&null!==e,E=(e,t)=>{for(var r in e){var n=e[r],o=t[r];if(Array.isArray(n)&&Array.isArray(o)){if(n.length!==o.length)return!1;for(var i=0;i<n.length;i++)if(n[i]!==o[i])return!1}else if(j(n)&&j(o)){if(!E(n,o))return!1}else if(n!==o)return!1}for(var a in t)if(void 0===e[a]&&void 0!==t[a])return!1;return!0},k=e=>e.selection?e.selection:e.children.length>0?T.end(e,[]):[0];!function(e){e[e.None=0]="None",e[e.Extend=1]="Extend",e[e.ZWJ=2]="ZWJ",e[e.RI=4]="RI",e[e.Prepend=8]="Prepend",e[e.SpacingMark=16]="SpacingMark",e[e.L=32]="L",e[e.V=64]="V",e[e.T=128]="T",e[e.LV=256]="LV",e[e.LVT=512]="LVT",e[e.ExtPict=1024]="ExtPict",e[e.Any=2048]="Any"}(P||(P={})),P.L,P.L,P.V,P.LV,P.LVT,P.LV,P.V,P.V,P.T,P.LVT,P.T,P.T,P.Any,P.Extend,P.ZWJ,P.Any,P.SpacingMark,P.Prepend,P.Any,P.ZWJ,P.ExtPict,P.RI,P.RI;var T={above:(e,t)=>e.above(t),addMark(e,t,r){e.addMark(t,r)},after:(e,t,r)=>e.after(t,r),before:(e,t,r)=>e.before(t,r),deleteBackward(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{unit:r="character"}=t;e.deleteBackward(r)},deleteForward(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{unit:r="character"}=t;e.deleteForward(r)},deleteFragment(e,t){e.deleteFragment(t)},edges:(e,t)=>e.edges(t),elementReadOnly(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.elementReadOnly(t)},end:(e,t)=>e.end(t),first:(e,t)=>e.first(t),fragment:(e,t)=>e.fragment(t),hasBlocks:(e,t)=>e.hasBlocks(t),hasInlines:(e,t)=>e.hasInlines(t),hasPath:(e,t)=>e.hasPath(t),hasTexts:(e,t)=>e.hasTexts(t),insertBreak(e){e.insertBreak()},insertFragment(e,t,r){e.insertFragment(t,r)},insertNode(e,t){e.insertNode(t)},insertSoftBreak(e){e.insertSoftBreak()},insertText(e,t){e.insertText(t)},isBlock:(e,t)=>e.isBlock(t),isEdge:(e,t,r)=>e.isEdge(t,r),isEditor:e=>function(e){var{deep:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!j(e))return!1;var r="function"==typeof e.addMark&&"function"==typeof e.apply&&"function"==typeof e.deleteFragment&&"function"==typeof e.insertBreak&&"function"==typeof e.insertSoftBreak&&"function"==typeof e.insertFragment&&"function"==typeof e.insertNode&&"function"==typeof e.insertText&&"function"==typeof e.isElementReadOnly&&"function"==typeof e.isInline&&"function"==typeof e.isSelectable&&"function"==typeof e.isVoid&&"function"==typeof e.normalizeNode&&"function"==typeof e.onChange&&"function"==typeof e.removeMark&&"function"==typeof e.getDirtyPaths&&(null===e.marks||j(e.marks))&&(null===e.selection||d.isRange(e.selection))&&(!t||m.isNodeList(e.children))&&x.isOperationList(e.operations);return r}(e),isElementReadOnly:(e,t)=>e.isElementReadOnly(t),isEmpty:(e,t)=>e.isEmpty(t),isEnd:(e,t,r)=>e.isEnd(t,r),isInline:(e,t)=>e.isInline(t),isNormalizing:e=>e.isNormalizing(),isSelectable:(e,t)=>e.isSelectable(t),isStart:(e,t,r)=>e.isStart(t,r),isVoid:(e,t)=>e.isVoid(t),last:(e,t)=>e.last(t),leaf:(e,t,r)=>e.leaf(t,r),levels:(e,t)=>e.levels(t),marks:e=>e.getMarks(),next:(e,t)=>e.next(t),node:(e,t,r)=>e.node(t,r),nodes:(e,t)=>e.nodes(t),normalize(e,t){e.normalize(t)},parent:(e,t,r)=>e.parent(t,r),path:(e,t,r)=>e.path(t,r),pathRef:(e,t,r)=>e.pathRef(t,r),pathRefs:e=>e.pathRefs(),point:(e,t,r)=>e.point(t,r),pointRef:(e,t,r)=>e.pointRef(t,r),pointRefs:e=>e.pointRefs(),positions:(e,t)=>e.positions(t),previous:(e,t)=>e.previous(t),range:(e,t,r)=>e.range(t,r),rangeRef:(e,t,r)=>e.rangeRef(t,r),rangeRefs:e=>e.rangeRefs(),removeMark(e,t){e.removeMark(t)},setNormalizing(e,t){e.setNormalizing(t)},start:(e,t)=>e.start(t),string:(e,t,r)=>e.string(t,r),unhangRange:(e,t,r)=>e.unhangRange(t,r),void:(e,t)=>e.void(t),withoutNormalizing(e,t){e.withoutNormalizing(t)},shouldMergeNodesRemovePrevNode:(e,t,r)=>e.shouldMergeNodesRemovePrevNode(t,r)};function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function N(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var A={compare(e,t){var r=i.compare(e.path,t.path);return 0===r?e.offset<t.offset?-1:e.offset>t.offset?1:0:r},isAfter:(e,t)=>1===A.compare(e,t),isBefore:(e,t)=>-1===A.compare(e,t),equals:(e,t)=>e.offset===t.offset&&i.equals(e.path,t.path),isPoint:e=>j(e)&&"number"==typeof e.offset&&i.isPath(e.path),transform(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null===e)return null;var{affinity:n="forward"}=r,{path:o,offset:a}=e;switch(t.type){case"insert_node":case"move_node":o=i.transform(o,t,r);break;case"insert_text":i.equals(t.path,o)&&(t.offset<a||t.offset===a&&"forward"===n)&&(a+=t.text.length);break;case"merge_node":i.equals(t.path,o)&&(a+=t.position),o=i.transform(o,t,r);break;case"remove_text":i.equals(t.path,o)&&t.offset<=a&&(a-=Math.min(a-t.offset,t.text.length));break;case"remove_node":if(i.equals(t.path,o)||i.isAncestor(t.path,o))return null;o=i.transform(o,t,r);break;case"split_node":if(i.equals(t.path,o)){if(t.position===a&&null==n)return null;(t.position<a||t.position===a&&"forward"===n)&&(a-=t.position,o=i.transform(o,t,N(N({},r),{},{affinity:"forward"})))}else o=i.transform(o,t,r);break;default:return e}return{path:o,offset:a}}},S=void 0,D={setScrubber(e){S=e},stringify:e=>JSON.stringify(e,S)},B=["text"],q=["anchor","focus","merge"];function R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function C(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?R(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):R(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var I={equals(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{loose:n=!1}=r;function o(e){return l(e,B)}return E(n?o(e):e,n?o(t):t)},isText:e=>j(e)&&"string"==typeof e.text,isTextList:e=>Array.isArray(e)&&e.every(e=>I.isText(e)),isTextProps:e=>void 0!==e.text,matches(e,t){for(var r in t)if("text"!==r&&(!e.hasOwnProperty(r)||e[r]!==t[r]))return!1;return!0},decorations(e,t){var r=[{leaf:C({},e)}];for(var n of t){var{anchor:o,focus:i,merge:a}=n,s=l(n,q),[c,f]=d.edges(n),p=[],h=0,u=c.offset,v=f.offset,g=null!=a?a:Object.assign;for(var{leaf:y}of r){var{length:b}=y.text,m=h;if(h+=b,u<=m&&h<=v)g(y,s),p.push({leaf:y});else if(u!==v&&(u===h||v===m)||u>h||v<m||v===m&&0!==m)p.push({leaf:y});else{var O=y,w=void 0,P=void 0;if(v<h){var x=v-m;P={leaf:C(C({},O),{},{text:O.text.slice(x)})},O=C(C({},O),{},{text:O.text.slice(0,x)})}if(u>m){var j=u-m;w={leaf:C(C({},O),{},{text:O.text.slice(0,j)})},O=C(C({},O),{},{text:O.text.slice(j)})}g(O,s),w&&p.push(w),p.push({leaf:O}),P&&p.push(P)}}r=p}if(r.length>1){var E=0;for(var[k,T]of r.entries()){var _=E,N=_+T.leaf.text.length,A={start:_,end:N};0===k&&(A.isFirst=!0),k===r.length-1&&(A.isLast=!0),T.position=A,E=N}}return r}};function L(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?L(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):L(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var z=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),o=2;o<r;o++)n[o-2]=arguments[o];return[...e.slice(0,t),...n,...e.slice(t)]},F=function(e,t,r){for(var n=arguments.length,o=new Array(n>3?n-3:0),i=3;i<n;i++)o[i-3]=arguments[i];return[...e.slice(0,t),...o,...e.slice(t+r)]},M=F,W=(e,t,r)=>{if(0===t.length)throw new Error("Cannot modify the editor");for(var n=m.get(e,t),o=t.slice(),i=r(n);o.length>1;){var a=o.pop(),s=m.get(e,o);i=V(V({},s),{},{children:F(s.children,a,1,i)})}var c=o.pop();e.children=F(e.children,c,1,i)},J=(e,t,r)=>{0===t.length?e.children=r(e.children):W(e,t,e=>{if(I.isText(e))throw new Error("Cannot get the element at path [".concat(t,"] because it refers to a leaf node: ").concat(D.stringify(e)));return V(V({},e),{},{children:r(e.children)})})},Z=(e,t,r)=>W(e,t,e=>{if(!I.isText(e))throw new Error("Cannot get the leaf node at path [".concat(t,"] because it refers to a non-leaf node: ").concat(D.stringify(e)));return r(e)});function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function G(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var H={transform(e,t){var r=!1;switch(t.type){case"insert_node":var{path:n,node:o}=t;J(e,i.parent(n),e=>{var t=n[n.length-1];if(t>e.length)throw new Error('Cannot apply an "insert_node" operation at path ['.concat(n,"] because the destination is past the end of the node."));return z(e,t,o)}),r=!0;break;case"insert_text":var{path:a,offset:s,text:c}=t;if(0===c.length)break;Z(e,a,e=>{var t=e.text.slice(0,s),r=e.text.slice(s);return G(G({},e),{},{text:t+c+r})}),r=!0;break;case"merge_node":var{path:l}=t,f=l[l.length-1],p=i.previous(l),h=p[p.length-1];J(e,i.parent(l),e=>{var t,r=e[f],n=e[h];if(I.isText(r)&&I.isText(n))t=G(G({},n),{},{text:n.text+r.text});else{if(I.isText(r)||I.isText(n))throw new Error('Cannot apply a "merge_node" operation at path ['.concat(l,"] to nodes of different interfaces: ").concat(D.stringify(r)," ").concat(D.stringify(n)));t=G(G({},n),{},{children:n.children.concat(r.children)})}return F(e,h,2,t)}),r=!0;break;case"move_node":var{path:u,newPath:v}=t,g=u[u.length-1];if(i.isAncestor(u,v))throw new Error("Cannot move a path [".concat(u,"] to new path [").concat(v,"] because the destination is inside itself."));var y=m.get(e,u);J(e,i.parent(u),e=>M(e,g,1));var b=i.transform(u,t),O=b[b.length-1];J(e,i.parent(b),e=>z(e,O,y)),r=!0;break;case"remove_node":var{path:w}=t,P=w[w.length-1];if(J(e,i.parent(w),e=>M(e,P,1)),e.selection){var x=G({},e.selection);for(var[j,E]of d.points(x)){var k=A.transform(j,t);if(null!=x&&null!=k)x[E]=k;else{var T=void 0,_=void 0;for(var[N,S]of m.texts(e)){if(-1!==i.compare(S,w)){_=[N,S];break}T=[N,S]}var B=!1;T&&_&&(B=!i.isSibling(T[1],w)&&(!!i.equals(_[1],w)||i.common(T[1],w).length<i.common(_[1],w).length)),T&&!B?x[E]={path:T[1],offset:T[0].text.length}:_?x[E]={path:_[1],offset:0}:x=null}}x&&d.equals(x,e.selection)||(e.selection=x)}break;case"remove_text":var{path:q,offset:R,text:C}=t;if(0===C.length)break;Z(e,q,e=>{var t=e.text.slice(0,R),r=e.text.slice(R+C.length);return G(G({},e),{},{text:t+r})}),r=!0;break;case"set_node":var{path:L,properties:V,newProperties:K}=t;if(0===L.length)throw new Error("Cannot set properties on the root node!");W(e,L,e=>{var t=G({},e);for(var r in K){if("children"===r||"text"===r)throw new Error('Cannot set the "'.concat(r,'" property of nodes!'));var n=K[r];null==n?delete t[r]:t[r]=n}for(var o in V)K.hasOwnProperty(o)||delete t[o];return t});break;case"set_selection":var{newProperties:H}=t;if(null==H){e.selection=null;break}if(null==e.selection){if(!d.isRange(H))throw new Error('Cannot apply an incomplete "set_selection" operation properties '.concat(D.stringify(H)," when there is no current selection."));e.selection=G({},H);break}var Q=G({},e.selection);for(var U in H){var X=H[U];if(null==X){if("anchor"===U||"focus"===U)throw new Error('Cannot remove the "'.concat(U,'" selection property'));delete Q[U]}else Q[U]=X}e.selection=Q;break;case"split_node":var{path:Y,position:$,properties:ee}=t,te=Y[Y.length-1];if(0===Y.length)throw new Error('Cannot apply a "split_node" operation at path ['.concat(Y,"] because the root node cannot be split."));J(e,i.parent(Y),e=>{var t,r,n=e[te];if(I.isText(n)){var o=n.text.slice(0,$),i=n.text.slice($);t=G(G({},n),{},{text:o}),r=G(G({},ee),{},{text:i})}else{var a=n.children.slice(0,$),s=n.children.slice($);t=G(G({},n),{},{children:a}),r=G(G({},ee),{},{children:s})}return F(e,te,1,t,r)}),r=!0}if(r&&e.selection){var re=G({},e.selection);for(var[ne,oe]of d.points(re))re[oe]=A.transform(ne,t);d.equals(re,e.selection)||(e.selection=re)}}},Q={insertNodes(e,t,r){e.insertNodes(t,r)},liftNodes(e,t){e.liftNodes(t)},mergeNodes(e,t){e.mergeNodes(t)},moveNodes(e,t){e.moveNodes(t)},removeNodes(e,t){e.removeNodes(t)},setNodes(e,t,r){e.setNodes(t,r)},splitNodes(e,t){e.splitNodes(t)},unsetNodes(e,t,r){e.unsetNodes(t,r)},unwrapNodes(e,t){e.unwrapNodes(t)},wrapNodes(e,t,r){e.wrapNodes(t,r)}},U={collapse(e,t){e.collapse(t)},deselect(e){e.deselect()},move(e,t){e.move(t)},select(e,t){e.select(t)},setPoint(e,t,r){e.setPoint(t,r)},setSelection(e,t){e.setSelection(t)}},X={delete(e,t){e.delete(t)},insertFragment(e,t,r){e.insertFragment(t,r)},insertText(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};T.withoutNormalizing(e,()=>{var{voids:n=!1}=r,{at:o=k(e)}=r;if(i.isPath(o)&&(o=T.range(e,o)),d.isRange(o))if(d.isCollapsed(o))o=o.anchor;else{var a=d.end(o);if(!n&&T.void(e,{at:a}))return;var s=d.start(o),c=T.pointRef(e,s),l=T.pointRef(e,a);ee.delete(e,{at:o,voids:n});var f=c.unref(),p=l.unref();o=f||p,ee.setSelection(e,{anchor:o,focus:o})}if(!(!n&&T.void(e,{at:o})||T.elementReadOnly(e,{at:o}))){var{path:h,offset:u}=o;t.length>0&&e.apply({type:"insert_text",path:h,offset:u,text:t})}})}};function Y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function $(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(r),!0).forEach(function(t){c(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ee=$($($($({},H),Q),U),X);const te={addTabItem(e,t,o){const a=r.getBlockSlate(e,{id:t});if(!a)return;const s=T.nodes(a,{at:[0],match:e=>u.isElement(e)&&"tabs-container"===e.type}),c=Array.from(s)[0];if(!c)return;const[,l]=c,f=T.nodes(a,{at:l,match:e=>u.isElement(e)&&"tabs-list"===e.type}),p=Array.from(f)[0];if(!p)return;const[,d]=p,h=T.nodes(a,{at:d,match:e=>u.isElement(e)&&"tabs-item-heading"===e.type}),v=Array.from(h);let g;if((null==o?void 0:o.at)&&i.isPath(o.at))g=i.next(o.at);else if(null==o?void 0:o.afterTabId){const e=v.find(([e])=>e.id===o.afterTabId);if(e){const[,t]=e;g=i.next(t)}else g=[...d,v.length]}else if(a.selection){const e=a.selection.anchor.path;let t;const r=T.above(a,{at:e,match:e=>u.isElement(e)&&"tabs-item-heading"===e.type});if(r){const[,e]=r;t=e}else for(const[,r]of v)if(i.isDescendant(e,r)||i.equals(e,r)){t=r;break}g=t?i.next(t):[...d,v.length]}else g=[...d,v.length];const y=T.nodes(a,{at:l,match:e=>u.isElement(e)&&"tabs-item-content"===e.type}),b=Array.from(y),m=[...l,b.length+1],O=n(),w=e.y("tabs-item-heading",{id:O,children:[e.y.text("New Tab")]}),P=e.y("tabs-item-content",{props:{referenceId:O},children:[e.y.text("")]});T.withoutNormalizing(a,()=>{ee.insertNodes(a,w,{at:g}),ee.insertNodes(a,P,{at:m}),ee.setNodes(a,{props:Object.assign(Object.assign({},c[0].props),{activeTabId:O})},{at:l});const e=[...g,0];setTimeout(()=>{ee.select(a,{offset:0,path:e})},0)})},deleteTabItem(e,t,n){const o=r.getBlockSlate(e,{id:t});if(!o)return;const i=T.nodes(o,{at:[0],match:e=>u.isElement(e)&&"tabs-container"===e.type}),a=Array.from(i)[0];if(!a)return;const[,s]=a,c=Array.from(T.nodes(o,{at:[0],match:e=>u.isElement(e)&&"tabs-item-heading"===e.type}));T.withoutNormalizing(o,()=>{if(1===c.length)return void r.deleteBlock(e,{blockId:t});const i=T.nodes(o,{at:s,match:e=>{var t;return u.isElement(e)&&"tabs-item-content"===e.type&&(null===(t=e.props)||void 0===t?void 0:t.referenceId)===n.tabId}}),a=Array.from(i)[0];if(a){const[,e]=a;ee.removeNodes(o,{at:e})}const l=T.nodes(o,{at:[0],match:e=>u.isElement(e)&&"tabs-item-heading"===e.type&&e.id===n.tabId}),f=Array.from(l)[0];if(f){const[,e]=f;ee.removeNodes(o,{at:e})}})}};const re=new o({type:"Tabs",elements:e("tabs-container",Object.assign({render:({attributes:e,children:r})=>t("div",Object.assign({},e,{children:r})),props:{activeTabId:null}},{children:[t("tabs-list",Object.assign({render:({attributes:e,children:r})=>t("div",Object.assign({},e,{children:r}))},{children:t("tabs-item-heading",{render:({attributes:e,children:r})=>t("div",Object.assign({},e,{children:r}))})})),t("tabs-item-content",{render:({attributes:e,children:r})=>t("div",Object.assign({},e,{children:r})),props:{referenceId:null}})]})),commands:te,options:{display:{title:"Tabs",description:"Toggle content in tabs"}},lifecycle:{beforeCreate:e=>{const t=n();return e.y("tabs-container",{props:{activeTabId:t},children:[e.y("tabs-list",{children:[e.y("tabs-item-heading",{id:t,children:[e.y.text("Tab 1")]})]}),e.y("tabs-item-content",{props:{referenceId:t},children:[e.y.text("Tab 1 content")]})]})}},extensions:function(e,t){return e=function(e){const{normalizeNode:t}=e;return e.normalizeNode=(e,r)=>{t(e,r)},e}(e)},events:{onKeyDown:(e,t,r)=>n=>{if(r.hotkeys.isEnter(n)){if(!t.selection)return;n.preventDefault();const o=T.above(t,{at:t.selection,match:e=>u.isElement(e)});if(!o)return;const[i]=o;if("tabs-item-content"===i.type)return n.preventDefault(),void ee.insertText(t,"\n");if("tabs-item-heading"===i.type)return n.preventDefault(),void te.addTabItem(e,r.currentBlock.id,{at:t.selection});ee.insertText(t,"\n")}if(r.hotkeys.isBackspace(n)){if(!t.selection)return;const e=T.above(t,{at:t.selection,match:e=>u.isElement(e)});if(!e)return;const[r,o]=e,i=T.isStart(t,t.selection.anchor,o),a=d.isCollapsed(t.selection);i&&a&&("tabs-item-content"===r.type||"tabs-item-heading"===r.type)&&n.preventDefault()}if(r.hotkeys.isSelect(n)){if(!t.selection)return void n.preventDefault();const e=T.above(t,{at:t.selection,match:e=>u.isElement(e)});if(!e)return void n.preventDefault();const[r,o]=e;if("tabs-item-content"===r.type||"tabs-item-heading"===r.type)return n.preventDefault(),void ee.select(t,o);n.preventDefault()}}}});export{te as TabsCommands,re as default};
@@ -0,0 +1,5 @@
1
+ import { YooptaPlugin } from '@yoopta/editor';
2
+ import type { TabsElementMap } from '../types';
3
+ declare const Tabs: YooptaPlugin<TabsElementMap, Record<string, unknown>>;
4
+ export { Tabs };
5
+ //# sourceMappingURL=tabs-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/tabs-plugin.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAc,MAAM,gBAAgB,CAAC;AAK1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA0B/C,QAAA,MAAM,IAAI,uDAqHR,CAAC;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SlateElement } from '@yoopta/editor';
2
+ export type TabsPluginElementKeys = 'tabs';
3
+ export type TabsTheme = 'default' | 'success' | 'warning' | 'error' | 'info';
4
+ export type TabsElementProps = {
5
+ theme: TabsTheme;
6
+ };
7
+ export type TabsElement = SlateElement<'tabs', TabsElementProps>;
8
+ export type TabsElementMap = {
9
+ tabs: TabsElement;
10
+ };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@yoopta/tabs",
3
+ "version": "6.0.0-beta.1",
4
+ "description": "Tabs plugin for Yoopta Editor",
5
+ "author": "Darginec05 <devopsbanda@gmail.com>",
6
+ "homepage": "https://github.com/Darginec05/Yoopta-Editor#readme",
7
+ "license": "MIT",
8
+ "private": false,
9
+ "main": "dist/index.js",
10
+ "type": "module",
11
+ "module": "dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "files": [
14
+ "dist/"
15
+ ],
16
+ "peerDependencies": {
17
+ "@yoopta/editor": ">=4.9.9",
18
+ "react": ">=18.2.0",
19
+ "react-dom": ">=18.2.0"
20
+ },
21
+ "publishConfig": {
22
+ "registry": "https://registry.npmjs.org",
23
+ "access": "public"
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/Darginec05/Yoopta-Editor.git"
28
+ },
29
+ "scripts": {
30
+ "test": "node ./__tests__/yoopta-tabs.test.js",
31
+ "start": "rollup --config rollup.config.js --watch --bundleConfigAsCjs --environment NODE_ENV:development",
32
+ "prepublishOnly": "yarn build",
33
+ "build": "rollup --config rollup.config.js --bundleConfigAsCjs --environment NODE_ENV:production"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/Darginec05/Yoopta-Editor/issues"
37
+ },
38
+ "gitHead": "ff6a5ae2937a56e0d1820df29fdfd6356171786c"
39
+ }