@eventcatalog/core 0.1.9 → 0.1.13

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 (205) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +35 -29
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1bay4w0 +1 -1
  6. package/.next/cache/next-server.js.nft.json +1 -1
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack +0 -0
  9. package/.next/cache/webpack/server-production/0.pack +0 -0
  10. package/.next/cache/webpack/server-production/index.pack +0 -0
  11. package/.next/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.json +1 -1
  13. package/.next/routes-manifest.json +1 -1
  14. package/.next/server/chunks/565.js +6 -6
  15. package/.next/server/chunks/{730.js → 685.js} +411 -2
  16. package/.next/server/chunks/944.js +25 -2
  17. package/.next/server/pages/404.html +1 -1
  18. package/.next/server/pages/500.html +1 -1
  19. package/.next/server/pages/_app.js +7 -3
  20. package/.next/server/pages/events/AddedItemToCart/logs.html +1 -1
  21. package/.next/server/pages/events/AddedItemToCart/v/0.0.1.html +6 -6
  22. package/.next/server/pages/events/AddedItemToCart/v/0.0.1.json +1 -1
  23. package/.next/server/pages/events/AddedItemToCart/v/0.0.2.html +6 -6
  24. package/.next/server/pages/events/AddedItemToCart/v/0.0.2.json +1 -1
  25. package/.next/server/pages/events/AddedItemToCart.html +6 -6
  26. package/.next/server/pages/events/AddedItemToCart.json +1 -1
  27. package/.next/server/pages/events/OrderComplete/logs.html +1 -1
  28. package/.next/server/pages/events/OrderComplete.html +6 -6
  29. package/.next/server/pages/events/OrderComplete.json +1 -1
  30. package/.next/server/pages/events/OrderConfirmed/logs.html +1 -1
  31. package/.next/server/pages/events/OrderConfirmed.html +3 -21
  32. package/.next/server/pages/events/OrderConfirmed.json +1 -1
  33. package/.next/server/pages/events/OrderRequested/logs.html +1 -1
  34. package/.next/server/pages/events/OrderRequested.html +6 -6
  35. package/.next/server/pages/events/OrderRequested.json +1 -1
  36. package/.next/server/pages/events/PaymentProcessed/logs.html +1 -1
  37. package/.next/server/pages/events/PaymentProcessed.html +6 -6
  38. package/.next/server/pages/events/PaymentProcessed.json +1 -1
  39. package/.next/server/pages/events/RemovedItemFromCart/logs.html +1 -1
  40. package/.next/server/pages/events/RemovedItemFromCart.html +6 -6
  41. package/.next/server/pages/events/RemovedItemFromCart.json +1 -1
  42. package/.next/server/pages/events/ShipmentDelivered/logs.html +1 -1
  43. package/.next/server/pages/events/ShipmentDelivered.html +3 -23
  44. package/.next/server/pages/events/ShipmentDelivered.json +1 -1
  45. package/.next/server/pages/events/ShipmentDispatched/logs.html +1 -1
  46. package/.next/server/pages/events/ShipmentDispatched.html +6 -6
  47. package/.next/server/pages/events/ShipmentDispatched.json +1 -1
  48. package/.next/server/pages/events/ShipmentPrepared/logs.html +1 -1
  49. package/.next/server/pages/events/ShipmentPrepared.html +2 -20
  50. package/.next/server/pages/events/ShipmentPrepared.json +1 -1
  51. package/.next/server/pages/events/[name]/v/[version].js +15 -1
  52. package/.next/server/pages/events/[name]/v/[version].js.nft.json +1 -1
  53. package/.next/server/pages/events/[name].js +15 -1
  54. package/.next/server/pages/events/[name].js.nft.json +1 -1
  55. package/.next/server/pages/events.html +3 -3
  56. package/.next/server/pages/events.json +1 -1
  57. package/.next/server/pages/index.html +1 -1
  58. package/.next/server/pages/overview.html +1 -1
  59. package/.next/server/pages/overview.json +1 -1
  60. package/.next/server/pages/services/Basket Service.html +8 -8
  61. package/.next/server/pages/services/Basket Service.json +1 -1
  62. package/.next/server/pages/services/Data Lake.html +10 -10
  63. package/.next/server/pages/services/Data Lake.json +1 -1
  64. package/.next/server/pages/services/Payment Service.html +6 -6
  65. package/.next/server/pages/services/Payment Service.json +1 -1
  66. package/.next/server/pages/services/Shipping Service.html +2 -28
  67. package/.next/server/pages/services/Shipping Service.json +1 -1
  68. package/.next/server/pages/services/[name].js +40 -3
  69. package/.next/server/pages/services/[name].js.nft.json +1 -1
  70. package/.next/server/pages/services.html +2 -2
  71. package/.next/server/pages/services.json +1 -1
  72. package/.next/server/pages/users/dboyne.html +3 -3
  73. package/.next/server/pages/users/dboyne.json +1 -1
  74. package/.next/server/pages/users/mSmith.html +3 -3
  75. package/.next/server/pages/users/mSmith.json +1 -1
  76. package/.next/static/Wp8i1_b29rcfszKFNI7O4/_buildManifest.js +1 -0
  77. package/.next/static/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/_middlewareManifest.js +0 -0
  78. package/.next/static/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/_ssgManifest.js +0 -0
  79. package/{out/_next/static/chunks/178-9b89f5c036d77ab9.js → .next/static/chunks/178-bc36881df28d1bab.js} +1 -1
  80. package/.next/static/chunks/280-06401c009983574c.js +1 -0
  81. package/.next/static/chunks/620-d80b0351ea428525.js +1 -0
  82. package/.next/static/chunks/651-7a25d8468f22423c.js +1 -0
  83. package/.next/static/chunks/b744740b-94e91620ba96ccbf.js +1 -0
  84. package/.next/static/chunks/pages/_app-46c2e0f1ff3b4efb.js +1 -0
  85. package/.next/static/chunks/pages/events/[name]/v/{[version]-f6619ec4056cc70d.js → [version]-d8d4d12f05da9c8a.js} +1 -1
  86. package/.next/static/chunks/pages/events/{[name]-73ecab7171745a3f.js → [name]-89e1edc81aa51fc3.js} +1 -1
  87. package/.next/static/chunks/pages/events-1f39499146c9c75f.js +1 -0
  88. package/.next/static/chunks/pages/services/[name]-204382bfbc48b1b4.js +1 -0
  89. package/.next/static/chunks/pages/services-f52121c6dc1211aa.js +1 -0
  90. package/{out/_next/static/chunks/pages/users/[id]-a4274bfad4d9a9ec.js → .next/static/chunks/pages/users/[id]-d3140bb155f8fb45.js} +1 -1
  91. package/.next/static/chunks/{webpack-2ebfdb1666dac4ad.js → webpack-edf0c365e149f010.js} +1 -1
  92. package/.next/static/css/f756e2a0d8f4db27.css +3 -0
  93. package/.next/trace +56 -54
  94. package/CHANGELOG.md +24 -0
  95. package/components/Header.tsx +4 -3
  96. package/components/Mdx/NodeGraph/GraphElements.ts +183 -0
  97. package/components/Mdx/NodeGraph/GraphLayout.ts +57 -0
  98. package/components/Mdx/NodeGraph/NodeGraph.tsx +130 -0
  99. package/components/Mdx/NodeGraph/__tests__/GraphElements.spec.ts +98 -0
  100. package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +104 -0
  101. package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphElements.spec.ts.snap +661 -0
  102. package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphLayout.spec.ts.snap +81 -0
  103. package/lib/__tests__/graphs.spec.ts +8 -8
  104. package/lib/graphs.ts +6 -6
  105. package/out/404/index.html +1 -1
  106. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/AddedItemToCart/logs.json +0 -0
  107. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/AddedItemToCart/v/0.0.1.json +1 -1
  108. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/AddedItemToCart/v/0.0.2.json +1 -1
  109. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/AddedItemToCart.json +1 -1
  110. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/OrderComplete/logs.json +0 -0
  111. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/OrderComplete.json +1 -1
  112. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/OrderConfirmed/logs.json +0 -0
  113. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/OrderConfirmed.json +1 -1
  114. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/OrderRequested/logs.json +0 -0
  115. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/OrderRequested.json +1 -1
  116. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/PaymentProcessed/logs.json +0 -0
  117. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/PaymentProcessed.json +1 -1
  118. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/RemovedItemFromCart/logs.json +0 -0
  119. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/RemovedItemFromCart.json +1 -1
  120. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/ShipmentDelivered/logs.json +0 -0
  121. package/out/_next/data/Wp8i1_b29rcfszKFNI7O4/events/ShipmentDelivered.json +1 -0
  122. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/ShipmentDispatched/logs.json +0 -0
  123. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/ShipmentDispatched.json +1 -1
  124. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/ShipmentPrepared/logs.json +0 -0
  125. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events/ShipmentPrepared.json +1 -1
  126. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/events.json +1 -1
  127. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/overview.json +1 -1
  128. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/services/Basket Service.json +1 -1
  129. package/out/_next/data/Wp8i1_b29rcfszKFNI7O4/services/Data Lake.json +1 -0
  130. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/services/Payment Service.json +1 -1
  131. package/out/_next/data/Wp8i1_b29rcfszKFNI7O4/services/Shipping Service.json +1 -0
  132. package/out/_next/data/Wp8i1_b29rcfszKFNI7O4/services.json +1 -0
  133. package/out/_next/data/Wp8i1_b29rcfszKFNI7O4/users/dboyne.json +1 -0
  134. package/out/_next/data/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/users/mSmith.json +1 -1
  135. package/out/_next/static/Wp8i1_b29rcfszKFNI7O4/_buildManifest.js +1 -0
  136. package/out/_next/static/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/_middlewareManifest.js +0 -0
  137. package/out/_next/static/{_D78gGWWcjFmvj_jqGXW3 → Wp8i1_b29rcfszKFNI7O4}/_ssgManifest.js +0 -0
  138. package/{.next/static/chunks/178-9b89f5c036d77ab9.js → out/_next/static/chunks/178-bc36881df28d1bab.js} +1 -1
  139. package/out/_next/static/chunks/280-06401c009983574c.js +1 -0
  140. package/out/_next/static/chunks/620-d80b0351ea428525.js +1 -0
  141. package/out/_next/static/chunks/651-7a25d8468f22423c.js +1 -0
  142. package/out/_next/static/chunks/b744740b-94e91620ba96ccbf.js +1 -0
  143. package/out/_next/static/chunks/pages/_app-46c2e0f1ff3b4efb.js +1 -0
  144. package/out/_next/static/chunks/pages/events/[name]/v/{[version]-f6619ec4056cc70d.js → [version]-d8d4d12f05da9c8a.js} +1 -1
  145. package/out/_next/static/chunks/pages/events/{[name]-73ecab7171745a3f.js → [name]-89e1edc81aa51fc3.js} +1 -1
  146. package/out/_next/static/chunks/pages/events-1f39499146c9c75f.js +1 -0
  147. package/out/_next/static/chunks/pages/services/[name]-204382bfbc48b1b4.js +1 -0
  148. package/out/_next/static/chunks/pages/services-f52121c6dc1211aa.js +1 -0
  149. package/{.next/static/chunks/pages/users/[id]-a4274bfad4d9a9ec.js → out/_next/static/chunks/pages/users/[id]-d3140bb155f8fb45.js} +1 -1
  150. package/out/_next/static/chunks/{webpack-2ebfdb1666dac4ad.js → webpack-edf0c365e149f010.js} +1 -1
  151. package/out/_next/static/css/f756e2a0d8f4db27.css +3 -0
  152. package/out/events/AddedItemToCart/index.html +6 -6
  153. package/out/events/AddedItemToCart/logs/index.html +1 -1
  154. package/out/events/AddedItemToCart/v/0.0.1/index.html +6 -6
  155. package/out/events/AddedItemToCart/v/0.0.2/index.html +6 -6
  156. package/out/events/OrderComplete/index.html +6 -6
  157. package/out/events/OrderComplete/logs/index.html +1 -1
  158. package/out/events/OrderConfirmed/index.html +3 -21
  159. package/out/events/OrderConfirmed/logs/index.html +1 -1
  160. package/out/events/OrderRequested/index.html +6 -6
  161. package/out/events/OrderRequested/logs/index.html +1 -1
  162. package/out/events/PaymentProcessed/index.html +6 -6
  163. package/out/events/PaymentProcessed/logs/index.html +1 -1
  164. package/out/events/RemovedItemFromCart/index.html +6 -6
  165. package/out/events/RemovedItemFromCart/logs/index.html +1 -1
  166. package/out/events/ShipmentDelivered/index.html +3 -23
  167. package/out/events/ShipmentDelivered/logs/index.html +1 -1
  168. package/out/events/ShipmentDispatched/index.html +6 -6
  169. package/out/events/ShipmentDispatched/logs/index.html +1 -1
  170. package/out/events/ShipmentPrepared/index.html +2 -20
  171. package/out/events/ShipmentPrepared/logs/index.html +1 -1
  172. package/out/events/index.html +3 -3
  173. package/out/index.html +1 -1
  174. package/out/overview/index.html +1 -1
  175. package/out/services/Basket Service/index.html +8 -8
  176. package/out/services/Data Lake/index.html +10 -10
  177. package/out/services/Payment Service/index.html +6 -6
  178. package/out/services/Shipping Service/index.html +2 -28
  179. package/out/services/index.html +2 -2
  180. package/out/users/dboyne/index.html +3 -3
  181. package/out/users/mSmith/index.html +3 -3
  182. package/package.json +3 -1
  183. package/pages/events/[name].tsx +36 -0
  184. package/pages/services/[name].tsx +36 -0
  185. package/.next/static/_D78gGWWcjFmvj_jqGXW3/_buildManifest.js +0 -1
  186. package/.next/static/chunks/336-b1acb0b6aa306baf.js +0 -1
  187. package/.next/static/chunks/650-4004943b2a9623ca.js +0 -1
  188. package/.next/static/chunks/pages/_app-c205def1388372e3.js +0 -1
  189. package/.next/static/chunks/pages/events-c9e5a0fa7d23d620.js +0 -1
  190. package/.next/static/chunks/pages/services/[name]-d8873d29190a6447.js +0 -1
  191. package/.next/static/chunks/pages/services-30e4132ef02b1784.js +0 -1
  192. package/.next/static/css/0b54ec6503b91283.css +0 -3
  193. package/out/_next/data/_D78gGWWcjFmvj_jqGXW3/events/ShipmentDelivered.json +0 -1
  194. package/out/_next/data/_D78gGWWcjFmvj_jqGXW3/services/Data Lake.json +0 -1
  195. package/out/_next/data/_D78gGWWcjFmvj_jqGXW3/services/Shipping Service.json +0 -1
  196. package/out/_next/data/_D78gGWWcjFmvj_jqGXW3/services.json +0 -1
  197. package/out/_next/data/_D78gGWWcjFmvj_jqGXW3/users/dboyne.json +0 -1
  198. package/out/_next/static/_D78gGWWcjFmvj_jqGXW3/_buildManifest.js +0 -1
  199. package/out/_next/static/chunks/336-b1acb0b6aa306baf.js +0 -1
  200. package/out/_next/static/chunks/650-4004943b2a9623ca.js +0 -1
  201. package/out/_next/static/chunks/pages/_app-c205def1388372e3.js +0 -1
  202. package/out/_next/static/chunks/pages/events-c9e5a0fa7d23d620.js +0 -1
  203. package/out/_next/static/chunks/pages/services/[name]-d8873d29190a6447.js +0 -1
  204. package/out/_next/static/chunks/pages/services-30e4132ef02b1784.js +0 -1
  205. package/out/_next/static/css/0b54ec6503b91283.css +0 -3
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
- exports.id = 730;
3
- exports.ids = [730];
2
+ exports.id = 685;
3
+ exports.ids = [685];
4
4
  exports.modules = {
5
5
 
6
6
  /***/ 2455:
@@ -238,6 +238,415 @@ function Admonition({ children , type , className ='' }) {
238
238
  };
239
239
 
240
240
 
241
+ /***/ }),
242
+
243
+ /***/ 1262:
244
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
245
+
246
+
247
+ // EXPORTS
248
+ __webpack_require__.d(__webpack_exports__, {
249
+ "Z": () => (/* binding */ NodeGraph_NodeGraph)
250
+ });
251
+
252
+ // EXTERNAL MODULE: external "react/jsx-runtime"
253
+ var jsx_runtime_ = __webpack_require__(997);
254
+ // EXTERNAL MODULE: external "react"
255
+ var external_react_ = __webpack_require__(6689);
256
+ // EXTERNAL MODULE: external "react-flow-renderer"
257
+ var external_react_flow_renderer_ = __webpack_require__(6987);
258
+ var external_react_flow_renderer_default = /*#__PURE__*/__webpack_require__.n(external_react_flow_renderer_);
259
+ // EXTERNAL MODULE: external "next/config"
260
+ var config_ = __webpack_require__(4558);
261
+ var config_default = /*#__PURE__*/__webpack_require__.n(config_);
262
+ ;// CONCATENATED MODULE: ./components/Mdx/NodeGraph/GraphElements.ts
263
+
264
+
265
+ const { publicRuntimeConfig: { basePath ='' } = {
266
+ } } = config_default()();
267
+ const MIN_NODE_WIDTH = 150;
268
+ const generateLink = (value, type)=>basePath !== '' ? `${basePath}/${type}/${value}` : `/${type}/${value}`
269
+ ;
270
+ const calcWidth = (value)=>value.length * 7 > MIN_NODE_WIDTH ? value.length * 7 : MIN_NODE_WIDTH
271
+ ;
272
+ const buildNodeEdge = ({ id , target , source , isAnimated =true })=>({
273
+ id,
274
+ target,
275
+ source,
276
+ type: 'smoothstep',
277
+ arrowHeadType: external_react_flow_renderer_.ArrowHeadType.ArrowClosed,
278
+ animated: isAnimated
279
+ })
280
+ ;
281
+ const buildNodeData = ({ label , type , maxWidth })=>{
282
+ const width = calcWidth(label);
283
+ const linkType = type === 'service' ? 'services' : 'events';
284
+ const link = generateLink(label, linkType);
285
+ return {
286
+ label,
287
+ link,
288
+ width,
289
+ maxWidth
290
+ };
291
+ };
292
+ /**
293
+ * Builds a graph for a given event
294
+ * @param {Event} - event
295
+ * @param rootNodeColor - The color of the root node
296
+ * @param isAnimated - whether to animate the graph
297
+ */ const getEventElements = ({ name: eventName , producers: eventProducers , consumers: eventConsumers }, rootNodeColor = '#2563eb', isAnimated = true)=>{
298
+ const position = {
299
+ x: 0,
300
+ y: 0
301
+ };
302
+ const consumerColor = '#818cf8';
303
+ const producerColor = '#75d7b6';
304
+ const producersNames = eventProducers.map((s)=>calcWidth(s)
305
+ );
306
+ const maxProducersWidth = Math.max(...producersNames);
307
+ const consumersNames = eventConsumers.map((s)=>calcWidth(s)
308
+ );
309
+ const maxConsumersWidth = Math.max(...consumersNames);
310
+ const eventNameAsNodeID = `ev-${eventName.replace(/ /g, '_')}`;
311
+ const eventNodeWidth = calcWidth(eventName);
312
+ const producers = eventProducers.map((node)=>({
313
+ label: node,
314
+ id: `pr-${node.replace(/ /g, '_')}`
315
+ })
316
+ );
317
+ const consumers = eventConsumers.map((node)=>({
318
+ label: node,
319
+ id: `co-${node.replace(/ /g, '_')}`
320
+ })
321
+ );
322
+ // Transforms services & event into a graph model
323
+ const producersNodes = producers.map(({ label , id })=>{
324
+ const nodeWidth = calcWidth(label);
325
+ const diff = maxProducersWidth - nodeWidth;
326
+ const nodeMaxWidth = diff !== 0 ? nodeWidth - diff : maxProducersWidth;
327
+ return {
328
+ id,
329
+ data: buildNodeData({
330
+ label,
331
+ type: 'service',
332
+ maxWidth: nodeMaxWidth
333
+ }),
334
+ style: {
335
+ border: `2px solid ${producerColor}`,
336
+ width: nodeWidth
337
+ },
338
+ type: 'input',
339
+ position
340
+ };
341
+ });
342
+ const consumersNodes = consumers.map(({ id , label })=>{
343
+ const width = calcWidth(label);
344
+ return {
345
+ id,
346
+ data: buildNodeData({
347
+ label,
348
+ type: 'service',
349
+ maxWidth: maxConsumersWidth
350
+ }),
351
+ style: {
352
+ border: `2px solid ${consumerColor}`,
353
+ width
354
+ },
355
+ type: 'output',
356
+ position
357
+ };
358
+ });
359
+ const eventNode = {
360
+ id: eventNameAsNodeID,
361
+ data: buildNodeData({
362
+ label: eventName,
363
+ type: 'event',
364
+ maxWidth: eventNodeWidth
365
+ }),
366
+ style: {
367
+ border: `2px solid ${rootNodeColor}`,
368
+ width: eventNodeWidth
369
+ },
370
+ position
371
+ };
372
+ // Build connections
373
+ const producersEdges = producers.map(({ id , label })=>buildNodeEdge({
374
+ id: `epe-${label.replace(/ /g, '_')}`,
375
+ source: id,
376
+ target: eventNameAsNodeID,
377
+ isAnimated
378
+ })
379
+ );
380
+ const consumersEdges = consumers.map(({ id , label })=>buildNodeEdge({
381
+ id: `ece-${label.replace(/ /g, '_')}`,
382
+ target: id,
383
+ source: eventNameAsNodeID,
384
+ isAnimated
385
+ })
386
+ );
387
+ // Merge nodes in order
388
+ const elements = [
389
+ ...producersNodes,
390
+ eventNode,
391
+ ...consumersNodes,
392
+ ...producersEdges,
393
+ ...consumersEdges
394
+ ];
395
+ return elements;
396
+ };
397
+ /**
398
+ * Builds a graph for a given service
399
+ * @param {Service} service
400
+ * @param {string} rootNodeColor of the root node
401
+ * @param isAnimated whether the graph should be animated
402
+ * @returns {string} Mermaid Graph
403
+ */ const getServiceElements = ({ publishes , subscribes , name: serviceName }, rootNodeColor = '#2563eb', isAnimated = true)=>{
404
+ const position = {
405
+ x: 0,
406
+ y: 0
407
+ };
408
+ const publishColor = '#818cf8';
409
+ const subscribeColor = '#75d7b6';
410
+ const publishesNames = publishes.map((e)=>calcWidth(e.name)
411
+ );
412
+ const maxPublishesWidth = Math.max(...publishesNames);
413
+ const subscribesNames = subscribes.map((e)=>calcWidth(e.name)
414
+ );
415
+ const maxSubscribesWidth = Math.max(...subscribesNames);
416
+ const serviceNameAsNodeID = `ser-${serviceName.replace(/ /g, '_')}`;
417
+ // Transforms services & event into a graph model
418
+ const publishesNodes = publishes.map((node)=>{
419
+ const nodeWidth = calcWidth(node.name);
420
+ return {
421
+ id: `pub-${node.name.replace(/ /g, '_')}`,
422
+ data: buildNodeData({
423
+ label: node.name,
424
+ type: 'event',
425
+ maxWidth: maxPublishesWidth
426
+ }),
427
+ style: {
428
+ border: `2px solid ${publishColor}`,
429
+ width: nodeWidth
430
+ },
431
+ type: 'output',
432
+ position
433
+ };
434
+ });
435
+ const subscribesNodes = subscribes.map((node)=>{
436
+ const nodeWidth = calcWidth(node.name);
437
+ const diff = maxSubscribesWidth - nodeWidth;
438
+ const nodeMaxWidth = diff !== 0 ? nodeWidth - diff : maxSubscribesWidth;
439
+ return {
440
+ id: `sub-${node.name.replace(/ /g, '_')}`,
441
+ data: buildNodeData({
442
+ label: node.name,
443
+ type: 'event',
444
+ maxWidth: nodeMaxWidth
445
+ }),
446
+ style: {
447
+ border: `2px solid ${subscribeColor}`,
448
+ width: nodeWidth
449
+ },
450
+ type: 'input',
451
+ position
452
+ };
453
+ });
454
+ const serviceNode = {
455
+ id: serviceNameAsNodeID,
456
+ data: buildNodeData({
457
+ label: serviceName,
458
+ type: 'service',
459
+ maxWidth: calcWidth(serviceName)
460
+ }),
461
+ style: {
462
+ border: `2px solid ${rootNodeColor}`,
463
+ width: calcWidth(serviceName)
464
+ },
465
+ position
466
+ };
467
+ // Build connections
468
+ const publishesEdges = publishes.map((node)=>buildNodeEdge({
469
+ id: `ecp-${node.name.replace(/ /g, '_')}`,
470
+ source: serviceNameAsNodeID,
471
+ target: `pub-${node.name.replace(/ /g, '_')}`,
472
+ isAnimated
473
+ })
474
+ );
475
+ const subscribesEdges = subscribes.map((node)=>buildNodeEdge({
476
+ id: `esc-${node.name.replace(/ /g, '_')}`,
477
+ target: serviceNameAsNodeID,
478
+ source: `sub-${node.name.replace(/ /g, '_')}`,
479
+ isAnimated
480
+ })
481
+ );
482
+ // Merge nodes in order
483
+ const elements = [
484
+ ...subscribesNodes,
485
+ serviceNode,
486
+ ...publishesNodes,
487
+ ...publishesEdges,
488
+ ...subscribesEdges
489
+ ];
490
+ return elements;
491
+ };
492
+
493
+ // EXTERNAL MODULE: external "dagre"
494
+ var external_dagre_ = __webpack_require__(4214);
495
+ var external_dagre_default = /*#__PURE__*/__webpack_require__.n(external_dagre_);
496
+ ;// CONCATENATED MODULE: ./components/Mdx/NodeGraph/GraphLayout.ts
497
+
498
+
499
+ const nodeDefaultWidth = 150;
500
+ const nodeDefaultHeight = 36;
501
+ const offset = 48;
502
+ const verticalOffset = offset / 1.5;
503
+ function createGraphLayout(elements, isHorizontal) {
504
+ const dagreGraph = new (external_dagre_default()).graphlib.Graph();
505
+ dagreGraph.setDefaultEdgeLabel(()=>({
506
+ })
507
+ );
508
+ dagreGraph.setGraph({
509
+ rankdir: 'LR',
510
+ ranksep: offset * 2,
511
+ nodesep: verticalOffset
512
+ });
513
+ elements.forEach((element)=>{
514
+ if ((0,external_react_flow_renderer_.isNode)(element)) {
515
+ var ref, ref1, ref2, ref3;
516
+ // eslint-disable-next-line no-underscore-dangle
517
+ const nodeWidth = ((ref = element.__rf) === null || ref === void 0 ? void 0 : ref.width) ? (ref1 = element.__rf) === null || ref1 === void 0 ? void 0 : ref1.width : (ref2 = element.data) === null || ref2 === void 0 ? void 0 : ref2.width;
518
+ dagreGraph.setNode(element.id, {
519
+ width: nodeWidth || nodeDefaultWidth,
520
+ // eslint-disable-next-line no-underscore-dangle
521
+ height: ((ref3 = element.__rf) === null || ref3 === void 0 ? void 0 : ref3.height) || nodeDefaultHeight
522
+ });
523
+ } else {
524
+ dagreGraph.setEdge(element.source, element.target);
525
+ }
526
+ });
527
+ // Calculate the layout, to get the node positions with their widths and heights
528
+ external_dagre_default().layout(dagreGraph);
529
+ return elements.map((element)=>{
530
+ if ((0,external_react_flow_renderer_.isNode)(element)) {
531
+ var ref;
532
+ const node = dagreGraph.node(element.id);
533
+ element.targetPosition = isHorizontal ? external_react_flow_renderer_.Position.Left : external_react_flow_renderer_.Position.Top;
534
+ element.sourcePosition = isHorizontal ? external_react_flow_renderer_.Position.Right : external_react_flow_renderer_.Position.Bottom;
535
+ element.position = {
536
+ x: offset / 2 + node.x - ((element === null || element === void 0 ? void 0 : (ref = element.data) === null || ref === void 0 ? void 0 : ref.maxWidth) || node.width) / 2,
537
+ y: node.y - node.height / 2
538
+ };
539
+ }
540
+ return element;
541
+ });
542
+ };
543
+ // Helper - ReactFlow canvas height calculator
544
+ const calcCanvasHeight = (data, type)=>{
545
+ const minHeight = 300;
546
+ const nodeSpacing = nodeDefaultHeight + verticalOffset;
547
+ let nodesHeight = 0;
548
+ if (type === 'event') {
549
+ nodesHeight = Math.max(data.producers.length, data.consumers.length) * nodeSpacing;
550
+ } else {
551
+ nodesHeight = Math.max(data.publishes.length, data.subscribes.length) * nodeSpacing;
552
+ }
553
+ return Math.max(minHeight, nodesHeight);
554
+ };
555
+
556
+ ;// CONCATENATED MODULE: ./components/Mdx/NodeGraph/NodeGraph.tsx
557
+
558
+
559
+
560
+
561
+
562
+ // NodeGraphBuilder component wrapping ReactFlow
563
+ function NodeGraphBuilder({ data , source , rootNodeColor , maxZoom =10 , isAnimated =true , fitView =true , zoomOnScroll =false , isDraggable =false , isHorizontal =true }) {
564
+ // Load event or service elements for graph
565
+ let initialElements;
566
+ if (source === 'event') {
567
+ initialElements = getEventElements(data, rootNodeColor, isAnimated);
568
+ } else {
569
+ initialElements = getServiceElements(data, rootNodeColor, isAnimated);
570
+ }
571
+ // Initialize graph layout
572
+ const isInitializedRef = (0,external_react_.useRef)(false);
573
+ const nodes = (0,external_react_flow_renderer_.useStoreState)((state)=>state.nodes
574
+ );
575
+ const edges = (0,external_react_flow_renderer_.useStoreState)((state)=>state.edges
576
+ );
577
+ // Calculate initial element layout
578
+ const graphElements = createGraphLayout(initialElements, isHorizontal);
579
+ const { 0: elements , 1: setElements } = (0,external_react_.useState)(graphElements);
580
+ // Rerender graph layout to get rendered width/height for nodes/edges
581
+ (0,external_react_.useEffect)(()=>{
582
+ var // eslint-disable-next-line no-underscore-dangle
583
+ ref;
584
+ if (isInitializedRef.current === false && nodes.length > 0 && (nodes === null || nodes === void 0 ? void 0 : (ref = nodes[0]) === null || ref === void 0 ? void 0 : ref.__rf.width) != null) {
585
+ // Calculate element layout
586
+ const updateElements = ()=>{
587
+ const updatedElements = createGraphLayout([
588
+ ...nodes,
589
+ ...edges
590
+ ], isHorizontal);
591
+ setElements(updatedElements);
592
+ isInitializedRef.current = true;
593
+ };
594
+ updateElements();
595
+ }
596
+ }, [
597
+ nodes,
598
+ edges,
599
+ isInitializedRef,
600
+ isHorizontal
601
+ ]);
602
+ // ReactFlow operations
603
+ const onElementClick = (event, element)=>window.open(element.data.link, '_self')
604
+ ;
605
+ const onLoad = (0,external_react_.useCallback)((reactFlowInstance)=>{
606
+ if (fitView) {
607
+ reactFlowInstance.fitView();
608
+ }
609
+ }, [
610
+ fitView
611
+ ]);
612
+ return(/*#__PURE__*/ jsx_runtime_.jsx((external_react_flow_renderer_default()), {
613
+ elements: elements,
614
+ onLoad: onLoad,
615
+ onElementClick: onElementClick,
616
+ nodesDraggable: isDraggable,
617
+ zoomOnScroll: zoomOnScroll,
618
+ maxZoom: maxZoom,
619
+ children: /*#__PURE__*/ jsx_runtime_.jsx(external_react_flow_renderer_.Controls, {
620
+ })
621
+ }));
622
+ }
623
+ // NodeGraph wrapping NodeGraphBuilder Component
624
+ function NodeGraph({ data , source , rootNodeColor , maxHeight , maxZoom , fitView , zoomOnScroll , isAnimated , isDraggable , isHorizontal }) {
625
+ // Set dynamic height of node graph
626
+ const dynamicHeight = maxHeight || calcCanvasHeight(data, source);
627
+ return(/*#__PURE__*/ jsx_runtime_.jsx("div", {
628
+ className: "node-graph w-full border-dashed border-2 border-slate-300",
629
+ style: {
630
+ height: dynamicHeight
631
+ },
632
+ children: /*#__PURE__*/ jsx_runtime_.jsx(external_react_flow_renderer_.ReactFlowProvider, {
633
+ children: /*#__PURE__*/ jsx_runtime_.jsx(NodeGraphBuilder, {
634
+ source: source,
635
+ data: data,
636
+ rootNodeColor: rootNodeColor,
637
+ maxZoom: maxZoom,
638
+ fitView: fitView,
639
+ zoomOnScroll: zoomOnScroll,
640
+ isAnimated: isAnimated,
641
+ isDraggable: isDraggable,
642
+ isHorizontal: isHorizontal
643
+ })
644
+ })
645
+ }));
646
+ }
647
+ /* harmony default export */ const NodeGraph_NodeGraph = (NodeGraph);
648
+
649
+
241
650
  /***/ }),
