@aphexcms/cms-core 8.1.0 → 9.1.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 (290) hide show
  1. package/dist/api/api-keys.d.ts +8 -3
  2. package/dist/api/api-keys.d.ts.map +1 -1
  3. package/dist/api/schemas/assets.js +1 -1
  4. package/dist/api/schemas/documents.d.ts +0 -2
  5. package/dist/api/schemas/documents.d.ts.map +1 -1
  6. package/dist/api/schemas/documents.js +2 -8
  7. package/dist/api/schemas/instance.d.ts +6 -0
  8. package/dist/api/schemas/instance.d.ts.map +1 -0
  9. package/dist/api/schemas/instance.js +7 -0
  10. package/dist/api/schemas/user.js +1 -1
  11. package/dist/auth/auth-hooks.d.ts.map +1 -1
  12. package/dist/auth/auth-hooks.js +9 -3
  13. package/dist/cli/generate-types.d.ts.map +1 -1
  14. package/dist/cli/generate-types.js +198 -11
  15. package/dist/cli/generate-types.js.map +1 -1
  16. package/dist/components/AdminApp.svelte +55 -149
  17. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  18. package/dist/components/admin/DocumentEditor.svelte +282 -253
  19. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  20. package/dist/components/admin/DocumentVersionPanel.svelte +3 -2
  21. package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -1
  22. package/dist/components/admin/MediaBrowser.svelte +29 -11
  23. package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
  24. package/dist/components/admin/ObjectModal.svelte +62 -75
  25. package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
  26. package/dist/components/admin/SchemaField.svelte +2 -2
  27. package/dist/components/admin/fields/ArrayField.svelte +13 -3
  28. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
  29. package/dist/components/admin/fields/FileField.svelte +1 -1
  30. package/dist/components/admin/fields/ImageField.svelte +1 -1
  31. package/dist/components/admin/fields/ReferenceField.svelte +42 -11
  32. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
  33. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte +116 -0
  34. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts +12 -0
  35. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts.map +1 -0
  36. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte +111 -0
  37. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte.d.ts +12 -0
  38. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte.d.ts.map +1 -0
  39. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte +67 -0
  40. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts +12 -0
  41. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts.map +1 -0
  42. package/dist/components/admin/fields/richtext/RichtextField.svelte +1296 -0
  43. package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts +15 -0
  44. package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts.map +1 -0
  45. package/dist/components/admin/fields/richtext/custom-annotation-mark.d.ts +7 -0
  46. package/dist/components/admin/fields/richtext/custom-annotation-mark.d.ts.map +1 -0
  47. package/dist/components/admin/fields/richtext/custom-annotation-mark.js +33 -0
  48. package/dist/components/admin/fields/richtext/portable-text-inline-object.d.ts +11 -0
  49. package/dist/components/admin/fields/richtext/portable-text-inline-object.d.ts.map +1 -0
  50. package/dist/components/admin/fields/richtext/portable-text-inline-object.js +31 -0
  51. package/dist/components/admin/fields/richtext/portable-text-object-node.d.ts +11 -0
  52. package/dist/components/admin/fields/richtext/portable-text-object-node.d.ts.map +1 -0
  53. package/dist/components/admin/fields/richtext/portable-text-object-node.js +31 -0
  54. package/dist/components/admin/fields/richtext/portable-text-serializer.d.ts +38 -0
  55. package/dist/components/admin/fields/richtext/portable-text-serializer.d.ts.map +1 -0
  56. package/dist/components/admin/fields/richtext/portable-text-serializer.js +297 -0
  57. package/dist/components/admin/fields/richtext/svelte-inline-node-view.d.ts +8 -0
  58. package/dist/components/admin/fields/richtext/svelte-inline-node-view.d.ts.map +1 -0
  59. package/dist/components/admin/fields/richtext/svelte-inline-node-view.js +67 -0
  60. package/dist/components/admin/fields/richtext/svelte-node-view.d.ts +8 -0
  61. package/dist/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -0
  62. package/dist/components/admin/fields/richtext/svelte-node-view.js +63 -0
  63. package/dist/components/layout/OrganizationSwitcher.svelte +1 -1
  64. package/dist/components/layout/sidebar/NavMain.svelte +9 -1
  65. package/dist/components/layout/sidebar/NavMain.svelte.d.ts.map +1 -1
  66. package/dist/db/interfaces/asset.d.ts +2 -4
  67. package/dist/db/interfaces/asset.d.ts.map +1 -1
  68. package/dist/db/interfaces/document.d.ts +8 -2
  69. package/dist/db/interfaces/document.d.ts.map +1 -1
  70. package/dist/db/interfaces/organization.d.ts +1 -1
  71. package/dist/db/interfaces/organization.d.ts.map +1 -1
  72. package/dist/field-access.d.ts.map +1 -1
  73. package/dist/field-access.js +5 -1
  74. package/dist/graphql/depth-limit.d.ts +8 -0
  75. package/dist/graphql/depth-limit.d.ts.map +1 -0
  76. package/dist/graphql/depth-limit.js +79 -0
  77. package/dist/graphql/index.d.ts.map +1 -1
  78. package/dist/graphql/index.js +12 -1
  79. package/dist/graphql/resolvers.d.ts.map +1 -1
  80. package/dist/graphql/resolvers.js +22 -22
  81. package/dist/graphql/schema.d.ts.map +1 -1
  82. package/dist/graphql/schema.js +7 -3
  83. package/dist/hooks.d.ts +2 -0
  84. package/dist/hooks.d.ts.map +1 -1
  85. package/dist/hooks.js +5 -2
  86. package/dist/lib/api/api-keys.d.ts +8 -3
  87. package/dist/lib/api/api-keys.d.ts.map +1 -1
  88. package/dist/lib/api/api-keys.js.map +1 -1
  89. package/dist/lib/api/schemas/assets.js +1 -1
  90. package/dist/lib/api/schemas/assets.js.map +1 -1
  91. package/dist/lib/api/schemas/documents.d.ts +0 -2
  92. package/dist/lib/api/schemas/documents.d.ts.map +1 -1
  93. package/dist/lib/api/schemas/documents.js +2 -8
  94. package/dist/lib/api/schemas/documents.js.map +1 -1
  95. package/dist/lib/api/schemas/instance.d.ts +6 -0
  96. package/dist/lib/api/schemas/instance.d.ts.map +1 -0
  97. package/dist/lib/api/schemas/instance.js +8 -0
  98. package/dist/lib/api/schemas/instance.js.map +1 -0
  99. package/dist/lib/api/schemas/user.js +1 -1
  100. package/dist/lib/auth/auth-hooks.d.ts.map +1 -1
  101. package/dist/lib/auth/auth-hooks.js +9 -3
  102. package/dist/lib/auth/auth-hooks.js.map +1 -1
  103. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.d.ts +7 -0
  104. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.d.ts.map +1 -0
  105. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.js +34 -0
  106. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.js.map +1 -0
  107. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.d.ts +11 -0
  108. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.d.ts.map +1 -0
  109. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.js +32 -0
  110. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.js.map +1 -0
  111. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.d.ts +11 -0
  112. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.d.ts.map +1 -0
  113. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.js +32 -0
  114. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.js.map +1 -0
  115. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.d.ts +38 -0
  116. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.d.ts.map +1 -0
  117. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.js +298 -0
  118. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.js.map +1 -0
  119. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.d.ts +8 -0
  120. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.d.ts.map +1 -0
  121. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.js +68 -0
  122. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.js.map +1 -0
  123. package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts +8 -0
  124. package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -0
  125. package/dist/lib/components/admin/fields/richtext/svelte-node-view.js +64 -0
  126. package/dist/lib/components/admin/fields/richtext/svelte-node-view.js.map +1 -0
  127. package/dist/lib/db/interfaces/asset.d.ts +2 -4
  128. package/dist/lib/db/interfaces/asset.d.ts.map +1 -1
  129. package/dist/lib/db/interfaces/document.d.ts +8 -2
  130. package/dist/lib/db/interfaces/document.d.ts.map +1 -1
  131. package/dist/lib/db/interfaces/organization.d.ts +1 -1
  132. package/dist/lib/db/interfaces/organization.d.ts.map +1 -1
  133. package/dist/lib/field-access.d.ts.map +1 -1
  134. package/dist/lib/field-access.js +5 -1
  135. package/dist/lib/field-access.js.map +1 -1
  136. package/dist/lib/graphql/depth-limit.d.ts +8 -0
  137. package/dist/lib/graphql/depth-limit.d.ts.map +1 -0
  138. package/dist/lib/graphql/depth-limit.js +80 -0
  139. package/dist/lib/graphql/depth-limit.js.map +1 -0
  140. package/dist/lib/graphql/index.d.ts.map +1 -1
  141. package/dist/lib/graphql/index.js +12 -1
  142. package/dist/lib/graphql/index.js.map +1 -1
  143. package/dist/lib/graphql/resolvers.d.ts.map +1 -1
  144. package/dist/lib/graphql/resolvers.js +22 -22
  145. package/dist/lib/graphql/resolvers.js.map +1 -1
  146. package/dist/lib/graphql/schema.d.ts.map +1 -1
  147. package/dist/lib/graphql/schema.js +7 -3
  148. package/dist/lib/graphql/schema.js.map +1 -1
  149. package/dist/lib/hooks.d.ts +2 -0
  150. package/dist/lib/hooks.d.ts.map +1 -1
  151. package/dist/lib/hooks.js +5 -2
  152. package/dist/lib/hooks.js.map +1 -1
  153. package/dist/lib/local-api/collection-api.d.ts.map +1 -1
  154. package/dist/lib/local-api/collection-api.js +14 -9
  155. package/dist/lib/local-api/collection-api.js.map +1 -1
  156. package/dist/lib/local-api/index.d.ts +5 -1
  157. package/dist/lib/local-api/index.d.ts.map +1 -1
  158. package/dist/lib/local-api/index.js +12 -4
  159. package/dist/lib/local-api/index.js.map +1 -1
  160. package/dist/lib/routes/assets-cdn.d.ts.map +1 -1
  161. package/dist/lib/routes/assets-cdn.js +8 -3
  162. package/dist/lib/routes/assets-cdn.js.map +1 -1
  163. package/dist/lib/schema-utils/validator.d.ts.map +1 -1
  164. package/dist/lib/schema-utils/validator.js +5 -1
  165. package/dist/lib/schema-utils/validator.js.map +1 -1
  166. package/dist/lib/server/api/index.d.ts.map +1 -1
  167. package/dist/lib/server/api/index.js +18 -0
  168. package/dist/lib/server/api/index.js.map +1 -1
  169. package/dist/lib/server/api/routes/assets-bulk.d.ts.map +1 -1
  170. package/dist/lib/server/api/routes/assets-bulk.js +4 -0
  171. package/dist/lib/server/api/routes/assets-bulk.js.map +1 -1
  172. package/dist/lib/server/api/routes/assets-by-id.d.ts.map +1 -1
  173. package/dist/lib/server/api/routes/assets-by-id.js +17 -2
  174. package/dist/lib/server/api/routes/assets-by-id.js.map +1 -1
  175. package/dist/lib/server/api/routes/assets-references.d.ts.map +1 -1
  176. package/dist/lib/server/api/routes/assets-references.js +6 -4
  177. package/dist/lib/server/api/routes/assets-references.js.map +1 -1
  178. package/dist/lib/server/api/routes/assets.d.ts.map +1 -1
  179. package/dist/lib/server/api/routes/assets.js +18 -9
  180. package/dist/lib/server/api/routes/assets.js.map +1 -1
  181. package/dist/lib/server/api/routes/document-versions.d.ts.map +1 -1
  182. package/dist/lib/server/api/routes/document-versions.js +8 -0
  183. package/dist/lib/server/api/routes/document-versions.js.map +1 -1
  184. package/dist/lib/server/api/routes/documents-by-id.d.ts.map +1 -1
  185. package/dist/lib/server/api/routes/documents-by-id.js +3 -3
  186. package/dist/lib/server/api/routes/documents-by-id.js.map +1 -1
  187. package/dist/lib/server/api/routes/documents-publish.d.ts.map +1 -1
  188. package/dist/lib/server/api/routes/documents-publish.js +2 -2
  189. package/dist/lib/server/api/routes/documents-publish.js.map +1 -1
  190. package/dist/lib/server/api/routes/documents-query.d.ts.map +1 -1
  191. package/dist/lib/server/api/routes/documents-query.js +2 -3
  192. package/dist/lib/server/api/routes/documents-query.js.map +1 -1
  193. package/dist/lib/server/api/routes/documents.d.ts.map +1 -1
  194. package/dist/lib/server/api/routes/documents.js +3 -5
  195. package/dist/lib/server/api/routes/documents.js.map +1 -1
  196. package/dist/lib/server/api/routes/organizations-invitations.d.ts.map +1 -1
  197. package/dist/lib/server/api/routes/organizations-invitations.js +1 -1
  198. package/dist/lib/server/api/routes/organizations-invitations.js.map +1 -1
  199. package/dist/lib/server/api/routes/organizations-members.d.ts.map +1 -1
  200. package/dist/lib/server/api/routes/organizations-members.js.map +1 -1
  201. package/dist/lib/server/index.d.ts +1 -0
  202. package/dist/lib/server/index.d.ts.map +1 -1
  203. package/dist/lib/server/index.js +2 -0
  204. package/dist/lib/server/index.js.map +1 -1
  205. package/dist/lib/services/asset-service.d.ts.map +1 -1
  206. package/dist/lib/services/asset-service.js +4 -2
  207. package/dist/lib/services/asset-service.js.map +1 -1
  208. package/dist/lib/services/references-service.d.ts.map +1 -1
  209. package/dist/lib/services/references-service.js.map +1 -1
  210. package/dist/lib/storage/adapters/local-storage-adapter.d.ts +4 -0
  211. package/dist/lib/storage/adapters/local-storage-adapter.d.ts.map +1 -1
  212. package/dist/lib/storage/adapters/local-storage-adapter.js +28 -6
  213. package/dist/lib/storage/adapters/local-storage-adapter.js.map +1 -1
  214. package/dist/lib/types/capabilities.d.ts +1 -0
  215. package/dist/lib/types/capabilities.d.ts.map +1 -1
  216. package/dist/lib/types/capabilities.js +3 -0
  217. package/dist/lib/types/capabilities.js.map +1 -1
  218. package/dist/lib/types/config.d.ts +16 -1
  219. package/dist/lib/types/config.d.ts.map +1 -1
  220. package/dist/lib/types/schemas.d.ts +27 -0
  221. package/dist/lib/types/schemas.d.ts.map +1 -1
  222. package/dist/lib/types/schemas.js +3 -1
  223. package/dist/lib/types/schemas.js.map +1 -1
  224. package/dist/lib/utils/logger.d.ts +8 -6
  225. package/dist/lib/utils/logger.d.ts.map +1 -1
  226. package/dist/lib/utils/logger.js +11 -2
  227. package/dist/lib/utils/logger.js.map +1 -1
  228. package/dist/lib/utils/mime-detect.d.ts.map +1 -1
  229. package/dist/lib/utils/mime-detect.js +21 -6
  230. package/dist/lib/utils/mime-detect.js.map +1 -1
  231. package/dist/lib/vite/index.d.ts.map +1 -1
  232. package/dist/lib/vite/index.js +4 -5
  233. package/dist/lib/vite/index.js.map +1 -1
  234. package/dist/local-api/collection-api.d.ts.map +1 -1
  235. package/dist/local-api/collection-api.js +14 -9
  236. package/dist/local-api/index.d.ts +5 -1
  237. package/dist/local-api/index.d.ts.map +1 -1
  238. package/dist/local-api/index.js +12 -4
  239. package/dist/routes/assets-cdn.d.ts.map +1 -1
  240. package/dist/routes/assets-cdn.js +8 -3
  241. package/dist/schema-utils/validator.d.ts.map +1 -1
  242. package/dist/schema-utils/validator.js +5 -1
  243. package/dist/server/api/index.d.ts.map +1 -1
  244. package/dist/server/api/index.js +18 -0
  245. package/dist/server/api/routes/assets-bulk.d.ts.map +1 -1
  246. package/dist/server/api/routes/assets-bulk.js +4 -0
  247. package/dist/server/api/routes/assets-by-id.d.ts.map +1 -1
  248. package/dist/server/api/routes/assets-by-id.js +17 -2
  249. package/dist/server/api/routes/assets-references.d.ts.map +1 -1
  250. package/dist/server/api/routes/assets-references.js +6 -4
  251. package/dist/server/api/routes/assets.d.ts.map +1 -1
  252. package/dist/server/api/routes/assets.js +18 -9
  253. package/dist/server/api/routes/document-versions.d.ts.map +1 -1
  254. package/dist/server/api/routes/document-versions.js +8 -0
  255. package/dist/server/api/routes/documents-by-id.d.ts.map +1 -1
  256. package/dist/server/api/routes/documents-by-id.js +3 -3
  257. package/dist/server/api/routes/documents-publish.d.ts.map +1 -1
  258. package/dist/server/api/routes/documents-publish.js +2 -2
  259. package/dist/server/api/routes/documents-query.d.ts.map +1 -1
  260. package/dist/server/api/routes/documents-query.js +2 -3
  261. package/dist/server/api/routes/documents.d.ts.map +1 -1
  262. package/dist/server/api/routes/documents.js +3 -5
  263. package/dist/server/api/routes/organizations-invitations.d.ts.map +1 -1
  264. package/dist/server/api/routes/organizations-invitations.js +1 -1
  265. package/dist/server/api/routes/organizations-members.d.ts.map +1 -1
  266. package/dist/server/index.d.ts +1 -0
  267. package/dist/server/index.d.ts.map +1 -1
  268. package/dist/server/index.js +2 -0
  269. package/dist/services/asset-service.d.ts.map +1 -1
  270. package/dist/services/asset-service.js +4 -2
  271. package/dist/services/references-service.d.ts.map +1 -1
  272. package/dist/storage/adapters/local-storage-adapter.d.ts +4 -0
  273. package/dist/storage/adapters/local-storage-adapter.d.ts.map +1 -1
  274. package/dist/storage/adapters/local-storage-adapter.js +28 -6
  275. package/dist/types/capabilities.d.ts +1 -0
  276. package/dist/types/capabilities.d.ts.map +1 -1
  277. package/dist/types/capabilities.js +3 -0
  278. package/dist/types/config.d.ts +16 -1
  279. package/dist/types/config.d.ts.map +1 -1
  280. package/dist/types/schemas.d.ts +27 -0
  281. package/dist/types/schemas.d.ts.map +1 -1
  282. package/dist/types/schemas.js +3 -1
  283. package/dist/utils/logger.d.ts +8 -6
  284. package/dist/utils/logger.d.ts.map +1 -1
  285. package/dist/utils/logger.js +11 -2
  286. package/dist/utils/mime-detect.d.ts.map +1 -1
  287. package/dist/utils/mime-detect.js +21 -6
  288. package/dist/vite/index.d.ts.map +1 -1
  289. package/dist/vite/index.js +4 -5
  290. package/package.json +9 -5
