@scbt-ecom/ui 0.132.0 → 0.133.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/lib/exports/widget.js +1 -1
  2. package/dist/lib/shared/style.css +1 -1
  3. package/dist/lib/widgets/conditionBlock/ConditionBlock.js +2 -0
  4. package/dist/lib/widgets/conditionBlock/ConditionBlock.js.map +1 -0
  5. package/dist/lib/widgets/conditionBlock/index.js +2 -0
  6. package/dist/lib/widgets/conditionBlock/index.js.map +1 -0
  7. package/dist/lib/widgets/conditionBlock/model/types.js +2 -0
  8. package/dist/lib/widgets/conditionBlock/model/types.js.map +1 -0
  9. package/dist/lib/widgets/conditionBlock/ui/ConditionsWithCTA.js +2 -0
  10. package/dist/lib/widgets/conditionBlock/ui/ConditionsWithCTA.js.map +1 -0
  11. package/dist/lib/widgets/conditionBlock/ui/SingleCondition.js +2 -0
  12. package/dist/lib/widgets/conditionBlock/ui/SingleCondition.js.map +1 -0
  13. package/dist/lib/widgets/conditionBlock/ui/index.js +2 -0
  14. package/dist/lib/widgets/conditionBlock/ui/index.js.map +1 -0
  15. package/dist/lib/widgets/index.js +1 -1
  16. package/dist/lib/widgets/model/helpers.js +2 -2
  17. package/dist/lib/widgets/model/helpers.js.map +1 -1
  18. package/dist/node_modules/prosemirror-gapcursor/dist/index.js +1 -1
  19. package/dist/node_modules/prosemirror-gapcursor/dist/index.js.map +1 -1
  20. package/dist/stats.html +1 -1
  21. package/dist/types/lib/widgets/conditionBlock/ConditionBlock.d.ts +22 -0
  22. package/dist/types/lib/widgets/conditionBlock/index.d.ts +1 -0
  23. package/dist/types/lib/widgets/conditionBlock/model/types.d.ts +49 -0
  24. package/dist/types/lib/widgets/conditionBlock/ui/ConditionsWithCTA.d.ts +11 -0
  25. package/dist/types/lib/widgets/conditionBlock/ui/SingleCondition.d.ts +10 -0
  26. package/dist/types/lib/widgets/conditionBlock/ui/index.d.ts +2 -0
  27. package/dist/types/lib/widgets/index.d.ts +1 -0
  28. package/dist/types/lib/widgets/model/helpers.d.ts +2 -1
  29. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"mappings":";iGACA,MAAMA,EAASC,EAAK,UAAM,OAAO,qBAAkB,myGAAC,EAC9CC,EAAaD,EAAK,UAAM,OAAO,6BAA0B,y+GAAC,EAC1DE,EAAcF,EAAK,UAAM,OAAO,+BAA4B,88GAAC,EAC7DG,EAAoBH,EAAK,UAAM,OAAO,2CAAwC,k8GAAC,EAC/EI,EAASJ,EAAK,UAAM,OAAO,qBAAkB,spGAAC,EAC9CK,EAASL,EAAK,UAAM,OAAO,qBAAkB,qoGAAC,EAC9CM,EAAeN,EAAK,UAAM,OAAO,iCAA8B,soGAAC,EAChEO,EAAaP,EAAK,UAAM,OAAO,6BAA0B,qoGAAC,EAC1DQ,EAAYR,EAAK,UAAM,OAAO,2BAAwB,0rGAAC,EACvDS,EAAUT,EAAK,UAAM,OAAO,uBAAoB,0rGAAC,EACjDU,EAAaV,EAAK,UAAM,OAAO,6BAA0B,yrGAAC,EAC1DW,EAAUX,EAAK,UAAM,OAAO,uBAAoB,2nGAAC,EACjDY,EAAYZ,EAAK,UAAM,OAAO,2BAAwB,4oGAAC,EACvDa,EAAeb,EAAK,UAAM,OAAO,iCAA8B,0vGAAC,EAChEc,EAAQd,EAAK,IAAAe,EAAA,IAAM,OAAO,uBAAsB,sqGAAC,EAI1CC,EAAkB,CAC7B,OAAQX,EACR,UAAWG,EACX,OAAQT,EACR,WAAYE,EACZ,KAAMC,EACN,WAAYC,EACZ,QAASM,EACT,QAASE,EACT,WAAYJ,EACZ,WAAYG,EACZ,aAAcJ,EACd,OAAQF,EACR,UAAWQ,EACX,aAAcC,EACd,UAAWC,CACb,EAEaG,EAAsB,OAAO,KAAKD,CAAe,EAEjDE,EAAYD,EAAoB,OAC3C,CAACE,EAAKC,KACJD,EAAIC,CAAM,EAAIA,EACPD,GAET,EACF","names":["Banner","lazy","Calculator","DynamicForm","DynamicFormDialog","Footer","Header","InterLinking","LongBanner","SeoHeader","Stepper","UsefulInfo","Benefit","InfoBlock","UserFeedback","Table","__vitePreload","WIDGET_LIST_MAP","KEYS_OF_WIDGET_LIST","widgetIds","acc","widget"],"ignoreList":[],"sources":["../../../../lib/widgets/model/helpers.ts"],"sourcesContent":["import { lazy } from 'react'\nconst Banner = lazy(() => import('../banner/Banner'))\nconst Calculator = lazy(() => import('../calculator/Calculator'))\nconst DynamicForm = lazy(() => import('../dynamicForm/DynamicForm'))\nconst DynamicFormDialog = lazy(() => import('../dynamicFormDialog/DynamicFormDialog'))\nconst Footer = lazy(() => import('../footer/Footer'))\nconst Header = lazy(() => import('../header/Header'))\nconst InterLinking = lazy(() => import('../interLinking/InterLinking'))\nconst LongBanner = lazy(() => import('../longBanner/LongBanner'))\nconst SeoHeader = lazy(() => import('../seoHeader/SeoHeader'))\nconst Stepper = lazy(() => import('../stepper/Stepper'))\nconst UsefulInfo = lazy(() => import('../usefulInfo/UsefulInfo'))\nconst Benefit = lazy(() => import('../benefit/Benefit'))\nconst InfoBlock = lazy(() => import('../infoBlock/InfoBlock'))\nconst UserFeedback = lazy(() => import('../userFeedback/UserFeedback'))\nconst Table = lazy(() => import('../table/./InfoTable'))\n\nexport type AllowedWidgets = keyof typeof WIDGET_LIST_MAP\n\nexport const WIDGET_LIST_MAP = {\n header: Header,\n seoHeader: SeoHeader,\n banner: Banner,\n calculator: Calculator,\n form: DynamicForm,\n formDialog: DynamicFormDialog,\n stepper: Stepper,\n benefit: Benefit,\n longBanner: LongBanner,\n usefulInfo: UsefulInfo,\n interLinking: InterLinking,\n footer: Footer,\n infoBlock: InfoBlock,\n userFeedback: UserFeedback,\n infoTable: Table\n} as const\n\nexport const KEYS_OF_WIDGET_LIST = Object.keys(WIDGET_LIST_MAP) as readonly AllowedWidgets[]\n\nexport const widgetIds = KEYS_OF_WIDGET_LIST.reduce(\n (acc, widget) => {\n acc[widget] = widget\n return acc\n },\n {} as Record<AllowedWidgets, AllowedWidgets>\n)\n"],"file":"lib/widgets/model/helpers.js"}
