@effindomv2/fui-as 0.1.37 → 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.
Files changed (118) hide show
  1. package/browser/routed-app-conventions.ts +1 -1
  2. package/browser/src/common-harness.ts +1 -27
  3. package/browser/src/index.ts +19 -26
  4. package/browser/src/routed-harness.ts +1 -194
  5. package/browser/src/shared-browser.ts +6 -0
  6. package/package.json +23 -13
  7. package/scripts/build.sh +47 -46
  8. package/scripts/framework-host-services.ts +1 -1
  9. package/scripts/generate-host-events.ts +15 -241
  10. package/scripts/generate-host-services.ts +13 -261
  11. package/scripts/hostgen/assemblyscript-host-events.ts +165 -0
  12. package/scripts/hostgen/assemblyscript-host-services.ts +207 -0
  13. package/scripts/hostgen/common.ts +73 -0
  14. package/scripts/hostgen/registry.ts +159 -0
  15. package/src/Fui.ts +65 -5
  16. package/src/FuiExports.ts +12 -1
  17. package/src/bindings/ui.ts +157 -8
  18. package/src/controls/Button.ts +98 -71
  19. package/src/controls/Checkbox.ts +23 -21
  20. package/src/controls/ComboBox.ts +1201 -0
  21. package/src/controls/ContextMenu.ts +279 -165
  22. package/src/controls/Dialog.ts +91 -17
  23. package/src/controls/Dropdown.ts +101 -333
  24. package/src/controls/NavLink.ts +29 -6
  25. package/src/controls/Popup.ts +10 -5
  26. package/src/controls/ProgressBar.ts +1 -2
  27. package/src/controls/RadioButton.ts +34 -13
  28. package/src/controls/RadioGroup.ts +32 -19
  29. package/src/controls/Slider.ts +21 -23
  30. package/src/controls/Switch.ts +34 -17
  31. package/src/controls/index.ts +2 -1
  32. package/src/controls/internal/ButtonPresenter.ts +5 -2
  33. package/src/controls/internal/CheckboxIndicatorPresenter.ts +10 -10
  34. package/src/controls/internal/DropdownChevronPresenter.ts +3 -3
  35. package/src/controls/internal/DropdownFieldPresenter.ts +6 -6
  36. package/src/controls/internal/DropdownOptionRowPresenter.ts +5 -4
  37. package/src/controls/internal/PressableLabeledControl.ts +4 -7
  38. package/src/controls/internal/RadioIndicatorPresenter.ts +7 -7
  39. package/src/controls/internal/SelectablePopupList.ts +463 -0
  40. package/src/controls/internal/SliderPresenter.ts +5 -5
  41. package/src/controls/internal/SwitchIndicatorPresenter.ts +63 -17
  42. package/src/controls/internal/TextInputCore.ts +307 -41
  43. package/src/controls/internal/TextInputPresenter.ts +2 -2
  44. package/src/controls/templating.ts +10 -0
  45. package/src/core/Application.ts +17 -8
  46. package/src/core/Bitmap.ts +192 -3
  47. package/src/core/ContextMenuManager.ts +128 -44
  48. package/src/core/DebugApi.ts +17 -2
  49. package/src/core/DragGesture.ts +8 -7
  50. package/src/core/EventRouter.ts +332 -12
  51. package/src/core/Fetch.ts +15 -7
  52. package/src/core/FetchFfi.ts +1 -15
  53. package/src/core/File.ts +75 -34
  54. package/src/core/FocusAdornerManager.ts +3 -3
  55. package/src/core/FocusVisibility.ts +7 -0
  56. package/src/core/FrameScheduler.ts +104 -5
  57. package/src/core/ImageSampling.ts +43 -0
  58. package/src/core/Logger.ts +2 -0
  59. package/src/core/MobileTextSelectionToolbarManager.ts +901 -0
  60. package/src/core/Node.ts +1039 -97
  61. package/src/core/Platform.ts +16 -16
  62. package/src/core/SelectionHandleAdornerManager.ts +697 -0
  63. package/src/core/Theme.ts +34 -20
  64. package/src/core/ToolTipManager.ts +3 -3
  65. package/src/core/Typography.ts +411 -19
  66. package/src/core/Worker.ts +69 -33
  67. package/src/core/event_exports.ts +123 -5
  68. package/src/core/ffi.ts +5 -865
  69. package/src/core/generated/FetchHostAbi.ts +10 -0
  70. package/src/core/generated/FrameworkHostServices.ts +1 -1
  71. package/src/core/generated/HostAbi.ts +220 -0
  72. package/src/core/generated/UiAbi.ts +356 -0
  73. package/src/core/generated/UiEnums.ts +186 -0
  74. package/src/drawing/DrawCallback.ts +17 -1
  75. package/src/drawing/DrawContext.ts +140 -32
  76. package/src/nodes/CustomDrawable.ts +8 -1
  77. package/src/nodes/FlexBox.ts +40 -11
  78. package/src/nodes/Grid.ts +5 -5
  79. package/src/nodes/Image.ts +20 -1
  80. package/src/nodes/RichText.ts +36 -25
  81. package/src/nodes/ScrollBar.ts +2 -1
  82. package/src/nodes/ScrollBox.ts +7 -2
  83. package/src/nodes/ScrollView.ts +17 -6
  84. package/src/nodes/Svg.ts +18 -1
  85. package/src/nodes/Text.ts +1 -1
  86. package/src/nodes/TextCore.ts +115 -20
  87. package/src/nodes/index.ts +1 -1
  88. package/src/text/DynamicTextLayout.ts +275 -0
  89. package/src/text/TextLayout.ts +308 -0
  90. package/src/worker/Worker.ts +3 -36
  91. package/src/worker/WorkerJob.ts +5 -9
  92. package/src/worker/ffi.ts +0 -6
  93. package/browser/src/common-harness/host-imports.ts +0 -447
  94. package/browser/src/common-harness/interop.ts +0 -39
  95. package/browser/src/common-harness/managed-harness-bitmap-host.ts +0 -92
  96. package/browser/src/common-harness/managed-harness-canvas-host.ts +0 -72
  97. package/browser/src/common-harness/managed-harness-fetch-host.ts +0 -201
  98. package/browser/src/common-harness/managed-harness-file-host.ts +0 -1066
  99. package/browser/src/common-harness/managed-harness-file-payloads.ts +0 -143
  100. package/browser/src/common-harness/managed-harness-file-types.ts +0 -71
  101. package/browser/src/common-harness/managed-harness-session.ts +0 -15
  102. package/browser/src/common-harness/managed-harness.ts +0 -1472
  103. package/browser/src/common-harness/managed-history.ts +0 -168
  104. package/browser/src/common-harness/persisted-restore-policy.ts +0 -50
  105. package/browser/src/common-harness/persisted-ui-state-controller.ts +0 -309
  106. package/browser/src/common-harness/text-session-bridge.ts +0 -452
  107. package/browser/src/common-harness/types.ts +0 -206
  108. package/browser/src/common-harness/ui-chrome.ts +0 -206
  109. package/browser/src/common-harness/ui-imports.ts +0 -559
  110. package/browser/src/common-harness/wasm-module-cache.ts +0 -47
  111. package/browser/src/file-processing-worker.ts +0 -89
  112. package/browser/src/host-events.ts +0 -118
  113. package/browser/src/host-services.ts +0 -483
  114. package/browser/src/persisted-ui-state.ts +0 -206
  115. package/browser/src/routed-app-conventions.ts +0 -292
  116. package/browser/src/worker-bootstrap.ts +0 -916
  117. package/browser/src/worker-manager.ts +0 -234
  118. package/browser/src/worker-types.ts +0 -68
@@ -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, BorderStyle.Solid)
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 { BorderStyle, SemanticCheckedState, Unit } from "../../core/ffi";
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='M3.25 8.25 6.35 11.35 12.75 4.95' fill='none' stroke='%23000000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/></svg>";
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(1)
71
- .justifyContent(1);
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(1)
77
- .justifyContent(1);
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, BorderStyle.Solid);
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 new DefaultCheckboxIndicatorPresenter();
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 new DefaultDropdownChevronPresenter();
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, BorderStyle.Solid)
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
- .font(theme.fonts.body, metrics.fontSize)
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 new DefaultDropdownFieldPresenter();
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
- .font(theme.fonts.body, metrics.fontSize)
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 new DefaultDropdownOptionRowPresenter();
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.font(
201
- theme.fonts.body,
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 { BorderStyle, Unit } from "../../core/ffi";
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(1)
80
- .justifyContent(1);
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, BorderStyle.Solid);
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 new DefaultRadioIndicatorPresenter();
114
+ create(sizing: LabeledControlSizing | null = null): RadioIndicatorPresenter {
115
+ return createDefaultRadioIndicatorPresenter(sizing);
116
116
  }
117
117
  }
118
118