242
651
 
243
652
  /***/ 4488:
@@ -509,7 +509,7 @@ __webpack_require__.r(__webpack_exports__);
509
509
  /* harmony import */ var next_mdx_remote__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_mdx_remote__WEBPACK_IMPORTED_MODULE_2__);
510
510
  /* harmony import */ var _components_Mdx_Admonition__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1790);
511
511
  /* harmony import */ var _components_Mdx_Examples__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3067);
512
- /* harmony import */ var _utils_random_bg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(6892);
512
+ /* harmony import */ var _utils_random_bg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(6892);
513
513
  /* harmony import */ var _components_ContentView__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2455);
514
514
  /* harmony import */ var _components_Mermaid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(788);
515
515
  /* harmony import */ var _components_Sidebars_EventSidebar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9610);
@@ -519,6 +519,7 @@ __webpack_require__.r(__webpack_exports__);
519
519
  /* harmony import */ var _components_Mdx_SchemaViewer_SchemaViewer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7228);
520
520
  /* harmony import */ var _lib_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(9959);
521
521
  /* harmony import */ var _hooks_EventCatalog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(5008);
522
+ /* harmony import */ var _components_Mdx_NodeGraph_NodeGraph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(1262);
522
523
  var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_lib_events__WEBPACK_IMPORTED_MODULE_12__, _components_Mermaid__WEBPACK_IMPORTED_MODULE_6__, _components_Mdx_Examples__WEBPACK_IMPORTED_MODULE_4__, _components_Mdx_SchemaViewer_SchemaViewer__WEBPACK_IMPORTED_MODULE_11__, _components_SyntaxHighlighter__WEBPACK_IMPORTED_MODULE_10__]);