1
+ {"version":3,"mappings":";iGACA,MAAMA,EAASC,EAAK,UAAM,OAAO,qBAAkB,myGAAC,EAC9CC,EAAaD,EAAK,UAAM,OAAO,6BAA0B,y+GAAC,EAC1DE,EAAcF,EAAK,UAAM,OAAO,+BAA4B,88GAAC,EAC7DG,EAAoBH,EAAK,UAAM,OAAO,2CAAwC,k8GAAC,EAC/EI,EAASJ,EAAK,UAAM,OAAO,qBAAkB,spGAAC,EAC9CK,EAASL,EAAK,UAAM,OAAO,qBAAkB,qoGAAC,EAC9CM,EAAeN,EAAK,UAAM,OAAO,iCAA8B,soGAAC,EAChEO,EAAaP,EAAK,UAAM,OAAO,6BAA0B,qoGAAC,EAC1DQ,EAAYR,EAAK,UAAM,OAAO,2BAAwB,0rGAAC,EACvDS,EAAUT,EAAK,UAAM,OAAO,uBAAoB,0rGAAC,EACjDU,EAAiBV,EAAK,UAAM,OAAO,qCAAkC,6nGAAC,EACtEW,EAAaX,EAAK,UAAM,OAAO,6BAA0B,4rGAAC,EAC1DY,EAAUZ,EAAK,UAAM,OAAO,uBAAoB,2nGAAC,EACjDa,EAAYb,EAAK,UAAM,OAAO,2BAAwB,4oGAAC,EACvDc,EAAed,EAAK,UAAM,OAAO,iCAA8B,0vGAAC,EAChEe,EAAQf,EAAK,IAAAgB,EAAA,IAAM,OAAO,uBAAsB,sqGAAC,EAI1CC,EAAkB,CAC7B,OAAQZ,EACR,UAAWG,EACX,OAAQT,EACR,WAAYE,EACZ,KAAMC,EACN,WAAYC,EACZ,QAASM,EACT,QAASG,EACT,WAAYL,EACZ,WAAYI,EACZ,aAAcL,EACd,OAAQF,EACR,UAAWS,EACX,aAAcC,EACd,UAAWC,EACX,eAAgBL,CAClB,EAEaQ,EAAsB,OAAO,KAAKD,CAAe,EAEjDE,EAAYD,EAAoB,OAC3C,CAACE,EAAKC,KACJD,EAAIC,CAAM,EAAIA,EACPD,GAET,EACF","names":["Banner","lazy","Calculator","DynamicForm","DynamicFormDialog","Footer","Header","InterLinking","LongBanner","SeoHeader","Stepper","ConditionBlock","UsefulInfo","Benefit","InfoBlock","UserFeedback","Table","__vitePreload","WIDGET_LIST_MAP","KEYS_OF_WIDGET_LIST","widgetIds","acc","widget"],"ignoreList":[],"sources":["../../../../lib/widgets/model/helpers.ts"],"sourcesContent":["import { lazy } from 'react'\nconst Banner = lazy(() => import('../banner/Banner'))\nconst Calculator = lazy(() => import('../calculator/Calculator'))\nconst DynamicForm = lazy(() => import('../dynamicForm/DynamicForm'))\nconst DynamicFormDialog = lazy(() => import('../dynamicFormDialog/DynamicFormDialog'))\nconst Footer = lazy(() => import('../footer/Footer'))\nconst Header = lazy(() => import('../header/Header'))\nconst InterLinking = lazy(() => import('../interLinking/InterLinking'))\nconst LongBanner = lazy(() => import('../longBanner/LongBanner'))\nconst SeoHeader = lazy(() => import('../seoHeader/SeoHeader'))\nconst Stepper = lazy(() => import('../stepper/Stepper'))\nconst ConditionBlock = lazy(() => import('../conditionBlock/ConditionBlock'))\nconst UsefulInfo = lazy(() => import('../usefulInfo/UsefulInfo'))\nconst Benefit = lazy(() => import('../benefit/Benefit'))\nconst InfoBlock = lazy(() => import('../infoBlock/InfoBlock'))\nconst UserFeedback = lazy(() => import('../userFeedback/UserFeedback'))\nconst Table = lazy(() => import('../table/./InfoTable'))\n\nexport type AllowedWidgets = keyof typeof WIDGET_LIST_MAP\n\nexport const WIDGET_LIST_MAP = {\n header: Header,\n seoHeader: SeoHeader,\n banner: Banner,\n calculator: Calculator,\n form: DynamicForm,\n formDialog: DynamicFormDialog,\n stepper: Stepper,\n benefit: Benefit,\n longBanner: LongBanner,\n usefulInfo: UsefulInfo,\n interLinking: InterLinking,\n footer: Footer,\n infoBlock: InfoBlock,\n userFeedback: UserFeedback,\n infoTable: Table,\n conditionBlock: ConditionBlock\n} as const\n\nexport const KEYS_OF_WIDGET_LIST = Object.keys(WIDGET_LIST_MAP) as readonly AllowedWidgets[]\n\nexport const widgetIds = KEYS_OF_WIDGET_LIST.reduce(\n (acc, widget) => {\n acc[widget] = widget\n return acc\n },\n {} as Record<AllowedWidgets, AllowedWidgets>\n)\n"],"file":"lib/widgets/model/helpers.js"}
@@ -1,2 +1,2 @@
1
- import{keydownHandler as v}from"../../prosemirror-keymap/dist/index.js";import{Plugin as w,TextSelection as m,NodeSelection as x,Selection as u}from"../../prosemirror-state/dist/index.js";import{Fragment as h,Slice as g}from"../../prosemirror-model/dist/index.js";import{DecorationSet as y,Decoration as A}from"../../prosemirror-view/dist/index.js";class i extends u{constructor(e){super(e,e)}map(e,t){let o=e.resolve(t.map(this.head));return i.valid(o)?new i(o):u.near(o)}content(){return g.empty}eq(e){return e instanceof i&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new i(e.resolve(t.pos))}getBookmark(){return new d(this.anchor)}static valid(e){let t=e.parent;if(t.isTextblock||!C(e)||!S(e))return!1;let o=t.type.spec.allowGapCursor;if(o!=null)return o;let r=t.contentMatchAt(e.index()).defaultType;return r&&r.isTextblock}static findGapCursorFrom(e,t,o=!1){e:for(;;){if(!o&&i.valid(e))return e;let r=e.pos,s=null;for(let l=e.depth;;l--){let f=e.node(l);if(t>0?e.indexAfter(l)<f.childCount:e.index(l)>0){s=f.child(t>0?e.indexAfter(l):e.index(l)-1);break}else if(l==0)return null;r+=t;let a=e.doc.resolve(r);if(i.valid(a))return a}for(;;){let l=t>0?s.firstChild:s.lastChild;if(!l){if(s.isAtom&&!s.isText&&!x.isSelectable(s)){e=e.doc.resolve(r+s.nodeSize*t),o=!1;continue e}break}s=l,r+=t;let f=e.doc.resolve(r);if(i.valid(f))return f}return null}}}i.prototype.visible=!1;i.findFrom=i.findGapCursorFrom;u.jsonID("gapcursor",i);class d{constructor(e){this.pos=e}map(e){return new d(e.map(this.pos))}resolve(e){let t=e.resolve(this.pos);return i.valid(t)?new i(t):u.near(t)}}function C(n){for(let e=n.depth;e>=0;e--){let t=n.index(e),o=n.node(e);if(t==0){if(o.type.spec.isolating)return!0;continue}for(let r=o.child(t-1);;r=r.lastChild){if(r.childCount==0&&!r.inlineContent||r.isAtom||r.type.spec.isolating)return!0;if(r.inlineContent)return!1}}return!0}function S(n){for(let e=n.depth;e>=0;e--){let t=n.indexAfter(e),o=n.node(e);if(t==o.childCount){if(o.type.spec.isolating)return!0;continue}for(let r=o.child(t);;r=r.firstChild){if(r.childCount==0&&!r.inlineContent||r.isAtom||r.type.spec.isolating)return!0;if(r.inlineContent)return!1}}return!0}function z(){return new w({props:{decorations:D,createSelectionBetween(n,e,t){return e.pos==t.pos&&i.valid(t)?new i(t):null},handleClick:k,handleKeyDown:b,handleDOMEvents:{beforeinput:T}}})}const b=v({ArrowLeft:c("horiz",-1),ArrowRight:c("horiz",1),ArrowUp:c("vert",-1),ArrowDown:c("vert",1)});function c(n,e){const t=n=="vert"?e>0?"down":"up":e>0?"right":"left";return function(o,r,s){let l=o.selection,f=e>0?l.$to:l.$from,a=l.empty;if(l instanceof m){if(!s.endOfTextblock(t)||f.depth==0)return!1;a=!1,f=o.doc.resolve(e>0?f.after():f.before())}let p=i.findGapCursorFrom(f,e,a);return p?(r&&r(o.tr.setSelection(new i(p))),!0):!1}}function k(n,e,t){if(!n||!n.editable)return!1;let o=n.state.doc.resolve(e);if(!i.valid(o))return!1;let r=n.posAtCoords({left:t.clientX,top:t.clientY});return r&&r.inside>-1&&x.isSelectable(n.state.doc.nodeAt(r.inside))?!1:(n.dispatch(n.state.tr.setSelection(new i(o))),!0)}function T(n,e){if(e.inputType!="insertCompositionText"||!(n.state.selection instanceof i))return!1;let{$from:t}=n.state.selection,o=t.parent.contentMatchAt(t.index()).findWrapping(n.state.schema.nodes.text);if(!o)return!1;let r=h.empty;for(let l=o.length-1;l>=0;l--)r=h.from(o[l].createAndFill(null,r));let s=n.state.tr.replace(t.pos,t.pos,new g(r,0,0));return s.setSelection(m.near(s.doc.resolve(t.pos+1))),n.dispatch(s),!1}function D(n){if(!(n.selection instanceof i))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",y.create(n.doc,[A.widget(n.selection.head,e,{key:"gapcursor"})])}export{i as GapCursor,z as gapCursor};
1
+ import{keydownHandler as v}from"../../prosemirror-keymap/dist/index.js";import{Plugin as w,TextSelection as m,NodeSelection as x,Selection as u}from"../../prosemirror-state/dist/index.js";import{Fragment as h,Slice as g}from"../../prosemirror-model/dist/index.js";import{DecorationSet as S,Decoration as A}from"../../prosemirror-view/dist/index.js";class i extends u{constructor(e){super(e,e)}map(e,t){let o=e.resolve(t.map(this.head));return i.valid(o)?new i(o):u.near(o)}content(){return g.empty}eq(e){return e instanceof i&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new i(e.resolve(t.pos))}getBookmark(){return new d(this.anchor)}static valid(e){let t=e.parent;if(t.isTextblock||!b(e)||!y(e))return!1;let o=t.type.spec.allowGapCursor;if(o!=null)return o;let r=t.contentMatchAt(e.index()).defaultType;return r&&r.isTextblock}static findGapCursorFrom(e,t,o=!1){e:for(;;){if(!o&&i.valid(e))return e;let r=e.pos,s=null;for(let l=e.depth;;l--){let a=e.node(l);if(t>0?e.indexAfter(l)<a.childCount:e.index(l)>0){s=a.child(t>0?e.indexAfter(l):e.index(l)-1);break}else if(l==0)return null;r+=t;let f=e.doc.resolve(r);if(i.valid(f))return f}for(;;){let l=t>0?s.firstChild:s.lastChild;if(!l){if(s.isAtom&&!s.isText&&!x.isSelectable(s)){e=e.doc.resolve(r+s.nodeSize*t),o=!1;continue e}break}s=l,r+=t;let a=e.doc.resolve(r);if(i.valid(a))return a}return null}}}i.prototype.visible=!1;i.findFrom=i.findGapCursorFrom;u.jsonID("gapcursor",i);class d{constructor(e){this.pos=e}map(e){return new d(e.map(this.pos))}resolve(e){let t=e.resolve(this.pos);return i.valid(t)?new i(t):u.near(t)}}function C(n){return n.isAtom||n.spec.isolating||n.spec.createGapCursor}function b(n){for(let e=n.depth;e>=0;e--){let t=n.index(e),o=n.node(e);if(t==0){if(o.type.spec.isolating)return!0;continue}for(let r=o.child(t-1);;r=r.lastChild){if(r.childCount==0&&!r.inlineContent||C(r.type))return!0;if(r.inlineContent)return!1}}return!0}function y(n){for(let e=n.depth;e>=0;e--){let t=n.indexAfter(e),o=n.node(e);if(t==o.childCount){if(o.type.spec.isolating)return!0;continue}for(let r=o.child(t);;r=r.firstChild){if(r.childCount==0&&!r.inlineContent||C(r.type))return!0;if(r.inlineContent)return!1}}return!0}function B(){return new w({props:{decorations:F,createSelectionBetween(n,e,t){return e.pos==t.pos&&i.valid(t)?new i(t):null},handleClick:T,handleKeyDown:k,handleDOMEvents:{beforeinput:D}}})}const k=v({ArrowLeft:c("horiz",-1),ArrowRight:c("horiz",1),ArrowUp:c("vert",-1),ArrowDown:c("vert",1)});function c(n,e){const t=n=="vert"?e>0?"down":"up":e>0?"right":"left";return function(o,r,s){let l=o.selection,a=e>0?l.$to:l.$from,f=l.empty;if(l instanceof m){if(!s.endOfTextblock(t)||a.depth==0)return!1;f=!1,a=o.doc.resolve(e>0?a.after():a.before())}let p=i.findGapCursorFrom(a,e,f);return p?(r&&r(o.tr.setSelection(new i(p))),!0):!1}}function T(n,e,t){if(!n||!n.editable)return!1;let o=n.state.doc.resolve(e);if(!i.valid(o))return!1;let r=n.posAtCoords({left:t.clientX,top:t.clientY});return r&&r.inside>-1&&x.isSelectable(n.state.doc.nodeAt(r.inside))?!1:(n.dispatch(n.state.tr.setSelection(new i(o))),!0)}function D(n,e){if(e.inputType!="insertCompositionText"||!(n.state.selection instanceof i))return!1;let{$from:t}=n.state.selection,o=t.parent.contentMatchAt(t.index()).findWrapping(n.state.schema.nodes.text);if(!o)return!1;let r=h.empty;for(let l=o.length-1;l>=0;l--)r=h.from(o[l].createAndFill(null,r));let s=n.state.tr.replace(t.pos,t.pos,new g(r,0,0));return s.setSelection(m.near(s.doc.resolve(t.pos+1))),n.dispatch(s),!1}function F(n){if(!(n.selection instanceof i))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",S.create(n.doc,[A.widget(n.selection.head,e,{key:"gapcursor"})])}export{i as GapCursor,B as gapCursor};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../node_modules/prosemirror-gapcursor/dist/index.js"],"sourcesContent":["import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating)\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating)\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n"],"names":["GapCursor","Selection","$pos","doc","mapping","Slice","other","json","GapBookmark","parent","closedBefore","closedAfter","override","deflt","dir","mustMove","search","pos","next","d","$cur","inside","NodeSelection","index","before","after","gapCursor","Plugin","drawGapCursor","_view","$anchor","$head","handleClick","handleKeyDown","beforeinput","keydownHandler","arrow","axis","dirStr","state","dispatch","view","sel","$start","TextSelection","$found","event","clickPos","$from","insert","frag","Fragment","i","tr","node","DecorationSet","Decoration"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../../../../node_modules/prosemirror-gapcursor/dist/index.js"],"sourcesContent":["import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction needsGap(type) {\n return type.isAtom || type.spec.isolating || type.spec.createGapCursor;\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || needsGap(before.type))\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || needsGap(after.type))\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n"],"names":["GapCursor","Selection","$pos","doc","mapping","Slice","other","json","GapBookmark","parent","closedBefore","closedAfter","override","deflt","dir","mustMove","search","pos","next","d","$cur","inside","NodeSelection","needsGap","type","index","before","after","gapCursor","Plugin","drawGapCursor","_view","$anchor","$head","handleClick","handleKeyDown","beforeinput","keydownHandler","arrow","axis","dirStr","state","dispatch","view","sel","$start","TextSelection","$found","event","clickPos","$from","insert","frag","Fragment","i","tr","node","DecorationSet","Decoration"],"mappings":"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","x_google_ignoreList":[0]}