@design.estate/dees-catalog 3.94.0 → 3.96.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 (31) hide show
  1. package/dist_bundle/bundle.js +1744 -788
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-layout/dees-mosaic/dees-mosaic.d.ts +49 -0
  4. package/dist_ts_web/elements/00group-layout/dees-mosaic/dees-mosaic.demo.d.ts +1 -0
  5. package/dist_ts_web/elements/00group-layout/dees-mosaic/dees-mosaic.demo.js +82 -0
  6. package/dist_ts_web/elements/00group-layout/dees-mosaic/dees-mosaic.js +622 -0
  7. package/dist_ts_web/elements/00group-layout/dees-mosaic/index.d.ts +3 -0
  8. package/dist_ts_web/elements/00group-layout/dees-mosaic/index.js +4 -0
  9. package/dist_ts_web/elements/00group-layout/dees-mosaic/interaction.d.ts +37 -0
  10. package/dist_ts_web/elements/00group-layout/dees-mosaic/interaction.js +174 -0
  11. package/dist_ts_web/elements/00group-layout/dees-mosaic/tree.d.ts +33 -0
  12. package/dist_ts_web/elements/00group-layout/dees-mosaic/tree.js +199 -0
  13. package/dist_ts_web/elements/00group-layout/dees-mosaic/types.d.ts +52 -0
  14. package/dist_ts_web/elements/00group-layout/dees-mosaic/types.js +8 -0
  15. package/dist_ts_web/elements/00group-layout/index.d.ts +1 -0
  16. package/dist_ts_web/elements/00group-layout/index.js +2 -1
  17. package/dist_ts_web/services/DeesServiceLibLoader.d.ts +14 -13
  18. package/dist_ts_web/services/DeesServiceLibLoader.js +37 -12
  19. package/dist_watch/bundle.js +1745 -789
  20. package/dist_watch/bundle.js.map +4 -4
  21. package/package.json +1 -1
  22. package/readme.md +28 -1
  23. package/ts_web/00_commitinfo_data.ts +1 -1
  24. package/ts_web/elements/00group-layout/dees-mosaic/dees-mosaic.demo.ts +87 -0
  25. package/ts_web/elements/00group-layout/dees-mosaic/dees-mosaic.ts +562 -0
  26. package/ts_web/elements/00group-layout/dees-mosaic/index.ts +3 -0
  27. package/ts_web/elements/00group-layout/dees-mosaic/interaction.ts +187 -0
  28. package/ts_web/elements/00group-layout/dees-mosaic/tree.ts +239 -0
  29. package/ts_web/elements/00group-layout/dees-mosaic/types.ts +63 -0
  30. package/ts_web/elements/00group-layout/index.ts +1 -0
  31. package/ts_web/services/DeesServiceLibLoader.ts +42 -12
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '3.94.0',
6
+ version: '3.96.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -0,0 +1,49 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IMosaicLayout, IMosaicSurfaceMeta, TMosaicLayoutChangeReason } from './types.js';
3
+ import { type IMosaicDropTarget } from './interaction.js';
4
+ import '../../00group-utility/dees-icon/dees-icon.js';
5
+ declare global {
6
+ interface HTMLElementTagNameMap {
7
+ 'dees-mosaic': DeesMosaic;
8
+ }
9
+ }
10
+ /**
11
+ * Sway-like tiling workspace. Controlled component: the host owns `layout`
12
+ * and applies the complete next layouts emitted through
13
+ * `mosaic-layout-change`. Tile content projects through named slots
14
+ * (`slot="tile-<leafId>"`) so hosts keep light-DOM ownership — the load-
15
+ * bearing property for Electron webviews, which must never be reparented
16
+ * (slot reassignment is safe; verified by spike).
17
+ */
18
+ export declare class DeesMosaic extends DeesElement {
19
+ static demo: () => TemplateResult<1>;
20
+ static demoGroups: string[];
21
+ accessor layout: IMosaicLayout;
22
+ accessor surfaces: Record<string, IMosaicSurfaceMeta>;
23
+ accessor focusedLeafId: string;
24
+ accessor minTileWidth: number;
25
+ accessor minTileHeight: number;
26
+ accessor tilebarHeight: number;
27
+ accessor resizeEnabled: boolean;
28
+ accessor dragEnabled: boolean;
29
+ /** transient drop-target highlight during a tile drag */
30
+ accessor dropTarget: IMosaicDropTarget | null;
31
+ private dragController;
32
+ /** cancels an in-flight divider drag when the host disconnects mid-gesture */
33
+ private activeDividerCancel;
34
+ disconnectedCallback(): Promise<void>;
35
+ static styles: import("@design.estate/dees-element").CSSResult[];
36
+ render(): TemplateResult;
37
+ private renderNode;
38
+ private renderDropPreview;
39
+ /** Content-area rect per leaf id, in viewport coordinates. */
40
+ getLeafRects(): Record<string, DOMRect>;
41
+ equalize(splitId?: string): void;
42
+ focusTile(leafId: string): void;
43
+ commitLayout(layout: IMosaicLayout, reason: TMosaicLayoutChangeReason): void;
44
+ private requestCloseTile;
45
+ private emitTileEvent;
46
+ private handleRootPointerDown;
47
+ private handleDividerPointerDown;
48
+ private handleDividerKeydown;
49
+ }
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;
@@ -0,0 +1,82 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ import { createMosaicLeaf, mosaicInsert } from './tree.js';
3
+ const buildDefaultLayout = () => {
4
+ let layout = mosaicInsert({ root: null }, null, 'right', createMosaicLeaf('editor', 'leaf-editor'));
5
+ layout = mosaicInsert(layout, 'leaf-editor', 'right', createMosaicLeaf('chat', 'leaf-chat'));
6
+ layout = mosaicInsert(layout, null, 'bottom', createMosaicLeaf('terminal', 'leaf-terminal'));
7
+ return layout;
8
+ };
9
+ const surfaceMeta = {
10
+ editor: { title: 'Editor', icon: 'lucide:Code' },
11
+ chat: { title: 'AI Chat', icon: 'lucide:BotMessageSquare' },
12
+ terminal: { title: 'Terminal', icon: 'lucide:SquareTerminal' },
13
+ browser: { title: 'Browser', icon: 'lucide:Globe' },
14
+ };
15
+ let tileCounter = 0;
16
+ const addBrowserTile = (event) => {
17
+ const mosaic = event.target.closest('.mosaicDemo')?.querySelector('dees-mosaic');
18
+ if (!mosaic)
19
+ return;
20
+ tileCounter += 1;
21
+ const leaf = createMosaicLeaf('browser', `leaf-browser-${tileCounter}`);
22
+ mosaic.layout = mosaicInsert(mosaic.layout, 'leaf-chat', 'bottom', leaf);
23
+ };
24
+ export const demoFunc = () => html `
25
+ <style>
26
+ .mosaicDemo {
27
+ display: grid;
28
+ grid-template-rows: auto minmax(0, 1fr);
29
+ gap: 12px;
30
+ height: 640px;
31
+ max-width: 1000px;
32
+ margin: 40px auto;
33
+ }
34
+ .mosaicDemo .surfaceBody {
35
+ display: grid;
36
+ place-content: center;
37
+ gap: 6px;
38
+ height: 100%;
39
+ text-align: center;
40
+ color: var(--dees-color-text-secondary);
41
+ font-size: 12px;
42
+ background: var(--dees-color-bg-primary);
43
+ }
44
+ .mosaicDemo .surfaceBody strong {
45
+ color: var(--dees-color-text-primary);
46
+ font-size: 14px;
47
+ }
48
+ .mosaicDemo .emptyHint {
49
+ color: var(--dees-color-text-secondary);
50
+ font-size: 13px;
51
+ }
52
+ </style>
53
+ <div
54
+ class="mosaicDemo"
55
+ @mosaic-layout-change=${(event) => {
56
+ const mosaic = event.target;
57
+ mosaic.layout = event.detail.layout;
58
+ console.log('mosaic-layout-change', event.detail.reason, event.detail.layout);
59
+ }}
60
+ @mosaic-tile-close=${(event) => console.log('mosaic-tile-close', event.detail)}
61
+ @mosaic-tile-focus=${(event) => {
62
+ event.target.focusedLeafId = event.detail.leafId;
63
+ }}
64
+ >
65
+ <div>
66
+ <dees-button @clicked=${addBrowserTile}>Add browser tile below chat</dees-button>
67
+ </div>
68
+ <dees-mosaic
69
+ .layout=${buildDefaultLayout()}
70
+ .surfaces=${surfaceMeta}
71
+ focusedLeafId="leaf-editor"
72
+ >
73
+ <div slot="tile-leaf-editor" class="surfaceBody"><strong>Editor</strong><span>drag my tilebar; resize the shared edges</span></div>
74
+ <div slot="tile-leaf-chat" class="surfaceBody"><strong>AI Chat</strong><span>docked right</span></div>
75
+ <div slot="tile-leaf-terminal" class="surfaceBody"><strong>Terminal</strong><span>stacked from below</span></div>
76
+ <div slot="tile-leaf-browser-1" class="surfaceBody"><strong>Browser 1</strong></div>
77
+ <div slot="tile-leaf-browser-2" class="surfaceBody"><strong>Browser 2</strong></div>
78
+ <div slot="empty" class="emptyHint">Workspace is empty — add a tile.</div>
79
+ </dees-mosaic>
80
+ </div>
81
+ `;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1tb3NhaWMuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWxheW91dC9kZWVzLW1vc2FpYy9kZWVzLW1vc2FpYy5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUduRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNELE1BQU0sa0JBQWtCLEdBQUcsR0FBa0IsRUFBRTtJQUM3QyxJQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNwRyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUc7SUFDbEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ2hELElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFO0lBQzNELFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO0lBQzlELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtDQUNwRCxDQUFDO0FBRUYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXBCLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE1BQU0sTUFBTSxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFzQixDQUFDO0lBQ3ZILElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTztJQUNwQixXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QkErQk4sQ0FBQyxLQUFrQixFQUFFLEVBQUU7SUFDN0MsTUFBTSxNQUFNLEdBQUksS0FBSyxDQUFDLE1BQXNCLENBQUM7SUFDNUMsTUFBcUIsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hGLENBQUM7eUJBQ29CLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO3lCQUN0RSxDQUFDLEtBQWtCLEVBQUUsRUFBRTtJQUN4QyxLQUFLLENBQUMsTUFBcUMsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDcEYsQ0FBQzs7OzhCQUd5QixjQUFjOzs7Z0JBRzVCLGtCQUFrQixFQUFFO2tCQUNsQixXQUFXOzs7Ozs7Ozs7OztDQVc1QixDQUFDIn0=