@edifice.io/tiptap-extensions 2.6.10-develop-pedago.20261023145636 → 2.6.10-develop-enabling.20261023170056

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 (132) hide show
  1. package/README.md +13 -104
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/dist/abbr/abbr.cjs +2 -2
  4. package/dist/abbr/abbr.cjs.map +1 -1
  5. package/dist/abbr/abbr.js +2 -33
  6. package/dist/abbr/abbr.js.map +1 -1
  7. package/dist/alert/alert.cjs +2 -2
  8. package/dist/alert/alert.cjs.map +1 -1
  9. package/dist/alert/alert.js +2 -45
  10. package/dist/alert/alert.js.map +1 -1
  11. package/dist/attachment/attachment-transformer.cjs +2 -2
  12. package/dist/attachment/attachment-transformer.cjs.map +1 -1
  13. package/dist/attachment/attachment-transformer.js +2 -76
  14. package/dist/attachment/attachment-transformer.js.map +1 -1
  15. package/dist/attachment/attachment.cjs +2 -2
  16. package/dist/attachment/attachment.cjs.map +1 -1
  17. package/dist/attachment/attachment.js +2 -98
  18. package/dist/attachment/attachment.js.map +1 -1
  19. package/dist/audio/audio.cjs +2 -2
  20. package/dist/audio/audio.cjs.map +1 -1
  21. package/dist/audio/audio.js +3 -52
  22. package/dist/audio/audio.js.map +1 -1
  23. package/dist/conversation-history/conversation-history.cjs +2 -2
  24. package/dist/conversation-history/conversation-history.cjs.map +1 -1
  25. package/dist/conversation-history/conversation-history.js +2 -63
  26. package/dist/conversation-history/conversation-history.js.map +1 -1
  27. package/dist/conversation-history-body/conversation-history-body.cjs +2 -2
  28. package/dist/conversation-history-body/conversation-history-body.cjs.map +1 -1
  29. package/dist/conversation-history-body/conversation-history-body.js +2 -24
  30. package/dist/conversation-history-body/conversation-history-body.js.map +1 -1
  31. package/dist/font-size/font-size.cjs +2 -2
  32. package/dist/font-size/font-size.cjs.map +1 -1
  33. package/dist/font-size/font-size.js +2 -39
  34. package/dist/font-size/font-size.js.map +1 -1
  35. package/dist/heading/heading.cjs +2 -2
  36. package/dist/heading/heading.cjs.map +1 -1
  37. package/dist/heading/heading.js +2 -52
  38. package/dist/heading/heading.js.map +1 -1
  39. package/dist/highlight/highlight.cjs +2 -2
  40. package/dist/highlight/highlight.cjs.map +1 -1
  41. package/dist/highlight/highlight.js +2 -28
  42. package/dist/highlight/highlight.js.map +1 -1
  43. package/dist/hyperlink/hyperlink.cjs +2 -2
  44. package/dist/hyperlink/hyperlink.cjs.map +1 -1
  45. package/dist/hyperlink/hyperlink.js +2 -53
  46. package/dist/hyperlink/hyperlink.js.map +1 -1
  47. package/dist/iframe/iframe.cjs +2 -2
  48. package/dist/iframe/iframe.cjs.map +1 -1
  49. package/dist/iframe/iframe.js +2 -70
  50. package/dist/iframe/iframe.js.map +1 -1
  51. package/dist/iframe/transformers/index.cjs +2 -2
  52. package/dist/iframe/transformers/index.cjs.map +1 -1
  53. package/dist/iframe/transformers/index.js +2 -22
  54. package/dist/iframe/transformers/index.js.map +1 -1
  55. package/dist/iframe/transformers/pad-transformer.cjs +2 -2
  56. package/dist/iframe/transformers/pad-transformer.cjs.map +1 -1
  57. package/dist/iframe/transformers/pad-transformer.js +2 -24
  58. package/dist/iframe/transformers/pad-transformer.js.map +1 -1
  59. package/dist/image/image.cjs +2 -2
  60. package/dist/image/image.cjs.map +1 -1
  61. package/dist/image/image.d.ts +7 -0
  62. package/dist/image/image.js +2 -173
  63. package/dist/image/image.js.map +1 -1
  64. package/dist/index.cjs +1 -2
  65. package/dist/index.js +1 -52
  66. package/dist/information-pane/information-pane.cjs +2 -2
  67. package/dist/information-pane/information-pane.cjs.map +1 -1
  68. package/dist/information-pane/information-pane.js +2 -57
  69. package/dist/information-pane/information-pane.js.map +1 -1
  70. package/dist/line-height/line-height.cjs +2 -2
  71. package/dist/line-height/line-height.cjs.map +1 -1
  72. package/dist/line-height/line-height.js +2 -33
  73. package/dist/line-height/line-height.js.map +1 -1
  74. package/dist/linker/linker.cjs +2 -2
  75. package/dist/linker/linker.cjs.map +1 -1
  76. package/dist/linker/linker.js +2 -95
  77. package/dist/linker/linker.js.map +1 -1
  78. package/dist/mathjax/mathjax.cjs +2 -2
  79. package/dist/mathjax/mathjax.cjs.map +1 -1
  80. package/dist/mathjax/mathjax.js +2 -40
  81. package/dist/mathjax/mathjax.js.map +1 -1
  82. package/dist/paragraph/paragraph.cjs +2 -2
  83. package/dist/paragraph/paragraph.cjs.map +1 -1
  84. package/dist/paragraph/paragraph.js +2 -16
  85. package/dist/paragraph/paragraph.js.map +1 -1
  86. package/dist/speech-recognition/speech-recognition.cjs +2 -2
  87. package/dist/speech-recognition/speech-recognition.cjs.map +1 -1
  88. package/dist/speech-recognition/speech-recognition.js +2 -56
  89. package/dist/speech-recognition/speech-recognition.js.map +1 -1
  90. package/dist/speech-synthesis/speech-synthesis.cjs +2 -2
  91. package/dist/speech-synthesis/speech-synthesis.cjs.map +1 -1
  92. package/dist/speech-synthesis/speech-synthesis.js +2 -25
  93. package/dist/speech-synthesis/speech-synthesis.js.map +1 -1
  94. package/dist/table-cell/table-cell.cjs +2 -2
  95. package/dist/table-cell/table-cell.cjs.map +1 -1
  96. package/dist/table-cell/table-cell.d.ts +1 -1
  97. package/dist/table-cell/table-cell.js +2 -23
  98. package/dist/table-cell/table-cell.js.map +1 -1
  99. package/dist/transform/html-to-json/html-to-json.cjs +2 -2
  100. package/dist/transform/html-to-json/html-to-json.cjs.map +1 -1
  101. package/dist/transform/html-to-json/html-to-json.js +2 -6
  102. package/dist/transform/html-to-json/html-to-json.js.map +1 -1
  103. package/dist/transform/json-to-html/json-to-html.cjs +2 -2
  104. package/dist/transform/json-to-html/json-to-html.cjs.map +1 -1
  105. package/dist/transform/json-to-html/json-to-html.js +2 -6
  106. package/dist/transform/json-to-html/json-to-html.js.map +1 -1
  107. package/dist/video/video.cjs +3 -3
  108. package/dist/video/video.cjs.map +1 -1
  109. package/dist/video/video.js +3 -92
  110. package/dist/video/video.js.map +1 -1
  111. package/package.json +34 -55
  112. package/dist/abbr/abbr.spec.d.ts +0 -1
  113. package/dist/alert/alert.spec.d.ts +0 -1
  114. package/dist/attachment/attachment.spec.d.ts +0 -1
  115. package/dist/audio/audio.spec.d.ts +0 -1
  116. package/dist/conversation-history/conversation-history.spec.d.ts +0 -1
  117. package/dist/conversation-history-body/conversation-history-body.spec.d.ts +0 -1
  118. package/dist/font-size/font-size.spec.d.ts +0 -1
  119. package/dist/heading/heading.spec.d.ts +0 -1
  120. package/dist/highlight/highlight.spec.d.ts +0 -1
  121. package/dist/hyperlink/hyperlink.spec.d.ts +0 -1
  122. package/dist/iframe/iframe.spec.d.ts +0 -1
  123. package/dist/image/image.spec.d.ts +0 -1
  124. package/dist/index.cjs.map +0 -1
  125. package/dist/index.js.map +0 -1
  126. package/dist/information-pane/information-pane.spec.d.ts +0 -1
  127. package/dist/line-height/line-height.spec.d.ts +0 -1
  128. package/dist/linker/linker.spec.d.ts +0 -1
  129. package/dist/mathjax/mathjax.spec.d.ts +0 -1
  130. package/dist/paragraph/paragraph.spec.d.ts +0 -1
  131. package/dist/table-cell/table-cell.spec.d.ts +0 -1
  132. package/dist/video/video.spec.d.ts +0 -1
