@aiderdesk/aiderdesk 0.67.0 → 0.68.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/out/renderer/assets/{arc-BnPy4nhx.js → arc-Cju-fnUJ.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-3BPJPVTR-_SwpsbSs.js → architectureDiagram-3BPJPVTR-hVK8LPcC.js} +3 -3
- package/out/renderer/assets/{blockDiagram-GPEHLZMM-D8Bc_xCY.js → blockDiagram-GPEHLZMM-B04Ulwbh.js} +4 -4
- package/out/renderer/assets/{c4Diagram-AAUBKEIU-Ddic5IpI.js → c4Diagram-AAUBKEIU-DSP8EUB6.js} +2 -2
- package/out/renderer/assets/{channel-I2sEi2rW.js → channel-CM1Bn7Zy.js} +1 -1
- package/out/renderer/assets/{chunk-2J33WTMH-Cqrw7IHw.js → chunk-2J33WTMH-Bd_3pGvb.js} +1 -1
- package/out/renderer/assets/{chunk-4BX2VUAB-DKY4go9E.js → chunk-4BX2VUAB-Csrpxz3N.js} +1 -1
- package/out/renderer/assets/{chunk-55IACEB6-COO6Gc0F.js → chunk-55IACEB6-BB7RTMZZ.js} +1 -1
- package/out/renderer/assets/{chunk-727SXJPM-Bu8zhvGn.js → chunk-727SXJPM-D6Y9H3aA.js} +5 -5
- package/out/renderer/assets/{chunk-AQP2D5EJ-JHXEk1U1.js → chunk-AQP2D5EJ-D5f9Zgag.js} +3 -3
- package/out/renderer/assets/{chunk-FMBD7UC4-BqbYNISq.js → chunk-FMBD7UC4-Bstyl64g.js} +1 -1
- package/out/renderer/assets/{chunk-ND2GUHAM-D29ZgnDp.js → chunk-ND2GUHAM-CVaUW2HV.js} +1 -1
- package/out/renderer/assets/{chunk-QZHKN3VN-B-pbtAbR.js → chunk-QZHKN3VN-AMfy7Nbn.js} +1 -1
- package/out/renderer/assets/{classDiagram-4FO5ZUOK-B7_tIdbP.js → classDiagram-4FO5ZUOK-CPmL8t3E.js} +6 -6
- package/out/renderer/assets/{classDiagram-v2-Q7XG4LA2-B7_tIdbP.js → classDiagram-v2-Q7XG4LA2-CPmL8t3E.js} +6 -6
- package/out/renderer/assets/{cose-bilkent-S5V4N54A-CGNgxRV6.js → cose-bilkent-S5V4N54A-px_eCLil.js} +1 -1
- package/out/renderer/assets/{dagre-BM42HDAG-DB-tI7Ml.js → dagre-BM42HDAG-c63xhfuM.js} +3 -3
- package/out/renderer/assets/{diagram-2AECGRRQ-Cdwrgy7R.js → diagram-2AECGRRQ-DISIyKng.js} +3 -3
- package/out/renderer/assets/{diagram-5GNKFQAL-BnvZ78_N.js → diagram-5GNKFQAL-BSkGLBgD.js} +4 -4
- package/out/renderer/assets/{diagram-KO2AKTUF-VUrfwRCk.js → diagram-KO2AKTUF-xiSl-Lui.js} +3 -3
- package/out/renderer/assets/{diagram-LMA3HP47-_Vo8GrFC.js → diagram-LMA3HP47-lJ69G8gJ.js} +3 -3
- package/out/renderer/assets/{diagram-OG6HWLK6-CoLz9kio.js → diagram-OG6HWLK6-AoDpX3QT.js} +4 -4
- package/out/renderer/assets/{erDiagram-TEJ5UH35-B3Bg3gW1.js → erDiagram-TEJ5UH35-O7UNRkDw.js} +4 -4
- package/out/renderer/assets/{flowDiagram-I6XJVG4X-BgyAk0Xe.js → flowDiagram-I6XJVG4X-Dd9XTtIY.js} +6 -6
- package/out/renderer/assets/{ganttDiagram-6RSMTGT7-NnVRwQPs.js → ganttDiagram-6RSMTGT7-Bc7FUk0Y.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-PVQCEYII-C4vrRnDw.js → gitGraphDiagram-PVQCEYII-DwEksAhs.js} +4 -4
- package/out/renderer/assets/{graph-BZvTCUpv.js → graph-BPvbzKl1.js} +1 -1
- package/out/renderer/assets/{index-P63PgYUG.js → index-BmQl7j8n.js} +1607 -1288
- package/out/renderer/assets/{index-zdiQSGqQ.css → index-z-BItG-u.css} +8 -0
- package/out/renderer/assets/{infoDiagram-5YYISTIA-zTriWVJJ.js → infoDiagram-5YYISTIA-DvophXOV.js} +2 -2
- package/out/renderer/assets/{ishikawaDiagram-YF4QCWOH-DHO6Yeea.js → ishikawaDiagram-YF4QCWOH-CDT4EDOF.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-JHISSGLW-CZsRcg2X.js → journeyDiagram-JHISSGLW-B5FCPOti.js} +4 -4
- package/out/renderer/assets/jsx-dev-runtime-DuBp-Rhq.js +49 -0
- package/out/renderer/assets/{kanban-definition-UN3LZRKU-DSpAeh8p.js → kanban-definition-UN3LZRKU-CM_TQl4S.js} +2 -2
- package/out/renderer/assets/{layout-B5A8fT-Z.js → layout-DdBKGefG.js} +2 -2
- package/out/renderer/assets/{mindmap-definition-RKZ34NQL-Bns9Ab8p.js → mindmap-definition-RKZ34NQL-BeGrpK-H.js} +3 -3
- package/out/renderer/assets/{pieDiagram-4H26LBE5-BX36DY7W.js → pieDiagram-4H26LBE5-CnMhRK3I.js} +4 -4
- package/out/renderer/assets/{quadrantDiagram-W4KKPZXB-DuD2qSni.js → quadrantDiagram-W4KKPZXB-O_Q_JI2s.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-4Y6WPE33-Th2uknlw.js → requirementDiagram-4Y6WPE33-vf9wLf04.js} +3 -3
- package/out/renderer/assets/{sankeyDiagram-5OEKKPKP-DP3WODC7.js → sankeyDiagram-5OEKKPKP-CE4n-uB4.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-3UESZ5HK-BvpGEq-v.js → sequenceDiagram-3UESZ5HK-DebEZhql.js} +3 -3
- package/out/renderer/assets/{stateDiagram-AJRCARHV-Btrfma35.js → stateDiagram-AJRCARHV-DCsVosBt.js} +6 -6
- package/out/renderer/assets/{stateDiagram-v2-BHNVJYJU-v-8JiozM.js → stateDiagram-v2-BHNVJYJU-8oguEvt8.js} +4 -4
- package/out/renderer/assets/{timeline-definition-PNZ67QCA-prZy7cGx.js → timeline-definition-PNZ67QCA-CSfXVnNf.js} +2 -2
- package/out/renderer/assets/{vennDiagram-CIIHVFJN-XCVp5OjS.js → vennDiagram-CIIHVFJN-DxOEVeC4.js} +1 -1
- package/out/renderer/assets/{wardley-L42UT6IY-FZSNLjCs.js → wardley-L42UT6IY-Cz6T4MDn.js} +1 -1
- package/out/renderer/assets/{wardleyDiagram-YWT4CUSO-Cla_7ryL.js → wardleyDiagram-YWT4CUSO-B4sA3LOJ.js} +3 -3
- package/out/renderer/assets/{xychartDiagram-2RQKCTM6-CKvwGbhk.js → xychartDiagram-2RQKCTM6-DbJjruqS.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/out/resources/skills/extension-creator/SKILL.md +24 -0
- package/out/resources/skills/extension-creator/references/examples-gallery.md +11 -0
- package/out/resources/skills/extension-creator/references/extension-interface.md +4 -0
- package/out/resources/skills/extension-creator/references/external-libraries.md +159 -0
- package/out/resources/skills/extension-creator/references/ui-components.md +24 -0
- package/out/runner.js +228 -33
- package/package.json +2 -2
|
@@ -3224,6 +3224,10 @@ html {
|
|
|
3224
3224
|
cursor: grab;
|
|
3225
3225
|
}
|
|
3226
3226
|
|
|
3227
|
+
.cursor-help {
|
|
3228
|
+
cursor: help;
|
|
3229
|
+
}
|
|
3230
|
+
|
|
3227
3231
|
.cursor-not-allowed {
|
|
3228
3232
|
cursor: not-allowed;
|
|
3229
3233
|
}
|
|
@@ -9501,6 +9505,10 @@ body.theme-light .context-dimmed {
|
|
|
9501
9505
|
cursor: grab;
|
|
9502
9506
|
}
|
|
9503
9507
|
|
|
9508
|
+
.cursor-help {
|
|
9509
|
+
cursor: help;
|
|
9510
|
+
}
|
|
9511
|
+
|
|
9504
9512
|
.cursor-not-allowed {
|
|
9505
9513
|
cursor: not-allowed;
|
|
9506
9514
|
}
|
package/out/renderer/assets/{infoDiagram-5YYISTIA-zTriWVJJ.js → infoDiagram-5YYISTIA-DvophXOV.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as __name, l as log, I as selectSvgElement, e as configureSvgSize } from "./index-
|
|
2
|
-
import { p as parse } from "./wardley-L42UT6IY-
|
|
1
|
+
import { _ as __name, l as log, I as selectSvgElement, e as configureSvgSize } from "./index-BmQl7j8n.js";
|
|
2
|
+
import { p as parse } from "./wardley-L42UT6IY-Cz6T4MDn.js";
|
|
3
3
|
var parser = {
|
|
4
4
|
parse: /* @__PURE__ */ __name(async (input) => {
|
|
5
5
|
const ast = await parse("info", input);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as __name, c as getConfig2, R as parseFontSize, I as selectSvgElement, aq as at, z as clear, k as common_default, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, g as getAccDescription, s as setAccDescription, q as getDiagramTitle, e as configureSvgSize } from "./index-
|
|
1
|
+
import { _ as __name, c as getConfig2, R as parseFontSize, I as selectSvgElement, aq as at, z as clear, k as common_default, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, g as getAccDescription, s as setAccDescription, q as getDiagramTitle, e as configureSvgSize } from "./index-BmQl7j8n.js";
|
|
2
2
|
var parser = (function() {
|
|
3
3
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
4
4
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { g as getIconStyles } from "./chunk-FMBD7UC4-
|
|
2
|
-
import { a as drawBackgroundRect, g as getNoteRect, h as drawText, d as drawRect } from "./chunk-ND2GUHAM-
|
|
3
|
-
import { g as getAccDescription, s as setAccDescription, a as getAccTitle, b as setAccTitle, q as getDiagramTitle, p as setDiagramTitle, _ as __name, c as getConfig2, d as select, e as configureSvgSize, z as clear } from "./index-
|
|
4
|
-
import { d as d3arc } from "./arc-
|
|
1
|
+
import { g as getIconStyles } from "./chunk-FMBD7UC4-Bstyl64g.js";
|
|
2
|
+
import { a as drawBackgroundRect, g as getNoteRect, h as drawText, d as drawRect } from "./chunk-ND2GUHAM-CVaUW2HV.js";
|
|
3
|
+
import { g as getAccDescription, s as setAccDescription, a as getAccTitle, b as setAccTitle, q as getDiagramTitle, p as setDiagramTitle, _ as __name, c as getConfig2, d as select, e as configureSvgSize, z as clear } from "./index-BmQl7j8n.js";
|
|
4
|
+
import { d as d3arc } from "./arc-Cju-fnUJ.js";
|
|
5
5
|
var parser = (function() {
|
|
6
6
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
7
7
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { b8 as getDefaultExportFromCjs } from "./index-BmQl7j8n.js";
|
|
2
|
+
function _mergeNamespaces(n, m) {
|
|
3
|
+
for (var i = 0; i < m.length; i++) {
|
|
4
|
+
const e = m[i];
|
|
5
|
+
if (typeof e !== "string" && !Array.isArray(e)) {
|
|
6
|
+
for (const k in e) {
|
|
7
|
+
if (k !== "default" && !(k in n)) {
|
|
8
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
9
|
+
if (d) {
|
|
10
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: () => e[k]
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, { value: "Module" }));
|
|
20
|
+
}
|
|
21
|
+
var jsxDevRuntime$2 = { exports: {} };
|
|
22
|
+
var reactJsxDevRuntime_production = {};
|
|
23
|
+
var hasRequiredReactJsxDevRuntime_production;
|
|
24
|
+
function requireReactJsxDevRuntime_production() {
|
|
25
|
+
if (hasRequiredReactJsxDevRuntime_production) return reactJsxDevRuntime_production;
|
|
26
|
+
hasRequiredReactJsxDevRuntime_production = 1;
|
|
27
|
+
var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment");
|
|
28
|
+
reactJsxDevRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
|
|
29
|
+
reactJsxDevRuntime_production.jsxDEV = void 0;
|
|
30
|
+
return reactJsxDevRuntime_production;
|
|
31
|
+
}
|
|
32
|
+
var hasRequiredJsxDevRuntime;
|
|
33
|
+
function requireJsxDevRuntime() {
|
|
34
|
+
if (hasRequiredJsxDevRuntime) return jsxDevRuntime$2.exports;
|
|
35
|
+
hasRequiredJsxDevRuntime = 1;
|
|
36
|
+
{
|
|
37
|
+
jsxDevRuntime$2.exports = requireReactJsxDevRuntime_production();
|
|
38
|
+
}
|
|
39
|
+
return jsxDevRuntime$2.exports;
|
|
40
|
+
}
|
|
41
|
+
var jsxDevRuntimeExports = requireJsxDevRuntime();
|
|
42
|
+
const jsxDevRuntime = /* @__PURE__ */ getDefaultExportFromCjs(jsxDevRuntimeExports);
|
|
43
|
+
const jsxDevRuntime$1 = /* @__PURE__ */ _mergeNamespaces({
|
|
44
|
+
__proto__: null,
|
|
45
|
+
default: jsxDevRuntime
|
|
46
|
+
}, [jsxDevRuntimeExports]);
|
|
47
|
+
export {
|
|
48
|
+
jsxDevRuntime$1 as j
|
|
49
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as __name, l as log, c as getConfig2, I as selectSvgElement, ak as insertCluster, al as insertNode, am as positionNode, a1 as setupGraphViewbox, G as defaultConfig_default, i as sanitizeText, t as load, J as JSON_SCHEMA, Y as isDark, $ as lighten, a0 as darken } from "./index-
|
|
2
|
-
import { g as getIconStyles } from "./chunk-FMBD7UC4-
|
|
1
|
+
import { _ as __name, l as log, c as getConfig2, I as selectSvgElement, ak as insertCluster, al as insertNode, am as positionNode, a1 as setupGraphViewbox, G as defaultConfig_default, i as sanitizeText, t as load, J as JSON_SCHEMA, Y as isDark, $ as lighten, a0 as darken } from "./index-BmQl7j8n.js";
|
|
2
|
+
import { g as getIconStyles } from "./chunk-FMBD7UC4-Bstyl64g.js";
|
|
3
3
|
var parser = (function() {
|
|
4
4
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
5
5
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as defineProperty, b as baseRest, a as baseFlatten, s as setToString, o as overRest, c as arrayEach, e as isArrayLikeObject, f as baseFor, g as baseIteratee, h as baseFindIndex, j as baseEach, k as arrayMap, l as castFunction, m as baseForOwn, n as hasPath, p as identity, q as castPath, t as toKey, r as baseGet, u as hasIn, v as toString, G as Graph, w as forEach, x as constant, i as isUndefined, y as filter, z as values, A as reduce } from "./graph-
|
|
2
|
-
import { c2 as toNumber, bN as isObject, c3 as eq, bR as isArrayLike, bQ as isIndex, bX as isPrototype, c4 as arrayLikeKeys, c5 as overArg, bS as isObjectLike, c6 as baseGetTag, bO as keys, c7 as root, c8 as getSymbols, c9 as stubArray, bK as arrayPush, ca as baseGetAllKeys, cb as Uint8Array, bG as Symbol$1, bW as getTag, cc as baseUnary, cd as nodeUtil, bU as isBuffer, bL as Stack, bE as isArray, ce as getAllKeys, bV as isTypedArray, bJ as isArguments, c1 as isFunction, bF as isSymbol } from "./index-
|
|
1
|
+
import { d as defineProperty, b as baseRest, a as baseFlatten, s as setToString, o as overRest, c as arrayEach, e as isArrayLikeObject, f as baseFor, g as baseIteratee, h as baseFindIndex, j as baseEach, k as arrayMap, l as castFunction, m as baseForOwn, n as hasPath, p as identity, q as castPath, t as toKey, r as baseGet, u as hasIn, v as toString, G as Graph, w as forEach, x as constant, i as isUndefined, y as filter, z as values, A as reduce } from "./graph-BPvbzKl1.js";
|
|
2
|
+
import { c2 as toNumber, bN as isObject, c3 as eq, bR as isArrayLike, bQ as isIndex, bX as isPrototype, c4 as arrayLikeKeys, c5 as overArg, bS as isObjectLike, c6 as baseGetTag, bO as keys, c7 as root, c8 as getSymbols, c9 as stubArray, bK as arrayPush, ca as baseGetAllKeys, cb as Uint8Array, bG as Symbol$1, bW as getTag, cc as baseUnary, cd as nodeUtil, bU as isBuffer, bL as Stack, bE as isArray, ce as getAllKeys, bV as isTypedArray, bJ as isArguments, c1 as isFunction, bF as isSymbol } from "./index-BmQl7j8n.js";
|
|
3
3
|
var INFINITY = 1 / 0, MAX_INTEGER = 17976931348623157e292;
|
|
4
4
|
function toFinite(value) {
|
|
5
5
|
if (!value) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as getDiagramElement } from "./chunk-55IACEB6-
|
|
2
|
-
import { s as setupViewPortForSVG } from "./chunk-2J33WTMH-
|
|
3
|
-
import { _ as __name, l as log, o as getRegisteredLayoutAlgorithm, r as render, D as getConfig, G as defaultConfig_default, c as getConfig2, i as sanitizeText, ai as getUserDefinedConfig, aj as v4, Y as isDark, $ as lighten, a0 as darken } from "./index-
|
|
1
|
+
import { g as getDiagramElement } from "./chunk-55IACEB6-BB7RTMZZ.js";
|
|
2
|
+
import { s as setupViewPortForSVG } from "./chunk-2J33WTMH-Bd_3pGvb.js";
|
|
3
|
+
import { _ as __name, l as log, o as getRegisteredLayoutAlgorithm, r as render, D as getConfig, G as defaultConfig_default, c as getConfig2, i as sanitizeText, ai as getUserDefinedConfig, aj as v4, Y as isDark, $ as lighten, a0 as darken } from "./index-BmQl7j8n.js";
|
|
4
4
|
var parser = (function() {
|
|
5
5
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
6
6
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
package/out/renderer/assets/{pieDiagram-4H26LBE5-BX36DY7W.js → pieDiagram-4H26LBE5-CnMhRK3I.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ae as constant, a6 as tau, b6 as array, g as getAccDescription, s as setAccDescription, a as getAccTitle, b as setAccTitle, q as getDiagramTitle, p as setDiagramTitle, _ as __name, l as log, c as getConfig2$1, F as cleanAndMerge, I as selectSvgElement, R as parseFontSize, b7 as ordinal, e as configureSvgSize, z as clear, G as defaultConfig_default } from "./index-
|
|
2
|
-
import { p as populateCommonDb } from "./chunk-4BX2VUAB-
|
|
3
|
-
import { p as parse } from "./wardley-L42UT6IY-
|
|
4
|
-
import { d as d3arc } from "./arc-
|
|
1
|
+
import { ae as constant, a6 as tau, b6 as array, g as getAccDescription, s as setAccDescription, a as getAccTitle, b as setAccTitle, q as getDiagramTitle, p as setDiagramTitle, _ as __name, l as log, c as getConfig2$1, F as cleanAndMerge, I as selectSvgElement, R as parseFontSize, b7 as ordinal, e as configureSvgSize, z as clear, G as defaultConfig_default } from "./index-BmQl7j8n.js";
|
|
2
|
+
import { p as populateCommonDb } from "./chunk-4BX2VUAB-Csrpxz3N.js";
|
|
3
|
+
import { p as parse } from "./wardley-L42UT6IY-Cz6T4MDn.js";
|
|
4
|
+
import { d as d3arc } from "./arc-Cju-fnUJ.js";
|
|
5
5
|
function descending(a, b) {
|
|
6
6
|
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, c as getConfig2, l as log, d as select, e as configureSvgSize, z as clear, G as defaultConfig_default, K as linear, i as sanitizeText, L as getThemeVariables3 } from "./index-
|
|
1
|
+
import { s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, c as getConfig2, l as log, d as select, e as configureSvgSize, z as clear, G as defaultConfig_default, K as linear, i as sanitizeText, L as getThemeVariables3 } from "./index-BmQl7j8n.js";
|
|
2
2
|
var parser = (function() {
|
|
3
3
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
4
4
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as getDiagramElement } from "./chunk-55IACEB6-
|
|
2
|
-
import { s as setupViewPortForSVG } from "./chunk-2J33WTMH-
|
|
3
|
-
import { _ as __name, D as getConfig, b as setAccTitle, a as getAccTitle, s as setAccDescription, g as getAccDescription, p as setDiagramTitle, q as getDiagramTitle, c as getConfig2, l as log, z as clear, C as __export, o as getRegisteredLayoutAlgorithm, r as render, u as utils_default } from "./index-
|
|
1
|
+
import { g as getDiagramElement } from "./chunk-55IACEB6-BB7RTMZZ.js";
|
|
2
|
+
import { s as setupViewPortForSVG } from "./chunk-2J33WTMH-Bd_3pGvb.js";
|
|
3
|
+
import { _ as __name, D as getConfig, b as setAccTitle, a as getAccTitle, s as setAccDescription, g as getAccDescription, p as setDiagramTitle, q as getDiagramTitle, c as getConfig2, l as log, z as clear, C as __export, o as getRegisteredLayoutAlgorithm, r as render, u as utils_default } from "./index-BmQl7j8n.js";
|
|
4
4
|
var parser = (function() {
|
|
5
5
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
6
6
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as setDiagramTitle, q as getDiagramTitle, s as setAccDescription, g as getAccDescription, b as setAccTitle, a as getAccTitle, _ as __name, c as getConfig2, A as defaultConfig2, d as select, b7 as ordinal, a1 as setupGraphViewbox, z as clear, k as common_default } from "./index-
|
|
1
|
+
import { p as setDiagramTitle, q as getDiagramTitle, s as setAccDescription, g as getAccDescription, b as setAccTitle, a as getAccTitle, _ as __name, c as getConfig2, A as defaultConfig2, d as select, b7 as ordinal, a1 as setupGraphViewbox, z as clear, k as common_default } from "./index-BmQl7j8n.js";
|
|
2
2
|
function colors(specifier) {
|
|
3
3
|
var n = specifier.length / 6 | 0, colors2 = new Array(n), i = 0;
|
|
4
4
|
while (i < n) colors2[i] = "#" + specifier.slice(i * 6, ++i * 6);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { _ as __name, n as setConfig2, c as getConfig2, d as select, l as log, j as distExports, e as configureSvgSize, f as assignWithDepth_default, k as common_default, b as setAccTitle, s as setAccDescription, p as setDiagramTitle, a as getAccTitle, g as getAccDescription, q as getDiagramTitle, t as load, J as JSON_SCHEMA, z as clear, i as sanitizeText, u as utils_default, P as hasKatex, Q as calculateMathMLDimensions, R as parseFontSize, Z as ZERO_WIDTH_SPACE, D as getConfig, S as getUrl, T as renderKatexSanitized } from "./index-
|
|
2
|
-
import { a as drawBackgroundRect, b as getTextObj, g as getNoteRect, d as drawRect, e as drawEmbeddedImage, f as drawImage } from "./chunk-ND2GUHAM-
|
|
3
|
-
import { I as ImperativeState } from "./chunk-QZHKN3VN-
|
|
1
|
+
import { _ as __name, n as setConfig2, c as getConfig2, d as select, l as log, j as distExports, e as configureSvgSize, f as assignWithDepth_default, k as common_default, b as setAccTitle, s as setAccDescription, p as setDiagramTitle, a as getAccTitle, g as getAccDescription, q as getDiagramTitle, t as load, J as JSON_SCHEMA, z as clear, i as sanitizeText, u as utils_default, P as hasKatex, Q as calculateMathMLDimensions, R as parseFontSize, Z as ZERO_WIDTH_SPACE, D as getConfig, S as getUrl, T as renderKatexSanitized } from "./index-BmQl7j8n.js";
|
|
2
|
+
import { a as drawBackgroundRect, b as getTextObj, g as getNoteRect, d as drawRect, e as drawEmbeddedImage, f as drawImage } from "./chunk-ND2GUHAM-CVaUW2HV.js";
|
|
3
|
+
import { I as ImperativeState } from "./chunk-QZHKN3VN-AMfy7Nbn.js";
|
|
4
4
|
var parser = (function() {
|
|
5
5
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
6
6
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
package/out/renderer/assets/{stateDiagram-AJRCARHV-Btrfma35.js → stateDiagram-AJRCARHV-DCsVosBt.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { s as styles_default, a as stateDiagram_default, S as StateDB } from "./chunk-AQP2D5EJ-
|
|
2
|
-
import { _ as __name, c as getConfig2, d as select, l as log, e as configureSvgSize, k as common_default, O as line, V as curveBasis, S as getUrl, u as utils_default } from "./index-
|
|
3
|
-
import { G as Graph } from "./graph-
|
|
4
|
-
import { l as layout } from "./layout-
|
|
5
|
-
import "./chunk-55IACEB6-
|
|
6
|
-
import "./chunk-2J33WTMH-
|
|
1
|
+
import { s as styles_default, a as stateDiagram_default, S as StateDB } from "./chunk-AQP2D5EJ-D5f9Zgag.js";
|
|
2
|
+
import { _ as __name, c as getConfig2, d as select, l as log, e as configureSvgSize, k as common_default, O as line, V as curveBasis, S as getUrl, u as utils_default } from "./index-BmQl7j8n.js";
|
|
3
|
+
import { G as Graph } from "./graph-BPvbzKl1.js";
|
|
4
|
+
import { l as layout } from "./layout-DdBKGefG.js";
|
|
5
|
+
import "./chunk-55IACEB6-BB7RTMZZ.js";
|
|
6
|
+
import "./chunk-2J33WTMH-Bd_3pGvb.js";
|
|
7
7
|
var drawStartState = /* @__PURE__ */ __name((g) => g.append("circle").attr("class", "start-state").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit), "drawStartState");
|
|
8
8
|
var drawDivider = /* @__PURE__ */ __name((g) => g.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", getConfig2().state.textHeight).attr("class", "divider").attr("x2", getConfig2().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider");
|
|
9
9
|
var drawSimpleState = /* @__PURE__ */ __name((g, stateDef) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { s as styles_default, b as stateRenderer_v3_unified_default, a as stateDiagram_default, S as StateDB } from "./chunk-AQP2D5EJ-
|
|
2
|
-
import { _ as __name } from "./index-
|
|
3
|
-
import "./chunk-55IACEB6-
|
|
4
|
-
import "./chunk-2J33WTMH-
|
|
1
|
+
import { s as styles_default, b as stateRenderer_v3_unified_default, a as stateDiagram_default, S as StateDB } from "./chunk-AQP2D5EJ-D5f9Zgag.js";
|
|
2
|
+
import { _ as __name } from "./index-BmQl7j8n.js";
|
|
3
|
+
import "./chunk-55IACEB6-BB7RTMZZ.js";
|
|
4
|
+
import "./chunk-2J33WTMH-Bd_3pGvb.js";
|
|
5
5
|
var diagram = {
|
|
6
6
|
parser: stateDiagram_default,
|
|
7
7
|
get db() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as __name, D as getConfig, Y as isDark, $ as lighten, a0 as darken, c as getConfig2, l as log, I as selectSvgElement, R as parseFontSize, a1 as setupGraphViewbox, d as select, C as __export, a2 as commonDb_exports, z as clear } from "./index-
|
|
2
|
-
import { d as d3arc } from "./arc-
|
|
1
|
+
import { _ as __name, D as getConfig, Y as isDark, $ as lighten, a0 as darken, c as getConfig2, l as log, I as selectSvgElement, R as parseFontSize, a1 as setupGraphViewbox, d as select, C as __export, a2 as commonDb_exports, z as clear } from "./index-BmQl7j8n.js";
|
|
2
|
+
import { d as d3arc } from "./arc-Cju-fnUJ.js";
|
|
3
3
|
var parser = (function() {
|
|
4
4
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
5
5
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
package/out/renderer/assets/{vennDiagram-CIIHVFJN-XCVp5OjS.js → vennDiagram-CIIHVFJN-DxOEVeC4.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aY as adjustChannel, s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, D as getConfig, I as selectSvgElement, d as select, aq as at, Y as isDark, $ as lighten, a0 as darken, e as configureSvgSize, z as clear, F as cleanAndMerge, G as defaultConfig_default } from "./index-
|
|
1
|
+
import { aY as adjustChannel, s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, D as getConfig, I as selectSvgElement, d as select, aq as at, Y as isDark, $ as lighten, a0 as darken, e as configureSvgSize, z as clear, F as cleanAndMerge, G as defaultConfig_default } from "./index-BmQl7j8n.js";
|
|
2
2
|
const transparentize = (color, amount) => {
|
|
3
3
|
return adjustChannel(color, "a", -amount);
|
|
4
4
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, L as getThemeVariables3, D as getConfig, F as cleanAndMerge, l as log, I as selectSvgElement, e as configureSvgSize, z as clear, c as getConfig2 } from "./index-
|
|
2
|
-
import { p as populateCommonDb } from "./chunk-4BX2VUAB-
|
|
3
|
-
import { p as parse } from "./wardley-L42UT6IY-
|
|
1
|
+
import { s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, L as getThemeVariables3, D as getConfig, F as cleanAndMerge, l as log, I as selectSvgElement, e as configureSvgSize, z as clear, c as getConfig2 } from "./index-BmQl7j8n.js";
|
|
2
|
+
import { p as populateCommonDb } from "./chunk-4BX2VUAB-Csrpxz3N.js";
|
|
3
|
+
import { p as parse } from "./wardley-L42UT6IY-Cz6T4MDn.js";
|
|
4
4
|
var toPercent = /* @__PURE__ */ __name((value, context) => {
|
|
5
5
|
const normalized = value <= 1 ? value * 100 : value;
|
|
6
6
|
if (normalized < 0 || normalized > 100) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, l as log, I as selectSvgElement, e as configureSvgSize, z as clear, D as getConfig, i as sanitizeText, F as cleanAndMerge, G as defaultConfig_default, L as getThemeVariables3, M as band, N as computeDimensionOfText, K as linear, O as line } from "./index-
|
|
1
|
+
import { s as setAccDescription, g as getAccDescription, q as getDiagramTitle, p as setDiagramTitle, a as getAccTitle, b as setAccTitle, _ as __name, l as log, I as selectSvgElement, e as configureSvgSize, z as clear, D as getConfig, i as sanitizeText, F as cleanAndMerge, G as defaultConfig_default, L as getThemeVariables3, M as band, N as computeDimensionOfText, K as linear, O as line } from "./index-BmQl7j8n.js";
|
|
2
2
|
var parser = (function() {
|
|
3
3
|
var o = /* @__PURE__ */ __name(function(k, v, o2, l) {
|
|
4
4
|
for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
|
package/out/renderer/index.html
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
21
21
|
<meta name="apple-mobile-web-app-title" content="AiderDesk">
|
|
22
22
|
<link rel="apple-touch-icon" href="/icon-192.png">
|
|
23
|
-
<script type="module" crossorigin src="./assets/index-
|
|
24
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
23
|
+
<script type="module" crossorigin src="./assets/index-BmQl7j8n.js"></script>
|
|
24
|
+
<link rel="stylesheet" crossorigin href="./assets/index-z-BItG-u.css">
|
|
25
25
|
</head>
|
|
26
26
|
|
|
27
27
|
<body>
|
|
@@ -112,6 +112,20 @@ Do not use when:
|
|
|
112
112
|
|
|
113
113
|
**If:** Component triggers actions, implement `executeUIExtensionAction()`
|
|
114
114
|
|
|
115
|
+
### Rule: Use external libraries when UI components need npm packages
|
|
116
|
+
|
|
117
|
+
**When:** Extension UI components need third-party npm packages (charts, calendars, kanban boards, etc.)
|
|
118
|
+
|
|
119
|
+
**Then:** Implement `getUIComponentsLibraries()` returning a Record<string, string> mapping camelCase keys to npm package specs
|
|
120
|
+
|
|
121
|
+
**Must:** Access loaded libraries in JSX via `props.libraries.<key>`
|
|
122
|
+
|
|
123
|
+
**Must:** Handle the loading state — libraries are async and `props.libraries.<key>` will be `undefined` on first render
|
|
124
|
+
|
|
125
|
+
**Never:** Bundle or import React in library specs — AiderDesk's React instance is externalized automatically
|
|
126
|
+
|
|
127
|
+
**Reference:** [external-libraries.md](references/external-libraries.md) for full details, loading patterns, and examples
|
|
128
|
+
|
|
115
129
|
### Rule: Add config component for extension settings
|
|
116
130
|
|
|
117
131
|
**When:** Extension needs user-configurable settings (shown in gear icon dialog)
|
|
@@ -295,6 +309,15 @@ After completing this skill, verify:
|
|
|
295
309
|
}
|
|
296
310
|
```
|
|
297
311
|
|
|
312
|
+
**Situation:** Extension UI components need third-party npm packages
|
|
313
|
+
|
|
314
|
+
**Pattern:**
|
|
315
|
+
- When: Extension needs a library like a chart, calendar, kanban board, etc. that isn't in the built-in `ui` prop
|
|
316
|
+
- Then: Implement `getUIComponentsLibraries()` returning `{ key: 'package@^version' }`
|
|
317
|
+
- Access: Use `props.libraries.<key>` in JSX — check for `undefined` (async loading)
|
|
318
|
+
- Example: `getUIComponentsLibraries() { return { chart: 'recharts@^2.12.0' } }`
|
|
319
|
+
- Reference: [external-libraries.md](references/external-libraries.md)
|
|
320
|
+
|
|
298
321
|
**Situation:** Extension needs config storage
|
|
299
322
|
|
|
300
323
|
**Pattern:**
|
|
@@ -331,6 +354,7 @@ After completing this skill, verify:
|
|
|
331
354
|
- [event-types.md](references/event-types.md) - All event types and payloads
|
|
332
355
|
- [command-definition.md](references/command-definition.md) - Command structure
|
|
333
356
|
- [ui-components.md](references/ui-components.md) - UI component system, placements, and available components
|
|
357
|
+
- [external-libraries.md](references/external-libraries.md) - Loading third-party npm libraries in UI components (getUIComponentsLibraries)
|
|
334
358
|
- [config-components.md](references/config-components.md) - Config component API (settings UI), methods, JSX format, and patterns
|
|
335
359
|
- [examples-gallery.md](references/examples-gallery.md) - Real extension examples
|
|
336
360
|
|
|
@@ -581,3 +581,14 @@ export default class ExternalRulesExtension implements Extension {
|
|
|
581
581
|
| Tools | chunkhound-search | Custom AI tools |
|
|
582
582
|
| UI Display | tps-counter | Show information in UI |
|
|
583
583
|
| UI Interactive | multi-model-run | User input in UI |
|
|
584
|
+
| **External Libraries** | **kanban-demo.ts** | **Third-party npm packages in UI components** |
|
|
585
|
+
|
|
586
|
+
### External Libraries (kanban-demo.ts)
|
|
587
|
+
|
|
588
|
+
Uses `getUIComponentsLibraries()` to load a npm package and render it in a UI component. See [external-libraries.md](external-libraries.md) for full documentation and a minimal example.
|
|
589
|
+
|
|
590
|
+
Key patterns:
|
|
591
|
+
- `getUIComponentsLibraries()` returns `{ kanban: 'react-kanban-kit@^0.0.2-beta.7' }`
|
|
592
|
+
- JSX accesses library via `props.libraries.kanban`
|
|
593
|
+
- Loading state handled with `undefined` check + timeout-based error fallback
|
|
594
|
+
- Uses `ui.Button` and `ui.ModalOverlayLayout` alongside the external library
|
|
@@ -16,6 +16,7 @@ interface Extension {
|
|
|
16
16
|
getAgents?(context: ExtensionContext): AgentProfile[];
|
|
17
17
|
getModes?(context: ExtensionContext): ModeDefinition[];
|
|
18
18
|
getUIComponents?(context: ExtensionContext): UIComponentDefinition[];
|
|
19
|
+
getUIComponentsLibraries?(): Record<string, string>;
|
|
19
20
|
|
|
20
21
|
// UI Component support
|
|
21
22
|
getUIExtensionData?(componentId: string, context: ExtensionContext): Promise<unknown>;
|
|
@@ -250,6 +251,9 @@ interface UIComponentProps {
|
|
|
250
251
|
// Extension actions
|
|
251
252
|
executeExtensionAction: (action: string, ...args: unknown[]) => Promise<unknown>;
|
|
252
253
|
|
|
254
|
+
// External libraries (loaded via getUIComponentsLibraries)
|
|
255
|
+
libraries: Record<string, Record<string, unknown>>;
|
|
256
|
+
|
|
253
257
|
// Data from getUIExtensionData() (if loadData: true)
|
|
254
258
|
data?: unknown;
|
|
255
259
|
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# External Libraries in UI Components
|
|
2
|
+
|
|
3
|
+
Extensions can load third-party npm packages and use them in their UI component JSX. This is useful when you need a rich component library (e.g., charts, kanban boards, calendars) that isn't available through the built-in `ui` prop.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
1. **Declare** — Implement `getUIComponentsLibraries()` returning a map of arbitrary keys to npm package specs.
|
|
8
|
+
2. **Resolve** — AiderDesk resolves each package via [esm.sh](https://esm.sh) (React and React-DOM are externalized to avoid duplicate instances). Resolved sources are cached to `~/.aider-desk/cache/extension-libraries/` for offline reuse.
|
|
9
|
+
3. **Access** — Resolved libraries are passed to your JSX as `props.libraries.<key>`.
|
|
10
|
+
|
|
11
|
+
## Declaring Libraries
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
getUIComponentsLibraries(): Record<string, string> {
|
|
15
|
+
return {
|
|
16
|
+
chart: 'recharts@^2.12.0',
|
|
17
|
+
lodash: 'lodash@^4.17.0',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- **Key** — camelCase identifier you'll use to access the library in JSX (e.g., `props.libraries.chart`).
|
|
23
|
+
- **Value** — npm package name with a semver range, exactly as you'd list it in `package.json` (e.g., `'recharts@^2.12.0'`).
|
|
24
|
+
|
|
25
|
+
## Accessing in JSX
|
|
26
|
+
|
|
27
|
+
Libraries arrive as `props.libraries.<key>`. Each value is the module's resolved exports — you can destructure named exports or use the default:
|
|
28
|
+
|
|
29
|
+
```jsx
|
|
30
|
+
(props) => {
|
|
31
|
+
var chartLib = props.libraries.chart;
|
|
32
|
+
if (!chartLib) return <span>Loading chart library…</span>;
|
|
33
|
+
|
|
34
|
+
var LineChart = chartLib.LineChart;
|
|
35
|
+
var Line = chartLib.Line;
|
|
36
|
+
// ... use them
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Loading State
|
|
41
|
+
|
|
42
|
+
Libraries are loaded asynchronously. On first render `props.libraries.<key>` will be `undefined`. Always check for availability before using a library:
|
|
43
|
+
|
|
44
|
+
```jsx
|
|
45
|
+
(props) => {
|
|
46
|
+
var chartLib = props.libraries.chart;
|
|
47
|
+
|
|
48
|
+
if (!chartLib) {
|
|
49
|
+
return <span className="text-text-secondary text-sm">Loading…</span>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
var LineChart = chartLib.LineChart;
|
|
53
|
+
return <LineChart data={props.data} />;
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
If you want to show an error after a timeout, use `useEffect` with a flag:
|
|
58
|
+
|
|
59
|
+
```jsx
|
|
60
|
+
(props) => {
|
|
61
|
+
var useState = React.useState;
|
|
62
|
+
var useEffect = React.useEffect;
|
|
63
|
+
var chartLib = props.libraries.chart;
|
|
64
|
+
|
|
65
|
+
var _e = useState(false);
|
|
66
|
+
var loadError = _e[0];
|
|
67
|
+
var setLoadError = _e[1];
|
|
68
|
+
|
|
69
|
+
useEffect(function () {
|
|
70
|
+
if (!chartLib && !loadError) {
|
|
71
|
+
var t = setTimeout(function () { setLoadError(true); }, 15000);
|
|
72
|
+
return function () { clearTimeout(t); };
|
|
73
|
+
}
|
|
74
|
+
setLoadError(false);
|
|
75
|
+
}, [chartLib, loadError]);
|
|
76
|
+
|
|
77
|
+
if (loadError && !chartLib) {
|
|
78
|
+
return <span className="text-red-400 text-sm">Failed to load library.</span>;
|
|
79
|
+
}
|
|
80
|
+
if (!chartLib) {
|
|
81
|
+
return <span className="text-text-secondary text-sm">Loading…</span>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var LineChart = chartLib.LineChart;
|
|
85
|
+
return <LineChart data={props.data} />;
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Important Notes
|
|
90
|
+
|
|
91
|
+
- **React is externalized** — AiderDesk's React instance is used automatically. Never bundle or import React inside the library spec; it is already available globally. The esm.sh resolution uses `?external=react,react-dom,react/jsx-runtime,react/jsx-dev-runtime` to prevent duplicate React instances.
|
|
92
|
+
- **Internet required on first load** — Libraries are fetched from esm.sh on first use, then cached to disk. Subsequent loads work offline.
|
|
93
|
+
- **Single-file extensions** — `getUIComponentsLibraries()` works in both single-file and folder extensions.
|
|
94
|
+
- **Key naming** — Use camelCase keys. A key like `chart` becomes `props.libraries.chart`. Avoid dots or special characters in keys.
|
|
95
|
+
- **Multiple libraries** — You can declare as many libraries as needed. Each is loaded independently.
|
|
96
|
+
|
|
97
|
+
## Minimal Example
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// chart-demo.ts
|
|
101
|
+
import type { Extension, ExtensionContext, UIComponentDefinition } from '@aiderdesk/extensions';
|
|
102
|
+
|
|
103
|
+
const chartJsx = `
|
|
104
|
+
(props) => {
|
|
105
|
+
var chartLib = props.libraries.chart;
|
|
106
|
+
var Button = props.ui.Button;
|
|
107
|
+
|
|
108
|
+
if (!chartLib) {
|
|
109
|
+
return <span className="text-text-secondary text-xs">Loading chart…</span>;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var PieChart = chartLib.PieChart;
|
|
113
|
+
var Pie = chartLib.Pie;
|
|
114
|
+
|
|
115
|
+
var data = [
|
|
116
|
+
{ name: 'A', value: 40 },
|
|
117
|
+
{ name: 'B', value: 60 },
|
|
118
|
+
];
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<div className="p-2">
|
|
122
|
+
<PieChart width={200} height={200}>
|
|
123
|
+
<Pie data={data} dataKey="value" nameKey="name" cx="50%" cy="50%" outerRadius={80} />
|
|
124
|
+
</PieChart>
|
|
125
|
+
</div>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
`;
|
|
129
|
+
|
|
130
|
+
export default class ChartDemoExtension implements Extension {
|
|
131
|
+
static metadata = {
|
|
132
|
+
name: 'Chart Demo',
|
|
133
|
+
version: '1.0.0',
|
|
134
|
+
description: 'Demonstrates loading a third-party npm library (recharts) in an extension',
|
|
135
|
+
author: 'my_git_name',
|
|
136
|
+
capabilities: ['ui', 'example'],
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
async onLoad(context: ExtensionContext): Promise<void> {
|
|
140
|
+
context.log('Chart Demo loaded', 'info');
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
getUIComponents(_context: ExtensionContext): UIComponentDefinition[] {
|
|
144
|
+
return [
|
|
145
|
+
{
|
|
146
|
+
id: 'chart-demo',
|
|
147
|
+
placement: 'task-status-bar-left',
|
|
148
|
+
jsx: chartJsx,
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
getUIComponentsLibraries(): Record<string, string> {
|
|
154
|
+
return {
|
|
155
|
+
chart: 'recharts@^2.12.0',
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
@@ -208,6 +208,9 @@ All UI components receive these props via the `data` prop passed by `string-to-r
|
|
|
208
208
|
// Extension action executor
|
|
209
209
|
executeExtensionAction: (action: string, ...args: unknown[]) => Promise<unknown>,
|
|
210
210
|
|
|
211
|
+
// External libraries loaded via getUIComponentsLibraries()
|
|
212
|
+
libraries: Record<string, Record<string, unknown>>,
|
|
213
|
+
|
|
211
214
|
// Data returned from getUIExtensionData() (if loadData: true)
|
|
212
215
|
data?: unknown,
|
|
213
216
|
}
|
|
@@ -427,6 +430,27 @@ The `icons` prop provides access to all react-icons libraries:
|
|
|
427
430
|
}
|
|
428
431
|
```
|
|
429
432
|
|
|
433
|
+
## Using External Libraries
|
|
434
|
+
|
|
435
|
+
The `libraries` prop provides access to third-party npm packages declared via `getUIComponentsLibraries()`. Each key in the returned Record becomes a property on `props.libraries`.
|
|
436
|
+
|
|
437
|
+
Libraries are loaded asynchronously — on first render, `props.libraries.<key>` will be `undefined`. Always check availability before use:
|
|
438
|
+
|
|
439
|
+
```jsx
|
|
440
|
+
(props) => {
|
|
441
|
+
var chartLib = props.libraries.chart;
|
|
442
|
+
|
|
443
|
+
if (!chartLib) {
|
|
444
|
+
return <span className="text-text-secondary text-sm">Loading chart…</span>;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
var LineChart = chartLib.LineChart;
|
|
448
|
+
return <LineChart data={props.data} />;
|
|
449
|
+
}
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
For full documentation on declaring and using external libraries, see [external-libraries.md](external-libraries.md).
|
|
453
|
+
|
|
430
454
|
## Providing Data to Components
|
|
431
455
|
|
|
432
456
|
When `loadData: true`, implement `getUIExtensionData()`:
|