523
524
  ([_lib_events__WEBPACK_IMPORTED_MODULE_12__, _components_Mermaid__WEBPACK_IMPORTED_MODULE_6__, _components_Mdx_Examples__WEBPACK_IMPORTED_MODULE_4__, _components_Mdx_SchemaViewer_SchemaViewer__WEBPACK_IMPORTED_MODULE_11__, _components_SyntaxHighlighter__WEBPACK_IMPORTED_MODULE_10__] = __webpack_async_dependencies__.then ? await __webpack_async_dependencies__ : __webpack_async_dependencies__);
524
525
 
@@ -536,6 +537,7 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_lib
536
537
 
537
538
 
538
539
 
540
+
539
541
  const getComponents = ({ event , schema , examples })=>({
540
542
  code: ({ className , ...props })=>{
541
543
  const match = /language-(\w+)/.exec(className || '');
@@ -606,11 +608,32 @@ const getComponents = ({ event , schema , examples })=>({
606
608
  /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components_Mermaid__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
607
609
  source: "event",
608
610
  data: event,
609
- rootNodeColor: (0,_utils_random_bg__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z)(event.name),
611
+ rootNodeColor: (0,_utils_random_bg__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z)(event.name),
610
612
  charts: charts
611
613
  })
612
614
  ]
613
615
  })
