@design.estate/dees-catalog 3.48.2 → 3.48.3

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 (34) hide show
  1. package/dist_bundle/bundle.js +129 -129
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-browser.d.ts → dees-storage-browser/dees-storage-browser.d.ts} +5 -5
  4. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-browser.demo.d.ts → dees-storage-browser/dees-storage-browser.demo.d.ts} +1 -1
  5. package/dist_ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-browser.demo.js +148 -0
  6. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-browser.js → dees-storage-browser/dees-storage-browser.js} +18 -18
  7. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-columns.d.ts → dees-storage-browser/dees-storage-columns.d.ts} +2 -2
  8. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-columns.js → dees-storage-browser/dees-storage-columns.js} +7 -7
  9. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-keys.d.ts → dees-storage-browser/dees-storage-keys.d.ts} +2 -2
  10. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-keys.js → dees-storage-browser/dees-storage-keys.js} +7 -7
  11. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-preview.d.ts → dees-storage-browser/dees-storage-preview.d.ts} +2 -2
  12. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-preview.js → dees-storage-browser/dees-storage-preview.js} +7 -7
  13. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/index.d.ts +4 -4
  14. package/dist_ts_web/elements/00group-dataview/dees-storage-browser/index.js +7 -0
  15. package/dist_ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/interfaces.js +1 -1
  16. package/dist_ts_web/elements/00group-dataview/dees-storage-browser/utilities.js +109 -0
  17. package/dist_ts_web/elements/00group-dataview/index.d.ts +1 -1
  18. package/dist_ts_web/elements/00group-dataview/index.js +2 -2
  19. package/package.json +1 -1
  20. package/ts_web/00_commitinfo_data.ts +1 -1
  21. package/ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-browser.demo.ts → dees-storage-browser/dees-storage-browser.demo.ts} +3 -3
  22. package/ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-browser.ts → dees-storage-browser/dees-storage-browser.ts} +14 -14
  23. package/ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-columns.ts → dees-storage-browser/dees-storage-columns.ts} +3 -3
  24. package/ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-keys.ts → dees-storage-browser/dees-storage-keys.ts} +3 -3
  25. package/ts_web/elements/00group-dataview/{dees-s3-browser/dees-s3-preview.ts → dees-storage-browser/dees-storage-preview.ts} +3 -3
  26. package/ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/index.ts +4 -4
  27. package/ts_web/elements/00group-dataview/index.ts +1 -1
  28. package/dist_ts_web/elements/00group-dataview/dees-s3-browser/dees-s3-browser.demo.js +0 -148
  29. package/dist_ts_web/elements/00group-dataview/dees-s3-browser/index.js +0 -7
  30. package/dist_ts_web/elements/00group-dataview/dees-s3-browser/utilities.js +0 -109
  31. /package/dist_ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/interfaces.d.ts +0 -0
  32. /package/dist_ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/utilities.d.ts +0 -0
  33. /package/ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/interfaces.ts +0 -0
  34. /package/ts_web/elements/00group-dataview/{dees-s3-browser → dees-storage-browser}/utilities.ts +0 -0
@@ -5,12 +5,12 @@ import { formatSize, getFileName } from './utilities.js';
5
5
 
6
6
  declare global {
7
7
  interface HTMLElementTagNameMap {
8
- 'dees-s3-preview': DeesS3Preview;
8
+ 'dees-storage-preview': DeesStoragePreview;
9
9
  }
10
10
  }
11
11
 
