@gardenerim/angularjs 1.0.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.
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/README.md +33 -0
- package/dist/adapters.d.ts +3 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +3 -0
- package/dist/adapters.js.map +1 -0
- package/dist/ai.css +1 -0
- package/dist/catalog.json +9022 -0
- package/dist/component-css/ai-compositions.css +1 -0
- package/dist/component-css/ai-extended.css +1 -0
- package/dist/component-css/ai.css +1 -0
- package/dist/component-css/auth-compositions.css +1 -0
- package/dist/component-css/basic.css +1 -0
- package/dist/component-css/catalog.css +1 -0
- package/dist/component-css/commerce-compositions.css +1 -0
- package/dist/component-css/content-compositions.css +1 -0
- package/dist/component-css/data-compositions.css +1 -0
- package/dist/component-css/data.css +1 -0
- package/dist/component-css/desktop-compositions.css +1 -0
- package/dist/component-css/desktop.css +1 -0
- package/dist/component-css/extended.css +1 -0
- package/dist/component-css/feedback.css +1 -0
- package/dist/component-css/form-compositions.css +1 -0
- package/dist/component-css/forms.css +1 -0
- package/dist/component-css/grid.css +1 -0
- package/dist/component-css/help.css +1 -0
- package/dist/component-css/layouts.css +1 -0
- package/dist/component-css/mobile-compositions.css +1 -0
- package/dist/component-css/navigation-compositions.css +1 -0
- package/dist/component-css/navigation.css +1 -0
- package/dist/component-css/page.css +1 -0
- package/dist/component-css/primitives.css +1 -0
- package/dist/component-css/recipes.css +1 -0
- package/dist/component-css/regions.css +1 -0
- package/dist/component-css/selection-compositions.css +1 -0
- package/dist/component-css/solution-compositions.css +1 -0
- package/dist/components.css +1 -0
- package/dist/core.css +1 -0
- package/dist/directives.d.ts +8 -0
- package/dist/directives.d.ts.map +1 -0
- package/dist/directives.js +185 -0
- package/dist/directives.js.map +1 -0
- package/dist/electron.d.ts +5 -0
- package/dist/electron.d.ts.map +1 -0
- package/dist/electron.js +4 -0
- package/dist/electron.js.map +1 -0
- package/dist/gardener-angularjs.min.js +2 -0
- package/dist/gardener-angularjs.min.js.map +7 -0
- package/dist/gardener-angularjs.performance.json +12 -0
- package/dist/generated/catalog.d.ts +7 -0
- package/dist/generated/catalog.d.ts.map +1 -0
- package/dist/generated/catalog.js +12230 -0
- package/dist/generated/catalog.js.map +1 -0
- package/dist/generated/components.d.ts +512 -0
- package/dist/generated/components.d.ts.map +1 -0
- package/dist/generated/components.js +1017 -0
- package/dist/generated/components.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +4 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +59 -0
- package/dist/module.js.map +1 -0
- package/dist/platform/desktop.css +1 -0
- package/dist/platform/electron.css +1 -0
- package/dist/platform/mobile.css +1 -0
- package/dist/platform/tauri.css +1 -0
- package/dist/platform/web.css +1 -0
- package/dist/services.d.ts +9 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +30 -0
- package/dist/services.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/tauri.d.ts +5 -0
- package/dist/tauri.d.ts.map +1 -0
- package/dist/tauri.js +4 -0
- package/dist/tauri.js.map +1 -0
- package/dist/themes.css +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utilities.css +1 -0
- package/docs/API.md +92 -0
- package/docs/components.md +512 -0
- package/docs/security.md +20 -0
- package/metadata/compatibility.json +2745 -0
- package/metadata/compatibility.schema.json +13 -0
- package/metadata/performance.schema.json +9 -0
- package/metadata/public-api.json +2166 -0
- package/metadata/public-api.schema.json +18 -0
- package/package.json +96 -0
package/dist/module.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createGardenerComponent, gardenerBehaviorDirective, gardenerProviderDirective } from "./directives.js";
|
|
2
|
+
import { componentCatalog } from "./generated/catalog.js";
|
|
3
|
+
import { GardenerRuntimeFactory, GardenerThemeFactory, GardenerToastFactory } from "./services.js";
|
|
4
|
+
export const GARDENER_ANGULARJS_MODULE = "gardener";
|
|
5
|
+
const installed = new WeakMap();
|
|
6
|
+
const componentAliases = new Map(componentCatalog.flatMap((definition) => [
|
|
7
|
+
[definition.name, definition.name],
|
|
8
|
+
[definition.exportName, definition.name],
|
|
9
|
+
[definition.directiveName, definition.name],
|
|
10
|
+
]));
|
|
11
|
+
const selectedComponentNames = (components) => {
|
|
12
|
+
if (!components)
|
|
13
|
+
return null;
|
|
14
|
+
const selected = new Set();
|
|
15
|
+
for (const component of components) {
|
|
16
|
+
const name = componentAliases.get(component);
|
|
17
|
+
if (!name)
|
|
18
|
+
throw new Error(`Unknown Gardener AngularJS component: ${component}`);
|
|
19
|
+
selected.add(name);
|
|
20
|
+
}
|
|
21
|
+
return [...selected].sort();
|
|
22
|
+
};
|
|
23
|
+
const optionSignature = (options, components) => JSON.stringify({
|
|
24
|
+
dependencies: [...(options.dependencies ?? [])],
|
|
25
|
+
components,
|
|
26
|
+
initialize: options.initialize !== false,
|
|
27
|
+
registerProvider: options.registerProvider !== false,
|
|
28
|
+
registerBehaviorDirective: options.registerBehaviorDirective !== false,
|
|
29
|
+
});
|
|
30
|
+
export const createGardenerAngularJS = (angularInstance, options = {}) => {
|
|
31
|
+
const moduleName = options.moduleName || GARDENER_ANGULARJS_MODULE;
|
|
32
|
+
const modules = installed.get(angularInstance) ?? new Map();
|
|
33
|
+
installed.set(angularInstance, modules);
|
|
34
|
+
const selectedNames = selectedComponentNames(options.components);
|
|
35
|
+
const signature = optionSignature(options, selectedNames);
|
|
36
|
+
const existing = modules.get(moduleName);
|
|
37
|
+
if (existing) {
|
|
38
|
+
if (existing.signature !== signature)
|
|
39
|
+
throw new Error(`Gardener AngularJS module ${moduleName} is already installed with different options`);
|
|
40
|
+
return moduleName;
|
|
41
|
+
}
|
|
42
|
+
const module = angularInstance.module(moduleName, [...(options.dependencies ?? [])]);
|
|
43
|
+
module.factory("GardenerRuntime", GardenerRuntimeFactory);
|
|
44
|
+
module.factory("GardenerTheme", GardenerThemeFactory);
|
|
45
|
+
module.factory("GardenerToast", GardenerToastFactory);
|
|
46
|
+
if (options.registerBehaviorDirective !== false)
|
|
47
|
+
module.directive("gGardener", gardenerBehaviorDirective);
|
|
48
|
+
if (options.registerProvider !== false)
|
|
49
|
+
module.directive("gardenerProvider", gardenerProviderDirective);
|
|
50
|
+
const selected = selectedNames ? new Set(selectedNames) : null;
|
|
51
|
+
for (const definition of componentCatalog) {
|
|
52
|
+
if (selected && !selected.has(definition.name))
|
|
53
|
+
continue;
|
|
54
|
+
module.directive(definition.directiveName, createGardenerComponent(definition, options.initialize !== false));
|
|
55
|
+
}
|
|
56
|
+
modules.set(moduleName, { module, signature });
|
|
57
|
+
return moduleName;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/platform/desktop.css";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/platform/electron.css";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/platform/mobile.css";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/platform/tauri.css";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/platform/web.css";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { toast } from "@gardenerim/css/runtime";
|
|
2
|
+
import type { GardenerRuntimeService, GardenerThemeService, GardenerThemeState } from "./types.js";
|
|
3
|
+
export declare const themeAttributes: (state?: GardenerThemeState) => Record<string, string>;
|
|
4
|
+
export declare const GardenerRuntimeFactory: () => GardenerRuntimeService;
|
|
5
|
+
export declare const GardenerThemeFactory: () => GardenerThemeService;
|
|
6
|
+
export declare const GardenerToastFactory: () => {
|
|
7
|
+
show: typeof toast;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErG,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnG,eAAO,MAAM,eAAe,WAAW,kBAAkB,KAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAErF,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,sBAOxC,CAAC;AAEH,eAAO,MAAM,oBAAoB,QAAO,oBAevC,CAAC;AAEF,eAAO,MAAM,oBAAoB;IAAY,IAAI;CAAU,CAAC"}
|
package/dist/services.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Gardener, destroy, emit, getInstance, init, observe, toast } from "@gardenerim/css/runtime";
|
|
2
|
+
import { themeAxes } from "./directives.js";
|
|
3
|
+
export const themeAttributes = (state = {}) => Object.fromEntries(themeAxes.flatMap((axis) => state[axis] == null || state[axis] === "" ? [] : [[`data-g-${axis}`, String(state[axis])]]));
|
|
4
|
+
export const GardenerRuntimeFactory = () => ({
|
|
5
|
+
version: Gardener.version,
|
|
6
|
+
init,
|
|
7
|
+
destroy,
|
|
8
|
+
getInstance: (element, behavior) => behavior ? getInstance(element, behavior) : getInstance(element),
|
|
9
|
+
emit,
|
|
10
|
+
observe,
|
|
11
|
+
});
|
|
12
|
+
export const GardenerThemeFactory = () => {
|
|
13
|
+
const clear = (target) => themeAxes.forEach((axis) => target.removeAttribute(`data-g-${axis}`));
|
|
14
|
+
return {
|
|
15
|
+
axes: themeAxes,
|
|
16
|
+
attributes: themeAttributes,
|
|
17
|
+
apply(target, state = {}) {
|
|
18
|
+
clear(target);
|
|
19
|
+
for (const [name, value] of Object.entries(themeAttributes(state)))
|
|
20
|
+
target.setAttribute(name, value);
|
|
21
|
+
},
|
|
22
|
+
read: (target) => Object.fromEntries(themeAxes.flatMap((axis) => {
|
|
23
|
+
const value = target.getAttribute(`data-g-${axis}`);
|
|
24
|
+
return value == null ? [] : [[axis, value]];
|
|
25
|
+
})),
|
|
26
|
+
clear,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export const GardenerToastFactory = () => ({ show: toast });
|
|
30
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,GAAuB,EAAE,EAA0B,EAAE,CAAC,MAAM,CAAC,WAAW,CAC3G,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACxH,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAA2B,EAAE,CAAC,CAAC;IACnE,OAAO,EAAE,QAAQ,CAAC,OAAO;IACzB,IAAI;IACJ,OAAO;IACP,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;IACpG,IAAI;IACJ,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAyB,EAAE;IAC7D,MAAM,KAAK,GAAG,CAAC,MAAe,EAAQ,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/G,OAAO;QACL,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,eAAe;QAC3B,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE;YACtB,KAAK,CAAC,MAAM,CAAC,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAuB;QACzB,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC"}
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css";
|
package/dist/tauri.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { bindTauriWindowControls, type GardenerTauriBinding, type GardenerTauriBridge } from "@gardenerim/css/tauri";
|
|
2
|
+
export declare const createTauriWindowService: (root?: Document | Element, bridge?: GardenerTauriBridge | null) => GardenerTauriBinding;
|
|
3
|
+
export { bindTauriWindowControls };
|
|
4
|
+
export type { GardenerTauriBinding, GardenerTauriBridge };
|
|
5
|
+
//# sourceMappingURL=tauri.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tauri.d.ts","sourceRoot":"","sources":["../src/tauri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAErH,eAAO,MAAM,wBAAwB,UAAW,QAAQ,GAAG,OAAO,WAAW,mBAAmB,GAAG,IAAI,KAAG,oBACnE,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/tauri.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../src/tauri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAuD,MAAM,uBAAuB,CAAC;AAErH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAyB,EAAE,MAAmC,EAAwB,EAAE,CAC/H,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
package/dist/themes.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/themes.css";
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type angular from "angular";
|
|
2
|
+
import type { GardenerBehaviorInstance as RuntimeBehaviorInstance, GardenerBehaviorName as RuntimeBehaviorName, GardenerEventName as RuntimeEventName } from "@gardenerim/css/runtime";
|
|
3
|
+
import type { GardenerAngularJSComponentExportName, GardenerAngularJSComponentName, GardenerAngularJSDirectiveName } from "./generated/components.js";
|
|
4
|
+
export type GardenerAngularJSStatic = angular.IAngularStatic;
|
|
5
|
+
export type GardenerAngularJSModule = angular.IModule;
|
|
6
|
+
export type GardenerAngularJSDirectiveFactory = angular.IDirectiveFactory<angular.IScope, angular.IAugmentedJQuery, angular.IAttributes, angular.INgModelController>;
|
|
7
|
+
export type GardenerBehaviorName = RuntimeBehaviorName;
|
|
8
|
+
export type GardenerEventName = RuntimeEventName;
|
|
9
|
+
export type GardenerBehaviorInstance = RuntimeBehaviorInstance;
|
|
10
|
+
export type GardenerPlatform = "web" | "mobile" | "desktop" | "tauri" | "electron";
|
|
11
|
+
export type GardenerComponentKind = "css" | "hybrid" | string;
|
|
12
|
+
export type GardenerConfigValue = string | number | boolean | null | undefined;
|
|
13
|
+
export type GardenerThemeState = Partial<Record<GardenerThemeAxis, string>>;
|
|
14
|
+
export type GardenerThemeAxis = "theme" | "mode" | "neutral" | "typography" | "shape" | "density" | "elevation" | "motion" | "platform" | "os";
|
|
15
|
+
export interface GardenerComponentDefinition {
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly exportName: string;
|
|
18
|
+
readonly directiveName: string;
|
|
19
|
+
readonly elementName: string;
|
|
20
|
+
readonly category: string;
|
|
21
|
+
readonly type: GardenerComponentKind;
|
|
22
|
+
readonly selector: string;
|
|
23
|
+
readonly cssSelector?: string;
|
|
24
|
+
readonly className?: string;
|
|
25
|
+
readonly tag: keyof HTMLElementTagNameMap;
|
|
26
|
+
readonly variants: readonly string[];
|
|
27
|
+
readonly states: readonly string[];
|
|
28
|
+
readonly parts: readonly string[];
|
|
29
|
+
readonly behaviors: readonly string[];
|
|
30
|
+
readonly platforms: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
export interface GardenerComponentHandle {
|
|
33
|
+
readonly element: Element;
|
|
34
|
+
getInstance(behavior?: string): GardenerBehaviorInstance | Record<string, GardenerBehaviorInstance> | null;
|
|
35
|
+
refresh(): void;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
}
|
|
38
|
+
export interface GardenerAngularJSOptions {
|
|
39
|
+
moduleName?: string;
|
|
40
|
+
dependencies?: readonly string[];
|
|
41
|
+
components?: readonly (GardenerAngularJSComponentName | GardenerAngularJSComponentExportName | GardenerAngularJSDirectiveName)[];
|
|
42
|
+
initialize?: boolean;
|
|
43
|
+
registerProvider?: boolean;
|
|
44
|
+
registerBehaviorDirective?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface GardenerThemeService {
|
|
47
|
+
readonly axes: readonly GardenerThemeAxis[];
|
|
48
|
+
attributes(state?: GardenerThemeState): Record<string, string>;
|
|
49
|
+
apply(target: Element, state?: GardenerThemeState): void;
|
|
50
|
+
read(target: Element): GardenerThemeState;
|
|
51
|
+
clear(target: Element): void;
|
|
52
|
+
}
|
|
53
|
+
export interface GardenerRuntimeService {
|
|
54
|
+
readonly version: string;
|
|
55
|
+
init(root?: Document | DocumentFragment | Element): unknown;
|
|
56
|
+
destroy(root?: Document | DocumentFragment | Element): void;
|
|
57
|
+
getInstance(element: Element, behavior?: string): GardenerBehaviorInstance | Record<string, GardenerBehaviorInstance> | null;
|
|
58
|
+
emit(element: EventTarget, name: string, detail?: Record<string, unknown>): boolean;
|
|
59
|
+
observe(): void;
|
|
60
|
+
}
|
|
61
|
+
export type GardenerValueChangeLocals = {
|
|
62
|
+
$value: unknown;
|
|
63
|
+
$event: Event;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EACV,wBAAwB,IAAI,uBAAuB,EACnD,oBAAoB,IAAI,mBAAmB,EAC3C,iBAAiB,IAAI,gBAAgB,EACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,oCAAoC,EACpC,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC;AAC7D,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;AACtD,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACrK,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AACjD,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AACnF,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAC/E,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAE/I,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAAC;IAC3G,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,SAAS,CAAC,8BAA8B,GAAG,oCAAoC,GAAG,8BAA8B,CAAC,EAAE,CAAC;IACjI,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,UAAU,CAAC,KAAK,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,kBAAkB,CAAC;IAC1C,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,gBAAgB,GAAG,OAAO,GAAG,IAAI,CAAC;IAC5D,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAAC;IAC7H,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACpF,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,yBAAyB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,CAAA;CAAE,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@gardenerim/css/utilities.css";
|
package/docs/API.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Gardener AngularJS 1.0.0 API
|
|
2
|
+
|
|
3
|
+
> AngularJS 1.x 已结束官方支持。本适配层用于经过验证的 AngularJS 1.8.2–1.8.3 遗留系统,并将 `angular` 保持为外部 peer dependency。应用仍需自行执行 CSP、依赖审计、输入净化与迁移计划;Gardener 不会掩盖或改写 AngularJS 自身的安全边界。完整要求见 [安全基线](./security.md)。
|
|
4
|
+
|
|
5
|
+
## 模块安装
|
|
6
|
+
|
|
7
|
+
`createGardenerAngularJS(angular, options)` 注册并返回 AngularJS 模块名,默认是 `gardener`。包本身不读取 `window.angular`,因此 ESM 导入不会隐式修改全局 AngularJS 注册表。
|
|
8
|
+
|
|
9
|
+
AngularJS npm 包不是原生 ESM;在 Vite 等 ESM 构建中应先执行 `import "angular/angular.js"`,再把 `window.angular` 传给模块工厂。不要依赖不稳定的 `import angular from "angular"` 默认导入。
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
const moduleName = createGardenerAngularJS(angular, {
|
|
13
|
+
moduleName: "gardener",
|
|
14
|
+
dependencies: [],
|
|
15
|
+
components: ["button", "input", "GDialogDirective", "gCard"],
|
|
16
|
+
initialize: true,
|
|
17
|
+
registerProvider: true,
|
|
18
|
+
registerBehaviorDirective: true,
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
同一个 AngularJS 实例、模块名和同一组选项重复安装会返回已有模块,不会重复注册指令;若同名模块使用不同依赖、组件子集或初始化选项再次安装,会明确抛错,避免应用静默运行在错误的部分注册状态。
|
|
23
|
+
|
|
24
|
+
## 506 个组件指令
|
|
25
|
+
|
|
26
|
+
每个 CSS 组件生成三个稳定名称:
|
|
27
|
+
|
|
28
|
+
- ESM 工厂导出,例如 `GButtonDirective`。
|
|
29
|
+
- AngularJS 指令名,例如 `gButton`。
|
|
30
|
+
- HTML 元素名,例如 `g-button`。
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<g-card gardener-variant="interactive">...</g-card>
|
|
34
|
+
<button g-button gardener-variant="primary">保存</button>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
原生语义敏感的组件推荐属性形式,如 `button`、`input`、`form`、`table`、`nav` 和 `aside`。
|
|
38
|
+
|
|
39
|
+
全部公共属性:
|
|
40
|
+
|
|
41
|
+
| 属性 | 作用 |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| `gardener-variant` | 空格或逗号分隔的组件变体 |
|
|
44
|
+
| `gardener-state` | 转换为一个或多个 `is-*` 状态类 |
|
|
45
|
+
| `gardener-config` | AngularJS 表达式对象,映射为 `data-g-*` 配置 |
|
|
46
|
+
| `gardener-initialize` | 是否初始化 Gardener DOM 行为 |
|
|
47
|
+
| `ng-model` | 原生表单或自定义事件的双向值 |
|
|
48
|
+
| `gardener-value-event` | 自定义 `gardener:*` 值事件 |
|
|
49
|
+
| `gardener-value-key` | 从 `CustomEvent.detail` 中取值的键 |
|
|
50
|
+
| `gardener-on-value-change` | 表达式回调,locals 为 `$value`、`$event` |
|
|
51
|
+
|
|
52
|
+
组件元素通过 `element.data("$gardenerHandle")` 暴露 `element`、`getInstance()`、`refresh()` 和 `destroy()`;`refresh()` 会销毁并按当前 `gardener-config` 重新初始化节点子树。组件筛选项如果不是有效组件名、导出名或指令名会直接抛错,避免拼写错误静默漏注册。
|
|
53
|
+
|
|
54
|
+
## 通用指令
|
|
55
|
+
|
|
56
|
+
- `gGardener`(模板写作 `g-gardener="dialog"`):为任意节点声明一个 Gardener 行为并接入 AngularJS 销毁周期。
|
|
57
|
+
- `gardenerProvider`(模板写作 `<gardener-provider>` / `gardener-provider`):应用十轴主题并初始化其子树。
|
|
58
|
+
|
|
59
|
+
主题属性是 `gardener-theme`、`gardener-mode`、`gardener-neutral`、`gardener-typography`、`gardener-shape`、`gardener-density`、`gardener-elevation`、`gardener-motion`、`gardener-platform`、`gardener-os`。默认文档示例使用 Light 与小圆角。
|
|
60
|
+
|
|
61
|
+
AngularJS 归一化后的公共属性名为 `gardenerVariant`、`gardenerState`、`gardenerConfig`、`gardenerInitialize`、`ngModel`、`gardenerValueEvent`、`gardenerValueKey`、`gardenerOnValueChange`。
|
|
62
|
+
|
|
63
|
+
## 服务
|
|
64
|
+
|
|
65
|
+
- `GardenerRuntime`:`init`、`destroy`、`getInstance`、`emit`、`observe`。
|
|
66
|
+
- `GardenerTheme`:`attributes`、`apply`、`read`、`clear`。
|
|
67
|
+
- `GardenerToast`:`show(options)`。
|
|
68
|
+
|
|
69
|
+
## Tauri 与 Electron
|
|
70
|
+
|
|
71
|
+
平台入口彼此隔离:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { createTauriWindowService } from "@gardenerim/angularjs/tauri";
|
|
75
|
+
import { createElectronWindowService } from "@gardenerim/angularjs/electron";
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
两个服务均返回带 `available` 与 `destroy()` 的绑定对象,并复用 Gardener CSS 的安全桥接契约。
|
|
79
|
+
|
|
80
|
+
## 样式与包入口
|
|
81
|
+
|
|
82
|
+
提供完整、core、themes、utilities、components、AI,Web、Mobile、Desktop、Tauri、Electron 五个平台,以及 28 个 `component-css/*` 功能包代理。`component-css/forms` 与 `component-css/forms.css` 均有效。
|
|
83
|
+
|
|
84
|
+
公共 API、Compatibility、Performance 均提供关闭未知字段的 JSON Schema。组件目录可从 `@gardenerim/angularjs/catalog` 或 `catalog.json` 读取。
|
|
85
|
+
|
|
86
|
+
## TypeScript 类型
|
|
87
|
+
|
|
88
|
+
24 个公共类型完整导出:`GardenerAngularJSComponentExportName`、`GardenerAngularJSComponentName`、`GardenerAngularJSDirectiveFactory`、`GardenerAngularJSDirectiveName`、`GardenerAngularJSModule`、`GardenerAngularJSOptions`、`GardenerAngularJSStatic`、`GardenerBehaviorInstance`、`GardenerBehaviorName`、`GardenerComponentDefinition`、`GardenerComponentHandle`、`GardenerComponentKind`、`GardenerConfigValue`、`GardenerElectronBinding`、`GardenerElectronBridge`、`GardenerEventName`、`GardenerPlatform`、`GardenerRuntimeService`、`GardenerTauriBinding`、`GardenerTauriBridge`、`GardenerThemeAxis`、`GardenerThemeService`、`GardenerThemeState`、`GardenerValueChangeLocals`。
|
|
89
|
+
|
|
90
|
+
## 生命周期与兼容性
|
|
91
|
+
|
|
92
|
+
组件在 AngularJS link 阶段配置,在 `$evalAsync` 后初始化,在 `$destroy` 中移除事件并销毁行为。包支持 AngularJS 1.8.2–1.8.3、桌面 Chromium/WebKit/Firefox、Pixel 7、iPhone 13、WCAG A/AA,并对完整 npm 包、摇树、可复现构建和压缩体积设有发布门禁。
|