juxscript 1.1.402 → 1.1.404

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 (133) hide show
  1. package/dist/{components → containers}/c.d.ts.map +1 -1
  2. package/dist/{components → containers}/c.js.map +1 -1
  3. package/dist/containers/flex.d.ts +49 -0
  4. package/dist/containers/flex.d.ts.map +1 -0
  5. package/dist/containers/flex.js +122 -0
  6. package/dist/containers/flex.js.map +1 -0
  7. package/dist/{components → containers}/g.d.ts.map +1 -1
  8. package/dist/{components → containers}/g.js.map +1 -1
  9. package/dist/index.d.ts +6 -4
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/widgets/canvas.d.ts +31 -55
  14. package/dist/widgets/canvas.d.ts.map +1 -1
  15. package/dist/widgets/canvas.js +690 -539
  16. package/dist/widgets/canvas.js.map +1 -1
  17. package/package.json +1 -1
  18. package/dist/components/barChart.d.ts +0 -119
  19. package/dist/components/barChart.d.ts.map +0 -1
  20. package/dist/components/barChart.js +0 -555
  21. package/dist/components/barChart.js.map +0 -1
  22. package/dist/components/container.d.ts +0 -58
  23. package/dist/components/container.d.ts.map +0 -1
  24. package/dist/components/container.js +0 -152
  25. package/dist/components/container.js.map +0 -1
  26. package/dist/components/grid.d.ts +0 -58
  27. package/dist/components/grid.d.ts.map +0 -1
  28. package/dist/components/grid.js +0 -128
  29. package/dist/components/grid.js.map +0 -1
  30. package/dist/components/lineChart.d.ts +0 -104
  31. package/dist/components/lineChart.d.ts.map +0 -1
  32. package/dist/components/lineChart.js +0 -466
  33. package/dist/components/lineChart.js.map +0 -1
  34. package/dist/components/pieChart.d.ts +0 -93
  35. package/dist/components/pieChart.d.ts.map +0 -1
  36. package/dist/components/pieChart.js +0 -397
  37. package/dist/components/pieChart.js.map +0 -1
  38. package/dist/components/stack.d.ts +0 -42
  39. package/dist/components/stack.d.ts.map +0 -1
  40. package/dist/components/stack.js +0 -109
  41. package/dist/components/stack.js.map +0 -1
  42. package/dist/devtools/devtools.d.ts +0 -3
  43. package/dist/devtools/devtools.d.ts.map +0 -1
  44. package/dist/devtools/devtools.js +0 -182
  45. package/dist/devtools/devtools.js.map +0 -1
  46. package/dist/primitives/button.d.ts +0 -53
  47. package/dist/primitives/button.d.ts.map +0 -1
  48. package/dist/primitives/button.js +0 -170
  49. package/dist/primitives/button.js.map +0 -1
  50. package/dist/primitives/c.d.ts +0 -53
  51. package/dist/primitives/c.d.ts.map +0 -1
  52. package/dist/primitives/c.js +0 -127
  53. package/dist/primitives/c.js.map +0 -1
  54. package/dist/primitives/checkbox.d.ts +0 -92
  55. package/dist/primitives/checkbox.d.ts.map +0 -1
  56. package/dist/primitives/checkbox.js +0 -217
  57. package/dist/primitives/checkbox.js.map +0 -1
  58. package/dist/primitives/data.d.ts +0 -58
  59. package/dist/primitives/data.d.ts.map +0 -1
  60. package/dist/primitives/data.js +0 -131
  61. package/dist/primitives/data.js.map +0 -1
  62. package/dist/primitives/grid.d.ts +0 -58
  63. package/dist/primitives/grid.d.ts.map +0 -1
  64. package/dist/primitives/grid.js +0 -128
  65. package/dist/primitives/grid.js.map +0 -1
  66. package/dist/primitives/include.d.ts +0 -86
  67. package/dist/primitives/include.d.ts.map +0 -1
  68. package/dist/primitives/include.js +0 -239
  69. package/dist/primitives/include.js.map +0 -1
  70. package/dist/primitives/indexDb.d.ts +0 -80
  71. package/dist/primitives/indexDb.d.ts.map +0 -1
  72. package/dist/primitives/indexDb.js +0 -253
  73. package/dist/primitives/indexDb.js.map +0 -1
  74. package/dist/primitives/input.d.ts +0 -88
  75. package/dist/primitives/input.d.ts.map +0 -1
  76. package/dist/primitives/input.js +0 -216
  77. package/dist/primitives/input.js.map +0 -1
  78. package/dist/primitives/link.d.ts +0 -51
  79. package/dist/primitives/link.d.ts.map +0 -1
  80. package/dist/primitives/link.js +0 -178
  81. package/dist/primitives/link.js.map +0 -1
  82. package/dist/primitives/list.d.ts +0 -66
  83. package/dist/primitives/list.d.ts.map +0 -1
  84. package/dist/primitives/list.js +0 -233
  85. package/dist/primitives/list.js.map +0 -1
  86. package/dist/primitives/nav.d.ts +0 -64
  87. package/dist/primitives/nav.d.ts.map +0 -1
  88. package/dist/primitives/nav.js +0 -236
  89. package/dist/primitives/nav.js.map +0 -1
  90. package/dist/primitives/radio.d.ts +0 -58
  91. package/dist/primitives/radio.d.ts.map +0 -1
  92. package/dist/primitives/radio.js +0 -135
  93. package/dist/primitives/radio.js.map +0 -1
  94. package/dist/primitives/routes.d.ts +0 -15
  95. package/dist/primitives/routes.d.ts.map +0 -1
  96. package/dist/primitives/routes.js +0 -34
  97. package/dist/primitives/routes.js.map +0 -1
  98. package/dist/primitives/select.d.ts +0 -67
  99. package/dist/primitives/select.d.ts.map +0 -1
  100. package/dist/primitives/select.js +0 -160
  101. package/dist/primitives/select.js.map +0 -1
  102. package/dist/primitives/style.d.ts +0 -27
  103. package/dist/primitives/style.d.ts.map +0 -1
  104. package/dist/primitives/style.js +0 -53
  105. package/dist/primitives/style.js.map +0 -1
  106. package/dist/primitives/table.d.ts +0 -83
  107. package/dist/primitives/table.d.ts.map +0 -1
  108. package/dist/primitives/table.js +0 -264
  109. package/dist/primitives/table.js.map +0 -1
  110. package/dist/primitives/tabs.d.ts +0 -75
  111. package/dist/primitives/tabs.d.ts.map +0 -1
  112. package/dist/primitives/tabs.js +0 -263
  113. package/dist/primitives/tabs.js.map +0 -1
  114. package/dist/primitives/tag.d.ts +0 -92
  115. package/dist/primitives/tag.d.ts.map +0 -1
  116. package/dist/primitives/tag.js +0 -151
  117. package/dist/primitives/tag.js.map +0 -1
  118. package/dist/services/db.d.ts +0 -44
  119. package/dist/services/db.d.ts.map +0 -1
  120. package/dist/services/db.js +0 -59
  121. package/dist/services/db.js.map +0 -1
  122. package/dist/services/email.d.ts +0 -50
  123. package/dist/services/email.d.ts.map +0 -1
  124. package/dist/services/email.js +0 -60
  125. package/dist/services/email.js.map +0 -1
  126. package/dist/services/s3.d.ts +0 -61
  127. package/dist/services/s3.d.ts.map +0 -1
  128. package/dist/services/s3.js +0 -79
  129. package/dist/services/s3.js.map +0 -1
  130. /package/dist/{components → containers}/c.d.ts +0 -0
  131. /package/dist/{components → containers}/c.js +0 -0
  132. /package/dist/{components → containers}/g.d.ts +0 -0
  133. /package/dist/{components → containers}/g.js +0 -0
