juxscript 1.1.393 → 1.1.395
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +9 -9
- package/dist/components/barChart.d.ts +103 -0
- package/dist/components/barChart.d.ts.map +1 -0
- package/dist/components/barChart.js +520 -0
- package/dist/components/barChart.js.map +1 -0
- package/dist/components/c.d.ts.map +1 -1
- package/dist/components/c.js +16 -12
- package/dist/components/c.js.map +1 -1
- package/dist/components/g.d.ts +21 -0
- package/dist/components/g.d.ts.map +1 -0
- package/dist/components/g.js +52 -0
- package/dist/components/g.js.map +1 -0
- package/dist/components/gateway.d.ts +97 -0
- package/dist/components/gateway.d.ts.map +1 -0
- package/dist/components/gateway.js +188 -0
- package/dist/components/gateway.js.map +1 -0
- package/dist/components/lineChart.d.ts +87 -0
- package/dist/components/lineChart.d.ts.map +1 -0
- package/dist/components/lineChart.js +330 -0
- package/dist/components/lineChart.js.map +1 -0
- package/dist/components/pieChart.d.ts +86 -0
- package/dist/components/pieChart.d.ts.map +1 -0
- package/dist/components/pieChart.js +300 -0
- package/dist/components/pieChart.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/primitives/button.d.ts +53 -0
- package/dist/primitives/button.d.ts.map +1 -0
- package/dist/primitives/button.js +170 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/c.d.ts +53 -0
- package/dist/primitives/c.d.ts.map +1 -0
- package/dist/primitives/c.js +127 -0
- package/dist/primitives/c.js.map +1 -0
- package/dist/primitives/checkbox.d.ts +92 -0
- package/dist/primitives/checkbox.d.ts.map +1 -0
- package/dist/primitives/checkbox.js +217 -0
- package/dist/primitives/checkbox.js.map +1 -0
- package/dist/primitives/data.d.ts +58 -0
- package/dist/primitives/data.d.ts.map +1 -0
- package/dist/primitives/data.js +131 -0
- package/dist/primitives/data.js.map +1 -0
- package/dist/primitives/grid.d.ts +58 -0
- package/dist/primitives/grid.d.ts.map +1 -0
- package/dist/primitives/grid.js +128 -0
- package/dist/primitives/grid.js.map +1 -0
- package/dist/primitives/include.d.ts +86 -0
- package/dist/primitives/include.d.ts.map +1 -0
- package/dist/primitives/include.js +239 -0
- package/dist/primitives/include.js.map +1 -0
- package/dist/primitives/indexDb.d.ts +80 -0
- package/dist/primitives/indexDb.d.ts.map +1 -0
- package/dist/primitives/indexDb.js +253 -0
- package/dist/primitives/indexDb.js.map +1 -0
- package/dist/primitives/input.d.ts +88 -0
- package/dist/primitives/input.d.ts.map +1 -0
- package/dist/primitives/input.js +216 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/link.d.ts +51 -0
- package/dist/primitives/link.d.ts.map +1 -0
- package/dist/primitives/link.js +178 -0
- package/dist/primitives/link.js.map +1 -0
- package/dist/primitives/list.d.ts +66 -0
- package/dist/primitives/list.d.ts.map +1 -0
- package/dist/primitives/list.js +233 -0
- package/dist/primitives/list.js.map +1 -0
- package/dist/primitives/nav.d.ts +64 -0
- package/dist/primitives/nav.d.ts.map +1 -0
- package/dist/primitives/nav.js +236 -0
- package/dist/primitives/nav.js.map +1 -0
- package/dist/primitives/radio.d.ts +58 -0
- package/dist/primitives/radio.d.ts.map +1 -0
- package/dist/primitives/radio.js +135 -0
- package/dist/primitives/radio.js.map +1 -0
- package/dist/primitives/routes.d.ts +15 -0
- package/dist/primitives/routes.d.ts.map +1 -0
- package/dist/primitives/routes.js +34 -0
- package/dist/primitives/routes.js.map +1 -0
- package/dist/primitives/select.d.ts +67 -0
- package/dist/primitives/select.d.ts.map +1 -0
- package/dist/primitives/select.js +160 -0
- package/dist/primitives/select.js.map +1 -0
- package/dist/primitives/style.d.ts +27 -0
- package/dist/primitives/style.d.ts.map +1 -0
- package/dist/primitives/style.js +53 -0
- package/dist/primitives/style.js.map +1 -0
- package/dist/primitives/table.d.ts +83 -0
- package/dist/primitives/table.d.ts.map +1 -0
- package/dist/primitives/table.js +264 -0
- package/dist/primitives/table.js.map +1 -0
- package/dist/primitives/tabs.d.ts +75 -0
- package/dist/primitives/tabs.d.ts.map +1 -0
- package/dist/primitives/tabs.js +263 -0
- package/dist/primitives/tabs.js.map +1 -0
- package/dist/primitives/tag.d.ts +92 -0
- package/dist/primitives/tag.d.ts.map +1 -0
- package/dist/primitives/tag.js +151 -0
- package/dist/primitives/tag.js.map +1 -0
- package/dist/services/db.d.ts +44 -0
- package/dist/services/db.d.ts.map +1 -0
- package/dist/services/db.js +59 -0
- package/dist/services/db.js.map +1 -0
- package/dist/services/email.d.ts +50 -0
- package/dist/services/email.d.ts.map +1 -0
- package/dist/services/email.js +60 -0
- package/dist/services/email.js.map +1 -0
- package/dist/services/s3.d.ts +61 -0
- package/dist/services/s3.d.ts.map +1 -0
- package/dist/services/s3.js +79 -0
- package/dist/services/s3.js.map +1 -0
- package/juxconfig.example.js +7 -0
- package/machinery/build3.js +2 -1
- package/machinery/compiler4.js +2 -0
- package/machinery/serve.js +6 -26
- package/machinery/validate-jux.js +4 -0
- package/package.json +2 -2
- /package/{presets → components}/calendar/calendar-usage.jux +0 -0
- /package/{presets → components}/calendar/calendar.jux +0 -0
- /package/{presets → components}/sidebar/index.jux +0 -0
- /package/{presets → components}/sidebar/usage.jux +0 -0
package/dist/components/c.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c.js","sourceRoot":"","sources":["../../lib/components/c.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"c.js","sourceRoot":"","sources":["../../lib/components/c.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { C } from "./c.js";
|
|
2
|
+
type GChild = C | HTMLElement | {
|
|
3
|
+
element: HTMLElement;
|
|
4
|
+
};
|
|
5
|
+
declare class G {
|
|
6
|
+
private _children;
|
|
7
|
+
constructor(children: GChild[]);
|
|
8
|
+
private _resolveNode;
|
|
9
|
+
private _resolveParent;
|
|
10
|
+
render(target?: string | HTMLElement | C | {
|
|
11
|
+
element: HTMLElement;
|
|
12
|
+
}): this;
|
|
13
|
+
into(target?: string | HTMLElement | C | {
|
|
14
|
+
element: HTMLElement;
|
|
15
|
+
}): this;
|
|
16
|
+
get children(): GChild[];
|
|
17
|
+
}
|
|
18
|
+
export declare function g(children: GChild[]): G;
|
|
19
|
+
export { G, GChild, g as group };
|
|
20
|
+
export default g;
|
|
21
|
+
//# sourceMappingURL=g.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"g.d.ts","sourceRoot":"","sources":["../../lib/components/g.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,KAAK,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAEzD,cAAM,CAAC;IACH,OAAO,CAAC,SAAS,CAAW;gBAEhB,QAAQ,EAAE,MAAM,EAAE;IAI9B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,cAAc;IAStB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI;IAS1E,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI;IAIxE,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;CACJ;AAMD,wBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAEvC;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;AACjC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { C } from "./c.js";
|
|
2
|
+
class G {
|
|
3
|
+
constructor(children) {
|
|
4
|
+
this._children = children;
|
|
5
|
+
}
|
|
6
|
+
_resolveNode(child) {
|
|
7
|
+
if (child instanceof C)
|
|
8
|
+
return child.element;
|
|
9
|
+
if (child instanceof HTMLElement)
|
|
10
|
+
return child;
|
|
11
|
+
if (child && typeof child === 'object' && 'element' in child)
|
|
12
|
+
return child.element;
|
|
13
|
+
throw new Error('G: child is not a valid node');
|
|
14
|
+
}
|
|
15
|
+
_resolveParent(target) {
|
|
16
|
+
if (!target)
|
|
17
|
+
return document.getElementById('app');
|
|
18
|
+
if (target instanceof C)
|
|
19
|
+
return target.element;
|
|
20
|
+
if (target instanceof HTMLElement)
|
|
21
|
+
return target;
|
|
22
|
+
if (typeof target === 'string')
|
|
23
|
+
return document.getElementById(target) || document.querySelector(target);
|
|
24
|
+
if (typeof target === 'object' && 'element' in target)
|
|
25
|
+
return target.element;
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
render(target) {
|
|
29
|
+
const parent = this._resolveParent(target);
|
|
30
|
+
if (!parent)
|
|
31
|
+
return this;
|
|
32
|
+
for (const child of this._children) {
|
|
33
|
+
parent.appendChild(this._resolveNode(child));
|
|
34
|
+
}
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
into(target) {
|
|
38
|
+
return this.render(target);
|
|
39
|
+
}
|
|
40
|
+
get children() {
|
|
41
|
+
return this._children;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// ═══════════════════════════════════════════════════════════
|
|
45
|
+
// FACTORY
|
|
46
|
+
// ═══════════════════════════════════════════════════════════
|
|
47
|
+
export function g(children) {
|
|
48
|
+
return new G(children);
|
|
49
|
+
}
|
|
50
|
+
export { G, g as group };
|
|
51
|
+
export default g;
|
|
52
|
+
//# sourceMappingURL=g.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"g.js","sourceRoot":"","sources":["../../lib/components/g.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,MAAM,CAAC;IAGH,YAAY,QAAkB;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAEO,YAAY,CAAC,KAAa;QAC9B,IAAI,KAAK,YAAY,CAAC;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QAC7C,IAAI,KAAK,YAAY,WAAW;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAEO,cAAc,CAAC,MAA4D;QAC/E,IAAI,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,MAAM,YAAY,CAAC;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;QAC/C,IAAI,MAAM,YAAY,WAAW;YAAE,OAAO,MAAM,CAAC;QACjD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAgB,CAAC;QACxH,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;QAC7E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAA4D;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,MAA4D;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ;AAED,8DAA8D;AAC9D,UAAU;AACV,8DAA8D;AAE9D,MAAM,UAAU,CAAC,CAAC,QAAkB;IAChC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,OAAO,EAAE,CAAC,EAAU,CAAC,IAAI,KAAK,EAAE,CAAC;AACjC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export interface GatewayOptions {
|
|
2
|
+
serverUrl?: string;
|
|
3
|
+
storageKey?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Authenticated HTTP client bound to a specific downstream service.
|
|
7
|
+
* Obtained via ApiGateway.dbClient(), .s3Client(), or .emailClient().
|
|
8
|
+
*/
|
|
9
|
+
export declare class ServiceClient {
|
|
10
|
+
private _gateway;
|
|
11
|
+
private _service;
|
|
12
|
+
constructor(gateway: ApiGateway, service: string);
|
|
13
|
+
/** Make an authenticated request to the service proxy. */
|
|
14
|
+
fetch(path: string, body?: any, method?: string): Promise<any>;
|
|
15
|
+
query(sql: string, params?: any[]): Promise<any>;
|
|
16
|
+
execute(sql: string, params?: any[]): Promise<any>;
|
|
17
|
+
upload(key: string, data: any, contentType?: string): Promise<any>;
|
|
18
|
+
download(key: string): Promise<any>;
|
|
19
|
+
list(prefix?: string): Promise<any>;
|
|
20
|
+
send(to: string, subject: string, body: string, html?: string): Promise<any>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Client-side API gateway that handles JWT auth and proxies calls
|
|
24
|
+
* to jux-server downstream services (db, storage, email).
|
|
25
|
+
*
|
|
26
|
+
* Tokens are persisted in localStorage so they survive page reloads.
|
|
27
|
+
*/
|
|
28
|
+
export declare class ApiGateway {
|
|
29
|
+
id: string;
|
|
30
|
+
options: GatewayOptions;
|
|
31
|
+
private _accessToken;
|
|
32
|
+
private _refreshToken;
|
|
33
|
+
private _tenantId;
|
|
34
|
+
constructor(id: string, options?: GatewayOptions);
|
|
35
|
+
serverUrl(value: string): this;
|
|
36
|
+
storageKey(value: string): this;
|
|
37
|
+
private _key;
|
|
38
|
+
private _loadTokens;
|
|
39
|
+
private _saveTokens;
|
|
40
|
+
private _clearTokens;
|
|
41
|
+
getAccessToken(): string | null;
|
|
42
|
+
getRefreshToken(): string | null;
|
|
43
|
+
getTenantId(): string | null;
|
|
44
|
+
getValue(): boolean;
|
|
45
|
+
isAuthenticated(): boolean;
|
|
46
|
+
setServerUrl(value: string): void;
|
|
47
|
+
getServerUrl(): string | undefined;
|
|
48
|
+
setStorageKey(value: string): void;
|
|
49
|
+
getStorageKey(): string | undefined;
|
|
50
|
+
_request(path: string, method?: string, body?: any): Promise<any>;
|
|
51
|
+
/** Register a new tenant account. */
|
|
52
|
+
register(email: string, password: string, plan?: string): Promise<any>;
|
|
53
|
+
/**
|
|
54
|
+
* Log in and persist the returned JWT tokens to localStorage.
|
|
55
|
+
* After a successful login, `isAuthenticated()` returns true.
|
|
56
|
+
*/
|
|
57
|
+
login(email: string, password: string): Promise<any>;
|
|
58
|
+
/** Clear stored tokens and notify pageState listeners. */
|
|
59
|
+
logout(): void;
|
|
60
|
+
/** Returns an authenticated client for the db-service. */
|
|
61
|
+
dbClient(): ServiceClient;
|
|
62
|
+
/** Returns an authenticated client for the storage-service (S3). */
|
|
63
|
+
s3Client(): ServiceClient;
|
|
64
|
+
/** Returns an authenticated client for the email-service (SES). */
|
|
65
|
+
emailClient(): ServiceClient;
|
|
66
|
+
/** Returns the reactive pageState proxy for this component. */
|
|
67
|
+
get state(): any;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create an API gateway client that handles JWT auth, browser-side token
|
|
71
|
+
* storage, and proxied calls to jux-server downstream services.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* // Configure once (e.g. in a boot file)
|
|
75
|
+
* const gw = await jux.gateway('auth', { serverUrl: 'https://api.example.com' });
|
|
76
|
+
*
|
|
77
|
+
* // Register
|
|
78
|
+
* await gw.register('alice@example.com', 'p4ssw0rd');
|
|
79
|
+
*
|
|
80
|
+
* // Login (tokens saved to localStorage automatically)
|
|
81
|
+
* await gw.login('alice@example.com', 'p4ssw0rd');
|
|
82
|
+
*
|
|
83
|
+
* // Call downstream services
|
|
84
|
+
* const db = gw.dbClient();
|
|
85
|
+
* const rows = await db.query('SELECT * FROM users');
|
|
86
|
+
*
|
|
87
|
+
* const s3 = gw.s3Client();
|
|
88
|
+
* await s3.upload('avatar.jpg', fileBlob, 'image/jpeg');
|
|
89
|
+
*
|
|
90
|
+
* const email = gw.emailClient();
|
|
91
|
+
* await email.send('bob@example.com', 'Hello', 'World');
|
|
92
|
+
*
|
|
93
|
+
* // Logout (tokens cleared from localStorage)
|
|
94
|
+
* gw.logout();
|
|
95
|
+
*/
|
|
96
|
+
export declare function gateway(id: string, options?: GatewayOptions): Promise<ApiGateway>;
|
|
97
|
+
//# sourceMappingURL=gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../lib/components/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import generateId from '../utils/idgen.js';
|
|
2
|
+
import { pageState } from '../state/pageState.js';
|
|
3
|
+
/**
|
|
4
|
+
* Authenticated HTTP client bound to a specific downstream service.
|
|
5
|
+
* Obtained via ApiGateway.dbClient(), .s3Client(), or .emailClient().
|
|
6
|
+
*/
|
|
7
|
+
export class ServiceClient {
|
|
8
|
+
constructor(gateway, service) {
|
|
9
|
+
this._gateway = gateway;
|
|
10
|
+
this._service = service;
|
|
11
|
+
}
|
|
12
|
+
/** Make an authenticated request to the service proxy. */
|
|
13
|
+
async fetch(path, body, method = body !== undefined ? 'POST' : 'GET') {
|
|
14
|
+
return this._gateway._request(`/proxy/${this._service}${path}`, method, body);
|
|
15
|
+
}
|
|
16
|
+
// ── db-service helpers ──
|
|
17
|
+
async query(sql, params = []) {
|
|
18
|
+
return this.fetch('/', { action: 'query', sql, params }, 'POST');
|
|
19
|
+
}
|
|
20
|
+
async execute(sql, params = []) {
|
|
21
|
+
return this.fetch('/', { action: 'execute', sql, params }, 'POST');
|
|
22
|
+
}
|
|
23
|
+
// ── storage-service helpers ──
|
|
24
|
+
async upload(key, data, contentType = 'application/octet-stream') {
|
|
25
|
+
return this.fetch(`/${key}`, { data, contentType }, 'PUT');
|
|
26
|
+
}
|
|
27
|
+
async download(key) {
|
|
28
|
+
return this.fetch(`/${key}`, undefined, 'GET');
|
|
29
|
+
}
|
|
30
|
+
async list(prefix = '') {
|
|
31
|
+
return this.fetch(`/?prefix=${encodeURIComponent(prefix)}`, undefined, 'GET');
|
|
32
|
+
}
|
|
33
|
+
// ── email-service helpers ──
|
|
34
|
+
async send(to, subject, body, html) {
|
|
35
|
+
return this.fetch('/', { to, subject, body, html }, 'POST');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Client-side API gateway that handles JWT auth and proxies calls
|
|
40
|
+
* to jux-server downstream services (db, storage, email).
|
|
41
|
+
*
|
|
42
|
+
* Tokens are persisted in localStorage so they survive page reloads.
|
|
43
|
+
*/
|
|
44
|
+
export class ApiGateway {
|
|
45
|
+
constructor(id, options = {}) {
|
|
46
|
+
this._accessToken = null;
|
|
47
|
+
this._refreshToken = null;
|
|
48
|
+
this._tenantId = null;
|
|
49
|
+
this.id = id || generateId();
|
|
50
|
+
// Fall back to juxConfig.proxy.url when no serverUrl is supplied
|
|
51
|
+
const configUrl = (typeof window !== 'undefined' && window.juxConfig?.proxy?.url) || '';
|
|
52
|
+
this.options = { storageKey: 'jux_auth', serverUrl: configUrl, ...options };
|
|
53
|
+
this._loadTokens();
|
|
54
|
+
}
|
|
55
|
+
// ── Fluent setters ──
|
|
56
|
+
serverUrl(value) { this.options.serverUrl = value; return this; }
|
|
57
|
+
storageKey(value) { this.options.storageKey = value; return this; }
|
|
58
|
+
// ── Token persistence ──
|
|
59
|
+
_key(suffix) {
|
|
60
|
+
return `${this.options.storageKey}_${suffix}`;
|
|
61
|
+
}
|
|
62
|
+
_loadTokens() {
|
|
63
|
+
if (typeof localStorage === 'undefined')
|
|
64
|
+
return;
|
|
65
|
+
this._accessToken = localStorage.getItem(this._key('access'));
|
|
66
|
+
this._refreshToken = localStorage.getItem(this._key('refresh'));
|
|
67
|
+
this._tenantId = localStorage.getItem(this._key('tenant'));
|
|
68
|
+
}
|
|
69
|
+
_saveTokens(accessToken, refreshToken, tenantId) {
|
|
70
|
+
this._accessToken = accessToken;
|
|
71
|
+
if (typeof localStorage === 'undefined')
|
|
72
|
+
return;
|
|
73
|
+
localStorage.setItem(this._key('access'), accessToken);
|
|
74
|
+
if (refreshToken) {
|
|
75
|
+
this._refreshToken = refreshToken;
|
|
76
|
+
localStorage.setItem(this._key('refresh'), refreshToken);
|
|
77
|
+
}
|
|
78
|
+
if (tenantId) {
|
|
79
|
+
this._tenantId = tenantId;
|
|
80
|
+
localStorage.setItem(this._key('tenant'), tenantId);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_clearTokens() {
|
|
84
|
+
this._accessToken = null;
|
|
85
|
+
this._refreshToken = null;
|
|
86
|
+
this._tenantId = null;
|
|
87
|
+
if (typeof localStorage === 'undefined')
|
|
88
|
+
return;
|
|
89
|
+
localStorage.removeItem(this._key('access'));
|
|
90
|
+
localStorage.removeItem(this._key('refresh'));
|
|
91
|
+
localStorage.removeItem(this._key('tenant'));
|
|
92
|
+
}
|
|
93
|
+
// ── Getters ──
|
|
94
|
+
getAccessToken() { return this._accessToken; }
|
|
95
|
+
getRefreshToken() { return this._refreshToken; }
|
|
96
|
+
getTenantId() { return this._tenantId; }
|
|
97
|
+
getValue() { return this.isAuthenticated(); }
|
|
98
|
+
isAuthenticated() { return !!this._accessToken; }
|
|
99
|
+
// ── Setters (for pageState delegation) ──
|
|
100
|
+
setServerUrl(value) { this.options.serverUrl = value; }
|
|
101
|
+
getServerUrl() { return this.options.serverUrl; }
|
|
102
|
+
setStorageKey(value) { this.options.storageKey = value; }
|
|
103
|
+
getStorageKey() { return this.options.storageKey; }
|
|
104
|
+
// ── HTTP helper (used by ServiceClient) ──
|
|
105
|
+
async _request(path, method = 'GET', body) {
|
|
106
|
+
const base = this.options.serverUrl || '';
|
|
107
|
+
const url = `${base}${path}`;
|
|
108
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
109
|
+
if (this._accessToken) {
|
|
110
|
+
headers['Authorization'] = `Bearer ${this._accessToken}`;
|
|
111
|
+
}
|
|
112
|
+
const init = { method, headers };
|
|
113
|
+
if (body !== undefined) {
|
|
114
|
+
init.body = JSON.stringify(body);
|
|
115
|
+
}
|
|
116
|
+
const res = await globalThis.fetch(url, init);
|
|
117
|
+
const ct = res.headers.get('content-type') || '';
|
|
118
|
+
const data = ct.includes('application/json') ? await res.json() : await res.text();
|
|
119
|
+
if (!res.ok) {
|
|
120
|
+
throw new Error(data?.message || data?.error || `HTTP ${res.status}`);
|
|
121
|
+
}
|
|
122
|
+
return data;
|
|
123
|
+
}
|
|
124
|
+
// ── Auth methods ──
|
|
125
|
+
/** Register a new tenant account. */
|
|
126
|
+
async register(email, password, plan = 'free') {
|
|
127
|
+
return this._request('/auth/register', 'POST', { email, password, plan });
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Log in and persist the returned JWT tokens to localStorage.
|
|
131
|
+
* After a successful login, `isAuthenticated()` returns true.
|
|
132
|
+
*/
|
|
133
|
+
async login(email, password) {
|
|
134
|
+
const data = await this._request('/auth/login', 'POST', { email, password });
|
|
135
|
+
if (data.accessToken) {
|
|
136
|
+
this._saveTokens(data.accessToken, data.refreshToken, data.tenantId);
|
|
137
|
+
pageState.__notify(`${this.id}.authenticated`);
|
|
138
|
+
}
|
|
139
|
+
return data;
|
|
140
|
+
}
|
|
141
|
+
/** Clear stored tokens and notify pageState listeners. */
|
|
142
|
+
logout() {
|
|
143
|
+
this._clearTokens();
|
|
144
|
+
pageState.__notify(`${this.id}.authenticated`);
|
|
145
|
+
}
|
|
146
|
+
// ── Service client factories ──
|
|
147
|
+
/** Returns an authenticated client for the db-service. */
|
|
148
|
+
dbClient() { return new ServiceClient(this, 'db'); }
|
|
149
|
+
/** Returns an authenticated client for the storage-service (S3). */
|
|
150
|
+
s3Client() { return new ServiceClient(this, 'storage'); }
|
|
151
|
+
/** Returns an authenticated client for the email-service (SES). */
|
|
152
|
+
emailClient() { return new ServiceClient(this, 'email'); }
|
|
153
|
+
/** Returns the reactive pageState proxy for this component. */
|
|
154
|
+
get state() { return pageState[this.id]; }
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create an API gateway client that handles JWT auth, browser-side token
|
|
158
|
+
* storage, and proxied calls to jux-server downstream services.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* // Configure once (e.g. in a boot file)
|
|
162
|
+
* const gw = await jux.gateway('auth', { serverUrl: 'https://api.example.com' });
|
|
163
|
+
*
|
|
164
|
+
* // Register
|
|
165
|
+
* await gw.register('alice@example.com', 'p4ssw0rd');
|
|
166
|
+
*
|
|
167
|
+
* // Login (tokens saved to localStorage automatically)
|
|
168
|
+
* await gw.login('alice@example.com', 'p4ssw0rd');
|
|
169
|
+
*
|
|
170
|
+
* // Call downstream services
|
|
171
|
+
* const db = gw.dbClient();
|
|
172
|
+
* const rows = await db.query('SELECT * FROM users');
|
|
173
|
+
*
|
|
174
|
+
* const s3 = gw.s3Client();
|
|
175
|
+
* await s3.upload('avatar.jpg', fileBlob, 'image/jpeg');
|
|
176
|
+
*
|
|
177
|
+
* const email = gw.emailClient();
|
|
178
|
+
* await email.send('bob@example.com', 'Hello', 'World');
|
|
179
|
+
*
|
|
180
|
+
* // Logout (tokens cleared from localStorage)
|
|
181
|
+
* gw.logout();
|
|
182
|
+
*/
|
|
183
|
+
export async function gateway(id, options = {}) {
|
|
184
|
+
const gw = new ApiGateway(id, options);
|
|
185
|
+
pageState.__register(gw);
|
|
186
|
+
return gw;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../lib/components/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAOlD;;;GAGG;AACH,MAAM,OAAO,aAAa;IAItB,YAAY,OAAmB,EAAE,OAAe;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,IAAU,EAAE,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;QAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,2BAA2B;IAE3B,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,SAAgB,EAAE;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,SAAgB,EAAE;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,gCAAgC;IAEhC,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,IAAS,EAAE,WAAW,GAAG,0BAA0B;QACzE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClF,CAAC;IAED,8BAA8B;IAE9B,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,OAAe,EAAE,IAAY,EAAE,IAAa;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;CACJ;AAED;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IAOnB,YAAY,EAAU,EAAE,UAA0B,EAAE;QAJ5C,iBAAY,GAAkB,IAAI,CAAC;QACnC,kBAAa,GAAkB,IAAI,CAAC;QACpC,cAAS,GAAkB,IAAI,CAAC;QAGpC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7B,iEAAiE;QACjE,MAAM,SAAS,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjG,IAAI,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;QAC5E,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,uBAAuB;IAEvB,SAAS,CAAC,KAAa,IAAU,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/E,UAAU,CAAC,KAAa,IAAU,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAEjF,0BAA0B;IAElB,IAAI,CAAC,MAAc;QACvB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;IAClD,CAAC;IAEO,WAAW;QACf,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAChD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,YAAqB,EAAE,QAAiB;QAC7E,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAChD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAEO,YAAY;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAChD,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB;IAEhB,cAAc,KAAoB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7D,eAAe,KAAoB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/D,WAAW,KAAoB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,QAAQ,KAAc,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IACtD,eAAe,KAAc,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1D,2CAA2C;IAE3C,YAAY,CAAC,KAAa,IAAU,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IACrE,YAAY,KAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,aAAa,CAAC,KAAa,IAAU,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;IACvE,aAAa,KAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvE,4CAA4C;IAE5C,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK,EAAE,IAAU;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;QAC7B,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACnF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAE,IAAY,EAAE,OAAO,IAAK,IAAY,EAAE,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qBAAqB;IAErB,qCAAqC;IACrC,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAI,GAAG,MAAM;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAgB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0DAA0D;IAC1D,MAAM;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED,iCAAiC;IAEjC,0DAA0D;IAC1D,QAAQ,KAAoB,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnE,oEAAoE;IACpE,QAAQ,KAAoB,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAExE,mEAAmE;IACnE,WAAW,KAAoB,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzE,+DAA+D;IAC/D,IAAI,KAAK,KAAU,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAU,EAAE,UAA0B,EAAE;IAClE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
interface LineDataItem {
|
|
2
|
+
x: number;
|
|
3
|
+
label?: string;
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
interface LineClickDetail {
|
|
7
|
+
chartId: string;
|
|
8
|
+
index: number;
|
|
9
|
+
label: string;
|
|
10
|
+
value: number;
|
|
11
|
+
item: LineDataItem;
|
|
12
|
+
}
|
|
13
|
+
interface LineChartOptions {
|
|
14
|
+
title?: string;
|
|
15
|
+
subtitle?: string;
|
|
16
|
+
colors?: string | string[];
|
|
17
|
+
aspectRatio?: string | number;
|
|
18
|
+
showValues?: boolean;
|
|
19
|
+
showDots?: boolean;
|
|
20
|
+
showGrid?: boolean;
|
|
21
|
+
smooth?: boolean;
|
|
22
|
+
filled?: boolean;
|
|
23
|
+
lineWidth?: number;
|
|
24
|
+
dotRadius?: number;
|
|
25
|
+
ticks?: number;
|
|
26
|
+
animate?: boolean;
|
|
27
|
+
responsive?: boolean;
|
|
28
|
+
maintainAspectRatio?: boolean;
|
|
29
|
+
width?: number;
|
|
30
|
+
class?: string;
|
|
31
|
+
style?: string;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
content?: string;
|
|
34
|
+
onClick?: (event: LineClickDetail) => void;
|
|
35
|
+
}
|
|
36
|
+
declare class LineChart {
|
|
37
|
+
id: string;
|
|
38
|
+
private _values;
|
|
39
|
+
private _opts;
|
|
40
|
+
private _palette;
|
|
41
|
+
private _wrapperEl;
|
|
42
|
+
private _stateEl;
|
|
43
|
+
private _resizeObserver;
|
|
44
|
+
private _lastClickDetail;
|
|
45
|
+
private _onChange;
|
|
46
|
+
private _listeners;
|
|
47
|
+
constructor(id: string, values: LineDataItem[], options?: LineChartOptions);
|
|
48
|
+
title(val: string): this;
|
|
49
|
+
subtitle(val: string): this;
|
|
50
|
+
content(val: string): this;
|
|
51
|
+
disabled(val: boolean): this;
|
|
52
|
+
style(val: string): this;
|
|
53
|
+
class(val: string): this;
|
|
54
|
+
getValue(): LineClickDetail | null;
|
|
55
|
+
setValue(val: any): this;
|
|
56
|
+
getElement(): HTMLButtonElement;
|
|
57
|
+
setContent(val: string): this;
|
|
58
|
+
getTitle(): string;
|
|
59
|
+
getSubtitle(): string;
|
|
60
|
+
getContent(): string;
|
|
61
|
+
getDisabled(): boolean;
|
|
62
|
+
getClass(): string;
|
|
63
|
+
getStyle(): string;
|
|
64
|
+
setTitle(val: string): this;
|
|
65
|
+
setSubtitle(val: string): this;
|
|
66
|
+
setDisabled(val: boolean): this;
|
|
67
|
+
setClass(val: string): this;
|
|
68
|
+
setStyle(val: string): this;
|
|
69
|
+
onChange(fn: (value: any) => void): this;
|
|
70
|
+
get state(): any;
|
|
71
|
+
get element(): HTMLDivElement;
|
|
72
|
+
private _handleDotClick;
|
|
73
|
+
private _buildChart;
|
|
74
|
+
render(target?: string | HTMLElement | {
|
|
75
|
+
element: HTMLElement;
|
|
76
|
+
}): this;
|
|
77
|
+
into(target?: string | HTMLElement | {
|
|
78
|
+
element: HTMLElement;
|
|
79
|
+
}): this;
|
|
80
|
+
on(event: string, fn: Function): this;
|
|
81
|
+
off(event: string, fn: Function): this;
|
|
82
|
+
destroy(): void;
|
|
83
|
+
}
|
|
84
|
+
export declare function lineChart(id: string, values: LineDataItem[], options?: LineChartOptions): LineChart;
|
|
85
|
+
export { LineChart, LineChartOptions, LineDataItem, LineClickDetail };
|
|
86
|
+
export default lineChart;
|
|
87
|
+
//# sourceMappingURL=lineChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineChart.d.ts","sourceRoot":"","sources":["../../lib/components/lineChart.ts"],"names":[],"mappings":"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"}
|