cx 24.3.8 → 24.3.9

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/src/ui/Format.js CHANGED
@@ -1,87 +1,107 @@
1
- import { Culture } from "./Culture";
2
- import { Format as Fmt, resolveMinMaxFractionDigits } from "../util/Format";
3
- import { GlobalCacheIdentifier } from "../util/GlobalCacheIdentifier";
4
-
5
- export const Format = Fmt;
6
-
7
- let cultureSensitiveFormatsRegistered = false;
8
-
9
- export function resolveNumberFormattingFlags(flags) {
10
- if (!flags) return null;
11
- let result = {};
12
- if (flags.indexOf("+") >= 0) result.signDisplay = "exceptZero";
13
- if (flags.indexOf("c") >= 0) result.notation = "compact";
14
- if (flags.indexOf("a") >= 0) result.currencySign = "accounting";
15
- return result;
16
- }
17
-
18
- export function enableCultureSensitiveFormatting() {
19
- if (cultureSensitiveFormatsRegistered) return;
20
-
21
- cultureSensitiveFormatsRegistered = true;
22
-
23
- Fmt.registerFactory(["number", "n"], (format, minimumFractionDigits, maximumFractionDigits, flags) => {
24
- let culture = Culture.getNumberCulture();
25
-
26
- let formatter = culture.getFormatter({
27
- ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
28
- ...resolveNumberFormattingFlags(flags),
29
- });
30
-
31
- return (value) => formatter.format(value);
32
- });
33
-
34
- Fmt.registerFactory("currency", (format, currency, minimumFractionDigits, maximumFractionDigits, flags) => {
35
- let culture = Culture.getNumberCulture();
36
- currency = currency || Culture.defaultCurrency;
37
-
38
- let formatter = culture.getFormatter({
39
- style: "currency",
40
- currency: currency,
41
- ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
42
- ...resolveNumberFormattingFlags(flags),
43
- });
44
-
45
- return (value) => formatter.format(value);
46
- });
47
-
48
- Fmt.registerFactory(["percentage", "p", "%"], (format, minimumFractionDigits, maximumFractionDigits, flags) => {
49
- let culture = Culture.getNumberCulture();
50
- let formatter = culture.getFormatter({
51
- style: "percent",
52
- ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
53
- ...resolveNumberFormattingFlags(flags),
54
- });
55
- return (value) => formatter.format(value);
56
- });
57
-
58
- Fmt.registerFactory(["percentSign", "ps"], (format, minimumFractionDigits, maximumFractionDigits, flags) => {
59
- let culture = Culture.getNumberCulture();
60
- let formatter = culture.getFormatter({
61
- style: "percent",
62
- ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
63
- ...resolveNumberFormattingFlags(flags),
64
- });
65
- return (value) => formatter.format(value / 100);
66
- });
67
-
68
- Fmt.registerFactory(["date", "d"], (fmt, format = "yyyyMMdd") => {
69
- let culture = Culture.getDateTimeCulture();
70
- let formatter = culture.getFormatter(format);
71
- return (value) => formatter.format(new Date(value));
72
- });
73
-
74
- Fmt.registerFactory(["time", "t"], (fmt, format = "hhmmss") => {
75
- let culture = Culture.getDateTimeCulture();
76
- let formatter = culture.getFormatter(format);
77
- return (value) => formatter.format(new Date(value));
78
- });
79
-
80
- Fmt.registerFactory(["datetime", "dt"], (fmt, format = "yyyyMd hhmm") => {
81
- let culture = Culture.getDateTimeCulture();
82
- let formatter = culture.getFormatter(format);
83
- return (value) => formatter.format(new Date(value));
84
- });
85
-
86
- GlobalCacheIdentifier.change();
87
- }
1
+ import { Culture, getCurrentCultureCache } from "./Culture";
2
+ import { Format as Fmt, resolveMinMaxFractionDigits, setGetFormatCacheCallback } from "../util/Format";
3
+ import { GlobalCacheIdentifier } from "../util/GlobalCacheIdentifier";
4
+ import { setGetExpressionCacheCallback } from "../data/Expression";
5
+ import { setGetStringTemplateCacheCallback } from "../data/StringTemplate";
6
+
7
+ export const Format = Fmt;
8
+
9
+ let cultureSensitiveFormatsRegistered = false;
10
+
11
+ export function resolveNumberFormattingFlags(flags) {
12
+ if (!flags) return null;
13
+ let result = {};
14
+ if (flags.indexOf("+") >= 0) result.signDisplay = "exceptZero";
15
+ if (flags.indexOf("c") >= 0) result.notation = "compact";
16
+ if (flags.indexOf("a") >= 0) result.currencySign = "accounting";
17
+ return result;
18
+ }
19
+
20
+ export function enableCultureSensitiveFormatting() {
21
+ if (cultureSensitiveFormatsRegistered) return;
22
+
23
+ cultureSensitiveFormatsRegistered = true;
24
+
25
+ Fmt.registerFactory(["number", "n"], (format, minimumFractionDigits, maximumFractionDigits, flags) => {
26
+ let culture = Culture.getNumberCulture();
27
+
28
+ let formatter = culture.getFormatter({
29
+ ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
30
+ ...resolveNumberFormattingFlags(flags),
31
+ });
32
+
33
+ return (value) => formatter.format(value);
34
+ });
35
+
36
+ Fmt.registerFactory("currency", (format, currency, minimumFractionDigits, maximumFractionDigits, flags) => {
37
+ let culture = Culture.getNumberCulture();
38
+ currency = currency || Culture.defaultCurrency;
39
+
40
+ let formatter = culture.getFormatter({
41
+ style: "currency",
42
+ currency: currency,
43
+ ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
44
+ ...resolveNumberFormattingFlags(flags),
45
+ });
46
+
47
+ return (value) => formatter.format(value);
48
+ });
49
+
50
+ Fmt.registerFactory(["percentage", "p", "%"], (format, minimumFractionDigits, maximumFractionDigits, flags) => {
51
+ let culture = Culture.getNumberCulture();
52
+ let formatter = culture.getFormatter({
53
+ style: "percent",
54
+ ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
55
+ ...resolveNumberFormattingFlags(flags),
56
+ });
57
+ return (value) => formatter.format(value);
58
+ });
59
+
60
+ Fmt.registerFactory(["percentSign", "ps"], (format, minimumFractionDigits, maximumFractionDigits, flags) => {
61
+ let culture = Culture.getNumberCulture();
62
+ let formatter = culture.getFormatter({
63
+ style: "percent",
64
+ ...resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits),
65
+ ...resolveNumberFormattingFlags(flags),
66
+ });
67
+ return (value) => formatter.format(value / 100);
68
+ });
69
+
70
+ Fmt.registerFactory(["date", "d"], (fmt, format = "yyyyMMdd") => {
71
+ let culture = Culture.getDateTimeCulture();
72
+ let formatter = culture.getFormatter(format);
73
+ return (value) => formatter.format(new Date(value));
74
+ });
75
+
76
+ Fmt.registerFactory(["time", "t"], (fmt, format = "hhmmss") => {
77
+ let culture = Culture.getDateTimeCulture();
78
+ let formatter = culture.getFormatter(format);
79
+ return (value) => formatter.format(new Date(value));
80
+ });
81
+
82
+ Fmt.registerFactory(["datetime", "dt"], (fmt, format = "yyyyMd hhmm") => {
83
+ let culture = Culture.getDateTimeCulture();
84
+ let formatter = culture.getFormatter(format);
85
+ return (value) => formatter.format(new Date(value));
86
+ });
87
+
88
+ setGetFormatCacheCallback(() => {
89
+ let cache = getCurrentCultureCache();
90
+ if (!cache.formatCache) cache.formatCache = {};
91
+ return cache.formatCache;
92
+ });
93
+
94
+ setGetExpressionCacheCallback(() => {
95
+ let cache = getCurrentCultureCache();
96
+ if (!cache.exprCache) cache.exprCache = {};
97
+ return cache.exprCache;
98
+ });
99
+
100
+ setGetStringTemplateCacheCallback(() => {
101
+ let cache = getCurrentCultureCache();
102
+ if (!cache.strTplCache) cache.strTplCache = {};
103
+ return cache.strTplCache;
104
+ });
105
+
106
+ GlobalCacheIdentifier.change();
107
+ }
package/src/ui/index.d.ts CHANGED
@@ -1,42 +1,43 @@
1
- export * from "./Controller";
2
- export * from "./Widget";
3
- export * from "./Container";
4
- export * from "./PureContainer";
5
- export * from "./Repeater";
6
- export * from "./Rescope";
7
- export * from "./StaticText";
8
- export * from "./Text";
9
- export * from "./CSS";
10
- export * from "./CSSHelper";
11
- export * from "./FocusManager";
12
- export * from "./ResizeManager";
13
- export * from "./ZIndexManager";
14
- export * from "./Format";
15
- export * from "./Culture";
16
- export * from "./Localization";
17
- export * from "./Cx";
18
- export * from "./Instance";
19
- export * from "./RenderingContext";
20
- export * from "./ContentResolver";
21
- export * from "./batchUpdates";
22
- export * from "./IsolatedScope";
23
- export * from "./DetachedScope";
24
- export * from "./Restate";
25
- export * from "./DataProxy";
26
- export * from "./keyboardShortcuts";
27
- export * from "./createFunctionalComponent";
28
- export * from "./StructuredInstanceDataAccessor";
29
- export * from "./HoverSync";
30
-
31
- export * from "./selection/index";
32
- export * from "./layout/index";
33
- export * from "./app/index";
34
- export * from "./adapter/index";
35
-
36
- export * from "./bind";
37
- export * from "./tpl";
38
- export * from "./expr";
39
-
40
- //re-export computable here
41
- import { computable } from "../data/computable";
42
- export { computable };
1
+ export * from "./Controller";
2
+ export * from "./Widget";
3
+ export * from "./Container";
4
+ export * from "./PureContainer";
5
+ export * from "./Repeater";
6
+ export * from "./Rescope";
7
+ export * from "./StaticText";
8
+ export * from "./Text";
9
+ export * from "./CSS";
10
+ export * from "./CSSHelper";
11
+ export * from "./FocusManager";
12
+ export * from "./ResizeManager";
13
+ export * from "./ZIndexManager";
14
+ export * from "./Format";
15
+ export * from "./Culture";
16
+ export * from "./Localization";
17
+ export * from "./Cx";
18
+ export * from "./Instance";
19
+ export * from "./RenderingContext";
20
+ export * from "./ContentResolver";
21
+ export * from "./batchUpdates";
22
+ export * from "./IsolatedScope";
23
+ export * from "./DetachedScope";
24
+ export * from "./Restate";
25
+ export * from "./DataProxy";
26
+ export * from "./keyboardShortcuts";
27
+ export * from "./createFunctionalComponent";
28
+ export * from "./StructuredInstanceDataAccessor";
29
+ export * from "./HoverSync";
30
+ export * from "./CultureScope";
31
+
32
+ export * from "./selection/index";
33
+ export * from "./layout/index";
34
+ export * from "./app/index";
35
+ export * from "./adapter/index";
36
+
37
+ export * from "./bind";
38
+ export * from "./tpl";
39
+ export * from "./expr";
40
+
41
+ //re-export computable here
42
+ import { computable } from "../data/computable";
43
+ export { computable };
package/src/ui/index.js CHANGED
@@ -1,44 +1,45 @@
1
- export * from './Controller';
2
- export * from './Widget';
3
- export * from './Container';
4
- export * from './PureContainer';
5
- export * from './Repeater';
6
- export * from './Rescope';
7
- export * from './StaticText';
8
- export * from './Text';
9
- export * from './CSS';
10
- export * from './CSSHelper';
11
- export * from './FocusManager';
12
- export * from './ResizeManager';
13
- export * from './ZIndexManager';
14
- export * from './Format';
15
- export * from './Culture';
16
- export * from './Localization';
17
- export * from './Cx';
18
- export * from './Instance';
19
- export * from './RenderingContext';
20
- export * from './ContentResolver';
21
- export * from './batchUpdates';
22
- export * from './IsolatedScope';
23
- export * from './DetachedScope';
24
- export * from './Restate';
25
- export * from './DataProxy';
26
- export * from './keyboardShortcuts';
27
- export * from "./StructuredInstanceDataAccessor";
28
- export * from "./HoverSync";
29
-
30
- export * from "./createFunctionalComponent";
31
- export * from "./flattenProps";
32
-
33
- export * from "./selection/index";
34
- export * from "./layout/index";
35
- export * from "./app/index";
36
- export * from "./adapter/index";
37
-
38
- export * from "./bind";
39
- export * from "./tpl";
40
- export * from "./expr";
41
-
42
- //re-export computable here
43
- import { computable } from "../data/computable";
44
- export { computable };
1
+ export * from "./Controller";
2
+ export * from "./Widget";
3
+ export * from "./Container";
4
+ export * from "./PureContainer";
5
+ export * from "./Repeater";
6
+ export * from "./Rescope";
7
+ export * from "./StaticText";
8
+ export * from "./Text";
9
+ export * from "./CSS";
10
+ export * from "./CSSHelper";
11
+ export * from "./FocusManager";
12
+ export * from "./ResizeManager";
13
+ export * from "./ZIndexManager";
14
+ export * from "./Format";
15
+ export * from "./Culture";
16
+ export * from "./Localization";
17
+ export * from "./Cx";
18
+ export * from "./Instance";
19
+ export * from "./RenderingContext";
20
+ export * from "./ContentResolver";
21
+ export * from "./batchUpdates";
22
+ export * from "./IsolatedScope";
23
+ export * from "./DetachedScope";
24
+ export * from "./Restate";
25
+ export * from "./DataProxy";
26
+ export * from "./keyboardShortcuts";
27
+ export * from "./StructuredInstanceDataAccessor";
28
+ export * from "./HoverSync";
29
+ export * from "./CultureScope";
30
+
31
+ export * from "./createFunctionalComponent";
32
+ export * from "./flattenProps";
33
+
34
+ export * from "./selection/index";
35
+ export * from "./layout/index";
36
+ export * from "./app/index";
37
+ export * from "./adapter/index";
38
+
39
+ export * from "./bind";
40
+ export * from "./tpl";
41
+ export * from "./expr";
42
+
43
+ //re-export computable here
44
+ import { computable } from "../data/computable";
45
+ export { computable };
@@ -1,14 +1,18 @@
1
- declare type Formatter = (any) => string;
2
-
3
- export class Format {
4
-
5
- static value(v: any, format: string): string;
6
-
7
- static parse(format: string): Formatter;
8
-
9
- static register(format: string | string[], formatter: Formatter): void;
10
-
11
- static registerFactory(format: string | string[], factory: (...args) => Formatter): void;
12
- }
13
-
14
- export function resolveMinMaxFractionDigits(minimumFractionDigits, maximumFractionDigits);
1
+ declare type Formatter = (any) => string;
2
+
3
+ export class Format {
4
+ static value(v: any, format: string): string;
5
+
6
+ static parse(format: string): Formatter;
7
+
8
+ static register(format: string | string[], formatter: Formatter): void;
9
+
10
+ static registerFactory(format: string | string[], factory: (...args) => Formatter): void;
11
+ }
12
+
13
+ export function resolveMinMaxFractionDigits(
14
+ minimumFractionDigits: number,
15
+ maximumFractionDigits: number,
16
+ ): { minimumFractionDigits: number; maximumFractionDigits: number };
17
+
18
+ export function setGetFormatCacheCallback(callback: () => {}): void;