verstak 0.23.105 → 0.23.107

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.
@@ -19,22 +19,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
19
  import { reactive, nonreactive, Transaction, options, Reentrance, Rx, Collection, ObservableObject, raw } from "reactronic";
20
20
  import { getCallerInfo } from "./Utils";
21
21
  import { emitLetters, equalCellRanges } from "./CellRange";
22
- import { Cursor, Align } from "./Cursor";
22
+ import { Cursor, Align, TableCursor } from "./Cursor";
23
23
  export var Priority;
24
24
  (function (Priority) {
25
25
  Priority[Priority["Realtime"] = 0] = "Realtime";
26
26
  Priority[Priority["Normal"] = 1] = "Normal";
27
27
  Priority[Priority["Background"] = 2] = "Background";
28
28
  })(Priority || (Priority = {}));
29
- export function Fragment(body, base) {
30
- return VBlock.claim(AbstractDriver.fragment, body, base);
29
+ export function Fragment(builder, base) {
30
+ return VBlock.claim(Driver.fragment, builder, base);
31
31
  }
32
32
  export class VBlock {
33
33
  get isInitialRendering() {
34
34
  return this.stamp === 2;
35
35
  }
36
36
  static root(render) {
37
- gSysRoot.instance.body.render = render;
37
+ gSysRoot.instance.builder.render = render;
38
38
  triggerRendering(gSysRoot);
39
39
  }
40
40
  static get current() {
@@ -46,18 +46,18 @@ export class VBlock {
46
46
  static runForAllBlocks(action) {
47
47
  forEachChildRecursively(gSysRoot, action);
48
48
  }
49
- static claim(driver, body, base) {
49
+ static claim(driver, builder, base) {
50
50
  var _a;
51
51
  let result;
52
52
  const owner = gCurrent.instance;
53
53
  const children = owner.children;
54
54
  let ex = undefined;
55
- if (body)
56
- body.base = base;
55
+ if (builder)
56
+ builder.base = base;
57
57
  else
58
- body = base !== null && base !== void 0 ? base : {};
59
- let key = body.key;
60
- if (driver.isLine) {
58
+ builder = base !== null && base !== void 0 ? base : {};
59
+ let key = builder.key;
60
+ if (driver.isRow) {
61
61
  const last = children.lastClaimedItem();
62
62
  if (((_a = last === null || last === void 0 ? void 0 : last.instance) === null || _a === void 0 ? void 0 : _a.driver) === driver)
63
63
  ex = last;
@@ -67,16 +67,16 @@ export class VBlock {
67
67
  result = ex.instance;
68
68
  if (result.driver !== driver && driver !== undefined)
69
69
  throw new Error(`changing block driver is not yet supported: "${result.driver.name}" -> "${driver === null || driver === void 0 ? void 0 : driver.name}"`);
70
- const exTriggers = result.body.triggers;
71
- if (triggersAreEqual(body.triggers, exTriggers))
72
- body.triggers = exTriggers;
73
- result.body = body;
70
+ const exTriggers = result.builder.triggers;
71
+ if (triggersAreEqual(builder.triggers, exTriggers))
72
+ builder.triggers = exTriggers;
73
+ result.builder = builder;
74
74
  }
75
75
  else {
76
- result = new VBlockImpl(key || VBlock.generateKey(owner), driver, owner, body);
76
+ result = new VBlockImpl(key || VBlock.generateKey(owner), driver, owner, builder);
77
77
  result.item = children.add(result);
78
78
  VBlockImpl.grandCount++;
79
- if (isReaction(body))
79
+ if (isReaction(builder))
80
80
  VBlockImpl.disposableCount++;
81
81
  }
82
82
  return result;
@@ -102,103 +102,118 @@ VBlock.shortFrameDuration = 16;
102
102
  VBlock.longFrameDuration = 300;
103
103
  VBlock.currentRenderingPriority = Priority.Realtime;
104
104
  VBlock.frameDuration = VBlock.longFrameDuration;
105
- export var LayoutKind;
106
- (function (LayoutKind) {
107
- LayoutKind[LayoutKind["Block"] = 0] = "Block";
108
- LayoutKind[LayoutKind["Grid"] = 1] = "Grid";
109
- LayoutKind[LayoutKind["Line"] = 2] = "Line";
110
- LayoutKind[LayoutKind["Fragment"] = 3] = "Fragment";
111
- LayoutKind[LayoutKind["Text"] = 4] = "Text";
112
- })(LayoutKind || (LayoutKind = {}));
113
- const createDefaultCursor = () => new Cursor();
114
- export class AbstractDriver {
115
- get isSequential() { return (this.layout & 1) === 0; }
116
- get isAuxiliary() { return (this.layout & 2) === 2; }
117
- get isBlock() { return this.layout === LayoutKind.Block; }
118
- get isGrid() { return this.layout === LayoutKind.Grid; }
119
- get isLine() { return this.layout === LayoutKind.Line; }
120
- constructor(name, layout, createCursor) {
105
+ export var Layout;
106
+ (function (Layout) {
107
+ Layout[Layout["Section"] = 0] = "Section";
108
+ Layout[Layout["Table"] = 1] = "Table";
109
+ Layout[Layout["Row"] = 2] = "Row";
110
+ Layout[Layout["Group"] = 3] = "Group";
111
+ Layout[Layout["Note"] = 4] = "Note";
112
+ })(Layout || (Layout = {}));
113
+ export class Driver {
114
+ constructor(name, isRow, preset) {
121
115
  this.name = name;
122
- this.layout = layout;
123
- this.createCursor = createCursor !== null && createCursor !== void 0 ? createCursor : createDefaultCursor;
116
+ this.isRow = isRow;
117
+ this.preset = preset;
124
118
  }
125
- initialize(block, native) {
119
+ create(block, b) {
120
+ }
121
+ claim(block) {
126
122
  const b = block;
127
- b.native = native;
128
- invokeInitializeChain(b, b.body);
123
+ invokeClaim(b, b.builder);
124
+ }
125
+ initialize(block) {
126
+ var _a;
127
+ const b = block;
128
+ (_a = this.preset) === null || _a === void 0 ? void 0 : _a.call(this, b);
129
+ invokeInitialize(b, b.builder);
129
130
  }
130
131
  deploy(block) {
131
132
  }
132
133
  render(block) {
133
- invokeRenderChain(block, block.body);
134
+ invokeRender(block, block.builder);
134
135
  }
135
136
  finalize(block, isLeader) {
136
137
  const b = block;
137
- invokeFinalizeChain(b, b.body);
138
- b.native = null;
138
+ invokeFinalize(b, b.builder);
139
139
  return isLeader;
140
140
  }
141
- applyCellRange(block, cellRange) {
141
+ applyChildrenLayout(block, value) {
142
+ const b = block;
143
+ if (value === Layout.Table)
144
+ b.cursor = new TableCursor();
145
+ else
146
+ b.cursor = new Cursor();
147
+ }
148
+ applyCellRange(block, value) {
142
149
  }
143
- applyWidthGrowth(block, widthGrowth) {
150
+ applyWidthGrowth(block, value) {
144
151
  }
145
- applyMinWidth(block, minWidth) {
152
+ applyMinWidth(block, value) {
146
153
  }
147
- applyMaxWidth(block, maxWidth) {
154
+ applyMaxWidth(block, value) {
148
155
  }
149
- applyHeightGrowth(block, heightGrowth) {
156
+ applyHeightGrowth(block, value) {
150
157
  }
151
- applyMinHeight(block, minHeight) {
158
+ applyMinHeight(block, value) {
152
159
  }
153
- applyMaxHeight(block, maxHeight) {
160
+ applyMaxHeight(block, value) {
154
161
  }
155
- applyContentAlignment(block, contentAlignment) {
162
+ applyContentAlignment(block, value) {
156
163
  }
157
- applyFrameAlignment(block, frameAlignment) {
164
+ applyBlockAlignment(block, value) {
158
165
  }
159
- applyContentWrapping(block, contentWrapping) {
166
+ applyContentWrapping(block, value) {
160
167
  }
161
- applyOverlayVisible(block, overlayVisible) {
168
+ applyOverlayVisible(block, value) {
162
169
  }
163
- applyStyling(block, secondary, styleName, enabled) {
170
+ applyStyle(block, secondary, styleName, enabled) {
164
171
  }
165
172
  }
166
- AbstractDriver.fragment = new AbstractDriver("fragment", LayoutKind.Fragment);
167
- function isReaction(body) {
173
+ Driver.fragment = new Driver("fragment", false, b => b.childrenLayout = Layout.Group);
174
+ function isReaction(builder) {
168
175
  var _a;
169
- return (_a = body === null || body === void 0 ? void 0 : body.reaction) !== null && _a !== void 0 ? _a : ((body === null || body === void 0 ? void 0 : body.base) ? isReaction(body === null || body === void 0 ? void 0 : body.base) : false);
176
+ return (_a = builder === null || builder === void 0 ? void 0 : builder.reaction) !== null && _a !== void 0 ? _a : ((builder === null || builder === void 0 ? void 0 : builder.base) ? isReaction(builder === null || builder === void 0 ? void 0 : builder.base) : false);
177
+ }
178
+ function invokeClaim(block, builder) {
179
+ const claim = builder.claim;
180
+ const base = builder.base;
181
+ if (claim)
182
+ claim(block, base ? () => invokeClaim(block, base) : NOP);
183
+ else if (base)
184
+ invokeClaim(block, base);
170
185
  }
171
- function invokeInitializeChain(block, body) {
172
- const initialize = body.initialize;
173
- const base = body.base;
186
+ function invokeInitialize(block, builder) {
187
+ const initialize = builder.initialize;
188
+ const base = builder.base;
174
189
  if (initialize)
175
- initialize(block, base ? () => invokeInitializeChain(block, base) : NOP);
190
+ initialize(block, base ? () => invokeInitialize(block, base) : NOP);
176
191
  else if (base)
177
- invokeInitializeChain(block, base);
192
+ invokeInitialize(block, base);
178
193
  }
179
- function invokeRenderChain(block, body) {
180
- const render = body.render;
181
- const base = body.base;
194
+ function invokeRender(block, builder) {
195
+ const render = builder.render;
196
+ const base = builder.base;
182
197
  if (render)
183
- render(block, base ? () => invokeRenderChain(block, base) : NOP);
198
+ render(block, base ? () => invokeRender(block, base) : NOP);
184
199
  else if (base)
185
- invokeRenderChain(block, base);
200
+ invokeRender(block, base);
186
201
  }
187
- function invokeFinalizeChain(block, body) {
188
- const finalize = body.finalize;
189
- const base = body.base;
202
+ function invokeFinalize(block, builder) {
203
+ const finalize = builder.finalize;
204
+ const base = builder.base;
190
205
  if (finalize)
191
- finalize(block, base ? () => invokeFinalizeChain(block, base) : NOP);
206
+ finalize(block, base ? () => invokeFinalize(block, base) : NOP);
192
207
  else if (base)
193
- invokeFinalizeChain(block, base);
208
+ invokeFinalize(block, base);
194
209
  }
195
- export class StaticDriver extends AbstractDriver {
196
- constructor(element, name, layout, createCursor) {
197
- super(name, layout, createCursor);
210
+ export class StaticDriver extends Driver {
211
+ constructor(element, name, isRow, preset) {
212
+ super(name, isRow, preset);
198
213
  this.element = element;
199
214
  }
200
- initialize(block, element) {
201
- super.initialize(block, this.element);
215
+ create(block, b) {
216
+ b.native = this.element;
202
217
  }
203
218
  }
204
219
  export class ContextVariable {
@@ -235,14 +250,14 @@ __decorate([
235
250
  __metadata("design:type", ContextVariable)
236
251
  ], VBlockContext.prototype, "variable", void 0);
237
252
  class VBlockImpl extends VBlock {
238
- constructor(key, driver, owner, body) {
253
+ constructor(key, driver, owner, builder) {
239
254
  super();
240
255
  this.key = key;
241
256
  this.driver = driver;
242
- this.body = body;
257
+ this.builder = builder;
243
258
  this.model = undefined;
244
- this.assignedCells = undefined;
245
- this.assignedStyle = false;
259
+ this.appliedChildrenLayout = Layout.Row;
260
+ this.appliedPlacement = undefined;
246
261
  this.appliedCellRange = Cursor.UndefinedCellRange;
247
262
  this.appliedWidthGrowth = 0;
248
263
  this.appliedMinWidth = "";
@@ -251,41 +266,54 @@ class VBlockImpl extends VBlock {
251
266
  this.appliedMinHeight = "";
252
267
  this.appliedMaxHeight = "";
253
268
  this.appliedContentAlignment = Align.Default;
254
- this.appliedFrameAlignment = Align.Default;
269
+ this.appliedBlockAlignment = Align.Default;
255
270
  this.appliedContentWrapping = false;
256
271
  this.appliedOverlayVisible = undefined;
272
+ this.wasStyleApplied = false;
257
273
  this.childrenShuffling = false;
258
274
  this.renderingPriority = Priority.Realtime;
259
275
  this.level = owner.level + 1;
260
276
  this.host = owner;
261
- this.children = new Collection(driver.isSequential, getBlockKey);
277
+ this.children = new Collection(getBlockKey, this.isSequential);
262
278
  this.numerator = 0;
263
279
  this.item = undefined;
264
280
  this.stamp = 0;
265
281
  this.native = undefined;
266
- this.cursor = driver.createCursor();
282
+ this.controller = undefined;
283
+ this.cursor = new Cursor();
267
284
  this.outer = owner.context ? owner : owner.outer;
268
285
  this.context = undefined;
269
286
  }
287
+ render(_triggers) {
288
+ renderNow(this.item);
289
+ }
290
+ get isSequential() { return (this.childrenLayout & 1) === 0; }
291
+ get isAuxiliary() { return (this.childrenLayout & 2) === 2; }
292
+ get isSection() { return this.childrenLayout === Layout.Section; }
293
+ get isTable() { return this.childrenLayout === Layout.Table; }
270
294
  get isMoved() {
271
295
  let owner = this.host;
272
- if (owner.driver.isLine)
296
+ if (owner.driver.isRow)
273
297
  owner = owner.host;
274
298
  return owner.children.isMoved(this.item);
275
299
  }
276
- render(_triggers) {
277
- renderNow(this.item);
300
+ get childrenLayout() { return this.appliedChildrenLayout; }
301
+ set childrenLayout(value) {
302
+ if (value !== this.appliedChildrenLayout || this.stamp < 2) {
303
+ this.driver.applyChildrenLayout(this, value);
304
+ this.appliedChildrenLayout = value;
305
+ }
278
306
  }
279
- get cells() { return this.assignedCells; }
280
- set cells(value) {
281
- if (this.assignedCells !== undefined)
307
+ get placement() { return this.appliedPlacement; }
308
+ set placement(value) {
309
+ if (this.appliedPlacement !== undefined)
282
310
  throw new Error("cells can be assigned only once during rendering");
283
311
  const cellRange = this.host.cursor.onwards(value);
284
312
  if (!equalCellRanges(cellRange, this.appliedCellRange)) {
285
313
  this.driver.applyCellRange(this, cellRange);
286
314
  this.appliedCellRange = cellRange;
287
315
  }
288
- this.assignedCells = value !== null && value !== void 0 ? value : {};
316
+ this.appliedPlacement = value !== null && value !== void 0 ? value : {};
289
317
  }
290
318
  get widthGrowth() { return this.appliedWidthGrowth; }
291
319
  set widthGrowth(value) {
@@ -336,11 +364,11 @@ class VBlockImpl extends VBlock {
336
364
  this.appliedContentAlignment = value;
337
365
  }
338
366
  }
339
- get frameAlignment() { return this.appliedFrameAlignment; }
340
- set frameAlignment(value) {
341
- if (value !== this.appliedFrameAlignment) {
342
- this.driver.applyFrameAlignment(this, value);
343
- this.appliedFrameAlignment = value;
367
+ get blockAlignment() { return this.appliedBlockAlignment; }
368
+ set blockAlignment(value) {
369
+ if (value !== this.appliedBlockAlignment) {
370
+ this.driver.applyBlockAlignment(this, value);
371
+ this.appliedBlockAlignment = value;
344
372
  }
345
373
  }
346
374
  get contentWrapping() { return this.appliedContentWrapping; }
@@ -358,11 +386,11 @@ class VBlockImpl extends VBlock {
358
386
  }
359
387
  }
360
388
  style(styleName, enabled) {
361
- this.driver.applyStyling(this, this.assignedStyle, styleName, enabled);
362
- this.assignedStyle = true;
389
+ this.driver.applyStyle(this, this.wasStyleApplied, styleName, enabled);
390
+ this.wasStyleApplied = true;
363
391
  }
364
392
  configureReactronic(options) {
365
- if (this.stamp !== 1 || !isReaction(this.body))
393
+ if (this.stamp !== 1 || !isReaction(this.builder))
366
394
  throw new Error("reactronic can be configured only for reacting blocks and only inside initialize");
367
395
  return Rx.getController(this.render).configure(options);
368
396
  }
@@ -428,24 +456,23 @@ function runRenderNestedTreesThenDo(error, action) {
428
456
  let promised = undefined;
429
457
  try {
430
458
  children.endMerge(error);
431
- for (const item of children.removedItems(true)) {
459
+ for (const item of children.removedItems(true))
432
460
  triggerFinalization(item, true, true);
433
- }
434
461
  if (!error) {
435
- const ownerIsBlock = owner.driver.isBlock;
436
- const sequential = children.strict;
462
+ const ownerIsSection = owner.isSection;
463
+ const sequential = children.isStrict;
437
464
  const cursor = owner.cursor;
438
465
  let p1 = undefined;
439
466
  let p2 = undefined;
440
467
  let redeploy = false;
441
- let partHost = owner;
468
+ let hostingRow = owner;
442
469
  cursor.reset();
443
470
  for (const item of children.items()) {
444
471
  if (Transaction.isCanceled)
445
472
  break;
446
473
  const block = item.instance;
447
- const driver = block.driver;
448
- const host = driver.isLine ? owner : partHost;
474
+ const isRow = block.driver.isRow;
475
+ const host = isRow ? owner : hostingRow;
449
476
  const p = (_a = block.renderingPriority) !== null && _a !== void 0 ? _a : Priority.Realtime;
450
477
  redeploy = markToRedeployIfNecessary(redeploy, host, item, children, sequential);
451
478
  if (p === Priority.Realtime)
@@ -454,8 +481,8 @@ function runRenderNestedTreesThenDo(error, action) {
454
481
  p1 = push(item, p1);
455
482
  else
456
483
  p2 = push(item, p2);
457
- if (ownerIsBlock && driver.isLine)
458
- partHost = block;
484
+ if (ownerIsSection && isRow)
485
+ hostingRow = block;
459
486
  }
460
487
  if (!Transaction.isCanceled && (p1 !== undefined || p2 !== undefined))
461
488
  promised = startIncrementalRendering(current, children, p1, p2).then(() => action(error), e => action(e));
@@ -523,7 +550,7 @@ function renderIncrementally(owner, stamp, allChildren, items, priority) {
523
550
  function triggerRendering(item) {
524
551
  const block = item.instance;
525
552
  if (block.stamp >= 0) {
526
- if (isReaction(block.body)) {
553
+ if (isReaction(block.builder)) {
527
554
  if (block.stamp === 0) {
528
555
  Transaction.outside(() => {
529
556
  if (Rx.isLogging)
@@ -533,7 +560,7 @@ function triggerRendering(item) {
533
560
  });
534
561
  });
535
562
  }
536
- nonreactive(block.render, block.body.triggers);
563
+ nonreactive(block.render, block.builder.triggers);
537
564
  }
538
565
  else
539
566
  renderNow(item);
@@ -543,11 +570,14 @@ function redeployIfNecessary(block) {
543
570
  const driver = block.driver;
544
571
  if (block.stamp === 0) {
545
572
  block.stamp = 1;
546
- driver.initialize(block, undefined);
547
- driver.deploy(block);
573
+ nonreactive(() => {
574
+ driver.create(block, block);
575
+ driver.initialize(block);
576
+ driver.deploy(block);
577
+ });
548
578
  }
549
579
  else if (block.isMoved)
550
- driver.deploy(block);
580
+ nonreactive(() => driver.deploy(block));
551
581
  }
552
582
  function renderNow(item) {
553
583
  const block = item.instance;
@@ -558,14 +588,15 @@ function renderNow(item) {
558
588
  redeployIfNecessary(block);
559
589
  block.stamp++;
560
590
  block.numerator = 0;
561
- block.assignedCells = undefined;
562
- block.assignedStyle = false;
591
+ block.appliedPlacement = undefined;
592
+ block.wasStyleApplied = false;
563
593
  block.children.beginMerge();
564
- result = block.driver.render(block);
565
- if (block.driver.isLine)
566
- block.host.cursor.lineFeed();
567
- else if (block.assignedCells === undefined)
568
- block.cells = undefined;
594
+ const driver = block.driver;
595
+ result = driver.render(block);
596
+ if (driver.isRow)
597
+ block.host.cursor.rowBreak();
598
+ else if (block.appliedPlacement === undefined)
599
+ block.placement = undefined;
569
600
  if (result instanceof Promise)
570
601
  result.then(v => { runRenderNestedTreesThenDo(undefined, NOP); return v; }, e => { console.log(e); runRenderNestedTreesThenDo(e !== null && e !== void 0 ? e : new Error("unknown error"), NOP); });
571
602
  else
@@ -582,11 +613,14 @@ function renderNow(item) {
582
613
  function triggerFinalization(item, isLeader, individual) {
583
614
  const block = item.instance;
584
615
  if (block.stamp >= 0) {
585
- if (individual && block.key !== block.body.key && !block.driver.isLine)
616
+ const driver = block.driver;
617
+ if (individual && block.key !== block.builder.key && !driver.isRow)
586
618
  console.log(`WARNING: it is recommended to assign explicit key for conditionally rendered block in order to avoid unexpected side effects: ${block.key}`);
587
619
  block.stamp = ~block.stamp;
588
- const childrenAreLeaders = block.driver.finalize(block, isLeader);
589
- if (isReaction(block.body)) {
620
+ const childrenAreLeaders = nonreactive(() => driver.finalize(block, isLeader));
621
+ block.native = null;
622
+ block.controller = null;
623
+ if (isReaction(block.builder)) {
590
624
  item.aux = undefined;
591
625
  const last = gLastToDispose;
592
626
  if (last)
@@ -691,7 +725,7 @@ function defaultReject(error) {
691
725
  }
692
726
  Promise.prototype.then = reactronicDomHookedThen;
693
727
  const NOP = (...args) => { };
694
- const gSysDriver = new StaticDriver(null, "SYSTEM", LayoutKind.Fragment);
728
+ const gSysDriver = new StaticDriver(null, "SYSTEM", false, b => b.childrenLayout = Layout.Group);
695
729
  const gSysRoot = Collection.createItem(new VBlockImpl(gSysDriver.name, gSysDriver, { level: 0 }, { reaction: true, render: NOP }));
696
730
  gSysRoot.instance.item = gSysRoot;
697
731
  Object.defineProperty(gSysRoot.instance, "host", {
@@ -1,24 +1,25 @@
1
- import { VBlock, BlockBody, Align, CellRange } from "../core/api";
1
+ import { VBlock, Layout, BlockBuilder, Align, CellRange } from "../core/api";
2
2
  import { HtmlDriver } from "./HtmlDriver";
3
- export declare function Block<M = unknown, R = void>(body?: BlockBody<HTMLElement, M, R>, base?: BlockBody<HTMLElement, M, R>): VBlock<HTMLElement, M, R>;
4
- export declare function PlainText(content: string, body?: BlockBody<HTMLElement, void, void>): VBlock<HTMLElement, void, void>;
5
- export declare function HtmlText(content: string, body?: BlockBody<HTMLElement, void, void>): VBlock<HTMLElement, void, void>;
6
- export declare function Grid<M = unknown, R = void>(body?: BlockBody<HTMLElement, M, R>, base?: BlockBody<HTMLElement, M, R>): VBlock<HTMLElement, M, R>;
7
- export declare function line<T = void>(body: (block: void) => T): void;
8
- export declare function lineFeed(noCoalescing?: boolean, key?: string): VBlock<HTMLElement>;
9
- export declare function Group<M = unknown, R = void>(body?: BlockBody<HTMLElement, M, R>, base?: BlockBody<HTMLElement, M, R>): VBlock<HTMLElement, M, R>;
10
- export declare class VerstakDriver<T extends HTMLElement> extends HtmlDriver<T> {
11
- applyCellRange(block: VBlock<T>, cellRange: CellRange | undefined): void;
12
- applyWidthGrowth(block: VBlock<T>, widthGrowth: number): void;
13
- applyMinWidth(block: VBlock<T>, minWidth: string): void;
14
- applyMaxWidth(block: VBlock<T>, maxWidth: string): void;
15
- applyHeightGrowth(block: VBlock<T>, heightGrowth: number): void;
16
- applyMinHeight(block: VBlock<T>, minHeight: string): void;
17
- applyMaxHeight(block: VBlock<T>, maxHeight: string): void;
18
- applyContentAlignment(block: VBlock<T>, contentAlign: Align): void;
19
- applyFrameAlignment(block: VBlock<T>, frameAlign: Align): void;
20
- applyContentWrapping(block: VBlock<T>, contentWrapping: boolean): void;
21
- applyOverlayVisible(block: VBlock<T>, overlayVisible: boolean | undefined): void;
22
- applyStyling(block: VBlock<T, any, any>, secondary: boolean, styleName: string, enabled?: boolean): void;
3
+ export declare function VSection<M = unknown, R = void>(builder?: BlockBuilder<HTMLElement, M, R>, base?: BlockBuilder<HTMLElement, M, R>): VBlock<HTMLElement, M, R>;
4
+ export declare function VTable<M = unknown, R = void>(builder?: BlockBuilder<HTMLElement, M, R>, base?: BlockBuilder<HTMLElement, M, R>): VBlock<HTMLElement, M, R>;
5
+ export declare function row<T = void>(builder?: (block: void) => T, key?: string): void;
6
+ export declare function fromNewRow(key?: string): void;
7
+ export declare function VNote(content: string, builder?: BlockBuilder<HTMLElement, void, void>): VBlock<HTMLElement, void, void>;
8
+ export declare function VHtmlNote(content: string, builder?: BlockBuilder<HTMLElement, void, void>): VBlock<HTMLElement, void, void>;
9
+ export declare function VGroup<M = unknown, R = void>(builder?: BlockBuilder<HTMLElement, M, R>, base?: BlockBuilder<HTMLElement, M, R>): VBlock<HTMLElement, M, R>;
10
+ export declare class VerstakHtmlDriver<T extends HTMLElement> extends HtmlDriver<T> {
11
+ applyChildrenLayout(block: VBlock<T, any, any>, value: Layout): void;
12
+ applyCellRange(block: VBlock<T>, value: CellRange | undefined): void;
13
+ applyWidthGrowth(block: VBlock<T>, value: number): void;
14
+ applyMinWidth(block: VBlock<T>, value: string): void;
15
+ applyMaxWidth(block: VBlock<T>, value: string): void;
16
+ applyHeightGrowth(block: VBlock<T>, value: number): void;
17
+ applyMinHeight(block: VBlock<T>, value: string): void;
18
+ applyMaxHeight(block: VBlock<T>, value: string): void;
19
+ applyContentAlignment(block: VBlock<T>, value: Align): void;
20
+ applyBlockAlignment(block: VBlock<T>, value: Align): void;
21
+ applyContentWrapping(block: VBlock<T>, value: boolean): void;
22
+ applyOverlayVisible(block: VBlock<T>, value: boolean | undefined): void;
23
+ applyStyle(block: VBlock<T, any, any>, secondary: boolean, styleName: string, enabled?: boolean): void;
23
24
  render(block: VBlock<T>): void | Promise<void>;
24
25
  }