@trebired/frontend 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/sidebar/components/index.d.ts +2 -0
  3. package/dist/sidebar/components/index.d.ts.map +1 -1
  4. package/dist/sidebar/components/index.js +1 -0
  5. package/dist/sidebar/components/index.js.map +1 -1
  6. package/dist/sidebar/dynamic/components/defaults.d.ts +7 -0
  7. package/dist/sidebar/dynamic/components/defaults.d.ts.map +1 -0
  8. package/dist/sidebar/dynamic/components/defaults.js +44 -0
  9. package/dist/sidebar/dynamic/components/defaults.js.map +1 -0
  10. package/dist/sidebar/dynamic/components/index.d.ts +5 -0
  11. package/dist/sidebar/dynamic/components/index.d.ts.map +1 -0
  12. package/dist/sidebar/dynamic/components/index.js +5 -0
  13. package/dist/sidebar/dynamic/components/index.js.map +1 -0
  14. package/dist/sidebar/dynamic/components/list.d.ts +4 -0
  15. package/dist/sidebar/dynamic/components/list.d.ts.map +1 -0
  16. package/dist/sidebar/dynamic/components/list.js +19 -0
  17. package/dist/sidebar/dynamic/components/list.js.map +1 -0
  18. package/dist/sidebar/dynamic/components/row.d.ts +14 -0
  19. package/dist/sidebar/dynamic/components/row.d.ts.map +1 -0
  20. package/dist/sidebar/dynamic/components/row.js +60 -0
  21. package/dist/sidebar/dynamic/components/row.js.map +1 -0
  22. package/dist/sidebar/dynamic/components/slots.d.ts +31 -0
  23. package/dist/sidebar/dynamic/components/slots.d.ts.map +1 -0
  24. package/dist/sidebar/dynamic/components/slots.js +55 -0
  25. package/dist/sidebar/dynamic/components/slots.js.map +1 -0
  26. package/dist/sidebar/dynamic/index.d.ts +5 -0
  27. package/dist/sidebar/dynamic/index.d.ts.map +1 -0
  28. package/dist/sidebar/dynamic/index.js +4 -0
  29. package/dist/sidebar/dynamic/index.js.map +1 -0
  30. package/dist/sidebar/dynamic/runtime/apply.d.ts +10 -0
  31. package/dist/sidebar/dynamic/runtime/apply.d.ts.map +1 -0
  32. package/dist/sidebar/dynamic/runtime/apply.js +129 -0
  33. package/dist/sidebar/dynamic/runtime/apply.js.map +1 -0
  34. package/dist/sidebar/dynamic/runtime/dom.d.ts +9 -0
  35. package/dist/sidebar/dynamic/runtime/dom.d.ts.map +1 -0
  36. package/dist/sidebar/dynamic/runtime/dom.js +31 -0
  37. package/dist/sidebar/dynamic/runtime/dom.js.map +1 -0
  38. package/dist/sidebar/dynamic/runtime/guards.d.ts +3 -0
  39. package/dist/sidebar/dynamic/runtime/guards.d.ts.map +1 -0
  40. package/dist/sidebar/dynamic/runtime/guards.js +19 -0
  41. package/dist/sidebar/dynamic/runtime/guards.js.map +1 -0
  42. package/dist/sidebar/dynamic/runtime/index.d.ts +7 -0
  43. package/dist/sidebar/dynamic/runtime/index.d.ts.map +1 -0
  44. package/dist/sidebar/dynamic/runtime/index.js +6 -0
  45. package/dist/sidebar/dynamic/runtime/index.js.map +1 -0
  46. package/dist/sidebar/dynamic/runtime/live.d.ts +13 -0
  47. package/dist/sidebar/dynamic/runtime/live.d.ts.map +1 -0
  48. package/dist/sidebar/dynamic/runtime/live.js +165 -0
  49. package/dist/sidebar/dynamic/runtime/live.js.map +1 -0
  50. package/dist/sidebar/dynamic/runtime/renderers.d.ts +7 -0
  51. package/dist/sidebar/dynamic/runtime/renderers.d.ts.map +1 -0
  52. package/dist/sidebar/dynamic/runtime/renderers.js +43 -0
  53. package/dist/sidebar/dynamic/runtime/renderers.js.map +1 -0
  54. package/dist/sidebar/dynamic/runtime/selectors.d.ts +9 -0
  55. package/dist/sidebar/dynamic/runtime/selectors.d.ts.map +1 -0
  56. package/dist/sidebar/dynamic/runtime/selectors.js +9 -0
  57. package/dist/sidebar/dynamic/runtime/selectors.js.map +1 -0
  58. package/dist/sidebar/dynamic/runtime/types.d.ts +40 -0
  59. package/dist/sidebar/dynamic/runtime/types.d.ts.map +1 -0
  60. package/dist/sidebar/dynamic/runtime/types.js +2 -0
  61. package/dist/sidebar/dynamic/runtime/types.js.map +1 -0
  62. package/dist/sidebar/dynamic/tree.d.ts +18 -0
  63. package/dist/sidebar/dynamic/tree.d.ts.map +1 -0
  64. package/dist/sidebar/dynamic/tree.js +106 -0
  65. package/dist/sidebar/dynamic/tree.js.map +1 -0
  66. package/dist/sidebar/dynamic/types.d.ts +99 -0
  67. package/dist/sidebar/dynamic/types.d.ts.map +1 -0
  68. package/dist/sidebar/dynamic/types.js +2 -0
  69. package/dist/sidebar/dynamic/types.js.map +1 -0
  70. package/dist/sidebar/index.d.ts +3 -0
  71. package/dist/sidebar/index.d.ts.map +1 -1
  72. package/dist/sidebar/index.js +3 -0
  73. package/dist/sidebar/index.js.map +1 -1
  74. package/dist/src/sidebar/components/index.d.ts +2 -0
  75. package/dist/src/sidebar/components/index.d.ts.map +1 -1
  76. package/dist/src/sidebar/components/index.js +1 -0
  77. package/dist/src/sidebar/components/index.js.map +1 -1
  78. package/dist/src/sidebar/dynamic/components/defaults.d.ts +7 -0
  79. package/dist/src/sidebar/dynamic/components/defaults.d.ts.map +1 -0
  80. package/dist/src/sidebar/dynamic/components/defaults.js +44 -0
  81. package/dist/src/sidebar/dynamic/components/defaults.js.map +1 -0
  82. package/dist/src/sidebar/dynamic/components/index.d.ts +5 -0
  83. package/dist/src/sidebar/dynamic/components/index.d.ts.map +1 -0
  84. package/dist/src/sidebar/dynamic/components/index.js +5 -0
  85. package/dist/src/sidebar/dynamic/components/index.js.map +1 -0
  86. package/dist/src/sidebar/dynamic/components/list.d.ts +4 -0
  87. package/dist/src/sidebar/dynamic/components/list.d.ts.map +1 -0
  88. package/dist/src/sidebar/dynamic/components/list.js +19 -0
  89. package/dist/src/sidebar/dynamic/components/list.js.map +1 -0
  90. package/dist/src/sidebar/dynamic/components/row.d.ts +14 -0
  91. package/dist/src/sidebar/dynamic/components/row.d.ts.map +1 -0
  92. package/dist/src/sidebar/dynamic/components/row.js +60 -0
  93. package/dist/src/sidebar/dynamic/components/row.js.map +1 -0
  94. package/dist/src/sidebar/dynamic/components/slots.d.ts +31 -0
  95. package/dist/src/sidebar/dynamic/components/slots.d.ts.map +1 -0
  96. package/dist/src/sidebar/dynamic/components/slots.js +55 -0
  97. package/dist/src/sidebar/dynamic/components/slots.js.map +1 -0
  98. package/dist/src/sidebar/dynamic/index.d.ts +5 -0
  99. package/dist/src/sidebar/dynamic/index.d.ts.map +1 -0
  100. package/dist/src/sidebar/dynamic/index.js +4 -0
  101. package/dist/src/sidebar/dynamic/index.js.map +1 -0
  102. package/dist/src/sidebar/dynamic/runtime/apply.d.ts +10 -0
  103. package/dist/src/sidebar/dynamic/runtime/apply.d.ts.map +1 -0
  104. package/dist/src/sidebar/dynamic/runtime/apply.js +129 -0
  105. package/dist/src/sidebar/dynamic/runtime/apply.js.map +1 -0
  106. package/dist/src/sidebar/dynamic/runtime/dom.d.ts +9 -0
  107. package/dist/src/sidebar/dynamic/runtime/dom.d.ts.map +1 -0
  108. package/dist/src/sidebar/dynamic/runtime/dom.js +31 -0
  109. package/dist/src/sidebar/dynamic/runtime/dom.js.map +1 -0
  110. package/dist/src/sidebar/dynamic/runtime/guards.d.ts +3 -0
  111. package/dist/src/sidebar/dynamic/runtime/guards.d.ts.map +1 -0
  112. package/dist/src/sidebar/dynamic/runtime/guards.js +19 -0
  113. package/dist/src/sidebar/dynamic/runtime/guards.js.map +1 -0
  114. package/dist/src/sidebar/dynamic/runtime/index.d.ts +7 -0
  115. package/dist/src/sidebar/dynamic/runtime/index.d.ts.map +1 -0
  116. package/dist/src/sidebar/dynamic/runtime/index.js +6 -0
  117. package/dist/src/sidebar/dynamic/runtime/index.js.map +1 -0
  118. package/dist/src/sidebar/dynamic/runtime/live.d.ts +13 -0
  119. package/dist/src/sidebar/dynamic/runtime/live.d.ts.map +1 -0
  120. package/dist/src/sidebar/dynamic/runtime/live.js +165 -0
  121. package/dist/src/sidebar/dynamic/runtime/live.js.map +1 -0
  122. package/dist/src/sidebar/dynamic/runtime/renderers.d.ts +7 -0
  123. package/dist/src/sidebar/dynamic/runtime/renderers.d.ts.map +1 -0
  124. package/dist/src/sidebar/dynamic/runtime/renderers.js +43 -0
  125. package/dist/src/sidebar/dynamic/runtime/renderers.js.map +1 -0
  126. package/dist/src/sidebar/dynamic/runtime/selectors.d.ts +9 -0
  127. package/dist/src/sidebar/dynamic/runtime/selectors.d.ts.map +1 -0
  128. package/dist/src/sidebar/dynamic/runtime/selectors.js +9 -0
  129. package/dist/src/sidebar/dynamic/runtime/selectors.js.map +1 -0
  130. package/dist/src/sidebar/dynamic/runtime/types.d.ts +40 -0
  131. package/dist/src/sidebar/dynamic/runtime/types.d.ts.map +1 -0
  132. package/dist/src/sidebar/dynamic/runtime/types.js +2 -0
  133. package/dist/src/sidebar/dynamic/runtime/types.js.map +1 -0
  134. package/dist/src/sidebar/dynamic/tree.d.ts +18 -0
  135. package/dist/src/sidebar/dynamic/tree.d.ts.map +1 -0
  136. package/dist/src/sidebar/dynamic/tree.js +106 -0
  137. package/dist/src/sidebar/dynamic/tree.js.map +1 -0
  138. package/dist/src/sidebar/dynamic/types.d.ts +99 -0
  139. package/dist/src/sidebar/dynamic/types.d.ts.map +1 -0
  140. package/dist/src/sidebar/dynamic/types.js +2 -0
  141. package/dist/src/sidebar/dynamic/types.js.map +1 -0
  142. package/dist/src/sidebar/index.d.ts +3 -0
  143. package/dist/src/sidebar/index.d.ts.map +1 -1
  144. package/dist/src/sidebar/index.js +3 -0
  145. package/dist/src/sidebar/index.js.map +1 -1
  146. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/dom.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,SAAS,YAAY,CAAC,IAAiB;IACrC,OAAO,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB,EAAE,cAAsB;IAC3D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,UAAU,KAAK,QAAQ;QAC5B,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,KAAK,GAAG,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,IAAiB;IACrC,OAAO,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,KAAK,GAAG,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CACrB,IAAiB,EACjB,MAAe,EACf,IAAiB;IAEjB,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,KAAK,GAAG;QAC5D,MAAM;QACN,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5B,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAiB;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,OAAO,IAAI,YAAY,WAAW;YAChC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACV,YAAY,GACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare function bindDynamicSidebarDisabledLinkGuard(root: HTMLElement): void;