package/README.md CHANGED
@@ -3,16 +3,16 @@
3
3
  ![npm](https://img.shields.io/npm/v/@edifice.io/tiptap-extensions?style=flat-square)
4
4
  ![bundlephobia](https://img.shields.io/bundlephobia/min/@edifice.io/tiptap-extensions?style=flat-square)
5
5
 
6
- Extensions basées sur [Tiptap Editor](https://tiptap.dev/). Étend les fonctionnalités de l'éditeur.
6
+ Extensions based on [Tiptap Editor](https://tiptap.dev/). Extends functionalities of the editor.
7
7
 
8
- ## Prérequis
8
+ ## Prerequisites
9
9
 
10
10
  - `pnpm: >= 9`
11
11
  - `node: >= 20`
12
12
 
13
- ## Démarrage
13
+ ## Getting Started
14
14
 
15
- ### Installation
15
+ ### Install
16
16
 
17
17
  ```bash
18
18
  pnpm add @edifice.io/tiptap-extensions
@@ -26,114 +26,23 @@ pnpm add @edifice.io/tiptap-extensions
26
26
  import { Alert, Video } from "@edifice.io/tiptap-extensions"
27
27
  ```
28
28
 
29
- #### Imports ciblés
29
+ #### Sub-imports
30
30
 
31
31
  ```bash
32
32
  import { Alert } from "@edifice.io/tiptap-extensions/alert"
33
33
  ```
34
34
 
35
- ## Tests
36
-
37
- Chaque extension est testée contre les formes HTML réelles qu'elle doit parser et rendre — format
38
- actuel et formats legacy quand c'est pertinent — en utilisant `generateJSON`/`generateHTML` de
39
- `@tiptap/core` (les mêmes fonctions que `src/transform/` expose en production) sous `jsdom`, qui se
40
- comporte comme un vrai navigateur. Les tests sont colocalisés avec leur extension :
41
- `src/<nom>/<nom>.spec.ts`.
42
-
43
- Pour chaque extension, quand c'est pertinent :
44
-
45
- 1. **HTML → JSON** : la ou les formes HTML réelles (actuelle et legacy) se parsent dans le bon type de
46
- nœud/mark avec les bons attributs.
47
- 2. **JSON → HTML** : le rendu d'un document stocké produit le HTML attendu.
48
-
49
- Contrairement à la suite golden-fixture d'`edifice-tiptap-transformer` (qui fige un snapshot JSON v2
50
- externe pour comparer), chaque test ici écrit son HTML/JSON attendu directement en dur dans le fichier :
51
- il n'y a pas de "snapshot v2 navigateur" préexistant à comparer, et tester une extension isolément
52
- (pas 20 combinées) rend une assertion écrite à la main à la fois fiable et facile à lire.
53
-
54
- Un smoke test séparé, `packages/react/src/modules/editor/hooks/useTipTapEditor.spec.tsx`, combine un
55
- exemple de chaque extension réellement branchée dans l'éditeur réel (un "kitchen sink", sur le même
56
- principe que celui du backend) — c'est lui qui attrape les interactions *entre* extensions (ex. un nom
57
- dupliqué entre deux kits) qu'un test par extension isolée ne peut pas voir.
58
-
59
- ### Extensions couvertes
60
-
61
- | Extension | Ce qui est testé |
62
- |---|---|
63
- | `heading`, `hyperlink` | ne sont pas masquées par les `heading`/`link` que StarterKit v3 embarque désormais par défaut |
64
- | `linker` | distinction avec un lien simple via `data-id`+`data-app-prefix` ; sanitization du `href` `javascript:` ; également masqué par le `link` de StarterKit si non désactivé |
65
- | `paragraph` | forme legacy `div[style]:has(> span)` *(exportée, non branchée dans l'éditeur actuellement)* |
66
- | `alert` | balises legacy `p.info`/`div.warning`/`div.info` |
67
- | `highlight` (CustomHighlight) | style `background-color` → attribut `color` |
68
- | `abbr` | mark `<abbr>` |
69
- | `mathjax` | extraction/rendu de l'équation *(exportée pour le contenu legacy ; l'éditeur réel utilise `@tiptap/extension-mathematics` à la place)* |
70
- | `image` (custom-image) | largeur héritée du conteneur legacy `.image-container`, détection "smiley" legacy, attributs standards, URI `data:` ignorées |
71
- | `video` | coercion de `controls` (attribut nu vs chaîne `"true"` vs absent), indicateur de captation |
72
- | `audio` | `src`/`documentId`, balisage du conteneur |
73
- | `iframe` | `width: "100%"` conservé tel quel vs une largeur numérique convertie en nombre, défaut d'`allowfullscreen` |
74
- | `information-pane` | `type` via `data-type`, défaut `info` |
75
- | `attachment` | parse les `<a>` enfants en `links[]`, retombe sur le dernier segment du `href` pour l'identifiant du document |
76
- | `conversation-history` | le plugin ProseMirror qui regroupe tout ce qui suit un `<hr>` (nécessite une vraie instance `Editor`/transaction, pas juste `generateJSON` — le `content` initial seul ne le déclenche pas) |
77
- | `conversation-history-body` | parse/rendu simple |
78
- | `font-size`, `line-height`, `table-cell` | comportement actuel, **y compris** le défaut préexistant `""` au lieu de `null` pour une valeur non définie (même cause racine que `StyleCompat.ts` côté backend, non introduite par cette migration, non corrigée ici — voir le commentaire de chaque spec) |
79
-
80
- `line-height` est exportée mais non branchée actuellement dans `useTipTapEditor.ts`.
81
-
82
- **Volontairement non couvertes** : `speech-recognition` et `speech-synthesis` n'ont aucune logique
83
- `parseHTML`/`renderHTML` — elles ne font que piloter les API navigateur `SpeechRecognition`/
84
- `speechSynthesis` et n'ont aucun effet sur le contenu du document, donc hors du périmètre de cette suite
85
- de sérialisation de contenu. `attachment-transformer.ts` (`AttachmentTransformer`) est backend-only —
86
- l'éditeur réel utilise `Attachment` d'`attachment.ts` (confirmé via `AttachmentNodeView.tsx`).
87
-
88
- ### Ajouter un test pour une nouvelle extension
89
-
90
- 1. Créer `src/<nom>/<nom>.spec.ts` à côté de l'extension.
91
- 2. Écrire le HTML que le `parseHTML` de l'extension est censé reconnaître (format actuel, et tout
92
- format legacy encore supporté), et vérifier le type de nœud/mark et les attributs obtenus avec
93
- `generateJSON`.
94
- 3. Si l'extension produit un rendu non trivial, vérifier que `generateHTML` sur un JSON écrit à la main
95
- produit le HTML attendu.
96
- 4. Si l'extension est branchée dans `useTipTapEditor.ts`, ajouter un court exemple représentatif au
97
- contenu kitchen-sink de `useTipTapEditor.spec.tsx` aussi.
98
-
99
- ### Lancer les tests
35
+ ## New extension
100
36
 
