@bikdotai/bik-component-library 0.0.867-beta.0 → 0.0.868-beta.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 (138) hide show
  1. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +4 -4
  2. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  3. package/dist/cjs/components/button/Button.js +1 -1
  4. package/dist/cjs/components/button/Button.js.map +1 -1
  5. package/dist/cjs/components/button/Button.styled.js +2 -2
  6. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  7. package/dist/cjs/components/chip-selector/ChipSelector.js +2 -0
  8. package/dist/cjs/components/chip-selector/ChipSelector.js.map +1 -0
  9. package/dist/cjs/components/chip-selector/ChipSelector.styled.js +36 -0
  10. package/dist/cjs/components/chip-selector/ChipSelector.styled.js.map +1 -0
  11. package/dist/cjs/components/chip-selector/ChipSelectorGroup.js +2 -0
  12. package/dist/cjs/components/chip-selector/ChipSelectorGroup.js.map +1 -0
  13. package/dist/cjs/components/combo-box/ComboBox.js +2 -0
  14. package/dist/cjs/components/combo-box/ComboBox.js.map +1 -0
  15. package/dist/cjs/components/combo-box/ComboBox.styled.js +33 -0
  16. package/dist/cjs/components/combo-box/ComboBox.styled.js.map +1 -0
  17. package/dist/cjs/components/datePicker/DatePickerWrapper.js +1 -1
  18. package/dist/cjs/components/datePicker/DatePickerWrapper.js.map +1 -1
  19. package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
  20. package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
  21. package/dist/cjs/components/schedule-builder/RefreshSegmentToggle.js +2 -0
  22. package/dist/cjs/components/schedule-builder/RefreshSegmentToggle.js.map +1 -0
  23. package/dist/cjs/components/schedule-builder/ScheduleBuilder.js +2 -0
  24. package/dist/cjs/components/schedule-builder/ScheduleBuilder.js.map +1 -0
  25. package/dist/cjs/components/schedule-builder/ScheduleBuilder.styled.js +138 -0
  26. package/dist/cjs/components/schedule-builder/ScheduleBuilder.styled.js.map +1 -0
  27. package/dist/cjs/components/schedule-builder/ScheduleEndPicker.js +2 -0
  28. package/dist/cjs/components/schedule-builder/ScheduleEndPicker.js.map +1 -0
  29. package/dist/cjs/components/schedule-builder/ScheduleFrequencyPicker.js +2 -0
  30. package/dist/cjs/components/schedule-builder/ScheduleFrequencyPicker.js.map +1 -0
  31. package/dist/cjs/components/schedule-builder/ScheduleHelper.js +2 -0
  32. package/dist/cjs/components/schedule-builder/ScheduleHelper.js.map +1 -0
  33. package/dist/cjs/components/schedule-builder/SendModeSelector.js +2 -0
  34. package/dist/cjs/components/schedule-builder/SendModeSelector.js.map +1 -0
  35. package/dist/cjs/components/schedule-builder/StartDateTimePicker.js +2 -0
  36. package/dist/cjs/components/schedule-builder/StartDateTimePicker.js.map +1 -0
  37. package/dist/cjs/components/schedule-builder/UpcomingRunsPreview.js +2 -0
  38. package/dist/cjs/components/schedule-builder/UpcomingRunsPreview.js.map +1 -0
  39. package/dist/cjs/components/schedule-builder/model.js +2 -0
  40. package/dist/cjs/components/schedule-builder/model.js.map +1 -0
  41. package/dist/cjs/components/tag/Tag.js +1 -1
  42. package/dist/cjs/components/tag/Tag.js.map +1 -1
  43. package/dist/cjs/components/tag/Tag.styled.js +4 -4
  44. package/dist/cjs/components/tag/Tag.styled.js.map +1 -1
  45. package/dist/cjs/components/tag/model.js.map +1 -1
  46. package/dist/cjs/editor/extensions/buildExtensions.js +2 -2
  47. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  48. package/dist/cjs/icons/BIK AI specific/WandSparkles.js +1 -1
  49. package/dist/cjs/icons/BIK AI specific/WandSparkles.js.map +1 -1
  50. package/dist/cjs/index.js +1 -1
  51. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +3 -1
  52. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +31 -23
  53. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  54. package/dist/esm/components/button/Button.js +19 -21
  55. package/dist/esm/components/button/Button.js.map +1 -1
  56. package/dist/esm/components/button/Button.styled.d.ts +0 -1
  57. package/dist/esm/components/button/Button.styled.js +5 -5
  58. package/dist/esm/components/button/Button.styled.js.map +1 -1
  59. package/dist/esm/components/button/model.d.ts +0 -5
  60. package/dist/esm/components/chip-selector/ChipSelector.d.ts +9 -0
  61. package/dist/esm/components/chip-selector/ChipSelector.js +27 -0
  62. package/dist/esm/components/chip-selector/ChipSelector.js.map +1 -0
  63. package/dist/esm/components/chip-selector/ChipSelector.styled.d.ts +10 -0
  64. package/dist/esm/components/chip-selector/ChipSelector.styled.js +48 -0
  65. package/dist/esm/components/chip-selector/ChipSelector.styled.js.map +1 -0
  66. package/dist/esm/components/chip-selector/ChipSelectorGroup.d.ts +10 -0
  67. package/dist/esm/components/chip-selector/ChipSelectorGroup.js +48 -0
  68. package/dist/esm/components/chip-selector/ChipSelectorGroup.js.map +1 -0
  69. package/dist/esm/components/chip-selector/index.d.ts +4 -0
  70. package/dist/esm/components/chip-selector/model.d.ts +106 -0
  71. package/dist/esm/components/combo-box/ComboBox.d.ts +15 -0
  72. package/dist/esm/components/combo-box/ComboBox.js +118 -0
  73. package/dist/esm/components/combo-box/ComboBox.js.map +1 -0
  74. package/dist/esm/components/combo-box/ComboBox.styled.d.ts +12 -0
  75. package/dist/esm/components/combo-box/ComboBox.styled.js +40 -0
  76. package/dist/esm/components/combo-box/ComboBox.styled.js.map +1 -0
  77. package/dist/esm/components/combo-box/index.d.ts +3 -0
  78. package/dist/esm/components/combo-box/model.d.ts +55 -0
  79. package/dist/esm/components/datePicker/DatePickerWrapper.d.ts +7 -0
  80. package/dist/esm/components/datePicker/DatePickerWrapper.js +66 -64
  81. package/dist/esm/components/datePicker/DatePickerWrapper.js.map +1 -1
  82. package/dist/esm/components/datePicker/index.d.ts +1 -0
  83. package/dist/esm/components/dropdown-button/DropdownButton.d.ts +0 -5
  84. package/dist/esm/components/dropdown-button/DropdownButton.js +3 -4
  85. package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
  86. package/dist/esm/components/schedule-builder/RefreshSegmentToggle.d.ts +22 -0
  87. package/dist/esm/components/schedule-builder/RefreshSegmentToggle.js +31 -0
  88. package/dist/esm/components/schedule-builder/RefreshSegmentToggle.js.map +1 -0
  89. package/dist/esm/components/schedule-builder/ScheduleBuilder.d.ts +88 -0
  90. package/dist/esm/components/schedule-builder/ScheduleBuilder.js +105 -0
  91. package/dist/esm/components/schedule-builder/ScheduleBuilder.js.map +1 -0
  92. package/dist/esm/components/schedule-builder/ScheduleBuilder.styled.d.ts +81 -0
  93. package/dist/esm/components/schedule-builder/ScheduleBuilder.styled.js +168 -0
  94. package/dist/esm/components/schedule-builder/ScheduleBuilder.styled.js.map +1 -0
  95. package/dist/esm/components/schedule-builder/ScheduleEndPicker.d.ts +17 -0
  96. package/dist/esm/components/schedule-builder/ScheduleEndPicker.js +105 -0
  97. package/dist/esm/components/schedule-builder/ScheduleEndPicker.js.map +1 -0
  98. package/dist/esm/components/schedule-builder/ScheduleFrequencyPicker.d.ts +21 -0
  99. package/dist/esm/components/schedule-builder/ScheduleFrequencyPicker.js +136 -0
  100. package/dist/esm/components/schedule-builder/ScheduleFrequencyPicker.js.map +1 -0
  101. package/dist/esm/components/schedule-builder/ScheduleHelper.d.ts +110 -0
  102. package/dist/esm/components/schedule-builder/ScheduleHelper.js +196 -0
  103. package/dist/esm/components/schedule-builder/ScheduleHelper.js.map +1 -0
  104. package/dist/esm/components/schedule-builder/SendModeSelector.d.ts +29 -0
  105. package/dist/esm/components/schedule-builder/SendModeSelector.js +41 -0
  106. package/dist/esm/components/schedule-builder/SendModeSelector.js.map +1 -0
  107. package/dist/esm/components/schedule-builder/StartDateTimePicker.d.ts +44 -0
  108. package/dist/esm/components/schedule-builder/StartDateTimePicker.js +119 -0
  109. package/dist/esm/components/schedule-builder/StartDateTimePicker.js.map +1 -0
  110. package/dist/esm/components/schedule-builder/UpcomingRunsPreview.d.ts +19 -0
  111. package/dist/esm/components/schedule-builder/UpcomingRunsPreview.js +44 -0
  112. package/dist/esm/components/schedule-builder/UpcomingRunsPreview.js.map +1 -0
  113. package/dist/esm/components/schedule-builder/index.d.ts +17 -0
  114. package/dist/esm/components/schedule-builder/model.d.ts +69 -0
  115. package/dist/esm/components/schedule-builder/model.js +8 -0
  116. package/dist/esm/components/schedule-builder/model.js.map +1 -0
  117. package/dist/esm/components/tag/Tag.d.ts +1 -1
  118. package/dist/esm/components/tag/Tag.js +41 -48
  119. package/dist/esm/components/tag/Tag.js.map +1 -1
  120. package/dist/esm/components/tag/Tag.styled.d.ts +0 -3
  121. package/dist/esm/components/tag/Tag.styled.js +9 -6
  122. package/dist/esm/components/tag/Tag.styled.js.map +1 -1
  123. package/dist/esm/components/tag/model.d.ts +0 -11
  124. package/dist/esm/components/tag/model.js.map +1 -1
  125. package/dist/esm/editor/extensions/buildExtensions.d.ts +1 -1
  126. package/dist/esm/editor/extensions/buildExtensions.js +43 -49
  127. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  128. package/dist/esm/icons/BIK AI specific/WandSparkles.js +1 -1
  129. package/dist/esm/icons/BIK AI specific/WandSparkles.js.map +1 -1
  130. package/dist/esm/index.d.ts +3 -0
  131. package/dist/esm/index.js +716 -675
  132. package/dist/esm/index.js.map +1 -1
  133. package/package.json +1 -2
  134. package/dist/cjs/editor/extensions/emailLayout/EmailLayoutExtensions.js +0 -2
  135. package/dist/cjs/editor/extensions/emailLayout/EmailLayoutExtensions.js.map +0 -1
  136. package/dist/esm/editor/extensions/emailLayout/EmailLayoutExtensions.d.ts +0 -19
  137. package/dist/esm/editor/extensions/emailLayout/EmailLayoutExtensions.js +0 -110
  138. package/dist/esm/editor/extensions/emailLayout/EmailLayoutExtensions.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bikdotai/bik-component-library",
