babel-plugin-wallace 0.0.2 → 0.0.6
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/LICENSE.md +1 -1
- package/dist/ast-helpers.d.ts +10 -0
- package/dist/ast-helpers.js +52 -0
- package/dist/ast-helpers.js.map +1 -0
- package/dist/babel-types.d.ts +4 -0
- package/dist/babel-types.js +3 -0
- package/dist/babel-types.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.js +47 -0
- package/dist/config.js.map +1 -0
- package/dist/consolidation/ComponentDefinitionData.d.ts +29 -0
- package/dist/consolidation/ComponentDefinitionData.js +82 -0
- package/dist/consolidation/ComponentDefinitionData.js.map +1 -0
- package/dist/consolidation/consolidateComponent.d.ts +6 -0
- package/dist/consolidation/consolidateComponent.js +41 -0
- package/dist/consolidation/consolidateComponent.js.map +1 -0
- package/dist/consolidation/index.d.ts +2 -0
- package/dist/consolidation/index.js +8 -0
- package/dist/consolidation/index.js.map +1 -0
- package/dist/consolidation/processNodes.d.ts +3 -0
- package/dist/consolidation/processNodes.js +202 -0
- package/dist/consolidation/processNodes.js.map +1 -0
- package/dist/consolidation/types.d.ts +15 -0
- package/dist/consolidation/types.js +3 -0
- package/dist/consolidation/types.js.map +1 -0
- package/dist/consolidation/utils.d.ts +21 -0
- package/dist/consolidation/utils.js +91 -0
- package/dist/consolidation/utils.js.map +1 -0
- package/dist/consolidation/visibility.d.ts +5 -0
- package/dist/consolidation/visibility.js +43 -0
- package/dist/consolidation/visibility.js.map +1 -0
- package/dist/constants.d.ts +31 -0
- package/dist/constants.js +40 -0
- package/dist/constants.js.map +1 -0
- package/dist/contexts/handlers.d.ts +18 -0
- package/dist/contexts/handlers.js +152 -0
- package/dist/contexts/handlers.js.map +1 -0
- package/dist/contexts/index.d.ts +2 -0
- package/dist/contexts/index.js +6 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/contexts/parameters.d.ts +8 -0
- package/dist/contexts/parameters.js +114 -0
- package/dist/contexts/parameters.js.map +1 -0
- package/dist/directives.d.ts +8 -0
- package/dist/directives.js +193 -0
- package/dist/directives.js.map +1 -0
- package/dist/errors.d.ts +34 -0
- package/dist/errors.js +47 -0
- package/dist/errors.js.map +1 -0
- package/dist/helpers.d.ts +4 -0
- package/dist/helpers.js +35 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/models/component.d.ts +25 -0
- package/dist/models/component.js +114 -0
- package/dist/models/component.js.map +1 -0
- package/dist/models/directive.d.ts +13 -0
- package/dist/models/directive.js +8 -0
- package/dist/models/directive.js.map +1 -0
- package/dist/models/index.d.ts +5 -0
- package/dist/models/index.js +15 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/module.d.ts +12 -0
- package/dist/models/module.js +40 -0
- package/dist/models/module.js.map +1 -0
- package/dist/models/node.d.ts +107 -0
- package/dist/models/node.js +327 -0
- package/dist/models/node.js.map +1 -0
- package/dist/utils.d.ts +13 -0
- package/dist/utils.js +66 -0
- package/dist/utils.js.map +1 -0
- package/dist/visitors/attribute.d.ts +10 -0
- package/dist/visitors/attribute.js +82 -0
- package/dist/visitors/attribute.js.map +1 -0
- package/dist/visitors/jsx.d.ts +13 -0
- package/dist/visitors/jsx.js +61 -0
- package/dist/visitors/jsx.js.map +1 -0
- package/dist/visitors/program.d.ts +12 -0
- package/dist/visitors/program.js +26 -0
- package/dist/visitors/program.js.map +1 -0
- package/dist/writers/define-component.d.ts +7 -0
- package/dist/writers/define-component.js +101 -0
- package/dist/writers/define-component.js.map +1 -0
- package/dist/writers/index.d.ts +1 -0
- package/dist/writers/index.js +7 -0
- package/dist/writers/index.js.map +1 -0
- package/package.json +20 -10
- package/README.md +0 -3
- package/lib/_config/directives.js +0 -356
- package/lib/_config/index.js +0 -2
- package/lib/_config/loader.js +0 -43
- package/lib/_config/parse_directives.js +0 -63
- package/lib/config.js +0 -263
- package/lib/convert.js +0 -27
- package/lib/definitions/constants.js +0 -73
- package/lib/definitions/node_data.js +0 -183
- package/lib/definitions/watcher.js +0 -26
- package/lib/generate/code_generator.js +0 -333
- package/lib/generate/statement_builders.js +0 -130
- package/lib/help-system/browser-code.js +0 -50
- package/lib/help-system/entry.js +0 -92
- package/lib/help-system/error-display.js +0 -20
- package/lib/help-system/styles.css +0 -25
- package/lib/import-checker.js +0 -35
- package/lib/index.js +0 -47
- package/lib/jsx/component_dom.js +0 -40
- package/lib/jsx/contexts.js +0 -121
- package/lib/jsx/extract.js +0 -214
- package/lib/jsx/parse.js +0 -98
- package/lib/parse/component_templates.js +0 -44
- package/lib/parse/inline_directives.js +0 -318
- package/lib/parse/parse_node.js +0 -73
- package/lib/polyfills.js +0 -10
- package/lib/utils/babel.js +0 -100
- package/lib/utils/dom.js +0 -174
- package/lib/utils/misc.js +0 -152
- package/lib_old/handlers.js +0 -52
- package/lib_old/index.js +0 -145
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/models/module.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAKlC,SAAS,kBAAkB,CACzB,IAAuB,EACvB,IAAY,EACZ,MAAc;IAEd,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,CAAC,CAAC,iBAAiB,CACzC,CAAC,SAAS,CAAC,EACX,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CACxB,CAAC;IACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACjD,CAAC;AAED,MAAa,MAAM;IAIjB,YAAY,IAAuB;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;IACpC,CAAC;IACD,WAAW,CAAC,IAA+B;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvE,MAAM,MAAM,GAAG,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC1C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;YACrB,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,aAAa,CAAC,IAAiB;QAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,iBAAiB;QACf,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBAChD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA/BD,wBA+BC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { NodePath } from "@babel/core";
|
|
2
|
+
import type { Expression, JSXElement, JSXExpressionContainer, JSXText } from "@babel/types";
|
|
3
|
+
interface Attribute {
|
|
4
|
+
name: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
}
|
|
7
|
+
interface Watch {
|
|
8
|
+
expression: Expression;
|
|
9
|
+
callback: string;
|
|
10
|
+
}
|
|
11
|
+
interface RepeatInstruction {
|
|
12
|
+
expression: Expression;
|
|
13
|
+
componentCls: string;
|
|
14
|
+
poolExpression: Expression | undefined;
|
|
15
|
+
}
|
|
16
|
+
interface EventListener {
|
|
17
|
+
eventName: string;
|
|
18
|
+
callback: Expression;
|
|
19
|
+
}
|
|
20
|
+
interface BindInstruction {
|
|
21
|
+
eventName: string;
|
|
22
|
+
expression: Expression;
|
|
23
|
+
}
|
|
24
|
+
export interface ConditionalDisplay {
|
|
25
|
+
expression: Expression;
|
|
26
|
+
reverse: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface ToggleTrigger {
|
|
29
|
+
name: string;
|
|
30
|
+
expression: Expression;
|
|
31
|
+
}
|
|
32
|
+
interface ToggleTarget {
|
|
33
|
+
name: string;
|
|
34
|
+
value: Expression | string;
|
|
35
|
+
}
|
|
36
|
+
type ValidElementType = JSXElement | JSXExpressionContainer | JSXText;
|
|
37
|
+
export declare class ExtractedNode {
|
|
38
|
+
#private;
|
|
39
|
+
component: any;
|
|
40
|
+
tagName: string;
|
|
41
|
+
element: HTMLElement | Text | undefined;
|
|
42
|
+
isRepeatedNode: boolean;
|
|
43
|
+
repeatNode: ExtractedNode | undefined;
|
|
44
|
+
address: Array<number>;
|
|
45
|
+
path: NodePath<ValidElementType>;
|
|
46
|
+
parent: TagNode;
|
|
47
|
+
watches: Watch[];
|
|
48
|
+
eventListeners: EventListener[];
|
|
49
|
+
bindInstructions: BindInstruction[];
|
|
50
|
+
isNestedClass: boolean;
|
|
51
|
+
repeatExpression: Expression | undefined;
|
|
52
|
+
poolExpression: Expression | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* The sets of classes that may be toggled.
|
|
55
|
+
*/
|
|
56
|
+
toggleTargets: ToggleTarget[];
|
|
57
|
+
/**
|
|
58
|
+
* The triggers that cause the classes to be toggled.
|
|
59
|
+
*/
|
|
60
|
+
toggleTriggers: ToggleTrigger[];
|
|
61
|
+
constructor(address: Array<number>, path: NodePath<ValidElementType>, parent: TagNode);
|
|
62
|
+
getElement(): HTMLElement | Text;
|
|
63
|
+
addEventListener(eventName: string, callback: Expression): void;
|
|
64
|
+
addBindInstruction(eventName: string, expression: Expression): void;
|
|
65
|
+
addWatch(expression: Expression, callback: string): void;
|
|
66
|
+
addToggleTrigger(name: string, expression: Expression): void;
|
|
67
|
+
addToggleTarget(name: string, value: Expression | string): void;
|
|
68
|
+
watchAttribute(attName: string, expression: Expression): void;
|
|
69
|
+
watchText(expression: Expression): void;
|
|
70
|
+
setProps(expression: Expression): void;
|
|
71
|
+
getProps(): Expression | undefined;
|
|
72
|
+
setConditionalDisplay(expression: Expression, reverse: boolean): void;
|
|
73
|
+
getShieldInfo(): ConditionalDisplay | undefined;
|
|
74
|
+
setRef(name: string): void;
|
|
75
|
+
getRef(): string | undefined;
|
|
76
|
+
setRepeatExpression(expression: Expression): void;
|
|
77
|
+
/**
|
|
78
|
+
* Called on the parent of a repeat.
|
|
79
|
+
*/
|
|
80
|
+
getRepeatInstruction(): RepeatInstruction | undefined;
|
|
81
|
+
setStub(name: string): void;
|
|
82
|
+
getStub(): string | undefined;
|
|
83
|
+
setBaseComponent(expression: Expression): void;
|
|
84
|
+
}
|
|
85
|
+
export declare class TagNode extends ExtractedNode {
|
|
86
|
+
parent: TagNode;
|
|
87
|
+
address: Array<number>;
|
|
88
|
+
path: NodePath<JSXElement>;
|
|
89
|
+
attributes: Attribute[];
|
|
90
|
+
constructor(path: NodePath<JSXElement>, address: Array<number>, parent: TagNode, component: any, // TODO: fix type circular import.
|
|
91
|
+
tagName: string, isNestedClass: boolean);
|
|
92
|
+
addFixedAttribute(name: string, value?: string): void;
|
|
93
|
+
getElement(): HTMLElement | undefined;
|
|
94
|
+
}
|
|
95
|
+
export declare class StubNode extends ExtractedNode {
|
|
96
|
+
constructor(path: NodePath<JSXElement>, address: Array<number>, parent: TagNode, name: string);
|
|
97
|
+
getElement(): HTMLElement | Text;
|
|
98
|
+
}
|
|
99
|
+
export declare class DynamicTextNode extends ExtractedNode {
|
|
100
|
+
constructor(path: NodePath<JSXExpressionContainer>, address: Array<number>, parent: TagNode, expression: Expression);
|
|
101
|
+
getElement(): HTMLElement | Text;
|
|
102
|
+
}
|
|
103
|
+
export declare class PlainTextNode extends ExtractedNode {
|
|
104
|
+
constructor(path: NodePath<JSXText>, address: Array<number>, parent: TagNode);
|
|
105
|
+
getElement(): HTMLElement | Text;
|
|
106
|
+
}
|
|
107
|
+
export {};
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var _ExtractedNode_stubName, _ExtractedNode_conditionalDisplay, _ExtractedNode_ref, _ExtractedNode_props, _ExtractedNode_forExpression, _ExtractedNode_forVariable;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PlainTextNode = exports.DynamicTextNode = exports.StubNode = exports.TagNode = exports.ExtractedNode = void 0;
|
|
16
|
+
const utils_1 = require("../utils");
|
|
17
|
+
const errors_1 = require("../errors");
|
|
18
|
+
const constants_1 = require("../constants");
|
|
19
|
+
class ExtractedNode {
|
|
20
|
+
constructor(address, path, parent) {
|
|
21
|
+
this.isRepeatedNode = false;
|
|
22
|
+
this.watches = [];
|
|
23
|
+
this.eventListeners = [];
|
|
24
|
+
this.bindInstructions = [];
|
|
25
|
+
this.isNestedClass = false;
|
|
26
|
+
/**
|
|
27
|
+
* The sets of classes that may be toggled.
|
|
28
|
+
*/
|
|
29
|
+
this.toggleTargets = [];
|
|
30
|
+
/**
|
|
31
|
+
* The triggers that cause the classes to be toggled.
|
|
32
|
+
*/
|
|
33
|
+
this.toggleTriggers = [];
|
|
34
|
+
_ExtractedNode_stubName.set(this, void 0);
|
|
35
|
+
_ExtractedNode_conditionalDisplay.set(this, void 0);
|
|
36
|
+
_ExtractedNode_ref.set(this, void 0);
|
|
37
|
+
_ExtractedNode_props.set(this, void 0);
|
|
38
|
+
_ExtractedNode_forExpression.set(this, void 0);
|
|
39
|
+
_ExtractedNode_forVariable.set(this, void 0);
|
|
40
|
+
this.path = path;
|
|
41
|
+
this.address = address;
|
|
42
|
+
this.parent = parent;
|
|
43
|
+
}
|
|
44
|
+
getElement() {
|
|
45
|
+
throw new Error("Not implemented");
|
|
46
|
+
}
|
|
47
|
+
addEventListener(eventName, callback) {
|
|
48
|
+
if (this.isNestedClass) {
|
|
49
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.NO_ATTRIBUTES_ON_NESTED_CLASS);
|
|
50
|
+
}
|
|
51
|
+
this.eventListeners.push({ eventName, callback });
|
|
52
|
+
}
|
|
53
|
+
addBindInstruction(eventName, expression) {
|
|
54
|
+
if (this.isNestedClass) {
|
|
55
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.NO_ATTRIBUTES_ON_NESTED_CLASS);
|
|
56
|
+
}
|
|
57
|
+
this.bindInstructions.push({ eventName, expression });
|
|
58
|
+
}
|
|
59
|
+
addWatch(expression, callback) {
|
|
60
|
+
this.watches.push({
|
|
61
|
+
expression,
|
|
62
|
+
callback,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
addToggleTrigger(name, expression) {
|
|
66
|
+
this.toggleTriggers.push({ name, expression });
|
|
67
|
+
}
|
|
68
|
+
addToggleTarget(name, value) {
|
|
69
|
+
this.toggleTargets.push({ name, value });
|
|
70
|
+
}
|
|
71
|
+
watchAttribute(attName, expression) {
|
|
72
|
+
if (this.isNestedClass) {
|
|
73
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.NO_ATTRIBUTES_ON_NESTED_CLASS);
|
|
74
|
+
}
|
|
75
|
+
this.addWatch(expression, (0, utils_1.setAttributeCallback)(attName));
|
|
76
|
+
}
|
|
77
|
+
watchText(expression) {
|
|
78
|
+
this.addWatch(expression, `${constants_1.WATCH_CALLBACK_PARAMS.element}.textContent = n`);
|
|
79
|
+
}
|
|
80
|
+
setProps(expression) {
|
|
81
|
+
if (this.isRepeatedNode) {
|
|
82
|
+
this.setRepeatExpression(expression);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
if (__classPrivateFieldGet(this, _ExtractedNode_props, "f")) {
|
|
86
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.PROPS_ALREADY_DEFINED);
|
|
87
|
+
}
|
|
88
|
+
__classPrivateFieldSet(this, _ExtractedNode_props, expression, "f");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
getProps() {
|
|
92
|
+
return __classPrivateFieldGet(this, _ExtractedNode_props, "f");
|
|
93
|
+
}
|
|
94
|
+
setConditionalDisplay(expression, reverse) {
|
|
95
|
+
if (__classPrivateFieldGet(this, _ExtractedNode_conditionalDisplay, "f")) {
|
|
96
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.CONDITIONAL_DISPLAY_ALREADY_DEFINED);
|
|
97
|
+
}
|
|
98
|
+
__classPrivateFieldSet(this, _ExtractedNode_conditionalDisplay, { expression, reverse }, "f");
|
|
99
|
+
}
|
|
100
|
+
getShieldInfo() {
|
|
101
|
+
return __classPrivateFieldGet(this, _ExtractedNode_conditionalDisplay, "f");
|
|
102
|
+
}
|
|
103
|
+
setRef(name) {
|
|
104
|
+
if (__classPrivateFieldGet(this, _ExtractedNode_ref, "f")) {
|
|
105
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.REF_ALREADY_DEFINED);
|
|
106
|
+
}
|
|
107
|
+
__classPrivateFieldSet(this, _ExtractedNode_ref, name, "f");
|
|
108
|
+
}
|
|
109
|
+
getRef() {
|
|
110
|
+
return __classPrivateFieldGet(this, _ExtractedNode_ref, "f");
|
|
111
|
+
}
|
|
112
|
+
// TODO: fix not to use directive.
|
|
113
|
+
setRepeatExpression(expression) {
|
|
114
|
+
if (!this.parent) {
|
|
115
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.REPEAT_WITHOUT_PARENT);
|
|
116
|
+
}
|
|
117
|
+
// if (this.isRepeatedNode) {
|
|
118
|
+
// error(this.path, ERROR_MESSAGES.REPEAT_ALREADY_DEFINED);
|
|
119
|
+
// }
|
|
120
|
+
// if (!this.isNestedClass) {
|
|
121
|
+
// error(this.path, ERROR_MESSAGES.REPEAT_ONLY_ON_NESTED_CLASS);
|
|
122
|
+
// }
|
|
123
|
+
this.isRepeatedNode = true;
|
|
124
|
+
// While this could potentially be set multiple times, we later check that repeat
|
|
125
|
+
// cannot be used if there siblings.
|
|
126
|
+
this.repeatExpression = expression;
|
|
127
|
+
this.parent.repeatNode = this;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Called on the parent of a repeat.
|
|
131
|
+
*/
|
|
132
|
+
getRepeatInstruction() {
|
|
133
|
+
return this.repeatNode
|
|
134
|
+
? {
|
|
135
|
+
expression: this.repeatNode.repeatExpression,
|
|
136
|
+
componentCls: this.repeatNode.tagName,
|
|
137
|
+
poolExpression: this.repeatNode.poolExpression,
|
|
138
|
+
}
|
|
139
|
+
: undefined;
|
|
140
|
+
}
|
|
141
|
+
setStub(name) {
|
|
142
|
+
if (__classPrivateFieldGet(this, _ExtractedNode_stubName, "f")) {
|
|
143
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.STUB_ALREADY_DEFINED);
|
|
144
|
+
}
|
|
145
|
+
__classPrivateFieldSet(this, _ExtractedNode_stubName, name, "f");
|
|
146
|
+
}
|
|
147
|
+
getStub() {
|
|
148
|
+
return __classPrivateFieldGet(this, _ExtractedNode_stubName, "f");
|
|
149
|
+
}
|
|
150
|
+
// setForLoop(expression: Expression, variable: string | undefined) {
|
|
151
|
+
// if (this.#forExpression) {
|
|
152
|
+
// error(this.path, ERROR_MESSAGES.REF_ALREADY_DEFINED);
|
|
153
|
+
// }
|
|
154
|
+
// this.#forVariable = variable;
|
|
155
|
+
// this.#forExpression = expression;
|
|
156
|
+
// }
|
|
157
|
+
// getForLoop():
|
|
158
|
+
// | { expression: Expression; variable: string | undefined }
|
|
159
|
+
// | undefined {
|
|
160
|
+
// if (this.#forExpression) {
|
|
161
|
+
// return { expression: this.#forExpression, variable: this.#forVariable };
|
|
162
|
+
// }
|
|
163
|
+
// }
|
|
164
|
+
setBaseComponent(expression) {
|
|
165
|
+
if (this.component.baseComponent) {
|
|
166
|
+
(0, errors_1.error)(this.path, errors_1.ERROR_MESSAGES.BASE_COMPONENT_ALREADY_DEFINED);
|
|
167
|
+
}
|
|
168
|
+
this.component.baseComponent = expression;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.ExtractedNode = ExtractedNode;
|
|
172
|
+
_ExtractedNode_stubName = new WeakMap(), _ExtractedNode_conditionalDisplay = new WeakMap(), _ExtractedNode_ref = new WeakMap(), _ExtractedNode_props = new WeakMap(), _ExtractedNode_forExpression = new WeakMap(), _ExtractedNode_forVariable = new WeakMap();
|
|
173
|
+
class TagNode extends ExtractedNode {
|
|
174
|
+
// directives: ExtractedDirective[] = [];
|
|
175
|
+
constructor(path, address, parent, component, // TODO: fix type circular import.
|
|
176
|
+
tagName, isNestedClass) {
|
|
177
|
+
super(address, path, parent);
|
|
178
|
+
this.attributes = [];
|
|
179
|
+
this.path = path;
|
|
180
|
+
this.address = address;
|
|
181
|
+
this.component = component;
|
|
182
|
+
this.tagName = tagName;
|
|
183
|
+
this.parent = parent;
|
|
184
|
+
this.isNestedClass = isNestedClass;
|
|
185
|
+
}
|
|
186
|
+
addFixedAttribute(name, value) {
|
|
187
|
+
this.attributes.push({ name, value });
|
|
188
|
+
}
|
|
189
|
+
getElement() {
|
|
190
|
+
if (this.isRepeatedNode) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
const element = (0, utils_1.createElement)(this.tagName);
|
|
194
|
+
this.attributes.forEach(({ name, value }) => {
|
|
195
|
+
element.setAttribute(name, value || "");
|
|
196
|
+
});
|
|
197
|
+
this.element = element;
|
|
198
|
+
return this.element;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.TagNode = TagNode;
|
|
202
|
+
class StubNode extends ExtractedNode {
|
|
203
|
+
constructor(path, address, parent, name) {
|
|
204
|
+
super(address, path, parent);
|
|
205
|
+
this.setStub(name);
|
|
206
|
+
}
|
|
207
|
+
getElement() {
|
|
208
|
+
this.element = (0, utils_1.createElement)("div");
|
|
209
|
+
return this.element;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.StubNode = StubNode;
|
|
213
|
+
class DynamicTextNode extends ExtractedNode {
|
|
214
|
+
constructor(path, address, parent, expression) {
|
|
215
|
+
super(address, path, parent);
|
|
216
|
+
this.watchText(expression);
|
|
217
|
+
}
|
|
218
|
+
getElement() {
|
|
219
|
+
this.element = (0, utils_1.createElement)("span");
|
|
220
|
+
return this.element;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.DynamicTextNode = DynamicTextNode;
|
|
224
|
+
class PlainTextNode extends ExtractedNode {
|
|
225
|
+
constructor(path, address, parent) {
|
|
226
|
+
super(address, path, parent);
|
|
227
|
+
}
|
|
228
|
+
getElement() {
|
|
229
|
+
// @ts-ignore
|
|
230
|
+
this.element = (0, utils_1.createTextNode)(this.path.node.value);
|
|
231
|
+
return this.element;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.PlainTextNode = PlainTextNode;
|
|
235
|
+
// class NodeData {
|
|
236
|
+
// constructor(path, module, component, parentNodeData, nodeTreeAddress) {
|
|
237
|
+
// this.path = path;
|
|
238
|
+
// this.module = module;
|
|
239
|
+
// this.component = component;
|
|
240
|
+
// this.parentNodeData = parentNodeData;
|
|
241
|
+
// this.nodeTreeAddress = nodeTreeAddress;
|
|
242
|
+
// this.nestedClass = undefined;
|
|
243
|
+
// this.isRepeat = false;
|
|
244
|
+
// this.props = undefined;
|
|
245
|
+
// this.shieldQuery = undefined;
|
|
246
|
+
// this.reverseShield = 0;
|
|
247
|
+
// this.buildCalls = [];
|
|
248
|
+
// this.watches = [];
|
|
249
|
+
// this.seq = 0;
|
|
250
|
+
// }
|
|
251
|
+
// isDynamic() {
|
|
252
|
+
// return (
|
|
253
|
+
// this.watches.length > 0 ||
|
|
254
|
+
// this.buildCalls.length > 0 ||
|
|
255
|
+
// this.props ||
|
|
256
|
+
// this.nestedClass ||
|
|
257
|
+
// this.shieldQuery
|
|
258
|
+
// );
|
|
259
|
+
// }
|
|
260
|
+
// /**
|
|
261
|
+
// * Creates a watch on this node.
|
|
262
|
+
// *
|
|
263
|
+
// * @param {string} watch - the field or function to watch.
|
|
264
|
+
// * @param {string} converter - the value to pass to method, or free function call if
|
|
265
|
+
// * property is not supplied.
|
|
266
|
+
// * @param {string} property - the method on the wrapper (Can even be dotted
|
|
267
|
+
// * `style.color`).
|
|
268
|
+
// */
|
|
269
|
+
// addWatch(watch, converter, property) {
|
|
270
|
+
// this.watches.push({ watch, converter, property });
|
|
271
|
+
// }
|
|
272
|
+
// /**
|
|
273
|
+
// * Creates an event listener on this node.
|
|
274
|
+
// * Slot will be expanded.
|
|
275
|
+
// *
|
|
276
|
+
// * @param {string} event
|
|
277
|
+
// * @param {string} slot
|
|
278
|
+
// */
|
|
279
|
+
// addEventListener(event, code) {
|
|
280
|
+
// this.module.requireImport(builderCalls.onEvent);
|
|
281
|
+
// const callback = `function(${eventCallbackArgs}) {${code}}`;
|
|
282
|
+
// this.addBuildCall(builderCalls.onEvent, [
|
|
283
|
+
// componentRefInBuild,
|
|
284
|
+
// `'${event.toLowerCase()}'`,
|
|
285
|
+
// callback,
|
|
286
|
+
// ]);
|
|
287
|
+
// }
|
|
288
|
+
// addBuildCall(functionName, args) {
|
|
289
|
+
// this.buildCalls.push([functionName, ...args]);
|
|
290
|
+
// }
|
|
291
|
+
// saveAs(name) {
|
|
292
|
+
// this.module.requireImport(builderCalls.saveAs);
|
|
293
|
+
// this.addBuildCall(builderCalls.saveAs, [
|
|
294
|
+
// componentRefInBuild,
|
|
295
|
+
// literal(name),
|
|
296
|
+
// ]);
|
|
297
|
+
// }
|
|
298
|
+
// requireImport(name, source, alias) {
|
|
299
|
+
// // TODO: make it use alias
|
|
300
|
+
// this.module.requireImport(name, source, alias);
|
|
301
|
+
// }
|
|
302
|
+
// repeat(data, key) {
|
|
303
|
+
// // There is no transform here. Should we allow it?
|
|
304
|
+
// const parent = this.parentNodeData;
|
|
305
|
+
// if (parent === undefined) {
|
|
306
|
+
// // TODO: throw better error, and assert parent has no other children.
|
|
307
|
+
// throw Error("For must be used under a parent.");
|
|
308
|
+
// }
|
|
309
|
+
// let getPoolCall;
|
|
310
|
+
// if (key) {
|
|
311
|
+
// const keyFn = `function(props) {return props.${key}}`;
|
|
312
|
+
// this.requireImport(builderCalls.getKeyedPool);
|
|
313
|
+
// getPoolCall = `${builderCalls.getKeyedPool}(${this.nestedClass}, ${keyFn})`;
|
|
314
|
+
// } else {
|
|
315
|
+
// this.requireImport(builderCalls.getSequentialPool);
|
|
316
|
+
// getPoolCall = `${builderCalls.getSequentialPool}(${this.nestedClass})`;
|
|
317
|
+
// }
|
|
318
|
+
// this.requireImport(builderCalls.initRepeater);
|
|
319
|
+
// parent.addBuildCall(builderCalls.initRepeater, [
|
|
320
|
+
// componentRefInBuild,
|
|
321
|
+
// getPoolCall,
|
|
322
|
+
// ]);
|
|
323
|
+
// parent.addWatch(alwaysUpdate, `w.gkItems(${data})`);
|
|
324
|
+
// this.isRepeat = true;
|
|
325
|
+
// }
|
|
326
|
+
// }
|
|
327
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/models/node.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Statement } from "@babel/types";
|
|
2
|
+
export declare function createElement(tagName: string): HTMLElement;
|
|
3
|
+
export declare function createTextNode(text: string): Text;
|
|
4
|
+
export declare function setAttributeCallback(attName: string): string;
|
|
5
|
+
export declare function isCapitalized(s: string): boolean;
|
|
6
|
+
export declare function escapeSingleQuotes(text: string): string;
|
|
7
|
+
export declare function escapeDoubleQuotes(text: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Strips extraneous whitespace from HTML
|
|
10
|
+
*/
|
|
11
|
+
export declare function stripHtml(htmlString: string): string;
|
|
12
|
+
export declare function arrayStartsWith(origin: Array<any>, test: Array<any>): boolean;
|
|
13
|
+
export declare function codeToNode(code: string): Statement[];
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createElement = createElement;
|
|
4
|
+
exports.createTextNode = createTextNode;
|
|
5
|
+
exports.setAttributeCallback = setAttributeCallback;
|
|
6
|
+
exports.isCapitalized = isCapitalized;
|
|
7
|
+
exports.escapeSingleQuotes = escapeSingleQuotes;
|
|
8
|
+
exports.escapeDoubleQuotes = escapeDoubleQuotes;
|
|
9
|
+
exports.stripHtml = stripHtml;
|
|
10
|
+
exports.arrayStartsWith = arrayStartsWith;
|
|
11
|
+
exports.codeToNode = codeToNode;
|
|
12
|
+
const jsdom_1 = require("jsdom");
|
|
13
|
+
const babel = require("@babel/core");
|
|
14
|
+
const constants_1 = require("./constants");
|
|
15
|
+
const document = new jsdom_1.JSDOM("<!DOCTYPE html>").window.document;
|
|
16
|
+
function createElement(tagName) {
|
|
17
|
+
return document.createElement(tagName);
|
|
18
|
+
}
|
|
19
|
+
function createTextNode(text) {
|
|
20
|
+
return document.createTextNode(text);
|
|
21
|
+
}
|
|
22
|
+
function setAttributeCallback(attName) {
|
|
23
|
+
attName = attName === "class" ? "className" : attName;
|
|
24
|
+
return `${constants_1.WATCH_CALLBACK_PARAMS.element}.${attName} = ${constants_1.WATCH_CALLBACK_PARAMS.newValue}`;
|
|
25
|
+
// TODO: determine if non-standart att and use setAttribute() instead?
|
|
26
|
+
}
|
|
27
|
+
const REGEX_CAPITALIZED = new RegExp(/^[A-Z].*/);
|
|
28
|
+
function isCapitalized(s) {
|
|
29
|
+
return REGEX_CAPITALIZED.test(s);
|
|
30
|
+
}
|
|
31
|
+
function escapeSingleQuotes(text) {
|
|
32
|
+
return text.replace(/'/g, "\\'");
|
|
33
|
+
}
|
|
34
|
+
function escapeDoubleQuotes(text) {
|
|
35
|
+
return text.replace(/"/g, '\\"');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Strips extraneous whitespace from HTML
|
|
39
|
+
*/
|
|
40
|
+
function stripHtml(htmlString) {
|
|
41
|
+
return htmlString
|
|
42
|
+
.replace(/\n/g, "")
|
|
43
|
+
.replace(/[\t ]+\</g, " <")
|
|
44
|
+
.replace(/\>[\t ]+$/g, "> ")
|
|
45
|
+
.replace(/\>[\t ]+\</g, "><")
|
|
46
|
+
.trim();
|
|
47
|
+
}
|
|
48
|
+
function arrayStartsWith(origin, test) {
|
|
49
|
+
if (test.length <= origin.length) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
for (const [i, v] of origin.entries()) {
|
|
53
|
+
if (test[i] !== v) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
function codeToNode(code) {
|
|
60
|
+
const statement = babel.template.ast(code);
|
|
61
|
+
if (statement instanceof Array) {
|
|
62
|
+
return statement;
|
|
63
|
+
}
|
|
64
|
+
return [statement];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAQA,sCAEC;AAED,wCAEC;AAED,oDAIC;AAID,sCAEC;AAED,gDAEC;AAED,gDAEC;AAKD,8BAOC;AAED,0CAUC;AAED,gCAMC;AAlED,iCAA8B;AAE9B,qCAAqC;AAErC,2CAAoD;AAEpD,MAAM,QAAQ,GAAG,IAAI,aAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAE9D,SAAgB,aAAa,CAAC,OAAe;IAC3C,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAe;IAClD,OAAO,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,OAAO,GAAG,iCAAqB,CAAC,OAAO,IAAI,OAAO,MAAM,iCAAqB,CAAC,QAAQ,EAAE,CAAC;IACzF,sEAAsE;AACxE,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjD,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,UAAkB;IAC1C,OAAO,UAAU;SACd,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;SAC1B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;SAC5B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,eAAe,CAAC,MAAkB,EAAE,IAAgB;IAClE,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,SAAS,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NodePath } from "@babel/core";
|
|
2
|
+
import type { JSXAttribute } from "@babel/types";
|
|
3
|
+
import { TagNode } from "../models";
|
|
4
|
+
interface State {
|
|
5
|
+
extractedNode: TagNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const attributeVisitors: {
|
|
8
|
+
JSXAttribute(path: NodePath<JSXAttribute>, { extractedNode }: State): void;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.attributeVisitors = void 0;
|
|
4
|
+
const t = require("@babel/types");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const ast_helpers_1 = require("../ast-helpers");
|
|
8
|
+
/**
|
|
9
|
+
* Name could be:
|
|
10
|
+
* foo
|
|
11
|
+
* foo:bar
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
function extractName(path) {
|
|
15
|
+
const { name } = path.node;
|
|
16
|
+
let base, qualifier;
|
|
17
|
+
if (t.isJSXNamespacedName(name)) {
|
|
18
|
+
base = name.namespace.name;
|
|
19
|
+
qualifier = name.name.name;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
base = name.name;
|
|
23
|
+
}
|
|
24
|
+
return { base, qualifier };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Value could be:
|
|
28
|
+
*
|
|
29
|
+
* foo
|
|
30
|
+
* foo="bar"
|
|
31
|
+
* foo={bar}
|
|
32
|
+
*/
|
|
33
|
+
function extractValue(path) {
|
|
34
|
+
const { value } = path.node;
|
|
35
|
+
if (t.isStringLiteral(value)) {
|
|
36
|
+
return { type: "string", value: value.value };
|
|
37
|
+
}
|
|
38
|
+
else if (t.isJSXExpressionContainer(value)) {
|
|
39
|
+
const expression = (0, ast_helpers_1.getPlaceholderExpression)(path, value.expression);
|
|
40
|
+
return { type: "expression", expression: expression };
|
|
41
|
+
}
|
|
42
|
+
else if (value === null) {
|
|
43
|
+
return { type: "null" };
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
(0, errors_1.error)(path, errors_1.ERROR_MESSAGES.JSX_ELEMENTS_NOT_ALLOWED_IN_EXPRESSIONS);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.attributeVisitors = {
|
|
50
|
+
JSXAttribute(path, { extractedNode }) {
|
|
51
|
+
if (extractedNode.path.node !== path.parentPath.parentPath.node) {
|
|
52
|
+
// We exit here as otherwise we'd traverse attributes of nested JSXElements too.
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const { base, qualifier } = extractName(path);
|
|
56
|
+
const extractedValue = extractValue(path);
|
|
57
|
+
const isEventHandler = extractedValue.type === "expression" && base.startsWith("on");
|
|
58
|
+
const directiveClass = isEventHandler
|
|
59
|
+
? config_1.gleekitConfig.directives["on*"]
|
|
60
|
+
: config_1.gleekitConfig.directives[base];
|
|
61
|
+
if (directiveClass) {
|
|
62
|
+
const handler = new directiveClass();
|
|
63
|
+
handler.apply(extractedNode, extractedValue, qualifier, base);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const attName = qualifier ? `${base}:${qualifier}` : base;
|
|
67
|
+
switch (extractedValue.type) {
|
|
68
|
+
case "expression":
|
|
69
|
+
extractedNode.watchAttribute(attName, extractedValue.expression);
|
|
70
|
+
break;
|
|
71
|
+
case "string":
|
|
72
|
+
extractedNode.addFixedAttribute(attName, extractedValue.value);
|
|
73
|
+
break;
|
|
74
|
+
case "null":
|
|
75
|
+
extractedNode.addFixedAttribute(attName);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
path.remove();
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=attribute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../src/visitors/attribute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NodePath } from "@babel/core";
|
|
2
|
+
import type { JSXElement, JSXExpressionContainer, JSXText } from "@babel/types";
|
|
3
|
+
import { Component, WalkTracker } from "../models";
|
|
4
|
+
interface State {
|
|
5
|
+
component: Component;
|
|
6
|
+
tracker?: WalkTracker;
|
|
7
|
+
}
|
|
8
|
+
export declare const jsxVisitors: {
|
|
9
|
+
JSXElement(path: NodePath<JSXElement>, { component, tracker }: State): void;
|
|
10
|
+
JSXText(path: NodePath<JSXText>, { component, tracker }: State): void;
|
|
11
|
+
JSXExpressionContainer(path: NodePath<JSXExpressionContainer>, { component, tracker }: State): void;
|
|
12
|
+
};
|
|
13
|
+
export {};
|