@techdocs/cli 1.11.3-next.0 → 1.11.4-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/embedded-app/.config-schema.json +135 -135
- package/dist/embedded-app/index.html +1 -1
- package/dist/embedded-app/index.html.tmpl +1 -1
- package/dist/embedded-app/static/{1134.7002acb7fabf.chunk.js → 1134.cdfeb48e4304.chunk.js} +2 -2
- package/dist/embedded-app/static/1134.cdfeb48e4304.chunk.js.map +1 -0
- package/dist/embedded-app/static/{123.c5259eb3ae0f.chunk.js → 123.df642f43e1b7.chunk.js} +2 -2
- package/dist/embedded-app/static/{123.c5259eb3ae0f.chunk.js.map → 123.df642f43e1b7.chunk.js.map} +1 -1
- package/dist/embedded-app/static/{1659.11628d2e4d1f.chunk.js → 1659.9cbefa92c50c.chunk.js} +2 -2
- package/dist/embedded-app/static/{1659.11628d2e4d1f.chunk.js.map → 1659.9cbefa92c50c.chunk.js.map} +1 -1
- package/dist/embedded-app/static/1749.1749.f1e52866fde8.css +2 -0
- package/dist/embedded-app/static/1749.1749.f1e52866fde8.css.map +1 -0
- package/dist/embedded-app/static/{1749.88362feb3025.chunk.js → 1749.394891dd41c4.chunk.js} +2 -2
- package/dist/embedded-app/static/1749.394891dd41c4.chunk.js.map +1 -0
- package/dist/embedded-app/static/1994.1994.c8a808c82256.css +2 -0
- package/dist/embedded-app/static/1994.1994.c8a808c82256.css.map +1 -0
- package/dist/embedded-app/static/{1994.9aa1aebaec2f.chunk.js → 1994.ce12f4925d69.chunk.js} +2 -2
- package/dist/embedded-app/static/1994.ce12f4925d69.chunk.js.map +1 -0
- package/dist/embedded-app/static/2295.2295.b10db3437a0d.css +2 -0
- package/dist/embedded-app/static/2295.2295.b10db3437a0d.css.map +1 -0
- package/dist/embedded-app/static/{2295.028515e97333.chunk.js → 2295.bd092e56f0ef.chunk.js} +2 -2
- package/dist/embedded-app/static/2295.bd092e56f0ef.chunk.js.map +1 -0
- package/dist/embedded-app/static/3554.668a16659089.chunk.js +2 -0
- package/dist/embedded-app/static/3554.668a16659089.chunk.js.map +1 -0
- package/dist/embedded-app/static/3641.3641.31a0d09d7696.css +2 -0
- package/dist/embedded-app/static/3641.3641.31a0d09d7696.css.map +1 -0
- package/dist/embedded-app/static/{7213.e2116c7254ff.chunk.js → 4424.e6c1b7a79f04.chunk.js} +2 -2
- package/dist/embedded-app/static/4424.e6c1b7a79f04.chunk.js.map +1 -0
- package/dist/embedded-app/static/{4587.a191f5a61b82.chunk.js → 4587.8eeab8ace676.chunk.js} +2 -2
- package/dist/embedded-app/static/{4587.a191f5a61b82.chunk.js.map → 4587.8eeab8ace676.chunk.js.map} +1 -1
- package/dist/embedded-app/static/{4648.6f92a6abe9a6.chunk.js → 4648.0bebf8f79ceb.chunk.js} +2 -2
- package/dist/embedded-app/static/4648.0bebf8f79ceb.chunk.js.map +1 -0
- package/dist/embedded-app/static/4648.4648.4376d69d78da.css +2 -0
- package/dist/embedded-app/static/4648.4648.4376d69d78da.css.map +1 -0
- package/dist/embedded-app/static/4923.4e90c656282c.chunk.js +2 -0
- package/dist/embedded-app/static/4923.4e90c656282c.chunk.js.map +1 -0
- package/dist/embedded-app/static/5443.5443.a6e5d7296ae2.css +2 -0
- package/dist/embedded-app/static/5443.5443.a6e5d7296ae2.css.map +1 -0
- package/dist/embedded-app/static/5443.fda3da6e0bdf.chunk.js +4 -0
- package/dist/embedded-app/static/5443.fda3da6e0bdf.chunk.js.map +1 -0
- package/dist/embedded-app/static/5588.e2ec3ec3c5bd.chunk.js +2 -0
- package/dist/embedded-app/static/5588.e2ec3ec3c5bd.chunk.js.map +1 -0
- package/dist/embedded-app/static/5954.5954.bc79fc02c36b.css +2 -0
- package/dist/embedded-app/static/5954.5954.bc79fc02c36b.css.map +1 -0
- package/dist/embedded-app/static/6138.6138.2e8a01c3efec.css +2 -0
- package/dist/embedded-app/static/6138.6138.2e8a01c3efec.css.map +1 -0
- package/dist/embedded-app/static/{6138.1ca1ddf4e4b2.chunk.js → 6138.a951e080b130.chunk.js} +2 -2
- package/dist/embedded-app/static/6138.a951e080b130.chunk.js.map +1 -0
- package/dist/embedded-app/static/{7203.b379d4185674.chunk.js → 7203.6ebb34977a20.chunk.js} +2 -2
- package/dist/embedded-app/static/7203.6ebb34977a20.chunk.js.map +1 -0
- package/dist/embedded-app/static/7203.7203.b0bf7f390ce4.css +2 -0
- package/dist/embedded-app/static/7203.7203.b0bf7f390ce4.css.map +1 -0
- package/dist/embedded-app/static/7632.3917bed33d55.chunk.js +2 -0
- package/dist/embedded-app/static/7632.3917bed33d55.chunk.js.map +1 -0
- package/dist/embedded-app/static/{7998.b43c307e32d8.chunk.js → 7998.75a90b89c056.chunk.js} +2 -2
- package/dist/embedded-app/static/7998.75a90b89c056.chunk.js.map +1 -0
- package/dist/embedded-app/static/8461.4717852d60f5.chunk.js +10 -0
- package/dist/embedded-app/static/8461.4717852d60f5.chunk.js.map +1 -0
- package/dist/embedded-app/static/8877.0989174775b0.chunk.js +2 -0
- package/dist/embedded-app/static/8877.0989174775b0.chunk.js.map +1 -0
- package/dist/embedded-app/static/9050.9050.c05c30bb4f66.css +2 -0
- package/dist/embedded-app/static/9050.9050.c05c30bb4f66.css.map +1 -0
- package/dist/embedded-app/static/{9050.a4c1629cc066.chunk.js → 9050.9efb03adbf42.chunk.js} +2 -2
- package/dist/embedded-app/static/9050.9efb03adbf42.chunk.js.map +1 -0
- package/dist/embedded-app/static/{9230.9bee58f48b03.chunk.js → 9230.61a7bb55bac3.chunk.js} +2 -2
- package/dist/embedded-app/static/9230.61a7bb55bac3.chunk.js.map +1 -0
- package/dist/embedded-app/static/9230.9230.1b44dddc81d5.css +2 -0
- package/dist/embedded-app/static/9230.9230.1b44dddc81d5.css.map +1 -0
- package/dist/embedded-app/static/main.04e1082fbc34.css +2 -0
- package/dist/embedded-app/static/main.04e1082fbc34.css.map +1 -0
- package/dist/embedded-app/static/main.a0b20bdb910f.js +523 -0
- package/dist/embedded-app/static/main.a0b20bdb910f.js.map +1 -0
- package/dist/embedded-app/static/module-dompurify.2a1a57d1bb7d.js +2 -0
- package/dist/embedded-app/static/module-dompurify.2a1a57d1bb7d.js.map +1 -0
- package/dist/embedded-app/static/{module-zod.bc4245f82c69.js → module-zod.c13f6fd98701.js} +2 -2
- package/dist/embedded-app/static/{module-zod.bc4245f82c69.js.map → module-zod.c13f6fd98701.js.map} +1 -1
- package/dist/embedded-app/static/{runtime.6b5e92c67af9.js → runtime.9fe16c2b0327.js} +2 -2
- package/dist/embedded-app/static/{runtime.6b5e92c67af9.js.map → runtime.9fe16c2b0327.js.map} +1 -1
- package/dist/embedded-app/static/{vendor.b20c39624bca.js → vendor.12fa41368f4c.js} +4 -8
- package/dist/embedded-app/static/vendor.12fa41368f4c.js.map +1 -0
- package/dist/lib/mkdocsServer.cjs.js +2 -0
- package/dist/lib/mkdocsServer.cjs.js.map +1 -1
- package/dist/package.json.cjs.js +1 -1
- package/package.json +5 -5
- package/dist/embedded-app/static/1134.7002acb7fabf.chunk.js.map +0 -1
- package/dist/embedded-app/static/1749.1749.0ed282b2400c.css +0 -2
- package/dist/embedded-app/static/1749.1749.0ed282b2400c.css.map +0 -1
- package/dist/embedded-app/static/1749.88362feb3025.chunk.js.map +0 -1
- package/dist/embedded-app/static/1994.1994.e10220c536b1.css +0 -2
- package/dist/embedded-app/static/1994.1994.e10220c536b1.css.map +0 -1
- package/dist/embedded-app/static/1994.9aa1aebaec2f.chunk.js.map +0 -1
- package/dist/embedded-app/static/2295.028515e97333.chunk.js.map +0 -1
- package/dist/embedded-app/static/2295.2295.23bcabf398d2.css +0 -2
- package/dist/embedded-app/static/2295.2295.23bcabf398d2.css.map +0 -1
- package/dist/embedded-app/static/3554.d76a6182d04f.chunk.js +0 -2
- package/dist/embedded-app/static/3554.d76a6182d04f.chunk.js.map +0 -1
- package/dist/embedded-app/static/3641.3641.4b26282c57d7.css +0 -2
- package/dist/embedded-app/static/3641.3641.4b26282c57d7.css.map +0 -1
- package/dist/embedded-app/static/4400.ad9c19b09cbe.chunk.js +0 -2
- package/dist/embedded-app/static/4400.ad9c19b09cbe.chunk.js.map +0 -1
- package/dist/embedded-app/static/4648.4648.580b4d75b06d.css +0 -2
- package/dist/embedded-app/static/4648.4648.580b4d75b06d.css.map +0 -1
- package/dist/embedded-app/static/4648.6f92a6abe9a6.chunk.js.map +0 -1
- package/dist/embedded-app/static/5443.5443.804cbe3e4731.css +0 -2
- package/dist/embedded-app/static/5443.5443.804cbe3e4731.css.map +0 -1
- package/dist/embedded-app/static/5443.ca89276cc3fe.chunk.js +0 -4
- package/dist/embedded-app/static/5443.ca89276cc3fe.chunk.js.map +0 -1
- package/dist/embedded-app/static/5954.5954.08de64e2b55b.css +0 -2
- package/dist/embedded-app/static/5954.5954.08de64e2b55b.css.map +0 -1
- package/dist/embedded-app/static/6138.1ca1ddf4e4b2.chunk.js.map +0 -1
- package/dist/embedded-app/static/6138.6138.c6fd421470ad.css +0 -2
- package/dist/embedded-app/static/6138.6138.c6fd421470ad.css.map +0 -1
- package/dist/embedded-app/static/7203.7203.67b3a0f0c8f1.css +0 -2
- package/dist/embedded-app/static/7203.7203.67b3a0f0c8f1.css.map +0 -1
- package/dist/embedded-app/static/7203.b379d4185674.chunk.js.map +0 -1
- package/dist/embedded-app/static/7213.e2116c7254ff.chunk.js.map +0 -1
- package/dist/embedded-app/static/7632.d2fd37a3ce88.chunk.js +0 -2
- package/dist/embedded-app/static/7632.d2fd37a3ce88.chunk.js.map +0 -1
- package/dist/embedded-app/static/7998.b43c307e32d8.chunk.js.map +0 -1
- package/dist/embedded-app/static/8461.3a913e298014.chunk.js +0 -10
- package/dist/embedded-app/static/8461.3a913e298014.chunk.js.map +0 -1
- package/dist/embedded-app/static/8877.98760209b373.chunk.js +0 -2
- package/dist/embedded-app/static/8877.98760209b373.chunk.js.map +0 -1
- package/dist/embedded-app/static/9050.9050.20ad0d6233b6.css +0 -2
- package/dist/embedded-app/static/9050.9050.20ad0d6233b6.css.map +0 -1
- package/dist/embedded-app/static/9050.a4c1629cc066.chunk.js.map +0 -1
- package/dist/embedded-app/static/9230.9230.342166022d0b.css +0 -2
- package/dist/embedded-app/static/9230.9230.342166022d0b.css.map +0 -1
- package/dist/embedded-app/static/9230.9bee58f48b03.chunk.js.map +0 -1
- package/dist/embedded-app/static/main.24d2ac7d6fef.css +0 -2
- package/dist/embedded-app/static/main.24d2ac7d6fef.css.map +0 -1
- package/dist/embedded-app/static/main.6b421945425a.js +0 -523
- package/dist/embedded-app/static/main.6b421945425a.js.map +0 -1
- package/dist/embedded-app/static/module-dompurify.b9b41a29cecf.js +0 -2
- package/dist/embedded-app/static/module-dompurify.b9b41a29cecf.js.map +0 -1
- package/dist/embedded-app/static/vendor.b20c39624bca.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer tokens,base;@layer components{.v8W8N2dqiE5cGNxm{flex-direction:column;display:flex}.Q3dVWKchqFEGDxNm{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.cae_vIXVMIPSb9LO{flex:1;min-height:0;overflow:auto}.kHZPXvGYPYAGYFhf{caption-side:bottom;border-collapse:collapse;table-layout:fixed;width:100%;transition:opacity .2s ease-in-out;position:relative}.kHZPXvGYPYAGYFhf[data-stale=true]{opacity:.6}.kHZPXvGYPYAGYFhf[data-ispending=true]{opacity:.6}.oifZQr6gC_QyhRzd{border-bottom:1px solid var(--bui-border-2);transition:color .2s ease-in-out}.X8xcDL8E6rIYbeSR{text-align:left;padding:var(--bui-space-3);font-size:var(--bui-font-size-3);color:var(--bui-fg-primary);line-height:1.15}.ae9pE72Zc07f8L6W{width:40px}.d_1Lwe7cMab7Y7x8{align-items:center;gap:var(--bui-space-1);flex-direction:row;display:flex}.c2mE5YTadTwCB9Cv{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.U0p16BfATSMI0pZa{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;align-items:center;gap:var(--bui-space-1);opacity:0;color:var(--bui-fg-secondary);transition:opacity .1s ease-in-out;display:inline-flex}.X8xcDL8E6rIYbeSR:hover .U0p16BfATSMI0pZa{opacity:1}[data-sort-direction=ascending] .U0p16BfATSMI0pZa{opacity:1}[data-sort-direction=descending] .U0p16BfATSMI0pZa{opacity:1}.U0p16BfATSMI0pZa svg{transition:transform .1s ease-in-out}[data-sort-direction=descending] .U0p16BfATSMI0pZa svg{transform:rotate(180deg)}.RevIL7d7UeIjyBcV{color:var(--bui-fg-primary)}.kPJhRwYa5RAAhwxF{border-bottom:1px solid var(--bui-border-2);cursor:default;transition:color .2s ease-in-out}.kPJhRwYa5RAAhwxF:hover{background-color:var(--bui-bg-neutral-1-hover)}.kPJhRwYa5RAAhwxF[data-selected]{background-color:var(--bui-bg-neutral-1-pressed)}.kPJhRwYa5RAAhwxF[data-pressed]{background-color:var(--bui-bg-neutral-1-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1]:hover{background-color:var(--bui-bg-neutral-2-hover)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1][data-selected]{background-color:var(--bui-bg-neutral-2-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1][data-pressed]{background-color:var(--bui-bg-neutral-2-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1][data-disabled]{background-color:var(--bui-bg-neutral-2-disabled)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2]:hover{background-color:var(--bui-bg-neutral-3-hover)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2][data-selected]{background-color:var(--bui-bg-neutral-3-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2][data-pressed]{background-color:var(--bui-bg-neutral-3-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2][data-disabled]{background-color:var(--bui-bg-neutral-3-disabled)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3]:hover{background-color:var(--bui-bg-neutral-4-hover)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3][data-selected]{background-color:var(--bui-bg-neutral-4-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3][data-pressed]{background-color:var(--bui-bg-neutral-4-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3][data-disabled]{background-color:var(--bui-bg-neutral-4-disabled)}.kPJhRwYa5RAAhwxF[data-href]{cursor:pointer}.kPJhRwYa5RAAhwxF[data-selection-mode]{cursor:pointer}.kPJhRwYa5RAAhwxF[data-react-aria-pressable=true]{cursor:pointer}.kPJhRwYa5RAAhwxF[data-disabled]{background-color:var(--bui-bg-neutral-1-disabled);cursor:not-allowed}.lBJ1evBwz18CSuEb{padding:var(--bui-space-3);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);min-width:0;line-height:1.15;overflow:hidden}.waN8m81er3MmoNwQ{width:40px}.AQrmv2_3dWQm8mkC{align-items:center;gap:var(--bui-space-2);flex-direction:row;width:100%;min-width:0;max-width:100%;display:flex}.pZfxgqebmIQNGPFo,.pZfxgqebmIQNGPFo svg{color:var(--bui-fg-primary);align-items:center;display:inline-flex}.VL_PIHABTKklOpWr{gap:var(--bui-space-0_5);flex-direction:column;flex:1;min-width:0;max-width:100%;display:flex;overflow:hidden}.VL_PIHABTKklOpWr>*{min-width:0;max-width:100%}.qco3EFeJwhQRop02{gap:var(--bui-space-2);flex-direction:row;align-items:center;display:flex}.hJtmqCNU8SMp97Lu{align-items:flex-start;gap:var(--bui-space-2);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);color:var(--bui-fg-primary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;flex-direction:row;line-height:1.15;display:flex}.hJtmqCNU8SMp97Lu[data-disabled]{cursor:not-allowed;opacity:.5}.AsCZ8LTTAs5lRnNR{width:1rem;height:1rem;box-shadow:inset 0 0 0 1px var(--bui-border-2);background-color:var(--bui-bg-neutral-1);color:transparent;border:none;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .2s ease-in-out;display:flex}.hJtmqCNU8SMp97Lu[data-focus-visible] .AsCZ8LTTAs5lRnNR{outline:2px solid var(--bui-ring);outline-offset:2px;transition:none}.hJtmqCNU8SMp97Lu[data-selected] .AsCZ8LTTAs5lRnNR{background-color:var(--bui-bg-solid);box-shadow:none;color:var(--bui-fg-solid)}.hJtmqCNU8SMp97Lu[data-indeterminate] .AsCZ8LTTAs5lRnNR{background-color:var(--bui-bg-neutral-1);box-shadow:inset 0 0 0 1px var(--bui-border-2);color:var(--bui-fg-primary)}.hJtmqCNU8SMp97Lu[data-invalid] .AsCZ8LTTAs5lRnNR{box-shadow:inset 0 0 0 1px var(--bui-border-danger)}.hJtmqCNU8SMp97Lu[data-invalid][data-selected] .AsCZ8LTTAs5lRnNR{background-color:var(--bui-border-danger);box-shadow:none}.hJtmqCNU8SMp97Lu[data-invalid][data-indeterminate] .AsCZ8LTTAs5lRnNR{box-shadow:inset 0 0 0 1px var(--bui-border-danger)}@media (prefers-reduced-motion:reduce){.AsCZ8LTTAs5lRnNR{transition:none}}:is(.fl_o2cRttX8vIo5j,.xRoZ59Ta50wTyFbP)[data-size=small]{--select-item-height:2rem}:is(.fl_o2cRttX8vIo5j,.xRoZ59Ta50wTyFbP)[data-size=medium]{--select-item-height:2.5rem}.fl_o2cRttX8vIo5j{flex-direction:column;flex:1;width:100%;display:flex}.xRoZ59Ta50wTyFbP{min-width:var(--trigger-width)}.xRoZ59Ta50wTyFbP .bui-PopoverContent{grid-template-rows:minmax(0,1fr);padding:0;display:grid;overflow:hidden}.f6xSegNfnDAA591f{box-sizing:border-box;border-radius:var(--bui-radius-3);background-color:var(--bui-bg-neutral-1);border:none;outline:none;transition:box-shadow .2s ease-in-out}.f6xSegNfnDAA591f[data-on-bg=neutral-1]{background-color:var(--bui-bg-neutral-2)}.f6xSegNfnDAA591f[data-on-bg=neutral-2]{background-color:var(--bui-bg-neutral-3)}.f6xSegNfnDAA591f[data-on-bg=neutral-3]{background-color:var(--bui-bg-neutral-4)}.fl_o2cRttX8vIo5j[data-focused] .f6xSegNfnDAA591f{box-shadow:inset 0 0 0 1px var(--bui-ring)}.f6xSegNfnDAA591f{cursor:pointer;justify-content:space-between;align-items:center;gap:var(--bui-space-2);width:100%;height:var(--select-item-height);display:flex}.fl_o2cRttX8vIo5j[data-size=small] .f6xSegNfnDAA591f{padding-inline:var(--bui-space-3)0}.fl_o2cRttX8vIo5j[data-size=medium] .f6xSegNfnDAA591f{padding-inline:var(--bui-space-4)0}.f6xSegNfnDAA591f svg{color:var(--bui-fg-secondary);flex-shrink:0}.fl_o2cRttX8vIo5j[data-size=small] :is(.f6xSegNfnDAA591f svg){width:1rem;height:1rem}.fl_o2cRttX8vIo5j[data-size=medium] :is(.f6xSegNfnDAA591f svg){width:1.25rem;height:1.25rem}.f6xSegNfnDAA591f::-webkit-input-placeholder{color:var(--bui-fg-secondary)}.f6xSegNfnDAA591f::-ms-input-placeholder{color:var(--bui-fg-secondary)}.f6xSegNfnDAA591f::placeholder{color:var(--bui-fg-secondary)}.fl_o2cRttX8vIo5j[data-invalid] .f6xSegNfnDAA591f{box-shadow:inset 0 0 0 1px var(--bui-border-danger)}.f6xSegNfnDAA591f[disabled]{cursor:not-allowed;color:var(--bui-fg-disabled)}.hey3g7_Ll4EtTJdE{width:var(--select-item-height);height:var(--select-item-height);flex-grow:0;flex-shrink:0;align-content:center;justify-content:center;display:grid}.EOuke6Cxn9cos7ok{text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);color:var(--bui-fg-primary);text-align:left;line-height:1.15;overflow:hidden}.EOuke6Cxn9cos7ok .LiF4f9w5zcb_V5q_{display:none}.EOuke6Cxn9cos7ok[disabled]{color:var(--bui-fg-disabled)}.wCPzC0hbf30wVMOp{padding-block:var(--bui-space-1);padding-inline:var(--bui-space-1);transition:opacity .2s ease-in-out}.wCPzC0hbf30wVMOp[data-stale]{opacity:.6}.wCPzC0hbf30wVMOp[data-focus-visible]{outline:none}.Mn7kwp0_L8g4rWcf{box-sizing:border-box;min-height:var(--select-item-height);padding-block:var(--bui-space-1);padding-left:var(--bui-space-3);padding-right:var(--bui-space-4);color:var(--bui-fg-primary);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:var(--bui-font-size-3);border-radius:var(--bui-radius-2);outline:none;line-height:1.15;display:block;position:relative}.Mn7kwp0_L8g4rWcf:has(>.LiF4f9w5zcb_V5q_){align-items:center;gap:var(--bui-space-2);grid-template-columns:1rem 1fr;grid-template-areas:"icon text";display:grid}.Mn7kwp0_L8g4rWcf[data-focused]{background-color:var(--bui-bg-neutral-2)}.Mn7kwp0_L8g4rWcf[data-disabled]{cursor:not-allowed;color:var(--bui-fg-disabled)}.Mn7kwp0_L8g4rWcf[data-selected] .LiF4f9w5zcb_V5q_{opacity:1}.LiF4f9w5zcb_V5q_{opacity:0;grid-area:icon;justify-content:center;align-items:center;transition:opacity .2s ease-in-out;display:flex}.sG8NrKzlnq4NyoHP{flex:1;grid-area:text}.dEYdQefcncAOEwHx{align-items:center;gap:var(--bui-space-2);grid-area:text;min-width:0;display:flex}.AKGYEGIB6gowSR1v{flex-shrink:0;justify-content:center;align-items:center;width:1em;height:1em;display:flex}.AKGYEGIB6gowSR1v>svg{width:1em;height:1em}.yME5bCO7KXI8ytlf{flex-shrink:0}.GxLJfL5leAuIEMf4{flex-direction:column;min-width:0;display:flex}.VpNS7MhLIRMk2oNQ,.PIhKUXz6a8c4loYl{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.PIhKUXz6a8c4loYl{font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary)}.af0jN5t2MnkzSKwM{margin-bottom:var(--bui-space-1);padding-inline:var(--bui-space-3)0;border-bottom:1px solid var(--bui-border-2);flex-shrink:0;align-items:center;display:flex}.PZwuqaalMCYxziS8{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}.XYK5W5M9fYWqIec2{grid-row:2;min-height:0;overflow:auto}.MAcGzHfmHVw4bkcS{color:var(--bui-fg-primary);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);height:var(--select-item-height);line-height:var(--select-item-height);background-color:transparent;border:none;outline:none;flex:1;padding:0}.MAcGzHfmHVw4bkcS::-webkit-input-placeholder{color:var(--bui-fg-secondary)}.MAcGzHfmHVw4bkcS::-ms-input-placeholder{color:var(--bui-fg-secondary)}.MAcGzHfmHVw4bkcS::placeholder{color:var(--bui-fg-secondary)}.MAcGzHfmHVw4bkcS::-webkit-search-cancel-button{-webkit-appearance:none}.MAcGzHfmHVw4bkcS::-webkit-search-decoration{-webkit-appearance:none}.Qm0LMYJXqDozSs4J{cursor:pointer;color:var(--bui-fg-secondary);width:var(--select-item-height);height:var(--select-item-height);background-color:transparent;border:none;flex:none;align-content:center;justify-content:center;margin:0;padding:0;transition:color .2s ease-in-out;display:grid}input:placeholder-shown+.Qm0LMYJXqDozSs4J{display:none}.Qm0LMYJXqDozSs4J:hover{color:var(--bui-fg-primary)}.Qm0LMYJXqDozSs4J svg{width:1rem;height:1rem}.sPxu4s2LxhUkjdE5:first-child .FuD_n78xDNQIkQ_A{padding-top:0}.FuD_n78xDNQIkQ_A{height:2rem;padding-top:var(--bui-space-3);padding-left:var(--bui-space-3);color:var(--bui-fg-primary);font-size:var(--bui-font-size-1);letter-spacing:.05rem;text-transform:uppercase;align-items:center;font-weight:700;line-height:1.15;display:flex}.mai_FHtvkacjqFtg{padding-inline:var(--bui-space-3);padding-block:var(--bui-space-2);color:var(--bui-fg-secondary);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);line-height:1.15}.J9z0FCamdHQrC3j_{flex-direction:column;width:100%;display:flex}.SbRLeO8aQQMTytTi{box-sizing:border-box;min-height:var(--select-item-height);padding-block:var(--bui-space-1);padding-left:calc(var(--bui-space-3) + 1rem + var(--bui-space-2));padding-right:var(--bui-space-4);align-items:center;display:flex}.QCxpyIls6to9Bn5w{margin-bottom:var(--bui-space-3);gap:var(--bui-space-1);flex-direction:column;line-height:1.15;display:flex}.qjnrgCeKosN0HGNG{color:var(--bui-fg-primary);cursor:pointer;font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-2);margin-right:auto}.VAD8KU3Enrs4kH_k{color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular);margin-left:var(--bui-space-1)}.KsFBKeDCTE86ZANx{font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);margin:0}.Ai9iNkHuNwQ8kqsz{color:var(--bui-fg-danger);font-size:var(--bui-font-size-2);font-weight:var(--bui-font-weight-regular);margin-top:var(--bui-space-2);line-height:1.15;display:inline-block}.c6K43dAXzUIQYTPO{--popover-border-radius:var(--bui-radius-3);box-shadow:var(--bui-shadow);border-radius:var(--popover-border-radius);background:var(--bui-bg-app);border:1px solid var(--bui-border-1);forced-color-adjust:none;max-height:inherit;outline:none;flex-direction:column;transition:transform .2s,opacity .2s;display:flex;transform:translate(0,0)}.c6K43dAXzUIQYTPO[data-entering]{transform:var(--origin);opacity:0}.c6K43dAXzUIQYTPO[data-exiting]{transform:var(--origin);opacity:0}.c6K43dAXzUIQYTPO[data-placement=top]{--origin:translateY(4px)}.c6K43dAXzUIQYTPO[data-placement=top]:has(.nWNOVN9SSAkDCJc4){margin-bottom:var(--bui-space-3)}.c6K43dAXzUIQYTPO[data-placement=right]{--origin:translateX(-4px)}.c6K43dAXzUIQYTPO[data-placement=right]:has(.nWNOVN9SSAkDCJc4){margin-left:var(--bui-space-3)}.c6K43dAXzUIQYTPO[data-placement=bottom]{--origin:translateY(-4px)}.c6K43dAXzUIQYTPO[data-placement=bottom]:has(.nWNOVN9SSAkDCJc4){margin-top:var(--bui-space-3)}.c6K43dAXzUIQYTPO[data-placement=left]{--origin:translateX(4px)}.c6K43dAXzUIQYTPO[data-placement=left]:has(.nWNOVN9SSAkDCJc4){margin-right:var(--bui-space-3)}.ndXnur8atSwrX9tW{padding:var(--bui-space-4);border-radius:var(--popover-border-radius);flex:auto;min-height:0;overflow-x:hidden;overflow-y:auto}.nWNOVN9SSAkDCJc4 svg{display:block}.nWNOVN9SSAkDCJc4 svg use:first-of-type{fill:var(--bui-bg-app)}.nWNOVN9SSAkDCJc4 svg use:nth-of-type(2){fill:var(--bui-bg-neutral-1)}.nWNOVN9SSAkDCJc4 svg path{fill:var(--bui-border-1)}.nWNOVN9SSAkDCJc4 svg{--popover-arrow-overlap:-2px}.nWNOVN9SSAkDCJc4[data-placement=top] svg{margin-top:var(--popover-arrow-overlap)}.nWNOVN9SSAkDCJc4[data-placement=bottom] svg{margin-bottom:var(--popover-arrow-overlap);transform:rotate(180deg)}.nWNOVN9SSAkDCJc4[data-placement=right] svg{margin-right:var(--popover-arrow-overlap);transform:rotate(90deg)}.nWNOVN9SSAkDCJc4[data-placement=left] svg{margin-left:var(--popover-arrow-overlap);transform:rotate(-90deg)}.dQdXlDCvsLk1w8Z3{animation:var(--bui-animate-pulse);background-color:var(--bui-bg-neutral-2);border-radius:var(--bui-radius-2)}.dQdXlDCvsLk1w8Z3[data-on-bg=neutral-1]{background-color:var(--bui-bg-neutral-2)}.dQdXlDCvsLk1w8Z3[data-on-bg=neutral-2]{background-color:var(--bui-bg-neutral-3)}.dQdXlDCvsLk1w8Z3[data-on-bg=neutral-3]{background-color:var(--bui-bg-neutral-4)}.dQdXlDCvsLk1w8Z3[data-rounded=true]{border-radius:var(--bui-radius-full)}.Z_Iagacz0F1YYG04{padding-top:var(--bui-space-5);justify-content:space-between;align-items:center;display:flex}.N_pRbW6lVsY4Hdgf{justify-content:space-between;align-items:center;display:flex}.qXYnm03BkEcKl1FA{justify-content:space-between;align-items:center;gap:var(--bui-space-2);display:flex}.plzZlLJyZhc3wn3s{min-width:10.5rem}}@layer utilities;
|
|
2
|
+
/*# sourceMappingURL=7203.7203.b0bf7f390ce4.css.map*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/7203.7203.b0bf7f390ce4.css","sources":["webpack://techdocs-cli-embedded-app/../ui/src/components/Table/Table.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Checkbox/Checkbox.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Select/Select.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/FieldLabel/FieldLabel.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/FieldError/FieldError.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Popover/Popover.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Skeleton/Skeleton.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/TablePagination/TablePagination.module.css"],"sourcesContent":["/*\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-TableWrapper {\n display: flex;\n flex-direction: column;\n }\n\n .bui-TableResizableContainer {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: auto;\n }\n\n .bui-TableScrollContainer {\n overflow: auto;\n flex: 1;\n min-height: 0;\n }\n\n .bui-Table {\n /* Establishes containing block for react-aria's absolutely positioned hidden checkbox inputs, preventing them from escaping to a distant ancestor and creating phantom scroll height. */\n position: relative;\n width: 100%;\n caption-side: bottom;\n border-collapse: collapse;\n table-layout: fixed;\n transition: opacity 0.2s ease-in-out;\n\n &[data-stale='true'],\n &[data-ispending='true'] {\n opacity: 0.6;\n }\n }\n\n .bui-TableHeader {\n border-bottom: 1px solid var(--bui-border-2);\n transition: color 0.2s ease-in-out;\n }\n\n .bui-TableHead {\n text-align: left;\n padding: var(--bui-space-3);\n font-size: var(--bui-font-size-3);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n }\n\n .bui-TableHeadSelection {\n width: 40px;\n }\n\n .bui-TableHeadContent {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-1);\n }\n\n .bui-TableHeadLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n\n .bui-TableHeadSortButton {\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n gap: var(--bui-space-1);\n opacity: 0;\n transition: opacity 0.1s ease-in-out;\n color: var(--bui-fg-secondary);\n\n .bui-TableHead:hover &,\n [data-sort-direction='ascending'] &,\n [data-sort-direction='descending'] & {\n opacity: 1;\n }\n\n & svg {\n transition: transform 0.1s ease-in-out;\n }\n [data-sort-direction='descending'] & svg {\n transform: rotate(180deg);\n }\n }\n\n .bui-TableBody {\n color: var(--bui-fg-primary);\n }\n\n .bui-TableRow {\n border-bottom: 1px solid var(--bui-border-2);\n transition: color 0.2s ease-in-out;\n cursor: default;\n\n &:hover {\n background-color: var(--bui-bg-neutral-1-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-1-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-1-pressed);\n }\n\n &[data-on-bg='neutral-1'] {\n &:hover {\n background-color: var(--bui-bg-neutral-2-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-2-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-2-pressed);\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-2-disabled);\n }\n }\n\n &[data-on-bg='neutral-2'] {\n &:hover {\n background-color: var(--bui-bg-neutral-3-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-3-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-3-pressed);\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-3-disabled);\n }\n }\n\n &[data-on-bg='neutral-3'] {\n &:hover {\n background-color: var(--bui-bg-neutral-4-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-4-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-4-pressed);\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-4-disabled);\n }\n }\n\n &[data-href],\n &[data-selection-mode],\n &[data-react-aria-pressable='true'] {\n cursor: pointer;\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-1-disabled);\n cursor: not-allowed;\n }\n }\n\n .bui-TableCell {\n padding: var(--bui-space-3);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n min-width: 0;\n overflow: hidden;\n }\n\n .bui-TableCellSelection {\n width: 40px;\n }\n\n .bui-TableCellContentWrapper {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n min-width: 0;\n width: 100%;\n max-width: 100%;\n }\n\n .bui-TableCellIcon,\n .bui-TableCellIcon svg {\n display: inline-flex;\n align-items: center;\n color: var(--bui-fg-primary);\n }\n\n .bui-TableCellContent {\n display: flex;\n flex-direction: column;\n gap: var(--bui-space-0_5);\n min-width: 0;\n flex: 1;\n overflow: hidden;\n max-width: 100%;\n }\n\n .bui-TableCellContent > * {\n min-width: 0;\n max-width: 100%;\n }\n\n .bui-TableCellProfile {\n display: flex;\n flex-direction: row;\n gap: var(--bui-space-2);\n align-items: center;\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Checkbox {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n gap: var(--bui-space-2);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n user-select: none;\n cursor: pointer;\n }\n\n .bui-Checkbox[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .bui-CheckboxIndicator {\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n box-shadow: inset 0 0 0 1px var(--bui-border-2);\n border-radius: 2px;\n transition: background-color 0.2s ease-in-out;\n background-color: var(--bui-bg-neutral-1);\n padding: 0;\n flex-shrink: 0;\n color: transparent;\n\n .bui-Checkbox[data-focus-visible] & {\n transition: none;\n outline: 2px solid var(--bui-ring);\n outline-offset: 2px;\n }\n\n .bui-Checkbox[data-selected] & {\n background-color: var(--bui-bg-solid);\n box-shadow: none;\n color: var(--bui-fg-solid);\n }\n\n .bui-Checkbox[data-indeterminate] & {\n background-color: var(--bui-bg-neutral-1);\n box-shadow: inset 0 0 0 1px var(--bui-border-2);\n color: var(--bui-fg-primary);\n }\n\n .bui-Checkbox[data-invalid] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n .bui-Checkbox[data-invalid][data-selected] & {\n background-color: var(--bui-border-danger);\n box-shadow: none;\n }\n\n .bui-Checkbox[data-invalid][data-indeterminate] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n @media (prefers-reduced-motion: reduce) {\n & {\n transition: none;\n }\n }\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Select,\n .bui-SelectPopover {\n &[data-size='small'] {\n --select-item-height: 2rem;\n }\n\n &[data-size='medium'] {\n --select-item-height: 2.5rem;\n }\n }\n\n .bui-Select {\n display: flex;\n flex-direction: column;\n width: 100%;\n flex: 1;\n }\n\n .bui-SelectPopover {\n min-width: var(--trigger-width);\n\n :global(.bui-PopoverContent) {\n padding: 0;\n display: grid;\n grid-template-rows: minmax(0, 1fr);\n overflow: hidden;\n }\n }\n\n .bui-SelectTrigger {\n box-sizing: border-box;\n border-radius: var(--bui-radius-3);\n border: none;\n outline: none;\n background-color: var(--bui-bg-neutral-1);\n transition: box-shadow 0.2s ease-in-out;\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n\n .bui-Select[data-focused] & {\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n gap: var(--bui-space-2);\n width: 100%;\n height: var(--select-item-height);\n\n .bui-Select[data-size='small'] & {\n padding-inline: var(--bui-space-3) 0;\n }\n\n .bui-Select[data-size='medium'] & {\n padding-inline: var(--bui-space-4) 0;\n }\n\n & svg {\n flex-shrink: 0;\n color: var(--bui-fg-secondary);\n\n .bui-Select[data-size='small'] & {\n width: 1rem;\n height: 1rem;\n }\n\n .bui-Select[data-size='medium'] & {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n .bui-Select[data-invalid] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n &[disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n }\n\n .bui-SelectTriggerChevron {\n display: grid;\n place-content: center;\n width: var(--select-item-height);\n height: var(--select-item-height);\n flex-shrink: 0;\n flex-grow: 0;\n }\n\n .bui-SelectValue {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n text-align: left;\n\n & .bui-SelectItemIndicator {\n display: none;\n }\n\n &[disabled] {\n color: var(--bui-fg-disabled);\n }\n }\n\n .bui-SelectList {\n padding-block: var(--bui-space-1);\n padding-inline: var(--bui-space-1);\n transition: opacity 0.2s ease-in-out;\n\n &[data-stale] {\n opacity: 0.6;\n }\n\n &[data-focus-visible] {\n /* Remove default focus-visible outline because React Aria\n * triggers it on mouse click open of the list for some reason.\n * On keyboard use, the top item receives the focus style,\n * so it's not needed anyway. */\n outline: none;\n }\n }\n\n .bui-SelectItem {\n box-sizing: border-box;\n position: relative;\n display: block;\n min-height: var(--select-item-height);\n padding-block: var(--bui-space-1);\n padding-left: var(--bui-space-3);\n padding-right: var(--bui-space-4);\n color: var(--bui-fg-primary);\n cursor: pointer;\n user-select: none;\n font-size: var(--bui-font-size-3);\n line-height: 1.15;\n outline: none;\n border-radius: var(--bui-radius-2);\n\n &:has(> .bui-SelectItemIndicator) {\n display: grid;\n grid-template-areas: 'icon text';\n grid-template-columns: 1rem 1fr;\n align-items: center;\n gap: var(--bui-space-2);\n }\n\n &[data-focused] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n\n &[data-selected] .bui-SelectItemIndicator {\n opacity: 1;\n }\n }\n\n .bui-SelectItemIndicator {\n grid-area: icon;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .bui-SelectItemLabel {\n flex: 1;\n grid-area: text;\n }\n\n .bui-SelectItemContent {\n grid-area: text;\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n min-width: 0;\n }\n\n .bui-SelectItemLeadingIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n\n & > svg {\n width: 1em;\n height: 1em;\n }\n }\n\n .bui-SelectItemAvatar {\n flex-shrink: 0;\n }\n\n .bui-SelectItemTextContent {\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .bui-SelectItemTitle,\n .bui-SelectItemDescription {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .bui-SelectItemDescription {\n font-size: var(--bui-font-size-2);\n color: var(--bui-fg-secondary);\n }\n\n .bui-SelectSearchWrapper {\n flex-shrink: 0;\n margin-bottom: var(--bui-space-1);\n display: flex;\n align-items: center;\n padding-inline: var(--bui-space-3) 0;\n border-bottom: 1px solid var(--bui-border-2);\n }\n\n .bui-SelectContent {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n min-height: 0;\n }\n\n .bui-SelectResults {\n grid-row: 2;\n min-height: 0;\n overflow: auto;\n }\n\n .bui-SelectSearch {\n border: none;\n background-color: transparent;\n padding: 0;\n color: var(--bui-fg-primary);\n flex: 1;\n outline: none;\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n height: var(--select-item-height);\n line-height: var(--select-item-height);\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n /* Hide native browser clear button */\n &::-webkit-search-cancel-button,\n &::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n }\n\n .bui-SelectSearchClear {\n flex: 0 0 auto;\n display: grid;\n place-content: center;\n background-color: transparent;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: var(--bui-fg-secondary);\n transition: color 0.2s ease-in-out;\n width: var(--select-item-height);\n height: var(--select-item-height);\n\n input:placeholder-shown + & {\n display: none;\n }\n\n &:hover {\n color: var(--bui-fg-primary);\n }\n\n & svg {\n width: 1rem;\n height: 1rem;\n }\n }\n\n .bui-SelectSection {\n &:first-child .bui-SelectSectionHeader {\n padding-top: 0;\n }\n }\n\n .bui-SelectSectionHeader {\n height: 2rem;\n display: flex;\n align-items: center;\n padding-top: var(--bui-space-3);\n padding-left: var(--bui-space-3);\n color: var(--bui-fg-primary);\n font-size: var(--bui-font-size-1);\n line-height: 1.15;\n font-weight: bold;\n letter-spacing: 0.05rem;\n text-transform: uppercase;\n }\n\n .bui-SelectNoResults {\n padding-inline: var(--bui-space-3);\n padding-block: var(--bui-space-2);\n color: var(--bui-fg-secondary);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n }\n\n .bui-SelectLoading {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .bui-SelectLoadingRow {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-height: var(--select-item-height);\n padding-block: var(--bui-space-1);\n padding-left: calc(var(--bui-space-3) + 1rem + var(--bui-space-2));\n padding-right: var(--bui-space-4);\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-FieldLabelWrapper {\n display: flex;\n flex-direction: column;\n margin-bottom: var(--bui-space-3);\n gap: var(--bui-space-1);\n line-height: 1.15;\n }\n\n .bui-FieldLabel {\n color: var(--bui-fg-primary);\n margin-right: auto;\n cursor: pointer;\n font-weight: var(--bui-font-weight-regular);\n font-size: var(--bui-font-size-2);\n }\n\n .bui-FieldSecondaryLabel {\n color: var(--bui-fg-secondary);\n font-weight: var(--bui-font-weight-regular);\n margin-left: var(--bui-space-1);\n }\n\n .bui-FieldDescription {\n font-weight: var(--bui-font-weight-regular);\n font-size: var(--bui-font-size-2);\n color: var(--bui-fg-secondary);\n margin: 0;\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-FieldError {\n display: inline-block;\n color: var(--bui-fg-danger);\n font-size: var(--bui-font-size-2);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n margin-top: var(--bui-space-2);\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Popover {\n --popover-border-radius: var(--bui-radius-3);\n box-shadow: var(--bui-shadow);\n border-radius: var(--popover-border-radius);\n background: var(--bui-bg-app);\n border: 1px solid var(--bui-border-1);\n forced-color-adjust: none;\n outline: none;\n max-height: inherit;\n display: flex;\n flex-direction: column;\n /* fixes FF gap */\n transform: translate3d(0, 0, 0);\n transition: transform 200ms, opacity 200ms;\n\n &[data-entering],\n &[data-exiting] {\n transform: var(--origin);\n opacity: 0;\n }\n\n &[data-placement='top'] {\n --origin: translateY(4px);\n\n &:has(.bui-PopoverArrow) {\n margin-bottom: var(--bui-space-3);\n }\n }\n\n &[data-placement='right'] {\n --origin: translateX(-4px);\n\n &:has(.bui-PopoverArrow) {\n margin-left: var(--bui-space-3);\n }\n }\n\n &[data-placement='bottom'] {\n --origin: translateY(-4px);\n\n &:has(.bui-PopoverArrow) {\n margin-top: var(--bui-space-3);\n }\n }\n\n &[data-placement='left'] {\n --origin: translateX(4px);\n\n &:has(.bui-PopoverArrow) {\n margin-right: var(--bui-space-3);\n }\n }\n }\n\n .bui-PopoverContent {\n overflow-x: hidden;\n overflow-y: auto;\n padding: var(--bui-space-4);\n flex: 1 1 auto;\n min-height: 0;\n border-radius: var(--popover-border-radius);\n }\n\n .bui-PopoverArrow {\n & svg {\n display: block;\n\n /* The popover is rendered overlaying the main\n popover element by 1px. This causes the borders\n to overlap, which causes minor visual artifacts\n with transparent border colors. To mitigate this,\n we split the stroke and fill across separate\n elements in order to guarantee that the stroke is\n always overlaying a consistent color. */\n use:nth-of-type(1) {\n fill: var(--bui-bg-app);\n }\n use:nth-of-type(2) {\n fill: var(--bui-bg-neutral-1);\n }\n\n path {\n fill: var(--bui-border-1);\n }\n\n /* The arrow svg overlaps the popover by 2px, so we\n need to adjust the margins accordingly. */\n --popover-arrow-overlap: -2px;\n }\n\n &[data-placement='top'] svg {\n margin-top: var(--popover-arrow-overlap);\n }\n\n &[data-placement='bottom'] svg {\n margin-bottom: var(--popover-arrow-overlap);\n transform: rotate(180deg);\n }\n\n &[data-placement='right'] svg {\n margin-right: var(--popover-arrow-overlap);\n transform: rotate(90deg);\n }\n\n &[data-placement='left'] svg {\n margin-left: var(--popover-arrow-overlap);\n transform: rotate(-90deg);\n }\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Skeleton {\n animation: var(--bui-animate-pulse);\n background-color: var(--bui-bg-neutral-2);\n border-radius: var(--bui-radius-2);\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n }\n\n .bui-Skeleton[data-rounded='true'] {\n border-radius: var(--bui-radius-full);\n }\n}\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-TablePagination {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: var(--bui-space-5);\n }\n\n .bui-TablePaginationLeft {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .bui-TablePaginationRight {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bui-space-2);\n }\n\n .bui-TablePaginationSelect {\n min-width: 10.5rem;\n }\n}\n"],"names":[],"mappings":"AAgBA,qCAGE,qDAKA,uFAQA,oDAMA,kJASE,gGAMF,+FAKA,2IAQA,6BAIA,4FAOA,wFAOA,+PAUE,6KAMA,2DAGA,gFAKF,8CAIA,8GAKE,uEAIA,kFAIA,iFAKE,6FAIA,wGAIA,uGAIA,yGAMA,6FAIA,wGAIA,uGAIA,yGAMA,6FAIA,wGAIA,uGAIA,yGAKF,mKAMA,sGAMF,0MAUA,6BAIA,kIAUA,2GAOA,gIAUA,+CAKA,4FC9NA,iWAcA,+DAKA,4SAeE,6HAMA,kIAMA,4KAMA,sGAIA,2HAKA,0HAIA,uCACE,mCChEF,oFAIA,uFAKF,uEAOA,iDAGE,8GAQF,kLAQE,iFAIA,iFAIA,iFAIA,6FAGQ,kKAQR,wFAIA,yFAIA,kEAIE,qFAKA,4FAMF,+MAIA,sGAIA,4EAMF,sKASA,oQAYE,iDAIA,yDAKF,wHAKE,yCAIA,mDASF,gbAgBE,gKAQA,yEAIA,iFAKA,6DAKF,qIASA,wCAKA,oGAQA,4GAQE,2CAMF,gCAIA,iEAMA,8FAOA,iFAKA,gLASA,kFAMA,wDAMA,iQAYE,+MAKA,6IAMF,gSAcE,uDAIA,oDAIA,6CAOA,8DAKF,0QAcA,oPAUA,gEAMA,iPC7VA,8HAQA,2JAQA,0HAMA,qICtBA,6LCAA,kWAeE,qIAMA,+DAGE,8FAKF,kEAGE,8FAKF,mEAGE,8FAKF,gEAGE,8FAMJ,iJAUE,oCAUE,+DAGA,sEAIA,oDAMwB,mDAG1B,kFAIA,iHAKA,8GAKA,6GCxGF,gIAKE,iFAIA,iFAIA,iFAKF,0EClBA,+GAOA,gFAMA,uGAOA,qCPvBF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["7632"],{6659(e,t,r){r.d(t,{DependencyGraph:()=>P});var n=r(31085),a=r(14041),i=r(37238),l=r(53373),s=r.n(l),d=r(45250),u=r(68510),o=r(67566),c=r(41809),h=r(57586),f=r.n(h),m=r(12784),g=r.n(m),x=r(6033),p=r(22249),k=r(58837);let w=(0,k.A)(e=>({node:{fill:e.palette.primary.light,stroke:e.palette.primary.light},text:{fill:e.palette.primary.contrastText}}),{name:"BackstageDependencyGraphDefaultNode"});function b({node:{id:e}}){let t=w(),[r,i]=(0,a.useState)(0),[l,s]=(0,a.useState)(0),d=(0,a.useRef)(null);(0,a.useLayoutEffect)(()=>{if(d.current){let{height:e,width:t}=d.current.getBBox();e=Math.round(e),t=Math.round(t),(e!==l||t!==r)&&(i(t),s(e))}},[r,l]);let u=r+20,o=l+20;return(0,n.jsxs)("g",{children:[(0,n.jsx)("rect",{className:t.node,width:u,height:o,rx:10}),(0,n.jsx)("text",{ref:d,className:t.text,y:o/2,x:u/2,textAnchor:"middle",alignmentBaseline:"middle",children:e})]})}let y=(0,p.default)(e=>({node:{transition:`${e.transitions.duration.shortest}ms`}}),{name:"BackstageDependencyGraphNode"}),v=e=>(0,n.jsx)(b,{...e});function j({render:e=v,setNode:t,node:r}){let{width:i,height:l,x:s=0,y:d=0}=r,u=y(),o=(0,a.useRef)(null);return(0,a.useLayoutEffect)(()=>{if(o.current){let{height:e,width:n}=o.current.getBBox();e=Math.round(e),n=Math.round(n),(e!==l||n!==i)&&t(r.id,{...r,height:e,width:n})}},[r,i,l,t]),(0,n.jsx)("g",{ref:o,"data-testid":"node",className:u.node,transform:`translate(${s-i/2},${d-l/2})`,children:e({node:r})})}var M=r(1121),E=r(12895),B=r(20644),N=r.n(B);let $="arrow-marker",S=(0,p.default)(e=>({text:{fill:e.palette.textContrast}}),{name:"BackstageDependencyGraphDefaultLabel"});function A({edge:{label:e}}){let t=S();return(0,n.jsx)("text",{className:t.text,textAnchor:"middle",children:e})}let R=(0,p.default)(e=>({path:{strokeWidth:1.3,stroke:e.palette.textSubtle,fill:"none",transition:`${e.transitions.duration.shortest}ms`},label:{transition:`${e.transitions.duration.shortest}ms`}}),{name:"BackstageDependencyGraphEdge"}),D=e=>(0,n.jsx)(A,{...e});function H({render:e=D,setEdge:t,id:r,edge:i,curve:l,showArrowHeads:s}){let{x:d=0,y:u=0,width:o,height:c,points:h}=i,f=R(),m=(0,a.useRef)(null);(0,a.useLayoutEffect)(()=>{if(m.current){let{height:e,width:n}=m.current.getBBox();e=Math.round(e),n=Math.round(n),(e!==c||n!==o)&&t(r,{...i,height:e,width:n})}},[i,c,o,t,r]);let g="",x=(0,a.useMemo)(()=>M.A().x(e=>e.x).y(e=>e.y).curve(E[l]),[l]);return h&&(g=x(h.filter(e=>N()(e.x)&&N()(e.y)))||""),(0,n.jsxs)(n.Fragment,{children:[g&&(0,n.jsx)("path",{"data-testid":"edge",className:f.path,markerEnd:s?`url(#${$})`:void 0,d:g}),i.label?(0,n.jsx)("g",{ref:m,"data-testid":"label",className:f.label,transform:`translate(${d},${u})`,children:e({edge:i})}):null]})}var C=r(29365),G=r(25828),T=r(63988),W=r(14112),_=r(71677),L=r(89595),O=r(89332);let q=(0,k.A)(e=>({fullscreenButton:{position:"absolute",right:0},root:{overflow:"hidden",minHeight:"100%",minWidth:"100%"},fixedHeight:{maxHeight:"100%"},fullscreen:{backgroundColor:e.palette.background.paper}})),F="workspace",I="dependency-graph";function P(e){let{edges:t,nodes:r,renderNode:l,direction:h=x.D.Direction.TOP_BOTTOM,align:m,nodeMargin:p=50,edgeMargin:k=10,rankMargin:w=50,paddingX:b=0,paddingY:y=0,acyclicer:v,ranker:M=x.D.Ranker.NETWORK_SIMPLEX,labelPosition:E=x.D.LabelPosition.RIGHT,labelOffset:B=10,edgeRanks:N=1,edgeWeight:S=1,renderEdge:A,renderLabel:R,defs:D,zoom:P="enabled",curve:X="curveMonotoneX",showArrowHeads:z=!1,fit:K="grow",allowFullscreen:U=!0,...V}=e,Y=(0,c.default)(),[J,Q]=(0,a.useState)(100),[Z,ee]=(0,a.useState)(100),et=(0,W.V)(),er=q(),{t:en}=(0,L.i)(O.O),ea=(0,a.useRef)(new(f()).graphlib.Graph),[ei,el]=(0,a.useState)(ea.current.graph()?.width||0),[es,ed]=(0,a.useState)(ea.current.graph()?.height||0),[eu,eo]=(0,a.useState)([]),[ec,eh]=(0,a.useState)([]),[ef,em]=(0,a.useState)(!1),[eg,ex]=(0,a.useState)(!1),ep=(0,a.useRef)(!1),ek=(0,a.useRef)(!1),ew=(0,a.useRef)(0);(0,a.useEffect)(()=>{if(ef&&!eg){let e=requestAnimationFrame(()=>{ex(!0)});return()=>cancelAnimationFrame(e)}},[ef,eg]),(0,a.useEffect)(()=>{if(eu.length>0&&!ep.current){let e=setTimeout(()=>{ep.current||(ep.current=!0,em(!0))},500);return()=>clearTimeout(e)}},[eu]);let eb=Math.max(ei,J),ey=Math.max(es,Z),ev=(0,a.useRef)({containerWidth:J,containerHeight:Z,maxWidth:eb,maxHeight:ey});ev.current={containerWidth:J,containerHeight:Z,maxWidth:eb,maxHeight:ey};let[ej]=(0,i.A)(),eM=(0,d.once)(ej),eE="grow"!==K||et.active?"100%":ey,eB=(0,a.useMemo)(()=>g()(e=>{if(!e)return;eM(e);let t=e.querySelector(`svg#${I}`);if(!t)return;let r=o.A(t),n=o.A(t.getElementById(F));function a(){r.call(u.s_().scaleExtent([1,1/0]).on("zoom",e=>{let t=ev.current;e.transform.x=Math.min(0,Math.max(e.transform.x,t.maxWidth-t.maxWidth*e.transform.k)),e.transform.y=Math.min(0,Math.max(e.transform.y,t.maxHeight-t.maxHeight*e.transform.k)),n.attr("transform",e.transform)}))}"enabled"===P?a():"enable-on-click"===P&&r.on("click",()=>a());let{width:i,height:l}=e.getBoundingClientRect(),s=ev.current;s.containerWidth!==i&&i<=s.maxWidth&&Q(i),s.containerHeight!==l&&l<=s.maxHeight&&ee(l)},100),[eM,P]),eN=(0,a.useCallback)(()=>{let e=ea.current.nodes(),n=ea.current.edges();e.forEach(e=>{r.some(t=>t.id===e)||ea.current.removeNode(e)}),n.forEach(e=>{t.some(t=>t.from===e.v&&t.to===e.w)||ea.current.removeEdge(e.v,e.w)}),r.forEach(e=>{let t=ea.current.nodes().find(t=>e.id===t);if(t&&ea.current.node(t)){let{width:r,height:n,x:a,y:i}=ea.current.node(t);ea.current.setNode(t,{...e,width:r,height:n,x:a,y:i})}else ea.current.setNode(e.id,{...e,width:0,height:0})}),t.forEach(e=>{ea.current.setEdge(e.from,e.to,{...e,label:e.label,width:0,height:0,labelpos:E,labeloffset:B,weight:S,minlen:N})})},[t,r,E,B,S,N]),e$=(0,a.useMemo)(()=>g()(()=>{f().layout(ea.current);let{height:e,width:t}=ea.current.graph(),r=Math.max(0,e||0);if(el(Math.max(0,t||0)),ed(r),eo(ea.current.nodes()),eh(ea.current.edges()),!ep.current){let e=ea.current.nodes();e.length>0&&e.some(e=>{let t=ea.current.node(e);return t&&t.width>0&&t.height>0})&&(ew.current+=1),(ew.current>=2||0===e.length)&&(ep.current=!0,em(!0))}},250,{leading:!0}),[]);(0,a.useEffect)(()=>(ea.current.setGraph({rankdir:h,align:m,nodesep:p,edgesep:k,ranksep:w,marginx:b,marginy:y,acyclicer:v,ranker:M}),eN(),e$(),e$.cancel),[v,m,h,k,b,y,p,w,M,eN,e$]);let eS=(0,a.useCallback)((e,t)=>(ea.current.setNode(e,t),e$(),ep.current||ek.current||(ek.current=!0,queueMicrotask(()=>{ek.current=!1,e$.flush()})),ea.current),[e$]),eA=(0,a.useCallback)((e,t)=>(ea.current.setEdge(e,t),e$(),ea.current),[e$]);return(0,n.jsxs)(W.m,{handle:et,className:s()(et.active?er.fullscreen:er.root),children:[U&&(0,n.jsx)(_.Ay,{title:en("dependencyGraph.fullscreenTooltip"),children:(0,n.jsx)(C.A,{className:er.fullscreenButton,onClick:et.active?et.exit:et.enter,children:et.active?(0,n.jsx)(T.default,{}):(0,n.jsx)(G.default,{})})}),(0,n.jsx)("div",{ref:eB,style:{width:"100%",height:"100%",visibility:ef?"visible":"hidden"},children:(0,n.jsxs)("svg",{...V,width:"100%",height:eE,viewBox:`0 0 ${eb} ${ey}`,id:I,children:[(0,n.jsxs)("defs",{children:[(0,n.jsx)("marker",{id:$,viewBox:"0 0 24 24",markerWidth:"14",markerHeight:"14",refX:"16",refY:"12",orient:"auto",markerUnits:"strokeWidth",children:(0,n.jsx)("path",{fill:Y.palette.textSubtle,d:"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"})}),D]}),!eg&&(0,n.jsx)("style",{children:`#${I} * { transition: none !important; }`}),(0,n.jsx)("g",{id:F,children:(0,n.jsxs)("svg",{width:ei,height:es,y:ey/2-es/2,x:eb/2-ei/2,viewBox:`0 0 ${ei} ${es}`,children:[ec.map(e=>{let t=ea.current.edge(e);return t?A?A({edge:t,id:e}):(0,n.jsx)(H,{id:e,setEdge:eA,render:R,edge:t,curve:X,showArrowHeads:z},`${e.v}-${e.w}`):null}),eu.map(e=>{let t=ea.current.node(e);return t?(0,n.jsx)(j,{setNode:eS,render:l,node:t},e):null})]})})]})})]})}}}]);
|
|
2
|
+
//# sourceMappingURL=7632.3917bed33d55.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/7632.3917bed33d55.chunk.js","sources":["webpack://techdocs-cli-embedded-app/../core-components/src/components/DependencyGraph/DefaultNode.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/DependencyGraph/Node.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/DependencyGraph/constants.ts","webpack://techdocs-cli-embedded-app/../core-components/src/components/DependencyGraph/DefaultLabel.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/DependencyGraph/Edge.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/components/DependencyGraph/DependencyGraphContent.tsx"],"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 { useState, useRef, useLayoutEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { DependencyGraphTypes as Types } from './types';\n\n/** @public */\nexport type DependencyGraphDefaultNodeClassKey = 'node' | 'text';\n\nconst useStyles = makeStyles(\n theme => ({\n node: {\n fill: theme.palette.primary.light,\n stroke: theme.palette.primary.light,\n },\n text: {\n fill: theme.palette.primary.contrastText,\n },\n }),\n { name: 'BackstageDependencyGraphDefaultNode' },\n);\n\n/** @public */\nexport function DefaultNode({ node: { id } }: Types.RenderNodeProps) {\n const classes = useStyles();\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const idRef = useRef<SVGTextElement | null>(null);\n\n useLayoutEffect(() => {\n // set the width to the length of the ID\n if (idRef.current) {\n let { height: renderedHeight, width: renderedWidth } =\n idRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n\n if (renderedHeight !== height || renderedWidth !== width) {\n setWidth(renderedWidth);\n setHeight(renderedHeight);\n }\n }\n }, [width, height]);\n\n const padding = 10;\n const paddedWidth = width + padding * 2;\n const paddedHeight = height + padding * 2;\n\n return (\n <g>\n <rect\n className={classes.node}\n width={paddedWidth}\n height={paddedHeight}\n rx={10}\n />\n <text\n ref={idRef}\n className={classes.text}\n y={paddedHeight / 2}\n x={paddedWidth / 2}\n textAnchor=\"middle\"\n alignmentBaseline=\"middle\"\n >\n {id}\n </text>\n </g>\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 { useRef, useLayoutEffect } from 'react';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { DefaultNode } from './DefaultNode';\nimport { DependencyGraphTypes as Types } from './types';\nimport { NODE_TEST_ID } from './constants';\nimport dagre from '@dagrejs/dagre';\n\n/** @public */\nexport type DependencyGraphNodeClassKey = 'node';\n\nconst useStyles = makeStyles(\n theme => ({\n node: {\n transition: `${theme.transitions.duration.shortest}ms`,\n },\n }),\n { name: 'BackstageDependencyGraphNode' },\n);\n\nexport type GraphNode<T> = dagre.Node<Types.DependencyNode<T>>;\n\nexport type NodeComponentProps<T> = {\n node: GraphNode<T>;\n render?: Types.RenderNodeFunction<T>;\n setNode: dagre.graphlib.Graph['setNode'];\n};\n\nconst renderDefault = (props: Types.RenderNodeProps) => (\n <DefaultNode {...props} />\n);\n\nexport function Node<T>({\n render = renderDefault,\n setNode,\n node,\n}: NodeComponentProps<T>) {\n const { width, height, x = 0, y = 0 } = node;\n const nodeProps: Types.DependencyNode<T> = node;\n const classes = useStyles();\n const nodeRef = useRef<SVGGElement | null>(null);\n\n useLayoutEffect(() => {\n // set the node width to the actual rendered width to properly layout graph\n if (nodeRef.current) {\n let { height: renderedHeight, width: renderedWidth } =\n nodeRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n\n if (renderedHeight !== height || renderedWidth !== width) {\n setNode(node.id, {\n ...node,\n height: renderedHeight,\n width: renderedWidth,\n });\n }\n }\n }, [node, width, height, setNode]);\n\n return (\n <g\n ref={nodeRef}\n data-testid={NODE_TEST_ID}\n className={classes.node}\n transform={`translate(${x - width / 2},${y - height / 2})`}\n >\n {render({ node: nodeProps })}\n </g>\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\nexport const ARROW_MARKER_ID = 'arrow-marker';\n\nexport const NODE_TEST_ID = 'node';\nexport const EDGE_TEST_ID = 'edge';\nexport const LABEL_TEST_ID = 'label';\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 makeStyles from '@material-ui/core/styles/makeStyles';\nimport { DependencyGraphTypes as Types } from './types';\n\n/** @public */\nexport type DependencyGraphDefaultLabelClassKey = 'text';\n\nconst useStyles = makeStyles(\n theme => ({\n text: {\n fill: theme.palette.textContrast,\n },\n }),\n { name: 'BackstageDependencyGraphDefaultLabel' },\n);\n\n/** @public */\nexport function DefaultLabel({ edge: { label } }: Types.RenderLabelProps) {\n const classes = useStyles();\n return (\n <text className={classes.text} textAnchor=\"middle\">\n {label}\n </text>\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 { useRef, useLayoutEffect, useMemo } from 'react';\nimport * as d3Shape from 'd3-shape';\nimport isFinite from 'lodash/isFinite';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport { DependencyGraphTypes as Types } from './types';\nimport { ARROW_MARKER_ID, EDGE_TEST_ID, LABEL_TEST_ID } from './constants';\nimport { DefaultLabel } from './DefaultLabel';\nimport dagre from '@dagrejs/dagre';\n\n/* Based on: https://github.com/dagrejs/dagre/wiki#configuring-the-layout */\nexport type EdgeProperties = {\n label?: string;\n width?: number;\n height?: number;\n labeloffset?: number;\n labelpos?: Types.LabelPosition;\n minlen?: number;\n weight?: number;\n};\nexport type GraphEdge<T> = Types.DependencyEdge<T> &\n dagre.GraphEdge &\n EdgeProperties;\n\n/** @public */\nexport type DependencyGraphEdgeClassKey = 'path' | 'label';\n\nconst useStyles = makeStyles(\n theme => ({\n path: {\n strokeWidth: 1.3,\n stroke: theme.palette.textSubtle,\n fill: 'none',\n transition: `${theme.transitions.duration.shortest}ms`,\n },\n label: {\n transition: `${theme.transitions.duration.shortest}ms`,\n },\n }),\n { name: 'BackstageDependencyGraphEdge' },\n);\n\ntype EdgePoint = dagre.GraphEdge['points'][0];\n\n/** @public */\nexport type EdgeComponentProps<T = unknown> = {\n id: dagre.Edge;\n edge: GraphEdge<T>;\n render?: Types.RenderLabelFunction<T>;\n setEdge: (\n id: dagre.Edge,\n edge: Types.DependencyEdge<T>,\n ) => dagre.graphlib.Graph<{}>;\n curve: 'curveStepBefore' | 'curveMonotoneX';\n showArrowHeads?: boolean;\n};\n\nconst renderDefault = (props: Types.RenderLabelProps<unknown>) => (\n <DefaultLabel {...props} />\n);\n\nexport function Edge<EdgeData>({\n render = renderDefault,\n setEdge,\n id,\n edge,\n curve,\n showArrowHeads,\n}: EdgeComponentProps<EdgeData>) {\n const { x = 0, y = 0, width, height, points } = edge;\n const labelProps: Types.DependencyEdge<EdgeData> = edge;\n const classes = useStyles();\n\n const labelRef = useRef<SVGGElement>(null);\n\n useLayoutEffect(() => {\n // set the label width to the actual rendered width to properly layout graph\n if (labelRef.current) {\n let { height: renderedHeight, width: renderedWidth } =\n labelRef.current.getBBox();\n renderedHeight = Math.round(renderedHeight);\n renderedWidth = Math.round(renderedWidth);\n\n if (renderedHeight !== height || renderedWidth !== width) {\n setEdge(id, {\n ...edge,\n height: renderedHeight,\n width: renderedWidth,\n });\n }\n }\n }, [edge, height, width, setEdge, id]);\n\n let path: string = '';\n\n const createPath = useMemo(\n () =>\n d3Shape\n .line<EdgePoint>()\n .x(d => d.x)\n .y(d => d.y)\n .curve(d3Shape[curve]),\n [curve],\n );\n\n if (points) {\n const finitePoints = points.filter(\n (point: EdgePoint) => isFinite(point.x) && isFinite(point.y),\n );\n path = createPath(finitePoints) || '';\n }\n\n return (\n <>\n {path && (\n <path\n data-testid={EDGE_TEST_ID}\n className={classes.path}\n markerEnd={showArrowHeads ? `url(#${ARROW_MARKER_ID})` : undefined}\n d={path}\n />\n )}\n {labelProps.label ? (\n <g\n ref={labelRef}\n data-testid={LABEL_TEST_ID}\n className={classes.label}\n transform={`translate(${x},${y})`}\n >\n {render({ edge: labelProps })}\n </g>\n ) : null}\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 {\n SVGProps,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport useMeasure from 'react-use/esm/useMeasure';\nimport classNames from 'classnames';\nimport { once } from 'lodash';\nimport * as d3Zoom from 'd3-zoom';\nimport * as d3Selection from 'd3-selection';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport dagre from '@dagrejs/dagre';\nimport debounce from 'lodash/debounce';\nimport { DependencyGraphTypes as Types } from './types';\nimport { Node } from './Node';\nimport { Edge, GraphEdge } from './Edge';\nimport { ARROW_MARKER_ID } from './constants';\nimport IconButton from '@material-ui/core/IconButton';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\nimport FullscreenExitIcon from '@material-ui/icons/FullscreenExit';\nimport { FullScreen, useFullScreenHandle } from 'react-full-screen';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { coreComponentsTranslationRef } from '../../translation';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n fullscreenButton: {\n position: 'absolute',\n right: 0,\n },\n root: {\n overflow: 'hidden',\n minHeight: '100%',\n minWidth: '100%',\n },\n fixedHeight: {\n maxHeight: '100%',\n },\n fullscreen: {\n backgroundColor: theme.palette.background.paper,\n },\n}));\n\n/**\n * Properties of {@link DependencyGraph}\n *\n * @public\n * @remarks\n * `<NodeData>` and `<EdgeData>` are useful when rendering custom or edge labels\n */\nexport interface DependencyGraphProps<NodeData, EdgeData>\n extends SVGProps<SVGSVGElement> {\n /**\n * Edges of graph\n */\n edges: Types.DependencyEdge<EdgeData>[];\n /**\n * Nodes of Graph\n */\n nodes: Types.DependencyNode<NodeData>[];\n /**\n * Graph {@link DependencyGraphTypes.(Direction:namespace) | direction}\n *\n * @remarks\n *\n * Default: `DependencyGraphTypes.Direction.TOP_BOTTOM`\n */\n direction?: Types.Direction;\n /**\n * Node {@link DependencyGraphTypes.(Alignment:namespace) | alignment}\n */\n align?: Types.Alignment;\n /**\n * Margin between nodes on each rank\n *\n * @remarks\n *\n * Default: 50\n */\n nodeMargin?: number;\n /**\n * Margin between edges\n *\n * @remarks\n *\n * Default: 10\n */\n edgeMargin?: number;\n /**\n * Margin between each rank\n *\n * @remarks\n *\n * Default: 50\n */\n rankMargin?: number;\n /**\n * Margin on left and right of whole graph\n *\n * @remarks\n *\n * Default: 0\n */\n paddingX?: number;\n /**\n * Margin on top and bottom of whole graph\n *\n * @remarks\n *\n * Default: 0\n */\n paddingY?: number;\n /**\n * Heuristic used to find set of edges that will make graph acyclic\n */\n acyclicer?: 'greedy';\n /**\n * {@link DependencyGraphTypes.(Ranker:namespace) | Algorithm} used to rank nodes\n *\n * @remarks\n *\n * Default: `DependencyGraphTypes.Ranker.NETWORK_SIMPLEX`\n */\n ranker?: Types.Ranker;\n /**\n * {@link DependencyGraphTypes.(LabelPosition:namespace) | Position} of label in relation to edge\n *\n * @remarks\n *\n * Default: `DependencyGraphTypes.LabelPosition.RIGHT`\n */\n labelPosition?: Types.LabelPosition;\n /**\n * How much to move label away from edge\n *\n * @remarks\n *\n * Applies only when {@link DependencyGraphProps.labelPosition} is `DependencyGraphTypes.LabelPosition.LEFT` or\n * `DependencyGraphTypes.LabelPosition.RIGHT`\n */\n labelOffset?: number;\n /**\n * Minimum number of ranks to keep between connected nodes\n */\n edgeRanks?: number;\n /**\n * Weight applied to edges in graph\n */\n edgeWeight?: number;\n /**\n * Custom edge rendering component\n */\n renderEdge?: Types.RenderEdgeFunction<EdgeData>;\n /**\n * Custom node rendering component\n */\n renderNode?: Types.RenderNodeFunction<NodeData>;\n /**\n * Custom label rendering component\n */\n renderLabel?: Types.RenderLabelFunction<EdgeData>;\n /**\n * {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs | Defs} shared by rendered SVG to be used by\n * {@link DependencyGraphProps.renderNode} and/or {@link DependencyGraphProps.renderLabel}\n */\n defs?: JSX.Element | JSX.Element[];\n /**\n * Controls zoom behavior of graph\n *\n * @remarks\n *\n * Default: `enabled`\n */\n zoom?: 'enabled' | 'disabled' | 'enable-on-click';\n /**\n * A factory for curve generators addressing both lines and areas.\n *\n * @remarks\n *\n * Default: 'curveMonotoneX'\n */\n curve?: 'curveStepBefore' | 'curveMonotoneX';\n /**\n * Controls if the arrow heads should be rendered or not.\n *\n * Default: false\n */\n showArrowHeads?: boolean;\n /**\n * Controls if the graph should be contained or grow\n *\n * @remarks\n *\n * Default: 'grow'\n */\n fit?: 'grow' | 'contain';\n /**\n * Controls if user can toggle fullscreen mode\n *\n * @remarks\n *\n * Default: true\n */\n allowFullscreen?: boolean;\n}\n\nconst WORKSPACE_ID = 'workspace';\nconst DEPENDENCY_GRAPH_SVG = 'dependency-graph';\n\n/**\n * Graph component used to visualize relations between entities\n *\n * @public\n */\nexport function DependencyGraph<NodeData, EdgeData>(\n props: DependencyGraphProps<NodeData, EdgeData>,\n) {\n const {\n edges,\n nodes,\n renderNode,\n direction = Types.Direction.TOP_BOTTOM,\n align,\n nodeMargin = 50,\n edgeMargin = 10,\n rankMargin = 50,\n paddingX = 0,\n paddingY = 0,\n acyclicer,\n ranker = Types.Ranker.NETWORK_SIMPLEX,\n labelPosition = Types.LabelPosition.RIGHT,\n labelOffset = 10,\n edgeRanks = 1,\n edgeWeight = 1,\n renderEdge,\n renderLabel,\n defs,\n zoom = 'enabled',\n curve = 'curveMonotoneX',\n showArrowHeads = false,\n fit = 'grow',\n allowFullscreen = true,\n ...svgProps\n } = props;\n const theme = useTheme();\n const [containerWidth, setContainerWidth] = useState<number>(100);\n const [containerHeight, setContainerHeight] = useState<number>(100);\n const fullScreenHandle = useFullScreenHandle();\n const styles = useStyles();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n\n const graph = useRef<dagre.graphlib.Graph<Types.DependencyNode<NodeData>>>(\n new dagre.graphlib.Graph(),\n );\n const [graphWidth, setGraphWidth] = useState<number>(\n graph.current.graph()?.width || 0,\n );\n const [graphHeight, setGraphHeight] = useState<number>(\n graph.current.graph()?.height || 0,\n );\n const [graphNodes, setGraphNodes] = useState<string[]>([]);\n const [graphEdges, setGraphEdges] = useState<dagre.Edge[]>([]);\n const [settled, setSettled] = useState(false);\n const [transitionsReady, setTransitionsReady] = useState(false);\n const settledRef = useRef(false);\n const pendingInitialFlush = useRef(false);\n const measuredLayoutCount = useRef(0);\n\n useEffect(() => {\n if (settled && !transitionsReady) {\n const frame = requestAnimationFrame(() => {\n setTransitionsReady(true);\n });\n return () => cancelAnimationFrame(frame);\n }\n return undefined;\n }, [settled, transitionsReady]);\n\n // Fallback: if getBBox() returns zero dimensions (e.g. in jsdom or hidden\n // containers), setNode is never called and the normal settlement path never\n // triggers. This timeout ensures the graph still becomes visible.\n useEffect(() => {\n if (graphNodes.length > 0 && !settledRef.current) {\n const timeout = setTimeout(() => {\n if (!settledRef.current) {\n settledRef.current = true;\n setSettled(true);\n }\n }, 500);\n return () => clearTimeout(timeout);\n }\n return undefined;\n }, [graphNodes]);\n\n const maxWidth = Math.max(graphWidth, containerWidth);\n const maxHeight = Math.max(graphHeight, containerHeight);\n\n const dimensionsRef = useRef({\n containerWidth,\n containerHeight,\n maxWidth,\n maxHeight,\n });\n dimensionsRef.current = {\n containerWidth,\n containerHeight,\n maxWidth,\n maxHeight,\n };\n\n const [_measureRef] = useMeasure();\n const measureRef = once(_measureRef);\n\n const scalableHeight =\n fit === 'grow' && !fullScreenHandle.active ? maxHeight : '100%';\n\n const containerRef = useMemo(\n () =>\n debounce((root: HTMLDivElement) => {\n if (!root) {\n return;\n }\n measureRef(root);\n\n // Set up zooming + panning\n const node: SVGSVGElement = root.querySelector(\n `svg#${DEPENDENCY_GRAPH_SVG}`,\n ) as SVGSVGElement;\n if (!node) {\n return;\n }\n const container = d3Selection.select<SVGSVGElement, null>(node);\n const workspace = d3Selection.select(node.getElementById(WORKSPACE_ID));\n\n function enableZoom() {\n container.call(\n d3Zoom\n .zoom<SVGSVGElement, null>()\n .scaleExtent([1, Infinity])\n .on('zoom', event => {\n const dims = dimensionsRef.current;\n event.transform.x = Math.min(\n 0,\n Math.max(\n event.transform.x,\n dims.maxWidth - dims.maxWidth * event.transform.k,\n ),\n );\n event.transform.y = Math.min(\n 0,\n Math.max(\n event.transform.y,\n dims.maxHeight - dims.maxHeight * event.transform.k,\n ),\n );\n workspace.attr('transform', event.transform);\n }),\n );\n }\n\n if (zoom === 'enabled') {\n enableZoom();\n } else if (zoom === 'enable-on-click') {\n container.on('click', () => enableZoom());\n }\n\n const { width: newContainerWidth, height: newContainerHeight } =\n root.getBoundingClientRect();\n const dims = dimensionsRef.current;\n if (\n dims.containerWidth !== newContainerWidth &&\n newContainerWidth <= dims.maxWidth\n ) {\n setContainerWidth(newContainerWidth);\n }\n if (\n dims.containerHeight !== newContainerHeight &&\n newContainerHeight <= dims.maxHeight\n ) {\n setContainerHeight(newContainerHeight);\n }\n }, 100),\n [measureRef, zoom],\n );\n\n const setNodesAndEdges = useCallback(() => {\n // Cleaning up lingering nodes and edges\n const currentGraphNodes = graph.current.nodes();\n const currentGraphEdges = graph.current.edges();\n\n currentGraphNodes.forEach(nodeId => {\n const remainingNode = nodes.some(node => node.id === nodeId);\n if (!remainingNode) {\n graph.current.removeNode(nodeId);\n }\n });\n\n currentGraphEdges.forEach(e => {\n const remainingEdge = edges.some(\n edge => edge.from === e.v && edge.to === e.w,\n );\n if (!remainingEdge) {\n graph.current.removeEdge(e.v, e.w);\n }\n });\n\n // Adding/updating nodes and edges\n nodes.forEach(node => {\n const existingNode = graph.current\n .nodes()\n .find(nodeId => node.id === nodeId);\n\n if (existingNode && graph.current.node(existingNode)) {\n const { width, height, x, y } = graph.current.node(existingNode);\n graph.current.setNode(existingNode, { ...node, width, height, x, y });\n } else {\n graph.current.setNode(node.id, { ...node, width: 0, height: 0 });\n }\n });\n\n edges.forEach(e => {\n graph.current.setEdge(e.from, e.to, {\n ...e,\n label: e.label,\n width: 0,\n height: 0,\n labelpos: labelPosition,\n labeloffset: labelOffset,\n weight: edgeWeight,\n minlen: edgeRanks,\n });\n });\n }, [edges, nodes, labelPosition, labelOffset, edgeWeight, edgeRanks]);\n\n const updateGraph = useMemo(\n () =>\n debounce(\n () => {\n dagre.layout(graph.current);\n const { height, width } = graph.current.graph();\n const newHeight = Math.max(0, height || 0);\n const newWidth = Math.max(0, width || 0);\n setGraphWidth(newWidth);\n setGraphHeight(newHeight);\n\n setGraphNodes(graph.current.nodes());\n setGraphEdges(graph.current.edges());\n\n if (!settledRef.current) {\n const nodeIds = graph.current.nodes();\n const hasMeasuredNodes =\n nodeIds.length > 0 &&\n nodeIds.some(id => {\n const n = graph.current.node(id);\n return n && n.width > 0 && n.height > 0;\n });\n if (hasMeasuredNodes) {\n measuredLayoutCount.current += 1;\n }\n if (measuredLayoutCount.current >= 2 || nodeIds.length === 0) {\n settledRef.current = true;\n setSettled(true);\n }\n }\n },\n 250,\n { leading: true },\n ),\n [],\n );\n\n useEffect(() => {\n graph.current.setGraph({\n rankdir: direction,\n align,\n nodesep: nodeMargin,\n edgesep: edgeMargin,\n ranksep: rankMargin,\n marginx: paddingX,\n marginy: paddingY,\n acyclicer,\n ranker,\n });\n\n setNodesAndEdges();\n updateGraph();\n\n return updateGraph.cancel;\n }, [\n acyclicer,\n align,\n direction,\n edgeMargin,\n paddingX,\n paddingY,\n nodeMargin,\n rankMargin,\n ranker,\n setNodesAndEdges,\n updateGraph,\n ]);\n\n const setNode = useCallback(\n (id: string, node: Types.DependencyNode<NodeData>) => {\n graph.current.setNode(id, node);\n updateGraph();\n if (!settledRef.current && !pendingInitialFlush.current) {\n pendingInitialFlush.current = true;\n queueMicrotask(() => {\n pendingInitialFlush.current = false;\n updateGraph.flush();\n });\n }\n return graph.current;\n },\n [updateGraph],\n );\n\n const setEdge = useCallback(\n (id: dagre.Edge, edge: Types.DependencyEdge<EdgeData>) => {\n graph.current.setEdge(id, edge);\n updateGraph();\n return graph.current;\n },\n [updateGraph],\n );\n\n return (\n <FullScreen\n handle={fullScreenHandle}\n className={classNames(\n fullScreenHandle.active ? styles.fullscreen : styles.root,\n )}\n >\n {allowFullscreen && (\n <Tooltip title={t('dependencyGraph.fullscreenTooltip')}>\n <IconButton\n className={styles.fullscreenButton}\n onClick={\n fullScreenHandle.active\n ? fullScreenHandle.exit\n : fullScreenHandle.enter\n }\n >\n {fullScreenHandle.active ? (\n <FullscreenExitIcon />\n ) : (\n <FullscreenIcon />\n )}\n </IconButton>\n </Tooltip>\n )}\n\n <div\n ref={containerRef}\n style={{\n width: '100%',\n height: '100%',\n visibility: settled ? 'visible' : 'hidden',\n }}\n >\n <svg\n {...svgProps}\n width=\"100%\"\n height={scalableHeight}\n viewBox={`0 0 ${maxWidth} ${maxHeight}`}\n id={DEPENDENCY_GRAPH_SVG}\n >\n <defs>\n <marker\n id={ARROW_MARKER_ID}\n viewBox=\"0 0 24 24\"\n markerWidth=\"14\"\n markerHeight=\"14\"\n refX=\"16\"\n refY=\"12\"\n orient=\"auto\"\n markerUnits=\"strokeWidth\"\n >\n <path\n fill={theme.palette.textSubtle}\n d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n />\n </marker>\n {defs}\n </defs>\n {!transitionsReady && (\n <style>{`#${DEPENDENCY_GRAPH_SVG} * { transition: none !important; }`}</style>\n )}\n <g id={WORKSPACE_ID}>\n <svg\n width={graphWidth}\n height={graphHeight}\n y={maxHeight / 2 - graphHeight / 2}\n x={maxWidth / 2 - graphWidth / 2}\n viewBox={`0 0 ${graphWidth} ${graphHeight}`}\n >\n {graphEdges.map(e => {\n const edge = graph.current.edge(e) as GraphEdge<EdgeData>;\n if (!edge) return null;\n if (renderEdge) return renderEdge({ edge, id: e });\n\n return (\n <Edge\n key={`${e.v}-${e.w}`}\n id={e}\n setEdge={setEdge}\n render={renderLabel}\n edge={edge}\n curve={curve}\n showArrowHeads={showArrowHeads}\n />\n );\n })}\n {graphNodes.map((id: string) => {\n const node = graph.current.node(id);\n if (!node) return null;\n return (\n <Node\n key={id}\n setNode={setNode}\n render={renderNode}\n node={node}\n />\n );\n })}\n </svg>\n </g>\n </svg>\n </div>\n </FullScreen>\n );\n}\n"],"names":["useStyles","makeStyles","theme","DefaultNode","id","classes","width","setWidth","useState","height","setHeight","idRef","useRef","useLayoutEffect","renderedHeight","renderedWidth","Math","paddedWidth","padding","paddedHeight","renderDefault","props","Node","render","setNode","node","x","y","nodeRef","NODE_TEST_ID","ARROW_MARKER_ID","DefaultLabel","label","Edge","setEdge","edge","curve","showArrowHeads","points","labelRef","path","createPath","useMemo","d3Shape","d","point","isFinite","EDGE_TEST_ID","undefined","labelProps","LABEL_TEST_ID","WORKSPACE_ID","DEPENDENCY_GRAPH_SVG","DependencyGraph","edges","nodes","renderNode","direction","Types","align","nodeMargin","edgeMargin","rankMargin","paddingX","paddingY","acyclicer","ranker","labelPosition","labelOffset","edgeRanks","edgeWeight","renderEdge","renderLabel","defs","zoom","fit","allowFullscreen","svgProps","useTheme","containerWidth","setContainerWidth","containerHeight","setContainerHeight","fullScreenHandle","useFullScreenHandle","styles","t","useTranslationRef","coreComponentsTranslationRef","graph","dagre","graphWidth","setGraphWidth","graphHeight","setGraphHeight","graphNodes","setGraphNodes","graphEdges","setGraphEdges","settled","setSettled","transitionsReady","setTransitionsReady","settledRef","pendingInitialFlush","measuredLayoutCount","useEffect","frame","requestAnimationFrame","cancelAnimationFrame","timeout","setTimeout","clearTimeout","maxWidth","maxHeight","dimensionsRef","_measureRef","useMeasure","measureRef","once","scalableHeight","containerRef","debounce","root","container","d3Selection","workspace","enableZoom","d3Zoom","Infinity","event","dims","newContainerWidth","newContainerHeight","setNodesAndEdges","useCallback","currentGraphNodes","currentGraphEdges","nodeId","e","existingNode","updateGraph","newHeight","nodeIds","hasMeasuredNodes","n","queueMicrotask","FullScreen","classNames","Tooltip","IconButton","FullscreenExitIcon","FullscreenIcon"],"mappings":"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"}
|