@techdocs/cli 0.0.0-nightly-20260310030847 → 0.0.0-nightly-20260312031133

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 (70) hide show
  1. package/CHANGELOG.md +4 -4
  2. package/dist/embedded-app/.config-schema.json +46 -46
  3. package/dist/embedded-app/index.html +1 -1
  4. package/dist/embedded-app/index.html.tmpl +1 -1
  5. package/dist/embedded-app/static/{123.0c4c0b74.chunk.js → 123.2f553a09.chunk.js} +1 -1
  6. package/dist/embedded-app/static/{1659.2293c413.chunk.js → 1659.83556f04.chunk.js} +1 -1
  7. package/dist/embedded-app/static/1749.5002975f.chunk.js +2 -0
  8. package/dist/embedded-app/static/1749.5002975f.chunk.js.map +1 -0
  9. package/dist/embedded-app/static/1994.b0275d73.chunk.js +2 -0
  10. package/dist/embedded-app/static/1994.b0275d73.chunk.js.map +1 -0
  11. package/dist/embedded-app/static/4156.114dd750.chunk.js +2 -0
  12. package/dist/embedded-app/static/4156.114dd750.chunk.js.map +1 -0
  13. package/dist/embedded-app/static/4400.11411adf.chunk.js +2 -0
  14. package/dist/embedded-app/static/4400.11411adf.chunk.js.map +1 -0
  15. package/dist/embedded-app/static/{4587.1626a156.chunk.js → 4587.e23ec386.chunk.js} +1 -1
  16. package/dist/embedded-app/static/4591.b5ae3966.chunk.js +2 -0
  17. package/dist/embedded-app/static/4591.b5ae3966.chunk.js.map +1 -0
  18. package/dist/embedded-app/static/4648.8a7c63d6.chunk.js +2 -0
  19. package/dist/embedded-app/static/4648.8a7c63d6.chunk.js.map +1 -0
  20. package/dist/embedded-app/static/6138.d2380be7.chunk.js +2 -0
  21. package/dist/embedded-app/static/6138.d2380be7.chunk.js.map +1 -0
  22. package/dist/embedded-app/static/639.639.f925217e.css +2 -0
  23. package/dist/embedded-app/static/639.639.f925217e.css.map +1 -0
  24. package/dist/embedded-app/static/639.8019dce9.chunk.js +5 -0
  25. package/dist/embedded-app/static/639.8019dce9.chunk.js.map +1 -0
  26. package/dist/embedded-app/static/6535.6feb3cb4.chunk.js +2 -0
  27. package/dist/embedded-app/static/6535.6feb3cb4.chunk.js.map +1 -0
  28. package/dist/embedded-app/static/7203.f0e37ddd.chunk.js +2 -0
  29. package/dist/embedded-app/static/7203.f0e37ddd.chunk.js.map +1 -0
  30. package/dist/embedded-app/static/8461.36b79780.chunk.js +10 -0
  31. package/dist/embedded-app/static/8461.36b79780.chunk.js.map +1 -0
  32. package/dist/embedded-app/static/{7203.33b0adb2.chunk.js → 9050.bc8304f1.chunk.js} +2 -2
  33. package/dist/embedded-app/static/9050.bc8304f1.chunk.js.map +1 -0
  34. package/dist/embedded-app/static/9230.6055add2.chunk.js +2 -0
  35. package/dist/embedded-app/static/9230.6055add2.chunk.js.map +1 -0
  36. package/dist/embedded-app/static/main.bfd40392.js +523 -0
  37. package/dist/embedded-app/static/main.bfd40392.js.map +1 -0
  38. package/dist/embedded-app/static/{runtime.25a011d3.js → runtime.ccbde752.js} +2 -2
  39. package/dist/embedded-app/static/{runtime.25a011d3.js.map → runtime.ccbde752.js.map} +1 -1
  40. package/dist/package.json.cjs.js +1 -1
  41. package/package.json +5 -5
  42. package/dist/embedded-app/static/1749.33bcf093.chunk.js +0 -2
  43. package/dist/embedded-app/static/1749.33bcf093.chunk.js.map +0 -1
  44. package/dist/embedded-app/static/1994.ea7791f7.chunk.js +0 -2
  45. package/dist/embedded-app/static/1994.ea7791f7.chunk.js.map +0 -1
  46. package/dist/embedded-app/static/4156.1ff832c2.chunk.js +0 -2
  47. package/dist/embedded-app/static/4156.1ff832c2.chunk.js.map +0 -1
  48. package/dist/embedded-app/static/4591.bd632829.chunk.js +0 -2
  49. package/dist/embedded-app/static/4591.bd632829.chunk.js.map +0 -1
  50. package/dist/embedded-app/static/4648.952cd300.chunk.js +0 -2
  51. package/dist/embedded-app/static/4648.952cd300.chunk.js.map +0 -1
  52. package/dist/embedded-app/static/6138.821d05cb.chunk.js +0 -2
  53. package/dist/embedded-app/static/6138.821d05cb.chunk.js.map +0 -1
  54. package/dist/embedded-app/static/6283.74f762b9.chunk.js +0 -2
  55. package/dist/embedded-app/static/6283.74f762b9.chunk.js.map +0 -1
  56. package/dist/embedded-app/static/639.639.d53f54a6.css +0 -2
  57. package/dist/embedded-app/static/639.639.d53f54a6.css.map +0 -1
  58. package/dist/embedded-app/static/639.c2c92f37.chunk.js +0 -5
  59. package/dist/embedded-app/static/639.c2c92f37.chunk.js.map +0 -1
  60. package/dist/embedded-app/static/6535.c1eb4d3b.chunk.js +0 -2
  61. package/dist/embedded-app/static/6535.c1eb4d3b.chunk.js.map +0 -1
  62. package/dist/embedded-app/static/7203.33b0adb2.chunk.js.map +0 -1
  63. package/dist/embedded-app/static/8461.6df64f6d.chunk.js +0 -10
  64. package/dist/embedded-app/static/8461.6df64f6d.chunk.js.map +0 -1
  65. package/dist/embedded-app/static/9050.13a2ca32.chunk.js +0 -2
  66. package/dist/embedded-app/static/9050.13a2ca32.chunk.js.map +0 -1
  67. package/dist/embedded-app/static/9230.87540bfe.chunk.js +0 -2
  68. package/dist/embedded-app/static/9230.87540bfe.chunk.js.map +0 -1
  69. package/dist/embedded-app/static/main.353cd378.js +0 -523
  70. package/dist/embedded-app/static/main.353cd378.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # @techdocs/cli
2
2
 
3
- ## 0.0.0-nightly-20260310030847
3
+ ## 0.0.0-nightly-20260312031133
4
4
 
5
5
  ### Patch Changes
6
6
 
7
7
  - 70fc178: Migrated from deprecated `findPaths` to `targetPaths` and `findOwnPaths` from `@backstage/cli-common`.
8
8
  - de62a9d: Upgraded `commander` dependency from `^12.0.0` to `^14.0.3` across all CLI packages.
9
9
  - Updated dependencies
10
- - @backstage/cli-common@0.0.0-nightly-20260310030847
11
- - @backstage/plugin-techdocs-node@0.0.0-nightly-20260310030847
12
- - @backstage/backend-defaults@0.0.0-nightly-20260310030847
10
+ - @backstage/backend-defaults@0.0.0-nightly-20260312031133
11
+ - @backstage/cli-common@0.0.0-nightly-20260312031133
12
+ - @backstage/plugin-techdocs-node@0.0.0-nightly-20260312031133
13
13
  - @backstage/catalog-model@1.7.6
14
14
  - @backstage/config@1.3.6
15
15
 
@@ -1215,6 +1215,52 @@
1215
1215
  },
1216
1216
  "packageName": "@backstage/backend-plugin-api"
1217
1217
  },
1218
+ {
1219
+ "path": "../../plugins/auth-backend-module-guest-provider/config.d.ts",
1220
+ "value": {
1221
+ "type": "object",
1222
+ "properties": {
1223
+ "auth": {
1224
+ "description": "Configuration options for the auth plugin",
1225
+ "type": "object",
1226
+ "properties": {
1227
+ "providers": {
1228
+ "type": "object",
1229
+ "properties": {
1230
+ "guest": {
1231
+ "type": "object",
1232
+ "properties": {
1233
+ "userEntityRef": {
1234
+ "description": "The entity reference to use for the guest user.",
1235
+ "default": "user:development/guest",
1236
+ "type": "string"
1237
+ },
1238
+ "ownershipEntityRefs": {
1239
+ "description": "A list of entity references to user for ownership of the guest user if the user\n is not found in the catalog.",
1240
+ "default": "[userEntityRef]",
1241
+ "type": "array",
1242
+ "items": {
1243
+ "type": "string"
1244
+ }
1245
+ },
1246
+ "dangerouslyAllowOutsideDevelopment": {
1247
+ "description": "Allow users to sign in with the guest provider outside of their development environments.",
1248
+ "type": "boolean"
1249
+ }
1250
+ }
1251
+ }
1252
+ }
1253
+ }
1254
+ },
1255
+ "required": [
1256
+ "providers"
1257
+ ]
1258
+ }
1259
+ },
1260
+ "$schema": "http://json-schema.org/draft-07/schema#"
1261
+ },
1262
+ "packageName": "@backstage/plugin-auth-backend-module-guest-provider"
1263
+ },
1218
1264
  {
1219
1265
  "path": "../../plugins/auth-backend/config.d.ts",
1220
1266
  "value": {
@@ -1420,52 +1466,6 @@
1420
1466
  },
1421
1467
  "packageName": "@backstage/plugin-auth-backend"
1422
1468
  },
