react-native-divkit 0.1.0-alpha.1
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 +176 -0
- package/README.md +340 -0
- package/dist/DivKit.d.ts +68 -0
- package/dist/DivKit.d.ts.map +1 -0
- package/dist/DivKit.js +400 -0
- package/dist/DivKit.js.map +1 -0
- package/dist/actions/array.d.ts +8 -0
- package/dist/actions/array.d.ts.map +1 -0
- package/dist/actions/array.js +139 -0
- package/dist/actions/array.js.map +1 -0
- package/dist/actions/copyToClipboard.d.ts +22 -0
- package/dist/actions/copyToClipboard.d.ts.map +1 -0
- package/dist/actions/copyToClipboard.js +63 -0
- package/dist/actions/copyToClipboard.js.map +1 -0
- package/dist/actions/dict.d.ts +6 -0
- package/dist/actions/dict.d.ts.map +1 -0
- package/dist/actions/dict.js +58 -0
- package/dist/actions/dict.js.map +1 -0
- package/dist/actions/index.d.ts +11 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +11 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/updateStructure.d.ts +6 -0
- package/dist/actions/updateStructure.d.ts.map +1 -0
- package/dist/actions/updateStructure.js +116 -0
- package/dist/actions/updateStructure.js.map +1 -0
- package/dist/components/DivComponent.d.ts +29 -0
- package/dist/components/DivComponent.d.ts.map +1 -0
- package/dist/components/DivComponent.js +62 -0
- package/dist/components/DivComponent.js.map +1 -0
- package/dist/components/container/DivContainer.d.ts +26 -0
- package/dist/components/container/DivContainer.d.ts.map +1 -0
- package/dist/components/container/DivContainer.js +172 -0
- package/dist/components/container/DivContainer.js.map +1 -0
- package/dist/components/container/index.d.ts +3 -0
- package/dist/components/container/index.d.ts.map +1 -0
- package/dist/components/container/index.js +2 -0
- package/dist/components/container/index.js.map +1 -0
- package/dist/components/image/DivImage.d.ts +29 -0
- package/dist/components/image/DivImage.d.ts.map +1 -0
- package/dist/components/image/DivImage.js +122 -0
- package/dist/components/image/DivImage.js.map +1 -0
- package/dist/components/image/index.d.ts +3 -0
- package/dist/components/image/index.d.ts.map +1 -0
- package/dist/components/image/index.js +2 -0
- package/dist/components/image/index.js.map +1 -0
- package/dist/components/index.d.ts +14 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +11 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/state/DivState.d.ts +26 -0
- package/dist/components/state/DivState.d.ts.map +1 -0
- package/dist/components/state/DivState.js +121 -0
- package/dist/components/state/DivState.js.map +1 -0
- package/dist/components/state/index.d.ts +3 -0
- package/dist/components/state/index.d.ts.map +1 -0
- package/dist/components/state/index.js +2 -0
- package/dist/components/state/index.js.map +1 -0
- package/dist/components/text/DivText.d.ts +28 -0
- package/dist/components/text/DivText.d.ts.map +1 -0
- package/dist/components/text/DivText.js +143 -0
- package/dist/components/text/DivText.js.map +1 -0
- package/dist/components/text/index.d.ts +3 -0
- package/dist/components/text/index.d.ts.map +1 -0
- package/dist/components/text/index.js +2 -0
- package/dist/components/text/index.js.map +1 -0
- package/dist/components/utilities/Outer.d.ts +17 -0
- package/dist/components/utilities/Outer.d.ts.map +1 -0
- package/dist/components/utilities/Outer.js +210 -0
- package/dist/components/utilities/Outer.js.map +1 -0
- package/dist/components/utilities/Unknown.d.ts +11 -0
- package/dist/components/utilities/Unknown.d.ts.map +1 -0
- package/dist/components/utilities/Unknown.js +50 -0
- package/dist/components/utilities/Unknown.js.map +1 -0
- package/dist/components/utilities/index.d.ts +5 -0
- package/dist/components/utilities/index.d.ts.map +1 -0
- package/dist/components/utilities/index.js +3 -0
- package/dist/components/utilities/index.js.map +1 -0
- package/dist/context/ActionContext.d.ts +25 -0
- package/dist/context/ActionContext.d.ts.map +1 -0
- package/dist/context/ActionContext.js +20 -0
- package/dist/context/ActionContext.js.map +1 -0
- package/dist/context/DivKitContext.d.ts +33 -0
- package/dist/context/DivKitContext.d.ts.map +1 -0
- package/dist/context/DivKitContext.js +14 -0
- package/dist/context/DivKitContext.js.map +1 -0
- package/dist/context/EnabledContext.d.ts +31 -0
- package/dist/context/EnabledContext.d.ts.map +1 -0
- package/dist/context/EnabledContext.js +31 -0
- package/dist/context/EnabledContext.js.map +1 -0
- package/dist/context/StateContext.d.ts +57 -0
- package/dist/context/StateContext.d.ts.map +1 -0
- package/dist/context/StateContext.js +20 -0
- package/dist/context/StateContext.js.map +1 -0
- package/dist/context/index.d.ts +9 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +9 -0
- package/dist/context/index.js.map +1 -0
- package/dist/expressions/bigint.d.ts +8 -0
- package/dist/expressions/bigint.d.ts.map +1 -0
- package/dist/expressions/bigint.js +31 -0
- package/dist/expressions/bigint.js.map +1 -0
- package/dist/expressions/const.d.ts +15 -0
- package/dist/expressions/const.d.ts.map +1 -0
- package/dist/expressions/const.js +15 -0
- package/dist/expressions/const.js.map +1 -0
- package/dist/expressions/eval.d.ts +77 -0
- package/dist/expressions/eval.d.ts.map +1 -0
- package/dist/expressions/eval.js +459 -0
- package/dist/expressions/eval.js.map +1 -0
- package/dist/expressions/expressions.d.ts +7 -0
- package/dist/expressions/expressions.d.ts.map +1 -0
- package/dist/expressions/expressions.js +3191 -0
- package/dist/expressions/expressions.js.map +1 -0
- package/dist/expressions/funcs/array.d.ts +2 -0
- package/dist/expressions/funcs/array.d.ts.map +1 -0
- package/dist/expressions/funcs/array.js +381 -0
- package/dist/expressions/funcs/array.js.map +1 -0
- package/dist/expressions/funcs/colors.d.ts +2 -0
- package/dist/expressions/funcs/colors.d.ts.map +1 -0
- package/dist/expressions/funcs/colors.js +75 -0
- package/dist/expressions/funcs/colors.js.map +1 -0
- package/dist/expressions/funcs/customFuncs.d.ts +8 -0
- package/dist/expressions/funcs/customFuncs.d.ts.map +1 -0
- package/dist/expressions/funcs/customFuncs.js +114 -0
- package/dist/expressions/funcs/customFuncs.js.map +1 -0
- package/dist/expressions/funcs/datetime.d.ts +2 -0
- package/dist/expressions/funcs/datetime.d.ts.map +1 -0
- package/dist/expressions/funcs/datetime.js +182 -0
- package/dist/expressions/funcs/datetime.js.map +1 -0
- package/dist/expressions/funcs/dict.d.ts +2 -0
- package/dist/expressions/funcs/dict.d.ts.map +1 -0
- package/dist/expressions/funcs/dict.js +170 -0
- package/dist/expressions/funcs/dict.js.map +1 -0
- package/dist/expressions/funcs/funcs.d.ts +80 -0
- package/dist/expressions/funcs/funcs.d.ts.map +1 -0
- package/dist/expressions/funcs/funcs.js +146 -0
- package/dist/expressions/funcs/funcs.js.map +1 -0
- package/dist/expressions/funcs/index.d.ts +2 -0
- package/dist/expressions/funcs/index.d.ts.map +1 -0
- package/dist/expressions/funcs/index.js +23 -0
- package/dist/expressions/funcs/index.js.map +1 -0
- package/dist/expressions/funcs/interval.d.ts +2 -0
- package/dist/expressions/funcs/interval.d.ts.map +1 -0
- package/dist/expressions/funcs/interval.js +61 -0
- package/dist/expressions/funcs/interval.js.map +1 -0
- package/dist/expressions/funcs/math.d.ts +2 -0
- package/dist/expressions/funcs/math.d.ts.map +1 -0
- package/dist/expressions/funcs/math.js +324 -0
- package/dist/expressions/funcs/math.js.map +1 -0
- package/dist/expressions/funcs/std.d.ts +2 -0
- package/dist/expressions/funcs/std.d.ts.map +1 -0
- package/dist/expressions/funcs/std.js +293 -0
- package/dist/expressions/funcs/std.js.map +1 -0
- package/dist/expressions/funcs/stored.d.ts +4 -0
- package/dist/expressions/funcs/stored.d.ts.map +1 -0
- package/dist/expressions/funcs/stored.js +62 -0
- package/dist/expressions/funcs/stored.js.map +1 -0
- package/dist/expressions/funcs/strings.d.ts +2 -0
- package/dist/expressions/funcs/strings.d.ts.map +1 -0
- package/dist/expressions/funcs/strings.js +158 -0
- package/dist/expressions/funcs/strings.js.map +1 -0
- package/dist/expressions/funcs/trigonometry.d.ts +2 -0
- package/dist/expressions/funcs/trigonometry.d.ts.map +1 -0
- package/dist/expressions/funcs/trigonometry.js +92 -0
- package/dist/expressions/funcs/trigonometry.js.map +1 -0
- package/dist/expressions/json.d.ts +18 -0
- package/dist/expressions/json.d.ts.map +1 -0
- package/dist/expressions/json.js +271 -0
- package/dist/expressions/json.js.map +1 -0
- package/dist/expressions/parserCache.d.ts +4 -0
- package/dist/expressions/parserCache.d.ts.map +1 -0
- package/dist/expressions/parserCache.js +23 -0
- package/dist/expressions/parserCache.js.map +1 -0
- package/dist/expressions/simpleUnescapeString.d.ts +2 -0
- package/dist/expressions/simpleUnescapeString.d.ts.map +1 -0
- package/dist/expressions/simpleUnescapeString.js +61 -0
- package/dist/expressions/simpleUnescapeString.js.map +1 -0
- package/dist/expressions/utils.d.ts +29 -0
- package/dist/expressions/utils.d.ts.map +1 -0
- package/dist/expressions/utils.js +236 -0
- package/dist/expressions/utils.js.map +1 -0
- package/dist/expressions/variable.d.ts +82 -0
- package/dist/expressions/variable.d.ts.map +1 -0
- package/dist/expressions/variable.js +337 -0
- package/dist/expressions/variable.js.map +1 -0
- package/dist/expressions/walk.d.ts +7 -0
- package/dist/expressions/walk.d.ts.map +1 -0
- package/dist/expressions/walk.js +39 -0
- package/dist/expressions/walk.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +11 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAction.d.ts +102 -0
- package/dist/hooks/useAction.d.ts.map +1 -0
- package/dist/hooks/useAction.js +116 -0
- package/dist/hooks/useAction.js.map +1 -0
- package/dist/hooks/useDerivedFromVars.d.ts +72 -0
- package/dist/hooks/useDerivedFromVars.d.ts.map +1 -0
- package/dist/hooks/useDerivedFromVars.js +100 -0
- package/dist/hooks/useDerivedFromVars.js.map +1 -0
- package/dist/hooks/useVariable.d.ts +86 -0
- package/dist/hooks/useVariable.d.ts.map +1 -0
- package/dist/hooks/useVariable.js +130 -0
- package/dist/hooks/useVariable.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/stores/createObservable.d.ts +38 -0
- package/dist/stores/createObservable.d.ts.map +1 -0
- package/dist/stores/createObservable.js +49 -0
- package/dist/stores/createObservable.js.map +1 -0
- package/dist/utils/applyTemplate.d.ts +8 -0
- package/dist/utils/applyTemplate.d.ts.map +1 -0
- package/dist/utils/applyTemplate.js +94 -0
- package/dist/utils/applyTemplate.js.map +1 -0
- package/dist/utils/correctColor.d.ts +18 -0
- package/dist/utils/correctColor.d.ts.map +1 -0
- package/dist/utils/correctColor.js +79 -0
- package/dist/utils/correctColor.js.map +1 -0
- package/dist/utils/escapeRegExp.d.ts +2 -0
- package/dist/utils/escapeRegExp.d.ts.map +1 -0
- package/dist/utils/escapeRegExp.js +4 -0
- package/dist/utils/escapeRegExp.js.map +1 -0
- package/dist/utils/formatDate.d.ts +6 -0
- package/dist/utils/formatDate.d.ts.map +1 -0
- package/dist/utils/formatDate.js +325 -0
- package/dist/utils/formatDate.js.map +1 -0
- package/dist/utils/padLeft.d.ts +2 -0
- package/dist/utils/padLeft.d.ts.map +1 -0
- package/dist/utils/padLeft.js +7 -0
- package/dist/utils/padLeft.js.map +1 -0
- package/dist/utils/uniq.d.ts +2 -0
- package/dist/utils/uniq.d.ts.map +1 -0
- package/dist/utils/uniq.js +4 -0
- package/dist/utils/uniq.js.map +1 -0
- package/dist/utils/wrapError.d.ts +10 -0
- package/dist/utils/wrapError.d.ts.map +1 -0
- package/dist/utils/wrapError.js +9 -0
- package/dist/utils/wrapError.js.map +1 -0
- package/package.json +58 -0
- package/src/DivKit.tsx +542 -0
- package/src/actions/array.ts +170 -0
- package/src/actions/copyToClipboard.ts +82 -0
- package/src/actions/dict.ts +71 -0
- package/src/actions/index.ts +11 -0
- package/src/actions/updateStructure.ts +134 -0
- package/src/components/DivComponent.tsx +75 -0
- package/src/components/README.md +230 -0
- package/src/components/container/DivContainer.tsx +222 -0
- package/src/components/container/index.ts +2 -0
- package/src/components/image/DivImage.tsx +172 -0
- package/src/components/image/index.ts +2 -0
- package/src/components/index.ts +20 -0
- package/src/components/state/DivState.tsx +146 -0
- package/src/components/state/index.ts +2 -0
- package/src/components/text/DivText.tsx +186 -0
- package/src/components/text/index.ts +2 -0
- package/src/components/utilities/Outer.tsx +239 -0
- package/src/components/utilities/README.md +175 -0
- package/src/components/utilities/Unknown.tsx +60 -0
- package/src/components/utilities/index.ts +4 -0
- package/src/context/ActionContext.tsx +37 -0
- package/src/context/DivKitContext.tsx +54 -0
- package/src/context/EnabledContext.tsx +50 -0
- package/src/context/StateContext.tsx +75 -0
- package/src/context/index.ts +33 -0
- package/src/expressions/ast.d.ts +101 -0
- package/src/expressions/bigint.ts +38 -0
- package/src/expressions/const.ts +16 -0
- package/src/expressions/eval.ts +669 -0
- package/src/expressions/expressions.peggy +235 -0
- package/src/expressions/expressions.ts +2854 -0
- package/src/expressions/funcs/array.ts +412 -0
- package/src/expressions/funcs/colors.ts +100 -0
- package/src/expressions/funcs/customFuncs.ts +139 -0
- package/src/expressions/funcs/datetime.ts +232 -0
- package/src/expressions/funcs/dict.ts +207 -0
- package/src/expressions/funcs/funcs.ts +323 -0
- package/src/expressions/funcs/index.ts +23 -0
- package/src/expressions/funcs/interval.ts +76 -0
- package/src/expressions/funcs/math.ts +395 -0
- package/src/expressions/funcs/std.ts +392 -0
- package/src/expressions/funcs/stored.ts +62 -0
- package/src/expressions/funcs/strings.ts +200 -0
- package/src/expressions/funcs/trigonometry.ts +108 -0
- package/src/expressions/json.ts +367 -0
- package/src/expressions/parserCache.ts +32 -0
- package/src/expressions/simpleUnescapeString.ts +57 -0
- package/src/expressions/utils.ts +271 -0
- package/src/expressions/variable.ts +429 -0
- package/src/expressions/walk.ts +43 -0
- package/src/hooks/README.md +265 -0
- package/src/hooks/index.ts +28 -0
- package/src/hooks/useAction.ts +152 -0
- package/src/hooks/useDerivedFromVars.ts +187 -0
- package/src/hooks/useVariable.ts +157 -0
- package/src/index.ts +97 -0
- package/src/stores/createObservable.ts +64 -0
- package/src/types/alignment.d.ts +13 -0
- package/src/types/background.d.ts +71 -0
- package/src/types/base.d.ts +224 -0
- package/src/types/border.d.ts +46 -0
- package/src/types/componentContext.d.ts +98 -0
- package/src/types/container.d.ts +40 -0
- package/src/types/edgeInserts.d.ts +9 -0
- package/src/types/general.d.ts +3 -0
- package/src/types/image.d.ts +33 -0
- package/src/types/imageScale.d.ts +1 -0
- package/src/types/layoutParams.d.ts +27 -0
- package/src/types/sizes.d.ts +37 -0
- package/src/types/state.d.ts +19 -0
- package/src/types/text.d.ts +126 -0
- package/src/utils/applyTemplate.ts +145 -0
- package/src/utils/correctColor.ts +102 -0
- package/src/utils/escapeRegExp.ts +3 -0
- package/src/utils/formatDate.ts +385 -0
- package/src/utils/padLeft.ts +6 -0
- package/src/utils/uniq.ts +3 -0
- package/src/utils/wrapError.ts +21 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { writable } from '../stores/createObservable';
|
|
2
|
+
import { parseColor } from '../utils/correctColor';
|
|
3
|
+
import { bigIntZero, toBigInt } from './bigint';
|
|
4
|
+
import { checkUrl, transformColorValue } from './utils';
|
|
5
|
+
import { BOOLEAN } from './const';
|
|
6
|
+
export class Variable {
|
|
7
|
+
constructor(name, value) {
|
|
8
|
+
const val = this.convertValue(value);
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.value = val;
|
|
11
|
+
}
|
|
12
|
+
getName() {
|
|
13
|
+
return this.name;
|
|
14
|
+
}
|
|
15
|
+
subscribe(cb) {
|
|
16
|
+
if (!this.store) {
|
|
17
|
+
this.store = writable(this.value);
|
|
18
|
+
}
|
|
19
|
+
return this.store.subscribe(cb);
|
|
20
|
+
}
|
|
21
|
+
set(val) {
|
|
22
|
+
const value = this.fromString(val);
|
|
23
|
+
this.setValue(value);
|
|
24
|
+
}
|
|
25
|
+
setValue(val) {
|
|
26
|
+
const converted = this.convertValue(val);
|
|
27
|
+
this.value = converted;
|
|
28
|
+
if (this.store) {
|
|
29
|
+
this.store.set(converted);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
getValue() {
|
|
33
|
+
return this.value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class StringVariable extends Variable {
|
|
37
|
+
convertValue(value) {
|
|
38
|
+
if (typeof value !== 'string') {
|
|
39
|
+
throw new Error('Incorrect variable value');
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
fromString(val) {
|
|
44
|
+
return val;
|
|
45
|
+
}
|
|
46
|
+
getType() {
|
|
47
|
+
return 'string';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class IntegerVariable extends Variable {
|
|
51
|
+
convertValue(value) {
|
|
52
|
+
if (typeof value !== 'bigint' && typeof value !== 'number') {
|
|
53
|
+
throw new Error('Incorrect variable value');
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
return toBigInt(value);
|
|
57
|
+
}
|
|
58
|
+
catch (_err) {
|
|
59
|
+
throw new Error('Incorrect variable value');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
fromString(val) {
|
|
63
|
+
try {
|
|
64
|
+
return toBigInt(val);
|
|
65
|
+
}
|
|
66
|
+
catch (_err) {
|
|
67
|
+
throw new Error('Incorrect variable value');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
getType() {
|
|
71
|
+
return 'integer';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export class NumberVariable extends Variable {
|
|
75
|
+
convertValue(value) {
|
|
76
|
+
if (typeof value !== 'number' ||
|
|
77
|
+
Number.isNaN(value) ||
|
|
78
|
+
!isFinite(value)) {
|
|
79
|
+
throw new Error('Incorrect variable value');
|
|
80
|
+
}
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
fromString(val) {
|
|
84
|
+
const res = Number(val);
|
|
85
|
+
return this.convertValue(res);
|
|
86
|
+
}
|
|
87
|
+
getType() {
|
|
88
|
+
return 'number';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export class BooleanVariable extends Variable {
|
|
92
|
+
convertValue(value) {
|
|
93
|
+
if (value !== 1 && value !== 0 && value !== true && value !== false) {
|
|
94
|
+
throw new Error('Incorrect variable value');
|
|
95
|
+
}
|
|
96
|
+
return Boolean(value);
|
|
97
|
+
}
|
|
98
|
+
fromString(val) {
|
|
99
|
+
if (val === '1' || val === 'true') {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
else if (val === '0' || val === 'false') {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
throw new Error('Incorrect variable value');
|
|
106
|
+
}
|
|
107
|
+
getType() {
|
|
108
|
+
return 'boolean';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export class ColorVariable extends Variable {
|
|
112
|
+
convertValue(value) {
|
|
113
|
+
if (typeof value !== 'string' || !parseColor(value)) {
|
|
114
|
+
throw new Error('Incorrect variable value');
|
|
115
|
+
}
|
|
116
|
+
return transformColorValue(value);
|
|
117
|
+
}
|
|
118
|
+
fromString(val) {
|
|
119
|
+
return this.convertValue(val);
|
|
120
|
+
}
|
|
121
|
+
getType() {
|
|
122
|
+
return 'color';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export class UrlVariable extends Variable {
|
|
126
|
+
convertValue(value) {
|
|
127
|
+
if (typeof value !== 'string') {
|
|
128
|
+
throw new Error('Incorrect variable value');
|
|
129
|
+
}
|
|
130
|
+
checkUrl(value);
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
fromString(val) {
|
|
134
|
+
checkUrl(val);
|
|
135
|
+
return val;
|
|
136
|
+
}
|
|
137
|
+
getType() {
|
|
138
|
+
return 'url';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export class DictVariable extends Variable {
|
|
142
|
+
convertValue(value) {
|
|
143
|
+
if (typeof value !== 'object' || !value) {
|
|
144
|
+
throw new Error('Incorrect variable value');
|
|
145
|
+
}
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
fromString(val) {
|
|
149
|
+
try {
|
|
150
|
+
return JSON.parse(val);
|
|
151
|
+
}
|
|
152
|
+
catch (_err) {
|
|
153
|
+
throw new Error('Incorrect dict value');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
getType() {
|
|
157
|
+
return 'dict';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export class ArrayVariable extends Variable {
|
|
161
|
+
convertValue(value) {
|
|
162
|
+
if (!Array.isArray(value)) {
|
|
163
|
+
throw new Error('Incorrect variable value');
|
|
164
|
+
}
|
|
165
|
+
return value;
|
|
166
|
+
}
|
|
167
|
+
fromString(val) {
|
|
168
|
+
try {
|
|
169
|
+
return JSON.parse(val);
|
|
170
|
+
}
|
|
171
|
+
catch (_err) {
|
|
172
|
+
throw new Error('Incorrect array value');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
getType() {
|
|
176
|
+
return 'array';
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export const TYPE_TO_CLASS = {
|
|
180
|
+
string: StringVariable,
|
|
181
|
+
number: NumberVariable,
|
|
182
|
+
integer: IntegerVariable,
|
|
183
|
+
boolean: BooleanVariable,
|
|
184
|
+
color: ColorVariable,
|
|
185
|
+
url: UrlVariable,
|
|
186
|
+
dict: DictVariable,
|
|
187
|
+
array: ArrayVariable
|
|
188
|
+
};
|
|
189
|
+
export function createVariable(name, type, value) {
|
|
190
|
+
if (!(type in TYPE_TO_CLASS)) {
|
|
191
|
+
throw new Error('Unsupported variable type');
|
|
192
|
+
}
|
|
193
|
+
return new TYPE_TO_CLASS[type](name, value);
|
|
194
|
+
}
|
|
195
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
196
|
+
function noop() {
|
|
197
|
+
}
|
|
198
|
+
function constSubscribe(cb) {
|
|
199
|
+
cb(this.value);
|
|
200
|
+
return noop;
|
|
201
|
+
}
|
|
202
|
+
function constSetter() {
|
|
203
|
+
throw new Error('Cannot change the value of this type of variable');
|
|
204
|
+
}
|
|
205
|
+
class ConstStringVariable extends StringVariable {
|
|
206
|
+
}
|
|
207
|
+
class ConstNumberVariable extends NumberVariable {
|
|
208
|
+
}
|
|
209
|
+
class ConstIntegerVariable extends IntegerVariable {
|
|
210
|
+
}
|
|
211
|
+
class ConstBooleanVariable extends BooleanVariable {
|
|
212
|
+
}
|
|
213
|
+
class ConstColorVariable extends ColorVariable {
|
|
214
|
+
}
|
|
215
|
+
class ConstUrlVariable extends UrlVariable {
|
|
216
|
+
}
|
|
217
|
+
class ConstDictVariable extends DictVariable {
|
|
218
|
+
}
|
|
219
|
+
class ConstArrayVariable extends ArrayVariable {
|
|
220
|
+
}
|
|
221
|
+
class ConstDatetimeVariable extends Variable {
|
|
222
|
+
convertValue(value) {
|
|
223
|
+
if (!(value instanceof Date)) {
|
|
224
|
+
throw new Error('Incorrect variable value');
|
|
225
|
+
}
|
|
226
|
+
return value;
|
|
227
|
+
}
|
|
228
|
+
fromString() {
|
|
229
|
+
throw new Error('Datetime variable does not support setter from string');
|
|
230
|
+
}
|
|
231
|
+
getType() {
|
|
232
|
+
return 'datetime';
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
export const CONST_TYPE_TO_CLASS = {
|
|
236
|
+
string: ConstStringVariable,
|
|
237
|
+
number: ConstNumberVariable,
|
|
238
|
+
integer: ConstIntegerVariable,
|
|
239
|
+
boolean: ConstBooleanVariable,
|
|
240
|
+
color: ConstColorVariable,
|
|
241
|
+
url: ConstUrlVariable,
|
|
242
|
+
dict: ConstDictVariable,
|
|
243
|
+
array: ConstArrayVariable,
|
|
244
|
+
datetime: ConstDatetimeVariable
|
|
245
|
+
};
|
|
246
|
+
for (const type in CONST_TYPE_TO_CLASS) {
|
|
247
|
+
const Class = CONST_TYPE_TO_CLASS[type];
|
|
248
|
+
Class.prototype.subscribe = constSubscribe;
|
|
249
|
+
Class.prototype.set = constSetter;
|
|
250
|
+
Class.prototype.setValue = constSetter;
|
|
251
|
+
}
|
|
252
|
+
export function createConstVariable(name, type, value) {
|
|
253
|
+
if (!(type in CONST_TYPE_TO_CLASS)) {
|
|
254
|
+
throw new Error('Unsupported variable type');
|
|
255
|
+
}
|
|
256
|
+
return new CONST_TYPE_TO_CLASS[type](name, value);
|
|
257
|
+
}
|
|
258
|
+
export function defaultValueByType(type) {
|
|
259
|
+
if (type === 'integer') {
|
|
260
|
+
return bigIntZero;
|
|
261
|
+
}
|
|
262
|
+
if (type === 'boolean' || type === 'number') {
|
|
263
|
+
return 0;
|
|
264
|
+
}
|
|
265
|
+
if (type === 'dict') {
|
|
266
|
+
return {};
|
|
267
|
+
}
|
|
268
|
+
if (type === 'array') {
|
|
269
|
+
return [];
|
|
270
|
+
}
|
|
271
|
+
return '';
|
|
272
|
+
}
|
|
273
|
+
export function variableToValue(variable) {
|
|
274
|
+
const type = variable.getType();
|
|
275
|
+
let value = variable.getValue();
|
|
276
|
+
if (type === BOOLEAN) {
|
|
277
|
+
value = value ? 1 : 0;
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
type,
|
|
281
|
+
value
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
export function variableValueFromString(val, type) {
|
|
285
|
+
if (type === 'string') {
|
|
286
|
+
return val;
|
|
287
|
+
}
|
|
288
|
+
else if (type === 'integer') {
|
|
289
|
+
try {
|
|
290
|
+
return toBigInt(val);
|
|
291
|
+
}
|
|
292
|
+
catch (_err) {
|
|
293
|
+
throw new Error('Incorrect variable value');
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else if (type === 'number') {
|
|
297
|
+
const converted = Number(val);
|
|
298
|
+
if (Number.isNaN(converted) ||
|
|
299
|
+
!isFinite(converted)) {
|
|
300
|
+
throw new Error('Incorrect variable value');
|
|
301
|
+
}
|
|
302
|
+
return converted;
|
|
303
|
+
}
|
|
304
|
+
else if (type === 'boolean') {
|
|
305
|
+
if (val === '1' || val === 'true') {
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
else if (val === '0' || val === 'false') {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
throw new Error('Incorrect variable value');
|
|
312
|
+
}
|
|
313
|
+
else if (type === 'color') {
|
|
314
|
+
if (typeof val !== 'string' || !parseColor(val)) {
|
|
315
|
+
throw new Error('Incorrect variable value');
|
|
316
|
+
}
|
|
317
|
+
return transformColorValue(val);
|
|
318
|
+
}
|
|
319
|
+
else if (type === 'url') {
|
|
320
|
+
if (typeof val !== 'string') {
|
|
321
|
+
throw new Error('Incorrect variable value');
|
|
322
|
+
}
|
|
323
|
+
checkUrl(val);
|
|
324
|
+
return val;
|
|
325
|
+
}
|
|
326
|
+
else if (type === 'dict' || type === 'array') {
|
|
327
|
+
try {
|
|
328
|
+
return JSON.parse(val);
|
|
329
|
+
}
|
|
330
|
+
catch (_err) {
|
|
331
|
+
throw new Error('Incorrect dict value');
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// For purpose when new eval value types will be added
|
|
335
|
+
throw new Error(`Unexpected type ${type}`);
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=variable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable.js","sourceRoot":"","sources":["../../src/expressions/variable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,MAAM,OAAgB,QAAQ;IAS1B,YAAY,IAAY,EAAE,KAAwB;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAID,SAAS,CAAC,EAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,GAAW;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAID,QAAQ,CAAC,GAAsB;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QAEvB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CAGJ;AAED,MAAM,OAAO,cAAe,SAAQ,QAA0B;IAChD,YAAY,CAAC,KAAc;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,QAA4C;IACnE,YAAY,CAAC,KAAc;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,IAAI,CAAC;YACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAED,MAAM,OAAO,cAAe,SAAQ,QAA0B;IAChD,YAAY,CAAC,KAAc;QACjC,IACI,OAAO,KAAK,KAAK,QAAQ;YACzB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACnB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClB,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,QAA4B;IACnD,YAAY,CAAC,KAAc;QACjC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACH,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAED,MAAM,OAAO,aAAc,SAAQ,QAAyB;IAC9C,YAAY,CAAC,KAAc;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACH,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAED,MAAM,OAAO,WAAY,SAAQ,QAAuB;IAC1C,YAAY,CAAC,KAAc;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhB,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEd,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,QAAwB;IAC5C,YAAY,CAAC,KAAc;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAED,MAAM,OAAO,aAAc,SAAQ,QAA4B;IACjD,YAAY,CAAC,KAAgB;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,UAAU,CAAC,GAAW;QAC5B,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAqE;IAC3F,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;CACvB,CAAC;AAEF,MAAM,UAAU,cAAc,CAC1B,IAAY,EACZ,IAAkB,EAClB,KAAc;IAEd,IAAI,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,IAAK,aAAa,CAAC,IAAI,CAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,gEAAgE;AAChE,SAAS,IAAI;AACb,CAAC;AAED,SAAS,cAAc,CAAuC,EAAyB;IACnF,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,WAAW;IAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,mBAAoB,SAAQ,cAAc;CAAG;AACnD,MAAM,mBAAoB,SAAQ,cAAc;CAAG;AACnD,MAAM,oBAAqB,SAAQ,eAAe;CAAG;AACrD,MAAM,oBAAqB,SAAQ,eAAe;CAAG;AACrD,MAAM,kBAAmB,SAAQ,aAAa;CAAG;AACjD,MAAM,gBAAiB,SAAQ,WAAW;CAAG;AAC7C,MAAM,iBAAkB,SAAQ,YAAY;CAAG;AAC/C,MAAM,kBAAmB,SAAQ,aAAa;CAAG;AAEjD,MAAM,qBAAsB,SAAQ,QAA0B;IAChD,YAAY,CAAC,KAAc;QACjC,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,UAAU;QAChB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACH,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAU5B;IACA,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,oBAAoB;IAC7B,KAAK,EAAE,kBAAkB;IACzB,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,kBAAkB;IACzB,QAAQ,EAAE,qBAAqB;CAC3B,CAAC;AAET,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAwC,CAAC,CAAC;IAE5E,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC;IAC3C,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;IAClC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,IAAY,EACZ,IAA+B,EAC/B,KAAc;IAEd,IAAI,CAAC,CAAC,IAAI,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,IAAK,mBAAmB,CAAC,IAAI,CAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAgC;IAC/D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAkB;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEhC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,IAAI;QACJ,KAAK;KACR,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,IAAkB;IACnE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACf,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC;YACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IACI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;YACvB,CAAC,QAAQ,CAAC,SAAS,CAAC,EACtB,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEd,OAAO,GAAG,CAAC;IACf,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/expressions/walk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KACrC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,KAAK,IAAI;CACzE,GAAG,IAAI,CAsCP"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function walk(ast, visitors) {
|
|
2
|
+
visitors[ast.type]?.(ast);
|
|
3
|
+
switch (ast.type) {
|
|
4
|
+
case 'TemplateLiteral':
|
|
5
|
+
ast.expressions.forEach(item => {
|
|
6
|
+
walk(item, visitors);
|
|
7
|
+
});
|
|
8
|
+
break;
|
|
9
|
+
case 'BinaryExpression':
|
|
10
|
+
case 'LogicalExpression':
|
|
11
|
+
walk(ast.left, visitors);
|
|
12
|
+
walk(ast.right, visitors);
|
|
13
|
+
break;
|
|
14
|
+
case 'UnaryExpression':
|
|
15
|
+
walk(ast.argument, visitors);
|
|
16
|
+
break;
|
|
17
|
+
case 'ConditionalExpression':
|
|
18
|
+
walk(ast.test, visitors);
|
|
19
|
+
walk(ast.consequent, visitors);
|
|
20
|
+
walk(ast.alternate, visitors);
|
|
21
|
+
break;
|
|
22
|
+
case 'TryExpression':
|
|
23
|
+
walk(ast.test, visitors);
|
|
24
|
+
walk(ast.alternate, visitors);
|
|
25
|
+
break;
|
|
26
|
+
case 'CallExpression':
|
|
27
|
+
ast.arguments.forEach(item => {
|
|
28
|
+
walk(item, visitors);
|
|
29
|
+
});
|
|
30
|
+
break;
|
|
31
|
+
case 'MethodExpression':
|
|
32
|
+
walk(ast.object, visitors);
|
|
33
|
+
ast.arguments.forEach(item => {
|
|
34
|
+
walk(item, visitors);
|
|
35
|
+
});
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=walk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/expressions/walk.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,IAAI,CAAC,GAAS,EAAE,QAE/B;IACG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAU,CAAC,CAAC;IAEjC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,iBAAiB;YAClB,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,MAAM;QACV,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB;YACpB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1B,MAAM;QACV,KAAK,iBAAiB;YAClB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7B,MAAM;QACV,KAAK,uBAAuB;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9B,MAAM;QACV,KAAK,eAAe;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9B,MAAM;QACV,KAAK,gBAAgB;YACjB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,MAAM;QACV,KAAK,kBAAkB;YACnB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,MAAM;IACd,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DivKit React Hooks
|
|
3
|
+
* Export all custom hooks for use in React Native components
|
|
4
|
+
*/
|
|
5
|
+
export { useDerivedFromVars, useDerivedFromVarsSimple, type UseDerivedFromVarsOptions } from './useDerivedFromVars';
|
|
6
|
+
export { useVariable, useVariableInstance, useVariableSetter, useVariableState } from './useVariable';
|
|
7
|
+
export { useAction, useActions, useActionHandler, useHasActions, type UseActionOptions } from './useAction';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,yBAAyB,EACjC,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACH,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,KAAK,gBAAgB,EACxB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DivKit React Hooks
|
|
3
|
+
* Export all custom hooks for use in React Native components
|
|
4
|
+
*/
|
|
5
|
+
// Main reactivity hook - variable substitution in JSON
|
|
6
|
+
export { useDerivedFromVars, useDerivedFromVarsSimple } from './useDerivedFromVars';
|
|
7
|
+
// Variable subscription hooks
|
|
8
|
+
export { useVariable, useVariableInstance, useVariableSetter, useVariableState } from './useVariable';
|
|
9
|
+
// Action execution hooks
|
|
10
|
+
export { useAction, useActions, useActionHandler, useHasActions } from './useAction';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uDAAuD;AACvD,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EAE3B,MAAM,sBAAsB,CAAC;AAE9B,8BAA8B;AAC9B,OAAO,EACH,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,eAAe,CAAC;AAEvB,yBAAyB;AACzB,OAAO,EACH,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EAEhB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hooks for executing DivKit actions
|
|
3
|
+
* Handles click actions, visibility actions, and other user interactions
|
|
4
|
+
*/
|
|
5
|
+
import type { Action } from '../../typings/common';
|
|
6
|
+
import type { MaybeMissing } from '../expressions/json';
|
|
7
|
+
import type { ComponentContext } from '../types/componentContext';
|
|
8
|
+
export interface UseActionOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Component context (for action execution context)
|
|
11
|
+
*/
|
|
12
|
+
componentContext?: ComponentContext;
|
|
13
|
+
/**
|
|
14
|
+
* Whether to process URLs (open external links)
|
|
15
|
+
* Default: true
|
|
16
|
+
*/
|
|
17
|
+
processUrls?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Hook to execute a single action
|
|
21
|
+
*
|
|
22
|
+
* @param options Action execution options
|
|
23
|
+
* @returns Function to execute an action
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* function MyButton({ action }: { action: Action }) {
|
|
28
|
+
* const execAction = useAction();
|
|
29
|
+
*
|
|
30
|
+
* return (
|
|
31
|
+
* <Pressable onPress={() => execAction(action)}>
|
|
32
|
+
* <Text>Click me</Text>
|
|
33
|
+
* </Pressable>
|
|
34
|
+
* );
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function useAction(options?: UseActionOptions): (action: MaybeMissing<Action> | undefined) => Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Hook to execute multiple actions
|
|
41
|
+
*
|
|
42
|
+
* @param options Action execution options
|
|
43
|
+
* @returns Function to execute an array of actions
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* function MyButton({ actions }: { actions: Action[] }) {
|
|
48
|
+
* const execActions = useActions();
|
|
49
|
+
*
|
|
50
|
+
* return (
|
|
51
|
+
* <Pressable onPress={() => execActions(actions)}>
|
|
52
|
+
* <Text>Click me</Text>
|
|
53
|
+
* </Pressable>
|
|
54
|
+
* );
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function useActions(options?: UseActionOptions): (actions: MaybeMissing<Action[]> | undefined) => Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Hook to create an onPress handler from actions
|
|
61
|
+
* Convenience hook for Pressable/TouchableOpacity components
|
|
62
|
+
*
|
|
63
|
+
* @param actions Actions to execute on press
|
|
64
|
+
* @param options Action execution options
|
|
65
|
+
* @returns onPress handler function, or undefined if no actions
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* function DivText({ json }: { json: DivTextJson }) {
|
|
70
|
+
* const onPress = useActionHandler(json.actions);
|
|
71
|
+
*
|
|
72
|
+
* return (
|
|
73
|
+
* <Pressable onPress={onPress}>
|
|
74
|
+
* <Text>{json.text}</Text>
|
|
75
|
+
* </Pressable>
|
|
76
|
+
* );
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function useActionHandler(actions: MaybeMissing<Action[]> | undefined, options?: UseActionOptions): (() => Promise<void>) | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Hook to check if actions array is not empty
|
|
83
|
+
* Useful for conditional rendering or styling
|
|
84
|
+
*
|
|
85
|
+
* @param actions Actions to check
|
|
86
|
+
* @returns true if actions exist and are not empty
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```tsx
|
|
90
|
+
* function DivText({ json }: { json: DivTextJson }) {
|
|
91
|
+
* const hasActions = useHasActions(json.actions);
|
|
92
|
+
*
|
|
93
|
+
* return (
|
|
94
|
+
* <Text style={{ cursor: hasActions ? 'pointer' : 'default' }}>
|
|
95
|
+
* {json.text}
|
|
96
|
+
* </Text>
|
|
97
|
+
* );
|
|
98
|
+
* }
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function useHasActions(actions: MaybeMissing<Action[]> | undefined): boolean;
|
|
102
|
+
//# sourceMappingURL=useAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAction.d.ts","sourceRoot":"","sources":["../../src/hooks/useAction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,YAI7B,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,mBAStD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,gBAAgB,aAI7B,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,mBASzD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE,gBAAgB,GAC3B,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CASnC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CACzB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,GAC5C,OAAO,CAET"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hooks for executing DivKit actions
|
|
3
|
+
* Handles click actions, visibility actions, and other user interactions
|
|
4
|
+
*/
|
|
5
|
+
import { useCallback } from 'react';
|
|
6
|
+
import { useDivKitContext } from '../context/DivKitContext';
|
|
7
|
+
/**
|
|
8
|
+
* Hook to execute a single action
|
|
9
|
+
*
|
|
10
|
+
* @param options Action execution options
|
|
11
|
+
* @returns Function to execute an action
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* function MyButton({ action }: { action: Action }) {
|
|
16
|
+
* const execAction = useAction();
|
|
17
|
+
*
|
|
18
|
+
* return (
|
|
19
|
+
* <Pressable onPress={() => execAction(action)}>
|
|
20
|
+
* <Text>Click me</Text>
|
|
21
|
+
* </Pressable>
|
|
22
|
+
* );
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function useAction(options) {
|
|
27
|
+
const { execAnyActions } = useDivKitContext();
|
|
28
|
+
return useCallback(async (action) => {
|
|
29
|
+
if (!action) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await execAnyActions([action], options);
|
|
33
|
+
}, [execAnyActions, options]);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Hook to execute multiple actions
|
|
37
|
+
*
|
|
38
|
+
* @param options Action execution options
|
|
39
|
+
* @returns Function to execute an array of actions
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* function MyButton({ actions }: { actions: Action[] }) {
|
|
44
|
+
* const execActions = useActions();
|
|
45
|
+
*
|
|
46
|
+
* return (
|
|
47
|
+
* <Pressable onPress={() => execActions(actions)}>
|
|
48
|
+
* <Text>Click me</Text>
|
|
49
|
+
* </Pressable>
|
|
50
|
+
* );
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function useActions(options) {
|
|
55
|
+
const { execAnyActions } = useDivKitContext();
|
|
56
|
+
return useCallback(async (actions) => {
|
|
57
|
+
if (!actions || actions.length === 0) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
await execAnyActions(actions, options);
|
|
61
|
+
}, [execAnyActions, options]);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Hook to create an onPress handler from actions
|
|
65
|
+
* Convenience hook for Pressable/TouchableOpacity components
|
|
66
|
+
*
|
|
67
|
+
* @param actions Actions to execute on press
|
|
68
|
+
* @param options Action execution options
|
|
69
|
+
* @returns onPress handler function, or undefined if no actions
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```tsx
|
|
73
|
+
* function DivText({ json }: { json: DivTextJson }) {
|
|
74
|
+
* const onPress = useActionHandler(json.actions);
|
|
75
|
+
*
|
|
76
|
+
* return (
|
|
77
|
+
* <Pressable onPress={onPress}>
|
|
78
|
+
* <Text>{json.text}</Text>
|
|
79
|
+
* </Pressable>
|
|
80
|
+
* );
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export function useActionHandler(actions, options) {
|
|
85
|
+
const execActions = useActions(options);
|
|
86
|
+
return useCallback(() => {
|
|
87
|
+
if (!actions || actions.length === 0) {
|
|
88
|
+
return Promise.resolve();
|
|
89
|
+
}
|
|
90
|
+
return execActions(actions);
|
|
91
|
+
}, [actions, execActions]);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Hook to check if actions array is not empty
|
|
95
|
+
* Useful for conditional rendering or styling
|
|
96
|
+
*
|
|
97
|
+
* @param actions Actions to check
|
|
98
|
+
* @returns true if actions exist and are not empty
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```tsx
|
|
102
|
+
* function DivText({ json }: { json: DivTextJson }) {
|
|
103
|
+
* const hasActions = useHasActions(json.actions);
|
|
104
|
+
*
|
|
105
|
+
* return (
|
|
106
|
+
* <Text style={{ cursor: hasActions ? 'pointer' : 'default' }}>
|
|
107
|
+
* {json.text}
|
|
108
|
+
* </Text>
|
|
109
|
+
* );
|
|
110
|
+
* }
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export function useHasActions(actions) {
|
|
114
|
+
return Boolean(actions && actions.length > 0);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=useAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAction.js","sourceRoot":"","sources":["../../src/hooks/useAction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAgB5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CAAC,OAA0B;IAChD,MAAM,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE9C,OAAO,WAAW,CACd,KAAK,EAAE,MAAwC,EAAE,EAAE;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,EACD,CAAC,cAAc,EAAE,OAAO,CAAC,CAC5B,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACjD,MAAM,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE9C,OAAO,WAAW,CACd,KAAK,EAAE,OAA2C,EAAE,EAAE;QAClD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACX,CAAC;QAED,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,EACD,CAAC,cAAc,EAAE,OAAO,CAAC,CAC5B,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAC5B,OAA2C,EAC3C,OAA0B;IAE1B,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,WAAW,CAAC,GAAG,EAAE;QACpB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CACzB,OAA2C;IAE3C,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC"}
|