101
- ```bash
102
- pnpm --filter @edifice.io/react test
103
- pnpm --filter @edifice.io/tiptap-extensions test
104
- ```
105
-
106
- ## Régressions de la migration v2 → v3
107
-
108
- Le passage à TipTap v3 a introduit plusieurs régressions dans `packages/extensions` et
109
- `packages/react` (l'éditeur réel), toutes trouvées grâce à la suite de tests ci-dessus et
110
- corrigées. Listées ici pour référence — chaque fichier porte un commentaire court expliquant le
111
- bug précis.
112
-
113
- | Régression | Corrigé dans |
114
- |---|---|
115
- | Import brut `prosemirror-state` au lieu de `@tiptap/pm/state` — risque une seconde instance ProseMirror incompatible | `src/image/image.ts`, `src/conversation-history/conversation-history.ts` |
116
- | `@tiptap/extension-table-header`/`-row` n'existent plus en paquets séparés en v3 (fusionnés dans `@tiptap/extension-table`) | `packages/react/.../test-utils/createTestEditor.ts` |
117
- | `StarterKit` nu entre en collision avec son `heading`/`underline`/`link` embarqués par défaut en v3, masquant nos extensions custom | `useTipTapEditor.ts`, `useCommentEditor.ts`, `createTestEditor.ts`, `EditorToolbar.spec.tsx` |
118
- | `TextStyleKit` nu entre en collision avec les `Color`/`FontFamily`/`FontSize` ajoutés séparément | `useTipTapEditor.ts` |
119
- | L'extension undo/redo de StarterKit a été renommée de `history` à `undoRedo` en v3 — `hasExtension('history', ...)` renvoyait toujours faux | `EditorToolbar.tsx` |
120
- | `TextStyle` de `@tiptap/extension-text-style` a perdu son export par défaut en v3 | plusieurs `EditorToolbar.*.spec.tsx`, `has-text-style.spec.ts` |
121
- | `FloatingMenu`/`BubbleMenu` ont déménagé de `@tiptap/react` vers `@tiptap/react/menus` | `TableToolbar.spec.tsx`, `LinkToolbar.spec.tsx`, `BubbleMenuEditImage.spec.tsx`, `BubbleMenuEditInformationPane.spec.tsx` |
122
- | `setContent` émet désormais `'update'` par défaut (pas en v2), déclenchant `onContentChange` sur une synchronisation programmatique, pas seulement sur une vraie édition | `useTipTapEditor.ts` |
123
- | Le bouton fusionner/scinder de `TableToolbar` restait périmé sur un simple déplacement de sélection : le hook partagé `useEditorState` n'écoutait que `'update'` (changements de contenu), pas les changements de sélection | `useEditorState.ts`, `TableToolbar.tsx` |
124
- | Propriété `keepOnSplit` morte sur une config de `Node` (valide uniquement sur les `Mark`) — inoffensif mais faisait échouer `tsc` | `src/linker/linker.ts` |
125
-
126
- ## Nouvelle extension
127
-
128
- Pour créer une nouvelle extension, procéder comme suit :
37
+ To create a new extension, please do as follow :
129
38
 
130
- - Créer un sous-dossier dans `src` avec le nom de l'extension (ex : `my-extension`)
39
+ - Create a subfolder in `src` with the name of the extension (e.g: `my-extension`)
131
40
 
132
41
  ```
133
42
  my-extension
134
43
  ```
135
44
 
136
- - Créer deux fichiers dans ce nouveau dossier :
45
+ - Create two files inside the new folder:
137
46
  - `index.ts`
138
47
  - `my-extension.ts`
139
48
 
@@ -143,8 +52,8 @@ my-extension
143
52
  └── index.ts
144
53
  ```
145
54
 
146
- - Consulter une extension existante ou se référer à la [documentation officielle](https://tiptap.dev/docs/editor/extensions/custom-extensions) pour développer une extension.
147
- - Ajouter ensuite l'extension dans les sub-exports du `package.json`, par ordre alphabétique.
55
+ - Check one existing extension or refer to the official [documentation](https://tiptap.dev/docs/editor/extensions/custom-extensions) to develop an extension.
56
+ - Then, add your extension in the `package.json` sub-exports in alphabetical order.
148
57
 
149
58
  ```
150
59
  "./my-extension": {
@@ -153,5 +62,5 @@ my-extension
153
62
  }
154
63
  ```
155
64
 
156
- - Lancer `pnpm run build` pour générer un bundle
157
- - Ajouter des tests avant de committer et pousser sur le dépôt distant — voir "Tests" ci-dessus
65
+ - Run `pnpm run build` to generate a bundle
66
+ - Test your extension before committing and pushing to remote
@@ -0,0 +1 @@
1
+ var __create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__copyProps=(to,from,except,desc)=>{if(from&&typeof from==`object`||typeof from==`function`)for(var keys=__getOwnPropNames(from),i=0,n=keys.length,key;i<n;i++)key=keys[i],!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:(k=>from[k]).bind(null,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toESM=(mod,isNodeMode,target)=>(target=mod==null?{}:__create(__getProtoOf(mod)),__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,`default`,{value:mod,enumerable:!0}):target,mod));exports.__toESM=__toESM;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@tiptap/core"),Abbr=core.Mark.create({name:"abbr",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"abbr"}]},renderHTML({HTMLAttributes}){return["abbr",core.mergeAttributes(this.options.HTMLAttributes,HTMLAttributes),0]},addCommands(){return{setAbbr:()=>({commands})=>commands.setMark(this.name),toggleAbbr:()=>({commands})=>commands.toggleMark(this.name)}}});exports.Abbr=Abbr;
2
- //# sourceMappingURL=abbr.cjs.map
1
+ let _tiptap_core=require("@tiptap/core");var Abbr=_tiptap_core.Mark.create({name:`abbr`,addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:`abbr`}]},renderHTML({HTMLAttributes}){return[`abbr`,(0,_tiptap_core.mergeAttributes)(this.options.HTMLAttributes,HTMLAttributes),0]},addCommands(){return{setAbbr:()=>({commands})=>commands.setMark(this.name),toggleAbbr:()=>({commands})=>commands.toggleMark(this.name)}}});exports.Abbr=Abbr;
2
+ //# sourceMappingURL=abbr.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"abbr.cjs","sources":["../../src/abbr/abbr.ts"],"sourcesContent":["import { Mark, mergeAttributes } from '@tiptap/core';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n abbr: {\n /**\n * Set an abbr mark\n */\n setAbbr: (src: string) => ReturnType;\n /**\n * Toggle an abbr mark\n */\n toggleAbbr: (src: string) => ReturnType;\n };\n }\n}\n\nexport const Abbr = Mark.create({\n name: 'abbr',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'abbr',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'abbr',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addCommands() {\n return {\n setAbbr:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleAbbr:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n };\n },\n});\n"],"names":["Mark","mergeAttributes"],"mappings":"mHAiBa,KAAOA,KAAAA,KAAK,OAAO,CAC9B,KAAM,OAEN,YAAa,CACX,MAAO,CACL,eAAgB,CAAA,CAAC,CAErB,EAEA,WAAY,CACV,MAAO,CACL,CACE,IAAK,MAAA,CACP,CAEJ,EAEA,WAAW,CAAE,gBAAkB,CAC7B,MAAO,CACL,OACAC,KAAAA,gBAAgB,KAAK,QAAQ,eAAgB,cAAc,EAC3D,CAAA,CAEJ,EAEA,aAAc,CACZ,MAAO,CACL,QACE,IACA,CAAC,CAAE,YACM,SAAS,QAAQ,KAAK,IAAI,EAErC,WACE,IACA,CAAC,CAAE,YACM,SAAS,WAAW,KAAK,IAAI,CACtC,CAEN,CACF,CAAC"}
1
+ {"version":3,"file":"abbr.cjs","names":[],"sources":["../../src/abbr/abbr.ts"],"sourcesContent":["import { Mark, mergeAttributes } from '@tiptap/core';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n abbr: {\n /**\n * Set an abbr mark\n */\n setAbbr: (src: string) => ReturnType;\n /**\n * Toggle an abbr mark\n */\n toggleAbbr: (src: string) => ReturnType;\n };\n }\n}\n\nexport const Abbr = Mark.create({\n name: 'abbr',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'abbr',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'abbr',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addCommands() {\n return {\n setAbbr:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleAbbr:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n };\n },\n});\n"],"mappings":"yCAiBA,IAAa,KAAO,aAAA,KAAK,OAAO,CAC9B,KAAM,OAEN,YAAa,CACX,MAAO,CACL,eAAgB,CAAC,CACnB,CACF,EAEA,WAAY,CACV,MAAO,CACL,CACE,IAAK,MACP,CACF,CACF,EAEA,WAAW,CAAE,gBAAkB,CAC7B,MAAO,CACL,wCACgB,KAAK,QAAQ,eAAgB,cAAc,EAC3D,CACF,CACF,EAEA,aAAc,CACZ,MAAO,CACL,aAEG,CAAE,YACM,SAAS,QAAQ,KAAK,IAAI,EAErC,gBAEG,CAAE,YACM,SAAS,WAAW,KAAK,IAAI,CAE1C,CACF,CACF,CAAC"}
package/dist/abbr/abbr.js CHANGED
@@ -1,33 +1,2 @@
1
- import { Mark, mergeAttributes } from "@tiptap/core";
2
- const Abbr = Mark.create({
3
- name: "abbr",
4
- addOptions() {
5
- return {
6
- HTMLAttributes: {}
7
- };
8
- },
9
- parseHTML() {
10
- return [
11
- {
12
- tag: "abbr"
13
- }
14
- ];
15
- },
16
- renderHTML({ HTMLAttributes }) {
17
- return [
18
- "abbr",
19
- mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
20
- 0
21
- ];
22
- },
23
- addCommands() {
24
- return {
25
- setAbbr: () => ({ commands }) => commands.setMark(this.name),
26
- toggleAbbr: () => ({ commands }) => commands.toggleMark(this.name)
27
- };
28
- }
29
- });
30
- export {
31
- Abbr
32
- };
33
- //# sourceMappingURL=abbr.js.map
1
+ import{Mark,mergeAttributes}from"@tiptap/core";var Abbr=Mark.create({name:`abbr`,addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:`abbr`}]},renderHTML({HTMLAttributes}){return[`abbr`,mergeAttributes(this.options.HTMLAttributes,HTMLAttributes),0]},addCommands(){return{setAbbr:()=>({commands})=>commands.setMark(this.name),toggleAbbr:()=>({commands})=>commands.toggleMark(this.name)}}});export{Abbr};
2
+ //# sourceMappingURL=abbr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abbr.js","sources":["../../src/abbr/abbr.ts"],"sourcesContent":["import { Mark, mergeAttributes } from '@tiptap/core';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n abbr: {\n /**\n * Set an abbr mark\n */\n setAbbr: (src: string) => ReturnType;\n /**\n * Toggle an abbr mark\n */\n toggleAbbr: (src: string) => ReturnType;\n };\n }\n}\n\nexport const Abbr = Mark.create({\n name: 'abbr',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'abbr',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'abbr',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addCommands() {\n return {\n setAbbr:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleAbbr:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n };\n },\n});\n"],"names":[],"mappings":";AAiBO,MAAM,OAAO,KAAK,OAAO;AAAA,EAC9B,MAAM;AAAA,EAEN,aAAa;AACX,WAAO;AAAA,MACL,gBAAgB,CAAA;AAAA,IAAC;AAAA,EAErB;AAAA,EAEA,YAAY;AACV,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,MAAA;AAAA,IACP;AAAA,EAEJ;AAAA,EAEA,WAAW,EAAE,kBAAkB;AAC7B,WAAO;AAAA,MACL;AAAA,MACA,gBAAgB,KAAK,QAAQ,gBAAgB,cAAc;AAAA,MAC3D;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,cAAc;AACZ,WAAO;AAAA,MACL,SACE,MACA,CAAC,EAAE,eACM,SAAS,QAAQ,KAAK,IAAI;AAAA,MAErC,YACE,MACA,CAAC,EAAE,eACM,SAAS,WAAW,KAAK,IAAI;AAAA,IACtC;AAAA,EAEN;AACF,CAAC;"}
1
+ {"version":3,"file":"abbr.js","names":[],"sources":["../../src/abbr/abbr.ts"],"sourcesContent":["import { Mark, mergeAttributes } from '@tiptap/core';\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n abbr: {\n /**\n * Set an abbr mark\n */\n setAbbr: (src: string) => ReturnType;\n /**\n * Toggle an abbr mark\n */\n toggleAbbr: (src: string) => ReturnType;\n };\n }\n}\n\nexport const Abbr = Mark.create({\n name: 'abbr',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'abbr',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'abbr',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addCommands() {\n return {\n setAbbr:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleAbbr:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n };\n },\n});\n"],"mappings":"+CAiBA,IAAa,KAAO,KAAK,OAAO,CAC9B,KAAM,OAEN,YAAa,CACX,MAAO,CACL,eAAgB,CAAC,CACnB,CACF,EAEA,WAAY,CACV,MAAO,CACL,CACE,IAAK,MACP,CACF,CACF,EAEA,WAAW,CAAE,gBAAkB,CAC7B,MAAO,CACL,OACA,gBAAgB,KAAK,QAAQ,eAAgB,cAAc,EAC3D,CACF,CACF,EAEA,aAAc,CACZ,MAAO,CACL,aAEG,CAAE,YACM,SAAS,QAAQ,KAAK,IAAI,EAErC,gBAEG,CAAE,YACM,SAAS,WAAW,KAAK,IAAI,CAE1C,CACF,CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@tiptap/core"),Alert=core.Node.create({name:"alert",content:"inline+",marks:"",group:"block",inline:!1,selectable:!0,draggable:!0,parseHTML(){return[{tag:"p.info",priority:60},{tag:"p.warning",priority:60},{tag:"div.info",priority:60},{tag:"div.warning",priority:60}]},addAttributes(){return{class:{default:"info",parseHTML:element=>element.getAttribute("class")}}},renderHTML({HTMLAttributes}){return["div",HTMLAttributes,0]}});exports.Alert=Alert;
2
- //# sourceMappingURL=alert.cjs.map
1
+ var Alert=require("@tiptap/core").Node.create({name:`alert`,content:`inline+`,marks:``,group:`block`,inline:!1,selectable:!0,draggable:!0,parseHTML(){return[{tag:`p.info`,priority:60},{tag:`p.warning`,priority:60},{tag:`div.info`,priority:60},{tag:`div.warning`,priority:60}]},addAttributes(){return{class:{default:`info`,parseHTML:element=>element.getAttribute(`class`)}}},renderHTML({HTMLAttributes}){return[`div`,HTMLAttributes,0]}});exports.Alert=Alert;
2
+ //# sourceMappingURL=alert.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.cjs","sources":["../../src/alert/alert.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport const Alert = Node.create({\n name: 'alert',\n content: 'inline+',\n marks: '',\n group: 'block',\n\n inline: false,\n selectable: true,\n draggable: true,\n\n parseHTML() {\n return [\n {\n tag: 'p.info',\n priority: 60,\n },\n {\n tag: 'p.warning',\n priority: 60,\n },\n {\n tag: 'div.info',\n priority: 60,\n },\n {\n tag: 'div.warning',\n priority: 60,\n },\n ];\n },\n addAttributes() {\n return {\n class: {\n default: 'info',\n parseHTML: (element) => {\n return element.getAttribute('class');\n },\n },\n };\n },\n renderHTML({ HTMLAttributes }) {\n return ['div', HTMLAttributes, 0];\n },\n});\n"],"names":["Node"],"mappings":"mHAEa,MAAQA,KAAAA,KAAK,OAAO,CAC/B,KAAM,QACN,QAAS,UACT,MAAO,GACP,MAAO,QAEP,OAAQ,GACR,WAAY,GACZ,UAAW,GAEX,WAAY,CACV,MAAO,CACL,CACE,IAAK,SACL,SAAU,EAAA,EAEZ,CACE,IAAK,YACL,SAAU,EAAA,EAEZ,CACE,IAAK,WACL,SAAU,EAAA,EAEZ,CACE,IAAK,cACL,SAAU,EAAA,CACZ,CAEJ,EACA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,OACT,UAAY,SACH,QAAQ,aAAa,OAAO,CACrC,CACF,CAEJ,EACA,WAAW,CAAE,gBAAkB,CAC7B,MAAO,CAAC,MAAO,eAAgB,CAAC,CAClC,CACF,CAAC"}
1
+ {"version":3,"file":"alert.cjs","names":[],"sources":["../../src/alert/alert.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport const Alert = Node.create({\n name: 'alert',\n content: 'inline+',\n marks: '',\n group: 'block',\n\n inline: false,\n selectable: true,\n draggable: true,\n\n parseHTML() {\n return [\n {\n tag: 'p.info',\n priority: 60,\n },\n {\n tag: 'p.warning',\n priority: 60,\n },\n {\n tag: 'div.info',\n priority: 60,\n },\n {\n tag: 'div.warning',\n priority: 60,\n },\n ];\n },\n addAttributes() {\n return {\n class: {\n default: 'info',\n parseHTML: (element) => {\n return element.getAttribute('class');\n },\n },\n };\n },\n renderHTML({ HTMLAttributes }) {\n return ['div', HTMLAttributes, 0];\n },\n});\n"],"mappings":"AAEA,IAAa,4BAAQ,EAAA,KAAK,OAAO,CAC/B,KAAM,QACN,QAAS,UACT,MAAO,GACP,MAAO,QAEP,OAAQ,GACR,WAAY,GACZ,UAAW,GAEX,WAAY,CACV,MAAO,CACL,CACE,IAAK,SACL,SAAU,EACZ,EACA,CACE,IAAK,YACL,SAAU,EACZ,EACA,CACE,IAAK,WACL,SAAU,EACZ,EACA,CACE,IAAK,cACL,SAAU,EACZ,CACF,CACF,EACA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,OACT,UAAY,SACH,QAAQ,aAAa,OAAO,CAEvC,CACF,CACF,EACA,WAAW,CAAE,gBAAkB,CAC7B,MAAO,CAAC,MAAO,eAAgB,CAAC,CAClC,CACF,CAAC"}
@@ -1,45 +1,2 @@
1
- import { Node } from "@tiptap/core";
2
- const Alert = Node.create({
3
- name: "alert",
4
- content: "inline+",
5
- marks: "",
6
- group: "block",
7
- inline: !1,
8
- selectable: !0,
9
- draggable: !0,
10
- parseHTML() {
11
- return [
12
- {
13
- tag: "p.info",
14
- priority: 60
15
- },
16
- {
17
- tag: "p.warning",
18
- priority: 60
19
- },
20
- {
21
- tag: "div.info",
22
- priority: 60
23
- },
24
- {
25
- tag: "div.warning",
26
- priority: 60
27
- }
28
- ];
29
- },
30
- addAttributes() {
31
- return {
32
- class: {
33
- default: "info",
34
- parseHTML: (element) => element.getAttribute("class")
35
- }
36
- };
37
- },
38
- renderHTML({ HTMLAttributes }) {
39
- return ["div", HTMLAttributes, 0];
40
- }
41
- });
42
- export {
43
- Alert
44
- };
45
- //# sourceMappingURL=alert.js.map
1
+ import{Node}from"@tiptap/core";var Alert=Node.create({name:`alert`,content:`inline+`,marks:``,group:`block`,inline:!1,selectable:!0,draggable:!0,parseHTML(){return[{tag:`p.info`,priority:60},{tag:`p.warning`,priority:60},{tag:`div.info`,priority:60},{tag:`div.warning`,priority:60}]},addAttributes(){return{class:{default:`info`,parseHTML:element=>element.getAttribute(`class`)}}},renderHTML({HTMLAttributes}){return[`div`,HTMLAttributes,0]}});export{Alert};
2
+ //# sourceMappingURL=alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sources":["../../src/alert/alert.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport const Alert = Node.create({\n name: 'alert',\n content: 'inline+',\n marks: '',\n group: 'block',\n\n inline: false,\n selectable: true,\n draggable: true,\n\n parseHTML() {\n return [\n {\n tag: 'p.info',\n priority: 60,\n },\n {\n tag: 'p.warning',\n priority: 60,\n },\n {\n tag: 'div.info',\n priority: 60,\n },\n {\n tag: 'div.warning',\n priority: 60,\n },\n ];\n },\n addAttributes() {\n return {\n class: {\n default: 'info',\n parseHTML: (element) => {\n return element.getAttribute('class');\n },\n },\n };\n },\n renderHTML({ HTMLAttributes }) {\n return ['div', HTMLAttributes, 0];\n },\n});\n"],"names":[],"mappings":";AAEO,MAAM,QAAQ,KAAK,OAAO;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EAEX,YAAY;AACV,WAAO;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,KAAK;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,KAAK;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,KAAK;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EAEJ;AAAA,EACA,gBAAgB;AACd,WAAO;AAAA,MACL,OAAO;AAAA,QACL,SAAS;AAAA,QACT,WAAW,CAAC,YACH,QAAQ,aAAa,OAAO;AAAA,MACrC;AAAA,IACF;AAAA,EAEJ;AAAA,EACA,WAAW,EAAE,kBAAkB;AAC7B,WAAO,CAAC,OAAO,gBAAgB,CAAC;AAAA,EAClC;AACF,CAAC;"}
1
+ {"version":3,"file":"alert.js","names":[],"sources":["../../src/alert/alert.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport const Alert = Node.create({\n name: 'alert',\n content: 'inline+',\n marks: '',\n group: 'block',\n\n inline: false,\n selectable: true,\n draggable: true,\n\n parseHTML() {\n return [\n {\n tag: 'p.info',\n priority: 60,\n },\n {\n tag: 'p.warning',\n priority: 60,\n },\n {\n tag: 'div.info',\n priority: 60,\n },\n {\n tag: 'div.warning',\n priority: 60,\n },\n ];\n },\n addAttributes() {\n return {\n class: {\n default: 'info',\n parseHTML: (element) => {\n return element.getAttribute('class');\n },\n },\n };\n },\n renderHTML({ HTMLAttributes }) {\n return ['div', HTMLAttributes, 0];\n },\n});\n"],"mappings":"+BAEA,IAAa,MAAQ,KAAK,OAAO,CAC/B,KAAM,QACN,QAAS,UACT,MAAO,GACP,MAAO,QAEP,OAAQ,GACR,WAAY,GACZ,UAAW,GAEX,WAAY,CACV,MAAO,CACL,CACE,IAAK,SACL,SAAU,EACZ,EACA,CACE,IAAK,YACL,SAAU,EACZ,EACA,CACE,IAAK,WACL,SAAU,EACZ,EACA,CACE,IAAK,cACL,SAAU,EACZ,CACF,CACF,EACA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,OACT,UAAY,SACH,QAAQ,aAAa,OAAO,CAEvC,CACF,CACF,EACA,WAAW,CAAE,gBAAkB,CAC7B,MAAO,CAAC,MAAO,eAAgB,CAAC,CAClC,CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@tiptap/core"),AttachmentTransformer=core.Node.create({name:"attachments",content:"",marks:"",group:"inline",inline:!0,selectable:!0,atom:!0,draggable:!0,addOptions(){return{HTMLAttributes:{class:"attachments"}}},parseHTML(){return[{tag:"div[class=attachments]"}]},renderHTML({HTMLAttributes}){const renderedLinks=HTMLAttributes.links.map(el=>["a",{name:el.name,href:el.href,"data-document-id":el["data-document-id"],"data-content-type":el["data-content-type"]},el.name]);return["div",this.options.HTMLAttributes,...renderedLinks]},addAttributes(){return{links:{default:[],parseHTML:element=>{const links=element.getElementsByTagName("a"),parsedLinks=[];for(let i=0;i<links.length;i++){const link=links[i],href=link.getAttribute("href"),name=link.textContent,regexResult=href.match(/([^/]+$)/),dataDocumentId=link.getAttribute("data-document-id")||regexResult&&regexResult[0],dataContentType=link.getAttribute("data-content-type");parsedLinks.push({href,name,dataDocumentId,dataContentType})}return parsedLinks},renderHTML:attributes=>({links:attributes.links.map(link=>({href:link.href,name:link.name,"data-document-id":link.dataDocumentId,"data-content-type":link.dataContentType}))})}}},addCommands(){return{setAttachment:(attrs={dataContentType:"",name:"",documentId:"",href:""})=>({chain})=>chain().insertContent({type:this.name,attrs}).run()}}});exports.AttachmentTransformer=AttachmentTransformer;
2
- //# sourceMappingURL=attachment-transformer.cjs.map
1
+ var AttachmentTransformer=require("@tiptap/core").Node.create({name:`attachments`,content:``,marks:``,group:`inline`,inline:!0,selectable:!0,atom:!0,draggable:!0,addOptions(){return{HTMLAttributes:{class:`attachments`}}},parseHTML(){return[{tag:`div[class=attachments]`}]},renderHTML({HTMLAttributes}){let renderedLinks=HTMLAttributes.links.map(el=>[`a`,{name:el.name,href:el.href,"data-document-id":el[`data-document-id`],"data-content-type":el[`data-content-type`]},el.name]);return[`div`,this.options.HTMLAttributes,...renderedLinks]},addAttributes(){return{links:{default:[],parseHTML:element=>{let links=element.getElementsByTagName(`a`),parsedLinks=[];for(let i=0;i<links.length;i++){let link=links[i],href=link.getAttribute(`href`),name=link.textContent,regexResult=href.match(/([^/]+$)/),dataDocumentId=link.getAttribute(`data-document-id`)||regexResult&&regexResult[0],dataContentType=link.getAttribute(`data-content-type`);parsedLinks.push({href,name,dataDocumentId,dataContentType})}return parsedLinks},renderHTML:attributes=>({links:attributes.links.map(link=>({href:link.href,name:link.name,"data-document-id":link.dataDocumentId,"data-content-type":link.dataContentType}))})}}},addCommands(){return{setAttachment:(attrs={dataContentType:``,name:``,documentId:``,href:``})=>({chain})=>chain().insertContent({type:this.name,attrs}).run()}}});exports.AttachmentTransformer=AttachmentTransformer;
2
+ //# sourceMappingURL=attachment-transformer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-transformer.cjs","sources":["../../src/attachment/attachment-transformer.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n attachment: {\n setAttachment: (attachment: any) => ReturnType;\n unsetAttachment: (documentId: string) => ReturnType;\n };\n }\n}\n\nexport const AttachmentTransformer = Node.create<AttachmentOptions>({\n name: 'attachments',\n content: '',\n marks: '',\n group: 'inline',\n inline: true,\n selectable: true,\n atom: true,\n draggable: true,\n\n addOptions() {\n return {\n HTMLAttributes: {\n class: 'attachments',\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[class=attachments]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const links = HTMLAttributes.links;\n\n const renderedLinks = links.map((el) => {\n return [\n 'a',\n {\n 'name': el.name,\n 'href': el.href,\n 'data-document-id': el['data-document-id'],\n 'data-content-type': el['data-content-type'],\n },\n el.name,\n ];\n });\n\n return ['div', this.options.HTMLAttributes, ...renderedLinks];\n },\n\n addAttributes() {\n return {\n links: {\n default: [],\n parseHTML: (element) => {\n const links = element.getElementsByTagName('a');\n const parsedLinks = [];\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const href = link.getAttribute('href');\n const name = link.textContent;\n const regexResult = href.match(/([^/]+$)/);\n const dataDocumentId =\n link.getAttribute('data-document-id') ||\n (regexResult && regexResult[0]);\n const dataContentType = link.getAttribute('data-content-type');\n\n parsedLinks.push({\n href: href,\n name: name,\n dataDocumentId,\n dataContentType,\n });\n }\n\n return parsedLinks;\n },\n renderHTML: (attributes) => {\n return {\n links: attributes.links.map((link) => ({\n 'href': link.href,\n 'name': link.name,\n 'data-document-id': link.dataDocumentId,\n 'data-content-type': link.dataContentType,\n })),\n };\n },\n },\n };\n },\n\n addCommands() {\n return {\n setAttachment:\n (\n attrs = {\n dataContentType: '',\n name: '',\n documentId: '',\n href: '',\n },\n ) =>\n ({ chain }) => {\n return chain().insertContent({ type: this.name, attrs }).run();\n },\n };\n },\n});\n"],"names":["Node"],"mappings":"mHAea,sBAAwBA,KAAAA,KAAK,OAA0B,CAClE,KAAM,cACN,QAAS,GACT,MAAO,GACP,MAAO,SACP,OAAQ,GACR,WAAY,GACZ,KAAM,GACN,UAAW,GAEX,YAAa,CACX,MAAO,CACL,eAAgB,CACd,MAAO,aAAA,CACT,CAEJ,EAEA,WAAY,CACV,MAAO,CAAC,CAAE,IAAK,yBAA0B,CAC3C,EAEA,WAAW,CAAE,gBAAkB,CAG7B,MAAM,cAFQ,eAAe,MAED,IAAK,IACxB,CACL,IACA,CACE,KAAQ,GAAG,KACX,KAAQ,GAAG,KACX,mBAAoB,GAAG,kBAAkB,EACzC,oBAAqB,GAAG,mBAAmB,CAAA,EAE7C,GAAG,IAAA,CAEN,EAED,MAAO,CAAC,MAAO,KAAK,QAAQ,eAAgB,GAAG,aAAa,CAC9D,EAEA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,UAAY,SAAY,CACtB,MAAM,MAAQ,QAAQ,qBAAqB,GAAG,EACxC,YAAc,CAAA,EAEpB,QAAS,EAAI,EAAG,EAAI,MAAM,OAAQ,IAAK,CACrC,MAAM,KAAO,MAAM,CAAC,EACd,KAAO,KAAK,aAAa,MAAM,EAC/B,KAAO,KAAK,YACZ,YAAc,KAAK,MAAM,UAAU,EACnC,eACJ,KAAK,aAAa,kBAAkB,GACnC,aAAe,YAAY,CAAC,EACzB,gBAAkB,KAAK,aAAa,mBAAmB,EAE7D,YAAY,KAAK,CACf,KACA,KACA,eACA,eAAA,CACD,CACH,CAEA,OAAO,WACT,EACA,WAAa,aACJ,CACL,MAAO,WAAW,MAAM,IAAK,OAAU,CACrC,KAAQ,KAAK,KACb,KAAQ,KAAK,KACb,mBAAoB,KAAK,eACzB,oBAAqB,KAAK,eAAA,EAC1B,CAAA,EAEN,CACF,CAEJ,EAEA,aAAc,CACZ,MAAO,CACL,cACE,CACE,MAAQ,CACN,gBAAiB,GACjB,KAAM,GACN,WAAY,GACZ,KAAM,EAAA,IAGV,CAAC,CAAE,SACM,MAAA,EAAQ,cAAc,CAAE,KAAM,KAAK,KAAM,MAAO,EAAE,IAAA,CAC3D,CAEN,CACF,CAAC"}
1
+ {"version":3,"file":"attachment-transformer.cjs","names":[],"sources":["../../src/attachment/attachment-transformer.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n attachment: {\n setAttachment: (attachment: any) => ReturnType;\n unsetAttachment: (documentId: string) => ReturnType;\n };\n }\n}\n\nexport const AttachmentTransformer = Node.create<AttachmentOptions>({\n name: 'attachments',\n content: '',\n marks: '',\n group: 'inline',\n inline: true,\n selectable: true,\n atom: true,\n draggable: true,\n\n addOptions() {\n return {\n HTMLAttributes: {\n class: 'attachments',\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[class=attachments]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const links = HTMLAttributes.links;\n\n const renderedLinks = links.map((el) => {\n return [\n 'a',\n {\n 'name': el.name,\n 'href': el.href,\n 'data-document-id': el['data-document-id'],\n 'data-content-type': el['data-content-type'],\n },\n el.name,\n ];\n });\n\n return ['div', this.options.HTMLAttributes, ...renderedLinks];\n },\n\n addAttributes() {\n return {\n links: {\n default: [],\n parseHTML: (element) => {\n const links = element.getElementsByTagName('a');\n const parsedLinks = [];\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const href = link.getAttribute('href');\n const name = link.textContent;\n const regexResult = href.match(/([^/]+$)/);\n const dataDocumentId =\n link.getAttribute('data-document-id') ||\n (regexResult && regexResult[0]);\n const dataContentType = link.getAttribute('data-content-type');\n\n parsedLinks.push({\n href: href,\n name: name,\n dataDocumentId,\n dataContentType,\n });\n }\n\n return parsedLinks;\n },\n renderHTML: (attributes) => {\n return {\n links: attributes.links.map((link) => ({\n 'href': link.href,\n 'name': link.name,\n 'data-document-id': link.dataDocumentId,\n 'data-content-type': link.dataContentType,\n })),\n };\n },\n },\n };\n },\n\n addCommands() {\n return {\n setAttachment:\n (\n attrs = {\n dataContentType: '',\n name: '',\n documentId: '',\n href: '',\n },\n ) =>\n ({ chain }) => {\n return chain().insertContent({ type: this.name, attrs }).run();\n },\n };\n },\n});\n"],"mappings":"AAeA,IAAa,4CAAwB,EAAA,KAAK,OAA0B,CAClE,KAAM,cACN,QAAS,GACT,MAAO,GACP,MAAO,SACP,OAAQ,GACR,WAAY,GACZ,KAAM,GACN,UAAW,GAEX,YAAa,CACX,MAAO,CACL,eAAgB,CACd,MAAO,aACT,CACF,CACF,EAEA,WAAY,CACV,MAAO,CAAC,CAAE,IAAK,wBAAyB,CAAC,CAC3C,EAEA,WAAW,CAAE,gBAAkB,CAG7B,IAAM,cAFQ,eAAe,MAED,IAAK,IACxB,CACL,IACA,CACE,KAAQ,GAAG,KACX,KAAQ,GAAG,KACX,mBAAoB,GAAG,oBACvB,oBAAqB,GAAG,oBAC1B,EACA,GAAG,IACL,CACD,EAED,MAAO,CAAC,MAAO,KAAK,QAAQ,eAAgB,GAAG,aAAa,CAC9D,EAEA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,CAAC,EACV,UAAY,SAAY,CACtB,IAAM,MAAQ,QAAQ,qBAAqB,GAAG,EACxC,YAAc,CAAC,EAErB,IAAK,IAAI,EAAI,EAAG,EAAI,MAAM,OAAQ,IAAK,CACrC,IAAM,KAAO,MAAM,GACb,KAAO,KAAK,aAAa,MAAM,EAC/B,KAAO,KAAK,YACZ,YAAc,KAAK,MAAM,UAAU,EACnC,eACJ,KAAK,aAAa,kBAAkB,GACnC,aAAe,YAAY,GACxB,gBAAkB,KAAK,aAAa,mBAAmB,EAE7D,YAAY,KAAK,CACT,KACA,KACN,eACA,eACF,CAAC,CACH,CAEA,OAAO,WACT,EACA,WAAa,aACJ,CACL,MAAO,WAAW,MAAM,IAAK,OAAU,CACrC,KAAQ,KAAK,KACb,KAAQ,KAAK,KACb,mBAAoB,KAAK,eACzB,oBAAqB,KAAK,eAC5B,EAAE,CACJ,EAEJ,CACF,CACF,EAEA,aAAc,CACZ,MAAO,CACL,eAEI,MAAQ,CACN,gBAAiB,GACjB,KAAM,GACN,WAAY,GACZ,KAAM,EACR,KAED,CAAE,SACM,MAAM,EAAE,cAAc,CAAE,KAAM,KAAK,KAAM,KAAM,CAAC,EAAE,IAAI,CAEnE,CACF,CACF,CAAC"}
@@ -1,76 +1,2 @@
1
- import { Node } from "@tiptap/core";
2
- const AttachmentTransformer = Node.create({
3
- name: "attachments",
4
- content: "",
5
- marks: "",
6
- group: "inline",
7
- inline: !0,
8
- selectable: !0,
9
- atom: !0,
10
- draggable: !0,
11
- addOptions() {
12
- return {
13
- HTMLAttributes: {
14
- class: "attachments"
15
- }
16
- };
17
- },
18
- parseHTML() {
19
- return [{ tag: "div[class=attachments]" }];
20
- },
21
- renderHTML({ HTMLAttributes }) {
22
- const renderedLinks = HTMLAttributes.links.map((el) => [
23
- "a",
24
- {
25
- name: el.name,
26
- href: el.href,
27
- "data-document-id": el["data-document-id"],
28
- "data-content-type": el["data-content-type"]
29
- },
30
- el.name
31
- ]);
32
- return ["div", this.options.HTMLAttributes, ...renderedLinks];
33
- },
34
- addAttributes() {
35
- return {
36
- links: {
37
- default: [],
38
- parseHTML: (element) => {
39
- const links = element.getElementsByTagName("a"), parsedLinks = [];
40
- for (let i = 0; i < links.length; i++) {
41
- const link = links[i], href = link.getAttribute("href"), name = link.textContent, regexResult = href.match(/([^/]+$)/), dataDocumentId = link.getAttribute("data-document-id") || regexResult && regexResult[0], dataContentType = link.getAttribute("data-content-type");
42
- parsedLinks.push({
43
- href,
44
- name,
45
- dataDocumentId,
46
- dataContentType
47
- });
48
- }
49
- return parsedLinks;
50
- },
51
- renderHTML: (attributes) => ({
52
- links: attributes.links.map((link) => ({
53
- href: link.href,
54
- name: link.name,
55
- "data-document-id": link.dataDocumentId,
56
- "data-content-type": link.dataContentType
57
- }))
58
- })
59
- }
60
- };
61
- },
62
- addCommands() {
63
- return {
64
- setAttachment: (attrs = {
65
- dataContentType: "",
66
- name: "",
67
- documentId: "",
68
- href: ""
69
- }) => ({ chain }) => chain().insertContent({ type: this.name, attrs }).run()
70
- };
71
- }
72
- });
73
- export {
74
- AttachmentTransformer
75
- };
76
- //# sourceMappingURL=attachment-transformer.js.map
1
+ import{Node}from"@tiptap/core";var AttachmentTransformer=Node.create({name:`attachments`,content:``,marks:``,group:`inline`,inline:!0,selectable:!0,atom:!0,draggable:!0,addOptions(){return{HTMLAttributes:{class:`attachments`}}},parseHTML(){return[{tag:`div[class=attachments]`}]},renderHTML({HTMLAttributes}){let renderedLinks=HTMLAttributes.links.map(el=>[`a`,{name:el.name,href:el.href,"data-document-id":el[`data-document-id`],"data-content-type":el[`data-content-type`]},el.name]);return[`div`,this.options.HTMLAttributes,...renderedLinks]},addAttributes(){return{links:{default:[],parseHTML:element=>{let links=element.getElementsByTagName(`a`),parsedLinks=[];for(let i=0;i<links.length;i++){let link=links[i],href=link.getAttribute(`href`),name=link.textContent,regexResult=href.match(/([^/]+$)/),dataDocumentId=link.getAttribute(`data-document-id`)||regexResult&&regexResult[0],dataContentType=link.getAttribute(`data-content-type`);parsedLinks.push({href,name,dataDocumentId,dataContentType})}return parsedLinks},renderHTML:attributes=>({links:attributes.links.map(link=>({href:link.href,name:link.name,"data-document-id":link.dataDocumentId,"data-content-type":link.dataContentType}))})}}},addCommands(){return{setAttachment:(attrs={dataContentType:``,name:``,documentId:``,href:``})=>({chain})=>chain().insertContent({type:this.name,attrs}).run()}}});export{AttachmentTransformer};
2
+ //# sourceMappingURL=attachment-transformer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-transformer.js","sources":["../../src/attachment/attachment-transformer.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n attachment: {\n setAttachment: (attachment: any) => ReturnType;\n unsetAttachment: (documentId: string) => ReturnType;\n };\n }\n}\n\nexport const AttachmentTransformer = Node.create<AttachmentOptions>({\n name: 'attachments',\n content: '',\n marks: '',\n group: 'inline',\n inline: true,\n selectable: true,\n atom: true,\n draggable: true,\n\n addOptions() {\n return {\n HTMLAttributes: {\n class: 'attachments',\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[class=attachments]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const links = HTMLAttributes.links;\n\n const renderedLinks = links.map((el) => {\n return [\n 'a',\n {\n 'name': el.name,\n 'href': el.href,\n 'data-document-id': el['data-document-id'],\n 'data-content-type': el['data-content-type'],\n },\n el.name,\n ];\n });\n\n return ['div', this.options.HTMLAttributes, ...renderedLinks];\n },\n\n addAttributes() {\n return {\n links: {\n default: [],\n parseHTML: (element) => {\n const links = element.getElementsByTagName('a');\n const parsedLinks = [];\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const href = link.getAttribute('href');\n const name = link.textContent;\n const regexResult = href.match(/([^/]+$)/);\n const dataDocumentId =\n link.getAttribute('data-document-id') ||\n (regexResult && regexResult[0]);\n const dataContentType = link.getAttribute('data-content-type');\n\n parsedLinks.push({\n href: href,\n name: name,\n dataDocumentId,\n dataContentType,\n });\n }\n\n return parsedLinks;\n },\n renderHTML: (attributes) => {\n return {\n links: attributes.links.map((link) => ({\n 'href': link.href,\n 'name': link.name,\n 'data-document-id': link.dataDocumentId,\n 'data-content-type': link.dataContentType,\n })),\n };\n },\n },\n };\n },\n\n addCommands() {\n return {\n setAttachment:\n (\n attrs = {\n dataContentType: '',\n name: '',\n documentId: '',\n href: '',\n },\n ) =>\n ({ chain }) => {\n return chain().insertContent({ type: this.name, attrs }).run();\n },\n };\n },\n});\n"],"names":[],"mappings":";AAeO,MAAM,wBAAwB,KAAK,OAA0B;AAAA,EAClE,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,WAAW;AAAA,EAEX,aAAa;AACX,WAAO;AAAA,MACL,gBAAgB;AAAA,QACd,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EAEJ;AAAA,EAEA,YAAY;AACV,WAAO,CAAC,EAAE,KAAK,0BAA0B;AAAA,EAC3C;AAAA,EAEA,WAAW,EAAE,kBAAkB;AAG7B,UAAM,gBAFQ,eAAe,MAED,IAAI,CAAC,OACxB;AAAA,MACL;AAAA,MACA;AAAA,QACE,MAAQ,GAAG;AAAA,QACX,MAAQ,GAAG;AAAA,QACX,oBAAoB,GAAG,kBAAkB;AAAA,QACzC,qBAAqB,GAAG,mBAAmB;AAAA,MAAA;AAAA,MAE7C,GAAG;AAAA,IAAA,CAEN;AAED,WAAO,CAAC,OAAO,KAAK,QAAQ,gBAAgB,GAAG,aAAa;AAAA,EAC9D;AAAA,EAEA,gBAAgB;AACd,WAAO;AAAA,MACL,OAAO;AAAA,QACL,SAAS,CAAA;AAAA,QACT,WAAW,CAAC,YAAY;AACtB,gBAAM,QAAQ,QAAQ,qBAAqB,GAAG,GACxC,cAAc,CAAA;AAEpB,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,kBAAM,OAAO,MAAM,CAAC,GACd,OAAO,KAAK,aAAa,MAAM,GAC/B,OAAO,KAAK,aACZ,cAAc,KAAK,MAAM,UAAU,GACnC,iBACJ,KAAK,aAAa,kBAAkB,KACnC,eAAe,YAAY,CAAC,GACzB,kBAAkB,KAAK,aAAa,mBAAmB;AAE7D,wBAAY,KAAK;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA,CACD;AAAA,UACH;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,YAAY,CAAC,gBACJ;AAAA,UACL,OAAO,WAAW,MAAM,IAAI,CAAC,UAAU;AAAA,YACrC,MAAQ,KAAK;AAAA,YACb,MAAQ,KAAK;AAAA,YACb,oBAAoB,KAAK;AAAA,YACzB,qBAAqB,KAAK;AAAA,UAAA,EAC1B;AAAA,QAAA;AAAA,MAEN;AAAA,IACF;AAAA,EAEJ;AAAA,EAEA,cAAc;AACZ,WAAO;AAAA,MACL,eACE,CACE,QAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,MAAM;AAAA,MAAA,MAGV,CAAC,EAAE,YACM,MAAA,EAAQ,cAAc,EAAE,MAAM,KAAK,MAAM,OAAO,EAAE,IAAA;AAAA,IAC3D;AAAA,EAEN;AACF,CAAC;"}
1
+ {"version":3,"file":"attachment-transformer.js","names":[],"sources":["../../src/attachment/attachment-transformer.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n attachment: {\n setAttachment: (attachment: any) => ReturnType;\n unsetAttachment: (documentId: string) => ReturnType;\n };\n }\n}\n\nexport const AttachmentTransformer = Node.create<AttachmentOptions>({\n name: 'attachments',\n content: '',\n marks: '',\n group: 'inline',\n inline: true,\n selectable: true,\n atom: true,\n draggable: true,\n\n addOptions() {\n return {\n HTMLAttributes: {\n class: 'attachments',\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[class=attachments]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const links = HTMLAttributes.links;\n\n const renderedLinks = links.map((el) => {\n return [\n 'a',\n {\n 'name': el.name,\n 'href': el.href,\n 'data-document-id': el['data-document-id'],\n 'data-content-type': el['data-content-type'],\n },\n el.name,\n ];\n });\n\n return ['div', this.options.HTMLAttributes, ...renderedLinks];\n },\n\n addAttributes() {\n return {\n links: {\n default: [],\n parseHTML: (element) => {\n const links = element.getElementsByTagName('a');\n const parsedLinks = [];\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const href = link.getAttribute('href');\n const name = link.textContent;\n const regexResult = href.match(/([^/]+$)/);\n const dataDocumentId =\n link.getAttribute('data-document-id') ||\n (regexResult && regexResult[0]);\n const dataContentType = link.getAttribute('data-content-type');\n\n parsedLinks.push({\n href: href,\n name: name,\n dataDocumentId,\n dataContentType,\n });\n }\n\n return parsedLinks;\n },\n renderHTML: (attributes) => {\n return {\n links: attributes.links.map((link) => ({\n 'href': link.href,\n 'name': link.name,\n 'data-document-id': link.dataDocumentId,\n 'data-content-type': link.dataContentType,\n })),\n };\n },\n },\n };\n },\n\n addCommands() {\n return {\n setAttachment:\n (\n attrs = {\n dataContentType: '',\n name: '',\n documentId: '',\n href: '',\n },\n ) =>\n ({ chain }) => {\n return chain().insertContent({ type: this.name, attrs }).run();\n },\n };\n },\n});\n"],"mappings":"+BAeA,IAAa,sBAAwB,KAAK,OAA0B,CAClE,KAAM,cACN,QAAS,GACT,MAAO,GACP,MAAO,SACP,OAAQ,GACR,WAAY,GACZ,KAAM,GACN,UAAW,GAEX,YAAa,CACX,MAAO,CACL,eAAgB,CACd,MAAO,aACT,CACF,CACF,EAEA,WAAY,CACV,MAAO,CAAC,CAAE,IAAK,wBAAyB,CAAC,CAC3C,EAEA,WAAW,CAAE,gBAAkB,CAG7B,IAAM,cAFQ,eAAe,MAED,IAAK,IACxB,CACL,IACA,CACE,KAAQ,GAAG,KACX,KAAQ,GAAG,KACX,mBAAoB,GAAG,oBACvB,oBAAqB,GAAG,oBAC1B,EACA,GAAG,IACL,CACD,EAED,MAAO,CAAC,MAAO,KAAK,QAAQ,eAAgB,GAAG,aAAa,CAC9D,EAEA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,CAAC,EACV,UAAY,SAAY,CACtB,IAAM,MAAQ,QAAQ,qBAAqB,GAAG,EACxC,YAAc,CAAC,EAErB,IAAK,IAAI,EAAI,EAAG,EAAI,MAAM,OAAQ,IAAK,CACrC,IAAM,KAAO,MAAM,GACb,KAAO,KAAK,aAAa,MAAM,EAC/B,KAAO,KAAK,YACZ,YAAc,KAAK,MAAM,UAAU,EACnC,eACJ,KAAK,aAAa,kBAAkB,GACnC,aAAe,YAAY,GACxB,gBAAkB,KAAK,aAAa,mBAAmB,EAE7D,YAAY,KAAK,CACT,KACA,KACN,eACA,eACF,CAAC,CACH,CAEA,OAAO,WACT,EACA,WAAa,aACJ,CACL,MAAO,WAAW,MAAM,IAAK,OAAU,CACrC,KAAQ,KAAK,KACb,KAAQ,KAAK,KACb,mBAAoB,KAAK,eACzB,oBAAqB,KAAK,eAC5B,EAAE,CACJ,EAEJ,CACF,CACF,EAEA,aAAc,CACZ,MAAO,CACL,eAEI,MAAQ,CACN,gBAAiB,GACjB,KAAM,GACN,WAAY,GACZ,KAAM,EACR,KAED,CAAE,SACM,MAAM,EAAE,cAAc,CAAE,KAAM,KAAK,KAAM,KAAM,CAAC,EAAE,IAAI,CAEnE,CACF,CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const core=require("@tiptap/core"),Attachment=core.Node.create({name:"attachments",content:"",marks:"",group:"block",selectable:!0,atom:!0,draggable:!0,addOptions(){return{HTMLAttributes:{class:"attachments"}}},parseHTML(){return[{tag:"div[class=attachments]"}]},renderHTML({HTMLAttributes}){const renderedLinks=HTMLAttributes.links.map(el=>["a",{name:el.name,href:el.href,"data-document-id":el["data-document-id"],"data-content-type":el["data-content-type"]},el.name]);return["div",this.options.HTMLAttributes,...renderedLinks]},addAttributes(){return{links:{default:[],parseHTML:element=>{const links=element.getElementsByTagName("a"),parsedLinks=[];for(let i=0;i<links.length;i++){const link=links[i],href=link.getAttribute("href"),name=link.textContent,regexResult=href.match(/([^/]+$)/),dataDocumentId=link.getAttribute("data-document-id")||regexResult&&regexResult[0],dataContentType=link.getAttribute("data-content-type");parsedLinks.push({href,name,dataDocumentId,dataContentType})}return parsedLinks},renderHTML:attributes=>({links:attributes.links.map(link=>({href:link.href,name:link.name,"data-document-id":link.dataDocumentId,"data-content-type":link.dataContentType}))})}}},addCommands(){return{setAttachment:(attrs={dataContentType:"",name:"",documentId:"",href:""})=>({chain})=>chain().insertContent({type:this.name,attrs}).run(),unsetAttachment:documentId=>({state,dispatch})=>{let transaction=state.tr,hasChanged=!1;return state.doc.descendants((node,pos)=>{if(node.type.name!==this.name)return!0;const mappedPos=transaction.mapping.map(pos),links=node.attrs.links??[],newLinks=links.filter(link=>{const linkDocumentId=link.dataDocumentId??link.documentId??link["data-document-id"]??link.href;return String(linkDocumentId??"")!==String(documentId??"")});if(newLinks.length===links.length)return!0;if(hasChanged=!0,newLinks.length>0)transaction=transaction.setNodeMarkup(mappedPos,void 0,{...node.attrs,links:newLinks});else{const mappedEnd=transaction.mapping.map(pos+node.nodeSize);transaction=transaction.delete(mappedPos,mappedEnd)}return!1}),hasChanged&&dispatch&&dispatch(transaction),hasChanged}}}});exports.Attachment=Attachment;
2
- //# sourceMappingURL=attachment.cjs.map
1
+ var Attachment=require("@tiptap/core").Node.create({name:`attachments`,content:``,marks:``,group:`block`,selectable:!0,atom:!0,draggable:!0,addOptions(){return{HTMLAttributes:{class:`attachments`}}},parseHTML(){return[{tag:`div[class=attachments]`}]},renderHTML({HTMLAttributes}){let renderedLinks=HTMLAttributes.links.map(el=>[`a`,{name:el.name,href:el.href,"data-document-id":el[`data-document-id`],"data-content-type":el[`data-content-type`]},el.name]);return[`div`,this.options.HTMLAttributes,...renderedLinks]},addAttributes(){return{links:{default:[],parseHTML:element=>{let links=element.getElementsByTagName(`a`),parsedLinks=[];for(let i=0;i<links.length;i++){let link=links[i],href=link.getAttribute(`href`),name=link.textContent,regexResult=href.match(/([^/]+$)/),dataDocumentId=link.getAttribute(`data-document-id`)||regexResult&&regexResult[0],dataContentType=link.getAttribute(`data-content-type`);parsedLinks.push({href,name,dataDocumentId,dataContentType})}return parsedLinks},renderHTML:attributes=>({links:attributes.links.map(link=>({href:link.href,name:link.name,"data-document-id":link.dataDocumentId,"data-content-type":link.dataContentType}))})}}},addCommands(){return{setAttachment:(attrs={dataContentType:``,name:``,documentId:``,href:``})=>({chain})=>chain().insertContent({type:this.name,attrs}).run(),unsetAttachment:documentId=>({state,dispatch})=>{let transaction=state.tr,hasChanged=!1;return state.doc.descendants((node,pos)=>{if(node.type.name!==this.name)return!0;let mappedPos=transaction.mapping.map(pos),links=node.attrs.links??[],newLinks=links.filter(link=>{let linkDocumentId=link.dataDocumentId??link.documentId??link[`data-document-id`]??link.href;return String(linkDocumentId??``)!==String(documentId??``)});if(newLinks.length===links.length)return!0;if(hasChanged=!0,newLinks.length>0)transaction=transaction.setNodeMarkup(mappedPos,void 0,{...node.attrs,links:newLinks});else{let mappedEnd=transaction.mapping.map(pos+node.nodeSize);transaction=transaction.delete(mappedPos,mappedEnd)}return!1}),hasChanged&&dispatch&&dispatch(transaction),hasChanged}}}});exports.Attachment=Attachment;
2
+ //# sourceMappingURL=attachment.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.cjs","sources":["../../src/attachment/attachment.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n attachment: {\n setAttachment: (attachment) => ReturnType;\n unsetAttachment: (documentId: string) => ReturnType; // Modification de la commande\n };\n }\n}\ninterface AttachmentAttrsProps {\n name: string;\n href: string;\n dataDocumentId: string;\n dataContentType: string;\n}\n\nexport const Attachment = Node.create<AttachmentOptions>({\n name: 'attachments',\n content: '',\n marks: '',\n group: 'block',\n selectable: true,\n atom: true,\n draggable: true,\n\n addOptions() {\n return {\n HTMLAttributes: {\n class: 'attachments',\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[class=attachments]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const links = HTMLAttributes.links;\n\n const renderedLinks = links.map((el) => {\n return [\n 'a',\n {\n 'name': el.name,\n 'href': el.href,\n 'data-document-id': el['data-document-id'],\n 'data-content-type': el['data-content-type'],\n },\n el.name,\n ];\n });\n\n return ['div', this.options.HTMLAttributes, ...renderedLinks];\n },\n\n addAttributes() {\n return {\n links: {\n default: [],\n parseHTML: (element) => {\n const links = element.getElementsByTagName('a');\n const parsedLinks: AttachmentAttrsProps[] = [];\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const href = link.getAttribute('href');\n const name = link.textContent;\n const regexResult = href.match(/([^/]+$)/);\n const dataDocumentId =\n link.getAttribute('data-document-id') ||\n (regexResult && regexResult[0]);\n const dataContentType = link.getAttribute('data-content-type');\n\n parsedLinks.push({\n href: href,\n name: name,\n dataDocumentId,\n dataContentType,\n });\n }\n\n return parsedLinks;\n },\n renderHTML: (attributes) => {\n return {\n links: attributes.links.map((link: AttachmentAttrsProps) => ({\n 'href': link.href,\n 'name': link.name,\n 'data-document-id': link.dataDocumentId,\n 'data-content-type': link.dataContentType,\n })),\n };\n },\n },\n };\n },\n\n addCommands() {\n return {\n setAttachment:\n (\n attrs = {\n dataContentType: '',\n name: '',\n documentId: '',\n href: '',\n },\n ) =>\n ({ chain }) => {\n return chain().insertContent({ type: this.name, attrs }).run();\n },\n unsetAttachment:\n (documentId: string) =>\n ({ state, dispatch }) => {\n let transaction = state.tr;\n let hasChanged = false;\n\n state.doc.descendants((node, pos) => {\n if (node.type.name !== this.name) {\n return true;\n }\n\n const mappedPos = transaction.mapping.map(pos);\n\n const links = node.attrs.links ?? [];\n const newLinks = links.filter((link) => {\n const linkDocumentId =\n link.dataDocumentId ??\n link.documentId ??\n link['data-document-id'] ??\n link.href;\n return String(linkDocumentId ?? '') !== String(documentId ?? '');\n });\n\n if (newLinks.length === links.length) {\n return true;\n }\n\n hasChanged = true;\n\n if (newLinks.length > 0) {\n transaction = transaction.setNodeMarkup(mappedPos, undefined, {\n ...node.attrs,\n links: newLinks,\n });\n } else {\n const mappedEnd = transaction.mapping.map(pos + node.nodeSize);\n transaction = transaction.delete(mappedPos, mappedEnd);\n }\n\n return false;\n });\n\n if (hasChanged && dispatch) {\n dispatch(transaction);\n }\n\n return hasChanged;\n },\n };\n },\n});\n"],"names":["Node"],"mappings":"mHAqBa,WAAaA,KAAAA,KAAK,OAA0B,CACvD,KAAM,cACN,QAAS,GACT,MAAO,GACP,MAAO,QACP,WAAY,GACZ,KAAM,GACN,UAAW,GAEX,YAAa,CACX,MAAO,CACL,eAAgB,CACd,MAAO,aAAA,CACT,CAEJ,EAEA,WAAY,CACV,MAAO,CAAC,CAAE,IAAK,yBAA0B,CAC3C,EAEA,WAAW,CAAE,gBAAkB,CAG7B,MAAM,cAFQ,eAAe,MAED,IAAK,IACxB,CACL,IACA,CACE,KAAQ,GAAG,KACX,KAAQ,GAAG,KACX,mBAAoB,GAAG,kBAAkB,EACzC,oBAAqB,GAAG,mBAAmB,CAAA,EAE7C,GAAG,IAAA,CAEN,EAED,MAAO,CAAC,MAAO,KAAK,QAAQ,eAAgB,GAAG,aAAa,CAC9D,EAEA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,CAAA,EACT,UAAY,SAAY,CACtB,MAAM,MAAQ,QAAQ,qBAAqB,GAAG,EACxC,YAAsC,CAAA,EAE5C,QAAS,EAAI,EAAG,EAAI,MAAM,OAAQ,IAAK,CACrC,MAAM,KAAO,MAAM,CAAC,EACd,KAAO,KAAK,aAAa,MAAM,EAC/B,KAAO,KAAK,YACZ,YAAc,KAAK,MAAM,UAAU,EACnC,eACJ,KAAK,aAAa,kBAAkB,GACnC,aAAe,YAAY,CAAC,EACzB,gBAAkB,KAAK,aAAa,mBAAmB,EAE7D,YAAY,KAAK,CACf,KACA,KACA,eACA,eAAA,CACD,CACH,CAEA,OAAO,WACT,EACA,WAAa,aACJ,CACL,MAAO,WAAW,MAAM,IAAK,OAAgC,CAC3D,KAAQ,KAAK,KACb,KAAQ,KAAK,KACb,mBAAoB,KAAK,eACzB,oBAAqB,KAAK,eAAA,EAC1B,CAAA,EAEN,CACF,CAEJ,EAEA,aAAc,CACZ,MAAO,CACL,cACE,CACE,MAAQ,CACN,gBAAiB,GACjB,KAAM,GACN,WAAY,GACZ,KAAM,EAAA,IAGV,CAAC,CAAE,SACM,MAAA,EAAQ,cAAc,CAAE,KAAM,KAAK,KAAM,MAAO,EAAE,IAAA,EAE7D,gBACG,YACD,CAAC,CAAE,MAAO,YAAe,CACvB,IAAI,YAAc,MAAM,GACpB,WAAa,GAEjB,aAAM,IAAI,YAAY,CAAC,KAAM,MAAQ,CACnC,GAAI,KAAK,KAAK,OAAS,KAAK,KAC1B,MAAO,GAGT,MAAM,UAAY,YAAY,QAAQ,IAAI,GAAG,EAEvC,MAAQ,KAAK,MAAM,OAAS,CAAA,EAC5B,SAAW,MAAM,OAAQ,MAAS,CACtC,MAAM,eACJ,KAAK,gBACL,KAAK,YACL,KAAK,kBAAkB,GACvB,KAAK,KACP,OAAO,OAAO,gBAAkB,EAAE,IAAM,OAAO,YAAc,EAAE,CACjE,CAAC,EAED,GAAI,SAAS,SAAW,MAAM,OAC5B,MAAO,GAKT,GAFA,WAAa,GAET,SAAS,OAAS,EACpB,YAAc,YAAY,cAAc,UAAW,OAAW,CAC5D,GAAG,KAAK,MACR,MAAO,QAAA,CACR,MACI,CACL,MAAM,UAAY,YAAY,QAAQ,IAAI,IAAM,KAAK,QAAQ,EAC7D,YAAc,YAAY,OAAO,UAAW,SAAS,CACvD,CAEA,MAAO,EACT,CAAC,EAEG,YAAc,UAChB,SAAS,WAAW,EAGf,UACT,CAAA,CAEN,CACF,CAAC"}
1
+ {"version":3,"file":"attachment.cjs","names":[],"sources":["../../src/attachment/attachment.ts"],"sourcesContent":["import { Node } from '@tiptap/core';\n\nexport interface AttachmentOptions {\n HTMLAttributes: Record<string, string>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n attachment: {\n setAttachment: (attachment) => ReturnType;\n unsetAttachment: (documentId: string) => ReturnType; // Modification de la commande\n };\n }\n}\ninterface AttachmentAttrsProps {\n name: string;\n href: string;\n dataDocumentId: string;\n dataContentType: string;\n}\n\nexport const Attachment = Node.create<AttachmentOptions>({\n name: 'attachments',\n content: '',\n marks: '',\n group: 'block',\n selectable: true,\n atom: true,\n draggable: true,\n\n addOptions() {\n return {\n HTMLAttributes: {\n class: 'attachments',\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[class=attachments]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const links = HTMLAttributes.links;\n\n const renderedLinks = links.map((el) => {\n return [\n 'a',\n {\n 'name': el.name,\n 'href': el.href,\n 'data-document-id': el['data-document-id'],\n 'data-content-type': el['data-content-type'],\n },\n el.name,\n ];\n });\n\n return ['div', this.options.HTMLAttributes, ...renderedLinks];\n },\n\n addAttributes() {\n return {\n links: {\n default: [],\n parseHTML: (element) => {\n const links = element.getElementsByTagName('a');\n const parsedLinks: AttachmentAttrsProps[] = [];\n\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const href = link.getAttribute('href');\n const name = link.textContent;\n const regexResult = href.match(/([^/]+$)/);\n const dataDocumentId =\n link.getAttribute('data-document-id') ||\n (regexResult && regexResult[0]);\n const dataContentType = link.getAttribute('data-content-type');\n\n parsedLinks.push({\n href: href,\n name: name,\n dataDocumentId,\n dataContentType,\n });\n }\n\n return parsedLinks;\n },\n renderHTML: (attributes) => {\n return {\n links: attributes.links.map((link: AttachmentAttrsProps) => ({\n 'href': link.href,\n 'name': link.name,\n 'data-document-id': link.dataDocumentId,\n 'data-content-type': link.dataContentType,\n })),\n };\n },\n },\n };\n },\n\n addCommands() {\n return {\n setAttachment:\n (\n attrs = {\n dataContentType: '',\n name: '',\n documentId: '',\n href: '',\n },\n ) =>\n ({ chain }) => {\n return chain().insertContent({ type: this.name, attrs }).run();\n },\n unsetAttachment:\n (documentId: string) =>\n ({ state, dispatch }) => {\n let transaction = state.tr;\n let hasChanged = false;\n\n state.doc.descendants((node, pos) => {\n if (node.type.name !== this.name) {\n return true;\n }\n\n const mappedPos = transaction.mapping.map(pos);\n\n const links = node.attrs.links ?? [];\n const newLinks = links.filter((link) => {\n const linkDocumentId =\n link.dataDocumentId ??\n link.documentId ??\n link['data-document-id'] ??\n link.href;\n return String(linkDocumentId ?? '') !== String(documentId ?? '');\n });\n\n if (newLinks.length === links.length) {\n return true;\n }\n\n hasChanged = true;\n\n if (newLinks.length > 0) {\n transaction = transaction.setNodeMarkup(mappedPos, undefined, {\n ...node.attrs,\n links: newLinks,\n });\n } else {\n const mappedEnd = transaction.mapping.map(pos + node.nodeSize);\n transaction = transaction.delete(mappedPos, mappedEnd);\n }\n\n return false;\n });\n\n if (hasChanged && dispatch) {\n dispatch(transaction);\n }\n\n return hasChanged;\n },\n };\n },\n});\n"],"mappings":"AAqBA,IAAa,iCAAa,EAAA,KAAK,OAA0B,CACvD,KAAM,cACN,QAAS,GACT,MAAO,GACP,MAAO,QACP,WAAY,GACZ,KAAM,GACN,UAAW,GAEX,YAAa,CACX,MAAO,CACL,eAAgB,CACd,MAAO,aACT,CACF,CACF,EAEA,WAAY,CACV,MAAO,CAAC,CAAE,IAAK,wBAAyB,CAAC,CAC3C,EAEA,WAAW,CAAE,gBAAkB,CAG7B,IAAM,cAFQ,eAAe,MAED,IAAK,IACxB,CACL,IACA,CACE,KAAQ,GAAG,KACX,KAAQ,GAAG,KACX,mBAAoB,GAAG,oBACvB,oBAAqB,GAAG,oBAC1B,EACA,GAAG,IACL,CACD,EAED,MAAO,CAAC,MAAO,KAAK,QAAQ,eAAgB,GAAG,aAAa,CAC9D,EAEA,eAAgB,CACd,MAAO,CACL,MAAO,CACL,QAAS,CAAC,EACV,UAAY,SAAY,CACtB,IAAM,MAAQ,QAAQ,qBAAqB,GAAG,EACxC,YAAsC,CAAC,EAE7C,IAAK,IAAI,EAAI,EAAG,EAAI,MAAM,OAAQ,IAAK,CACrC,IAAM,KAAO,MAAM,GACb,KAAO,KAAK,aAAa,MAAM,EAC/B,KAAO,KAAK,YACZ,YAAc,KAAK,MAAM,UAAU,EACnC,eACJ,KAAK,aAAa,kBAAkB,GACnC,aAAe,YAAY,GACxB,gBAAkB,KAAK,aAAa,mBAAmB,EAE7D,YAAY,KAAK,CACT,KACA,KACN,eACA,eACF,CAAC,CACH,CAEA,OAAO,WACT,EACA,WAAa,aACJ,CACL,MAAO,WAAW,MAAM,IAAK,OAAgC,CAC3D,KAAQ,KAAK,KACb,KAAQ,KAAK,KACb,mBAAoB,KAAK,eACzB,oBAAqB,KAAK,eAC5B,EAAE,CACJ,EAEJ,CACF,CACF,EAEA,aAAc,CACZ,MAAO,CACL,eAEI,MAAQ,CACN,gBAAiB,GACjB,KAAM,GACN,WAAY,GACZ,KAAM,EACR,KAED,CAAE,SACM,MAAM,EAAE,cAAc,CAAE,KAAM,KAAK,KAAM,KAAM,CAAC,EAAE,IAAI,EAEjE,gBACG,aACA,CAAE,MAAO,YAAe,CACvB,IAAI,YAAc,MAAM,GACpB,WAAa,GA0CjB,OAxCA,MAAM,IAAI,aAAa,KAAM,MAAQ,CACnC,GAAI,KAAK,KAAK,OAAS,KAAK,KAC1B,MAAO,GAGT,IAAM,UAAY,YAAY,QAAQ,IAAI,GAAG,EAEvC,MAAQ,KAAK,MAAM,OAAS,CAAC,EAC7B,SAAW,MAAM,OAAQ,MAAS,CACtC,IAAM,eACJ,KAAK,gBACL,KAAK,YACL,KAAK,qBACL,KAAK,KACP,OAAO,OAAO,gBAAkB,EAAE,IAAM,OAAO,YAAc,EAAE,CACjE,CAAC,EAED,GAAI,SAAS,SAAW,MAAM,OAC5B,MAAO,GAKT,GAFA,WAAa,GAET,SAAS,OAAS,EACpB,YAAc,YAAY,cAAc,UAAW,IAAA,GAAW,CAC5D,GAAG,KAAK,MACR,MAAO,QACT,CAAC,MACI,CACL,IAAM,UAAY,YAAY,QAAQ,IAAI,IAAM,KAAK,QAAQ,EAC7D,YAAc,YAAY,OAAO,UAAW,SAAS,CACvD,CAEA,MAAO,EACT,CAAC,EAEG,YAAc,UAChB,SAAS,WAAW,EAGf,UACT,CACJ,CACF,CACF,CAAC"}