@bikdotai/bik-component-library 0.0.809-beta.9 → 0.0.809

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 (73) hide show
  1. package/dist/cjs/components/list-item/themes.js +1 -1
  2. package/dist/cjs/components/list-item/themes.js.map +1 -1
  3. package/dist/cjs/components/variable-picker-v3/Content.js +1 -1
  4. package/dist/cjs/components/variable-picker-v3/Content.js.map +1 -1
  5. package/dist/cjs/components/variable-picker-v3/SubHeaderItems.js +1 -1
  6. package/dist/cjs/components/variable-picker-v3/SubHeaderItems.js.map +1 -1
  7. package/dist/cjs/components/variable-picker-v3/context.js +1 -1
  8. package/dist/cjs/components/variable-picker-v3/context.js.map +1 -1
  9. package/dist/cjs/editor/BikEditor.js +1 -1
  10. package/dist/cjs/editor/BikEditor.js.map +1 -1
  11. package/dist/cjs/editor/BikEditor.styles.js +1 -1
  12. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  13. package/dist/cjs/editor/BikEditor.types.js.map +1 -1
  14. package/dist/cjs/editor/extensions/buildExtensions.js +1 -1
  15. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  16. package/dist/cjs/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js +2 -0
  17. package/dist/cjs/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js.map +1 -0
  18. package/dist/cjs/editor/extensions/plainClipboard/PlainClipboardExtension.js +2 -0
  19. package/dist/cjs/editor/extensions/plainClipboard/PlainClipboardExtension.js.map +1 -0
  20. package/dist/cjs/editor/extensions/plainClipboard/pasteUtils.js +1 -1
  21. package/dist/cjs/editor/extensions/plainClipboard/pasteUtils.js.map +1 -1
  22. package/dist/cjs/src/components/QueryBuilder/Triggers/EVENTS/components/EventsTrigger.d.ts +1 -1
  23. package/dist/cjs/src/components/QueryBuilder/Triggers/EVENTS/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  24. package/dist/cjs/src/components/QueryBuilder/Triggers/IG/components/IGTrigger.d.ts +1 -1
  25. package/dist/cjs/src/components/QueryBuilder/Triggers/IG/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  26. package/dist/cjs/src/components/QueryBuilder/Triggers/components/BaseTriggerQueryBuilderNode.d.ts +2 -2
  27. package/dist/cjs/src/components/bik-layout/MockMenus.d.ts +0 -1
  28. package/dist/cjs/src/components/variable-picker-v3/context.d.ts +4 -0
  29. package/dist/cjs/src/editor/BikEditor.styles.d.ts +0 -1
  30. package/dist/cjs/src/editor/BikEditor.types.d.ts +0 -2
  31. package/dist/cjs/src/editor/extensions/plainClipboard/ClipboardNormalizationExtension.d.ts +7 -0
  32. package/dist/cjs/src/editor/extensions/plainClipboard/PlainClipboardExtension.d.ts +2 -0
  33. package/dist/cjs/src/editor/extensions/plainClipboard/pasteUtils.d.ts +8 -24
  34. package/dist/esm/components/list-item/themes.js +1 -1
  35. package/dist/esm/components/list-item/themes.js.map +1 -1
  36. package/dist/esm/components/variable-picker-v3/Content.js +1 -1
  37. package/dist/esm/components/variable-picker-v3/Content.js.map +1 -1
  38. package/dist/esm/components/variable-picker-v3/SubHeaderItems.js +1 -1
  39. package/dist/esm/components/variable-picker-v3/SubHeaderItems.js.map +1 -1
  40. package/dist/esm/components/variable-picker-v3/context.js +1 -1
  41. package/dist/esm/components/variable-picker-v3/context.js.map +1 -1
  42. package/dist/esm/editor/BikEditor.js +1 -1
  43. package/dist/esm/editor/BikEditor.js.map +1 -1
  44. package/dist/esm/editor/BikEditor.styles.js +1 -1
  45. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  46. package/dist/esm/editor/BikEditor.types.js.map +1 -1
  47. package/dist/esm/editor/extensions/buildExtensions.js +1 -1
  48. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  49. package/dist/esm/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js +2 -0
  50. package/dist/esm/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js.map +1 -0
  51. package/dist/esm/editor/extensions/plainClipboard/PlainClipboardExtension.js +2 -0
  52. package/dist/esm/editor/extensions/plainClipboard/PlainClipboardExtension.js.map +1 -0
  53. package/dist/esm/editor/extensions/plainClipboard/pasteUtils.js +1 -1
  54. package/dist/esm/editor/extensions/plainClipboard/pasteUtils.js.map +1 -1
  55. package/dist/esm/src/components/QueryBuilder/Triggers/EVENTS/components/EventsTrigger.d.ts +1 -1
  56. package/dist/esm/src/components/QueryBuilder/Triggers/EVENTS/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  57. package/dist/esm/src/components/QueryBuilder/Triggers/IG/components/IGTrigger.d.ts +1 -1
  58. package/dist/esm/src/components/QueryBuilder/Triggers/IG/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  59. package/dist/esm/src/components/QueryBuilder/Triggers/components/BaseTriggerQueryBuilderNode.d.ts +2 -2
  60. package/dist/esm/src/components/bik-layout/MockMenus.d.ts +0 -1
  61. package/dist/esm/src/components/variable-picker-v3/context.d.ts +4 -0
  62. package/dist/esm/src/editor/BikEditor.styles.d.ts +0 -1
  63. package/dist/esm/src/editor/BikEditor.types.d.ts +0 -2
  64. package/dist/esm/src/editor/extensions/plainClipboard/ClipboardNormalizationExtension.d.ts +7 -0
  65. package/dist/esm/src/editor/extensions/plainClipboard/PlainClipboardExtension.d.ts +2 -0
  66. package/dist/esm/src/editor/extensions/plainClipboard/pasteUtils.d.ts +8 -24
  67. package/package.json +1 -1
  68. package/dist/cjs/editor/extensions/plainClipboard/PasteNormalizationExtension.js +0 -2
  69. package/dist/cjs/editor/extensions/plainClipboard/PasteNormalizationExtension.js.map +0 -1
  70. package/dist/cjs/src/editor/extensions/plainClipboard/PasteNormalizationExtension.d.ts +0 -10
  71. package/dist/esm/editor/extensions/plainClipboard/PasteNormalizationExtension.js +0 -2
  72. package/dist/esm/editor/extensions/plainClipboard/PasteNormalizationExtension.js.map +0 -1
  73. package/dist/esm/src/editor/extensions/plainClipboard/PasteNormalizationExtension.d.ts +0 -10
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const Menus: ({
3
2
  displayName: string;
4
3
  key: number;
@@ -8,6 +8,8 @@ export declare const VariablePickerContext: React.Context<{
8
8
  setVariables: React.Dispatch<React.SetStateAction<any[]>>;
9
9
  showRecommended: boolean;
10
10
  setShowRecommended: React.Dispatch<React.SetStateAction<boolean>>;
11
+ containerRef: React.RefObject<HTMLDivElement | null>;
12
+ scrollPositionStack: React.MutableRefObject<number[]>;
11
13
  }>;
12
14
  export declare const useVariablePickerContext: () => {
13
15
  searchText: string;
@@ -18,4 +20,6 @@ export declare const useVariablePickerContext: () => {
18
20
  setVariables: React.Dispatch<React.SetStateAction<any[]>>;
19
21
  showRecommended: boolean;
20
22
  setShowRecommended: React.Dispatch<React.SetStateAction<boolean>>;
23
+ containerRef: React.RefObject<HTMLDivElement | null>;
24
+ scrollPositionStack: React.MutableRefObject<number[]>;
21
25
  };
@@ -1,5 +1,4 @@
1
1
  export declare const BikEditorShell: import("styled-components").StyledComponent<"div", any, {
2
2
  minHeight?: string | undefined;
3
3
  maxHeight?: string | undefined;
4
- paragraphGap?: string | undefined;
5
4
  }, never>;
@@ -728,6 +728,4 @@ export interface BikEditorProps {
728
728
  minHeight?: string;
729
729
  /** Maximum height. The editor scrolls internally when exceeded. CSS value, e.g. `'400px'`. */
730
730
  maxHeight?: string;
731
- /** Gap between consecutive paragraphs. CSS value, defaults to `'4px'`. */
732
- paragraphGap?: string;
733
731
  }
@@ -0,0 +1,7 @@
1
+ import { Extension } from '@tiptap/core';
2
+ /**
3
+ * Lightweight paste normalizer for rich-paste editors (email).
4
+ * Fixes Google Docs' standalone `<br>` between paragraphs and collapses
5
+ * consecutive empty paragraphs — but keeps ALL formatting marks intact.
6
+ */
7
+ export declare const ClipboardNormalizationExtension: Extension<any, any>;
@@ -0,0 +1,2 @@
1
+ import { Extension } from '@tiptap/core';
2
+ export declare const PlainClipboardExtension: Extension<any, any>;
@@ -1,37 +1,21 @@
1
- import { Fragment, Schema, Slice } from '@tiptap/pm/model';
1
+ import { Fragment } from '@tiptap/pm/model';
2
2
  export declare const TEXTBLOCK_TAGS: Set<string>;
3
3
  export declare const BLOCK_SELECTOR = "p,div,h1,h2,h3,h4,h5,h6,ul,ol,li,blockquote,table,pre";
4
4
  /**
5
5
  * Replace `<br>` elements that sit at block level (not inside a textblock
6
6
  * like `<p>`, `<li>`, etc.) with empty `<p></p>` elements. Google Docs
7
7
  * puts standalone `<br>` tags between paragraphs to represent blank lines.
8
+ * Without this, ProseMirror parses them as top-level hardBreak nodes.
8
9
  */
9
10
  export declare function cleanBlockBrs(container: HTMLElement): void;
10
11
  /**
11
- * Strip trailing `<br>` from content paragraphs in the DOM.
12
- * Google Docs adds a `<br>` at the end of non-empty paragraphs as a cursor
13
- * placeholder. Without this, ProseMirror creates a trailing hardBreak that
14
- * adds a visual blank line at the bottom of the paragraph.
12
+ * 1. Convert paragraphs containing only a hard_break into empty paragraphs.
13
+ * 2. Collapse consecutive empty paragraphs into one.
15
14
  */
16
- export declare function stripTrailingBrs(container: HTMLElement): void;
15
+ export declare function normalizeBlanks(fragment: Fragment): Fragment;
17
16
  /**
18
- * Convert paragraphs containing only a hardBreak into truly empty paragraphs.
19
- * Google Docs represents blank lines as `<p><br></p>` ProseMirror parses
20
- * the `<br>` as a hardBreak node, which renders double-height. Converting to
21
- * an empty paragraph (childCount 0) gives a single-height blank line.
22
- *
23
- * Does NOT collapse consecutive empties — that would destroy user intent.
24
- */
25
- export declare function normalizeHardBreaks(fragment: Fragment): Fragment;
26
- /**
27
- * Strip "rich" marks (link, textStyle, highlight, etc.) while keeping
28
- * basic marks (bold, italic, strike, underline, code) that messaging
29
- * channels can represent.
17
+ * Strip only "rich" marks (link, textStyle, highlight, etc.) while keeping
18
+ * basic formatting marks (bold, italic, strike, underline, code) that
19
+ * messaging channels can represent.
30
20
  */
31
21
  export declare function stripRichMarks(fragment: Fragment): Fragment;
32
- /**
33
- * Parse plain clipboard text into a ProseMirror Slice, preserving blank
34
- * lines as empty paragraphs. This replaces ProseMirror's default text
35
- * parser which uses `\n+` and loses all blank lines.
36
- */
37
- export declare function parseClipboardText(text: string, schema: Schema): Slice;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bikdotai/bik-component-library",
3
- "version": "0.0.809-beta.9",
3
+ "version": "0.0.809",
4
4
  "description": "Bik Component Library",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../node_modules/@tiptap/core/dist/index.js"),r=require("@tiptap/pm/model"),t=require("@tiptap/pm/state"),s=require("./pasteUtils.js");const n=e.Extension.create({name:"pasteNormalization",addOptions:()=>({preserveMarks:!1}),addProseMirrorPlugins(){const e=this.options.preserveMarks;return[new t.Plugin({props:{clipboardTextParser:(e,r,t,n)=>s.parseClipboardText(e,n.state.schema),transformPastedHTML(e){if(e.includes("data-pm-slice"))return e;const r=document.createElement("div");return r.innerHTML=e,s.cleanBlockBrs(r),s.stripTrailingBrs(r),r.innerHTML},transformPasted(t){let n=s.normalizeHardBreaks(t.content);return e||(n=s.stripRichMarks(n)),new r.Slice(n,t.openStart,t.openEnd)}}})]}});exports.PasteNormalizationExtension=n;
2
- //# sourceMappingURL=PasteNormalizationExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PasteNormalizationExtension.js","sources":["../../../../../src/editor/extensions/plainClipboard/PasteNormalizationExtension.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport { Slice } from '@tiptap/pm/model';\nimport { Plugin } from '@tiptap/pm/state';\nimport {\n\tcleanBlockBrs,\n\tnormalizeHardBreaks,\n\tparseClipboardText,\n\tstripRichMarks,\n\tstripTrailingBrs,\n} from './pasteUtils';\n\n/**\n * Unified paste normalizer for all editor channels.\n *\n * Uses ProseMirror's recommended hooks instead of overriding handlePaste:\n * - clipboardTextParser: plain text → Slice (preserves blank lines)\n * - transformPastedHTML: HTML → HTML (cleans Google Docs / Word artifacts)\n * - transformPasted: Slice → Slice (normalizes hardBreaks, strips marks)\n */\nexport const PasteNormalizationExtension = Extension.create({\n\tname: 'pasteNormalization',\n\taddOptions() {\n\t\treturn {\n\t\t\tpreserveMarks: false,\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tconst preserveMarks = this.options.preserveMarks;\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\tclipboardTextParser(text, _$context, _plain, view) {\n\t\t\t\t\t\treturn parseClipboardText(text, view.state.schema);\n\t\t\t\t\t},\n\n\t\t\t\t\ttransformPastedHTML(html) {\n\t\t\t\t\t\tif (html.includes('data-pm-slice')) return html;\n\t\t\t\t\t\tconst container = document.createElement('div');\n\t\t\t\t\t\tcontainer.innerHTML = html;\n\t\t\t\t\t\tcleanBlockBrs(container);\n\t\t\t\t\t\tstripTrailingBrs(container);\n\t\t\t\t\t\treturn container.innerHTML;\n\t\t\t\t\t},\n\n\t\t\t\t\ttransformPasted(slice) {\n\t\t\t\t\t\tlet content = normalizeHardBreaks(slice.content);\n\t\t\t\t\t\tif (!preserveMarks) {\n\t\t\t\t\t\t\tcontent = stripRichMarks(content);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Slice(content, slice.openStart, slice.openEnd);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t];\n\t},\n});\n"],"names":["PasteNormalizationExtension","Extension","create","name","addOptions","preserveMarks","addProseMirrorPlugins","this","options","Plugin","props","clipboardTextParser","text","_$context","_plain","view","parseClipboardText","state","schema","transformPastedHTML","html","includes","container","document","createElement","innerHTML","cleanBlockBrs","stripTrailingBrs","transformPasted","slice","content","normalizeHardBreaks","stripRichMarks","Slice","openStart","openEnd"],"mappings":"qOAmBaA,EAA8BC,EAASA,UAACC,OAAO,CAC3DC,KAAM,qBACNC,WAAUA,KACF,CACNC,eAAe,IAGjBC,wBACC,MAAMD,EAAgBE,KAAKC,QAAQH,cACnC,MAAO,CACN,IAAII,EAAAA,OAAO,CACVC,MAAO,CACNC,oBAAmBA,CAACC,EAAMC,EAAWC,EAAQC,IACrCC,EAAkBA,mBAACJ,EAAMG,EAAKE,MAAMC,QAG5CC,oBAAoBC,GACnB,GAAIA,EAAKC,SAAS,iBAAkB,OAAOD,EAC3C,MAAME,EAAYC,SAASC,cAAc,OAIzC,OAHAF,EAAUG,UAAYL,EACtBM,EAAaA,cAACJ,GACdK,EAAgBA,iBAACL,GACVA,EAAUG,SACjB,EAEDG,gBAAgBC,GACf,IAAIC,EAAUC,EAAAA,oBAAoBF,EAAMC,SAIxC,OAHKzB,IACJyB,EAAUE,EAAAA,eAAeF,IAEnB,IAAIG,EAAKA,MAACH,EAASD,EAAMK,UAAWL,EAAMM,QAClD,KAIJ"}
@@ -1,10 +0,0 @@
1
- import { Extension } from '@tiptap/core';
2
- /**
3
- * Unified paste normalizer for all editor channels.
4
- *
5
- * Uses ProseMirror's recommended hooks instead of overriding handlePaste:
6
- * - clipboardTextParser: plain text → Slice (preserves blank lines)
7
- * - transformPastedHTML: HTML → HTML (cleans Google Docs / Word artifacts)
8
- * - transformPasted: Slice → Slice (normalizes hardBreaks, strips marks)
9
- */
10
- export declare const PasteNormalizationExtension: Extension<any, any>;
@@ -1,2 +0,0 @@
1
- import{Extension as t}from"../../../node_modules/@tiptap/core/dist/index.js";import{Slice as e}from"@tiptap/pm/model";import{Plugin as r}from"@tiptap/pm/state";import{parseClipboardText as o,cleanBlockBrs as n,stripTrailingBrs as s,normalizeHardBreaks as a,stripRichMarks as p}from"./pasteUtils.js";const i=t.create({name:"pasteNormalization",addOptions:()=>({preserveMarks:!1}),addProseMirrorPlugins(){const t=this.options.preserveMarks;return[new r({props:{clipboardTextParser:(t,e,r,n)=>o(t,n.state.schema),transformPastedHTML(t){if(t.includes("data-pm-slice"))return t;const e=document.createElement("div");return e.innerHTML=t,n(e),s(e),e.innerHTML},transformPasted(r){let o=a(r.content);return t||(o=p(o)),new e(o,r.openStart,r.openEnd)}}})]}});export{i as PasteNormalizationExtension};
2
- //# sourceMappingURL=PasteNormalizationExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PasteNormalizationExtension.js","sources":["../../../../../src/editor/extensions/plainClipboard/PasteNormalizationExtension.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport { Slice } from '@tiptap/pm/model';\nimport { Plugin } from '@tiptap/pm/state';\nimport {\n\tcleanBlockBrs,\n\tnormalizeHardBreaks,\n\tparseClipboardText,\n\tstripRichMarks,\n\tstripTrailingBrs,\n} from './pasteUtils';\n\n/**\n * Unified paste normalizer for all editor channels.\n *\n * Uses ProseMirror's recommended hooks instead of overriding handlePaste:\n * - clipboardTextParser: plain text → Slice (preserves blank lines)\n * - transformPastedHTML: HTML → HTML (cleans Google Docs / Word artifacts)\n * - transformPasted: Slice → Slice (normalizes hardBreaks, strips marks)\n */\nexport const PasteNormalizationExtension = Extension.create({\n\tname: 'pasteNormalization',\n\taddOptions() {\n\t\treturn {\n\t\t\tpreserveMarks: false,\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tconst preserveMarks = this.options.preserveMarks;\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\tclipboardTextParser(text, _$context, _plain, view) {\n\t\t\t\t\t\treturn parseClipboardText(text, view.state.schema);\n\t\t\t\t\t},\n\n\t\t\t\t\ttransformPastedHTML(html) {\n\t\t\t\t\t\tif (html.includes('data-pm-slice')) return html;\n\t\t\t\t\t\tconst container = document.createElement('div');\n\t\t\t\t\t\tcontainer.innerHTML = html;\n\t\t\t\t\t\tcleanBlockBrs(container);\n\t\t\t\t\t\tstripTrailingBrs(container);\n\t\t\t\t\t\treturn container.innerHTML;\n\t\t\t\t\t},\n\n\t\t\t\t\ttransformPasted(slice) {\n\t\t\t\t\t\tlet content = normalizeHardBreaks(slice.content);\n\t\t\t\t\t\tif (!preserveMarks) {\n\t\t\t\t\t\t\tcontent = stripRichMarks(content);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Slice(content, slice.openStart, slice.openEnd);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t];\n\t},\n});\n"],"names":["PasteNormalizationExtension","Extension","create","name","addOptions","preserveMarks","addProseMirrorPlugins","this","options","Plugin","props","clipboardTextParser","text","_$context","_plain","view","parseClipboardText","state","schema","transformPastedHTML","html","includes","container","document","createElement","innerHTML","cleanBlockBrs","stripTrailingBrs","transformPasted","slice","content","normalizeHardBreaks","stripRichMarks","Slice","openStart","openEnd"],"mappings":"iTAmBaA,EAA8BC,EAAUC,OAAO,CAC3DC,KAAM,qBACNC,WAAUA,KACF,CACNC,eAAe,IAGjBC,wBACC,MAAMD,EAAgBE,KAAKC,QAAQH,cACnC,MAAO,CACN,IAAII,EAAO,CACVC,MAAO,CACNC,oBAAmBA,CAACC,EAAMC,EAAWC,EAAQC,IACrCC,EAAmBJ,EAAMG,EAAKE,MAAMC,QAG5CC,oBAAoBC,GACnB,GAAIA,EAAKC,SAAS,iBAAkB,OAAOD,EAC3C,MAAME,EAAYC,SAASC,cAAc,OAIzC,OAHAF,EAAUG,UAAYL,EACtBM,EAAcJ,GACdK,EAAiBL,GACVA,EAAUG,SACjB,EAEDG,gBAAgBC,GACf,IAAIC,EAAUC,EAAoBF,EAAMC,SAIxC,OAHKzB,IACJyB,EAAUE,EAAeF,IAEnB,IAAIG,EAAMH,EAASD,EAAMK,UAAWL,EAAMM,QAClD,KAIJ"}
@@ -1,10 +0,0 @@
1
- import { Extension } from '@tiptap/core';
2
- /**
3
- * Unified paste normalizer for all editor channels.
4
- *
5
- * Uses ProseMirror's recommended hooks instead of overriding handlePaste:
6
- * - clipboardTextParser: plain text → Slice (preserves blank lines)
7
- * - transformPastedHTML: HTML → HTML (cleans Google Docs / Word artifacts)
8
- * - transformPasted: Slice → Slice (normalizes hardBreaks, strips marks)
9
- */
10
- export declare const PasteNormalizationExtension: Extension<any, any>;