12
- @customElement('dees-s3-preview')
13
- export class DeesS3Preview extends DeesElement {
12
+ @customElement('dees-storage-preview')
13
+ export class DeesStoragePreview extends DeesElement {
14
14
  @property({ type: Object })
15
15
  public accessor dataProvider: IS3DataProvider | null = null;
16
16
 
@@ -1,6 +1,6 @@
1
- export * from './dees-s3-browser.js';
2
- export * from './dees-s3-columns.js';
3
- export * from './dees-s3-keys.js';
4
- export * from './dees-s3-preview.js';
1
+ export * from './dees-storage-browser.js';
2
+ export * from './dees-storage-columns.js';
3
+ export * from './dees-storage-keys.js';
4
+ export * from './dees-storage-preview.js';
5
5
  export * from './interfaces.js';
6
6
  export { formatSize, formatCount, getFileName, validateMove, getParentPrefix, getContentType, getDefaultContent, getPathSegments } from './utilities.js';
@@ -3,4 +3,4 @@ export * from './dees-dataview-codebox/index.js';
3
3
  export * from './dees-dataview-statusobject/index.js';
4
4
  export * from './dees-table/index.js';
5
5
  export * from './dees-statsgrid/index.js';
6
- export * from './dees-s3-browser/index.js';
6
+ export * from './dees-storage-browser/index.js';
@@ -1,148 +0,0 @@
1
- import { html } from '@design.estate/dees-element';
2
- import './dees-s3-browser.js';
3
- // Mock in-memory S3 data provider for demo purposes
4
- class MockS3DataProvider {
5
- objects = new Map();
6
- constructor() {
7
- const now = new Date().toISOString();
8
- // Seed with sample data
9
- this.objects.set('documents/readme.md', {
10
- content: btoa('# Welcome\n\nThis is a demo S3 browser.\n'),
11
- contentType: 'text/markdown',
12
- size: 42,
13
- lastModified: now,
14
- });
15
- this.objects.set('documents/config.json', {
16
- content: btoa('{\n "name": "demo",\n "version": "1.0.0"\n}'),
17
- contentType: 'application/json',
18
- size: 48,
19
- lastModified: now,
20
- });
21
- this.objects.set('documents/notes/todo.txt', {
22
- content: btoa('Buy milk\nFix bug #42\nDeploy to production'),
23
- contentType: 'text/plain',
24
- size: 45,
25
- lastModified: now,
26
- });
27
- this.objects.set('images/logo.png', {
28
- content: btoa('fake-png-data'),
29
- contentType: 'image/png',
30
- size: 24500,
31
- lastModified: now,
32
- });
33
- this.objects.set('images/banner.jpg', {
34
- content: btoa('fake-jpg-data'),
35
- contentType: 'image/jpeg',
36
- size: 156000,
37
- lastModified: now,
38
- });
39
- this.objects.set('scripts/deploy.sh', {
40
- content: btoa('#!/bin/bash\necho "Deploying..."\n'),
41
- contentType: 'text/plain',
42
- size: 34,
43
- lastModified: now,
44
- });
45
- this.objects.set('index.html', {
46
- content: btoa('<!DOCTYPE html>\n<html>\n<body>\n <h1>Hello World</h1>\n</body>\n</html>'),
47
- contentType: 'text/html',
48
- size: 72,
49
- lastModified: now,
50
- });
51
- this.objects.set('styles.css', {
52
- content: btoa('body { margin: 0; font-family: sans-serif; }'),
53
- contentType: 'text/css',
54
- size: 44,
55
- lastModified: now,
56
- });
57
- }
58
- async listObjects(bucket, prefix, delimiter) {
59
- const pfx = prefix || '';
60
- const objects = [];
61
- const prefixes = new Set();
62
- for (const [key, data] of this.objects) {
63
- if (!key.startsWith(pfx))
64
- continue;
65
- const rest = key.slice(pfx.length);
66
- if (delimiter) {
67
- const slashIndex = rest.indexOf(delimiter);
68
- if (slashIndex >= 0) {
69
- prefixes.add(pfx + rest.slice(0, slashIndex + 1));
70
- }
71
- else {
72
- objects.push({ key, size: data.size, lastModified: data.lastModified });
73
- }
74
- }
75
- else {
76
- objects.push({ key, size: data.size, lastModified: data.lastModified });
77
- }
78
- }
79
- return { objects, prefixes: Array.from(prefixes).sort() };
80
- }
81
- async getObject(bucket, key) {
82
- const obj = this.objects.get(key);
83
- if (!obj)
84
- throw new Error('Not found');
85
- return { ...obj };
86
- }
87
- async putObject(bucket, key, base64Content, contentType) {
88
- this.objects.set(key, {
89
- content: base64Content,
90
- contentType,
91
- size: atob(base64Content).length,
92
- lastModified: new Date().toISOString(),
93
- });
94
- return true;
95
- }
96
- async deleteObject(bucket, key) {
97
- return this.objects.delete(key);
98
- }
99
- async deletePrefix(bucket, prefix) {
100
- for (const key of this.objects.keys()) {
101
- if (key.startsWith(prefix)) {
102
- this.objects.delete(key);
103
- }
104
- }
105
- return true;
106
- }
107
- async getObjectUrl(bucket, key) {
108
- const obj = this.objects.get(key);
109
- if (!obj)
110
- return '';
111
- const blob = new Blob([Uint8Array.from(atob(obj.content), c => c.charCodeAt(0))], { type: obj.contentType });
112
- return URL.createObjectURL(blob);
113
- }
114
- async moveObject(bucket, sourceKey, destKey) {
115
- const obj = this.objects.get(sourceKey);
116
- if (!obj)
117
- return { success: false, error: 'Source not found' };
118
- this.objects.set(destKey, { ...obj, lastModified: new Date().toISOString() });
119
- this.objects.delete(sourceKey);
120
- return { success: true };
121
- }
122
- async movePrefix(bucket, sourcePrefix, destPrefix) {
123
- let count = 0;
124
- const toMove = Array.from(this.objects.entries()).filter(([k]) => k.startsWith(sourcePrefix));
125
- for (const [key, data] of toMove) {
126
- const newKey = destPrefix + key.slice(sourcePrefix.length);
127
- this.objects.set(newKey, { ...data, lastModified: new Date().toISOString() });
128
- this.objects.delete(key);
129
- count++;
130
- }
131
- return { success: true, movedCount: count };
132
- }
133
- }
134
- export const demoFunc = () => html `
135
- <style>
136
- .demo-container {
137
- height: 600px;
138
- padding: 16px;
139
- }
140
- </style>
141
- <div class="demo-container">
142
- <dees-s3-browser
143
- .dataProvider=${new MockS3DataProvider()}
144
- .bucketName=${'demo-bucket'}
145
- ></dees-s3-browser>
146
- </div>
147
- `;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zMy1icm93c2VyLmRlbW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1kYXRhdmlldy9kZWVzLXMzLWJyb3dzZXIvZGVlcy1zMy1icm93c2VyLmRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sc0JBQXNCLENBQUM7QUFFOUIsb0RBQW9EO0FBQ3BELE1BQU0sa0JBQWtCO0lBQ2QsT0FBTyxHQUE4RixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXZIO1FBQ0UsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUU7WUFDdEMsT0FBTyxFQUFFLElBQUksQ0FBQywyQ0FBMkMsQ0FBQztZQUMxRCxXQUFXLEVBQUUsZUFBZTtZQUM1QixJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxHQUFHO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFO1lBQ3hDLE9BQU8sRUFBRSxJQUFJLENBQUMsK0NBQStDLENBQUM7WUFDOUQsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxHQUFHO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFO1lBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsNkNBQTZDLENBQUM7WUFDNUQsV0FBVyxFQUFFLFlBQVk7WUFDekIsSUFBSSxFQUFFLEVBQUU7WUFDUixZQUFZLEVBQUUsR0FBRztTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FB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
@@ -1,7 +0,0 @@
1
- export * from './dees-s3-browser.js';
2
- export * from './dees-s3-columns.js';
3
- export * from './dees-s3-keys.js';
4
- export * from './dees-s3-preview.js';
5
- export * from './interfaces.js';
6
- export { formatSize, formatCount, getFileName, validateMove, getParentPrefix, getContentType, getDefaultContent, getPathSegments } from './utilities.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1kYXRhdmlldy9kZWVzLXMzLWJyb3dzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyJ9
@@ -1,109 +0,0 @@
1
- /**
2
- * Shared utilities for S3 browser components
3
- */
4
- /**
5
- * Format a byte size into a human-readable string
6
- */
7
- export function formatSize(bytes) {
8
- if (bytes === undefined || bytes === null)
9
- return '-';
10
- if (bytes === 0)
11
- return '0 B';
12
- const units = ['B', 'KB', 'MB', 'GB', 'TB'];
13
- let size = bytes;
14
- let unitIndex = 0;
15
- while (size >= 1024 && unitIndex < units.length - 1) {
16
- size /= 1024;
17
- unitIndex++;
18
- }
19
- return `${size.toFixed(unitIndex > 0 ? 1 : 0)} ${units[unitIndex]}`;
20
- }
21
- /**
22
- * Format a count into a compact human-readable string
23
- */
24
- export function formatCount(count) {
25
- if (count === undefined || count === null)
26
- return '';
27
- if (count >= 1000000)
28
- return `${(count / 1000000).toFixed(1)}M`;
29
- if (count >= 1000)
30
- return `${(count / 1000).toFixed(1)}K`;
31
- return count.toString();
32
- }
33
- /**
34
- * Extract the file name from a path
35
- */
36
- export function getFileName(path) {
37
- const parts = path.replace(/\/$/, '').split('/');
38
- return parts[parts.length - 1] || path;
39
- }
40
- /**
41
- * Validates if a move operation is allowed
42
- */
43
- export function validateMove(sourceKey, destPrefix) {
44
- if (sourceKey.endsWith('/')) {
45
- if (destPrefix.startsWith(sourceKey)) {
46
- return { valid: false, error: 'Cannot move a folder into itself' };
47
- }
48
- }
49
- const sourceParent = getParentPrefix(sourceKey);
50
- if (sourceParent === destPrefix) {
51
- return { valid: false, error: 'Item is already in this location' };
52
- }
53
- return { valid: true };
54
- }
55
- /**
56
- * Gets the parent prefix (directory) of a given key
57
- */
58
- export function getParentPrefix(key) {
59
- const trimmed = key.endsWith('/') ? key.slice(0, -1) : key;
60
- const lastSlash = trimmed.lastIndexOf('/');
61
- return lastSlash >= 0 ? trimmed.substring(0, lastSlash + 1) : '';
62
- }
63
- /**
64
- * Get content type from file extension
65
- */
66
- export function getContentType(ext) {
67
- const contentTypes = {
68
- json: 'application/json',
69
- txt: 'text/plain',
70
- html: 'text/html',
71
- css: 'text/css',
72
- js: 'application/javascript',
73
- ts: 'text/typescript',
74
- md: 'text/markdown',
75
- xml: 'application/xml',
76
- yaml: 'text/yaml',
77
- yml: 'text/yaml',
78
- csv: 'text/csv',
79
- };
80
- return contentTypes[ext] || 'application/octet-stream';
81
- }
82
- /**
83
- * Get default content for a new file based on extension
84
- */
85
- export function getDefaultContent(ext) {
86
- const defaults = {
87
- json: '{\n \n}',
88
- html: '<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n</head>\n<body>\n \n</body>\n</html>',
89
- md: '# Title\n\n',
90
- txt: '',
91
- };
92
- return defaults[ext] || '';
93
- }
94
- /**
95
- * Parse a prefix into cumulative path segments
96
- */
97
- export function getPathSegments(prefix) {
98
- if (!prefix)
99
- return [];
100
- const parts = prefix.split('/').filter(p => p);
101
- const segments = [];
102
- let cumulative = '';
103
- for (const part of parts) {
104
- cumulative += part + '/';
105
- segments.push(cumulative);
106
- }
107
- return segments;
108
- }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtZGF0YXZpZXcvZGVlcy1zMy1icm93c2VyL3V0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQU9IOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFjO0lBQ3ZDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3RELElBQUksS0FBSyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU5QixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2IsU0FBUyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQWM7SUFDeEMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDckQsSUFBSSxLQUFLLElBQUksT0FBTztRQUFFLE9BQU8sR0FBRyxDQUFDLEtBQUss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