1423
- {
1424
- "path": "../../plugins/auth-backend-module-guest-provider/config.d.ts",
1425
- "value": {
1426
- "type": "object",
1427
- "properties": {
1428
- "auth": {
1429
- "description": "Configuration options for the auth plugin",
1430
- "type": "object",
1431
- "properties": {
1432
- "providers": {
1433
- "type": "object",
1434
- "properties": {
1435
- "guest": {
1436
- "type": "object",
1437
- "properties": {
1438
- "userEntityRef": {
1439
- "description": "The entity reference to use for the guest user.",
1440
- "default": "user:development/guest",
1441
- "type": "string"
1442
- },
1443
- "ownershipEntityRefs": {
1444
- "description": "A list of entity references to user for ownership of the guest user if the user\n is not found in the catalog.",
1445
- "default": "[userEntityRef]",
1446
- "type": "array",
1447
- "items": {
1448
- "type": "string"
1449
- }
1450
- },
1451
- "dangerouslyAllowOutsideDevelopment": {
1452
- "description": "Allow users to sign in with the guest provider outside of their development environments.",
1453
- "type": "boolean"
1454
- }
1455
- }
1456
- }
1457
- }
1458
- }
1459
- },
1460
- "required": [
1461
- "providers"
1462
- ]
1463
- }
1464
- },
1465
- "$schema": "http://json-schema.org/draft-07/schema#"
1466
- },
1467
- "packageName": "@backstage/plugin-auth-backend-module-guest-provider"
1468
- },
1469
1469
  {
1470
1470
  "path": "../backend-app-api/config.d.ts",
1471
1471
  "value": {
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="color-scheme" content="light dark"/><meta name="description" content="Backstage is an open source framework for building developer portals"/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><link rel="icon" href="/favicon.ico"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><title>Techdocs Preview App</title><meta name="backstage-app-mode" content="public"><script defer="defer" src="/static/runtime.25a011d3.js"></script><script defer="defer" src="/static/module-material-ui.04de94f5.js"></script><script defer="defer" src="/static/module-lodash.c8595dcc.js"></script><script defer="defer" src="/static/module-react-aria.7458ec12.js"></script><script defer="defer" src="/static/module-ajv.ac283755.js"></script><script defer="defer" src="/static/module-mui.9c07ad9e.js"></script><script defer="defer" src="/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer="defer" src="/static/module-parse5.94980036.js"></script><script defer="defer" src="/static/module-zod.60f202c8.js"></script><script defer="defer" src="/static/module-react-dom.c631e87d.js"></script><script defer="defer" src="/static/module-react-hook-form.a071ee27.js"></script><script defer="defer" src="/static/module-i18next.c154323c.js"></script><script defer="defer" src="/static/module-remixicon.e05879ad.js"></script><script defer="defer" src="/static/module-remix-run.0c80eb31.js"></script><script defer="defer" src="/static/vendor.91cb8644.js"></script><script defer="defer" src="/static/main.353cd378.js"></script><link href="/static/main.4889723f.css" rel="stylesheet"><script type="backstage.io/config">[
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="color-scheme" content="light dark"/><meta name="description" content="Backstage is an open source framework for building developer portals"/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><link rel="icon" href="/favicon.ico"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><title>Techdocs Preview App</title><meta name="backstage-app-mode" content="public"><script defer="defer" src="/static/runtime.ccbde752.js"></script><script defer="defer" src="/static/module-material-ui.04de94f5.js"></script><script defer="defer" src="/static/module-lodash.c8595dcc.js"></script><script defer="defer" src="/static/module-react-aria.7458ec12.js"></script><script defer="defer" src="/static/module-ajv.ac283755.js"></script><script defer="defer" src="/static/module-mui.9c07ad9e.js"></script><script defer="defer" src="/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer="defer" src="/static/module-parse5.94980036.js"></script><script defer="defer" src="/static/module-zod.60f202c8.js"></script><script defer="defer" src="/static/module-react-dom.c631e87d.js"></script><script defer="defer" src="/static/module-react-hook-form.a071ee27.js"></script><script defer="defer" src="/static/module-i18next.c154323c.js"></script><script defer="defer" src="/static/module-remixicon.e05879ad.js"></script><script defer="defer" src="/static/module-remix-run.0c80eb31.js"></script><script defer="defer" src="/static/vendor.91cb8644.js"></script><script defer="defer" src="/static/main.bfd40392.js"></script><link href="/static/main.4889723f.css" rel="stylesheet"><script type="backstage.io/config">[
2
2
  {
3
3
  "context": "app-config.yaml",
4
4
  "data": {
@@ -43,7 +43,7 @@
43
43
  color="#5bbad5"
44
44
  />
45
45
  <title><%= config.getString('app.title') %></title>
46
- <meta name="backstage-app-mode" content="public"><meta name="backstage-public-path" content="<%= publicPath %>/"><script defer src="<%= publicPath %>/static/runtime.25a011d3.js"></script><script defer src="<%= publicPath %>/static/module-material-ui.04de94f5.js"></script><script defer src="<%= publicPath %>/static/module-lodash.c8595dcc.js"></script><script defer src="<%= publicPath %>/static/module-react-aria.7458ec12.js"></script><script defer src="<%= publicPath %>/static/module-ajv.ac283755.js"></script><script defer src="<%= publicPath %>/static/module-mui.9c07ad9e.js"></script><script defer src="<%= publicPath %>/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer src="<%= publicPath %>/static/module-parse5.94980036.js"></script><script defer src="<%= publicPath %>/static/module-zod.60f202c8.js"></script><script defer src="<%= publicPath %>/static/module-react-dom.c631e87d.js"></script><script defer src="<%= publicPath %>/static/module-react-hook-form.a071ee27.js"></script><script defer src="<%= publicPath %>/static/module-i18next.c154323c.js"></script><script defer src="<%= publicPath %>/static/module-remixicon.e05879ad.js"></script><script defer src="<%= publicPath %>/static/module-remix-run.0c80eb31.js"></script><script defer src="<%= publicPath %>/static/vendor.91cb8644.js"></script><script defer src="<%= publicPath %>/static/main.353cd378.js"></script><link href="<%= publicPath %>/static/main.4889723f.css" rel="stylesheet"></head>
46
+ <meta name="backstage-app-mode" content="public"><meta name="backstage-public-path" content="<%= publicPath %>/"><script defer src="<%= publicPath %>/static/runtime.ccbde752.js"></script><script defer src="<%= publicPath %>/static/module-material-ui.04de94f5.js"></script><script defer src="<%= publicPath %>/static/module-lodash.c8595dcc.js"></script><script defer src="<%= publicPath %>/static/module-react-aria.7458ec12.js"></script><script defer src="<%= publicPath %>/static/module-ajv.ac283755.js"></script><script defer src="<%= publicPath %>/static/module-mui.9c07ad9e.js"></script><script defer src="<%= publicPath %>/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer src="<%= publicPath %>/static/module-parse5.94980036.js"></script><script defer src="<%= publicPath %>/static/module-zod.60f202c8.js"></script><script defer src="<%= publicPath %>/static/module-react-dom.c631e87d.js"></script><script defer src="<%= publicPath %>/static/module-react-hook-form.a071ee27.js"></script><script defer src="<%= publicPath %>/static/module-i18next.c154323c.js"></script><script defer src="<%= publicPath %>/static/module-remixicon.e05879ad.js"></script><script defer src="<%= publicPath %>/static/module-remix-run.0c80eb31.js"></script><script defer src="<%= publicPath %>/static/vendor.91cb8644.js"></script><script defer src="<%= publicPath %>/static/main.bfd40392.js"></script><link href="<%= publicPath %>/static/main.4889723f.css" rel="stylesheet"></head>
47
47
  <body>
48
48
  <noscript>You need to enable JavaScript to run this app.</noscript>
49
49
  <div id="root"></div>
@@ -1 +1 @@
1
- "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["123"],{79894(a){a.exports=JSON.parse('{"name":"@backstage/plugin-catalog","version":"0.0.0-nightly-20260310030847","description":"The Backstage plugin for browsing the Backstage catalog","backstage":{"role":"frontend-plugin","pluginId":"catalog","pluginPackages":["@backstage/plugin-catalog","@backstage/plugin-catalog-backend","@backstage/plugin-catalog-common","@backstage/plugin-catalog-node","@backstage/plugin-catalog-react"]},"publishConfig":{"access":"public"},"keywords":["backstage"],"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/backstage","directory":"plugins/catalog"},"license":"Apache-2.0","sideEffects":false,"exports":{".":"./src/index.ts","./alpha":"./src/alpha/index.ts","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha/index.ts"],"package.json":["package.json"]}},"files":["dist","config.d.ts"],"scripts":{"build":"backstage-cli package build","clean":"backstage-cli package clean","lint":"backstage-cli package lint","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","start":"backstage-cli package start","test":"backstage-cli package test"},"dependencies":{"@backstage/catalog-client":"workspace:*","@backstage/catalog-model":"workspace:*","@backstage/core-compat-api":"workspace:*","@backstage/core-components":"workspace:*","@backstage/core-plugin-api":"workspace:*","@backstage/errors":"workspace:*","@backstage/frontend-plugin-api":"workspace:*","@backstage/integration-react":"workspace:*","@backstage/plugin-catalog-common":"workspace:*","@backstage/plugin-catalog-react":"workspace:*","@backstage/plugin-permission-react":"workspace:*","@backstage/plugin-scaffolder-common":"workspace:*","@backstage/plugin-search-common":"workspace:*","@backstage/plugin-search-react":"workspace:*","@backstage/plugin-techdocs-common":"workspace:*","@backstage/plugin-techdocs-react":"workspace:*","@backstage/types":"workspace:*","@backstage/ui":"workspace:*","@backstage/version-bridge":"workspace:*","@material-ui/core":"^4.12.2","@material-ui/icons":"^4.9.1","@material-ui/lab":"4.0.0-alpha.61","@mui/utils":"^5.14.15","classnames":"^2.3.1","dataloader":"^2.0.0","history":"^5.0.0","lodash":"^4.17.21","pluralize":"^8.0.0","react-helmet":"6.1.0","react-use":"^17.2.4","zen-observable":"^0.10.0"},"devDependencies":{"@backstage/cli":"workspace:*","@backstage/core-app-api":"workspace:*","@backstage/dev-utils":"workspace:*","@backstage/frontend-test-utils":"workspace:*","@backstage/plugin-permission-common":"workspace:*","@backstage/test-utils":"workspace:*","@testing-library/dom":"^10.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.0.0","@types/pluralize":"^0.0.33","@types/react":"^18.0.0","react":"^18.0.2","react-dom":"^18.0.2","react-router-dom":"^6.30.2","swr":"^2.2.5"},"peerDependencies":{"@types/react":"^17.0.0 || ^18.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-router-dom":"^6.30.2"},"peerDependenciesMeta":{"@types/react":{"optional":true}},"configSchema":"config.d.ts"}')}}]);
1
+ "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["123"],{79894(a){a.exports=JSON.parse('{"name":"@backstage/plugin-catalog","version":"0.0.0-nightly-20260312031133","description":"The Backstage plugin for browsing the Backstage catalog","backstage":{"role":"frontend-plugin","pluginId":"catalog","pluginPackages":["@backstage/plugin-catalog","@backstage/plugin-catalog-backend","@backstage/plugin-catalog-common","@backstage/plugin-catalog-node","@backstage/plugin-catalog-react"]},"publishConfig":{"access":"public"},"keywords":["backstage"],"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/backstage","directory":"plugins/catalog"},"license":"Apache-2.0","sideEffects":false,"exports":{".":"./src/index.ts","./alpha":"./src/alpha/index.ts","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha/index.ts"],"package.json":["package.json"]}},"files":["dist","config.d.ts"],"scripts":{"build":"backstage-cli package build","clean":"backstage-cli package clean","lint":"backstage-cli package lint","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","start":"backstage-cli package start","test":"backstage-cli package test"},"dependencies":{"@backstage/catalog-client":"workspace:*","@backstage/catalog-model":"workspace:*","@backstage/core-compat-api":"workspace:*","@backstage/core-components":"workspace:*","@backstage/core-plugin-api":"workspace:*","@backstage/errors":"workspace:*","@backstage/frontend-plugin-api":"workspace:*","@backstage/integration-react":"workspace:*","@backstage/plugin-catalog-common":"workspace:*","@backstage/plugin-catalog-react":"workspace:*","@backstage/plugin-permission-react":"workspace:*","@backstage/plugin-scaffolder-common":"workspace:*","@backstage/plugin-search-common":"workspace:*","@backstage/plugin-search-react":"workspace:*","@backstage/plugin-techdocs-common":"workspace:*","@backstage/plugin-techdocs-react":"workspace:*","@backstage/types":"workspace:*","@backstage/ui":"workspace:*","@backstage/version-bridge":"workspace:*","@material-ui/core":"^4.12.2","@material-ui/icons":"^4.9.1","@material-ui/lab":"4.0.0-alpha.61","@mui/utils":"^5.14.15","classnames":"^2.3.1","dataloader":"^2.0.0","history":"^5.0.0","lodash":"^4.17.21","pluralize":"^8.0.0","react-helmet":"6.1.0","react-use":"^17.2.4","zen-observable":"^0.10.0"},"devDependencies":{"@backstage/cli":"workspace:*","@backstage/core-app-api":"workspace:*","@backstage/dev-utils":"workspace:*","@backstage/frontend-test-utils":"workspace:*","@backstage/plugin-permission-common":"workspace:*","@backstage/test-utils":"workspace:*","@testing-library/dom":"^10.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.0.0","@types/pluralize":"^0.0.33","@types/react":"^18.0.0","react":"^18.0.2","react-dom":"^18.0.2","react-router-dom":"^6.30.2","swr":"^2.2.5"},"peerDependencies":{"@types/react":"^17.0.0 || ^18.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-router-dom":"^6.30.2"},"peerDependenciesMeta":{"@types/react":{"optional":true}},"configSchema":"config.d.ts"}')}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["1659"],{23494(e){e.exports=JSON.parse('{"name":"@backstage/plugin-techdocs","version":"0.0.0-nightly-20260310030847","description":"The Backstage plugin that renders technical documentation for your components","backstage":{"role":"frontend-plugin","pluginId":"techdocs","pluginPackages":["@backstage/plugin-techdocs","@backstage/plugin-techdocs-backend","@backstage/plugin-techdocs-common","@backstage/plugin-techdocs-node","@backstage/plugin-techdocs-react"]},"publishConfig":{"access":"public"},"keywords":["backstage","techdocs"],"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/backstage","directory":"plugins/techdocs"},"license":"Apache-2.0","sideEffects":false,"exports":{".":"./src/index.ts","./alpha":"./src/alpha/index.tsx","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha/index.tsx"],"package.json":["package.json"]}},"files":["dist","config.d.ts"],"scripts":{"build":"backstage-cli package build","clean":"backstage-cli package clean","lint":"backstage-cli package lint","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","start":"backstage-cli package start","test":"backstage-cli package test"},"dependencies":{"@backstage/catalog-client":"workspace:*","@backstage/catalog-model":"workspace:*","@backstage/config":"workspace:*","@backstage/core-components":"workspace:*","@backstage/core-plugin-api":"workspace:*","@backstage/errors":"workspace:*","@backstage/frontend-plugin-api":"workspace:*","@backstage/integration":"workspace:*","@backstage/integration-react":"workspace:*","@backstage/plugin-auth-react":"workspace:*","@backstage/plugin-catalog-react":"workspace:*","@backstage/plugin-search-common":"workspace:*","@backstage/plugin-search-react":"workspace:*","@backstage/plugin-techdocs-common":"workspace:*","@backstage/plugin-techdocs-react":"workspace:*","@backstage/theme":"workspace:*","@material-ui/core":"^4.12.2","@material-ui/icons":"^4.9.1","@material-ui/lab":"4.0.0-alpha.61","@material-ui/styles":"^4.10.0","@microsoft/fetch-event-source":"^2.0.1","dompurify":"^3.3.2","git-url-parse":"^15.0.0","lodash":"^4.17.21","react-helmet":"6.1.0","react-use":"^17.2.4"},"devDependencies":{"@backstage/cli":"workspace:*","@backstage/core-app-api":"workspace:*","@backstage/dev-utils":"workspace:*","@backstage/plugin-catalog":"workspace:*","@backstage/plugin-techdocs-module-addons-contrib":"workspace:*","@backstage/test-utils":"workspace:*","@testing-library/dom":"^10.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.0.0","@types/dompurify":"^3.0.0","@types/react":"^18.0.0","react":"^18.0.2","react-dom":"^18.0.2","react-router-dom":"^6.30.2"},"peerDependencies":{"@types/react":"^17.0.0 || ^18.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-router-dom":"^6.30.2"},"peerDependenciesMeta":{"@types/react":{"optional":true}},"configSchema":"config.d.ts"}')}}]);
1
+ "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["1659"],{23494(e){e.exports=JSON.parse('{"name":"@backstage/plugin-techdocs","version":"0.0.0-nightly-20260312031133","description":"The Backstage plugin that renders technical documentation for your components","backstage":{"role":"frontend-plugin","pluginId":"techdocs","pluginPackages":["@backstage/plugin-techdocs","@backstage/plugin-techdocs-backend","@backstage/plugin-techdocs-common","@backstage/plugin-techdocs-node","@backstage/plugin-techdocs-react"]},"publishConfig":{"access":"public"},"keywords":["backstage","techdocs"],"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/backstage","directory":"plugins/techdocs"},"license":"Apache-2.0","sideEffects":false,"exports":{".":"./src/index.ts","./alpha":"./src/alpha/index.tsx","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha/index.tsx"],"package.json":["package.json"]}},"files":["dist","config.d.ts"],"scripts":{"build":"backstage-cli package build","clean":"backstage-cli package clean","lint":"backstage-cli package lint","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","start":"backstage-cli package start","test":"backstage-cli package test"},"dependencies":{"@backstage/catalog-client":"workspace:*","@backstage/catalog-model":"workspace:*","@backstage/config":"workspace:*","@backstage/core-components":"workspace:*","@backstage/core-plugin-api":"workspace:*","@backstage/errors":"workspace:*","@backstage/frontend-plugin-api":"workspace:*","@backstage/integration":"workspace:*","@backstage/integration-react":"workspace:*","@backstage/plugin-auth-react":"workspace:*","@backstage/plugin-catalog-react":"workspace:*","@backstage/plugin-search-common":"workspace:*","@backstage/plugin-search-react":"workspace:*","@backstage/plugin-techdocs-common":"workspace:*","@backstage/plugin-techdocs-react":"workspace:*","@backstage/theme":"workspace:*","@material-ui/core":"^4.12.2","@material-ui/icons":"^4.9.1","@material-ui/lab":"4.0.0-alpha.61","@material-ui/styles":"^4.10.0","@microsoft/fetch-event-source":"^2.0.1","dompurify":"^3.3.2","git-url-parse":"^15.0.0","lodash":"^4.17.21","react-helmet":"6.1.0","react-use":"^17.2.4"},"devDependencies":{"@backstage/cli":"workspace:*","@backstage/core-app-api":"workspace:*","@backstage/dev-utils":"workspace:*","@backstage/plugin-catalog":"workspace:*","@backstage/plugin-techdocs-module-addons-contrib":"workspace:*","@backstage/test-utils":"workspace:*","@testing-library/dom":"^10.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.0.0","@types/dompurify":"^3.0.0","@types/react":"^18.0.0","react":"^18.0.2","react-dom":"^18.0.2","react-router-dom":"^6.30.2"},"peerDependencies":{"@types/react":"^17.0.0 || ^18.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-router-dom":"^6.30.2"},"peerDependenciesMeta":{"@types/react":{"optional":true}},"configSchema":"config.d.ts"}')}}]);
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["1749"],{98557(e,t,a){a.d(t,{M:()=>s});var l=a(31085),n=a(58837),r=a(71677),i=a(72501);let o=(0,n.A)({container:{overflow:"visible !important"},typo:{fontSize:"inherit",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box","-webkit-line-clamp":({line:e})=>e||1,"-webkit-box-orient":"vertical"}},{name:"BackstageOverflowTooltip"});function s(e){let t=o(e);return(0,l.jsx)(r.Ay,{title:e.title??(e.text||""),placement:e.placement,classes:e.tooltipClasses,children:(0,l.jsx)(i.A,{className:t.typo,variant:"inherit",children:e.text})})}},48266(e,t,a){a.d(t,{w:()=>S});var l=a(31085),n=a(77125),r=a(98552),i=a(94390),o=a(95061),s=a(41857),c=a(48543),d=a(26343),p=a(99489),f=a(7031),u=a(99703),m=a(58837),h=a(72501),y=a(92399),g=a(14041),x=a(10437);let b=(0,m.A)(e=>(0,u.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageClosedDropdown"}),j=()=>{let e=b();return(0,l.jsx)(x.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,l.jsx)("path",{d:"M7.5 8L6 9.5L12.0703 15.5703L18.1406 9.5L16.6406 8L12.0703 12.5703L7.5 8Z",fill:"currentColor"})})},C=(0,m.A)(e=>(0,u.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageOpenedDropdown"}),v=()=>{let e=C();return(0,l.jsx)(x.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,l.jsx)("path",{d:"M16.5 16L18 14.5L11.9297 8.42969L5.85938 14.5L7.35938 16L11.9297 11.4297L16.5 16Z",fill:"currentColor"})})},w=(0,f.A)(e=>(0,u.A)({root:{"label + &":{marginTop:e.spacing(3)},"&.Mui-focused > div[role=button]":{borderColor:e.palette.primary.main}},input:{borderRadius:e.shape.borderRadius,position:"relative",backgroundColor:e.palette.background.paper,border:"1px solid #ced4da",fontSize:e.typography.body1.fontSize,padding:e.spacing(1.25,3.25,1.25,1.5),transition:e.transitions.create(["border-color","box-shadow"]),"&:focus":{background:e.palette.background.paper,borderRadius:e.shape.borderRadius}}}),{name:"BackstageSelectInputBase"})(s.A),A=(0,m.A)(e=>(0,u.A)({formControl:{margin:e.spacing(1,0)},label:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},formLabel:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:2},checkbox:{},root:{display:"flex",flexDirection:"column"}}),{name:"BackstageSelect"});function S(e){let{multiple:t,items:a,label:s,placeholder:f,selected:u,onChange:m,triggerReset:x,native:b=!1,disabled:C=!1,margin:S,"data-testid":k="select"}=e,R=A(),[E,L]=(0,g.useState)(u||(t?[]:"")),[T,O]=(0,g.useState)(!1);return(0,g.useEffect)(()=>{L(t?[]:"")},[x,t]),(0,g.useEffect)(()=>{L(u||(t?[]:""))},[u,t]),(0,l.jsx)(n.A,{className:R.root,children:(0,l.jsxs)(o.A,{className:R.formControl,children:[(0,l.jsx)(c.A,{className:R.formLabel,children:s}),(0,l.jsxs)(p.A,{"aria-label":s,value:E,native:b,disabled:C,"data-testid":k,displayEmpty:!0,multiple:t,margin:S,onChange:e=>{L(e.target.value),m(e.target.value)},open:T,onOpen:e=>{C?e.preventDefault():O(a=>!(!t||e.target instanceof HTMLElement)||!a)},onClose:()=>{O(!1)},input:(0,l.jsx)(w,{}),label:s,renderValue:e=>t&&0!==E.length?(0,l.jsx)(n.A,{className:R.chips,children:e.map(e=>{let t=a.find(t=>t.value===e);return!!t&&(0,l.jsx)(i.A,{"data-testid":"chip",label:t?.label,clickable:!0,deleteIcon:(0,l.jsx)(y.default,{"data-testid":"cancel-icon",onMouseDown:e=>e.stopPropagation()}),onDelete:()=>{let t=E.filter(t=>t!==e);L(t),m(t)},className:R.chip},t?.value)})}):(0,l.jsx)(h.A,{children:0===E.length?f||"":a.find(t=>t.value===e)?.label}),IconComponent:()=>T?(0,l.jsx)(v,{}):(0,l.jsx)(j,{}),MenuProps:{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},getContentAnchorEl:null},children:[!!f&&!t&&(0,l.jsx)(d.A,{value:[],children:f}),b?a&&a.map(e=>(0,l.jsx)("option",{value:e.value,children:e.label},e.value)):a&&a.map(e=>(0,l.jsxs)(d.A,{value:e.value,children:[t&&(0,l.jsx)(r.A,{color:"primary",checked:E.includes(e.value)||!1,className:R.checkbox}),e.label]},e.value))]})]})})}},28499(e,t,a){a.d(t,{X:()=>U});var l=a(31085),n=a(89595),r=a(25301),i=a(77125),o=a(29365),s=a(7031),c=a(58837),d=a(54917),p=a(72501),f=a(83313),u=a(89019),m=a(62461),h=a(68887),y=a(63798),g=a(64704),x=a(6774),b=a(75625),j=a(65859),C=a(45917),v=a(5416),w=a(33494),A=a(80113),S=a(26229),k=a(46802),R=a(45250),E=a(14041),L=a(89332),T=a(64947),O=a(48266);let M=(0,c.A)(e=>({root:{height:"100%",width:"315px",display:"flex",flexDirection:"column",marginRight:e.spacing(3)},value:{fontWeight:"bold",fontSize:18},header:{display:"flex",alignItems:"center",height:e.spacing(7.5),justifyContent:"space-between",borderBottom:`1px solid ${e.palette.grey[500]}`},filters:{display:"flex",flexDirection:"column","& > *":{marginTop:e.spacing(2)}}}),{name:"BackstageTableFilters"}),D=e=>{let t=M(),{onChangeFilters:a}=e,{t:r}=(0,n.i)(L.O),[o,s]=(0,E.useState)({...e.selectedFilters}),[c,d]=(0,E.useState)(!1);return(0,E.useEffect)(()=>{a(o)},[o,a]),(0,l.jsxs)(i.A,{className:t.root,children:[(0,l.jsxs)(i.A,{className:t.header,children:[(0,l.jsx)(i.A,{className:t.value,children:r("table.filter.title")}),(0,l.jsx)(T.A,{color:"primary",onClick:()=>{s({}),d(e=>!e)},children:r("table.filter.clearAll")})]}),(0,l.jsx)(i.A,{className:t.filters,children:e.filters?.length&&e.filters.map(e=>(0,l.jsx)(O.w,{triggerReset:c,...e.element,selected:o[e.element.label],onChange:t=>s({...o,[e.element.label]:t})},e.element.label))})]})};var N=a(78467);function B(e){return(0,l.jsx)("tbody",{"data-testid":"loading-indicator",children:(0,l.jsx)("tr",{children:(0,l.jsx)("td",{colSpan:e.colSpan,children:(0,l.jsx)(i.A,{sx:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",minHeight:"15rem"},children:(0,l.jsx)(N.A,{size:"5rem"})})})})})}let z={Add:(0,E.forwardRef)((e,t)=>(0,l.jsx)(f.default,{...e,ref:t})),Check:(0,E.forwardRef)((e,t)=>(0,l.jsx)(m.default,{...e,ref:t})),Clear:(0,E.forwardRef)((e,t)=>(0,l.jsx)(g.default,{...e,ref:t})),Delete:(0,E.forwardRef)((e,t)=>(0,l.jsx)(x.default,{...e,ref:t})),DetailPanel:(0,E.forwardRef)((e,t)=>(0,l.jsx)(y.default,{...e,ref:t})),Edit:(0,E.forwardRef)((e,t)=>(0,l.jsx)(b.default,{...e,ref:t})),Export:(0,E.forwardRef)((e,t)=>(0,l.jsx)(S.default,{...e,ref:t})),Filter:(0,E.forwardRef)((e,t)=>(0,l.jsx)(j.default,{...e,ref:t})),FirstPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(v.default,{...e,ref:t})),LastPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(w.default,{...e,ref:t})),NextPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(y.default,{...e,ref:t})),PreviousPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(h.default,{...e,ref:t})),ResetSearch:(0,E.forwardRef)((e,t)=>(0,l.jsx)(g.default,{...e,ref:t})),Search:(0,E.forwardRef)((e,t)=>(0,l.jsx)(C.default,{...e,ref:t})),SortArrow:(0,E.forwardRef)((e,t)=>(0,l.jsx)(u.default,{...e,ref:t})),ThirdStateCheck:(0,E.forwardRef)((e,t)=>(0,l.jsx)(A.default,{...e,ref:t})),ViewColumn:(0,E.forwardRef)((e,t)=>(0,l.jsx)(k.default,{...e,ref:t}))};function K(e,t){let a=t.split("."),l=e[a[0]];for(let e=1;e<a.length&&void 0!==l;++e)l=l[a[e]];return l}let W=(0,s.A)(e=>({header:{padding:e.spacing(1,2,1,2.5),borderTop:`1px solid ${e.palette.grey.A100}`,borderBottom:`1px solid ${e.palette.grey.A100}`,fontWeight:e.typography.fontWeightBold,position:"static",wordBreak:"normal",textTransform:"uppercase"}}),{name:"BackstageTableHeader"})(r.MTableHeader),F=(0,s.A)(e=>({root:{padding:e.spacing(3,0,2.5,2.5)},title:{"& > h6":{fontWeight:e.typography.fontWeightBold}},searchField:{paddingRight:e.spacing(2)}}),{name:"BackstageTableToolbar"})(r.MTableToolbar),I=(0,c.A)(e=>({root:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap"},filterControls:{display:"flex",alignItems:"center"},title:{fontWeight:e.typography.fontWeightBold,fontSize:18,whiteSpace:"nowrap"}}),{name:"BackstageTableFiltersContainer"}),H=(0,c.A)(()=>({root:{display:"flex",alignItems:"start"}}),{name:"BackstageTable"}),P={search:"",filtersOpen:!1,filters:{}};function $(e){let{toolbarRef:t,setSearch:a,hasFilters:r,selectedFiltersLength:s,toggleFilters:c}=e,{t:d}=(0,n.i)(L.O),f=I(),u=(0,E.useCallback)(t=>{e.onSearchChanged(t),a(t)},[e,a]);return r?(0,l.jsxs)(i.A,{className:f.root,children:[(0,l.jsxs)(i.A,{className:f.filterControls,children:[(0,l.jsx)(o.A,{onClick:c,"aria-label":"filter list",children:(0,l.jsx)(j.default,{})}),(0,l.jsxs)(p.A,{className:f.title,children:[d("table.filter.title")," (",s,")"]})]}),(0,l.jsx)(F,{...e,ref:t,onSearchChanged:u})]}):(0,l.jsx)(F,{...e,ref:t,onSearchChanged:u})}function U(e){var t,a,o,s;let{data:c,columns:f,emptyContent:u,options:m,title:h,subtitle:y,localization:g,filters:x,initialState:b,onStateChange:j,components:C,isLoading:v,style:w,...A}=e,{t:S}=(0,n.i)(L.O),k=H(),T=(0,d.A)(),O={...P,...b},[M,N]=(0,E.useState)(O.filtersOpen),F=(0,E.useCallback)(()=>N(e=>!e),[N]),[I,U]=(0,E.useState)(O.filters),[_,Q]=(0,E.useState)(O.search);(0,E.useEffect)(()=>{if(j){var e;j((e={search:_,filtersOpen:M,filters:I},(0,R.transform)(e,(e,t,a)=>{(0,R.isEqual)(t,P[a])||(e[a]=t)})))}},[_,M,I,j]);let X=(0,E.useCallback)(e=>f.find(t=>t.title===e)?.field,[f]),J=(0,E.useMemo)(()=>{if("function"==typeof c||!I)return c;let e=Object.values(I);return c&&e.flat().length?c.filter(e=>!!Object.entries(I).filter(([,e])=>!!e.length).every(([t,a])=>{let l=K(e,X(t));return Array.isArray(l)&&Array.isArray(a)?l.some(e=>a.includes(e)):Array.isArray(l)?l.includes(a):Array.isArray(a)?a.includes(l):l===a})):c},[c,I,X]),Z=Object.values(I).flat().length,V=!!x?.length,q=(0,E.useCallback)(e=>(0,l.jsx)($,{setSearch:Q,hasFilters:V,selectedFiltersLength:Z,toggleFilters:F,...e}),[F,V,Z,Q]),G="function"!=typeof c&&0===c.length,Y=f.length,ee=(0,E.useMemo)(()=>(function({columnCount:e,emptyContent:t,hasNoRows:a,loading:n}){return i=>n?(0,l.jsx)(B,{colSpan:e}):t&&a?(0,l.jsx)("tbody",{children:(0,l.jsx)("tr",{children:(0,l.jsx)("td",{colSpan:e,children:t})})}):(0,l.jsx)(r.MTableBody,{...i})})({hasNoRows:G,emptyContent:u,columnCount:Y,loading:v}),[G,u,Y,v]);return(0,l.jsxs)(i.A,{className:k.root,children:[M&&c&&"function"!=typeof c&&x?.length&&(0,l.jsx)(D,{filters:(t=x,a=c,o=f,s=S,t.map(e=>{var t;let l,n;return{type:e.type,element:{placeholder:s("table.filter.placeholder"),label:e.column,multiple:"multiple-select"===e.type,items:[...(t=e.column,l=new Set,n=e=>{null!=e&&l.add(e)},a&&a.forEach(e=>{let a=K(e,o.find(e=>e.title===t)?.field);Array.isArray(a)?a.forEach(n):n(a)}),l)].sort().map(e=>({label:e,value:e}))}}})),selectedFilters:I,onChangeFilters:U}),(0,l.jsx)(r.default,{components:{Header:W,Body:ee,Toolbar:q,...C},options:m,columns:f.map(e=>{let t=e.headerStyle??{},a=e.cellStyle||{};if(e.highlight)if(t.color=T.palette.textContrast,"object"==typeof a)a.fontWeight=T.typography.fontWeightBold;else{let e=a;a=(t,a,l)=>({...e(t,a,l),fontWeight:T.typography.fontWeightBold})}return{...e,headerStyle:t,cellStyle:a}}),icons:z,title:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(p.A,{variant:"h5",component:"h2",children:h}),y&&(0,l.jsx)(p.A,{color:"textSecondary",variant:"body1",children:y})]}),data:J,style:{width:"100%",...w},localization:{...g,body:{emptyDataSourceMessage:S("table.body.emptyDataSourceMessage"),...g?.body},pagination:{firstTooltip:S("table.pagination.firstTooltip"),labelDisplayedRows:S("table.pagination.labelDisplayedRows"),labelRowsSelect:S("table.pagination.labelRowsSelect"),lastTooltip:S("table.pagination.lastTooltip"),nextTooltip:S("table.pagination.nextTooltip"),previousTooltip:S("table.pagination.previousTooltip"),...g?.pagination},header:{actions:S("table.header.actions"),...g?.header},toolbar:{searchPlaceholder:S("table.toolbar.search"),searchTooltip:S("table.toolbar.search"),...g?.toolbar}},...A})]})}U.icons=Object.freeze(z)},7537(e,t,a){a.d(t,{S:()=>i,Z:()=>o});var l=a(11773),n=a(46123),r=a.n(n);function i(e,t){let a,n,r,i=t?.defaultKind;return"metadata"in e?(a=e.kind,n=e.metadata.namespace,r=e.metadata.name):(a=e.kind,n=e.namespace,r=e.name),(void 0===n||""===n)&&(n=l.oQ),t?.defaultNamespace!==void 0?t?.defaultNamespace===n&&(n=void 0):n===l.oQ&&(n=void 0),a=a.toLocaleLowerCase("en-US"),a=i&&i.toLocaleLowerCase("en-US")===a?void 0:a,`${a?`${a}:`:""}${n?`${n}/`:""}${r}`}function o(e,t){for(let t of["spec.profile.displayName","metadata.title"]){let a=r()(e,t);if(a&&"string"==typeof a)return a}return t}},65671(e,t,a){a.d(t,{s:()=>g});var l=a(31085),n=a(58837),r=a(96403),i=a(98557),o=a(53320),s=a(7537),c=a(3438),d=a(53987),p=a(19857);let f=Object.freeze({createEntityRefColumn(e){let{defaultKind:t}=e;function a(e){return e.metadata?.title||(0,s.S)(e,{defaultKind:t})}return{title:(0,l.jsx)(p.g,{translationKey:"name"}),highlight:!0,customFilterAndSearch:(e,t)=>a(t).includes(e),customSort:(e,t)=>a(e).localeCompare(a(t)),render:e=>(0,l.jsx)(c.z,{entityRef:e,defaultKind:t,title:e.metadata?.title})}},createEntityRelationColumn(e){let{title:t,relation:a,defaultKind:n,filter:r}=e;function i(e){return(0,o.t)(e,a,r)}function c(e){return i(e).map(e=>(0,s.S)(e,{defaultKind:n})).join(", ")}return{title:t,customFilterAndSearch:(e,t)=>c(t).includes(e),customSort:(e,t)=>c(e).localeCompare(c(t)),render:e=>(0,l.jsx)(d.i,{entityRefs:i(e),defaultKind:n})}},createOwnerColumn(){return this.createEntityRelationColumn({title:(0,l.jsx)(p.g,{translationKey:"owner"}),relation:r.vv,defaultKind:"group"})},createDomainColumn(){return this.createEntityRelationColumn({title:(0,l.jsx)(p.g,{translationKey:"domain"}),relation:"partOf",defaultKind:"domain",filter:{kind:"domain"}})},createSystemColumn(){return this.createEntityRelationColumn({title:(0,l.jsx)(p.g,{translationKey:"system"}),relation:"partOf",defaultKind:"system",filter:{kind:"system"}})},createMetadataDescriptionColumn:()=>({title:(0,l.jsx)(p.g,{translationKey:"description"}),field:"metadata.description",render:e=>(0,l.jsx)(i.M,{text:e.metadata.description,placement:"bottom-start",line:2})}),createSpecLifecycleColumn:()=>({title:(0,l.jsx)(p.g,{translationKey:"lifecycle"}),field:"spec.lifecycle"}),createSpecTypeColumn:()=>({title:(0,l.jsx)(p.g,{translationKey:"type"}),field:"spec.type"})}),u=[f.createEntityRefColumn({defaultKind:"system"}),f.createDomainColumn(),f.createOwnerColumn(),f.createMetadataDescriptionColumn()],m=[f.createEntityRefColumn({defaultKind:"component"}),f.createSystemColumn(),f.createOwnerColumn(),f.createSpecTypeColumn(),f.createSpecLifecycleColumn(),f.createMetadataDescriptionColumn()];var h=a(28499);let y=(0,n.A)(e=>({empty:{padding:e.spacing(2),display:"flex",justifyContent:"center"}})),g=e=>{let{entities:t,title:a,emptyContent:n,variant:r="gridItem",columns:i,tableOptions:o={}}=e,s=y(),c={minWidth:"0",width:"100%"};return"gridItem"===r&&(c.height="calc(100% - 10px)"),(0,l.jsx)(h.X,{columns:i,title:a,style:c,emptyContent:n&&(0,l.jsx)("div",{className:s.empty,children:n}),options:{search:!1,paging:!1,actionsColumnIndex:-1,padding:"dense",draggable:!1,...o},data:t})};g.columns=f,g.systemEntityColumns=u,g.componentEntityColumns=m},19857(e,t,a){a.d(t,{g:()=>r});var l=a(89595),n=a(79811);let r=({translationKey:e})=>{let{t}=(0,l.i)(n.j);return t(`entityTableColumnTitle.${e}`)}},7396(e,t,a){a.d(t,{DependsOnComponentsCard:()=>c});var l=a(31085),n=a(96403),r=a(79842),i=a(64334),o=a(50010),s=a(89595);function c(e){let{t}=(0,s.i)(o.W),{variant:a="gridItem",title:c=t("dependsOnComponentsCard.title"),columns:d=r.mz,tableOptions:p={}}=e;return(0,l.jsx)(i.p,{variant:a,title:c,entityKind:"Component",relationType:n.nC,columns:d,emptyMessage:t("dependsOnComponentsCard.emptyMessage"),emptyHelpLink:r.e2,asRenderableEntities:r.xJ,tableOptions:p})}},64334(e,t,a){a.d(t,{p:()=>x});var l=a(31085),n=a(72501),r=a(22845),i=a(58077),o=a(50509),s=a(73466),c=a(76272),d=a(65671),p=a(89439),f=a(55489),u=a(97673),m=a(60603),h=a(79842),y=a(50010),g=a(89595);let x=e=>{let{variant:t="gridItem",title:a,columns:h,entityKind:x,relationType:b,emptyMessage:j,emptyHelpLink:C,asRenderableEntities:v,tableOptions:w={}}=e,{t:A}=(0,g.i)(y.W),{entity:S}=(0,r.tN)(),{entities:k,loading:R,error:E}=function(e,t){let a=t?.type?.toLocaleLowerCase("en-US"),l=t?.kind?.toLocaleLowerCase("en-US"),n=(0,o.gf)(c.v),{loading:r,value:d,error:p}=(0,s.A)(async()=>{let t=e.relations?.filter(e=>(!a||e.type.toLocaleLowerCase("en-US")===a)&&(!l||(0,i.KU)(e.targetRef).kind===l));if(!t?.length)return[];let{items:r}=await n.getEntitiesByRefs({entityRefs:t.map(e=>e.targetRef)});return r.filter(e=>!!e)},[e,a,l]);return{entities:d,loading:r,error:p}}(S,{type:b,kind:x});return R?(0,l.jsx)(p.n,{variant:t,title:a,children:(0,l.jsx)(f.k,{})}):E?(0,l.jsx)(p.n,{variant:t,title:a,children:(0,l.jsx)(u._,{error:E})}):(0,l.jsx)(d.s,{title:a,variant:t,emptyContent:(0,l.jsxs)("div",{style:{textAlign:"center"},children:[(0,l.jsx)(n.A,{variant:"body1",children:j}),(0,l.jsx)(n.A,{variant:"body2",children:(0,l.jsx)(m.N_,{to:C,externalLinkIcon:!0,children:A("relatedEntitiesCard.emptyHelpLinkTitle")})})]}),columns:h,entities:v(k||[]),tableOptions:w})};x.componentEntityColumns=h.mz,x.componentEntityHelpLink=h.e2,x.asComponentEntities=h.xJ,x.resourceEntityColumns=h.v9,x.resourceEntityHelpLink=h.nz,x.asResourceEntities=h.eB,x.systemEntityColumns=h.MW,x.systemEntityHelpLink=h.iU,x.asSystemEntities=h.vy,x.domainEntityColums=h.xO,x.domainEntityHelpLink=h.Xr,x.asDomainEntities=h.QS},79842(e,t,a){a.d(t,{MW:()=>d,QS:()=>h,Xr:()=>m,e2:()=>r,eB:()=>c,iU:()=>p,mz:()=>n,nz:()=>s,v9:()=>o,vy:()=>f,xJ:()=>i,xO:()=>u});var l=a(65671);let n=[l.s.columns.createEntityRefColumn({defaultKind:"component"}),l.s.columns.createOwnerColumn(),l.s.columns.createSpecTypeColumn(),l.s.columns.createSpecLifecycleColumn(),l.s.columns.createMetadataDescriptionColumn()],r="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component",i=e=>e,o=[l.s.columns.createEntityRefColumn({defaultKind:"resource"}),l.s.columns.createOwnerColumn(),l.s.columns.createSpecTypeColumn(),l.s.columns.createSpecLifecycleColumn(),l.s.columns.createMetadataDescriptionColumn()],s="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-resource",c=e=>e,d=[l.s.columns.createEntityRefColumn({defaultKind:"system"}),l.s.columns.createOwnerColumn(),l.s.columns.createMetadataDescriptionColumn()],p="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-system",f=e=>e,u=[l.s.columns.createEntityRefColumn({defaultKind:"domain"}),l.s.columns.createOwnerColumn(),l.s.columns.createMetadataDescriptionColumn()],m="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-domain",h=e=>e}}]);
2
+ //# sourceMappingURL=1749.5002975f.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/1749.5002975f.chunk.js","sources":["webpack://techdocs-cli-embedded-app/../core-components/src/components/OverflowTooltip/OverflowTooltip.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/Select/static/ClosedDropdown.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/Select/static/OpenedDropdown.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/Select/Select.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/Table/Filters.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/Table/TableLoadingBody.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/Table/Table.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/components/EntityRefLink/humanize.ts","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/components/EntityTable/columns.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/components/EntityTable/presets.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/components/EntityTable/EntityTable.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/components/EntityTable/TitleColumn.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/hooks/useRelatedEntities.ts","webpack://techdocs-cli-embedded-app/../../plugins/catalog/src/components/RelatedEntitiesCard/presets.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Tooltip, { TooltipProps } from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\n\ntype Props = {\n text?: string | undefined;\n title?: TooltipProps['title'];\n line?: number | undefined;\n placement?: TooltipProps['placement'];\n tooltipClasses?: TooltipProps['classes'];\n};\n\nexport type OverflowTooltipClassKey = 'container';\n\nconst useStyles = makeStyles(\n {\n container: {\n overflow: 'visible !important',\n },\n typo: {\n fontSize: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n '-webkit-line-clamp': ({ line }: Props) => line || 1,\n '-webkit-box-orient': 'vertical',\n },\n },\n { name: 'BackstageOverflowTooltip' },\n);\n\nexport function OverflowTooltip(props: Props) {\n const classes = useStyles(props);\n\n return (\n <Tooltip\n title={props.title ?? (props.text || '')}\n placement={props.placement}\n classes={props.tooltipClasses}\n >\n <Typography className={classes.typo} variant=\"inherit\">\n {props.text}\n </Typography>\n </Tooltip>\n );\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { makeStyles, createStyles } from '@material-ui/core/styles';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\n/** @public */\nexport type ClosedDropdownClassKey = 'icon';\n\nconst useStyles = makeStyles(\n theme =>\n createStyles({\n icon: {\n position: 'absolute',\n right: theme.spacing(0.5),\n pointerEvents: 'none',\n color: '#616161',\n },\n }),\n { name: 'BackstageClosedDropdown' },\n);\n\nconst ClosedDropdown = () => {\n const classes = useStyles();\n return (\n <SvgIcon\n className={classes.icon}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.5 8L6 9.5L12.0703 15.5703L18.1406 9.5L16.6406 8L12.0703 12.5703L7.5 8Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n );\n};\n\nexport default ClosedDropdown;\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { makeStyles, createStyles } from '@material-ui/core/styles';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport type OpenedDropdownClassKey = 'icon';\n\nconst useStyles = makeStyles(\n theme =>\n createStyles({\n icon: {\n position: 'absolute',\n right: theme.spacing(0.5),\n pointerEvents: 'none',\n color: '#616161',\n },\n }),\n { name: 'BackstageOpenedDropdown' },\n);\n\nconst OpenedDropdown = () => {\n const classes = useStyles();\n return (\n <SvgIcon\n className={classes.icon}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16.5 16L18 14.5L11.9297 8.42969L5.85938 14.5L7.35938 16L11.9297 11.4297L16.5 16Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n );\n};\n\nexport default OpenedDropdown;\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Box from '@material-ui/core/Box';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Chip from '@material-ui/core/Chip';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputBase from '@material-ui/core/InputBase';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport {\n createStyles,\n makeStyles,\n Theme,\n withStyles,\n} from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport { ChangeEvent, useEffect, useState } from 'react';\n\nimport ClosedDropdown from './static/ClosedDropdown';\nimport OpenedDropdown from './static/OpenedDropdown';\n\n/** @public */\nexport type SelectInputBaseClassKey = 'root' | 'input';\n\nconst BootstrapInput = withStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n 'label + &': {\n marginTop: theme.spacing(3),\n },\n '&.Mui-focused > div[role=button]': {\n borderColor: theme.palette.primary.main,\n },\n },\n input: {\n borderRadius: theme.shape.borderRadius,\n position: 'relative',\n backgroundColor: theme.palette.background.paper,\n border: '1px solid #ced4da',\n fontSize: theme.typography.body1.fontSize,\n padding: theme.spacing(1.25, 3.25, 1.25, 1.5),\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n background: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n },\n },\n }),\n { name: 'BackstageSelectInputBase' },\n)(InputBase);\n\n/** @public */\nexport type SelectClassKey =\n | 'formControl'\n | 'label'\n | 'chips'\n | 'chip'\n | 'checkbox'\n | 'root';\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n formControl: {\n margin: theme.spacing(1, 0),\n },\n label: {\n transform: 'initial',\n fontWeight: 'bold',\n fontSize: theme.typography.body2.fontSize,\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n '&.Mui-focused': {\n color: theme.palette.text.primary,\n },\n },\n formLabel: {\n transform: 'initial',\n fontWeight: 'bold',\n fontSize: theme.typography.body2.fontSize,\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n '&.Mui-focused': {\n color: theme.palette.text.primary,\n },\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n checkbox: {},\n\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n }),\n { name: 'BackstageSelect' },\n);\n\n/** @public */\nexport type SelectItem = {\n label: string;\n value: string | number;\n};\n\n/** @public */\nexport type SelectedItems = string | string[] | number | number[];\n\nexport type SelectProps = {\n multiple?: boolean;\n items: SelectItem[];\n label: string;\n placeholder?: string;\n selected?: SelectedItems;\n onChange: (arg: SelectedItems) => void;\n triggerReset?: boolean;\n native?: boolean;\n disabled?: boolean;\n margin?: 'dense' | 'none';\n 'data-testid'?: string;\n};\n\n/** @public */\nexport function SelectComponent(props: SelectProps) {\n const {\n multiple,\n items,\n label,\n placeholder,\n selected,\n onChange,\n triggerReset,\n native = false,\n disabled = false,\n margin,\n 'data-testid': dataTestId = 'select',\n } = props;\n const classes = useStyles();\n const [value, setValue] = useState<SelectedItems>(\n selected || (multiple ? [] : ''),\n );\n const [isOpen, setOpen] = useState(false);\n\n useEffect(() => {\n setValue(multiple ? [] : '');\n }, [triggerReset, multiple]);\n\n useEffect(() => {\n setValue(selected || (multiple ? [] : ''));\n }, [selected, multiple]);\n\n const handleChange = (event: ChangeEvent<{ value: unknown }>) => {\n setValue(event.target.value as SelectedItems);\n onChange(event.target.value as SelectedItems);\n };\n\n const handleOpen = (event: ChangeEvent<any>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n setOpen(previous => {\n if (multiple && !(event.target instanceof HTMLElement)) {\n return true;\n }\n return !previous;\n });\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleDelete = (selectedValue: string | number) => () => {\n const newValue = (value as any[]).filter(chip => chip !== selectedValue);\n setValue(newValue);\n onChange(newValue);\n };\n\n return (\n <Box className={classes.root}>\n <FormControl className={classes.formControl}>\n <InputLabel className={classes.formLabel}>{label}</InputLabel>\n <Select\n aria-label={label}\n value={value}\n native={native}\n disabled={disabled}\n data-testid={dataTestId}\n displayEmpty\n multiple={multiple}\n margin={margin}\n onChange={handleChange}\n open={isOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n input={<BootstrapInput />}\n label={label}\n renderValue={s =>\n multiple && (value as any[]).length !== 0 ? (\n <Box className={classes.chips}>\n {(s as string[]).map(selectedValue => {\n const item = items.find(el => el.value === selectedValue);\n return item ? (\n <Chip\n data-testid=\"chip\"\n key={item?.value}\n label={item?.label}\n clickable\n deleteIcon={\n <CancelIcon\n data-testid=\"cancel-icon\"\n onMouseDown={event => event.stopPropagation()}\n />\n }\n onDelete={handleDelete(selectedValue)}\n className={classes.chip}\n />\n ) : (\n false\n );\n })}\n </Box>\n ) : (\n <Typography>\n {(value as any[]).length === 0\n ? placeholder || ''\n : items.find(el => el.value === s)?.label}\n </Typography>\n )\n }\n IconComponent={() =>\n !isOpen ? <ClosedDropdown /> : <OpenedDropdown />\n }\n MenuProps={{\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n getContentAnchorEl: null,\n }}\n >\n {!!placeholder && !multiple && (\n <MenuItem value={[]}>{placeholder}</MenuItem>\n )}\n {native\n ? items &&\n items.map(item => (\n <option value={item.value} key={item.value}>\n {item.label}\n </option>\n ))\n : items &&\n items.map(item => (\n <MenuItem key={item.value} value={item.value}>\n {multiple && (\n <Checkbox\n color=\"primary\"\n checked={(value as any[]).includes(item.value) || false}\n className={classes.checkbox}\n />\n )}\n {item.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n );\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useEffect, useState } from 'react';\n\nimport { Select } from '../Select';\nimport { SelectProps } from '../Select/Select';\nimport { coreComponentsTranslationRef } from '../../translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport type TableFiltersClassKey = 'root' | 'value' | 'heder' | 'filters';\n\nconst useFilterStyles = makeStyles(\n theme => ({\n root: {\n height: '100%',\n width: '315px',\n display: 'flex',\n flexDirection: 'column',\n marginRight: theme.spacing(3),\n },\n value: {\n fontWeight: 'bold',\n fontSize: 18,\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n height: theme.spacing(7.5),\n justifyContent: 'space-between',\n borderBottom: `1px solid ${theme.palette.grey[500]}`,\n },\n filters: {\n display: 'flex',\n flexDirection: 'column',\n '& > *': {\n marginTop: theme.spacing(2),\n },\n },\n }),\n { name: 'BackstageTableFilters' },\n);\n\nexport type Without<T, K> = Pick<T, Exclude<keyof T, K>>;\n\nexport type Filter = {\n type: 'select' | 'multiple-select';\n element: Without<SelectProps, 'onChange'>;\n};\n\nexport type SelectedFilters = {\n [key: string]: string | string[];\n};\n\ntype Props = {\n filters: Filter[];\n selectedFilters?: SelectedFilters;\n onChangeFilters: (arg: any) => any;\n};\n\nexport const Filters = (props: Props) => {\n const classes = useFilterStyles();\n\n const { onChangeFilters } = props;\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n\n const [selectedFilters, setSelectedFilters] = useState<SelectedFilters>({\n ...props.selectedFilters,\n });\n const [reset, triggerReset] = useState(false);\n\n // Trigger re-rendering\n const handleClick = () => {\n setSelectedFilters({});\n triggerReset(el => !el);\n };\n\n useEffect(() => {\n onChangeFilters(selectedFilters);\n }, [selectedFilters, onChangeFilters]);\n\n // As material table doesn't provide a way to add a column filter tab we will make our own filter logic\n return (\n <Box className={classes.root}>\n <Box className={classes.header}>\n <Box className={classes.value}>{t('table.filter.title')}</Box>\n <Button color=\"primary\" onClick={handleClick}>\n {t('table.filter.clearAll')}\n </Button>\n </Box>\n <Box className={classes.filters}>\n {props.filters?.length &&\n props.filters.map(filter => (\n <Select\n triggerReset={reset}\n key={filter.element.label}\n {...(filter.element as SelectProps)}\n selected={selectedFilters[filter.element.label]}\n onChange={el =>\n setSelectedFilters({\n ...selectedFilters,\n [filter.element.label]: el as any,\n })\n }\n />\n ))}\n </Box>\n </Box>\n );\n};\n","/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Box from '@material-ui/core/Box';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\n/**\n * @internal\n */\nexport function TableLoadingBody(props: { colSpan?: number }) {\n return (\n <tbody data-testid=\"loading-indicator\">\n <tr>\n <td colSpan={props.colSpan}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n minHeight: '15rem',\n }}\n >\n <CircularProgress size=\"5rem\" />\n </Box>\n </td>\n </tr>\n </tbody>\n );\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n TranslationFunction,\n useTranslationRef,\n} from '@backstage/core-plugin-api/alpha';\nimport MTable, {\n Column,\n Icons,\n MaterialTableProps,\n MTableBody,\n MTableHeader,\n MTableToolbar,\n Options,\n} from '@material-table/core';\nimport Box from '@material-ui/core/Box';\nimport IconButton from '@material-ui/core/IconButton';\nimport {\n makeStyles,\n Theme,\n useTheme,\n withStyles,\n} from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport AddBox from '@material-ui/icons/AddBox';\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\nimport Check from '@material-ui/icons/Check';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport Clear from '@material-ui/icons/Clear';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport Edit from '@material-ui/icons/Edit';\nimport FilterList from '@material-ui/icons/FilterList';\nimport Search from '@material-ui/icons/Search';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport Remove from '@material-ui/icons/Remove';\nimport SaveAlt from '@material-ui/icons/SaveAlt';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\nimport { isEqual, transform } from 'lodash';\nimport {\n CSSProperties,\n forwardRef,\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { coreComponentsTranslationRef } from '../../translation';\nimport { SelectProps } from '../Select/Select';\nimport { Filter, Filters, SelectedFilters, Without } from './Filters';\nimport { TableLoadingBody } from './TableLoadingBody';\n\n// Material-table is not using the standard icons available in in material-ui. https://github.com/mbrn/material-table/issues/51\nconst tableIcons: Icons = {\n Add: forwardRef<SVGSVGElement>((props, ref) => (\n <AddBox {...props} ref={ref} />\n )),\n Check: forwardRef<SVGSVGElement>((props, ref) => (\n <Check {...props} ref={ref} />\n )),\n Clear: forwardRef<SVGSVGElement>((props, ref) => (\n <Clear {...props} ref={ref} />\n )),\n Delete: forwardRef<SVGSVGElement>((props, ref) => (\n <DeleteOutline {...props} ref={ref} />\n )),\n DetailPanel: forwardRef<SVGSVGElement>((props, ref) => (\n <ChevronRight {...props} ref={ref} />\n )),\n Edit: forwardRef<SVGSVGElement>((props, ref) => (\n <Edit {...props} ref={ref} />\n )),\n Export: forwardRef<SVGSVGElement>((props, ref) => (\n <SaveAlt {...props} ref={ref} />\n )),\n Filter: forwardRef<SVGSVGElement>((props, ref) => (\n <FilterList {...props} ref={ref} />\n )),\n FirstPage: forwardRef<SVGSVGElement>((props, ref) => (\n <FirstPage {...props} ref={ref} />\n )),\n LastPage: forwardRef<SVGSVGElement>((props, ref) => (\n <LastPage {...props} ref={ref} />\n )),\n NextPage: forwardRef<SVGSVGElement>((props, ref) => (\n <ChevronRight {...props} ref={ref} />\n )),\n PreviousPage: forwardRef<SVGSVGElement>((props, ref) => (\n <ChevronLeft {...props} ref={ref} />\n )),\n ResetSearch: forwardRef<SVGSVGElement>((props, ref) => (\n <Clear {...props} ref={ref} />\n )),\n Search: forwardRef<SVGSVGElement>((props, ref) => (\n <Search {...props} ref={ref} />\n )),\n SortArrow: forwardRef<SVGSVGElement>((props, ref) => (\n <ArrowUpward {...props} ref={ref} />\n )),\n ThirdStateCheck: forwardRef<SVGSVGElement>((props, ref) => (\n <Remove {...props} ref={ref} />\n )),\n ViewColumn: forwardRef<SVGSVGElement>((props, ref) => (\n <ViewColumn {...props} ref={ref} />\n )),\n};\n\n// TODO: Material table might already have such a function internally that we can use?\nfunction extractValueByField(data: any, field: string): any | undefined {\n const path = field.split('.');\n let value = data[path[0]];\n\n for (let i = 1; i < path.length; ++i) {\n if (value === undefined) {\n return value;\n }\n\n const f = path[i];\n value = value[f];\n }\n\n return value;\n}\n\nexport type TableHeaderClassKey = 'header';\n\nconst StyledMTableHeader = withStyles(\n theme => ({\n header: {\n padding: theme.spacing(1, 2, 1, 2.5),\n borderTop: `1px solid ${theme.palette.grey.A100}`,\n borderBottom: `1px solid ${theme.palette.grey.A100}`,\n // withStyles hasn't a generic overload for theme\n fontWeight: theme.typography.fontWeightBold,\n position: 'static',\n wordBreak: 'normal',\n textTransform: 'uppercase',\n },\n }),\n { name: 'BackstageTableHeader' },\n)(MTableHeader);\n\nexport type TableToolbarClassKey = 'root' | 'title' | 'searchField';\n\nconst StyledMTableToolbar = withStyles(\n theme => ({\n root: {\n padding: theme.spacing(3, 0, 2.5, 2.5),\n },\n title: {\n '& > h6': {\n fontWeight: theme.typography.fontWeightBold,\n },\n },\n searchField: {\n paddingRight: theme.spacing(2),\n },\n }),\n { name: 'BackstageTableToolbar' },\n)(MTableToolbar);\n\n/** @public */\nexport type FiltersContainerClassKey = 'root' | 'filterControls' | 'title';\n\nconst useFilterStyles = makeStyles(\n theme => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n },\n filterControls: {\n display: 'flex',\n alignItems: 'center',\n },\n title: {\n fontWeight: theme.typography.fontWeightBold,\n fontSize: 18,\n whiteSpace: 'nowrap',\n },\n }),\n { name: 'BackstageTableFiltersContainer' },\n);\n\nexport type TableClassKey = 'root';\n\nconst useTableStyles = makeStyles(\n () => ({\n root: {\n display: 'flex',\n alignItems: 'start',\n },\n }),\n { name: 'BackstageTable' },\n);\n\nfunction convertColumns<T extends object>(\n columns: TableColumn<T>[],\n theme: Theme,\n): TableColumn<T>[] {\n return columns.map(column => {\n const headerStyle: CSSProperties = column.headerStyle ?? {};\n\n let cellStyle = column.cellStyle || {};\n\n if (column.highlight) {\n headerStyle.color = theme.palette.textContrast;\n\n if (typeof cellStyle === 'object') {\n (cellStyle as CSSProperties).fontWeight =\n theme.typography.fontWeightBold;\n } else {\n const cellStyleFn = cellStyle as (\n data: any,\n rowData: T,\n column?: Column<T>,\n ) => CSSProperties;\n cellStyle = (data, rowData, rowColumn) => {\n const style = cellStyleFn(data, rowData, rowColumn);\n return { ...style, fontWeight: theme.typography.fontWeightBold };\n };\n }\n }\n\n return {\n ...column,\n headerStyle,\n cellStyle,\n };\n });\n}\n\nfunction removeDefaultValues(state: any, defaultState: any): any {\n return transform(state, (result, value, key) => {\n if (!isEqual(value, defaultState[key])) {\n result[key] = value;\n }\n });\n}\n\nconst defaultInitialState = {\n search: '',\n filtersOpen: false,\n filters: {},\n};\n\nexport interface TableColumn<T extends object = {}> extends Column<T> {\n highlight?: boolean;\n width?: string;\n}\n\nexport type TableFilter = {\n column: string;\n type: 'select' | 'multiple-select';\n};\n\nexport type TableState = {\n search?: string;\n filtersOpen?: boolean;\n filters?: SelectedFilters;\n};\n\nexport interface TableProps<T extends object = {}>\n extends MaterialTableProps<T> {\n columns: TableColumn<T>[];\n subtitle?: string;\n filters?: TableFilter[];\n initialState?: TableState;\n emptyContent?: ReactNode;\n isLoading?: boolean;\n onStateChange?: (state: TableState) => any;\n}\n\nexport interface TableOptions<T extends object = {}> extends Options<T> {}\n\nexport function TableToolbar(toolbarProps: {\n toolbarRef: MutableRefObject<any>;\n setSearch: (value: string) => void;\n onSearchChanged: (value: string) => void;\n toggleFilters: () => void;\n hasFilters: boolean;\n selectedFiltersLength: number;\n}) {\n const {\n toolbarRef,\n setSearch,\n hasFilters,\n selectedFiltersLength,\n toggleFilters,\n } = toolbarProps;\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const filtersClasses = useFilterStyles();\n const onSearchChanged = useCallback(\n (searchText: string) => {\n toolbarProps.onSearchChanged(searchText);\n setSearch(searchText);\n },\n [toolbarProps, setSearch],\n );\n\n if (hasFilters) {\n return (\n <Box className={filtersClasses.root}>\n <Box className={filtersClasses.filterControls}>\n <IconButton onClick={toggleFilters} aria-label=\"filter list\">\n <FilterList />\n </IconButton>\n <Typography className={filtersClasses.title}>\n {t('table.filter.title')} ({selectedFiltersLength})\n </Typography>\n </Box>\n <StyledMTableToolbar\n {...toolbarProps}\n ref={toolbarRef}\n onSearchChanged={onSearchChanged}\n />\n </Box>\n );\n }\n\n return (\n <StyledMTableToolbar\n {...toolbarProps}\n ref={toolbarRef}\n onSearchChanged={onSearchChanged}\n />\n );\n}\n\n/**\n * @public\n */\nexport function Table<T extends object = {}>(props: TableProps<T>) {\n const {\n data,\n columns,\n emptyContent,\n options,\n title,\n subtitle,\n localization,\n filters,\n initialState,\n onStateChange,\n components,\n isLoading: loading,\n style,\n ...restProps\n } = props;\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const tableClasses = useTableStyles();\n\n const theme = useTheme();\n\n const calculatedInitialState = { ...defaultInitialState, ...initialState };\n\n const [filtersOpen, setFiltersOpen] = useState(\n calculatedInitialState.filtersOpen,\n );\n const toggleFilters = useCallback(\n () => setFiltersOpen(v => !v),\n [setFiltersOpen],\n );\n\n const [selectedFilters, setSelectedFilters] = useState(\n calculatedInitialState.filters,\n );\n\n const [search, setSearch] = useState(calculatedInitialState.search);\n\n useEffect(() => {\n if (onStateChange) {\n const state = removeDefaultValues(\n {\n search,\n filtersOpen,\n filters: selectedFilters,\n },\n defaultInitialState,\n );\n\n onStateChange(state);\n }\n }, [search, filtersOpen, selectedFilters, onStateChange]);\n\n const getFieldByTitle = useCallback(\n (titleValue: string | keyof T) =>\n columns.find(el => el.title === titleValue)?.field,\n [columns],\n );\n\n const tableData = useMemo(() => {\n if (typeof data === 'function' || !selectedFilters) {\n return data;\n }\n\n const selectedFiltersArray = Object.values(selectedFilters);\n if (data && selectedFiltersArray.flat().length) {\n const newData = (data as any[]).filter(\n el =>\n !!Object.entries(selectedFilters)\n .filter(([, value]) => !!(value as { length?: number }).length)\n .every(([key, filterValue]) => {\n const fieldValue = extractValueByField(\n el,\n getFieldByTitle(key) as string,\n );\n\n if (Array.isArray(fieldValue) && Array.isArray(filterValue)) {\n return fieldValue.some(v => filterValue.includes(v));\n } else if (Array.isArray(fieldValue)) {\n return fieldValue.includes(filterValue);\n } else if (Array.isArray(filterValue)) {\n return filterValue.includes(fieldValue);\n }\n\n return fieldValue === filterValue;\n }),\n );\n return newData;\n }\n return data;\n }, [data, selectedFilters, getFieldByTitle]);\n\n const selectedFiltersLength = Object.values(selectedFilters).flat().length;\n\n const hasFilters = !!filters?.length;\n const Toolbar = useCallback(\n (toolbarProps: any /* no type for this in material-table */) => {\n return (\n <TableToolbar\n setSearch={setSearch}\n hasFilters={hasFilters}\n selectedFiltersLength={selectedFiltersLength}\n toggleFilters={toggleFilters}\n {...toolbarProps}\n />\n );\n },\n [toggleFilters, hasFilters, selectedFiltersLength, setSearch],\n );\n\n const hasNoRows = typeof data !== 'function' && data.length === 0;\n const columnCount = columns.length;\n const Body = useMemo(\n () => makeBody({ hasNoRows, emptyContent, columnCount, loading }),\n [hasNoRows, emptyContent, columnCount, loading],\n );\n\n return (\n <Box className={tableClasses.root}>\n {filtersOpen && data && typeof data !== 'function' && filters?.length && (\n <Filters\n filters={constructFilters(filters, data as any[], columns, t)}\n selectedFilters={selectedFilters}\n onChangeFilters={setSelectedFilters}\n />\n )}\n <MTable<T>\n components={{\n Header: StyledMTableHeader,\n Body,\n Toolbar,\n ...components,\n }}\n options={options}\n columns={convertColumns(columns, theme)}\n icons={tableIcons}\n title={\n <>\n <Typography variant=\"h5\" component=\"h2\">\n {title}\n </Typography>\n {subtitle && (\n <Typography color=\"textSecondary\" variant=\"body1\">\n {subtitle}\n </Typography>\n )}\n </>\n }\n data={tableData}\n style={{ width: '100%', ...style }}\n localization={{\n ...localization,\n body: {\n emptyDataSourceMessage: t('table.body.emptyDataSourceMessage'),\n ...localization?.body,\n },\n pagination: {\n firstTooltip: t('table.pagination.firstTooltip'),\n labelDisplayedRows: t('table.pagination.labelDisplayedRows'),\n labelRowsSelect: t('table.pagination.labelRowsSelect'),\n lastTooltip: t('table.pagination.lastTooltip'),\n nextTooltip: t('table.pagination.nextTooltip'),\n previousTooltip: t('table.pagination.previousTooltip'),\n ...localization?.pagination,\n },\n header: {\n actions: t('table.header.actions'),\n ...localization?.header,\n },\n toolbar: {\n searchPlaceholder: t('table.toolbar.search'),\n searchTooltip: t('table.toolbar.search'),\n ...localization?.toolbar,\n },\n }}\n {...restProps}\n />\n </Box>\n );\n}\n\nTable.icons = Object.freeze(tableIcons);\n\nfunction makeBody({\n columnCount,\n emptyContent,\n hasNoRows,\n loading,\n}: {\n hasNoRows: boolean;\n emptyContent: ReactNode;\n columnCount: number;\n loading?: boolean;\n}) {\n return (bodyProps: any /* no type for this in material-table */) => {\n if (loading) {\n return <TableLoadingBody colSpan={columnCount} />;\n }\n\n if (emptyContent && hasNoRows) {\n return (\n <tbody>\n <tr>\n <td colSpan={columnCount}>{emptyContent}</td>\n </tr>\n </tbody>\n );\n }\n\n return <MTableBody {...bodyProps} />;\n };\n}\n\nfunction constructFilters<T extends object>(\n filterConfig: TableFilter[],\n dataValue: any[] | undefined,\n columns: TableColumn<T>[],\n t: TranslationFunction<typeof coreComponentsTranslationRef.T>,\n): Filter[] {\n const extractDistinctValues = (field: string | keyof T): Set<any> => {\n const distinctValues = new Set<any>();\n const addValue = (value: any) => {\n if (value !== undefined && value !== null) {\n distinctValues.add(value);\n }\n };\n\n if (dataValue) {\n dataValue.forEach(el => {\n const value = extractValueByField(\n el,\n columns.find(c => c.title === field)?.field as string,\n );\n\n if (Array.isArray(value)) {\n (value as []).forEach(addValue);\n } else {\n addValue(value);\n }\n });\n }\n\n return distinctValues;\n };\n\n const constructSelect = (\n filter: TableFilter,\n ): Without<SelectProps, 'onChange'> => {\n return {\n placeholder: t('table.filter.placeholder'),\n label: filter.column,\n multiple: filter.type === 'multiple-select',\n items: [...extractDistinctValues(filter.column)].sort().map(value => ({\n label: value,\n value,\n })),\n };\n };\n\n return filterConfig.map(filter => ({\n type: filter.type,\n element: constructSelect(filter),\n }));\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n CompoundEntityRef,\n DEFAULT_NAMESPACE,\n} from '@backstage/catalog-model';\nimport get from 'lodash/get';\n\n/**\n * @param defaultNamespace - if set to false then namespace is never omitted,\n * if set to string which matches namespace of entity then omitted\n *\n * @public\n **/\nexport function humanizeEntityRef(\n entityRef: Entity | CompoundEntityRef,\n opts?: {\n defaultKind?: string;\n defaultNamespace?: string | false;\n },\n) {\n const defaultKind = opts?.defaultKind;\n let kind;\n let namespace;\n let name;\n\n if ('metadata' in entityRef) {\n kind = entityRef.kind;\n namespace = entityRef.metadata.namespace;\n name = entityRef.metadata.name;\n } else {\n kind = entityRef.kind;\n namespace = entityRef.namespace;\n name = entityRef.name;\n }\n\n if (namespace === undefined || namespace === '') {\n namespace = DEFAULT_NAMESPACE;\n }\n if (opts?.defaultNamespace !== undefined) {\n if (opts?.defaultNamespace === namespace) {\n namespace = undefined;\n }\n } else if (namespace === DEFAULT_NAMESPACE) {\n namespace = undefined;\n }\n\n kind = kind.toLocaleLowerCase('en-US');\n kind =\n defaultKind && defaultKind.toLocaleLowerCase('en-US') === kind\n ? undefined\n : kind;\n return `${kind ? `${kind}:` : ''}${namespace ? `${namespace}/` : ''}${name}`;\n}\n\n/**\n * Convert an entity to its more readable name if available.\n *\n * If an entity is either User or Group, this will be its `spec.profile.displayName`.\n * Otherwise, this is `metadata.title`.\n *\n * If neither of those are found or populated, fallback to `defaultName`.\n *\n * @param entity - Entity to convert.\n * @param defaultName - If entity readable name is not available, `defaultName` will be returned.\n * @returns Readable name, defaults to `defaultName`.\n *\n */\nexport function humanizeEntity(entity: Entity, defaultName: string) {\n for (const path of ['spec.profile.displayName', 'metadata.title']) {\n const value = get(entity, path);\n if (value && typeof value === 'string') {\n return value;\n }\n }\n return defaultName;\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n CompoundEntityRef,\n RELATION_OWNED_BY,\n RELATION_PART_OF,\n} from '@backstage/catalog-model';\nimport { OverflowTooltip, TableColumn } from '@backstage/core-components';\nimport { getEntityRelations } from '../../utils';\nimport {\n EntityRefLink,\n EntityRefLinks,\n humanizeEntityRef,\n} from '../EntityRefLink';\nimport { EntityTableColumnTitle } from './TitleColumn';\n\n/** @public */\nexport const columnFactories = Object.freeze({\n createEntityRefColumn<T extends Entity>(options: {\n defaultKind?: string;\n }): TableColumn<T> {\n const { defaultKind } = options;\n function formatContent(entity: T): string {\n return (\n entity.metadata?.title ||\n humanizeEntityRef(entity, {\n defaultKind,\n })\n );\n }\n\n return {\n title: <EntityTableColumnTitle translationKey=\"name\" />,\n highlight: true,\n customFilterAndSearch(filter, entity) {\n // TODO: We could implement this more efficiently, like searching over\n // each field that is displayed individually (kind, namespace, name).\n // but that might confuse the user as it will behave different than a\n // simple text search.\n // Another alternative would be to cache the values. But writing them\n // into the entity feels bad too.\n return formatContent(entity).includes(filter);\n },\n customSort(entity1, entity2) {\n // TODO: We could implement this more efficiently by comparing field by field.\n // This has similar issues as above.\n return formatContent(entity1).localeCompare(formatContent(entity2));\n },\n render: entity => (\n <EntityRefLink\n entityRef={entity}\n defaultKind={defaultKind}\n title={entity.metadata?.title}\n />\n ),\n };\n },\n createEntityRelationColumn<T extends Entity>(options: {\n title: string | JSX.Element;\n relation: string;\n defaultKind?: string;\n filter?: { kind: string };\n }): TableColumn<T> {\n const { title, relation, defaultKind, filter: entityFilter } = options;\n\n function getRelations(entity: T): CompoundEntityRef[] {\n return getEntityRelations(entity, relation, entityFilter);\n }\n\n function formatContent(entity: T): string {\n return getRelations(entity)\n .map(r => humanizeEntityRef(r, { defaultKind }))\n .join(', ');\n }\n\n return {\n title,\n customFilterAndSearch(filter, entity) {\n return formatContent(entity).includes(filter);\n },\n customSort(entity1, entity2) {\n return formatContent(entity1).localeCompare(formatContent(entity2));\n },\n render: entity => {\n return (\n <EntityRefLinks\n entityRefs={getRelations(entity)}\n defaultKind={defaultKind}\n />\n );\n },\n };\n },\n createOwnerColumn<T extends Entity>(): TableColumn<T> {\n return this.createEntityRelationColumn({\n title: <EntityTableColumnTitle translationKey=\"owner\" />,\n relation: RELATION_OWNED_BY,\n defaultKind: 'group',\n });\n },\n createDomainColumn<T extends Entity>(): TableColumn<T> {\n return this.createEntityRelationColumn({\n title: <EntityTableColumnTitle translationKey=\"domain\" />,\n relation: RELATION_PART_OF,\n defaultKind: 'domain',\n filter: {\n kind: 'domain',\n },\n });\n },\n createSystemColumn<T extends Entity>(): TableColumn<T> {\n return this.createEntityRelationColumn({\n title: <EntityTableColumnTitle translationKey=\"system\" />,\n relation: RELATION_PART_OF,\n defaultKind: 'system',\n filter: {\n kind: 'system',\n },\n });\n },\n createMetadataDescriptionColumn<T extends Entity>(): TableColumn<T> {\n return {\n title: <EntityTableColumnTitle translationKey=\"description\" />,\n field: 'metadata.description',\n render: entity => (\n <OverflowTooltip\n text={entity.metadata.description}\n placement=\"bottom-start\"\n line={2}\n />\n ),\n };\n },\n createSpecLifecycleColumn<T extends Entity>(): TableColumn<T> {\n return {\n title: <EntityTableColumnTitle translationKey=\"lifecycle\" />,\n field: 'spec.lifecycle',\n };\n },\n createSpecTypeColumn<T extends Entity>(): TableColumn<T> {\n return {\n title: <EntityTableColumnTitle translationKey=\"type\" />,\n field: 'spec.type',\n };\n },\n});\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentEntity, SystemEntity } from '@backstage/catalog-model';\nimport { TableColumn } from '@backstage/core-components';\nimport { columnFactories } from './columns';\n\nexport const systemEntityColumns: TableColumn<SystemEntity>[] = [\n columnFactories.createEntityRefColumn({ defaultKind: 'system' }),\n columnFactories.createDomainColumn(),\n columnFactories.createOwnerColumn(),\n columnFactories.createMetadataDescriptionColumn(),\n];\n\nexport const componentEntityColumns: TableColumn<ComponentEntity>[] = [\n columnFactories.createEntityRefColumn({ defaultKind: 'component' }),\n columnFactories.createSystemColumn(),\n columnFactories.createOwnerColumn(),\n columnFactories.createSpecTypeColumn(),\n columnFactories.createSpecLifecycleColumn(),\n columnFactories.createMetadataDescriptionColumn(),\n];\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { CSSProperties, ReactNode } from 'react';\nimport { columnFactories } from './columns';\nimport { componentEntityColumns, systemEntityColumns } from './presets';\nimport {\n InfoCardVariants,\n Table,\n TableColumn,\n TableOptions,\n} from '@backstage/core-components';\n\n/**\n * Props for {@link EntityTable}.\n *\n * @public\n */\nexport interface EntityTableProps<T extends Entity> {\n title: string;\n variant?: InfoCardVariants;\n entities: T[];\n emptyContent?: ReactNode;\n columns: TableColumn<T>[];\n tableOptions?: TableOptions;\n}\n\nconst useStyles = makeStyles(theme => ({\n empty: {\n padding: theme.spacing(2),\n display: 'flex',\n justifyContent: 'center',\n },\n}));\n\n/**\n * A general entity table component, that can be used for composing more\n * specific entity tables.\n *\n * @public\n */\nexport const EntityTable = <T extends Entity>(props: EntityTableProps<T>) => {\n const {\n entities,\n title,\n emptyContent,\n variant = 'gridItem',\n columns,\n tableOptions = {},\n } = props;\n\n const classes = useStyles();\n const tableStyle: CSSProperties = {\n minWidth: '0',\n width: '100%',\n };\n\n if (variant === 'gridItem') {\n tableStyle.height = 'calc(100% - 10px)';\n }\n\n return (\n <Table<T>\n columns={columns}\n title={title}\n style={tableStyle}\n emptyContent={\n emptyContent && <div className={classes.empty}>{emptyContent}</div>\n }\n options={{\n // TODO: Toolbar padding if off compared to other cards, should be: padding: 16px 24px;\n search: false,\n paging: false,\n actionsColumnIndex: -1,\n padding: 'dense',\n draggable: false,\n ...tableOptions,\n }}\n data={entities}\n />\n );\n};\n\nEntityTable.columns = columnFactories;\n\nEntityTable.systemEntityColumns = systemEntityColumns;\n\nEntityTable.componentEntityColumns = componentEntityColumns;\n","/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport { catalogReactTranslationRef } from '../../translation';\n\n/**\n * @alpha\n */\nexport type EntityTableColumnTitleProps = {\n translationKey:\n | 'name'\n | 'system'\n | 'owner'\n | 'type'\n | 'lifecycle'\n | 'namespace'\n | 'description'\n | 'tags'\n | 'targets'\n | 'title'\n | 'label'\n | 'domain';\n};\n\n/**\n * @alpha\n */\nexport const EntityTableColumnTitle = ({\n translationKey,\n}: EntityTableColumnTitleProps) => {\n const { t } = useTranslationRef(catalogReactTranslationRef);\n return t(`entityTableColumnTitle.${translationKey}`);\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RELATION_DEPENDS_ON, ComponentEntity } from '@backstage/catalog-model';\nimport {\n InfoCardVariants,\n TableColumn,\n TableOptions,\n} from '@backstage/core-components';\nimport {\n asComponentEntities,\n componentEntityColumns,\n componentEntityHelpLink,\n RelatedEntitiesCard,\n} from '../RelatedEntitiesCard';\nimport { catalogTranslationRef } from '../../alpha/translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @public */\nexport interface DependsOnComponentsCardProps {\n variant?: InfoCardVariants;\n title?: string;\n columns?: TableColumn<ComponentEntity>[];\n tableOptions?: TableOptions;\n}\n\nexport function DependsOnComponentsCard(props: DependsOnComponentsCardProps) {\n const { t } = useTranslationRef(catalogTranslationRef);\n const {\n variant = 'gridItem',\n title = t('dependsOnComponentsCard.title'),\n columns = componentEntityColumns,\n tableOptions = {},\n } = props;\n return (\n <RelatedEntitiesCard\n variant={variant}\n title={title}\n entityKind=\"Component\"\n relationType={RELATION_DEPENDS_ON}\n columns={columns}\n emptyMessage={t('dependsOnComponentsCard.emptyMessage')}\n emptyHelpLink={componentEntityHelpLink}\n asRenderableEntities={asComponentEntities}\n tableOptions={tableOptions}\n />\n );\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity } from '@backstage/catalog-model';\nimport Typography from '@material-ui/core/Typography';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport {\n InfoCard,\n InfoCardVariants,\n Link,\n Progress,\n ResponseErrorPanel,\n TableColumn,\n TableOptions,\n} from '@backstage/core-components';\nimport {\n asComponentEntities,\n asDomainEntities,\n asResourceEntities,\n asSystemEntities,\n componentEntityColumns,\n componentEntityHelpLink,\n domainEntityColumns,\n domainEntityHelpLink,\n resourceEntityColumns,\n resourceEntityHelpLink,\n systemEntityColumns,\n systemEntityHelpLink,\n} from './presets';\nimport { catalogTranslationRef } from '../../alpha/translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @public */\nexport type RelatedEntitiesCardProps<T extends Entity> = {\n variant?: InfoCardVariants;\n title: string;\n columns: TableColumn<T>[];\n entityKind?: string;\n relationType: string;\n emptyMessage: string;\n emptyHelpLink: string;\n asRenderableEntities: (entities: Entity[]) => T[];\n tableOptions?: TableOptions;\n};\n\n/**\n * A low level card component that can be used as a building block for more\n * specific cards.\n *\n * @remarks\n *\n * You probably want to make a dedicated component for your needs, which renders\n * this card as its implementation with some of the props set to the appropriate\n * values.\n *\n * @public\n */\nexport const RelatedEntitiesCard = <T extends Entity>(\n props: RelatedEntitiesCardProps<T>,\n) => {\n const {\n variant = 'gridItem',\n title,\n columns,\n entityKind,\n relationType,\n emptyMessage,\n emptyHelpLink,\n asRenderableEntities,\n tableOptions = {},\n } = props;\n const { t } = useTranslationRef(catalogTranslationRef);\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: relationType,\n kind: entityKind,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title={title}>\n <Progress />\n </InfoCard>\n );\n }\n\n if (error) {\n return (\n <InfoCard variant={variant} title={title}>\n <ResponseErrorPanel error={error} />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title={title}\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">{emptyMessage}</Typography>\n <Typography variant=\"body2\">\n <Link to={emptyHelpLink} externalLinkIcon>\n {t('relatedEntitiesCard.emptyHelpLinkTitle')}\n </Link>\n </Typography>\n </div>\n }\n columns={columns}\n entities={asRenderableEntities(entities || [])}\n tableOptions={tableOptions}\n />\n );\n};\n\nRelatedEntitiesCard.componentEntityColumns = componentEntityColumns;\nRelatedEntitiesCard.componentEntityHelpLink = componentEntityHelpLink;\nRelatedEntitiesCard.asComponentEntities = asComponentEntities;\nRelatedEntitiesCard.resourceEntityColumns = resourceEntityColumns;\nRelatedEntitiesCard.resourceEntityHelpLink = resourceEntityHelpLink;\nRelatedEntitiesCard.asResourceEntities = asResourceEntities;\nRelatedEntitiesCard.systemEntityColumns = systemEntityColumns;\nRelatedEntitiesCard.systemEntityHelpLink = systemEntityHelpLink;\nRelatedEntitiesCard.asSystemEntities = asSystemEntities;\nRelatedEntitiesCard.domainEntityColums = domainEntityColumns;\nRelatedEntitiesCard.domainEntityHelpLink = domainEntityHelpLink;\nRelatedEntitiesCard.asDomainEntities = asDomainEntities;\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity, parseEntityRef } from '@backstage/catalog-model';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { catalogApiRef } from '../api';\n\n/**\n * Fetches all entities that appear in the entity's relations, optionally\n * filtered by relation type and kind.\n *\n * @public\n */\nexport function useRelatedEntities(\n entity: Entity,\n relationFilter: { type?: string; kind?: string },\n): {\n entities: Entity[] | undefined;\n loading: boolean;\n error: Error | undefined;\n} {\n const filterByTypeLower = relationFilter?.type?.toLocaleLowerCase('en-US');\n const filterByKindLower = relationFilter?.kind?.toLocaleLowerCase('en-US');\n const catalogApi = useApi(catalogApiRef);\n\n const {\n loading,\n value: entities,\n error,\n } = useAsync(async () => {\n const relations = entity.relations?.filter(\n r =>\n (!filterByTypeLower ||\n r.type.toLocaleLowerCase('en-US') === filterByTypeLower) &&\n (!filterByKindLower ||\n parseEntityRef(r.targetRef).kind === filterByKindLower),\n );\n\n if (!relations?.length) {\n return [];\n }\n\n const { items } = await catalogApi.getEntitiesByRefs({\n entityRefs: relations.map(r => r.targetRef),\n });\n\n return items.filter((x): x is Entity => Boolean(x));\n }, [entity, filterByTypeLower, filterByKindLower]);\n\n return {\n entities,\n loading,\n error,\n };\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ComponentEntity,\n DomainEntity,\n Entity,\n ResourceEntity,\n SystemEntity,\n} from '@backstage/catalog-model';\nimport { EntityTable } from '@backstage/plugin-catalog-react';\nimport { TableColumn } from '@backstage/core-components';\n\nexport const componentEntityColumns: TableColumn<ComponentEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'component' }),\n EntityTable.columns.createOwnerColumn(),\n EntityTable.columns.createSpecTypeColumn(),\n EntityTable.columns.createSpecLifecycleColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\nexport const componentEntityHelpLink: string =\n 'https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component';\nexport const asComponentEntities = (entities: Entity[]): ComponentEntity[] =>\n entities as ComponentEntity[];\n\nexport const resourceEntityColumns: TableColumn<ResourceEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'resource' }),\n EntityTable.columns.createOwnerColumn(),\n EntityTable.columns.createSpecTypeColumn(),\n EntityTable.columns.createSpecLifecycleColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\nexport const resourceEntityHelpLink: string =\n 'https://backstage.io/docs/features/software-catalog/descriptor-format#kind-resource';\nexport const asResourceEntities = (entities: Entity[]): ResourceEntity[] =>\n entities as ResourceEntity[];\n\nexport const systemEntityColumns: TableColumn<SystemEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'system' }),\n EntityTable.columns.createOwnerColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\nexport const systemEntityHelpLink: string =\n 'https://backstage.io/docs/features/software-catalog/descriptor-format#kind-system';\nexport const asSystemEntities = (entities: Entity[]): SystemEntity[] =>\n entities as SystemEntity[];\n\nexport const domainEntityColumns: TableColumn<DomainEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'domain' }),\n EntityTable.columns.createOwnerColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\nexport const domainEntityHelpLink: string =\n 'https://backstage.io/docs/features/software-catalog/descriptor-format#kind-domain';\nexport const asDomainEntities = (entities: Entity[]): DomainEntity[] =>\n entities as DomainEntity[];\n"],"names":["useStyles","makeStyles","line","OverflowTooltip","props","classes","Tooltip","Typography","theme","createStyles","SvgIcon","BootstrapInput","withStyles","InputBase","SelectComponent","multiple","items","label","placeholder","selected","onChange","triggerReset","native","disabled","margin","dataTestId","value","setValue","useState","isOpen","setOpen","useEffect","Box","FormControl","InputLabel","Select","event","previous","HTMLElement","s","selectedValue","item","el","Chip","CancelIcon","newValue","chip","OpenedDropdown","ClosedDropdown","MenuItem","Checkbox","useFilterStyles","Filters","onChangeFilters","t","useTranslationRef","coreComponentsTranslationRef","selectedFilters","setSelectedFilters","reset","Button","filter","TableLoadingBody","CircularProgress","tableIcons","forwardRef","ref","AddBox","Check","Clear","DeleteOutline","ChevronRight","Edit","SaveAlt","FilterList","FirstPage","LastPage","ChevronLeft","Search","ArrowUpward","Remove","ViewColumn","extractValueByField","data","field","path","i","undefined","StyledMTableHeader","MTableHeader","StyledMTableToolbar","MTableToolbar","useTableStyles","defaultInitialState","TableToolbar","toolbarProps","toolbarRef","setSearch","hasFilters","selectedFiltersLength","toggleFilters","filtersClasses","onSearchChanged","useCallback","searchText","IconButton","Table","filterConfig","dataValue","columns","emptyContent","options","title","subtitle","localization","filters","initialState","onStateChange","components","loading","style","restProps","tableClasses","useTheme","calculatedInitialState","filtersOpen","setFiltersOpen","v","search","state","transform","result","key","isEqual","defaultState","getFieldByTitle","titleValue","tableData","useMemo","selectedFiltersArray","Object","filterValue","fieldValue","Array","Toolbar","hasNoRows","columnCount","Body","makeBody","bodyProps","MTableBody","distinctValues","addValue","Set","c","MTable","column","headerStyle","cellStyle","cellStyleFn","rowData","rowColumn","humanizeEntityRef","entityRef","opts","kind","namespace","name","defaultKind","DEFAULT_NAMESPACE","humanizeEntity","entity","defaultName","get","columnFactories","formatContent","EntityTableColumnTitle","entity1","entity2","EntityRefLink","relation","entityFilter","getRelations","getEntityRelations","r","EntityRefLinks","RELATION_OWNED_BY","RELATION_PART_OF","systemEntityColumns","componentEntityColumns","EntityTable","entities","variant","tableOptions","tableStyle","translationKey","catalogReactTranslationRef","DependsOnComponentsCard","catalogTranslationRef","RelatedEntitiesCard","RELATION_DEPENDS_ON","componentEntityHelpLink","asComponentEntities","entityKind","relationType","emptyMessage","emptyHelpLink","asRenderableEntities","useEntity","error","useRelatedEntities","relationFilter","filterByTypeLower","filterByKindLower","catalogApi","useApi","catalogApiRef","useAsync","relations","parseEntityRef","x","Boolean","InfoCard","Progress","ResponseErrorPanel","Link","resourceEntityColumns","resourceEntityHelpLink","asResourceEntities","systemEntityHelpLink","asSystemEntities","domainEntityColumns","domainEntityHelpLink","asDomainEntities"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["1994"],{98557(e,t,a){a.d(t,{M:()=>s});var l=a(31085),n=a(58837),r=a(71677),o=a(72501);let i=(0,n.A)({container:{overflow:"visible !important"},typo:{fontSize:"inherit",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box","-webkit-line-clamp":({line:e})=>e||1,"-webkit-box-orient":"vertical"}},{name:"BackstageOverflowTooltip"});function s(e){let t=i(e);return(0,l.jsx)(r.Ay,{title:e.title??(e.text||""),placement:e.placement,classes:e.tooltipClasses,children:(0,l.jsx)(o.A,{className:t.typo,variant:"inherit",children:e.text})})}},48266(e,t,a){a.d(t,{w:()=>S});var l=a(31085),n=a(77125),r=a(98552),o=a(94390),i=a(95061),s=a(41857),c=a(48543),d=a(26343),p=a(99489),f=a(7031),u=a(99703),m=a(58837),h=a(72501),y=a(92399),g=a(14041),x=a(10437);let b=(0,m.A)(e=>(0,u.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageClosedDropdown"}),j=()=>{let e=b();return(0,l.jsx)(x.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,l.jsx)("path",{d:"M7.5 8L6 9.5L12.0703 15.5703L18.1406 9.5L16.6406 8L12.0703 12.5703L7.5 8Z",fill:"currentColor"})})},C=(0,m.A)(e=>(0,u.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageOpenedDropdown"}),v=()=>{let e=C();return(0,l.jsx)(x.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,l.jsx)("path",{d:"M16.5 16L18 14.5L11.9297 8.42969L5.85938 14.5L7.35938 16L11.9297 11.4297L16.5 16Z",fill:"currentColor"})})},w=(0,f.A)(e=>(0,u.A)({root:{"label + &":{marginTop:e.spacing(3)},"&.Mui-focused > div[role=button]":{borderColor:e.palette.primary.main}},input:{borderRadius:e.shape.borderRadius,position:"relative",backgroundColor:e.palette.background.paper,border:"1px solid #ced4da",fontSize:e.typography.body1.fontSize,padding:e.spacing(1.25,3.25,1.25,1.5),transition:e.transitions.create(["border-color","box-shadow"]),"&:focus":{background:e.palette.background.paper,borderRadius:e.shape.borderRadius}}}),{name:"BackstageSelectInputBase"})(s.A),A=(0,m.A)(e=>(0,u.A)({formControl:{margin:e.spacing(1,0)},label:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},formLabel:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:2},checkbox:{},root:{display:"flex",flexDirection:"column"}}),{name:"BackstageSelect"});function S(e){let{multiple:t,items:a,label:s,placeholder:f,selected:u,onChange:m,triggerReset:x,native:b=!1,disabled:C=!1,margin:S,"data-testid":k="select"}=e,R=A(),[E,L]=(0,g.useState)(u||(t?[]:"")),[T,O]=(0,g.useState)(!1);return(0,g.useEffect)(()=>{L(t?[]:"")},[x,t]),(0,g.useEffect)(()=>{L(u||(t?[]:""))},[u,t]),(0,l.jsx)(n.A,{className:R.root,children:(0,l.jsxs)(i.A,{className:R.formControl,children:[(0,l.jsx)(c.A,{className:R.formLabel,children:s}),(0,l.jsxs)(p.A,{"aria-label":s,value:E,native:b,disabled:C,"data-testid":k,displayEmpty:!0,multiple:t,margin:S,onChange:e=>{L(e.target.value),m(e.target.value)},open:T,onOpen:e=>{C?e.preventDefault():O(a=>!(!t||e.target instanceof HTMLElement)||!a)},onClose:()=>{O(!1)},input:(0,l.jsx)(w,{}),label:s,renderValue:e=>t&&0!==E.length?(0,l.jsx)(n.A,{className:R.chips,children:e.map(e=>{let t=a.find(t=>t.value===e);return!!t&&(0,l.jsx)(o.A,{"data-testid":"chip",label:t?.label,clickable:!0,deleteIcon:(0,l.jsx)(y.default,{"data-testid":"cancel-icon",onMouseDown:e=>e.stopPropagation()}),onDelete:()=>{let t=E.filter(t=>t!==e);L(t),m(t)},className:R.chip},t?.value)})}):(0,l.jsx)(h.A,{children:0===E.length?f||"":a.find(t=>t.value===e)?.label}),IconComponent:()=>T?(0,l.jsx)(v,{}):(0,l.jsx)(j,{}),MenuProps:{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},getContentAnchorEl:null},children:[!!f&&!t&&(0,l.jsx)(d.A,{value:[],children:f}),b?a&&a.map(e=>(0,l.jsx)("option",{value:e.value,children:e.label},e.value)):a&&a.map(e=>(0,l.jsxs)(d.A,{value:e.value,children:[t&&(0,l.jsx)(r.A,{color:"primary",checked:E.includes(e.value)||!1,className:R.checkbox}),e.label]},e.value))]})]})})}},28499(e,t,a){a.d(t,{X:()=>U});var l=a(31085),n=a(89595),r=a(25301),o=a(77125),i=a(29365),s=a(7031),c=a(58837),d=a(54917),p=a(72501),f=a(83313),u=a(89019),m=a(62461),h=a(68887),y=a(63798),g=a(64704),x=a(6774),b=a(75625),j=a(65859),C=a(45917),v=a(5416),w=a(33494),A=a(80113),S=a(26229),k=a(46802),R=a(45250),E=a(14041),L=a(89332),T=a(64947),O=a(48266);let M=(0,c.A)(e=>({root:{height:"100%",width:"315px",display:"flex",flexDirection:"column",marginRight:e.spacing(3)},value:{fontWeight:"bold",fontSize:18},header:{display:"flex",alignItems:"center",height:e.spacing(7.5),justifyContent:"space-between",borderBottom:`1px solid ${e.palette.grey[500]}`},filters:{display:"flex",flexDirection:"column","& > *":{marginTop:e.spacing(2)}}}),{name:"BackstageTableFilters"}),D=e=>{let t=M(),{onChangeFilters:a}=e,{t:r}=(0,n.i)(L.O),[i,s]=(0,E.useState)({...e.selectedFilters}),[c,d]=(0,E.useState)(!1);return(0,E.useEffect)(()=>{a(i)},[i,a]),(0,l.jsxs)(o.A,{className:t.root,children:[(0,l.jsxs)(o.A,{className:t.header,children:[(0,l.jsx)(o.A,{className:t.value,children:r("table.filter.title")}),(0,l.jsx)(T.A,{color:"primary",onClick:()=>{s({}),d(e=>!e)},children:r("table.filter.clearAll")})]}),(0,l.jsx)(o.A,{className:t.filters,children:e.filters?.length&&e.filters.map(e=>(0,l.jsx)(O.w,{triggerReset:c,...e.element,selected:i[e.element.label],onChange:t=>s({...i,[e.element.label]:t})},e.element.label))})]})};var N=a(78467);function B(e){return(0,l.jsx)("tbody",{"data-testid":"loading-indicator",children:(0,l.jsx)("tr",{children:(0,l.jsx)("td",{colSpan:e.colSpan,children:(0,l.jsx)(o.A,{sx:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",minHeight:"15rem"},children:(0,l.jsx)(N.A,{size:"5rem"})})})})})}let z={Add:(0,E.forwardRef)((e,t)=>(0,l.jsx)(f.default,{...e,ref:t})),Check:(0,E.forwardRef)((e,t)=>(0,l.jsx)(m.default,{...e,ref:t})),Clear:(0,E.forwardRef)((e,t)=>(0,l.jsx)(g.default,{...e,ref:t})),Delete:(0,E.forwardRef)((e,t)=>(0,l.jsx)(x.default,{...e,ref:t})),DetailPanel:(0,E.forwardRef)((e,t)=>(0,l.jsx)(y.default,{...e,ref:t})),Edit:(0,E.forwardRef)((e,t)=>(0,l.jsx)(b.default,{...e,ref:t})),Export:(0,E.forwardRef)((e,t)=>(0,l.jsx)(S.default,{...e,ref:t})),Filter:(0,E.forwardRef)((e,t)=>(0,l.jsx)(j.default,{...e,ref:t})),FirstPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(v.default,{...e,ref:t})),LastPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(w.default,{...e,ref:t})),NextPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(y.default,{...e,ref:t})),PreviousPage:(0,E.forwardRef)((e,t)=>(0,l.jsx)(h.default,{...e,ref:t})),ResetSearch:(0,E.forwardRef)((e,t)=>(0,l.jsx)(g.default,{...e,ref:t})),Search:(0,E.forwardRef)((e,t)=>(0,l.jsx)(C.default,{...e,ref:t})),SortArrow:(0,E.forwardRef)((e,t)=>(0,l.jsx)(u.default,{...e,ref:t})),ThirdStateCheck:(0,E.forwardRef)((e,t)=>(0,l.jsx)(A.default,{...e,ref:t})),ViewColumn:(0,E.forwardRef)((e,t)=>(0,l.jsx)(k.default,{...e,ref:t}))};function K(e,t){let a=t.split("."),l=e[a[0]];for(let e=1;e<a.length&&void 0!==l;++e)l=l[a[e]];return l}let W=(0,s.A)(e=>({header:{padding:e.spacing(1,2,1,2.5),borderTop:`1px solid ${e.palette.grey.A100}`,borderBottom:`1px solid ${e.palette.grey.A100}`,fontWeight:e.typography.fontWeightBold,position:"static",wordBreak:"normal",textTransform:"uppercase"}}),{name:"BackstageTableHeader"})(r.MTableHeader),F=(0,s.A)(e=>({root:{padding:e.spacing(3,0,2.5,2.5)},title:{"& > h6":{fontWeight:e.typography.fontWeightBold}},searchField:{paddingRight:e.spacing(2)}}),{name:"BackstageTableToolbar"})(r.MTableToolbar),I=(0,c.A)(e=>({root:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap"},filterControls:{display:"flex",alignItems:"center"},title:{fontWeight:e.typography.fontWeightBold,fontSize:18,whiteSpace:"nowrap"}}),{name:"BackstageTableFiltersContainer"}),H=(0,c.A)(()=>({root:{display:"flex",alignItems:"start"}}),{name:"BackstageTable"}),P={search:"",filtersOpen:!1,filters:{}};function $(e){let{toolbarRef:t,setSearch:a,hasFilters:r,selectedFiltersLength:s,toggleFilters:c}=e,{t:d}=(0,n.i)(L.O),f=I(),u=(0,E.useCallback)(t=>{e.onSearchChanged(t),a(t)},[e,a]);return r?(0,l.jsxs)(o.A,{className:f.root,children:[(0,l.jsxs)(o.A,{className:f.filterControls,children:[(0,l.jsx)(i.A,{onClick:c,"aria-label":"filter list",children:(0,l.jsx)(j.default,{})}),(0,l.jsxs)(p.A,{className:f.title,children:[d("table.filter.title")," (",s,")"]})]}),(0,l.jsx)(F,{...e,ref:t,onSearchChanged:u})]}):(0,l.jsx)(F,{...e,ref:t,onSearchChanged:u})}function U(e){var t,a,i,s;let{data:c,columns:f,emptyContent:u,options:m,title:h,subtitle:y,localization:g,filters:x,initialState:b,onStateChange:j,components:C,isLoading:v,style:w,...A}=e,{t:S}=(0,n.i)(L.O),k=H(),T=(0,d.A)(),O={...P,...b},[M,N]=(0,E.useState)(O.filtersOpen),F=(0,E.useCallback)(()=>N(e=>!e),[N]),[I,U]=(0,E.useState)(O.filters),[_,Q]=(0,E.useState)(O.search);(0,E.useEffect)(()=>{if(j){var e;j((e={search:_,filtersOpen:M,filters:I},(0,R.transform)(e,(e,t,a)=>{(0,R.isEqual)(t,P[a])||(e[a]=t)})))}},[_,M,I,j]);let X=(0,E.useCallback)(e=>f.find(t=>t.title===e)?.field,[f]),J=(0,E.useMemo)(()=>{if("function"==typeof c||!I)return c;let e=Object.values(I);return c&&e.flat().length?c.filter(e=>!!Object.entries(I).filter(([,e])=>!!e.length).every(([t,a])=>{let l=K(e,X(t));return Array.isArray(l)&&Array.isArray(a)?l.some(e=>a.includes(e)):Array.isArray(l)?l.includes(a):Array.isArray(a)?a.includes(l):l===a})):c},[c,I,X]),Z=Object.values(I).flat().length,V=!!x?.length,q=(0,E.useCallback)(e=>(0,l.jsx)($,{setSearch:Q,hasFilters:V,selectedFiltersLength:Z,toggleFilters:F,...e}),[F,V,Z,Q]),G="function"!=typeof c&&0===c.length,Y=f.length,ee=(0,E.useMemo)(()=>(function({columnCount:e,emptyContent:t,hasNoRows:a,loading:n}){return o=>n?(0,l.jsx)(B,{colSpan:e}):t&&a?(0,l.jsx)("tbody",{children:(0,l.jsx)("tr",{children:(0,l.jsx)("td",{colSpan:e,children:t})})}):(0,l.jsx)(r.MTableBody,{...o})})({hasNoRows:G,emptyContent:u,columnCount:Y,loading:v}),[G,u,Y,v]);return(0,l.jsxs)(o.A,{className:k.root,children:[M&&c&&"function"!=typeof c&&x?.length&&(0,l.jsx)(D,{filters:(t=x,a=c,i=f,s=S,t.map(e=>{var t;let l,n;return{type:e.type,element:{placeholder:s("table.filter.placeholder"),label:e.column,multiple:"multiple-select"===e.type,items:[...(t=e.column,l=new Set,n=e=>{null!=e&&l.add(e)},a&&a.forEach(e=>{let a=K(e,i.find(e=>e.title===t)?.field);Array.isArray(a)?a.forEach(n):n(a)}),l)].sort().map(e=>({label:e,value:e}))}}})),selectedFilters:I,onChangeFilters:U}),(0,l.jsx)(r.default,{components:{Header:W,Body:ee,Toolbar:q,...C},options:m,columns:f.map(e=>{let t=e.headerStyle??{},a=e.cellStyle||{};if(e.highlight)if(t.color=T.palette.textContrast,"object"==typeof a)a.fontWeight=T.typography.fontWeightBold;else{let e=a;a=(t,a,l)=>({...e(t,a,l),fontWeight:T.typography.fontWeightBold})}return{...e,headerStyle:t,cellStyle:a}}),icons:z,title:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(p.A,{variant:"h5",component:"h2",children:h}),y&&(0,l.jsx)(p.A,{color:"textSecondary",variant:"body1",children:y})]}),data:J,style:{width:"100%",...w},localization:{...g,body:{emptyDataSourceMessage:S("table.body.emptyDataSourceMessage"),...g?.body},pagination:{firstTooltip:S("table.pagination.firstTooltip"),labelDisplayedRows:S("table.pagination.labelDisplayedRows"),labelRowsSelect:S("table.pagination.labelRowsSelect"),lastTooltip:S("table.pagination.lastTooltip"),nextTooltip:S("table.pagination.nextTooltip"),previousTooltip:S("table.pagination.previousTooltip"),...g?.pagination},header:{actions:S("table.header.actions"),...g?.header},toolbar:{searchPlaceholder:S("table.toolbar.search"),searchTooltip:S("table.toolbar.search"),...g?.toolbar}},...A})]})}U.icons=Object.freeze(z)},7537(e,t,a){a.d(t,{S:()=>o,Z:()=>i});var l=a(11773),n=a(46123),r=a.n(n);function o(e,t){let a,n,r,o=t?.defaultKind;return"metadata"in e?(a=e.kind,n=e.metadata.namespace,r=e.metadata.name):(a=e.kind,n=e.namespace,r=e.name),(void 0===n||""===n)&&(n=l.oQ),t?.defaultNamespace!==void 0?t?.defaultNamespace===n&&(n=void 0):n===l.oQ&&(n=void 0),a=a.toLocaleLowerCase("en-US"),a=o&&o.toLocaleLowerCase("en-US")===a?void 0:a,`${a?`${a}:`:""}${n?`${n}/`:""}${r}`}function i(e,t){for(let t of["spec.profile.displayName","metadata.title"]){let a=r()(e,t);if(a&&"string"==typeof a)return a}return t}},65671(e,t,a){a.d(t,{s:()=>g});var l=a(31085),n=a(58837),r=a(96403),o=a(98557),i=a(53320),s=a(7537),c=a(3438),d=a(53987),p=a(19857);let f=Object.freeze({createEntityRefColumn(e){let{defaultKind:t}=e;function a(e){return e.metadata?.title||(0,s.S)(e,{defaultKind:t})}return{title:(0,l.jsx)(p.g,{translationKey:"name"}),highlight:!0,customFilterAndSearch:(e,t)=>a(t).includes(e),customSort:(e,t)=>a(e).localeCompare(a(t)),render:e=>(0,l.jsx)(c.z,{entityRef:e,defaultKind:t,title:e.metadata?.title})}},createEntityRelationColumn(e){let{title:t,relation:a,defaultKind:n,filter:r}=e;function o(e){return(0,i.t)(e,a,r)}function c(e){return o(e).map(e=>(0,s.S)(e,{defaultKind:n})).join(", ")}return{title:t,customFilterAndSearch:(e,t)=>c(t).includes(e),customSort:(e,t)=>c(e).localeCompare(c(t)),render:e=>(0,l.jsx)(d.i,{entityRefs:o(e),defaultKind:n})}},createOwnerColumn(){return this.createEntityRelationColumn({title:(0,l.jsx)(p.g,{translationKey:"owner"}),relation:r.vv,defaultKind:"group"})},createDomainColumn(){return this.createEntityRelationColumn({title:(0,l.jsx)(p.g,{translationKey:"domain"}),relation:"partOf",defaultKind:"domain",filter:{kind:"domain"}})},createSystemColumn(){return this.createEntityRelationColumn({title:(0,l.jsx)(p.g,{translationKey:"system"}),relation:"partOf",defaultKind:"system",filter:{kind:"system"}})},createMetadataDescriptionColumn:()=>({title:(0,l.jsx)(p.g,{translationKey:"description"}),field:"metadata.description",render:e=>(0,l.jsx)(o.M,{text:e.metadata.description,placement:"bottom-start",line:2})}),createSpecLifecycleColumn:()=>({title:(0,l.jsx)(p.g,{translationKey:"lifecycle"}),field:"spec.lifecycle"}),createSpecTypeColumn:()=>({title:(0,l.jsx)(p.g,{translationKey:"type"}),field:"spec.type"})}),u=[f.createEntityRefColumn({defaultKind:"system"}),f.createDomainColumn(),f.createOwnerColumn(),f.createMetadataDescriptionColumn()],m=[f.createEntityRefColumn({defaultKind:"component"}),f.createSystemColumn(),f.createOwnerColumn(),f.createSpecTypeColumn(),f.createSpecLifecycleColumn(),f.createMetadataDescriptionColumn()];var h=a(28499);let y=(0,n.A)(e=>({empty:{padding:e.spacing(2),display:"flex",justifyContent:"center"}})),g=e=>{let{entities:t,title:a,emptyContent:n,variant:r="gridItem",columns:o,tableOptions:i={}}=e,s=y(),c={minWidth:"0",width:"100%"};return"gridItem"===r&&(c.height="calc(100% - 10px)"),(0,l.jsx)(h.X,{columns:o,title:a,style:c,emptyContent:n&&(0,l.jsx)("div",{className:s.empty,children:n}),options:{search:!1,paging:!1,actionsColumnIndex:-1,padding:"dense",draggable:!1,...i},data:t})};g.columns=f,g.systemEntityColumns=u,g.componentEntityColumns=m},19857(e,t,a){a.d(t,{g:()=>r});var l=a(89595),n=a(79811);let r=({translationKey:e})=>{let{t}=(0,l.i)(n.j);return t(`entityTableColumnTitle.${e}`)}},385(e,t,a){a.d(t,{HasSubcomponentsCard:()=>c});var l=a(31085),n=a(96403),r=a(79842),o=a(64334),i=a(50010),s=a(89595);function c(e){let{t}=(0,s.i)(i.W),{variant:a="gridItem",title:c=t("hasSubcomponentsCard.title"),columns:d=r.mz,tableOptions:p={},kind:f="Component"}=e;return(0,l.jsx)(o.p,{variant:a,title:c,entityKind:f,relationType:n.sA,columns:d,asRenderableEntities:r.xJ,emptyMessage:t("hasSubcomponentsCard.emptyMessage"),emptyHelpLink:"https://backstage.io/docs/features/software-catalog/descriptor-format#specsubcomponentof-optional",tableOptions:p})}},64334(e,t,a){a.d(t,{p:()=>x});var l=a(31085),n=a(72501),r=a(22845),o=a(58077),i=a(50509),s=a(73466),c=a(76272),d=a(65671),p=a(89439),f=a(55489),u=a(97673),m=a(60603),h=a(79842),y=a(50010),g=a(89595);let x=e=>{let{variant:t="gridItem",title:a,columns:h,entityKind:x,relationType:b,emptyMessage:j,emptyHelpLink:C,asRenderableEntities:v,tableOptions:w={}}=e,{t:A}=(0,g.i)(y.W),{entity:S}=(0,r.tN)(),{entities:k,loading:R,error:E}=function(e,t){let a=t?.type?.toLocaleLowerCase("en-US"),l=t?.kind?.toLocaleLowerCase("en-US"),n=(0,i.gf)(c.v),{loading:r,value:d,error:p}=(0,s.A)(async()=>{let t=e.relations?.filter(e=>(!a||e.type.toLocaleLowerCase("en-US")===a)&&(!l||(0,o.KU)(e.targetRef).kind===l));if(!t?.length)return[];let{items:r}=await n.getEntitiesByRefs({entityRefs:t.map(e=>e.targetRef)});return r.filter(e=>!!e)},[e,a,l]);return{entities:d,loading:r,error:p}}(S,{type:b,kind:x});return R?(0,l.jsx)(p.n,{variant:t,title:a,children:(0,l.jsx)(f.k,{})}):E?(0,l.jsx)(p.n,{variant:t,title:a,children:(0,l.jsx)(u._,{error:E})}):(0,l.jsx)(d.s,{title:a,variant:t,emptyContent:(0,l.jsxs)("div",{style:{textAlign:"center"},children:[(0,l.jsx)(n.A,{variant:"body1",children:j}),(0,l.jsx)(n.A,{variant:"body2",children:(0,l.jsx)(m.N_,{to:C,externalLinkIcon:!0,children:A("relatedEntitiesCard.emptyHelpLinkTitle")})})]}),columns:h,entities:v(k||[]),tableOptions:w})};x.componentEntityColumns=h.mz,x.componentEntityHelpLink=h.e2,x.asComponentEntities=h.xJ,x.resourceEntityColumns=h.v9,x.resourceEntityHelpLink=h.nz,x.asResourceEntities=h.eB,x.systemEntityColumns=h.MW,x.systemEntityHelpLink=h.iU,x.asSystemEntities=h.vy,x.domainEntityColums=h.xO,x.domainEntityHelpLink=h.Xr,x.asDomainEntities=h.QS},79842(e,t,a){a.d(t,{MW:()=>d,QS:()=>h,Xr:()=>m,e2:()=>r,eB:()=>c,iU:()=>p,mz:()=>n,nz:()=>s,v9:()=>i,vy:()=>f,xJ:()=>o,xO:()=>u});var l=a(65671);let n=[l.s.columns.createEntityRefColumn({defaultKind:"component"}),l.s.columns.createOwnerColumn(),l.s.columns.createSpecTypeColumn(),l.s.columns.createSpecLifecycleColumn(),l.s.columns.createMetadataDescriptionColumn()],r="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component",o=e=>e,i=[l.s.columns.createEntityRefColumn({defaultKind:"resource"}),l.s.columns.createOwnerColumn(),l.s.columns.createSpecTypeColumn(),l.s.columns.createSpecLifecycleColumn(),l.s.columns.createMetadataDescriptionColumn()],s="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-resource",c=e=>e,d=[l.s.columns.createEntityRefColumn({defaultKind:"system"}),l.s.columns.createOwnerColumn(),l.s.columns.createMetadataDescriptionColumn()],p="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-system",f=e=>e,u=[l.s.columns.createEntityRefColumn({defaultKind:"domain"}),l.s.columns.createOwnerColumn(),l.s.columns.createMetadataDescriptionColumn()],m="https://backstage.io/docs/features/software-catalog/descriptor-format#kind-domain",h=e=>e}}]);
2
+ //# sourceMappingURL=1994.b0275d73.chunk.js.map