616
+ ,
617
+ NodeGraph: ({ title , maxHeight , maxZoom , fitView , zoomOnScroll , isAnimated , isDraggable })=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
618
+ className: "mx-auto w-full",
619
+ children: [
620
+ title && /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("h2", {
621
+ className: "text-lg font-medium text-gray-900 underline",
622
+ children: title
623
+ }),
624
+ /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_components_Mdx_NodeGraph_NodeGraph__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z, {
625
+ source: "event",
626
+ data: event,
627
+ rootNodeColor: (0,_utils_random_bg__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z)(event.name),
628
+ maxHeight: maxHeight,
629
+ maxZoom: maxZoom,
630
+ fitView: fitView,
631
+ zoomOnScroll: zoomOnScroll,
632
+ isAnimated: isAnimated,
633
+ isDraggable: isDraggable
634
+ })
635
+ ]
636
+ })
614
637
  })
615
638
  ;
616
639
  function Events(props) {
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><script src="//unpkg.com/three"></script><script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css"/><meta name="description" content="An open source project to Discover, Explore and Document your Event Driven Architectures."/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:description" content="An open source tool powered by markdown to document your Event Driven Architecture."/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><title>404: This page could not be found</title><meta name="next-head-count" content="18"/><link rel="preload" href="/_next/static/css/0b54ec6503b91283.css" as="style"/><link rel="stylesheet" href="/_next/static/css/0b54ec6503b91283.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-2ebfdb1666dac4ad.js" defer=""></script><script src="/_next/static/chunks/framework-576ec6a1c1386453.js" defer=""></script><script src="/_next/static/chunks/main-0015f560a7edeb35.js" defer=""></script><script src="/_next/static/chunks/pages/_app-c205def1388372e3.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/_D78gGWWcjFmvj_jqGXW3/_buildManifest.js" defer=""></script><script src="/_next/static/_D78gGWWcjFmvj_jqGXW3/_ssgManifest.js" defer=""></script><script src="/_next/static/_D78gGWWcjFmvj_jqGXW3/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="bg-gray-800"><div class="max-w-7xl mx-auto "><div class="relative flex items-center justify-between h-16"><div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"><div class="flex-shrink-0 flex items-center text-white font-bold"><a class="flex items-center" href="/"><img alt="logo" class="text-white w-8 inline-block mr-3" src="/logo.svg"/><span class="text-xl">EventCatalog</span></a></div></div><div class="hidden sm:block sm:ml-6"><div class="flex space-x-4"><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/events/">Events</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/services/">Services</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/overview/">3D Node Graph</a></div></div></div></div></div><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.</h2></div></div></div><footer class="bg-gray-800"><div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8"><nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer"><div class="px-5 py-2"><a href="/events" class="text-base text-gray-500 hover:text-gray-900">Events</a></div><div class="px-5 py-2"><a href="/services" class="text-base text-gray-500 hover:text-gray-900">Services</a></div><div class="px-5 py-2"><a href="/overview" class="text-base text-gray-500 hover:text-gray-900">3D Node Graph</a></div><div class="px-5 py-2"><a href="https://github.com/boyney123/eventcatalog-demo/edit/master" class="text-base text-gray-500 hover:text-gray-900">GitHub</a></div></nav><p class="mt-8 text-center text-base text-gray-400">Copyright © <!-- -->2022<!-- --> <!-- -->Your Company<!-- -->. Built with<!-- --> <a class="underline" href="https://eventcatalog.dev" target="_blank" rel="noreferrer">EventCatalog.</a></p></div></footer></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"_D78gGWWcjFmvj_jqGXW3","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><script src="//unpkg.com/three"></script><script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css"/><meta name="description" content="An open source project to Discover, Explore and Document your Event Driven Architectures."/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:description" content="An open source tool powered by markdown to document your Event Driven Architecture."/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><title>404: This page could not be found</title><meta name="next-head-count" content="18"/><link rel="preload" href="/_next/static/css/f756e2a0d8f4db27.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f756e2a0d8f4db27.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-edf0c365e149f010.js" defer=""></script><script src="/_next/static/chunks/framework-576ec6a1c1386453.js" defer=""></script><script src="/_next/static/chunks/main-0015f560a7edeb35.js" defer=""></script><script src="/_next/static/chunks/pages/_app-46c2e0f1ff3b4efb.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/Wp8i1_b29rcfszKFNI7O4/_buildManifest.js" defer=""></script><script src="/_next/static/Wp8i1_b29rcfszKFNI7O4/_ssgManifest.js" defer=""></script><script src="/_next/static/Wp8i1_b29rcfszKFNI7O4/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="bg-gray-800"><div class="max-w-7xl mx-auto "><div class="relative flex items-center justify-between h-16"><div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"><div class="flex-shrink-0 flex items-center text-white font-bold"><a class="flex items-center" href="/"><img alt="logo" class="text-white w-8 inline-block mr-3" src="/logo.svg"/><span class="text-xl">EventCatalog</span></a></div></div><div class="hidden sm:block sm:ml-6"><div class="flex space-x-4"><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/events/">Events</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/services/">Services</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/overview/">3D Node Graph</a></div></div></div></div></div><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.</h2></div></div></div><footer class="bg-gray-800"><div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8"><nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer"><div class="px-5 py-2"><a href="/events" class="text-base text-gray-500 hover:text-gray-900">Events</a></div><div class="px-5 py-2"><a href="/services" class="text-base text-gray-500 hover:text-gray-900">Services</a></div><div class="px-5 py-2"><a href="/overview" class="text-base text-gray-500 hover:text-gray-900">3D Node Graph</a></div><div class="px-5 py-2"><a href="https://github.com/boyney123/eventcatalog-demo/edit/master" class="text-base text-gray-500 hover:text-gray-900">GitHub</a></div></nav><p class="mt-8 text-center text-base text-gray-400">Copyright © <!-- -->2022<!-- --> <!-- -->Your Company<!-- -->. Built with<!-- --> <a class="underline" href="https://eventcatalog.dev" target="_blank" rel="noreferrer">EventCatalog.</a></p></div></footer></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"Wp8i1_b29rcfszKFNI7O4","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><script src="//unpkg.com/three"></script><script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css"/><meta name="description" content="An open source project to Discover, Explore and Document your Event Driven Architectures."/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:description" content="An open source tool powered by markdown to document your Event Driven Architecture."/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><title>500: Internal Server Error</title><meta name="next-head-count" content="18"/><link rel="preload" href="/_next/static/css/0b54ec6503b91283.css" as="style"/><link rel="stylesheet" href="/_next/static/css/0b54ec6503b91283.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-2ebfdb1666dac4ad.js" defer=""></script><script src="/_next/static/chunks/framework-576ec6a1c1386453.js" defer=""></script><script src="/_next/static/chunks/main-0015f560a7edeb35.js" defer=""></script><script src="/_next/static/chunks/pages/_app-c205def1388372e3.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/_D78gGWWcjFmvj_jqGXW3/_buildManifest.js" defer=""></script><script src="/_next/static/_D78gGWWcjFmvj_jqGXW3/_ssgManifest.js" defer=""></script><script src="/_next/static/_D78gGWWcjFmvj_jqGXW3/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="bg-gray-800"><div class="max-w-7xl mx-auto "><div class="relative flex items-center justify-between h-16"><div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"><div class="flex-shrink-0 flex items-center text-white font-bold"><a class="flex items-center" href="/"><img alt="logo" class="text-white w-8 inline-block mr-3" src="/logo.svg"/><span class="text-xl">EventCatalog</span></a></div></div><div class="hidden sm:block sm:ml-6"><div class="flex space-x-4"><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/events/">Events</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/services/">Services</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/overview/">3D Node Graph</a></div></div></div></div></div><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">Internal Server Error<!-- -->.</h2></div></div></div><footer class="bg-gray-800"><div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8"><nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer"><div class="px-5 py-2"><a href="/events" class="text-base text-gray-500 hover:text-gray-900">Events</a></div><div class="px-5 py-2"><a href="/services" class="text-base text-gray-500 hover:text-gray-900">Services</a></div><div class="px-5 py-2"><a href="/overview" class="text-base text-gray-500 hover:text-gray-900">3D Node Graph</a></div><div class="px-5 py-2"><a href="https://github.com/boyney123/eventcatalog-demo/edit/master" class="text-base text-gray-500 hover:text-gray-900">GitHub</a></div></nav><p class="mt-8 text-center text-base text-gray-400">Copyright © <!-- -->2022<!-- --> <!-- -->Your Company<!-- -->. Built with<!-- --> <a class="underline" href="https://eventcatalog.dev" target="_blank" rel="noreferrer">EventCatalog.</a></p></div></footer></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"_D78gGWWcjFmvj_jqGXW3","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><script src="//unpkg.com/three"></script><script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css"/><meta name="description" content="An open source project to Discover, Explore and Document your Event Driven Architectures."/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:description" content="An open source tool powered by markdown to document your Event Driven Architecture."/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><title>500: Internal Server Error</title><meta name="next-head-count" content="18"/><link rel="preload" href="/_next/static/css/f756e2a0d8f4db27.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f756e2a0d8f4db27.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-edf0c365e149f010.js" defer=""></script><script src="/_next/static/chunks/framework-576ec6a1c1386453.js" defer=""></script><script src="/_next/static/chunks/main-0015f560a7edeb35.js" defer=""></script><script src="/_next/static/chunks/pages/_app-46c2e0f1ff3b4efb.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/Wp8i1_b29rcfszKFNI7O4/_buildManifest.js" defer=""></script><script src="/_next/static/Wp8i1_b29rcfszKFNI7O4/_ssgManifest.js" defer=""></script><script src="/_next/static/Wp8i1_b29rcfszKFNI7O4/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="bg-gray-800"><div class="max-w-7xl mx-auto "><div class="relative flex items-center justify-between h-16"><div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"><div class="flex-shrink-0 flex items-center text-white font-bold"><a class="flex items-center" href="/"><img alt="logo" class="text-white w-8 inline-block mr-3" src="/logo.svg"/><span class="text-xl">EventCatalog</span></a></div></div><div class="hidden sm:block sm:ml-6"><div class="flex space-x-4"><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/events/">Events</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/services/">Services</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/overview/">3D Node Graph</a></div></div></div></div></div><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">Internal Server Error<!-- -->.</h2></div></div></div><footer class="bg-gray-800"><div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8"><nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer"><div class="px-5 py-2"><a href="/events" class="text-base text-gray-500 hover:text-gray-900">Events</a></div><div class="px-5 py-2"><a href="/services" class="text-base text-gray-500 hover:text-gray-900">Services</a></div><div class="px-5 py-2"><a href="/overview" class="text-base text-gray-500 hover:text-gray-900">3D Node Graph</a></div><div class="px-5 py-2"><a href="https://github.com/boyney123/eventcatalog-demo/edit/master" class="text-base text-gray-500 hover:text-gray-900">GitHub</a></div></nav><p class="mt-8 text-center text-base text-gray-400">Copyright © <!-- -->2022<!-- --> <!-- -->Your Company<!-- -->. Built with<!-- --> <a class="underline" href="https://eventcatalog.dev" target="_blank" rel="noreferrer">EventCatalog.</a></p></div></footer></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"Wp8i1_b29rcfszKFNI7O4","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -54,10 +54,14 @@ function classNames(...classes) {
54
54
  return classes.filter(Boolean).join(' ');
55
55
  }
