cx 26.0.3 → 26.0.5
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/build/data/ArrayElementView.spec.js +1 -1
- package/build/hooks/store.spec.js +1 -1
- package/build/hooks/useTrigger.spec.js +1 -1
- package/build/ui/Controller.spec.js +2 -6
- package/build/ui/PureContainer.spec.d.ts +1 -0
- package/build/ui/PureContainer.spec.js +149 -0
- package/build/ui/layout/ContentPlaceholder.spec.js +12 -12
- package/build.js +129 -129
- package/dist/manifest.d.ts +1443 -0
- package/dist/manifest.js +826 -826
- package/package.json +4 -3
- package/src/charts/Chart.ts +108 -108
- package/src/data/ArrayElementView.ts +90 -90
- package/src/data/AugmentedViewBase.ts +88 -88
- package/src/data/Binding.ts +104 -104
- package/src/data/ExposedRecordView.ts +95 -95
- package/src/data/ExposedValueView.ts +89 -89
- package/src/data/Expression.spec.ts +229 -229
- package/src/data/Expression.ts +233 -233
- package/src/data/Grouper.spec.ts +57 -57
- package/src/data/Grouper.ts +158 -158
- package/src/data/NestedDataView.ts +43 -43
- package/src/data/ReadOnlyDataView.ts +39 -39
- package/src/data/Ref.ts +104 -104
- package/src/data/Selector.ts +10 -10
- package/src/data/Store.ts +52 -52
- package/src/data/StoreProxy.ts +19 -19
- package/src/data/StoreRef.ts +66 -66
- package/src/data/StringTemplate.spec.ts +132 -132
- package/src/data/StringTemplate.ts +93 -93
- package/src/data/StructuredSelector.spec.ts +113 -113
- package/src/data/StructuredSelector.ts +146 -146
- package/src/data/SubscribableView.ts +63 -63
- package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
- package/src/data/ZoomIntoPropertyView.ts +45 -45
- package/src/data/computable.spec.ts +62 -62
- package/src/data/createAccessorModelProxy.ts +60 -60
- package/src/data/createStructuredSelector.ts +62 -62
- package/src/data/getAccessor.spec.ts +11 -11
- package/src/data/getAccessor.ts +74 -74
- package/src/data/getSelector.spec.ts +43 -43
- package/src/data/getSelector.ts +66 -66
- package/src/data/ops/filter.spec.ts +35 -35
- package/src/data/ops/filter.ts +9 -9
- package/src/data/ops/merge.ts +13 -13
- package/src/data/ops/removeTreeNodes.spec.ts +37 -37
- package/src/data/ops/removeTreeNodes.ts +15 -15
- package/src/data/ops/updateArray.spec.ts +69 -69
- package/src/data/ops/updateArray.ts +31 -31
- package/src/data/ops/updateTree.ts +23 -23
- package/src/data/test-types.ts +7 -7
- package/src/hooks/useTrigger.ts +26 -26
- package/src/index.scss +6 -6
- package/src/jsx-runtime.ts +72 -72
- package/src/svg/BoundedObject.ts +101 -101
- package/src/ui/CSSHelper.ts +17 -17
- package/src/ui/ContentResolver.ts +124 -124
- package/src/ui/Controller.ts +189 -189
- package/src/ui/Culture.ts +159 -159
- package/src/ui/DataProxy.ts +55 -55
- package/src/ui/FocusManager.ts +171 -171
- package/src/ui/Instance.ts +868 -868
- package/src/ui/RenderingContext.ts +99 -99
- package/src/ui/Rescope.ts +49 -49
- package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
- package/src/ui/VDOM.ts +34 -34
- package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
- package/src/ui/adapter/ArrayAdapter.ts +226 -226
- package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
- package/src/ui/adapter/TreeAdapter.ts +185 -185
- package/src/ui/app/History.ts +133 -133
- package/src/ui/app/Url.spec.ts +50 -50
- package/src/ui/app/startHotAppLoop.ts +40 -40
- package/src/ui/createFunctionalComponent.ts +65 -65
- package/src/ui/index.ts +45 -45
- package/src/ui/layout/Content.ts +30 -30
- package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
- package/src/ui/selection/KeySelection.ts +165 -165
- package/src/ui/selection/PropertySelection.ts +87 -87
- package/src/ui/selection/Selection.ts +118 -118
- package/src/util/Format.ts +267 -267
- package/src/util/browserSupportsPassiveEventHandlers.ts +20 -20
- package/src/util/color/rgbToHsl.ts +35 -35
- package/src/util/getActiveElement.ts +4 -4
- package/src/util/hasKey.ts +18 -18
- package/src/util/index.ts +55 -55
- package/src/util/innerTextTrim.ts +10 -10
- package/src/util/isArray.ts +3 -3
- package/src/util/isDataRecord.ts +5 -5
- package/src/util/isDefined.ts +3 -3
- package/src/util/isString.ts +3 -3
- package/src/widgets/Sandbox.ts +103 -103
- package/src/widgets/autoFocus.ts +9 -9
- package/src/widgets/cx.ts +63 -63
- package/src/widgets/grid/GridCell.ts +143 -143
- package/src/widgets/icons/calendar.tsx +17 -17
- package/src/widgets/icons/check.tsx +13 -13
- package/src/widgets/icons/clear.tsx +15 -15
- package/src/widgets/icons/close.tsx +20 -20
- package/src/widgets/icons/cx.tsx +38 -38
- package/src/widgets/icons/drop-down.tsx +15 -15
- package/src/widgets/icons/file.tsx +13 -13
- package/src/widgets/icons/folder-open.tsx +15 -15
- package/src/widgets/icons/folder.tsx +13 -13
- package/src/widgets/icons/forward.tsx +22 -22
- package/src/widgets/icons/loading.tsx +24 -24
- package/src/widgets/icons/menu.tsx +17 -17
- package/src/widgets/icons/pixel-picker.tsx +18 -18
- package/src/widgets/icons/search.tsx +13 -13
- package/src/widgets/icons/sort-asc.tsx +14 -14
- package/src/widgets/icons/square.tsx +18 -18
- package/src/widgets/nav/Route.ts +142 -142
- package/src/widgets/overlay/ContextMenu.ts +42 -42
- package/src/widgets/overlay/Dropdown.tsx +762 -762
- package/src/widgets/overlay/MsgBox.tsx +141 -141
- package/src/widgets/overlay/Toast.ts +111 -111
- package/src/widgets/overlay/Window.tsx +299 -299
- package/src/widgets/overlay/alerts.ts +46 -46
- package/src/widgets/overlay/captureMouse.ts +195 -195
- package/src/widgets/overlay/createHotPromiseWindowFactory.ts +72 -72
- package/src/widgets/overlay/index.d.ts +11 -11
- package/src/widgets/overlay/index.ts +11 -11
- package/src/widgets/overlay/tooltip-ops.ts +173 -173
package/src/ui/app/Url.spec.ts
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { Url } from "./Url";
|
|
2
|
-
import Route from "route-parser";
|
|
3
|
-
import assert from "assert";
|
|
4
|
-
describe("Url", function () {
|
|
5
|
-
describe(".unresolve", function () {
|
|
6
|
-
it("preserves query parameters", function () {
|
|
7
|
-
Url.absoluteBase = "https://cxjs.io/docs/";
|
|
8
|
-
assert.equal("~/?state=1", Url.unresolve("https://cxjs.io/docs/?state=1"));
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it("doesn't touch unresolved urls", function () {
|
|
12
|
-
assert.equal("~/test", Url.unresolve("~/test"));
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
describe(".getBaseFromScriptSrc", () => {
|
|
17
|
-
it("ignores query strings", function () {
|
|
18
|
-
assert.equal(Url.getBaseFromScriptSrc("/vendor.js?qs=1", "~/vendor.js"), "/");
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it("allows wildcards", function () {
|
|
22
|
-
assert.equal(Url.getBaseFromScriptSrc("/vendor.123.js?qs=1", "~/vendor.*.js"), "/");
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("works for an application folder", function () {
|
|
26
|
-
assert.equal(Url.getBaseFromScriptSrc("/datasync/vendor.124c82.js", "~/vendor.*.js"), "/datasync/");
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
describe("Route", function () {
|
|
32
|
-
it("matches query param", function () {
|
|
33
|
-
let route = new Route("~/?state=:state");
|
|
34
|
-
let result = route.match("~/?state=1");
|
|
35
|
-
assert(result !== false);
|
|
36
|
-
assert.equal(result.state, "1");
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("matches routes with extra query params", function () {
|
|
40
|
-
let route = new Route("~/?state=:state");
|
|
41
|
-
let result = route.match("~/?state=1&more=2");
|
|
42
|
-
assert(result);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it.skip("matches query params in any order", function () {
|
|
46
|
-
let route = new Route("~/?a=:a&b=:b");
|
|
47
|
-
let result = route.match("~/?b=1&a=2");
|
|
48
|
-
assert(result);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
1
|
+
import { Url } from "./Url";
|
|
2
|
+
import Route from "route-parser";
|
|
3
|
+
import assert from "assert";
|
|
4
|
+
describe("Url", function () {
|
|
5
|
+
describe(".unresolve", function () {
|
|
6
|
+
it("preserves query parameters", function () {
|
|
7
|
+
Url.absoluteBase = "https://cxjs.io/docs/";
|
|
8
|
+
assert.equal("~/?state=1", Url.unresolve("https://cxjs.io/docs/?state=1"));
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it("doesn't touch unresolved urls", function () {
|
|
12
|
+
assert.equal("~/test", Url.unresolve("~/test"));
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe(".getBaseFromScriptSrc", () => {
|
|
17
|
+
it("ignores query strings", function () {
|
|
18
|
+
assert.equal(Url.getBaseFromScriptSrc("/vendor.js?qs=1", "~/vendor.js"), "/");
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("allows wildcards", function () {
|
|
22
|
+
assert.equal(Url.getBaseFromScriptSrc("/vendor.123.js?qs=1", "~/vendor.*.js"), "/");
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("works for an application folder", function () {
|
|
26
|
+
assert.equal(Url.getBaseFromScriptSrc("/datasync/vendor.124c82.js", "~/vendor.*.js"), "/datasync/");
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe("Route", function () {
|
|
32
|
+
it("matches query param", function () {
|
|
33
|
+
let route = new Route("~/?state=:state");
|
|
34
|
+
let result = route.match("~/?state=1");
|
|
35
|
+
assert(result !== false);
|
|
36
|
+
assert.equal(result.state, "1");
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("matches routes with extra query params", function () {
|
|
40
|
+
let route = new Route("~/?state=:state");
|
|
41
|
+
let result = route.match("~/?state=1&more=2");
|
|
42
|
+
assert(result);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it.skip("matches query params in any order", function () {
|
|
46
|
+
let route = new Route("~/?a=:a&b=:b");
|
|
47
|
+
let result = route.match("~/?b=1&a=2");
|
|
48
|
+
assert(result);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { startAppLoop, StartAppLoopOptions } from "./startAppLoop";
|
|
2
|
-
import { Widget, WidgetConfig } from "../Widget";
|
|
3
|
-
import { Store } from "../../data/Store";
|
|
4
|
-
|
|
5
|
-
export interface HotModule {
|
|
6
|
-
hot?: {
|
|
7
|
-
accept: () => void;
|
|
8
|
-
dispose: (callback: (data: any) => void) => void;
|
|
9
|
-
data?: any;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function startHotAppLoop(
|
|
14
|
-
appModule: HotModule,
|
|
15
|
-
element: HTMLElement,
|
|
16
|
-
store: Store,
|
|
17
|
-
widgets: Widget | WidgetConfig,
|
|
18
|
-
options: StartAppLoopOptions = {},
|
|
19
|
-
): () => void {
|
|
20
|
-
let stop: (() => void) | undefined;
|
|
21
|
-
//webpack (HMR)
|
|
22
|
-
if (appModule.hot) {
|
|
23
|
-
// accept itself
|
|
24
|
-
appModule.hot.accept();
|
|
25
|
-
|
|
26
|
-
// remember data on dispose
|
|
27
|
-
appModule.hot.dispose(function (data: any) {
|
|
28
|
-
data.state = store.getData();
|
|
29
|
-
if (stop) stop();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
//apply data on hot replace
|
|
33
|
-
if (appModule.hot.data) store.load(appModule.hot.data.state);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
Widget.resetCounter();
|
|
37
|
-
|
|
38
|
-
//app loop
|
|
39
|
-
return (stop = startAppLoop(element, store, widgets, options));
|
|
40
|
-
}
|
|
1
|
+
import { startAppLoop, StartAppLoopOptions } from "./startAppLoop";
|
|
2
|
+
import { Widget, WidgetConfig } from "../Widget";
|
|
3
|
+
import { Store } from "../../data/Store";
|
|
4
|
+
|
|
5
|
+
export interface HotModule {
|
|
6
|
+
hot?: {
|
|
7
|
+
accept: () => void;
|
|
8
|
+
dispose: (callback: (data: any) => void) => void;
|
|
9
|
+
data?: any;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function startHotAppLoop(
|
|
14
|
+
appModule: HotModule,
|
|
15
|
+
element: HTMLElement,
|
|
16
|
+
store: Store,
|
|
17
|
+
widgets: Widget | WidgetConfig,
|
|
18
|
+
options: StartAppLoopOptions = {},
|
|
19
|
+
): () => void {
|
|
20
|
+
let stop: (() => void) | undefined;
|
|
21
|
+
//webpack (HMR)
|
|
22
|
+
if (appModule.hot) {
|
|
23
|
+
// accept itself
|
|
24
|
+
appModule.hot.accept();
|
|
25
|
+
|
|
26
|
+
// remember data on dispose
|
|
27
|
+
appModule.hot.dispose(function (data: any) {
|
|
28
|
+
data.state = store.getData();
|
|
29
|
+
if (stop) stop();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
//apply data on hot replace
|
|
33
|
+
if (appModule.hot.data) store.load(appModule.hot.data.state);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
Widget.resetCounter();
|
|
37
|
+
|
|
38
|
+
//app loop
|
|
39
|
+
return (stop = startAppLoop(element, store, widgets, options));
|
|
40
|
+
}
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
import { createComponentFactory, isComponentFactory } from "../util/Component";
|
|
2
|
-
import { flattenProps } from "../ui/flattenProps";
|
|
3
|
-
import { PureContainer } from "./PureContainer";
|
|
4
|
-
import { UseParentLayout } from "./layout/UseParentLayout";
|
|
5
|
-
import { isDefined } from "../util/isDefined";
|
|
6
|
-
|
|
7
|
-
let currentInstance: any = null;
|
|
8
|
-
|
|
9
|
-
class FunctionalComponent extends PureContainer {
|
|
10
|
-
declare childrenFactory: (props: any) => any;
|
|
11
|
-
declare props: any;
|
|
12
|
-
|
|
13
|
-
initInstance(context: any, instance: any) {
|
|
14
|
-
instance.store = instance.parentStore;
|
|
15
|
-
this.clear();
|
|
16
|
-
currentInstance = instance;
|
|
17
|
-
this.add(this.childrenFactory(this.props));
|
|
18
|
-
instance.content = this.layout ? this.layout.items : this.items;
|
|
19
|
-
this.clear();
|
|
20
|
-
currentInstance = null;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
explore(context: any, instance: any) {
|
|
24
|
-
if (this.layout) this.layout.items = instance.content;
|
|
25
|
-
else this.items = instance.content;
|
|
26
|
-
this.exploreItems(context, instance, instance.content);
|
|
27
|
-
if (instance.computables) {
|
|
28
|
-
instance.computables.forEach((cb: any) => cb(instance.store.getData()));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function createFunctionalComponent(factory: any) {
|
|
34
|
-
if (isComponentFactory(factory)) return factory;
|
|
35
|
-
|
|
36
|
-
return createComponentFactory(factory, (props: any = {}) => {
|
|
37
|
-
let innerProps = flattenProps(props);
|
|
38
|
-
delete innerProps.visible;
|
|
39
|
-
delete innerProps.if;
|
|
40
|
-
delete innerProps.controller;
|
|
41
|
-
delete innerProps.layout;
|
|
42
|
-
delete innerProps.outerLayout;
|
|
43
|
-
delete innerProps.putInto;
|
|
44
|
-
delete innerProps.contentFor;
|
|
45
|
-
delete innerProps.jsxAttributes;
|
|
46
|
-
delete innerProps.$type;
|
|
47
|
-
delete innerProps.vdomKey;
|
|
48
|
-
|
|
49
|
-
return {
|
|
50
|
-
type: FunctionalComponent,
|
|
51
|
-
visible: isDefined(props.if) ? props.if : isDefined(props.visible) ? props.visible : true,
|
|
52
|
-
layout: props.layout || UseParentLayout,
|
|
53
|
-
controller: props.controller,
|
|
54
|
-
outerLayout: props.outerLayout,
|
|
55
|
-
putInto: props.contentFor || props.putInto,
|
|
56
|
-
vdomKey: props.vdomKey,
|
|
57
|
-
childrenFactory: factory,
|
|
58
|
-
props: innerProps,
|
|
59
|
-
};
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function getCurrentInstance() {
|
|
64
|
-
return currentInstance;
|
|
65
|
-
}
|
|
1
|
+
import { createComponentFactory, isComponentFactory } from "../util/Component";
|
|
2
|
+
import { flattenProps } from "../ui/flattenProps";
|
|
3
|
+
import { PureContainer } from "./PureContainer";
|
|
4
|
+
import { UseParentLayout } from "./layout/UseParentLayout";
|
|
5
|
+
import { isDefined } from "../util/isDefined";
|
|
6
|
+
|
|
7
|
+
let currentInstance: any = null;
|
|
8
|
+
|
|
9
|
+
class FunctionalComponent extends PureContainer {
|
|
10
|
+
declare childrenFactory: (props: any) => any;
|
|
11
|
+
declare props: any;
|
|
12
|
+
|
|
13
|
+
initInstance(context: any, instance: any) {
|
|
14
|
+
instance.store = instance.parentStore;
|
|
15
|
+
this.clear();
|
|
16
|
+
currentInstance = instance;
|
|
17
|
+
this.add(this.childrenFactory(this.props));
|
|
18
|
+
instance.content = this.layout ? this.layout.items : this.items;
|
|
19
|
+
this.clear();
|
|
20
|
+
currentInstance = null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
explore(context: any, instance: any) {
|
|
24
|
+
if (this.layout) this.layout.items = instance.content;
|
|
25
|
+
else this.items = instance.content;
|
|
26
|
+
this.exploreItems(context, instance, instance.content);
|
|
27
|
+
if (instance.computables) {
|
|
28
|
+
instance.computables.forEach((cb: any) => cb(instance.store.getData()));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function createFunctionalComponent(factory: any) {
|
|
34
|
+
if (isComponentFactory(factory)) return factory;
|
|
35
|
+
|
|
36
|
+
return createComponentFactory(factory, (props: any = {}) => {
|
|
37
|
+
let innerProps = flattenProps(props);
|
|
38
|
+
delete innerProps.visible;
|
|
39
|
+
delete innerProps.if;
|
|
40
|
+
delete innerProps.controller;
|
|
41
|
+
delete innerProps.layout;
|
|
42
|
+
delete innerProps.outerLayout;
|
|
43
|
+
delete innerProps.putInto;
|
|
44
|
+
delete innerProps.contentFor;
|
|
45
|
+
delete innerProps.jsxAttributes;
|
|
46
|
+
delete innerProps.$type;
|
|
47
|
+
delete innerProps.vdomKey;
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
type: FunctionalComponent,
|
|
51
|
+
visible: isDefined(props.if) ? props.if : isDefined(props.visible) ? props.visible : true,
|
|
52
|
+
layout: props.layout || UseParentLayout,
|
|
53
|
+
controller: props.controller,
|
|
54
|
+
outerLayout: props.outerLayout,
|
|
55
|
+
putInto: props.contentFor || props.putInto,
|
|
56
|
+
vdomKey: props.vdomKey,
|
|
57
|
+
childrenFactory: factory,
|
|
58
|
+
props: innerProps,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function getCurrentInstance() {
|
|
64
|
+
return currentInstance;
|
|
65
|
+
}
|
package/src/ui/index.ts
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
export * from "./Prop";
|
|
2
|
-
export * from "./Controller";
|
|
3
|
-
export * from "./Widget";
|
|
4
|
-
export * from "./Container";
|
|
5
|
-
export * from "./PureContainer";
|
|
6
|
-
export * from "./Repeater";
|
|
7
|
-
export * from "./Rescope";
|
|
8
|
-
export * from "./StaticText";
|
|
9
|
-
export * from "./Text";
|
|
10
|
-
export * from "./CSS";
|
|
11
|
-
export * from "./CSSHelper";
|
|
12
|
-
export * from "./FocusManager";
|
|
13
|
-
export * from "./ResizeManager";
|
|
14
|
-
export * from "./ZIndexManager";
|
|
15
|
-
export * from "./Format";
|
|
16
|
-
export * from "./Culture";
|
|
17
|
-
export * from "./Localization";
|
|
18
|
-
export * from "./Cx";
|
|
19
|
-
export * from "./Instance";
|
|
20
|
-
export * from "./RenderingContext";
|
|
21
|
-
export * from "./ContentResolver";
|
|
22
|
-
export * from "./batchUpdates";
|
|
23
|
-
export * from "./IsolatedScope";
|
|
24
|
-
export * from "./DetachedScope";
|
|
25
|
-
export * from "./Restate";
|
|
26
|
-
export * from "./DataProxy";
|
|
27
|
-
export * from "./keyboardShortcuts";
|
|
28
|
-
export * from "./StructuredInstanceDataAccessor";
|
|
29
|
-
export * from "./HoverSync";
|
|
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
|
+
export * from "./Prop";
|
|
2
|
+
export * from "./Controller";
|
|
3
|
+
export * from "./Widget";
|
|
4
|
+
export * from "./Container";
|
|
5
|
+
export * from "./PureContainer";
|
|
6
|
+
export * from "./Repeater";
|
|
7
|
+
export * from "./Rescope";
|
|
8
|
+
export * from "./StaticText";
|
|
9
|
+
export * from "./Text";
|
|
10
|
+
export * from "./CSS";
|
|
11
|
+
export * from "./CSSHelper";
|
|
12
|
+
export * from "./FocusManager";
|
|
13
|
+
export * from "./ResizeManager";
|
|
14
|
+
export * from "./ZIndexManager";
|
|
15
|
+
export * from "./Format";
|
|
16
|
+
export * from "./Culture";
|
|
17
|
+
export * from "./Localization";
|
|
18
|
+
export * from "./Cx";
|
|
19
|
+
export * from "./Instance";
|
|
20
|
+
export * from "./RenderingContext";
|
|
21
|
+
export * from "./ContentResolver";
|
|
22
|
+
export * from "./batchUpdates";
|
|
23
|
+
export * from "./IsolatedScope";
|
|
24
|
+
export * from "./DetachedScope";
|
|
25
|
+
export * from "./Restate";
|
|
26
|
+
export * from "./DataProxy";
|
|
27
|
+
export * from "./keyboardShortcuts";
|
|
28
|
+
export * from "./StructuredInstanceDataAccessor";
|
|
29
|
+
export * from "./HoverSync";
|
|
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 };
|
package/src/ui/layout/Content.ts
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { Widget } from "../Widget";
|
|
2
|
-
import { PureContainerBase, PureContainerConfig } from "../PureContainer";
|
|
3
|
-
import { Instance } from "../Instance";
|
|
4
|
-
|
|
5
|
-
export interface ContentConfig extends PureContainerConfig {
|
|
6
|
-
/** Placeholder name where the content is rendered. */
|
|
7
|
-
name?: string;
|
|
8
|
-
|
|
9
|
-
/** Placeholder name where the content is rendered. */
|
|
10
|
-
for?: string;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export class Content extends PureContainerBase<ContentConfig, Instance> {
|
|
14
|
-
declare name?: string;
|
|
15
|
-
declare for?: string;
|
|
16
|
-
|
|
17
|
-
constructor(config?: ContentConfig) {
|
|
18
|
-
super(config);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
init(): void {
|
|
22
|
-
super.init();
|
|
23
|
-
if (!this.putInto) this.putInto = this.for || this.name;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
Content.prototype.name = "body";
|
|
28
|
-
Content.prototype.isContent = true;
|
|
29
|
-
|
|
30
|
-
Widget.alias("content", Content);
|
|
1
|
+
import { Widget } from "../Widget";
|
|
2
|
+
import { PureContainerBase, PureContainerConfig } from "../PureContainer";
|
|
3
|
+
import { Instance } from "../Instance";
|
|
4
|
+
|
|
5
|
+
export interface ContentConfig extends PureContainerConfig {
|
|
6
|
+
/** Placeholder name where the content is rendered. */
|
|
7
|
+
name?: string;
|
|
8
|
+
|
|
9
|
+
/** Placeholder name where the content is rendered. */
|
|
10
|
+
for?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class Content extends PureContainerBase<ContentConfig, Instance> {
|
|
14
|
+
declare name?: string;
|
|
15
|
+
declare for?: string;
|
|
16
|
+
|
|
17
|
+
constructor(config?: ContentConfig) {
|
|
18
|
+
super(config);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
init(): void {
|
|
22
|
+
super.init();
|
|
23
|
+
if (!this.putInto) this.putInto = this.for || this.name;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
Content.prototype.name = "body";
|
|
28
|
+
Content.prototype.isContent = true;
|
|
29
|
+
|
|
30
|
+
Widget.alias("content", Content);
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { PureContainerConfig } from "./../PureContainer";
|
|
2
|
-
import { Instance } from "../Instance";
|
|
3
|
-
import { PureContainer } from "../PureContainer";
|
|
4
|
-
import { RenderingContext } from "../RenderingContext";
|
|
5
|
-
|
|
6
|
-
function isVisibleDeep(instance: Instance): boolean {
|
|
7
|
-
if (instance.visible && (!instance.widget.isPureContainer || !instance.widget.useParentLayout)) return true;
|
|
8
|
-
if (instance.children) {
|
|
9
|
-
for (let i = 0; i < instance.children.length; i++) if (isVisibleDeep(instance.children[i])) return true;
|
|
10
|
-
}
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
class FirstVisibleChildItem extends PureContainer {
|
|
15
|
-
constructor(config: PureContainerConfig) {
|
|
16
|
-
super(config);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
checkVisible(context: RenderingContext, instance: any, data: any): boolean {
|
|
20
|
-
if (instance.parent.firstVisibleChild) return false;
|
|
21
|
-
return super.checkVisible(context, instance, data);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
explore(context: RenderingContext, instance: any): void {
|
|
25
|
-
if (instance.parent.firstVisibleChild) return;
|
|
26
|
-
super.explore(context, instance);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
exploreCleanup(context: RenderingContext, instance: any): void {
|
|
30
|
-
if (instance.parent.firstVisibleChild) return;
|
|
31
|
-
if (isVisibleDeep(instance)) instance.parent.firstVisibleChild = instance;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
render(context: RenderingContext, instance: any, key: any): any {
|
|
35
|
-
if (instance.parent.firstVisibleChild != instance) return null;
|
|
36
|
-
return super.render(context, instance, key);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
FirstVisibleChildItem.prototype.useParentLayout = true;
|
|
41
|
-
|
|
42
|
-
export class FirstVisibleChildLayout extends PureContainer {
|
|
43
|
-
explore(context: RenderingContext, instance: any): void {
|
|
44
|
-
instance.firstVisibleChild = null;
|
|
45
|
-
super.explore(context, instance);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
exploreCleanup(context: RenderingContext, instance: any): void {
|
|
49
|
-
let { children, firstVisibleChild } = instance;
|
|
50
|
-
if (children) {
|
|
51
|
-
for (let i = 0; i < children.length; i++) if (children[i] != firstVisibleChild) children[i].destroy();
|
|
52
|
-
}
|
|
53
|
-
instance.children = [];
|
|
54
|
-
if (firstVisibleChild) instance.children.push(firstVisibleChild);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
wrapItem(item: any): any {
|
|
58
|
-
return item instanceof FirstVisibleChildItem ? item : FirstVisibleChildItem.create({ items: item });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
1
|
+
import { PureContainerConfig } from "./../PureContainer";
|
|
2
|
+
import { Instance } from "../Instance";
|
|
3
|
+
import { PureContainer } from "../PureContainer";
|
|
4
|
+
import { RenderingContext } from "../RenderingContext";
|
|
5
|
+
|
|
6
|
+
function isVisibleDeep(instance: Instance): boolean {
|
|
7
|
+
if (instance.visible && (!instance.widget.isPureContainer || !instance.widget.useParentLayout)) return true;
|
|
8
|
+
if (instance.children) {
|
|
9
|
+
for (let i = 0; i < instance.children.length; i++) if (isVisibleDeep(instance.children[i])) return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
class FirstVisibleChildItem extends PureContainer {
|
|
15
|
+
constructor(config: PureContainerConfig) {
|
|
16
|
+
super(config);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
checkVisible(context: RenderingContext, instance: any, data: any): boolean {
|
|
20
|
+
if (instance.parent.firstVisibleChild) return false;
|
|
21
|
+
return super.checkVisible(context, instance, data);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
explore(context: RenderingContext, instance: any): void {
|
|
25
|
+
if (instance.parent.firstVisibleChild) return;
|
|
26
|
+
super.explore(context, instance);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
exploreCleanup(context: RenderingContext, instance: any): void {
|
|
30
|
+
if (instance.parent.firstVisibleChild) return;
|
|
31
|
+
if (isVisibleDeep(instance)) instance.parent.firstVisibleChild = instance;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
render(context: RenderingContext, instance: any, key: any): any {
|
|
35
|
+
if (instance.parent.firstVisibleChild != instance) return null;
|
|
36
|
+
return super.render(context, instance, key);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
FirstVisibleChildItem.prototype.useParentLayout = true;
|
|
41
|
+
|
|
42
|
+
export class FirstVisibleChildLayout extends PureContainer {
|
|
43
|
+
explore(context: RenderingContext, instance: any): void {
|
|
44
|
+
instance.firstVisibleChild = null;
|
|
45
|
+
super.explore(context, instance);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
exploreCleanup(context: RenderingContext, instance: any): void {
|
|
49
|
+
let { children, firstVisibleChild } = instance;
|
|
50
|
+
if (children) {
|
|
51
|
+
for (let i = 0; i < children.length; i++) if (children[i] != firstVisibleChild) children[i].destroy();
|
|
52
|
+
}
|
|
53
|
+
instance.children = [];
|
|
54
|
+
if (firstVisibleChild) instance.children.push(firstVisibleChild);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
wrapItem(item: any): any {
|
|
58
|
+
return item instanceof FirstVisibleChildItem ? item : FirstVisibleChildItem.create({ items: item });
|
|
59
|
+
}
|
|
60
|
+
}
|