@@ -1,182 +0,0 @@
1
- import { pageState } from '../state/pageState.js';
2
- let panel = null;
3
- let interval = null;
4
- const STYLES = `
5
- position: fixed;
6
- bottom: 0;
7
- right: 0;
8
- width: 420px;
9
- max-height: 60vh;
10
- overflow-y: auto;
11
- background: #1e1e2e;
12
- color: #cdd6f4;
13
- font-family: 'SF Mono', 'Fira Code', monospace;
14
- font-size: 11px;
15
- line-height: 1.4;
16
- padding: 0;
17
- border-top-left-radius: 8px;
18
- box-shadow: -2px -2px 12px rgba(0,0,0,0.4);
19
- z-index: 99999;
20
- border: 1px solid #45475a;
21
- `;
22
- const HEADER_STYLES = `
23
- position: sticky;
24
- top: 0;
25
- background: #313244;
26
- padding: 6px 10px;
27
- display: flex;
28
- justify-content: space-between;
29
- align-items: center;
30
- border-bottom: 1px solid #45475a;
31
- cursor: move;
32
- `;
33
- function escapeHtml(str) {
34
- return String(str)
35
- .replace(/&/g, '&')
36
- .replace(/</g, '&lt;')
37
- .replace(/>/g, '&gt;')
38
- .replace(/"/g, '&quot;');
39
- }
40
- function formatValue(val) {
41
- if (val === undefined)
42
- return '<span style="color:#6c7086">undefined</span>';
43
- if (val === null)
44
- return '<span style="color:#6c7086">null</span>';
45
- if (typeof val === 'boolean')
46
- return `<span style="color:#fab387">${val}</span>`;
47
- if (typeof val === 'number')
48
- return `<span style="color:#fab387">${val}</span>`;
49
- if (typeof val === 'string') {
50
- const truncated = val.length > 40 ? escapeHtml(val.slice(0, 40)) + '…' : escapeHtml(val);
51
- return `<span style="color:#a6e3a1">"${truncated}"</span>`;
52
- }
53
- if (Array.isArray(val))
54
- return `<span style="color:#89b4fa">Array[${val.length}]</span>`;
55
- if (typeof val === 'object') {
56
- try {
57
- const keys = Object.keys(val);
58
- return `<span style="color:#89b4fa">{${keys.slice(0, 3).join(', ')}${keys.length > 3 ? '…' : ''}}</span>`;
59
- }
60
- catch {
61
- return '<span style="color:#89b4fa">{…}</span>';
62
- }
63
- }
64
- if (typeof val === 'function')
65
- return '<span style="color:#cba6f7">ƒ()</span>';
66
- return escapeHtml(String(val));
67
- }
68
- function buildContent() {
69
- const keys = pageState.__keys?.() ?? [];
70
- if (keys.length === 0) {
71
- return '<div style="padding:10px;color:#6c7086">No components registered</div>';
72
- }
73
- let html = '';
74
- for (const key of keys) {
75
- const proxy = pageState[key];
76
- if (!proxy)
77
- continue;
78
- // Read known props
79
- const value = proxy.value;
80
- const content = proxy.content;
81
- const checked = proxy.checked;
82
- // Read event flags
83
- const events = [];
84
- for (const evt of ['blur', 'focus', 'click', 'change', 'input', 'hover', 'active', 'focused']) {
85
- try {
86
- if (proxy[evt] === true)
87
- events.push(evt);
88
- }
89
- catch { /* skip */ }
90
- }
91
- // Component type detection
92
- const el = proxy.getElement?.();
93
- let typeLabel = 'unknown';
94
- let typeColor = '#6c7086';
95
- if (el instanceof HTMLElement) {
96
- const tag = el.tagName.toLowerCase();
97
- const isStore = el.getAttribute('data-jux-store');
98
- if (isStore) {
99
- typeLabel = `store:${isStore}`;
100
- typeColor = '#f38ba8';
101
- }
102
- else if (el instanceof HTMLInputElement) {
103
- typeLabel = `input[${el.type}]`;
104
- typeColor = '#89dceb';
105
- }
106
- else if (el instanceof HTMLSelectElement) {
107
- typeLabel = 'select';
108
- typeColor = '#89dceb';
109
- }
110
- else {
111
- typeLabel = tag;
112
- typeColor = '#94e2d5';
113
- }
114
- }
115
- html += `
116
- <div style="border-bottom:1px solid #313244;padding:6px 10px;">
117
- <div style="display:flex;justify-content:space-between;margin-bottom:2px;">
118
- <span style="color:#cba6f7;font-weight:bold;">${escapeHtml(key)}</span>
119
- <span style="color:${typeColor};font-size:10px;">${escapeHtml(typeLabel)}</span>
120
- </div>
121
- <div style="padding-left:8px;">`;
122
- if (value !== undefined) {
123
- html += `<div><span style="color:#74c7ec">value:</span> ${formatValue(value)}</div>`;
124
- }
125
- if (content !== undefined && content !== value) {
126
- html += `<div><span style="color:#74c7ec">content:</span> ${formatValue(content)}</div>`;
127
- }
128
- if (checked !== undefined) {
129
- html += `<div><span style="color:#74c7ec">checked:</span> ${formatValue(checked)}</div>`;
130
- }
131
- if (events.length > 0) {
132
- html += `<div><span style="color:#f9e2af">events:</span> <span style="color:#fab387">${events.join(', ')}</span></div>`;
133
- }
134
- html += `</div></div>`;
135
- }
136
- return html;
137
- }
138
- function refresh() {
139
- if (!panel)
140
- return;
141
- const body = panel.querySelector('[data-devtools-body]');
142
- if (body)
143
- body.innerHTML = buildContent();
144
- }
145
- export function devtools(show = true) {
146
- if (!show) {
147
- if (panel) {
148
- panel.remove();
149
- panel = null;
150
- }
151
- if (interval) {
152
- clearInterval(interval);
153
- interval = null;
154
- }
155
- return;
156
- }
157
- if (panel) {
158
- refresh();
159
- return;
160
- }
161
- panel = document.createElement('div');
162
- panel.id = '__jux-devtools';
163
- panel.setAttribute('style', STYLES);
164
- panel.innerHTML = `
165
- <div style="${HEADER_STYLES}">
166
- <span style="color:#f9e2af;font-weight:bold;">🔧 JUX DevTools</span>
167
- <div>
168
- <button data-devtools-refresh style="background:none;border:1px solid #45475a;color:#cdd6f4;cursor:pointer;padding:2px 6px;border-radius:3px;margin-right:4px;font-size:10px;">↻</button>
169
- <button data-devtools-close style="background:none;border:1px solid #45475a;color:#cdd6f4;cursor:pointer;padding:2px 6px;border-radius:3px;font-size:10px;">✕</button>
170
- </div>
171
- </div>
172
- <div data-devtools-body></div>
173
- `;
174
- document.body.appendChild(panel);
175
- panel.querySelector('[data-devtools-close]')?.addEventListener('click', () => devtools(false));
176
- panel.querySelector('[data-devtools-refresh]')?.addEventListener('click', () => refresh());
177
- refresh();
178
- // Auto-refresh every 500ms to catch async changes
179
- interval = setInterval(refresh, 500);
180
- }
181
- export default devtools;
182
- //# sourceMappingURL=devtools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../lib/devtools/devtools.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- interface ButtonOptions {
2
- content?: string;
3
- variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
4
- size?: 'default' | 'sm' | 'lg' | 'icon';
5
- disabled?: boolean;
6
- type?: 'button' | 'submit' | 'reset';
7
- class?: string;
8
- style?: string;
9
- target?: string;
10
- icon?: string;
11
- onClick?: (event: MouseEvent) => void;
12
- [key: string]: any;
13
- }
14
- declare class Button {
15
- id: string;
16
- opts: ButtonOptions;
17
- private _element;
18
- private _onChange;
19
- constructor(id: string, options?: ButtonOptions);
20
- content(value: string): this;
21
- variant(value: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'): this;
22
- size(value: 'default' | 'sm' | 'lg' | 'icon'): this;
23
- disabled(value?: boolean): this;
24
- icon(value: string): this;
25
- style(value: string): this;
26
- class(value: string): this;
27
- getValue(): string;
28
- getContent(): string;
29
- getVariant(): string;
30
- getSize(): string;
31
- getIcon(): string;
32
- getDisabled(): boolean;
33
- getClass(): string;
34
- getStyle(): string;
35
- setValue(val: string): this;
36
- setContent(val: string): this;
37
- setVariant(val: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'): this;
38
- setSize(val: 'default' | 'sm' | 'lg' | 'icon'): this;
39
- setIcon(val: string): this;
40
- setDisabled(val: boolean): this;
41
- setClass(val: string): this;
42
- setStyle(val: string): this;
43
- getElement(): HTMLButtonElement;
44
- onChange(fn: (value: string) => void): this;
45
- onClick(fn: (event: MouseEvent) => void): this;
46
- /** Returns the reactive pageState proxy for this component */
47
- get state(): any;
48
- }
49
- export declare function button(id: string, options?: ButtonOptions): Button;
50
- export declare function btn(id: string, options?: ButtonOptions): Button;
51
- export { Button, ButtonOptions };
52
- export default button;
53
- //# sourceMappingURL=button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../lib/primitives/button.ts"],"names":[],"mappings":"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"}
@@ -1,170 +0,0 @@
1
- import generateId from '../utils/idgen.js';
2
- import niceName from '../utils/niceName.js';
3
- import { pageState } from '../state/pageState.js';
4
- class Button {
5
- constructor(id, options = {}) {
6
- this._onChange = null;
7
- this.id = id || generateId();
8
- this.opts = {
9
- variant: 'default',
10
- size: 'default',
11
- type: 'button',
12
- disabled: false,
13
- ...options
14
- };
15
- // Auto-generate content from ID if not provided
16
- if (!this.opts.content && this.id) {
17
- this.opts.content = niceName(this.id);
18
- }
19
- this._element = document.createElement('button');
20
- this._element.id = this.id;
21
- this._element.type = this.opts.type;
22
- if (this.opts.disabled)
23
- this._element.disabled = true;
24
- // Build class list
25
- const classes = ['jux-button'];
26
- if (this.opts.variant)
27
- classes.push(`jux-button--${this.opts.variant}`);
28
- if (this.opts.size && this.opts.size !== 'default')
29
- classes.push(`jux-button--${this.opts.size}`);
30
- if (this.opts.class)
31
- classes.push(this.opts.class);
32
- this._element.className = classes.join(' ');
33
- if (this.opts.style)
34
- this._element.setAttribute('style', this.opts.style);
35
- // Content
36
- if (this.opts.icon) {
37
- const iconSpan = document.createElement('span');
38
- iconSpan.className = 'jux-button-icon';
39
- iconSpan.textContent = this.opts.icon;
40
- this._element.appendChild(iconSpan);
41
- }
42
- if (this.opts.content) {
43
- const textSpan = document.createElement('span');
44
- textSpan.className = 'jux-button-text';
45
- textSpan.textContent = this.opts.content;
46
- this._element.appendChild(textSpan);
47
- }
48
- // Extra attributes
49
- for (const [key, value] of Object.entries(this.opts)) {
50
- if (['content', 'class', 'style', 'target', 'variant', 'size', 'type', 'disabled', 'icon', 'onClick'].includes(key))
51
- continue;
52
- this._element.setAttribute(`data-${key}`, String(value));
53
- }
54
- // Click handler
55
- if (this.opts.onClick) {
56
- this._element.addEventListener('click', this.opts.onClick);
57
- }
58
- const resolvedTarget = this.opts.target;
59
- const container = resolvedTarget
60
- ? document.getElementById(resolvedTarget) || document.querySelector(resolvedTarget)
61
- : document.getElementById('app');
62
- container?.appendChild(this._element);
63
- }
64
- // ═══════════════════════════════════════════════════════════
65
- // FLUENT BUILDER API
66
- // ═══════════════════════════════════════════════════════════
67
- content(value) {
68
- this.opts.content = value;
69
- const textEl = this._element.querySelector('.jux-button-text');
70
- if (textEl) {
71
- textEl.textContent = value;
72
- }
73
- else {
74
- const textSpan = document.createElement('span');
75
- textSpan.className = 'jux-button-text';
76
- textSpan.textContent = value;
77
- this._element.appendChild(textSpan);
78
- }
79
- return this;
80
- }
81
- variant(value) {
82
- if (this.opts.variant)
83
- this._element.classList.remove(`jux-button--${this.opts.variant}`);
84
- this.opts.variant = value;
85
- this._element.classList.add(`jux-button--${value}`);
86
- return this;
87
- }
88
- size(value) {
89
- if (this.opts.size && this.opts.size !== 'default')
90
- this._element.classList.remove(`jux-button--${this.opts.size}`);
91
- this.opts.size = value;
92
- if (value !== 'default')
93
- this._element.classList.add(`jux-button--${value}`);
94
- return this;
95
- }
96
- disabled(value = true) {
97
- this.opts.disabled = value;
98
- this._element.disabled = value;
99
- return this;
100
- }
101
- icon(value) {
102
- this.opts.icon = value;
103
- let iconEl = this._element.querySelector('.jux-button-icon');
104
- if (iconEl) {
105
- iconEl.textContent = value;
106
- }
107
- else {
108
- const iconSpan = document.createElement('span');
109
- iconSpan.className = 'jux-button-icon';
110
- iconSpan.textContent = value;
111
- this._element.prepend(iconSpan);
112
- }
113
- return this;
114
- }
115
- style(value) {
116
- this.opts.style = value;
117
- this._element.setAttribute('style', value);
118
- return this;
119
- }
120
- class(value) {
121
- this.opts.class = value;
122
- this._element.className = value;
123
- return this;
124
- }
125
- // ═══════════════════════════════════════════════════════════
126
- // PAGESTATE INTEGRATION (delegates to fluent API)
127
- // ═══════════════════════════════════════════════════════════
128
- getValue() { return this.opts.content ?? ''; }
129
- getContent() { return this.opts.content ?? ''; }
130
- getVariant() { return this.opts.variant ?? 'default'; }
131
- getSize() { return this.opts.size ?? 'default'; }
132
- getIcon() { return this.opts.icon ?? ''; }
133
- getDisabled() { return this.opts.disabled ?? false; }
134
- getClass() { return this.opts.class ?? ''; }
135
- getStyle() { return this.opts.style ?? ''; }
136
- setValue(val) { return this.content(val); }
137
- setContent(val) { return this.content(val); }
138
- setVariant(val) { return this.variant(val); }
139
- setSize(val) { return this.size(val); }
140
- setIcon(val) { return this.icon(val); }
141
- setDisabled(val) { return this.disabled(val); }
142
- setClass(val) { return this.class(val); }
143
- setStyle(val) { return this.style(val); }
144
- getElement() { return this._element; }
145
- onChange(fn) {
146
- this._onChange = fn;
147
- return this;
148
- }
149
- onClick(fn) {
150
- this._element.addEventListener('click', fn);
151
- return this;
152
- }
153
- /** Returns the reactive pageState proxy for this component */
154
- get state() {
155
- return pageState[this.id];
156
- }
157
- }
158
- export function button(id, options = {}) {
159
- const b = new Button(id, options);
160
- pageState.__register(b);
161
- return b;
162
- }
163
- export function btn(id, options = {}) {
164
- const b = new Button(id, options);
165
- pageState.__register(b);
166
- return b;
167
- }
168
- export { Button };
169
- export default button;
170
- //# sourceMappingURL=button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../lib/primitives/button.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- interface COptions {
2
- id?: string;
3
- class?: string;
4
- style?: string;
5
- target?: string;
6
- [key: string]: any;
7
- }
8
- declare class C {
9
- id: string;
10
- opts: COptions;
11
- private _element;
12
- constructor(width: string, height?: string, padding?: string, radius?: string, margin?: string, border?: string, overflow?: string, options?: COptions);
13
- get element(): HTMLElement;
14
- getElement(): HTMLElement;
15
- id_set(value: string): this;
16
- class(value: string): this;
17
- style(css: string): this;
18
- padding(value: string): this;
19
- radius(value: string): this;
20
- margin(value: string): this;
21
- border(value: string): this;
22
- overflow(value: string): this;
23
- width(value: string): this;
24
- height(value: string): this;
25
- target_set(value: string): this;
26
- getId(): string;
27
- getClass(): string;
28
- getStyle(): string;
29
- getPadding(): string;
30
- getRadius(): string;
31
- getMargin(): string;
32
- getBorder(): string;
33
- getOverflow(): string;
34
- getTarget(): string;
35
- getValue(): string;
36
- setId(val: string): this;
37
- setClass(val: string): this;
38
- setStyle(val: string): this;
39
- setPadding(val: string): this;
40
- setRadius(val: string): this;
41
- setMargin(val: string): this;
42
- setBorder(val: string): this;
43
- setOverflow(val: string): this;
44
- setTarget(val: string): this;
45
- setValue(val: string): this;
46
- setInnerHTML(val: string): this;
47
- append(child: C | HTMLElement): this;
48
- render(target?: string | HTMLElement | C): this;
49
- }
50
- export declare function c(width: string, height?: string, padding?: string, radius?: string, margin?: string, border?: string, overflow?: string, options?: COptions): C;
51
- export { C, COptions, c as container };
52
- export default c;
53
- //# sourceMappingURL=c.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../lib/primitives/c.ts"],"names":[],"mappings":"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"}
@@ -1,127 +0,0 @@
1
- import generateId from "../utils/idgen.js";
2
- function sanitizeCSSValue(value) {
3
- // Fix calc('...') or calc("...") → calc(...)
4
- return value.replace(/calc\(\s*['"]([^'"]*)['"]\s*\)/g, 'calc($1)');
5
- }
6
- class C {
7
- constructor(width, height, padding, radius, margin, border, overflow, options = {}) {
8
- this.id = options.id || generateId('c');
9
- this.opts = { ...options };
10
- this._element = document.createElement('div');
11
- this._element.id = this.id;
12
- this._element.style.boxSizing = 'border-box';
13
- this._element.style.float = 'left';
14
- if (width)
15
- this._element.style.width = sanitizeCSSValue(width);
16
- if (height)
17
- this._element.style.height = sanitizeCSSValue(height);
18
- if (padding)
19
- this._element.style.padding = sanitizeCSSValue(padding);
20
- if (radius)
21
- this._element.style.borderRadius = sanitizeCSSValue(radius);
22
- if (margin)
23
- this._element.style.margin = sanitizeCSSValue(margin);
24
- if (border)
25
- this._element.style.border = sanitizeCSSValue(border);
26
- if (overflow)
27
- this._element.style.overflow = overflow;
28
- if (this.opts.class)
29
- this._element.className = this.opts.class;
30
- if (this.opts.style)
31
- this._element.setAttribute('style', this._element.getAttribute('style') + ';' + this.opts.style);
32
- // Extra data-* attributes
33
- const reserved = ['id', 'class', 'style', 'target'];
34
- for (const [key, value] of Object.entries(this.opts)) {
35
- if (reserved.includes(key))
36
- continue;
37
- this._element.setAttribute(`data-${key}`, String(value));
38
- }
39
- // Auto-mount
40
- if (this.opts.target) {
41
- this.render(this.opts.target);
42
- }
43
- else {
44
- this.render();
45
- }
46
- }
47
- // ═══════════════════════════════════════════════════════════
48
- // ELEMENT ACCESS
49
- // ═══════════════════════════════════════════════════════════
50
- get element() { return this._element; }
51
- getElement() { return this._element; }
52
- // ═══════════════════════════════════════════════════════════
53
- // FLUENT BUILDER API
54
- // ═══════════════════════════════════════════════════════════
55
- id_set(value) { this.id = value; this._element.id = value; return this; }
56
- class(value) { this.opts.class = value; this._element.className = value; return this; }
57
- style(css) {
58
- this.opts.style = css;
59
- const existing = this._element.getAttribute('style') || '';
60
- this._element.setAttribute('style', existing + ';' + css);
61
- return this;
62
- }
63
- padding(value) { this.opts.padding = value; this._element.style.padding = sanitizeCSSValue(value); return this; }
64
- radius(value) { this.opts.radius = value; this._element.style.borderRadius = sanitizeCSSValue(value); return this; }
65
- margin(value) { this.opts.margin = value; this._element.style.margin = sanitizeCSSValue(value); return this; }
66
- border(value) { this.opts.border = value; this._element.style.border = sanitizeCSSValue(value); return this; }
67
- overflow(value) { this.opts.overflow = value; this._element.style.overflow = value; return this; }
68
- width(value) { this._element.style.width = sanitizeCSSValue(value); return this; }
69
- height(value) { this._element.style.height = sanitizeCSSValue(value); return this; }
70
- target_set(value) { this.opts.target = value; return this; }
71
- // ═══════════════════════════════════════════════════════════
72
- // GETTERS / SETTERS (delegators)
73
- // ═══════════════════════════════════════════════════════════
74
- getId() { return this.id; }
75
- getClass() { return this.opts.class ?? ''; }
76
- getStyle() { return this.opts.style ?? ''; }
77
- getPadding() { return this.opts.padding ?? ''; }
78
- getRadius() { return this.opts.radius ?? ''; }
79
- getMargin() { return this.opts.margin ?? ''; }
80
- getBorder() { return this.opts.border ?? ''; }
81
- getOverflow() { return this.opts.overflow ?? ''; }
82
- getTarget() { return this.opts.target ?? ''; }
83
- getValue() { return this._element.textContent ?? ''; }
84
- setId(val) { return this.id_set(val); }
85
- setClass(val) { return this.class(val); }
86
- setStyle(val) { return this.style(val); }
87
- setPadding(val) { return this.padding(val); }
88
- setRadius(val) { return this.radius(val); }
89
- setMargin(val) { return this.margin(val); }
90
- setBorder(val) { return this.border(val); }
91
- setOverflow(val) { return this.overflow(val); }
92
- setTarget(val) { return this.target_set(val); }
93
- setValue(val) { this._element.textContent = val; return this; }
94
- setInnerHTML(val) { this._element.innerHTML = val; return this; }
95
- // ═══════════════════════════════════════════════════════════
96
- // TREE / RENDER
97
- // ═══════════════════════════════════════════════════════════
98
- append(child) {
99
- const node = child instanceof C ? child.element : child;
100
- this._element.appendChild(node);
101
- return this;
102
- }
103
- render(target) {
104
- let parent;
105
- if (target instanceof C) {
106
- parent = target.element;
107
- }
108
- else if (typeof target === 'string') {
109
- parent = document.getElementById(target) || document.querySelector(target);
110
- }
111
- else {
112
- parent = target || document.getElementById('app');
113
- }
114
- parent?.appendChild(this._element);
115
- return this;
116
- }
117
- }
118
- // ═══════════════════════════════════════════════════════════
119
- // FACTORIES
120
- // ═══════════════════════════════════════════════════════════
121
- export function c(width, height, padding, radius, margin, border, overflow, options) {
122
- const inst = new C(width, height, padding, radius, margin, border, overflow, options);
123
- return inst;
124
- }
125
- export { C, c as container };
126
- export default c;
127
- //# sourceMappingURL=c.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"c.js","sourceRoot":"","sources":["../../lib/primitives/c.ts"],"names":[],"mappings":"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"}