@effindomv2/fui-as 0.1.36 → 0.1.39
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/browser/routed-app-conventions.ts +1 -1
- package/browser/src/common-harness.ts +1 -27
- package/browser/src/index.ts +19 -26
- package/browser/src/routed-harness.ts +1 -194
- package/browser/src/shared-browser.ts +6 -0
- package/package.json +26 -16
- package/scripts/build.sh +51 -47
- package/scripts/framework-host-services.ts +1 -1
- package/scripts/generate-host-events.ts +15 -241
- package/scripts/generate-host-services.ts +13 -261
- package/scripts/hostgen/assemblyscript-host-events.ts +165 -0
- package/scripts/hostgen/assemblyscript-host-services.ts +207 -0
- package/scripts/hostgen/common.ts +73 -0
- package/scripts/hostgen/registry.ts +159 -0
- package/src/Fui.ts +70 -4
- package/src/FuiExports.ts +13 -1
- package/src/bindings/ui.ts +165 -8
- package/src/controls/Button.ts +98 -71
- package/src/controls/Checkbox.ts +23 -21
- package/src/controls/ComboBox.ts +1201 -0
- package/src/controls/ContextMenu.ts +279 -165
- package/src/controls/Dialog.ts +91 -17
- package/src/controls/Dropdown.ts +101 -333
- package/src/controls/NavLink.ts +29 -6
- package/src/controls/Popup.ts +10 -5
- package/src/controls/ProgressBar.ts +1 -2
- package/src/controls/RadioButton.ts +34 -13
- package/src/controls/RadioGroup.ts +32 -19
- package/src/controls/Slider.ts +21 -23
- package/src/controls/Switch.ts +34 -17
- package/src/controls/index.ts +2 -1
- package/src/controls/internal/ButtonPresenter.ts +5 -2
- package/src/controls/internal/CheckboxIndicatorPresenter.ts +10 -10
- package/src/controls/internal/DropdownChevronPresenter.ts +3 -3
- package/src/controls/internal/DropdownFieldPresenter.ts +6 -6
- package/src/controls/internal/DropdownOptionRowPresenter.ts +5 -4
- package/src/controls/internal/PressableLabeledControl.ts +4 -7
- package/src/controls/internal/RadioIndicatorPresenter.ts +7 -7
- package/src/controls/internal/SelectablePopupList.ts +463 -0
- package/src/controls/internal/SliderPresenter.ts +5 -5
- package/src/controls/internal/SwitchIndicatorPresenter.ts +63 -17
- package/src/controls/internal/TextInputCore.ts +307 -41
- package/src/controls/internal/TextInputPresenter.ts +2 -2
- package/src/controls/templating.ts +10 -0
- package/src/core/Application.ts +19 -9
- package/src/core/Bitmap.ts +219 -1
- package/src/core/ContextMenuManager.ts +128 -44
- package/src/core/DebugApi.ts +17 -2
- package/src/core/DragGesture.ts +8 -7
- package/src/core/EventRouter.ts +332 -12
- package/src/core/Fetch.ts +15 -7
- package/src/core/FetchFfi.ts +1 -15
- package/src/core/File.ts +75 -34
- package/src/core/FocusAdornerManager.ts +3 -3
- package/src/core/FocusVisibility.ts +7 -0
- package/src/core/FrameScheduler.ts +126 -0
- package/src/core/ImageSampling.ts +43 -0
- package/src/core/Logger.ts +2 -0
- package/src/core/MobileTextSelectionToolbarManager.ts +901 -0
- package/src/core/Node.ts +1039 -97
- package/src/core/Platform.ts +16 -16
- package/src/core/SelectionHandleAdornerManager.ts +697 -0
- package/src/core/Theme.ts +34 -20
- package/src/core/ToolTipManager.ts +3 -3
- package/src/core/Typography.ts +411 -19
- package/src/core/Worker.ts +69 -33
- package/src/core/event_exports.ts +123 -5
- package/src/core/ffi.ts +5 -746
- package/src/core/generated/FetchHostAbi.ts +10 -0
- package/src/core/generated/FrameworkHostServices.ts +1 -1
- package/src/core/generated/HostAbi.ts +220 -0
- package/src/core/generated/UiAbi.ts +356 -0
- package/src/core/generated/UiEnums.ts +186 -0
- package/src/drawing/DrawCallback.ts +34 -0
- package/src/drawing/DrawContext.ts +189 -0
- package/src/drawing/Paint.ts +34 -0
- package/src/drawing/Path.ts +40 -0
- package/src/nodes/CustomDrawable.ts +61 -0
- package/src/nodes/FlexBox.ts +57 -11
- package/src/nodes/Grid.ts +5 -5
- package/src/nodes/Image.ts +20 -1
- package/src/nodes/RichText.ts +36 -25
- package/src/nodes/ScrollBar.ts +2 -1
- package/src/nodes/ScrollBox.ts +7 -2
- package/src/nodes/ScrollView.ts +17 -6
- package/src/nodes/Svg.ts +18 -1
- package/src/nodes/Text.ts +1 -1
- package/src/nodes/TextCore.ts +115 -20
- package/src/nodes/index.ts +3 -1
- package/src/text/DynamicTextLayout.ts +275 -0
- package/src/text/TextLayout.ts +308 -0
- package/src/worker/Worker.ts +3 -36
- package/src/worker/WorkerJob.ts +5 -9
- package/src/worker/ffi.ts +0 -6
- package/browser/src/common-harness/host-imports.ts +0 -447
- package/browser/src/common-harness/interop.ts +0 -39
- package/browser/src/common-harness/managed-harness-bitmap-host.ts +0 -92
- package/browser/src/common-harness/managed-harness-fetch-host.ts +0 -201
- package/browser/src/common-harness/managed-harness-file-host.ts +0 -1066
- package/browser/src/common-harness/managed-harness-file-payloads.ts +0 -143
- package/browser/src/common-harness/managed-harness-file-types.ts +0 -71
- package/browser/src/common-harness/managed-harness-session.ts +0 -15
- package/browser/src/common-harness/managed-harness.ts +0 -1451
- package/browser/src/common-harness/managed-history.ts +0 -168
- package/browser/src/common-harness/persisted-restore-policy.ts +0 -50
- package/browser/src/common-harness/persisted-ui-state-controller.ts +0 -309
- package/browser/src/common-harness/text-session-bridge.ts +0 -452
- package/browser/src/common-harness/types.ts +0 -205
- package/browser/src/common-harness/ui-chrome.ts +0 -206
- package/browser/src/common-harness/ui-imports.ts +0 -553
- package/browser/src/common-harness/wasm-module-cache.ts +0 -47
- package/browser/src/file-processing-worker.ts +0 -89
- package/browser/src/host-events.ts +0 -118
- package/browser/src/host-services.ts +0 -483
- package/browser/src/persisted-ui-state.ts +0 -206
- package/browser/src/routed-app-conventions.ts +0 -292
- package/browser/src/worker-bootstrap.ts +0 -916
- package/browser/src/worker-manager.ts +0 -234
- package/browser/src/worker-types.ts +0 -68
package/src/controls/index.ts
CHANGED
|
@@ -6,8 +6,9 @@ export { LabeledControlColors } from "./LabeledControlColors";
|
|
|
6
6
|
export { TextInputColors } from "./TextInputColors";
|
|
7
7
|
export { DropdownColors } from "./DropdownColors";
|
|
8
8
|
export { SliderColors } from "./SliderColors";
|
|
9
|
+
export { ComboBox, ComboBoxCommitMode, ComboBoxFilterMode, ComboBoxItem } from "./ComboBox";
|
|
9
10
|
export { ContextMenu, MenuItem } from "./ContextMenu";
|
|
10
|
-
export { Dialog } from "./Dialog";
|
|
11
|
+
export { Dialog, DialogShownEventArgs } from "./Dialog";
|
|
11
12
|
export { Dropdown, DropdownItem } from "./Dropdown";
|
|
12
13
|
export { Form } from "./Form";
|
|
13
14
|
export { NavLink } from "./NavLink";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AlignItems,
|
|
3
|
-
BorderStyle,
|
|
4
3
|
FlexDirection,
|
|
5
4
|
JustifyContent,
|
|
6
5
|
} from "../../core/ffi";
|
|
@@ -70,7 +69,7 @@ class DefaultButtonPresenter extends ButtonPresenter {
|
|
|
70
69
|
.justifyContent(JustifyContent.Center)
|
|
71
70
|
.alignItems(AlignItems.Center)
|
|
72
71
|
.cornerRadius(theme.spacing.sm)
|
|
73
|
-
.border(1.0, theme.colors.border
|
|
72
|
+
.border(1.0, theme.colors.border)
|
|
74
73
|
.padding(theme.spacing.md, theme.spacing.sm, theme.spacing.md, theme.spacing.sm)
|
|
75
74
|
.dropShadow(0x00000000, 0.0, 0.0, 0.0, 0.0)
|
|
76
75
|
.bgColor(background);
|
|
@@ -94,3 +93,7 @@ class DefaultButtonTemplate extends ButtonTemplate {
|
|
|
94
93
|
}
|
|
95
94
|
|
|
96
95
|
export const defaultButtonTemplate = new DefaultButtonTemplate();
|
|
96
|
+
|
|
97
|
+
export function createDefaultButtonPresenter(): ButtonPresenter {
|
|
98
|
+
return new DefaultButtonPresenter();
|
|
99
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AlignItems, JustifyContent, SemanticCheckedState, Unit } from "../../core/ffi";
|
|
2
2
|
import { Theme } from "../../core/Theme";
|
|
3
3
|
import { FlexBox, Svg } from "../../nodes";
|
|
4
4
|
import { LabeledControlSizing } from "../ControlSizing";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
PressableIndicatorVisualState,
|
|
10
10
|
} from "./PressableIndicatorPresenter";
|
|
11
11
|
|
|
12
|
-
const CHECKBOX_CHECK_SVG_URL = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 14 14'><path d='
|
|
12
|
+
const CHECKBOX_CHECK_SVG_URL = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 14 14'><path d='M2.25 7.15 5.35 10.25 11.75 3.85' fill='none' stroke='%23000000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/></svg>";
|
|
13
13
|
|
|
14
14
|
class CheckboxIndicatorMetrics extends PressableIndicatorMetrics {
|
|
15
15
|
constructor(
|
|
@@ -56,7 +56,7 @@ export abstract class CheckboxIndicatorPresenter extends PressableIndicatorPrese
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
export abstract class CheckboxIndicatorTemplate {
|
|
59
|
-
abstract create(): CheckboxIndicatorPresenter;
|
|
59
|
+
abstract create(sizing?: LabeledControlSizing | null): CheckboxIndicatorPresenter;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
class DefaultCheckboxIndicatorPresenter extends CheckboxIndicatorPresenter {
|
|
@@ -67,14 +67,14 @@ class DefaultCheckboxIndicatorPresenter extends CheckboxIndicatorPresenter {
|
|
|
67
67
|
const root = new FlexBox()
|
|
68
68
|
.width(metrics.indicatorSize, Unit.Pixel)
|
|
69
69
|
.height(metrics.indicatorSize, Unit.Pixel)
|
|
70
|
-
.alignItems(
|
|
71
|
-
.justifyContent(
|
|
70
|
+
.alignItems(AlignItems.Center)
|
|
71
|
+
.justifyContent(JustifyContent.Center);
|
|
72
72
|
super(root, metrics);
|
|
73
73
|
this.geometry = metrics;
|
|
74
74
|
const markHost = new FlexBox()
|
|
75
75
|
.fillSize()
|
|
76
|
-
.alignItems(
|
|
77
|
-
.justifyContent(
|
|
76
|
+
.alignItems(AlignItems.Center)
|
|
77
|
+
.justifyContent(JustifyContent.Center);
|
|
78
78
|
const markNode = new Svg();
|
|
79
79
|
markNode
|
|
80
80
|
.width(metrics.checkMarkSize, Unit.Pixel)
|
|
@@ -102,7 +102,7 @@ class DefaultCheckboxIndicatorPresenter extends CheckboxIndicatorPresenter {
|
|
|
102
102
|
background = theme.colors.background;
|
|
103
103
|
}
|
|
104
104
|
this.root.cornerRadius(geometry.cornerRadius);
|
|
105
|
-
this.root.border(1.0, borderColor
|
|
105
|
+
this.root.border(1.0, borderColor);
|
|
106
106
|
this.root.bgColor(background);
|
|
107
107
|
if (markVisible) {
|
|
108
108
|
this.markNode.source(CHECKBOX_CHECK_SVG_URL);
|
|
@@ -119,8 +119,8 @@ class DefaultCheckboxIndicatorPresenter extends CheckboxIndicatorPresenter {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
class DefaultCheckboxIndicatorTemplate extends CheckboxIndicatorTemplate {
|
|
122
|
-
create(): CheckboxIndicatorPresenter {
|
|
123
|
-
return
|
|
122
|
+
create(sizing: LabeledControlSizing | null = null): CheckboxIndicatorPresenter {
|
|
123
|
+
return createDefaultCheckboxIndicatorPresenter(sizing);
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
|
|
@@ -43,7 +43,7 @@ export abstract class DropdownChevronPresenter {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export abstract class DropdownChevronTemplate {
|
|
46
|
-
abstract create(): DropdownChevronPresenter;
|
|
46
|
+
abstract create(sizing?: DropdownSizing | null): DropdownChevronPresenter;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
class DefaultDropdownChevronPresenter extends DropdownChevronPresenter {
|
|
@@ -80,8 +80,8 @@ class DefaultDropdownChevronPresenter extends DropdownChevronPresenter {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
class DefaultDropdownChevronTemplate extends DropdownChevronTemplate {
|
|
83
|
-
create(): DropdownChevronPresenter {
|
|
84
|
-
return
|
|
83
|
+
create(sizing: DropdownSizing | null = null): DropdownChevronPresenter {
|
|
84
|
+
return createDefaultDropdownChevronPresenter(sizing);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AlignItems,
|
|
3
|
-
BorderStyle,
|
|
4
3
|
FlexDirection,
|
|
5
4
|
JustifyContent,
|
|
6
5
|
TextVerticalAlign,
|
|
@@ -103,7 +102,7 @@ export abstract class DropdownFieldPresenter {
|
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
export abstract class DropdownFieldTemplate {
|
|
106
|
-
abstract create(): DropdownFieldPresenter;
|
|
105
|
+
abstract create(sizing?: DropdownSizing | null): DropdownFieldPresenter;
|
|
107
106
|
}
|
|
108
107
|
|
|
109
108
|
class DefaultDropdownFieldPresenter extends DropdownFieldPresenter {
|
|
@@ -145,7 +144,7 @@ class DefaultDropdownFieldPresenter extends DropdownFieldPresenter {
|
|
|
145
144
|
.alignItems(AlignItems.Center)
|
|
146
145
|
.height(metrics.height, Unit.Pixel)
|
|
147
146
|
.cornerRadius(theme.spacing.sm)
|
|
148
|
-
.border(2.0, borderColor
|
|
147
|
+
.border(2.0, borderColor)
|
|
149
148
|
.padding(metrics.paddingLeft, metrics.paddingTop, metrics.paddingRight, metrics.paddingBottom)
|
|
150
149
|
.bgColor(bg);
|
|
151
150
|
this.valueHost
|
|
@@ -154,7 +153,8 @@ class DefaultDropdownFieldPresenter extends DropdownFieldPresenter {
|
|
|
154
153
|
? theme.colors.textMuted
|
|
155
154
|
: (colors !== null && colors.hasTextPrimary ? colors.textPrimaryColor : theme.colors.textPrimary);
|
|
156
155
|
this.valueNode
|
|
157
|
-
.
|
|
156
|
+
.fontFamily(theme.fonts.bodyFamily)
|
|
157
|
+
.fontSize(metrics.fontSize)
|
|
158
158
|
.lineHeight(contentHeight)
|
|
159
159
|
.textColor(textColor);
|
|
160
160
|
this.chevronHost
|
|
@@ -166,8 +166,8 @@ class DefaultDropdownFieldPresenter extends DropdownFieldPresenter {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
class DefaultDropdownFieldTemplate extends DropdownFieldTemplate {
|
|
169
|
-
create(): DropdownFieldPresenter {
|
|
170
|
-
return
|
|
169
|
+
create(sizing: DropdownSizing | null = null): DropdownFieldPresenter {
|
|
170
|
+
return createDefaultDropdownFieldPresenter(sizing);
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
|
|
@@ -60,7 +60,7 @@ export abstract class DropdownOptionRowPresenter {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
export abstract class DropdownOptionRowTemplate {
|
|
63
|
-
abstract create(): DropdownOptionRowPresenter;
|
|
63
|
+
abstract create(sizing?: DropdownSizing | null): DropdownOptionRowPresenter;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
class DefaultDropdownOptionRowPresenter extends DropdownOptionRowPresenter {
|
|
@@ -92,14 +92,15 @@ class DefaultDropdownOptionRowPresenter extends DropdownOptionRowPresenter {
|
|
|
92
92
|
? (colors !== null && colors.hasAccent ? colors.accentColor : theme.colors.accent)
|
|
93
93
|
: (colors !== null && colors.hasTextPrimary ? colors.textPrimaryColor : theme.colors.textPrimary));
|
|
94
94
|
this.labelNode
|
|
95
|
-
.
|
|
95
|
+
.fontFamily(theme.fonts.bodyFamily)
|
|
96
|
+
.fontSize(metrics.fontSize)
|
|
96
97
|
.textColor(labelColor);
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
class DefaultDropdownOptionRowTemplate extends DropdownOptionRowTemplate {
|
|
101
|
-
create(): DropdownOptionRowPresenter {
|
|
102
|
-
return
|
|
102
|
+
create(sizing: DropdownSizing | null = null): DropdownOptionRowPresenter {
|
|
103
|
+
return createDefaultDropdownOptionRowPresenter(sizing);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
|
|
@@ -6,7 +6,6 @@ import { keyboardFocusVisible } from "../../core/FocusVisibility";
|
|
|
6
6
|
import { Node } from "../../core/Node";
|
|
7
7
|
import {
|
|
8
8
|
AlignItems,
|
|
9
|
-
BorderStyle,
|
|
10
9
|
CursorStyle,
|
|
11
10
|
FlexDirection,
|
|
12
11
|
KeyEventType,
|
|
@@ -191,16 +190,14 @@ export class PressableLabeledControl extends FlexBox {
|
|
|
191
190
|
this.cornerRadius(theme.spacing.sm);
|
|
192
191
|
this.border(
|
|
193
192
|
2.0,
|
|
194
|
-
TRANSPARENT
|
|
195
|
-
BorderStyle.Solid,
|
|
193
|
+
TRANSPARENT
|
|
196
194
|
);
|
|
197
195
|
this.padding(theme.spacing.xs, theme.spacing.xs, theme.spacing.xs, theme.spacing.xs);
|
|
198
196
|
this.opacity(this.isEnabled ? 1.0 : 0.6);
|
|
199
197
|
this.gapNode.width(theme.spacing.sm, Unit.Pixel);
|
|
200
|
-
this.labelNode
|
|
201
|
-
theme.fonts.
|
|
202
|
-
this.labelFontSizeOverride > 0.0 ? this.labelFontSizeOverride : theme.fonts.sizeBody
|
|
203
|
-
);
|
|
198
|
+
this.labelNode
|
|
199
|
+
.fontFamily(theme.fonts.bodyFamily)
|
|
200
|
+
.fontSize(this.labelFontSizeOverride > 0.0 ? this.labelFontSizeOverride : theme.fonts.sizeBody);
|
|
204
201
|
const colors = this.colorsValue;
|
|
205
202
|
let labelColor: u32;
|
|
206
203
|
if (this.isEnabled) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AlignItems, JustifyContent, Unit } from "../../core/ffi";
|
|
2
2
|
import { Theme } from "../../core/Theme";
|
|
3
3
|
import { FlexBox } from "../../nodes";
|
|
4
4
|
import { LabeledControlSizing } from "../ControlSizing";
|
|
@@ -30,7 +30,7 @@ export abstract class RadioIndicatorPresenter extends PressableIndicatorPresente
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export abstract class RadioIndicatorTemplate {
|
|
33
|
-
abstract create(): RadioIndicatorPresenter;
|
|
33
|
+
abstract create(sizing?: LabeledControlSizing | null): RadioIndicatorPresenter;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
class RadioIndicatorMetrics extends PressableIndicatorMetrics {
|
|
@@ -76,8 +76,8 @@ class DefaultRadioIndicatorPresenter extends RadioIndicatorPresenter {
|
|
|
76
76
|
const root = new FlexBox()
|
|
77
77
|
.width(metrics.indicatorSize, Unit.Pixel)
|
|
78
78
|
.height(metrics.indicatorSize, Unit.Pixel)
|
|
79
|
-
.alignItems(
|
|
80
|
-
.justifyContent(
|
|
79
|
+
.alignItems(AlignItems.Center)
|
|
80
|
+
.justifyContent(JustifyContent.Center);
|
|
81
81
|
super(root, metrics);
|
|
82
82
|
this.geometry = metrics;
|
|
83
83
|
const dotNode = new FlexBox()
|
|
@@ -98,7 +98,7 @@ class DefaultRadioIndicatorPresenter extends RadioIndicatorPresenter {
|
|
|
98
98
|
? accent
|
|
99
99
|
: (colors !== null && colors.hasBorder ? colors.borderColor : theme.colors.border);
|
|
100
100
|
this.root.cornerRadius(geometry.indicatorSize * 0.5);
|
|
101
|
-
this.root.border(geometry.borderWidth, outerColor
|
|
101
|
+
this.root.border(geometry.borderWidth, outerColor);
|
|
102
102
|
this.root.bgColor(colors !== null && colors.hasBackground ? colors.backgroundColor : theme.colors.surface);
|
|
103
103
|
this.dotNode
|
|
104
104
|
.cornerRadius(geometry.dotSize * 0.5)
|
|
@@ -111,8 +111,8 @@ class DefaultRadioIndicatorPresenter extends RadioIndicatorPresenter {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
class DefaultRadioIndicatorTemplate extends RadioIndicatorTemplate {
|
|
114
|
-
create(): RadioIndicatorPresenter {
|
|
115
|
-
return
|
|
114
|
+
create(sizing: LabeledControlSizing | null = null): RadioIndicatorPresenter {
|
|
115
|
+
return createDefaultRadioIndicatorPresenter(sizing);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|