@@ -0,0 +1,15 @@
1
+ import { type PortableTextValue } from './portable-text-serializer.js';
2
+ import type { ArrayField as ArrayFieldType } from '../../../../types/schemas.js';
3
+ interface Props {
4
+ field: ArrayFieldType;
5
+ value: PortableTextValue | null | undefined;
6
+ onUpdate: (value: PortableTextValue) => void;
7
+ validationClasses?: string;
8
+ readonly?: boolean;
9
+ onOpenReference?: (documentId: string, documentType: string) => void;
10
+ organizationId?: string;
11
+ }
12
+ declare const RichtextField: import("svelte").Component<Props, {}, "">;
13
+ type RichtextField = ReturnType<typeof RichtextField>;
14
+ export default RichtextField;
15
+ //# sourceMappingURL=RichtextField.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichtextField.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/RichtextField.svelte.ts"],"names":[],"mappings":"AA4BA,OAAO,EAGL,KAAK,iBAAiB,EACtB,MAAM,4BAA4B,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,2BAA2B,CAAC;AASzF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAi+BF,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Mark } from '@tiptap/core';
2
+ export interface CustomAnnotationOptions {
3
+ annotationType: string;
4
+ onEdit: (attrs: Record<string, unknown>) => void;
5
+ }
6
+ export declare function createAnnotationMark(name: string): Mark<CustomAnnotationOptions, any>;
7
+ //# sourceMappingURL=custom-annotation-mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-annotation-mark.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/custom-annotation-mark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,sCAmChD"}
@@ -0,0 +1,33 @@
1
+ import { Mark, mergeAttributes } from '@tiptap/core';
2
+ export function createAnnotationMark(name) {
3
+ return Mark.create({
4
+ name: `annotation_${name}`,
5
+ inclusive: false,
6
+ addOptions() {
7
+ return {
8
+ annotationType: name,
9
+ onEdit: () => { }
10
+ };
11
+ },
12
+ addAttributes() {
13
+ return {
14
+ _key: { default: null },
15
+ data: { default: {} }
16
+ };
17
+ },
18
+ parseHTML() {
19
+ return [{ tag: `span[data-annotation="${name}"]` }];
20
+ },
21
+ renderHTML({ HTMLAttributes }) {
22
+ return [
23
+ 'span',
24
+ mergeAttributes(HTMLAttributes, {
25
+ 'data-annotation': name,
26
+ class: 'richtext-annotation',
27
+ style: 'border-bottom: 2px dashed currentColor; cursor: pointer;'
28
+ }),
29
+ 0
30
+ ];
31
+ }
32
+ });
33
+ }
@@ -0,0 +1,11 @@
1
+ import { Node } from '@tiptap/core';
2
+ export interface PortableTextInlineObjectOptions {
3
+ onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void;
8
+ onDelete: (key: string) => void;
9
+ }
10
+ export declare const PortableTextInlineObject: Node<PortableTextInlineObjectOptions, any>;
11
+ //# sourceMappingURL=portable-text-inline-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-inline-object.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/portable-text-inline-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAGrD,MAAM,WAAW,+BAA+B;IAC/C,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,wBAAwB,4CAiCnC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Node, mergeAttributes } from '@tiptap/core';
2
+ import { SvelteInlineNodeViewRenderer } from './svelte-inline-node-view.js';
3
+ export const PortableTextInlineObject = Node.create({
4
+ name: 'portableTextInlineObject',
5
+ group: 'inline',
6
+ inline: true,
7
+ atom: true,
8
+ selectable: true,
9
+ addOptions() {
10
+ return {
11
+ onEdit: () => { },
12
+ onDelete: () => { }
13
+ };
14
+ },
15
+ addAttributes() {
16
+ return {
17
+ _type: { default: null },
18
+ _key: { default: null },
19
+ data: { default: {} }
20
+ };
21
+ },
22
+ parseHTML() {
23
+ return [{ tag: 'span[data-portable-text-inline]' }];
24
+ },
25
+ renderHTML({ HTMLAttributes }) {
26
+ return ['span', mergeAttributes(HTMLAttributes, { 'data-portable-text-inline': '' }), 0];
27
+ },
28
+ addNodeView() {
29
+ return SvelteInlineNodeViewRenderer(this.options.onEdit, this.options.onDelete);
30
+ }
31
+ });
@@ -0,0 +1,11 @@
1
+ import { Node } from '@tiptap/core';
2
+ export interface PortableTextObjectOptions {
3
+ onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void;
8
+ onDelete: (key: string) => void;
9
+ }
10
+ export declare const PortableTextObject: Node<PortableTextObjectOptions, any>;
11
+ //# sourceMappingURL=portable-text-object-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-object-node.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/portable-text-object-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAGrD,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,sCAiC7B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Node, mergeAttributes } from '@tiptap/core';
2
+ import { SvelteNodeViewRenderer } from './svelte-node-view.js';
3
+ export const PortableTextObject = Node.create({
4
+ name: 'portableTextObject',
5
+ group: 'block',
6
+ atom: true,
7
+ draggable: true,
8
+ selectable: true,
9
+ addOptions() {
10
+ return {
11
+ onEdit: () => { },
12
+ onDelete: () => { }
13
+ };
14
+ },
15
+ addAttributes() {
16
+ return {
17
+ _type: { default: null },
18
+ _key: { default: null },
19
+ data: { default: {} }
20
+ };
21
+ },
22
+ parseHTML() {
23
+ return [{ tag: 'div[data-portable-text-object]' }];
24
+ },
25
+ renderHTML({ HTMLAttributes }) {
26
+ return ['div', mergeAttributes(HTMLAttributes, { 'data-portable-text-object': '' }), 0];
27
+ },
28
+ addNodeView() {
29
+ return SvelteNodeViewRenderer(this.options.onEdit, this.options.onDelete);
30
+ }
31
+ });
@@ -0,0 +1,38 @@
1
+ import type { JSONContent } from '@tiptap/core';
2
+ interface PortableTextSpan {
3
+ _type: 'span';
4
+ _key: string;
5
+ text: string;
6
+ marks?: string[];
7
+ }
8
+ export interface PortableTextInlineObject {
9
+ _type: string;
10
+ _key: string;
11
+ [key: string]: unknown;
12
+ }
13
+ export type PortableTextChild = PortableTextSpan | PortableTextInlineObject;
14
+ interface PortableTextMarkDefinition {
15
+ _type: string;
16
+ _key: string;
17
+ [key: string]: unknown;
18
+ }
19
+ interface PortableTextBlock {
20
+ _type: 'block';
21
+ _key: string;
22
+ style?: string;
23
+ children: PortableTextChild[];
24
+ markDefs?: PortableTextMarkDefinition[];
25
+ listItem?: string;
26
+ level?: number;
27
+ }
28
+ export interface PortableTextCustomBlock {
29
+ _type: string;
30
+ _key: string;
31
+ [key: string]: unknown;
32
+ }
33
+ export type PortableTextNode = PortableTextBlock | PortableTextCustomBlock;
34
+ export type PortableTextValue = PortableTextNode[];
35
+ export declare function tiptapToPortableText(doc: JSONContent): PortableTextValue;
36
+ export declare function portableTextToTiptap(value: PortableTextValue): JSONContent;
37
+ export {};
38
+ //# sourceMappingURL=portable-text-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-serializer.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/portable-text-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,UAAU,gBAAgB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,wBAAwB,CAAC;AAE5E,UAAU,0BAA0B;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,UAAU,iBAAiB;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,uBAAuB,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,CAAC;AAwInD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,CA0BxE;AAuED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAyD1E"}
@@ -0,0 +1,297 @@
1
+ let keyCounter = 0;
2
+ function genKey() {
3
+ return (++keyCounter).toString(36) + Math.random().toString(36).slice(2, 6);
4
+ }
5
+ const DECORATOR_MAP = {
6
+ bold: 'strong',
7
+ italic: 'em',
8
+ underline: 'underline',
9
+ strike: 'strike-through',
10
+ code: 'code'
11
+ };
12
+ const DECORATOR_MAP_REVERSE = Object.fromEntries(Object.entries(DECORATOR_MAP).map(([k, v]) => [v, k]));
13
+ function extractMarksFromNode(node, markDefs) {
14
+ const marks = [];
15
+ if (!node.marks)
16
+ return marks;
17
+ for (const mark of node.marks) {
18
+ const markType = typeof mark === 'string' ? mark : mark.type;
19
+ const markAttrs = typeof mark === 'string' ? {} : mark.attrs || {};
20
+ if (markType === 'link') {
21
+ const key = genKey();
22
+ markDefs.push({
23
+ _type: 'link',
24
+ _key: key,
25
+ href: markAttrs.href || ''
26
+ });
27
+ marks.push(key);
28
+ }
29
+ else if (markType?.startsWith('annotation_')) {
30
+ const annotationType = markType.slice('annotation_'.length);
31
+ const key = markAttrs._key || genKey();
32
+ const existing = markDefs.find((d) => d._key === key);
33
+ if (existing) {
34
+ Object.assign(existing, { _type: annotationType, ...(markAttrs.data || {}) });
35
+ }
36
+ else {
37
+ markDefs.push({
38
+ _type: annotationType,
39
+ _key: key,
40
+ ...(markAttrs.data || {})
41
+ });
42
+ }
43
+ if (!marks.includes(key))
44
+ marks.push(key);
45
+ }
46
+ else if (DECORATOR_MAP[markType]) {
47
+ marks.push(DECORATOR_MAP[markType]);
48
+ }
49
+ }
50
+ return marks;
51
+ }
52
+ function prosemirrorBlockToPortableText(node, listItem, level) {
53
+ const markDefs = [];
54
+ const children = [];
55
+ if (node.content) {
56
+ for (const child of node.content) {
57
+ if (child.type === 'text') {
58
+ const marks = extractMarksFromNode(child, markDefs);
59
+ children.push({
60
+ _type: 'span',
61
+ _key: genKey(),
62
+ text: child.text || '',
63
+ marks: marks.length > 0 ? marks : undefined
64
+ });
65
+ }
66
+ else if (child.type === 'hardBreak') {
67
+ children.push({
68
+ _type: 'span',
69
+ _key: genKey(),
70
+ text: '\n'
71
+ });
72
+ }
73
+ else if (child.type === 'portableTextInlineObject') {
74
+ const { _type, _key, data } = child.attrs || {};
75
+ children.push({ _type, _key: _key || genKey(), ...data });
76
+ }
77
+ }
78
+ }
79
+ if (children.length === 0) {
80
+ children.push({ _type: 'span', _key: genKey(), text: '' });
81
+ }
82
+ let style = 'normal';
83
+ if (node.type === 'heading') {
84
+ style = `h${node.attrs?.level || 1}`;
85
+ }
86
+ else if (node.type === 'blockquote') {
87
+ style = 'blockquote';
88
+ }
89
+ const block = {
90
+ _type: 'block',
91
+ _key: genKey(),
92
+ style,
93
+ children,
94
+ markDefs: markDefs.length > 0 ? markDefs : undefined
95
+ };
96
+ if (listItem) {
97
+ block.listItem = listItem;
98
+ block.level = level;
99
+ }
100
+ return block;
101
+ }
102
+ function flattenListItems(node, listType, level, result) {
103
+ if (!node.content)
104
+ return;
105
+ for (const listItem of node.content) {
106
+ if (listItem.type !== 'listItem')
107
+ continue;
108
+ for (const child of listItem.content || []) {
109
+ if (child.type === 'paragraph' || child.type === 'heading') {
110
+ result.push(prosemirrorBlockToPortableText(child, listType, level));
111
+ }
112
+ else if (child.type === 'bulletList' || child.type === 'orderedList') {
113
+ const nestedType = child.type === 'bulletList' ? 'bullet' : 'number';
114
+ flattenListItems(child, nestedType, level + 1, result);
115
+ }
116
+ }
117
+ }
118
+ }
119
+ export function tiptapToPortableText(doc) {
120
+ const blocks = [];
121
+ if (!doc.content)
122
+ return blocks;
123
+ for (const node of doc.content) {
124
+ if (node.type === 'paragraph' || node.type === 'heading') {
125
+ blocks.push(prosemirrorBlockToPortableText(node));
126
+ }
127
+ else if (node.type === 'blockquote') {
128
+ for (const child of node.content || []) {
129
+ if (child.type === 'paragraph') {
130
+ const block = prosemirrorBlockToPortableText(child);
131
+ block.style = 'blockquote';
132
+ blocks.push(block);
133
+ }
134
+ }
135
+ }
136
+ else if (node.type === 'bulletList' || node.type === 'orderedList') {
137
+ const listType = node.type === 'bulletList' ? 'bullet' : 'number';
138
+ flattenListItems(node, listType, 1, blocks);
139
+ }
140
+ else if (node.type === 'portableTextObject') {
141
+ const { _type, _key, data } = node.attrs || {};
142
+ blocks.push({ _type, _key: _key || genKey(), ...data });
143
+ }
144
+ }
145
+ return blocks;
146
+ }
147
+ function buildMarkLookup(markDefs) {
148
+ const map = new Map();
149
+ if (markDefs) {
150
+ for (const def of markDefs) {
151
+ map.set(def._key, def);
152
+ }
153
+ }
154
+ return map;
155
+ }
156
+ function spansToTiptapContent(children, markDefs) {
157
+ const markLookup = buildMarkLookup(markDefs);
158
+ const result = [];
159
+ for (const child of children) {
160
+ if (child._type !== 'span') {
161
+ const { _type, _key, ...data } = child;
162
+ result.push({
163
+ type: 'portableTextInlineObject',
164
+ attrs: { _type, _key, data }
165
+ });
166
+ continue;
167
+ }
168
+ const span = child;
169
+ if (span.text === '\n') {
170
+ result.push({ type: 'hardBreak' });
171
+ continue;
172
+ }
173
+ // ProseMirror rejects empty text nodes
174
+ if (!span.text)
175
+ continue;
176
+ const marks = [];
177
+ if (span.marks) {
178
+ for (const markRef of span.marks) {
179
+ const def = markLookup.get(markRef);
180
+ if (def && def._type === 'link') {
181
+ marks.push({
182
+ type: 'link',
183
+ attrs: { href: def.href, target: null, rel: null, class: null }
184
+ });
185
+ }
186
+ else if (def) {
187
+ const { _type, _key, ...data } = def;
188
+ marks.push({
189
+ type: `annotation_${_type}`,
190
+ attrs: { _key, data }
191
+ });
192
+ }
193
+ else if (DECORATOR_MAP_REVERSE[markRef]) {
194
+ marks.push({ type: DECORATOR_MAP_REVERSE[markRef] });
195
+ }
196
+ }
197
+ }
198
+ result.push({
199
+ type: 'text',
200
+ text: span.text,
201
+ ...(marks.length > 0 ? { marks } : {})
202
+ });
203
+ }
204
+ return result;
205
+ }
206
+ export function portableTextToTiptap(value) {
207
+ const doc = { type: 'doc', content: [] };
208
+ if (!value || value.length === 0) {
209
+ doc.content = [{ type: 'paragraph' }];
210
+ return doc;
211
+ }
212
+ let i = 0;
213
+ while (i < value.length) {
214
+ const node = value[i];
215
+ if (node._type !== 'block') {
216
+ const { _type, _key, ...data } = node;
217
+ doc.content.push({
218
+ type: 'portableTextObject',
219
+ attrs: { _type, _key, data }
220
+ });
221
+ i++;
222
+ continue;
223
+ }
224
+ const block = node;
225
+ if (block.listItem) {
226
+ const listType = block.listItem === 'number' ? 'orderedList' : 'bulletList';
227
+ const listNode = buildListNode(value, i, listType, block.level || 1);
228
+ doc.content.push(listNode.node);
229
+ i = listNode.nextIndex;
230
+ continue;
231
+ }
232
+ if (block.style === 'blockquote') {
233
+ const content = spansToTiptapContent(block.children, block.markDefs);
234
+ doc.content.push({
235
+ type: 'blockquote',
236
+ content: [{ type: 'paragraph', content: content.length > 0 ? content : undefined }]
237
+ });
238
+ }
239
+ else if (block.style?.startsWith('h')) {
240
+ const level = parseInt(block.style.slice(1), 10);
241
+ const content = spansToTiptapContent(block.children, block.markDefs);
242
+ doc.content.push({
243
+ type: 'heading',
244
+ attrs: { level },
245
+ content: content.length > 0 ? content : undefined
246
+ });
247
+ }
248
+ else {
249
+ const content = spansToTiptapContent(block.children, block.markDefs);
250
+ doc.content.push({
251
+ type: 'paragraph',
252
+ content: content.length > 0 ? content : undefined
253
+ });
254
+ }
255
+ i++;
256
+ }
257
+ return doc;
258
+ }
259
+ function buildListNode(blocks, startIndex, listType, level) {
260
+ const items = [];
261
+ let i = startIndex;
262
+ while (i < blocks.length) {
263
+ const node = blocks[i];
264
+ if (node._type !== 'block')
265
+ break;
266
+ const block = node;
267
+ if (!block.listItem)
268
+ break;
269
+ const blockLevel = block.level || 1;
270
+ if (blockLevel < level)
271
+ break;
272
+ if (blockLevel === level) {
273
+ const content = spansToTiptapContent(block.children, block.markDefs);
274
+ const itemContent = [{ type: 'paragraph', content }];
275
+ i++;
276
+ const next = i < blocks.length ? blocks[i] : null;
277
+ if (next &&
278
+ next._type === 'block' &&
279
+ next.listItem &&
280
+ (next.level || 1) > level) {
281
+ const nestedType = next.listItem === 'number' ? 'orderedList' : 'bulletList';
282
+ const nested = buildListNode(blocks, i, nestedType, blockLevel + 1);
283
+ itemContent.push(nested.node);
284
+ i = nested.nextIndex;
285
+ }
286
+ items.push({ type: 'listItem', content: itemContent });
287
+ }
288
+ else {
289
+ break;
290
+ }
291
+ }
292
+ const nodeType = listType === 'orderedList' ? 'orderedList' : 'bulletList';
293
+ return {
294
+ node: { type: nodeType, content: items },
295
+ nextIndex: i
296
+ };
297
+ }
@@ -0,0 +1,8 @@
1
+ import type { NodeViewRendererProps } from '@tiptap/core';
2
+ import type { NodeView as ProseMirrorNodeView } from '@tiptap/pm/view';
3
+ export declare function SvelteInlineNodeViewRenderer(onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void, onDelete: (key: string) => void): (props: NodeViewRendererProps) => ProseMirrorNodeView;
8
+ //# sourceMappingURL=svelte-inline-node-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-inline-node-view.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/svelte-inline-node-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAIvE,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,KAAK,IAAI,EACvF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,IAEvB,OAAO,qBAAqB,KAAG,mBAAmB,CAiE1D"}
@@ -0,0 +1,67 @@
1
+ import { mount, unmount } from 'svelte';
2
+ import PortableTextInlineView from './PortableTextInlineView.svelte';
3
+ export function SvelteInlineNodeViewRenderer(onEdit, onDelete) {
4
+ return (props) => {
5
+ const wrapper = document.createElement('span');
6
+ wrapper.setAttribute('data-portable-text-inline', '');
7
+ wrapper.setAttribute('data-node-view-wrapper', '');
8
+ wrapper.contentEditable = 'false';
9
+ wrapper.style.display = 'inline';
10
+ let nodeAttrs = props.node.attrs;
11
+ function mountView() {
12
+ return mount(PortableTextInlineView, {
13
+ target: wrapper,
14
+ props: {
15
+ type: nodeAttrs._type,
16
+ nodeKey: nodeAttrs._key,
17
+ data: nodeAttrs.data,
18
+ selected: false,
19
+ onEdit: () => {
20
+ onEdit({
21
+ _type: nodeAttrs._type,
22
+ _key: nodeAttrs._key,
23
+ data: nodeAttrs.data
24
+ });
25
+ },
26
+ onDelete: () => {
27
+ onDelete(nodeAttrs._key);
28
+ }
29
+ }
30
+ });
31
+ }
32
+ let currentComponent = mountView();
33
+ return {
34
+ dom: wrapper,
35
+ update(node) {
36
+ if (node.type.name !== 'portableTextInlineObject')
37
+ return false;
38
+ nodeAttrs = node.attrs;
39
+ unmount(currentComponent);
40
+ currentComponent = mountView();
41
+ return true;
42
+ },
43
+ selectNode() {
44
+ wrapper.classList.add('ProseMirror-selectednode');
45
+ onEdit({
46
+ _type: nodeAttrs._type,
47
+ _key: nodeAttrs._key,
48
+ data: nodeAttrs.data
49
+ });
50
+ },
51
+ deselectNode() {
52
+ wrapper.classList.remove('ProseMirror-selectednode');
53
+ },
54
+ destroy() {
55
+ unmount(currentComponent);
56
+ },
57
+ stopEvent(event) {
58
+ if (event.type === 'mousedown' || event.type === 'click')
59
+ return true;
60
+ return false;
61
+ },
62
+ ignoreMutation() {
63
+ return true;
64
+ }
65
+ };
66
+ };
67
+ }
@@ -0,0 +1,8 @@
1
+ import type { NodeViewRendererProps } from '@tiptap/core';
2
+ import type { NodeView as ProseMirrorNodeView } from '@tiptap/pm/view';
3
+ export declare function SvelteNodeViewRenderer(onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void, onDelete: (key: string) => void): (props: NodeViewRendererProps) => ProseMirrorNodeView;
8
+ //# sourceMappingURL=svelte-node-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-node-view.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/svelte-node-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKvE,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,KAAK,IAAI,EACvF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,IAEvB,OAAO,qBAAqB,KAAG,mBAAmB,CA8D1D"}
@@ -0,0 +1,63 @@
1
+ import { mount, unmount } from 'svelte';
2
+ import PortableTextObjectView from './PortableTextObjectView.svelte';
3
+ import PortableTextImageView from './PortableTextImageView.svelte';
4
+ export function SvelteNodeViewRenderer(onEdit, onDelete) {
5
+ return (props) => {
6
+ const wrapper = document.createElement('div');
7
+ wrapper.setAttribute('data-portable-text-object', '');
8
+ wrapper.setAttribute('data-node-view-wrapper', '');
9
+ wrapper.contentEditable = 'false';
10
+ let nodeAttrs = props.node.attrs;
11
+ function getViewComponent() {
12
+ return nodeAttrs._type === 'image' ? PortableTextImageView : PortableTextObjectView;
13
+ }
14
+ function mountView() {
15
+ return mount(getViewComponent(), {
16
+ target: wrapper,
17
+ props: {
18
+ type: nodeAttrs._type,
19
+ nodeKey: nodeAttrs._key,
20
+ data: nodeAttrs.data,
21
+ selected: false,
22
+ onEdit: () => {
23
+ onEdit({
24
+ _type: nodeAttrs._type,
25
+ _key: nodeAttrs._key,
26
+ data: nodeAttrs.data
27
+ });
28
+ },
29
+ onDelete: () => {
30
+ onDelete(nodeAttrs._key);
31
+ }
32
+ }
33
+ });
34
+ }
35
+ let currentComponent = mountView();
36
+ return {
37
+ dom: wrapper,
38
+ update(node) {
39
+ if (node.type.name !== 'portableTextObject')
40
+ return false;
41
+ nodeAttrs = node.attrs;
42
+ unmount(currentComponent);
43
+ currentComponent = mountView();
44
+ return true;
45
+ },
46
+ selectNode() {
47
+ wrapper.classList.add('ProseMirror-selectednode');
48
+ },
49
+ deselectNode() {
50
+ wrapper.classList.remove('ProseMirror-selectednode');
51
+ },
52
+ destroy() {
53
+ unmount(currentComponent);
54
+ },
55
+ stopEvent() {
56
+ return true;
57
+ },
58
+ ignoreMutation() {
59
+ return true;
60
+ }
61
+ };
62
+ };
63
+ }
@@ -71,7 +71,7 @@
71
71
 
72
72
  // Invalidate all data to refetch with new organization context
73
73
  await invalidateAll();
74
- } catch (error) {
74
+ } catch {
75
75
  toast.error('Failed to switch organization');
76
76
  } finally {
77
77
  isSwitching = false;