dominds 1.9.1 → 1.9.2
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/dist/llm/kernel-driver/subdialog.d.ts +2 -0
- package/dist/llm/kernel-driver/subdialog.js +9 -4
- package/dist/llm/kernel-driver/tellask-special.js +1 -0
- package/dist/persistence.js +31 -16
- package/dist/priming.js +32 -12
- package/dist/server/api-routes.js +212 -89
- package/dist/server/auth.d.ts +1 -0
- package/dist/server/auth.js +21 -0
- package/dist/server/server-core.js +15 -0
- package/package.json +1 -1
- package/webapp/dist/assets/{_basePickBy-BCSeQ8Mb.js → _basePickBy-9Z1lbVTN.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-BCSeQ8Mb.js.map → _basePickBy-9Z1lbVTN.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-B5WIJgde.js → _baseUniq-C3pRnD57.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-B5WIJgde.js.map → _baseUniq-C3pRnD57.js.map} +1 -1
- package/webapp/dist/assets/{arc-CWDgoT74.js → arc-BvNng3O_.js} +2 -2
- package/webapp/dist/assets/{arc-CWDgoT74.js.map → arc-BvNng3O_.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DFdZI4Uu.js → architectureDiagram-2XIMDMQ5-BF8vwQ4e.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DFdZI4Uu.js.map → architectureDiagram-2XIMDMQ5-BF8vwQ4e.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-DRcKQf9Q.js → blockDiagram-WCTKOSBZ-C7kfjZhf.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-DRcKQf9Q.js.map → blockDiagram-WCTKOSBZ-C7kfjZhf.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-B0AMlCwV.js → c4Diagram-IC4MRINW-CaJ6bX75.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-B0AMlCwV.js.map → c4Diagram-IC4MRINW-CaJ6bX75.js.map} +1 -1
- package/webapp/dist/assets/{channel-B0ljx2su.js → channel-DDuIUO0R.js} +2 -2
- package/webapp/dist/assets/{channel-B0ljx2su.js.map → channel-DDuIUO0R.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-DbKTqY07.js → chunk-4BX2VUAB-BQPkQh6v.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-DbKTqY07.js.map → chunk-4BX2VUAB-BQPkQh6v.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-DwJgszOl.js → chunk-55IACEB6-C2eZTkZ1.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-DwJgszOl.js.map → chunk-55IACEB6-C2eZTkZ1.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-BzUcOjMH.js → chunk-FMBD7UC4-aXp5zApD.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-BzUcOjMH.js.map → chunk-FMBD7UC4-aXp5zApD.js.map} +1 -1
- package/webapp/dist/assets/{chunk-JSJVCQXG-B-adw7iw.js → chunk-JSJVCQXG-DXyaccrz.js} +2 -2
- package/webapp/dist/assets/{chunk-JSJVCQXG-B-adw7iw.js.map → chunk-JSJVCQXG-DXyaccrz.js.map} +1 -1
- package/webapp/dist/assets/{chunk-KX2RTZJC-a1S8VCMi.js → chunk-KX2RTZJC-C-u000c0.js} +2 -2
- package/webapp/dist/assets/{chunk-KX2RTZJC-a1S8VCMi.js.map → chunk-KX2RTZJC-C-u000c0.js.map} +1 -1
- package/webapp/dist/assets/{chunk-NQ4KR5QH-BkpgGRb2.js → chunk-NQ4KR5QH-BoYRoo4A.js} +4 -4
- package/webapp/dist/assets/{chunk-NQ4KR5QH-BkpgGRb2.js.map → chunk-NQ4KR5QH-BoYRoo4A.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-BzG0M8E7.js → chunk-QZHKN3VN-BAc_2ceG.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-BzG0M8E7.js.map → chunk-QZHKN3VN-BAc_2ceG.js.map} +1 -1
- package/webapp/dist/assets/{chunk-WL4C6EOR-Jdr3sqWq.js → chunk-WL4C6EOR-D6ws69Jx.js} +6 -6
- package/webapp/dist/assets/{chunk-WL4C6EOR-Jdr3sqWq.js.map → chunk-WL4C6EOR-D6ws69Jx.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-Bgs-IGF1.js → classDiagram-VBA2DB6C-BIRrKhqs.js} +7 -7
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-Bgs-IGF1.js.map → classDiagram-VBA2DB6C-BIRrKhqs.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-Bgs-IGF1.js → classDiagram-v2-RAHNMMFH-BIRrKhqs.js} +7 -7
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-Bgs-IGF1.js.map → classDiagram-v2-RAHNMMFH-BIRrKhqs.js.map} +1 -1
- package/webapp/dist/assets/{clone-8W6qtrsz.js → clone-DweFyVW6.js} +2 -2
- package/webapp/dist/assets/{clone-8W6qtrsz.js.map → clone-DweFyVW6.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-gwXVRMa3.js → cose-bilkent-S5V4N54A-vgovmGKM.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-gwXVRMa3.js.map → cose-bilkent-S5V4N54A-vgovmGKM.js.map} +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-CgLK6cUW.js → dagre-KLK3FWXG-B-Ax3qBf.js} +7 -7
- package/webapp/dist/assets/{dagre-KLK3FWXG-CgLK6cUW.js.map → dagre-KLK3FWXG-B-Ax3qBf.js.map} +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-BUDea9FM.js → diagram-E7M64L7V-B1sUlvtn.js} +8 -8
- package/webapp/dist/assets/{diagram-E7M64L7V-BUDea9FM.js.map → diagram-E7M64L7V-B1sUlvtn.js.map} +1 -1
- package/webapp/dist/assets/{diagram-IFDJBPK2-CiVS6fbK.js → diagram-IFDJBPK2-3IlyK_xp.js} +7 -7
- package/webapp/dist/assets/{diagram-IFDJBPK2-CiVS6fbK.js.map → diagram-IFDJBPK2-3IlyK_xp.js.map} +1 -1
- package/webapp/dist/assets/{diagram-P4PSJMXO-DpYGO4Wi.js → diagram-P4PSJMXO-C3x0JkgF.js} +7 -7
- package/webapp/dist/assets/{diagram-P4PSJMXO-DpYGO4Wi.js.map → diagram-P4PSJMXO-C3x0JkgF.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-INFDFZHY-Cz1TI05E.js → erDiagram-INFDFZHY-mEp6kC6i.js} +5 -5
- package/webapp/dist/assets/{erDiagram-INFDFZHY-Cz1TI05E.js.map → erDiagram-INFDFZHY-mEp6kC6i.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CxjVowsG.js → flowDiagram-PKNHOUZH-AsG_wdLN.js} +7 -7
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CxjVowsG.js.map → flowDiagram-PKNHOUZH-AsG_wdLN.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C3t2AHs5.js → ganttDiagram-A5KZAMGK-zv3UhEAO.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C3t2AHs5.js.map → ganttDiagram-A5KZAMGK-zv3UhEAO.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-D3Fz3qNA.js → gitGraphDiagram-K3NZZRJ6-C1yyISy7.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-D3Fz3qNA.js.map → gitGraphDiagram-K3NZZRJ6-C1yyISy7.js.map} +1 -1
- package/webapp/dist/assets/{graph-DEeBvsT_.js → graph-CkQycYq_.js} +3 -3
- package/webapp/dist/assets/{graph-DEeBvsT_.js.map → graph-CkQycYq_.js.map} +1 -1
- package/webapp/dist/assets/{index-D-SgXZTb.js → index-CCGi5dDE.js} +969 -260
- package/webapp/dist/assets/{index-D-SgXZTb.js.map → index-CCGi5dDE.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CcsQeBG4.js → infoDiagram-LFFYTUFH-Dw1wAgpl.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CcsQeBG4.js.map → infoDiagram-LFFYTUFH-Dw1wAgpl.js.map} +1 -1
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-CAV8iv45.js → ishikawaDiagram-PHBUUO56-DY9fHLYz.js} +2 -2
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-CAV8iv45.js.map → ishikawaDiagram-PHBUUO56-DY9fHLYz.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-C_mKL3Wf.js → journeyDiagram-4ABVD52K-CSGjRykr.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-C_mKL3Wf.js.map → journeyDiagram-4ABVD52K-CSGjRykr.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-Ptg6jh3y.js → kanban-definition-K7BYSVSG-DDCQetMc.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-Ptg6jh3y.js.map → kanban-definition-K7BYSVSG-DDCQetMc.js.map} +1 -1
- package/webapp/dist/assets/{layout-vY-lESK1.js → layout-DpuTr6cl.js} +5 -5
- package/webapp/dist/assets/{layout-vY-lESK1.js.map → layout-DpuTr6cl.js.map} +1 -1
- package/webapp/dist/assets/{linear-Cw12N-49.js → linear-BQv5LuhW.js} +2 -2
- package/webapp/dist/assets/{linear-Cw12N-49.js.map → linear-BQv5LuhW.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH--gGSoZfe.js → mindmap-definition-YRQLILUH-C5ajM9Hr.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH--gGSoZfe.js.map → mindmap-definition-YRQLILUH-C5ajM9Hr.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DBQkeFNk.js → pieDiagram-SKSYHLDU-Daqms3DT.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DBQkeFNk.js.map → pieDiagram-SKSYHLDU-Daqms3DT.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-BRqQEQ5R.js → quadrantDiagram-337W2JSQ-BMNWp18J.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-BRqQEQ5R.js.map → quadrantDiagram-337W2JSQ-BMNWp18J.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-Bg-ZQVHw.js → requirementDiagram-Z7DCOOCP-C1Mc4MX-.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-Bg-ZQVHw.js.map → requirementDiagram-Z7DCOOCP-C1Mc4MX-.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-ADkSZ215.js → sankeyDiagram-WA2Y5GQK-DTHGhOsp.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-ADkSZ215.js.map → sankeyDiagram-WA2Y5GQK-DTHGhOsp.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-D4N6ze3Y.js → sequenceDiagram-2WXFIKYE-C6cA5ncc.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-D4N6ze3Y.js.map → sequenceDiagram-2WXFIKYE-C6cA5ncc.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-vNdpo2RN.js → stateDiagram-RAJIS63D-DRDqVPKY.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-vNdpo2RN.js.map → stateDiagram-RAJIS63D-DRDqVPKY.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DklmFziq.js → stateDiagram-v2-FVOUBMTO-B-pby7Ke.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DklmFziq.js.map → stateDiagram-v2-FVOUBMTO-B-pby7Ke.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BrGjv8Mt.js → timeline-definition-YZTLITO2-C-m1bG_Z.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BrGjv8Mt.js.map → timeline-definition-YZTLITO2-C-m1bG_Z.js.map} +1 -1
- package/webapp/dist/assets/{treemap-KZPCXAKY-CuF9Fl6a.js → treemap-KZPCXAKY-BWvLuAyU.js} +5 -5
- package/webapp/dist/assets/{treemap-KZPCXAKY-CuF9Fl6a.js.map → treemap-KZPCXAKY-BWvLuAyU.js.map} +1 -1
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BsWMgmkQ.js → vennDiagram-LZ73GAT5-C8gZYuUq.js} +2 -2
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BsWMgmkQ.js.map → vennDiagram-LZ73GAT5-C8gZYuUq.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-MwmjJKc5.js → xychartDiagram-JWTSCODW-Bb3azvDM.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-MwmjJKc5.js.map → xychartDiagram-JWTSCODW-Bb3azvDM.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-B-Ax3qBf.js","assets/graph-CkQycYq_.js","assets/_baseUniq-C3pRnD57.js","assets/layout-DpuTr6cl.js","assets/_basePickBy-9Z1lbVTN.js","assets/clone-DweFyVW6.js","assets/cose-bilkent-S5V4N54A-vgovmGKM.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-CaJ6bX75.js","assets/chunk-JSJVCQXG-DXyaccrz.js","assets/flowDiagram-PKNHOUZH-AsG_wdLN.js","assets/chunk-FMBD7UC4-aXp5zApD.js","assets/chunk-55IACEB6-C2eZTkZ1.js","assets/chunk-KX2RTZJC-C-u000c0.js","assets/channel-DDuIUO0R.js","assets/erDiagram-INFDFZHY-mEp6kC6i.js","assets/gitGraphDiagram-K3NZZRJ6-C1yyISy7.js","assets/chunk-4BX2VUAB-BQPkQh6v.js","assets/chunk-QZHKN3VN-BAc_2ceG.js","assets/treemap-KZPCXAKY-BWvLuAyU.js","assets/ganttDiagram-A5KZAMGK-zv3UhEAO.js","assets/linear-BQv5LuhW.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-Dw1wAgpl.js","assets/pieDiagram-SKSYHLDU-Daqms3DT.js","assets/arc-BvNng3O_.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-BMNWp18J.js","assets/xychartDiagram-JWTSCODW-Bb3azvDM.js","assets/requirementDiagram-Z7DCOOCP-C1Mc4MX-.js","assets/sequenceDiagram-2WXFIKYE-C6cA5ncc.js","assets/classDiagram-VBA2DB6C-BIRrKhqs.js","assets/chunk-WL4C6EOR-D6ws69Jx.js","assets/classDiagram-v2-RAHNMMFH-BIRrKhqs.js","assets/stateDiagram-RAJIS63D-DRDqVPKY.js","assets/chunk-NQ4KR5QH-BoYRoo4A.js","assets/stateDiagram-v2-FVOUBMTO-B-pby7Ke.js","assets/journeyDiagram-4ABVD52K-CSGjRykr.js","assets/timeline-definition-YZTLITO2-C-m1bG_Z.js","assets/mindmap-definition-YRQLILUH-C5ajM9Hr.js","assets/kanban-definition-K7BYSVSG-DDCQetMc.js","assets/sankeyDiagram-WA2Y5GQK-DTHGhOsp.js","assets/diagram-P4PSJMXO-C3x0JkgF.js","assets/diagram-IFDJBPK2-3IlyK_xp.js","assets/blockDiagram-WCTKOSBZ-C7kfjZhf.js","assets/architectureDiagram-2XIMDMQ5-BF8vwQ4e.js","assets/diagram-E7M64L7V-B1sUlvtn.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -2378,6 +2378,15 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
2378
2378
|
if (timeEl instanceof HTMLElement) {
|
|
2379
2379
|
timeEl.textContent = next2.lastModified || "";
|
|
2380
2380
|
}
|
|
2381
|
+
if (targetSelf === rootId) {
|
|
2382
|
+
this.reorderVisibleRoots(next2.taskDocPath);
|
|
2383
|
+
} else {
|
|
2384
|
+
this.reorderVisibleSubdialogs(rootId);
|
|
2385
|
+
const rootDialog = this.findDialogByIds(rootId, rootId, true);
|
|
2386
|
+
if (rootDialog) {
|
|
2387
|
+
this.reorderVisibleRoots(rootDialog.taskDocPath);
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2381
2390
|
}
|
|
2382
2391
|
if (patch.subdialogCount !== void 0 && targetSelf === rootId) {
|
|
2383
2392
|
const countEl = entry.el.querySelector(".dialog-count");
|
|
@@ -2601,29 +2610,13 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
2601
2610
|
this.visibleSubdialogCountByRoot.delete(existing);
|
|
2602
2611
|
}
|
|
2603
2612
|
}
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
this.selectionState = {
|
|
2608
|
-
kind: "selected",
|
|
2609
|
-
rootId,
|
|
2610
|
-
selfId,
|
|
2611
|
-
isRoot: rootId === selfId
|
|
2612
|
-
};
|
|
2613
|
-
}
|
|
2614
|
-
}
|
|
2615
|
-
if (this.selectionState.kind === "selected") {
|
|
2616
|
-
const hasSelection = validated.some(
|
|
2617
|
-
(dialog2) => this.isSelectedDialog(dialog2, this.selectionState)
|
|
2618
|
-
);
|
|
2613
|
+
const selection2 = this.selectionState;
|
|
2614
|
+
if (selection2.kind === "selected") {
|
|
2615
|
+
const hasSelection = validated.some((dialog2) => this.isSelectedDialog(dialog2, selection2));
|
|
2619
2616
|
if (!hasSelection) {
|
|
2620
2617
|
this.clearSelection();
|
|
2621
2618
|
} else {
|
|
2622
|
-
this.ensureDialogVisible(
|
|
2623
|
-
this.selectionState.rootId,
|
|
2624
|
-
this.selectionState.selfId,
|
|
2625
|
-
this.selectionState.isRoot
|
|
2626
|
-
);
|
|
2619
|
+
this.ensureDialogVisible(selection2.rootId, selection2.selfId, selection2.isRoot);
|
|
2627
2620
|
}
|
|
2628
2621
|
}
|
|
2629
2622
|
const t2 = getUiStrings(this.props.uiLanguage);
|
|
@@ -2634,81 +2627,7 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
2634
2627
|
this.refreshFromDom();
|
|
2635
2628
|
return;
|
|
2636
2629
|
}
|
|
2637
|
-
|
|
2638
|
-
const taskCollapsed = this.collapsedTasks.has(group.taskDocPath);
|
|
2639
|
-
const taskToggle = this.renderToggleIcon(taskCollapsed);
|
|
2640
|
-
const visibleRootCount = this.visibleRootCountByTask.get(group.taskDocPath) ?? _ArchivedDialogList.SHOW_MORE_STEP;
|
|
2641
|
-
const visibleRoots = group.roots.slice(0, visibleRootCount);
|
|
2642
|
-
const hiddenRootCount = Math.max(group.roots.length - visibleRoots.length, 0);
|
|
2643
|
-
const rootNodes = visibleRoots.map((rootGroup) => {
|
|
2644
|
-
const rootDialog = rootGroup.root;
|
|
2645
|
-
const rootCollapsed = this.collapsedRoots.has(rootGroup.rootId);
|
|
2646
|
-
const rootToggle = this.renderToggleIcon(rootCollapsed);
|
|
2647
|
-
const rootRow = rootDialog ? this.renderRootRow(rootDialog, rootToggle, rootGroup.subdialogs.length) : `
|
|
2648
|
-
<div class="dialog-item root-dialog missing" data-root-id="${rootGroup.rootId}" data-self-id="">
|
|
2649
|
-
<div class="dialog-row">
|
|
2650
|
-
<button class="toggle root-toggle" data-action="toggle-root" data-root-id="${rootGroup.rootId}" type="button" aria-label="${this.formatToggleAriaLabel(rootCollapsed)}">${rootToggle}</button>
|
|
2651
|
-
<span class="dialog-title">${t2.missingRoot}</span>
|
|
2652
|
-
<span class="dialog-meta-right">
|
|
2653
|
-
<span class="dialog-count">${rootGroup.subdialogs.length}</span>
|
|
2654
|
-
<span class="dialog-id">${rootGroup.rootId}</span>
|
|
2655
|
-
</span>
|
|
2656
|
-
</div>
|
|
2657
|
-
</div>
|
|
2658
|
-
`;
|
|
2659
|
-
const visibleSubdialogCount = this.visibleSubdialogCountByRoot.get(rootGroup.rootId) ?? _ArchivedDialogList.SHOW_MORE_STEP;
|
|
2660
|
-
const visibleSubdialogs = rootGroup.subdialogs.slice(0, visibleSubdialogCount);
|
|
2661
|
-
const hiddenSubdialogCount = Math.max(
|
|
2662
|
-
rootGroup.subdialogs.length - visibleSubdialogs.length,
|
|
2663
|
-
0
|
|
2664
|
-
);
|
|
2665
|
-
const subNodes = visibleSubdialogs.map((subdialog) => this.renderDialogRow(subdialog)).join("");
|
|
2666
|
-
const subShowMore = hiddenSubdialogCount > 0 ? this.renderShowMoreButton({
|
|
2667
|
-
action: "show-more-subdialogs",
|
|
2668
|
-
rootId: rootGroup.rootId,
|
|
2669
|
-
hiddenCount: hiddenSubdialogCount
|
|
2670
|
-
}) : "";
|
|
2671
|
-
const subCollapsed = taskCollapsed || rootCollapsed;
|
|
2672
|
-
return `
|
|
2673
|
-
<div class="rdlg-node" data-rdlg-root-id="${rootGroup.rootId}">
|
|
2674
|
-
${rootRow}
|
|
2675
|
-
<div class="sdlg-children ${subCollapsed ? "collapsed" : ""}">
|
|
2676
|
-
${subNodes}
|
|
2677
|
-
${subShowMore}
|
|
2678
|
-
</div>
|
|
2679
|
-
</div>
|
|
2680
|
-
`;
|
|
2681
|
-
}).join("");
|
|
2682
|
-
const rootShowMore = hiddenRootCount > 0 ? this.renderShowMoreButton({
|
|
2683
|
-
action: "show-more-roots",
|
|
2684
|
-
taskDocPath: group.taskDocPath,
|
|
2685
|
-
hiddenCount: hiddenRootCount
|
|
2686
|
-
}) : "";
|
|
2687
|
-
return `
|
|
2688
|
-
<div class="task-group task-node">
|
|
2689
|
-
<div class="task-title" data-task-path="${group.taskDocPath}">
|
|
2690
|
-
<div class="task-title-left">
|
|
2691
|
-
<button class="toggle task-toggle" data-action="toggle-task" data-task-path="${group.taskDocPath}" type="button" aria-label="${this.formatToggleAriaLabel(taskCollapsed)}">${taskToggle}</button>
|
|
2692
|
-
<span>${group.taskDocPath}</span>
|
|
2693
|
-
</div>
|
|
2694
|
-
<div class="task-title-right">
|
|
2695
|
-
<button class="action icon-button" data-action="task-create-dialog" data-task-path="${group.taskDocPath}" type="button" title="${t2.createNewDialogTitle}" aria-label="${t2.createNewDialogTitle}">
|
|
2696
|
-
${this.renderCreateIcon()}
|
|
2697
|
-
</button>
|
|
2698
|
-
<button class="action icon-button" data-action="task-revive" data-task-path="${group.taskDocPath}" type="button" title="${t2.dialogActionReviveAll}" aria-label="${t2.dialogActionReviveAll}">
|
|
2699
|
-
${this.renderReviveIcon()}
|
|
2700
|
-
</button>
|
|
2701
|
-
<span class="dialog-count">${group.roots.length}</span>
|
|
2702
|
-
</div>
|
|
2703
|
-
</div>
|
|
2704
|
-
<div class="task-rows ${taskCollapsed ? "collapsed" : ""}">
|
|
2705
|
-
${rootNodes}
|
|
2706
|
-
${rootShowMore}
|
|
2707
|
-
</div>
|
|
2708
|
-
</div>
|
|
2709
|
-
`;
|
|
2710
|
-
}).join("");
|
|
2711
|
-
this.listEl.innerHTML = html2;
|
|
2630
|
+
this.reconcileTaskGroups(groups);
|
|
2712
2631
|
this.refreshFromDom();
|
|
2713
2632
|
}
|
|
2714
2633
|
renderLoading() {
|
|
@@ -2722,6 +2641,213 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
2722
2641
|
encodeDialogDataset(dialog2) {
|
|
2723
2642
|
return encodeURIComponent(JSON.stringify(dialog2));
|
|
2724
2643
|
}
|
|
2644
|
+
createElementFromHtml(html2) {
|
|
2645
|
+
const template = document.createElement("template");
|
|
2646
|
+
template.innerHTML = html2.trim();
|
|
2647
|
+
const first = template.content.firstElementChild;
|
|
2648
|
+
if (!(first instanceof HTMLElement)) {
|
|
2649
|
+
throw new Error("Expected HTML template to produce a single HTMLElement.");
|
|
2650
|
+
}
|
|
2651
|
+
return first;
|
|
2652
|
+
}
|
|
2653
|
+
syncElement(target, next2) {
|
|
2654
|
+
if (target.outerHTML === next2.outerHTML) return;
|
|
2655
|
+
for (const name of target.getAttributeNames()) {
|
|
2656
|
+
if (!next2.hasAttribute(name)) {
|
|
2657
|
+
target.removeAttribute(name);
|
|
2658
|
+
}
|
|
2659
|
+
}
|
|
2660
|
+
for (const name of next2.getAttributeNames()) {
|
|
2661
|
+
const value = next2.getAttribute(name);
|
|
2662
|
+
if (value === null) continue;
|
|
2663
|
+
if (target.getAttribute(name) !== value) {
|
|
2664
|
+
target.setAttribute(name, value);
|
|
2665
|
+
}
|
|
2666
|
+
}
|
|
2667
|
+
if (target.innerHTML !== next2.innerHTML) {
|
|
2668
|
+
target.innerHTML = next2.innerHTML;
|
|
2669
|
+
}
|
|
2670
|
+
}
|
|
2671
|
+
renderTaskTitleRow(group, taskCollapsed) {
|
|
2672
|
+
const t2 = getUiStrings(this.props.uiLanguage);
|
|
2673
|
+
const taskToggle = this.renderToggleIcon(taskCollapsed);
|
|
2674
|
+
return `
|
|
2675
|
+
<div class="task-title" data-task-path="${group.taskDocPath}">
|
|
2676
|
+
<div class="task-title-left">
|
|
2677
|
+
<button class="toggle task-toggle" data-action="toggle-task" data-task-path="${group.taskDocPath}" type="button" aria-label="${this.formatToggleAriaLabel(taskCollapsed)}">${taskToggle}</button>
|
|
2678
|
+
<span>${group.taskDocPath}</span>
|
|
2679
|
+
</div>
|
|
2680
|
+
<div class="task-title-right">
|
|
2681
|
+
<button class="action icon-button" data-action="task-create-dialog" data-task-path="${group.taskDocPath}" type="button" title="${t2.createNewDialogTitle}" aria-label="${t2.createNewDialogTitle}">
|
|
2682
|
+
${this.renderCreateIcon()}
|
|
2683
|
+
</button>
|
|
2684
|
+
<button class="action icon-button" data-action="task-revive" data-task-path="${group.taskDocPath}" type="button" title="${t2.dialogActionReviveAll}" aria-label="${t2.dialogActionReviveAll}">
|
|
2685
|
+
${this.renderReviveIcon()}
|
|
2686
|
+
</button>
|
|
2687
|
+
<span class="dialog-count">${group.roots.length}</span>
|
|
2688
|
+
</div>
|
|
2689
|
+
</div>
|
|
2690
|
+
`;
|
|
2691
|
+
}
|
|
2692
|
+
renderMissingRootRow(rootGroup, rootCollapsed) {
|
|
2693
|
+
const t2 = getUiStrings(this.props.uiLanguage);
|
|
2694
|
+
const rootToggle = this.renderToggleIcon(rootCollapsed);
|
|
2695
|
+
return `
|
|
2696
|
+
<div class="dialog-item root-dialog missing" data-root-id="${rootGroup.rootId}" data-self-id="">
|
|
2697
|
+
<div class="dialog-row">
|
|
2698
|
+
<button class="toggle root-toggle" data-action="toggle-root" data-root-id="${rootGroup.rootId}" type="button" aria-label="${this.formatToggleAriaLabel(rootCollapsed)}">${rootToggle}</button>
|
|
2699
|
+
<span class="dialog-title">${t2.missingRoot}</span>
|
|
2700
|
+
<span class="dialog-meta-right">
|
|
2701
|
+
<span class="dialog-count">${rootGroup.subdialogs.length}</span>
|
|
2702
|
+
<span class="dialog-id">${rootGroup.rootId}</span>
|
|
2703
|
+
</span>
|
|
2704
|
+
</div>
|
|
2705
|
+
</div>
|
|
2706
|
+
`;
|
|
2707
|
+
}
|
|
2708
|
+
reconcileShowMoreRow(container, html2) {
|
|
2709
|
+
const existing = container.querySelector(":scope > .show-more-row");
|
|
2710
|
+
if (html2 === null) {
|
|
2711
|
+
existing?.remove();
|
|
2712
|
+
return;
|
|
2713
|
+
}
|
|
2714
|
+
const next2 = this.createElementFromHtml(html2);
|
|
2715
|
+
if (existing) {
|
|
2716
|
+
this.syncElement(existing, next2);
|
|
2717
|
+
container.appendChild(existing);
|
|
2718
|
+
return;
|
|
2719
|
+
}
|
|
2720
|
+
container.appendChild(next2);
|
|
2721
|
+
}
|
|
2722
|
+
reconcileSubdialogRows(rootChildren, rootGroup) {
|
|
2723
|
+
const existingRows = /* @__PURE__ */ new Map();
|
|
2724
|
+
rootChildren.querySelectorAll(":scope > .dialog-item.sub-dialog[data-dialog-key]").forEach((row) => {
|
|
2725
|
+
const key = (row.getAttribute("data-dialog-key") ?? "").trim();
|
|
2726
|
+
if (key !== "") {
|
|
2727
|
+
existingRows.set(key, row);
|
|
2728
|
+
}
|
|
2729
|
+
});
|
|
2730
|
+
const visibleSubdialogCount = this.visibleSubdialogCountByRoot.get(rootGroup.rootId) ?? _ArchivedDialogList.SHOW_MORE_STEP;
|
|
2731
|
+
const visibleSubdialogs = rootGroup.subdialogs.slice(0, visibleSubdialogCount);
|
|
2732
|
+
const hiddenSubdialogCount = Math.max(
|
|
2733
|
+
rootGroup.subdialogs.length - visibleSubdialogs.length,
|
|
2734
|
+
0
|
|
2735
|
+
);
|
|
2736
|
+
for (const subdialog of visibleSubdialogs) {
|
|
2737
|
+
const key = this.getDialogKey(subdialog);
|
|
2738
|
+
const next2 = this.createElementFromHtml(this.renderDialogRow(subdialog));
|
|
2739
|
+
const existing = existingRows.get(key);
|
|
2740
|
+
if (existing) {
|
|
2741
|
+
this.syncElement(existing, next2);
|
|
2742
|
+
rootChildren.appendChild(existing);
|
|
2743
|
+
existingRows.delete(key);
|
|
2744
|
+
} else {
|
|
2745
|
+
rootChildren.appendChild(next2);
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
for (const stale of existingRows.values()) {
|
|
2749
|
+
stale.remove();
|
|
2750
|
+
}
|
|
2751
|
+
const showMoreHtml = hiddenSubdialogCount > 0 ? this.renderShowMoreButton({
|
|
2752
|
+
action: "show-more-subdialogs",
|
|
2753
|
+
rootId: rootGroup.rootId,
|
|
2754
|
+
hiddenCount: hiddenSubdialogCount
|
|
2755
|
+
}) : null;
|
|
2756
|
+
this.reconcileShowMoreRow(rootChildren, showMoreHtml);
|
|
2757
|
+
}
|
|
2758
|
+
reconcileRootNode(rootNode, rootGroup, taskCollapsed) {
|
|
2759
|
+
rootNode.setAttribute("data-rdlg-root-id", rootGroup.rootId);
|
|
2760
|
+
const rootCollapsed = this.collapsedRoots.has(rootGroup.rootId);
|
|
2761
|
+
const rootRowHtml = rootGroup.root ? this.renderRootRow(
|
|
2762
|
+
rootGroup.root,
|
|
2763
|
+
this.renderToggleIcon(rootCollapsed),
|
|
2764
|
+
rootGroup.subdialogs.length
|
|
2765
|
+
) : this.renderMissingRootRow(rootGroup, rootCollapsed);
|
|
2766
|
+
const existingRootRow = rootNode.querySelector(
|
|
2767
|
+
":scope > .dialog-item.root-dialog"
|
|
2768
|
+
);
|
|
2769
|
+
if (existingRootRow) {
|
|
2770
|
+
this.syncElement(existingRootRow, this.createElementFromHtml(rootRowHtml));
|
|
2771
|
+
if (rootNode.firstElementChild !== existingRootRow) {
|
|
2772
|
+
rootNode.insertBefore(existingRootRow, rootNode.firstElementChild);
|
|
2773
|
+
}
|
|
2774
|
+
} else {
|
|
2775
|
+
rootNode.insertBefore(this.createElementFromHtml(rootRowHtml), rootNode.firstElementChild);
|
|
2776
|
+
}
|
|
2777
|
+
let rootChildren = rootNode.querySelector(":scope > .sdlg-children");
|
|
2778
|
+
if (!rootChildren) {
|
|
2779
|
+
rootChildren = this.createElementFromHtml('<div class="sdlg-children"></div>');
|
|
2780
|
+
rootNode.appendChild(rootChildren);
|
|
2781
|
+
}
|
|
2782
|
+
rootChildren.classList.toggle("collapsed", taskCollapsed || rootCollapsed);
|
|
2783
|
+
this.reconcileSubdialogRows(rootChildren, rootGroup);
|
|
2784
|
+
}
|
|
2785
|
+
reconcileRootNodes(taskRows, group, taskCollapsed) {
|
|
2786
|
+
const existingRoots = /* @__PURE__ */ new Map();
|
|
2787
|
+
taskRows.querySelectorAll(":scope > .rdlg-node[data-rdlg-root-id]").forEach((node2) => {
|
|
2788
|
+
const rootId = (node2.getAttribute("data-rdlg-root-id") ?? "").trim();
|
|
2789
|
+
if (rootId !== "") {
|
|
2790
|
+
existingRoots.set(rootId, node2);
|
|
2791
|
+
}
|
|
2792
|
+
});
|
|
2793
|
+
const visibleRootCount = this.visibleRootCountByTask.get(group.taskDocPath) ?? _ArchivedDialogList.SHOW_MORE_STEP;
|
|
2794
|
+
const visibleRoots = group.roots.slice(0, visibleRootCount);
|
|
2795
|
+
const hiddenRootCount = Math.max(group.roots.length - visibleRoots.length, 0);
|
|
2796
|
+
for (const rootGroup of visibleRoots) {
|
|
2797
|
+
const existing = existingRoots.get(rootGroup.rootId);
|
|
2798
|
+
const rootNode = existing ?? this.createElementFromHtml(
|
|
2799
|
+
`<div class="rdlg-node" data-rdlg-root-id="${rootGroup.rootId}"></div>`
|
|
2800
|
+
);
|
|
2801
|
+
this.reconcileRootNode(rootNode, rootGroup, taskCollapsed);
|
|
2802
|
+
taskRows.appendChild(rootNode);
|
|
2803
|
+
existingRoots.delete(rootGroup.rootId);
|
|
2804
|
+
}
|
|
2805
|
+
for (const stale of existingRoots.values()) {
|
|
2806
|
+
stale.remove();
|
|
2807
|
+
}
|
|
2808
|
+
const showMoreHtml = hiddenRootCount > 0 ? this.renderShowMoreButton({
|
|
2809
|
+
action: "show-more-roots",
|
|
2810
|
+
taskDocPath: group.taskDocPath,
|
|
2811
|
+
hiddenCount: hiddenRootCount
|
|
2812
|
+
}) : null;
|
|
2813
|
+
this.reconcileShowMoreRow(taskRows, showMoreHtml);
|
|
2814
|
+
}
|
|
2815
|
+
reconcileTaskGroups(groups) {
|
|
2816
|
+
if (!this.listEl) return;
|
|
2817
|
+
this.listEl.querySelectorAll(":scope > .empty").forEach((node2) => node2.remove());
|
|
2818
|
+
const existingGroups = /* @__PURE__ */ new Map();
|
|
2819
|
+
this.listEl.querySelectorAll(":scope > .task-group.task-node").forEach((groupEl) => {
|
|
2820
|
+
const taskPath = (groupEl.querySelector(":scope > .task-title")?.getAttribute("data-task-path") ?? "").trim();
|
|
2821
|
+
if (taskPath !== "") {
|
|
2822
|
+
existingGroups.set(taskPath, groupEl);
|
|
2823
|
+
}
|
|
2824
|
+
});
|
|
2825
|
+
for (const group of groups) {
|
|
2826
|
+
const taskCollapsed = this.collapsedTasks.has(group.taskDocPath);
|
|
2827
|
+
const taskGroup = existingGroups.get(group.taskDocPath) ?? this.createElementFromHtml(
|
|
2828
|
+
'<div class="task-group task-node"><div class="task-title"></div><div class="task-rows"></div></div>'
|
|
2829
|
+
);
|
|
2830
|
+
const nextTitle = this.createElementFromHtml(this.renderTaskTitleRow(group, taskCollapsed));
|
|
2831
|
+
const currentTitle = taskGroup.querySelector(":scope > .task-title");
|
|
2832
|
+
if (currentTitle) {
|
|
2833
|
+
this.syncElement(currentTitle, nextTitle);
|
|
2834
|
+
} else {
|
|
2835
|
+
taskGroup.insertBefore(nextTitle, taskGroup.firstElementChild);
|
|
2836
|
+
}
|
|
2837
|
+
let taskRows = taskGroup.querySelector(":scope > .task-rows");
|
|
2838
|
+
if (!taskRows) {
|
|
2839
|
+
taskRows = this.createElementFromHtml('<div class="task-rows"></div>');
|
|
2840
|
+
taskGroup.appendChild(taskRows);
|
|
2841
|
+
}
|
|
2842
|
+
taskRows.classList.toggle("collapsed", taskCollapsed);
|
|
2843
|
+
this.reconcileRootNodes(taskRows, group, taskCollapsed);
|
|
2844
|
+
this.listEl.appendChild(taskGroup);
|
|
2845
|
+
existingGroups.delete(group.taskDocPath);
|
|
2846
|
+
}
|
|
2847
|
+
for (const stale of existingGroups.values()) {
|
|
2848
|
+
stale.remove();
|
|
2849
|
+
}
|
|
2850
|
+
}
|
|
2725
2851
|
decodeDialogDataset(el) {
|
|
2726
2852
|
const raw = el.dataset.dialogJson;
|
|
2727
2853
|
if (!raw) return null;
|
|
@@ -2762,6 +2888,90 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
2762
2888
|
this.clearSelection();
|
|
2763
2889
|
}
|
|
2764
2890
|
}
|
|
2891
|
+
getDialogUpdatedAtMsFromElement(el) {
|
|
2892
|
+
const dialog2 = this.decodeDialogDataset(el);
|
|
2893
|
+
if (!dialog2) return 0;
|
|
2894
|
+
return this.parseTimestamp(dialog2.lastModified);
|
|
2895
|
+
}
|
|
2896
|
+
reorderVisibleSubdialogs(rootId) {
|
|
2897
|
+
if (!this.listEl) return;
|
|
2898
|
+
const rootChildren = this.listEl.querySelector(
|
|
2899
|
+
`.rdlg-node[data-rdlg-root-id="${this.escapeSelector(rootId)}"] > .sdlg-children`
|
|
2900
|
+
);
|
|
2901
|
+
if (!(rootChildren instanceof HTMLElement)) return;
|
|
2902
|
+
const subRows = Array.from(
|
|
2903
|
+
rootChildren.querySelectorAll(":scope > .dialog-item.sub-dialog")
|
|
2904
|
+
);
|
|
2905
|
+
if (subRows.length <= 1) return;
|
|
2906
|
+
subRows.sort((a2, b2) => {
|
|
2907
|
+
const delta = this.getDialogUpdatedAtMsFromElement(b2) - this.getDialogUpdatedAtMsFromElement(a2);
|
|
2908
|
+
if (delta !== 0) return delta;
|
|
2909
|
+
const aSelf = a2.getAttribute("data-self-id") ?? "";
|
|
2910
|
+
const bSelf = b2.getAttribute("data-self-id") ?? "";
|
|
2911
|
+
return aSelf.localeCompare(bSelf);
|
|
2912
|
+
});
|
|
2913
|
+
const anchor2 = rootChildren.querySelector(":scope > .show-more-row");
|
|
2914
|
+
for (const row of subRows) {
|
|
2915
|
+
rootChildren.insertBefore(row, anchor2);
|
|
2916
|
+
}
|
|
2917
|
+
}
|
|
2918
|
+
reorderVisibleRoots(taskDocPath) {
|
|
2919
|
+
if (!this.listEl) return;
|
|
2920
|
+
const taskTitle = this.listEl.querySelector(
|
|
2921
|
+
`.task-title[data-task-path="${this.escapeSelector(taskDocPath)}"]`
|
|
2922
|
+
);
|
|
2923
|
+
const taskGroup = taskTitle?.closest(".task-group");
|
|
2924
|
+
if (!(taskGroup instanceof HTMLElement)) return;
|
|
2925
|
+
const taskRows = taskGroup.querySelector(".task-rows");
|
|
2926
|
+
if (!(taskRows instanceof HTMLElement)) return;
|
|
2927
|
+
const rootNodes = Array.from(taskRows.querySelectorAll(":scope > .rdlg-node"));
|
|
2928
|
+
if (rootNodes.length <= 1) return;
|
|
2929
|
+
rootNodes.sort((a2, b2) => {
|
|
2930
|
+
const aRoot = a2.querySelector(":scope > .dialog-item.root-dialog");
|
|
2931
|
+
const bRoot = b2.querySelector(":scope > .dialog-item.root-dialog");
|
|
2932
|
+
const delta = (bRoot ? this.getDialogUpdatedAtMsFromElement(bRoot) : 0) - (aRoot ? this.getDialogUpdatedAtMsFromElement(aRoot) : 0);
|
|
2933
|
+
if (delta !== 0) return delta;
|
|
2934
|
+
const aRootId = (a2.getAttribute("data-rdlg-root-id") ?? "").trim();
|
|
2935
|
+
const bRootId = (b2.getAttribute("data-rdlg-root-id") ?? "").trim();
|
|
2936
|
+
return aRootId.localeCompare(bRootId);
|
|
2937
|
+
});
|
|
2938
|
+
const anchor2 = taskRows.querySelector(":scope > .show-more-row");
|
|
2939
|
+
for (const node2 of rootNodes) {
|
|
2940
|
+
taskRows.insertBefore(node2, anchor2);
|
|
2941
|
+
}
|
|
2942
|
+
this.reorderTaskGroups();
|
|
2943
|
+
}
|
|
2944
|
+
reorderTaskGroups() {
|
|
2945
|
+
if (!this.listEl) return;
|
|
2946
|
+
const groups = Array.from(
|
|
2947
|
+
this.listEl.querySelectorAll(":scope > .task-group.task-node")
|
|
2948
|
+
);
|
|
2949
|
+
if (groups.length <= 1) return;
|
|
2950
|
+
groups.sort((a2, b2) => {
|
|
2951
|
+
const aTs = this.getTaskMaxUpdatedAtMs(a2);
|
|
2952
|
+
const bTs = this.getTaskMaxUpdatedAtMs(b2);
|
|
2953
|
+
const delta = bTs - aTs;
|
|
2954
|
+
if (delta !== 0) return delta;
|
|
2955
|
+
const aPath = (a2.querySelector(".task-title")?.getAttribute("data-task-path") ?? "").trim();
|
|
2956
|
+
const bPath = (b2.querySelector(".task-title")?.getAttribute("data-task-path") ?? "").trim();
|
|
2957
|
+
return aPath.localeCompare(bPath);
|
|
2958
|
+
});
|
|
2959
|
+
for (const group of groups) {
|
|
2960
|
+
this.listEl.appendChild(group);
|
|
2961
|
+
}
|
|
2962
|
+
this.refreshFromDom();
|
|
2963
|
+
}
|
|
2964
|
+
getTaskMaxUpdatedAtMs(taskGroup) {
|
|
2965
|
+
let max2 = 0;
|
|
2966
|
+
const roots = taskGroup.querySelectorAll(
|
|
2967
|
+
".dialog-item.root-dialog[data-dialog-json]"
|
|
2968
|
+
);
|
|
2969
|
+
roots.forEach((row) => {
|
|
2970
|
+
const ts = this.getDialogUpdatedAtMsFromElement(row);
|
|
2971
|
+
if (ts > max2) max2 = ts;
|
|
2972
|
+
});
|
|
2973
|
+
return max2;
|
|
2974
|
+
}
|
|
2765
2975
|
clearSelection() {
|
|
2766
2976
|
if (this.listEl) {
|
|
2767
2977
|
const selected = this.listEl.querySelector(".dialog-item.selected");
|
|
@@ -2956,6 +3166,16 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
2956
3166
|
this.updateToggleButtonUi(rootToggle, false);
|
|
2957
3167
|
}
|
|
2958
3168
|
}
|
|
3169
|
+
if (!this.requestedSubdialogRoots.has(dialog2.rootId) && !this.hasSubdialogsLoaded(dialog2.rootId)) {
|
|
3170
|
+
this.requestedSubdialogRoots.add(dialog2.rootId);
|
|
3171
|
+
this.dispatchEvent(
|
|
3172
|
+
new CustomEvent("dialog-expand", {
|
|
3173
|
+
detail: { rootId: dialog2.rootId, status: "archived" },
|
|
3174
|
+
bubbles: true,
|
|
3175
|
+
composed: true
|
|
3176
|
+
})
|
|
3177
|
+
);
|
|
3178
|
+
}
|
|
2959
3179
|
}
|
|
2960
3180
|
findDialogByIds(rootId, selfId, isRoot) {
|
|
2961
3181
|
const targetSelf = isRoot ? rootId : selfId;
|
|
@@ -3252,7 +3472,12 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
3252
3472
|
flex-direction: column;
|
|
3253
3473
|
gap: 3px;
|
|
3254
3474
|
padding: 2px 8px;
|
|
3475
|
+
margin: 0;
|
|
3255
3476
|
cursor: pointer;
|
|
3477
|
+
border-right: 3px solid transparent;
|
|
3478
|
+
border-radius: 0;
|
|
3479
|
+
position: relative;
|
|
3480
|
+
box-sizing: border-box;
|
|
3256
3481
|
}
|
|
3257
3482
|
|
|
3258
3483
|
.root-dialog {
|
|
@@ -3283,7 +3508,17 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
3283
3508
|
}
|
|
3284
3509
|
|
|
3285
3510
|
.dialog-item.selected {
|
|
3286
|
-
background: color-mix(in srgb, var(--dominds-primary, #007acc)
|
|
3511
|
+
background: color-mix(in srgb, var(--dominds-primary, #007acc) 13%, transparent);
|
|
3512
|
+
margin: 2px 0;
|
|
3513
|
+
border-radius: 10px 0 0 10px;
|
|
3514
|
+
box-shadow:
|
|
3515
|
+
inset 1px 0 0 color-mix(in srgb, white 55%, transparent),
|
|
3516
|
+
inset 0 1px 0 color-mix(in srgb, white 55%, transparent),
|
|
3517
|
+
inset 0 -1px 0 color-mix(in srgb, white 55%, transparent),
|
|
3518
|
+
inset 2px 0 0 color-mix(in srgb, var(--dominds-primary, #007acc) 72%, transparent),
|
|
3519
|
+
inset 0 2px 0 color-mix(in srgb, var(--dominds-primary, #007acc) 72%, transparent),
|
|
3520
|
+
inset 0 -2px 0 color-mix(in srgb, var(--dominds-primary, #007acc) 72%, transparent);
|
|
3521
|
+
z-index: var(--dominds-z-local-raised, 1);
|
|
3287
3522
|
}
|
|
3288
3523
|
|
|
3289
3524
|
.toggle {
|
|
@@ -3399,17 +3634,15 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
3399
3634
|
display: inline-flex;
|
|
3400
3635
|
align-items: center;
|
|
3401
3636
|
gap: 6px;
|
|
3637
|
+
font-weight: 500;
|
|
3402
3638
|
flex: none;
|
|
3403
3639
|
white-space: nowrap;
|
|
3404
3640
|
}
|
|
3405
3641
|
|
|
3406
3642
|
.dialog-count {
|
|
3407
3643
|
font-size: var(--dominds-font-size-xs, 11px);
|
|
3408
|
-
padding: 2px 6px;
|
|
3409
|
-
border-radius: 999px;
|
|
3410
|
-
background: var(--dominds-border, #e0e0e0);
|
|
3411
3644
|
color: var(--dominds-muted, #666666);
|
|
3412
|
-
|
|
3645
|
+
letter-spacing: 0.02em;
|
|
3413
3646
|
}
|
|
3414
3647
|
|
|
3415
3648
|
.dialog-submeta {
|
|
@@ -3448,7 +3681,8 @@ const _ArchivedDialogList = class _ArchivedDialogList extends HTMLElement {
|
|
|
3448
3681
|
|
|
3449
3682
|
.dialog-topic {
|
|
3450
3683
|
font-size: var(--dominds-font-size-xs, 11px);
|
|
3451
|
-
color: var(--dominds-muted, #
|
|
3684
|
+
color: var(--dominds-muted, #666666);
|
|
3685
|
+
letter-spacing: 0.02em;
|
|
3452
3686
|
}
|
|
3453
3687
|
|
|
3454
3688
|
.empty {
|
|
@@ -97417,12 +97651,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
|
|
|
97417
97651
|
registerLayoutLoaders([
|
|
97418
97652
|
{
|
|
97419
97653
|
name: "dagre",
|
|
97420
|
-
loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-
|
|
97654
|
+
loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-B-Ax3qBf.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
|
|
97421
97655
|
},
|
|
97422
97656
|
...[
|
|
97423
97657
|
{
|
|
97424
97658
|
name: "cose-bilkent",
|
|
97425
|
-
loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-
|
|
97659
|
+
loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-vgovmGKM.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
|
|
97426
97660
|
}
|
|
97427
97661
|
]
|
|
97428
97662
|
]);
|
|
@@ -97862,7 +98096,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
|
|
|
97862
98096
|
}, "detector");
|
|
97863
98097
|
var loader = /* @__PURE__ */ __name(async () => {
|
|
97864
98098
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97865
|
-
const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-
|
|
98099
|
+
const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-CaJ6bX75.js");
|
|
97866
98100
|
return { diagram: diagram22 };
|
|
97867
98101
|
}, true ? __vite__mapDeps([8,9]) : void 0);
|
|
97868
98102
|
return { id: id$1, diagram: diagram2 };
|
|
@@ -97882,7 +98116,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
97882
98116
|
}, "detector");
|
|
97883
98117
|
var loader2 = /* @__PURE__ */ __name(async () => {
|
|
97884
98118
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97885
|
-
const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-
|
|
98119
|
+
const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-AsG_wdLN.js");
|
|
97886
98120
|
return { diagram: diagram22 };
|
|
97887
98121
|
}, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
|
|
97888
98122
|
return { id: id2, diagram: diagram2 };
|
|
@@ -97908,7 +98142,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
97908
98142
|
}, "detector");
|
|
97909
98143
|
var loader3 = /* @__PURE__ */ __name(async () => {
|
|
97910
98144
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97911
|
-
const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-
|
|
98145
|
+
const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-AsG_wdLN.js");
|
|
97912
98146
|
return { diagram: diagram22 };
|
|
97913
98147
|
}, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
|
|
97914
98148
|
return { id: id3, diagram: diagram2 };
|
|
@@ -97925,7 +98159,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
|
|
|
97925
98159
|
}, "detector");
|
|
97926
98160
|
var loader4 = /* @__PURE__ */ __name(async () => {
|
|
97927
98161
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97928
|
-
const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-
|
|
98162
|
+
const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-mEp6kC6i.js");
|
|
97929
98163
|
return { diagram: diagram22 };
|
|
97930
98164
|
}, true ? __vite__mapDeps([15,12,13,14]) : void 0);
|
|
97931
98165
|
return { id: id4, diagram: diagram2 };
|
|
@@ -97942,7 +98176,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
|
|
|
97942
98176
|
}, "detector");
|
|
97943
98177
|
var loader5 = /* @__PURE__ */ __name(async () => {
|
|
97944
98178
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97945
|
-
const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-
|
|
98179
|
+
const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-C1yyISy7.js");
|
|
97946
98180
|
return { diagram: diagram22 };
|
|
97947
98181
|
}, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
|
|
97948
98182
|
return { id: id5, diagram: diagram2 };
|
|
@@ -97959,7 +98193,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
|
|
|
97959
98193
|
}, "detector");
|
|
97960
98194
|
var loader6 = /* @__PURE__ */ __name(async () => {
|
|
97961
98195
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97962
|
-
const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-
|
|
98196
|
+
const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-zv3UhEAO.js");
|
|
97963
98197
|
return { diagram: diagram22 };
|
|
97964
98198
|
}, true ? __vite__mapDeps([20,21,22,23]) : void 0);
|
|
97965
98199
|
return { id: id6, diagram: diagram2 };
|
|
@@ -97976,7 +98210,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
|
|
|
97976
98210
|
}, "detector");
|
|
97977
98211
|
var loader7 = /* @__PURE__ */ __name(async () => {
|
|
97978
98212
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97979
|
-
const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-
|
|
98213
|
+
const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-Dw1wAgpl.js");
|
|
97980
98214
|
return { diagram: diagram22 };
|
|
97981
98215
|
}, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
|
|
97982
98216
|
return { id: id7, diagram: diagram2 };
|
|
@@ -97992,7 +98226,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
|
|
|
97992
98226
|
}, "detector");
|
|
97993
98227
|
var loader8 = /* @__PURE__ */ __name(async () => {
|
|
97994
98228
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
97995
|
-
const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-
|
|
98229
|
+
const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-Daqms3DT.js");
|
|
97996
98230
|
return { diagram: diagram22 };
|
|
97997
98231
|
}, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
|
|
97998
98232
|
return { id: id8, diagram: diagram2 };
|
|
@@ -98008,7 +98242,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
|
|
|
98008
98242
|
}, "detector");
|
|
98009
98243
|
var loader9 = /* @__PURE__ */ __name(async () => {
|
|
98010
98244
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98011
|
-
const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-
|
|
98245
|
+
const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-BMNWp18J.js");
|
|
98012
98246
|
return { diagram: diagram22 };
|
|
98013
98247
|
}, true ? __vite__mapDeps([28,21,22,23]) : void 0);
|
|
98014
98248
|
return { id: id9, diagram: diagram2 };
|
|
@@ -98025,7 +98259,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
|
|
|
98025
98259
|
}, "detector");
|
|
98026
98260
|
var loader10 = /* @__PURE__ */ __name(async () => {
|
|
98027
98261
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98028
|
-
const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-
|
|
98262
|
+
const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-Bb3azvDM.js");
|
|
98029
98263
|
return { diagram: diagram22 };
|
|
98030
98264
|
}, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
|
|
98031
98265
|
return { id: id10, diagram: diagram2 };
|
|
@@ -98042,7 +98276,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
|
|
|
98042
98276
|
}, "detector");
|
|
98043
98277
|
var loader11 = /* @__PURE__ */ __name(async () => {
|
|
98044
98278
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98045
|
-
const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-
|
|
98279
|
+
const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-C1Mc4MX-.js");
|
|
98046
98280
|
return { diagram: diagram22 };
|
|
98047
98281
|
}, true ? __vite__mapDeps([30,12,13]) : void 0);
|
|
98048
98282
|
return { id: id11, diagram: diagram2 };
|
|
@@ -98059,7 +98293,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
|
|
|
98059
98293
|
}, "detector");
|
|
98060
98294
|
var loader12 = /* @__PURE__ */ __name(async () => {
|
|
98061
98295
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98062
|
-
const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-
|
|
98296
|
+
const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-C6cA5ncc.js");
|
|
98063
98297
|
return { diagram: diagram22 };
|
|
98064
98298
|
}, true ? __vite__mapDeps([31,9,18]) : void 0);
|
|
98065
98299
|
return { id: id12, diagram: diagram2 };
|
|
@@ -98079,7 +98313,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
98079
98313
|
}, "detector");
|
|
98080
98314
|
var loader13 = /* @__PURE__ */ __name(async () => {
|
|
98081
98315
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98082
|
-
const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-
|
|
98316
|
+
const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-BIRrKhqs.js");
|
|
98083
98317
|
return { diagram: diagram22 };
|
|
98084
98318
|
}, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0);
|
|
98085
98319
|
return { id: id13, diagram: diagram2 };
|
|
@@ -98099,7 +98333,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
98099
98333
|
}, "detector");
|
|
98100
98334
|
var loader14 = /* @__PURE__ */ __name(async () => {
|
|
98101
98335
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98102
|
-
const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-
|
|
98336
|
+
const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-BIRrKhqs.js");
|
|
98103
98337
|
return { diagram: diagram22 };
|
|
98104
98338
|
}, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0);
|
|
98105
98339
|
return { id: id14, diagram: diagram2 };
|
|
@@ -98119,7 +98353,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
98119
98353
|
}, "detector");
|
|
98120
98354
|
var loader15 = /* @__PURE__ */ __name(async () => {
|
|
98121
98355
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98122
|
-
const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-
|
|
98356
|
+
const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-DRDqVPKY.js");
|
|
98123
98357
|
return { diagram: diagram22 };
|
|
98124
98358
|
}, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
|
|
98125
98359
|
return { id: id15, diagram: diagram2 };
|
|
@@ -98142,7 +98376,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
98142
98376
|
}, "detector");
|
|
98143
98377
|
var loader16 = /* @__PURE__ */ __name(async () => {
|
|
98144
98378
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98145
|
-
const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-
|
|
98379
|
+
const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-B-pby7Ke.js");
|
|
98146
98380
|
return { diagram: diagram22 };
|
|
98147
98381
|
}, true ? __vite__mapDeps([37,36,12,13]) : void 0);
|
|
98148
98382
|
return { id: id16, diagram: diagram2 };
|
|
@@ -98159,7 +98393,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
|
|
|
98159
98393
|
}, "detector");
|
|
98160
98394
|
var loader17 = /* @__PURE__ */ __name(async () => {
|
|
98161
98395
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98162
|
-
const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-
|
|
98396
|
+
const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-CSGjRykr.js");
|
|
98163
98397
|
return { diagram: diagram22 };
|
|
98164
98398
|
}, true ? __vite__mapDeps([38,11,9,26]) : void 0);
|
|
98165
98399
|
return { id: id17, diagram: diagram2 };
|
|
@@ -98229,7 +98463,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
|
|
|
98229
98463
|
}, "detector");
|
|
98230
98464
|
var loader18 = /* @__PURE__ */ __name(async () => {
|
|
98231
98465
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98232
|
-
const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-
|
|
98466
|
+
const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-AsG_wdLN.js");
|
|
98233
98467
|
return { diagram: diagram22 };
|
|
98234
98468
|
}, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
|
|
98235
98469
|
return { id: id18, diagram: diagram2 };
|
|
@@ -98246,7 +98480,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
|
|
|
98246
98480
|
}, "detector");
|
|
98247
98481
|
var loader19 = /* @__PURE__ */ __name(async () => {
|
|
98248
98482
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98249
|
-
const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-
|
|
98483
|
+
const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-C-m1bG_Z.js");
|
|
98250
98484
|
return { diagram: diagram22 };
|
|
98251
98485
|
}, true ? __vite__mapDeps([39,26]) : void 0);
|
|
98252
98486
|
return { id: id19, diagram: diagram2 };
|
|
@@ -98263,7 +98497,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
|
|
|
98263
98497
|
}, "detector");
|
|
98264
98498
|
var loader20 = /* @__PURE__ */ __name(async () => {
|
|
98265
98499
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98266
|
-
const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH
|
|
98500
|
+
const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-C5ajM9Hr.js");
|
|
98267
98501
|
return { diagram: diagram22 };
|
|
98268
98502
|
}, true ? __vite__mapDeps([40,12,13]) : void 0);
|
|
98269
98503
|
return { id: id20, diagram: diagram2 };
|
|
@@ -98280,7 +98514,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
|
|
|
98280
98514
|
}, "detector");
|
|
98281
98515
|
var loader21 = /* @__PURE__ */ __name(async () => {
|
|
98282
98516
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98283
|
-
const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-
|
|
98517
|
+
const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-DDCQetMc.js");
|
|
98284
98518
|
return { diagram: diagram22 };
|
|
98285
98519
|
}, true ? __vite__mapDeps([41,11]) : void 0);
|
|
98286
98520
|
return { id: id21, diagram: diagram2 };
|
|
@@ -98297,7 +98531,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
|
|
|
98297
98531
|
}, "detector");
|
|
98298
98532
|
var loader22 = /* @__PURE__ */ __name(async () => {
|
|
98299
98533
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98300
|
-
const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-
|
|
98534
|
+
const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-DTHGhOsp.js");
|
|
98301
98535
|
return { diagram: diagram22 };
|
|
98302
98536
|
}, true ? __vite__mapDeps([42,27,22]) : void 0);
|
|
98303
98537
|
return { id: id22, diagram: diagram2 };
|
|
@@ -98314,7 +98548,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
|
|
|
98314
98548
|
}, "detector");
|
|
98315
98549
|
var loader23 = /* @__PURE__ */ __name(async () => {
|
|
98316
98550
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98317
|
-
const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-
|
|
98551
|
+
const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-C3x0JkgF.js");
|
|
98318
98552
|
return { diagram: diagram22 };
|
|
98319
98553
|
}, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
|
|
98320
98554
|
return { id: id23, diagram: diagram2 };
|
|
@@ -98330,7 +98564,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
|
|
|
98330
98564
|
}, "detector");
|
|
98331
98565
|
var loader24 = /* @__PURE__ */ __name(async () => {
|
|
98332
98566
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98333
|
-
const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-
|
|
98567
|
+
const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-3IlyK_xp.js");
|
|
98334
98568
|
return { diagram: diagram22 };
|
|
98335
98569
|
}, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
|
|
98336
98570
|
return { id: id24, diagram: diagram2 };
|
|
@@ -98346,7 +98580,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
|
|
|
98346
98580
|
}, "detector");
|
|
98347
98581
|
var loader25 = /* @__PURE__ */ __name(async () => {
|
|
98348
98582
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98349
|
-
const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-
|
|
98583
|
+
const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-C7kfjZhf.js");
|
|
98350
98584
|
return { diagram: diagram22 };
|
|
98351
98585
|
}, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
|
|
98352
98586
|
return { id: id25, diagram: diagram2 };
|
|
@@ -98363,7 +98597,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
|
|
|
98363
98597
|
}, "detector");
|
|
98364
98598
|
var loader26 = /* @__PURE__ */ __name(async () => {
|
|
98365
98599
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98366
|
-
const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-
|
|
98600
|
+
const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-BF8vwQ4e.js");
|
|
98367
98601
|
return { diagram: diagram22 };
|
|
98368
98602
|
}, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
|
|
98369
98603
|
return { id: id26, diagram: diagram2 };
|
|
@@ -98380,7 +98614,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
|
|
|
98380
98614
|
}, "detector");
|
|
98381
98615
|
var loader27 = /* @__PURE__ */ __name(async () => {
|
|
98382
98616
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98383
|
-
const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-
|
|
98617
|
+
const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-DY9fHLYz.js");
|
|
98384
98618
|
return { diagram: diagram22 };
|
|
98385
98619
|
}, true ? [] : void 0);
|
|
98386
98620
|
return { id: id27, diagram: diagram2 };
|
|
@@ -98396,7 +98630,7 @@ var detector28 = /* @__PURE__ */ __name((txt) => {
|
|
|
98396
98630
|
}, "detector");
|
|
98397
98631
|
var loader28 = /* @__PURE__ */ __name(async () => {
|
|
98398
98632
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98399
|
-
const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-
|
|
98633
|
+
const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-C8gZYuUq.js");
|
|
98400
98634
|
return { diagram: diagram22 };
|
|
98401
98635
|
}, true ? [] : void 0);
|
|
98402
98636
|
return { id: id28, diagram: diagram2 };
|
|
@@ -98413,7 +98647,7 @@ var detector29 = /* @__PURE__ */ __name((txt) => {
|
|
|
98413
98647
|
}, "detector");
|
|
98414
98648
|
var loader29 = /* @__PURE__ */ __name(async () => {
|
|
98415
98649
|
const { diagram: diagram2 } = await __vitePreload(async () => {
|
|
98416
|
-
const { diagram: diagram22 } = await import("./diagram-E7M64L7V-
|
|
98650
|
+
const { diagram: diagram22 } = await import("./diagram-E7M64L7V-B1sUlvtn.js");
|
|
98417
98651
|
return { diagram: diagram22 };
|
|
98418
98652
|
}, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
|
|
98419
98653
|
return { id: id29, diagram: diagram2 };
|
|
@@ -99274,7 +99508,14 @@ if (!customElements.get("dominds-mermaid-block")) {
|
|
|
99274
99508
|
customElements.define("dominds-mermaid-block", DomindsMermaidBlock);
|
|
99275
99509
|
}
|
|
99276
99510
|
const WORKSPACE_FILE_PREVIEW_ROUTE = "/f";
|
|
99511
|
+
const RTWS_PSEUDO_ROUTE_SEGMENTS = ["workspace", "rtws", "<workspace>", "<rtws>"];
|
|
99277
99512
|
const DOMINDS_RTWS_DATA_ATTR = "data-dominds-rtws";
|
|
99513
|
+
const DOMINDS_PREVIEW_PATH_ATTR = "dominds-preview-path";
|
|
99514
|
+
const DOMINDS_PREVIEW_HREF_ATTR = "dominds-preview-href";
|
|
99515
|
+
const DOMINDS_PREVIEW_STATE_ATTR = "dominds-preview-state";
|
|
99516
|
+
const DOMINDS_PREVIEW_STATE_PENDING = "pending";
|
|
99517
|
+
const DOMINDS_PREVIEW_STATE_READY = "ready";
|
|
99518
|
+
const DOMINDS_PREVIEW_STATE_INVALID = "invalid";
|
|
99278
99519
|
function slugifyHeadingId(raw) {
|
|
99279
99520
|
const trimmed = raw.trim();
|
|
99280
99521
|
if (!trimmed) return "";
|
|
@@ -99420,6 +99661,74 @@ function normalizeRtwsRelativePath(rawPath, options) {
|
|
|
99420
99661
|
}
|
|
99421
99662
|
return out;
|
|
99422
99663
|
}
|
|
99664
|
+
function normalizeWorkspacePseudoRelativePath(rawPath) {
|
|
99665
|
+
const normalized = normalizeSlashPath(rawPath).replace(/\/+/g, "/").trim();
|
|
99666
|
+
for (const prefix of RTWS_PSEUDO_ROUTE_SEGMENTS) {
|
|
99667
|
+
let tail = null;
|
|
99668
|
+
if (normalized === prefix || normalized === `/${prefix}`) {
|
|
99669
|
+
tail = "";
|
|
99670
|
+
} else if (normalized.startsWith(`/${prefix}/`)) {
|
|
99671
|
+
tail = normalized.slice(prefix.length + 2);
|
|
99672
|
+
} else if (normalized.startsWith(`${prefix}/`)) {
|
|
99673
|
+
tail = normalized.slice(prefix.length + 1);
|
|
99674
|
+
}
|
|
99675
|
+
if (tail !== null) {
|
|
99676
|
+
return normalizeRtwsRelativePath(tail, { allowRoot: true });
|
|
99677
|
+
}
|
|
99678
|
+
}
|
|
99679
|
+
return null;
|
|
99680
|
+
}
|
|
99681
|
+
function decodeHrefPath(rawPath) {
|
|
99682
|
+
try {
|
|
99683
|
+
return decodeURIComponent(rawPath);
|
|
99684
|
+
} catch {
|
|
99685
|
+
return rawPath;
|
|
99686
|
+
}
|
|
99687
|
+
}
|
|
99688
|
+
function isLoopbackHost(hostname) {
|
|
99689
|
+
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "[::1]";
|
|
99690
|
+
}
|
|
99691
|
+
function canRewriteSameRtwsHttpUrl(url) {
|
|
99692
|
+
if (typeof window === "undefined") return false;
|
|
99693
|
+
try {
|
|
99694
|
+
const current = new URL(window.location.href);
|
|
99695
|
+
if (url.origin === current.origin) return true;
|
|
99696
|
+
return url.protocol === current.protocol && url.port === current.port && isLoopbackHost(url.hostname) && isLoopbackHost(current.hostname);
|
|
99697
|
+
} catch {
|
|
99698
|
+
return false;
|
|
99699
|
+
}
|
|
99700
|
+
}
|
|
99701
|
+
function extractWorkspacePseudoHrefCandidate(rawHref) {
|
|
99702
|
+
const trimmed = rawHref.trim();
|
|
99703
|
+
if (trimmed.length < 1) return null;
|
|
99704
|
+
if (!/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(trimmed)) return trimmed;
|
|
99705
|
+
let parsedUrl;
|
|
99706
|
+
try {
|
|
99707
|
+
parsedUrl = new URL(trimmed);
|
|
99708
|
+
} catch {
|
|
99709
|
+
return null;
|
|
99710
|
+
}
|
|
99711
|
+
if (!/^https?:$/i.test(parsedUrl.protocol)) return null;
|
|
99712
|
+
if (!canRewriteSameRtwsHttpUrl(parsedUrl)) return null;
|
|
99713
|
+
return decodeHrefPath(parsedUrl.pathname);
|
|
99714
|
+
}
|
|
99715
|
+
function parseWorkspacePseudoLinkTarget(rawHref) {
|
|
99716
|
+
const hrefCandidate = extractWorkspacePseudoHrefCandidate(rawHref);
|
|
99717
|
+
if (hrefCandidate === null) return null;
|
|
99718
|
+
const parsed = parseWorkspaceHrefPath(hrefCandidate);
|
|
99719
|
+
if (parsed === null) return null;
|
|
99720
|
+
const relativePath = normalizeWorkspacePseudoRelativePath(parsed.rawPath);
|
|
99721
|
+
if (relativePath === null) return null;
|
|
99722
|
+
return {
|
|
99723
|
+
relativePath,
|
|
99724
|
+
line: parsed.line,
|
|
99725
|
+
column: parsed.column
|
|
99726
|
+
};
|
|
99727
|
+
}
|
|
99728
|
+
function deleteTokenAttr(token2, name) {
|
|
99729
|
+
if (!Array.isArray(token2.attrs)) return;
|
|
99730
|
+
token2.attrs = token2.attrs.filter(([attrName]) => attrName !== name);
|
|
99731
|
+
}
|
|
99423
99732
|
function resolveRelativeWorkspaceFilePreviewTarget(rawHref, env) {
|
|
99424
99733
|
if (!env.allowRelativeWorkspaceLinks) return null;
|
|
99425
99734
|
const trimmed = rawHref.trim();
|
|
@@ -99526,7 +99835,15 @@ const domPurifyConfig = {
|
|
|
99526
99835
|
allowCustomizedBuiltInElements: false
|
|
99527
99836
|
},
|
|
99528
99837
|
ADD_TAGS: [...allowedCustomElements],
|
|
99529
|
-
ADD_ATTR: [
|
|
99838
|
+
ADD_ATTR: [
|
|
99839
|
+
...allowedCustomElementAttrs,
|
|
99840
|
+
"id",
|
|
99841
|
+
"target",
|
|
99842
|
+
"rel",
|
|
99843
|
+
DOMINDS_PREVIEW_PATH_ATTR,
|
|
99844
|
+
DOMINDS_PREVIEW_HREF_ATTR,
|
|
99845
|
+
DOMINDS_PREVIEW_STATE_ATTR
|
|
99846
|
+
]
|
|
99530
99847
|
};
|
|
99531
99848
|
const md = new MarkdownIt({
|
|
99532
99849
|
html: false,
|
|
@@ -99575,16 +99892,18 @@ md.renderer.rules.link_open = (tokens, idx, options, _env, self2) => {
|
|
|
99575
99892
|
const href = token2.attrGet("href");
|
|
99576
99893
|
const env = getMarkdownRenderEnv(_env);
|
|
99577
99894
|
if (typeof href === "string") {
|
|
99895
|
+
const workspacePseudoLink = parseWorkspacePseudoLinkTarget(href);
|
|
99578
99896
|
const workspaceFileLink = parseWorkspaceFileLinkTarget(href);
|
|
99579
|
-
const previewTarget = workspaceFileLink !== null ? resolveWorkspaceFilePreviewTarget(workspaceFileLink) : resolveRelativeWorkspaceFilePreviewTarget(href, env);
|
|
99897
|
+
const previewTarget = workspacePseudoLink ?? (workspaceFileLink !== null ? resolveWorkspaceFilePreviewTarget(workspaceFileLink) : resolveRelativeWorkspaceFilePreviewTarget(href, env));
|
|
99580
99898
|
if (previewTarget) {
|
|
99581
|
-
token2.attrSet(
|
|
99899
|
+
token2.attrSet(DOMINDS_PREVIEW_PATH_ATTR, previewTarget.relativePath);
|
|
99900
|
+
token2.attrSet(DOMINDS_PREVIEW_HREF_ATTR, buildWorkspaceFilePreviewHref(previewTarget));
|
|
99901
|
+
token2.attrSet(DOMINDS_PREVIEW_STATE_ATTR, DOMINDS_PREVIEW_STATE_PENDING);
|
|
99902
|
+
deleteTokenAttr(token2, "href");
|
|
99582
99903
|
applyOpenInNewTabAttrs(token2);
|
|
99583
99904
|
return self2.renderToken(tokens, idx, options);
|
|
99584
99905
|
}
|
|
99585
|
-
|
|
99586
|
-
applyOpenInNewTabAttrs(token2);
|
|
99587
|
-
}
|
|
99906
|
+
applyOpenInNewTabAttrs(token2);
|
|
99588
99907
|
}
|
|
99589
99908
|
return self2.renderToken(tokens, idx, options);
|
|
99590
99909
|
};
|
|
@@ -99610,6 +99929,106 @@ function renderDomindsMarkdown(input, opts = { kind: "chat" }) {
|
|
|
99610
99929
|
return escapeHtmlText(input);
|
|
99611
99930
|
}
|
|
99612
99931
|
}
|
|
99932
|
+
function getAuthTokenForWorkspaceLinkCheck() {
|
|
99933
|
+
const authFromUrl = getAuthFromCurrentUrl();
|
|
99934
|
+
if (authFromUrl !== null) return authFromUrl;
|
|
99935
|
+
if (typeof window === "undefined") return null;
|
|
99936
|
+
try {
|
|
99937
|
+
const authFromStorage = window.localStorage.getItem("dominds.authKey");
|
|
99938
|
+
if (typeof authFromStorage !== "string") return null;
|
|
99939
|
+
const trimmed = authFromStorage.trim();
|
|
99940
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
99941
|
+
} catch {
|
|
99942
|
+
return null;
|
|
99943
|
+
}
|
|
99944
|
+
}
|
|
99945
|
+
async function resolveWorkspaceEntryBatch(relativePaths) {
|
|
99946
|
+
const uniquePaths = Array.from(
|
|
99947
|
+
new Set(relativePaths.map((path2) => path2.trim()).filter((path2) => path2.length > 0))
|
|
99948
|
+
);
|
|
99949
|
+
const resultMap = /* @__PURE__ */ new Map();
|
|
99950
|
+
if (uniquePaths.length < 1) return resultMap;
|
|
99951
|
+
const headers = { Accept: "application/json" };
|
|
99952
|
+
const authToken = getAuthTokenForWorkspaceLinkCheck();
|
|
99953
|
+
if (authToken !== null) {
|
|
99954
|
+
headers["Authorization"] = `Bearer ${authToken}`;
|
|
99955
|
+
}
|
|
99956
|
+
try {
|
|
99957
|
+
const response = await fetch("/api/markdown-links/resolve", {
|
|
99958
|
+
method: "POST",
|
|
99959
|
+
headers,
|
|
99960
|
+
body: JSON.stringify({ paths: uniquePaths }),
|
|
99961
|
+
cache: "no-store"
|
|
99962
|
+
});
|
|
99963
|
+
if (!response.ok) return resultMap;
|
|
99964
|
+
const payload = await response.json();
|
|
99965
|
+
if (typeof payload !== "object" || payload === null) return resultMap;
|
|
99966
|
+
const rawResults = payload.results;
|
|
99967
|
+
if (!Array.isArray(rawResults)) return resultMap;
|
|
99968
|
+
for (const entry of rawResults) {
|
|
99969
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
99970
|
+
const path2 = entry.path;
|
|
99971
|
+
const exists = entry.exists;
|
|
99972
|
+
if (typeof path2 !== "string" || typeof exists !== "boolean") continue;
|
|
99973
|
+
resultMap.set(path2, exists);
|
|
99974
|
+
}
|
|
99975
|
+
return resultMap;
|
|
99976
|
+
} catch {
|
|
99977
|
+
return resultMap;
|
|
99978
|
+
}
|
|
99979
|
+
}
|
|
99980
|
+
function unwrapAnchor(anchor2) {
|
|
99981
|
+
const parent = anchor2.parentNode;
|
|
99982
|
+
if (parent === null) return;
|
|
99983
|
+
const fragment = document.createDocumentFragment();
|
|
99984
|
+
while (anchor2.firstChild) {
|
|
99985
|
+
fragment.appendChild(anchor2.firstChild);
|
|
99986
|
+
}
|
|
99987
|
+
parent.replaceChild(fragment, anchor2);
|
|
99988
|
+
}
|
|
99989
|
+
function postprocessRenderedDomindsMarkdown(root2) {
|
|
99990
|
+
if (typeof window === "undefined") return;
|
|
99991
|
+
if (!("querySelectorAll" in root2)) return;
|
|
99992
|
+
const anchors = root2.querySelectorAll("a");
|
|
99993
|
+
const previewAnchorsByPath = /* @__PURE__ */ new Map();
|
|
99994
|
+
for (const anchorNode of anchors) {
|
|
99995
|
+
if (!(anchorNode instanceof HTMLAnchorElement)) continue;
|
|
99996
|
+
anchorNode.setAttribute("target", "_blank");
|
|
99997
|
+
const relTokens = new Set(
|
|
99998
|
+
(anchorNode.getAttribute("rel") ?? "").split(/\s+/).map((part) => part.trim()).filter((part) => part.length > 0)
|
|
99999
|
+
);
|
|
100000
|
+
relTokens.add("noopener");
|
|
100001
|
+
relTokens.add("noreferrer");
|
|
100002
|
+
anchorNode.setAttribute("rel", Array.from(relTokens).join(" "));
|
|
100003
|
+
const previewPath = anchorNode.getAttribute(DOMINDS_PREVIEW_PATH_ATTR);
|
|
100004
|
+
const previewHref = anchorNode.getAttribute(DOMINDS_PREVIEW_HREF_ATTR);
|
|
100005
|
+
const previewState = anchorNode.getAttribute(DOMINDS_PREVIEW_STATE_ATTR);
|
|
100006
|
+
if (typeof previewPath !== "string" || typeof previewHref !== "string") continue;
|
|
100007
|
+
if (previewState === DOMINDS_PREVIEW_STATE_READY || previewState === DOMINDS_PREVIEW_STATE_INVALID) {
|
|
100008
|
+
continue;
|
|
100009
|
+
}
|
|
100010
|
+
anchorNode.setAttribute(DOMINDS_PREVIEW_STATE_ATTR, DOMINDS_PREVIEW_STATE_PENDING);
|
|
100011
|
+
const bucket = previewAnchorsByPath.get(previewPath) ?? [];
|
|
100012
|
+
bucket.push({ anchor: anchorNode, previewHref });
|
|
100013
|
+
previewAnchorsByPath.set(previewPath, bucket);
|
|
100014
|
+
}
|
|
100015
|
+
if (previewAnchorsByPath.size < 1) return;
|
|
100016
|
+
void resolveWorkspaceEntryBatch(Array.from(previewAnchorsByPath.keys())).then((results) => {
|
|
100017
|
+
for (const [previewPath, anchorsForPath] of previewAnchorsByPath.entries()) {
|
|
100018
|
+
const exists = results.get(previewPath) === true;
|
|
100019
|
+
for (const item of anchorsForPath) {
|
|
100020
|
+
if (!item.anchor.isConnected) continue;
|
|
100021
|
+
if (exists) {
|
|
100022
|
+
item.anchor.setAttribute("href", item.previewHref);
|
|
100023
|
+
item.anchor.setAttribute(DOMINDS_PREVIEW_STATE_ATTR, DOMINDS_PREVIEW_STATE_READY);
|
|
100024
|
+
continue;
|
|
100025
|
+
}
|
|
100026
|
+
item.anchor.setAttribute(DOMINDS_PREVIEW_STATE_ATTR, DOMINDS_PREVIEW_STATE_INVALID);
|
|
100027
|
+
unwrapAnchor(item.anchor);
|
|
100028
|
+
}
|
|
100029
|
+
}
|
|
100030
|
+
});
|
|
100031
|
+
}
|
|
99613
100032
|
class DomindsMarkdownSection extends HTMLElement {
|
|
99614
100033
|
constructor() {
|
|
99615
100034
|
super();
|
|
@@ -99647,6 +100066,7 @@ class DomindsMarkdownSection extends HTMLElement {
|
|
|
99647
100066
|
kind: "chat",
|
|
99648
100067
|
allowRelativeWorkspaceLinks: true
|
|
99649
100068
|
});
|
|
100069
|
+
postprocessRenderedDomindsMarkdown(contentEl);
|
|
99650
100070
|
contentEl.setAttribute("data-raw-md", this.accumulatedRawMarkdown);
|
|
99651
100071
|
}
|
|
99652
100072
|
}
|
|
@@ -101611,6 +102031,7 @@ class DomindsDialogContainer extends HTMLElement {
|
|
|
101611
102031
|
kind: "chat",
|
|
101612
102032
|
allowRelativeWorkspaceLinks: true
|
|
101613
102033
|
});
|
|
102034
|
+
postprocessRenderedDomindsMarkdown(bodyEl);
|
|
101614
102035
|
bodyEl.classList.add("markdown-content");
|
|
101615
102036
|
bodyEl.setAttribute("data-raw-md", event.tellaskContent);
|
|
101616
102037
|
bodyEl.classList.add("completed");
|
|
@@ -101645,6 +102066,7 @@ class DomindsDialogContainer extends HTMLElement {
|
|
|
101645
102066
|
kind: "chat",
|
|
101646
102067
|
allowRelativeWorkspaceLinks: true
|
|
101647
102068
|
});
|
|
102069
|
+
postprocessRenderedDomindsMarkdown(block2);
|
|
101648
102070
|
block2.classList.add("markdown-content");
|
|
101649
102071
|
block2.setAttribute("data-raw-md", raw);
|
|
101650
102072
|
resultEl.appendChild(block2);
|
|
@@ -101712,6 +102134,7 @@ class DomindsDialogContainer extends HTMLElement {
|
|
|
101712
102134
|
kind: "chat",
|
|
101713
102135
|
allowRelativeWorkspaceLinks: true
|
|
101714
102136
|
});
|
|
102137
|
+
postprocessRenderedDomindsMarkdown(resultEl);
|
|
101715
102138
|
resultEl.setAttribute("data-raw-md", raw);
|
|
101716
102139
|
resultEl.classList.add("markdown-content");
|
|
101717
102140
|
resultEl.classList.add("completed");
|
|
@@ -101854,16 +102277,11 @@ ${event.content}`;
|
|
|
101854
102277
|
} else {
|
|
101855
102278
|
bubble.removeAttribute("data-assignment-genseq");
|
|
101856
102279
|
}
|
|
101857
|
-
|
|
101858
|
-
|
|
101859
|
-
bubble.setAttribute("data-caller-
|
|
102280
|
+
if (anchor2.anchorRole === "response") {
|
|
102281
|
+
bubble.setAttribute("data-caller-dialog-id", anchor2.callerDialogId);
|
|
102282
|
+
bubble.setAttribute("data-caller-course", String(Math.floor(anchor2.callerCourse)));
|
|
101860
102283
|
} else {
|
|
101861
102284
|
bubble.removeAttribute("data-caller-dialog-id");
|
|
101862
|
-
}
|
|
101863
|
-
const callerCourse = typeof anchor2.callerCourse === "number" && Number.isFinite(anchor2.callerCourse) ? Math.floor(anchor2.callerCourse) : void 0;
|
|
101864
|
-
if (callerCourse !== void 0) {
|
|
101865
|
-
bubble.setAttribute("data-caller-course", String(callerCourse));
|
|
101866
|
-
} else {
|
|
101867
102285
|
bubble.removeAttribute("data-caller-course");
|
|
101868
102286
|
}
|
|
101869
102287
|
this.upsertGenerationBubbleAnchorActions(bubble);
|
|
@@ -101898,14 +102316,46 @@ ${event.content}`;
|
|
|
101898
102316
|
const assignmentGenseq = this.parseOptionalPositiveInt(event.assignmentGenseq);
|
|
101899
102317
|
const callerCourse = this.parseOptionalPositiveInt(event.callerCourse);
|
|
101900
102318
|
const callerDialogId = typeof event.callerDialogId === "string" ? event.callerDialogId.trim() : void 0;
|
|
101901
|
-
|
|
101902
|
-
|
|
101903
|
-
|
|
101904
|
-
|
|
101905
|
-
|
|
101906
|
-
|
|
101907
|
-
|
|
101908
|
-
|
|
102319
|
+
let anchorMeta;
|
|
102320
|
+
switch (rawAnchorRole) {
|
|
102321
|
+
case "assignment":
|
|
102322
|
+
anchorMeta = {
|
|
102323
|
+
callId: rawCallId,
|
|
102324
|
+
anchorRole: "assignment",
|
|
102325
|
+
assignmentCourse: assignmentCourse !== void 0 ? storageExports.toAssignmentCourseNumber(assignmentCourse) : void 0,
|
|
102326
|
+
assignmentGenseq: assignmentGenseq !== void 0 ? storageExports.toAssignmentGenerationSeqNumber(assignmentGenseq) : void 0
|
|
102327
|
+
};
|
|
102328
|
+
break;
|
|
102329
|
+
case "response":
|
|
102330
|
+
if (callerDialogId === void 0 || callerDialogId === "") {
|
|
102331
|
+
this.handleProtocolError(
|
|
102332
|
+
`tellask_call_anchor_evt missing callerDialogId for response ${JSON.stringify({
|
|
102333
|
+
callId: rawCallId,
|
|
102334
|
+
genseq: event.genseq
|
|
102335
|
+
})}`
|
|
102336
|
+
);
|
|
102337
|
+
return;
|
|
102338
|
+
}
|
|
102339
|
+
if (callerCourse === void 0) {
|
|
102340
|
+
this.handleProtocolError(
|
|
102341
|
+
`tellask_call_anchor_evt missing callerCourse for response ${JSON.stringify({
|
|
102342
|
+
callId: rawCallId,
|
|
102343
|
+
genseq: event.genseq,
|
|
102344
|
+
callerDialogId
|
|
102345
|
+
})}`
|
|
102346
|
+
);
|
|
102347
|
+
return;
|
|
102348
|
+
}
|
|
102349
|
+
anchorMeta = {
|
|
102350
|
+
callId: rawCallId,
|
|
102351
|
+
anchorRole: "response",
|
|
102352
|
+
assignmentCourse: assignmentCourse !== void 0 ? storageExports.toAssignmentCourseNumber(assignmentCourse) : void 0,
|
|
102353
|
+
assignmentGenseq: assignmentGenseq !== void 0 ? storageExports.toAssignmentGenerationSeqNumber(assignmentGenseq) : void 0,
|
|
102354
|
+
callerDialogId,
|
|
102355
|
+
callerCourse: storageExports.toCallerCourseNumber(callerCourse)
|
|
102356
|
+
};
|
|
102357
|
+
break;
|
|
102358
|
+
}
|
|
101909
102359
|
const genseq = Math.floor(event.genseq);
|
|
101910
102360
|
const messages = this.shadowRoot?.querySelector(".messages");
|
|
101911
102361
|
const bubble = messages ? messages.querySelector(
|
|
@@ -104543,6 +104993,19 @@ class DomindsDocsPanel extends HTMLElement {
|
|
|
104543
104993
|
openExternalLink(href) {
|
|
104544
104994
|
window.open(href, "_blank", "noopener,noreferrer");
|
|
104545
104995
|
}
|
|
104996
|
+
normalizeDocBodyLinkTargets(root2) {
|
|
104997
|
+
if (!("querySelectorAll" in root2)) return;
|
|
104998
|
+
const anchors = root2.querySelectorAll("a");
|
|
104999
|
+
for (const anchorNode of anchors) {
|
|
105000
|
+
if (!(anchorNode instanceof HTMLAnchorElement)) continue;
|
|
105001
|
+
const href = anchorNode.getAttribute("href");
|
|
105002
|
+
if (typeof href !== "string") continue;
|
|
105003
|
+
if (href.startsWith("#") || this.parseDocsLinkTarget(href) !== null) {
|
|
105004
|
+
anchorNode.removeAttribute("target");
|
|
105005
|
+
anchorNode.removeAttribute("rel");
|
|
105006
|
+
}
|
|
105007
|
+
}
|
|
105008
|
+
}
|
|
104546
105009
|
scrollToPendingAnchorIfAny() {
|
|
104547
105010
|
if (!this.pendingScrollAnchorId) return;
|
|
104548
105011
|
const id30 = this.pendingScrollAnchorId;
|
|
@@ -104584,6 +105047,8 @@ class DomindsDocsPanel extends HTMLElement {
|
|
|
104584
105047
|
<div class="docs-body">${bodyHtml}</div>
|
|
104585
105048
|
</div>
|
|
104586
105049
|
`;
|
|
105050
|
+
postprocessRenderedDomindsMarkdown(root2);
|
|
105051
|
+
this.normalizeDocBodyLinkTargets(root2);
|
|
104587
105052
|
root2.querySelectorAll("button.docs-tab").forEach((btn) => {
|
|
104588
105053
|
btn.addEventListener("click", () => {
|
|
104589
105054
|
const k2 = btn.dataset.docKey;
|
|
@@ -104612,6 +105077,14 @@ class DomindsDocsPanel extends HTMLElement {
|
|
|
104612
105077
|
this.scrollToAnchorId(id30);
|
|
104613
105078
|
return;
|
|
104614
105079
|
}
|
|
105080
|
+
if (href.startsWith("/f/") || href === "/f" || href === "/workspace" || href.startsWith("/workspace/") || href === "/rtws" || href.startsWith("/rtws/")) {
|
|
105081
|
+
try {
|
|
105082
|
+
const resolved = new URL(href, window.location.href);
|
|
105083
|
+
this.openExternalLink(resolved.toString());
|
|
105084
|
+
} catch {
|
|
105085
|
+
}
|
|
105086
|
+
return;
|
|
105087
|
+
}
|
|
104615
105088
|
if (this.isExternalLink(href)) {
|
|
104616
105089
|
this.openExternalLink(href);
|
|
104617
105090
|
return;
|
|
@@ -106171,6 +106644,7 @@ class DomindsQ4HPanel extends HTMLElement {
|
|
|
106171
106644
|
<style>${style2}</style>
|
|
106172
106645
|
${html2}
|
|
106173
106646
|
`;
|
|
106647
|
+
postprocessRenderedDomindsMarkdown(this.shadowRoot);
|
|
106174
106648
|
this.setupEventListeners();
|
|
106175
106649
|
this.applySelectionUi();
|
|
106176
106650
|
}
|
|
@@ -107895,6 +108369,7 @@ class DomindsTeamManualPanel extends HTMLElement {
|
|
|
107895
108369
|
<div class="body">${bodyHtml}</div>
|
|
107896
108370
|
</div>
|
|
107897
108371
|
`;
|
|
108372
|
+
postprocessRenderedDomindsMarkdown(root2);
|
|
107898
108373
|
root2.querySelectorAll("button.topic").forEach((btn) => {
|
|
107899
108374
|
btn.addEventListener("click", () => {
|
|
107900
108375
|
const raw = btn.dataset.topic;
|
|
@@ -109013,6 +109488,15 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109013
109488
|
if (timeEl instanceof HTMLElement) {
|
|
109014
109489
|
timeEl.textContent = next2.lastModified || "";
|
|
109015
109490
|
}
|
|
109491
|
+
if (targetSelf === rootId) {
|
|
109492
|
+
this.reorderVisibleRoots(next2.taskDocPath);
|
|
109493
|
+
} else {
|
|
109494
|
+
this.reorderVisibleSubdialogs(rootId);
|
|
109495
|
+
const rootDialog = this.findDialogByIds(rootId, rootId, true);
|
|
109496
|
+
if (rootDialog) {
|
|
109497
|
+
this.reorderVisibleRoots(rootDialog.taskDocPath);
|
|
109498
|
+
}
|
|
109499
|
+
}
|
|
109016
109500
|
}
|
|
109017
109501
|
if (patch.subdialogCount !== void 0 && targetSelf === rootId) {
|
|
109018
109502
|
const countEl = entry.el.querySelector(".dialog-count");
|
|
@@ -109236,29 +109720,13 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109236
109720
|
this.visibleSubdialogCountByRoot.delete(existing);
|
|
109237
109721
|
}
|
|
109238
109722
|
}
|
|
109239
|
-
|
|
109240
|
-
|
|
109241
|
-
|
|
109242
|
-
this.selectionState = {
|
|
109243
|
-
kind: "selected",
|
|
109244
|
-
rootId,
|
|
109245
|
-
selfId,
|
|
109246
|
-
isRoot: rootId === selfId
|
|
109247
|
-
};
|
|
109248
|
-
}
|
|
109249
|
-
}
|
|
109250
|
-
if (this.selectionState.kind === "selected") {
|
|
109251
|
-
const hasSelection = validated.some(
|
|
109252
|
-
(dialog2) => this.isSelectedDialog(dialog2, this.selectionState)
|
|
109253
|
-
);
|
|
109723
|
+
const selection2 = this.selectionState;
|
|
109724
|
+
if (selection2.kind === "selected") {
|
|
109725
|
+
const hasSelection = validated.some((dialog2) => this.isSelectedDialog(dialog2, selection2));
|
|
109254
109726
|
if (!hasSelection) {
|
|
109255
109727
|
this.clearSelection();
|
|
109256
109728
|
} else {
|
|
109257
|
-
this.ensureDialogVisible(
|
|
109258
|
-
this.selectionState.rootId,
|
|
109259
|
-
this.selectionState.selfId,
|
|
109260
|
-
this.selectionState.isRoot
|
|
109261
|
-
);
|
|
109729
|
+
this.ensureDialogVisible(selection2.rootId, selection2.selfId, selection2.isRoot);
|
|
109262
109730
|
}
|
|
109263
109731
|
}
|
|
109264
109732
|
const t2 = getUiStrings(this.props.uiLanguage);
|
|
@@ -109269,84 +109737,7 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109269
109737
|
this.refreshFromDom();
|
|
109270
109738
|
return;
|
|
109271
109739
|
}
|
|
109272
|
-
|
|
109273
|
-
const taskCollapsed = this.collapsedTasks.has(group.taskDocPath);
|
|
109274
|
-
const taskToggle = this.renderToggleIcon(taskCollapsed);
|
|
109275
|
-
const visibleRootCount = this.visibleRootCountByTask.get(group.taskDocPath) ?? _DoneDialogList.SHOW_MORE_STEP;
|
|
109276
|
-
const visibleRoots = group.roots.slice(0, visibleRootCount);
|
|
109277
|
-
const hiddenRootCount = Math.max(group.roots.length - visibleRoots.length, 0);
|
|
109278
|
-
const rootNodes = visibleRoots.map((rootGroup) => {
|
|
109279
|
-
const rootDialog = rootGroup.root;
|
|
109280
|
-
const rootCollapsed = this.collapsedRoots.has(rootGroup.rootId);
|
|
109281
|
-
const rootToggle = this.renderToggleIcon(rootCollapsed);
|
|
109282
|
-
const rootRow = rootDialog ? this.renderRootRow(rootDialog, rootToggle, rootGroup.subdialogs.length) : `
|
|
109283
|
-
<div class="dialog-item root-dialog missing" data-root-id="${rootGroup.rootId}" data-self-id="">
|
|
109284
|
-
<div class="dialog-row">
|
|
109285
|
-
<button class="toggle root-toggle" data-action="toggle-root" data-root-id="${rootGroup.rootId}" type="button" aria-label="${this.formatToggleAriaLabel(rootCollapsed)}">${rootToggle}</button>
|
|
109286
|
-
<span class="dialog-title">${t2.missingRoot}</span>
|
|
109287
|
-
<span class="dialog-meta-right">
|
|
109288
|
-
<span class="dialog-count">${rootGroup.subdialogs.length}</span>
|
|
109289
|
-
<span class="dialog-id">${rootGroup.rootId}</span>
|
|
109290
|
-
</span>
|
|
109291
|
-
</div>
|
|
109292
|
-
</div>
|
|
109293
|
-
`;
|
|
109294
|
-
const visibleSubdialogCount = this.visibleSubdialogCountByRoot.get(rootGroup.rootId) ?? _DoneDialogList.SHOW_MORE_STEP;
|
|
109295
|
-
const visibleSubdialogs = rootGroup.subdialogs.slice(0, visibleSubdialogCount);
|
|
109296
|
-
const hiddenSubdialogCount = Math.max(
|
|
109297
|
-
rootGroup.subdialogs.length - visibleSubdialogs.length,
|
|
109298
|
-
0
|
|
109299
|
-
);
|
|
109300
|
-
const subNodes = visibleSubdialogs.map((subdialog) => this.renderDialogRow(subdialog)).join("");
|
|
109301
|
-
const subShowMore = hiddenSubdialogCount > 0 ? this.renderShowMoreButton({
|
|
109302
|
-
action: "show-more-subdialogs",
|
|
109303
|
-
rootId: rootGroup.rootId,
|
|
109304
|
-
hiddenCount: hiddenSubdialogCount
|
|
109305
|
-
}) : "";
|
|
109306
|
-
const subCollapsed = taskCollapsed || rootCollapsed;
|
|
109307
|
-
return `
|
|
109308
|
-
<div class="rdlg-node" data-rdlg-root-id="${rootGroup.rootId}">
|
|
109309
|
-
${rootRow}
|
|
109310
|
-
<div class="sdlg-children ${subCollapsed ? "collapsed" : ""}">
|
|
109311
|
-
${subNodes}
|
|
109312
|
-
${subShowMore}
|
|
109313
|
-
</div>
|
|
109314
|
-
</div>
|
|
109315
|
-
`;
|
|
109316
|
-
}).join("");
|
|
109317
|
-
const rootShowMore = hiddenRootCount > 0 ? this.renderShowMoreButton({
|
|
109318
|
-
action: "show-more-roots",
|
|
109319
|
-
taskDocPath: group.taskDocPath,
|
|
109320
|
-
hiddenCount: hiddenRootCount
|
|
109321
|
-
}) : "";
|
|
109322
|
-
return `
|
|
109323
|
-
<div class="task-group task-node">
|
|
109324
|
-
<div class="task-title" data-task-path="${group.taskDocPath}">
|
|
109325
|
-
<div class="task-title-left">
|
|
109326
|
-
<button class="toggle task-toggle" data-action="toggle-task" data-task-path="${group.taskDocPath}" type="button" aria-label="${this.formatToggleAriaLabel(taskCollapsed)}">${taskToggle}</button>
|
|
109327
|
-
<span>${group.taskDocPath}</span>
|
|
109328
|
-
</div>
|
|
109329
|
-
<div class="task-title-right">
|
|
109330
|
-
<button class="action icon-button" data-action="task-create-dialog" data-task-path="${group.taskDocPath}" type="button" title="${t2.createNewDialogTitle}" aria-label="${t2.createNewDialogTitle}">
|
|
109331
|
-
${this.renderCreateIcon()}
|
|
109332
|
-
</button>
|
|
109333
|
-
<button class="action icon-button" data-action="task-revive" data-task-path="${group.taskDocPath}" type="button" title="${t2.dialogActionReviveAll}" aria-label="${t2.dialogActionReviveAll}">
|
|
109334
|
-
${this.renderReviveIcon()}
|
|
109335
|
-
</button>
|
|
109336
|
-
<button class="action icon-button" data-action="task-archive" data-task-path="${group.taskDocPath}" type="button" title="${t2.dialogActionArchiveAll}" aria-label="${t2.dialogActionArchiveAll}">
|
|
109337
|
-
${this.renderArchiveIcon()}
|
|
109338
|
-
</button>
|
|
109339
|
-
<span class="dialog-count">${group.roots.length}</span>
|
|
109340
|
-
</div>
|
|
109341
|
-
</div>
|
|
109342
|
-
<div class="task-rows ${taskCollapsed ? "collapsed" : ""}">
|
|
109343
|
-
${rootNodes}
|
|
109344
|
-
${rootShowMore}
|
|
109345
|
-
</div>
|
|
109346
|
-
</div>
|
|
109347
|
-
`;
|
|
109348
|
-
}).join("");
|
|
109349
|
-
this.listEl.innerHTML = html2;
|
|
109740
|
+
this.reconcileTaskGroups(groups);
|
|
109350
109741
|
this.refreshFromDom();
|
|
109351
109742
|
}
|
|
109352
109743
|
renderLoading() {
|
|
@@ -109360,6 +109751,216 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109360
109751
|
encodeDialogDataset(dialog2) {
|
|
109361
109752
|
return encodeURIComponent(JSON.stringify(dialog2));
|
|
109362
109753
|
}
|
|
109754
|
+
createElementFromHtml(html2) {
|
|
109755
|
+
const template = document.createElement("template");
|
|
109756
|
+
template.innerHTML = html2.trim();
|
|
109757
|
+
const first = template.content.firstElementChild;
|
|
109758
|
+
if (!(first instanceof HTMLElement)) {
|
|
109759
|
+
throw new Error("Expected HTML template to produce a single HTMLElement.");
|
|
109760
|
+
}
|
|
109761
|
+
return first;
|
|
109762
|
+
}
|
|
109763
|
+
syncElement(target, next2) {
|
|
109764
|
+
if (target.outerHTML === next2.outerHTML) return;
|
|
109765
|
+
for (const name of target.getAttributeNames()) {
|
|
109766
|
+
if (!next2.hasAttribute(name)) {
|
|
109767
|
+
target.removeAttribute(name);
|
|
109768
|
+
}
|
|
109769
|
+
}
|
|
109770
|
+
for (const name of next2.getAttributeNames()) {
|
|
109771
|
+
const value = next2.getAttribute(name);
|
|
109772
|
+
if (value === null) continue;
|
|
109773
|
+
if (target.getAttribute(name) !== value) {
|
|
109774
|
+
target.setAttribute(name, value);
|
|
109775
|
+
}
|
|
109776
|
+
}
|
|
109777
|
+
if (target.innerHTML !== next2.innerHTML) {
|
|
109778
|
+
target.innerHTML = next2.innerHTML;
|
|
109779
|
+
}
|
|
109780
|
+
}
|
|
109781
|
+
renderTaskTitleRow(group, taskCollapsed) {
|
|
109782
|
+
const t2 = getUiStrings(this.props.uiLanguage);
|
|
109783
|
+
const taskToggle = this.renderToggleIcon(taskCollapsed);
|
|
109784
|
+
return `
|
|
109785
|
+
<div class="task-title" data-task-path="${group.taskDocPath}">
|
|
109786
|
+
<div class="task-title-left">
|
|
109787
|
+
<button class="toggle task-toggle" data-action="toggle-task" data-task-path="${group.taskDocPath}" type="button" aria-label="${this.formatToggleAriaLabel(taskCollapsed)}">${taskToggle}</button>
|
|
109788
|
+
<span>${group.taskDocPath}</span>
|
|
109789
|
+
</div>
|
|
109790
|
+
<div class="task-title-right">
|
|
109791
|
+
<button class="action icon-button" data-action="task-create-dialog" data-task-path="${group.taskDocPath}" type="button" title="${t2.createNewDialogTitle}" aria-label="${t2.createNewDialogTitle}">
|
|
109792
|
+
${this.renderCreateIcon()}
|
|
109793
|
+
</button>
|
|
109794
|
+
<button class="action icon-button" data-action="task-revive" data-task-path="${group.taskDocPath}" type="button" title="${t2.dialogActionReviveAll}" aria-label="${t2.dialogActionReviveAll}">
|
|
109795
|
+
${this.renderReviveIcon()}
|
|
109796
|
+
</button>
|
|
109797
|
+
<button class="action icon-button" data-action="task-archive" data-task-path="${group.taskDocPath}" type="button" title="${t2.dialogActionArchiveAll}" aria-label="${t2.dialogActionArchiveAll}">
|
|
109798
|
+
${this.renderArchiveIcon()}
|
|
109799
|
+
</button>
|
|
109800
|
+
<span class="dialog-count">${group.roots.length}</span>
|
|
109801
|
+
</div>
|
|
109802
|
+
</div>
|
|
109803
|
+
`;
|
|
109804
|
+
}
|
|
109805
|
+
renderMissingRootRow(rootGroup, rootCollapsed) {
|
|
109806
|
+
const t2 = getUiStrings(this.props.uiLanguage);
|
|
109807
|
+
const rootToggle = this.renderToggleIcon(rootCollapsed);
|
|
109808
|
+
return `
|
|
109809
|
+
<div class="dialog-item root-dialog missing" data-root-id="${rootGroup.rootId}" data-self-id="">
|
|
109810
|
+
<div class="dialog-row">
|
|
109811
|
+
<button class="toggle root-toggle" data-action="toggle-root" data-root-id="${rootGroup.rootId}" type="button" aria-label="${this.formatToggleAriaLabel(rootCollapsed)}">${rootToggle}</button>
|
|
109812
|
+
<span class="dialog-title">${t2.missingRoot}</span>
|
|
109813
|
+
<span class="dialog-meta-right">
|
|
109814
|
+
<span class="dialog-count">${rootGroup.subdialogs.length}</span>
|
|
109815
|
+
<span class="dialog-id">${rootGroup.rootId}</span>
|
|
109816
|
+
</span>
|
|
109817
|
+
</div>
|
|
109818
|
+
</div>
|
|
109819
|
+
`;
|
|
109820
|
+
}
|
|
109821
|
+
reconcileShowMoreRow(container, html2) {
|
|
109822
|
+
const existing = container.querySelector(":scope > .show-more-row");
|
|
109823
|
+
if (html2 === null) {
|
|
109824
|
+
existing?.remove();
|
|
109825
|
+
return;
|
|
109826
|
+
}
|
|
109827
|
+
const next2 = this.createElementFromHtml(html2);
|
|
109828
|
+
if (existing) {
|
|
109829
|
+
this.syncElement(existing, next2);
|
|
109830
|
+
container.appendChild(existing);
|
|
109831
|
+
return;
|
|
109832
|
+
}
|
|
109833
|
+
container.appendChild(next2);
|
|
109834
|
+
}
|
|
109835
|
+
reconcileSubdialogRows(rootChildren, rootGroup) {
|
|
109836
|
+
const existingRows = /* @__PURE__ */ new Map();
|
|
109837
|
+
rootChildren.querySelectorAll(":scope > .dialog-item.sub-dialog[data-dialog-key]").forEach((row) => {
|
|
109838
|
+
const key = (row.getAttribute("data-dialog-key") ?? "").trim();
|
|
109839
|
+
if (key !== "") {
|
|
109840
|
+
existingRows.set(key, row);
|
|
109841
|
+
}
|
|
109842
|
+
});
|
|
109843
|
+
const visibleSubdialogCount = this.visibleSubdialogCountByRoot.get(rootGroup.rootId) ?? _DoneDialogList.SHOW_MORE_STEP;
|
|
109844
|
+
const visibleSubdialogs = rootGroup.subdialogs.slice(0, visibleSubdialogCount);
|
|
109845
|
+
const hiddenSubdialogCount = Math.max(
|
|
109846
|
+
rootGroup.subdialogs.length - visibleSubdialogs.length,
|
|
109847
|
+
0
|
|
109848
|
+
);
|
|
109849
|
+
for (const subdialog of visibleSubdialogs) {
|
|
109850
|
+
const key = this.getDialogKey(subdialog);
|
|
109851
|
+
const next2 = this.createElementFromHtml(this.renderDialogRow(subdialog));
|
|
109852
|
+
const existing = existingRows.get(key);
|
|
109853
|
+
if (existing) {
|
|
109854
|
+
this.syncElement(existing, next2);
|
|
109855
|
+
rootChildren.appendChild(existing);
|
|
109856
|
+
existingRows.delete(key);
|
|
109857
|
+
} else {
|
|
109858
|
+
rootChildren.appendChild(next2);
|
|
109859
|
+
}
|
|
109860
|
+
}
|
|
109861
|
+
for (const stale of existingRows.values()) {
|
|
109862
|
+
stale.remove();
|
|
109863
|
+
}
|
|
109864
|
+
const showMoreHtml = hiddenSubdialogCount > 0 ? this.renderShowMoreButton({
|
|
109865
|
+
action: "show-more-subdialogs",
|
|
109866
|
+
rootId: rootGroup.rootId,
|
|
109867
|
+
hiddenCount: hiddenSubdialogCount
|
|
109868
|
+
}) : null;
|
|
109869
|
+
this.reconcileShowMoreRow(rootChildren, showMoreHtml);
|
|
109870
|
+
}
|
|
109871
|
+
reconcileRootNode(rootNode, rootGroup, taskCollapsed) {
|
|
109872
|
+
rootNode.setAttribute("data-rdlg-root-id", rootGroup.rootId);
|
|
109873
|
+
const rootCollapsed = this.collapsedRoots.has(rootGroup.rootId);
|
|
109874
|
+
const rootRowHtml = rootGroup.root ? this.renderRootRow(
|
|
109875
|
+
rootGroup.root,
|
|
109876
|
+
this.renderToggleIcon(rootCollapsed),
|
|
109877
|
+
rootGroup.subdialogs.length
|
|
109878
|
+
) : this.renderMissingRootRow(rootGroup, rootCollapsed);
|
|
109879
|
+
const existingRootRow = rootNode.querySelector(
|
|
109880
|
+
":scope > .dialog-item.root-dialog"
|
|
109881
|
+
);
|
|
109882
|
+
if (existingRootRow) {
|
|
109883
|
+
this.syncElement(existingRootRow, this.createElementFromHtml(rootRowHtml));
|
|
109884
|
+
if (rootNode.firstElementChild !== existingRootRow) {
|
|
109885
|
+
rootNode.insertBefore(existingRootRow, rootNode.firstElementChild);
|
|
109886
|
+
}
|
|
109887
|
+
} else {
|
|
109888
|
+
rootNode.insertBefore(this.createElementFromHtml(rootRowHtml), rootNode.firstElementChild);
|
|
109889
|
+
}
|
|
109890
|
+
let rootChildren = rootNode.querySelector(":scope > .sdlg-children");
|
|
109891
|
+
if (!rootChildren) {
|
|
109892
|
+
rootChildren = this.createElementFromHtml('<div class="sdlg-children"></div>');
|
|
109893
|
+
rootNode.appendChild(rootChildren);
|
|
109894
|
+
}
|
|
109895
|
+
rootChildren.classList.toggle("collapsed", taskCollapsed || rootCollapsed);
|
|
109896
|
+
this.reconcileSubdialogRows(rootChildren, rootGroup);
|
|
109897
|
+
}
|
|
109898
|
+
reconcileRootNodes(taskRows, group, taskCollapsed) {
|
|
109899
|
+
const existingRoots = /* @__PURE__ */ new Map();
|
|
109900
|
+
taskRows.querySelectorAll(":scope > .rdlg-node[data-rdlg-root-id]").forEach((node2) => {
|
|
109901
|
+
const rootId = (node2.getAttribute("data-rdlg-root-id") ?? "").trim();
|
|
109902
|
+
if (rootId !== "") {
|
|
109903
|
+
existingRoots.set(rootId, node2);
|
|
109904
|
+
}
|
|
109905
|
+
});
|
|
109906
|
+
const visibleRootCount = this.visibleRootCountByTask.get(group.taskDocPath) ?? _DoneDialogList.SHOW_MORE_STEP;
|
|
109907
|
+
const visibleRoots = group.roots.slice(0, visibleRootCount);
|
|
109908
|
+
const hiddenRootCount = Math.max(group.roots.length - visibleRoots.length, 0);
|
|
109909
|
+
for (const rootGroup of visibleRoots) {
|
|
109910
|
+
const existing = existingRoots.get(rootGroup.rootId);
|
|
109911
|
+
const rootNode = existing ?? this.createElementFromHtml(
|
|
109912
|
+
`<div class="rdlg-node" data-rdlg-root-id="${rootGroup.rootId}"></div>`
|
|
109913
|
+
);
|
|
109914
|
+
this.reconcileRootNode(rootNode, rootGroup, taskCollapsed);
|
|
109915
|
+
taskRows.appendChild(rootNode);
|
|
109916
|
+
existingRoots.delete(rootGroup.rootId);
|
|
109917
|
+
}
|
|
109918
|
+
for (const stale of existingRoots.values()) {
|
|
109919
|
+
stale.remove();
|
|
109920
|
+
}
|
|
109921
|
+
const showMoreHtml = hiddenRootCount > 0 ? this.renderShowMoreButton({
|
|
109922
|
+
action: "show-more-roots",
|
|
109923
|
+
taskDocPath: group.taskDocPath,
|
|
109924
|
+
hiddenCount: hiddenRootCount
|
|
109925
|
+
}) : null;
|
|
109926
|
+
this.reconcileShowMoreRow(taskRows, showMoreHtml);
|
|
109927
|
+
}
|
|
109928
|
+
reconcileTaskGroups(groups) {
|
|
109929
|
+
if (!this.listEl) return;
|
|
109930
|
+
this.listEl.querySelectorAll(":scope > .empty").forEach((node2) => node2.remove());
|
|
109931
|
+
const existingGroups = /* @__PURE__ */ new Map();
|
|
109932
|
+
this.listEl.querySelectorAll(":scope > .task-group.task-node").forEach((groupEl) => {
|
|
109933
|
+
const taskPath = (groupEl.querySelector(":scope > .task-title")?.getAttribute("data-task-path") ?? "").trim();
|
|
109934
|
+
if (taskPath !== "") {
|
|
109935
|
+
existingGroups.set(taskPath, groupEl);
|
|
109936
|
+
}
|
|
109937
|
+
});
|
|
109938
|
+
for (const group of groups) {
|
|
109939
|
+
const taskCollapsed = this.collapsedTasks.has(group.taskDocPath);
|
|
109940
|
+
const taskGroup = existingGroups.get(group.taskDocPath) ?? this.createElementFromHtml(
|
|
109941
|
+
'<div class="task-group task-node"><div class="task-title"></div><div class="task-rows"></div></div>'
|
|
109942
|
+
);
|
|
109943
|
+
const nextTitle = this.createElementFromHtml(this.renderTaskTitleRow(group, taskCollapsed));
|
|
109944
|
+
const currentTitle = taskGroup.querySelector(":scope > .task-title");
|
|
109945
|
+
if (currentTitle) {
|
|
109946
|
+
this.syncElement(currentTitle, nextTitle);
|
|
109947
|
+
} else {
|
|
109948
|
+
taskGroup.insertBefore(nextTitle, taskGroup.firstElementChild);
|
|
109949
|
+
}
|
|
109950
|
+
let taskRows = taskGroup.querySelector(":scope > .task-rows");
|
|
109951
|
+
if (!taskRows) {
|
|
109952
|
+
taskRows = this.createElementFromHtml('<div class="task-rows"></div>');
|
|
109953
|
+
taskGroup.appendChild(taskRows);
|
|
109954
|
+
}
|
|
109955
|
+
taskRows.classList.toggle("collapsed", taskCollapsed);
|
|
109956
|
+
this.reconcileRootNodes(taskRows, group, taskCollapsed);
|
|
109957
|
+
this.listEl.appendChild(taskGroup);
|
|
109958
|
+
existingGroups.delete(group.taskDocPath);
|
|
109959
|
+
}
|
|
109960
|
+
for (const stale of existingGroups.values()) {
|
|
109961
|
+
stale.remove();
|
|
109962
|
+
}
|
|
109963
|
+
}
|
|
109363
109964
|
decodeDialogDataset(el) {
|
|
109364
109965
|
const raw = el.dataset.dialogJson;
|
|
109365
109966
|
if (!raw) return null;
|
|
@@ -109400,6 +110001,90 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109400
110001
|
this.clearSelection();
|
|
109401
110002
|
}
|
|
109402
110003
|
}
|
|
110004
|
+
getDialogUpdatedAtMsFromElement(el) {
|
|
110005
|
+
const dialog2 = this.decodeDialogDataset(el);
|
|
110006
|
+
if (!dialog2) return 0;
|
|
110007
|
+
return this.parseTimestamp(dialog2.lastModified);
|
|
110008
|
+
}
|
|
110009
|
+
reorderVisibleSubdialogs(rootId) {
|
|
110010
|
+
if (!this.listEl) return;
|
|
110011
|
+
const rootChildren = this.listEl.querySelector(
|
|
110012
|
+
`.rdlg-node[data-rdlg-root-id="${this.escapeSelector(rootId)}"] > .sdlg-children`
|
|
110013
|
+
);
|
|
110014
|
+
if (!(rootChildren instanceof HTMLElement)) return;
|
|
110015
|
+
const subRows = Array.from(
|
|
110016
|
+
rootChildren.querySelectorAll(":scope > .dialog-item.sub-dialog")
|
|
110017
|
+
);
|
|
110018
|
+
if (subRows.length <= 1) return;
|
|
110019
|
+
subRows.sort((a2, b2) => {
|
|
110020
|
+
const delta = this.getDialogUpdatedAtMsFromElement(b2) - this.getDialogUpdatedAtMsFromElement(a2);
|
|
110021
|
+
if (delta !== 0) return delta;
|
|
110022
|
+
const aSelf = a2.getAttribute("data-self-id") ?? "";
|
|
110023
|
+
const bSelf = b2.getAttribute("data-self-id") ?? "";
|
|
110024
|
+
return aSelf.localeCompare(bSelf);
|
|
110025
|
+
});
|
|
110026
|
+
const anchor2 = rootChildren.querySelector(":scope > .show-more-row");
|
|
110027
|
+
for (const row of subRows) {
|
|
110028
|
+
rootChildren.insertBefore(row, anchor2);
|
|
110029
|
+
}
|
|
110030
|
+
}
|
|
110031
|
+
reorderVisibleRoots(taskDocPath) {
|
|
110032
|
+
if (!this.listEl) return;
|
|
110033
|
+
const taskTitle = this.listEl.querySelector(
|
|
110034
|
+
`.task-title[data-task-path="${this.escapeSelector(taskDocPath)}"]`
|
|
110035
|
+
);
|
|
110036
|
+
const taskGroup = taskTitle?.closest(".task-group");
|
|
110037
|
+
if (!(taskGroup instanceof HTMLElement)) return;
|
|
110038
|
+
const taskRows = taskGroup.querySelector(".task-rows");
|
|
110039
|
+
if (!(taskRows instanceof HTMLElement)) return;
|
|
110040
|
+
const rootNodes = Array.from(taskRows.querySelectorAll(":scope > .rdlg-node"));
|
|
110041
|
+
if (rootNodes.length <= 1) return;
|
|
110042
|
+
rootNodes.sort((a2, b2) => {
|
|
110043
|
+
const aRoot = a2.querySelector(":scope > .dialog-item.root-dialog");
|
|
110044
|
+
const bRoot = b2.querySelector(":scope > .dialog-item.root-dialog");
|
|
110045
|
+
const delta = (bRoot ? this.getDialogUpdatedAtMsFromElement(bRoot) : 0) - (aRoot ? this.getDialogUpdatedAtMsFromElement(aRoot) : 0);
|
|
110046
|
+
if (delta !== 0) return delta;
|
|
110047
|
+
const aRootId = (a2.getAttribute("data-rdlg-root-id") ?? "").trim();
|
|
110048
|
+
const bRootId = (b2.getAttribute("data-rdlg-root-id") ?? "").trim();
|
|
110049
|
+
return aRootId.localeCompare(bRootId);
|
|
110050
|
+
});
|
|
110051
|
+
const anchor2 = taskRows.querySelector(":scope > .show-more-row");
|
|
110052
|
+
for (const node2 of rootNodes) {
|
|
110053
|
+
taskRows.insertBefore(node2, anchor2);
|
|
110054
|
+
}
|
|
110055
|
+
this.reorderTaskGroups();
|
|
110056
|
+
}
|
|
110057
|
+
reorderTaskGroups() {
|
|
110058
|
+
if (!this.listEl) return;
|
|
110059
|
+
const groups = Array.from(
|
|
110060
|
+
this.listEl.querySelectorAll(":scope > .task-group.task-node")
|
|
110061
|
+
);
|
|
110062
|
+
if (groups.length <= 1) return;
|
|
110063
|
+
groups.sort((a2, b2) => {
|
|
110064
|
+
const aTs = this.getTaskMaxUpdatedAtMs(a2);
|
|
110065
|
+
const bTs = this.getTaskMaxUpdatedAtMs(b2);
|
|
110066
|
+
const delta = bTs - aTs;
|
|
110067
|
+
if (delta !== 0) return delta;
|
|
110068
|
+
const aPath = (a2.querySelector(".task-title")?.getAttribute("data-task-path") ?? "").trim();
|
|
110069
|
+
const bPath = (b2.querySelector(".task-title")?.getAttribute("data-task-path") ?? "").trim();
|
|
110070
|
+
return aPath.localeCompare(bPath);
|
|
110071
|
+
});
|
|
110072
|
+
for (const group of groups) {
|
|
110073
|
+
this.listEl.appendChild(group);
|
|
110074
|
+
}
|
|
110075
|
+
this.refreshFromDom();
|
|
110076
|
+
}
|
|
110077
|
+
getTaskMaxUpdatedAtMs(taskGroup) {
|
|
110078
|
+
let max2 = 0;
|
|
110079
|
+
const roots = taskGroup.querySelectorAll(
|
|
110080
|
+
".dialog-item.root-dialog[data-dialog-json]"
|
|
110081
|
+
);
|
|
110082
|
+
roots.forEach((row) => {
|
|
110083
|
+
const ts = this.getDialogUpdatedAtMsFromElement(row);
|
|
110084
|
+
if (ts > max2) max2 = ts;
|
|
110085
|
+
});
|
|
110086
|
+
return max2;
|
|
110087
|
+
}
|
|
109403
110088
|
clearSelection() {
|
|
109404
110089
|
if (this.listEl) {
|
|
109405
110090
|
const selected = this.listEl.querySelector(".dialog-item.selected");
|
|
@@ -109600,6 +110285,16 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109600
110285
|
this.updateToggleButtonUi(rootToggle, false);
|
|
109601
110286
|
}
|
|
109602
110287
|
}
|
|
110288
|
+
if (!this.requestedSubdialogRoots.has(dialog2.rootId) && !this.hasSubdialogsLoaded(dialog2.rootId)) {
|
|
110289
|
+
this.requestedSubdialogRoots.add(dialog2.rootId);
|
|
110290
|
+
this.dispatchEvent(
|
|
110291
|
+
new CustomEvent("dialog-expand", {
|
|
110292
|
+
detail: { rootId: dialog2.rootId, status: "completed" },
|
|
110293
|
+
bubbles: true,
|
|
110294
|
+
composed: true
|
|
110295
|
+
})
|
|
110296
|
+
);
|
|
110297
|
+
}
|
|
109603
110298
|
}
|
|
109604
110299
|
findDialogByIds(rootId, selfId, isRoot) {
|
|
109605
110300
|
const targetSelf = isRoot ? rootId : selfId;
|
|
@@ -109896,7 +110591,12 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109896
110591
|
flex-direction: column;
|
|
109897
110592
|
gap: 3px;
|
|
109898
110593
|
padding: 2px 8px;
|
|
110594
|
+
margin: 0;
|
|
109899
110595
|
cursor: pointer;
|
|
110596
|
+
border-right: 3px solid transparent;
|
|
110597
|
+
border-radius: 0;
|
|
110598
|
+
position: relative;
|
|
110599
|
+
box-sizing: border-box;
|
|
109900
110600
|
}
|
|
109901
110601
|
|
|
109902
110602
|
.root-dialog {
|
|
@@ -109927,7 +110627,17 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
109927
110627
|
}
|
|
109928
110628
|
|
|
109929
110629
|
.dialog-item.selected {
|
|
109930
|
-
background: color-mix(in srgb, var(--dominds-primary, #007acc)
|
|
110630
|
+
background: color-mix(in srgb, var(--dominds-primary, #007acc) 13%, transparent);
|
|
110631
|
+
margin: 2px 0;
|
|
110632
|
+
border-radius: 10px 0 0 10px;
|
|
110633
|
+
box-shadow:
|
|
110634
|
+
inset 1px 0 0 color-mix(in srgb, white 55%, transparent),
|
|
110635
|
+
inset 0 1px 0 color-mix(in srgb, white 55%, transparent),
|
|
110636
|
+
inset 0 -1px 0 color-mix(in srgb, white 55%, transparent),
|
|
110637
|
+
inset 2px 0 0 color-mix(in srgb, var(--dominds-primary, #007acc) 72%, transparent),
|
|
110638
|
+
inset 0 2px 0 color-mix(in srgb, var(--dominds-primary, #007acc) 72%, transparent),
|
|
110639
|
+
inset 0 -2px 0 color-mix(in srgb, var(--dominds-primary, #007acc) 72%, transparent);
|
|
110640
|
+
z-index: var(--dominds-z-local-raised, 1);
|
|
109931
110641
|
}
|
|
109932
110642
|
|
|
109933
110643
|
.toggle {
|
|
@@ -110047,17 +110757,15 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
110047
110757
|
display: inline-flex;
|
|
110048
110758
|
align-items: center;
|
|
110049
110759
|
gap: 6px;
|
|
110760
|
+
font-weight: 500;
|
|
110050
110761
|
flex: none;
|
|
110051
110762
|
white-space: nowrap;
|
|
110052
110763
|
}
|
|
110053
110764
|
|
|
110054
110765
|
.dialog-count {
|
|
110055
110766
|
font-size: var(--dominds-font-size-xs, 11px);
|
|
110056
|
-
padding: 2px 6px;
|
|
110057
|
-
border-radius: 999px;
|
|
110058
|
-
background: var(--dominds-border, #e0e0e0);
|
|
110059
110767
|
color: var(--dominds-muted, #666666);
|
|
110060
|
-
|
|
110768
|
+
letter-spacing: 0.02em;
|
|
110061
110769
|
}
|
|
110062
110770
|
|
|
110063
110771
|
.dialog-submeta {
|
|
@@ -110096,7 +110804,8 @@ const _DoneDialogList = class _DoneDialogList extends HTMLElement {
|
|
|
110096
110804
|
|
|
110097
110805
|
.dialog-topic {
|
|
110098
110806
|
font-size: var(--dominds-font-size-xs, 11px);
|
|
110099
|
-
color: var(--dominds-muted, #
|
|
110807
|
+
color: var(--dominds-muted, #666666);
|
|
110808
|
+
letter-spacing: 0.02em;
|
|
110100
110809
|
}
|
|
110101
110810
|
|
|
110102
110811
|
.empty {
|
|
@@ -123343,4 +124052,4 @@ export {
|
|
|
123343
124052
|
purify as y,
|
|
123344
124053
|
clear$2 as z
|
|
123345
124054
|
};
|
|
123346
|
-
//# sourceMappingURL=index-
|
|
124055
|
+
//# sourceMappingURL=index-CCGi5dDE.js.map
|