gesso-core 0.3.0 → 0.4.0
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/CHANGELOG.md +57 -0
- package/dist/{CanvasSurface-ifHkg0-g.js → CanvasSurface-BR7hECHm.js} +106 -16
- package/dist/CanvasSurface-BR7hECHm.js.map +1 -0
- package/dist/{index-B4o3nKt2.d.ts → index-BzXn0Bci.d.ts} +69 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/package.json +1 -1
- package/dist/CanvasSurface-ifHkg0-g.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
# gesso-core
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- **`DoubleClick`, dispatched after a second Click on the same node.** The pointer
|
|
8
|
+
controller pairs Clicks on the same node within 500 ms and 4 px — the window the
|
|
9
|
+
editing and selection controllers already use for a word — and dispatches
|
|
10
|
+
`DoubleClick` after the second, as the DOM's `dblclick` follows its `click`. A
|
|
11
|
+
press that became a drag or was cancelled spends the pair.
|
|
12
|
+
|
|
13
|
+
`onDoubleClick` on any element; `fireEvent` gains `doubleClick` and
|
|
14
|
+
`contextMenu`.
|
|
15
|
+
|
|
16
|
+
- **A menu opened at a point stays on the screen.** A context menu's point was a
|
|
17
|
+
top and a left and nothing more, so a menu asked for near the bottom or right
|
|
18
|
+
edge opened off the screen.
|
|
19
|
+
|
|
20
|
+
The layout engine gains `anchorPoint`, a point placed beside as an anchor of no
|
|
21
|
+
size would be — the same flip and clamp — and overlays a `point` option that
|
|
22
|
+
uses it. `Menu`'s `at` opens below and to the right of the point, and above or
|
|
23
|
+
to the left when there is no room.
|
|
24
|
+
|
|
25
|
+
Found by a spreadsheet's status bar, whose menu opened below the window.
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- **An absolute box past its containing block keeps its explicit size.** With no
|
|
30
|
+
room left on an axis, the loose constraint an absolute child was measured under
|
|
31
|
+
came out `(0, 0)`, which reads as tight, and a box with an explicit width or
|
|
32
|
+
height was laid out at zero on that axis — where one pixel of room would have
|
|
33
|
+
left it whole.
|
|
34
|
+
|
|
35
|
+
An explicit size is the box's own, as in CSS; the block no longer caps it.
|
|
36
|
+
|
|
37
|
+
- **The browser shells post OS file drops.** The `fileDrop` message, its shape and
|
|
38
|
+
the session that turns it into an ordinary drag have existed since drop targets
|
|
39
|
+
did, and nothing posted one: a zone accepting `gesso/files` could be written and
|
|
40
|
+
never reached.
|
|
41
|
+
|
|
42
|
+
`attachFileDrop` is the shell half, shared by `createApp`'s worker shell and
|
|
43
|
+
`createSyncApp`'s single-thread one because it is the same four DOM events
|
|
44
|
+
either way. It answers drags that carry files and no others, prevents the
|
|
45
|
+
default on every `dragover` (which is what tells a browser the drop is wanted)
|
|
46
|
+
and on `drop` (or the tab is replaced by the file), and reads the bytes before
|
|
47
|
+
posting the drop. The worker shell transfers the buffers rather than copying
|
|
48
|
+
them; a drop whose files cannot be read is reported as a leave, so no zone stays
|
|
49
|
+
lit waiting. `GessoRuntime.applyFileDrop` hands the message to the tree's drag
|
|
50
|
+
session.
|
|
51
|
+
|
|
52
|
+
The core half was wrong in a way no spec could have caught: `applyFileDrop` began
|
|
53
|
+
a drag with the files of `enter` and, on `drop`, only moved it, so a zone
|
|
54
|
+
received the payload the drag started with. A browser lets a page see the _types_
|
|
55
|
+
of dragged files and nothing else until they are let go, so that payload has
|
|
56
|
+
empty names and no bytes — every file dropped from a desktop would have arrived
|
|
57
|
+
unopenable. The spec that covered it sent the same files on both phases, which is
|
|
58
|
+
the one shape a browser never produces. It now sends what one does.
|
|
59
|
+
|
|
3
60
|
## 0.3.0
|
|
4
61
|
|
|
5
62
|
### Minor Changes
|
|
@@ -188,6 +188,16 @@ let UiEventType = /* @__PURE__ */ function(UiEventType) {
|
|
|
188
188
|
*/
|
|
189
189
|
UiEventType["Paste"] = "paste";
|
|
190
190
|
UiEventType["Click"] = "click";
|
|
191
|
+
/**
|
|
192
|
+
* A second Click on the same node, soon enough after the first and
|
|
193
|
+
* close enough to it.
|
|
194
|
+
*
|
|
195
|
+
* Dispatched after that second Click rather than instead of it, as
|
|
196
|
+
* the DOM's `dblclick` is: a listener that answers a click has
|
|
197
|
+
* already answered both by the time this arrives, which is what lets
|
|
198
|
+
* a double click on a cell select it and then do more.
|
|
199
|
+
*/
|
|
200
|
+
UiEventType["DoubleClick"] = "doubleclick";
|
|
191
201
|
UiEventType["LongPress"] = "longpress";
|
|
192
202
|
UiEventType["DragStart"] = "dragstart";
|
|
193
203
|
UiEventType["DragMove"] = "dragmove";
|
|
@@ -3937,6 +3947,20 @@ const UiProperties = {
|
|
|
3937
3947
|
inherited: false,
|
|
3938
3948
|
affects: L
|
|
3939
3949
|
}),
|
|
3950
|
+
/**
|
|
3951
|
+
* A point to be placed beside, as though it were an anchor of no
|
|
3952
|
+
* size: where a context menu was asked for. Relative to the
|
|
3953
|
+
* containing block, like `top` and `left`, and with `placement` the
|
|
3954
|
+
* same flip and clamp an anchored node gets — so a menu opened near
|
|
3955
|
+
* the bottom edge opens upward instead of off the screen. Ignored
|
|
3956
|
+
* when `anchor` is set.
|
|
3957
|
+
*/
|
|
3958
|
+
anchorPoint: defineProperty({
|
|
3959
|
+
name: "anchorPoint",
|
|
3960
|
+
defaultValue: void 0,
|
|
3961
|
+
inherited: false,
|
|
3962
|
+
affects: L
|
|
3963
|
+
}),
|
|
3940
3964
|
/** Gap between an anchored node and its anchor. */
|
|
3941
3965
|
anchorOffset: defineProperty({
|
|
3942
3966
|
name: "anchorOffset",
|
|
@@ -9435,6 +9459,15 @@ var UiPointerController = class {
|
|
|
9435
9459
|
onHoverChange;
|
|
9436
9460
|
editing;
|
|
9437
9461
|
selection;
|
|
9462
|
+
now;
|
|
9463
|
+
/**
|
|
9464
|
+
* The last Click, for telling whether the next one makes a pair.
|
|
9465
|
+
*
|
|
9466
|
+
* Only a Click counts, not a press: a press that became a drag, or
|
|
9467
|
+
* was cancelled, is not half of a double click, and a release that
|
|
9468
|
+
* followed one would otherwise be read as the second half of it.
|
|
9469
|
+
*/
|
|
9470
|
+
lastClick = null;
|
|
9438
9471
|
hoverNode = null;
|
|
9439
9472
|
downTarget = null;
|
|
9440
9473
|
downX = 0;
|
|
@@ -9461,6 +9494,7 @@ var UiPointerController = class {
|
|
|
9461
9494
|
this.onHoverChange = options.onHoverChange ?? null;
|
|
9462
9495
|
this.editing = options.editing;
|
|
9463
9496
|
this.selection = options.selection;
|
|
9497
|
+
this.now = options.now ?? defaultClock$2;
|
|
9464
9498
|
}
|
|
9465
9499
|
/** The node currently under the pointer, or null over empty space. */
|
|
9466
9500
|
/** Where the pointer was last seen, in canvas space; null before it has been. */
|
|
@@ -9597,12 +9631,39 @@ var UiPointerController = class {
|
|
|
9597
9631
|
if (dx <= slop && dy <= slop) {
|
|
9598
9632
|
const click = new UiPointerEvent("click", x, y, buttons, modifiers, pointer);
|
|
9599
9633
|
this.dispatcher.dispatch(click, target);
|
|
9600
|
-
|
|
9601
|
-
|
|
9634
|
+
this.countClick(target, x, y, buttons, modifiers, pointer);
|
|
9635
|
+
} else this.lastClick = null;
|
|
9636
|
+
} else this.lastClick = null;
|
|
9602
9637
|
this.releaseHover(x, y, modifiers, pointer);
|
|
9603
9638
|
return event;
|
|
9604
9639
|
}
|
|
9605
9640
|
/**
|
|
9641
|
+
* Pairs this Click with the one before it, and dispatches a
|
|
9642
|
+
* DoubleClick when they make a pair.
|
|
9643
|
+
*
|
|
9644
|
+
* A pair is two Clicks on the same node within `MULTI_CLICK_MS` and
|
|
9645
|
+
* `MULTI_CLICK_SLOP` of each other — the window the editing and
|
|
9646
|
+
* selection controllers already use for a word, so a double click
|
|
9647
|
+
* means the same thing on a label as it does in a field. The pair is
|
|
9648
|
+
* spent once it has fired: a third Click starts the next pair rather
|
|
9649
|
+
* than making a second DoubleClick out of the second and third.
|
|
9650
|
+
*/
|
|
9651
|
+
countClick(target, x, y, buttons, modifiers, pointer) {
|
|
9652
|
+
const now = this.now();
|
|
9653
|
+
const last = this.lastClick;
|
|
9654
|
+
if (!(last !== null && last.node === target && now - last.at <= MULTI_CLICK_MS$1 && Math.abs(last.x - x) <= MULTI_CLICK_SLOP$1 && Math.abs(last.y - y) <= MULTI_CLICK_SLOP$1)) {
|
|
9655
|
+
this.lastClick = {
|
|
9656
|
+
node: target,
|
|
9657
|
+
x,
|
|
9658
|
+
y,
|
|
9659
|
+
at: now
|
|
9660
|
+
};
|
|
9661
|
+
return;
|
|
9662
|
+
}
|
|
9663
|
+
this.lastClick = null;
|
|
9664
|
+
this.dispatcher.dispatch(new UiPointerEvent("doubleclick", x, y, buttons, modifiers, pointer), target);
|
|
9665
|
+
}
|
|
9666
|
+
/**
|
|
9606
9667
|
* Aborts the active press: dispatches PointerCancel to the pressed
|
|
9607
9668
|
* node and clears press state so no Click is synthesized.
|
|
9608
9669
|
*/
|
|
@@ -9754,6 +9815,12 @@ var UiPointerController = class {
|
|
|
9754
9815
|
function isSecondaryButton(buttons) {
|
|
9755
9816
|
return buttons === 2;
|
|
9756
9817
|
}
|
|
9818
|
+
/** How long, and how far, a second Click may be from the first and still pair with it. */
|
|
9819
|
+
const MULTI_CLICK_MS$1 = 500;
|
|
9820
|
+
const MULTI_CLICK_SLOP$1 = 4;
|
|
9821
|
+
function defaultClock$2() {
|
|
9822
|
+
return typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
9823
|
+
}
|
|
9757
9824
|
//#endregion
|
|
9758
9825
|
//#region src/input/UiKeyboardController.ts
|
|
9759
9826
|
/**
|
|
@@ -9808,13 +9875,19 @@ var UiKeyboardController = class {
|
|
|
9808
9875
|
this.find = options.find;
|
|
9809
9876
|
this.activation = options.activation;
|
|
9810
9877
|
}
|
|
9811
|
-
|
|
9878
|
+
/**
|
|
9879
|
+
* `textFollows` says whether the shell will send the key's text on its
|
|
9880
|
+
* own, as a `beforeinput`. False — a key that reached the canvas while
|
|
9881
|
+
* an editable held the focus — has the key inserted here, whatever the
|
|
9882
|
+
* text source; absent leaves it to the editing controller's setting.
|
|
9883
|
+
*/
|
|
9884
|
+
keyDown(key, modifiers = noKeyModifiers(), textFollows) {
|
|
9812
9885
|
if (!MODIFIER_KEYS.has(key)) this.focusManager.noteInput("keyboard");
|
|
9813
9886
|
const event = new UiKeyboardEvent("keydown", key, modifiers);
|
|
9814
9887
|
const focused = this.focusManager.focusedNode;
|
|
9815
9888
|
const target = focused ?? this.root();
|
|
9816
9889
|
this.dispatcher.dispatch(event, target);
|
|
9817
|
-
if (!event.defaultPrevented && focused !== null && this.editing !== void 0 && this.editing.handleKey(focused, key, modifiers)) {
|
|
9890
|
+
if (!event.defaultPrevented && focused !== null && this.editing !== void 0 && this.editing.handleKey(focused, key, modifiers, textFollows === false ? true : void 0)) {
|
|
9818
9891
|
event.preventDefault();
|
|
9819
9892
|
return event;
|
|
9820
9893
|
}
|
|
@@ -10808,9 +10881,10 @@ var UiEditingController = class {
|
|
|
10808
10881
|
* when the key was an editing command, so the caller can mark the
|
|
10809
10882
|
* event handled.
|
|
10810
10883
|
*/
|
|
10811
|
-
|
|
10884
|
+
/** `textFromKeys` overrides the controller's own setting for this one key; see `UiKeyboardController.keyDown`. */
|
|
10885
|
+
handleKey(node, key, modifiers, textFromKeys = this.textFromKeys) {
|
|
10812
10886
|
if (!isEditableNode(node)) return false;
|
|
10813
|
-
const command = commandForKey(key, modifiers, this.platform,
|
|
10887
|
+
const command = commandForKey(key, modifiers, this.platform, textFromKeys);
|
|
10814
10888
|
if (command === null) return false;
|
|
10815
10889
|
return this.execute(node, command);
|
|
10816
10890
|
}
|
|
@@ -15183,6 +15257,7 @@ var LayoutEngine = class {
|
|
|
15183
15257
|
};
|
|
15184
15258
|
this.resolveLayoutProps(child, cRec);
|
|
15185
15259
|
const anchor = child.properties.get("anchor");
|
|
15260
|
+
const point = child.properties.get("anchorPoint");
|
|
15186
15261
|
if (anchor !== void 0 && anchor !== null) {
|
|
15187
15262
|
this.anchoredNodes.add(child);
|
|
15188
15263
|
this.trackAnchor(child, anchor);
|
|
@@ -15191,6 +15266,12 @@ var LayoutEngine = class {
|
|
|
15191
15266
|
this.placeAnchored(child, cRec, anchorRec, anchor, block);
|
|
15192
15267
|
return;
|
|
15193
15268
|
}
|
|
15269
|
+
} else if (point !== void 0 && point !== null) {
|
|
15270
|
+
this.anchoredNodes.delete(child);
|
|
15271
|
+
this.trackAnchor(child, null);
|
|
15272
|
+
this.measure(child, new Constraints(0, Math.max(0, block.width), 0, Math.max(0, block.height)));
|
|
15273
|
+
this.placeBeside(child, cRec, block.x + point.x, block.y + point.y, 0, 0, block);
|
|
15274
|
+
return;
|
|
15194
15275
|
} else {
|
|
15195
15276
|
this.anchoredNodes.delete(child);
|
|
15196
15277
|
this.trackAnchor(child, null);
|
|
@@ -15199,9 +15280,11 @@ var LayoutEngine = class {
|
|
|
15199
15280
|
const marginV = cRec.marginTop + cRec.marginBottom;
|
|
15200
15281
|
const availableWidth = Math.max(0, block.width - (cRec.left ?? 0) - (cRec.right ?? 0) - marginH);
|
|
15201
15282
|
const availableHeight = Math.max(0, block.height - (cRec.top ?? 0) - (cRec.bottom ?? 0) - marginV);
|
|
15202
|
-
const
|
|
15203
|
-
const
|
|
15204
|
-
|
|
15283
|
+
const explicitWidth = this.lengthProp(child, "width", block.width) !== void 0;
|
|
15284
|
+
const explicitHeight = this.lengthProp(child, "height", block.height) !== void 0;
|
|
15285
|
+
const tightWidth = cRec.left !== void 0 && cRec.right !== void 0 && !explicitWidth;
|
|
15286
|
+
const tightHeight = cRec.top !== void 0 && cRec.bottom !== void 0 && !explicitHeight;
|
|
15287
|
+
this.measure(child, new Constraints(tightWidth ? availableWidth : 0, explicitWidth ? Infinity : availableWidth, tightHeight ? availableHeight : 0, explicitHeight ? Infinity : availableHeight));
|
|
15205
15288
|
const width = cRec.measuredWidth;
|
|
15206
15289
|
const height = cRec.measuredHeight;
|
|
15207
15290
|
let x;
|
|
@@ -15229,18 +15312,25 @@ var LayoutEngine = class {
|
|
|
15229
15312
|
*/
|
|
15230
15313
|
placeAnchored(child, cRec, anchorRec, anchor, block) {
|
|
15231
15314
|
this.measure(child, new Constraints(0, Math.max(0, block.width), 0, Math.max(0, block.height)));
|
|
15232
|
-
const width = cRec.measuredWidth;
|
|
15233
|
-
const height = cRec.measuredHeight;
|
|
15234
|
-
const gap = this.numberProp(child, "anchorOffset") ?? 0;
|
|
15235
|
-
const { side, align } = this.parsePlacement(child.properties.get("placement"));
|
|
15236
15315
|
const scrollAnchor = this.scrollOffsetOf(anchor);
|
|
15237
15316
|
const scrollChild = this.scrollOffsetOf(child);
|
|
15238
15317
|
const stickyAnchor = this.stickyOffsetOf(anchor);
|
|
15239
15318
|
const stickyChild = this.stickyOffsetOf(child);
|
|
15240
15319
|
const ax = anchorRec.x + stickyAnchor.x - scrollAnchor.x + scrollChild.x - stickyChild.x;
|
|
15241
15320
|
const ay = anchorRec.y + stickyAnchor.y - scrollAnchor.y + scrollChild.y - stickyChild.y;
|
|
15242
|
-
|
|
15243
|
-
|
|
15321
|
+
this.placeBeside(child, cRec, ax, ay, anchorRec.width, anchorRec.height, block);
|
|
15322
|
+
}
|
|
15323
|
+
/**
|
|
15324
|
+
* Places a measured node beside a box — an anchor's, or a point's of
|
|
15325
|
+
* no size — flipping to the opposite side when the named one would
|
|
15326
|
+
* overflow the block and the other has more room, and clamping along
|
|
15327
|
+
* the side to stay inside it.
|
|
15328
|
+
*/
|
|
15329
|
+
placeBeside(child, cRec, ax, ay, aw, ah, block) {
|
|
15330
|
+
const width = cRec.measuredWidth;
|
|
15331
|
+
const height = cRec.measuredHeight;
|
|
15332
|
+
const gap = this.numberProp(child, "anchorOffset") ?? 0;
|
|
15333
|
+
const { side, align } = this.parsePlacement(child.properties.get("placement"));
|
|
15244
15334
|
const vertical = side === "top" || side === "bottom";
|
|
15245
15335
|
let resolvedSide = side;
|
|
15246
15336
|
if (vertical) {
|
|
@@ -18212,4 +18302,4 @@ function createCanvasSurface(host) {
|
|
|
18212
18302
|
//#endregion
|
|
18213
18303
|
export { prepareInputSurface as $, UiBinding as $a, defaultTextStyle as $i, EditableTextModel as $n, minmax as $r, DEFAULT_FONT_WEIGHT as $t, accumulatedOffsetTo as A, UiVisualState as Aa, themeExtension as Ai, setLinkHover as An, validateStates as Ar, proportionalFontMetrics as At, parseFlexDirection as B, UiInputEvent as Ba, spacingEqual as Bi, nextCaretToggle as Bn, transformsEqual as Br, layoutTextLines as Bt, describeLength as C, UiNode as Ca, lightTheme as Ci, isNodeTabStop as Cn, UI_ROLES as Cr, selectionRectsIn as Ct, formatNumber as D, resetOverrideWarnings as Da, defineThemeExtension as Di, linkHoverOf as Dn, normalizeStates as Dr, spannedRunsFor as Dt, formatExplanation as E, overrideSources as Ea, withDensity as Ei, hasTextLinks as En, isUiSemanticState as Er, ParagraphTextMeasurer as Et, constraintsEqual as F, MOUSE_POINTER as Fa, raiseContrast as Fi, editorFor as Fn, pathValuesEqual as Fr, applyCanvasTextStyle as Ft, MainAxisAlignment as G, UiSelectionChangeEvent as Ga, boxShadowArraysEqual as Gi, caretRectFor as Gn, radialGradient as Gr, textRunBackgrounds as Gt, sizeGridTracks as H, UiPasteEvent as Ha, defaultShadows as Hi, resolveColorValue as Hn, gradientPaint as Hr, runFontString as Ht, tightenConstraints as I, UiBeforeInputEvent as Ia, relativeLuminance as Ii, editorOf as In, UiTransforms as Ir, buildFontString as It, parseMainAxisAlignment as J, UiWheelEvent as Ja, isShapeName as Ji, lineLimit as Jn, fr as Jr, clearFontStacks as Jt, parseAlignContent as K, UiTextChangeEvent as Ka, boxShadowsEqual as Ki, lineIndexAtY as Kn, validateGradient as Kr, textRunDecorations as Kt, MAX_MEASURES_PER_CHILD as L, UiEventType as La, densityFactors as Li, isEditableNode as Ln, parseTransform as Lr, createCanvasTextStyle as Lt, LayoutRecord as M, hasVisualState as Ma, withThemeExtension as Mi, CARET_WIDTH as Mn, validateSubgrid as Mr, detectEditingPlatform as Mt, Constraints as N, visualState as Na, contrastRatio as Ni, EDITOR_PROP as Nn, inputsEqual as Nr, isPrintable as Nt, labelNode as O, writeDeclaredProperty as Oa, hasThemeExtension as Oi, linkOf as On, statesEqual as Or, ELLIPSIS as Ot, clampSize as P, visualStatesEqual as Pa, highContrastColors as Pi, caretVisibleAt as Pn, paintValuesEqual as Pr, EditableLayout as Pt, pointerDeviceOf as Q, DirtyFlags as Qa, typographyEqual as Qi, selectionRects as Qn, isPercentLength as Qr, DEFAULT_FONT_SIZE as Qt, isLayoutProtocol as R, UiFocusEvent as Ra, defaultSpacing as Ri, isMultiline as Rn, transform as Rr, drawText as Rt, SCROLLBAR_LINGER_MS as S, UiEnvironment as Sa, darkTheme as Si, isNodeSelectable as Sn, UiProperties as Sr, paragraphGeometryFrom as St, formatConstraints as T, clearOverrideProperty as Ta, withContrast as Ti, clearLinkHover as Tn, isUiRole as Tr, CharacterCountTextMeasurer as Tt, AlignContent as U, UiPinchEvent as Ua, shadowsEqual as Ui, isVideoSurface as Un, gradientsEqual as Ur, spanOf as Ut, placeGridItems as V, UiKeyboardEvent as Va, spacingSteps as Vi, syncEditorValue as Vn, MAX_GRADIENT_STOPS as Vr, runCanvasStyleInto as Vt, CrossAxisAlignment as W, UiPointerEvent as Wa, boxShadow as Wi, videoFrameSize as Wn, linearGradient as Wr, textMeasureRequest as Wt, UiPlatformAdapter as X, wheelDeltaYOf as Xa, defaultTypography as Xi, offsetAtX as Xn, isFrLength as Xr, registerFontStack as Xt, CanvasPlatformSurface as Y, noKeyModifiers as Ya, shapesEqual as Yi, offsetAtPoint as Yn, isAutoLength as Yr, fontStackFor as Yt, capturePointer as Z, UiNodeType as Za, isTypographyRole as Zi, offsetForVerticalMove as Zn, isMinMaxTrack as Zr, DEFAULT_FONT_FAMILY as Zt, LABEL_PADDING_X as _, parseColor as _a, observeViewportInsets as _i, selectionRangeOf as _n, inheritedPropertyFlags as _r, scrollbarZoneAt as _t, PaintPictureCache as a, textContentOf as aa, borderRadiusCorners as ai, normalizeTextAlign as an, previousGraphemeStart as ar, UiWheelController as at, LayoutEngine as b, createEnvironmentKey as ba, containerBands as bi, isNodeHitTestable as bn, propertyIsInherited as br, offsetAtPointIn as bt, EMPTY_RECORDING as c, colorsEqualPalette as ca, borderRadiusValuesEqual as ci, DEFAULT_LINE_HEIGHT_FACTOR as cn, resolveBoolean as cr, UiPointerController as ct, tracePathData as d, UiBasicColors as da, defineProperty as di, matchRangesOf as dn, resolvePropertyByName as dr, SCROLLBAR_HOVER_ZONE as dt, editableSpansOf as ea, percent as ei, DEFAULT_TEXT_COLOR as en, graphemeBoundaries as er, touchActionFor as et, ScaledImageCache as f, colorToHex as fa, propertyValuesEqual as fi, setMatchRanges as fn, resolveString as fr, SCROLLBAR_INSET as ft, paintsAfterChildren as g, normalizeColor as ga, noInsets as gi, selectableTextOf as gn, getPropertyNames as gr, scrollbarThumbs as gt, hasDecorationPhase as h, colorsEqual as ha, insetsEqual as hi, selectableTextNodes as hn, findPropertyDefinition as hr, scrollbarThumb as ht, traceRoundedRect as i, spannedTextOf as ia, borderRadius as ii, isPaintVisible as in, nextWordEnd as ir, UiPinchRecognizer as it, contentOffset as j, defaultVisualState as ja, themeExtensionsEqual as ji, CARET_BLINK_MS as jn, UI_SUBGRID_AXES as jr, commandForKey as jt, withOverrideSource as k, writeOverrideProperty as ka, noThemeExtensions as ki, linkRunAtPointIn as kn, validateRole as kr, layoutParagraph as kt, PaintRecorder as l, darkColors as la, normalizeBorderRadius as li, TEXT_MATCHES_PROP as ln, resolveNumber as lr, UiFocusManager as lt, decorationRect as m, colorValuesEqual as ma, UiInsetRegistry as mi, clearSelectionRange as mn, closestPropertyName as mr, SCROLLBAR_THICKNESS as mt, createCanvasSurface as n, resolvedSpansOf as na, resolveLength as ni, computeObjectFitRect as nn, lineStartAt as nr, UiTouchScroller as nt, paintPictures as o, textSpansEqual as oa, borderRadiusEqual as oi, normalizeVerticalAlign as on, previousWordStart as or, isScrollContainer as ot, decorationColor as p, colorToRgba as pa, UiEnvironmentKeys as pi, TEXT_SELECTION_PROP as pn, UiGraph as pr, SCROLLBAR_MIN_THUMB as pt, parseCrossAxisAlignment as q, UiWheelDeltaMode as qa, defaultShapes as qi, lineIndexForOffset as qn, auto as qr, bumpFontStack as qt, Canvas2DRenderer as r, spanAtOffset as ra, UiBorderRadiuses as ri, createPaintState as rn, nextGraphemeEnd as rr, UiGestureRecognizer as rt, PaintTarget as s, textStylesEqual as sa, borderRadiusIsZero as si, resolvePaintState as sn, wordRangeAt as sr, UiKeyboardController as st, CanvasSurface as t, flattenTextSpans as ta, repeat as ti, colorToCss as tn, lineEndAt as tr, UiEditingController as tt, replayPaint as u, lightColors as ua, uniformBorderRadius as ui, clearMatchRanges as un, resolveProperty as ur, UiHitTester as ut, drawOverlayShapes as v, rgb8 as va, UiContainerSizeSource as vi, setSelectionRange as vn, inheritedPropertyNames as vr, UiInputDispatcher as vt, describeOverrides as w, DirtyNodeSet as wa, themesEqual as wi, resolveCursor as wn, UI_SEMANTIC_STATES as wr, wordRangeIn as wt, SCROLLBAR_FADE_MS as x, findEnvironmentKey as xa, unknownContainerSize as xi, isNodeInert as xn, propertyValuesEqualByName as xr, paragraphGeometry as xt, labelOrigin as y, rgba as ya, bandOf as yi, isNodeFocusable as yn, propertyEffects as yr, hasDrawnText as yt, FlexDirection as z, UiGestureEvent as za, scaleSpacing as zi, isReadOnly as zn, transformIsIdentity as zr, fillTextRects as zt };
|
|
18214
18304
|
|
|
18215
|
-
//# sourceMappingURL=CanvasSurface-
|
|
18305
|
+
//# sourceMappingURL=CanvasSurface-BR7hECHm.js.map
|