@asyncapi/react-component 1.0.0-next.44 → 1.0.0-next.45

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 (36) hide show
  1. package/browser/index.js +2 -2
  2. package/browser/standalone/index.js +2 -2
  3. package/browser/standalone/without-parser.js +7 -7
  4. package/browser/without-parser.js +2 -2
  5. package/lib/cjs/components/CollapseButton.js +6 -2
  6. package/lib/cjs/components/CollapseButton.js.map +1 -1
  7. package/lib/cjs/config/config.js.map +1 -1
  8. package/lib/cjs/config/default.js +2 -1
  9. package/lib/cjs/config/default.js.map +1 -1
  10. package/lib/cjs/containers/AsyncApi/Layout.js +10 -10
  11. package/lib/cjs/containers/AsyncApi/Layout.js.map +1 -1
  12. package/lib/cjs/containers/Sidebar/Sidebar.js +153 -127
  13. package/lib/cjs/containers/Sidebar/Sidebar.js.map +1 -1
  14. package/lib/cjs/helpers/specification.js +17 -0
  15. package/lib/cjs/helpers/specification.js.map +1 -1
  16. package/lib/esm/components/CollapseButton.js +5 -1
  17. package/lib/esm/components/CollapseButton.js.map +1 -1
  18. package/lib/esm/config/config.js.map +1 -1
  19. package/lib/esm/config/default.js +2 -1
  20. package/lib/esm/config/default.js.map +1 -1
  21. package/lib/esm/containers/AsyncApi/Layout.js +10 -10
  22. package/lib/esm/containers/AsyncApi/Layout.js.map +1 -1
  23. package/lib/esm/containers/Sidebar/Sidebar.js +152 -123
  24. package/lib/esm/containers/Sidebar/Sidebar.js.map +1 -1
  25. package/lib/esm/helpers/specification.js +17 -0
  26. package/lib/esm/helpers/specification.js.map +1 -1
  27. package/lib/types/components/CollapseButton.d.ts.map +1 -1
  28. package/lib/types/config/config.d.ts +1 -0
  29. package/lib/types/config/config.d.ts.map +1 -1
  30. package/lib/types/config/default.d.ts.map +1 -1
  31. package/lib/types/containers/AsyncApi/Layout.d.ts.map +1 -1
  32. package/lib/types/containers/Sidebar/Sidebar.d.ts +1 -9
  33. package/lib/types/containers/Sidebar/Sidebar.d.ts.map +1 -1
  34. package/lib/types/helpers/specification.d.ts +3 -0
  35. package/lib/types/helpers/specification.d.ts.map +1 -1
  36. package/package.json +1 -2
@@ -27,12 +27,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.CollapseButton = void 0;
29
29
  var react_1 = __importDefault(require("react"));
30
- var hi_1 = require("react-icons/hi");
30
+ var HiChevronRight = function (props) {
31
+ if (props === void 0) { props = {}; }
32
+ return (react_1.default.createElement("svg", __assign({ stroke: "currentColor", fill: "currentColor", strokeWidth: "0", viewBox: "0 0 20 20", height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg" }, props),
33
+ react_1.default.createElement("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" })));
34
+ };
31
35
  var CollapseButton = function (_a) {
32
36
  var chevronProps = _a.chevronProps, _b = _a.expanded, expanded = _b === void 0 ? false : _b, children = _a.children, rest = __rest(_a, ["chevronProps", "expanded", "children"]);
33
37
  return (react_1.default.createElement("button", __assign({}, rest, { className: "focus:outline-none ".concat(rest.className), type: "button" }),
34
38
  react_1.default.createElement("div", { className: "inline-block" }, children),
35
- react_1.default.createElement(hi_1.HiChevronRight, __assign({}, chevronProps, { className: "inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear ".concat(expanded ? '-rotate-90' : '', " ").concat((chevronProps === null || chevronProps === void 0 ? void 0 : chevronProps.className) || '') }))));
39
+ react_1.default.createElement(HiChevronRight, __assign({}, chevronProps, { className: "inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear ".concat(expanded ? '-rotate-90' : '', " ").concat((chevronProps === null || chevronProps === void 0 ? void 0 : chevronProps.className) || '') }))));
36
40
  };
37
41
  exports.CollapseButton = CollapseButton;
38
42
  //# sourceMappingURL=CollapseButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollapseButton.js","sourceRoot":"","sources":["../../../src/components/CollapseButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAmE;AACnE,qCAAgD;AAOzC,IAAM,cAAc,GAAmC,UAAC,EAK9D;IAJC,IAAA,YAAY,kBAAA,EACZ,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,QAAQ,cAAA,EACL,IAAI,cAJsD,wCAK9D,CADQ;IACH,OAAA,CACJ,qDACM,IAAI,IACR,SAAS,EAAE,6BAAsB,IAAI,CAAC,SAAS,CAAE,EACjD,IAAI,EAAC,QAAQ;QAEb,uCAAK,SAAS,EAAC,cAAc,IAAE,QAAQ,CAAO;QAC9C,8BAAC,mBAAc,eACT,YAAY,IAChB,SAAS,EAAE,kIACT,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAC1B,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,KAAI,EAAE,CAAE,IACnC,CACK,CACV,CAAA;CAAA,CAAC;AAnBW,QAAA,cAAc,kBAmBzB","sourcesContent":["import React, { ButtonHTMLAttributes, SVGAttributes } from 'react';\nimport { HiChevronRight } from 'react-icons/hi';\n\ninterface Props extends ButtonHTMLAttributes<HTMLButtonElement> {\n chevronProps?: SVGAttributes<SVGElement>;\n expanded?: boolean;\n}\n\nexport const CollapseButton: React.FunctionComponent<Props> = ({\n chevronProps,\n expanded = false,\n children,\n ...rest\n}) => (\n <button\n {...rest}\n className={`focus:outline-none ${rest.className}`}\n type=\"button\"\n >\n <div className=\"inline-block\">{children}</div>\n <HiChevronRight\n {...chevronProps}\n className={`inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear ${\n expanded ? '-rotate-90' : ''\n } ${chevronProps?.className || ''}`}\n />\n </button>\n);\n"]}