56
56
  function Example() {
57
- const { title , homepageLink } = (0,EventCatalog/* useConfig */.ZR)();
57
+ const { title , homepageLink , logo } = (0,EventCatalog/* useConfig */.ZR)();
58
58
  const router = (0,router_namespaceObject.useRouter)();
59
59
  const { publicRuntimeConfig: { basePath ='' } = {
60
60
  } } = config_default()();
61
+ const logoToLoad = logo || {
62
+ alt: 'EventCatalog Logo',
63
+ src: `logo.svg`
64
+ };
61
65
  return(/*#__PURE__*/ jsx_runtime_.jsx("div", {
62
66
  className: "bg-gray-800",
63
67
  children: /*#__PURE__*/ jsx_runtime_.jsx("div", {
@@ -78,7 +82,7 @@ function Example() {
78
82
  /*#__PURE__*/ jsx_runtime_.jsx("img", {
79
83
  alt: "logo",
80
84
  className: "text-white w-8 inline-block mr-3",
81
- src: `${basePath}/logo.svg`
85
+ src: `${basePath}/${logoToLoad.src}`
82
86
  }),
83
87
  /*#__PURE__*/ jsx_runtime_.jsx("span", {
84
88
  className: "text-xl",
@@ -94,7 +98,7 @@ function Example() {
94
98
  /*#__PURE__*/ jsx_runtime_.jsx("img", {
95
99
  alt: "logo",
96
100
  className: "text-white w-8 inline-block mr-3",
97
- src: `${basePath}/logo.svg`
101
+ src: `${basePath}/${logoToLoad.src}`
98
102
  }),
99
103
  /*#__PURE__*/ jsx_runtime_.jsx("span", {
100
104
  className: "text-xl",