3
- "version": "0.0.867-beta.0",
3
+ "version": "0.0.868-beta.0",
4
4
  "description": "Bik Component Library",
5
5
  "repository": {
6
6
  "type": "git",
@@ -82,7 +82,6 @@
82
82
  "@tiptap/extension-placeholder": "^3.22.5",
83
83
  "@tiptap/extension-subscript": "^3.22.5",
84
84
  "@tiptap/extension-superscript": "^3.22.5",
85
- "@tiptap/extension-table": "^3.23.6",
86
85
  "@tiptap/extension-text-align": "^3.22.5",
87
86
  "@tiptap/extension-text-style": "^3.22.5",
88
87
  "@tiptap/extension-underline": "^3.22.5",
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../node_modules/@tiptap/core/dist/index.js"),n=require("@tiptap/extension-table"),r=["style","width","height","align","valign","bgcolor"],i=e=>Object.fromEntries(e.map(t=>[t,{default:null,parseHTML:l=>l.getAttribute(t),renderHTML:l=>l[t]?{[t]:l[t]}:{}}])),s=n.Table.extend({addAttributes(){return{...this.parent?.()??{},...i([...r,"cellpadding","cellspacing","border"])}},renderHTML({HTMLAttributes:e}){return["table",a.mergeAttributes(this.options.HTMLAttributes,e),["tbody",0]]}}).configure({resizable:!1}),o=n.TableRow.extend({addAttributes(){return{...this.parent?.()??{},...i(r)}}}),d=n.TableCell.extend({addAttributes(){return{...this.parent?.()??{},...i(r)}}}),u=n.TableHeader.extend({addAttributes(){return{...this.parent?.()??{},...i(r)}}}),b=a.Node.create({name:"styledBlock",group:"block",content:"block+",defining:!0,priority:40,addAttributes(){return i(r)},parseHTML(){return[{tag:"div",getAttrs:e=>{const t=e;return Array.from(t.attributes).some(l=>l.name.startsWith("data-"))?!1:t.hasAttribute("style")||t.hasAttribute("align")?null:!1}}]},renderHTML({HTMLAttributes:e}){return["div",a.mergeAttributes(e),0]}}),c=a.Extension.create({name:"emailInlineStyle",addGlobalAttributes(){return[{types:["textStyle","image","link"],attributes:{emailStyle:{default:null,parseHTML:e=>e.getAttribute("style"),renderHTML:e=>e.emailStyle?{style:e.emailStyle}:{}}}}]}}),m=()=>[s,o,d,u,b,c];exports.EmailInlineStyleExtension=c;exports.EmailTable=s;exports.EmailTableCell=d;exports.EmailTableHeader=u;exports.EmailTableRow=o;exports.StyledBlockNode=b;exports.buildEmailLayoutExtensions=m;
2
- //# sourceMappingURL=EmailLayoutExtensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmailLayoutExtensions.js","sources":["../../../../../src/editor/extensions/emailLayout/EmailLayoutExtensions.ts"],"sourcesContent":["import { Extension, mergeAttributes, Node } from '@tiptap/core';\nimport {\n\tTable,\n\tTableCell,\n\tTableHeader,\n\tTableRow,\n} from '@tiptap/extension-table';\n\n/**\n * Lets the email editor hold email-safe layout HTML without flattening it.\n *\n * Transactional email (order cards, receipts) is built the only way email\n * clients render reliably: nested tables and divs carrying their layout as\n * inline styles. The rich-text schema has no idea what to do with that — it\n * has no table node, so `<table>` collapses to paragraphs, and every layout\n * `<div>` collapses the same way. Measured on an order card: 24 inline styles\n * in, 1 out, two tables and thirteen divs reduced to nine paragraphs.\n *\n * This adds exactly what is needed to keep that markup intact, and nothing\n * that changes how the editor behaves for anyone typing in it:\n *\n * - table / tr / td / th, from TipTap's own table extension, with the source's\n * presentational attributes (style, width, align, ...) carried through and\n * TipTap's own sizing markup (colgroup, min-width) left out — an email table\n * sizes itself; resizing handles have no meaning here.\n * - a styled `div` block, so layout containers keep their border, padding and\n * background instead of becoming paragraphs.\n * - the raw `style` attribute preserved on spans, images and links, which the\n * default marks reduce to the handful of properties they understand.\n *\n * Email only. Chat channels never carry this markup, and their editors are not\n * touched by it.\n */\n\n// Presentational attributes email markup relies on. Only what is read back\n// out is kept; the schema never invents any.\nconst PASSTHROUGH = ['style', 'width', 'height', 'align', 'valign', 'bgcolor'];\n\nconst passthroughAttributes = (names: string[]) =>\n\tObject.fromEntries(\n\t\tnames.map((name) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (el: HTMLElement) => el.getAttribute(name),\n\t\t\t\trenderHTML: (attrs: Record<string, string | null>) =>\n\t\t\t\t\tattrs[name] ? { [name]: attrs[name] } : {},\n\t\t\t},\n\t\t]),\n\t);\n\n/** `<table>` that renders as it came in: its own attributes, no colgroup. */\nexport const EmailTable = Table.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes([\n\t\t\t\t...PASSTHROUGH,\n\t\t\t\t'cellpadding',\n\t\t\t\t'cellspacing',\n\t\t\t\t'border',\n\t\t\t]),\n\t\t};\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t'table',\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t['tbody', 0],\n\t\t];\n\t},\n}).configure({ resizable: false });\n\nexport const EmailTableRow = TableRow.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes(PASSTHROUGH),\n\t\t};\n\t},\n});\n\nexport const EmailTableCell = TableCell.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes(PASSTHROUGH),\n\t\t};\n\t},\n});\n\nexport const EmailTableHeader = TableHeader.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes(PASSTHROUGH),\n\t\t};\n\t},\n});\n\n/**\n * A `div` that keeps its presentation. Parsed at a lower priority than the\n * section divider, which is also a div and must keep winning its own markup.\n */\nexport const StyledBlockNode = Node.create({\n\tname: 'styledBlock',\n\tgroup: 'block',\n\tcontent: 'block+',\n\tdefining: true,\n\tpriority: 40,\n\taddAttributes() {\n\t\treturn passthroughAttributes(PASSTHROUGH);\n\t},\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'div',\n\t\t\t\tgetAttrs: (el) => {\n\t\t\t\t\tconst element = el as HTMLElement;\n\t\t\t\t\t// Section dividers, and any other div carrying data-* semantics,\n\t\t\t\t\t// belong to their own nodes.\n\t\t\t\t\tif (\n\t\t\t\t\t\tArray.from(element.attributes).some((a) =>\n\t\t\t\t\t\t\ta.name.startsWith('data-'),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// A bare div adds nothing a paragraph does not; let it flatten.\n\t\t\t\t\treturn element.hasAttribute('style') || element.hasAttribute('align')\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: false;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn ['div', mergeAttributes(HTMLAttributes), 0];\n\t},\n});\n\n/**\n * The full `style` string on spans, images and links. The default marks read\n * only the properties they model (color, font-size, ...) and drop the rest —\n * padding, border-radius, display — which is exactly what a status pill or a\n * button-styled link is made of.\n */\nexport const EmailInlineStyleExtension = Extension.create({\n\tname: 'emailInlineStyle',\n\taddGlobalAttributes() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttypes: ['textStyle', 'image', 'link'],\n\t\t\t\tattributes: {\n\t\t\t\t\temailStyle: {\n\t\t\t\t\t\tdefault: null,\n\t\t\t\t\t\tparseHTML: (el: HTMLElement) => el.getAttribute('style'),\n\t\t\t\t\t\trenderHTML: (attrs: { emailStyle?: string | null }) =>\n\t\t\t\t\t\t\tattrs.emailStyle ? { style: attrs.emailStyle } : {},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n});\n\nexport const buildEmailLayoutExtensions = () => [\n\tEmailTable,\n\tEmailTableRow,\n\tEmailTableCell,\n\tEmailTableHeader,\n\tStyledBlockNode,\n\tEmailInlineStyleExtension,\n];\n"],"names":["PASSTHROUGH","passthroughAttributes","names","name","el","attrs","EmailTable","Table","HTMLAttributes","mergeAttributes","EmailTableRow","TableRow","EmailTableCell","TableCell","EmailTableHeader","TableHeader","StyledBlockNode","Node","element","a","EmailInlineStyleExtension","Extension","buildEmailLayoutExtensions"],"mappings":"yLAoCMA,EAAc,CAAC,QAAS,QAAS,SAAU,QAAS,SAAU,SAAS,EAEvEC,EAAyBC,GAC9B,OAAO,YACNA,EAAM,IAAKC,GAAS,CACnBA,EACA,CACC,QAAS,KACT,UAAYC,GAAoBA,EAAG,aAAaD,CAAI,EACpD,WAAaE,GACZA,EAAMF,CAAI,EAAI,CAAE,CAACA,CAAI,EAAGE,EAAMF,CAAI,GAAM,CAAA,CAAC,CAC3C,CACA,CACF,EAGYG,EAAaC,EAAAA,MAAM,OAAO,CACtC,eAAgB,CACf,MAAO,CACN,GAAI,KAAK,SAAA,GAAc,CAAA,EACvB,GAAGN,EAAsB,CACxB,GAAGD,EACH,cACA,cACA,QAAA,CACA,CAAA,CAEH,EACA,WAAW,CAAE,eAAAQ,GAAkB,CAC9B,MAAO,CACN,QACAC,EAAAA,gBAAgB,KAAK,QAAQ,eAAgBD,CAAc,EAC3D,CAAC,QAAS,CAAC,CAAA,CAEb,CACD,CAAC,EAAE,UAAU,CAAE,UAAW,GAAO,EAEpBE,EAAgBC,EAAAA,SAAS,OAAO,CAC5C,eAAgB,CACf,MAAO,CACN,GAAI,KAAK,SAAA,GAAc,CAAA,EACvB,GAAGV,EAAsBD,CAAW,CAAA,CAEtC,CACD,CAAC,EAEYY,EAAiBC,EAAAA,UAAU,OAAO,CAC9C,eAAgB,CACf,MAAO,CACN,GAAI,KAAK,SAAA,GAAc,CAAA,EACvB,GAAGZ,EAAsBD,CAAW,CAAA,CAEtC,CACD,CAAC,EAEYc,EAAmBC,EAAAA,YAAY,OAAO,CAClD,eAAgB,CACf,MAAO,CACN,GAAI,KAAK,SAAA,GAAc,CAAA,EACvB,GAAGd,EAAsBD,CAAW,CAAA,CAEtC,CACD,CAAC,EAMYgB,EAAkBC,EAAAA,KAAK,OAAO,CAC1C,KAAM,cACN,MAAO,QACP,QAAS,SACT,SAAU,GACV,SAAU,GACV,eAAgB,CACf,OAAOhB,EAAsBD,CAAW,CACzC,EACA,WAAY,CACX,MAAO,CACN,CACC,IAAK,MACL,SAAWI,GAAO,CACjB,MAAMc,EAAUd,EAGhB,OACC,MAAM,KAAKc,EAAQ,UAAU,EAAE,KAAMC,GACpCA,EAAE,KAAK,WAAW,OAAO,CAAA,EAGnB,GAGDD,EAAQ,aAAa,OAAO,GAAKA,EAAQ,aAAa,OAAO,EACjE,KACA,EACJ,CAAA,CACD,CAEF,EACA,WAAW,CAAE,eAAAV,GAAkB,CAC9B,MAAO,CAAC,MAAOC,EAAAA,gBAAgBD,CAAc,EAAG,CAAC,CAClD,CACD,CAAC,EAQYY,EAA4BC,EAAAA,UAAU,OAAO,CACzD,KAAM,mBACN,qBAAsB,CACrB,MAAO,CACN,CACC,MAAO,CAAC,YAAa,QAAS,MAAM,EACpC,WAAY,CACX,WAAY,CACX,QAAS,KACT,UAAYjB,GAAoBA,EAAG,aAAa,OAAO,EACvD,WAAaC,GACZA,EAAM,WAAa,CAAE,MAAOA,EAAM,YAAe,CAAA,CAAC,CACpD,CACD,CACD,CAEF,CACD,CAAC,EAEYiB,EAA6B,IAAM,CAC/ChB,EACAI,EACAE,EACAE,EACAE,EACAI,CACD"}
@@ -1,19 +0,0 @@
1
- import { Extension, Node } from '@tiptap/core';
2
- /** `<table>` that renders as it came in: its own attributes, no colgroup. */
3
- export declare const EmailTable: Node<import('@tiptap/extension-table').TableOptions, any>;
4
- export declare const EmailTableRow: Node<import('@tiptap/extension-table').TableRowOptions, any>;
5
- export declare const EmailTableCell: Node<import('@tiptap/extension-table').TableCellOptions, any>;
6
- export declare const EmailTableHeader: Node<import('@tiptap/extension-table').TableHeaderOptions, any>;
7
- /**
8
- * A `div` that keeps its presentation. Parsed at a lower priority than the
9
- * section divider, which is also a div and must keep winning its own markup.
10
- */
11
- export declare const StyledBlockNode: Node<any, any>;
12
- /**
13
- * The full `style` string on spans, images and links. The default marks read
14
- * only the properties they model (color, font-size, ...) and drop the rest —
15
- * padding, border-radius, display — which is exactly what a status pill or a
16
- * button-styled link is made of.
17
- */
18
- export declare const EmailInlineStyleExtension: Extension<any, any>;
19
- export declare const buildEmailLayoutExtensions: () => (Node<import('@tiptap/extension-table').TableOptions, any> | Node<import('@tiptap/extension-table').TableRowOptions, any> | Node<any, any> | Extension<any, any>)[];
@@ -1,110 +0,0 @@
1
- import { mergeAttributes as i, Node as n, Extension as s } from "../../../node_modules/@tiptap/core/dist/index.js";
2
- import { Table as o, TableRow as d, TableCell as u, TableHeader as b } from "@tiptap/extension-table";
3
- const l = ["style", "width", "height", "align", "valign", "bgcolor"], a = (t) => Object.fromEntries(
4
- t.map((e) => [
5
- e,
6
- {
7
- default: null,
8
- parseHTML: (r) => r.getAttribute(e),
9
- renderHTML: (r) => r[e] ? { [e]: r[e] } : {}
10
- }
11
- ])
12
- ), c = o.extend({
13
- addAttributes() {
14
- return {
15
- ...this.parent?.() ?? {},
16
- ...a([
17
- ...l,
18
- "cellpadding",
19
- "cellspacing",
20
- "border"
21
- ])
22
- };
23
- },
24
- renderHTML({ HTMLAttributes: t }) {
25
- return [
26
- "table",
27
- i(this.options.HTMLAttributes, t),
28
- ["tbody", 0]
29
- ];
30
- }
31
- }).configure({ resizable: !1 }), m = d.extend({
32
- addAttributes() {
33
- return {
34
- ...this.parent?.() ?? {},
35
- ...a(l)
36
- };
37
- }
38
- }), p = u.extend({
39
- addAttributes() {
40
- return {
41
- ...this.parent?.() ?? {},
42
- ...a(l)
43
- };
44
- }
45
- }), g = b.extend({
46
- addAttributes() {
47
- return {
48
- ...this.parent?.() ?? {},
49
- ...a(l)
50
- };
51
- }
52
- }), y = n.create({
53
- name: "styledBlock",
54
- group: "block",
55
- content: "block+",
56
- defining: !0,
57
- priority: 40,
58
- addAttributes() {
59
- return a(l);
60
- },
61
- parseHTML() {
62
- return [
63
- {
64
- tag: "div",
65
- getAttrs: (t) => {
66
- const e = t;
67
- return Array.from(e.attributes).some(
68
- (r) => r.name.startsWith("data-")
69
- ) ? !1 : e.hasAttribute("style") || e.hasAttribute("align") ? null : !1;
70
- }
71
- }
72
- ];
73
- },
74
- renderHTML({ HTMLAttributes: t }) {
75
- return ["div", i(t), 0];
76
- }
77
- }), T = s.create({
78
- name: "emailInlineStyle",
79
- addGlobalAttributes() {
80
- return [
81
- {
82
- types: ["textStyle", "image", "link"],
83
- attributes: {
84
- emailStyle: {
85
- default: null,
86
- parseHTML: (t) => t.getAttribute("style"),
87
- renderHTML: (t) => t.emailStyle ? { style: t.emailStyle } : {}
88
- }
89
- }
90
- }
91
- ];
92
- }
93
- }), f = () => [
94
- c,
95
- m,
96
- p,
97
- g,
98
- y,
99
- T
100
- ];
101
- export {
102
- T as EmailInlineStyleExtension,
103
- c as EmailTable,
104
- p as EmailTableCell,
105
- g as EmailTableHeader,
106
- m as EmailTableRow,
107
- y as StyledBlockNode,
108
- f as buildEmailLayoutExtensions
109
- };
110
- //# sourceMappingURL=EmailLayoutExtensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmailLayoutExtensions.js","sources":["../../../../../src/editor/extensions/emailLayout/EmailLayoutExtensions.ts"],"sourcesContent":["import { Extension, mergeAttributes, Node } from '@tiptap/core';\nimport {\n\tTable,\n\tTableCell,\n\tTableHeader,\n\tTableRow,\n} from '@tiptap/extension-table';\n\n/**\n * Lets the email editor hold email-safe layout HTML without flattening it.\n *\n * Transactional email (order cards, receipts) is built the only way email\n * clients render reliably: nested tables and divs carrying their layout as\n * inline styles. The rich-text schema has no idea what to do with that — it\n * has no table node, so `<table>` collapses to paragraphs, and every layout\n * `<div>` collapses the same way. Measured on an order card: 24 inline styles\n * in, 1 out, two tables and thirteen divs reduced to nine paragraphs.\n *\n * This adds exactly what is needed to keep that markup intact, and nothing\n * that changes how the editor behaves for anyone typing in it:\n *\n * - table / tr / td / th, from TipTap's own table extension, with the source's\n * presentational attributes (style, width, align, ...) carried through and\n * TipTap's own sizing markup (colgroup, min-width) left out — an email table\n * sizes itself; resizing handles have no meaning here.\n * - a styled `div` block, so layout containers keep their border, padding and\n * background instead of becoming paragraphs.\n * - the raw `style` attribute preserved on spans, images and links, which the\n * default marks reduce to the handful of properties they understand.\n *\n * Email only. Chat channels never carry this markup, and their editors are not\n * touched by it.\n */\n\n// Presentational attributes email markup relies on. Only what is read back\n// out is kept; the schema never invents any.\nconst PASSTHROUGH = ['style', 'width', 'height', 'align', 'valign', 'bgcolor'];\n\nconst passthroughAttributes = (names: string[]) =>\n\tObject.fromEntries(\n\t\tnames.map((name) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (el: HTMLElement) => el.getAttribute(name),\n\t\t\t\trenderHTML: (attrs: Record<string, string | null>) =>\n\t\t\t\t\tattrs[name] ? { [name]: attrs[name] } : {},\n\t\t\t},\n\t\t]),\n\t);\n\n/** `<table>` that renders as it came in: its own attributes, no colgroup. */\nexport const EmailTable = Table.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes([\n\t\t\t\t...PASSTHROUGH,\n\t\t\t\t'cellpadding',\n\t\t\t\t'cellspacing',\n\t\t\t\t'border',\n\t\t\t]),\n\t\t};\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t'table',\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t['tbody', 0],\n\t\t];\n\t},\n}).configure({ resizable: false });\n\nexport const EmailTableRow = TableRow.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes(PASSTHROUGH),\n\t\t};\n\t},\n});\n\nexport const EmailTableCell = TableCell.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes(PASSTHROUGH),\n\t\t};\n\t},\n});\n\nexport const EmailTableHeader = TableHeader.extend({\n\taddAttributes() {\n\t\treturn {\n\t\t\t...(this.parent?.() ?? {}),\n\t\t\t...passthroughAttributes(PASSTHROUGH),\n\t\t};\n\t},\n});\n\n/**\n * A `div` that keeps its presentation. Parsed at a lower priority than the\n * section divider, which is also a div and must keep winning its own markup.\n */\nexport const StyledBlockNode = Node.create({\n\tname: 'styledBlock',\n\tgroup: 'block',\n\tcontent: 'block+',\n\tdefining: true,\n\tpriority: 40,\n\taddAttributes() {\n\t\treturn passthroughAttributes(PASSTHROUGH);\n\t},\n\tparseHTML() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttag: 'div',\n\t\t\t\tgetAttrs: (el) => {\n\t\t\t\t\tconst element = el as HTMLElement;\n\t\t\t\t\t// Section dividers, and any other div carrying data-* semantics,\n\t\t\t\t\t// belong to their own nodes.\n\t\t\t\t\tif (\n\t\t\t\t\t\tArray.from(element.attributes).some((a) =>\n\t\t\t\t\t\t\ta.name.startsWith('data-'),\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// A bare div adds nothing a paragraph does not; let it flatten.\n\t\t\t\t\treturn element.hasAttribute('style') || element.hasAttribute('align')\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: false;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn ['div', mergeAttributes(HTMLAttributes), 0];\n\t},\n});\n\n/**\n * The full `style` string on spans, images and links. The default marks read\n * only the properties they model (color, font-size, ...) and drop the rest —\n * padding, border-radius, display — which is exactly what a status pill or a\n * button-styled link is made of.\n */\nexport const EmailInlineStyleExtension = Extension.create({\n\tname: 'emailInlineStyle',\n\taddGlobalAttributes() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttypes: ['textStyle', 'image', 'link'],\n\t\t\t\tattributes: {\n\t\t\t\t\temailStyle: {\n\t\t\t\t\t\tdefault: null,\n\t\t\t\t\t\tparseHTML: (el: HTMLElement) => el.getAttribute('style'),\n\t\t\t\t\t\trenderHTML: (attrs: { emailStyle?: string | null }) =>\n\t\t\t\t\t\t\tattrs.emailStyle ? { style: attrs.emailStyle } : {},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n});\n\nexport const buildEmailLayoutExtensions = () => [\n\tEmailTable,\n\tEmailTableRow,\n\tEmailTableCell,\n\tEmailTableHeader,\n\tStyledBlockNode,\n\tEmailInlineStyleExtension,\n];\n"],"names":["PASSTHROUGH","passthroughAttributes","names","name","el","attrs","EmailTable","Table","HTMLAttributes","mergeAttributes","EmailTableRow","TableRow","EmailTableCell","TableCell","EmailTableHeader","TableHeader","StyledBlockNode","Node","element","a","EmailInlineStyleExtension","Extension","buildEmailLayoutExtensions"],"mappings":";;AAoCA,MAAMA,IAAc,CAAC,SAAS,SAAS,UAAU,SAAS,UAAU,SAAS,GAEvEC,IAAwB,CAACC,MAC9B,OAAO;AAAA,EACNA,EAAM,IAAI,CAACC,MAAS;AAAA,IACnBA;AAAA,IACA;AAAA,MACC,SAAS;AAAA,MACT,WAAW,CAACC,MAAoBA,EAAG,aAAaD,CAAI;AAAA,MACpD,YAAY,CAACE,MACZA,EAAMF,CAAI,IAAI,EAAE,CAACA,CAAI,GAAGE,EAAMF,CAAI,MAAM,CAAA;AAAA,IAAC;AAAA,EAC3C,CACA;AACF,GAGYG,IAAaC,EAAM,OAAO;AAAA,EACtC,gBAAgB;AACf,WAAO;AAAA,MACN,GAAI,KAAK,SAAA,KAAc,CAAA;AAAA,MACvB,GAAGN,EAAsB;AAAA,QACxB,GAAGD;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACA;AAAA,IAAA;AAAA,EAEH;AAAA,EACA,WAAW,EAAE,gBAAAQ,KAAkB;AAC9B,WAAO;AAAA,MACN;AAAA,MACAC,EAAgB,KAAK,QAAQ,gBAAgBD,CAAc;AAAA,MAC3D,CAAC,SAAS,CAAC;AAAA,IAAA;AAAA,EAEb;AACD,CAAC,EAAE,UAAU,EAAE,WAAW,IAAO,GAEpBE,IAAgBC,EAAS,OAAO;AAAA,EAC5C,gBAAgB;AACf,WAAO;AAAA,MACN,GAAI,KAAK,SAAA,KAAc,CAAA;AAAA,MACvB,GAAGV,EAAsBD,CAAW;AAAA,IAAA;AAAA,EAEtC;AACD,CAAC,GAEYY,IAAiBC,EAAU,OAAO;AAAA,EAC9C,gBAAgB;AACf,WAAO;AAAA,MACN,GAAI,KAAK,SAAA,KAAc,CAAA;AAAA,MACvB,GAAGZ,EAAsBD,CAAW;AAAA,IAAA;AAAA,EAEtC;AACD,CAAC,GAEYc,IAAmBC,EAAY,OAAO;AAAA,EAClD,gBAAgB;AACf,WAAO;AAAA,MACN,GAAI,KAAK,SAAA,KAAc,CAAA;AAAA,MACvB,GAAGd,EAAsBD,CAAW;AAAA,IAAA;AAAA,EAEtC;AACD,CAAC,GAMYgB,IAAkBC,EAAK,OAAO;AAAA,EAC1C,MAAM;AAAA,EACN,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,gBAAgB;AACf,WAAOhB,EAAsBD,CAAW;AAAA,EACzC;AAAA,EACA,YAAY;AACX,WAAO;AAAA,MACN;AAAA,QACC,KAAK;AAAA,QACL,UAAU,CAACI,MAAO;AACjB,gBAAMc,IAAUd;AAGhB,iBACC,MAAM,KAAKc,EAAQ,UAAU,EAAE;AAAA,YAAK,CAACC,MACpCA,EAAE,KAAK,WAAW,OAAO;AAAA,UAAA,IAGnB,KAGDD,EAAQ,aAAa,OAAO,KAAKA,EAAQ,aAAa,OAAO,IACjE,OACA;AAAA,QACJ;AAAA,MAAA;AAAA,IACD;AAAA,EAEF;AAAA,EACA,WAAW,EAAE,gBAAAV,KAAkB;AAC9B,WAAO,CAAC,OAAOC,EAAgBD,CAAc,GAAG,CAAC;AAAA,EAClD;AACD,CAAC,GAQYY,IAA4BC,EAAU,OAAO;AAAA,EACzD,MAAM;AAAA,EACN,sBAAsB;AACrB,WAAO;AAAA,MACN;AAAA,QACC,OAAO,CAAC,aAAa,SAAS,MAAM;AAAA,QACpC,YAAY;AAAA,UACX,YAAY;AAAA,YACX,SAAS;AAAA,YACT,WAAW,CAACjB,MAAoBA,EAAG,aAAa,OAAO;AAAA,YACvD,YAAY,CAACC,MACZA,EAAM,aAAa,EAAE,OAAOA,EAAM,eAAe,CAAA;AAAA,UAAC;AAAA,QACpD;AAAA,MACD;AAAA,IACD;AAAA,EAEF;AACD,CAAC,GAEYiB,IAA6B,MAAM;AAAA,EAC/ChB;AAAA,EACAI;AAAA,EACAE;AAAA,EACAE;AAAA,EACAE;AAAA,EACAI;AACD;"}