blecsd 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/README.md +1 -2
- package/dist/3d/index.js +1 -1
- package/dist/{border-Jb7TrMob.d.ts → border-DGNDfT6T.d.ts} +1 -1
- package/dist/chunk-25OEBENM.js +3 -0
- package/dist/chunk-26STV7ZS.js +1 -0
- package/dist/chunk-2NMGUEFC.js +4 -0
- package/dist/{chunk-LYSK5S63.js → chunk-4PRDJTCM.js} +1 -1
- package/dist/chunk-5VEKHA3B.js +5 -0
- package/dist/chunk-6KEM3OS2.js +11 -0
- package/dist/chunk-6PX5R326.js +1 -0
- package/dist/{chunk-3LHLSY3Y.js → chunk-6XWY6GB7.js} +1 -1
- package/dist/{chunk-FCMTWFSE.js → chunk-735KKTP3.js} +1 -1
- package/dist/chunk-7SWJNDOL.js +26 -0
- package/dist/chunk-APKUNIMB.js +1 -0
- package/dist/{chunk-FGHEFXLK.js → chunk-CJCSZRV6.js} +1 -1
- package/dist/chunk-DMBMCCLN.js +1 -0
- package/dist/{chunk-OR3BZY7C.js → chunk-DQTVJITR.js} +1 -1
- package/dist/chunk-DSKQ5J4R.js +1 -0
- package/dist/{chunk-OB66FB4F.js → chunk-EF4DC6IN.js} +1 -1
- package/dist/chunk-EJAKECSN.js +1 -0
- package/dist/chunk-FNQRUMFD.js +1 -0
- package/dist/chunk-GJ3RS2VG.js +1 -0
- package/dist/{chunk-G437VE43.js → chunk-KTVEMB2I.js} +1 -1
- package/dist/chunk-KYAPE44E.js +8 -0
- package/dist/chunk-LI4Y7TBZ.js +1 -0
- package/dist/chunk-NHOL4BN6.js +1 -0
- package/dist/chunk-NPNUUSIB.js +1 -0
- package/dist/chunk-OFRWGW2G.js +1 -0
- package/dist/chunk-OMU5BSAS.js +2 -0
- package/dist/chunk-P3ZLIQJP.js +1 -0
- package/dist/chunk-PWI36BQJ.js +1 -0
- package/dist/{chunk-R7AICVRN.js → chunk-QQMUDJ32.js} +2 -2
- package/dist/chunk-R3ICZOE4.js +1 -0
- package/dist/chunk-RJULLVTH.js +1 -0
- package/dist/chunk-S6WS46FE.js +1 -0
- package/dist/{chunk-TWSWTBYL.js → chunk-TSARUU56.js} +1 -1
- package/dist/{chunk-MKMFUXLB.js → chunk-WJRVUAZR.js} +2 -2
- package/dist/{chunk-XZJRWFOS.js → chunk-WY5EZOOL.js} +1 -1
- package/dist/chunk-YY6RZCZH.js +4 -0
- package/dist/chunk-ZPGJCHXH.js +1 -0
- package/dist/chunk-ZPL2J25N.js +1 -0
- package/dist/components/index.d.ts +6886 -6763
- package/dist/components/index.js +1 -1
- package/dist/core/index.d.ts +3621 -3217
- package/dist/core/index.js +1 -1
- package/dist/debug/index.d.ts +2 -2
- package/dist/debug/index.js +1 -1
- package/dist/game/index.d.ts +6 -6
- package/dist/game/index.js +1 -1
- package/dist/{gameLoop-C-Ez_i54.d.ts → gameLoop-CSTb7e0L.d.ts} +1 -1
- package/dist/index.d.ts +741 -23
- package/dist/index.js +3 -3
- package/dist/input/index.d.ts +1 -1
- package/dist/{inputActions-CRsUtTHM.d.ts → inputActions-Fyw14_Gm.d.ts} +3 -3
- package/dist/{keyParser-BnHbg2iD.d.ts → keyParser-m7fWto6g.d.ts} +18 -18
- package/dist/{mouseParser-Cfrbn3AX.d.ts → mouseParser-B7p5ow7K.d.ts} +1 -1
- package/dist/{scheduler-CMcYew9Z.d.ts → scheduler-DeeZleia.d.ts} +2 -0
- package/dist/systems/index.d.ts +351 -4
- package/dist/systems/index.js +1 -1
- package/dist/terminal/index.d.ts +329 -7
- package/dist/terminal/index.js +1 -1
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.js +1 -1
- package/dist/widgets/bigText.js +1 -1
- package/dist/widgets/index.d.ts +1222 -101
- package/dist/widgets/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2IEMMRUO.js +0 -1
- package/dist/chunk-3AV52GY5.js +0 -1
- package/dist/chunk-3O4TQHGK.js +0 -4
- package/dist/chunk-3UJWZ5ZN.js +0 -1
- package/dist/chunk-6M2J5QUA.js +0 -1
- package/dist/chunk-7IQEUVGF.js +0 -1
- package/dist/chunk-A6M6TFBL.js +0 -1
- package/dist/chunk-CIK4AMUA.js +0 -1
- package/dist/chunk-CUEUJAHK.js +0 -3
- package/dist/chunk-D42Q2KKR.js +0 -1
- package/dist/chunk-DYEXOFUU.js +0 -2
- package/dist/chunk-DYU72XLL.js +0 -1
- package/dist/chunk-EAY7B5GL.js +0 -1
- package/dist/chunk-FL56THSI.js +0 -25
- package/dist/chunk-G7GIWWLE.js +0 -1
- package/dist/chunk-GGXNWT36.js +0 -8
- package/dist/chunk-HLFORKXS.js +0 -1
- package/dist/chunk-J7MBKEBY.js +0 -1
- package/dist/chunk-K3SX2LY5.js +0 -1
- package/dist/chunk-LDAFEXN5.js +0 -1
- package/dist/chunk-MQWPHPUM.js +0 -1
- package/dist/chunk-MTI376CU.js +0 -5
- package/dist/chunk-MTV2RJZD.js +0 -1
- package/dist/chunk-PXXGH3BV.js +0 -1
- package/dist/chunk-SHUC6JWA.js +0 -1
- package/dist/chunk-UMGTXSQB.js +0 -11
- package/dist/chunk-X3Q3T2SS.js +0 -4
- package/dist/chunk-ZAHG7Y3X.js +0 -1
- package/dist/{virtualViewport-Bpv6jlKt.d.ts → virtualViewport-DTSN6jFk.d.ts} +152 -152
package/dist/widgets/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { E as Entity, W as World, L as LoopPhase } from '../types-CPB4CpbH.js';
|
|
3
3
|
export { BigText, BigTextConfig, BigTextConfigSchema, BigTextWidget, FontDefinition, createBigText, isBigText, resetBigTextStore, setText } from './bigText.js';
|
|
4
|
-
import {
|
|
5
|
-
import { S as Scheduler } from '../scheduler-
|
|
6
|
-
import { j as DimensionValue$8, p as ListItem, u as ListState, t as ListSelectCallback, L as ListAction, H as TableData, F as TableCell, K as TableRow, G as TableColumn, I as TableDisplay, C as CellAlign, w as ScrollPercentage, x as ScrollPosition, z as ScrollableData, Q as CursorShape, R as TerminalState, Y as ScrollInfo } from '../virtualViewport-
|
|
4
|
+
import { B as BorderCharset, k as BorderType } from '../border-DGNDfT6T.js';
|
|
5
|
+
import { S as Scheduler } from '../scheduler-DeeZleia.js';
|
|
6
|
+
import { j as DimensionValue$8, p as ListItem, u as ListState, t as ListSelectCallback, L as ListAction, H as TableData, F as TableCell, K as TableRow, G as TableColumn, I as TableDisplay, C as CellAlign, w as ScrollPercentage, x as ScrollPosition, z as ScrollableData, Q as CursorShape, R as TerminalState, Y as ScrollInfo } from '../virtualViewport-DTSN6jFk.js';
|
|
7
7
|
export { BitmapFont, BitmapFontSchema, CharBitmap, CharBitmapSchema, FontName, FontNotFoundError, RenderCharOptions, createFontNotFoundError, getCharBitmap, loadFont, renderChar } from './fonts/index.js';
|
|
8
8
|
import { C as Cell$1 } from '../cell-DwIu2ryP.js';
|
|
9
9
|
import { T as Transform3DConfig, M as Material3DConfig, h as Viewport3DWidgetConfig } from '../viewport3d-xI33-_wq.js';
|
|
@@ -1301,6 +1301,272 @@ declare function isButtonWidget(_world: World, eid: Entity): boolean;
|
|
|
1301
1301
|
*/
|
|
1302
1302
|
declare function resetButtonWidgetStore(): void;
|
|
1303
1303
|
|
|
1304
|
+
/**
|
|
1305
|
+
* Calendar Widget - Monthly calendar display with date selection
|
|
1306
|
+
* @module widgets/calendar
|
|
1307
|
+
*/
|
|
1308
|
+
|
|
1309
|
+
/**
|
|
1310
|
+
* Calendar theme configuration for styling different elements.
|
|
1311
|
+
*/
|
|
1312
|
+
interface CalendarTheme {
|
|
1313
|
+
/** Header (month/year) foreground color */
|
|
1314
|
+
readonly headerFg?: string | number;
|
|
1315
|
+
/** Header background color */
|
|
1316
|
+
readonly headerBg?: string | number;
|
|
1317
|
+
/** Weekday labels foreground color */
|
|
1318
|
+
readonly weekdayFg?: string | number;
|
|
1319
|
+
/** Regular day foreground color */
|
|
1320
|
+
readonly dayFg?: string | number;
|
|
1321
|
+
/** Selected day foreground color */
|
|
1322
|
+
readonly selectedFg?: string | number;
|
|
1323
|
+
/** Selected day background color */
|
|
1324
|
+
readonly selectedBg?: string | number;
|
|
1325
|
+
/** Today's date foreground color */
|
|
1326
|
+
readonly todayFg?: string | number;
|
|
1327
|
+
/** Today's date background color */
|
|
1328
|
+
readonly todayBg?: string | number;
|
|
1329
|
+
/** Marked date foreground color */
|
|
1330
|
+
readonly markedFg?: string | number;
|
|
1331
|
+
/** Marked date background color */
|
|
1332
|
+
readonly markedBg?: string | number;
|
|
1333
|
+
/** Outside month day foreground color */
|
|
1334
|
+
readonly outsideFg?: string | number;
|
|
1335
|
+
/** Cursor (current focus) foreground color */
|
|
1336
|
+
readonly cursorFg?: string | number;
|
|
1337
|
+
/** Cursor background color */
|
|
1338
|
+
readonly cursorBg?: string | number;
|
|
1339
|
+
}
|
|
1340
|
+
/**
|
|
1341
|
+
* Calendar widget configuration.
|
|
1342
|
+
*
|
|
1343
|
+
* @example
|
|
1344
|
+
* ```typescript
|
|
1345
|
+
* import { createWorld, addEntity, createCalendar } from 'blecsd';
|
|
1346
|
+
*
|
|
1347
|
+
* const world = createWorld();
|
|
1348
|
+
* const eid = addEntity(world);
|
|
1349
|
+
*
|
|
1350
|
+
* // Basic calendar
|
|
1351
|
+
* const calendar = createCalendar(world, eid, {
|
|
1352
|
+
* left: 0,
|
|
1353
|
+
* top: 0,
|
|
1354
|
+
* initialDate: new Date('2026-02-08'),
|
|
1355
|
+
* });
|
|
1356
|
+
*
|
|
1357
|
+
* // With custom theme and marked dates
|
|
1358
|
+
* const calendar = createCalendar(world, eid, {
|
|
1359
|
+
* left: 10,
|
|
1360
|
+
* top: 5,
|
|
1361
|
+
* initialDate: new Date(),
|
|
1362
|
+
* minDate: new Date('2026-01-01'),
|
|
1363
|
+
* maxDate: new Date('2026-12-31'),
|
|
1364
|
+
* firstDayOfWeek: 1, // Monday
|
|
1365
|
+
* showWeekNumbers: true,
|
|
1366
|
+
* markedDates: [
|
|
1367
|
+
* new Date('2026-02-14'), // Valentine's Day
|
|
1368
|
+
* new Date('2026-12-25'), // Christmas
|
|
1369
|
+
* ],
|
|
1370
|
+
* theme: {
|
|
1371
|
+
* headerFg: 0xffffffff,
|
|
1372
|
+
* headerBg: 0x333333ff,
|
|
1373
|
+
* selectedBg: 0x0000ffff,
|
|
1374
|
+
* todayBg: 0x00ff00ff,
|
|
1375
|
+
* }
|
|
1376
|
+
* });
|
|
1377
|
+
*
|
|
1378
|
+
* // Handle selection
|
|
1379
|
+
* calendar.onSelect((date) => {
|
|
1380
|
+
* console.log('Selected:', date.toISOString());
|
|
1381
|
+
* });
|
|
1382
|
+
* ```
|
|
1383
|
+
*/
|
|
1384
|
+
interface CalendarConfig {
|
|
1385
|
+
/**
|
|
1386
|
+
* X position (left coordinate)
|
|
1387
|
+
* @default 0
|
|
1388
|
+
*/
|
|
1389
|
+
readonly left?: number;
|
|
1390
|
+
/**
|
|
1391
|
+
* Y position (top coordinate)
|
|
1392
|
+
* @default 0
|
|
1393
|
+
*/
|
|
1394
|
+
readonly top?: number;
|
|
1395
|
+
/**
|
|
1396
|
+
* Initial date to display (defaults to today)
|
|
1397
|
+
*/
|
|
1398
|
+
readonly initialDate?: Date;
|
|
1399
|
+
/**
|
|
1400
|
+
* Minimum selectable date (inclusive)
|
|
1401
|
+
*/
|
|
1402
|
+
readonly minDate?: Date;
|
|
1403
|
+
/**
|
|
1404
|
+
* Maximum selectable date (inclusive)
|
|
1405
|
+
*/
|
|
1406
|
+
readonly maxDate?: Date;
|
|
1407
|
+
/**
|
|
1408
|
+
* First day of week (0=Sunday, 1=Monday, ..., 6=Saturday)
|
|
1409
|
+
* @default 0 (Sunday)
|
|
1410
|
+
*/
|
|
1411
|
+
readonly firstDayOfWeek?: number;
|
|
1412
|
+
/**
|
|
1413
|
+
* Show week numbers in the left column
|
|
1414
|
+
* @default false
|
|
1415
|
+
*/
|
|
1416
|
+
readonly showWeekNumbers?: boolean;
|
|
1417
|
+
/**
|
|
1418
|
+
* Dates to highlight/mark
|
|
1419
|
+
* @default []
|
|
1420
|
+
*/
|
|
1421
|
+
readonly markedDates?: readonly Date[];
|
|
1422
|
+
/**
|
|
1423
|
+
* Theme configuration for styling calendar elements
|
|
1424
|
+
*/
|
|
1425
|
+
readonly theme?: CalendarTheme;
|
|
1426
|
+
}
|
|
1427
|
+
/**
|
|
1428
|
+
* Calendar widget interface providing chainable methods.
|
|
1429
|
+
*/
|
|
1430
|
+
interface CalendarWidget {
|
|
1431
|
+
/** The underlying entity ID */
|
|
1432
|
+
readonly eid: Entity;
|
|
1433
|
+
/** Sets the selected date */
|
|
1434
|
+
setDate(date: Date): CalendarWidget;
|
|
1435
|
+
/** Gets the selected date */
|
|
1436
|
+
getDate(): Date | undefined;
|
|
1437
|
+
/** Gets the currently displayed month */
|
|
1438
|
+
getMonth(): {
|
|
1439
|
+
year: number;
|
|
1440
|
+
month: number;
|
|
1441
|
+
};
|
|
1442
|
+
/** Moves to the previous month */
|
|
1443
|
+
prevMonth(): CalendarWidget;
|
|
1444
|
+
/** Moves to the next month */
|
|
1445
|
+
nextMonth(): CalendarWidget;
|
|
1446
|
+
/** Moves to the previous year */
|
|
1447
|
+
prevYear(): CalendarWidget;
|
|
1448
|
+
/** Moves to the next year */
|
|
1449
|
+
nextYear(): CalendarWidget;
|
|
1450
|
+
/** Moves cursor up one week */
|
|
1451
|
+
cursorUp(): CalendarWidget;
|
|
1452
|
+
/** Moves cursor down one week */
|
|
1453
|
+
cursorDown(): CalendarWidget;
|
|
1454
|
+
/** Moves cursor left one day */
|
|
1455
|
+
cursorLeft(): CalendarWidget;
|
|
1456
|
+
/** Moves cursor right one day */
|
|
1457
|
+
cursorRight(): CalendarWidget;
|
|
1458
|
+
/** Selects the current cursor date */
|
|
1459
|
+
selectCursor(): CalendarWidget;
|
|
1460
|
+
/** Sets marked dates */
|
|
1461
|
+
setMarkedDates(dates: readonly Date[]): CalendarWidget;
|
|
1462
|
+
/** Adds a marked date */
|
|
1463
|
+
addMarkedDate(date: Date): CalendarWidget;
|
|
1464
|
+
/** Removes a marked date */
|
|
1465
|
+
removeMarkedDate(date: Date): CalendarWidget;
|
|
1466
|
+
/** Gets all marked dates */
|
|
1467
|
+
getMarkedDates(): readonly Date[];
|
|
1468
|
+
/** Handles a key press, returns true if handled */
|
|
1469
|
+
handleKey(key: string): boolean;
|
|
1470
|
+
/** Registers callback for date selection */
|
|
1471
|
+
onSelect(callback: (date: Date) => void): () => void;
|
|
1472
|
+
/** Renders and marks dirty */
|
|
1473
|
+
render(): CalendarWidget;
|
|
1474
|
+
/** Destroys the widget */
|
|
1475
|
+
destroy(): void;
|
|
1476
|
+
}
|
|
1477
|
+
/**
|
|
1478
|
+
* Zod schema for calendar configuration validation.
|
|
1479
|
+
*/
|
|
1480
|
+
declare const CalendarConfigSchema: z.ZodObject<{
|
|
1481
|
+
left: z.ZodDefault<z.ZodNumber>;
|
|
1482
|
+
top: z.ZodDefault<z.ZodNumber>;
|
|
1483
|
+
initialDate: z.ZodOptional<z.ZodDate>;
|
|
1484
|
+
minDate: z.ZodOptional<z.ZodDate>;
|
|
1485
|
+
maxDate: z.ZodOptional<z.ZodDate>;
|
|
1486
|
+
firstDayOfWeek: z.ZodDefault<z.ZodNumber>;
|
|
1487
|
+
showWeekNumbers: z.ZodDefault<z.ZodBoolean>;
|
|
1488
|
+
markedDates: z.ZodDefault<z.ZodArray<z.ZodDate>>;
|
|
1489
|
+
theme: z.ZodOptional<z.ZodObject<{
|
|
1490
|
+
headerFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1491
|
+
headerBg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1492
|
+
weekdayFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1493
|
+
dayFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1494
|
+
selectedFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1495
|
+
selectedBg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1496
|
+
todayFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1497
|
+
todayBg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1498
|
+
markedFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1499
|
+
markedBg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1500
|
+
outsideFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1501
|
+
cursorFg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1502
|
+
cursorBg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
1503
|
+
}, z.core.$strip>>;
|
|
1504
|
+
}, z.core.$strict>;
|
|
1505
|
+
/**
|
|
1506
|
+
* Resets the calendar store (for testing).
|
|
1507
|
+
*/
|
|
1508
|
+
declare function resetCalendarStore(): void;
|
|
1509
|
+
/**
|
|
1510
|
+
* Creates a Calendar widget with the given configuration.
|
|
1511
|
+
*
|
|
1512
|
+
* The Calendar widget displays a monthly calendar with date selection,
|
|
1513
|
+
* keyboard navigation, and support for marked dates.
|
|
1514
|
+
*
|
|
1515
|
+
* Key bindings:
|
|
1516
|
+
* - Arrow keys: Navigate dates
|
|
1517
|
+
* - Enter: Select current cursor date
|
|
1518
|
+
* - PageUp: Previous month
|
|
1519
|
+
* - PageDown: Next month
|
|
1520
|
+
* - Shift+PageUp: Previous year
|
|
1521
|
+
* - Shift+PageDown: Next year
|
|
1522
|
+
*
|
|
1523
|
+
* @param world - The ECS world
|
|
1524
|
+
* @param entity - The entity to wrap
|
|
1525
|
+
* @param config - Widget configuration
|
|
1526
|
+
* @returns The Calendar widget instance
|
|
1527
|
+
*
|
|
1528
|
+
* @example
|
|
1529
|
+
* ```typescript
|
|
1530
|
+
* import { createWorld, addEntity, createCalendar } from 'blecsd';
|
|
1531
|
+
*
|
|
1532
|
+
* const world = createWorld();
|
|
1533
|
+
* const eid = addEntity(world);
|
|
1534
|
+
*
|
|
1535
|
+
* const calendar = createCalendar(world, eid, {
|
|
1536
|
+
* left: 5,
|
|
1537
|
+
* top: 5,
|
|
1538
|
+
* initialDate: new Date(),
|
|
1539
|
+
* showWeekNumbers: true,
|
|
1540
|
+
* });
|
|
1541
|
+
*
|
|
1542
|
+
* calendar.onSelect((date) => {
|
|
1543
|
+
* console.log('Selected date:', date.toISOString());
|
|
1544
|
+
* });
|
|
1545
|
+
*
|
|
1546
|
+
* // Navigate with methods
|
|
1547
|
+
* calendar.nextMonth().render();
|
|
1548
|
+
*
|
|
1549
|
+
* // Or handle keys
|
|
1550
|
+
* calendar.handleKey('down'); // Move cursor down one week
|
|
1551
|
+
* calendar.handleKey('enter'); // Select cursor date
|
|
1552
|
+
*
|
|
1553
|
+
* // Clean up
|
|
1554
|
+
* calendar.destroy();
|
|
1555
|
+
* ```
|
|
1556
|
+
*/
|
|
1557
|
+
declare function createCalendar(world: World, entity: Entity, config?: CalendarConfig): CalendarWidget;
|
|
1558
|
+
/**
|
|
1559
|
+
* Checks if an entity is a calendar.
|
|
1560
|
+
*
|
|
1561
|
+
* @param eid - The entity ID
|
|
1562
|
+
* @returns true if the entity is a calendar
|
|
1563
|
+
*/
|
|
1564
|
+
declare function isCalendar(eid: Entity): boolean;
|
|
1565
|
+
/**
|
|
1566
|
+
* Calendar component tag for registry.
|
|
1567
|
+
*/
|
|
1568
|
+
declare const Calendar: "Calendar";
|
|
1569
|
+
|
|
1304
1570
|
/**
|
|
1305
1571
|
* Canvas Widget
|
|
1306
1572
|
*
|
|
@@ -2459,6 +2725,79 @@ declare function replaceLines(world: World, eid: Entity, startIndex: number, new
|
|
|
2459
2725
|
*/
|
|
2460
2726
|
declare function spliceLines(world: World, eid: Entity, start: number, deleteCount: number, insertLines?: string[]): string[];
|
|
2461
2727
|
|
|
2728
|
+
/**
|
|
2729
|
+
* Context menu widget for terminal UIs.
|
|
2730
|
+
* Provides right-click style menus with keyboard navigation.
|
|
2731
|
+
* @module widgets/contextMenu
|
|
2732
|
+
*/
|
|
2733
|
+
|
|
2734
|
+
/**
|
|
2735
|
+
* Context menu item definition.
|
|
2736
|
+
*/
|
|
2737
|
+
interface ContextMenuItem {
|
|
2738
|
+
/** Display label */
|
|
2739
|
+
readonly label: string;
|
|
2740
|
+
/** Action callback when item is selected */
|
|
2741
|
+
readonly action?: () => void;
|
|
2742
|
+
/** Whether item is disabled */
|
|
2743
|
+
readonly disabled?: boolean;
|
|
2744
|
+
/** Whether item is a separator */
|
|
2745
|
+
readonly separator?: boolean;
|
|
2746
|
+
}
|
|
2747
|
+
/**
|
|
2748
|
+
* Context menu configuration.
|
|
2749
|
+
*/
|
|
2750
|
+
interface ContextMenuConfig {
|
|
2751
|
+
/** Menu items */
|
|
2752
|
+
readonly items: readonly ContextMenuItem[];
|
|
2753
|
+
/** X position (auto-adjusted if near edge) */
|
|
2754
|
+
readonly x: number;
|
|
2755
|
+
/** Y position (auto-adjusted if near edge) */
|
|
2756
|
+
readonly y: number;
|
|
2757
|
+
/** Terminal width for edge detection */
|
|
2758
|
+
readonly termWidth?: number;
|
|
2759
|
+
/** Terminal height for edge detection */
|
|
2760
|
+
readonly termHeight?: number;
|
|
2761
|
+
}
|
|
2762
|
+
/**
|
|
2763
|
+
* Creates a context menu widget.
|
|
2764
|
+
* Returns the container entity.
|
|
2765
|
+
*
|
|
2766
|
+
* @param world - The ECS world
|
|
2767
|
+
* @param config - Context menu configuration
|
|
2768
|
+
* @returns The container entity ID
|
|
2769
|
+
*
|
|
2770
|
+
* @example
|
|
2771
|
+
* ```typescript
|
|
2772
|
+
* import { createContextMenu } from 'blecsd';
|
|
2773
|
+
*
|
|
2774
|
+
* const menu = createContextMenu(world, {
|
|
2775
|
+
* x: 10,
|
|
2776
|
+
* y: 5,
|
|
2777
|
+
* items: [
|
|
2778
|
+
* { label: 'Copy', action: () => console.log('Copy') },
|
|
2779
|
+
* { label: 'Paste', action: () => console.log('Paste') },
|
|
2780
|
+
* { separator: true },
|
|
2781
|
+
* { label: 'Delete', action: () => console.log('Delete'), disabled: true },
|
|
2782
|
+
* ],
|
|
2783
|
+
* });
|
|
2784
|
+
* ```
|
|
2785
|
+
*/
|
|
2786
|
+
declare function createContextMenu(world: World, config: ContextMenuConfig): Entity;
|
|
2787
|
+
/**
|
|
2788
|
+
* Handles keyboard input for context menu.
|
|
2789
|
+
*
|
|
2790
|
+
* @param world - The ECS world
|
|
2791
|
+
* @param eid - The context menu entity
|
|
2792
|
+
* @param key - The key pressed
|
|
2793
|
+
* @returns True if key was handled
|
|
2794
|
+
*/
|
|
2795
|
+
declare function handleContextMenuKey(world: World, eid: Entity, key: string): boolean;
|
|
2796
|
+
/**
|
|
2797
|
+
* Gets the currently selected item index.
|
|
2798
|
+
*/
|
|
2799
|
+
declare function getContextMenuSelectedIndex(eid: Entity): number;
|
|
2800
|
+
|
|
2462
2801
|
/**
|
|
2463
2802
|
* DevTools Widget
|
|
2464
2803
|
*
|
|
@@ -2646,8 +2985,8 @@ declare const DevToolsConfigSchema: z.ZodObject<{
|
|
|
2646
2985
|
floating: "floating";
|
|
2647
2986
|
}>>>;
|
|
2648
2987
|
initialTab: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
2649
|
-
systems: "systems";
|
|
2650
2988
|
components: "components";
|
|
2989
|
+
systems: "systems";
|
|
2651
2990
|
entities: "entities";
|
|
2652
2991
|
events: "events";
|
|
2653
2992
|
}>>>;
|
|
@@ -2667,52 +3006,6 @@ declare const DevToolsConfigSchema: z.ZodObject<{
|
|
|
2667
3006
|
height: z.ZodOptional<z.ZodNumber>;
|
|
2668
3007
|
scheduler: z.ZodOptional<z.ZodAny>;
|
|
2669
3008
|
}, z.core.$strip>;
|
|
2670
|
-
/**
|
|
2671
|
-
* Creates a DevTools widget for runtime debugging and inspection.
|
|
2672
|
-
*
|
|
2673
|
-
* The devtools widget provides tabbed panels for inspecting entities,
|
|
2674
|
-
* components, systems, and event logs. Typically toggled with F12.
|
|
2675
|
-
*
|
|
2676
|
-
* @param world - The ECS world
|
|
2677
|
-
* @param entity - The entity to wrap
|
|
2678
|
-
* @param config - Widget configuration
|
|
2679
|
-
* @returns The DevTools widget instance
|
|
2680
|
-
*
|
|
2681
|
-
* @example
|
|
2682
|
-
* ```typescript
|
|
2683
|
-
* import { createWorld, addEntity } from '../core/ecs';
|
|
2684
|
-
* import { createDevTools } from 'blecsd/widgets';
|
|
2685
|
-
* import { createScheduler } from 'blecsd';
|
|
2686
|
-
*
|
|
2687
|
-
* const world = createWorld();
|
|
2688
|
-
* const eid = addEntity(world);
|
|
2689
|
-
* const scheduler = createScheduler();
|
|
2690
|
-
*
|
|
2691
|
-
* // Create devtools at bottom of screen
|
|
2692
|
-
* const devTools = createDevTools(world, eid, {
|
|
2693
|
-
* position: 'bottom',
|
|
2694
|
-
* initialTab: 'entities',
|
|
2695
|
-
* scheduler,
|
|
2696
|
-
* theme: {
|
|
2697
|
-
* fg: '#00ff00',
|
|
2698
|
-
* bg: '#000000'
|
|
2699
|
-
* }
|
|
2700
|
-
* });
|
|
2701
|
-
*
|
|
2702
|
-
* // Toggle visibility
|
|
2703
|
-
* devTools.toggle();
|
|
2704
|
-
*
|
|
2705
|
-
* // Inspect entities
|
|
2706
|
-
* const entities = devTools.getEntities();
|
|
2707
|
-
* console.log(`Found ${entities.length} entities`);
|
|
2708
|
-
*
|
|
2709
|
-
* // Filter by component
|
|
2710
|
-
* devTools.filterByComponent('Position');
|
|
2711
|
-
*
|
|
2712
|
-
* // Log events
|
|
2713
|
-
* devTools.logEvent('player_moved', { x: 10, y: 20 });
|
|
2714
|
-
* ```
|
|
2715
|
-
*/
|
|
2716
3009
|
declare function createDevTools(world: World, entity: Entity, config?: DevToolsConfig): DevToolsWidget;
|
|
2717
3010
|
/**
|
|
2718
3011
|
* Type guard to check if an entity is a devtools widget.
|
|
@@ -2999,34 +3292,6 @@ declare const fileManagerStateMap: Map<number, FileManagerState>;
|
|
|
2999
3292
|
* ```
|
|
3000
3293
|
*/
|
|
3001
3294
|
declare function createFileManager(world: World, config?: FileManagerConfig): FileManagerWidget;
|
|
3002
|
-
/**
|
|
3003
|
-
* Handles a key event for a file manager widget.
|
|
3004
|
-
*
|
|
3005
|
-
* Supported keys:
|
|
3006
|
-
* - `up`: Move selection up
|
|
3007
|
-
* - `down`: Move selection down
|
|
3008
|
-
* - `enter`: Open file (fires onSelect) or navigate into directory (fires onNavigate)
|
|
3009
|
-
* - `backspace`: Navigate to parent directory
|
|
3010
|
-
* - `h`: Toggle hidden files visibility
|
|
3011
|
-
* - `d`: Delete selected file/directory (fires onDelete callback)
|
|
3012
|
-
* - `r`: Rename selected file/directory (fires onRename callback)
|
|
3013
|
-
* - `n`: Sort by name
|
|
3014
|
-
* - `s`: Sort by size
|
|
3015
|
-
* - `t`: Sort by date/time
|
|
3016
|
-
*
|
|
3017
|
-
* @param world - The ECS world
|
|
3018
|
-
* @param eid - The file manager entity ID
|
|
3019
|
-
* @param key - The key name
|
|
3020
|
-
* @returns true if the key was handled
|
|
3021
|
-
*
|
|
3022
|
-
* @example
|
|
3023
|
-
* ```typescript
|
|
3024
|
-
* import { handleFileManagerKey } from 'blecsd';
|
|
3025
|
-
*
|
|
3026
|
-
* // In an input handler:
|
|
3027
|
-
* handleFileManagerKey(world, fmEid, 'enter');
|
|
3028
|
-
* ```
|
|
3029
|
-
*/
|
|
3030
3295
|
declare function handleFileManagerKey(world: World, eid: Entity, key: string): boolean;
|
|
3031
3296
|
/**
|
|
3032
3297
|
* Checks if an entity is a file manager widget.
|
|
@@ -7409,8 +7674,8 @@ declare const MessageConfigSchema: z.ZodObject<{
|
|
|
7409
7674
|
type: z.ZodOptional<z.ZodEnum<{
|
|
7410
7675
|
error: "error";
|
|
7411
7676
|
success: "success";
|
|
7412
|
-
warning: "warning";
|
|
7413
7677
|
info: "info";
|
|
7678
|
+
warning: "warning";
|
|
7414
7679
|
}>>;
|
|
7415
7680
|
fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
7416
7681
|
bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
@@ -7964,38 +8229,333 @@ declare function handleModalBackdropClick(world: World, eid: Entity): boolean;
|
|
|
7964
8229
|
declare function handleModalEscape(world: World, eid: Entity): boolean;
|
|
7965
8230
|
|
|
7966
8231
|
/**
|
|
7967
|
-
*
|
|
8232
|
+
* Multi-Select Widget
|
|
7968
8233
|
*
|
|
7969
|
-
* A
|
|
7970
|
-
* and
|
|
8234
|
+
* A standalone multi-select dropdown/list with checkbox display,
|
|
8235
|
+
* filter-as-you-type, range selection, and keyboard-only navigation.
|
|
7971
8236
|
*
|
|
7972
|
-
* @module widgets/
|
|
8237
|
+
* @module widgets/multiSelect
|
|
8238
|
+
*
|
|
8239
|
+
* @example
|
|
8240
|
+
* ```typescript
|
|
8241
|
+
* import { createMultiSelect, getSelectedItems, onSelectionChange } from 'blecsd';
|
|
8242
|
+
*
|
|
8243
|
+
* const world = createWorld();
|
|
8244
|
+
* const ms = createMultiSelect(world, {
|
|
8245
|
+
* items: ['Apple', 'Banana', 'Cherry', 'Date'],
|
|
8246
|
+
* width: 30,
|
|
8247
|
+
* height: 10,
|
|
8248
|
+
* });
|
|
8249
|
+
*
|
|
8250
|
+
* // Toggle items
|
|
8251
|
+
* ms.focus().select(0).toggleCurrent();
|
|
8252
|
+
*
|
|
8253
|
+
* // Get selected
|
|
8254
|
+
* const selected = getSelectedItems(world, ms.eid);
|
|
8255
|
+
* console.log(selected); // ['Apple']
|
|
8256
|
+
*
|
|
8257
|
+
* // Listen for changes
|
|
8258
|
+
* onSelectionChange(world, ms.eid, (items) => {
|
|
8259
|
+
* console.log('Selected:', items);
|
|
8260
|
+
* });
|
|
8261
|
+
* ```
|
|
7973
8262
|
*/
|
|
7974
8263
|
|
|
7975
8264
|
/**
|
|
7976
|
-
*
|
|
8265
|
+
* A multi-select item with display text and optional value.
|
|
8266
|
+
*
|
|
8267
|
+
* @example
|
|
8268
|
+
* ```typescript
|
|
8269
|
+
* const item: MultiSelectItem = {
|
|
8270
|
+
* text: 'Option A',
|
|
8271
|
+
* value: 'a',
|
|
8272
|
+
* disabled: false,
|
|
8273
|
+
* };
|
|
8274
|
+
* ```
|
|
7977
8275
|
*/
|
|
7978
|
-
|
|
8276
|
+
interface MultiSelectItem {
|
|
8277
|
+
/** Display text */
|
|
8278
|
+
readonly text: string;
|
|
8279
|
+
/** Optional value (defaults to text) */
|
|
8280
|
+
readonly value?: string | undefined;
|
|
8281
|
+
/** Whether the item is disabled and cannot be selected */
|
|
8282
|
+
readonly disabled?: boolean | undefined;
|
|
8283
|
+
}
|
|
7979
8284
|
/**
|
|
7980
|
-
*
|
|
8285
|
+
* Configuration for creating a MultiSelect widget.
|
|
8286
|
+
*
|
|
8287
|
+
* @example
|
|
8288
|
+
* ```typescript
|
|
8289
|
+
* const config: MultiSelectConfig = {
|
|
8290
|
+
* items: ['Apple', 'Banana', 'Cherry'],
|
|
8291
|
+
* width: 30,
|
|
8292
|
+
* height: 10,
|
|
8293
|
+
* selected: [0, 2],
|
|
8294
|
+
* };
|
|
8295
|
+
* ```
|
|
7981
8296
|
*/
|
|
7982
|
-
|
|
8297
|
+
interface MultiSelectConfig {
|
|
8298
|
+
/** X position @default 0 */
|
|
8299
|
+
readonly x?: number;
|
|
8300
|
+
/** Y position @default 0 */
|
|
8301
|
+
readonly y?: number;
|
|
8302
|
+
/** Width in columns @default 30 */
|
|
8303
|
+
readonly width?: number;
|
|
8304
|
+
/** Height in rows @default 10 */
|
|
8305
|
+
readonly height?: number;
|
|
8306
|
+
/** Items as strings or MultiSelectItem objects */
|
|
8307
|
+
readonly items?: readonly (string | MultiSelectItem)[];
|
|
8308
|
+
/** Initially selected indices @default [] */
|
|
8309
|
+
readonly selected?: readonly number[];
|
|
8310
|
+
/** Foreground color for normal items */
|
|
8311
|
+
readonly fg?: number;
|
|
8312
|
+
/** Background color for normal items */
|
|
8313
|
+
readonly bg?: number;
|
|
8314
|
+
/** Foreground color for the highlighted/cursor item */
|
|
8315
|
+
readonly cursorFg?: number;
|
|
8316
|
+
/** Background color for the highlighted/cursor item */
|
|
8317
|
+
readonly cursorBg?: number;
|
|
8318
|
+
/** Foreground color for selected items */
|
|
8319
|
+
readonly selectedFg?: number;
|
|
8320
|
+
/** Background color for selected items */
|
|
8321
|
+
readonly selectedBg?: number;
|
|
8322
|
+
/** Foreground color for disabled items */
|
|
8323
|
+
readonly disabledFg?: number;
|
|
8324
|
+
/** Whether to enable filter-as-you-type @default true */
|
|
8325
|
+
readonly filterable?: boolean;
|
|
8326
|
+
}
|
|
7983
8327
|
/**
|
|
7984
|
-
*
|
|
8328
|
+
* Callback fired when the selection changes.
|
|
7985
8329
|
*/
|
|
7986
|
-
type
|
|
8330
|
+
type SelectionChangeCallback = (selectedIndices: readonly number[], selectedItems: readonly MultiSelectItem[]) => void;
|
|
7987
8331
|
/**
|
|
7988
|
-
*
|
|
8332
|
+
* MultiSelect widget interface providing chainable methods.
|
|
7989
8333
|
*/
|
|
7990
|
-
interface
|
|
7991
|
-
/**
|
|
7992
|
-
readonly
|
|
7993
|
-
/**
|
|
7994
|
-
|
|
7995
|
-
/**
|
|
7996
|
-
|
|
7997
|
-
/**
|
|
7998
|
-
|
|
8334
|
+
interface MultiSelectWidget {
|
|
8335
|
+
/** The underlying entity ID */
|
|
8336
|
+
readonly eid: Entity;
|
|
8337
|
+
/** Shows the widget */
|
|
8338
|
+
show(): MultiSelectWidget;
|
|
8339
|
+
/** Hides the widget */
|
|
8340
|
+
hide(): MultiSelectWidget;
|
|
8341
|
+
/** Focuses the widget */
|
|
8342
|
+
focus(): MultiSelectWidget;
|
|
8343
|
+
/** Blurs the widget */
|
|
8344
|
+
blur(): MultiSelectWidget;
|
|
8345
|
+
/** Returns whether the widget is focused */
|
|
8346
|
+
isFocused(): boolean;
|
|
8347
|
+
/** Moves cursor to a specific index */
|
|
8348
|
+
select(index: number): MultiSelectWidget;
|
|
8349
|
+
/** Gets the current cursor index */
|
|
8350
|
+
getCursorIndex(): number;
|
|
8351
|
+
/** Moves cursor up */
|
|
8352
|
+
cursorUp(): MultiSelectWidget;
|
|
8353
|
+
/** Moves cursor down */
|
|
8354
|
+
cursorDown(): MultiSelectWidget;
|
|
8355
|
+
/** Moves to first item */
|
|
8356
|
+
cursorFirst(): MultiSelectWidget;
|
|
8357
|
+
/** Moves to last item */
|
|
8358
|
+
cursorLast(): MultiSelectWidget;
|
|
8359
|
+
/** Scrolls up by page */
|
|
8360
|
+
pageUp(): MultiSelectWidget;
|
|
8361
|
+
/** Scrolls down by page */
|
|
8362
|
+
pageDown(): MultiSelectWidget;
|
|
8363
|
+
/** Toggles the selection of the current item */
|
|
8364
|
+
toggleCurrent(): MultiSelectWidget;
|
|
8365
|
+
/** Toggles the selection of a specific item by index */
|
|
8366
|
+
toggleItem(index: number): MultiSelectWidget;
|
|
8367
|
+
/** Selects all items */
|
|
8368
|
+
selectAll(): MultiSelectWidget;
|
|
8369
|
+
/** Deselects all items */
|
|
8370
|
+
deselectAll(): MultiSelectWidget;
|
|
8371
|
+
/** Range select from anchor to current cursor (Shift+Arrow behavior) */
|
|
8372
|
+
rangeSelectTo(index: number): MultiSelectWidget;
|
|
8373
|
+
/** Gets all selected indices (sorted) */
|
|
8374
|
+
getSelectedIndices(): readonly number[];
|
|
8375
|
+
/** Gets all selected items */
|
|
8376
|
+
getSelectedItems(): readonly MultiSelectItem[];
|
|
8377
|
+
/** Gets the count of selected items */
|
|
8378
|
+
getSelectedCount(): number;
|
|
8379
|
+
/** Gets a formatted status string like "3 selected" */
|
|
8380
|
+
getSelectionStatus(): string;
|
|
8381
|
+
/** Checks if a specific index is selected */
|
|
8382
|
+
isSelected(index: number): boolean;
|
|
8383
|
+
/** Sets the items */
|
|
8384
|
+
setItems(items: readonly (string | MultiSelectItem)[]): MultiSelectWidget;
|
|
8385
|
+
/** Gets all items */
|
|
8386
|
+
getItems(): readonly MultiSelectItem[];
|
|
8387
|
+
/** Gets visible items (after filtering) */
|
|
8388
|
+
getVisibleItems(): readonly MultiSelectItem[];
|
|
8389
|
+
/** Sets the filter query (filter-as-you-type) */
|
|
8390
|
+
setFilter(query: string): MultiSelectWidget;
|
|
8391
|
+
/** Gets the current filter query */
|
|
8392
|
+
getFilter(): string;
|
|
8393
|
+
/** Clears the filter */
|
|
8394
|
+
clearFilter(): MultiSelectWidget;
|
|
8395
|
+
/** Gets the rendered lines for display (with checkboxes) */
|
|
8396
|
+
getRenderLines(): readonly string[];
|
|
8397
|
+
/** Registers a callback for selection changes */
|
|
8398
|
+
onSelectionChange(callback: SelectionChangeCallback): () => void;
|
|
8399
|
+
/** Handles a key press, returns true if consumed */
|
|
8400
|
+
handleKey(key: string, ctrl?: boolean, shift?: boolean): boolean;
|
|
8401
|
+
/** Destroys the widget */
|
|
8402
|
+
destroy(): void;
|
|
8403
|
+
}
|
|
8404
|
+
/**
|
|
8405
|
+
* Zod schema for MultiSelectConfig validation.
|
|
8406
|
+
*/
|
|
8407
|
+
declare const MultiSelectConfigSchema: z.ZodObject<{
|
|
8408
|
+
x: z.ZodDefault<z.ZodNumber>;
|
|
8409
|
+
y: z.ZodDefault<z.ZodNumber>;
|
|
8410
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
8411
|
+
height: z.ZodDefault<z.ZodNumber>;
|
|
8412
|
+
items: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
8413
|
+
text: z.ZodString;
|
|
8414
|
+
value: z.ZodOptional<z.ZodString>;
|
|
8415
|
+
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
8416
|
+
}, z.core.$strip>]>>>;
|
|
8417
|
+
selected: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
8418
|
+
fg: z.ZodOptional<z.ZodNumber>;
|
|
8419
|
+
bg: z.ZodOptional<z.ZodNumber>;
|
|
8420
|
+
cursorFg: z.ZodOptional<z.ZodNumber>;
|
|
8421
|
+
cursorBg: z.ZodOptional<z.ZodNumber>;
|
|
8422
|
+
selectedFg: z.ZodOptional<z.ZodNumber>;
|
|
8423
|
+
selectedBg: z.ZodOptional<z.ZodNumber>;
|
|
8424
|
+
disabledFg: z.ZodOptional<z.ZodNumber>;
|
|
8425
|
+
filterable: z.ZodDefault<z.ZodBoolean>;
|
|
8426
|
+
}, z.core.$strip>;
|
|
8427
|
+
/**
|
|
8428
|
+
* MultiSelect component marker for identifying multi-select entities.
|
|
8429
|
+
*
|
|
8430
|
+
* @example
|
|
8431
|
+
* ```typescript
|
|
8432
|
+
* import { MultiSelect } from 'blecsd';
|
|
8433
|
+
*
|
|
8434
|
+
* if (MultiSelect.isMultiSelect[eid] === 1) {
|
|
8435
|
+
* // Entity is a multi-select widget
|
|
8436
|
+
* }
|
|
8437
|
+
* ```
|
|
8438
|
+
*/
|
|
8439
|
+
declare const MultiSelect: {
|
|
8440
|
+
/** Tag indicating this is a multi-select widget (1 = yes) */
|
|
8441
|
+
isMultiSelect: Uint8Array<ArrayBuffer>;
|
|
8442
|
+
/** Whether the widget is visible (0 = hidden, 1 = visible) */
|
|
8443
|
+
visible: Uint8Array<ArrayBuffer>;
|
|
8444
|
+
/** Whether the widget is focused (0 = no, 1 = yes) */
|
|
8445
|
+
focused: Uint8Array<ArrayBuffer>;
|
|
8446
|
+
};
|
|
8447
|
+
/**
|
|
8448
|
+
* Creates a MultiSelect widget.
|
|
8449
|
+
*
|
|
8450
|
+
* @param world - The ECS world
|
|
8451
|
+
* @param config - Widget configuration
|
|
8452
|
+
* @returns The MultiSelectWidget instance
|
|
8453
|
+
*
|
|
8454
|
+
* @example
|
|
8455
|
+
* ```typescript
|
|
8456
|
+
* import { createWorld } from 'blecsd';
|
|
8457
|
+
* import { createMultiSelect } from 'blecsd';
|
|
8458
|
+
*
|
|
8459
|
+
* const world = createWorld();
|
|
8460
|
+
* const ms = createMultiSelect(world, {
|
|
8461
|
+
* items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'],
|
|
8462
|
+
* width: 30,
|
|
8463
|
+
* height: 8,
|
|
8464
|
+
* selected: [0, 2],
|
|
8465
|
+
* });
|
|
8466
|
+
*
|
|
8467
|
+
* ms.focus();
|
|
8468
|
+
* console.log(ms.getSelectionStatus()); // "2 selected"
|
|
8469
|
+
*
|
|
8470
|
+
* ms.handleKey(' '); // Toggle current
|
|
8471
|
+
* ms.handleKey('down'); // Move cursor
|
|
8472
|
+
* ```
|
|
8473
|
+
*/
|
|
8474
|
+
declare function createMultiSelect(world: World, config?: MultiSelectConfig): MultiSelectWidget;
|
|
8475
|
+
/**
|
|
8476
|
+
* Gets the selected items from a MultiSelect entity.
|
|
8477
|
+
*
|
|
8478
|
+
* @param _world - The ECS world
|
|
8479
|
+
* @param eid - The multi-select entity ID
|
|
8480
|
+
* @returns Array of selected items, or empty array if not a multi-select
|
|
8481
|
+
*
|
|
8482
|
+
* @example
|
|
8483
|
+
* ```typescript
|
|
8484
|
+
* import { getSelectedItems } from 'blecsd';
|
|
8485
|
+
*
|
|
8486
|
+
* const items = getSelectedItems(world, multiSelectEid);
|
|
8487
|
+
* console.log(items.map(i => i.text));
|
|
8488
|
+
* ```
|
|
8489
|
+
*/
|
|
8490
|
+
declare function getSelectedItems(_world: World, eid: Entity): readonly MultiSelectItem[];
|
|
8491
|
+
/**
|
|
8492
|
+
* Registers a callback for when the selection changes on a MultiSelect entity.
|
|
8493
|
+
*
|
|
8494
|
+
* @param _world - The ECS world
|
|
8495
|
+
* @param eid - The multi-select entity ID
|
|
8496
|
+
* @param callback - The callback to fire on selection change
|
|
8497
|
+
* @returns Unsubscribe function
|
|
8498
|
+
*
|
|
8499
|
+
* @example
|
|
8500
|
+
* ```typescript
|
|
8501
|
+
* import { onSelectionChange } from 'blecsd';
|
|
8502
|
+
*
|
|
8503
|
+
* const unsub = onSelectionChange(world, msEid, (indices, items) => {
|
|
8504
|
+
* console.log(`${items.length} items selected`);
|
|
8505
|
+
* });
|
|
8506
|
+
*
|
|
8507
|
+
* // Later: unsub();
|
|
8508
|
+
* ```
|
|
8509
|
+
*/
|
|
8510
|
+
declare function onSelectionChange(_world: World, eid: Entity, callback: SelectionChangeCallback): () => void;
|
|
8511
|
+
/**
|
|
8512
|
+
* Checks if an entity is a MultiSelect widget.
|
|
8513
|
+
*
|
|
8514
|
+
* @param _world - The ECS world (unused, for API consistency)
|
|
8515
|
+
* @param eid - The entity ID
|
|
8516
|
+
* @returns true if the entity is a multi-select widget
|
|
8517
|
+
*/
|
|
8518
|
+
declare function isMultiSelect(_world: World, eid: Entity): boolean;
|
|
8519
|
+
/**
|
|
8520
|
+
* Resets the MultiSelect component store. Useful for testing.
|
|
8521
|
+
*
|
|
8522
|
+
* @internal
|
|
8523
|
+
*/
|
|
8524
|
+
declare function resetMultiSelectStore(): void;
|
|
8525
|
+
|
|
8526
|
+
/**
|
|
8527
|
+
* Panel Widget
|
|
8528
|
+
*
|
|
8529
|
+
* A container widget with a title bar, optional close button,
|
|
8530
|
+
* and optional collapse/expand functionality.
|
|
8531
|
+
*
|
|
8532
|
+
* @module widgets/panel
|
|
8533
|
+
*/
|
|
8534
|
+
|
|
8535
|
+
/**
|
|
8536
|
+
* Dimension value that can be a number, percentage string, or 'auto'.
|
|
8537
|
+
*/
|
|
8538
|
+
type DimensionValue$4 = number | `${number}%` | 'auto';
|
|
8539
|
+
/**
|
|
8540
|
+
* Position value that can be a number, percentage string, or keyword.
|
|
8541
|
+
*/
|
|
8542
|
+
type PositionValue$5 = number | `${number}%` | 'center' | 'left' | 'right' | 'top' | 'bottom';
|
|
8543
|
+
/**
|
|
8544
|
+
* Horizontal text alignment for title.
|
|
8545
|
+
*/
|
|
8546
|
+
type TitleAlign = 'left' | 'center' | 'right';
|
|
8547
|
+
/**
|
|
8548
|
+
* Border configuration for panels.
|
|
8549
|
+
*/
|
|
8550
|
+
interface PanelBorderConfig {
|
|
8551
|
+
/** Border type */
|
|
8552
|
+
readonly type?: 'line' | 'bg' | 'none';
|
|
8553
|
+
/** Foreground color for border (hex string or packed number) */
|
|
8554
|
+
readonly fg?: string | number;
|
|
8555
|
+
/** Background color for border (hex string or packed number) */
|
|
8556
|
+
readonly bg?: string | number;
|
|
8557
|
+
/** Border charset ('single', 'double', 'rounded', 'bold', 'ascii', or custom) */
|
|
8558
|
+
readonly ch?: 'single' | 'double' | 'rounded' | 'bold' | 'ascii' | BorderCharset;
|
|
7999
8559
|
}
|
|
8000
8560
|
/**
|
|
8001
8561
|
* Style configuration for the panel title.
|
|
@@ -9852,6 +10412,567 @@ type ScrollableTextWidget = ScrollableBoxWidget;
|
|
|
9852
10412
|
*/
|
|
9853
10413
|
declare function createScrollableText(world: World, entity: Entity, config?: ScrollableTextConfig): ScrollableTextWidget;
|
|
9854
10414
|
|
|
10415
|
+
/**
|
|
10416
|
+
* Searchable List Enhancement
|
|
10417
|
+
*
|
|
10418
|
+
* Enhances list and virtualized list widgets with inline search/filter
|
|
10419
|
+
* capabilities. Adds a filter input that narrows displayed items in
|
|
10420
|
+
* real-time as the user types.
|
|
10421
|
+
*
|
|
10422
|
+
* Works with both the List widget (finite items) and VirtualizedList
|
|
10423
|
+
* widget (large datasets) through a common SearchableContent interface.
|
|
10424
|
+
*
|
|
10425
|
+
* @module widgets/searchableList
|
|
10426
|
+
*
|
|
10427
|
+
* @example
|
|
10428
|
+
* ```typescript
|
|
10429
|
+
* import { createSearchableList } from 'blecsd';
|
|
10430
|
+
*
|
|
10431
|
+
* const world = createWorld();
|
|
10432
|
+
* const sl = createSearchableList(world, {
|
|
10433
|
+
* items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'],
|
|
10434
|
+
* enableSearch: true,
|
|
10435
|
+
* width: 30,
|
|
10436
|
+
* height: 10,
|
|
10437
|
+
* });
|
|
10438
|
+
*
|
|
10439
|
+
* // Filter in real-time
|
|
10440
|
+
* sl.setFilter('ber');
|
|
10441
|
+
* console.log(sl.getFilteredItems()); // ['Elderberry']
|
|
10442
|
+
*
|
|
10443
|
+
* // Preserve selection across filter changes
|
|
10444
|
+
* sl.select(0).setFilter('Ch');
|
|
10445
|
+
* sl.clearFilter();
|
|
10446
|
+
* // Original selection is restored
|
|
10447
|
+
* ```
|
|
10448
|
+
*/
|
|
10449
|
+
|
|
10450
|
+
/**
|
|
10451
|
+
* An item in the searchable list.
|
|
10452
|
+
*/
|
|
10453
|
+
interface SearchableListItem {
|
|
10454
|
+
/** Display text */
|
|
10455
|
+
readonly text: string;
|
|
10456
|
+
/** Optional value (defaults to text) */
|
|
10457
|
+
readonly value?: string;
|
|
10458
|
+
/** Whether the item is disabled */
|
|
10459
|
+
readonly disabled?: boolean;
|
|
10460
|
+
}
|
|
10461
|
+
/**
|
|
10462
|
+
* Configuration for the SearchableList widget.
|
|
10463
|
+
*
|
|
10464
|
+
* @example
|
|
10465
|
+
* ```typescript
|
|
10466
|
+
* const config: SearchableListConfig = {
|
|
10467
|
+
* items: ['Apple', 'Banana', 'Cherry'],
|
|
10468
|
+
* enableSearch: true,
|
|
10469
|
+
* placeholder: 'Type to filter...',
|
|
10470
|
+
* };
|
|
10471
|
+
* ```
|
|
10472
|
+
*/
|
|
10473
|
+
interface SearchableListConfig {
|
|
10474
|
+
/** X position @default 0 */
|
|
10475
|
+
readonly x?: number;
|
|
10476
|
+
/** Y position @default 0 */
|
|
10477
|
+
readonly y?: number;
|
|
10478
|
+
/** Width in columns @default 30 */
|
|
10479
|
+
readonly width?: number;
|
|
10480
|
+
/** Height in rows @default 10 */
|
|
10481
|
+
readonly height?: number;
|
|
10482
|
+
/** Items to display */
|
|
10483
|
+
readonly items?: readonly string[];
|
|
10484
|
+
/** Whether to show the inline filter input @default true */
|
|
10485
|
+
readonly enableSearch?: boolean;
|
|
10486
|
+
/** Placeholder text for the filter input @default 'Filter...' */
|
|
10487
|
+
readonly placeholder?: string;
|
|
10488
|
+
/** Initially selected item index @default 0 */
|
|
10489
|
+
readonly selected?: number;
|
|
10490
|
+
/** Foreground color for normal items */
|
|
10491
|
+
readonly fg?: number;
|
|
10492
|
+
/** Background color for normal items */
|
|
10493
|
+
readonly bg?: number;
|
|
10494
|
+
/** Foreground color for the selected/highlighted item */
|
|
10495
|
+
readonly selectedFg?: number;
|
|
10496
|
+
/** Background color for the selected/highlighted item */
|
|
10497
|
+
readonly selectedBg?: number;
|
|
10498
|
+
/** Foreground color for disabled items */
|
|
10499
|
+
readonly disabledFg?: number;
|
|
10500
|
+
/** Foreground color for the filter input */
|
|
10501
|
+
readonly filterFg?: number;
|
|
10502
|
+
/** Background color for the filter input */
|
|
10503
|
+
readonly filterBg?: number;
|
|
10504
|
+
}
|
|
10505
|
+
/**
|
|
10506
|
+
* Callback fired when filter or selection changes.
|
|
10507
|
+
*/
|
|
10508
|
+
type SearchableListCallback = (filteredItems: readonly SearchableListItem[], selectedIndex: number) => void;
|
|
10509
|
+
/**
|
|
10510
|
+
* SearchableList widget interface.
|
|
10511
|
+
*/
|
|
10512
|
+
interface SearchableListWidget {
|
|
10513
|
+
/** The underlying entity ID */
|
|
10514
|
+
readonly eid: Entity;
|
|
10515
|
+
/** Shows the widget */
|
|
10516
|
+
show(): SearchableListWidget;
|
|
10517
|
+
/** Hides the widget */
|
|
10518
|
+
hide(): SearchableListWidget;
|
|
10519
|
+
/** Focuses the widget (activates filter input) */
|
|
10520
|
+
focus(): SearchableListWidget;
|
|
10521
|
+
/** Blurs the widget */
|
|
10522
|
+
blur(): SearchableListWidget;
|
|
10523
|
+
/** Returns whether the widget is focused */
|
|
10524
|
+
isFocused(): boolean;
|
|
10525
|
+
/** Sets the items */
|
|
10526
|
+
setItems(items: readonly string[]): SearchableListWidget;
|
|
10527
|
+
/** Gets all items */
|
|
10528
|
+
getItems(): readonly SearchableListItem[];
|
|
10529
|
+
/** Sets the filter query */
|
|
10530
|
+
setFilter(query: string): SearchableListWidget;
|
|
10531
|
+
/** Gets the current filter query */
|
|
10532
|
+
getFilter(): string;
|
|
10533
|
+
/** Clears the filter */
|
|
10534
|
+
clearFilter(): SearchableListWidget;
|
|
10535
|
+
/** Gets items after filtering */
|
|
10536
|
+
getFilteredItems(): readonly SearchableListItem[];
|
|
10537
|
+
/** Gets the filtered item count */
|
|
10538
|
+
getFilteredCount(): number;
|
|
10539
|
+
/** Gets a status string like "5 of 20 items" */
|
|
10540
|
+
getFilterStatus(): string;
|
|
10541
|
+
/** Whether search/filter is enabled */
|
|
10542
|
+
isSearchEnabled(): boolean;
|
|
10543
|
+
/** Enables or disables search */
|
|
10544
|
+
setSearchEnabled(enabled: boolean): SearchableListWidget;
|
|
10545
|
+
/** Selects the item at the given index (in filtered view) */
|
|
10546
|
+
select(index: number): SearchableListWidget;
|
|
10547
|
+
/** Gets the currently selected index (in filtered view) */
|
|
10548
|
+
getSelectedIndex(): number;
|
|
10549
|
+
/** Gets the currently selected item */
|
|
10550
|
+
getSelectedItem(): SearchableListItem | undefined;
|
|
10551
|
+
/** Gets the original (unfiltered) index of the selected item */
|
|
10552
|
+
getOriginalSelectedIndex(): number;
|
|
10553
|
+
/** Moves selection up */
|
|
10554
|
+
selectPrev(): SearchableListWidget;
|
|
10555
|
+
/** Moves selection down */
|
|
10556
|
+
selectNext(): SearchableListWidget;
|
|
10557
|
+
/** Selects the first item */
|
|
10558
|
+
selectFirst(): SearchableListWidget;
|
|
10559
|
+
/** Selects the last item */
|
|
10560
|
+
selectLast(): SearchableListWidget;
|
|
10561
|
+
/** Registers a callback for filter/selection changes */
|
|
10562
|
+
onChange(callback: SearchableListCallback): () => void;
|
|
10563
|
+
/** Handles a key press, returns true if consumed */
|
|
10564
|
+
handleKey(key: string, ctrl?: boolean, shift?: boolean): boolean;
|
|
10565
|
+
/** Destroys the widget */
|
|
10566
|
+
destroy(): void;
|
|
10567
|
+
}
|
|
10568
|
+
/**
|
|
10569
|
+
* Zod schema for SearchableListConfig validation.
|
|
10570
|
+
*/
|
|
10571
|
+
declare const SearchableListConfigSchema: z.ZodObject<{
|
|
10572
|
+
x: z.ZodDefault<z.ZodNumber>;
|
|
10573
|
+
y: z.ZodDefault<z.ZodNumber>;
|
|
10574
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
10575
|
+
height: z.ZodDefault<z.ZodNumber>;
|
|
10576
|
+
items: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
10577
|
+
enableSearch: z.ZodDefault<z.ZodBoolean>;
|
|
10578
|
+
placeholder: z.ZodDefault<z.ZodString>;
|
|
10579
|
+
selected: z.ZodDefault<z.ZodNumber>;
|
|
10580
|
+
fg: z.ZodOptional<z.ZodNumber>;
|
|
10581
|
+
bg: z.ZodOptional<z.ZodNumber>;
|
|
10582
|
+
selectedFg: z.ZodOptional<z.ZodNumber>;
|
|
10583
|
+
selectedBg: z.ZodOptional<z.ZodNumber>;
|
|
10584
|
+
disabledFg: z.ZodOptional<z.ZodNumber>;
|
|
10585
|
+
filterFg: z.ZodOptional<z.ZodNumber>;
|
|
10586
|
+
filterBg: z.ZodOptional<z.ZodNumber>;
|
|
10587
|
+
}, z.core.$strip>;
|
|
10588
|
+
/**
|
|
10589
|
+
* SearchableList component marker.
|
|
10590
|
+
*/
|
|
10591
|
+
declare const SearchableList: {
|
|
10592
|
+
/** Tag indicating this is a searchable list widget */
|
|
10593
|
+
isSearchableList: Uint8Array<ArrayBuffer>;
|
|
10594
|
+
/** Whether the widget is visible */
|
|
10595
|
+
visible: Uint8Array<ArrayBuffer>;
|
|
10596
|
+
/** Whether the widget is focused */
|
|
10597
|
+
focused: Uint8Array<ArrayBuffer>;
|
|
10598
|
+
};
|
|
10599
|
+
/**
|
|
10600
|
+
* Creates a SearchableList widget with inline filtering.
|
|
10601
|
+
*
|
|
10602
|
+
* When `enableSearch` is true (default), the first row of the widget shows
|
|
10603
|
+
* a filter input. Typing narrows the displayed items in real-time.
|
|
10604
|
+
* Selection state is preserved across filter changes by tracking the
|
|
10605
|
+
* original item index.
|
|
10606
|
+
*
|
|
10607
|
+
* @param world - The ECS world
|
|
10608
|
+
* @param config - Widget configuration
|
|
10609
|
+
* @returns The SearchableListWidget instance
|
|
10610
|
+
*
|
|
10611
|
+
* @example
|
|
10612
|
+
* ```typescript
|
|
10613
|
+
* import { createSearchableList } from 'blecsd';
|
|
10614
|
+
*
|
|
10615
|
+
* const world = createWorld();
|
|
10616
|
+
* const list = createSearchableList(world, {
|
|
10617
|
+
* items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'],
|
|
10618
|
+
* enableSearch: true,
|
|
10619
|
+
* placeholder: 'Type to filter...',
|
|
10620
|
+
* width: 30,
|
|
10621
|
+
* height: 10,
|
|
10622
|
+
* });
|
|
10623
|
+
*
|
|
10624
|
+
* list.focus();
|
|
10625
|
+
* list.setFilter('ber');
|
|
10626
|
+
* console.log(list.getFilterStatus()); // "1 of 5 items"
|
|
10627
|
+
* ```
|
|
10628
|
+
*/
|
|
10629
|
+
declare function createSearchableList(world: World, config?: SearchableListConfig): SearchableListWidget;
|
|
10630
|
+
/**
|
|
10631
|
+
* Gets the filtered items from a SearchableList entity.
|
|
10632
|
+
*
|
|
10633
|
+
* @param _world - The ECS world
|
|
10634
|
+
* @param eid - The searchable list entity ID
|
|
10635
|
+
* @returns Array of filtered items
|
|
10636
|
+
*
|
|
10637
|
+
* @example
|
|
10638
|
+
* ```typescript
|
|
10639
|
+
* import { getFilteredItems } from 'blecsd';
|
|
10640
|
+
*
|
|
10641
|
+
* const items = getFilteredItems(world, listEid);
|
|
10642
|
+
* ```
|
|
10643
|
+
*/
|
|
10644
|
+
declare function getSearchableFilteredItems(_world: World, eid: Entity): readonly SearchableListItem[];
|
|
10645
|
+
/**
|
|
10646
|
+
* Sets the filter query on a SearchableList entity.
|
|
10647
|
+
*
|
|
10648
|
+
* @param _world - The ECS world
|
|
10649
|
+
* @param eid - The searchable list entity ID
|
|
10650
|
+
* @param query - The filter query
|
|
10651
|
+
*
|
|
10652
|
+
* @example
|
|
10653
|
+
* ```typescript
|
|
10654
|
+
* import { setSearchableFilter } from 'blecsd';
|
|
10655
|
+
*
|
|
10656
|
+
* setSearchableFilter(world, listEid, 'apple');
|
|
10657
|
+
* ```
|
|
10658
|
+
*/
|
|
10659
|
+
declare function setSearchableFilter(_world: World, eid: Entity, query: string): void;
|
|
10660
|
+
/**
|
|
10661
|
+
* Checks if an entity is a SearchableList widget.
|
|
10662
|
+
*
|
|
10663
|
+
* @param _world - The ECS world
|
|
10664
|
+
* @param eid - The entity ID
|
|
10665
|
+
* @returns true if the entity is a searchable list
|
|
10666
|
+
*/
|
|
10667
|
+
declare function isSearchableList(_world: World, eid: Entity): boolean;
|
|
10668
|
+
/**
|
|
10669
|
+
* Resets the SearchableList store. Useful for testing.
|
|
10670
|
+
*
|
|
10671
|
+
* @internal
|
|
10672
|
+
*/
|
|
10673
|
+
declare function resetSearchableListStore(): void;
|
|
10674
|
+
|
|
10675
|
+
/**
|
|
10676
|
+
* Search Overlay Widget
|
|
10677
|
+
*
|
|
10678
|
+
* A floating search bar that can be attached to any scrollable content widget.
|
|
10679
|
+
* Supports regex and plain text search modes, match highlighting, and
|
|
10680
|
+
* navigation between matches with Enter/Shift+Enter.
|
|
10681
|
+
*
|
|
10682
|
+
* @module widgets/searchOverlay
|
|
10683
|
+
*
|
|
10684
|
+
* @example
|
|
10685
|
+
* ```typescript
|
|
10686
|
+
* import { createSearchOverlay, attachSearchOverlay } from 'blecsd';
|
|
10687
|
+
*
|
|
10688
|
+
* const overlay = createSearchOverlay(world, {
|
|
10689
|
+
* width: 40,
|
|
10690
|
+
* mode: 'plain',
|
|
10691
|
+
* });
|
|
10692
|
+
*
|
|
10693
|
+
* // Attach to a scrollable widget
|
|
10694
|
+
* attachSearchOverlay(world, overlay, targetWidgetEid);
|
|
10695
|
+
*
|
|
10696
|
+
* // Open with Ctrl+F
|
|
10697
|
+
* overlay.show();
|
|
10698
|
+
*
|
|
10699
|
+
* // Navigate matches
|
|
10700
|
+
* overlay.nextMatch();
|
|
10701
|
+
* overlay.prevMatch();
|
|
10702
|
+
* ```
|
|
10703
|
+
*/
|
|
10704
|
+
|
|
10705
|
+
/**
|
|
10706
|
+
* Search mode for the overlay.
|
|
10707
|
+
*/
|
|
10708
|
+
type SearchMode = 'plain' | 'regex';
|
|
10709
|
+
/**
|
|
10710
|
+
* A single match found in content by the search overlay.
|
|
10711
|
+
*/
|
|
10712
|
+
interface SearchOverlayMatch {
|
|
10713
|
+
/** Line index where the match was found */
|
|
10714
|
+
readonly lineIndex: number;
|
|
10715
|
+
/** Character offset within the line */
|
|
10716
|
+
readonly charOffset: number;
|
|
10717
|
+
/** Length of the matched text */
|
|
10718
|
+
readonly length: number;
|
|
10719
|
+
}
|
|
10720
|
+
/**
|
|
10721
|
+
* Configuration for creating a SearchOverlay widget.
|
|
10722
|
+
*
|
|
10723
|
+
* @example
|
|
10724
|
+
* ```typescript
|
|
10725
|
+
* const config: SearchOverlayConfig = {
|
|
10726
|
+
* width: 40,
|
|
10727
|
+
* mode: 'plain',
|
|
10728
|
+
* caseSensitive: false,
|
|
10729
|
+
* };
|
|
10730
|
+
* ```
|
|
10731
|
+
*/
|
|
10732
|
+
interface SearchOverlayConfig {
|
|
10733
|
+
/** Width of the search bar in columns @default 40 */
|
|
10734
|
+
readonly width?: number;
|
|
10735
|
+
/** Search mode: 'plain' for substring, 'regex' for regular expression @default 'plain' */
|
|
10736
|
+
readonly mode?: SearchMode;
|
|
10737
|
+
/** Whether search is case-sensitive @default false */
|
|
10738
|
+
readonly caseSensitive?: boolean;
|
|
10739
|
+
/** Foreground color for the search bar @default 0xFFFFFFFF */
|
|
10740
|
+
readonly fg?: number;
|
|
10741
|
+
/** Background color for the search bar @default 0x333333FF */
|
|
10742
|
+
readonly bg?: number;
|
|
10743
|
+
/** Foreground color for highlighted matches @default 0x000000FF */
|
|
10744
|
+
readonly matchFg?: number;
|
|
10745
|
+
/** Background color for highlighted matches @default 0xFFFF00FF */
|
|
10746
|
+
readonly matchBg?: number;
|
|
10747
|
+
/** Foreground color for the current match @default 0x000000FF */
|
|
10748
|
+
readonly currentMatchFg?: number;
|
|
10749
|
+
/** Background color for the current match @default 0xFF8800FF */
|
|
10750
|
+
readonly currentMatchBg?: number;
|
|
10751
|
+
}
|
|
10752
|
+
/**
|
|
10753
|
+
* Content provider interface for searchable widgets.
|
|
10754
|
+
* Any widget that wants to support search overlay must provide
|
|
10755
|
+
* a way to retrieve its content lines.
|
|
10756
|
+
*/
|
|
10757
|
+
interface SearchableContent {
|
|
10758
|
+
/** Returns the total number of lines */
|
|
10759
|
+
getLineCount(): number;
|
|
10760
|
+
/** Returns the text content at a given line index */
|
|
10761
|
+
getLine(index: number): string | undefined;
|
|
10762
|
+
}
|
|
10763
|
+
/**
|
|
10764
|
+
* Callback fired when the match set or current match changes.
|
|
10765
|
+
*/
|
|
10766
|
+
type SearchOverlayMatchCallback = (matches: readonly SearchOverlayMatch[], currentIndex: number) => void;
|
|
10767
|
+
/**
|
|
10768
|
+
* SearchOverlay widget interface providing chainable methods.
|
|
10769
|
+
*/
|
|
10770
|
+
interface SearchOverlayWidget {
|
|
10771
|
+
/** The underlying entity ID */
|
|
10772
|
+
readonly eid: Entity;
|
|
10773
|
+
/** Shows the search overlay */
|
|
10774
|
+
show(): SearchOverlayWidget;
|
|
10775
|
+
/** Hides the search overlay and clears state */
|
|
10776
|
+
hide(): SearchOverlayWidget;
|
|
10777
|
+
/** Returns whether the overlay is currently visible */
|
|
10778
|
+
isVisible(): boolean;
|
|
10779
|
+
/** Sets the search query text */
|
|
10780
|
+
setQuery(query: string): SearchOverlayWidget;
|
|
10781
|
+
/** Gets the current search query */
|
|
10782
|
+
getQuery(): string;
|
|
10783
|
+
/** Appends a character to the query */
|
|
10784
|
+
appendChar(char: string): SearchOverlayWidget;
|
|
10785
|
+
/** Removes the last character from the query */
|
|
10786
|
+
backspace(): SearchOverlayWidget;
|
|
10787
|
+
/** Clears the query */
|
|
10788
|
+
clearQuery(): SearchOverlayWidget;
|
|
10789
|
+
/** Sets the search mode (plain or regex) */
|
|
10790
|
+
setMode(mode: SearchMode): SearchOverlayWidget;
|
|
10791
|
+
/** Gets the current search mode */
|
|
10792
|
+
getMode(): SearchMode;
|
|
10793
|
+
/** Toggles between plain and regex mode */
|
|
10794
|
+
toggleMode(): SearchOverlayWidget;
|
|
10795
|
+
/** Sets case sensitivity */
|
|
10796
|
+
setCaseSensitive(sensitive: boolean): SearchOverlayWidget;
|
|
10797
|
+
/** Gets case sensitivity setting */
|
|
10798
|
+
isCaseSensitive(): boolean;
|
|
10799
|
+
/** Moves to the next match */
|
|
10800
|
+
nextMatch(): SearchOverlayWidget;
|
|
10801
|
+
/** Moves to the previous match */
|
|
10802
|
+
prevMatch(): SearchOverlayWidget;
|
|
10803
|
+
/** Gets all current matches */
|
|
10804
|
+
getMatches(): readonly SearchOverlayMatch[];
|
|
10805
|
+
/** Gets the current match index (0-based, -1 if no matches) */
|
|
10806
|
+
getCurrentMatchIndex(): number;
|
|
10807
|
+
/** Gets the total number of matches */
|
|
10808
|
+
getMatchCount(): number;
|
|
10809
|
+
/** Gets a formatted status string like "3 of 47" */
|
|
10810
|
+
getMatchStatus(): string;
|
|
10811
|
+
/** Attaches to a content provider for searching */
|
|
10812
|
+
attachContent(content: SearchableContent): SearchOverlayWidget;
|
|
10813
|
+
/** Detaches from the current content provider */
|
|
10814
|
+
detachContent(): SearchOverlayWidget;
|
|
10815
|
+
/** Registers a callback for match changes */
|
|
10816
|
+
onMatchChange(callback: SearchOverlayMatchCallback): () => void;
|
|
10817
|
+
/** Registers a callback for when the overlay is closed */
|
|
10818
|
+
onClose(callback: () => void): () => void;
|
|
10819
|
+
/** Handles a key press, returns true if consumed */
|
|
10820
|
+
handleKey(key: string, ctrl?: boolean, shift?: boolean): boolean;
|
|
10821
|
+
/** Destroys the widget */
|
|
10822
|
+
destroy(): void;
|
|
10823
|
+
}
|
|
10824
|
+
/**
|
|
10825
|
+
* Zod schema for SearchOverlayConfig validation.
|
|
10826
|
+
*
|
|
10827
|
+
* @example
|
|
10828
|
+
* ```typescript
|
|
10829
|
+
* import { SearchOverlayConfigSchema } from 'blecsd';
|
|
10830
|
+
*
|
|
10831
|
+
* const config = SearchOverlayConfigSchema.parse({
|
|
10832
|
+
* width: 50,
|
|
10833
|
+
* mode: 'regex',
|
|
10834
|
+
* caseSensitive: true,
|
|
10835
|
+
* });
|
|
10836
|
+
* ```
|
|
10837
|
+
*/
|
|
10838
|
+
declare const SearchOverlayConfigSchema: z.ZodObject<{
|
|
10839
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
10840
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
10841
|
+
plain: "plain";
|
|
10842
|
+
regex: "regex";
|
|
10843
|
+
}>>;
|
|
10844
|
+
caseSensitive: z.ZodDefault<z.ZodBoolean>;
|
|
10845
|
+
fg: z.ZodOptional<z.ZodNumber>;
|
|
10846
|
+
bg: z.ZodOptional<z.ZodNumber>;
|
|
10847
|
+
matchFg: z.ZodOptional<z.ZodNumber>;
|
|
10848
|
+
matchBg: z.ZodOptional<z.ZodNumber>;
|
|
10849
|
+
currentMatchFg: z.ZodOptional<z.ZodNumber>;
|
|
10850
|
+
currentMatchBg: z.ZodOptional<z.ZodNumber>;
|
|
10851
|
+
}, z.core.$strip>;
|
|
10852
|
+
/**
|
|
10853
|
+
* SearchOverlay component marker for identifying search overlay entities.
|
|
10854
|
+
*
|
|
10855
|
+
* @example
|
|
10856
|
+
* ```typescript
|
|
10857
|
+
* import { SearchOverlay } from 'blecsd';
|
|
10858
|
+
*
|
|
10859
|
+
* if (SearchOverlay.isSearchOverlay[eid] === 1) {
|
|
10860
|
+
* // Entity is a search overlay
|
|
10861
|
+
* }
|
|
10862
|
+
* ```
|
|
10863
|
+
*/
|
|
10864
|
+
declare const SearchOverlay: {
|
|
10865
|
+
/** Tag indicating this is a search overlay widget (1 = yes) */
|
|
10866
|
+
isSearchOverlay: Uint8Array<ArrayBuffer>;
|
|
10867
|
+
/** Whether the overlay is currently visible (0 = hidden, 1 = visible) */
|
|
10868
|
+
visible: Uint8Array<ArrayBuffer>;
|
|
10869
|
+
};
|
|
10870
|
+
/**
|
|
10871
|
+
* Creates a SearchOverlay widget.
|
|
10872
|
+
*
|
|
10873
|
+
* The overlay starts hidden. Call `show()` to display it.
|
|
10874
|
+
*
|
|
10875
|
+
* @param world - The ECS world
|
|
10876
|
+
* @param config - Widget configuration
|
|
10877
|
+
* @returns The SearchOverlayWidget instance
|
|
10878
|
+
*
|
|
10879
|
+
* @example
|
|
10880
|
+
* ```typescript
|
|
10881
|
+
* import { createWorld, addEntity } from 'blecsd';
|
|
10882
|
+
* import { createSearchOverlay } from 'blecsd';
|
|
10883
|
+
*
|
|
10884
|
+
* const world = createWorld();
|
|
10885
|
+
* const overlay = createSearchOverlay(world, {
|
|
10886
|
+
* width: 40,
|
|
10887
|
+
* mode: 'plain',
|
|
10888
|
+
* });
|
|
10889
|
+
*
|
|
10890
|
+
* overlay.show();
|
|
10891
|
+
* overlay.setQuery('hello');
|
|
10892
|
+
* console.log(overlay.getMatchStatus()); // "3 of 47"
|
|
10893
|
+
* overlay.nextMatch();
|
|
10894
|
+
* ```
|
|
10895
|
+
*/
|
|
10896
|
+
declare function createSearchOverlay(world: World, config?: SearchOverlayConfig): SearchOverlayWidget;
|
|
10897
|
+
/**
|
|
10898
|
+
* Attaches a search overlay to a target widget that provides searchable content.
|
|
10899
|
+
*
|
|
10900
|
+
* The target must expose content through the SearchableContent interface.
|
|
10901
|
+
* For VirtualizedList widgets, this wraps their getLine/getLineCount methods.
|
|
10902
|
+
*
|
|
10903
|
+
* @param _world - The ECS world
|
|
10904
|
+
* @param overlay - The search overlay widget
|
|
10905
|
+
* @param targetEid - The entity ID of the target widget
|
|
10906
|
+
* @param content - The searchable content provider
|
|
10907
|
+
* @returns The search overlay widget for chaining
|
|
10908
|
+
*
|
|
10909
|
+
* @example
|
|
10910
|
+
* ```typescript
|
|
10911
|
+
* import { createSearchOverlay, attachSearchOverlay } from 'blecsd';
|
|
10912
|
+
*
|
|
10913
|
+
* const overlay = createSearchOverlay(world);
|
|
10914
|
+
* const vlist = createVirtualizedList(world, { width: 80, height: 24 });
|
|
10915
|
+
*
|
|
10916
|
+
* attachSearchOverlay(world, overlay, vlist.eid, {
|
|
10917
|
+
* getLineCount: () => vlist.getLineCount(),
|
|
10918
|
+
* getLine: (i) => vlist.getLine(i),
|
|
10919
|
+
* });
|
|
10920
|
+
* ```
|
|
10921
|
+
*/
|
|
10922
|
+
declare function attachSearchOverlay(_world: World, overlay: SearchOverlayWidget, targetEid: Entity, content: SearchableContent): SearchOverlayWidget;
|
|
10923
|
+
/**
|
|
10924
|
+
* Checks if an entity is a SearchOverlay widget.
|
|
10925
|
+
*
|
|
10926
|
+
* @param _world - The ECS world (unused, for API consistency)
|
|
10927
|
+
* @param eid - The entity ID
|
|
10928
|
+
* @returns true if the entity is a search overlay widget
|
|
10929
|
+
*
|
|
10930
|
+
* @example
|
|
10931
|
+
* ```typescript
|
|
10932
|
+
* import { isSearchOverlay } from 'blecsd';
|
|
10933
|
+
*
|
|
10934
|
+
* if (isSearchOverlay(world, entity)) {
|
|
10935
|
+
* // Handle search overlay
|
|
10936
|
+
* }
|
|
10937
|
+
* ```
|
|
10938
|
+
*/
|
|
10939
|
+
declare function isSearchOverlay(_world: World, eid: Entity): boolean;
|
|
10940
|
+
/**
|
|
10941
|
+
* Gets the target entity ID that a search overlay is attached to.
|
|
10942
|
+
*
|
|
10943
|
+
* @param eid - The search overlay entity ID
|
|
10944
|
+
* @returns The target entity ID or null if not attached
|
|
10945
|
+
*/
|
|
10946
|
+
declare function getSearchOverlayTarget(eid: Entity): Entity | null;
|
|
10947
|
+
/**
|
|
10948
|
+
* Gets the match highlight colors for rendering.
|
|
10949
|
+
*
|
|
10950
|
+
* @param eid - The search overlay entity ID
|
|
10951
|
+
* @returns Object with match and current match colors, or null if not a search overlay
|
|
10952
|
+
*
|
|
10953
|
+
* @example
|
|
10954
|
+
* ```typescript
|
|
10955
|
+
* const colors = getSearchOverlayColors(overlayEid);
|
|
10956
|
+
* if (colors) {
|
|
10957
|
+
* // Use colors.matchFg, colors.matchBg for highlighting
|
|
10958
|
+
* }
|
|
10959
|
+
* ```
|
|
10960
|
+
*/
|
|
10961
|
+
declare function getSearchOverlayColors(eid: Entity): {
|
|
10962
|
+
fg: number;
|
|
10963
|
+
bg: number;
|
|
10964
|
+
matchFg: number;
|
|
10965
|
+
matchBg: number;
|
|
10966
|
+
currentMatchFg: number;
|
|
10967
|
+
currentMatchBg: number;
|
|
10968
|
+
} | null;
|
|
10969
|
+
/**
|
|
10970
|
+
* Resets the SearchOverlay component store. Useful for testing.
|
|
10971
|
+
*
|
|
10972
|
+
* @internal
|
|
10973
|
+
*/
|
|
10974
|
+
declare function resetSearchOverlayStore(): void;
|
|
10975
|
+
|
|
9855
10976
|
/**
|
|
9856
10977
|
* Sparkline Widget
|
|
9857
10978
|
*
|
|
@@ -12434,8 +13555,8 @@ declare const ToastConfigSchema: z.ZodObject<{
|
|
|
12434
13555
|
type: z.ZodOptional<z.ZodEnum<{
|
|
12435
13556
|
error: "error";
|
|
12436
13557
|
success: "success";
|
|
12437
|
-
warning: "warning";
|
|
12438
13558
|
info: "info";
|
|
13559
|
+
warning: "warning";
|
|
12439
13560
|
}>>;
|
|
12440
13561
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
12441
13562
|
position: z.ZodOptional<z.ZodEnum<{
|
|
@@ -13644,4 +14765,4 @@ declare function handleVirtualizedListWheel(widget: VirtualizedList, direction:
|
|
|
13644
14765
|
*/
|
|
13645
14766
|
declare function isVirtualizedList(_world: World, eid: Entity): boolean;
|
|
13646
14767
|
|
|
13647
|
-
export { Accordion, type AccordionConfig, AccordionConfigSchema, type AccordionSection, type AccordionWidget, type Align$2 as Align, type AlignItems, Autocomplete, type AutocompleteConfig, AutocompleteConfigSchema, type AutocompleteWidget, BRAILLE_BASE, BRAILLE_DOTS, BarChart, type BarChartConfig, BarChartConfigSchema, type BarChartWidget, type BarMode, type BarOrientation, type BarSeries, type BorderConfig$4 as BorderConfig, BorderConfigSchema, Box, type BoxConfig, BoxConfigSchema, type BoxWidget, type ButtonWidget, ButtonWidgetComponent, type ButtonConfig as ButtonWidgetConfig, ButtonConfigSchema as ButtonWidgetConfigSchema, CHART_COLORS, CLOSE_BUTTON_CHAR, COLLAPSE_CHAR, Canvas, type CanvasConfig, CanvasConfigSchema, type CanvasWidget, type CellSize, type CheckboxWidget, CheckboxWidgetComponent, type CheckboxConfig as CheckboxWidgetConfig, CheckboxConfigSchema as CheckboxWidgetConfigSchema, type ChildLayoutData, type CollapsibleConfig, CollapsibleConfigSchema, type CollapsibleWidget, type Command, CommandPalette, type CommandPaletteConfig, CommandPaletteConfigSchema, type CommandPaletteTheme, type CommandPaletteWidget, DEFAULT_CURSOR_OFFSET_X, DEFAULT_CURSOR_OFFSET_Y, DEFAULT_HIDE_DELAY, DEFAULT_HORIZONTAL_CHAR, DEFAULT_HOVER_DELAY, DEFAULT_LINE_LENGTH, DEFAULT_LOADING_BG, DEFAULT_LOADING_FG, DEFAULT_MESSAGE_PADDING, DEFAULT_MESSAGE_STYLES, DEFAULT_MESSAGE_TIMEOUT, DEFAULT_PANEL_TITLE, DEFAULT_PROMPT_BG, DEFAULT_PROMPT_FG, DEFAULT_PROMPT_HEIGHT, DEFAULT_PROMPT_WIDTH, DEFAULT_QUESTION_BG, DEFAULT_QUESTION_FG, DEFAULT_QUESTION_HEIGHT, DEFAULT_QUESTION_WIDTH, DEFAULT_TAB_POSITION, DEFAULT_TOAST_PADDING, DEFAULT_TOAST_STYLES, DEFAULT_TOAST_TIMEOUT, DEFAULT_TOOLTIP_BG, DEFAULT_TOOLTIP_BORDER, DEFAULT_TOOLTIP_FG, DEFAULT_VERTICAL_CHAR, DevTools, type DevToolsComponentInfo, type DevToolsConfig, DevToolsConfigSchema, type DevToolsPosition, type DevToolsTab, type DevToolsTheme, type DevToolsWidget, type DimensionValue$7 as DimensionValue, type DirtyRect, type DividerState, EXPAND_CHAR, type EntityInfo, type EventLogEntry, type FileEntry, FileManager, type FileManagerBorderConfig, type FileManagerConfig, FileManagerConfigSchema, type FileManagerPaddingConfig, type FileManagerWidget, type FlattenedNode, type AlignItems$1 as FlexAlignItems, type FlexChildOptions, FlexContainer, type FlexContainerConfig, FlexContainerConfigSchema, type FlexContainerWidget, type FlexDirection, type JustifyContent$1 as FlexJustifyContent, type FlexWrap, type FlexDirection$1 as FlexboxDirection, Footer, type FooterAlign, type FooterConfig, FooterConfigSchema, type FooterWidget, FormComponent, type FormField, type FormValidator, type FormWidget, type FormConfig as FormWidgetConfig, FormConfigSchema as FormWidgetConfigSchema, Gauge, type GaugeConfig, GaugeConfigSchema, type GaugeThreshold, type GaugeWidget, Grid, type GridCell, type GridConfig, GridConfigSchema, type GridWidget, HORIZONTAL_BLOCKS, Header, type HeaderAlign, type HeaderConfig, HeaderConfigSchema, type HeaderWidget, type HoverTextConfig, type HoverTextManager, type HoverTextManagerConfig, Image, type ImageConfig, ImageConfigSchema, type ImageType, type ImageWidget, type JustifyContent, Layout, type LayoutConfig, LayoutConfigSchema, type LayoutMode, type LayoutPosition, type LayoutWidget, Line, LineChart, type LineChartConfig, LineChartConfigSchema, type LineChartWidget, type LineConfig, LineConfigSchema, type LineOrientation, type LineSeries, type LineWidget, type ListStyleConfig, type ListTableStyleConfig, type ListTableWidget, type ListTableWidgetConfig, ListTableWidgetConfigSchema, type ListWidget, type ListWidgetConfig, ListWidgetConfigSchema, type ListbarAction, type ListbarItem, type ListbarSelectCallback, type ListbarState, type ListbarStyleConfig, type ListbarWidget, type ListbarWidgetConfig, ListbarWidgetConfigSchema, type LoadingConfig, LoadingConfigSchema, type LoadingStyleConfig, LoadingStyleConfigSchema, type LoadingWidget, Log, type BorderConfig$3 as LogBorderConfig, type LogConfig, LogConfigSchema, type DimensionValue$5 as LogDimensionValue, type PaddingConfig$2 as LogPaddingConfig, type PositionValue$7 as LogPositionValue, type ScrollbarConfig$1 as LogScrollbarConfig, type ScrollbarMode$1 as LogScrollbarMode, type LogWidget, MPLAYER_SEARCH_PATHS, MPV_SEARCH_PATHS, Message, type BorderConfig$2 as MessageBorderConfig, type MessageConfig, MessageConfigSchema, type PositionValue$6 as MessagePositionValue, type MessageStyleConfig, type MessageType, type MessageWidget, Modal, type ModalBorderConfig, type ModalConfig, ModalConfigSchema, type ModalPaddingConfig, type ModalWidget, type PaddingConfig$3 as PaddingConfig, type PaneScrollState, type PaneState, type PaneViewport, Panel, type PanelAction, type PanelBorderConfig, type PanelConfig, PanelConfigSchema, type PanelContentStyle, type PanelStyleConfig, type PanelTitleStyle, type PanelWidget, type PositionValue$a as PositionValue, ProgressBarComponent, type ProgressBarWidget, type ProgressBarConfig as ProgressBarWidgetConfig, ProgressBarConfigSchema as ProgressBarWidgetConfigSchema, Prompt, type PromptBorderConfig, PromptBorderConfigSchema, type PromptConfig, PromptConfigSchema, type PromptPaddingConfig, PromptPaddingConfigSchema, type PromptValidator, type PromptWidget, type PtyOptions, PtyOptionsSchema, Question, type QuestionBorderConfig, type QuestionConfig, QuestionConfigSchema, type QuestionPaddingConfig, type QuestionWidget, type RadioButtonWidget, RadioButtonWidgetComponent, type RadioButtonConfig as RadioButtonWidgetConfig, RadioButtonConfigSchema as RadioButtonWidgetConfigSchema, type RadioGroupWidget, RadioGroupWidgetComponent, type RadioGroupConfig as RadioGroupWidgetConfig, RadioGroupConfigSchema as RadioGroupWidgetConfigSchema, ScrollableBox, type ScrollableBoxConfig, ScrollableBoxConfigSchema, type ScrollableBoxWidget, type ScrollableTextConfig, type ScrollableTextWidget, type ScrollbarConfig, type ScrollbarMode, type SharedTextBuffer, Sparkline, type SparklineConfig, SparklineConfigSchema, type SparklineWidget, type SplitDirection, SplitPane, type SplitPaneConfig, SplitPaneConfigSchema, type DimensionValue$2 as SplitPaneDimensionValue, type PositionValue$3 as SplitPanePositionValue, type SplitPaneWidget, type SplitResizeEvent, StopwatchComponent, type StopwatchConfig, StopwatchConfigSchema, type StopwatchState, type StopwatchWidget, type StreamDirtyRegion, type StreamProgress, type StreamingTextConfig, StreamingTextConfigSchema, type StreamingTextState, type StreamingTextWidget, Switch, type SwitchConfig, SwitchConfigSchema, type SwitchWidget, type SystemInfo, TAB_CLOSE_CHAR, TAB_SEPARATOR, TOAST_STACK_SPACING, type TabConfig, type TabData, type TabPosition, type TabStyleConfig, type TableStyleConfig, type TableWidget, type TableWidgetConfig, TableWidgetConfigSchema, Tabs, type TabsAction, type TabsBorderConfig, type TabsConfig, TabsConfigSchema, type ContentStyleConfig as TabsContentStyleConfig, type TabsStyleConfig, type TabsWidget, Terminal, type BorderConfig as TerminalBorderConfig, type TerminalConfig, TerminalConfigSchema, type TerminalStyle, type TerminalWidget, Text, type TextConfig, TextConfigSchema, type TextWidget, type TimeFormat, TimerComponent, type TimerConfig, TimerConfigSchema, type TimerState, type TimerWidget, type TitleAlign, Toast, type ToastBorderConfig, type ToastConfig, ToastConfigSchema, type ToastPosition, type ToastStyleConfig, type ToastType, type ToastWidget, type TooltipPosition, type TooltipRenderData, type TooltipState, type TooltipStyle, type TreeNode, type TreeStyleConfig, type TreeWidget, type TreeWidgetConfig, TreeWidgetConfigSchema, type VAlign$2 as VAlign, VERTICAL_BLOCKS, Video, type VideoConfig, VideoConfigSchema, type VideoOutputDriver, type VideoPlaybackState, type VideoPlayer, type VideoProcessHandle, type VideoProcessSpawner, type VideoWidget, Viewport3DTag, type Viewport3DWidget, type VirtualizedList, type VirtualizedListConfig, VirtualizedListConfigSchema, type VirtualizedListStyle, VirtualizedListStyleSchema, type WidgetFactory, type WidgetRegistration, type WidgetRegistry, addFlexChild, addToGrid, appendToState, ask, brailleChar, buildMplayerArgs, buildMpvArgs, buildPlayerArgs, calculateFlexLayout, calculateGridLayout, calculateInlineLayout, calculateTickInterval, clearAllHoverText, clearCanvas, clearHoverText, clearLines, clearState, closeAllModals, closeModal, collapseAllSections, combineBrailleDots, confirm, createAccordion, createAutocomplete, createBarChart, createBox, createButton, createCanvas, createCheckbox, createCollapsible, createCommandPalette, createDevTools, createFileManager, createFlexContainer, createFooter, createForm, createGauge, createGrid, createHeader, createHoverTextManager, createImage, createLayout, createLine, createLineChart, createList, createListTable, createListbar, createLoading, createLog, createMessage, createModal, createPanel, createProgressBar, createPrompt, createQuestion, createRadioButton, createRadioGroup, createScrollableBox, createScrollableText, createSharedTextBuffer, createSparkline, createSplitPane, createStopwatch, createStreamingState, createStreamingText, createSwitch, createTable, createTabs, createTerminal, createText, createTimer, createToast, createTree, createVideo, createViewport3D, createVirtualizedList, createWidgetRegistry, defaultRegistry, deleteBottom, deleteLine, deleteTop, detectVideoPlayer, drawCircle, drawLine, drawRect, drawText, expandAllSections, expandSection, fileManagerStateMap, formatNumber, formatPercentage, generateTicks, getActiveTabIndex, getBaseLine, getBoxContent, getCanvasContent, getChartColor, getDividerRenderInfo, getExpandedSections, getHoverText, getHoverTextCount, getImageBitmap, getImageCellMap, getLayoutMode, getLine, getLineChar, getLineCount, getLineOrientation, getLines, getModalStack, getPanelTitle, getPanelTitleAlign, getScrollback, getSharedTextBuffer, getSplitDirection, getStreamVisibleLines, getTabCount, getTabPosition, getTextContent, getVideoPlaybackState, getVideoPlayer, getWidgetTypes, getWidgetsByTag, handleFileManagerKey, handleMessageClick, handleMessageKey, handleModalBackdropClick, handleModalEscape, handlePromptKey, handleQuestionKey, handleSwitchClick, handleSwitchKey, handleTerminalKey, handleVirtualizedListKey, handleVirtualizedListWheel, hasHoverText, hideLoading, hitTestDivider, insertBottom, insertLine, insertTop, interpolateChartColor, isAccordion, isAutocomplete, isBarChart, isBox, isButtonWidget, isCanvas, isCheckboxWidget, isCollapsible, isCommandPalette, isDevTools, isDismissOnClick, isDismissOnKey, isFileManager, isFlexContainer, isForm as isFormWidget, isGauge, isGrid, isImage, isKeysScrollEnabled, isLayout, isLine, isLineChart, isListTableWidget, isListWidget, isListbarWidget, isLoadingWidget, isLog, isKeysScrollEnabled$1 as isLogKeysScrollEnabled, isMouseScrollEnabled$1 as isLogMouseScrollEnabled, isMessage, isModal, isModalOpen, isMouseScrollEnabled, isPanel, isPanelCollapsed, isProgressBar as isProgressBarWidget, isPrompt, isQuestion, isRadioButtonWidget, isRadioGroupWidget, isScrollableBox, isScrollableBox as isScrollableText, isSparkline, isSplitPane, isStopwatch, isSwitch, isTableWidget, isTabs, isTerminal, isTerminalKeysEnabled, isTerminalMouseEnabled, isText, isTimer, isToast, isTreeWidget, isVideo, isViewport3DWidget, isVirtualizedList, isWidgetType, openModal, popLine, prompt, promptStateMap, pushLine, questionStateMap, registerBuiltinWidgets, renderPanelTitleBar, renderTabBar, renderXAxisLabel, renderYAxisLabel, replaceLines, resetAccordionStore, resetAutocompleteStore, resetBarChartStore, resetBoxStore, resetButtonWidgetStore, resetCanvasStore, resetCheckboxWidgetStore, resetCommandPaletteStore, resetDevToolsStore, resetFileManagerStore, resetFlexContainerStore, resetFormStore as resetFormWidgetStore, resetGaugeStore, resetGridStore, resetHoverTextStore, resetImageStore, resetLayoutStore, resetLineChartStore, resetLineStore, resetListbarStore, resetLoadingStore, resetLogStore, resetMessageStore, resetModalStore, resetPanelStore, resetProgressBarStore as resetProgressBarWidgetStore, resetPromptStore, resetQuestionStore, resetRadioWidgetStore, resetScrollableBoxStore, resetSparklineStore, resetSplitPaneStore, resetStopwatchWidgetStore, resetSwitchStore, resetTabsStore, resetTerminalStore, resetTextStore, resetTimerWidgetStore, resetToastStore, resetTreeStore, resetVideoStore, scaleValue, scrollByLines, scrollToLine, sendPauseCommand, sendSeekCommand, setBaseLine, setBoxContent, setHoverText, setLine, setLineChar, setLines, setLoadingMessage, setPanelTitle, setPixel, setReadDirFn, setTextContent, shiftLine, showError, showErrorToast, showInfo, showInfoToast, showLoading, showSuccess, showSuccessToast, showWarning, showWarningToast, spliceLines, stripAnsiSequences, toggleCollapsible, toggleSection, unshiftLine, updateLoadingAnimation, updateTimeWidgets, wrapLine };
|
|
14768
|
+
export { Accordion, type AccordionConfig, AccordionConfigSchema, type AccordionSection, type AccordionWidget, type Align$2 as Align, type AlignItems, Autocomplete, type AutocompleteConfig, AutocompleteConfigSchema, type AutocompleteWidget, BRAILLE_BASE, BRAILLE_DOTS, BarChart, type BarChartConfig, BarChartConfigSchema, type BarChartWidget, type BarMode, type BarOrientation, type BarSeries, type BorderConfig$4 as BorderConfig, BorderConfigSchema, Box, type BoxConfig, BoxConfigSchema, type BoxWidget, type ButtonWidget, ButtonWidgetComponent, type ButtonConfig as ButtonWidgetConfig, ButtonConfigSchema as ButtonWidgetConfigSchema, CHART_COLORS, CLOSE_BUTTON_CHAR, COLLAPSE_CHAR, Calendar, type CalendarConfig, CalendarConfigSchema, type CalendarTheme, type CalendarWidget, Canvas, type CanvasConfig, CanvasConfigSchema, type CanvasWidget, type CellSize, type CheckboxWidget, CheckboxWidgetComponent, type CheckboxConfig as CheckboxWidgetConfig, CheckboxConfigSchema as CheckboxWidgetConfigSchema, type ChildLayoutData, type CollapsibleConfig, CollapsibleConfigSchema, type CollapsibleWidget, type Command, CommandPalette, type CommandPaletteConfig, CommandPaletteConfigSchema, type CommandPaletteTheme, type CommandPaletteWidget, type ContextMenuConfig, type ContextMenuItem, DEFAULT_CURSOR_OFFSET_X, DEFAULT_CURSOR_OFFSET_Y, DEFAULT_HIDE_DELAY, DEFAULT_HORIZONTAL_CHAR, DEFAULT_HOVER_DELAY, DEFAULT_LINE_LENGTH, DEFAULT_LOADING_BG, DEFAULT_LOADING_FG, DEFAULT_MESSAGE_PADDING, DEFAULT_MESSAGE_STYLES, DEFAULT_MESSAGE_TIMEOUT, DEFAULT_PANEL_TITLE, DEFAULT_PROMPT_BG, DEFAULT_PROMPT_FG, DEFAULT_PROMPT_HEIGHT, DEFAULT_PROMPT_WIDTH, DEFAULT_QUESTION_BG, DEFAULT_QUESTION_FG, DEFAULT_QUESTION_HEIGHT, DEFAULT_QUESTION_WIDTH, DEFAULT_TAB_POSITION, DEFAULT_TOAST_PADDING, DEFAULT_TOAST_STYLES, DEFAULT_TOAST_TIMEOUT, DEFAULT_TOOLTIP_BG, DEFAULT_TOOLTIP_BORDER, DEFAULT_TOOLTIP_FG, DEFAULT_VERTICAL_CHAR, DevTools, type DevToolsComponentInfo, type DevToolsConfig, DevToolsConfigSchema, type DevToolsPosition, type DevToolsTab, type DevToolsTheme, type DevToolsWidget, type DimensionValue$7 as DimensionValue, type DirtyRect, type DividerState, EXPAND_CHAR, type EntityInfo, type EventLogEntry, type FileEntry, FileManager, type FileManagerBorderConfig, type FileManagerConfig, FileManagerConfigSchema, type FileManagerPaddingConfig, type FileManagerWidget, type FlattenedNode, type AlignItems$1 as FlexAlignItems, type FlexChildOptions, FlexContainer, type FlexContainerConfig, FlexContainerConfigSchema, type FlexContainerWidget, type FlexDirection, type JustifyContent$1 as FlexJustifyContent, type FlexWrap, type FlexDirection$1 as FlexboxDirection, Footer, type FooterAlign, type FooterConfig, FooterConfigSchema, type FooterWidget, FormComponent, type FormField, type FormValidator, type FormWidget, type FormConfig as FormWidgetConfig, FormConfigSchema as FormWidgetConfigSchema, Gauge, type GaugeConfig, GaugeConfigSchema, type GaugeThreshold, type GaugeWidget, Grid, type GridCell, type GridConfig, GridConfigSchema, type GridWidget, HORIZONTAL_BLOCKS, Header, type HeaderAlign, type HeaderConfig, HeaderConfigSchema, type HeaderWidget, type HoverTextConfig, type HoverTextManager, type HoverTextManagerConfig, Image, type ImageConfig, ImageConfigSchema, type ImageType, type ImageWidget, type JustifyContent, Layout, type LayoutConfig, LayoutConfigSchema, type LayoutMode, type LayoutPosition, type LayoutWidget, Line, LineChart, type LineChartConfig, LineChartConfigSchema, type LineChartWidget, type LineConfig, LineConfigSchema, type LineOrientation, type LineSeries, type LineWidget, type ListStyleConfig, type ListTableStyleConfig, type ListTableWidget, type ListTableWidgetConfig, ListTableWidgetConfigSchema, type ListWidget, type ListWidgetConfig, ListWidgetConfigSchema, type ListbarAction, type ListbarItem, type ListbarSelectCallback, type ListbarState, type ListbarStyleConfig, type ListbarWidget, type ListbarWidgetConfig, ListbarWidgetConfigSchema, type LoadingConfig, LoadingConfigSchema, type LoadingStyleConfig, LoadingStyleConfigSchema, type LoadingWidget, Log, type BorderConfig$3 as LogBorderConfig, type LogConfig, LogConfigSchema, type DimensionValue$5 as LogDimensionValue, type PaddingConfig$2 as LogPaddingConfig, type PositionValue$7 as LogPositionValue, type ScrollbarConfig$1 as LogScrollbarConfig, type ScrollbarMode$1 as LogScrollbarMode, type LogWidget, MPLAYER_SEARCH_PATHS, MPV_SEARCH_PATHS, Message, type BorderConfig$2 as MessageBorderConfig, type MessageConfig, MessageConfigSchema, type PositionValue$6 as MessagePositionValue, type MessageStyleConfig, type MessageType, type MessageWidget, Modal, type ModalBorderConfig, type ModalConfig, ModalConfigSchema, type ModalPaddingConfig, type ModalWidget, MultiSelect, type MultiSelectConfig, MultiSelectConfigSchema, type MultiSelectItem, type MultiSelectWidget, type PaddingConfig$3 as PaddingConfig, type PaneScrollState, type PaneState, type PaneViewport, Panel, type PanelAction, type PanelBorderConfig, type PanelConfig, PanelConfigSchema, type PanelContentStyle, type PanelStyleConfig, type PanelTitleStyle, type PanelWidget, type PositionValue$a as PositionValue, ProgressBarComponent, type ProgressBarWidget, type ProgressBarConfig as ProgressBarWidgetConfig, ProgressBarConfigSchema as ProgressBarWidgetConfigSchema, Prompt, type PromptBorderConfig, PromptBorderConfigSchema, type PromptConfig, PromptConfigSchema, type PromptPaddingConfig, PromptPaddingConfigSchema, type PromptValidator, type PromptWidget, type PtyOptions, PtyOptionsSchema, Question, type QuestionBorderConfig, type QuestionConfig, QuestionConfigSchema, type QuestionPaddingConfig, type QuestionWidget, type RadioButtonWidget, RadioButtonWidgetComponent, type RadioButtonConfig as RadioButtonWidgetConfig, RadioButtonConfigSchema as RadioButtonWidgetConfigSchema, type RadioGroupWidget, RadioGroupWidgetComponent, type RadioGroupConfig as RadioGroupWidgetConfig, RadioGroupConfigSchema as RadioGroupWidgetConfigSchema, ScrollableBox, type ScrollableBoxConfig, ScrollableBoxConfigSchema, type ScrollableBoxWidget, type ScrollableTextConfig, type ScrollableTextWidget, type ScrollbarConfig, type ScrollbarMode, type SearchMode, SearchOverlay, type SearchOverlayConfig, SearchOverlayConfigSchema, type SearchOverlayMatch, type SearchOverlayMatchCallback, type SearchOverlayWidget, type SearchableContent, SearchableList, type SearchableListCallback, type SearchableListConfig, SearchableListConfigSchema, type SearchableListItem, type SearchableListWidget, type SelectionChangeCallback, type SharedTextBuffer, Sparkline, type SparklineConfig, SparklineConfigSchema, type SparklineWidget, type SplitDirection, SplitPane, type SplitPaneConfig, SplitPaneConfigSchema, type DimensionValue$2 as SplitPaneDimensionValue, type PositionValue$3 as SplitPanePositionValue, type SplitPaneWidget, type SplitResizeEvent, StopwatchComponent, type StopwatchConfig, StopwatchConfigSchema, type StopwatchState, type StopwatchWidget, type StreamDirtyRegion, type StreamProgress, type StreamingTextConfig, StreamingTextConfigSchema, type StreamingTextState, type StreamingTextWidget, Switch, type SwitchConfig, SwitchConfigSchema, type SwitchWidget, type SystemInfo, TAB_CLOSE_CHAR, TAB_SEPARATOR, TOAST_STACK_SPACING, type TabConfig, type TabData, type TabPosition, type TabStyleConfig, type TableStyleConfig, type TableWidget, type TableWidgetConfig, TableWidgetConfigSchema, Tabs, type TabsAction, type TabsBorderConfig, type TabsConfig, TabsConfigSchema, type ContentStyleConfig as TabsContentStyleConfig, type TabsStyleConfig, type TabsWidget, Terminal, type BorderConfig as TerminalBorderConfig, type TerminalConfig, TerminalConfigSchema, type TerminalStyle, type TerminalWidget, Text, type TextConfig, TextConfigSchema, type TextWidget, type TimeFormat, TimerComponent, type TimerConfig, TimerConfigSchema, type TimerState, type TimerWidget, type TitleAlign, Toast, type ToastBorderConfig, type ToastConfig, ToastConfigSchema, type ToastPosition, type ToastStyleConfig, type ToastType, type ToastWidget, type TooltipPosition, type TooltipRenderData, type TooltipState, type TooltipStyle, type TreeNode, type TreeStyleConfig, type TreeWidget, type TreeWidgetConfig, TreeWidgetConfigSchema, type VAlign$2 as VAlign, VERTICAL_BLOCKS, Video, type VideoConfig, VideoConfigSchema, type VideoOutputDriver, type VideoPlaybackState, type VideoPlayer, type VideoProcessHandle, type VideoProcessSpawner, type VideoWidget, Viewport3DTag, type Viewport3DWidget, type VirtualizedList, type VirtualizedListConfig, VirtualizedListConfigSchema, type VirtualizedListStyle, VirtualizedListStyleSchema, type WidgetFactory, type WidgetRegistration, type WidgetRegistry, addFlexChild, addToGrid, appendToState, ask, attachSearchOverlay, brailleChar, buildMplayerArgs, buildMpvArgs, buildPlayerArgs, calculateFlexLayout, calculateGridLayout, calculateInlineLayout, calculateTickInterval, clearAllHoverText, clearCanvas, clearHoverText, clearLines, clearState, closeAllModals, closeModal, collapseAllSections, combineBrailleDots, confirm, createAccordion, createAutocomplete, createBarChart, createBox, createButton, createCalendar, createCanvas, createCheckbox, createCollapsible, createCommandPalette, createContextMenu, createDevTools, createFileManager, createFlexContainer, createFooter, createForm, createGauge, createGrid, createHeader, createHoverTextManager, createImage, createLayout, createLine, createLineChart, createList, createListTable, createListbar, createLoading, createLog, createMessage, createModal, createMultiSelect, createPanel, createProgressBar, createPrompt, createQuestion, createRadioButton, createRadioGroup, createScrollableBox, createScrollableText, createSearchOverlay, createSearchableList, createSharedTextBuffer, createSparkline, createSplitPane, createStopwatch, createStreamingState, createStreamingText, createSwitch, createTable, createTabs, createTerminal, createText, createTimer, createToast, createTree, createVideo, createViewport3D, createVirtualizedList, createWidgetRegistry, defaultRegistry, deleteBottom, deleteLine, deleteTop, detectVideoPlayer, drawCircle, drawLine, drawRect, drawText, expandAllSections, expandSection, fileManagerStateMap, formatNumber, formatPercentage, generateTicks, getActiveTabIndex, getBaseLine, getBoxContent, getCanvasContent, getChartColor, getContextMenuSelectedIndex, getDividerRenderInfo, getExpandedSections, getHoverText, getHoverTextCount, getImageBitmap, getImageCellMap, getLayoutMode, getLine, getLineChar, getLineCount, getLineOrientation, getLines, getModalStack, getPanelTitle, getPanelTitleAlign, getScrollback, getSearchOverlayColors, getSearchOverlayTarget, getSearchableFilteredItems, getSelectedItems, getSharedTextBuffer, getSplitDirection, getStreamVisibleLines, getTabCount, getTabPosition, getTextContent, getVideoPlaybackState, getVideoPlayer, getWidgetTypes, getWidgetsByTag, handleContextMenuKey, handleFileManagerKey, handleMessageClick, handleMessageKey, handleModalBackdropClick, handleModalEscape, handlePromptKey, handleQuestionKey, handleSwitchClick, handleSwitchKey, handleTerminalKey, handleVirtualizedListKey, handleVirtualizedListWheel, hasHoverText, hideLoading, hitTestDivider, insertBottom, insertLine, insertTop, interpolateChartColor, isAccordion, isAutocomplete, isBarChart, isBox, isButtonWidget, isCalendar, isCanvas, isCheckboxWidget, isCollapsible, isCommandPalette, isDevTools, isDismissOnClick, isDismissOnKey, isFileManager, isFlexContainer, isForm as isFormWidget, isGauge, isGrid, isImage, isKeysScrollEnabled, isLayout, isLine, isLineChart, isListTableWidget, isListWidget, isListbarWidget, isLoadingWidget, isLog, isKeysScrollEnabled$1 as isLogKeysScrollEnabled, isMouseScrollEnabled$1 as isLogMouseScrollEnabled, isMessage, isModal, isModalOpen, isMouseScrollEnabled, isMultiSelect, isPanel, isPanelCollapsed, isProgressBar as isProgressBarWidget, isPrompt, isQuestion, isRadioButtonWidget, isRadioGroupWidget, isScrollableBox, isScrollableBox as isScrollableText, isSearchOverlay, isSearchableList, isSparkline, isSplitPane, isStopwatch, isSwitch, isTableWidget, isTabs, isTerminal, isTerminalKeysEnabled, isTerminalMouseEnabled, isText, isTimer, isToast, isTreeWidget, isVideo, isViewport3DWidget, isVirtualizedList, isWidgetType, onSelectionChange, openModal, popLine, prompt, promptStateMap, pushLine, questionStateMap, registerBuiltinWidgets, renderPanelTitleBar, renderTabBar, renderXAxisLabel, renderYAxisLabel, replaceLines, resetAccordionStore, resetAutocompleteStore, resetBarChartStore, resetBoxStore, resetButtonWidgetStore, resetCalendarStore, resetCanvasStore, resetCheckboxWidgetStore, resetCommandPaletteStore, resetDevToolsStore, resetFileManagerStore, resetFlexContainerStore, resetFormStore as resetFormWidgetStore, resetGaugeStore, resetGridStore, resetHoverTextStore, resetImageStore, resetLayoutStore, resetLineChartStore, resetLineStore, resetListbarStore, resetLoadingStore, resetLogStore, resetMessageStore, resetModalStore, resetMultiSelectStore, resetPanelStore, resetProgressBarStore as resetProgressBarWidgetStore, resetPromptStore, resetQuestionStore, resetRadioWidgetStore, resetScrollableBoxStore, resetSearchOverlayStore, resetSearchableListStore, resetSparklineStore, resetSplitPaneStore, resetStopwatchWidgetStore, resetSwitchStore, resetTabsStore, resetTerminalStore, resetTextStore, resetTimerWidgetStore, resetToastStore, resetTreeStore, resetVideoStore, scaleValue, scrollByLines, scrollToLine, sendPauseCommand, sendSeekCommand, setBaseLine, setBoxContent, setHoverText, setLine, setLineChar, setLines, setLoadingMessage, setPanelTitle, setPixel, setReadDirFn, setSearchableFilter, setTextContent, shiftLine, showError, showErrorToast, showInfo, showInfoToast, showLoading, showSuccess, showSuccessToast, showWarning, showWarningToast, spliceLines, stripAnsiSequences, toggleCollapsible, toggleSection, unshiftLine, updateLoadingAnimation, updateTimeWidgets, wrapLine };
|