2
+ export { bindDynamicSidebarDisabledLinkGuard };
3
+ //# sourceMappingURL=guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/guards.ts"],"names":[],"mappings":"AAIA,iBAAS,mCAAmC,CAAC,IAAI,EAAE,WAAW,QAY7D;AAED,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { DYNAMIC_SIDEBAR_DISABLED_LINK_SELECTOR } from "./selectors.js";
2
+ const disabledLinkRoots = new WeakSet();
3
+ function bindDynamicSidebarDisabledLinkGuard(root) {
4
+ if (disabledLinkRoots.has(root))
5
+ return;
6
+ disabledLinkRoots.add(root);
7
+ root.addEventListener("click", (event) => {
8
+ const target = event.target instanceof Element ? event.target : null;
9
+ const link = target
10
+ ? target.closest(DYNAMIC_SIDEBAR_DISABLED_LINK_SELECTOR)
11
+ : null;
12
+ if (!link || !root.contains(link))
13
+ return;
14
+ event.preventDefault();
15
+ event.stopPropagation();
16
+ }, true);
17
+ }
18
+ export { bindDynamicSidebarDisabledLinkGuard };
19
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAe,CAAC;AAErD,SAAS,mCAAmC,CAAC,IAAiB;IAC5D,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO;IACxC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM;YACjB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QAC1C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAED,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./apply.js";
2
+ export * from "./guards.js";
3
+ export * from "./live.js";
4
+ export * from "./renderers.js";
5
+ export * from "./selectors.js";
6
+ export type * from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,mBAAmB,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./apply.js";
2
+ export * from "./guards.js";
3
+ export * from "./live.js";
4
+ export * from "./renderers.js";
5
+ export * from "./selectors.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type BindRoot } from "../../../dom/index.d.ts";
2
+ import type { DynamicSidebarLiveOptions } from "./types.js";
3
+ import type { DynamicSidebarDescriptor, DynamicSidebarResponseItem } from "../types.d.ts";
4
+ declare function collectDynamicSidebarDescriptors(): DynamicSidebarDescriptor[];
5
+ declare function collectDynamicSidebarRooms(): string[];
6
+ declare function requestDynamicSidebarCounts(): Promise<DynamicSidebarResponseItem[]>;
7
+ declare function applyDynamicSidebarResponse(itemsInput: unknown): void;
8
+ declare function refreshDynamicSidebarLive(): Promise<void>;
9
+ declare function scheduleDynamicSidebarRefresh(delayMs?: number): void;
10
+ declare function bindDynamicSidebarLiveHost(host: HTMLElement): HTMLElement;
11
+ declare function bindDynamicSidebarLive(root?: BindRoot, options?: DynamicSidebarLiveOptions): void;
12
+ export { applyDynamicSidebarResponse, bindDynamicSidebarLive, bindDynamicSidebarLiveHost, collectDynamicSidebarDescriptors, collectDynamicSidebarRooms, refreshDynamicSidebarLive, requestDynamicSidebarCounts, scheduleDynamicSidebarRefresh, };
13
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AAUvB,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,wBAAwB,EAExB,0BAA0B,EAC3B,MAAM,eAAe,CAAC;AAuDvB,iBAAS,gCAAgC,+BAUxC;AAED,iBAAS,0BAA0B,aAWlC;AAED,iBAAe,2BAA2B,0CAIzC;AAED,iBAAS,2BAA2B,CAAC,UAAU,EAAE,OAAO,QAgBvD;AAED,iBAAe,yBAAyB,kBAevC;AAED,iBAAS,6BAA6B,CAAC,OAAO,SAAoC,QAMjF;AAkBD,iBAAS,0BAA0B,CAAC,IAAI,EAAE,WAAW,eAgBpD;AAED,iBAAS,sBAAsB,CAC7B,IAAI,GAAE,QAAmB,EACzB,OAAO,CAAC,EAAE,yBAAyB,QAKpC;AAED,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,GAC9B,CAAC"}
@@ -0,0 +1,165 @@
1
+ import { queryAll, readElementJson, } from "../../../dom/index.js";
2
+ import { applyDynamicSidebarCounts } from "./apply.js";
3
+ import { bindDynamicSidebarDisabledLinkGuard, } from "./guards.js";
4
+ import { liveRootContent } from "./dom.js";
5
+ import { DYNAMIC_SIDEBAR_LIVE_CONFIG_SELECTOR, DYNAMIC_SIDEBAR_LIVE_SELECTOR, } from "./selectors.js";
6
+ import { textValue } from "../tree.js";
7
+ const liveRoots = new Set();
8
+ const liveConfigs = new WeakMap();
9
+ let liveOptions = {};
10
+ let unsubscribeRooms = [];
11
+ let refreshTimer = 0;
12
+ let refreshInFlight = false;
13
+ let refreshQueued = false;
14
+ function mergeLiveOptions(options) {
15
+ if (!options)
16
+ return liveOptions;
17
+ liveOptions = {
18
+ ...liveOptions,
19
+ ...options,
20
+ renderers: {
21
+ ...(liveOptions.renderers || {}),
22
+ ...(options.renderers || {}),
23
+ },
24
+ };
25
+ return liveOptions;
26
+ }
27
+ function visibleLiveRoots() {
28
+ return Array.from(liveRoots).filter((node) => node.isConnected);
29
+ }
30
+ function descriptorKeyFromConfig(config) {
31
+ const side = textValue(config.side, "left");
32
+ const type = textValue(config.type);
33
+ const path = textValue(config.path);
34
+ const params = JSON.stringify(config.params && typeof config.params === "object" ? config.params : {});
35
+ return `${side}:${type}:${path}:${params}`;
36
+ }
37
+ function descriptorFromRoot(root) {
38
+ const config = liveConfigs.get(root) || {};
39
+ const type = textValue(config.type);
40
+ const path = textValue(config.path);
41
+ if (!type || !path)
42
+ return null;
43
+ return {
44
+ key: descriptorKeyFromConfig(config),
45
+ params: config.params && typeof config.params === "object" ? config.params : {},
46
+ path,
47
+ rooms: Array.isArray(config.rooms)
48
+ ? config.rooms.map((item) => textValue(item)).filter(Boolean)
49
+ : [],
50
+ side: textValue(config.side, "left"),
51
+ type,
52
+ };
53
+ }
54
+ function collectDynamicSidebarDescriptors() {
55
+ const out = [];
56
+ const seen = new Set();
57
+ for (const root of visibleLiveRoots()) {
58
+ const descriptor = descriptorFromRoot(root);
59
+ if (!descriptor || seen.has(descriptor.key))
60
+ continue;
61
+ seen.add(descriptor.key);
62
+ out.push(descriptor);
63
+ }
64
+ return out;
65
+ }
66
+ function collectDynamicSidebarRooms() {
67
+ const rooms = [];
68
+ const seen = new Set();
69
+ for (const descriptor of collectDynamicSidebarDescriptors()) {
70
+ for (const room of descriptor.rooms) {
71
+ if (!room || seen.has(room))
72
+ continue;
73
+ seen.add(room);
74
+ rooms.push(room);
75
+ }
76
+ }
77
+ return rooms;
78
+ }
79
+ async function requestDynamicSidebarCounts() {
80
+ const descriptors = collectDynamicSidebarDescriptors();
81
+ if (!descriptors.length || typeof liveOptions.request !== "function")
82
+ return [];
83
+ return await liveOptions.request(descriptors);
84
+ }
85
+ function applyDynamicSidebarResponse(itemsInput) {
86
+ const items = Array.isArray(itemsInput) ? itemsInput : [];
87
+ const countsByKey = new Map();
88
+ items.forEach((itemInput) => {
89
+ const item = itemInput && typeof itemInput === "object"
90
+ ? itemInput
91
+ : null;
92
+ const key = textValue(item?.key);
93
+ if (!key || item?.resolved !== true)
94
+ return;
95
+ countsByKey.set(key, item.entity_counts || {});
96
+ });
97
+ for (const root of visibleLiveRoots()) {
98
+ const key = descriptorKeyFromConfig(liveConfigs.get(root) || {});
99
+ if (!countsByKey.has(key))
100
+ continue;
101
+ applyDynamicSidebarCounts(root, countsByKey.get(key) || {}, liveOptions.renderers || {});
102
+ }
103
+ }
104
+ async function refreshDynamicSidebarLive() {
105
+ if (refreshInFlight) {
106
+ refreshQueued = true;
107
+ return;
108
+ }
109
+ refreshInFlight = true;
110
+ try {
111
+ const items = await requestDynamicSidebarCounts();
112
+ if (items != null)
113
+ applyDynamicSidebarResponse(items);
114
+ }
115
+ finally {
116
+ refreshInFlight = false;
117
+ if (!refreshQueued)
118
+ return;
119
+ refreshQueued = false;
120
+ scheduleDynamicSidebarRefresh(liveOptions.refreshDelayMs || 120);
121
+ }
122
+ }
123
+ function scheduleDynamicSidebarRefresh(delayMs = liveOptions.refreshDelayMs || 120) {
124
+ if (refreshTimer)
125
+ window.clearTimeout(refreshTimer);
126
+ refreshTimer = window.setTimeout(() => {
127
+ refreshTimer = 0;
128
+ void refreshDynamicSidebarLive();
129
+ }, Math.max(0, delayMs));
130
+ }
131
+ function syncDynamicSidebarRooms() {
132
+ unsubscribeRooms.forEach((unsubscribe) => unsubscribe());
133
+ unsubscribeRooms = [];
134
+ if (typeof liveOptions.subscribe !== "function")
135
+ return;
136
+ const eventName = liveOptions.event || "sidebar";
137
+ unsubscribeRooms = collectDynamicSidebarRooms()
138
+ .map((room) => liveOptions.subscribe?.(room, (payload) => {
139
+ if (payload && typeof payload === "object" && "event" in payload &&
140
+ textValue(payload.event) !== eventName)
141
+ return;
142
+ scheduleDynamicSidebarRefresh(liveOptions.refreshDelayMs || 120);
143
+ }))
144
+ .filter((cleanup) => {
145
+ return typeof cleanup === "function";
146
+ });
147
+ }
148
+ function bindDynamicSidebarLiveHost(host) {
149
+ const root = liveRootContent(host) || host;
150
+ if (!(root instanceof HTMLElement))
151
+ return null;
152
+ liveRoots.add(root);
153
+ liveConfigs.set(root, readElementJson(host, DYNAMIC_SIDEBAR_LIVE_CONFIG_SELECTOR, {}));
154
+ bindDynamicSidebarDisabledLinkGuard(root);
155
+ syncDynamicSidebarRooms();
156
+ scheduleDynamicSidebarRefresh(0);
157
+ return root;
158
+ }
159
+ function bindDynamicSidebarLive(root = document, options) {
160
+ mergeLiveOptions(options);
161
+ queryAll(root, DYNAMIC_SIDEBAR_LIVE_SELECTOR)
162
+ .forEach(bindDynamicSidebarLiveHost);
163
+ }
164
+ export { applyDynamicSidebarResponse, bindDynamicSidebarLive, bindDynamicSidebarLiveHost, collectDynamicSidebarDescriptors, collectDynamicSidebarRooms, refreshDynamicSidebarLive, requestDynamicSidebarCounts, scheduleDynamicSidebarRefresh, };
165
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/live.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { DynamicSidebarRuntimeCountContext, DynamicSidebarRuntimeLoaderContext, DynamicSidebarRuntimeStateContext } from "./types.js";
2
+ declare function defaultCountNode(context: DynamicSidebarRuntimeCountContext): HTMLSpanElement;
3
+ declare function loaderNode(documentRef: Document, size: string): HTMLDivElement;
4
+ declare function defaultLoaderNode(context: DynamicSidebarRuntimeLoaderContext): HTMLSpanElement;
5
+ declare function defaultStateNode(context: DynamicSidebarRuntimeStateContext): HTMLSpanElement;
6
+ export { defaultCountNode, defaultLoaderNode, defaultStateNode, loaderNode, };
7
+ //# sourceMappingURL=renderers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/renderers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iCAAiC,EACjC,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,YAAY,CAAC;AAGpB,iBAAS,gBAAgB,CAAC,OAAO,EAAE,iCAAiC,mBAKnE;AAED,iBAAS,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAKtD;AAED,iBAAS,iBAAiB,CAAC,OAAO,EAAE,kCAAkC,mBAarE;AAED,iBAAS,gBAAgB,CAAC,OAAO,EAAE,iCAAiC,mBASnE;AAED,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,GACX,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { formatWrappedCount } from "../../../primitives/components/index.js";
2
+ import { textValue } from "../tree.js";
3
+ function defaultCountNode(context) {
4
+ const node = context.document.createElement("span");
5
+ node.className = "time-counter";
6
+ node.textContent = formatWrappedCount(context.count);
7
+ return node;
8
+ }
9
+ function loaderNode(documentRef, size) {
10
+ const node = documentRef.createElement("div");
11
+ node.className = `loader-circle ${size}`;
12
+ node.setAttribute("aria-hidden", "true");
13
+ return node;
14
+ }
15
+ function defaultLoaderNode(context) {
16
+ if (context.repositoryId) {
17
+ if (context.running <= 0)
18
+ return null;
19
+ const host = context.document.createElement("span");
20
+ host.className = "text-muted no-select inline-row gap-xs ver-center";
21
+ host.appendChild(loaderNode(context.document, "xs"));
22
+ return host;
23
+ }
24
+ if (context.running <= 0)
25
+ return null;
26
+ const host = context.document.createElement("span");
27
+ host.className = "text-muted no-select inline-row gap-xs ver-center";
28
+ host.appendChild(loaderNode(context.document, "sm"));
29
+ return host;
30
+ }
31
+ function defaultStateNode(context) {
32
+ const state = textValue(context.state).toLowerCase();
33
+ if (!state)
34
+ return null;
35
+ const node = context.document.createElement("span");
36
+ node.className = `dot dot-sm ${state === "running" ? "green" : "red"}`;
37
+ node.setAttribute("aria-hidden", "true");
38
+ node.setAttribute("data-state", state);
39
+ node.setAttribute("data-tbf-sidebar-state-dot", "");
40
+ return node;
41
+ }
42
+ export { defaultCountNode, defaultLoaderNode, defaultStateNode, loaderNode, };
43
+ //# sourceMappingURL=renderers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/renderers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAMnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,SAAS,gBAAgB,CAAC,OAA0C;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;IAChC,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,WAAqB,EAAE,IAAY;IACrD,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,GAAG,iBAAiB,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2C;IACpE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,mDAAmD,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,GAAG,mDAAmD,CAAC;IACrE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA0C;IAClE,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,GAAG,cAAc,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACvE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,GACX,CAAC"}
@@ -0,0 +1,9 @@
1
+ declare const DYNAMIC_SIDEBAR_LIVE_SELECTOR = "[data-tbf-sidebar-dynamic-live]";
2
+ declare const DYNAMIC_SIDEBAR_LIVE_CONFIG_SELECTOR = "script[type=\"application/json\"][data-tbf-sidebar-dynamic-live-config]";
3
+ declare const DYNAMIC_SIDEBAR_COUNT_SLOT_SELECTOR = "[data-tbf-sidebar-count-slot]";
4
+ declare const DYNAMIC_SIDEBAR_LOADER_SLOT_SELECTOR = "[data-tbf-sidebar-loader-slot]";
5
+ declare const DYNAMIC_SIDEBAR_STATE_SLOT_SELECTOR = "[data-tbf-sidebar-state-slot]";
6
+ declare const DYNAMIC_SIDEBAR_DYNAMIC_LINK_SELECTOR = "a[data-tbf-sidebar-link-dynamic='1']";
7
+ declare const DYNAMIC_SIDEBAR_DISABLED_LINK_SELECTOR = "a[data-tbf-sidebar-link-disabled='1']";
8
+ export { DYNAMIC_SIDEBAR_COUNT_SLOT_SELECTOR, DYNAMIC_SIDEBAR_DISABLED_LINK_SELECTOR, DYNAMIC_SIDEBAR_DYNAMIC_LINK_SELECTOR, DYNAMIC_SIDEBAR_LIVE_CONFIG_SELECTOR, DYNAMIC_SIDEBAR_LIVE_SELECTOR, DYNAMIC_SIDEBAR_LOADER_SLOT_SELECTOR, DYNAMIC_SIDEBAR_STATE_SLOT_SELECTOR, };
9
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/selectors.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,6BAA6B,oCAAoC,CAAC;AACxE,QAAA,MAAM,oCAAoC,4EAC+B,CAAC;AAC1E,QAAA,MAAM,mCAAmC,kCAAkC,CAAC;AAC5E,QAAA,MAAM,oCAAoC,mCAAmC,CAAC;AAC9E,QAAA,MAAM,mCAAmC,kCAAkC,CAAC;AAC5E,QAAA,MAAM,qCAAqC,yCACH,CAAC;AACzC,QAAA,MAAM,sCAAsC,0CACH,CAAC;AAE1C,OAAO,EACL,mCAAmC,EACnC,sCAAsC,EACtC,qCAAqC,EACrC,oCAAoC,EACpC,6BAA6B,EAC7B,oCAAoC,EACpC,mCAAmC,GACpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ const DYNAMIC_SIDEBAR_LIVE_SELECTOR = "[data-tbf-sidebar-dynamic-live]";
2
+ const DYNAMIC_SIDEBAR_LIVE_CONFIG_SELECTOR = 'script[type="application/json"][data-tbf-sidebar-dynamic-live-config]';
3
+ const DYNAMIC_SIDEBAR_COUNT_SLOT_SELECTOR = "[data-tbf-sidebar-count-slot]";
4
+ const DYNAMIC_SIDEBAR_LOADER_SLOT_SELECTOR = "[data-tbf-sidebar-loader-slot]";
5
+ const DYNAMIC_SIDEBAR_STATE_SLOT_SELECTOR = "[data-tbf-sidebar-state-slot]";
6
+ const DYNAMIC_SIDEBAR_DYNAMIC_LINK_SELECTOR = "a[data-tbf-sidebar-link-dynamic='1']";
7
+ const DYNAMIC_SIDEBAR_DISABLED_LINK_SELECTOR = "a[data-tbf-sidebar-link-disabled='1']";
8
+ export { DYNAMIC_SIDEBAR_COUNT_SLOT_SELECTOR, DYNAMIC_SIDEBAR_DISABLED_LINK_SELECTOR, DYNAMIC_SIDEBAR_DYNAMIC_LINK_SELECTOR, DYNAMIC_SIDEBAR_LIVE_CONFIG_SELECTOR, DYNAMIC_SIDEBAR_LIVE_SELECTOR, DYNAMIC_SIDEBAR_LOADER_SLOT_SELECTOR, DYNAMIC_SIDEBAR_STATE_SLOT_SELECTOR, };
9
+ //# sourceMappingURL=selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/selectors.ts"],"names":[],"mappings":"AAAA,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AACxE,MAAM,oCAAoC,GACxC,uEAAuE,CAAC;AAC1E,MAAM,mCAAmC,GAAG,+BAA+B,CAAC;AAC5E,MAAM,oCAAoC,GAAG,gCAAgC,CAAC;AAC9E,MAAM,mCAAmC,GAAG,+BAA+B,CAAC;AAC5E,MAAM,qCAAqC,GACzC,sCAAsC,CAAC;AACzC,MAAM,sCAAsC,GAC1C,uCAAuC,CAAC;AAE1C,OAAO,EACL,mCAAmC,EACnC,sCAAsC,EACtC,qCAAqC,EACrC,oCAAoC,EACpC,6BAA6B,EAC7B,oCAAoC,EACpC,mCAAmC,GACpC,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { DynamicSidebarDescriptor, DynamicSidebarResponseItem } from "../types.d.ts";
2
+ type DynamicSidebarRuntimeRenderContext = {
3
+ active: boolean;
4
+ counts: unknown;
5
+ disabled: boolean;
6
+ document: Document;
7
+ };
8
+ type DynamicSidebarRuntimeCountContext = DynamicSidebarRuntimeRenderContext & {
9
+ count: number;
10
+ path: string;
11
+ };
12
+ type DynamicSidebarRuntimeLoaderContext = DynamicSidebarRuntimeRenderContext & {
13
+ idleCount: number | null;
14
+ idleCountPath: string;
15
+ lastStatus: string;
16
+ loaderPath: string;
17
+ repositoryId: string;
18
+ running: number;
19
+ statusPath: string;
20
+ };
21
+ type DynamicSidebarRuntimeStateContext = DynamicSidebarRuntimeRenderContext & {
22
+ path: string;
23
+ state: string;
24
+ };
25
+ type DynamicSidebarRuntimeRenderers = {
26
+ count?: (context: DynamicSidebarRuntimeCountContext) => Node | null;
27
+ loader?: (context: DynamicSidebarRuntimeLoaderContext) => Node | null;
28
+ state?: (context: DynamicSidebarRuntimeStateContext) => Node | null;
29
+ };
30
+ type DynamicSidebarCleanup = () => void;
31
+ type DynamicSidebarSubscribe = (room: string, listener: (payload: unknown) => void) => DynamicSidebarCleanup | void;
32
+ type DynamicSidebarLiveOptions = {
33
+ event?: string;
34
+ refreshDelayMs?: number;
35
+ renderers?: DynamicSidebarRuntimeRenderers;
36
+ request?: (descriptors: DynamicSidebarDescriptor[]) => Promise<DynamicSidebarResponseItem[] | null | undefined> | DynamicSidebarResponseItem[] | null | undefined;
37
+ subscribe?: DynamicSidebarSubscribe;
38
+ };
39
+ export type { DynamicSidebarCleanup, DynamicSidebarLiveOptions, DynamicSidebarRuntimeCountContext, DynamicSidebarRuntimeLoaderContext, DynamicSidebarRuntimeRenderContext, DynamicSidebarRuntimeRenderers, DynamicSidebarRuntimeStateContext, DynamicSidebarSubscribe, };
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE1F,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,KAAK,iCAAiC,GACpC,kCAAkC,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,KAAK,kCAAkC,GACrC,kCAAkC,GAAG;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEJ,KAAK,iCAAiC,GACpC,kCAAkC,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEJ,KAAK,8BAA8B,GAAG;IACpC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iCAAiC,KAAK,IAAI,GAAG,IAAI,CAAC;IACpE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kCAAkC,KAAK,IAAI,GAAG,IAAI,CAAC;IACtE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iCAAiC,KAAK,IAAI,GAAG,IAAI,CAAC;CACrE,CAAC;AAEF,KAAK,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAExC,KAAK,uBAAuB,GAAG,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KACjC,qBAAqB,GAAG,IAAI,CAAC;AAElC,KAAK,yBAAyB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,OAAO,CAAC,EAAE,CACR,WAAW,EAAE,wBAAwB,EAAE,KACpC,OAAO,CAAC,0BAA0B,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GAC3D,0BAA0B,EAAE,GAC5B,IAAI,GACJ,SAAS,CAAC;IACZ,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC,CAAC;AAEF,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,iCAAiC,EACjC,kCAAkC,EAClC,kCAAkC,EAClC,8BAA8B,EAC9B,iCAAiC,EACjC,uBAAuB,GACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/sidebar/dynamic/runtime/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { DynamicSidebarContext, DynamicSidebarItem, DynamicSidebarLinkItem, DynamicSidebarLiveConfig } from "./types.js";
2
+ declare function textValue(value: unknown, fallback?: string): string;
3
+ declare function sidebarCountsTree(sidebar: DynamicSidebarContext | null | undefined): object;
4
+ declare function dynamicSidebarTreeValue(tree: unknown, pathInput?: string): unknown;
5
+ declare function dynamicSidebarNumber(tree: unknown, pathInput?: string): number;
6
+ declare function dynamicSidebarText(tree: unknown, pathInput?: string): string;
7
+ declare function dynamicSidebarCount(sidebar: DynamicSidebarContext | null | undefined, pathInput?: string): number;
8
+ declare function dynamicSidebarTextValue(sidebar: DynamicSidebarContext | null | undefined, pathInput?: string): string;
9
+ declare function dynamicSidebarLinkDisabled(sidebar: DynamicSidebarContext | null | undefined, item: DynamicSidebarLinkItem): boolean;
10
+ declare function normalizeRoutePath(input: unknown): string;
11
+ declare function dynamicSidebarLinkActive(currentPathInput: unknown, item: DynamicSidebarLinkItem, disabled: boolean): boolean;
12
+ declare function isDynamicSidebarDivider(item: DynamicSidebarItem): item is Extract<DynamicSidebarItem, {
13
+ kind: "divider";
14
+ }>;
15
+ declare function normalizeDynamicSidebarItems(items: DynamicSidebarItem[]): DynamicSidebarItem[];
16
+ declare function dynamicSidebarLiveConfig(sidebar: DynamicSidebarContext | null | undefined): DynamicSidebarLiveConfig;
17
+ export { dynamicSidebarCount, dynamicSidebarLinkActive, dynamicSidebarLinkDisabled, dynamicSidebarLiveConfig, dynamicSidebarNumber, dynamicSidebarText, dynamicSidebarTextValue, dynamicSidebarTreeValue, isDynamicSidebarDivider, normalizeDynamicSidebarItems, normalizeRoutePath, sidebarCountsTree, textValue, };
18
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/dynamic/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,iBAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAK,UAG/C;AAED,iBAAS,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,UAG3E;AAED,iBAAS,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,WAajE;AAED,iBAAS,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,UAI9D;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,UAG5D;AAED,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,SAAS,CAAC,EAAE,MAAM,UAGnB;AAED,iBAAS,uBAAuB,CAC9B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,SAAS,CAAC,EAAE,MAAM,UAGnB;AAED,iBAAS,0BAA0B,CACjC,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,IAAI,EAAE,sBAAsB,WAK7B;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,UAKzC;AAED,iBAAS,wBAAwB,CAC/B,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,OAAO,WAQlB;AAED,iBAAS,uBAAuB,CAC9B,IAAI,EAAE,kBAAkB,GACvB,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAE1D;AAED,iBAAS,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,EAAE,wBAoBhE;AAED,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAChD,wBAAwB,CAe1B;AAED,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,GACV,CAAC"}
@@ -0,0 +1,106 @@
1
+ function textValue(value, fallback = "") {
2
+ const text = String(value ?? "").trim();
3
+ return text || fallback;
4
+ }
5
+ function sidebarCountsTree(sidebar) {
6
+ const counts = sidebar?.entity_counts;
7
+ return counts && typeof counts === "object" ? counts : {};
8
+ }
9
+ function dynamicSidebarTreeValue(tree, pathInput) {
10
+ const parts = textValue(pathInput)
11
+ .split(".")
12
+ .map((part) => textValue(part))
13
+ .filter(Boolean);
14
+ let current = tree && typeof tree === "object" ? tree : {};
15
+ for (const part of parts) {
16
+ if (!current || typeof current !== "object" || !(part in current)) {
17
+ return null;
18
+ }
19
+ current = current[part];
20
+ }
21
+ return current;
22
+ }
23
+ function dynamicSidebarNumber(tree, pathInput) {
24
+ const value = dynamicSidebarTreeValue(tree, pathInput);
25
+ const parsed = Number(value);
26
+ return Number.isFinite(parsed) ? parsed : null;
27
+ }
28
+ function dynamicSidebarText(tree, pathInput) {
29
+ const value = dynamicSidebarTreeValue(tree, pathInput);
30
+ return typeof value === "string" ? value : "";
31
+ }
32
+ function dynamicSidebarCount(sidebar, pathInput) {
33
+ return dynamicSidebarNumber(sidebarCountsTree(sidebar), pathInput) || 0;
34
+ }
35
+ function dynamicSidebarTextValue(sidebar, pathInput) {
36
+ return dynamicSidebarText(sidebarCountsTree(sidebar), pathInput);
37
+ }
38
+ function dynamicSidebarLinkDisabled(sidebar, item) {
39
+ if (item.disabled === true)
40
+ return true;
41
+ const disabledPath = textValue(item.disabledPath);
42
+ return disabledPath ? dynamicSidebarCount(sidebar, disabledPath) <= 0 : false;
43
+ }
44
+ function normalizeRoutePath(input) {
45
+ const text = textValue(input);
46
+ const path = text.split(/[?#]/u)[0] || "/";
47
+ const withSlash = path.startsWith("/") ? path : `/${path}`;
48
+ return withSlash.length > 1 ? withSlash.replace(/\/+$/u, "") : "/";
49
+ }
50
+ function dynamicSidebarLinkActive(currentPathInput, item, disabled) {
51
+ if (disabled || item.navIgnore === true)
52
+ return false;
53
+ const current = normalizeRoutePath(currentPathInput);
54
+ const target = normalizeRoutePath(item.href);
55
+ if (current === target)
56
+ return true;
57
+ if (item.exact === true || target === "/")
58
+ return false;
59
+ return current.startsWith(`${target}/`);
60
+ }
61
+ function isDynamicSidebarDivider(item) {
62
+ return item.kind === "divider";
63
+ }
64
+ function normalizeDynamicSidebarItems(items) {
65
+ const visibleItems = Array.isArray(items)
66
+ ? items.filter((item) => {
67
+ return item && item.show !== false &&
68
+ (isDynamicSidebarDivider(item) ||
69
+ !(item.hideWhenDisabled === true && item.disabled === true));
70
+ })
71
+ : [];
72
+ const out = [];
73
+ for (const item of visibleItems) {
74
+ if (isDynamicSidebarDivider(item)) {
75
+ if (!out.length)
76
+ continue;
77
+ if (isDynamicSidebarDivider(out[out.length - 1]))
78
+ continue;
79
+ out.push(item);
80
+ continue;
81
+ }
82
+ out.push(item);
83
+ }
84
+ while (out.length && isDynamicSidebarDivider(out[out.length - 1]))
85
+ out.pop();
86
+ return out;
87
+ }
88
+ function dynamicSidebarLiveConfig(sidebar) {
89
+ const live = sidebar?.live && typeof sidebar.live === "object"
90
+ ? sidebar.live
91
+ : null;
92
+ const type = textValue(live?.type, textValue(sidebar?.type));
93
+ if (!type)
94
+ return {};
95
+ return {
96
+ params: live?.params && typeof live.params === "object" ? live.params : {},
97
+ path: textValue(live?.path),
98
+ rooms: Array.isArray(live?.rooms)
99
+ ? live.rooms.map((item) => textValue(item)).filter(Boolean)
100
+ : [],
101
+ side: textValue(live?.side, "left"),
102
+ type,
103
+ };
104
+ }
105
+ export { dynamicSidebarCount, dynamicSidebarLinkActive, dynamicSidebarLinkDisabled, dynamicSidebarLiveConfig, dynamicSidebarNumber, dynamicSidebarText, dynamicSidebarTextValue, dynamicSidebarTreeValue, isDynamicSidebarDivider, normalizeDynamicSidebarItems, normalizeRoutePath, sidebarCountsTree, textValue, };
106
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../../src/sidebar/dynamic/tree.ts"],"names":[],"mappings":"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"}