@teambit/component 1.0.106 → 1.0.108

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 (84) hide show
  1. package/aspect-entry.ts +73 -0
  2. package/aspect-list.ts +132 -0
  3. package/component-factory.ts +190 -0
  4. package/component-fs.ts +66 -0
  5. package/component-interface.ts +26 -0
  6. package/component-meta.ts +29 -0
  7. package/component.aspect.ts +9 -0
  8. package/component.graphql.ts +256 -0
  9. package/component.main.runtime.ts +170 -0
  10. package/component.route.ts +38 -0
  11. package/component.ts +319 -0
  12. package/config.ts +24 -0
  13. package/dist/aspect-entry.d.ts +4 -4
  14. package/dist/aspect-entry.js +1 -2
  15. package/dist/aspect-entry.js.map +1 -1
  16. package/dist/aspect-list.js +2 -2
  17. package/dist/aspect-list.js.map +1 -1
  18. package/dist/aspect.section.d.ts +3 -3
  19. package/dist/component-factory.d.ts +3 -3
  20. package/dist/component-interface.d.ts +1 -1
  21. package/dist/component-map/component-map.d.ts +2 -2
  22. package/dist/component.composition.d.ts +2 -2
  23. package/dist/component.d.ts +3 -3
  24. package/dist/component.graphql.d.ts +13 -13
  25. package/dist/component.graphql.js +3 -6
  26. package/dist/component.graphql.js.map +1 -1
  27. package/dist/component.js +5 -9
  28. package/dist/component.js.map +1 -1
  29. package/dist/component.main.runtime.d.ts +2 -2
  30. package/dist/component.route.d.ts +2 -2
  31. package/dist/component.ui.runtime.d.ts +7 -7
  32. package/dist/component.ui.runtime.js +12 -27
  33. package/dist/component.ui.runtime.js.map +1 -1
  34. package/dist/get-component-opts.d.ts +1 -1
  35. package/dist/hash.d.ts +1 -1
  36. package/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
  37. package/dist/snap/author.d.ts +1 -1
  38. package/dist/snap/snap.d.ts +1 -1
  39. package/dist/tag/tag.d.ts +1 -1
  40. package/dist/tag-map.d.ts +1 -1
  41. package/dist/ui/aspect-page/aspect-page.d.ts +2 -2
  42. package/dist/ui/aspect-page/aspect-page.js +1 -2
  43. package/dist/ui/aspect-page/aspect-page.js.map +1 -1
  44. package/dist/ui/component-error/component-error.d.ts +4 -4
  45. package/dist/ui/component-model/component-model.d.ts +21 -21
  46. package/dist/ui/component-model/component-model.js +1 -1
  47. package/dist/ui/component-model/component-model.js.map +1 -1
  48. package/dist/ui/component-searcher/component-result.d.ts +4 -4
  49. package/dist/ui/component-searcher/component-result.js +2 -2
  50. package/dist/ui/component-searcher/component-result.js.map +1 -1
  51. package/dist/ui/component-searcher/component-searcher.d.ts +2 -2
  52. package/dist/ui/component.d.ts +5 -5
  53. package/dist/ui/component.js +6 -6
  54. package/dist/ui/component.js.map +1 -1
  55. package/dist/ui/context/component-context.d.ts +1 -1
  56. package/dist/ui/context/component-provider.d.ts +5 -5
  57. package/dist/ui/menu/menu-nav.d.ts +2 -2
  58. package/dist/ui/menu/menu-nav.js +5 -5
  59. package/dist/ui/menu/menu-nav.js.map +1 -1
  60. package/dist/ui/menu/menu.d.ts +9 -9
  61. package/dist/ui/menu/menu.js +28 -31
  62. package/dist/ui/menu/menu.js.map +1 -1
  63. package/dist/ui/menu/nav-plugin.d.ts +7 -7
  64. package/dist/ui/top-bar-nav/top-bar-nav.d.ts +2 -2
  65. package/dist/ui/use-component-from-location.js +1 -1
  66. package/dist/ui/use-component-from-location.js.map +1 -1
  67. package/dist/ui/use-component-logs.d.ts +7 -7
  68. package/dist/ui/use-component-logs.js +5 -6
  69. package/dist/ui/use-component-logs.js.map +1 -1
  70. package/dist/ui/use-component-query.js +13 -17
  71. package/dist/ui/use-component-query.js.map +1 -1
  72. package/dist/ui/use-component.model.d.ts +7 -7
  73. package/get-component-opts.ts +14 -0
  74. package/hash.ts +4 -0
  75. package/head.ts +0 -0
  76. package/history-graph.ts +1 -0
  77. package/index.ts +50 -0
  78. package/on-load.ts +0 -0
  79. package/package.json +34 -41
  80. package/state.ts +88 -0
  81. package/store.ts +3 -0
  82. package/tag-map.ts +87 -0
  83. package/tsconfig.json +16 -21
  84. package/types/asset.d.ts +15 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_stripAnsi","data","_interopRequireDefault","require","_graphqlTag","_graphqlTypeJson","_utils","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","componentSchema","componentExtension","typeDefs","gql","resolvers","JSONObject","GraphQLJSONObject","Component","id","component","toObject","displayName","fs","state","filesystem","files","map","file","relative","log","snap","loadSnap","version","date","timestamp","getTime","email","author","username","name","hash","getFile","path","maybeFile","find","pathNormalizeToLinux","undefined","contents","toString","mainFile","_consumer","headTag","_component$headTag","latest","tags","toArray","tag","aspects","include","serialize","logs","head","takeHeadFromComponent","finalFilter","getLogs","ComponentHost","get","host","componentId","resolveComponentId","error","snaps","list","listInvalid","invalidComps","err","errorName","errorMessage","message","stripAnsi","Query","getHost","componentExt"],"sources":["component.graphql.ts"],"sourcesContent":["import stripAnsi from 'strip-ansi';\nimport gql from 'graphql-tag';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport { Component } from './component';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentMain } from './component.main.runtime';\n\nexport function componentSchema(componentExtension: ComponentMain) {\n return {\n typeDefs: gql`\n scalar JSON\n scalar JSONObject\n\n type ComponentID {\n name: String!\n version: String\n scope: String\n }\n\n type Tag {\n # semver assigned to the tag.\n version: String!\n\n # tag hash.\n hash: String!\n }\n\n type Snap {\n # hash of the snapshot.\n hash: String!\n\n # time of the snapshot.\n timestamp: String!\n\n # parents of the snap\n parents: [String]!\n\n # snapper\n author: Author!\n\n # snapshot message\n message: String\n }\n\n type LogEntry {\n message: String!\n displayName: String\n username: String\n parents: [String]!\n email: String\n date: String\n hash: String!\n tag: String\n id: String!\n profileImage: String\n }\n\n type Author {\n # display name of the snapper.\n displayName: String!\n\n # author of the snapper.\n email: String!\n }\n\n type Component {\n # id of the component.\n id: ComponentID!\n\n # head snap of the component.\n head: Snap\n\n # head tag of the component.\n headTag: Tag\n\n # list of all relative component paths.\n fs: [String]\n\n # relative path to the main file of the component\n mainFile: String\n\n # return specific file contents by relative file path.\n getFile(path: String): String\n\n # latest version of the component.\n latest: String\n\n # display name of the component\n displayName: String!\n\n # component buildStatus\n buildStatus: String\n\n # list of component releases.\n tags: [Tag]!\n\n # Log entry of the component.\n log: LogEntry!\n\n \"\"\"\n component logs\n \"\"\"\n logs(\n \"\"\"\n type of logs to show (tag or snap)\n \"\"\"\n type: String\n offset: Int\n limit: Int\n \"\"\"\n head to start traversing logs from\n \"\"\"\n head: String\n sort: String\n \"\"\"\n start traversing logs from the fetched component's head\n \"\"\"\n takeHeadFromComponent: Boolean\n ): [LogEntry]!\n\n aspects(include: [String]): [Aspect]\n }\n\n type Aspect {\n id: String!\n icon: String\n config: JSONObject\n data: JSONObject\n }\n\n type InvalidComponent {\n id: ComponentID!\n errorName: String!\n errorMessage: String!\n }\n\n type ComponentHost {\n id: ID!\n name: String!\n\n # load a component.\n get(id: String!, withState: Boolean): Component\n\n # list components\n list(offset: Int, limit: Int): [Component]!\n\n # list invalid components and their errors\n listInvalid: [InvalidComponent]!\n\n # get component logs(snaps) by component id\n snaps(id: String!): [LogEntry]! @deprecated(reason: \"Use the logs field on Component\")\n }\n\n type Query {\n getHost(id: String): ComponentHost\n }\n `,\n resolvers: {\n JSONObject: GraphQLJSONObject,\n Component: {\n id: (component: Component) => component.id.toObject(),\n displayName: (component: Component) => component.displayName,\n fs: (component: Component) => {\n return component.state.filesystem.files.map((file) => file.relative);\n },\n log: async (component: Component) => {\n const snap = await component.loadSnap(component.id.version);\n return {\n ...snap,\n date: snap.timestamp.getTime(),\n email: snap.author.email,\n username: snap.author.name,\n displayName: snap.author.displayName,\n id: snap.hash,\n };\n },\n getFile: (component: Component, { path }: { path: string }) => {\n const maybeFile = component.state.filesystem.files.find(\n (file) => pathNormalizeToLinux(file.relative) === path\n );\n if (!maybeFile) return undefined;\n return maybeFile.contents.toString('utf-8');\n },\n mainFile: (component: Component) => {\n return component.state._consumer.mainFile;\n },\n headTag: (component: Component) => component.headTag?.toObject(),\n latest: (component: Component) => component.latest,\n tags: (component) => {\n // graphql doesn't support map types\n return component.tags.toArray().map((tag) => tag.toObject());\n },\n aspects: (component: Component, { include }: { include?: string[] }) => {\n return component.state.aspects.filter(include).serialize();\n },\n logs: async (\n component: Component,\n filter?: {\n type?: string;\n offset?: number;\n limit?: number;\n head?: string;\n sort?: string;\n takeHeadFromComponent: boolean;\n }\n ) => {\n let head = filter?.head;\n if (!head && filter?.takeHeadFromComponent) {\n head = component.id.version;\n }\n const finalFilter = { ...filter, ...{ head } };\n return (await component.getLogs(finalFilter)).map((log) => ({ ...log, id: log.hash }));\n },\n },\n ComponentHost: {\n get: async (host: ComponentFactory, { id }: { id: string }) => {\n try {\n const componentId = await host.resolveComponentId(id);\n const component = await host.get(componentId);\n return component;\n } catch (error: any) {\n return null;\n }\n },\n snaps: async (host: ComponentFactory, { id }: { id: string }) => {\n const componentId = await host.resolveComponentId(id);\n // return (await host.getLogs(componentId)).map(log => ({...log, id: log.hash}))\n return host.getLogs(componentId);\n },\n list: async (host: ComponentFactory, filter?: { offset: number; limit: number }) => {\n return host.list(filter);\n },\n listInvalid: async (host: ComponentFactory) => {\n const invalidComps = await host.listInvalid();\n return invalidComps.map(({ id, err }) => ({\n id,\n errorName: err.name,\n errorMessage: err.message ? stripAnsi(err.message) : err.name,\n }));\n },\n id: async (host: ComponentFactory) => {\n return host.name;\n },\n name: async (host: ComponentFactory) => {\n return host.name;\n },\n },\n Query: {\n getHost: (componentExt: ComponentMain, { id }: { id: string }) => {\n return componentExtension.getHost(id);\n },\n },\n },\n };\n}\n"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,UAAU,EAAEC,oCAAiB;MAC7BC,SAAS,EAAE;QACTC,EAAE,EAAGC,SAAoB,IAAKA,SAAS,CAACD,EAAE,CAACE,QAAQ,CAAC,CAAC;QACrDC,WAAW,EAAGF,SAAoB,IAAKA,SAAS,CAACE,WAAW;QAC5DC,EAAE,EAAGH,SAAoB,IAAK;UAC5B,OAAOA,SAAS,CAACI,KAAK,CAACC,UAAU,CAACC,KAAK,CAACC,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,QAAQ,CAAC;QACtE,CAAC;QACDC,GAAG,EAAE,MAAOV,SAAoB,IAAK;UACnC,MAAMW,IAAI,GAAG,MAAMX,SAAS,CAACY,QAAQ,CAACZ,SAAS,CAACD,EAAE,CAACc,OAAO,CAAC;UAC3D,OAAA3C,aAAA,CAAAA,aAAA,KACKyC,IAAI;YACPG,IAAI,EAAEH,IAAI,CAACI,SAAS,CAACC,OAAO,CAAC,CAAC;YAC9BC,KAAK,EAAEN,IAAI,CAACO,MAAM,CAACD,KAAK;YACxBE,QAAQ,EAAER,IAAI,CAACO,MAAM,CAACE,IAAI;YAC1BlB,WAAW,EAAES,IAAI,CAACO,MAAM,CAAChB,WAAW;YACpCH,EAAE,EAAEY,IAAI,CAACU;UAAI;QAEjB,CAAC;QACDC,OAAO,EAAEA,CAACtB,SAAoB,EAAE;UAAEuB;QAAuB,CAAC,KAAK;UAC7D,MAAMC,SAAS,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"}
1
+ {"version":3,"names":["_stripAnsi","data","_interopRequireDefault","require","_graphqlTag","_graphqlTypeJson","_utils","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","componentSchema","componentExtension","typeDefs","gql","resolvers","JSONObject","GraphQLJSONObject","Component","id","component","toObject","displayName","fs","state","filesystem","files","map","file","relative","log","snap","loadSnap","version","date","timestamp","getTime","email","author","username","name","hash","getFile","path","maybeFile","find","pathNormalizeToLinux","undefined","contents","toString","mainFile","_consumer","headTag","latest","tags","toArray","tag","aspects","include","serialize","logs","head","takeHeadFromComponent","finalFilter","getLogs","ComponentHost","get","host","componentId","resolveComponentId","error","snaps","list","listInvalid","invalidComps","err","errorName","errorMessage","message","stripAnsi","Query","getHost","componentExt"],"sources":["component.graphql.ts"],"sourcesContent":["import stripAnsi from 'strip-ansi';\nimport gql from 'graphql-tag';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport { Component } from './component';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentMain } from './component.main.runtime';\n\nexport function componentSchema(componentExtension: ComponentMain) {\n return {\n typeDefs: gql`\n scalar JSON\n scalar JSONObject\n\n type ComponentID {\n name: String!\n version: String\n scope: String\n }\n\n type Tag {\n # semver assigned to the tag.\n version: String!\n\n # tag hash.\n hash: String!\n }\n\n type Snap {\n # hash of the snapshot.\n hash: String!\n\n # time of the snapshot.\n timestamp: String!\n\n # parents of the snap\n parents: [String]!\n\n # snapper\n author: Author!\n\n # snapshot message\n message: String\n }\n\n type LogEntry {\n message: String!\n displayName: String\n username: String\n parents: [String]!\n email: String\n date: String\n hash: String!\n tag: String\n id: String!\n profileImage: String\n }\n\n type Author {\n # display name of the snapper.\n displayName: String!\n\n # author of the snapper.\n email: String!\n }\n\n type Component {\n # id of the component.\n id: ComponentID!\n\n # head snap of the component.\n head: Snap\n\n # head tag of the component.\n headTag: Tag\n\n # list of all relative component paths.\n fs: [String]\n\n # relative path to the main file of the component\n mainFile: String\n\n # return specific file contents by relative file path.\n getFile(path: String): String\n\n # latest version of the component.\n latest: String\n\n # display name of the component\n displayName: String!\n\n # component buildStatus\n buildStatus: String\n\n # list of component releases.\n tags: [Tag]!\n\n # Log entry of the component.\n log: LogEntry!\n\n \"\"\"\n component logs\n \"\"\"\n logs(\n \"\"\"\n type of logs to show (tag or snap)\n \"\"\"\n type: String\n offset: Int\n limit: Int\n \"\"\"\n head to start traversing logs from\n \"\"\"\n head: String\n sort: String\n \"\"\"\n start traversing logs from the fetched component's head\n \"\"\"\n takeHeadFromComponent: Boolean\n ): [LogEntry]!\n\n aspects(include: [String]): [Aspect]\n }\n\n type Aspect {\n id: String!\n icon: String\n config: JSONObject\n data: JSONObject\n }\n\n type InvalidComponent {\n id: ComponentID!\n errorName: String!\n errorMessage: String!\n }\n\n type ComponentHost {\n id: ID!\n name: String!\n\n # load a component.\n get(id: String!, withState: Boolean): Component\n\n # list components\n list(offset: Int, limit: Int): [Component]!\n\n # list invalid components and their errors\n listInvalid: [InvalidComponent]!\n\n # get component logs(snaps) by component id\n snaps(id: String!): [LogEntry]! @deprecated(reason: \"Use the logs field on Component\")\n }\n\n type Query {\n getHost(id: String): ComponentHost\n }\n `,\n resolvers: {\n JSONObject: GraphQLJSONObject,\n Component: {\n id: (component: Component) => component.id.toObject(),\n displayName: (component: Component) => component.displayName,\n fs: (component: Component) => {\n return component.state.filesystem.files.map((file) => file.relative);\n },\n log: async (component: Component) => {\n const snap = await component.loadSnap(component.id.version);\n return {\n ...snap,\n date: snap.timestamp.getTime(),\n email: snap.author.email,\n username: snap.author.name,\n displayName: snap.author.displayName,\n id: snap.hash,\n };\n },\n getFile: (component: Component, { path }: { path: string }) => {\n const maybeFile = component.state.filesystem.files.find(\n (file) => pathNormalizeToLinux(file.relative) === path\n );\n if (!maybeFile) return undefined;\n return maybeFile.contents.toString('utf-8');\n },\n mainFile: (component: Component) => {\n return component.state._consumer.mainFile;\n },\n headTag: (component: Component) => component.headTag?.toObject(),\n latest: (component: Component) => component.latest,\n tags: (component) => {\n // graphql doesn't support map types\n return component.tags.toArray().map((tag) => tag.toObject());\n },\n aspects: (component: Component, { include }: { include?: string[] }) => {\n return component.state.aspects.filter(include).serialize();\n },\n logs: async (\n component: Component,\n filter?: {\n type?: string;\n offset?: number;\n limit?: number;\n head?: string;\n sort?: string;\n takeHeadFromComponent: boolean;\n }\n ) => {\n let head = filter?.head;\n if (!head && filter?.takeHeadFromComponent) {\n head = component.id.version;\n }\n const finalFilter = { ...filter, ...{ head } };\n return (await component.getLogs(finalFilter)).map((log) => ({ ...log, id: log.hash }));\n },\n },\n ComponentHost: {\n get: async (host: ComponentFactory, { id }: { id: string }) => {\n try {\n const componentId = await host.resolveComponentId(id);\n const component = await host.get(componentId);\n return component;\n } catch (error: any) {\n return null;\n }\n },\n snaps: async (host: ComponentFactory, { id }: { id: string }) => {\n const componentId = await host.resolveComponentId(id);\n // return (await host.getLogs(componentId)).map(log => ({...log, id: log.hash}))\n return host.getLogs(componentId);\n },\n list: async (host: ComponentFactory, filter?: { offset: number; limit: number }) => {\n return host.list(filter);\n },\n listInvalid: async (host: ComponentFactory) => {\n const invalidComps = await host.listInvalid();\n return invalidComps.map(({ id, err }) => ({\n id,\n errorName: err.name,\n errorMessage: err.message ? stripAnsi(err.message) : err.name,\n }));\n },\n id: async (host: ComponentFactory) => {\n return host.name;\n },\n name: async (host: ComponentFactory) => {\n return host.name;\n },\n },\n Query: {\n getHost: (componentExt: ComponentMain, { id }: { id: string }) => {\n return componentExtension.getHost(id);\n },\n },\n },\n };\n}\n"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,UAAU,EAAEC,oCAAiB;MAC7BC,SAAS,EAAE;QACTC,EAAE,EAAGC,SAAoB,IAAKA,SAAS,CAACD,EAAE,CAACE,QAAQ,CAAC,CAAC;QACrDC,WAAW,EAAGF,SAAoB,IAAKA,SAAS,CAACE,WAAW;QAC5DC,EAAE,EAAGH,SAAoB,IAAK;UAC5B,OAAOA,SAAS,CAACI,KAAK,CAACC,UAAU,CAACC,KAAK,CAACC,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,QAAQ,CAAC;QACtE,CAAC;QACDC,GAAG,EAAE,MAAOV,SAAoB,IAAK;UACnC,MAAMW,IAAI,GAAG,MAAMX,SAAS,CAACY,QAAQ,CAACZ,SAAS,CAACD,EAAE,CAACc,OAAO,CAAC;UAC3D,OAAA3C,aAAA,CAAAA,aAAA,KACKyC,IAAI;YACPG,IAAI,EAAEH,IAAI,CAACI,SAAS,CAACC,OAAO,CAAC,CAAC;YAC9BC,KAAK,EAAEN,IAAI,CAACO,MAAM,CAACD,KAAK;YACxBE,QAAQ,EAAER,IAAI,CAACO,MAAM,CAACE,IAAI;YAC1BlB,WAAW,EAAES,IAAI,CAACO,MAAM,CAAChB,WAAW;YACpCH,EAAE,EAAEY,IAAI,CAACU;UAAI;QAEjB,CAAC;QACDC,OAAO,EAAEA,CAACtB,SAAoB,EAAE;UAAEuB;QAAuB,CAAC,KAAK;UAC7D,MAAMC,SAAS,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"}
package/dist/component.js CHANGED
@@ -126,11 +126,10 @@ class Component {
126
126
  * get aspect data from current state.
127
127
  */
128
128
  get(id) {
129
- var _this$state$aspects$g;
130
- return (_this$state$aspects$g = this.state.aspects.get(id)) === null || _this$state$aspects$g === void 0 ? void 0 : _this$state$aspects$g.serialize();
129
+ return this.state.aspects.get(id)?.serialize();
131
130
  }
132
131
  async getLogs(filter) {
133
- const allLogs = await this.factory.getLogs(this.id, false, filter === null || filter === void 0 ? void 0 : filter.head);
132
+ const allLogs = await this.factory.getLogs(this.id, false, filter?.head);
134
133
  if (!filter) return allLogs;
135
134
  const {
136
135
  type,
@@ -203,11 +202,10 @@ class Component {
203
202
  * is component isOutdated
204
203
  */
205
204
  isOutdated() {
206
- var _this$head;
207
205
  if (!this.latest) return false;
208
206
  const latestTag = this.tags.byVersion(this.latest);
209
207
  if (!latestTag) return false;
210
- if (((_this$head = this.head) === null || _this$head === void 0 ? void 0 : _this$head.hash) !== (latestTag === null || latestTag === void 0 ? void 0 : latestTag.hash)) return true;
208
+ if (this.head?.hash !== latestTag?.hash) return true;
211
209
  return false;
212
210
  }
213
211
 
@@ -223,8 +221,7 @@ class Component {
223
221
  return this.factory.getState(this.id, snapId);
224
222
  }
225
223
  loadSnap(snapId) {
226
- var _this$head2;
227
- const snapToGet = snapId || ((_this$head2 = this.head) === null || _this$head2 === void 0 ? void 0 : _this$head2.hash);
224
+ const snapToGet = snapId || this.head?.hash;
228
225
  if (!snapToGet) {
229
226
  throw new (_bitError().BitError)('could not load snap for new components');
230
227
  }
@@ -237,8 +234,7 @@ class Component {
237
234
  * @param options
238
235
  */
239
236
  snapsIterable(snapId, options = {}) {
240
- var _this$head3;
241
- const snapToStart = snapId || ((_this$head3 = this.head) === null || _this$head3 === void 0 ? void 0 : _this$head3.hash);
237
+ const snapToStart = snapId || this.head?.hash;
242
238
  let nextSnaps = [snapToStart];
243
239
  let done;
244
240
  if (!snapToStart) {
@@ -1 +1 @@
1
- {"version":3,"names":["_toolboxString","data","require","_bitError","_lodash","_tagMap","_exceptions","Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","get","_this$state$aspects$g","aspects","serialize","getLogs","filter","allLogs","type","limit","offset","sort","typeFilter","snap","tag","filteredLogs","reverse","slice","stringify","JSON","displayName","tokens","name","split","map","token","capitalize","join","version","isModified","isDeleted","isRemoved","isOutdated","_this$head","latestTag","byVersion","isNew","Promise","resolve","loadState","snapId","getState","loadSnap","_this$head2","snapToGet","BitError","getSnap","snapsIterable","options","_this$head3","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","checkout","write","path","fs","equals","component","toString","exports"],"sources":["component.ts"],"sourcesContent":["import { AnyFS } from '@teambit/any-fs';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport { SemVer } from 'semver';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { BuildStatus } from '@teambit/legacy/dist/constants';\n\nimport { slice } from 'lodash';\nimport { ComponentFactory } from './component-factory';\nimport ComponentFS from './component-fs';\n// import { NothingToSnap } from './exceptions';\nimport { Config as ComponentConfig } from './config';\n// eslint-disable-next-line import/no-cycle\nimport { Snap } from './snap';\nimport { State } from './state';\nimport { TagMap } from './tag-map';\nimport { Tag } from './tag';\nimport { CouldNotFindLatest } from './exceptions';\nimport { IComponent, RawComponentMetadata } from './component-interface';\n// import { Author } from './types';\n\ntype SnapsIterableOpts = {\n firstParentOnly?: boolean;\n stopFn?: (snap: Snap) => Promise<boolean>;\n};\n\nexport type InvalidComponent = { id: ComponentID; err: Error };\n\n/**\n * in-memory representation of a component.\n */\nexport class Component implements IComponent {\n constructor(\n /**\n * component ID represented by the `ComponentId` type.\n */\n readonly id: ComponentID,\n\n /**\n * head version of the component. can be `null` for new components.\n */\n readonly head: Snap | null = null,\n\n /**\n * state of the component.\n */\n private _state: State,\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap = new TagMap(),\n\n /**\n * the component factory\n */\n private factory: ComponentFactory\n ) {}\n\n get mainFile() {\n return this.state.mainFile;\n }\n\n get state(): State {\n return this._state;\n }\n\n set state(state: State) {\n this._state = state;\n }\n\n /**\n * component configuration which is later generated to a component `package.json` and `bit.json`.\n */\n get config(): ComponentConfig {\n return this.state.config;\n }\n\n /**\n * in-memory representation of the component current filesystem.\n */\n get filesystem(): ComponentFS {\n return this.state.filesystem;\n }\n\n /**\n * build status of the component\n */\n get buildStatus(): BuildStatus {\n return this._state._consumer.buildStatus;\n }\n\n get headTag() {\n if (!this.head) return undefined;\n return this.tags.byHash(this.head.hash);\n }\n\n get latest(): string | undefined {\n if (!this.head) return undefined;\n try {\n return this.tags.getLatest();\n } catch (err: any) {\n if (err instanceof CouldNotFindLatest) {\n return this.head.hash;\n }\n throw err;\n }\n }\n\n /**\n * get aspect data from current state.\n */\n get(id: string): RawComponentMetadata | undefined {\n return this.state.aspects.get(id)?.serialize();\n }\n\n async getLogs(filter?: { type?: string; offset?: number; limit?: number; head?: string; sort?: string }) {\n const allLogs = await this.factory.getLogs(this.id, false, filter?.head);\n\n if (!filter) return allLogs;\n\n const { type, limit, offset, sort } = filter;\n\n const typeFilter = (snap) => {\n if (type === 'tag') return snap.tag;\n if (type === 'snap') return !snap.tag;\n return true;\n };\n\n let filteredLogs = (type && allLogs.filter(typeFilter)) || allLogs;\n if (sort !== 'asc') filteredLogs = filteredLogs.reverse();\n\n if (limit) {\n filteredLogs = slice(filteredLogs, offset, limit + (offset || 0));\n }\n\n return filteredLogs;\n }\n\n stringify(): string {\n return JSON.stringify({\n id: this.id,\n head: this.head,\n });\n }\n\n /**\n * record component changes in the `Scope`.\n */\n // snap(author: Author, message = '') {\n // if (!this.isModified()) throw new NothingToSnap();\n // const snap = new Snap(this, author, message);\n\n // return new Component(this.id, snap, snap.state);\n // }\n\n /**\n * display name of the component.\n */\n get displayName() {\n const tokens = this.id.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n /**\n * tag a component `Snap` with a semantic version. we follow SemVer specs as defined [here](https://semver.org/)).\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tag(version: SemVer) {\n // const snap = this.snap();\n // const tag = new Tag(version, snap);\n // this.tags.set(tag);\n }\n\n /**\n * determines whether this component is modified in the workspace.\n */\n isModified(): Promise<boolean> {\n return this.factory.isModified(this);\n }\n\n /**\n * whether a component is marked as deleted.\n */\n isDeleted(): boolean {\n return this.state._consumer.isRemoved();\n }\n\n /**\n * is component isOutdated\n */\n isOutdated(): boolean {\n if (!this.latest) return false;\n const latestTag = this.tags.byVersion(this.latest);\n if (!latestTag) return false;\n if (this.head?.hash !== latestTag?.hash) return true;\n return false;\n }\n\n /**\n * determines whether this component is new.\n */\n isNew(): Promise<boolean> {\n return Promise.resolve(this.head === null);\n }\n\n // TODO: @david after snap we need to make sure to refactor here.\n loadState(snapId: string): Promise<State> {\n return this.factory.getState(this.id, snapId);\n }\n\n loadSnap(snapId?: string): Promise<Snap> {\n const snapToGet = snapId || this.head?.hash;\n if (!snapToGet) {\n throw new BitError('could not load snap for new components');\n }\n return this.factory.getSnap(this.id, snapToGet);\n }\n\n /**\n * Get iterable which iterate over snap parents lazily\n * @param snapId\n * @param options\n */\n snapsIterable(snapId?: string, options: SnapsIterableOpts = {}): AsyncIterable<Snap> {\n const snapToStart = snapId || this.head?.hash;\n let nextSnaps = [snapToStart];\n let done;\n if (!snapToStart) {\n done = true;\n }\n\n const iterator: AsyncIterator<Snap> = {\n next: async () => {\n if (done) {\n return { value: undefined, done };\n }\n const currSnapId = nextSnaps.shift();\n const snap = await this.loadSnap(currSnapId);\n if (snap.parents && snap.parents.length) {\n if (options.firstParentOnly) {\n nextSnaps.push(snap.parents[0]);\n } else {\n nextSnaps = nextSnaps.concat(snap.parents);\n }\n }\n if (!nextSnaps.length) {\n done = true;\n } else if (options.stopFn) {\n done = await options.stopFn(snap);\n }\n return { value: snap, done: undefined };\n },\n };\n return {\n [Symbol.asyncIterator]: () => iterator,\n };\n }\n\n /**\n * traverse recursively from the provided snap (or head) upwards until it finds a tag\n * @param snapToStartFrom\n */\n async getClosestTag(snapToStartFrom?: string): Promise<Tag | undefined> {\n const tagsHashMap = this.tags.getHashMap();\n const stopFn = async (snap: Snap) => {\n if (tagsHashMap.has(snap.hash)) {\n return true;\n }\n return false;\n };\n const iterable = this.snapsIterable(snapToStartFrom, { firstParentOnly: true, stopFn });\n const snaps: Snap[] = [];\n for await (const snap of iterable) {\n snaps.push(snap);\n }\n if (snaps.length) {\n const hashOfLastSnap = snaps[snaps.length - 1].hash;\n return tagsHashMap.get(hashOfLastSnap);\n }\n return undefined;\n }\n\n /**\n * checkout the component to a different version in its working tree.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n checkout(version: SemVer) {}\n\n /**\n * examine difference between two components.\n */\n // diff(other: Component): Difference {}\n\n /**\n * merge two different components\n */\n // merge(other: Component): Component {}\n\n /**\n * write a component to a given file system.\n * @param path root path to write the component\n * @param fs instance of any fs to use.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n write(path: string, fs?: AnyFS) {}\n\n /**\n *\n * Check if 2 components are equal\n * @param {Component} component\n * @returns {boolean}\n * @memberof Component\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n equals(component: Component): boolean {\n return component.id.toString() === this.id.toString();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_toolboxString","data","require","_bitError","_lodash","_tagMap","_exceptions","Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","get","aspects","serialize","getLogs","filter","allLogs","type","limit","offset","sort","typeFilter","snap","tag","filteredLogs","reverse","slice","stringify","JSON","displayName","tokens","name","split","map","token","capitalize","join","version","isModified","isDeleted","isRemoved","isOutdated","latestTag","byVersion","isNew","Promise","resolve","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","checkout","write","path","fs","equals","component","toString","exports"],"sources":["component.ts"],"sourcesContent":["import { AnyFS } from '@teambit/any-fs';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport { SemVer } from 'semver';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { BuildStatus } from '@teambit/legacy/dist/constants';\n\nimport { slice } from 'lodash';\nimport { ComponentFactory } from './component-factory';\nimport ComponentFS from './component-fs';\n// import { NothingToSnap } from './exceptions';\nimport { Config as ComponentConfig } from './config';\n// eslint-disable-next-line import/no-cycle\nimport { Snap } from './snap';\nimport { State } from './state';\nimport { TagMap } from './tag-map';\nimport { Tag } from './tag';\nimport { CouldNotFindLatest } from './exceptions';\nimport { IComponent, RawComponentMetadata } from './component-interface';\n// import { Author } from './types';\n\ntype SnapsIterableOpts = {\n firstParentOnly?: boolean;\n stopFn?: (snap: Snap) => Promise<boolean>;\n};\n\nexport type InvalidComponent = { id: ComponentID; err: Error };\n\n/**\n * in-memory representation of a component.\n */\nexport class Component implements IComponent {\n constructor(\n /**\n * component ID represented by the `ComponentId` type.\n */\n readonly id: ComponentID,\n\n /**\n * head version of the component. can be `null` for new components.\n */\n readonly head: Snap | null = null,\n\n /**\n * state of the component.\n */\n private _state: State,\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap = new TagMap(),\n\n /**\n * the component factory\n */\n private factory: ComponentFactory\n ) {}\n\n get mainFile() {\n return this.state.mainFile;\n }\n\n get state(): State {\n return this._state;\n }\n\n set state(state: State) {\n this._state = state;\n }\n\n /**\n * component configuration which is later generated to a component `package.json` and `bit.json`.\n */\n get config(): ComponentConfig {\n return this.state.config;\n }\n\n /**\n * in-memory representation of the component current filesystem.\n */\n get filesystem(): ComponentFS {\n return this.state.filesystem;\n }\n\n /**\n * build status of the component\n */\n get buildStatus(): BuildStatus {\n return this._state._consumer.buildStatus;\n }\n\n get headTag() {\n if (!this.head) return undefined;\n return this.tags.byHash(this.head.hash);\n }\n\n get latest(): string | undefined {\n if (!this.head) return undefined;\n try {\n return this.tags.getLatest();\n } catch (err: any) {\n if (err instanceof CouldNotFindLatest) {\n return this.head.hash;\n }\n throw err;\n }\n }\n\n /**\n * get aspect data from current state.\n */\n get(id: string): RawComponentMetadata | undefined {\n return this.state.aspects.get(id)?.serialize();\n }\n\n async getLogs(filter?: { type?: string; offset?: number; limit?: number; head?: string; sort?: string }) {\n const allLogs = await this.factory.getLogs(this.id, false, filter?.head);\n\n if (!filter) return allLogs;\n\n const { type, limit, offset, sort } = filter;\n\n const typeFilter = (snap) => {\n if (type === 'tag') return snap.tag;\n if (type === 'snap') return !snap.tag;\n return true;\n };\n\n let filteredLogs = (type && allLogs.filter(typeFilter)) || allLogs;\n if (sort !== 'asc') filteredLogs = filteredLogs.reverse();\n\n if (limit) {\n filteredLogs = slice(filteredLogs, offset, limit + (offset || 0));\n }\n\n return filteredLogs;\n }\n\n stringify(): string {\n return JSON.stringify({\n id: this.id,\n head: this.head,\n });\n }\n\n /**\n * record component changes in the `Scope`.\n */\n // snap(author: Author, message = '') {\n // if (!this.isModified()) throw new NothingToSnap();\n // const snap = new Snap(this, author, message);\n\n // return new Component(this.id, snap, snap.state);\n // }\n\n /**\n * display name of the component.\n */\n get displayName() {\n const tokens = this.id.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n /**\n * tag a component `Snap` with a semantic version. we follow SemVer specs as defined [here](https://semver.org/)).\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tag(version: SemVer) {\n // const snap = this.snap();\n // const tag = new Tag(version, snap);\n // this.tags.set(tag);\n }\n\n /**\n * determines whether this component is modified in the workspace.\n */\n isModified(): Promise<boolean> {\n return this.factory.isModified(this);\n }\n\n /**\n * whether a component is marked as deleted.\n */\n isDeleted(): boolean {\n return this.state._consumer.isRemoved();\n }\n\n /**\n * is component isOutdated\n */\n isOutdated(): boolean {\n if (!this.latest) return false;\n const latestTag = this.tags.byVersion(this.latest);\n if (!latestTag) return false;\n if (this.head?.hash !== latestTag?.hash) return true;\n return false;\n }\n\n /**\n * determines whether this component is new.\n */\n isNew(): Promise<boolean> {\n return Promise.resolve(this.head === null);\n }\n\n // TODO: @david after snap we need to make sure to refactor here.\n loadState(snapId: string): Promise<State> {\n return this.factory.getState(this.id, snapId);\n }\n\n loadSnap(snapId?: string): Promise<Snap> {\n const snapToGet = snapId || this.head?.hash;\n if (!snapToGet) {\n throw new BitError('could not load snap for new components');\n }\n return this.factory.getSnap(this.id, snapToGet);\n }\n\n /**\n * Get iterable which iterate over snap parents lazily\n * @param snapId\n * @param options\n */\n snapsIterable(snapId?: string, options: SnapsIterableOpts = {}): AsyncIterable<Snap> {\n const snapToStart = snapId || this.head?.hash;\n let nextSnaps = [snapToStart];\n let done;\n if (!snapToStart) {\n done = true;\n }\n\n const iterator: AsyncIterator<Snap> = {\n next: async () => {\n if (done) {\n return { value: undefined, done };\n }\n const currSnapId = nextSnaps.shift();\n const snap = await this.loadSnap(currSnapId);\n if (snap.parents && snap.parents.length) {\n if (options.firstParentOnly) {\n nextSnaps.push(snap.parents[0]);\n } else {\n nextSnaps = nextSnaps.concat(snap.parents);\n }\n }\n if (!nextSnaps.length) {\n done = true;\n } else if (options.stopFn) {\n done = await options.stopFn(snap);\n }\n return { value: snap, done: undefined };\n },\n };\n return {\n [Symbol.asyncIterator]: () => iterator,\n };\n }\n\n /**\n * traverse recursively from the provided snap (or head) upwards until it finds a tag\n * @param snapToStartFrom\n */\n async getClosestTag(snapToStartFrom?: string): Promise<Tag | undefined> {\n const tagsHashMap = this.tags.getHashMap();\n const stopFn = async (snap: Snap) => {\n if (tagsHashMap.has(snap.hash)) {\n return true;\n }\n return false;\n };\n const iterable = this.snapsIterable(snapToStartFrom, { firstParentOnly: true, stopFn });\n const snaps: Snap[] = [];\n for await (const snap of iterable) {\n snaps.push(snap);\n }\n if (snaps.length) {\n const hashOfLastSnap = snaps[snaps.length - 1].hash;\n return tagsHashMap.get(hashOfLastSnap);\n }\n return undefined;\n }\n\n /**\n * checkout the component to a different version in its working tree.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n checkout(version: SemVer) {}\n\n /**\n * examine difference between two components.\n */\n // diff(other: Component): Difference {}\n\n /**\n * merge two different components\n */\n // merge(other: Component): Component {}\n\n /**\n * write a component to a given file system.\n * @param path root path to write the component\n * @param fs instance of any fs to use.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n write(path: string, fs?: AnyFS) {}\n\n /**\n *\n * Check if 2 components are equal\n * @param {Component} component\n * @returns {boolean}\n * @memberof Component\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n equals(component: Component): boolean {\n return component.id.toString() === this.id.toString();\n }\n}\n"],"mappings":"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"}
@@ -9,8 +9,8 @@ import { AspectList } from './aspect-list';
9
9
  import { AspectEntry } from './aspect-entry';
10
10
  import { ShowFragment } from './show';
11
11
  import { RegisteredComponentRoute } from '.';
12
- export declare type ComponentHostSlot = SlotRegistry<ComponentFactory>;
13
- export declare type ShowFragmentSlot = SlotRegistry<ShowFragment[]>;
12
+ export type ComponentHostSlot = SlotRegistry<ComponentFactory>;
13
+ export type ShowFragmentSlot = SlotRegistry<ShowFragment[]>;
14
14
  export declare class ComponentMain {
15
15
  /**
16
16
  * slot for component hosts to register.
@@ -1,9 +1,9 @@
1
1
  import { NextFunction, Request, Response, Route } from '@teambit/express';
2
2
  import { ComponentMain } from './component.main.runtime';
3
- export declare type RegisteredComponentRoute = Route & {
3
+ export type RegisteredComponentRoute = Route & {
4
4
  resolveComponent?: boolean;
5
5
  };
6
- export declare type ComponentUrlParams = {
6
+ export type ComponentUrlParams = {
7
7
  componentId: string;
8
8
  };
9
9
  export declare class ComponentRoute implements Route {
@@ -1,5 +1,5 @@
1
+ /// <reference types="react" />
1
2
  /// <reference types="lodash" />
2
- import React from 'react';
3
3
  import type { RouteProps } from 'react-router-dom';
4
4
  import type { LinkProps } from '@teambit/base-react.navigation.link';
5
5
  import { CommandBarUI } from '@teambit/command-bar';
@@ -13,15 +13,15 @@ import { ComponentPageElement, ComponentPageSlot } from './ui/component';
13
13
  import { ComponentResultPlugin } from './ui/component-searcher';
14
14
  import { ConsumeMethodSlot, ConsumePlugin, NavPlugin, OrderedNavigationSlot } from './ui/menu';
15
15
  import { GetComponentsOptions } from './get-component-opts';
16
- export declare type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;
17
- export declare type ComponentUIConfig = {
16
+ export type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;
17
+ export type ComponentUIConfig = {
18
18
  commandBar: boolean;
19
19
  };
20
- export declare type Server = {
20
+ export type Server = {
21
21
  env: string;
22
22
  url: string;
23
23
  };
24
- export declare type ComponentMeta = {
24
+ export type ComponentMeta = {
25
25
  id: string;
26
26
  };
27
27
  export declare class ComponentUI {
@@ -66,8 +66,8 @@ export declare class ComponentUI {
66
66
  private bitMethod;
67
67
  registerPubSub(): void;
68
68
  handleComponentChange: (activeComponent?: ComponentModel) => void;
69
- getComponentUI(host: string, options?: GetComponentsOptions): React.JSX.Element;
70
- getMenu(host: string, options?: GetComponentsOptions): React.JSX.Element;
69
+ getComponentUI(host: string, options?: GetComponentsOptions): JSX.Element;
70
+ getMenu(host: string, options?: GetComponentsOptions): JSX.Element;
71
71
  listMenuItems(): import("lodash").Dictionary<MenuItem[]>;
72
72
  registerRoute(routes: RouteProps[] | RouteProps): this;
73
73
  registerNavigation(nav: LinkProps, order?: number): void;
@@ -169,11 +169,9 @@ class ComponentUI {
169
169
  */
170
170
  _defineProperty(this, "activeComponent", void 0);
171
171
  _defineProperty(this, "copyNpmId", () => {
172
- var _this$activeComponent;
173
- const packageName = (_this$activeComponent = this.activeComponent) === null || _this$activeComponent === void 0 ? void 0 : _this$activeComponent.packageName;
172
+ const packageName = this.activeComponent?.packageName;
174
173
  if (packageName) {
175
- var _this$activeComponent2;
176
- const version = (_this$activeComponent2 = this.activeComponent) === null || _this$activeComponent2 === void 0 ? void 0 : _this$activeComponent2.id.version;
174
+ const version = this.activeComponent?.id.version;
177
175
  const versionString = version ? `@${this.formatToInstallableVersion(version)}` : '';
178
176
  (0, _copyToClipboard().default)(`${packageName}${versionString}`);
179
177
  }
@@ -185,8 +183,7 @@ class ComponentUI {
185
183
  id: 'component.copyBitId',
186
184
  // TODO - extract to a component!
187
185
  action: () => {
188
- var _this$activeComponent3;
189
- (0, _copyToClipboard().default)(((_this$activeComponent3 = this.activeComponent) === null || _this$activeComponent3 === void 0 ? void 0 : _this$activeComponent3.id.toString()) || '');
186
+ (0, _copyToClipboard().default)(this.activeComponent?.id.toString() || '');
190
187
  },
191
188
  displayName: 'Copy component ID',
192
189
  keybinding: '.'
@@ -201,34 +198,22 @@ class ComponentUI {
201
198
  category: 'general',
202
199
  title: 'Open command bar',
203
200
  keyChar: 'mod+k',
204
- handler: () => {
205
- var _this$commandBarUI;
206
- return (_this$commandBarUI = this.commandBarUI) === null || _this$commandBarUI === void 0 ? void 0 : _this$commandBarUI.run('command-bar.open');
207
- }
201
+ handler: () => this.commandBarUI?.run('command-bar.open')
208
202
  }, {
209
203
  category: 'general',
210
204
  title: 'Toggle component list',
211
205
  keyChar: 'alt+s',
212
- handler: () => {
213
- var _this$commandBarUI2;
214
- return (_this$commandBarUI2 = this.commandBarUI) === null || _this$commandBarUI2 === void 0 ? void 0 : _this$commandBarUI2.run('sidebar.toggle');
215
- }
206
+ handler: () => this.commandBarUI?.run('sidebar.toggle')
216
207
  }, {
217
208
  category: 'workflow',
218
209
  title: 'Copy component ID',
219
210
  keyChar: '.',
220
- handler: () => {
221
- var _this$commandBarUI3;
222
- return (_this$commandBarUI3 = this.commandBarUI) === null || _this$commandBarUI3 === void 0 ? void 0 : _this$commandBarUI3.run('component.copyBitId');
223
- }
211
+ handler: () => this.commandBarUI?.run('component.copyBitId')
224
212
  }, {
225
213
  category: 'workflow',
226
214
  title: 'Copy component package name',
227
215
  keyChar: ',',
228
- handler: () => {
229
- var _this$commandBarUI4;
230
- return (_this$commandBarUI4 = this.commandBarUI) === null || _this$commandBarUI4 === void 0 ? void 0 : _this$commandBarUI4.run('component.copyNpmId');
231
- }
216
+ handler: () => this.commandBarUI?.run('component.copyNpmId')
232
217
  }]);
233
218
  _defineProperty(this, "bitMethod", ({
234
219
  options,
@@ -237,8 +222,8 @@ class ComponentUI {
237
222
  latest: latestFromProps,
238
223
  componentModel
239
224
  }) => {
240
- const packageName = packageNameFromProps || (componentModel === null || componentModel === void 0 ? void 0 : componentModel.packageName);
241
- const latest = latestFromProps || (componentModel === null || componentModel === void 0 ? void 0 : componentModel.id.version);
225
+ const packageName = packageNameFromProps || componentModel?.packageName;
226
+ const latest = latestFromProps || componentModel?.id.version;
242
227
  const version = componentId.version === latest ? '' : `@${componentId.version}`;
243
228
  const packageVersion = componentId.version === latest ? '' : `@${this.formatToInstallableVersion(componentId.version)}`;
244
229
  return {
@@ -248,13 +233,13 @@ class ComponentUI {
248
233
  },
249
234
  src: "https://static.bit.dev/brands/bit-logo-text.svg"
250
235
  }),
251
- Component: !(options !== null && options !== void 0 && options.hide) ? /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().Import, {
236
+ Component: !options?.hide ? /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().Import, {
252
237
  componentId: `${componentId.toString({
253
238
  ignoreVersion: true
254
239
  })}${version}`,
255
240
  packageName: `${packageName}${packageVersion}`,
256
241
  componentName: componentId.name,
257
- showInstallMethod: !(options !== null && options !== void 0 && options.disableInstall)
242
+ showInstallMethod: !options?.disableInstall
258
243
  }) : null,
259
244
  order: 0
260
245
  };
@@ -297,7 +282,7 @@ class ComponentUI {
297
282
  cancelable: true
298
283
  });
299
284
  const body = document.body;
300
- body === null || body === void 0 || body.dispatchEvent(event);
285
+ body?.dispatchEvent(event);
301
286
  }
302
287
  });
303
288
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireDefault","require","_lodash","_copyToClipboard","_commandBar","_componentUi","_harmony","_preview","_interopRequireWildcard","_pubsub","_reactRouter","_ui","_lodash2","_uiFoundationUi","_uiFoundationUiUseBox","_componentPackageVersion","_aspect","_component","_component2","_componentSearcher","_menu","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_defineProperty","key","value","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","componentSearchResultSlot","commandBarUI","reactRouterUi","_this$activeComponent","packageName","activeComponent","_this$activeComponent2","version","id","versionString","formatToInstallableVersion","copy","action","_this$activeComponent3","toString","displayName","keybinding","copyNpmId","category","title","keyChar","handler","_this$commandBarUI","run","_this$commandBarUI2","_this$commandBarUI3","_this$commandBarUI4","options","componentId","packageNameFromProps","latest","latestFromProps","componentModel","packageVersion","Title","createElement","style","width","src","Component","hide","Import","ignoreVersion","componentName","name","showInstallMethod","disableInstall","order","menuItems","register","items","totalPlugins","flatten","values","componentSearcher","updatePlugins","components","update","ComponentSearcher","navigate","navigateTo","isBrowser","registerPubSub","routes","toArray","map","Array","isArray","snapToSemver","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","containerSlot","onComponentChange","handleComponentChange","path","useComponent","componentIdStr","useComponentFilters","overriddenRoutes","getMenu","ComponentMenu","className","skipRightSide","navigationSlot","RightNode","listMenuItems","mainMenuItems","groupBy","registerRoute","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","reactRouterUI","config","pageSlot","componentUI","aspectSection","AspectSection","registerSearchResultWidget","end","DeprecationIcon","commandBar","addCommand","keyBindings","addSearcher","registerMenuItem","route","navigationLink","bitMethod","exports","PubsubAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","_default","ComponentAspect","addRuntime"],"sources":["component.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport flatten from 'lodash.flatten';\nimport copy from 'copy-to-clipboard';\nimport type { RouteProps } from 'react-router-dom';\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport PubsubAspect, { BitBaseEvent, PubsubUI } from '@teambit/pubsub';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { UIRuntime } from '@teambit/ui';\nimport { groupBy } from 'lodash';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { MenuItem, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport { AspectSection } from './aspect.section';\nimport { ComponentAspect } from './component.aspect';\nimport { ComponentModel } from './ui';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';\nimport { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';\nimport { GetComponentsOptions } from './get-component-opts';\n\nexport type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;\n\nexport type ComponentUIConfig = {\n commandBar: boolean;\n};\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport class ComponentUI {\n readonly routePath = `/*`;\n private componentSearcher: ComponentSearcher;\n\n constructor(\n /**\n * Pubsub aspects\n */\n private pubsub: PubsubUI,\n\n private routeSlot: RouteSlot,\n\n private navSlot: OrderedNavigationSlot,\n\n readonly consumeMethodSlot: ConsumeMethodSlot,\n\n /**\n * slot for registering a new widget to the menu.\n */\n private widgetSlot: OrderedNavigationSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private pageItemSlot: ComponentPageSlot,\n\n private componentSearchResultSlot: ComponentSearchResultSlot,\n\n private commandBarUI: CommandBarUI,\n\n reactRouterUi: ReactRouterUI\n ) {\n this.componentSearcher = new ComponentSearcher({ navigate: reactRouterUi.navigateTo });\n if (isBrowser) this.registerPubSub();\n }\n\n get routes() {\n return this.routeSlot\n .toArray()\n .map(([key, routes]) => [key, Array.isArray(routes) ? [...flatten(routes)] : [routes]] as [string, RouteProps[]]);\n }\n\n /**\n * the current visible component\n */\n private activeComponent?: ComponentModel;\n\n formatToInstallableVersion(version: string) {\n return snapToSemver(version);\n }\n\n private copyNpmId = () => {\n const packageName = this.activeComponent?.packageName;\n if (packageName) {\n const version = this.activeComponent?.id.version;\n const versionString = version ? `@${this.formatToInstallableVersion(version)}` : '';\n copy(`${packageName}${versionString}`);\n }\n };\n\n /**\n * key bindings used by component aspect\n */\n private keyBindings: CommandEntry[] = [\n {\n id: 'component.copyBitId', // TODO - extract to a component!\n action: () => {\n copy(this.activeComponent?.id.toString() || '');\n },\n displayName: 'Copy component ID',\n keybinding: '.',\n },\n {\n id: 'component.copyNpmId', // TODO - extract to a component!\n action: this.copyNpmId,\n displayName: 'Copy component package name',\n keybinding: ',',\n },\n ];\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n {\n category: 'workflow',\n title: 'Copy component ID',\n keyChar: '.',\n handler: () => this.commandBarUI?.run('component.copyBitId'),\n },\n {\n category: 'workflow',\n title: 'Copy component package name',\n keyChar: ',',\n handler: () => this.commandBarUI?.run('component.copyNpmId'),\n },\n ];\n\n private bitMethod: ConsumePlugin = ({\n options,\n id: componentId,\n packageName: packageNameFromProps,\n latest: latestFromProps,\n componentModel,\n }) => {\n const packageName = packageNameFromProps || componentModel?.packageName;\n const latest = latestFromProps || componentModel?.id.version;\n\n const version = componentId.version === latest ? '' : `@${componentId.version}`;\n const packageVersion =\n componentId.version === latest ? '' : `@${this.formatToInstallableVersion(componentId.version as string)}`;\n\n return {\n Title: <img style={{ width: '20px' }} src=\"https://static.bit.dev/brands/bit-logo-text.svg\" />,\n Component: !options?.hide ? (\n <Import\n componentId={`${componentId.toString({ ignoreVersion: true })}${version}`}\n packageName={`${packageName}${packageVersion}`}\n componentName={componentId.name}\n showInstallMethod={!options?.disableInstall}\n />\n ) : null,\n order: 0,\n };\n };\n\n registerPubSub() {\n this.pubsub.sub(PreviewAspect.id, (be: BitBaseEvent<any>) => {\n if (be.type === ClickInsideAnIframeEvent.TYPE) {\n const event = new MouseEvent('mousedown', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n\n const body = document.body;\n body?.dispatchEvent(event);\n }\n });\n }\n\n handleComponentChange = (activeComponent?: ComponentModel) => {\n this.activeComponent = activeComponent;\n };\n\n getComponentUI(host: string, options: GetComponentsOptions = {}) {\n return (\n <Component\n routeSlot={this.routeSlot}\n containerSlot={this.pageItemSlot}\n onComponentChange={this.handleComponentChange}\n host={host}\n path={options.path}\n useComponent={options.useComponent}\n componentIdStr={options.componentId}\n useComponentFilters={options.useComponentFilters}\n overriddenRoutes={options.routes}\n />\n );\n }\n\n getMenu(host: string, options: GetComponentsOptions = {}) {\n return (\n <ComponentMenu\n className={options.className}\n skipRightSide={options.skipRightSide}\n navigationSlot={this.navSlot}\n consumeMethodSlot={this.consumeMethodSlot}\n widgetSlot={this.widgetSlot}\n host={host}\n menuItemSlot={this.menuItemSlot}\n useComponent={options.useComponent}\n path={options.path}\n componentIdStr={options.componentId}\n useComponentFilters={options.useComponentFilters}\n RightNode={options.RightNode}\n />\n );\n }\n\n listMenuItems() {\n const mainMenuItems = groupBy(flatten(this.menuItemSlot.values()), 'category');\n return mainMenuItems;\n }\n\n registerRoute(routes: RouteProps[] | RouteProps) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerNavigation(nav: LinkProps, order?: number) {\n this.navSlot.register({\n props: nav,\n order,\n });\n }\n\n registerConsumeMethod(...consumeMethods: ConsumePlugin[]) {\n this.consumeMethodSlot.register(consumeMethods);\n }\n\n registerWidget(widget: LinkProps, order?: number) {\n this.widgetSlot.register({ props: widget, order });\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerPageItem = (...items: ComponentPageElement[]) => {\n this.pageItemSlot.register(items);\n };\n\n /** register widgets to the components listed in the command bar */\n registerSearchResultWidget = (...items: ComponentResultPlugin[]) => {\n this.componentSearchResultSlot.register(items);\n const totalPlugins = flatten(this.componentSearchResultSlot.values());\n\n this.componentSearcher.updatePlugins(totalPlugins);\n };\n\n updateComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components || []);\n };\n\n static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<NavPlugin>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<ConsumeMethodSlot>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<ComponentPageSlot>(),\n Slot.withType<ComponentSearchResultSlot>(),\n ];\n static defaultConfig: ComponentUIConfig = {\n commandBar: true,\n };\n\n static async provider(\n [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],\n config: ComponentUIConfig,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot,\n ComponentSearchResultSlot\n ]\n ) {\n // TODO: refactor ComponentHost to a separate extension (including sidebar, host, graphql, etc.)\n // TODO: add contextual hook for ComponentHost @uri/@oded\n const componentUI = new ComponentUI(\n pubsub,\n routeSlot,\n navSlot,\n consumeMethodSlot,\n widgetSlot,\n menuItemSlot,\n pageSlot,\n componentSearchResultSlot,\n commandBarUI,\n reactRouterUI\n );\n const aspectSection = new AspectSection();\n // @ts-ignore\n componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });\n\n if (componentUI.commandBarUI && config.commandBar) {\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n commandBarUI.addSearcher(componentUI.componentSearcher);\n }\n\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(aspectSection.route);\n componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_lodash","_copyToClipboard","_commandBar","_componentUi","_harmony","_preview","_interopRequireWildcard","_pubsub","_reactRouter","_ui","_lodash2","_uiFoundationUi","_uiFoundationUiUseBox","_componentPackageVersion","_aspect","_component","_component2","_componentSearcher","_menu","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_defineProperty","key","value","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","ComponentUI","constructor","pubsub","routeSlot","navSlot","consumeMethodSlot","widgetSlot","menuItemSlot","pageItemSlot","componentSearchResultSlot","commandBarUI","reactRouterUi","packageName","activeComponent","version","id","versionString","formatToInstallableVersion","copy","action","toString","displayName","keybinding","copyNpmId","category","title","keyChar","handler","run","options","componentId","packageNameFromProps","latest","latestFromProps","componentModel","packageVersion","Title","createElement","style","width","src","Component","hide","Import","ignoreVersion","componentName","name","showInstallMethod","disableInstall","order","menuItems","register","items","totalPlugins","flatten","values","componentSearcher","updatePlugins","components","update","ComponentSearcher","navigate","navigateTo","isBrowser","registerPubSub","routes","toArray","map","Array","isArray","snapToSemver","sub","PreviewAspect","be","type","ClickInsideAnIframeEvent","TYPE","event","MouseEvent","view","window","bubbles","cancelable","body","document","dispatchEvent","getComponentUI","host","containerSlot","onComponentChange","handleComponentChange","path","useComponent","componentIdStr","useComponentFilters","overriddenRoutes","getMenu","ComponentMenu","className","skipRightSide","navigationSlot","RightNode","listMenuItems","mainMenuItems","groupBy","registerRoute","registerNavigation","nav","props","registerConsumeMethod","consumeMethods","registerWidget","widget","provider","reactRouterUI","config","pageSlot","componentUI","aspectSection","AspectSection","registerSearchResultWidget","end","DeprecationIcon","commandBar","addCommand","keyBindings","addSearcher","registerMenuItem","route","navigationLink","bitMethod","exports","PubsubAspect","CommandBarAspect","ReactRouterAspect","UIRuntime","Slot","withType","_default","ComponentAspect","addRuntime"],"sources":["component.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport flatten from 'lodash.flatten';\nimport copy from 'copy-to-clipboard';\nimport type { RouteProps } from 'react-router-dom';\nimport type { LinkProps } from '@teambit/base-react.navigation.link';\nimport CommandBarAspect, { CommandBarUI, CommandEntry } from '@teambit/command-bar';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport PreviewAspect, { ClickInsideAnIframeEvent } from '@teambit/preview';\nimport PubsubAspect, { BitBaseEvent, PubsubUI } from '@teambit/pubsub';\nimport ReactRouterAspect, { ReactRouterUI } from '@teambit/react-router';\nimport { UIRuntime } from '@teambit/ui';\nimport { groupBy } from 'lodash';\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport { MenuItem, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { NavigationSlot, RouteSlot } from '@teambit/ui-foundation.ui.react-router.slot-router';\nimport { Import } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport { AspectSection } from './aspect.section';\nimport { ComponentAspect } from './component.aspect';\nimport { ComponentModel } from './ui';\nimport { Component, ComponentPageElement, ComponentPageSlot } from './ui/component';\nimport { ComponentResultPlugin, ComponentSearcher } from './ui/component-searcher';\nimport { ConsumeMethodSlot, ConsumePlugin, ComponentMenu, NavPlugin, OrderedNavigationSlot } from './ui/menu';\nimport { GetComponentsOptions } from './get-component-opts';\n\nexport type ComponentSearchResultSlot = SlotRegistry<ComponentResultPlugin[]>;\n\nexport type ComponentUIConfig = {\n commandBar: boolean;\n};\n\nexport type Server = {\n env: string;\n url: string;\n};\n\nexport type ComponentMeta = {\n id: string;\n};\n\nexport class ComponentUI {\n readonly routePath = `/*`;\n private componentSearcher: ComponentSearcher;\n\n constructor(\n /**\n * Pubsub aspects\n */\n private pubsub: PubsubUI,\n\n private routeSlot: RouteSlot,\n\n private navSlot: OrderedNavigationSlot,\n\n readonly consumeMethodSlot: ConsumeMethodSlot,\n\n /**\n * slot for registering a new widget to the menu.\n */\n private widgetSlot: OrderedNavigationSlot,\n\n private menuItemSlot: MenuItemSlot,\n\n private pageItemSlot: ComponentPageSlot,\n\n private componentSearchResultSlot: ComponentSearchResultSlot,\n\n private commandBarUI: CommandBarUI,\n\n reactRouterUi: ReactRouterUI\n ) {\n this.componentSearcher = new ComponentSearcher({ navigate: reactRouterUi.navigateTo });\n if (isBrowser) this.registerPubSub();\n }\n\n get routes() {\n return this.routeSlot\n .toArray()\n .map(([key, routes]) => [key, Array.isArray(routes) ? [...flatten(routes)] : [routes]] as [string, RouteProps[]]);\n }\n\n /**\n * the current visible component\n */\n private activeComponent?: ComponentModel;\n\n formatToInstallableVersion(version: string) {\n return snapToSemver(version);\n }\n\n private copyNpmId = () => {\n const packageName = this.activeComponent?.packageName;\n if (packageName) {\n const version = this.activeComponent?.id.version;\n const versionString = version ? `@${this.formatToInstallableVersion(version)}` : '';\n copy(`${packageName}${versionString}`);\n }\n };\n\n /**\n * key bindings used by component aspect\n */\n private keyBindings: CommandEntry[] = [\n {\n id: 'component.copyBitId', // TODO - extract to a component!\n action: () => {\n copy(this.activeComponent?.id.toString() || '');\n },\n displayName: 'Copy component ID',\n keybinding: '.',\n },\n {\n id: 'component.copyNpmId', // TODO - extract to a component!\n action: this.copyNpmId,\n displayName: 'Copy component package name',\n keybinding: ',',\n },\n ];\n\n private menuItems: MenuItem[] = [\n {\n category: 'general',\n title: 'Open command bar',\n keyChar: 'mod+k',\n handler: () => this.commandBarUI?.run('command-bar.open'),\n },\n {\n category: 'general',\n title: 'Toggle component list',\n keyChar: 'alt+s',\n handler: () => this.commandBarUI?.run('sidebar.toggle'),\n },\n {\n category: 'workflow',\n title: 'Copy component ID',\n keyChar: '.',\n handler: () => this.commandBarUI?.run('component.copyBitId'),\n },\n {\n category: 'workflow',\n title: 'Copy component package name',\n keyChar: ',',\n handler: () => this.commandBarUI?.run('component.copyNpmId'),\n },\n ];\n\n private bitMethod: ConsumePlugin = ({\n options,\n id: componentId,\n packageName: packageNameFromProps,\n latest: latestFromProps,\n componentModel,\n }) => {\n const packageName = packageNameFromProps || componentModel?.packageName;\n const latest = latestFromProps || componentModel?.id.version;\n\n const version = componentId.version === latest ? '' : `@${componentId.version}`;\n const packageVersion =\n componentId.version === latest ? '' : `@${this.formatToInstallableVersion(componentId.version as string)}`;\n\n return {\n Title: <img style={{ width: '20px' }} src=\"https://static.bit.dev/brands/bit-logo-text.svg\" />,\n Component: !options?.hide ? (\n <Import\n componentId={`${componentId.toString({ ignoreVersion: true })}${version}`}\n packageName={`${packageName}${packageVersion}`}\n componentName={componentId.name}\n showInstallMethod={!options?.disableInstall}\n />\n ) : null,\n order: 0,\n };\n };\n\n registerPubSub() {\n this.pubsub.sub(PreviewAspect.id, (be: BitBaseEvent<any>) => {\n if (be.type === ClickInsideAnIframeEvent.TYPE) {\n const event = new MouseEvent('mousedown', {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n\n const body = document.body;\n body?.dispatchEvent(event);\n }\n });\n }\n\n handleComponentChange = (activeComponent?: ComponentModel) => {\n this.activeComponent = activeComponent;\n };\n\n getComponentUI(host: string, options: GetComponentsOptions = {}) {\n return (\n <Component\n routeSlot={this.routeSlot}\n containerSlot={this.pageItemSlot}\n onComponentChange={this.handleComponentChange}\n host={host}\n path={options.path}\n useComponent={options.useComponent}\n componentIdStr={options.componentId}\n useComponentFilters={options.useComponentFilters}\n overriddenRoutes={options.routes}\n />\n );\n }\n\n getMenu(host: string, options: GetComponentsOptions = {}) {\n return (\n <ComponentMenu\n className={options.className}\n skipRightSide={options.skipRightSide}\n navigationSlot={this.navSlot}\n consumeMethodSlot={this.consumeMethodSlot}\n widgetSlot={this.widgetSlot}\n host={host}\n menuItemSlot={this.menuItemSlot}\n useComponent={options.useComponent}\n path={options.path}\n componentIdStr={options.componentId}\n useComponentFilters={options.useComponentFilters}\n RightNode={options.RightNode}\n />\n );\n }\n\n listMenuItems() {\n const mainMenuItems = groupBy(flatten(this.menuItemSlot.values()), 'category');\n return mainMenuItems;\n }\n\n registerRoute(routes: RouteProps[] | RouteProps) {\n this.routeSlot.register(routes);\n return this;\n }\n\n registerNavigation(nav: LinkProps, order?: number) {\n this.navSlot.register({\n props: nav,\n order,\n });\n }\n\n registerConsumeMethod(...consumeMethods: ConsumePlugin[]) {\n this.consumeMethodSlot.register(consumeMethods);\n }\n\n registerWidget(widget: LinkProps, order?: number) {\n this.widgetSlot.register({ props: widget, order });\n }\n\n registerMenuItem = (menuItems: MenuItem[]) => {\n this.menuItemSlot.register(menuItems);\n };\n\n registerPageItem = (...items: ComponentPageElement[]) => {\n this.pageItemSlot.register(items);\n };\n\n /** register widgets to the components listed in the command bar */\n registerSearchResultWidget = (...items: ComponentResultPlugin[]) => {\n this.componentSearchResultSlot.register(items);\n const totalPlugins = flatten(this.componentSearchResultSlot.values());\n\n this.componentSearcher.updatePlugins(totalPlugins);\n };\n\n updateComponents = (components: ComponentModel[]) => {\n this.componentSearcher.update(components || []);\n };\n\n static dependencies = [PubsubAspect, CommandBarAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static slots = [\n Slot.withType<RouteProps>(),\n Slot.withType<NavPlugin>(),\n Slot.withType<NavigationSlot>(),\n Slot.withType<ConsumeMethodSlot>(),\n Slot.withType<MenuItemSlot>(),\n Slot.withType<ComponentPageSlot>(),\n Slot.withType<ComponentSearchResultSlot>(),\n ];\n static defaultConfig: ComponentUIConfig = {\n commandBar: true,\n };\n\n static async provider(\n [pubsub, commandBarUI, reactRouterUI]: [PubsubUI, CommandBarUI, ReactRouterUI],\n config: ComponentUIConfig,\n [routeSlot, navSlot, consumeMethodSlot, widgetSlot, menuItemSlot, pageSlot, componentSearchResultSlot]: [\n RouteSlot,\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n OrderedNavigationSlot,\n MenuItemSlot,\n ComponentPageSlot,\n ComponentSearchResultSlot\n ]\n ) {\n // TODO: refactor ComponentHost to a separate extension (including sidebar, host, graphql, etc.)\n // TODO: add contextual hook for ComponentHost @uri/@oded\n const componentUI = new ComponentUI(\n pubsub,\n routeSlot,\n navSlot,\n consumeMethodSlot,\n widgetSlot,\n menuItemSlot,\n pageSlot,\n componentSearchResultSlot,\n commandBarUI,\n reactRouterUI\n );\n const aspectSection = new AspectSection();\n // @ts-ignore\n componentUI.registerSearchResultWidget({ key: 'deprecation', end: DeprecationIcon });\n\n if (componentUI.commandBarUI && config.commandBar) {\n componentUI.commandBarUI.addCommand(...componentUI.keyBindings);\n commandBarUI.addSearcher(componentUI.componentSearcher);\n }\n\n componentUI.registerMenuItem(componentUI.menuItems);\n componentUI.registerRoute(aspectSection.route);\n componentUI.registerWidget(aspectSection.navigationLink, aspectSection.order);\n componentUI.registerConsumeMethod(componentUI.bitMethod);\n return componentUI;\n }\n}\n\nexport default ComponentUI;\n\nComponentAspect.addRuntime(ComponentUI);\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { RouteProps } from 'react-router-dom';
3
3
  import type { UseComponentType, Filters } from './ui/use-component';
4
- export declare type GetComponentsOptions = {
4
+ export type GetComponentsOptions = {
5
5
  useComponent?: UseComponentType;
6
6
  componentId?: string | (() => string | undefined);
7
7
  useComponentFilters?: () => Filters;
package/dist/hash.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * type for representing content-addressable filesystem hashes.
3
3
  */
4
- export declare type Hash = string;
4
+ export type Hash = string;
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@1.0.106/dist/component.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@1.0.106/dist/component.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@1.0.108/dist/component.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@1.0.108/dist/component.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * author type.
3
3
  */
4
- export declare type Author = {
4
+ export type Author = {
5
5
  /**
6
6
  * author full name (for example: "Ran Mizrahi")
7
7
  */
@@ -1,5 +1,5 @@
1
1
  import { Author } from './author';
2
- export declare type SnapProps = {
2
+ export type SnapProps = {
3
3
  hash: string;
4
4
  timestamp: string;
5
5
  parents: string[];
package/dist/tag/tag.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SemVer } from 'semver';
2
- export declare type TagProps = {
2
+ export type TagProps = {
3
3
  hash: string;
4
4
  version: string;
5
5
  };
package/dist/tag-map.d.ts CHANGED
@@ -5,7 +5,7 @@ export declare class TagMap extends Map<SemVer, Tag> {
5
5
  /**
6
6
  * get snap by hash.
7
7
  */
8
- byHash(hash: Hash): Tag | undefined;
8
+ byHash(hash: Hash): Tag;
9
9
  /**
10
10
  * e.g.
11
11
  * {
@@ -1,2 +1,2 @@
1
- import React from 'react';
2
- export declare function AspectPage(): React.JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare function AspectPage(): JSX.Element;
@@ -87,7 +87,6 @@ const GET_COMPONENT = (0, _client().gql)`
87
87
 
88
88
  // TODO: get the docs domain from the community aspect and pass it here as a prop
89
89
  function AspectPage() {
90
- var _data$getHost;
91
90
  const component = (0, _react().useContext)(_component().ComponentContext);
92
91
  const {
93
92
  data
@@ -96,7 +95,7 @@ function AspectPage() {
96
95
  id: component.id.toString()
97
96
  }
98
97
  });
99
- const aspectList = data === null || data === void 0 || (_data$getHost = data.getHost) === null || _data$getHost === void 0 || (_data$getHost = _data$getHost.get) === null || _data$getHost === void 0 ? void 0 : _data$getHost.aspects;
98
+ const aspectList = data?.getHost?.get?.aspects;
100
99
  if (aspectList && aspectList.length === 0) {
101
100
  return /*#__PURE__*/_react().default.createElement(_designUi().EmptyBox, {
102
101
  title: "This component is new and doesn\u2019t have any aspects.",