1
+ {"version":3,"file":"CollapseButton.js","sourceRoot":"","sources":["../../../src/components/CollapseButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAmE;AAOnE,IAAM,cAAc,GAAG,UAAC,KAAqC;IAArC,sBAAA,EAAA,UAAqC;IAAK,OAAA,CAEhE,gDACE,MAAM,EAAC,cAAc,EACrB,IAAI,EAAC,cAAc,EACnB,WAAW,EAAC,GAAG,EACf,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,KAAK,EACZ,KAAK,EAAC,KAAK,EACX,KAAK,EAAC,4BAA4B,IAC9B,KAAK;QAET,wCACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,oHAAoH,EACtH,QAAQ,EAAC,SAAS,GAClB,CACE,CACP;AAlBiE,CAkBjE,CAAC;AAEK,IAAM,cAAc,GAAmC,UAAC,EAK9D;IAJC,IAAA,YAAY,kBAAA,EACZ,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,QAAQ,cAAA,EACL,IAAI,cAJsD,wCAK9D,CADQ;IACH,OAAA,CACJ,qDACM,IAAI,IACR,SAAS,EAAE,6BAAsB,IAAI,CAAC,SAAS,CAAE,EACjD,IAAI,EAAC,QAAQ;QAEb,uCAAK,SAAS,EAAC,cAAc,IAAE,QAAQ,CAAO;QAC9C,8BAAC,cAAc,eACT,YAAY,IAChB,SAAS,EAAE,kIACT,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAC1B,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,KAAI,EAAE,CAAE,IACnC,CACK,CACV,CAAA;CAAA,CAAC;AAnBW,QAAA,cAAc,kBAmBzB","sourcesContent":["import React, { ButtonHTMLAttributes, SVGAttributes } from 'react';\n\ninterface Props extends ButtonHTMLAttributes<HTMLButtonElement> {\n chevronProps?: SVGAttributes<SVGElement>;\n expanded?: boolean;\n}\n\nconst HiChevronRight = (props: SVGAttributes<SVGElement> = {}) => (\n // Copied from https://icon-sets.iconify.design/heroicons-solid/chevron-right/\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 20 20\"\n height=\"1em\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nexport const CollapseButton: React.FunctionComponent<Props> = ({\n chevronProps,\n expanded = false,\n children,\n ...rest\n}) => (\n <button\n {...rest}\n className={`focus:outline-none ${rest.className}`}\n type=\"button\"\n >\n <div className=\"inline-block\">{children}</div>\n <HiChevronRight\n {...chevronProps}\n className={`inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear ${\n expanded ? '-rotate-90' : ''\n } ${chevronProps?.className || ''}`}\n />\n </button>\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"","sourcesContent":["export interface ConfigInterface {\n schemaID?: string;\n show?: ShowConfig;\n expand?: ExpandConfig;\n sidebar?: SideBarConfig;\n parserOptions?: any;\n publishLabel?: string;\n subscribeLabel?: string;\n}\n\nexport interface ShowConfig {\n sidebar?: boolean;\n info?: boolean;\n servers?: boolean;\n operations?: boolean;\n messages?: boolean;\n schemas?: boolean;\n errors?: boolean;\n}\n\nexport interface ExpandConfig {\n messageExamples?: boolean;\n}\n\nexport interface SideBarConfig {\n showOperations?: 'byDefault' | 'bySpecTags' | 'byOperationsTags';\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"","sourcesContent":["export interface ConfigInterface {\n schemaID?: string;\n show?: ShowConfig;\n expand?: ExpandConfig;\n sidebar?: SideBarConfig;\n parserOptions?: any;\n publishLabel?: string;\n subscribeLabel?: string;\n}\n\nexport interface ShowConfig {\n sidebar?: boolean;\n info?: boolean;\n servers?: boolean;\n operations?: boolean;\n messages?: boolean;\n schemas?: boolean;\n errors?: boolean;\n}\n\nexport interface ExpandConfig {\n messageExamples?: boolean;\n}\n\nexport interface SideBarConfig {\n showServers?: 'byDefault' | 'bySpecTags' | 'byServersTags';\n showOperations?: 'byDefault' | 'bySpecTags' | 'byOperationsTags';\n}\n"]}
@@ -17,7 +17,8 @@ exports.defaultConfig = {
17
17
  messageExamples: false,
18
18
  },
19
19
  sidebar: {
20
- showOperations: 'byOperationsTags',
20
+ showServers: 'byDefault',
21
+ showOperations: 'byDefault',
21
22
  },
22
23
  publishLabel: constants_1.PUBLISH_LABEL_DEFAULT_TEXT,
23
24
  subscribeLabel: constants_1.SUBSCRIBE_LABEL_DEFAULT_TEXT,
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/config/default.ts"],"names":[],"mappings":";;;AACA,0CAGsB;AAET,QAAA,aAAa,GAAoB;IAC5C,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;KACb;IACD,MAAM,EAAE;QACN,eAAe,EAAE,KAAK;KACvB;IACD,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;KACnC;IACD,YAAY,EAAE,sCAA0B;IACxC,cAAc,EAAE,wCAA4B;CAC7C,CAAC","sourcesContent":["import { ConfigInterface } from './config';\nimport {\n PUBLISH_LABEL_DEFAULT_TEXT,\n SUBSCRIBE_LABEL_DEFAULT_TEXT,\n} from '../constants';\n\nexport const defaultConfig: ConfigInterface = {\n schemaID: '',\n show: {\n sidebar: false,\n info: true,\n servers: true,\n operations: true,\n messages: true,\n schemas: true,\n errors: true,\n },\n expand: {\n messageExamples: false,\n },\n sidebar: {\n showOperations: 'byOperationsTags',\n },\n publishLabel: PUBLISH_LABEL_DEFAULT_TEXT,\n subscribeLabel: SUBSCRIBE_LABEL_DEFAULT_TEXT,\n};\n"]}
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/config/default.ts"],"names":[],"mappings":";;;AACA,0CAGsB;AAET,QAAA,aAAa,GAAoB;IAC5C,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;KACb;IACD,MAAM,EAAE;QACN,eAAe,EAAE,KAAK;KACvB;IACD,OAAO,EAAE;QACP,WAAW,EAAE,WAAW;QACxB,cAAc,EAAE,WAAW;KAC5B;IACD,YAAY,EAAE,sCAA0B;IACxC,cAAc,EAAE,wCAA4B;CAC7C,CAAC","sourcesContent":["import { ConfigInterface } from './config';\nimport {\n PUBLISH_LABEL_DEFAULT_TEXT,\n SUBSCRIBE_LABEL_DEFAULT_TEXT,\n} from '../constants';\n\nexport const defaultConfig: ConfigInterface = {\n schemaID: '',\n show: {\n sidebar: false,\n info: true,\n servers: true,\n operations: true,\n messages: true,\n schemas: true,\n errors: true,\n },\n expand: {\n messageExamples: false,\n },\n sidebar: {\n showServers: 'byDefault',\n showOperations: 'byDefault',\n },\n publishLabel: PUBLISH_LABEL_DEFAULT_TEXT,\n subscribeLabel: SUBSCRIBE_LABEL_DEFAULT_TEXT,\n};\n"]}
@@ -37,9 +37,8 @@ var Schemas_1 = require("../Schemas/Schemas");
37
37
  var Error_1 = require("../Error/Error");
38
38
  var contexts_1 = require("../../contexts");
39
39
  var AsyncApiLayout = function (_a) {
40
- var _b, _c, _d, _e, _f, _g, _h;
41
- var asyncapi = _a.asyncapi, config = _a.config, _j = _a.error, error = _j === void 0 ? null : _j;
42
- var _k = (0, react_1.useState)('container:xl'), observerClassName = _k[0], setObserverClassName = _k[1];
40
+ var asyncapi = _a.asyncapi, config = _a.config, _b = _a.error, error = _b === void 0 ? null : _b;
41
+ var _c = (0, react_1.useState)('container:xl'), observerClassName = _c[0], setObserverClassName = _c[1];
43
42
  var ref = (0, use_resize_observer_1.default)({
44
43
  onResize: function (_a) {
45
44
  var width = _a.width;
@@ -54,19 +53,20 @@ var AsyncApiLayout = function (_a) {
54
53
  });
55
54
  },
56
55
  }).ref;
56
+ var configShow = config.show || {};
57
57
  return (react_1.default.createElement(contexts_1.ConfigContext.Provider, { value: config },
58
58
  react_1.default.createElement(contexts_1.SpecificationContext.Provider, { value: asyncapi },
59
59
  react_1.default.createElement("section", { className: "aui-root" },
60
60
  react_1.default.createElement("div", { className: "".concat(observerClassName, " relative md:flex bg-white leading-normal"), id: config.schemaID || undefined, ref: ref },
61
- ((_b = config.show) === null || _b === void 0 ? void 0 : _b.sidebar) && react_1.default.createElement(Sidebar_1.Sidebar, { config: config.sidebar }),
61
+ configShow.sidebar && react_1.default.createElement(Sidebar_1.Sidebar, null),
62
62
  react_1.default.createElement("div", { className: "panel--center relative py-8 flex-1" },
63
63
  react_1.default.createElement("div", { className: "relative z-10" },
64
- ((_c = config.show) === null || _c === void 0 ? void 0 : _c.errors) && error && react_1.default.createElement(Error_1.Error, { error: error }),
65
- ((_d = config.show) === null || _d === void 0 ? void 0 : _d.info) && react_1.default.createElement(Info_1.Info, null),
66
- ((_e = config.show) === null || _e === void 0 ? void 0 : _e.servers) && react_1.default.createElement(Servers_1.Servers, null),
67
- ((_f = config.show) === null || _f === void 0 ? void 0 : _f.operations) && react_1.default.createElement(Operations_1.Operations, null),
68
- ((_g = config.show) === null || _g === void 0 ? void 0 : _g.messages) && react_1.default.createElement(Messages_1.Messages, null),
69
- ((_h = config.show) === null || _h === void 0 ? void 0 : _h.schemas) && react_1.default.createElement(Schemas_1.Schemas, null)),
64
+ configShow.errors && error && react_1.default.createElement(Error_1.Error, { error: error }),
65
+ configShow.info && react_1.default.createElement(Info_1.Info, null),
66
+ configShow.servers && react_1.default.createElement(Servers_1.Servers, null),
67
+ configShow.operations && react_1.default.createElement(Operations_1.Operations, null),
68
+ configShow.messages && react_1.default.createElement(Messages_1.Messages, null),
69
+ configShow.schemas && react_1.default.createElement(Schemas_1.Schemas, null)),
70
70
  react_1.default.createElement("div", { className: "panel--right absolute top-0 right-0 h-full bg-gray-800" })))))));
71
71
  };
72
72
  exports.default = AsyncApiLayout;
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../../src/containers/AsyncApi/Layout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AAExC,4EAAoD;AAEpD,8CAA6C;AAC7C,qCAAoC;AACpC,8CAA6C;AAC7C,uDAAsD;AACtD,iDAAgD;AAChD,8CAA6C;AAC7C,wCAAuC;AAGvC,2CAAqE;AASrE,IAAM,cAAc,GAAmC,UAAC,EAIvD;;QAHC,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,aAAY,EAAZ,KAAK,mBAAG,IAAI,KAAA;IAEN,IAAA,KAA4C,IAAA,gBAAQ,EAAC,cAAc,CAAC,EAAnE,iBAAiB,QAAA,EAAE,oBAAoB,QAA4B,CAAC;IAEnE,IAAA,GAAG,GAAK,IAAA,6BAAiB,EAAiB;QAChD,QAAQ,EAAE,UAAC,EAAS;gBAAP,KAAK,WAAA;YAChB,qBAAqB,CAAC;gBACpB,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB,OAAO;iBACR;gBAED,IAAM,iBAAiB,GACrB,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACpD,IAAI,iBAAiB,KAAK,iBAAiB,EAAE;oBAC3C,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;iBACzC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,IAdS,CAcR;IAEH,OAAO,CACL,8BAAC,wBAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM;QACnC,8BAAC,+BAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;YAC5C,2CAAS,SAAS,EAAC,UAAU;gBAC3B,uCACE,SAAS,EAAE,UAAG,iBAAiB,8CAA2C,EAC1E,EAAE,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS,EAChC,GAAG,EAAE,GAAG;oBAEP,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,OAAO,KAAI,8BAAC,iBAAO,IAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAI;oBAC5D,uCAAK,SAAS,EAAC,oCAAoC;wBACjD,uCAAK,SAAS,EAAC,eAAe;4BAC3B,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,MAAM,KAAI,KAAK,IAAI,8BAAC,aAAK,IAAC,KAAK,EAAE,KAAK,GAAI;4BACvD,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,IAAI,KAAI,8BAAC,WAAI,OAAG;4BAC7B,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,OAAO,KAAI,8BAAC,iBAAO,OAAG;4BACnC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,UAAU,KAAI,8BAAC,uBAAU,OAAG;4BACzC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,QAAQ,KAAI,8BAAC,mBAAQ,OAAG;4BACrC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,OAAO,KAAI,8BAAC,iBAAO,OAAG,CAChC;wBACN,uCAAK,SAAS,EAAC,wDAAwD,GAAG,CACtE,CACF,CACE,CACoB,CACT,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC","sourcesContent":["import React, { useState } from 'react';\nimport { AsyncAPIDocument } from '@asyncapi/parser';\nimport useResizeObserver from 'use-resize-observer';\n\nimport { Sidebar } from '../Sidebar/Sidebar';\nimport { Info } from '../Info/Info';\nimport { Servers } from '../Servers/Servers';\nimport { Operations } from '../Operations/Operations';\nimport { Messages } from '../Messages/Messages';\nimport { Schemas } from '../Schemas/Schemas';\nimport { Error } from '../Error/Error';\n\nimport { ConfigInterface } from '../../config';\nimport { SpecificationContext, ConfigContext } from '../../contexts';\nimport { ErrorObject } from '../../types';\n\ninterface Props {\n asyncapi: AsyncAPIDocument;\n config: ConfigInterface;\n error?: ErrorObject;\n}\n\nconst AsyncApiLayout: React.FunctionComponent<Props> = ({\n asyncapi,\n config,\n error = null,\n}) => {\n const [observerClassName, setObserverClassName] = useState('container:xl');\n\n const { ref } = useResizeObserver<HTMLDivElement>({\n onResize: ({ width }) => {\n requestAnimationFrame(() => {\n if (width === undefined) {\n return;\n }\n\n const possibleClassName =\n width <= 1280 ? 'container:xl' : 'container:base';\n if (possibleClassName !== observerClassName) {\n setObserverClassName(possibleClassName);\n }\n });\n },\n });\n\n return (\n <ConfigContext.Provider value={config}>\n <SpecificationContext.Provider value={asyncapi}>\n <section className=\"aui-root\">\n <div\n className={`${observerClassName} relative md:flex bg-white leading-normal`}\n id={config.schemaID || undefined}\n ref={ref}\n >\n {config.show?.sidebar && <Sidebar config={config.sidebar} />}\n <div className=\"panel--center relative py-8 flex-1\">\n <div className=\"relative z-10\">\n {config.show?.errors && error && <Error error={error} />}\n {config.show?.info && <Info />}\n {config.show?.servers && <Servers />}\n {config.show?.operations && <Operations />}\n {config.show?.messages && <Messages />}\n {config.show?.schemas && <Schemas />}\n </div>\n <div className=\"panel--right absolute top-0 right-0 h-full bg-gray-800\" />\n </div>\n </div>\n </section>\n </SpecificationContext.Provider>\n </ConfigContext.Provider>\n );\n};\n\nexport default AsyncApiLayout;\n"]}
1
+ {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../../src/containers/AsyncApi/Layout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AAExC,4EAAoD;AAEpD,8CAA6C;AAC7C,qCAAoC;AACpC,8CAA6C;AAC7C,uDAAsD;AACtD,iDAAgD;AAChD,8CAA6C;AAC7C,wCAAuC;AAGvC,2CAAqE;AASrE,IAAM,cAAc,GAAmC,UAAC,EAIvD;QAHC,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,aAAY,EAAZ,KAAK,mBAAG,IAAI,KAAA;IAEN,IAAA,KAA4C,IAAA,gBAAQ,EAAC,cAAc,CAAC,EAAnE,iBAAiB,QAAA,EAAE,oBAAoB,QAA4B,CAAC;IAEnE,IAAA,GAAG,GAAK,IAAA,6BAAiB,EAAiB;QAChD,QAAQ,EAAE,UAAC,EAAS;gBAAP,KAAK,WAAA;YAChB,qBAAqB,CAAC;gBACpB,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB,OAAO;iBACR;gBAED,IAAM,iBAAiB,GACrB,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACpD,IAAI,iBAAiB,KAAK,iBAAiB,EAAE;oBAC3C,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;iBACzC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,IAdS,CAcR;IAEH,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACrC,OAAO,CACL,8BAAC,wBAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM;QACnC,8BAAC,+BAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;YAC5C,2CAAS,SAAS,EAAC,UAAU;gBAC3B,uCACE,SAAS,EAAE,UAAG,iBAAiB,8CAA2C,EAC1E,EAAE,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS,EAChC,GAAG,EAAE,GAAG;oBAEP,UAAU,CAAC,OAAO,IAAI,8BAAC,iBAAO,OAAG;oBAClC,uCAAK,SAAS,EAAC,oCAAoC;wBACjD,uCAAK,SAAS,EAAC,eAAe;4BAC3B,UAAU,CAAC,MAAM,IAAI,KAAK,IAAI,8BAAC,aAAK,IAAC,KAAK,EAAE,KAAK,GAAI;4BACrD,UAAU,CAAC,IAAI,IAAI,8BAAC,WAAI,OAAG;4BAC3B,UAAU,CAAC,OAAO,IAAI,8BAAC,iBAAO,OAAG;4BACjC,UAAU,CAAC,UAAU,IAAI,8BAAC,uBAAU,OAAG;4BACvC,UAAU,CAAC,QAAQ,IAAI,8BAAC,mBAAQ,OAAG;4BACnC,UAAU,CAAC,OAAO,IAAI,8BAAC,iBAAO,OAAG,CAC9B;wBACN,uCAAK,SAAS,EAAC,wDAAwD,GAAG,CACtE,CACF,CACE,CACoB,CACT,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC","sourcesContent":["import React, { useState } from 'react';\nimport { AsyncAPIDocument } from '@asyncapi/parser';\nimport useResizeObserver from 'use-resize-observer';\n\nimport { Sidebar } from '../Sidebar/Sidebar';\nimport { Info } from '../Info/Info';\nimport { Servers } from '../Servers/Servers';\nimport { Operations } from '../Operations/Operations';\nimport { Messages } from '../Messages/Messages';\nimport { Schemas } from '../Schemas/Schemas';\nimport { Error } from '../Error/Error';\n\nimport { ConfigInterface } from '../../config';\nimport { SpecificationContext, ConfigContext } from '../../contexts';\nimport { ErrorObject } from '../../types';\n\ninterface Props {\n asyncapi: AsyncAPIDocument;\n config: ConfigInterface;\n error?: ErrorObject;\n}\n\nconst AsyncApiLayout: React.FunctionComponent<Props> = ({\n asyncapi,\n config,\n error = null,\n}) => {\n const [observerClassName, setObserverClassName] = useState('container:xl');\n\n const { ref } = useResizeObserver<HTMLDivElement>({\n onResize: ({ width }) => {\n requestAnimationFrame(() => {\n if (width === undefined) {\n return;\n }\n\n const possibleClassName =\n width <= 1280 ? 'container:xl' : 'container:base';\n if (possibleClassName !== observerClassName) {\n setObserverClassName(possibleClassName);\n }\n });\n },\n });\n\n const configShow = config.show || {};\n return (\n <ConfigContext.Provider value={config}>\n <SpecificationContext.Provider value={asyncapi}>\n <section className=\"aui-root\">\n <div\n className={`${observerClassName} relative md:flex bg-white leading-normal`}\n id={config.schemaID || undefined}\n ref={ref}\n >\n {configShow.sidebar && <Sidebar />}\n <div className=\"panel--center relative py-8 flex-1\">\n <div className=\"relative z-10\">\n {configShow.errors && error && <Error error={error} />}\n {configShow.info && <Info />}\n {configShow.servers && <Servers />}\n {configShow.operations && <Operations />}\n {configShow.messages && <Messages />}\n {configShow.schemas && <Schemas />}\n </div>\n <div className=\"panel--right absolute top-0 right-0 h-full bg-gray-800\" />\n </div>\n </div>\n </section>\n </SpecificationContext.Provider>\n </ConfigContext.Provider>\n );\n};\n\nexport default AsyncApiLayout;\n"]}
@@ -23,32 +23,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.OperationsByOperationsTags = exports.OperationsByRootTags = exports.OperationsList = exports.Sidebar = void 0;
26
+ exports.Sidebar = void 0;
27
27
  var react_1 = __importStar(require("react"));
28
28
  var components_1 = require("../../components");
29
29
  var contexts_1 = require("../../contexts");
30
- var helpers_1 = require("../../helpers");
31
30
  var constants_1 = require("../../constants");
32
31
  var SidebarContext = react_1.default.createContext({
33
32
  setShowSidebar: function (value) { return value; },
34
33
  });
35
- var Sidebar = function (_a) {
36
- var config = _a.config;
37
- var _b = (0, react_1.useState)(false), showSidebar = _b[0], setShowSidebar = _b[1];
38
- var showOperations = (config === null || config === void 0 ? void 0 : config.showOperations) || 'byDefault';
34
+ var Sidebar = function () {
35
+ var _a = (0, react_1.useState)(false), showSidebar = _a[0], setShowSidebar = _a[1];
39
36
  var asyncapi = (0, contexts_1.useSpec)();
40
37
  var info = asyncapi.info();
41
38
  var logo = info.ext('x-logo');
42
39
  var components = asyncapi.hasComponents() && asyncapi.components();
43
40
  var messages = components && components.messages();
44
41
  var schemas = components && components.schemas();
45
- var Operations = exports.OperationsList;
46
- if (showOperations === 'bySpecTags') {
47
- Operations = exports.OperationsByRootTags;
48
- }
49
- else if (showOperations === 'byOperationsTags') {
50
- Operations = exports.OperationsByOperationsTags;
51
- }
42
+ var hasOperations = asyncapi.hasChannels() &&
43
+ Object.values(asyncapi.channels()).some(function (channel) { return channel.hasPublish() || channel.hasSubscribe(); });
52
44
  var messagesList = messages && Object.keys(messages).length > 0 && (react_1.default.createElement("li", { className: "mb-3 mt-9" },
53
45
  react_1.default.createElement("a", { className: "text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900", href: "#messages", onClick: function () { return setShowSidebar(false); } }, "Messages"),
54
46
  react_1.default.createElement("ul", { className: "text-sm mt-2" }, Object.entries(messages).map(function (_a) {
@@ -78,123 +70,175 @@ var Sidebar = function (_a) {
78
70
  react_1.default.createElement("ul", { className: "text-sm mt-10 relative" },
79
71
  react_1.default.createElement("li", { className: "mb-3" },
80
72
  react_1.default.createElement("a", { className: "text-gray-700 no-underline hover:text-gray-900", href: "#introduction", onClick: function () { return setShowSidebar(false); } }, "Introduction")),
81
- asyncapi.hasServers() && (react_1.default.createElement("li", { className: "mb-3" },
82
- react_1.default.createElement("a", { className: "text-gray-700 no-underline hover:text-gray-900", href: "#servers", onClick: function () { return setShowSidebar(false); } }, "Servers"))),
83
- asyncapi.hasChannels() && (react_1.default.createElement(react_1.default.Fragment, null,
73
+ asyncapi.hasServers() && (react_1.default.createElement("li", { className: "mb-3 mt-9" },
74
+ react_1.default.createElement("a", { className: "text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900", href: "#servers", onClick: function () { return setShowSidebar(false); } }, "Servers"),
75
+ react_1.default.createElement(ServersList, null))),
76
+ hasOperations && (react_1.default.createElement(react_1.default.Fragment, null,
84
77
  react_1.default.createElement("li", { className: "mb-3 mt-9" },
85
78
  react_1.default.createElement("a", { className: "text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900", href: "#operations", onClick: function () { return setShowSidebar(false); } }, "Operations"),
86
- react_1.default.createElement(Operations, null)),
79
+ react_1.default.createElement(OperationsList, null)),
87
80
  messagesList,
88
81
  schemasList))))))));
89
82
  };
90
83
  exports.Sidebar = Sidebar;
91
- var OperationsList = function () {
92
- var asyncapi = (0, contexts_1.useSpec)();
93
- var channels = asyncapi.channels();
94
- var operationsList = [];
95
- Object.entries(channels).forEach(function (_a) {
96
- var channelName = _a[0], channel = _a[1];
97
- if (channel.hasPublish()) {
98
- operationsList.push(react_1.default.createElement(OperationsPubItem, { channelName: channelName, key: "pub-".concat(channelName) }));
99
- }
100
- if (channel.hasSubscribe()) {
101
- operationsList.push(react_1.default.createElement(OperationsSubItem, { channelName: channelName, key: "sub-".concat(channelName) }));
84
+ function filterObjectsByTags(tags, objects) {
85
+ var taggedObjects = new Set();
86
+ var tagged = new Map();
87
+ tags.forEach(function (tag) {
88
+ var taggedForTag = [];
89
+ objects.forEach(function (obj) {
90
+ var object = obj.object;
91
+ if (typeof object.tags !== 'function') {
92
+ return;
93
+ }
94
+ var objectTags = (object.tags() || []).map(function (t) { return t.name(); });
95
+ var hasTag = objectTags.includes(tag);
96
+ if (hasTag) {
97
+ taggedForTag.push(obj);
98
+ taggedObjects.add(obj);
99
+ }
100
+ });
101
+ tagged.set(tag, taggedForTag);
102
+ });
103
+ var untagged = [];
104
+ objects.forEach(function (obj) {
105
+ if (!taggedObjects.has(obj)) {
106
+ untagged.push(obj);
102
107
  }
103
108
  });
104
- return react_1.default.createElement("ul", { className: "text-sm mt-2" }, operationsList);
105
- };
106
- exports.OperationsList = OperationsList;
107
- var OperationsByRootTags = function () {
109
+ return { tagged: tagged, untagged: untagged };
110
+ }
111
+ var ServersList = function () {
112
+ var sidebarConfig = (0, contexts_1.useConfig)().sidebar;
108
113
  var asyncapi = (0, contexts_1.useSpec)();
109
- var channels = asyncapi.channels();
110
- var tags = asyncapi.tags();
111
- var taggedOperations = function (tag) {
112
- var operationsList = [];
113
- Object.entries(channels).forEach(function (_a) {
114
- var channelName = _a[0], channel = _a[1];
115
- if (channel.hasPublish() &&
116
- helpers_1.SpecificationHelpers.containTags(channel.publish(), tag)) {
117
- operationsList.push(react_1.default.createElement(OperationsPubItem, { channelName: channelName, key: "pub-".concat(channelName) }));
118
- }
119
- if (channel.hasSubscribe() &&
120
- helpers_1.SpecificationHelpers.containTags(channel.subscribe(), tag)) {
121
- operationsList.push(react_1.default.createElement(OperationsSubItem, { channelName: channelName, key: "sub-".concat(channelName) }));
114
+ var servers = asyncapi.servers();
115
+ var showServers = (sidebarConfig === null || sidebarConfig === void 0 ? void 0 : sidebarConfig.showServers) || 'byDefault';
116
+ if (showServers === 'byDefault') {
117
+ return (react_1.default.createElement("ul", { className: "text-sm mt-2" }, Object.keys(servers).map(function (serverName) { return (react_1.default.createElement(ServerItem, { serverName: serverName, key: serverName })); })));
118
+ }
119
+ var specTagNames;
120
+ if (showServers === 'bySpecTags') {
121
+ specTagNames = (asyncapi.tags() || []).map(function (tag) { return tag.name(); });
122
+ }
123
+ else {
124
+ var serverTagNamesSet_1 = new Set();
125
+ Object.values(servers).forEach(function (server) {
126
+ if (typeof server.tags !== 'function') {
127
+ return;
122
128
  }
129
+ server.tags().forEach(function (t) { return serverTagNamesSet_1.add(t.name()); });
130
+ });
131
+ specTagNames = Array.from(serverTagNamesSet_1);
132
+ }
133
+ var serializedServers = Object.entries(servers).map(function (_a) {
134
+ var serverName = _a[0], server = _a[1];
135
+ return ({
136
+ name: serverName,
137
+ object: server,
138
+ data: {},
123
139
  });
124
- return operationsList;
125
- };
126
- var untaggedOperations = [];
127
- Object.entries(channels).forEach(function (_a) {
128
- var channelName = _a[0], channel = _a[1];
129
- if (channel.hasPublish() &&
130
- (!channel.publish().hasTags() ||
131
- !helpers_1.SpecificationHelpers.containTags(channel.publish(), tags))) {
132
- untaggedOperations.push(react_1.default.createElement(OperationsPubItem, { channelName: channelName, key: "pub-".concat(channelName) }));
133
- }
134
- if (channel.hasSubscribe() &&
135
- (!channel.subscribe().hasTags() ||
136
- !helpers_1.SpecificationHelpers.containTags(channel.subscribe(), tags))) {
137
- untaggedOperations.push(react_1.default.createElement(OperationsSubItem, { channelName: channelName, key: "sub-".concat(channelName) }));
138
- }
139
140
  });
140
- return (react_1.default.createElement("div", null,
141
- react_1.default.createElement("ul", null,
142
- tags &&
143
- tags.map(function (tag) {
144
- var ops = taggedOperations(tag);
145
- return (ops.length > 0 && (react_1.default.createElement("li", { key: tag.name() },
146
- react_1.default.createElement(OperationsByTagItem, { tagName: tag.name() }, taggedOperations(tag)))));
147
- }),
148
- untaggedOperations.length > 0 && (react_1.default.createElement("li", null,
149
- react_1.default.createElement(OperationsByTagItem, { tagName: "Untagged" }, untaggedOperations))))));
141
+ var _a = filterObjectsByTags(specTagNames, serializedServers), tagged = _a.tagged, untagged = _a.untagged;
142
+ return (react_1.default.createElement("ul", { className: "text-sm mt-2" },
143
+ Array.from(tagged.entries()).map(function (_a) {
144
+ var tag = _a[0], taggedServers = _a[1];
145
+ return (react_1.default.createElement("li", { key: tag },
146
+ react_1.default.createElement(ItemsByTagItem, { tagName: tag }, taggedServers.map(function (_a) {
147
+ var serverName = _a.name;
148
+ return (react_1.default.createElement(ServerItem, { serverName: serverName, key: serverName }));
149
+ }))));
150
+ }),
151
+ untagged.length > 0 ? (react_1.default.createElement("li", null,
152
+ react_1.default.createElement(ItemsByTagItem, { tagName: "Untagged" }, untagged.map(function (_a) {
153
+ var serverName = _a.name;
154
+ return (react_1.default.createElement(ServerItem, { serverName: serverName, key: serverName }));
155
+ })))) : null));
150
156
  };
151
- exports.OperationsByRootTags = OperationsByRootTags;
152
- var OperationsByOperationsTags = function () {
157
+ var OperationsList = function () {
158
+ var sidebarConfig = (0, contexts_1.useConfig)().sidebar;
153
159
  var asyncapi = (0, contexts_1.useSpec)();
154
160
  var channels = asyncapi.channels();
155
- var operationsTags = helpers_1.SpecificationHelpers.operationsTags(asyncapi);
156
- var taggedOperations = function (tag) {
157
- var operationsList = [];
158
- Object.entries(channels).forEach(function (_a) {
159
- var channelName = _a[0], channel = _a[1];
160
- if (channel.hasPublish() &&
161
- helpers_1.SpecificationHelpers.containTags(channel.publish(), tag)) {
162
- operationsList.push(react_1.default.createElement(OperationsPubItem, { channelName: channelName, key: "pub-".concat(channelName) }));
163
- }
164
- if (channel.hasSubscribe() &&
165
- helpers_1.SpecificationHelpers.containTags(channel.subscribe(), tag)) {
166
- operationsList.push(react_1.default.createElement(OperationsSubItem, { channelName: channelName, key: "sub-".concat(channelName) }));
167
- }
168
- });
169
- return operationsList;
170
- };
171
- var untaggedOperations = [];
161
+ var showOperations = (sidebarConfig === null || sidebarConfig === void 0 ? void 0 : sidebarConfig.showOperations) || 'byDefault';
162
+ var operations = [];
172
163
  Object.entries(channels).forEach(function (_a) {
173
164
  var channelName = _a[0], channel = _a[1];
174
- if (channel.hasPublish() &&
175
- (!channel.publish().hasTags() ||
176
- !helpers_1.SpecificationHelpers.containTags(channel.publish(), operationsTags))) {
177
- untaggedOperations.push(react_1.default.createElement(OperationsPubItem, { channelName: channelName, key: "pub-".concat(channelName) }));
165
+ if (channel.hasPublish()) {
166
+ operations.push({
167
+ name: "publish-".concat(channelName),
168
+ object: channel.publish(),
169
+ data: { channelName: channelName, kind: 'publish' },
170
+ });
178
171
  }
179
- if (channel.hasSubscribe() &&
180
- (!channel.subscribe().hasTags() ||
181
- !helpers_1.SpecificationHelpers.containTags(channel.subscribe(), operationsTags))) {
182
- untaggedOperations.push(react_1.default.createElement(OperationsSubItem, { channelName: channelName, key: "sub-".concat(channelName) }));
172
+ if (channel.hasSubscribe()) {
173
+ operations.push({
174
+ name: "subscribe-".concat(channelName),
175
+ object: channel.subscribe(),
176
+ data: { channelName: channelName, kind: 'subscribe' },
177
+ });
183
178
  }
184
179
  });
185
- return (react_1.default.createElement("div", null,
186
- react_1.default.createElement("ul", null,
187
- operationsTags &&
188
- operationsTags.map(function (tag) {
189
- var ops = taggedOperations(tag);
190
- return (ops.length > 0 && (react_1.default.createElement("li", { key: tag.name() },
191
- react_1.default.createElement(OperationsByTagItem, { tagName: tag.name() }, taggedOperations(tag)))));
192
- }),
193
- untaggedOperations.length > 0 && (react_1.default.createElement("li", null,
194
- react_1.default.createElement(OperationsByTagItem, { tagName: "Untagged" }, untaggedOperations))))));
180
+ if (showOperations === 'byDefault') {
181
+ return (react_1.default.createElement("ul", { className: "text-sm mt-2" }, operations.map(function (_a) {
182
+ var name = _a.name, _b = _a.data, channelName = _b.channelName, kind = _b.kind;
183
+ return (react_1.default.createElement(OperationItem, { channelName: channelName, kind: kind, key: name }));
184
+ })));
185
+ }
186
+ var operationTagNames;
187
+ if (showOperations === 'bySpecTags') {
188
+ operationTagNames = (asyncapi.tags() || []).map(function (tag) { return tag.name(); });
189
+ }
190
+ else {
191
+ var operationTagNamesSet_1 = new Set();
192
+ Object.values(operations).forEach(function (_a) {
193
+ var object = _a.object;
194
+ if (typeof object.tags !== 'function') {
195
+ return;
196
+ }
197
+ object.tags().forEach(function (t) { return operationTagNamesSet_1.add(t.name()); });
198
+ });
199
+ operationTagNames = Array.from(operationTagNamesSet_1);
200
+ }
201
+ var _a = filterObjectsByTags(operationTagNames, operations), tagged = _a.tagged, untagged = _a.untagged;
202
+ return (react_1.default.createElement("ul", { className: "text-sm mt-2" },
203
+ Array.from(tagged.entries()).map(function (_a) {
204
+ var tag = _a[0], taggedOperations = _a[1];
205
+ return (react_1.default.createElement("li", { key: tag },
206
+ react_1.default.createElement(ItemsByTagItem, { tagName: tag }, taggedOperations.map(function (_a) {
207
+ var name = _a.name, _b = _a.data, kind = _b.kind, channelName = _b.channelName;
208
+ return (react_1.default.createElement(OperationItem, { channelName: channelName, kind: kind, key: name }));
209
+ }))));
210
+ }),
211
+ untagged.length > 0 ? (react_1.default.createElement("li", null,
212
+ react_1.default.createElement(ItemsByTagItem, { tagName: "Untagged" }, untagged.map(function (_a) {
213
+ var name = _a.name, _b = _a.data, kind = _b.kind, channelName = _b.channelName;
214
+ return (react_1.default.createElement(OperationItem, { channelName: channelName, kind: kind, key: name }));
215
+ })))) : null));
216
+ };
217
+ var OperationItem = function (_a) {
218
+ var channelName = _a.channelName, kind = _a.kind;
219
+ var config = (0, contexts_1.useConfig)();
220
+ var setShowSidebar = (0, react_1.useContext)(SidebarContext).setShowSidebar;
221
+ var isPublish = kind === 'publish';
222
+ var label = '';
223
+ if (isPublish) {
224
+ label = config.publishLabel || constants_1.PUBLISH_LABEL_DEFAULT_TEXT;
225
+ }
226
+ else {
227
+ label = config.subscribeLabel || constants_1.SUBSCRIBE_LABEL_DEFAULT_TEXT;
228
+ }
229
+ return (react_1.default.createElement("li", null,
230
+ react_1.default.createElement("a", { className: "flex no-underline text-gray-700 mb-2 hover:text-gray-900", href: "#operation-".concat(kind, "-").concat(channelName), onClick: function () { return setShowSidebar(false); } },
231
+ react_1.default.createElement("span", { className: "".concat(isPublish ? 'bg-blue-600' : 'bg-green-600', " font-bold h-6 no-underline text-white uppercase p-1 mr-2 rounded text-xs"), title: isPublish ? 'Publish' : 'Subscribe' }, label),
232
+ react_1.default.createElement("span", { className: "break-all inline-block" }, channelName))));
233
+ };
234
+ var ServerItem = function (_a) {
235
+ var serverName = _a.serverName;
236
+ var setShowSidebar = (0, react_1.useContext)(SidebarContext).setShowSidebar;
237
+ return (react_1.default.createElement("li", null,
238
+ react_1.default.createElement("a", { className: "flex no-underline text-gray-700 mb-2 hover:text-gray-900", href: "#server-".concat(serverName), onClick: function () { return setShowSidebar(false); } },
239
+ react_1.default.createElement("span", { className: "break-all inline-block" }, serverName))));
195
240
  };
196
- exports.OperationsByOperationsTags = OperationsByOperationsTags;
197
- var OperationsByTagItem = function (_a) {
241
+ var ItemsByTagItem = function (_a) {
198
242
  var tagName = _a.tagName, children = _a.children;
199
243
  var _b = (0, react_1.useState)(false), expand = _b[0], setExpand = _b[1];
200
244
  return (react_1.default.createElement("div", null,
@@ -204,22 +248,4 @@ var OperationsByTagItem = function (_a) {
204
248
  react_1.default.createElement("span", { className: "text-sm inline-block mt-1 font-extralight" }, tagName)),
205
249
  react_1.default.createElement("ul", { className: "".concat(expand ? 'block' : 'hidden', " text-sm mt-2 font-light") }, children)));
206
250
  };
207
- var OperationsPubItem = function (_a) {
208
- var channelName = _a.channelName;
209
- var config = (0, contexts_1.useConfig)();
210
- var setShowSidebar = (0, react_1.useContext)(SidebarContext).setShowSidebar;
211
- return (react_1.default.createElement("li", null,
212
- react_1.default.createElement("a", { className: "flex no-underline text-gray-700 mb-2 hover:text-gray-900", href: "#operation-publish-".concat(channelName), onClick: function () { return setShowSidebar(false); } },
213
- react_1.default.createElement("span", { className: "bg-blue-600 font-bold h-6 no-underline text-white uppercase p-1 mr-2 rounded text-xs", title: "Publish" }, config.publishLabel || constants_1.PUBLISH_LABEL_DEFAULT_TEXT),
214
- react_1.default.createElement("span", { className: "break-all inline-block" }, channelName))));
215
- };
216
- var OperationsSubItem = function (_a) {
217
- var channelName = _a.channelName;
218
- var config = (0, contexts_1.useConfig)();
219
- var setShowSidebar = (0, react_1.useContext)(SidebarContext).setShowSidebar;
220
- return (react_1.default.createElement("li", null,
221
- react_1.default.createElement("a", { className: "flex no-underline text-gray-700 mb-2 hover:text-gray-900", href: "#operation-subscribe-".concat(channelName), onClick: function () { return setShowSidebar(false); } },
222
- react_1.default.createElement("span", { className: "bg-green-600 font-bold h-6 no-underline text-white uppercase p-1 mr-2 rounded text-xs", title: "Subscribe" }, config.subscribeLabel || constants_1.SUBSCRIBE_LABEL_DEFAULT_TEXT),
223
- react_1.default.createElement("span", { className: "break-all inline-block" }, channelName))));
224
- };
225
251
  //# sourceMappingURL=Sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/containers/Sidebar/Sidebar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useContext } from 'react';\nimport { Tag } from '@asyncapi/parser';\n\nimport { CollapseButton } from '../../components';\nimport { SideBarConfig } from '../../config/config';\nimport { useConfig, useSpec } from '../../contexts';\nimport { SpecificationHelpers } from '../../helpers';\nimport {\n PUBLISH_LABEL_DEFAULT_TEXT,\n SUBSCRIBE_LABEL_DEFAULT_TEXT,\n} from '../../constants';\n\nconst SidebarContext = React.createContext<{\n setShowSidebar: React.Dispatch<React.SetStateAction<boolean>>;\n}>({\n setShowSidebar: (value: boolean | ((prevValue: boolean) => boolean)) => value,\n});\n\ninterface Props {\n config?: SideBarConfig;\n}\n\nexport const Sidebar: React.FunctionComponent<Props> = ({ config }) => {\n const [showSidebar, setShowSidebar] = useState(false);\n\n const showOperations = config?.showOperations || 'byDefault';\n const asyncapi = useSpec();\n\n const info = asyncapi.info();\n const logo = info.ext('x-logo');\n const components = asyncapi.hasComponents() && asyncapi.components();\n const messages = components && components.messages();\n const schemas = components && components.schemas();\n\n let Operations = OperationsList;\n if (showOperations === 'bySpecTags') {\n Operations = OperationsByRootTags;\n } else if (showOperations === 'byOperationsTags') {\n Operations = OperationsByOperationsTags;\n }\n\n const messagesList = messages && Object.keys(messages).length > 0 && (\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#messages\"\n onClick={() => setShowSidebar(false)}\n >\n Messages\n </a>\n <ul className=\"text-sm mt-2\">\n {Object.entries(messages).map(([messageName, message]) => (\n <li key={messageName}>\n <a\n className=\"flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900\"\n href={`#message-${messageName}`}\n onClick={() => setShowSidebar(false)}\n >\n <div className=\"break-all inline-block\">{message.uid()}</div>\n </a>\n </li>\n ))}\n </ul>\n </li>\n );\n\n const schemasList = schemas && Object.keys(schemas).length > 0 && (\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#schemas\"\n onClick={() => setShowSidebar(false)}\n >\n Schemas\n </a>\n <ul className=\"text-sm mt-2\">\n {Object.keys(schemas).map(schemaName => (\n <li key={schemaName}>\n <a\n className=\"flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900\"\n href={`#schema-${schemaName}`}\n onClick={() => setShowSidebar(false)}\n >\n <div className=\"break-all inline-block\">{schemaName}</div>\n </a>\n </li>\n ))}\n </ul>\n </li>\n );\n\n return (\n <SidebarContext.Provider value={{ setShowSidebar }}>\n <div\n className=\"burger-menu rounded-full h-16 w-16 bg-white fixed bottom-16 right-8 flex items-center justify-center z-30 cursor-pointer shadow-md bg-teal-500\"\n onClick={() => setShowSidebar(prev => !prev)}\n data-lol={showSidebar}\n >\n <svg\n viewBox=\"0 0 100 70\"\n width=\"40\"\n height=\"30\"\n className=\"fill-current text-gray-200\"\n >\n <rect width=\"100\" height=\"10\" />\n <rect y=\"30\" width=\"100\" height=\"10\" />\n <rect y=\"60\" width=\"100\" height=\"10\" />\n </svg>\n </div>\n <div\n className={`${\n showSidebar ? 'block fixed w-full' : 'hidden'\n } sidebar relative w-64 max-h-screen h-full bg-gray-200 shadow z-20`}\n // className={`${\n // showSidebar ? 'block fixed w-full' : 'hidden'\n // } sidebar bg-gray-200 font-sans font-light px-4 py-8 z-20 shadow overflow-auto`}\n >\n <div\n className={`${\n showSidebar ? 'w-full' : ''\n } block fixed max-h-screen h-full font-sans px-4 pt-8 pb-16 overflow-y-auto bg-gray-200`}\n >\n <div className=\"sidebar--content\">\n <div>\n {logo ? (\n <img\n src={logo}\n alt={`${info.title()} logo, ${info.version()} version`}\n />\n ) : (\n <h1 className=\"text-2xl font-light\">\n {info.title()} {info.version()}\n </h1>\n )}\n </div>\n\n <ul className=\"text-sm mt-10 relative\">\n <li className=\"mb-3\">\n <a\n className=\"text-gray-700 no-underline hover:text-gray-900\"\n href=\"#introduction\"\n onClick={() => setShowSidebar(false)}\n >\n Introduction\n </a>\n </li>\n {asyncapi.hasServers() && (\n <li className=\"mb-3\">\n <a\n className=\"text-gray-700 no-underline hover:text-gray-900\"\n href=\"#servers\"\n onClick={() => setShowSidebar(false)}\n >\n Servers\n </a>\n </li>\n )}\n {asyncapi.hasChannels() && (\n <>\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#operations\"\n onClick={() => setShowSidebar(false)}\n >\n Operations\n </a>\n <Operations />\n </li>\n {messagesList}\n {schemasList}\n </>\n )}\n </ul>\n </div>\n </div>\n </div>\n </SidebarContext.Provider>\n );\n};\n\nexport const OperationsList: React.FunctionComponent = () => {\n const asyncapi = useSpec();\n const channels = asyncapi.channels();\n\n const operationsList: React.ReactNodeArray = [];\n Object.entries(channels).forEach(([channelName, channel]) => {\n if (channel.hasPublish()) {\n operationsList.push(\n <OperationsPubItem\n channelName={channelName}\n key={`pub-${channelName}`}\n />,\n );\n }\n if (channel.hasSubscribe()) {\n operationsList.push(\n <OperationsSubItem\n channelName={channelName}\n key={`sub-${channelName}`}\n />,\n );\n }\n });\n\n return <ul className=\"text-sm mt-2\">{operationsList}</ul>;\n};\n\nexport const OperationsByRootTags: React.FunctionComponent = () => {\n const asyncapi = useSpec();\n const channels = asyncapi.channels();\n const tags = asyncapi.tags();\n\n const taggedOperations = (tag: Tag) => {\n const operationsList: React.ReactNodeArray = [];\n Object.entries(channels).forEach(([channelName, channel]) => {\n if (\n channel.hasPublish() &&\n SpecificationHelpers.containTags(channel.publish(), tag)\n ) {\n operationsList.push(\n <OperationsPubItem\n channelName={channelName}\n key={`pub-${channelName}`}\n />,\n );\n }\n if (\n channel.hasSubscribe() &&\n SpecificationHelpers.containTags(channel.subscribe(), tag)\n ) {\n operationsList.push(\n <OperationsSubItem\n channelName={channelName}\n key={`sub-${channelName}`}\n />,\n );\n }\n });\n return operationsList;\n };\n\n const untaggedOperations: React.ReactNodeArray = [];\n Object.entries(channels).forEach(([channelName, channel]) => {\n if (\n channel.hasPublish() &&\n (!channel.publish().hasTags() ||\n !SpecificationHelpers.containTags(channel.publish(), tags))\n ) {\n untaggedOperations.push(\n <OperationsPubItem\n channelName={channelName}\n key={`pub-${channelName}`}\n />,\n );\n }\n if (\n channel.hasSubscribe() &&\n (!channel.subscribe().hasTags() ||\n !SpecificationHelpers.containTags(channel.subscribe(), tags))\n ) {\n untaggedOperations.push(\n <OperationsSubItem\n channelName={channelName}\n key={`sub-${channelName}`}\n />,\n );\n }\n });\n\n return (\n <div>\n <ul>\n {tags &&\n tags.map(tag => {\n const ops = taggedOperations(tag);\n return (\n ops.length > 0 && (\n <li key={tag.name()}>\n <OperationsByTagItem tagName={tag.name()}>\n {taggedOperations(tag)}\n </OperationsByTagItem>\n </li>\n )\n );\n })}\n {untaggedOperations.length > 0 && (\n <li>\n <OperationsByTagItem tagName=\"Untagged\">\n {untaggedOperations}\n </OperationsByTagItem>\n </li>\n )}\n </ul>\n </div>\n );\n};\n\nexport const OperationsByOperationsTags: React.FunctionComponent = () => {\n const asyncapi = useSpec();\n const channels = asyncapi.channels();\n const operationsTags = SpecificationHelpers.operationsTags(asyncapi);\n\n const taggedOperations = (tag: Tag) => {\n const operationsList: React.ReactNodeArray = [];\n Object.entries(channels).forEach(([channelName, channel]) => {\n if (\n channel.hasPublish() &&\n SpecificationHelpers.containTags(channel.publish(), tag)\n ) {\n operationsList.push(\n <OperationsPubItem\n channelName={channelName}\n key={`pub-${channelName}`}\n />,\n );\n }\n if (\n channel.hasSubscribe() &&\n SpecificationHelpers.containTags(channel.subscribe(), tag)\n ) {\n operationsList.push(\n <OperationsSubItem\n channelName={channelName}\n key={`sub-${channelName}`}\n />,\n );\n }\n });\n return operationsList;\n };\n\n const untaggedOperations: React.ReactNodeArray = [];\n Object.entries(channels).forEach(([channelName, channel]) => {\n if (\n channel.hasPublish() &&\n (!channel.publish().hasTags() ||\n !SpecificationHelpers.containTags(channel.publish(), operationsTags))\n ) {\n untaggedOperations.push(\n <OperationsPubItem\n channelName={channelName}\n key={`pub-${channelName}`}\n />,\n );\n }\n if (\n channel.hasSubscribe() &&\n (!channel.subscribe().hasTags() ||\n !SpecificationHelpers.containTags(channel.subscribe(), operationsTags))\n ) {\n untaggedOperations.push(\n <OperationsSubItem\n channelName={channelName}\n key={`sub-${channelName}`}\n />,\n );\n }\n });\n\n return (\n <div>\n <ul>\n {operationsTags &&\n operationsTags.map(tag => {\n const ops = taggedOperations(tag);\n return (\n ops.length > 0 && (\n <li key={tag.name()}>\n <OperationsByTagItem tagName={tag.name()}>\n {taggedOperations(tag)}\n </OperationsByTagItem>\n </li>\n )\n );\n })}\n {untaggedOperations.length > 0 && (\n <li>\n <OperationsByTagItem tagName=\"Untagged\">\n {untaggedOperations}\n </OperationsByTagItem>\n </li>\n )}\n </ul>\n </div>\n );\n};\n\ninterface OperationsByTagItemProps {\n tagName: string;\n}\n\nconst OperationsByTagItem: React.FunctionComponent<OperationsByTagItemProps> = ({\n tagName,\n children,\n}) => {\n const [expand, setExpand] = useState(false);\n\n return (\n <div>\n <CollapseButton\n onClick={() => setExpand(prev => !prev)}\n chevronProps={{\n className: expand ? '-rotate-180' : '-rotate-90',\n }}\n >\n <span className=\"text-sm inline-block mt-1 font-extralight\">\n {tagName}\n </span>\n </CollapseButton>\n <ul className={`${expand ? 'block' : 'hidden'} text-sm mt-2 font-light`}>\n {children}\n </ul>\n </div>\n );\n};\n\ninterface OperationsPubItemProps {\n channelName: string;\n}\n\nconst OperationsPubItem: React.FunctionComponent<OperationsPubItemProps> = ({\n channelName,\n}) => {\n const config = useConfig();\n const { setShowSidebar } = useContext(SidebarContext);\n\n return (\n <li>\n <a\n className=\"flex no-underline text-gray-700 mb-2 hover:text-gray-900\"\n href={`#operation-publish-${channelName}`}\n onClick={() => setShowSidebar(false)}\n >\n <span\n className=\"bg-blue-600 font-bold h-6 no-underline text-white uppercase p-1 mr-2 rounded text-xs\"\n title=\"Publish\"\n >\n {config.publishLabel || PUBLISH_LABEL_DEFAULT_TEXT}\n </span>\n <span className=\"break-all inline-block\">{channelName}</span>\n </a>\n </li>\n );\n};\n\nconst OperationsSubItem: React.FunctionComponent<OperationsPubItemProps> = ({\n channelName,\n}) => {\n const config = useConfig();\n const { setShowSidebar } = useContext(SidebarContext);\n\n return (\n <li>\n <a\n className=\"flex no-underline text-gray-700 mb-2 hover:text-gray-900\"\n href={`#operation-subscribe-${channelName}`}\n onClick={() => setShowSidebar(false)}\n >\n <span\n className=\"bg-green-600 font-bold h-6 no-underline text-white uppercase p-1 mr-2 rounded text-xs\"\n title=\"Subscribe\"\n >\n {config.subscribeLabel || SUBSCRIBE_LABEL_DEFAULT_TEXT}\n </span>\n <span className=\"break-all inline-block\">{channelName}</span>\n </a>\n </li>\n );\n};\n"]}
1
+ {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/containers/Sidebar/Sidebar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useContext } from 'react';\n\nimport { CollapseButton } from '../../components';\nimport { useConfig, useSpec } from '../../contexts';\nimport {\n PUBLISH_LABEL_DEFAULT_TEXT,\n SUBSCRIBE_LABEL_DEFAULT_TEXT,\n} from '../../constants';\n\nconst SidebarContext = React.createContext<{\n setShowSidebar: React.Dispatch<React.SetStateAction<boolean>>;\n}>({\n setShowSidebar: (value: boolean | ((prevValue: boolean) => boolean)) => value,\n});\n\nexport const Sidebar: React.FunctionComponent = () => {\n const [showSidebar, setShowSidebar] = useState(false);\n const asyncapi = useSpec();\n\n const info = asyncapi.info();\n const logo = info.ext('x-logo');\n const components = asyncapi.hasComponents() && asyncapi.components();\n const messages = components && components.messages();\n const schemas = components && components.schemas();\n const hasOperations =\n asyncapi.hasChannels() &&\n Object.values(asyncapi.channels()).some(\n channel => channel.hasPublish() || channel.hasSubscribe(),\n );\n\n const messagesList = messages && Object.keys(messages).length > 0 && (\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#messages\"\n onClick={() => setShowSidebar(false)}\n >\n Messages\n </a>\n <ul className=\"text-sm mt-2\">\n {Object.entries(messages).map(([messageName, message]) => (\n <li key={messageName}>\n <a\n className=\"flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900\"\n href={`#message-${messageName}`}\n onClick={() => setShowSidebar(false)}\n >\n <div className=\"break-all inline-block\">{message.uid()}</div>\n </a>\n </li>\n ))}\n </ul>\n </li>\n );\n\n const schemasList = schemas && Object.keys(schemas).length > 0 && (\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#schemas\"\n onClick={() => setShowSidebar(false)}\n >\n Schemas\n </a>\n <ul className=\"text-sm mt-2\">\n {Object.keys(schemas).map(schemaName => (\n <li key={schemaName}>\n <a\n className=\"flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900\"\n href={`#schema-${schemaName}`}\n onClick={() => setShowSidebar(false)}\n >\n <div className=\"break-all inline-block\">{schemaName}</div>\n </a>\n </li>\n ))}\n </ul>\n </li>\n );\n\n return (\n <SidebarContext.Provider value={{ setShowSidebar }}>\n <div\n className=\"burger-menu rounded-full h-16 w-16 bg-white fixed bottom-16 right-8 flex items-center justify-center z-30 cursor-pointer shadow-md bg-teal-500\"\n onClick={() => setShowSidebar(prev => !prev)}\n data-lol={showSidebar}\n >\n <svg\n viewBox=\"0 0 100 70\"\n width=\"40\"\n height=\"30\"\n className=\"fill-current text-gray-200\"\n >\n <rect width=\"100\" height=\"10\" />\n <rect y=\"30\" width=\"100\" height=\"10\" />\n <rect y=\"60\" width=\"100\" height=\"10\" />\n </svg>\n </div>\n <div\n className={`${\n showSidebar ? 'block fixed w-full' : 'hidden'\n } sidebar relative w-64 max-h-screen h-full bg-gray-200 shadow z-20`}\n // className={`${\n // showSidebar ? 'block fixed w-full' : 'hidden'\n // } sidebar bg-gray-200 font-sans font-light px-4 py-8 z-20 shadow overflow-auto`}\n >\n <div\n className={`${\n showSidebar ? 'w-full' : ''\n } block fixed max-h-screen h-full font-sans px-4 pt-8 pb-16 overflow-y-auto bg-gray-200`}\n >\n <div className=\"sidebar--content\">\n <div>\n {logo ? (\n <img\n src={logo}\n alt={`${info.title()} logo, ${info.version()} version`}\n />\n ) : (\n <h1 className=\"text-2xl font-light\">\n {info.title()} {info.version()}\n </h1>\n )}\n </div>\n\n <ul className=\"text-sm mt-10 relative\">\n <li className=\"mb-3\">\n <a\n className=\"text-gray-700 no-underline hover:text-gray-900\"\n href=\"#introduction\"\n onClick={() => setShowSidebar(false)}\n >\n Introduction\n </a>\n </li>\n {asyncapi.hasServers() && (\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#servers\"\n onClick={() => setShowSidebar(false)}\n >\n Servers\n </a>\n <ServersList />\n </li>\n )}\n {hasOperations && (\n <>\n <li className=\"mb-3 mt-9\">\n <a\n className=\"text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900\"\n href=\"#operations\"\n onClick={() => setShowSidebar(false)}\n >\n Operations\n </a>\n <OperationsList />\n </li>\n {messagesList}\n {schemasList}\n </>\n )}\n </ul>\n </div>\n </div>\n </div>\n </SidebarContext.Provider>\n );\n};\n\ninterface TagObject<T = any> {\n name: string;\n object: { tags?: () => Array<{ name: () => string }> };\n data: T;\n}\n\nfunction filterObjectsByTags<T = any>(\n tags: string[],\n objects: Array<TagObject<T>>,\n): { tagged: Map<string, TagObject[]>; untagged: TagObject[] } {\n const taggedObjects = new Set<TagObject>();\n const tagged = new Map<string, TagObject[]>();\n\n tags.forEach(tag => {\n const taggedForTag: TagObject[] = [];\n objects.forEach(obj => {\n const object = obj.object;\n if (typeof object.tags !== 'function') {\n return;\n }\n\n const objectTags = (object.tags() || []).map(t => t.name());\n const hasTag = objectTags.includes(tag);\n if (hasTag) {\n taggedForTag.push(obj);\n taggedObjects.add(obj);\n }\n });\n tagged.set(tag, taggedForTag);\n });\n\n const untagged: TagObject[] = [];\n objects.forEach(obj => {\n if (!taggedObjects.has(obj)) {\n untagged.push(obj);\n }\n });\n\n return { tagged, untagged };\n}\n\nconst ServersList: React.FunctionComponent = () => {\n const sidebarConfig = useConfig().sidebar;\n const asyncapi = useSpec();\n const servers = asyncapi.servers();\n const showServers = sidebarConfig?.showServers || 'byDefault';\n\n if (showServers === 'byDefault') {\n return (\n <ul className=\"text-sm mt-2\">\n {Object.keys(servers).map(serverName => (\n <ServerItem serverName={serverName} key={serverName} />\n ))}\n </ul>\n );\n }\n\n let specTagNames: string[];\n if (showServers === 'bySpecTags') {\n specTagNames = (asyncapi.tags() || []).map(tag => tag.name());\n } else {\n const serverTagNamesSet = new Set<string>();\n Object.values(servers).forEach(server => {\n if (typeof server.tags !== 'function') {\n return;\n }\n server.tags().forEach(t => serverTagNamesSet.add(t.name()));\n });\n specTagNames = Array.from(serverTagNamesSet);\n }\n\n const serializedServers: TagObject[] = Object.entries(servers).map(\n ([serverName, server]) => ({\n name: serverName,\n object: server,\n data: {},\n }),\n );\n const { tagged, untagged } = filterObjectsByTags(\n specTagNames,\n serializedServers,\n );\n return (\n <ul className=\"text-sm mt-2\">\n {Array.from(tagged.entries()).map(([tag, taggedServers]) => (\n <li key={tag}>\n <ItemsByTagItem tagName={tag}>\n {taggedServers.map(({ name: serverName }) => (\n <ServerItem serverName={serverName} key={serverName} />\n ))}\n </ItemsByTagItem>\n </li>\n ))}\n {untagged.length > 0 ? (\n <li>\n <ItemsByTagItem tagName=\"Untagged\">\n {untagged.map(({ name: serverName }) => (\n <ServerItem serverName={serverName} key={serverName} />\n ))}\n </ItemsByTagItem>\n </li>\n ) : null}\n </ul>\n );\n};\n\nconst OperationsList: React.FunctionComponent = () => {\n const sidebarConfig = useConfig().sidebar;\n const asyncapi = useSpec();\n const channels = asyncapi.channels();\n const showOperations = sidebarConfig?.showOperations || 'byDefault';\n\n const operations: Array<TagObject<{\n channelName: string;\n kind: 'publish' | 'subscribe';\n }>> = [];\n Object.entries(channels).forEach(([channelName, channel]) => {\n if (channel.hasPublish()) {\n operations.push({\n name: `publish-${channelName}`,\n object: channel.publish(),\n data: { channelName, kind: 'publish' },\n });\n }\n if (channel.hasSubscribe()) {\n operations.push({\n name: `subscribe-${channelName}`,\n object: channel.subscribe(),\n data: { channelName, kind: 'subscribe' },\n });\n }\n });\n\n if (showOperations === 'byDefault') {\n return (\n <ul className=\"text-sm mt-2\">\n {operations.map(({ name, data: { channelName, kind } }) => (\n <OperationItem channelName={channelName} kind={kind} key={name} />\n ))}\n </ul>\n );\n }\n\n let operationTagNames: string[];\n if (showOperations === 'bySpecTags') {\n operationTagNames = (asyncapi.tags() || []).map(tag => tag.name());\n } else {\n const operationTagNamesSet = new Set<string>();\n Object.values(operations).forEach(({ object }) => {\n if (typeof object.tags !== 'function') {\n return;\n }\n object.tags().forEach(t => operationTagNamesSet.add(t.name()));\n });\n operationTagNames = Array.from(operationTagNamesSet);\n }\n\n const { tagged, untagged } = filterObjectsByTags(\n operationTagNames,\n operations,\n );\n return (\n <ul className=\"text-sm mt-2\">\n {Array.from(tagged.entries()).map(([tag, taggedOperations]) => (\n <li key={tag}>\n <ItemsByTagItem tagName={tag}>\n {taggedOperations.map(({ name, data: { kind, channelName } }) => (\n <OperationItem channelName={channelName} kind={kind} key={name} />\n ))}\n </ItemsByTagItem>\n </li>\n ))}\n {untagged.length > 0 ? (\n <li>\n <ItemsByTagItem tagName=\"Untagged\">\n {untagged.map(({ name, data: { kind, channelName } }) => (\n <OperationItem channelName={channelName} kind={kind} key={name} />\n ))}\n </ItemsByTagItem>\n </li>\n ) : null}\n </ul>\n );\n};\n\ninterface OperationItemProps {\n channelName: string;\n kind: 'publish' | 'subscribe';\n}\n\nconst OperationItem: React.FunctionComponent<OperationItemProps> = ({\n channelName,\n kind,\n}) => {\n const config = useConfig();\n const { setShowSidebar } = useContext(SidebarContext);\n\n const isPublish = kind === 'publish';\n let label: string = '';\n if (isPublish) {\n label = config.publishLabel || PUBLISH_LABEL_DEFAULT_TEXT;\n } else {\n label = config.subscribeLabel || SUBSCRIBE_LABEL_DEFAULT_TEXT;\n }\n\n return (\n <li>\n <a\n className=\"flex no-underline text-gray-700 mb-2 hover:text-gray-900\"\n href={`#operation-${kind}-${channelName}`}\n onClick={() => setShowSidebar(false)}\n >\n <span\n className={`${\n isPublish ? 'bg-blue-600' : 'bg-green-600'\n } font-bold h-6 no-underline text-white uppercase p-1 mr-2 rounded text-xs`}\n title={isPublish ? 'Publish' : 'Subscribe'}\n >\n {label}\n </span>\n <span className=\"break-all inline-block\">{channelName}</span>\n </a>\n </li>\n );\n};\n\ninterface ServerItemProps {\n serverName: string;\n}\n\nconst ServerItem: React.FunctionComponent<ServerItemProps> = ({\n serverName,\n}) => {\n const { setShowSidebar } = useContext(SidebarContext);\n\n return (\n <li>\n <a\n className=\"flex no-underline text-gray-700 mb-2 hover:text-gray-900\"\n href={`#server-${serverName}`}\n onClick={() => setShowSidebar(false)}\n >\n <span className=\"break-all inline-block\">{serverName}</span>\n </a>\n </li>\n );\n};\n\ninterface ItemsByTagItemProps {\n tagName: string;\n}\n\nconst ItemsByTagItem: React.FunctionComponent<ItemsByTagItemProps> = ({\n tagName,\n children,\n}) => {\n const [expand, setExpand] = useState(false);\n\n return (\n <div>\n <CollapseButton\n onClick={() => setExpand(prev => !prev)}\n chevronProps={{\n className: expand ? '-rotate-180' : '-rotate-90',\n }}\n >\n <span className=\"text-sm inline-block mt-1 font-extralight\">\n {tagName}\n </span>\n </CollapseButton>\n <ul className={`${expand ? 'block' : 'hidden'} text-sm mt-2 font-light`}>\n {children}\n </ul>\n </div>\n );\n};\n"]}