chat-layout 1.2.0-9 → 1.2.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/README.md +18 -0
- package/example/chat.ts +2 -9
- package/index.d.mts +5 -1
- package/index.mjs +17 -7
- package/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -194,6 +194,24 @@ Type-check:
|
|
|
194
194
|
bun run typecheck
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
+
Run tests:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
bun run test
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Run tests with coverage:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
bun run test:coverage
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Run the local verification bundle:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
bun run check
|
|
213
|
+
```
|
|
214
|
+
|
|
197
215
|
Build distributable files:
|
|
198
216
|
|
|
199
217
|
```bash
|
package/example/chat.ts
CHANGED
|
@@ -10,13 +10,13 @@ import {
|
|
|
10
10
|
ShrinkWrap,
|
|
11
11
|
Text,
|
|
12
12
|
Wrapper,
|
|
13
|
+
initRenderFeedback,
|
|
13
14
|
memoRenderItem,
|
|
14
15
|
type Context,
|
|
15
16
|
type DynValue,
|
|
16
17
|
type HitTest,
|
|
17
18
|
type InlineSpan,
|
|
18
19
|
type Node,
|
|
19
|
-
type RenderFeedback,
|
|
20
20
|
} from "chat-layout";
|
|
21
21
|
|
|
22
22
|
const sampleWords = [
|
|
@@ -507,16 +507,9 @@ const renderer = new ListRenderer(ctx, {
|
|
|
507
507
|
});
|
|
508
508
|
renderer.padding = { top: 32, bottom: 32 };
|
|
509
509
|
let nextMessageId = list.items.length + 1;
|
|
510
|
+
const feedback = initRenderFeedback();
|
|
510
511
|
|
|
511
512
|
function drawFrame(): void {
|
|
512
|
-
const feedback: RenderFeedback = {
|
|
513
|
-
minIdx: Number.NaN,
|
|
514
|
-
maxIdx: Number.NaN,
|
|
515
|
-
min: Number.NaN,
|
|
516
|
-
max: Number.NaN,
|
|
517
|
-
canAutoFollowTop: false,
|
|
518
|
-
canAutoFollowBottom: false,
|
|
519
|
-
};
|
|
520
513
|
renderer.render(feedback);
|
|
521
514
|
|
|
522
515
|
ctx.save();
|
package/index.d.mts
CHANGED
|
@@ -24,6 +24,10 @@ interface RenderFeedback {
|
|
|
24
24
|
/** Whether the current viewport may auto-follow inserts at the visual bottom edge. */
|
|
25
25
|
canAutoFollowBottom: boolean;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Creates or resets a render feedback object to its default empty state.
|
|
29
|
+
*/
|
|
30
|
+
declare function initRenderFeedback(feedback?: Partial<RenderFeedback>): RenderFeedback;
|
|
27
31
|
/**
|
|
28
32
|
* The main axis direction used by flex containers.
|
|
29
33
|
*/
|
|
@@ -779,5 +783,5 @@ declare class ListRenderer<C extends CanvasRenderingContext2D, T extends {}> ext
|
|
|
779
783
|
protected _getTargetAnchor(index: number, block: NonNullable<JumpToOptions["block"]>): number;
|
|
780
784
|
}
|
|
781
785
|
//#endregion
|
|
782
|
-
export { Axis, BaseRenderer, Box, ChildLayoutResult, Context, CrossAxisAlignment, DebugRenderer, DeleteListItemAnimationOptions, DynValue, Fixed, Flex, FlexContainerOptions, FlexItem, FlexItemOptions, FlexLayoutResult, Group, HitTest, InlineSpan, InsertListItemsAnimationOptions, JumpToOptions, LayoutConstraints, LayoutRect, ListAnchorMode, ListLayoutOptions, ListPadding, ListRenderer, ListRendererOptions, ListState, ListUnderflowAlign, MainAxisAlignment, MainAxisSize, MultilineText, MultilineTextOptions, Node, PaddingBox, PhysicalTextAlign, Place, PushListItemsAnimationOptions, RenderFeedback, RendererOptions, ShrinkWrap, Text, TextAlign, TextEllipsisPosition, TextJustifyMode, TextJustifyOptions, TextOptions, TextOverflowMode, TextOverflowWrapMode, TextStyleOptions, TextWhiteSpaceMode, TextWordBreakMode, UnshiftListItemsAnimationOptions, UpdateListItemAnimationOptions, VirtualizedRenderer, Wrapper, memoRenderItem, memoRenderItemBy };
|
|
786
|
+
export { Axis, BaseRenderer, Box, ChildLayoutResult, Context, CrossAxisAlignment, DebugRenderer, DeleteListItemAnimationOptions, DynValue, Fixed, Flex, FlexContainerOptions, FlexItem, FlexItemOptions, FlexLayoutResult, Group, HitTest, InlineSpan, InsertListItemsAnimationOptions, JumpToOptions, LayoutConstraints, LayoutRect, ListAnchorMode, ListLayoutOptions, ListPadding, ListRenderer, ListRendererOptions, ListState, ListUnderflowAlign, MainAxisAlignment, MainAxisSize, MultilineText, MultilineTextOptions, Node, PaddingBox, PhysicalTextAlign, Place, PushListItemsAnimationOptions, RenderFeedback, RendererOptions, ShrinkWrap, Text, TextAlign, TextEllipsisPosition, TextJustifyMode, TextJustifyOptions, TextOptions, TextOverflowMode, TextOverflowWrapMode, TextStyleOptions, TextWhiteSpaceMode, TextWordBreakMode, UnshiftListItemsAnimationOptions, UpdateListItemAnimationOptions, VirtualizedRenderer, Wrapper, initRenderFeedback, memoRenderItem, memoRenderItemBy };
|
|
783
787
|
//# sourceMappingURL=index.d.mts.map
|
package/index.mjs
CHANGED
|
@@ -3918,6 +3918,21 @@ function memoRenderItemBy(keyOf, renderItem, options = {}) {
|
|
|
3918
3918
|
});
|
|
3919
3919
|
}
|
|
3920
3920
|
//#endregion
|
|
3921
|
+
//#region src/types.ts
|
|
3922
|
+
/**
|
|
3923
|
+
* Creates or resets a render feedback object to its default empty state.
|
|
3924
|
+
*/
|
|
3925
|
+
function initRenderFeedback(feedback = {}) {
|
|
3926
|
+
const target = feedback;
|
|
3927
|
+
target.minIdx = NaN;
|
|
3928
|
+
target.maxIdx = NaN;
|
|
3929
|
+
target.min = NaN;
|
|
3930
|
+
target.max = NaN;
|
|
3931
|
+
target.canAutoFollowTop = false;
|
|
3932
|
+
target.canAutoFollowBottom = false;
|
|
3933
|
+
return target;
|
|
3934
|
+
}
|
|
3935
|
+
//#endregion
|
|
3921
3936
|
//#region src/renderer/virtualized/frame-session.ts
|
|
3922
3937
|
function prepareFrameSession(params) {
|
|
3923
3938
|
let solution = params.resolveVisibleWindow(params.now);
|
|
@@ -5459,12 +5474,7 @@ var VirtualizedRenderer = class VirtualizedRenderer extends BaseRenderer {
|
|
|
5459
5474
|
}
|
|
5460
5475
|
_resetRenderFeedback(feedback) {
|
|
5461
5476
|
if (feedback == null) return;
|
|
5462
|
-
feedback
|
|
5463
|
-
feedback.maxIdx = NaN;
|
|
5464
|
-
feedback.min = NaN;
|
|
5465
|
-
feedback.max = NaN;
|
|
5466
|
-
feedback.canAutoFollowTop = false;
|
|
5467
|
-
feedback.canAutoFollowBottom = false;
|
|
5477
|
+
initRenderFeedback(feedback);
|
|
5468
5478
|
}
|
|
5469
5479
|
_accumulateRenderFeedback(feedback, idx, top, height) {
|
|
5470
5480
|
const visibleRange = this._readVisibleRange(top, height);
|
|
@@ -5780,6 +5790,6 @@ var ListRenderer = class extends VirtualizedRenderer {
|
|
|
5780
5790
|
}
|
|
5781
5791
|
};
|
|
5782
5792
|
//#endregion
|
|
5783
|
-
export { BaseRenderer, DebugRenderer, Fixed, Flex, FlexItem, Group, ListRenderer, ListState, MultilineText, PaddingBox, Place, ShrinkWrap, Text, VirtualizedRenderer, Wrapper, memoRenderItem, memoRenderItemBy };
|
|
5793
|
+
export { BaseRenderer, DebugRenderer, Fixed, Flex, FlexItem, Group, ListRenderer, ListState, MultilineText, PaddingBox, Place, ShrinkWrap, Text, VirtualizedRenderer, Wrapper, initRenderFeedback, memoRenderItem, memoRenderItemBy };
|
|
5784
5794
|
|
|
5785
5795
|
//# sourceMappingURL=index.mjs.map
|